@rexvane/piweb 0.3.22 → 0.3.24

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 (251) hide show
  1. package/.next/BUILD_ID +1 -1
  2. package/.next/app-path-routes-manifest.json +8 -7
  3. package/.next/build-manifest.json +3 -3
  4. package/.next/prerender-manifest.json +4 -4
  5. package/.next/react-loadable-manifest.json +11 -4
  6. package/.next/routes-manifest.json +8 -0
  7. package/.next/server/app/_global-error/page.js +2 -2
  8. package/.next/server/app/_global-error/page.js.nft.json +1 -1
  9. package/.next/server/app/_global-error/page_client-reference-manifest.js +1 -1
  10. package/.next/server/app/_global-error.html +1 -1
  11. package/.next/server/app/_global-error.rsc +1 -1
  12. package/.next/server/app/_global-error.segments/_full.segment.rsc +1 -1
  13. package/.next/server/app/_global-error.segments/_global-error/__PAGE__.segment.rsc +1 -1
  14. package/.next/server/app/_global-error.segments/_tree.segment.rsc +1 -1
  15. package/.next/server/app/_not-found/page.js +1 -1
  16. package/.next/server/app/_not-found/page.js.nft.json +1 -1
  17. package/.next/server/app/_not-found/page_client-reference-manifest.js +1 -1
  18. package/.next/server/app/_not-found.html +1 -1
  19. package/.next/server/app/_not-found.rsc +2 -2
  20. package/.next/server/app/_not-found.segments/_full.segment.rsc +2 -2
  21. package/.next/server/app/_not-found.segments/_not-found/__PAGE__.segment.rsc +2 -2
  22. package/.next/server/app/_not-found.segments/_tree.segment.rsc +2 -2
  23. package/.next/server/app/api/agent/[id]/events/route.js +2 -2
  24. package/.next/server/app/api/agent/[id]/events/route.js.nft.json +1 -1
  25. package/.next/server/app/api/agent/[id]/route.js +1 -1
  26. package/.next/server/app/api/agent/[id]/route.js.nft.json +1 -1
  27. package/.next/server/app/api/agent/[id]/side-chat/route.js +5 -0
  28. package/.next/server/app/api/agent/[id]/side-chat/route.js.nft.json +1 -0
  29. package/.next/server/app/api/agent/[id]/side-chat/route_client-reference-manifest.js +1 -0
  30. package/.next/server/app/api/agent/[id]/tree/route.js +1 -1
  31. package/.next/server/app/api/agent/[id]/tree/route.js.nft.json +1 -1
  32. package/.next/server/app/api/agent/new/route.js +1 -1
  33. package/.next/server/app/api/agent/new/route.js.nft.json +1 -1
  34. package/.next/server/app/api/config/route.js +1 -1
  35. package/.next/server/app/api/config/route.js.nft.json +1 -1
  36. package/.next/server/app/api/files/route.js +1 -1
  37. package/.next/server/app/api/files/route.js.nft.json +1 -1
  38. package/.next/server/app/api/fs/route.js +1 -1
  39. package/.next/server/app/api/fs/route.js.nft.json +1 -1
  40. package/.next/server/app/api/git/route.js +2 -2
  41. package/.next/server/app/api/git/route.js.nft.json +1 -1
  42. package/.next/server/app/api/github/route.js +2 -2
  43. package/.next/server/app/api/github/route.js.nft.json +1 -1
  44. package/.next/server/app/api/growth/route.js +1 -1
  45. package/.next/server/app/api/growth/route.js.nft.json +1 -1
  46. package/.next/server/app/api/health/route.js +1 -1
  47. package/.next/server/app/api/health/route.js.nft.json +1 -1
  48. package/.next/server/app/api/models/defaults/route.js +1 -1
  49. package/.next/server/app/api/models/defaults/route.js.nft.json +1 -1
  50. package/.next/server/app/api/models/route.js +1 -1
  51. package/.next/server/app/api/models/route.js.nft.json +1 -1
  52. package/.next/server/app/api/pi-settings/route.js +1 -1
  53. package/.next/server/app/api/pi-settings/route.js.nft.json +1 -1
  54. package/.next/server/app/api/plugins/route.js +1 -1
  55. package/.next/server/app/api/plugins/route.js.nft.json +1 -1
  56. package/.next/server/app/api/prompts/route.js +1 -1
  57. package/.next/server/app/api/prompts/route.js.nft.json +1 -1
  58. package/.next/server/app/api/remote/route.js +3 -3
  59. package/.next/server/app/api/remote/route.js.nft.json +1 -1
  60. package/.next/server/app/api/security/route.js +1 -1
  61. package/.next/server/app/api/security/route.js.nft.json +1 -1
  62. package/.next/server/app/api/sessions/[id]/export/route.js +1 -1
  63. package/.next/server/app/api/sessions/[id]/export/route.js.nft.json +1 -1
  64. package/.next/server/app/api/sessions/[id]/route.js +1 -1
  65. package/.next/server/app/api/sessions/[id]/route.js.nft.json +1 -1
  66. package/.next/server/app/api/sessions/import/route.js +2 -2
  67. package/.next/server/app/api/sessions/import/route.js.nft.json +1 -1
  68. package/.next/server/app/api/sessions/route.js +1 -1
  69. package/.next/server/app/api/sessions/route.js.nft.json +1 -1
  70. package/.next/server/app/api/skills/route.js +2 -2
  71. package/.next/server/app/api/skills/route.js.nft.json +1 -1
  72. package/.next/server/app/api/update/route.js +2 -2
  73. package/.next/server/app/api/update/route.js.nft.json +1 -1
  74. package/.next/server/app/api/version/route.js +1 -1
  75. package/.next/server/app/api/version/route.js.nft.json +1 -1
  76. package/.next/server/app/api/web-auth/route.js +2 -2
  77. package/.next/server/app/api/web-auth/route.js.nft.json +1 -1
  78. package/.next/server/app/api/workspaces/route.js +1 -1
  79. package/.next/server/app/api/workspaces/route.js.nft.json +1 -1
  80. package/.next/server/app/icon.svg/route.js +1 -1
  81. package/.next/server/app/icon.svg/route.js.nft.json +1 -1
  82. package/.next/server/app/index.html +1 -1
  83. package/.next/server/app/index.rsc +7 -6
  84. package/.next/server/app/index.segments/__PAGE__.segment.rsc +7 -6
  85. package/.next/server/app/index.segments/_full.segment.rsc +7 -6
  86. package/.next/server/app/index.segments/_tree.segment.rsc +3 -2
  87. package/.next/server/app/login/page.js +1 -1
  88. package/.next/server/app/login/page.js.nft.json +1 -1
  89. package/.next/server/app/login/page_client-reference-manifest.js +1 -1
  90. package/.next/server/app/login.html +1 -1
  91. package/.next/server/app/login.rsc +3 -3
  92. package/.next/server/app/login.segments/_full.segment.rsc +3 -3
  93. package/.next/server/app/login.segments/_tree.segment.rsc +2 -2
  94. package/.next/server/app/login.segments/login/__PAGE__.segment.rsc +3 -3
  95. package/.next/server/app/page.js +1 -1
  96. package/.next/server/app/page.js.nft.json +1 -1
  97. package/.next/server/app/page_client-reference-manifest.js +1 -1
  98. package/.next/server/app-paths-manifest.json +8 -7
  99. package/.next/server/chunks/{813.js → 1813.js} +1 -1
  100. package/.next/server/chunks/{430.js → 2430.js} +1 -1
  101. package/.next/server/chunks/{970.js → 2970.js} +1 -1
  102. package/.next/server/chunks/3421.js +1 -0
  103. package/.next/server/chunks/3924.js +6 -0
  104. package/.next/server/chunks/4807.js +1 -0
  105. package/.next/server/chunks/5393.js +1 -0
  106. package/.next/server/chunks/5802.js +2 -0
  107. package/.next/server/chunks/6229.js +1 -0
  108. package/.next/server/chunks/7496.js +1 -0
  109. package/.next/server/chunks/7662.js +2 -0
  110. package/.next/server/chunks/8686.js +1 -0
  111. package/.next/server/chunks/{593.js → 974.js} +1 -1
  112. package/.next/server/chunks/{920.js → 9920.js} +1 -1
  113. package/.next/server/functions-config-manifest.json +2 -1
  114. package/.next/server/instrumentation.js +1 -1
  115. package/.next/server/instrumentation.js.nft.json +1 -1
  116. package/.next/server/middleware-build-manifest.js +1 -1
  117. package/.next/server/middleware-react-loadable-manifest.js +1 -1
  118. package/.next/server/middleware.js +1 -1
  119. package/.next/server/pages/404.html +1 -1
  120. package/.next/server/pages/500.html +1 -1
  121. package/.next/server/preview-props.json +3 -3
  122. package/.next/server/server-reference-manifest.json +1 -1
  123. package/.next/server/webpack-runtime.js +1 -1
  124. package/.next/static/chunks/2716.44fdf1b21454b961.js +1 -0
  125. package/.next/static/chunks/4673.e261707dce391be7.js +1 -0
  126. package/.next/static/chunks/4686-0cd87513f9ea3538.js +1 -0
  127. package/.next/static/chunks/7411.5f79671208209b13.js +1 -0
  128. package/.next/static/chunks/app/_global-error/page-cbaaee0d7aacb85a.js +1 -0
  129. package/.next/static/chunks/app/api/agent/[id]/events/route-cbaaee0d7aacb85a.js +1 -0
  130. package/.next/static/chunks/app/api/agent/[id]/route-cbaaee0d7aacb85a.js +1 -0
  131. package/.next/static/chunks/app/api/agent/[id]/side-chat/route-cbaaee0d7aacb85a.js +1 -0
  132. package/.next/static/chunks/app/api/agent/[id]/tree/route-cbaaee0d7aacb85a.js +1 -0
  133. package/.next/static/chunks/app/api/agent/new/route-cbaaee0d7aacb85a.js +1 -0
  134. package/.next/static/chunks/app/api/config/route-cbaaee0d7aacb85a.js +1 -0
  135. package/.next/static/chunks/app/api/files/route-cbaaee0d7aacb85a.js +1 -0
  136. package/.next/static/chunks/app/api/fs/route-cbaaee0d7aacb85a.js +1 -0
  137. package/.next/static/chunks/app/api/git/route-cbaaee0d7aacb85a.js +1 -0
  138. package/.next/static/chunks/app/api/github/route-cbaaee0d7aacb85a.js +1 -0
  139. package/.next/static/chunks/app/api/growth/route-cbaaee0d7aacb85a.js +1 -0
  140. package/.next/static/chunks/app/api/health/route-cbaaee0d7aacb85a.js +1 -0
  141. package/.next/static/chunks/app/api/models/defaults/route-cbaaee0d7aacb85a.js +1 -0
  142. package/.next/static/chunks/app/api/models/route-cbaaee0d7aacb85a.js +1 -0
  143. package/.next/static/chunks/app/api/pi-settings/route-cbaaee0d7aacb85a.js +1 -0
  144. package/.next/static/chunks/app/api/plugins/route-cbaaee0d7aacb85a.js +1 -0
  145. package/.next/static/chunks/app/api/prompts/route-cbaaee0d7aacb85a.js +1 -0
  146. package/.next/static/chunks/app/api/remote/route-cbaaee0d7aacb85a.js +1 -0
  147. package/.next/static/chunks/app/api/security/route-cbaaee0d7aacb85a.js +1 -0
  148. package/.next/static/chunks/app/api/sessions/[id]/export/route-cbaaee0d7aacb85a.js +1 -0
  149. package/.next/static/chunks/app/api/sessions/[id]/route-cbaaee0d7aacb85a.js +1 -0
  150. package/.next/static/chunks/app/api/sessions/import/route-cbaaee0d7aacb85a.js +1 -0
  151. package/.next/static/chunks/app/api/sessions/route-cbaaee0d7aacb85a.js +1 -0
  152. package/.next/static/chunks/app/api/skills/route-cbaaee0d7aacb85a.js +1 -0
  153. package/.next/static/chunks/app/api/update/route-cbaaee0d7aacb85a.js +1 -0
  154. package/.next/static/chunks/app/api/version/route-cbaaee0d7aacb85a.js +1 -0
  155. package/.next/static/chunks/app/api/web-auth/route-cbaaee0d7aacb85a.js +1 -0
  156. package/.next/static/chunks/app/api/workspaces/route-cbaaee0d7aacb85a.js +1 -0
  157. package/.next/static/chunks/app/page-dc3cb41d91c7432e.js +1 -0
  158. package/.next/static/chunks/next/dist/client/components/builtin/app-error-cbaaee0d7aacb85a.js +1 -0
  159. package/.next/static/chunks/next/dist/client/components/builtin/forbidden-cbaaee0d7aacb85a.js +1 -0
  160. package/.next/static/chunks/next/dist/client/components/builtin/not-found-cbaaee0d7aacb85a.js +1 -0
  161. package/.next/static/chunks/next/dist/client/components/builtin/unauthorized-cbaaee0d7aacb85a.js +1 -0
  162. package/.next/static/chunks/webpack-2ac3d76b81895f5b.js +1 -0
  163. package/.next/static/css/9fc559c2c4ad1d0f.css +1 -0
  164. package/.next/static/css/c6e2227c36ec2fd6.css +1 -0
  165. package/.next/types/app/api/agent/[id]/side-chat/route.ts +355 -0
  166. package/.next/types/routes.d.ts +2 -1
  167. package/.next/types/validator.ts +10 -0
  168. package/next.config.ts +2 -0
  169. package/package.json +9 -3
  170. package/scripts/release.mjs +3 -7
  171. package/scripts/runtime/check-installed.mjs +66 -0
  172. package/scripts/runtime/pi-packages.mjs +52 -0
  173. package/scripts/verify-package.mjs +29 -7
  174. package/src/app/api/agent/[id]/side-chat/route.ts +77 -0
  175. package/src/app/globals.css +1576 -14
  176. package/src/components/AppShell.tsx +63 -13
  177. package/src/components/ChatInput.tsx +33 -29
  178. package/src/components/ChatWindow.tsx +6 -7
  179. package/src/components/ContextMeter.tsx +35 -16
  180. package/src/components/DrawerPanel.tsx +1 -1
  181. package/src/components/FileViewer.tsx +89 -8
  182. package/src/components/GrowthTree.tsx +30 -5
  183. package/src/components/ModelSelector.tsx +21 -5
  184. package/src/components/SettingsPanel.tsx +25 -16
  185. package/src/components/chat/reading-anchor.ts +81 -0
  186. package/src/components/composer/ComposerImages.tsx +31 -11
  187. package/src/components/side-chat/SideChatPanel.module.css +131 -0
  188. package/src/components/side-chat/SideChatPanel.tsx +189 -0
  189. package/src/components/side-chat/icons.tsx +8 -0
  190. package/src/components/side-chat/request-history.ts +29 -0
  191. package/src/components/side-chat/store.ts +248 -0
  192. package/src/hooks/useFileViewer.ts +6 -4
  193. package/src/i18n.tsx +50 -8
  194. package/src/lib/files-service.ts +66 -2
  195. package/src/lib/path-security.ts +24 -32
  196. package/src/lib/session-reader.ts +1 -1
  197. package/src/lib/side-chat/context.ts +123 -0
  198. package/src/lib/side-chat/service.ts +191 -0
  199. package/src/lib/side-chat/types.ts +61 -0
  200. package/src/lib/types.ts +1 -1
  201. package/src/lib/update-service.ts +4 -6
  202. package/.next/server/chunks/229.js +0 -1
  203. package/.next/server/chunks/393.js +0 -1
  204. package/.next/server/chunks/421.js +0 -1
  205. package/.next/server/chunks/496.js +0 -1
  206. package/.next/server/chunks/662.js +0 -2
  207. package/.next/server/chunks/686.js +0 -1
  208. package/.next/server/chunks/802.js +0 -2
  209. package/.next/server/chunks/807.js +0 -1
  210. package/.next/server/chunks/924.js +0 -6
  211. package/.next/static/chunks/2716.7ad073038e94a802.js +0 -1
  212. package/.next/static/chunks/4673.4cf66cbdd8364c57.js +0 -1
  213. package/.next/static/chunks/4686-09fcd0028079006c.js +0 -1
  214. package/.next/static/chunks/7411.67366dc5032a141d.js +0 -1
  215. package/.next/static/chunks/app/_global-error/page-f977af7f858990a2.js +0 -1
  216. package/.next/static/chunks/app/api/agent/[id]/events/route-f977af7f858990a2.js +0 -1
  217. package/.next/static/chunks/app/api/agent/[id]/route-f977af7f858990a2.js +0 -1
  218. package/.next/static/chunks/app/api/agent/[id]/tree/route-f977af7f858990a2.js +0 -1
  219. package/.next/static/chunks/app/api/agent/new/route-f977af7f858990a2.js +0 -1
  220. package/.next/static/chunks/app/api/config/route-f977af7f858990a2.js +0 -1
  221. package/.next/static/chunks/app/api/files/route-f977af7f858990a2.js +0 -1
  222. package/.next/static/chunks/app/api/fs/route-f977af7f858990a2.js +0 -1
  223. package/.next/static/chunks/app/api/git/route-f977af7f858990a2.js +0 -1
  224. package/.next/static/chunks/app/api/github/route-f977af7f858990a2.js +0 -1
  225. package/.next/static/chunks/app/api/growth/route-f977af7f858990a2.js +0 -1
  226. package/.next/static/chunks/app/api/health/route-f977af7f858990a2.js +0 -1
  227. package/.next/static/chunks/app/api/models/defaults/route-f977af7f858990a2.js +0 -1
  228. package/.next/static/chunks/app/api/models/route-f977af7f858990a2.js +0 -1
  229. package/.next/static/chunks/app/api/pi-settings/route-f977af7f858990a2.js +0 -1
  230. package/.next/static/chunks/app/api/plugins/route-f977af7f858990a2.js +0 -1
  231. package/.next/static/chunks/app/api/prompts/route-f977af7f858990a2.js +0 -1
  232. package/.next/static/chunks/app/api/remote/route-f977af7f858990a2.js +0 -1
  233. package/.next/static/chunks/app/api/security/route-f977af7f858990a2.js +0 -1
  234. package/.next/static/chunks/app/api/sessions/[id]/export/route-f977af7f858990a2.js +0 -1
  235. package/.next/static/chunks/app/api/sessions/[id]/route-f977af7f858990a2.js +0 -1
  236. package/.next/static/chunks/app/api/sessions/import/route-f977af7f858990a2.js +0 -1
  237. package/.next/static/chunks/app/api/sessions/route-f977af7f858990a2.js +0 -1
  238. package/.next/static/chunks/app/api/skills/route-f977af7f858990a2.js +0 -1
  239. package/.next/static/chunks/app/api/update/route-f977af7f858990a2.js +0 -1
  240. package/.next/static/chunks/app/api/version/route-f977af7f858990a2.js +0 -1
  241. package/.next/static/chunks/app/api/web-auth/route-f977af7f858990a2.js +0 -1
  242. package/.next/static/chunks/app/api/workspaces/route-f977af7f858990a2.js +0 -1
  243. package/.next/static/chunks/app/page-fc4ed2ff29b6235e.js +0 -1
  244. package/.next/static/chunks/next/dist/client/components/builtin/app-error-f977af7f858990a2.js +0 -1
  245. package/.next/static/chunks/next/dist/client/components/builtin/forbidden-f977af7f858990a2.js +0 -1
  246. package/.next/static/chunks/next/dist/client/components/builtin/not-found-f977af7f858990a2.js +0 -1
  247. package/.next/static/chunks/next/dist/client/components/builtin/unauthorized-f977af7f858990a2.js +0 -1
  248. package/.next/static/chunks/webpack-22ebffc20adb44ae.js +0 -1
  249. package/.next/static/css/6671d0d1589fdc0e.css +0 -1
  250. /package/.next/static/{WMazYvD-gbeLsCUfUxvvM → lvKCJmjFj8LuqSojRVLRF}/_buildManifest.js +0 -0
  251. /package/.next/static/{WMazYvD-gbeLsCUfUxvvM → lvKCJmjFj8LuqSojRVLRF}/_ssgManifest.js +0 -0
@@ -1 +1 @@
1
- "use strict";(()=>{var a={};a.id=552,a.ids=[552],a.modules={261:a=>{a.exports=require("next/dist/shared/lib/router/utils/app-paths")},3295:a=>{a.exports=require("next/dist/server/app-render/after-task-async-storage.external.js")},8128:a=>{a.exports=require("next/dist/server/runtime-reacts.external.js")},10846:a=>{a.exports=require("next/dist/compiled/next-server/app-page.runtime.prod.js")},12412:a=>{a.exports=require("assert")},12616:(a,b,c)=>{c.a(a,async(a,d)=>{try{c.d(b,{x:()=>g});var e=c(75430),f=a([e]);async function g(a,b,c){if(0===b.length)return a;let{scopedModels:d}=await (0,e.resolveModelScopeWithDiagnostics)(b,c),f=new Set(d.map(({model:a})=>`${a.provider}/${a.id}`));return a.filter(a=>f.has(`${a.provider}/${a.id}`))}e=(f.then?(await f)():f)[0],d()}catch(a){d(a)}})},19121:a=>{a.exports=require("next/dist/server/app-render/action-async-storage.external.js")},27910:a=>{a.exports=require("stream")},28354:a=>{a.exports=require("util")},28802:a=>{a.exports=import("@earendil-works/pi-ai")},29021:a=>{a.exports=require("fs")},29294:a=>{a.exports=require("next/dist/server/app-render/work-async-storage.external.js")},31421:a=>{a.exports=require("node:child_process")},33873:a=>{a.exports=require("path")},37067:a=>{a.exports=require("node:http")},38522:a=>{a.exports=require("node:zlib")},38708:(a,b,c)=>{c.a(a,async(a,d)=>{try{c.r(b),c.d(b,{GET:()=>i,POST:()=>j,dynamic:()=>k});var e=c(38522),f=c(23211),g=c(65501),h=a([g]);g=(h.then?(await h)():h)[0];let k="force-dynamic",l=new Map;async function i(a){let b=new URL(a.url).searchParams,c="1"===b.get("custom"),d=c||"1"===b.get("full");try{let b=c?await (0,g.Qn)():null,f=await (d?(0,g.D)():(0,g.Fo)()),h=d?f.models:f.models.map(a=>({provider:a.provider,id:a.id,name:a.name,reasoning:a.reasoning,thinkingLevels:a.thinkingLevels,contextWindow:a.contextWindow})),i=d?f.providers:f.providers.map(a=>({id:a.id,name:a.name,authReady:a.authReady,builtIn:a.builtIn,modelCount:a.modelCount})),j=b?await (0,g.ws)(b.content,f.models):void 0;return function(a,b,c){let d=JSON.stringify(b),f=a.headers.get("accept-encoding")??"",g={"Content-Type":"application/json; charset=utf-8",Vary:"Accept-Encoding","Cache-Control":"no-store"};if(!/\bgzip\b/.test(f)||d.length<2048)return new Response(d,{headers:g});let h=`${c}:${d.length}`,i=l.get(h);if(i&&Date.now()-i.at<5e3)return new Response(i.body.slice(),{headers:{...g,"Content-Encoding":"gzip"}});let j=new Uint8Array((0,e.gzipSync)(Buffer.from(d,"utf8")));return l.size>8&&l.clear(),l.set(h,{at:Date.now(),body:j}),new Response(j.slice(),{headers:{...g,"Content-Encoding":"gzip"}})}(a,{success:!0,data:{providers:i,models:h,customProviders:b,...j?{catalogModelIds:j}:{}}},`${(0,g.Jk)()}:${c?"custom":d?"full":"piweb"}`)}catch(a){return f.NextResponse.json({success:!1,error:String(a?.message??a)},{status:500})}}async function j(a){try{let b=await a.json();if("setKey"===b.action){if(!b.providerId||!b.apiKey)return f.NextResponse.json({success:!1,error:"missing fields"},{status:400});return await (0,g.d8)(b.providerId,b.apiKey),f.NextResponse.json({success:!0})}if("removeKey"===b.action){if(!b.providerId)return f.NextResponse.json({success:!1,error:"missing providerId"},{status:400});return await (0,g.kK)(b.providerId),f.NextResponse.json({success:!0})}if("saveCustomProviders"===b.action){if("string"!=typeof b.content)return f.NextResponse.json({success:!1,error:"missing content"},{status:400});if(void 0!==b.revision&&("string"!=typeof b.revision||!/^(?:missing|[a-f0-9]{64})$/.test(b.revision)))return f.NextResponse.json({success:!1,error:"invalid revision"},{status:400});return await (0,g.P2)(b.content,b.revision),f.NextResponse.json({success:!0,data:{requiresSessionReopen:!0}})}if("discoverModels"===b.action){if(!b.baseUrl)return f.NextResponse.json({success:!1,error:"missing baseUrl"},{status:400});let a=await (0,g.wt)({baseUrl:b.baseUrl,api:b.api,apiKey:b.apiKey,providerId:b.providerId,allowPrivate:!0===b.allowPrivate});return f.NextResponse.json({success:!0,data:{models:a}})}if("providerUsage"===b.action){if(!b.providerId)return f.NextResponse.json({success:!1,error:"missing providerId"},{status:400});let a=await (0,g.VV)(b.providerId,!0===b.force);return f.NextResponse.json({success:!0,data:{usage:a}})}if("contextWindowInfo"===b.action||"setContextWindow"===b.action){if("string"!=typeof b.providerId||!b.providerId||"string"!=typeof b.modelId||!b.modelId)return f.NextResponse.json({success:!1,error:"missing providerId or modelId"},{status:400});if("contextWindowInfo"===b.action)return f.NextResponse.json({success:!0,data:await (0,g.yc)(b.providerId,b.modelId)});if("number"!=typeof b.contextWindow)return f.NextResponse.json({success:!1,error:"missing contextWindow"},{status:400});return f.NextResponse.json({success:!0,data:await (0,g.lr)(b.providerId,b.modelId,b.contextWindow)})}if("loginStart"===b.action){if(!b.providerId)return f.NextResponse.json({success:!1,error:"missing providerId"},{status:400});return await (0,g.c$)(b.providerId),f.NextResponse.json({success:!0,data:(0,g.$i)(b.providerId)})}if("loginState"===b.action){if(!b.providerId)return f.NextResponse.json({success:!1,error:"missing providerId"},{status:400});return f.NextResponse.json({success:!0,data:(0,g.$i)(b.providerId)})}if("loginAnswer"===b.action){if(!b.providerId||"string"!=typeof b.text)return f.NextResponse.json({success:!1,error:"missing fields"},{status:400});return f.NextResponse.json({success:!0,data:{delivered:(0,g.ig)(b.providerId,b.text)}})}if("loginCancel"===b.action){if(!b.providerId)return f.NextResponse.json({success:!1,error:"missing providerId"},{status:400});return(0,g.IX)(b.providerId),f.NextResponse.json({success:!0})}return f.NextResponse.json({success:!1,error:"unknown action"},{status:400})}catch(b){let a=b instanceof g.w9?409:b instanceof g.Ts||b instanceof SyntaxError?400:500;return f.NextResponse.json({success:!1,error:String(b?.message??b)},{status:a})}}d()}catch(a){d(a)}})},41846:(a,b,c)=>{function d(a){return null!==a&&"object"==typeof a&&!Array.isArray(a)}function e(a,b,c,e){let f=JSON.parse(JSON.stringify(a)),g=Object.prototype.hasOwnProperty.call(f,b)?f[b]:void 0,h=d(g)?g:{};f[b]=h;let i=d(h.modelOverrides)?h.modelOverrides:void 0,j=i&&Object.prototype.hasOwnProperty.call(i,c)?i[c]:void 0;if(d(j)&&void 0!==j.contextWindow)return j.contextWindow=e,f;let k=Array.isArray(h.models)?h.models.filter(a=>d(a)&&"string"==typeof a.id&&a.id.trim()===c):[];if(k.length){for(let a of k)a.contextWindow=e;return f}let l=i??{};return h.modelOverrides=l,l[c]={...d(j)?j:{},contextWindow:e},f}c.d(b,{Ax:()=>e})},44708:a=>{a.exports=require("node:https")},44870:a=>{a.exports=require("next/dist/compiled/next-server/app-route.runtime.prod.js")},46193:a=>{a.exports=require("node:string_decoder")},48161:a=>{a.exports=require("node:os")},51455:a=>{a.exports=require("node:fs/promises")},55511:a=>{a.exports=require("crypto")},63033:a=>{a.exports=require("next/dist/server/app-render/work-unit-async-storage.external.js")},65501:(a,b,c)=>{c.a(a,async(a,d)=>{try{c.d(b,{$i:()=>aq,D:()=>F,Fo:()=>G,IX:()=>as,Jk:()=>C,P2:()=>aA,Qn:()=>ax,Ts:()=>aO,VV:()=>R,c$:()=>ap,d8:()=>J,ig:()=>ar,kK:()=>K,lr:()=>aD,w9:()=>aP,ws:()=>E,wt:()=>Q,yc:()=>aC});var e=c(51455),f=c.n(e),g=c(76760),h=c.n(g),i=c(77598),j=c(71553),k=c.n(j),l=c(37067),m=c(44708),n=c(77030),o=c(75430),p=c(71808),q=c(12616),r=c(86159),s=c(87982),t=c(75554),u=c(28686),v=c(41846),w=c(28802),x=c(49904),y=c(97138),z=a([o,q,s,t,u,w]);function A(a){return"number"==typeof a&&Number.isSafeInteger(a)&&a>0?a:void 0}[o,q,s,t,u,w]=z.then?(await z)():z;let aE=null,aF=null,aG=-1,aH=new Map;function B(){aF=null,aH.clear(),(0,r.Yq)("auth.json")}function C(){return aF?String(aF.at):"none"}function D(){return aE||(aE=o.ModelRuntime.create({modelsPath:null,refreshOnCreate:!1,allowModelNetwork:!1,credentials:new w.InMemoryCredentialStore,modelsStore:new w.InMemoryModelsStore}).then(a=>new Map(a.getProviders().map(b=>[b.id,new Map(a.getModels(b.id).map(a=>[a.id,Number(a.contextWindow)||0]))]))).catch(a=>{throw aE=null,a})),aE}async function E(a,b){let c=await D(),d=new Map;for(let[b,c]of Object.entries(au(a).providers)){let a=Array.isArray(c.models)?c.models:[];d.set(b,new Set(a.flatMap(a=>av(a)&&"string"==typeof a.id?[a.id]:[])))}let e=new Map([...c].map(([a,b])=>[a,new Set(b.keys())]));for(let a of b)d.get(a.provider)?.has(a.id)||e.get(a.provider)?.add(a.id);return Object.fromEntries([...e].map(([a,b])=>[a,[...b].sort()]))}async function F(){if(await (0,s.NU)(),aG!==(0,s.U6)()&&(aG=(0,s.U6)(),B()),aF&&Date.now()-aF.at<5e3)return aF.value;let a=I().catch(a=>{throw aF=null,a});return aF={at:Date.now(),value:a},a}async function G(){let a=await F(),b=await (0,t.MO)();if(!b?.length)return a;let c=await (0,q.x)(a.models,b,await (0,s.uU)()),d=new Map;for(let a of c)d.set(a.provider,(d.get(a.provider)??0)+1);return{models:c,providers:a.providers.map(a=>({...a,modelCount:d.get(a.id)??0}))}}async function H(){let a=new Map;try{let b=await (0,r.lg)(h().join((0,s.$M)(),"auth.json"));for(let[c,d]of[...Object.entries(b??{}),...Object.entries(b?.providers??{})])!a.has(c)&&(d?.type==="oauth"?a.set(c,"oauth"):d&&"object"==typeof d&&[d.apiKey,d.api_key,d.key].some(a=>"string"==typeof a&&a.trim())&&a.set(c,"api_key"))}catch{}return a}async function I(){let a=await (0,s.uU)(),b=await D(),c=a.getProviders(),d=await H(),e=[],f=[];for(let g of(await Promise.all(c.map(async b=>{let c,d,e=String(b.id??b.name??"");if(!e)return null;let f=null;try{f=a.getProviderAuthStatus(e)}catch{f=null}let g=a.hasConfiguredAuth(e),h=!1;if(f?.configured===!0||g){let b=aH.get(e);if(b&&Date.now()-b.at<6e4)h=b.ready,c=b.source,d=b.error;else{try{let b=await a.checkAuth(e,{signal:AbortSignal.timeout(5e3)});h=void 0!==b,c=b?.source}catch(a){d=a instanceof Error?a.message:String(a)}aH.set(e,{at:Date.now(),ready:h,source:c,error:d})}}return{pid:e,p:b,auth:f,authFastPath:g,authReady:h,resolvedAuthSource:c,authError:d}})))){if(!g)continue;let{pid:c,p:h,auth:i,authFastPath:j,authReady:k,resolvedAuthSource:l,authError:m}=g,n=a.getModels(c),o=[];for(let a of(h.auth?.apiKey&&o.push("api_key"),h.auth?.oauth&&o.push("oauth"),e.push({id:c,name:String(h.name??c),baseUrl:"string"==typeof h.baseUrl?h.baseUrl:void 0,apiKeyLabel:"string"==typeof h.auth?.apiKey?.name?h.auth.apiKey.name:void 0,authTypes:o,apis:function(a){let b=new Map;for(let c of a){let a=String(c.api??"");a&&b.set(a,(b.get(a)??0)+1)}return[...b].sort(([a,b],[c,d])=>d-b||(a<c?-1:+(a>c))).map(([a])=>a)}(n),builtIn:b.has(c),authConfigured:i?.configured===!0,authSource:i?.source,authReady:k,authFastPath:j,resolvedAuthSource:l,authError:m,keyManaged:i?.source==="stored",storedAuthType:i?.source==="stored"?d.get(c):void 0,modelCount:n.length}),n))f.push({provider:c,id:String(a.id),name:String(a.name??a.id),api:String(a.api??""),baseUrl:"string"==typeof a.baseUrl?a.baseUrl:void 0,reasoning:!0===a.reasoning,thinkingLevels:(0,w.getSupportedThinkingLevels)(a),contextWindow:Number(a.contextWindow??0),input:Array.isArray(a.input)?a.input.map(String):["text"],cost:a.cost?{input:a.cost.input,output:a.cost.output}:null})}return f.sort((a,b)=>a.provider.localeCompare(b.provider)||a.id.localeCompare(b.id)),{providers:e,models:f}}async function J(a,b){let c=am(a),d=await an(c);await ao(c,d,"api_key",b)}async function K(a){as(a);let b=await (0,s.uU)();await b.logout(a),B()}async function L(a){try{let b=await (0,s.uU)(),c=await b.getAuth(a,{signal:AbortSignal.timeout(2e4)}),d=(c?.auth.apiKey??function(a){for(let[b,c]of Object.entries(a??{}))if("authorization"===b.toLowerCase()&&c)return/^Bearer\s+(\S+)/i.exec(c.trim())?.[1]}(c?.auth.headers))?.trim();if(!c||!d)return;let e=(await b.checkAuth(a).catch(()=>void 0))?.type==="oauth",f=e&&"openai-codex"===a?V(d)?.chatgpt_account_id:void 0;return{key:d,oauth:e,..."string"==typeof f&&f.trim()?{accountId:f.trim()}:{},...c.auth.baseUrl?{baseUrl:c.auth.baseUrl}:{}}}catch{return}}function M(a){let b=new URL(a),c=b.pathname.replace(/\/+$/,"");return b.pathname=c.endsWith("/models")?c:`${c}/models`,b.hash="",b}let aI=new n.BlockList;for(let[a,b]of[["0.0.0.0",8],["10.0.0.0",8],["100.64.0.0",10],["127.0.0.0",8],["169.254.0.0",16],["172.16.0.0",12],["192.0.0.0",24],["192.0.2.0",24],["192.88.99.0",24],["192.168.0.0",16],["198.18.0.0",15],["198.51.100.0",24],["203.0.113.0",24],["224.0.0.0",4],["240.0.0.0",4]])aI.addSubnet(a,b,"ipv4");let aJ=new n.BlockList;aJ.addSubnet("2000::",3,"ipv6");let aK=new n.BlockList;for(let[a,b]of[["2001::",23],["2001:db8::",32],["2002::",16]])aK.addSubnet(a,b,"ipv6");function N(a){let b=(0,n.isIP)(a);return 4===b?!aI.check(a,"ipv4"):6===b&&aJ.check(a,"ipv6")&&!aK.check(a,"ipv6")}async function O(a,b,c,d=!1){let e=d||"1"===process.env.PI_WEB_ALLOW_PRIVATE_MODEL_DISCOVERY,f=(0,n.isIP)(a.hostname.replace(/^\[|\]$/g,""));if(!e&&f&&!N(a.hostname.replace(/^\[|\]$/g,"")))throw Error("模型目录地址指向本机或私有网络;勾选「允许访问本机/私有网络地址」后重试,或设置 PI_WEB_ALLOW_PRIVATE_MODEL_DISCOVERY=1");return new Promise((d,f)=>{let g=("https:"===a.protocol?m.request:l.request)(a,{headers:b,signal:c,agent:!1,lookup:e?void 0:(a,b,c)=>{k().lookup(a,{all:!0}).then(a=>{let d=a.find(({address:a})=>N(a));d?b.all?c(null,[d]):c(null,d.address,d.family):c(Error("模型目录地址指向本机或私有网络;勾选「允许访问本机/私有网络地址」后重试,或设置 PI_WEB_ALLOW_PRIVATE_MODEL_DISCOVERY=1"),"",0)},a=>c(a,"",0))}},a=>{let b=a.statusCode??0;if(b>=300&&b<400){a.destroy(),f(Error("模型目录不允许重定向"));return}let c=[],e=0;if(Number(a.headers["content-length"])>4194304){a.destroy(),f(Error("模型目录响应过大(上限 4 MiB)"));return}a.on("data",b=>{if((e+=b.length)>4194304){a.destroy(),f(Error("模型目录响应过大(上限 4 MiB)"));return}c.push(b)}),a.on("error",f),a.on("close",()=>{a.complete||f(Error("模型目录连接提前关闭"))}),a.on("end",()=>d(new Response(204===b||205===b||304===b?null:Buffer.concat(c,e),{status:b})))});g.on("error",f),g.end()})}async function P(a){if(Number(a.headers.get("content-length"))>4194304)throw Error("模型目录响应过大(上限 4 MiB)");if(!a.body)throw Error("模型目录响应为空");let b=a.body.getReader(),c=[],d=0;try{for(;;){let{done:a,value:e}=await b.read();if(a)break;if((d+=e.byteLength)>4194304)throw Error("模型目录响应过大(上限 4 MiB)");c.push(Buffer.from(e))}}finally{await b.cancel().catch(()=>void 0),b.releaseLock()}return JSON.parse(Buffer.concat(c,d).toString("utf8"))}async function Q(a){let b=a.baseUrl.trim();if(!b)throw Error("缺少 API 地址");let c=new URL(b);if("http:"!==c.protocol&&"https:"!==c.protocol)throw Error("API 地址必须使用 http 或 https");if(c.username||c.password)throw Error("API 地址不能包含用户名或密码");let d=M(c),e={Accept:"application/json"},f=a.apiKey?.trim()?{key:a.apiKey.trim(),oauth:!1}:a.providerId?await L(a.providerId):void 0;if(f&&!a.apiKey?.trim()){let b,c=await (0,s.uU)(),e=c.getProviders().find(b=>b.id===a.providerId),g=[e?.baseUrl,f.baseUrl,...e?c.getModels(e.id).map(a=>a.baseUrl):[]];if(b=M(d).href,!g.some(a=>{if(!a)return!1;try{let c=new URL(a);return!c.username&&!c.password&&M(c).href===b}catch{return!1}}))throw Error("已配置的凭证只能用于该 Provider 已配置的 API 地址;新地址请显式填写密钥")}let g=f?.key;if(!a.apiKey?.trim()&&f?.oauth&&"openai-codex"===a.providerId)throw Error("OpenAI Codex 的模型目录由 SDK 内置,无需获取;如需自定义请手动添加模型 ID");g&&("anthropic-messages"===a.api?(e["x-api-key"]=g,f?.oauth&&(e["anthropic-beta"]="oauth-2025-04-20")):e.Authorization=`Bearer ${g}`),"anthropic-messages"===a.api&&(e["anthropic-version"]="2023-06-01");let h=new AbortController,i=setTimeout(()=>h.abort(),15e3);try{let b=await O(d,e,h.signal,!0===a.allowPrivate);if(401===b.status)throw Error(g?"模型目录请求失败(HTTP 401):密钥或令牌无效":"模型目录请求失败(HTTP 401):请先填写 API 密钥");if(403===b.status)throw Error(f?.oauth?"模型目录请求失败(HTTP 403):该 OAuth 令牌无权访问模型目录(部分提供商不支持),请手动填写模型 ID":"模型目录请求失败(HTTP 403):密钥无权访问模型目录");if(!b.ok)throw Error(`模型目录请求失败(HTTP ${b.status})`);let c=await P(b),i=(Array.isArray(c)?c:c&&"object"==typeof c?Array.isArray(c.data)?c.data:Array.isArray(c.models)?c.models:[]:[]).map(a=>{let b,c,d,e,f,g,h;if("string"==typeof a)return{id:a};if(!a||"object"!=typeof a)return null;let i="string"==typeof a.id?a.id.trim():"";if(!i)return null;let j="string"==typeof a.name&&a.name.trim()?a.name.trim():void 0;return{id:i,...j?{name:j}:{},...(b=av(a.architecture)?a.architecture:void 0,d=Array.isArray(c=a.modalities??b?.input_modalities??a.input_modalities)?c:av(c)&&Array.isArray(c.input)?c.input:void 0,e=av(a.top_provider)?a.top_provider:void 0,f=A(a.context_window)??A(a.context_length)??A(a.max_input_tokens)??A(b?.context_length),g=A(a.max_output_tokens)??A(a.max_completion_tokens)??A(e?.max_completion_tokens),h=d?d.some(a=>"string"==typeof a&&"image"===a.toLowerCase()):void 0,{...void 0===f?{}:{contextWindow:f},...void 0===g?{}:{maxTokens:g},...void 0===h?{}:{vision:h}})}}).filter(a=>!!a).filter((a,b,c)=>c.findIndex(b=>b.id===a.id)===b).slice(0,500);if(!i.length)throw Error("响应中没有可识别的模型 ID");return i}catch(a){if(a instanceof Error&&"AbortError"===a.name)throw Error("模型目录请求超时");if(a&&"object"==typeof a&&"code"in a&&["ECONNREFUSED","ECONNRESET","ENOTFOUND","EHOSTUNREACH","ENETUNREACH","ETIMEDOUT"].includes(String(a.code))||a instanceof TypeError&&a.message.toLowerCase().includes("fetch"))throw Error("无法连接模型目录,请检查 API 地址和网络");throw a}finally{clearTimeout(i)}}let aL=new Map;async function R(a,b=!1){let c=function(a){switch(a){case"xai":return ag;case"openai-codex":return W;case"anthropic":return X;case"deepseek":return Z;case"openrouter":return $;case"moonshotai":return()=>_("moonshotai");case"moonshotai-cn":return()=>_("moonshotai-cn");case"kimi-coding":return ac;case"github-copilot":return ad;case"vercel-ai-gateway":return ae;case"opencode-go":return af;default:return null}}(a);if(!c)return null;let d=aL.get(a);if(!b&&d&&Date.now()-d.at<3e5)return d.value;let e=await c();return aL.set(a,{at:Date.now(),value:e}),e}async function S(a,b,c=1e4){let d=new AbortController,e=setTimeout(()=>d.abort(),c);try{let c=await fetch(a,{...b,signal:d.signal});if(!c.ok)return void c.body?.cancel().catch(()=>{});return await c.json()}catch{return}finally{clearTimeout(e)}}function T(a){return a&&"object"==typeof a&&!Array.isArray(a)?a:void 0}function U(a){if("string"!=typeof a)return;let b=new Date(a);return Number.isFinite(b.getTime())?b.toISOString():void 0}function V(a){try{let b=JSON.parse(Buffer.from(a.split(".")[1]??"","base64").toString("utf8"));return T(T(b)?.["https://api.openai.com/auth"])}catch{return}}async function W(){var a;let b,c=await L("openai-codex");if(!c)return null;let d=(a=c.key,"string"==typeof(b=V(a)?.chatgpt_plan_type)&&b.trim()?b.trim():void 0),e=await S("https://chatgpt.com/backend-api/wham/usage",{headers:{Authorization:`Bearer ${c.key}`,...c.accountId?{"chatgpt-account-id":c.accountId}:{}}});if(void 0===e)return void 0===d?null:{kind:"quota",planType:d,windows:[],probedAt:Date.now()};let f=function(a){let b=T(a);if(!b)return{windows:[]};let c=T(b.rate_limit),d=[c?.primary_window,c?.secondary_window].map(T).flatMap(a=>{let b;if(!a||"number"!=typeof a.limit_window_seconds||a.limit_window_seconds<=0||"number"!=typeof a.used_percent||!Number.isFinite(a.used_percent))return[];if(Number.isSafeInteger(a.reset_at)&&a.reset_at>0){let c=new Date(1e3*a.reset_at);Number.isFinite(c.getTime())&&(b=c.toISOString())}return[{limitWindowSeconds:a.limit_window_seconds,remainingPercent:Math.min(100,Math.max(0,Math.round(100-a.used_percent))),...void 0===b?{}:{resetAt:b}}]}).sort(ab),e=b.plan_type;return{..."string"==typeof e&&e.trim()?{planType:e.trim()}:{},windows:d}}(e),g=f.planType??d;return{kind:"quota",...f,...void 0===g?{}:{planType:g},probedAt:Date.now()}}async function X(){let a=await L("anthropic");if(!a?.oauth)return null;let b=await S("https://api.anthropic.com/api/oauth/usage",{headers:{Authorization:`Bearer ${a.key}`,"anthropic-beta":"oauth-2025-04-20"}});if(void 0===b)return null;let c=function(a){let b=T(a);if(!b)return{windows:[]};let c=(a,c,d)=>{let e=T(b[a]);if(!e||"number"!=typeof e.utilization||!Number.isFinite(e.utilization))return[];let f=U(e.resets_at);return[{limitWindowSeconds:c,remainingPercent:Math.min(100,Math.max(0,Math.round(100-e.utilization))),...void 0===f?{}:{resetAt:f},...void 0===d?{}:{variant:d}}]};return{windows:[...c("five_hour",18e3),...c("seven_day",y.fv),...c("seven_day_opus",y.fv,"opus")].sort(ab)}}(b);return 0===c.windows.length?null:{kind:"quota",...c,probedAt:Date.now()}}function Y(a,b){return"number"==typeof a&&Number.isFinite(a)?{amount:a.toFixed(2),...void 0===b?{}:{currency:b}}:"string"==typeof a&&a.trim()&&Number.isFinite(Number(a))?{amount:Number(a).toFixed(2),...void 0===b?{}:{currency:b}}:void 0}let aM={moonshotai:{base:"https://api.moonshot.ai",currency:"USD"},"moonshotai-cn":{base:"https://api.moonshot.cn",currency:"CNY"}};async function Z(){let a=await L("deepseek");if(!a)return null;let b=await S("https://api.deepseek.com/user/balance",{headers:{Authorization:`Bearer ${a.key}`}});return void 0===b?null:{kind:"balance",...function(a){let b=T(a),c=(Array.isArray(b?.balance_infos)?b.balance_infos.map(T).filter(Boolean):[])[0];if(!c)return{details:[]};let d="string"==typeof c.currency&&c.currency.trim()?c.currency.trim():void 0,e=[],f=Y(c.granted_balance,d);f&&e.push({key:"granted",...f});let g=Y(c.topped_up_balance,d);g&&e.push({key:"toppedUp",...g});let h=Y(c.total_balance,d);return{...void 0===h?{}:{primary:h},details:e}}(b),probedAt:Date.now()}}async function $(){let a=await L("openrouter");if(!a)return null;let b=await S("https://openrouter.ai/api/v1/key",{headers:{Authorization:`Bearer ${a.key}`}});return void 0===b?null:{kind:"balance",...function(a){let b=T(T(a)?.data);if(!b)return{details:[]};let c=[],d=Y(b.limit,"USD");d&&c.push({key:"limit",...d});let e=Y(b.usage,"USD");e&&c.push({key:"used",...e});let f=Y(b.limit_remaining,"USD");return f?{primary:f,details:c}:e?{primaryKey:"used",primary:e,details:c}:{details:c}}(b),probedAt:Date.now()}}async function _(a){let b=await L(a);if(!b)return null;let c=aM[a],d=await S(`${c.base}/v1/users/me/balance`,{headers:{Authorization:`Bearer ${b.key}`}});return void 0===d?null:{kind:"balance",...function(a,b){let c=T(a),d=T(c?.data);if(!d||c?.status===!1)return{details:[]};let e=[],f=Y(d.voucher_balance,b);f&&e.push({key:"voucher",...f});let g=Y(d.cash_balance,b);g&&e.push({key:"cash",...g});let h=Y(d.available_balance,b);return{...void 0===h?{}:{primary:h},details:e}}(d,c.currency),probedAt:Date.now()}}function aa(a){return Math.min(100,Math.max(0,Math.round(100-a)))}function ab(a,b){return(a.limitWindowSeconds??1/0)-(b.limitWindowSeconds??1/0)}async function ac(){let a=await L("kimi-coding");if(!a)return null;let b=await S("https://api.kimi.com/coding/v1/usages",{headers:{Authorization:`Bearer ${a.key}`,Accept:"application/json"}});if(void 0===b)return null;let c=function(a){let b=T(T(a)?.usages);if(!b)return{windows:[]};let c=(a,c,d)=>{let e=T(b[a]);if(!e||"number"!=typeof e.used_ratio||!Number.isFinite(e.used_ratio))return[];let f=U(e.reset_time);return[{limitWindowSeconds:c,remainingPercent:aa(100*e.used_ratio),...void 0===f?{}:{resetAt:f},...void 0===d?{}:{variant:d}}]};return{windows:[...c("limit_5h",18e3),...c("limit_7d",y.fv),...c("limit_month_total",y.lG),...c("limit_month_code",y.lG,"code")].sort(ab)}}(b);return 0===c.windows.length?null:{kind:"quota",...c,probedAt:Date.now()}}async function ad(){let a=await L("github-copilot");if(!a?.oauth)return null;let b=await S("https://api.github.com/copilot_internal/user",{headers:{Authorization:`Bearer ${a.key}`,Accept:"application/json"}});if(void 0===b)return null;let c=function(a){let b=T(a);if(!b)return{windows:[]};let c=T(b.quota_snapshots),d=b.copilot_plan,e=U(b.quota_reset_date),f=[["premium_interactions","premium"],["chat","chat"],["completions","completions"]].flatMap(([a,b])=>{let d=T(c?.[a]);return d&&!1!==d.has_quota&&!0!==d.unlimited&&"number"==typeof d.percent_remaining&&Number.isFinite(d.percent_remaining)?[{remainingPercent:Math.min(100,Math.max(0,Math.round(d.percent_remaining))),...void 0===e?{}:{resetAt:e},name:b}]:[]});return{..."string"==typeof d&&d.trim()?{planType:d.trim()}:{},windows:f}}(b);return 0===c.windows.length&&void 0===c.planType?null:{kind:"quota",...c,probedAt:Date.now()}}async function ae(){let a=await L("vercel-ai-gateway");if(!a)return null;let b=await S("https://ai-gateway.vercel.sh/v1/credits",{headers:{Authorization:`Bearer ${a.key}`}});return void 0===b?null:{kind:"balance",...function(a){let b=T(a);if(!b)return{details:[]};let c=[],d=Y(b.total_used,"USD");d&&c.push({key:"used",...d});let e=Y(b.balance,"USD");return{...void 0===e?{}:{primary:e},details:c}}(b),probedAt:Date.now()}}async function af(){let a=await L("opencode-go");if(!a)return null;let b=await S("https://opencode.ai/zen/go/v1/usage",{headers:{Authorization:`Bearer ${a.key}`,Accept:"application/json"}});if(void 0===b)return null;let c=function(a){let b=T(T(a)?.usage);if(!b)return{windows:[]};let c=(a,c)=>{let d=T(b[a]);if(!d||"number"!=typeof d.percent||!Number.isFinite(d.percent))return[];let e=U(d.resetsAt);return[{...void 0===c?{name:a}:{limitWindowSeconds:c},remainingPercent:aa(d.percent),...void 0===e?{}:{resetAt:e}}]};return{windows:[...c("rolling"),...c("weekly",y.fv),...c("monthly",y.lG)].sort(ab)}}(b);return 0===c.windows.length?null:{kind:"quota",...c,probedAt:Date.now()}}async function ag(){let a=await L("xai");if(!a)return null;let b=a.key,c="";try{let a=(await (0,s.uU)()).getModels("xai").map(a=>String(a.id)).filter(a=>!a.includes("imagine")&&!a.includes("multi-agent"));c=["grok-4.6","grok-4.5","grok-4.3"].find(b=>a.some(a=>a===b||a.startsWith(`${b}-`)))??a[0]??""}catch{return null}if(!c)return null;let d=new AbortController,e=setTimeout(()=>d.abort(),2e4);try{let a=await fetch("https://api.x.ai/v1/chat/completions",{method:"POST",headers:{Authorization:`Bearer ${b}`,"Content-Type":"application/json"},body:JSON.stringify({model:c,messages:[{role:"user",content:"ping"}],max_tokens:1}),signal:d.signal});a.body?.cancel().catch(()=>{});let e=b=>Number(a.headers.get(b)??0/0),f=e("x-ratelimit-limit-requests"),g=e("x-ratelimit-remaining-requests"),h=e("x-ratelimit-limit-tokens"),i=e("x-ratelimit-remaining-tokens");if(![f,g,h,i].every(Number.isFinite))return null;return{kind:"xai",model:c,requestLimit:f,requestRemaining:g,tokenLimit:h,tokenRemaining:i,probedAt:Date.now()}}catch{return null}finally{clearTimeout(e)}}let aN=new Map;function ah(){let a=Date.now();for(let[b,c]of aN)c.done&&void 0!==c.finishedAt&&a-c.finishedAt>6e5&&aN.delete(b)}function ai(a){return aN.get(a.providerId)===a&&!a.done&&!a.controller.signal.aborted}function aj(a){if(a.controller.signal.throwIfAborted(),!ai(a))throw Error("canceled")}function ak(a,b){return aN.get(a.providerId)===a&&!a.done&&(a.done=!0,void 0!==b&&(a.error=b instanceof Error?b.message:String(b)),a.finishedAt=Date.now(),a.timeout&&clearTimeout(a.timeout),a.timeout=null,a.rejecter?.(b instanceof Error?b:Error(a.error??"login finished")),a.prompt=null,a.resolver=null,a.rejecter=null,!0)}function al(a,b){ak(a,b),a.controller.abort(b)}function am(a){ah();let b=aN.get(a);b&&!b.done&&al(b,Error("canceled"));let c={providerId:a,controller:new AbortController,timeout:null,prompt:null,resolver:null,rejecter:null,notifyLog:[],done:!1};return aN.set(a,c),c.timeout=setTimeout(()=>al(c,Error("login timed out")),6e5),c.timeout.unref?.(),c}async function an(a){try{let b=await (0,s.uU)();return aj(a),b}catch(b){throw ak(a,b),b}}async function ao(a,b,c,d){let e=!1,f={signal:a.controller.signal,prompt:async b=>{let c;return(aj(a),b.signal?.throwIfAborted(),void 0===d||e||"select"===b.type)?(aj(a),(c=b.signal?AbortSignal.any([a.controller.signal,b.signal]):a.controller.signal).throwIfAborted(),a.rejecter?.(Error("prompt replaced")),new Promise((d,e)=>{let f=!1,g=()=>{c.removeEventListener("abort",j),a.resolver===h&&(a.prompt=null,a.resolver=null,a.rejecter=null)},h=a=>{f||(f=!0,g(),d(a))},i=a=>{f||(f=!0,g(),e(a))},j=()=>i(c.reason instanceof Error?c.reason:Error("canceled"));a.prompt=b,a.resolver=h,a.rejecter=i,c.addEventListener("abort",j,{once:!0}),c.aborted&&j()})):(e=!0,d)},notify:b=>{ai(a)&&(a.notifyLog.push("string"==typeof b?b:JSON.stringify(b)),a.notifyLog.length>20&&a.notifyLog.shift())}};try{aj(a),await b.login(a.providerId,c,f),aj(a),ak(a)&&B()}catch(b){throw ak(a,b),b}}async function ap(a){let b=am(a),c=await an(b);ao(b,c,"oauth").catch(()=>void 0)}function aq(a){ah();let b=aN.get(a);return b?{prompt:b.prompt?{type:b.prompt.type,message:b.prompt.message,placeholder:"placeholder"in b.prompt?b.prompt.placeholder:void 0,options:"select"===b.prompt.type?b.prompt.options.map(a=>({label:a.label,value:a.id})):void 0}:null,notifyLog:[...b.notifyLog],done:b.done,error:b.error}:{prompt:null,notifyLog:[],done:!0}}function ar(a,b){let c=aN.get(a);return!!c&&!!ai(c)&&!!c.resolver&&(c.resolver(b),!0)}function as(a){ah();let b=aN.get(a);return!!b&&(b.done||al(b,Error("canceled")),!0)}function at(){return h().join((0,s.$M)(),"models.json")}class aO extends Error{}class aP extends Error{constructor(){super("models.json 已被修改,请重新加载后再保存")}}function au(a){let b=[],c=(0,p.cZ)(a.replace(/^\uFEFF/,""),b,{allowTrailingComma:!0,allowEmptyContent:!1});if(b.length||!c){let a=b[0];throw new aO(`models.json JSONC 无效${a?` (${(0,p._n)(a.error)}, offset ${a.offset})`:""}`)}let d=(0,p.yQ)(c);if(!av(d)||!av(d.providers))throw new aO('models.json 顶层必须是 { "providers": { ... } }');for(let[a,b]of Object.entries(d.providers))if(!av(b))throw new aO(`provider "${a}" 必须是对象`);return d}function av(a){return null!==a&&"object"==typeof a&&!Array.isArray(a)}async function aw(a){try{let b=await f().readFile(a,"utf8");return{content:b,revision:(0,i.createHash)("sha256").update(b).digest("hex")}}catch(a){if("ENOENT"!==a.code)throw a;return{content:void 0,revision:"missing"}}}async function ax(){let a=await aw(at());return{...function(a){let b=au(a),c=[];for(let[a,d]of Object.entries(b.providers))Object.prototype.hasOwnProperty.call(d,"apiKey")&&(delete d.apiKey,c.push(a));return{content:JSON.stringify(b,null,2),secretProviderIds:c}}(a.content??'{"providers":{}}'),exists:void 0!==a.content,revision:a.revision}}async function ay(a){let b=(await o.ModelRuntime.create({modelsPath:a,credentials:new w.InMemoryCredentialStore,modelsStore:new w.InMemoryModelsStore,allowModelNetwork:!1,refreshOnCreate:!1})).getError();if(b)throw new aO(b)}async function az(a,b,c,d){let e=au(b.content??'{"providers":{}}'),g=`${a}.${process.pid}.${(0,i.randomUUID)()}.tmp`;try{void 0!==b.content&&(await f().writeFile(g,JSON.stringify(e,null,2),{encoding:"utf8",flag:"wx",mode:384}),await ay(g)),d?.(e);for(let[a,b]of Object.entries(c.providers)){if(!a.trim())throw new aO("provider ID 必须是非空字符串");for(let c of[...Array.isArray(b.models)?b.models:[],...av(b.modelOverrides)?Object.values(b.modelOverrides):[]])if(av(c)){for(let b of["contextWindow","maxTokens"])if(void 0!==c[b]&&("number"!=typeof c[b]||!Number.isSafeInteger(c[b])||c[b]<=0))throw new aO(`provider "${a}" 的 ${b} 必须是正整数`)}}if(await f().writeFile(g,JSON.stringify(c,null,2),{encoding:"utf8",flag:void 0===b.content?"wx":"w",mode:384}),await ay(g),(await aw(a)).revision!==b.revision)throw new aP;await f().rename(g,a)}finally{await f().rm(g,{force:!0}).catch(()=>void 0)}}async function aA(a,b){let c=at();await (0,x.Ax)(c,()=>(0,x._i)(c,async()=>{let d=await aw(c);if(void 0!==b&&b!==d.revision)throw new aP;let e=au(a);await az(c,d,e,a=>{for(let[b,c]of Object.entries(e.providers))if(null===c.apiKey)delete c.apiKey;else if(void 0===c.apiKey){let d=a.providers[b];d&&Object.prototype.hasOwnProperty.call(d,"apiKey")&&(c.apiKey=d.apiKey)}for(let a of Object.values(e.providers))void 0===a.apiKey&&"string"==typeof a.baseUrl&&/^https?:\/\/(localhost|127\.0\.0\.1|\[::1\]|192\.168\.|10\.|172\.(1[6-9]|2\d|3[01])\.)/i.test(a.baseUrl.trim())&&(a.apiKey="unused")})})),await (0,s.x9)(),B(),await (0,u.Sj)()}async function aB(a,b){let c=(await (0,s.uU)()).getModel(a,b);if(!c)throw new aO(`找不到模型:${a}/${b}`);let d=(await D()).get(a)?.get(b);return{contextWindow:Number(c.contextWindow)||0,builtin:d||null}}async function aC(a,b){return await (0,s.NU)(),aB(a,b)}async function aD(a,b,c){if(!Number.isSafeInteger(c)||c<=0)throw new aO("contextWindow 必须是正整数");await aB(a,b);let d=at();return await (0,x.Ax)(d,()=>(0,x._i)(d,async()=>{let e=await aw(d),f=au(e.content??'{"providers":{}}'),g=(0,v.Ax)(f.providers,a,b,c);await az(d,e,{...f,providers:g})})),await (0,s.x9)(),B(),(0,u.oW)(a,b),aB(a,b)}d()}catch(a){d(a)}})},71553:a=>{a.exports=require("node:dns/promises")},71808:(a,b,c)=>{var d,e,f,g,h,i,j,k,l;function m(a){return 32===a||9===a}function n(a){return 10===a||13===a}function o(a){return a>=48&&a<=57}c.d(b,{yQ:()=>q,cZ:()=>p,_n:()=>r}),(i=d||(d={}))[i.lineFeed=10]="lineFeed",i[i.carriageReturn=13]="carriageReturn",i[i.space=32]="space",i[i._0=48]="_0",i[i._1=49]="_1",i[i._2=50]="_2",i[i._3=51]="_3",i[i._4=52]="_4",i[i._5=53]="_5",i[i._6=54]="_6",i[i._7=55]="_7",i[i._8=56]="_8",i[i._9=57]="_9",i[i.a=97]="a",i[i.b=98]="b",i[i.c=99]="c",i[i.d=100]="d",i[i.e=101]="e",i[i.f=102]="f",i[i.g=103]="g",i[i.h=104]="h",i[i.i=105]="i",i[i.j=106]="j",i[i.k=107]="k",i[i.l=108]="l",i[i.m=109]="m",i[i.n=110]="n",i[i.o=111]="o",i[i.p=112]="p",i[i.q=113]="q",i[i.r=114]="r",i[i.s=115]="s",i[i.t=116]="t",i[i.u=117]="u",i[i.v=118]="v",i[i.w=119]="w",i[i.x=120]="x",i[i.y=121]="y",i[i.z=122]="z",i[i.A=65]="A",i[i.B=66]="B",i[i.C=67]="C",i[i.D=68]="D",i[i.E=69]="E",i[i.F=70]="F",i[i.G=71]="G",i[i.H=72]="H",i[i.I=73]="I",i[i.J=74]="J",i[i.K=75]="K",i[i.L=76]="L",i[i.M=77]="M",i[i.N=78]="N",i[i.O=79]="O",i[i.P=80]="P",i[i.Q=81]="Q",i[i.R=82]="R",i[i.S=83]="S",i[i.T=84]="T",i[i.U=85]="U",i[i.V=86]="V",i[i.W=87]="W",i[i.X=88]="X",i[i.Y=89]="Y",i[i.Z=90]="Z",i[i.asterisk=42]="asterisk",i[i.backslash=92]="backslash",i[i.closeBrace=125]="closeBrace",i[i.closeBracket=93]="closeBracket",i[i.colon=58]="colon",i[i.comma=44]="comma",i[i.dot=46]="dot",i[i.doubleQuote=34]="doubleQuote",i[i.minus=45]="minus",i[i.openBrace=123]="openBrace",i[i.openBracket=91]="openBracket",i[i.plus=43]="plus",i[i.slash=47]="slash",i[i.formFeed=12]="formFeed",i[i.tab=9]="tab",Array(20).fill(0).map((a,b)=>" ".repeat(b)),Array(200).fill(0).map((a,b)=>"\n"+" ".repeat(b)),Array(200).fill(0).map((a,b)=>"\r"+" ".repeat(b)),Array(200).fill(0).map((a,b)=>"\r\n"+" ".repeat(b)),Array(200).fill(0).map((a,b)=>"\n"+" ".repeat(b)),Array(200).fill(0).map((a,b)=>"\r"+" ".repeat(b)),Array(200).fill(0).map((a,b)=>"\r\n"+" ".repeat(b)),(e||(e={})).DEFAULT={allowTrailingComma:!1},(j=f||(f={}))[j.None=0]="None",j[j.UnexpectedEndOfComment=1]="UnexpectedEndOfComment",j[j.UnexpectedEndOfString=2]="UnexpectedEndOfString",j[j.UnexpectedEndOfNumber=3]="UnexpectedEndOfNumber",j[j.InvalidUnicode=4]="InvalidUnicode",j[j.InvalidEscapeCharacter=5]="InvalidEscapeCharacter",j[j.InvalidCharacter=6]="InvalidCharacter",(k=g||(g={}))[k.OpenBraceToken=1]="OpenBraceToken",k[k.CloseBraceToken=2]="CloseBraceToken",k[k.OpenBracketToken=3]="OpenBracketToken",k[k.CloseBracketToken=4]="CloseBracketToken",k[k.CommaToken=5]="CommaToken",k[k.ColonToken=6]="ColonToken",k[k.NullKeyword=7]="NullKeyword",k[k.TrueKeyword=8]="TrueKeyword",k[k.FalseKeyword=9]="FalseKeyword",k[k.StringLiteral=10]="StringLiteral",k[k.NumericLiteral=11]="NumericLiteral",k[k.LineCommentTrivia=12]="LineCommentTrivia",k[k.BlockCommentTrivia=13]="BlockCommentTrivia",k[k.LineBreakTrivia=14]="LineBreakTrivia",k[k.Trivia=15]="Trivia",k[k.Unknown=16]="Unknown",k[k.EOF=17]="EOF";let p=function(a,b=[],c=e.DEFAULT){let d={type:"array",offset:-1,length:-1,children:[],parent:void 0};function f(a){"property"===d.type&&(d.length=a-d.offset,d=d.parent)}function g(a){return d.children.push(a),a}!function(a,b,c=e.DEFAULT){var d;let f=function(a,b=!1){let c=a.length,d=0,e="",f=0,g=16,h=0,i=0,j=0,k=0,l=0;function p(){if(e="",l=0,f=d,i=h,k=j,d>=c)return f=c,g=17;let b=a.charCodeAt(d);if(m(b)){do d++,e+=String.fromCharCode(b),b=a.charCodeAt(d);while(m(b));return g=15}if(n(b))return d++,e+=String.fromCharCode(b),13===b&&10===a.charCodeAt(d)&&(d++,e+="\n"),h++,j=d,g=14;switch(b){case 123:return d++,g=1;case 125:return d++,g=2;case 91:return d++,g=3;case 93:return d++,g=4;case 58:return d++,g=6;case 44:return d++,g=5;case 34:return d++,e=function(){let b="",e=d;for(;;){if(d>=c){b+=a.substring(e,d),l=2;break}let f=a.charCodeAt(d);if(34===f){b+=a.substring(e,d),d++;break}if(92===f){if(b+=a.substring(e,d),++d>=c){l=2;break}switch(a.charCodeAt(d++)){case 34:b+='"';break;case 92:b+="\\";break;case 47:b+="/";break;case 98:b+="\b";break;case 102:b+="\f";break;case 110:b+="\n";break;case 114:b+="\r";break;case 116:b+=" ";break;case 117:let f=function(b){let c=0,e=0;for(;c<4||!b;){let b=a.charCodeAt(d);if(b>=48&&b<=57)e=16*e+b-48;else if(b>=65&&b<=70)e=16*e+b-65+10;else if(b>=97&&b<=102)e=16*e+b-97+10;else break;d++,c++}return c<4&&(e=-1),e}(!0);f>=0?b+=String.fromCharCode(f):l=4;break;default:l=5}e=d;continue}if(f>=0&&f<=31)if(n(f)){b+=a.substring(e,d),l=2;break}else l=6;d++}return b}(),g=10;case 47:let p=d-1;if(47===a.charCodeAt(d+1)){for(d+=2;d<c&&!n(a.charCodeAt(d));)d++;return e=a.substring(p,d),g=12}if(42===a.charCodeAt(d+1)){d+=2;let b=c-1,f=!1;for(;d<b;){let b=a.charCodeAt(d);if(42===b&&47===a.charCodeAt(d+1)){d+=2,f=!0;break}d++,n(b)&&(13===b&&10===a.charCodeAt(d)&&d++,h++,j=d)}return f||(d++,l=1),e=a.substring(p,d),g=13}return e+=String.fromCharCode(b),d++,g=16;case 45:if(e+=String.fromCharCode(b),++d===c||!o(a.charCodeAt(d)))return g=16;case 48:case 49:case 50:case 51:case 52:case 53:case 54:case 55:case 56:case 57:return e+=function(){let b=d;if(48===a.charCodeAt(d))d++;else for(d++;d<a.length&&o(a.charCodeAt(d));)d++;if(d<a.length&&46===a.charCodeAt(d)){if(!(++d<a.length&&o(a.charCodeAt(d))))return l=3,a.substring(b,d);for(d++;d<a.length&&o(a.charCodeAt(d));)d++}let c=d;if(d<a.length&&(69===a.charCodeAt(d)||101===a.charCodeAt(d)))if((++d<a.length&&43===a.charCodeAt(d)||45===a.charCodeAt(d))&&d++,d<a.length&&o(a.charCodeAt(d))){for(d++;d<a.length&&o(a.charCodeAt(d));)d++;c=d}else l=3;return a.substring(b,c)}(),g=11;default:for(;d<c&&function(a){if(m(a)||n(a))return!1;switch(a){case 125:case 93:case 123:case 91:case 34:case 58:case 44:case 47:return!1}return!0}(b);)d++,b=a.charCodeAt(d);if(f!==d){switch(e=a.substring(f,d)){case"true":return g=8;case"false":return g=9;case"null":return g=7}return g=16}return e+=String.fromCharCode(b),d++,g=16}}return{setPosition:function(a){d=a,e="",f=0,g=16,l=0},getPosition:()=>d,scan:b?function(){let a;do a=p();while(a>=12&&a<=15);return a}:p,getToken:()=>g,getTokenValue:()=>e,getTokenOffset:()=>f,getTokenLength:()=>d-f,getTokenStartLine:()=>i,getTokenStartCharacter:()=>f-k,getTokenError:()=>l}}(a,!1),g=[],h=0;function i(a){return a?b=>0===h&&a(b,f.getTokenOffset(),f.getTokenLength(),f.getTokenStartLine(),f.getTokenStartCharacter()):()=>!0}function j(a){return a?b=>0===h&&a(b,f.getTokenOffset(),f.getTokenLength(),f.getTokenStartLine(),f.getTokenStartCharacter(),()=>g.slice()):()=>!0}function k(a){return a?()=>{h>0?h++:!1===a(f.getTokenOffset(),f.getTokenLength(),f.getTokenStartLine(),f.getTokenStartCharacter(),()=>g.slice())&&(h=1)}:()=>!0}function l(a){return a?()=>{h>0&&h--,0===h&&a(f.getTokenOffset(),f.getTokenLength(),f.getTokenStartLine(),f.getTokenStartCharacter())}:()=>!0}let p=k(b.onObjectBegin),q=j(b.onObjectProperty),r=l(b.onObjectEnd),s=k(b.onArrayBegin),t=l(b.onArrayEnd),u=j(b.onLiteralValue),v=i(b.onSeparator),w=(d=b.onComment)?()=>0===h&&d(f.getTokenOffset(),f.getTokenLength(),f.getTokenStartLine(),f.getTokenStartCharacter()):()=>!0,x=i(b.onError),y=c&&c.disallowComments,z=c&&c.allowTrailingComma;function A(){for(;;){let a=f.scan();switch(f.getTokenError()){case 4:B(14);break;case 5:B(15);break;case 3:B(13);break;case 1:y||B(11);break;case 2:B(12);break;case 6:B(16)}switch(a){case 12:case 13:y?B(10):w();break;case 16:B(1);break;case 15:case 14:break;default:return a}}}function B(a,b=[],c=[]){if(x(a),b.length+c.length>0){let a=f.getToken();for(;17!==a;){if(-1!==b.indexOf(a)){A();break}if(-1!==c.indexOf(a))break;a=A()}}}function C(a){let b=f.getTokenValue();return a?u(b):(q(b),g.push(b)),A(),!0}if(A(),17===f.getToken())return c.allowEmptyContent||B(4,[],[]);!function a(){switch(f.getToken()){case 3:s(),A();let b=!0,c=!1;for(;4!==f.getToken()&&17!==f.getToken();){if(5===f.getToken()){if(c||B(4,[],[]),v(","),A(),4===f.getToken()&&z)break}else c&&B(6,[],[]);b?(g.push(0),b=!1):g[g.length-1]++,a()||B(4,[],[4,5]),c=!0}return t(),b||g.pop(),4!==f.getToken()?B(8,[4],[]):A(),!0;case 1:p(),A();let d=!1;for(;2!==f.getToken()&&17!==f.getToken();){if(5===f.getToken()){if(d||B(4,[],[]),v(","),A(),2===f.getToken()&&z)break}else d&&B(6,[],[]);(10!==f.getToken()?(B(3,[],[2,5]),1):(C(!1),6===f.getToken()?(v(":"),A(),a()||B(4,[],[2,5])):B(5,[],[2,5]),g.pop(),0))&&B(4,[],[2,5]),d=!0}return r(),2!==f.getToken()?B(7,[2],[]):A(),!0;case 10:return C(!0);default:switch(f.getToken()){case 11:let e=Number(f.getTokenValue());isNaN(e)&&(B(2),e=0),u(e);break;case 7:u(null);break;case 8:u(!0);break;case 9:u(!1);break;default:return!1}return A(),!0}}()?B(4,[],[]):17!==f.getToken()&&B(9,[],[])}(a,{onObjectBegin:a=>{d=g({type:"object",offset:a,length:-1,parent:d,children:[]})},onObjectProperty:(a,b,c)=>{(d=g({type:"property",offset:b,length:-1,parent:d,children:[]})).children.push({type:"string",value:a,offset:b,length:c,parent:d})},onObjectEnd:(a,b)=>{f(a+b),d.length=a+b-d.offset,d=d.parent,f(a+b)},onArrayBegin:(a,b)=>{d=g({type:"array",offset:a,length:-1,parent:d,children:[]})},onArrayEnd:(a,b)=>{d.length=a+b-d.offset,d=d.parent,f(a+b)},onLiteralValue:(a,b,c)=>{g({type:function(a){switch(typeof a){case"boolean":return"boolean";case"number":return"number";case"string":return"string";case"object":if(!a)return"null";if(Array.isArray(a))return"array";return"object";default:return"null"}}(a),offset:b,length:c,parent:d,value:a}),f(b+c)},onSeparator:(a,b,c)=>{"property"===d.type&&(":"===a?d.colonOffset=b:","===a&&f(b))},onError:(a,c,d)=>{b.push({error:a,offset:c,length:d})}},c);let h=d.children[0];return h&&delete h.parent,h},q=function a(b){switch(b.type){case"array":return b.children.map(a);case"object":let c=Object.create(null);for(let d of b.children){let b=d.children[1];b&&(c[d.children[0].value]=a(b))}return c;case"null":case"string":case"number":case"boolean":return b.value;default:return}};function r(a){switch(a){case 1:return"InvalidSymbol";case 2:return"InvalidNumberFormat";case 3:return"PropertyNameExpected";case 4:return"ValueExpected";case 5:return"ColonExpected";case 6:return"CommaExpected";case 7:return"CloseBraceExpected";case 8:return"CloseBracketExpected";case 9:return"EndOfFileExpected";case 10:return"InvalidCommentToken";case 11:return"UnexpectedEndOfComment";case 12:return"UnexpectedEndOfString";case 13:return"UnexpectedEndOfNumber";case 14:return"InvalidUnicode";case 15:return"InvalidEscapeCharacter";case 16:return"InvalidCharacter"}return"<unknown ParseErrorCode>"}(l=h||(h={}))[l.InvalidSymbol=1]="InvalidSymbol",l[l.InvalidNumberFormat=2]="InvalidNumberFormat",l[l.PropertyNameExpected=3]="PropertyNameExpected",l[l.ValueExpected=4]="ValueExpected",l[l.ColonExpected=5]="ColonExpected",l[l.CommaExpected=6]="CommaExpected",l[l.CloseBraceExpected=7]="CloseBraceExpected",l[l.CloseBracketExpected=8]="CloseBracketExpected",l[l.EndOfFileExpected=9]="EndOfFileExpected",l[l.InvalidCommentToken=10]="InvalidCommentToken",l[l.UnexpectedEndOfComment=11]="UnexpectedEndOfComment",l[l.UnexpectedEndOfString=12]="UnexpectedEndOfString",l[l.UnexpectedEndOfNumber=13]="UnexpectedEndOfNumber",l[l.InvalidUnicode=14]="InvalidUnicode",l[l.InvalidEscapeCharacter=15]="InvalidEscapeCharacter",l[l.InvalidCharacter=16]="InvalidCharacter"},73024:a=>{a.exports=require("node:fs")},75430:a=>{a.exports=import("@earendil-works/pi-coding-agent")},75554:(a,b,c)=>{c.a(a,async(a,d)=>{try{c.d(b,{DY:()=>s,Gh:()=>x,J0:()=>r,MO:()=>p});var e=c(51455),f=c.n(e),g=c(76760),h=c.n(g),i=c(77598),j=c(86159),k=c(87982),l=c(49904),m=a([k]);k=(m.then?(await m)():m)[0];let t=16384,u=2e4,v=3,w=2e3;function n(){return h().join((0,k.$M)(),"settings.json")}async function o(){return(0,j.op)(n())}async function p(){let a=(await o()).enabledModels;return!Array.isArray(a)||a.some(a=>"string"!=typeof a)?null:a}function q(a,b){let c=a[b];return c&&"object"==typeof c&&!Array.isArray(c)?c:{}}async function r(){let a=await o(),b=a.compaction??{},c=a.retry??{},d=(a,b)=>"number"==typeof a&&Number.isSafeInteger(a)&&a>=0?a:b;return{compaction:{enabled:!1!==b.enabled,reserveTokens:d(b.reserveTokens,t),keepRecentTokens:d(b.keepRecentTokens,u)},retry:{enabled:!1!==c.enabled,maxRetries:d(c.maxRetries,v),baseDelayMs:d(c.baseDelayMs,w)}}}class x extends Error{}async function s(a){let b=function(a){if(!a||"object"!=typeof a||Array.isArray(a))throw new x("invalid settings patch");if(Object.keys(a).some(a=>"compaction"!==a&&"retry"!==a))throw new x("unknown settings field");let b={};for(let c of["compaction","retry"]){if(void 0===a[c])continue;let d=a[c];if(!d||"object"!=typeof d||Array.isArray(d))throw new x(`invalid ${c} settings`);let e="compaction"===c?["enabled","reserveTokens","keepRecentTokens"]:["enabled","maxRetries","baseDelayMs"];for(let[a,b]of Object.entries(d)){if(!e.includes(a))throw new x(`unknown ${c} field: ${a}`);if("enabled"===a){if("boolean"!=typeof b)throw new x(`${c}.${a} must be boolean`)}else if("number"!=typeof b||!Number.isSafeInteger(b)||b<0||b>1e9)throw new x(`${c}.${a} must be a non-negative integer`)}"compaction"===c?b.compaction=d:b.retry=d}return b}(a),c=n();await (0,l.Ax)(c,()=>(0,l._i)(c,async()=>{let a=await (0,j.mu)(c);b.compaction&&(a.compaction={...q(a,"compaction"),...b.compaction}),b.retry&&(a.retry={...q(a,"retry"),...b.retry}),await f().mkdir(h().dirname(c),{recursive:!0});let d=`${c}.${process.pid}.${(0,i.randomUUID)()}.tmp`;try{await f().writeFile(d,JSON.stringify(a,null," "),"utf8"),await f().rename(d,c)}finally{await f().rm(d,{force:!0}).catch(()=>void 0)}(0,j.Ix)(c)})),await (0,k.BW)()}d()}catch(a){d(a)}})},76760:a=>{a.exports=require("node:path")},77030:a=>{a.exports=require("node:net")},77598:a=>{a.exports=require("node:crypto")},80481:a=>{a.exports=require("node:readline")},81115:a=>{a.exports=require("constants")},81558:(a,b,c)=>{c.r(b),c.d(b,{handler:()=>A,patchFetch:()=>z,routeModule:()=>v,serverHooks:()=>y,workAsyncStorage:()=>w,workUnitAsyncStorage:()=>x});var d=c(19225),e=c(84006),f=c(8317),g=c(99373),h=c(34775),i=c(24235),j=c(261),k=c(54365),l=c(90771),m=c(73461),n=c(67798),o=c(92280),p=c(62018),q=c(45696),r=c(47929),s=c(86439),t=c(10246),u=c(37527);let v=new d.AppRouteRouteModule({definition:{kind:e.RouteKind.APP_ROUTE,page:"/api/models/route",pathname:"/api/models",filename:"route",bundlePath:"app/api/models/route"},distDir:".next",relativeProjectDir:"",resolvedPagePath:"/home/runner/work/PiWeb/PiWeb/src/app/api/models/route.ts",nextConfigOutput:"",userland:()=>c(38708),...{}}),{workAsyncStorage:w,workUnitAsyncStorage:x,serverHooks:y}=v;function z(){return(0,f.patchFetch)({workAsyncStorage:w,workUnitAsyncStorage:x})}async function A(a,b,c){c.requestMeta&&(0,g.setRequestMeta)(a,c.requestMeta),v.isDev&&(0,g.addRequestMeta)(a,"devRequestTimingInternalsEnd",process.hrtime.bigint());let d="/api/models/route";"/index"===d&&(d="/");let f=await v.prepare(a,b,{srcPage:d,multiZoneDraftMode:!1});if(!f)return b.statusCode=400,b.end("Bad Request"),null==c.waitUntil||c.waitUntil.call(c,Promise.resolve()),null;let{buildId:w,deploymentId:x,params:y,nextConfig:z,parsedUrl:A,isDraftMode:B,prerenderManifest:C,routerServerContext:D,isOnDemandRevalidate:E,revalidateOnlyGenerated:F,resolvedPathname:G,clientReferenceManifest:H,serverActionsManifest:I,previewProps:J}=f,K=(0,j.normalizeAppPath)(d),L=!!C.routes[G]&&(v.isDev||(0,t.isRouteCacheOwner)(G,v.cacheOwner,C.routes[G])),M=!!(C.dynamicRoutes[K]||L),N=async()=>((null==D?void 0:D.render404)?await D.render404(a,b,A,!1):b.end("This page could not be found"),null);if(M&&!B){let a=C.dynamicRoutes[K];if(a&&!1===a.fallback&&!L){if(z.adapterPath)return await N();throw new s.NoFallbackError}}let O=null;!M||v.isDev||B||(O="/index"===(O=G)?"/":O),I&&H&&(0,i.setManifestsSingleton)({page:d,clientReferenceManifest:H,serverActionsManifest:I});let P=a.method||"GET",Q=(0,h.getTracer)(),R=Q.getActiveScopeSpan(),S=!!(null==D?void 0:D.isWrappedByNextServer),T=!!(0,g.getRequestMeta)(a,"minimalMode"),U=(0,g.getRequestMeta)(a,"incrementalCache")||await v.getIncrementalCache(a,z,J,C,T);null==U||U.resetRequestCache(),globalThis.__incrementalCache=U;let V={params:y,previewProps:J,renderOpts:{experimental:{authInterrupts:!!z.experimental.authInterrupts,useCacheTimeout:z.experimental.useCacheTimeout,durableUseCacheEntries:!!z.experimental.durableUseCacheEntries},cacheComponents:!!z.cacheComponents,validationLevel:z.experimental.instantInsights.validationLevel,isDraftMode:B,incrementalCache:U,hmrRefreshHash:(0,g.getRequestMeta)(a,"hmrRefreshHash"),cacheLifeProfiles:z.cacheLife,staticPageGenerationTimeout:z.staticPageGenerationTimeout,waitUntil:c.waitUntil,onClose:a=>{b.on("close",a)},onAfterTaskError:void 0},sharedContext:{buildId:w,deploymentId:x}},W=new k.NodeNextRequest(a),X=new k.NodeNextResponse(b),Y=l.NextRequestAdapter.fromNodeNextRequest(W,(0,l.signalFromNodeResponse)(b)),Z=async({previousCacheEntry:e})=>{try{if(!T&&E&&F&&!e)return b.statusCode=404,b.setHeader("x-nextjs-cache","REVALIDATED"),b.end("This page could not be found"),null;let d=null===O?await v.handle(Y,V):await v.prerender(Y,V);a.fetchMetrics=V.renderOpts.fetchMetrics;let f=V.renderOpts.pendingWaitUntil;f&&c.waitUntil&&(c.waitUntil(f),f=void 0);let g=V.renderOpts.collectedTags;if(!M)return await (0,o.I)(W,X,d,f),null;{let a=await d.blob(),b=(0,p.toNodeOutgoingHttpHeaders)(d.headers);g&&(b[r.NEXT_CACHE_TAGS_HEADER]=g),!b["content-type"]&&a.type&&(b["content-type"]=a.type);let c=void 0!==V.renderOpts.collectedRevalidate&&!(V.renderOpts.collectedRevalidate>=r.INFINITE_CACHE)&&V.renderOpts.collectedRevalidate,e=void 0===V.renderOpts.collectedExpire||V.renderOpts.collectedExpire>=r.INFINITE_CACHE?!1!==c&&c>0?z.expireTime:void 0:V.renderOpts.collectedExpire;return{value:{kind:u.CachedRouteKind.APP_ROUTE,status:d.status,body:Buffer.from(await a.arrayBuffer()),headers:b},cacheControl:{revalidate:c,expire:e}}}}catch(b){throw(null==e?void 0:e.isStale)&&await v.onRequestError(a,b,{routerKind:"App Router",routePath:d,routeType:"route",revalidateReason:(0,n.getRevalidateReason)({isStaticGeneration:null!==O,isOnDemandRevalidate:E})},!1,D),b}},$=async(d,f)=>{try{var g,i;let d=await v.handleResponse({req:a,nextConfig:z,cacheKey:O,routeKind:e.RouteKind.APP_ROUTE,isFallback:!1,previewProps:J,prerenderManifest:C,isRoutePPREnabled:!1,isOnDemandRevalidate:E,revalidateOnlyGenerated:F,responseGenerator:Z,waitUntil:c.waitUntil,isMinimalMode:T});if(null!==d&&"error"in d)throw d.error;if(!M)return;if((null==d||null==(g=d.value)?void 0:g.kind)!==u.CachedRouteKind.APP_ROUTE)throw Error(`Invariant: app-route received invalid cache entry ${null==d||null==(i=d.value)?void 0:i.kind}`);T||b.setHeader("x-nextjs-cache",E?"REVALIDATED":d.isMiss?"MISS":d.isStale?"STALE":"HIT"),B&&b.setHeader("Cache-Control","private, no-cache, no-store, max-age=0, must-revalidate");let f=(0,p.fromNodeOutgoingHttpHeaders)(d.value.headers);T&&M||f.delete(r.NEXT_CACHE_TAGS_HEADER),!d.cacheControl||b.getHeader("Cache-Control")||f.get("Cache-Control")||f.set("Cache-Control",(0,q.getCacheControlHeader)(d.cacheControl)),await (0,o.I)(W,X,new Response(d.value.body,{headers:f,status:d.value.status||200}));return}catch(c){if(c instanceof s.NoFallbackError||await v.onRequestError(a,c,{routerKind:"App Router",routePath:K,routeType:"route",revalidateReason:(0,n.getRevalidateReason)({isStaticGeneration:null!==O,isOnDemandRevalidate:E})},!1,D),M)throw c;if(b.headersSent){if(d){let a=c instanceof Error?c:Error("Unknown app route error");d.recordException(a),d.setStatus({code:h.SpanStatusCode.ERROR,message:a.message}),d.setAttribute("error.type",a.name)}b.writableEnded||b.destroyed||b.end()}else await (0,o.I)(W,X,new Response(null,{status:500}));return}finally{(()=>{if(!d)return;let a=b.statusCode;d.setAttributes({"http.status_code":a,"next.rsc":!1}),a&&a>=500&&(d.setStatus({code:h.SpanStatusCode.ERROR}),d.setAttribute("error.type",a.toString()));let c=Q.getRootSpanAttributes();if(!c)return;if(c.get("next.span_type")!==m.BaseServerSpan.handleRequest)return console.warn(`Unexpected root span type '${c.get("next.span_type")}'. Please report this Next.js issue https://github.com/vercel/next.js`);let e=c.get("next.route")||K,g=`${P} ${e}`;d.setAttributes({"next.route":e,"http.route":e,"next.span_name":g}),d.updateName(g),f&&f!==d&&(f.setAttribute("http.route",e),f.updateName(g))})()}};if(S&&R)await $(R,void 0);else{let b=Q.getActiveScopeSpan();await Q.withPropagatedContext(a.headers,()=>Q.trace(m.BaseServerSpan.handleRequest,{spanName:`${P} ${d}`,kind:h.SpanKind.SERVER,attributes:{"http.method":P,"http.target":a.url}},a=>$(a,b)),void 0,!S)}}},86439:a=>{a.exports=require("next/dist/shared/lib/no-fallback-error.external")},94735:a=>{a.exports=require("events")},97138:(a,b,c)=>{c.d(b,{fv:()=>d,lG:()=>e});let d=604800,e=2592e3}};var b=require("../../../webpack-runtime.js");b.C(a);var c=b.X(0,[970,813,593,538,920,686],()=>b(b.s=81558));module.exports=c})();
1
+ "use strict";(()=>{var a={};a.id=552,a.ids=[552],a.modules={261:a=>{a.exports=require("next/dist/shared/lib/router/utils/app-paths")},3295:a=>{a.exports=require("next/dist/server/app-render/after-task-async-storage.external.js")},8128:a=>{a.exports=require("next/dist/server/runtime-reacts.external.js")},10846:a=>{a.exports=require("next/dist/compiled/next-server/app-page.runtime.prod.js")},12412:a=>{a.exports=require("assert")},12616:(a,b,c)=>{c.a(a,async(a,d)=>{try{c.d(b,{x:()=>g});var e=c(75430),f=a([e]);async function g(a,b,c){if(0===b.length)return a;let{scopedModels:d}=await (0,e.resolveModelScopeWithDiagnostics)(b,c),f=new Set(d.map(({model:a})=>`${a.provider}/${a.id}`));return a.filter(a=>f.has(`${a.provider}/${a.id}`))}e=(f.then?(await f)():f)[0],d()}catch(a){d(a)}})},19121:a=>{a.exports=require("next/dist/server/app-render/action-async-storage.external.js")},27910:a=>{a.exports=require("stream")},28354:a=>{a.exports=require("util")},28802:a=>{a.exports=import("@earendil-works/pi-ai")},29021:a=>{a.exports=require("fs")},29294:a=>{a.exports=require("next/dist/server/app-render/work-async-storage.external.js")},31421:a=>{a.exports=require("node:child_process")},33873:a=>{a.exports=require("path")},37067:a=>{a.exports=require("node:http")},38522:a=>{a.exports=require("node:zlib")},38708:(a,b,c)=>{c.a(a,async(a,d)=>{try{c.r(b),c.d(b,{GET:()=>i,POST:()=>j,dynamic:()=>k});var e=c(38522),f=c(23211),g=c(65501),h=a([g]);g=(h.then?(await h)():h)[0];let k="force-dynamic",l=new Map;async function i(a){let b=new URL(a.url).searchParams,c="1"===b.get("custom"),d=c||"1"===b.get("full");try{let b=c?await (0,g.Qn)():null,f=await (d?(0,g.D)():(0,g.Fo)()),h=d?f.models:f.models.map(a=>({provider:a.provider,id:a.id,name:a.name,reasoning:a.reasoning,thinkingLevels:a.thinkingLevels,contextWindow:a.contextWindow})),i=d?f.providers:f.providers.map(a=>({id:a.id,name:a.name,authReady:a.authReady,builtIn:a.builtIn,modelCount:a.modelCount})),j=b?await (0,g.ws)(b.content,f.models):void 0;return function(a,b,c){let d=JSON.stringify(b),f=a.headers.get("accept-encoding")??"",g={"Content-Type":"application/json; charset=utf-8",Vary:"Accept-Encoding","Cache-Control":"no-store"};if(!/\bgzip\b/.test(f)||d.length<2048)return new Response(d,{headers:g});let h=`${c}:${d.length}`,i=l.get(h);if(i&&Date.now()-i.at<5e3)return new Response(i.body.slice(),{headers:{...g,"Content-Encoding":"gzip"}});let j=new Uint8Array((0,e.gzipSync)(Buffer.from(d,"utf8")));return l.size>8&&l.clear(),l.set(h,{at:Date.now(),body:j}),new Response(j.slice(),{headers:{...g,"Content-Encoding":"gzip"}})}(a,{success:!0,data:{providers:i,models:h,customProviders:b,...j?{catalogModelIds:j}:{}}},`${(0,g.Jk)()}:${c?"custom":d?"full":"piweb"}`)}catch(a){return f.NextResponse.json({success:!1,error:String(a?.message??a)},{status:500})}}async function j(a){try{let b=await a.json();if("setKey"===b.action){if(!b.providerId||!b.apiKey)return f.NextResponse.json({success:!1,error:"missing fields"},{status:400});return await (0,g.d8)(b.providerId,b.apiKey),f.NextResponse.json({success:!0})}if("removeKey"===b.action){if(!b.providerId)return f.NextResponse.json({success:!1,error:"missing providerId"},{status:400});return await (0,g.kK)(b.providerId),f.NextResponse.json({success:!0})}if("saveCustomProviders"===b.action){if("string"!=typeof b.content)return f.NextResponse.json({success:!1,error:"missing content"},{status:400});if(void 0!==b.revision&&("string"!=typeof b.revision||!/^(?:missing|[a-f0-9]{64})$/.test(b.revision)))return f.NextResponse.json({success:!1,error:"invalid revision"},{status:400});return await (0,g.P2)(b.content,b.revision),f.NextResponse.json({success:!0,data:{requiresSessionReopen:!0}})}if("discoverModels"===b.action){if(!b.baseUrl)return f.NextResponse.json({success:!1,error:"missing baseUrl"},{status:400});let a=await (0,g.wt)({baseUrl:b.baseUrl,api:b.api,apiKey:b.apiKey,providerId:b.providerId,allowPrivate:!0===b.allowPrivate});return f.NextResponse.json({success:!0,data:{models:a}})}if("providerUsage"===b.action){if(!b.providerId)return f.NextResponse.json({success:!1,error:"missing providerId"},{status:400});let a=await (0,g.VV)(b.providerId,!0===b.force);return f.NextResponse.json({success:!0,data:{usage:a}})}if("contextWindowInfo"===b.action||"setContextWindow"===b.action){if("string"!=typeof b.providerId||!b.providerId||"string"!=typeof b.modelId||!b.modelId)return f.NextResponse.json({success:!1,error:"missing providerId or modelId"},{status:400});if("contextWindowInfo"===b.action)return f.NextResponse.json({success:!0,data:await (0,g.yc)(b.providerId,b.modelId)});if("number"!=typeof b.contextWindow)return f.NextResponse.json({success:!1,error:"missing contextWindow"},{status:400});return f.NextResponse.json({success:!0,data:await (0,g.lr)(b.providerId,b.modelId,b.contextWindow)})}if("loginStart"===b.action){if(!b.providerId)return f.NextResponse.json({success:!1,error:"missing providerId"},{status:400});return await (0,g.c$)(b.providerId),f.NextResponse.json({success:!0,data:(0,g.$i)(b.providerId)})}if("loginState"===b.action){if(!b.providerId)return f.NextResponse.json({success:!1,error:"missing providerId"},{status:400});return f.NextResponse.json({success:!0,data:(0,g.$i)(b.providerId)})}if("loginAnswer"===b.action){if(!b.providerId||"string"!=typeof b.text)return f.NextResponse.json({success:!1,error:"missing fields"},{status:400});return f.NextResponse.json({success:!0,data:{delivered:(0,g.ig)(b.providerId,b.text)}})}if("loginCancel"===b.action){if(!b.providerId)return f.NextResponse.json({success:!1,error:"missing providerId"},{status:400});return(0,g.IX)(b.providerId),f.NextResponse.json({success:!0})}return f.NextResponse.json({success:!1,error:"unknown action"},{status:400})}catch(b){let a=b instanceof g.w9?409:b instanceof g.Ts||b instanceof SyntaxError?400:500;return f.NextResponse.json({success:!1,error:String(b?.message??b)},{status:a})}}d()}catch(a){d(a)}})},41846:(a,b,c)=>{function d(a){return null!==a&&"object"==typeof a&&!Array.isArray(a)}function e(a,b,c,e){let f=JSON.parse(JSON.stringify(a)),g=Object.prototype.hasOwnProperty.call(f,b)?f[b]:void 0,h=d(g)?g:{};f[b]=h;let i=d(h.modelOverrides)?h.modelOverrides:void 0,j=i&&Object.prototype.hasOwnProperty.call(i,c)?i[c]:void 0;if(d(j)&&void 0!==j.contextWindow)return j.contextWindow=e,f;let k=Array.isArray(h.models)?h.models.filter(a=>d(a)&&"string"==typeof a.id&&a.id.trim()===c):[];if(k.length){for(let a of k)a.contextWindow=e;return f}let l=i??{};return h.modelOverrides=l,l[c]={...d(j)?j:{},contextWindow:e},f}c.d(b,{Ax:()=>e})},44708:a=>{a.exports=require("node:https")},44870:a=>{a.exports=require("next/dist/compiled/next-server/app-route.runtime.prod.js")},46193:a=>{a.exports=require("node:string_decoder")},48161:a=>{a.exports=require("node:os")},51455:a=>{a.exports=require("node:fs/promises")},55511:a=>{a.exports=require("crypto")},63033:a=>{a.exports=require("next/dist/server/app-render/work-unit-async-storage.external.js")},65501:(a,b,c)=>{c.a(a,async(a,d)=>{try{c.d(b,{$i:()=>aq,D:()=>F,Fo:()=>G,IX:()=>as,Jk:()=>C,P2:()=>aA,Qn:()=>ax,Ts:()=>aO,VV:()=>R,c$:()=>ap,d8:()=>J,ig:()=>ar,kK:()=>K,lr:()=>aD,w9:()=>aP,ws:()=>E,wt:()=>Q,yc:()=>aC});var e=c(51455),f=c.n(e),g=c(76760),h=c.n(g),i=c(77598),j=c(71553),k=c.n(j),l=c(37067),m=c(44708),n=c(77030),o=c(75430),p=c(71808),q=c(12616),r=c(86159),s=c(87982),t=c(75554),u=c(28686),v=c(41846),w=c(28802),x=c(49904),y=c(97138),z=a([o,q,s,t,u,w]);function A(a){return"number"==typeof a&&Number.isSafeInteger(a)&&a>0?a:void 0}[o,q,s,t,u,w]=z.then?(await z)():z;let aE=null,aF=null,aG=-1,aH=new Map;function B(){aF=null,aH.clear(),(0,r.Yq)("auth.json")}function C(){return aF?String(aF.at):"none"}function D(){return aE||(aE=o.ModelRuntime.create({modelsPath:null,refreshOnCreate:!1,allowModelNetwork:!1,credentials:new w.InMemoryCredentialStore,modelsStore:new w.InMemoryModelsStore}).then(a=>new Map(a.getProviders().map(b=>[b.id,new Map(a.getModels(b.id).map(a=>[a.id,Number(a.contextWindow)||0]))]))).catch(a=>{throw aE=null,a})),aE}async function E(a,b){let c=await D(),d=new Map;for(let[b,c]of Object.entries(au(a).providers)){let a=Array.isArray(c.models)?c.models:[];d.set(b,new Set(a.flatMap(a=>av(a)&&"string"==typeof a.id?[a.id]:[])))}let e=new Map([...c].map(([a,b])=>[a,new Set(b.keys())]));for(let a of b)d.get(a.provider)?.has(a.id)||e.get(a.provider)?.add(a.id);return Object.fromEntries([...e].map(([a,b])=>[a,[...b].sort()]))}async function F(){if(await (0,s.NU)(),aG!==(0,s.U6)()&&(aG=(0,s.U6)(),B()),aF&&Date.now()-aF.at<5e3)return aF.value;let a=I().catch(a=>{throw aF=null,a});return aF={at:Date.now(),value:a},a}async function G(){let a=await F(),b=await (0,t.MO)();if(!b?.length)return a;let c=await (0,q.x)(a.models,b,await (0,s.uU)()),d=new Map;for(let a of c)d.set(a.provider,(d.get(a.provider)??0)+1);return{models:c,providers:a.providers.map(a=>({...a,modelCount:d.get(a.id)??0}))}}async function H(){let a=new Map;try{let b=await (0,r.lg)(h().join((0,s.$M)(),"auth.json"));for(let[c,d]of[...Object.entries(b??{}),...Object.entries(b?.providers??{})])!a.has(c)&&(d?.type==="oauth"?a.set(c,"oauth"):d&&"object"==typeof d&&[d.apiKey,d.api_key,d.key].some(a=>"string"==typeof a&&a.trim())&&a.set(c,"api_key"))}catch{}return a}async function I(){let a=await (0,s.uU)(),b=await D(),c=a.getProviders(),d=await H(),e=[],f=[];for(let g of(await Promise.all(c.map(async b=>{let c,d,e=String(b.id??b.name??"");if(!e)return null;let f=null;try{f=a.getProviderAuthStatus(e)}catch{f=null}let g=a.hasConfiguredAuth(e),h=!1;if(f?.configured===!0||g){let b=aH.get(e);if(b&&Date.now()-b.at<6e4)h=b.ready,c=b.source,d=b.error;else{try{let b=await a.checkAuth(e,{signal:AbortSignal.timeout(5e3)});h=void 0!==b,c=b?.source}catch(a){d=a instanceof Error?a.message:String(a)}aH.set(e,{at:Date.now(),ready:h,source:c,error:d})}}return{pid:e,p:b,auth:f,authFastPath:g,authReady:h,resolvedAuthSource:c,authError:d}})))){if(!g)continue;let{pid:c,p:h,auth:i,authFastPath:j,authReady:k,resolvedAuthSource:l,authError:m}=g,n=a.getModels(c),o=[];for(let a of(h.auth?.apiKey&&o.push("api_key"),h.auth?.oauth&&o.push("oauth"),e.push({id:c,name:String(h.name??c),baseUrl:"string"==typeof h.baseUrl?h.baseUrl:void 0,apiKeyLabel:"string"==typeof h.auth?.apiKey?.name?h.auth.apiKey.name:void 0,authTypes:o,apis:function(a){let b=new Map;for(let c of a){let a=String(c.api??"");a&&b.set(a,(b.get(a)??0)+1)}return[...b].sort(([a,b],[c,d])=>d-b||(a<c?-1:+(a>c))).map(([a])=>a)}(n),builtIn:b.has(c),authConfigured:i?.configured===!0,authSource:i?.source,authReady:k,authFastPath:j,resolvedAuthSource:l,authError:m,keyManaged:i?.source==="stored",storedAuthType:i?.source==="stored"?d.get(c):void 0,modelCount:n.length}),n))f.push({provider:c,id:String(a.id),name:String(a.name??a.id),api:String(a.api??""),baseUrl:"string"==typeof a.baseUrl?a.baseUrl:void 0,reasoning:!0===a.reasoning,thinkingLevels:(0,w.getSupportedThinkingLevels)(a),contextWindow:Number(a.contextWindow??0),input:Array.isArray(a.input)?a.input.map(String):["text"],cost:a.cost?{input:a.cost.input,output:a.cost.output}:null})}return f.sort((a,b)=>a.provider.localeCompare(b.provider)||a.id.localeCompare(b.id)),{providers:e,models:f}}async function J(a,b){let c=am(a),d=await an(c);await ao(c,d,"api_key",b)}async function K(a){as(a);let b=await (0,s.uU)();await b.logout(a),B()}async function L(a){try{let b=await (0,s.uU)(),c=await b.getAuth(a,{signal:AbortSignal.timeout(2e4)}),d=(c?.auth.apiKey??function(a){for(let[b,c]of Object.entries(a??{}))if("authorization"===b.toLowerCase()&&c)return/^Bearer\s+(\S+)/i.exec(c.trim())?.[1]}(c?.auth.headers))?.trim();if(!c||!d)return;let e=(await b.checkAuth(a).catch(()=>void 0))?.type==="oauth",f=e&&"openai-codex"===a?V(d)?.chatgpt_account_id:void 0;return{key:d,oauth:e,..."string"==typeof f&&f.trim()?{accountId:f.trim()}:{},...c.auth.baseUrl?{baseUrl:c.auth.baseUrl}:{}}}catch{return}}function M(a){let b=new URL(a),c=b.pathname.replace(/\/+$/,"");return b.pathname=c.endsWith("/models")?c:`${c}/models`,b.hash="",b}let aI=new n.BlockList;for(let[a,b]of[["0.0.0.0",8],["10.0.0.0",8],["100.64.0.0",10],["127.0.0.0",8],["169.254.0.0",16],["172.16.0.0",12],["192.0.0.0",24],["192.0.2.0",24],["192.88.99.0",24],["192.168.0.0",16],["198.18.0.0",15],["198.51.100.0",24],["203.0.113.0",24],["224.0.0.0",4],["240.0.0.0",4]])aI.addSubnet(a,b,"ipv4");let aJ=new n.BlockList;aJ.addSubnet("2000::",3,"ipv6");let aK=new n.BlockList;for(let[a,b]of[["2001::",23],["2001:db8::",32],["2002::",16]])aK.addSubnet(a,b,"ipv6");function N(a){let b=(0,n.isIP)(a);return 4===b?!aI.check(a,"ipv4"):6===b&&aJ.check(a,"ipv6")&&!aK.check(a,"ipv6")}async function O(a,b,c,d=!1){let e=d||"1"===process.env.PI_WEB_ALLOW_PRIVATE_MODEL_DISCOVERY,f=(0,n.isIP)(a.hostname.replace(/^\[|\]$/g,""));if(!e&&f&&!N(a.hostname.replace(/^\[|\]$/g,"")))throw Error("模型目录地址指向本机或私有网络;勾选「允许访问本机/私有网络地址」后重试,或设置 PI_WEB_ALLOW_PRIVATE_MODEL_DISCOVERY=1");return new Promise((d,f)=>{let g=("https:"===a.protocol?m.request:l.request)(a,{headers:b,signal:c,agent:!1,lookup:e?void 0:(a,b,c)=>{k().lookup(a,{all:!0}).then(a=>{let d=a.find(({address:a})=>N(a));d?b.all?c(null,[d]):c(null,d.address,d.family):c(Error("模型目录地址指向本机或私有网络;勾选「允许访问本机/私有网络地址」后重试,或设置 PI_WEB_ALLOW_PRIVATE_MODEL_DISCOVERY=1"),"",0)},a=>c(a,"",0))}},a=>{let b=a.statusCode??0;if(b>=300&&b<400){a.destroy(),f(Error("模型目录不允许重定向"));return}let c=[],e=0;if(Number(a.headers["content-length"])>4194304){a.destroy(),f(Error("模型目录响应过大(上限 4 MiB)"));return}a.on("data",b=>{if((e+=b.length)>4194304){a.destroy(),f(Error("模型目录响应过大(上限 4 MiB)"));return}c.push(b)}),a.on("error",f),a.on("close",()=>{a.complete||f(Error("模型目录连接提前关闭"))}),a.on("end",()=>d(new Response(204===b||205===b||304===b?null:Buffer.concat(c,e),{status:b})))});g.on("error",f),g.end()})}async function P(a){if(Number(a.headers.get("content-length"))>4194304)throw Error("模型目录响应过大(上限 4 MiB)");if(!a.body)throw Error("模型目录响应为空");let b=a.body.getReader(),c=[],d=0;try{for(;;){let{done:a,value:e}=await b.read();if(a)break;if((d+=e.byteLength)>4194304)throw Error("模型目录响应过大(上限 4 MiB)");c.push(Buffer.from(e))}}finally{await b.cancel().catch(()=>void 0),b.releaseLock()}return JSON.parse(Buffer.concat(c,d).toString("utf8"))}async function Q(a){let b=a.baseUrl.trim();if(!b)throw Error("缺少 API 地址");let c=new URL(b);if("http:"!==c.protocol&&"https:"!==c.protocol)throw Error("API 地址必须使用 http 或 https");if(c.username||c.password)throw Error("API 地址不能包含用户名或密码");let d=M(c),e={Accept:"application/json"},f=a.apiKey?.trim()?{key:a.apiKey.trim(),oauth:!1}:a.providerId?await L(a.providerId):void 0;if(f&&!a.apiKey?.trim()){let b,c=await (0,s.uU)(),e=c.getProviders().find(b=>b.id===a.providerId),g=[e?.baseUrl,f.baseUrl,...e?c.getModels(e.id).map(a=>a.baseUrl):[]];if(b=M(d).href,!g.some(a=>{if(!a)return!1;try{let c=new URL(a);return!c.username&&!c.password&&M(c).href===b}catch{return!1}}))throw Error("已配置的凭证只能用于该 Provider 已配置的 API 地址;新地址请显式填写密钥")}let g=f?.key;if(!a.apiKey?.trim()&&f?.oauth&&"openai-codex"===a.providerId)throw Error("OpenAI Codex 的模型目录由 SDK 内置,无需获取;如需自定义请手动添加模型 ID");g&&("anthropic-messages"===a.api?(e["x-api-key"]=g,f?.oauth&&(e["anthropic-beta"]="oauth-2025-04-20")):e.Authorization=`Bearer ${g}`),"anthropic-messages"===a.api&&(e["anthropic-version"]="2023-06-01");let h=new AbortController,i=setTimeout(()=>h.abort(),15e3);try{let b=await O(d,e,h.signal,!0===a.allowPrivate);if(401===b.status)throw Error(g?"模型目录请求失败(HTTP 401):密钥或令牌无效":"模型目录请求失败(HTTP 401):请先填写 API 密钥");if(403===b.status)throw Error(f?.oauth?"模型目录请求失败(HTTP 403):该 OAuth 令牌无权访问模型目录(部分提供商不支持),请手动填写模型 ID":"模型目录请求失败(HTTP 403):密钥无权访问模型目录");if(!b.ok)throw Error(`模型目录请求失败(HTTP ${b.status})`);let c=await P(b),i=(Array.isArray(c)?c:c&&"object"==typeof c?Array.isArray(c.data)?c.data:Array.isArray(c.models)?c.models:[]:[]).map(a=>{let b,c,d,e,f,g,h;if("string"==typeof a)return{id:a};if(!a||"object"!=typeof a)return null;let i="string"==typeof a.id?a.id.trim():"";if(!i)return null;let j="string"==typeof a.name&&a.name.trim()?a.name.trim():void 0;return{id:i,...j?{name:j}:{},...(b=av(a.architecture)?a.architecture:void 0,d=Array.isArray(c=a.modalities??b?.input_modalities??a.input_modalities)?c:av(c)&&Array.isArray(c.input)?c.input:void 0,e=av(a.top_provider)?a.top_provider:void 0,f=A(a.context_window)??A(a.context_length)??A(a.max_input_tokens)??A(b?.context_length),g=A(a.max_output_tokens)??A(a.max_completion_tokens)??A(e?.max_completion_tokens),h=d?d.some(a=>"string"==typeof a&&"image"===a.toLowerCase()):void 0,{...void 0===f?{}:{contextWindow:f},...void 0===g?{}:{maxTokens:g},...void 0===h?{}:{vision:h}})}}).filter(a=>!!a).filter((a,b,c)=>c.findIndex(b=>b.id===a.id)===b).slice(0,500);if(!i.length)throw Error("响应中没有可识别的模型 ID");return i}catch(a){if(a instanceof Error&&"AbortError"===a.name)throw Error("模型目录请求超时");if(a&&"object"==typeof a&&"code"in a&&["ECONNREFUSED","ECONNRESET","ENOTFOUND","EHOSTUNREACH","ENETUNREACH","ETIMEDOUT"].includes(String(a.code))||a instanceof TypeError&&a.message.toLowerCase().includes("fetch"))throw Error("无法连接模型目录,请检查 API 地址和网络");throw a}finally{clearTimeout(i)}}let aL=new Map;async function R(a,b=!1){let c=function(a){switch(a){case"xai":return ag;case"openai-codex":return W;case"anthropic":return X;case"deepseek":return Z;case"openrouter":return $;case"moonshotai":return()=>_("moonshotai");case"moonshotai-cn":return()=>_("moonshotai-cn");case"kimi-coding":return ac;case"github-copilot":return ad;case"vercel-ai-gateway":return ae;case"opencode-go":return af;default:return null}}(a);if(!c)return null;let d=aL.get(a);if(!b&&d&&Date.now()-d.at<3e5)return d.value;let e=await c();return aL.set(a,{at:Date.now(),value:e}),e}async function S(a,b,c=1e4){let d=new AbortController,e=setTimeout(()=>d.abort(),c);try{let c=await fetch(a,{...b,signal:d.signal});if(!c.ok)return void c.body?.cancel().catch(()=>{});return await c.json()}catch{return}finally{clearTimeout(e)}}function T(a){return a&&"object"==typeof a&&!Array.isArray(a)?a:void 0}function U(a){if("string"!=typeof a)return;let b=new Date(a);return Number.isFinite(b.getTime())?b.toISOString():void 0}function V(a){try{let b=JSON.parse(Buffer.from(a.split(".")[1]??"","base64").toString("utf8"));return T(T(b)?.["https://api.openai.com/auth"])}catch{return}}async function W(){var a;let b,c=await L("openai-codex");if(!c)return null;let d=(a=c.key,"string"==typeof(b=V(a)?.chatgpt_plan_type)&&b.trim()?b.trim():void 0),e=await S("https://chatgpt.com/backend-api/wham/usage",{headers:{Authorization:`Bearer ${c.key}`,...c.accountId?{"chatgpt-account-id":c.accountId}:{}}});if(void 0===e)return void 0===d?null:{kind:"quota",planType:d,windows:[],probedAt:Date.now()};let f=function(a){let b=T(a);if(!b)return{windows:[]};let c=T(b.rate_limit),d=[c?.primary_window,c?.secondary_window].map(T).flatMap(a=>{let b;if(!a||"number"!=typeof a.limit_window_seconds||a.limit_window_seconds<=0||"number"!=typeof a.used_percent||!Number.isFinite(a.used_percent))return[];if(Number.isSafeInteger(a.reset_at)&&a.reset_at>0){let c=new Date(1e3*a.reset_at);Number.isFinite(c.getTime())&&(b=c.toISOString())}return[{limitWindowSeconds:a.limit_window_seconds,remainingPercent:Math.min(100,Math.max(0,Math.round(100-a.used_percent))),...void 0===b?{}:{resetAt:b}}]}).sort(ab),e=b.plan_type;return{..."string"==typeof e&&e.trim()?{planType:e.trim()}:{},windows:d}}(e),g=f.planType??d;return{kind:"quota",...f,...void 0===g?{}:{planType:g},probedAt:Date.now()}}async function X(){let a=await L("anthropic");if(!a?.oauth)return null;let b=await S("https://api.anthropic.com/api/oauth/usage",{headers:{Authorization:`Bearer ${a.key}`,"anthropic-beta":"oauth-2025-04-20"}});if(void 0===b)return null;let c=function(a){let b=T(a);if(!b)return{windows:[]};let c=(a,c,d)=>{let e=T(b[a]);if(!e||"number"!=typeof e.utilization||!Number.isFinite(e.utilization))return[];let f=U(e.resets_at);return[{limitWindowSeconds:c,remainingPercent:Math.min(100,Math.max(0,Math.round(100-e.utilization))),...void 0===f?{}:{resetAt:f},...void 0===d?{}:{variant:d}}]};return{windows:[...c("five_hour",18e3),...c("seven_day",y.fv),...c("seven_day_opus",y.fv,"opus")].sort(ab)}}(b);return 0===c.windows.length?null:{kind:"quota",...c,probedAt:Date.now()}}function Y(a,b){return"number"==typeof a&&Number.isFinite(a)?{amount:a.toFixed(2),...void 0===b?{}:{currency:b}}:"string"==typeof a&&a.trim()&&Number.isFinite(Number(a))?{amount:Number(a).toFixed(2),...void 0===b?{}:{currency:b}}:void 0}let aM={moonshotai:{base:"https://api.moonshot.ai",currency:"USD"},"moonshotai-cn":{base:"https://api.moonshot.cn",currency:"CNY"}};async function Z(){let a=await L("deepseek");if(!a)return null;let b=await S("https://api.deepseek.com/user/balance",{headers:{Authorization:`Bearer ${a.key}`}});return void 0===b?null:{kind:"balance",...function(a){let b=T(a),c=(Array.isArray(b?.balance_infos)?b.balance_infos.map(T).filter(Boolean):[])[0];if(!c)return{details:[]};let d="string"==typeof c.currency&&c.currency.trim()?c.currency.trim():void 0,e=[],f=Y(c.granted_balance,d);f&&e.push({key:"granted",...f});let g=Y(c.topped_up_balance,d);g&&e.push({key:"toppedUp",...g});let h=Y(c.total_balance,d);return{...void 0===h?{}:{primary:h},details:e}}(b),probedAt:Date.now()}}async function $(){let a=await L("openrouter");if(!a)return null;let b=await S("https://openrouter.ai/api/v1/key",{headers:{Authorization:`Bearer ${a.key}`}});return void 0===b?null:{kind:"balance",...function(a){let b=T(T(a)?.data);if(!b)return{details:[]};let c=[],d=Y(b.limit,"USD");d&&c.push({key:"limit",...d});let e=Y(b.usage,"USD");e&&c.push({key:"used",...e});let f=Y(b.limit_remaining,"USD");return f?{primary:f,details:c}:e?{primaryKey:"used",primary:e,details:c}:{details:c}}(b),probedAt:Date.now()}}async function _(a){let b=await L(a);if(!b)return null;let c=aM[a],d=await S(`${c.base}/v1/users/me/balance`,{headers:{Authorization:`Bearer ${b.key}`}});return void 0===d?null:{kind:"balance",...function(a,b){let c=T(a),d=T(c?.data);if(!d||c?.status===!1)return{details:[]};let e=[],f=Y(d.voucher_balance,b);f&&e.push({key:"voucher",...f});let g=Y(d.cash_balance,b);g&&e.push({key:"cash",...g});let h=Y(d.available_balance,b);return{...void 0===h?{}:{primary:h},details:e}}(d,c.currency),probedAt:Date.now()}}function aa(a){return Math.min(100,Math.max(0,Math.round(100-a)))}function ab(a,b){return(a.limitWindowSeconds??1/0)-(b.limitWindowSeconds??1/0)}async function ac(){let a=await L("kimi-coding");if(!a)return null;let b=await S("https://api.kimi.com/coding/v1/usages",{headers:{Authorization:`Bearer ${a.key}`,Accept:"application/json"}});if(void 0===b)return null;let c=function(a){let b=T(T(a)?.usages);if(!b)return{windows:[]};let c=(a,c,d)=>{let e=T(b[a]);if(!e||"number"!=typeof e.used_ratio||!Number.isFinite(e.used_ratio))return[];let f=U(e.reset_time);return[{limitWindowSeconds:c,remainingPercent:aa(100*e.used_ratio),...void 0===f?{}:{resetAt:f},...void 0===d?{}:{variant:d}}]};return{windows:[...c("limit_5h",18e3),...c("limit_7d",y.fv),...c("limit_month_total",y.lG),...c("limit_month_code",y.lG,"code")].sort(ab)}}(b);return 0===c.windows.length?null:{kind:"quota",...c,probedAt:Date.now()}}async function ad(){let a=await L("github-copilot");if(!a?.oauth)return null;let b=await S("https://api.github.com/copilot_internal/user",{headers:{Authorization:`Bearer ${a.key}`,Accept:"application/json"}});if(void 0===b)return null;let c=function(a){let b=T(a);if(!b)return{windows:[]};let c=T(b.quota_snapshots),d=b.copilot_plan,e=U(b.quota_reset_date),f=[["premium_interactions","premium"],["chat","chat"],["completions","completions"]].flatMap(([a,b])=>{let d=T(c?.[a]);return d&&!1!==d.has_quota&&!0!==d.unlimited&&"number"==typeof d.percent_remaining&&Number.isFinite(d.percent_remaining)?[{remainingPercent:Math.min(100,Math.max(0,Math.round(d.percent_remaining))),...void 0===e?{}:{resetAt:e},name:b}]:[]});return{..."string"==typeof d&&d.trim()?{planType:d.trim()}:{},windows:f}}(b);return 0===c.windows.length&&void 0===c.planType?null:{kind:"quota",...c,probedAt:Date.now()}}async function ae(){let a=await L("vercel-ai-gateway");if(!a)return null;let b=await S("https://ai-gateway.vercel.sh/v1/credits",{headers:{Authorization:`Bearer ${a.key}`}});return void 0===b?null:{kind:"balance",...function(a){let b=T(a);if(!b)return{details:[]};let c=[],d=Y(b.total_used,"USD");d&&c.push({key:"used",...d});let e=Y(b.balance,"USD");return{...void 0===e?{}:{primary:e},details:c}}(b),probedAt:Date.now()}}async function af(){let a=await L("opencode-go");if(!a)return null;let b=await S("https://opencode.ai/zen/go/v1/usage",{headers:{Authorization:`Bearer ${a.key}`,Accept:"application/json"}});if(void 0===b)return null;let c=function(a){let b=T(T(a)?.usage);if(!b)return{windows:[]};let c=(a,c)=>{let d=T(b[a]);if(!d||"number"!=typeof d.percent||!Number.isFinite(d.percent))return[];let e=U(d.resetsAt);return[{...void 0===c?{name:a}:{limitWindowSeconds:c},remainingPercent:aa(d.percent),...void 0===e?{}:{resetAt:e}}]};return{windows:[...c("rolling"),...c("weekly",y.fv),...c("monthly",y.lG)].sort(ab)}}(b);return 0===c.windows.length?null:{kind:"quota",...c,probedAt:Date.now()}}async function ag(){let a=await L("xai");if(!a)return null;let b=a.key,c="";try{let a=(await (0,s.uU)()).getModels("xai").map(a=>String(a.id)).filter(a=>!a.includes("imagine")&&!a.includes("multi-agent"));c=["grok-4.6","grok-4.5","grok-4.3"].find(b=>a.some(a=>a===b||a.startsWith(`${b}-`)))??a[0]??""}catch{return null}if(!c)return null;let d=new AbortController,e=setTimeout(()=>d.abort(),2e4);try{let a=await fetch("https://api.x.ai/v1/chat/completions",{method:"POST",headers:{Authorization:`Bearer ${b}`,"Content-Type":"application/json"},body:JSON.stringify({model:c,messages:[{role:"user",content:"ping"}],max_tokens:1}),signal:d.signal});a.body?.cancel().catch(()=>{});let e=b=>Number(a.headers.get(b)??0/0),f=e("x-ratelimit-limit-requests"),g=e("x-ratelimit-remaining-requests"),h=e("x-ratelimit-limit-tokens"),i=e("x-ratelimit-remaining-tokens");if(![f,g,h,i].every(Number.isFinite))return null;return{kind:"xai",model:c,requestLimit:f,requestRemaining:g,tokenLimit:h,tokenRemaining:i,probedAt:Date.now()}}catch{return null}finally{clearTimeout(e)}}let aN=new Map;function ah(){let a=Date.now();for(let[b,c]of aN)c.done&&void 0!==c.finishedAt&&a-c.finishedAt>6e5&&aN.delete(b)}function ai(a){return aN.get(a.providerId)===a&&!a.done&&!a.controller.signal.aborted}function aj(a){if(a.controller.signal.throwIfAborted(),!ai(a))throw Error("canceled")}function ak(a,b){return aN.get(a.providerId)===a&&!a.done&&(a.done=!0,void 0!==b&&(a.error=b instanceof Error?b.message:String(b)),a.finishedAt=Date.now(),a.timeout&&clearTimeout(a.timeout),a.timeout=null,a.rejecter?.(b instanceof Error?b:Error(a.error??"login finished")),a.prompt=null,a.resolver=null,a.rejecter=null,!0)}function al(a,b){ak(a,b),a.controller.abort(b)}function am(a){ah();let b=aN.get(a);b&&!b.done&&al(b,Error("canceled"));let c={providerId:a,controller:new AbortController,timeout:null,prompt:null,resolver:null,rejecter:null,notifyLog:[],done:!1};return aN.set(a,c),c.timeout=setTimeout(()=>al(c,Error("login timed out")),6e5),c.timeout.unref?.(),c}async function an(a){try{let b=await (0,s.uU)();return aj(a),b}catch(b){throw ak(a,b),b}}async function ao(a,b,c,d){let e=!1,f={signal:a.controller.signal,prompt:async b=>{let c;return(aj(a),b.signal?.throwIfAborted(),void 0===d||e||"select"===b.type)?(aj(a),(c=b.signal?AbortSignal.any([a.controller.signal,b.signal]):a.controller.signal).throwIfAborted(),a.rejecter?.(Error("prompt replaced")),new Promise((d,e)=>{let f=!1,g=()=>{c.removeEventListener("abort",j),a.resolver===h&&(a.prompt=null,a.resolver=null,a.rejecter=null)},h=a=>{f||(f=!0,g(),d(a))},i=a=>{f||(f=!0,g(),e(a))},j=()=>i(c.reason instanceof Error?c.reason:Error("canceled"));a.prompt=b,a.resolver=h,a.rejecter=i,c.addEventListener("abort",j,{once:!0}),c.aborted&&j()})):(e=!0,d)},notify:b=>{ai(a)&&(a.notifyLog.push("string"==typeof b?b:JSON.stringify(b)),a.notifyLog.length>20&&a.notifyLog.shift())}};try{aj(a),await b.login(a.providerId,c,f),aj(a),ak(a)&&B()}catch(b){throw ak(a,b),b}}async function ap(a){let b=am(a),c=await an(b);ao(b,c,"oauth").catch(()=>void 0)}function aq(a){ah();let b=aN.get(a);return b?{prompt:b.prompt?{type:b.prompt.type,message:b.prompt.message,placeholder:"placeholder"in b.prompt?b.prompt.placeholder:void 0,options:"select"===b.prompt.type?b.prompt.options.map(a=>({label:a.label,value:a.id})):void 0}:null,notifyLog:[...b.notifyLog],done:b.done,error:b.error}:{prompt:null,notifyLog:[],done:!0}}function ar(a,b){let c=aN.get(a);return!!c&&!!ai(c)&&!!c.resolver&&(c.resolver(b),!0)}function as(a){ah();let b=aN.get(a);return!!b&&(b.done||al(b,Error("canceled")),!0)}function at(){return h().join((0,s.$M)(),"models.json")}class aO extends Error{}class aP extends Error{constructor(){super("models.json 已被修改,请重新加载后再保存")}}function au(a){let b=[],c=(0,p.cZ)(a.replace(/^\uFEFF/,""),b,{allowTrailingComma:!0,allowEmptyContent:!1});if(b.length||!c){let a=b[0];throw new aO(`models.json JSONC 无效${a?` (${(0,p._n)(a.error)}, offset ${a.offset})`:""}`)}let d=(0,p.yQ)(c);if(!av(d)||!av(d.providers))throw new aO('models.json 顶层必须是 { "providers": { ... } }');for(let[a,b]of Object.entries(d.providers))if(!av(b))throw new aO(`provider "${a}" 必须是对象`);return d}function av(a){return null!==a&&"object"==typeof a&&!Array.isArray(a)}async function aw(a){try{let b=await f().readFile(a,"utf8");return{content:b,revision:(0,i.createHash)("sha256").update(b).digest("hex")}}catch(a){if("ENOENT"!==a.code)throw a;return{content:void 0,revision:"missing"}}}async function ax(){let a=await aw(at());return{...function(a){let b=au(a),c=[];for(let[a,d]of Object.entries(b.providers))Object.prototype.hasOwnProperty.call(d,"apiKey")&&(delete d.apiKey,c.push(a));return{content:JSON.stringify(b,null,2),secretProviderIds:c}}(a.content??'{"providers":{}}'),exists:void 0!==a.content,revision:a.revision}}async function ay(a){let b=(await o.ModelRuntime.create({modelsPath:a,credentials:new w.InMemoryCredentialStore,modelsStore:new w.InMemoryModelsStore,allowModelNetwork:!1,refreshOnCreate:!1})).getError();if(b)throw new aO(b)}async function az(a,b,c,d){let e=au(b.content??'{"providers":{}}'),g=`${a}.${process.pid}.${(0,i.randomUUID)()}.tmp`;try{void 0!==b.content&&(await f().writeFile(g,JSON.stringify(e,null,2),{encoding:"utf8",flag:"wx",mode:384}),await ay(g)),d?.(e);for(let[a,b]of Object.entries(c.providers)){if(!a.trim())throw new aO("provider ID 必须是非空字符串");for(let c of[...Array.isArray(b.models)?b.models:[],...av(b.modelOverrides)?Object.values(b.modelOverrides):[]])if(av(c)){for(let b of["contextWindow","maxTokens"])if(void 0!==c[b]&&("number"!=typeof c[b]||!Number.isSafeInteger(c[b])||c[b]<=0))throw new aO(`provider "${a}" 的 ${b} 必须是正整数`)}}if(await f().writeFile(g,JSON.stringify(c,null,2),{encoding:"utf8",flag:void 0===b.content?"wx":"w",mode:384}),await ay(g),(await aw(a)).revision!==b.revision)throw new aP;await f().rename(g,a)}finally{await f().rm(g,{force:!0}).catch(()=>void 0)}}async function aA(a,b){let c=at();await (0,x.Ax)(c,()=>(0,x._i)(c,async()=>{let d=await aw(c);if(void 0!==b&&b!==d.revision)throw new aP;let e=au(a);await az(c,d,e,a=>{for(let[b,c]of Object.entries(e.providers))if(null===c.apiKey)delete c.apiKey;else if(void 0===c.apiKey){let d=a.providers[b];d&&Object.prototype.hasOwnProperty.call(d,"apiKey")&&(c.apiKey=d.apiKey)}for(let a of Object.values(e.providers))void 0===a.apiKey&&"string"==typeof a.baseUrl&&/^https?:\/\/(localhost|127\.0\.0\.1|\[::1\]|192\.168\.|10\.|172\.(1[6-9]|2\d|3[01])\.)/i.test(a.baseUrl.trim())&&(a.apiKey="unused")})})),await (0,s.x9)(),B(),await (0,u.Sj)()}async function aB(a,b){let c=(await (0,s.uU)()).getModel(a,b);if(!c)throw new aO(`找不到模型:${a}/${b}`);let d=(await D()).get(a)?.get(b);return{contextWindow:Number(c.contextWindow)||0,builtin:d||null}}async function aC(a,b){return await (0,s.NU)(),aB(a,b)}async function aD(a,b,c){if(!Number.isSafeInteger(c)||c<=0)throw new aO("contextWindow 必须是正整数");await aB(a,b);let d=at();return await (0,x.Ax)(d,()=>(0,x._i)(d,async()=>{let e=await aw(d),f=au(e.content??'{"providers":{}}'),g=(0,v.Ax)(f.providers,a,b,c);await az(d,e,{...f,providers:g})})),await (0,s.x9)(),B(),(0,u.oW)(a,b),aB(a,b)}d()}catch(a){d(a)}})},71553:a=>{a.exports=require("node:dns/promises")},71808:(a,b,c)=>{var d,e,f,g,h,i,j,k,l;function m(a){return 32===a||9===a}function n(a){return 10===a||13===a}function o(a){return a>=48&&a<=57}c.d(b,{yQ:()=>q,cZ:()=>p,_n:()=>r}),(i=d||(d={}))[i.lineFeed=10]="lineFeed",i[i.carriageReturn=13]="carriageReturn",i[i.space=32]="space",i[i._0=48]="_0",i[i._1=49]="_1",i[i._2=50]="_2",i[i._3=51]="_3",i[i._4=52]="_4",i[i._5=53]="_5",i[i._6=54]="_6",i[i._7=55]="_7",i[i._8=56]="_8",i[i._9=57]="_9",i[i.a=97]="a",i[i.b=98]="b",i[i.c=99]="c",i[i.d=100]="d",i[i.e=101]="e",i[i.f=102]="f",i[i.g=103]="g",i[i.h=104]="h",i[i.i=105]="i",i[i.j=106]="j",i[i.k=107]="k",i[i.l=108]="l",i[i.m=109]="m",i[i.n=110]="n",i[i.o=111]="o",i[i.p=112]="p",i[i.q=113]="q",i[i.r=114]="r",i[i.s=115]="s",i[i.t=116]="t",i[i.u=117]="u",i[i.v=118]="v",i[i.w=119]="w",i[i.x=120]="x",i[i.y=121]="y",i[i.z=122]="z",i[i.A=65]="A",i[i.B=66]="B",i[i.C=67]="C",i[i.D=68]="D",i[i.E=69]="E",i[i.F=70]="F",i[i.G=71]="G",i[i.H=72]="H",i[i.I=73]="I",i[i.J=74]="J",i[i.K=75]="K",i[i.L=76]="L",i[i.M=77]="M",i[i.N=78]="N",i[i.O=79]="O",i[i.P=80]="P",i[i.Q=81]="Q",i[i.R=82]="R",i[i.S=83]="S",i[i.T=84]="T",i[i.U=85]="U",i[i.V=86]="V",i[i.W=87]="W",i[i.X=88]="X",i[i.Y=89]="Y",i[i.Z=90]="Z",i[i.asterisk=42]="asterisk",i[i.backslash=92]="backslash",i[i.closeBrace=125]="closeBrace",i[i.closeBracket=93]="closeBracket",i[i.colon=58]="colon",i[i.comma=44]="comma",i[i.dot=46]="dot",i[i.doubleQuote=34]="doubleQuote",i[i.minus=45]="minus",i[i.openBrace=123]="openBrace",i[i.openBracket=91]="openBracket",i[i.plus=43]="plus",i[i.slash=47]="slash",i[i.formFeed=12]="formFeed",i[i.tab=9]="tab",Array(20).fill(0).map((a,b)=>" ".repeat(b)),Array(200).fill(0).map((a,b)=>"\n"+" ".repeat(b)),Array(200).fill(0).map((a,b)=>"\r"+" ".repeat(b)),Array(200).fill(0).map((a,b)=>"\r\n"+" ".repeat(b)),Array(200).fill(0).map((a,b)=>"\n"+" ".repeat(b)),Array(200).fill(0).map((a,b)=>"\r"+" ".repeat(b)),Array(200).fill(0).map((a,b)=>"\r\n"+" ".repeat(b)),(e||(e={})).DEFAULT={allowTrailingComma:!1},(j=f||(f={}))[j.None=0]="None",j[j.UnexpectedEndOfComment=1]="UnexpectedEndOfComment",j[j.UnexpectedEndOfString=2]="UnexpectedEndOfString",j[j.UnexpectedEndOfNumber=3]="UnexpectedEndOfNumber",j[j.InvalidUnicode=4]="InvalidUnicode",j[j.InvalidEscapeCharacter=5]="InvalidEscapeCharacter",j[j.InvalidCharacter=6]="InvalidCharacter",(k=g||(g={}))[k.OpenBraceToken=1]="OpenBraceToken",k[k.CloseBraceToken=2]="CloseBraceToken",k[k.OpenBracketToken=3]="OpenBracketToken",k[k.CloseBracketToken=4]="CloseBracketToken",k[k.CommaToken=5]="CommaToken",k[k.ColonToken=6]="ColonToken",k[k.NullKeyword=7]="NullKeyword",k[k.TrueKeyword=8]="TrueKeyword",k[k.FalseKeyword=9]="FalseKeyword",k[k.StringLiteral=10]="StringLiteral",k[k.NumericLiteral=11]="NumericLiteral",k[k.LineCommentTrivia=12]="LineCommentTrivia",k[k.BlockCommentTrivia=13]="BlockCommentTrivia",k[k.LineBreakTrivia=14]="LineBreakTrivia",k[k.Trivia=15]="Trivia",k[k.Unknown=16]="Unknown",k[k.EOF=17]="EOF";let p=function(a,b=[],c=e.DEFAULT){let d={type:"array",offset:-1,length:-1,children:[],parent:void 0};function f(a){"property"===d.type&&(d.length=a-d.offset,d=d.parent)}function g(a){return d.children.push(a),a}!function(a,b,c=e.DEFAULT){var d;let f=function(a,b=!1){let c=a.length,d=0,e="",f=0,g=16,h=0,i=0,j=0,k=0,l=0;function p(){if(e="",l=0,f=d,i=h,k=j,d>=c)return f=c,g=17;let b=a.charCodeAt(d);if(m(b)){do d++,e+=String.fromCharCode(b),b=a.charCodeAt(d);while(m(b));return g=15}if(n(b))return d++,e+=String.fromCharCode(b),13===b&&10===a.charCodeAt(d)&&(d++,e+="\n"),h++,j=d,g=14;switch(b){case 123:return d++,g=1;case 125:return d++,g=2;case 91:return d++,g=3;case 93:return d++,g=4;case 58:return d++,g=6;case 44:return d++,g=5;case 34:return d++,e=function(){let b="",e=d;for(;;){if(d>=c){b+=a.substring(e,d),l=2;break}let f=a.charCodeAt(d);if(34===f){b+=a.substring(e,d),d++;break}if(92===f){if(b+=a.substring(e,d),++d>=c){l=2;break}switch(a.charCodeAt(d++)){case 34:b+='"';break;case 92:b+="\\";break;case 47:b+="/";break;case 98:b+="\b";break;case 102:b+="\f";break;case 110:b+="\n";break;case 114:b+="\r";break;case 116:b+=" ";break;case 117:let f=function(b){let c=0,e=0;for(;c<4||!b;){let b=a.charCodeAt(d);if(b>=48&&b<=57)e=16*e+b-48;else if(b>=65&&b<=70)e=16*e+b-65+10;else if(b>=97&&b<=102)e=16*e+b-97+10;else break;d++,c++}return c<4&&(e=-1),e}(!0);f>=0?b+=String.fromCharCode(f):l=4;break;default:l=5}e=d;continue}if(f>=0&&f<=31)if(n(f)){b+=a.substring(e,d),l=2;break}else l=6;d++}return b}(),g=10;case 47:let p=d-1;if(47===a.charCodeAt(d+1)){for(d+=2;d<c&&!n(a.charCodeAt(d));)d++;return e=a.substring(p,d),g=12}if(42===a.charCodeAt(d+1)){d+=2;let b=c-1,f=!1;for(;d<b;){let b=a.charCodeAt(d);if(42===b&&47===a.charCodeAt(d+1)){d+=2,f=!0;break}d++,n(b)&&(13===b&&10===a.charCodeAt(d)&&d++,h++,j=d)}return f||(d++,l=1),e=a.substring(p,d),g=13}return e+=String.fromCharCode(b),d++,g=16;case 45:if(e+=String.fromCharCode(b),++d===c||!o(a.charCodeAt(d)))return g=16;case 48:case 49:case 50:case 51:case 52:case 53:case 54:case 55:case 56:case 57:return e+=function(){let b=d;if(48===a.charCodeAt(d))d++;else for(d++;d<a.length&&o(a.charCodeAt(d));)d++;if(d<a.length&&46===a.charCodeAt(d)){if(!(++d<a.length&&o(a.charCodeAt(d))))return l=3,a.substring(b,d);for(d++;d<a.length&&o(a.charCodeAt(d));)d++}let c=d;if(d<a.length&&(69===a.charCodeAt(d)||101===a.charCodeAt(d)))if((++d<a.length&&43===a.charCodeAt(d)||45===a.charCodeAt(d))&&d++,d<a.length&&o(a.charCodeAt(d))){for(d++;d<a.length&&o(a.charCodeAt(d));)d++;c=d}else l=3;return a.substring(b,c)}(),g=11;default:for(;d<c&&function(a){if(m(a)||n(a))return!1;switch(a){case 125:case 93:case 123:case 91:case 34:case 58:case 44:case 47:return!1}return!0}(b);)d++,b=a.charCodeAt(d);if(f!==d){switch(e=a.substring(f,d)){case"true":return g=8;case"false":return g=9;case"null":return g=7}return g=16}return e+=String.fromCharCode(b),d++,g=16}}return{setPosition:function(a){d=a,e="",f=0,g=16,l=0},getPosition:()=>d,scan:b?function(){let a;do a=p();while(a>=12&&a<=15);return a}:p,getToken:()=>g,getTokenValue:()=>e,getTokenOffset:()=>f,getTokenLength:()=>d-f,getTokenStartLine:()=>i,getTokenStartCharacter:()=>f-k,getTokenError:()=>l}}(a,!1),g=[],h=0;function i(a){return a?b=>0===h&&a(b,f.getTokenOffset(),f.getTokenLength(),f.getTokenStartLine(),f.getTokenStartCharacter()):()=>!0}function j(a){return a?b=>0===h&&a(b,f.getTokenOffset(),f.getTokenLength(),f.getTokenStartLine(),f.getTokenStartCharacter(),()=>g.slice()):()=>!0}function k(a){return a?()=>{h>0?h++:!1===a(f.getTokenOffset(),f.getTokenLength(),f.getTokenStartLine(),f.getTokenStartCharacter(),()=>g.slice())&&(h=1)}:()=>!0}function l(a){return a?()=>{h>0&&h--,0===h&&a(f.getTokenOffset(),f.getTokenLength(),f.getTokenStartLine(),f.getTokenStartCharacter())}:()=>!0}let p=k(b.onObjectBegin),q=j(b.onObjectProperty),r=l(b.onObjectEnd),s=k(b.onArrayBegin),t=l(b.onArrayEnd),u=j(b.onLiteralValue),v=i(b.onSeparator),w=(d=b.onComment)?()=>0===h&&d(f.getTokenOffset(),f.getTokenLength(),f.getTokenStartLine(),f.getTokenStartCharacter()):()=>!0,x=i(b.onError),y=c&&c.disallowComments,z=c&&c.allowTrailingComma;function A(){for(;;){let a=f.scan();switch(f.getTokenError()){case 4:B(14);break;case 5:B(15);break;case 3:B(13);break;case 1:y||B(11);break;case 2:B(12);break;case 6:B(16)}switch(a){case 12:case 13:y?B(10):w();break;case 16:B(1);break;case 15:case 14:break;default:return a}}}function B(a,b=[],c=[]){if(x(a),b.length+c.length>0){let a=f.getToken();for(;17!==a;){if(-1!==b.indexOf(a)){A();break}if(-1!==c.indexOf(a))break;a=A()}}}function C(a){let b=f.getTokenValue();return a?u(b):(q(b),g.push(b)),A(),!0}if(A(),17===f.getToken())return c.allowEmptyContent||B(4,[],[]);!function a(){switch(f.getToken()){case 3:s(),A();let b=!0,c=!1;for(;4!==f.getToken()&&17!==f.getToken();){if(5===f.getToken()){if(c||B(4,[],[]),v(","),A(),4===f.getToken()&&z)break}else c&&B(6,[],[]);b?(g.push(0),b=!1):g[g.length-1]++,a()||B(4,[],[4,5]),c=!0}return t(),b||g.pop(),4!==f.getToken()?B(8,[4],[]):A(),!0;case 1:p(),A();let d=!1;for(;2!==f.getToken()&&17!==f.getToken();){if(5===f.getToken()){if(d||B(4,[],[]),v(","),A(),2===f.getToken()&&z)break}else d&&B(6,[],[]);(10!==f.getToken()?(B(3,[],[2,5]),1):(C(!1),6===f.getToken()?(v(":"),A(),a()||B(4,[],[2,5])):B(5,[],[2,5]),g.pop(),0))&&B(4,[],[2,5]),d=!0}return r(),2!==f.getToken()?B(7,[2],[]):A(),!0;case 10:return C(!0);default:switch(f.getToken()){case 11:let e=Number(f.getTokenValue());isNaN(e)&&(B(2),e=0),u(e);break;case 7:u(null);break;case 8:u(!0);break;case 9:u(!1);break;default:return!1}return A(),!0}}()?B(4,[],[]):17!==f.getToken()&&B(9,[],[])}(a,{onObjectBegin:a=>{d=g({type:"object",offset:a,length:-1,parent:d,children:[]})},onObjectProperty:(a,b,c)=>{(d=g({type:"property",offset:b,length:-1,parent:d,children:[]})).children.push({type:"string",value:a,offset:b,length:c,parent:d})},onObjectEnd:(a,b)=>{f(a+b),d.length=a+b-d.offset,d=d.parent,f(a+b)},onArrayBegin:(a,b)=>{d=g({type:"array",offset:a,length:-1,parent:d,children:[]})},onArrayEnd:(a,b)=>{d.length=a+b-d.offset,d=d.parent,f(a+b)},onLiteralValue:(a,b,c)=>{g({type:function(a){switch(typeof a){case"boolean":return"boolean";case"number":return"number";case"string":return"string";case"object":if(!a)return"null";if(Array.isArray(a))return"array";return"object";default:return"null"}}(a),offset:b,length:c,parent:d,value:a}),f(b+c)},onSeparator:(a,b,c)=>{"property"===d.type&&(":"===a?d.colonOffset=b:","===a&&f(b))},onError:(a,c,d)=>{b.push({error:a,offset:c,length:d})}},c);let h=d.children[0];return h&&delete h.parent,h},q=function a(b){switch(b.type){case"array":return b.children.map(a);case"object":let c=Object.create(null);for(let d of b.children){let b=d.children[1];b&&(c[d.children[0].value]=a(b))}return c;case"null":case"string":case"number":case"boolean":return b.value;default:return}};function r(a){switch(a){case 1:return"InvalidSymbol";case 2:return"InvalidNumberFormat";case 3:return"PropertyNameExpected";case 4:return"ValueExpected";case 5:return"ColonExpected";case 6:return"CommaExpected";case 7:return"CloseBraceExpected";case 8:return"CloseBracketExpected";case 9:return"EndOfFileExpected";case 10:return"InvalidCommentToken";case 11:return"UnexpectedEndOfComment";case 12:return"UnexpectedEndOfString";case 13:return"UnexpectedEndOfNumber";case 14:return"InvalidUnicode";case 15:return"InvalidEscapeCharacter";case 16:return"InvalidCharacter"}return"<unknown ParseErrorCode>"}(l=h||(h={}))[l.InvalidSymbol=1]="InvalidSymbol",l[l.InvalidNumberFormat=2]="InvalidNumberFormat",l[l.PropertyNameExpected=3]="PropertyNameExpected",l[l.ValueExpected=4]="ValueExpected",l[l.ColonExpected=5]="ColonExpected",l[l.CommaExpected=6]="CommaExpected",l[l.CloseBraceExpected=7]="CloseBraceExpected",l[l.CloseBracketExpected=8]="CloseBracketExpected",l[l.EndOfFileExpected=9]="EndOfFileExpected",l[l.InvalidCommentToken=10]="InvalidCommentToken",l[l.UnexpectedEndOfComment=11]="UnexpectedEndOfComment",l[l.UnexpectedEndOfString=12]="UnexpectedEndOfString",l[l.UnexpectedEndOfNumber=13]="UnexpectedEndOfNumber",l[l.InvalidUnicode=14]="InvalidUnicode",l[l.InvalidEscapeCharacter=15]="InvalidEscapeCharacter",l[l.InvalidCharacter=16]="InvalidCharacter"},73024:a=>{a.exports=require("node:fs")},75430:a=>{a.exports=import("@earendil-works/pi-coding-agent")},75554:(a,b,c)=>{c.a(a,async(a,d)=>{try{c.d(b,{DY:()=>s,Gh:()=>x,J0:()=>r,MO:()=>p});var e=c(51455),f=c.n(e),g=c(76760),h=c.n(g),i=c(77598),j=c(86159),k=c(87982),l=c(49904),m=a([k]);k=(m.then?(await m)():m)[0];let t=16384,u=2e4,v=3,w=2e3;function n(){return h().join((0,k.$M)(),"settings.json")}async function o(){return(0,j.op)(n())}async function p(){let a=(await o()).enabledModels;return!Array.isArray(a)||a.some(a=>"string"!=typeof a)?null:a}function q(a,b){let c=a[b];return c&&"object"==typeof c&&!Array.isArray(c)?c:{}}async function r(){let a=await o(),b=a.compaction??{},c=a.retry??{},d=(a,b)=>"number"==typeof a&&Number.isSafeInteger(a)&&a>=0?a:b;return{compaction:{enabled:!1!==b.enabled,reserveTokens:d(b.reserveTokens,t),keepRecentTokens:d(b.keepRecentTokens,u)},retry:{enabled:!1!==c.enabled,maxRetries:d(c.maxRetries,v),baseDelayMs:d(c.baseDelayMs,w)}}}class x extends Error{}async function s(a){let b=function(a){if(!a||"object"!=typeof a||Array.isArray(a))throw new x("invalid settings patch");if(Object.keys(a).some(a=>"compaction"!==a&&"retry"!==a))throw new x("unknown settings field");let b={};for(let c of["compaction","retry"]){if(void 0===a[c])continue;let d=a[c];if(!d||"object"!=typeof d||Array.isArray(d))throw new x(`invalid ${c} settings`);let e="compaction"===c?["enabled","reserveTokens","keepRecentTokens"]:["enabled","maxRetries","baseDelayMs"];for(let[a,b]of Object.entries(d)){if(!e.includes(a))throw new x(`unknown ${c} field: ${a}`);if("enabled"===a){if("boolean"!=typeof b)throw new x(`${c}.${a} must be boolean`)}else if("number"!=typeof b||!Number.isSafeInteger(b)||b<0||b>1e9)throw new x(`${c}.${a} must be a non-negative integer`)}"compaction"===c?b.compaction=d:b.retry=d}return b}(a),c=n();await (0,l.Ax)(c,()=>(0,l._i)(c,async()=>{let a=await (0,j.mu)(c);b.compaction&&(a.compaction={...q(a,"compaction"),...b.compaction}),b.retry&&(a.retry={...q(a,"retry"),...b.retry}),await f().mkdir(h().dirname(c),{recursive:!0});let d=`${c}.${process.pid}.${(0,i.randomUUID)()}.tmp`;try{await f().writeFile(d,JSON.stringify(a,null," "),"utf8"),await f().rename(d,c)}finally{await f().rm(d,{force:!0}).catch(()=>void 0)}(0,j.Ix)(c)})),await (0,k.BW)()}d()}catch(a){d(a)}})},76760:a=>{a.exports=require("node:path")},77030:a=>{a.exports=require("node:net")},77598:a=>{a.exports=require("node:crypto")},80481:a=>{a.exports=require("node:readline")},81115:a=>{a.exports=require("constants")},82966:(a,b,c)=>{c.r(b),c.d(b,{handler:()=>A,patchFetch:()=>z,routeModule:()=>v,serverHooks:()=>y,workAsyncStorage:()=>w,workUnitAsyncStorage:()=>x});var d=c(19225),e=c(84006),f=c(8317),g=c(99373),h=c(34775),i=c(24235),j=c(261),k=c(54365),l=c(90771),m=c(73461),n=c(67798),o=c(92280),p=c(62018),q=c(45696),r=c(47929),s=c(86439),t=c(10246),u=c(37527);let v=new d.AppRouteRouteModule({definition:{kind:e.RouteKind.APP_ROUTE,page:"/api/models/route",pathname:"/api/models",filename:"route",bundlePath:"app/api/models/route"},distDir:".next",relativeProjectDir:"",resolvedPagePath:"/home/runner/work/PiWeb/PiWeb/src/app/api/models/route.ts",nextConfigOutput:"",userland:()=>c(38708),...{}}),{workAsyncStorage:w,workUnitAsyncStorage:x,serverHooks:y}=v;function z(){return(0,f.patchFetch)({workAsyncStorage:w,workUnitAsyncStorage:x})}async function A(a,b,c){c.requestMeta&&(0,g.setRequestMeta)(a,c.requestMeta),v.isDev&&(0,g.addRequestMeta)(a,"devRequestTimingInternalsEnd",process.hrtime.bigint());let d="/api/models/route";"/index"===d&&(d="/");let f=await v.prepare(a,b,{srcPage:d,multiZoneDraftMode:!1});if(!f)return b.statusCode=400,b.end("Bad Request"),null==c.waitUntil||c.waitUntil.call(c,Promise.resolve()),null;let{buildId:w,deploymentId:x,params:y,nextConfig:z,parsedUrl:A,isDraftMode:B,prerenderManifest:C,routerServerContext:D,isOnDemandRevalidate:E,revalidateOnlyGenerated:F,resolvedPathname:G,clientReferenceManifest:H,serverActionsManifest:I,previewProps:J}=f,K=(0,j.normalizeAppPath)(d),L=!!C.routes[G]&&(v.isDev||(0,t.isRouteCacheOwner)(G,v.cacheOwner,C.routes[G])),M=!!(C.dynamicRoutes[K]||L),N=async()=>((null==D?void 0:D.render404)?await D.render404(a,b,A,!1):b.end("This page could not be found"),null);if(M&&!B){let a=C.dynamicRoutes[K];if(a&&!1===a.fallback&&!L){if(z.adapterPath)return await N();throw new s.NoFallbackError}}let O=null;!M||v.isDev||B||(O="/index"===(O=G)?"/":O),I&&H&&(0,i.setManifestsSingleton)({page:d,clientReferenceManifest:H,serverActionsManifest:I});let P=a.method||"GET",Q=(0,h.getTracer)(),R=Q.getActiveScopeSpan(),S=!!(null==D?void 0:D.isWrappedByNextServer),T=!!(0,g.getRequestMeta)(a,"minimalMode"),U=(0,g.getRequestMeta)(a,"incrementalCache")||await v.getIncrementalCache(a,z,J,C,T);null==U||U.resetRequestCache(),globalThis.__incrementalCache=U;let V={params:y,previewProps:J,renderOpts:{experimental:{authInterrupts:!!z.experimental.authInterrupts,useCacheTimeout:z.experimental.useCacheTimeout,durableUseCacheEntries:!!z.experimental.durableUseCacheEntries},cacheComponents:!!z.cacheComponents,validationLevel:z.experimental.instantInsights.validationLevel,isDraftMode:B,incrementalCache:U,hmrRefreshHash:(0,g.getRequestMeta)(a,"hmrRefreshHash"),cacheLifeProfiles:z.cacheLife,staticPageGenerationTimeout:z.staticPageGenerationTimeout,waitUntil:c.waitUntil,onClose:a=>{b.on("close",a)},onAfterTaskError:void 0},sharedContext:{buildId:w,deploymentId:x}},W=new k.NodeNextRequest(a),X=new k.NodeNextResponse(b),Y=l.NextRequestAdapter.fromNodeNextRequest(W,(0,l.signalFromNodeResponse)(b)),Z=async({previousCacheEntry:e})=>{try{if(!T&&E&&F&&!e)return b.statusCode=404,b.setHeader("x-nextjs-cache","REVALIDATED"),b.end("This page could not be found"),null;let d=null===O?await v.handle(Y,V):await v.prerender(Y,V);a.fetchMetrics=V.renderOpts.fetchMetrics;let f=V.renderOpts.pendingWaitUntil;f&&c.waitUntil&&(c.waitUntil(f),f=void 0);let g=V.renderOpts.collectedTags;if(!M)return await (0,o.I)(W,X,d,f),null;{let a=await d.blob(),b=(0,p.toNodeOutgoingHttpHeaders)(d.headers);g&&(b[r.NEXT_CACHE_TAGS_HEADER]=g),!b["content-type"]&&a.type&&(b["content-type"]=a.type);let c=void 0!==V.renderOpts.collectedRevalidate&&!(V.renderOpts.collectedRevalidate>=r.INFINITE_CACHE)&&V.renderOpts.collectedRevalidate,e=void 0===V.renderOpts.collectedExpire||V.renderOpts.collectedExpire>=r.INFINITE_CACHE?!1!==c&&c>0?z.expireTime:void 0:V.renderOpts.collectedExpire;return{value:{kind:u.CachedRouteKind.APP_ROUTE,status:d.status,body:Buffer.from(await a.arrayBuffer()),headers:b},cacheControl:{revalidate:c,expire:e}}}}catch(b){throw(null==e?void 0:e.isStale)&&await v.onRequestError(a,b,{routerKind:"App Router",routePath:d,routeType:"route",revalidateReason:(0,n.getRevalidateReason)({isStaticGeneration:null!==O,isOnDemandRevalidate:E})},!1,D),b}},$=async(d,f)=>{try{var g,i;let d=await v.handleResponse({req:a,nextConfig:z,cacheKey:O,routeKind:e.RouteKind.APP_ROUTE,isFallback:!1,previewProps:J,prerenderManifest:C,isRoutePPREnabled:!1,isOnDemandRevalidate:E,revalidateOnlyGenerated:F,responseGenerator:Z,waitUntil:c.waitUntil,isMinimalMode:T});if(null!==d&&"error"in d)throw d.error;if(!M)return;if((null==d||null==(g=d.value)?void 0:g.kind)!==u.CachedRouteKind.APP_ROUTE)throw Error(`Invariant: app-route received invalid cache entry ${null==d||null==(i=d.value)?void 0:i.kind}`);T||b.setHeader("x-nextjs-cache",E?"REVALIDATED":d.isMiss?"MISS":d.isStale?"STALE":"HIT"),B&&b.setHeader("Cache-Control","private, no-cache, no-store, max-age=0, must-revalidate");let f=(0,p.fromNodeOutgoingHttpHeaders)(d.value.headers);T&&M||f.delete(r.NEXT_CACHE_TAGS_HEADER),!d.cacheControl||b.getHeader("Cache-Control")||f.get("Cache-Control")||f.set("Cache-Control",(0,q.getCacheControlHeader)(d.cacheControl)),await (0,o.I)(W,X,new Response(d.value.body,{headers:f,status:d.value.status||200}));return}catch(c){if(c instanceof s.NoFallbackError||await v.onRequestError(a,c,{routerKind:"App Router",routePath:K,routeType:"route",revalidateReason:(0,n.getRevalidateReason)({isStaticGeneration:null!==O,isOnDemandRevalidate:E})},!1,D),M)throw c;if(b.headersSent){if(d){let a=c instanceof Error?c:Error("Unknown app route error");d.recordException(a),d.setStatus({code:h.SpanStatusCode.ERROR,message:a.message}),d.setAttribute("error.type",a.name)}b.writableEnded||b.destroyed||b.end()}else await (0,o.I)(W,X,new Response(null,{status:500}));return}finally{(()=>{if(!d)return;let a=b.statusCode;d.setAttributes({"http.status_code":a,"next.rsc":!1}),a&&a>=500&&(d.setStatus({code:h.SpanStatusCode.ERROR}),d.setAttribute("error.type",a.toString()));let c=Q.getRootSpanAttributes();if(!c)return;if(c.get("next.span_type")!==m.BaseServerSpan.handleRequest)return console.warn(`Unexpected root span type '${c.get("next.span_type")}'. Please report this Next.js issue https://github.com/vercel/next.js`);let e=c.get("next.route")||K,g=`${P} ${e}`;d.setAttributes({"next.route":e,"http.route":e,"next.span_name":g}),d.updateName(g),f&&f!==d&&(f.setAttribute("http.route",e),f.updateName(g))})()}};if(S&&R)await $(R,void 0);else{let b=Q.getActiveScopeSpan();await Q.withPropagatedContext(a.headers,()=>Q.trace(m.BaseServerSpan.handleRequest,{spanName:`${P} ${d}`,kind:h.SpanKind.SERVER,attributes:{"http.method":P,"http.target":a.url}},a=>$(a,b)),void 0,!S)}}},86439:a=>{a.exports=require("next/dist/shared/lib/no-fallback-error.external")},94735:a=>{a.exports=require("events")},97138:(a,b,c)=>{c.d(b,{fv:()=>d,lG:()=>e});let d=604800,e=2592e3}};var b=require("../../../webpack-runtime.js");b.C(a);var c=b.X(0,[2970,1813,974,538,9920,8686],()=>b(b.s=82966));module.exports=c})();