@qt4798/pi-web 0.9.20-beta.1 → 0.9.20

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 (314) hide show
  1. package/.next/BUILD_ID +1 -1
  2. package/.next/app-path-routes-manifest.json +20 -20
  3. package/.next/build-manifest.json +3 -3
  4. package/.next/prerender-manifest.json +3 -3
  5. package/.next/required-server-files.js +4 -4
  6. package/.next/required-server-files.json +4 -4
  7. package/.next/server/app/_global-error/page.js +3 -3
  8. package/.next/server/app/_global-error/page_client-reference-manifest.js +1 -1
  9. package/.next/server/app/_global-error.html +1 -1
  10. package/.next/server/app/_global-error.rsc +1 -1
  11. package/.next/server/app/_global-error.segments/_full.segment.rsc +1 -1
  12. package/.next/server/app/_global-error.segments/_global-error/__PAGE__.segment.rsc +1 -1
  13. package/.next/server/app/_global-error.segments/_global-error.segment.rsc +1 -1
  14. package/.next/server/app/_global-error.segments/_head.segment.rsc +1 -1
  15. package/.next/server/app/_global-error.segments/_index.segment.rsc +1 -1
  16. package/.next/server/app/_global-error.segments/_tree.segment.rsc +1 -1
  17. package/.next/server/app/_not-found/page.js +2 -2
  18. package/.next/server/app/_not-found/page_client-reference-manifest.js +1 -1
  19. package/.next/server/app/_not-found.html +1 -1
  20. package/.next/server/app/_not-found.rsc +2 -2
  21. package/.next/server/app/_not-found.segments/_full.segment.rsc +2 -2
  22. package/.next/server/app/_not-found.segments/_head.segment.rsc +1 -1
  23. package/.next/server/app/_not-found.segments/_index.segment.rsc +2 -2
  24. package/.next/server/app/_not-found.segments/_not-found/__PAGE__.segment.rsc +1 -1
  25. package/.next/server/app/_not-found.segments/_not-found.segment.rsc +1 -1
  26. package/.next/server/app/_not-found.segments/_tree.segment.rsc +2 -2
  27. package/.next/server/app/api/agent/[id]/bash-output/route.js +1 -1
  28. package/.next/server/app/api/agent/[id]/bash-output/route_client-reference-manifest.js +1 -1
  29. package/.next/server/app/api/agent/[id]/events/route.js +2 -2
  30. package/.next/server/app/api/agent/[id]/events/route_client-reference-manifest.js +1 -1
  31. package/.next/server/app/api/agent/[id]/route.js +1 -1
  32. package/.next/server/app/api/agent/[id]/route_client-reference-manifest.js +1 -1
  33. package/.next/server/app/api/agent/new/route.js +1 -1
  34. package/.next/server/app/api/agent/new/route_client-reference-manifest.js +1 -1
  35. package/.next/server/app/api/agent/running/events/route.js +1 -1
  36. package/.next/server/app/api/agent/running/events/route_client-reference-manifest.js +1 -1
  37. package/.next/server/app/api/agent/running/route.js +1 -1
  38. package/.next/server/app/api/agent/running/route_client-reference-manifest.js +1 -1
  39. package/.next/server/app/api/auth/all-providers/route.js +1 -1
  40. package/.next/server/app/api/auth/all-providers/route_client-reference-manifest.js +1 -1
  41. package/.next/server/app/api/auth/api-key/[provider]/route.js +1 -1
  42. package/.next/server/app/api/auth/api-key/[provider]/route_client-reference-manifest.js +1 -1
  43. package/.next/server/app/api/auth/combined/route.js +1 -1
  44. package/.next/server/app/api/auth/combined/route_client-reference-manifest.js +1 -1
  45. package/.next/server/app/api/auth/login/[provider]/route.js +2 -2
  46. package/.next/server/app/api/auth/login/[provider]/route_client-reference-manifest.js +1 -1
  47. package/.next/server/app/api/auth/logout/[provider]/route.js +1 -1
  48. package/.next/server/app/api/auth/logout/[provider]/route_client-reference-manifest.js +1 -1
  49. package/.next/server/app/api/auth/providers/route.js +1 -1
  50. package/.next/server/app/api/auth/providers/route_client-reference-manifest.js +1 -1
  51. package/.next/server/app/api/backup/export/route.js +1 -1
  52. package/.next/server/app/api/backup/export/route_client-reference-manifest.js +1 -1
  53. package/.next/server/app/api/backup/import/route.js +1 -1
  54. package/.next/server/app/api/backup/import/route_client-reference-manifest.js +1 -1
  55. package/.next/server/app/api/cwd/browse/route.js +1 -1
  56. package/.next/server/app/api/cwd/browse/route_client-reference-manifest.js +1 -1
  57. package/.next/server/app/api/cwd/validate/route.js +1 -1
  58. package/.next/server/app/api/cwd/validate/route_client-reference-manifest.js +1 -1
  59. package/.next/server/app/api/deepseek/balance/route.js +1 -1
  60. package/.next/server/app/api/deepseek/balance/route_client-reference-manifest.js +1 -1
  61. package/.next/server/app/api/default-cwd/route.js +1 -1
  62. package/.next/server/app/api/default-cwd/route_client-reference-manifest.js +1 -1
  63. package/.next/server/app/api/events/route.js +2 -2
  64. package/.next/server/app/api/events/route_client-reference-manifest.js +1 -1
  65. package/.next/server/app/api/features/route.js +1 -1
  66. package/.next/server/app/api/features/route_client-reference-manifest.js +1 -1
  67. package/.next/server/app/api/file-index/route.js +1 -1
  68. package/.next/server/app/api/file-index/route_client-reference-manifest.js +1 -1
  69. package/.next/server/app/api/files/[...path]/route.js +1 -1
  70. package/.next/server/app/api/files/[...path]/route_client-reference-manifest.js +1 -1
  71. package/.next/server/app/api/git/diff/route.js +2 -2
  72. package/.next/server/app/api/git/diff/route_client-reference-manifest.js +1 -1
  73. package/.next/server/app/api/git/push/route.js +1 -1
  74. package/.next/server/app/api/git/push/route_client-reference-manifest.js +1 -1
  75. package/.next/server/app/api/git/stash/route.js +1 -1
  76. package/.next/server/app/api/git/stash/route_client-reference-manifest.js +1 -1
  77. package/.next/server/app/api/git/status/route.js +1 -1
  78. package/.next/server/app/api/git/status/route_client-reference-manifest.js +1 -1
  79. package/.next/server/app/api/home/route.js +1 -1
  80. package/.next/server/app/api/home/route_client-reference-manifest.js +1 -1
  81. package/.next/server/app/api/import/discover/route.js +1 -1
  82. package/.next/server/app/api/import/discover/route_client-reference-manifest.js +1 -1
  83. package/.next/server/app/api/import/execute/route.js +1 -1
  84. package/.next/server/app/api/import/execute/route_client-reference-manifest.js +1 -1
  85. package/.next/server/app/api/import/status/route.js +1 -1
  86. package/.next/server/app/api/import/status/route_client-reference-manifest.js +1 -1
  87. package/.next/server/app/api/logs/route.js +1 -1
  88. package/.next/server/app/api/logs/route_client-reference-manifest.js +1 -1
  89. package/.next/server/app/api/mcp/route.js +2 -2
  90. package/.next/server/app/api/mcp/route_client-reference-manifest.js +1 -1
  91. package/.next/server/app/api/models/route.js +1 -1
  92. package/.next/server/app/api/models/route_client-reference-manifest.js +1 -1
  93. package/.next/server/app/api/models-config/builtin/route.js +1 -1
  94. package/.next/server/app/api/models-config/builtin/route_client-reference-manifest.js +1 -1
  95. package/.next/server/app/api/models-config/catalog/route.js +1 -1
  96. package/.next/server/app/api/models-config/catalog/route_client-reference-manifest.js +1 -1
  97. package/.next/server/app/api/models-config/discover/route.js +1 -1
  98. package/.next/server/app/api/models-config/discover/route_client-reference-manifest.js +1 -1
  99. package/.next/server/app/api/models-config/route.js +1 -1
  100. package/.next/server/app/api/models-config/route_client-reference-manifest.js +1 -1
  101. package/.next/server/app/api/models-config/test/route.js +1 -1
  102. package/.next/server/app/api/models-config/test/route_client-reference-manifest.js +1 -1
  103. package/.next/server/app/api/modes/route.js +1 -1
  104. package/.next/server/app/api/modes/route_client-reference-manifest.js +1 -1
  105. package/.next/server/app/api/opencode-zen/external/key/route.js +1 -1
  106. package/.next/server/app/api/opencode-zen/external/key/route_client-reference-manifest.js +1 -1
  107. package/.next/server/app/api/opencode-zen/external/test/route.js +1 -1
  108. package/.next/server/app/api/opencode-zen/external/test/route_client-reference-manifest.js +1 -1
  109. package/.next/server/app/api/opencode-zen/import/route.js +1 -1
  110. package/.next/server/app/api/opencode-zen/import/route_client-reference-manifest.js +1 -1
  111. package/.next/server/app/api/opencode-zen/key/route.js +1 -1
  112. package/.next/server/app/api/opencode-zen/key/route_client-reference-manifest.js +1 -1
  113. package/.next/server/app/api/opencode-zen/route.js +1 -1
  114. package/.next/server/app/api/opencode-zen/route_client-reference-manifest.js +1 -1
  115. package/.next/server/app/api/opencode-zen/test/route.js +1 -1
  116. package/.next/server/app/api/opencode-zen/test/route_client-reference-manifest.js +1 -1
  117. package/.next/server/app/api/plugins/route.js +1 -1
  118. package/.next/server/app/api/plugins/route_client-reference-manifest.js +1 -1
  119. package/.next/server/app/api/project-trust/route.js +1 -1
  120. package/.next/server/app/api/project-trust/route_client-reference-manifest.js +1 -1
  121. package/.next/server/app/api/proxy/route.js +1 -1
  122. package/.next/server/app/api/proxy/route_client-reference-manifest.js +1 -1
  123. package/.next/server/app/api/proxy/test/route.js +1 -1
  124. package/.next/server/app/api/proxy/test/route_client-reference-manifest.js +1 -1
  125. package/.next/server/app/api/sessions/[id]/auto-name/route.js +2 -2
  126. package/.next/server/app/api/sessions/[id]/auto-name/route_client-reference-manifest.js +1 -1
  127. package/.next/server/app/api/sessions/[id]/context/route.js +1 -1
  128. package/.next/server/app/api/sessions/[id]/context/route_client-reference-manifest.js +1 -1
  129. package/.next/server/app/api/sessions/[id]/entries/[entryId]/thinking/route.js +1 -1
  130. package/.next/server/app/api/sessions/[id]/entries/[entryId]/thinking/route_client-reference-manifest.js +1 -1
  131. package/.next/server/app/api/sessions/[id]/export/route.js +2 -2
  132. package/.next/server/app/api/sessions/[id]/export/route_client-reference-manifest.js +1 -1
  133. package/.next/server/app/api/sessions/[id]/queue-recovery/route.js +1 -1
  134. package/.next/server/app/api/sessions/[id]/queue-recovery/route_client-reference-manifest.js +1 -1
  135. package/.next/server/app/api/sessions/[id]/route.js +1 -1
  136. package/.next/server/app/api/sessions/[id]/route_client-reference-manifest.js +1 -1
  137. package/.next/server/app/api/sessions/[id]/state/route.js +1 -1
  138. package/.next/server/app/api/sessions/[id]/state/route_client-reference-manifest.js +1 -1
  139. package/.next/server/app/api/sessions/route.js +1 -1
  140. package/.next/server/app/api/sessions/route_client-reference-manifest.js +1 -1
  141. package/.next/server/app/api/settings/title-model/route.js +1 -1
  142. package/.next/server/app/api/settings/title-model/route_client-reference-manifest.js +1 -1
  143. package/.next/server/app/api/skills/check/route.js +1 -1
  144. package/.next/server/app/api/skills/check/route_client-reference-manifest.js +1 -1
  145. package/.next/server/app/api/skills/install/route.js +1 -1
  146. package/.next/server/app/api/skills/install/route_client-reference-manifest.js +1 -1
  147. package/.next/server/app/api/skills/route.js +2 -2
  148. package/.next/server/app/api/skills/route_client-reference-manifest.js +1 -1
  149. package/.next/server/app/api/skills/search/route.js +1 -1
  150. package/.next/server/app/api/skills/search/route_client-reference-manifest.js +1 -1
  151. package/.next/server/app/api/skills/update/route.js +1 -1
  152. package/.next/server/app/api/skills/update/route_client-reference-manifest.js +1 -1
  153. package/.next/server/app/api/snippets/[id]/route.js +1 -1
  154. package/.next/server/app/api/snippets/[id]/route_client-reference-manifest.js +1 -1
  155. package/.next/server/app/api/snippets/route.js +1 -1
  156. package/.next/server/app/api/snippets/route_client-reference-manifest.js +1 -1
  157. package/.next/server/app/api/subagents/agents/[name]/route.js +2 -2
  158. package/.next/server/app/api/subagents/agents/[name]/route_client-reference-manifest.js +1 -1
  159. package/.next/server/app/api/subagents/route.js +2 -2
  160. package/.next/server/app/api/subagents/route_client-reference-manifest.js +1 -1
  161. package/.next/server/app/api/tasks/[id]/[action]/route.js +1 -1
  162. package/.next/server/app/api/tasks/[id]/[action]/route_client-reference-manifest.js +1 -1
  163. package/.next/server/app/api/tasks/[id]/changed-files/route.js +2 -2
  164. package/.next/server/app/api/tasks/[id]/changed-files/route_client-reference-manifest.js +1 -1
  165. package/.next/server/app/api/tasks/[id]/diff/route.js +2 -2
  166. package/.next/server/app/api/tasks/[id]/diff/route_client-reference-manifest.js +1 -1
  167. package/.next/server/app/api/tasks/[id]/events/route.js +1 -1
  168. package/.next/server/app/api/tasks/[id]/events/route_client-reference-manifest.js +1 -1
  169. package/.next/server/app/api/tasks/[id]/route.js +1 -1
  170. package/.next/server/app/api/tasks/[id]/route_client-reference-manifest.js +1 -1
  171. package/.next/server/app/api/tasks/batch/route.js +1 -1
  172. package/.next/server/app/api/tasks/batch/route_client-reference-manifest.js +1 -1
  173. package/.next/server/app/api/tasks/events/route.js +2 -2
  174. package/.next/server/app/api/tasks/events/route_client-reference-manifest.js +1 -1
  175. package/.next/server/app/api/tasks/route.js +1 -1
  176. package/.next/server/app/api/tasks/route_client-reference-manifest.js +1 -1
  177. package/.next/server/app/api/tasks/settings/route.js +1 -1
  178. package/.next/server/app/api/tasks/settings/route_client-reference-manifest.js +1 -1
  179. package/.next/server/app/api/tasks/templates/route.js +1 -1
  180. package/.next/server/app/api/tasks/templates/route_client-reference-manifest.js +1 -1
  181. package/.next/server/app/api/themes/[name]/route.js +1 -1
  182. package/.next/server/app/api/themes/[name]/route_client-reference-manifest.js +1 -1
  183. package/.next/server/app/api/themes/route.js +1 -1
  184. package/.next/server/app/api/themes/route_client-reference-manifest.js +1 -1
  185. package/.next/server/app/api/usage/route.js +1 -1
  186. package/.next/server/app/api/usage/route_client-reference-manifest.js +1 -1
  187. package/.next/server/app/api/vision-config/route.js +2 -2
  188. package/.next/server/app/api/vision-config/route_client-reference-manifest.js +1 -1
  189. package/.next/server/app/api/worktrees/route.js +1 -1
  190. package/.next/server/app/api/worktrees/route_client-reference-manifest.js +1 -1
  191. package/.next/server/app/icon.ico/route.js +1 -1
  192. package/.next/server/app/icon.png/route.js +1 -1
  193. package/.next/server/app/icon.svg/route.js +1 -1
  194. package/.next/server/app/index.html +1 -1
  195. package/.next/server/app/index.rsc +4 -4
  196. package/.next/server/app/index.segments/__PAGE__.segment.rsc +3 -3
  197. package/.next/server/app/index.segments/_full.segment.rsc +4 -4
  198. package/.next/server/app/index.segments/_head.segment.rsc +1 -1
  199. package/.next/server/app/index.segments/_index.segment.rsc +2 -2
  200. package/.next/server/app/index.segments/_tree.segment.rsc +2 -2
  201. package/.next/server/app/page.js +15 -15
  202. package/.next/server/app/page_client-reference-manifest.js +1 -1
  203. package/.next/server/app-paths-manifest.json +20 -20
  204. package/.next/server/chunks/2303.js +1 -1
  205. package/.next/server/chunks/319.js +3 -3
  206. package/.next/server/chunks/4253.js +1 -1
  207. package/.next/server/chunks/6162.js +1 -1
  208. package/.next/server/chunks/6429.js +1 -1
  209. package/.next/server/chunks/7915.js +1 -1
  210. package/.next/server/middleware-build-manifest.js +1 -1
  211. package/.next/server/middleware.js +2 -2
  212. package/.next/server/pages/404.html +1 -1
  213. package/.next/server/pages/500.html +1 -1
  214. package/.next/server/server-reference-manifest.json +1 -1
  215. package/.next/static/chunks/{7037-806bfd694238ac7a.js → 6775-ca78abf077bc00e0.js} +1 -1
  216. package/.next/static/chunks/app/_not-found/{page-2cbcccc16b2e43a1.js → page-4e8d0b14be117d20.js} +1 -1
  217. package/.next/static/chunks/app/layout-7b635840991e69cb.js +1 -0
  218. package/.next/static/chunks/app/page-97c1e982f6b8b1fc.js +53 -0
  219. package/.next/static/chunks/{main-app-1bc5382edc6fe9cd.js → main-app-1fba0c581dfd167b.js} +1 -1
  220. package/.next/static/chunks/next/dist/client/components/builtin/global-error-9b3287a6309b286c.js +1 -0
  221. package/.next/static/css/01112cb2bf6934c5.css +1 -0
  222. package/.next/trace +9 -165
  223. package/.next/trace-build +1 -1
  224. package/.next/types/app/api/agent/[id]/bash-output/route.ts +1 -1
  225. package/.next/types/app/api/agent/[id]/events/route.ts +1 -1
  226. package/.next/types/app/api/agent/[id]/route.ts +1 -1
  227. package/.next/types/app/api/agent/new/route.ts +1 -1
  228. package/.next/types/app/api/agent/running/events/route.ts +1 -1
  229. package/.next/types/app/api/agent/running/route.ts +1 -1
  230. package/.next/types/app/api/auth/all-providers/route.ts +1 -1
  231. package/.next/types/app/api/auth/api-key/[provider]/route.ts +1 -1
  232. package/.next/types/app/api/auth/combined/route.ts +1 -1
  233. package/.next/types/app/api/auth/login/[provider]/route.ts +1 -1
  234. package/.next/types/app/api/auth/logout/[provider]/route.ts +1 -1
  235. package/.next/types/app/api/auth/providers/route.ts +1 -1
  236. package/.next/types/app/api/backup/export/route.ts +1 -1
  237. package/.next/types/app/api/backup/import/route.ts +1 -1
  238. package/.next/types/app/api/cwd/browse/route.ts +1 -1
  239. package/.next/types/app/api/cwd/validate/route.ts +1 -1
  240. package/.next/types/app/api/deepseek/balance/route.ts +1 -1
  241. package/.next/types/app/api/default-cwd/route.ts +1 -1
  242. package/.next/types/app/api/events/route.ts +1 -1
  243. package/.next/types/app/api/features/route.ts +1 -1
  244. package/.next/types/app/api/file-index/route.ts +1 -1
  245. package/.next/types/app/api/files/[...path]/route.ts +1 -1
  246. package/.next/types/app/api/git/diff/route.ts +1 -1
  247. package/.next/types/app/api/git/push/route.ts +1 -1
  248. package/.next/types/app/api/git/stash/route.ts +1 -1
  249. package/.next/types/app/api/git/status/route.ts +1 -1
  250. package/.next/types/app/api/home/route.ts +1 -1
  251. package/.next/types/app/api/import/discover/route.ts +1 -1
  252. package/.next/types/app/api/import/execute/route.ts +1 -1
  253. package/.next/types/app/api/import/status/route.ts +1 -1
  254. package/.next/types/app/api/logs/route.ts +1 -1
  255. package/.next/types/app/api/mcp/route.ts +1 -1
  256. package/.next/types/app/api/models/route.ts +1 -1
  257. package/.next/types/app/api/models-config/builtin/route.ts +1 -1
  258. package/.next/types/app/api/models-config/catalog/route.ts +1 -1
  259. package/.next/types/app/api/models-config/discover/route.ts +1 -1
  260. package/.next/types/app/api/models-config/route.ts +1 -1
  261. package/.next/types/app/api/models-config/test/route.ts +1 -1
  262. package/.next/types/app/api/modes/route.ts +1 -1
  263. package/.next/types/app/api/opencode-zen/external/key/route.ts +1 -1
  264. package/.next/types/app/api/opencode-zen/external/test/route.ts +1 -1
  265. package/.next/types/app/api/opencode-zen/import/route.ts +1 -1
  266. package/.next/types/app/api/opencode-zen/key/route.ts +1 -1
  267. package/.next/types/app/api/opencode-zen/route.ts +1 -1
  268. package/.next/types/app/api/opencode-zen/test/route.ts +1 -1
  269. package/.next/types/app/api/plugins/route.ts +1 -1
  270. package/.next/types/app/api/project-trust/route.ts +1 -1
  271. package/.next/types/app/api/proxy/route.ts +1 -1
  272. package/.next/types/app/api/proxy/test/route.ts +1 -1
  273. package/.next/types/app/api/sessions/[id]/auto-name/route.ts +1 -1
  274. package/.next/types/app/api/sessions/[id]/context/route.ts +1 -1
  275. package/.next/types/app/api/sessions/[id]/entries/[entryId]/thinking/route.ts +1 -1
  276. package/.next/types/app/api/sessions/[id]/export/route.ts +1 -1
  277. package/.next/types/app/api/sessions/[id]/queue-recovery/route.ts +1 -1
  278. package/.next/types/app/api/sessions/[id]/route.ts +1 -1
  279. package/.next/types/app/api/sessions/[id]/state/route.ts +1 -1
  280. package/.next/types/app/api/sessions/route.ts +1 -1
  281. package/.next/types/app/api/settings/title-model/route.ts +1 -1
  282. package/.next/types/app/api/skills/check/route.ts +1 -1
  283. package/.next/types/app/api/skills/install/route.ts +1 -1
  284. package/.next/types/app/api/skills/route.ts +1 -1
  285. package/.next/types/app/api/skills/search/route.ts +1 -1
  286. package/.next/types/app/api/skills/update/route.ts +1 -1
  287. package/.next/types/app/api/snippets/[id]/route.ts +1 -1
  288. package/.next/types/app/api/snippets/route.ts +1 -1
  289. package/.next/types/app/api/subagents/agents/[name]/route.ts +1 -1
  290. package/.next/types/app/api/subagents/route.ts +1 -1
  291. package/.next/types/app/api/tasks/[id]/[action]/route.ts +1 -1
  292. package/.next/types/app/api/tasks/[id]/changed-files/route.ts +1 -1
  293. package/.next/types/app/api/tasks/[id]/diff/route.ts +1 -1
  294. package/.next/types/app/api/tasks/[id]/events/route.ts +1 -1
  295. package/.next/types/app/api/tasks/[id]/route.ts +1 -1
  296. package/.next/types/app/api/tasks/batch/route.ts +1 -1
  297. package/.next/types/app/api/tasks/events/route.ts +1 -1
  298. package/.next/types/app/api/tasks/route.ts +1 -1
  299. package/.next/types/app/api/tasks/settings/route.ts +1 -1
  300. package/.next/types/app/api/tasks/templates/route.ts +1 -1
  301. package/.next/types/app/api/themes/[name]/route.ts +1 -1
  302. package/.next/types/app/api/themes/route.ts +1 -1
  303. package/.next/types/app/api/usage/route.ts +1 -1
  304. package/.next/types/app/api/vision-config/route.ts +1 -1
  305. package/.next/types/app/api/worktrees/route.ts +1 -1
  306. package/.next/types/app/layout.ts +1 -1
  307. package/.next/types/app/page.ts +1 -1
  308. package/package.json +1 -2
  309. package/.next/static/chunks/app/layout-dd3541093bbacac2.js +0 -1
  310. package/.next/static/chunks/app/page-363fcc7cee78a7f1.js +0 -53
  311. package/.next/static/chunks/next/dist/client/components/builtin/global-error-66a4e22873531cb0.js +0 -1
  312. package/.next/static/css/f7c4be1ceeb51306.css +0 -1
  313. /package/.next/static/{YoJNIqzdIUIjKGSlmOXAu → IEbCaCENisO9BsF2W9HBx}/_buildManifest.js +0 -0
  314. /package/.next/static/{YoJNIqzdIUIjKGSlmOXAu → IEbCaCENisO9BsF2W9HBx}/_ssgManifest.js +0 -0
@@ -1 +1 @@
1
- globalThis.__RSC_MANIFEST=(globalThis.__RSC_MANIFEST||{});globalThis.__RSC_MANIFEST["/page"]={"moduleLoading":{"prefix":"/_next/"},"ssrModuleMapping":{"27123":{"*":{"id":"81921","name":"*","chunks":[],"async":false}},"39247":{"*":{"id":"55100","name":"*","chunks":[],"async":false}},"56640":{"*":{"id":"87902","name":"*","chunks":[],"async":false}},"57121":{"*":{"id":"35421","name":"*","chunks":[],"async":false}},"61304":{"*":{"id":"60440","name":"*","chunks":[],"async":false}},"64777":{"*":{"id":"82265","name":"*","chunks":[],"async":false}},"74581":{"*":{"id":"61335","name":"*","chunks":[],"async":false}},"78616":{"*":{"id":"84342","name":"*","chunks":[],"async":false}},"86869":{"*":{"id":"74661","name":"*","chunks":[],"async":false}},"90484":{"*":{"id":"70664","name":"*","chunks":[],"async":false}}},"edgeSSRModuleMapping":{},"clientModules":{"/Volumes/1T 原装/项目研发/pi-web-QT-worktrees/beta/node_modules/next/dist/client/components/builtin/global-error.js":{"id":27123,"name":"*","chunks":[],"async":false},"/Volumes/1T 原装/项目研发/pi-web-QT-worktrees/beta/node_modules/next/dist/esm/client/components/builtin/global-error.js":{"id":27123,"name":"*","chunks":[],"async":false},"/Volumes/1T 原装/项目研发/pi-web-QT-worktrees/beta/node_modules/next/dist/client/components/client-page.js":{"id":61304,"name":"*","chunks":[],"async":false},"/Volumes/1T 原装/项目研发/pi-web-QT-worktrees/beta/node_modules/next/dist/esm/client/components/client-page.js":{"id":61304,"name":"*","chunks":[],"async":false},"/Volumes/1T 原装/项目研发/pi-web-QT-worktrees/beta/node_modules/next/dist/client/components/client-segment.js":{"id":78616,"name":"*","chunks":[],"async":false},"/Volumes/1T 原装/项目研发/pi-web-QT-worktrees/beta/node_modules/next/dist/esm/client/components/client-segment.js":{"id":78616,"name":"*","chunks":[],"async":false},"/Volumes/1T 原装/项目研发/pi-web-QT-worktrees/beta/node_modules/next/dist/client/components/http-access-fallback/error-boundary.js":{"id":64777,"name":"*","chunks":[],"async":false},"/Volumes/1T 原装/项目研发/pi-web-QT-worktrees/beta/node_modules/next/dist/esm/client/components/http-access-fallback/error-boundary.js":{"id":64777,"name":"*","chunks":[],"async":false},"/Volumes/1T 原装/项目研发/pi-web-QT-worktrees/beta/node_modules/next/dist/client/components/layout-router.js":{"id":57121,"name":"*","chunks":[],"async":false},"/Volumes/1T 原装/项目研发/pi-web-QT-worktrees/beta/node_modules/next/dist/esm/client/components/layout-router.js":{"id":57121,"name":"*","chunks":[],"async":false},"/Volumes/1T 原装/项目研发/pi-web-QT-worktrees/beta/node_modules/next/dist/client/components/render-from-template-context.js":{"id":74581,"name":"*","chunks":[],"async":false},"/Volumes/1T 原装/项目研发/pi-web-QT-worktrees/beta/node_modules/next/dist/esm/client/components/render-from-template-context.js":{"id":74581,"name":"*","chunks":[],"async":false},"/Volumes/1T 原装/项目研发/pi-web-QT-worktrees/beta/node_modules/next/dist/lib/framework/boundary-components.js":{"id":90484,"name":"*","chunks":[],"async":false},"/Volumes/1T 原装/项目研发/pi-web-QT-worktrees/beta/node_modules/next/dist/esm/lib/framework/boundary-components.js":{"id":90484,"name":"*","chunks":[],"async":false},"/Volumes/1T 原装/项目研发/pi-web-QT-worktrees/beta/node_modules/next/dist/lib/metadata/generate/icon-mark.js":{"id":86869,"name":"*","chunks":[],"async":false},"/Volumes/1T 原装/项目研发/pi-web-QT-worktrees/beta/node_modules/next/dist/esm/lib/metadata/generate/icon-mark.js":{"id":86869,"name":"*","chunks":[],"async":false},"/Volumes/1T 原装/项目研发/pi-web-QT-worktrees/beta/node_modules/katex/dist/katex.min.css":{"id":84559,"name":"*","chunks":["7177","static/chunks/app/layout-dd3541093bbacac2.js"],"async":false},"/Volumes/1T 原装/项目研发/pi-web-QT-worktrees/beta/app/globals.css":{"id":66872,"name":"*","chunks":["7177","static/chunks/app/layout-dd3541093bbacac2.js"],"async":false},"/Volumes/1T 原装/项目研发/pi-web-QT-worktrees/beta/node_modules/@fontsource/ia-writer-quattro/index.css":{"id":26408,"name":"*","chunks":["7177","static/chunks/app/layout-dd3541093bbacac2.js"],"async":false},"/Volumes/1T 原装/项目研发/pi-web-QT-worktrees/beta/node_modules/@fontsource/ia-writer-quattro/400-italic.css":{"id":8057,"name":"*","chunks":["7177","static/chunks/app/layout-dd3541093bbacac2.js"],"async":false},"/Volumes/1T 原装/项目研发/pi-web-QT-worktrees/beta/node_modules/@fontsource/ia-writer-quattro/700.css":{"id":35279,"name":"*","chunks":["7177","static/chunks/app/layout-dd3541093bbacac2.js"],"async":false},"/Volumes/1T 原装/项目研发/pi-web-QT-worktrees/beta/node_modules/@fontsource/ia-writer-quattro/700-italic.css":{"id":48276,"name":"*","chunks":["7177","static/chunks/app/layout-dd3541093bbacac2.js"],"async":false},"/Volumes/1T 原装/项目研发/pi-web-QT-worktrees/beta/node_modules/@fontsource/lilex/index.css":{"id":12043,"name":"*","chunks":["7177","static/chunks/app/layout-dd3541093bbacac2.js"],"async":false},"/Volumes/1T 原装/项目研发/pi-web-QT-worktrees/beta/components/AppShell.tsx":{"id":56640,"name":"*","chunks":["7330","static/chunks/d3ac728e-7964f816a1ca64e5.js","7037","static/chunks/7037-806bfd694238ac7a.js","8974","static/chunks/app/page-363fcc7cee78a7f1.js"],"async":false},"/Volumes/1T 原装/项目研发/pi-web-QT-worktrees/beta/hooks/useI18n.tsx":{"id":39247,"name":"*","chunks":["7330","static/chunks/d3ac728e-7964f816a1ca64e5.js","7037","static/chunks/7037-806bfd694238ac7a.js","8974","static/chunks/app/page-363fcc7cee78a7f1.js"],"async":false}},"entryCSSFiles":{"/Volumes/1T 原装/项目研发/pi-web-QT-worktrees/beta/":[],"/Volumes/1T 原装/项目研发/pi-web-QT-worktrees/beta/app/layout":[{"inlined":false,"path":"static/css/3790610024d16435.css"},{"inlined":false,"path":"static/css/f7c4be1ceeb51306.css"}],"/Volumes/1T 原装/项目研发/pi-web-QT-worktrees/beta/app/page":[]},"rscModuleMapping":{"8057":{"*":{"id":"17","name":"*","chunks":[],"async":false}},"12043":{"*":{"id":"47561","name":"*","chunks":[],"async":false}},"26408":{"*":{"id":"77222","name":"*","chunks":[],"async":false}},"27123":{"*":{"id":"95547","name":"*","chunks":[],"async":false}},"35279":{"*":{"id":"10289","name":"*","chunks":[],"async":false}},"39247":{"*":{"id":"73884","name":"*","chunks":[],"async":false}},"48276":{"*":{"id":"64388","name":"*","chunks":[],"async":false}},"56640":{"*":{"id":"35790","name":"*","chunks":[],"async":false}},"57121":{"*":{"id":"98099","name":"*","chunks":[],"async":false}},"61304":{"*":{"id":"15098","name":"*","chunks":[],"async":false}},"64777":{"*":{"id":"33859","name":"*","chunks":[],"async":false}},"66872":{"*":{"id":"82704","name":"*","chunks":[],"async":false}},"74581":{"*":{"id":"16237","name":"*","chunks":[],"async":false}},"78616":{"*":{"id":"47644","name":"*","chunks":[],"async":false}},"84559":{"*":{"id":"25319","name":"*","chunks":[],"async":false}},"86869":{"*":{"id":"36675","name":"*","chunks":[],"async":false}},"90484":{"*":{"id":"98562","name":"*","chunks":[],"async":false}}},"edgeRscModuleMapping":{}};
1
+ globalThis.__RSC_MANIFEST=(globalThis.__RSC_MANIFEST||{});globalThis.__RSC_MANIFEST["/page"]={"moduleLoading":{"prefix":"/_next/"},"ssrModuleMapping":{"27123":{"*":{"id":"81921","name":"*","chunks":[],"async":false}},"34642":{"*":{"id":"23556","name":"*","chunks":[],"async":false}},"39247":{"*":{"id":"55100","name":"*","chunks":[],"async":false}},"57121":{"*":{"id":"35421","name":"*","chunks":[],"async":false}},"61304":{"*":{"id":"60440","name":"*","chunks":[],"async":false}},"64777":{"*":{"id":"82265","name":"*","chunks":[],"async":false}},"74581":{"*":{"id":"61335","name":"*","chunks":[],"async":false}},"78616":{"*":{"id":"84342","name":"*","chunks":[],"async":false}},"86869":{"*":{"id":"74661","name":"*","chunks":[],"async":false}},"90484":{"*":{"id":"70664","name":"*","chunks":[],"async":false}}},"edgeSSRModuleMapping":{},"clientModules":{"/Volumes/1T 原装/项目研发/pi-web-QT/node_modules/next/dist/client/components/builtin/global-error.js":{"id":27123,"name":"*","chunks":[],"async":false},"/Volumes/1T 原装/项目研发/pi-web-QT/node_modules/next/dist/esm/client/components/builtin/global-error.js":{"id":27123,"name":"*","chunks":[],"async":false},"/Volumes/1T 原装/项目研发/pi-web-QT/node_modules/next/dist/client/components/client-page.js":{"id":61304,"name":"*","chunks":[],"async":false},"/Volumes/1T 原装/项目研发/pi-web-QT/node_modules/next/dist/esm/client/components/client-page.js":{"id":61304,"name":"*","chunks":[],"async":false},"/Volumes/1T 原装/项目研发/pi-web-QT/node_modules/next/dist/client/components/client-segment.js":{"id":78616,"name":"*","chunks":[],"async":false},"/Volumes/1T 原装/项目研发/pi-web-QT/node_modules/next/dist/esm/client/components/client-segment.js":{"id":78616,"name":"*","chunks":[],"async":false},"/Volumes/1T 原装/项目研发/pi-web-QT/node_modules/next/dist/client/components/http-access-fallback/error-boundary.js":{"id":64777,"name":"*","chunks":[],"async":false},"/Volumes/1T 原装/项目研发/pi-web-QT/node_modules/next/dist/esm/client/components/http-access-fallback/error-boundary.js":{"id":64777,"name":"*","chunks":[],"async":false},"/Volumes/1T 原装/项目研发/pi-web-QT/node_modules/next/dist/client/components/layout-router.js":{"id":57121,"name":"*","chunks":[],"async":false},"/Volumes/1T 原装/项目研发/pi-web-QT/node_modules/next/dist/esm/client/components/layout-router.js":{"id":57121,"name":"*","chunks":[],"async":false},"/Volumes/1T 原装/项目研发/pi-web-QT/node_modules/next/dist/client/components/render-from-template-context.js":{"id":74581,"name":"*","chunks":[],"async":false},"/Volumes/1T 原装/项目研发/pi-web-QT/node_modules/next/dist/esm/client/components/render-from-template-context.js":{"id":74581,"name":"*","chunks":[],"async":false},"/Volumes/1T 原装/项目研发/pi-web-QT/node_modules/next/dist/lib/framework/boundary-components.js":{"id":90484,"name":"*","chunks":[],"async":false},"/Volumes/1T 原装/项目研发/pi-web-QT/node_modules/next/dist/esm/lib/framework/boundary-components.js":{"id":90484,"name":"*","chunks":[],"async":false},"/Volumes/1T 原装/项目研发/pi-web-QT/node_modules/next/dist/lib/metadata/generate/icon-mark.js":{"id":86869,"name":"*","chunks":[],"async":false},"/Volumes/1T 原装/项目研发/pi-web-QT/node_modules/next/dist/esm/lib/metadata/generate/icon-mark.js":{"id":86869,"name":"*","chunks":[],"async":false},"/Volumes/1T 原装/项目研发/pi-web-QT/node_modules/katex/dist/katex.min.css":{"id":84559,"name":"*","chunks":["7177","static/chunks/app/layout-7b635840991e69cb.js"],"async":false},"/Volumes/1T 原装/项目研发/pi-web-QT/app/globals.css":{"id":66872,"name":"*","chunks":["7177","static/chunks/app/layout-7b635840991e69cb.js"],"async":false},"/Volumes/1T 原装/项目研发/pi-web-QT/node_modules/@fontsource/ia-writer-quattro/index.css":{"id":26408,"name":"*","chunks":["7177","static/chunks/app/layout-7b635840991e69cb.js"],"async":false},"/Volumes/1T 原装/项目研发/pi-web-QT/node_modules/@fontsource/ia-writer-quattro/400-italic.css":{"id":8057,"name":"*","chunks":["7177","static/chunks/app/layout-7b635840991e69cb.js"],"async":false},"/Volumes/1T 原装/项目研发/pi-web-QT/node_modules/@fontsource/ia-writer-quattro/700.css":{"id":35279,"name":"*","chunks":["7177","static/chunks/app/layout-7b635840991e69cb.js"],"async":false},"/Volumes/1T 原装/项目研发/pi-web-QT/node_modules/@fontsource/ia-writer-quattro/700-italic.css":{"id":48276,"name":"*","chunks":["7177","static/chunks/app/layout-7b635840991e69cb.js"],"async":false},"/Volumes/1T 原装/项目研发/pi-web-QT/node_modules/@fontsource/lilex/index.css":{"id":12043,"name":"*","chunks":["7177","static/chunks/app/layout-7b635840991e69cb.js"],"async":false},"/Volumes/1T 原装/项目研发/pi-web-QT/components/AppShell.tsx":{"id":34642,"name":"*","chunks":["7330","static/chunks/d3ac728e-7964f816a1ca64e5.js","6775","static/chunks/6775-ca78abf077bc00e0.js","8974","static/chunks/app/page-97c1e982f6b8b1fc.js"],"async":false},"/Volumes/1T 原装/项目研发/pi-web-QT/hooks/useI18n.tsx":{"id":39247,"name":"*","chunks":["7330","static/chunks/d3ac728e-7964f816a1ca64e5.js","6775","static/chunks/6775-ca78abf077bc00e0.js","8974","static/chunks/app/page-97c1e982f6b8b1fc.js"],"async":false}},"entryCSSFiles":{"/Volumes/1T 原装/项目研发/pi-web-QT/":[],"/Volumes/1T 原装/项目研发/pi-web-QT/app/layout":[{"inlined":false,"path":"static/css/3790610024d16435.css"},{"inlined":false,"path":"static/css/01112cb2bf6934c5.css"}],"/Volumes/1T 原装/项目研发/pi-web-QT/app/page":[]},"rscModuleMapping":{"8057":{"*":{"id":"17","name":"*","chunks":[],"async":false}},"12043":{"*":{"id":"47561","name":"*","chunks":[],"async":false}},"26408":{"*":{"id":"77222","name":"*","chunks":[],"async":false}},"27123":{"*":{"id":"95547","name":"*","chunks":[],"async":false}},"34642":{"*":{"id":"35790","name":"*","chunks":[],"async":false}},"35279":{"*":{"id":"10289","name":"*","chunks":[],"async":false}},"39247":{"*":{"id":"73884","name":"*","chunks":[],"async":false}},"48276":{"*":{"id":"64388","name":"*","chunks":[],"async":false}},"57121":{"*":{"id":"98099","name":"*","chunks":[],"async":false}},"61304":{"*":{"id":"15098","name":"*","chunks":[],"async":false}},"64777":{"*":{"id":"33859","name":"*","chunks":[],"async":false}},"66872":{"*":{"id":"82704","name":"*","chunks":[],"async":false}},"74581":{"*":{"id":"16237","name":"*","chunks":[],"async":false}},"78616":{"*":{"id":"47644","name":"*","chunks":[],"async":false}},"84559":{"*":{"id":"25319","name":"*","chunks":[],"async":false}},"86869":{"*":{"id":"36675","name":"*","chunks":[],"async":false}},"90484":{"*":{"id":"98562","name":"*","chunks":[],"async":false}}},"edgeRscModuleMapping":{}};
@@ -33,58 +33,58 @@
33
33
  "/icon.ico/route": "app/icon.ico/route.js",
34
34
  "/icon.png/route": "app/icon.png/route.js",
35
35
  "/icon.svg/route": "app/icon.svg/route.js",
36
+ "/api/agent/[id]/bash-output/route": "app/api/agent/[id]/bash-output/route.js",
37
+ "/api/agent/running/events/route": "app/api/agent/running/events/route.js",
36
38
  "/api/agent/running/route": "app/api/agent/running/route.js",
39
+ "/api/agent/[id]/events/route": "app/api/agent/[id]/events/route.js",
37
40
  "/api/auth/all-providers/route": "app/api/auth/all-providers/route.js",
38
- "/api/agent/[id]/bash-output/route": "app/api/agent/[id]/bash-output/route.js",
39
- "/api/auth/api-key/[provider]/route": "app/api/auth/api-key/[provider]/route.js",
40
41
  "/api/auth/combined/route": "app/api/auth/combined/route.js",
41
- "/api/agent/[id]/events/route": "app/api/agent/[id]/events/route.js",
42
- "/api/auth/providers/route": "app/api/auth/providers/route.js",
42
+ "/api/auth/api-key/[provider]/route": "app/api/auth/api-key/[provider]/route.js",
43
43
  "/api/auth/logout/[provider]/route": "app/api/auth/logout/[provider]/route.js",
44
+ "/api/auth/providers/route": "app/api/auth/providers/route.js",
44
45
  "/api/backup/export/route": "app/api/backup/export/route.js",
45
- "/api/agent/running/events/route": "app/api/agent/running/events/route.js",
46
+ "/api/auth/login/[provider]/route": "app/api/auth/login/[provider]/route.js",
46
47
  "/api/events/route": "app/api/events/route.js",
47
48
  "/api/deepseek/balance/route": "app/api/deepseek/balance/route.js",
48
49
  "/api/features/route": "app/api/features/route.js",
49
- "/api/git/push/route": "app/api/git/push/route.js",
50
+ "/api/backup/import/route": "app/api/backup/import/route.js",
50
51
  "/api/git/diff/route": "app/api/git/diff/route.js",
51
- "/api/auth/login/[provider]/route": "app/api/auth/login/[provider]/route.js",
52
+ "/api/git/push/route": "app/api/git/push/route.js",
52
53
  "/api/git/status/route": "app/api/git/status/route.js",
53
- "/api/logs/route": "app/api/logs/route.js",
54
54
  "/api/git/stash/route": "app/api/git/stash/route.js",
55
+ "/api/logs/route": "app/api/logs/route.js",
55
56
  "/api/mcp/route": "app/api/mcp/route.js",
56
- "/api/backup/import/route": "app/api/backup/import/route.js",
57
- "/api/models-config/builtin/route": "app/api/models-config/builtin/route.js",
58
57
  "/api/models-config/catalog/route": "app/api/models-config/catalog/route.js",
59
58
  "/api/models-config/route": "app/api/models-config/route.js",
60
- "/api/models-config/discover/route": "app/api/models-config/discover/route.js",
59
+ "/api/models-config/builtin/route": "app/api/models-config/builtin/route.js",
60
+ "/api/models-config/test/route": "app/api/models-config/test/route.js",
61
61
  "/api/opencode-zen/external/key/route": "app/api/opencode-zen/external/key/route.js",
62
62
  "/api/modes/route": "app/api/modes/route.js",
63
- "/api/models-config/test/route": "app/api/models-config/test/route.js",
63
+ "/api/models/route": "app/api/models/route.js",
64
64
  "/api/opencode-zen/import/route": "app/api/opencode-zen/import/route.js",
65
65
  "/api/opencode-zen/key/route": "app/api/opencode-zen/key/route.js",
66
+ "/api/models-config/discover/route": "app/api/models-config/discover/route.js",
67
+ "/api/opencode-zen/test/route": "app/api/opencode-zen/test/route.js",
66
68
  "/api/opencode-zen/external/test/route": "app/api/opencode-zen/external/test/route.js",
67
69
  "/api/opencode-zen/route": "app/api/opencode-zen/route.js",
68
- "/api/opencode-zen/test/route": "app/api/opencode-zen/test/route.js",
69
- "/api/models/route": "app/api/models/route.js",
70
70
  "/api/project-trust/route": "app/api/project-trust/route.js",
71
71
  "/api/proxy/route": "app/api/proxy/route.js",
72
72
  "/api/proxy/test/route": "app/api/proxy/test/route.js",
73
- "/api/settings/title-model/route": "app/api/settings/title-model/route.js",
74
73
  "/api/sessions/[id]/export/route": "app/api/sessions/[id]/export/route.js",
74
+ "/api/settings/title-model/route": "app/api/settings/title-model/route.js",
75
75
  "/api/skills/install/route": "app/api/skills/install/route.js",
76
76
  "/api/skills/check/route": "app/api/skills/check/route.js",
77
- "/api/skills/route": "app/api/skills/route.js",
78
- "/api/skills/search/route": "app/api/skills/search/route.js",
79
77
  "/api/plugins/route": "app/api/plugins/route.js",
78
+ "/api/skills/route": "app/api/skills/route.js",
80
79
  "/api/snippets/[id]/route": "app/api/snippets/[id]/route.js",
81
80
  "/api/snippets/route": "app/api/snippets/route.js",
81
+ "/api/skills/search/route": "app/api/skills/search/route.js",
82
82
  "/api/skills/update/route": "app/api/skills/update/route.js",
83
- "/api/tasks/[id]/changed-files/route": "app/api/tasks/[id]/changed-files/route.js",
84
83
  "/api/subagents/agents/[name]/route": "app/api/subagents/agents/[name]/route.js",
85
- "/api/vision-config/route": "app/api/vision-config/route.js",
84
+ "/api/tasks/[id]/changed-files/route": "app/api/tasks/[id]/changed-files/route.js",
86
85
  "/api/subagents/route": "app/api/subagents/route.js",
87
- "/api/usage/route": "app/api/usage/route.js",
88
86
  "/api/tasks/events/route": "app/api/tasks/events/route.js",
87
+ "/api/vision-config/route": "app/api/vision-config/route.js",
88
+ "/api/usage/route": "app/api/usage/route.js",
89
89
  "/page": "app/page.js"
90
90
  }
@@ -1 +1 @@
1
- "use strict";exports.id=2303,exports.ids=[2303],exports.modules={8102:(a,b,c)=>{c.d(b,{$:()=>g});var d=c(55511),e=c(29021),f=c(33873);function g(a,b){let c=(0,f.dirname)(a),g=(0,f.join)(c,`.${(0,f.basename)(a)}-${(0,d.randomUUID)()}.tmp`),h=!1;try{(0,e.writeFileSync)(g,b,{encoding:"utf8",flag:"wx",mode:384,flush:!0}),(0,e.renameSync)(g,a)}catch(a){throw h=!0,a}finally{try{(0,e.unlinkSync)(g)}catch(a){if("ENOENT"!==a.code&&!h)throw a}}}},11301:(a,b,c)=>{c.a(a,async(a,d)=>{try{c.d(b,{hH:()=>s,oH:()=>r,wF:()=>q});var e=c(73024),f=c(76760),g=c(75430),h=c(8102),i=a([g]);g=(i.then?(await i)():i)[0];let t=new Set([400,401,403,404,408,409,413,429,500,502,503,504]);function j(){return(0,f.join)((0,g.getAgentDir)(),"pi-web-error-log.json")}function k(){globalThis.__piErrorLogState||(globalThis.__piErrorLogState={loaded:!1,entries:[]});let a=globalThis.__piErrorLogState;if(!a.loaded){a.loaded=!0;try{if((0,e.existsSync)(j())){let b=JSON.parse((0,e.readFileSync)(j(),"utf8"));Array.isArray(b)&&(a.entries=b.filter(l).slice(-500))}}catch{a.entries=[]}}return a}function l(a){return!(!a||"object"!=typeof a||Array.isArray(a))&&"string"==typeof a.id&&"string"==typeof a.timestamp&&("error"===a.level||"warning"===a.level||"info"===a.level)&&"string"==typeof a.source&&"string"==typeof a.message}function m(a){return a.replace(/https?:\/\/[^\s/@]+:[^\s/@]+@/gi,"https://[redacted]@").replace(/Bearer\s+[A-Za-z0-9._~+/=-]+/gi,"Bearer [redacted]").replace(/\bsk-[A-Za-z0-9_-]{8,}\b/g,"sk-[redacted]").replace(/\b(?:oc|opencode|zen)[_-]?[A-Za-z0-9._~-]{12,}\b/gi,"[key-redacted]").replace(/((?:api[_-]?key|token|password|secret)\s*[:=]\s*)([^\s,;]+)/gi,"$1[redacted]")}function n(a){return a.length>2e4?`${a.slice(0,2e4)}…`:a}function o(a){let b=a.match(/\bHTTP\s+(\d{3})\b|\bstatus(?:\s+code)?\s*[:=]?\s*(\d{3})\b|\b(4\d{2}|5\d{2})\b/i),c=Number(b?.[1]??b?.[2]??b?.[3]);return t.has(c)?c:void 0}function p(a){try{(0,h.$)(j(),JSON.stringify(a,null,2))}catch{}}function q(a){let b=k(),c=n(m(a.message.trim())),d=a.details?n(m(a.details)):void 0,e={id:`${Date.now().toString(36)}-${Math.random().toString(36).slice(2,8)}`,timestamp:new Date().toISOString(),level:a.level??"error",source:a.source??"unknown",...void 0!==a.statusCode?{statusCode:a.statusCode}:void 0!==o(c)?{statusCode:o(c)}:{},...a.provider?{provider:a.provider}:{},...a.model?{model:a.model}:{},...a.sessionId?{sessionId:a.sessionId}:{},message:c||"Unknown error",...d?{details:d}:{}};return b.entries.push(e),b.entries.length>500&&b.entries.splice(0,b.entries.length-500),p(b.entries),e}function r(a={}){let b=a.query?.trim().toLocaleLowerCase(),c=Math.min(Math.max(a.limit??200,1),500);return k().entries.filter(b=>void 0===a.statusCode||b.statusCode===a.statusCode).filter(b=>!a.level||b.level===a.level).filter(b=>!a.source||b.source===a.source).filter(a=>!b||[a.message,a.details,a.provider,a.model,a.source].filter(Boolean).some(a=>a.toLocaleLowerCase().includes(b))).slice().reverse().slice(0,c)}function s(){k().entries=[],p([])}d()}catch(a){d(a)}})},62303:(a,b,c)=>{c.a(a,async(a,d)=>{try{c.d(b,{DW:()=>x,KT:()=>C,MO:()=>y,Tn:()=>L,ZX:()=>F,av:()=>M,gS:()=>K,iO:()=>A,py:()=>J,qk:()=>m,rY:()=>n,tJ:()=>N,xl:()=>I,zB:()=>z});var e=c(73024),f=c(76760),g=c(47774),h=c(75430),i=c(8102),j=c(11301),k=a([h,j]);function l(a=Date.now()){let b=new Date(a);return Date.UTC(b.getUTCFullYear(),b.getUTCMonth(),b.getUTCDate()+1,0,0,0)}[h,j]=k.then?(await k)():k;let N=["opencode"];function m(a){return"opencode"===a||"opencode-go"===a}function n(a){return globalThis.__piOpenCodeZenSwitchListeners??=new Set,globalThis.__piOpenCodeZenSwitchListeners.add(a),()=>globalThis.__piOpenCodeZenSwitchListeners?.delete(a)}function o(a){for(let b of globalThis.__piOpenCodeZenSwitchListeners??[])b(a)}function p(){return(0,f.join)((0,h.getAgentDir)(),"opencode-zen.json")}function q(){return{protocol:"http",enabled:!1,url:"",port:0,username:"",password:""}}function r(){return{accounts:[],autoSwitch:!0,cooldownMs:6e4,externalAccess:{enabled:!1,port:7474,apiKey:"",freeModelsOnly:!0}}}function s(a,b){let c=t(a)?a:{},d=Number(c.port);return{enabled:!0===c.enabled,port:Number.isInteger(d)&&d>0&&d<=65535?d:b.port,apiKey:"string"==typeof c.apiKey?c.apiKey.trim():b.apiKey,freeModelsOnly:!1!==c.freeModelsOnly}}function t(a){return"object"==typeof a&&null!==a&&!Array.isArray(a)}function u(a,b){if(!t(a))return null;let c="string"==typeof a.apiKey?a.apiKey.trim():"";if(!c)return null;let d="string"==typeof a.id&&a.id.trim()?a.id.trim():`account-${b+1}`;return{id:d,note:"string"==typeof a.note&&a.note.trim()?a.note.trim():d,apiKey:c,enabled:!1!==a.enabled,proxy:function(a){let b=t(a)?a:{},c=Number(b.port),d="string"==typeof b.url?b.url.trim():"",e="string"==typeof b.protocol?b.protocol.toLowerCase():void 0,f="https"===e||"socks5"===e?e:"http";if(d&&(void 0===e||"http"===e||"https"===e||"socks5"===e))try{let a=d.match(/^([a-z][a-z0-9+.-]*):\/\//i)?.[1]?.toLowerCase();("socks5"===a||"https"===a)&&(f=a)}catch{}if(d)try{let a=new URL(/^(https?|socks5):\/\//i.test(d)?d:`http://${d}`);d="http:"!==a.protocol&&"https:"!==a.protocol&&"socks5:"!==a.protocol||a.username||a.password||"/"!==a.pathname&&""!==a.pathname||a.search||a.hash?"":`${a.protocol}//${a.hostname}`}catch{d=""}return{protocol:f,enabled:!1!==b.enabled,url:d,port:Number.isInteger(c)&&c>0&&c<=65535?c:0,username:"string"==typeof b.username?b.username:"",password:"string"==typeof b.password?b.password:""}}(a.proxy)}}function v(a){let b=t(a)?a:{},c=Array.isArray(b.accounts)?b.accounts.map(u).filter(a=>null!==a):[],d=Number(b.cooldownMs),e=r().externalAccess;return{accounts:c,autoSwitch:!1!==b.autoSwitch,cooldownMs:Number.isFinite(d)?Math.min(Math.max(d,0),6e5):6e4,externalAccess:s(b.externalAccess,e)}}function w(){return globalThis.__piOpenCodeZenState||(globalThis.__piOpenCodeZenState={config:function(){try{if((0,e.existsSync)(p()))return v(JSON.parse((0,e.readFileSync)(p(),"utf8")));let a=(0,f.join)((0,h.getAgentDir)(),"auth.json");if((0,e.existsSync)(a)){let b=JSON.parse((0,e.readFileSync)(a,"utf8")),c=t(b.opencode)?b.opencode:null,d=c&&"string"==typeof c.key?c.key.trim():"";if(d)return v({accounts:[{id:"legacy-opencode",note:"默认 OpenCode Zen",apiKey:d,enabled:!0,proxy:q()}]})}return r()}catch{return r()}}(),activeIndex:0,cooldownUntil:new Map,dispatchers:new Map}),globalThis.__piOpenCodeZenState}function x(){return structuredClone(w().config)}function y(){return w().config.accounts.find(a=>a.enabled&&a.apiKey)?.apiKey??null}async function z(a){let b=y();if(b)for(let c of(await Promise.allSettled(N.map(c=>a.setRuntimeApiKey(c,b)))))"rejected"===c.status&&(0,j.wF)({level:"warning",source:"opencode-zen-runtime",provider:"opencode",message:`设置 OpenCode Zen runtime Key 失败:${c.reason instanceof Error?c.reason.message:String(c.reason)}`})}function A(a,b){var c;let d,g=w();for(let c of(g.config=v(a),g.activeIndex=b?Math.max(0,g.config.accounts.findIndex(a=>a.id===b)):0,g.cooldownUntil.clear(),g.dispatchers.values()))c.close().catch(()=>{});g.dispatchers.clear(),c=g.config,d=p(),(0,e.mkdirSync)((0,f.dirname)(d),{recursive:!0,mode:448}),(0,i.$)(d,JSON.stringify(c,null,2))}function B(a){return a.length<=8?"••••••••":`${a.slice(0,4)}••••${a.slice(-4)}`}function C(){let a=w(),b=a.config.accounts[a.activeIndex],c=a.config.externalAccess;return{accounts:a.config.accounts.map(a=>({id:a.id,note:a.note,enabled:a.enabled,apiKeyMasked:B(a.apiKey),hasApiKey:!!a.apiKey,proxy:{protocol:a.proxy.protocol,enabled:a.proxy.enabled,url:a.proxy.url,port:a.proxy.port,username:a.proxy.username,password:"",hasPassword:!!a.proxy.password}})),autoSwitch:a.config.autoSwitch,cooldownMs:a.config.cooldownMs,externalAccess:{enabled:c.enabled,port:c.port,freeModelsOnly:c.freeModelsOnly,apiKeyMasked:B(c.apiKey),hasApiKey:!!c.apiKey,status:globalThis.__piOpenCodeZenExternalStatus??{running:!1}},...b?{activeAccountId:b.id}:{},...a.lastSwitch?{lastSwitch:a.lastSwitch}:{}}}function D(a){if(!a.enabled||!a.url||!a.port)return null;if(!Number.isInteger(a.port)||a.port<1||a.port>65535)throw Error("代理端口无效,必须为 1-65535 的整数");let b=a.url.trim();if(b.includes("://")&&!/^(https?|socks5):\/\//i.test(b))throw Error("OpenCode Zen 账号代理仅支持 http/https/socks5");/^(https?|socks5):\/\//i.test(b)||(b=`http://${b}`);let c=new URL(b);if(c.username||c.password||"/"!==c.pathname||c.search||c.hash)throw Error("代理 URL 只允许主机名,用户名和密码请填写独立字段");if(c.port=String(a.port),a.username&&(c.username=a.username),a.password&&(c.password=a.password),"http:"!==c.protocol&&"https:"!==c.protocol&&"socks5:"!==c.protocol)throw Error("OpenCode Zen 账号代理仅支持 http/https/socks5");return c.toString()}function E(a,b){return"socks5"===b?new g.EV(a):new g.kT(a)}async function F(a){let b=D(a);if(!b)return{ok:!0,latencyMs:0};let c=E(b,a.protocol),d=Date.now();try{let a=await (0,g.Em)("https://opencode.ai/zen/v1/models",{dispatcher:c,headers:{Accept:"application/json","User-Agent":"pi-web-opencode-zen-test"},headersTimeout:15e3,bodyTimeout:15e3});return await a.body.text(),{ok:a.statusCode<500,status:a.statusCode,latencyMs:Date.now()-d}}catch(a){return{ok:!1,latencyMs:Date.now()-d,error:(a instanceof Error?a.message:String(a)).replace(/https?:\/\/[^\s/@]+:[^\s/@]+@/gi,"[proxy]@").replace(/(password|pass|secret|token|key)\s*[:=]\s*[^\s,;]+/gi,"$1=[redacted]")}}finally{await c.close().catch(()=>{})}}function G(a,b=new Set,c=!1){let d=Date.now(),e=a.config.accounts.length;if(0===e)return null;let f=null;for(let c=0;c<e;c++){let g=(a.activeIndex+c)%e,h=a.config.accounts[g];if(!h.enabled||!h.apiKey||b.has(h.id))continue;let i=a.cooldownUntil.get(h.id),j=i?.until??0;if(j>d){i?.daily||f&&!(j<f.until)||(f={account:h,index:g,until:j});continue}return a.activeIndex=(g+1)%e,h}return c&&f?(a.activeIndex=(f.index+1)%e,f.account):null}async function H(a,b){let c=b?.body;if(null!==c){if(void 0===c&&a instanceof Request&&null!==a.body)try{return await a.clone().arrayBuffer()}catch{return}if(void 0!==c&&("string"==typeof c||c instanceof ArrayBuffer||ArrayBuffer.isView(c)||c instanceof Blob))return c}}function I(a=globalThis.fetch.bind(globalThis),b,c){let d=c?{config:v(c),activeIndex:0,cooldownUntil:new Map,dispatchers:new Map}:w();return async(c,e)=>{let f;if(!function(a){try{let b="string"==typeof a||a instanceof URL?a.toString():a.url;return"opencode.ai"===new URL(b).hostname}catch{return!1}}(c))return a(c,e);let h=d.config.accounts.filter(a=>a.enabled&&a.apiKey);if(0===h.length)return new Response("OpenCode Zen accounts are unavailable",{status:503});let i=async b=>{let f,h,i=(f=new Headers(c instanceof Request?c.headers:void 0),e?.headers&&new Headers(e.headers).forEach((a,b)=>f.set(b,a)),f.set("authorization",`Bearer ${b.apiKey}`),h=function(a,b){let c=D(b.proxy);if(!c)return;let d=a.dispatchers.get(b.id);if(d)return d;let e=E(c,b.proxy.protocol);return a.dispatchers.set(b.id,e),e}(d,b),{...e,...c instanceof Request&&e?.method===void 0?{method:c.method}:{},headers:f,...void 0!==k?{body:k}:{},...h?{dispatcher:h}:{}});return i.dispatcher?await (0,g.hd)("string"==typeof c||c instanceof URL?c.toString():c.url,i):await a(c,i)},k=await H(c,e),m=!(c instanceof Request?null!==c.body:e?.body!==void 0&&null!==e.body)||void 0!==k,n=new Set,p=G(d,n)??G(d,n,!0);if(!p){let a=1/0;for(let b of d.cooldownUntil.values())b.until<a&&(a=b.until);let b=Number.isFinite(a)?Math.max(1,Math.ceil((a-Date.now())/1e3)):Math.ceil(d.config.cooldownMs/1e3);return new Response("OpenCode Zen accounts are cooling down",{status:503,headers:{"Retry-After":String(b)}})}let q=null,r=d.config.autoSwitch&&m?Math.min(Math.max(h.length,1),3):1;for(let a=0;a<r&&p;a++){n.add(p.id);let c=await i(p);if(429!==c.status||!d.config.autoSwitch)return c.ok&&(d.lastSuccessId=p.id),c.ok&&f&&o({sessionId:b,from:f,to:p.note,statusCode:429}),c;let e=await c.arrayBuffer();q=new Response(e,{status:c.status,statusText:c.statusText,headers:c.headers});let g=p;if(d.cooldownUntil.set(g.id,{until:l(),daily:!0}),a===r-1||!(p=G(d,n,!0)))break;d.lastSwitch={timestamp:new Date().toISOString(),from:g.note,to:p.note,statusCode:429},f=g.note,(0,j.wF)({level:"info",source:"opencode-zen-switch",provider:"opencode",message:`OpenCode Zen 429,已从 ${g.note} 切换到 ${p.note}`})}if(q&&d.config.autoSwitch&&n.size>0){let a=Date.now()+1e4;for(let b of n){let c=d.cooldownUntil.get(b);c&&!c.daily&&c.until>a&&d.cooldownUntil.set(b,{until:a,daily:!1})}}if(q&&d.config.autoSwitch&&m&&d.lastSuccessId&&!n.has(d.lastSuccessId)){let a=d.config.accounts.find(a=>a.id===d.lastSuccessId&&a.enabled&&a.apiKey&&!d.cooldownUntil.get(a.id)?.daily);if(a){n.add(a.id),(0,j.wF)({level:"info",source:"opencode-zen-switch",provider:"opencode",message:`OpenCode Zen 全败后回退最近成功账号 ${a.note}`});let c=await i(a);if(429!==c.status)return c.ok&&(d.activeIndex=Math.max(0,d.config.accounts.findIndex(b=>b.id===a.id)),d.lastSuccessId=a.id,f&&o({sessionId:b,from:f,to:a.note,statusCode:429})),c;let e=await c.arrayBuffer();q=new Response(e,{status:c.status,statusText:c.statusText,headers:c.headers}),d.cooldownUntil.set(a.id,{until:l(),daily:!0})}}return q??new Response("OpenCode Zen accounts are unavailable",{status:503})}}function J(a){return w().config.accounts.find(b=>b.id===a)?.apiKey??null}function K(a){return w().config.accounts.find(b=>b.id===a)?.proxy??null}function L(a){let b=x();if(!t(a))return b;let c=(Array.isArray(a.accounts)?a.accounts:b.accounts).map((a,c)=>{let d=t(a)?a:{},e="string"==typeof d.id&&d.id.trim()?d.id.trim():`account-${c+1}`,f=b.accounts.find(a=>a.id===e),g=f?.proxy??q(),h=t(d.proxy)?d.proxy:{};return{id:e,note:"string"==typeof d.note&&d.note.trim()?d.note.trim():f?.note??e,apiKey:"string"==typeof d.apiKey&&d.apiKey.trim()?d.apiKey.trim():f?.apiKey??"",enabled:!1!==d.enabled,proxy:{protocol:"http"===h.protocol||"https"===h.protocol||"socks5"===h.protocol?h.protocol:g.protocol,enabled:"boolean"==typeof h.enabled?h.enabled:g.enabled,url:"string"==typeof h.url?h.url.trim():g.url,port:Number.isInteger(Number(h.port))?Number(h.port):g.port,username:"string"==typeof h.username?h.username:g.username,password:"string"==typeof h.password&&h.password?h.password:g.password}}}).filter(a=>a.apiKey),d=t(a.externalAccess)?a.externalAccess:{},e=s({enabled:"boolean"==typeof d.enabled?d.enabled:b.externalAccess.enabled,port:Number.isInteger(Number(d.port))?Number(d.port):b.externalAccess.port,apiKey:"string"==typeof d.apiKey&&d.apiKey.trim()?d.apiKey.trim():b.externalAccess.apiKey,freeModelsOnly:"boolean"==typeof d.freeModelsOnly?d.freeModelsOnly:b.externalAccess.freeModelsOnly},b.externalAccess);return v({accounts:c,autoSwitch:"boolean"==typeof a.autoSwitch?a.autoSwitch:b.autoSwitch,cooldownMs:"number"==typeof a.cooldownMs?a.cooldownMs:b.cooldownMs,externalAccess:e})}function M(a){let b=x(),c=function(a){let b=[];for(let[c,d]of a.split(/\r?\n/).entries()){let a=d.trim();if(!a)continue;let e=a.indexOf("-");if(e<=0||e===a.length-1)throw Error(`第 ${c+1} 行格式错误:需要 账号-apikey`);let f=a.slice(0,e).trim(),g=a.slice(e+1).trim();if(!f||!g)throw Error(`第 ${c+1} 行账号或 API Key 为空`);b.push({note:f,apiKey:g})}return b}(a),d=[...b.accounts],e=w(),f=e.config.accounts[e.activeIndex]?.id;for(let a of c){let b=d.find(b=>b.apiKey===a.apiKey);if(b){b.note!==a.note&&(b.note=a.note);continue}d.push({id:`account-${Date.now().toString(36)}-${d.length}`,note:a.note,apiKey:a.apiKey,enabled:!0,proxy:q()})}return A({...b,accounts:d},f),C()}d()}catch(a){d(a)}})}};
1
+ "use strict";exports.id=2303,exports.ids=[2303],exports.modules={8102:(a,b,c)=>{c.d(b,{$:()=>g});var d=c(55511),e=c(29021),f=c(33873);function g(a,b){let c=(0,f.dirname)(a),g=(0,f.join)(c,`.${(0,f.basename)(a)}-${(0,d.randomUUID)()}.tmp`),h=!1;try{(0,e.writeFileSync)(g,b,{encoding:"utf8",flag:"wx",mode:384,flush:!0}),(0,e.renameSync)(g,a)}catch(a){throw h=!0,a}finally{try{(0,e.unlinkSync)(g)}catch(a){if("ENOENT"!==a.code&&!h)throw a}}}},11301:(a,b,c)=>{c.a(a,async(a,d)=>{try{c.d(b,{hH:()=>s,oH:()=>r,wF:()=>q});var e=c(73024),f=c(76760),g=c(75430),h=c(8102),i=a([g]);g=(i.then?(await i)():i)[0];let t=new Set([400,401,403,404,408,409,413,429,500,502,503,504]);function j(){return(0,f.join)((0,g.getAgentDir)(),"pi-web-error-log.json")}function k(){globalThis.__piErrorLogState||(globalThis.__piErrorLogState={loaded:!1,entries:[]});let a=globalThis.__piErrorLogState;if(!a.loaded){a.loaded=!0;try{if((0,e.existsSync)(j())){let b=JSON.parse((0,e.readFileSync)(j(),"utf8"));Array.isArray(b)&&(a.entries=b.filter(l).slice(-500))}}catch{a.entries=[]}}return a}function l(a){return!(!a||"object"!=typeof a||Array.isArray(a))&&"string"==typeof a.id&&"string"==typeof a.timestamp&&("error"===a.level||"warning"===a.level||"info"===a.level)&&"string"==typeof a.source&&"string"==typeof a.message}function m(a){return a.replace(/https?:\/\/[^\s/@]+:[^\s/@]+@/gi,"https://[redacted]@").replace(/Bearer\s+[A-Za-z0-9._~+/=-]+/gi,"Bearer [redacted]").replace(/\bsk-[A-Za-z0-9_-]{8,}\b/g,"sk-[redacted]").replace(/\b(?:oc|opencode|zen)[_-]?[A-Za-z0-9._~-]{12,}\b/gi,"[key-redacted]").replace(/((?:api[_-]?key|token|password|secret)\s*[:=]\s*)([^\s,;]+)/gi,"$1[redacted]")}function n(a){return a.length>2e4?`${a.slice(0,2e4)}…`:a}function o(a){let b=a.match(/\bHTTP\s+(\d{3})\b|\bstatus(?:\s+code)?\s*[:=]?\s*(\d{3})\b|\b(4\d{2}|5\d{2})\b/i),c=Number(b?.[1]??b?.[2]??b?.[3]);return t.has(c)?c:void 0}function p(a){try{(0,h.$)(j(),JSON.stringify(a,null,2))}catch{}}function q(a){let b=k(),c=n(m(a.message.trim())),d=a.details?n(m(a.details)):void 0,e={id:`${Date.now().toString(36)}-${Math.random().toString(36).slice(2,8)}`,timestamp:new Date().toISOString(),level:a.level??"error",source:a.source??"unknown",...void 0!==a.statusCode?{statusCode:a.statusCode}:void 0!==o(c)?{statusCode:o(c)}:{},...a.provider?{provider:a.provider}:{},...a.model?{model:a.model}:{},...a.sessionId?{sessionId:a.sessionId}:{},message:c||"Unknown error",...d?{details:d}:{}};return b.entries.push(e),b.entries.length>500&&b.entries.splice(0,b.entries.length-500),p(b.entries),e}function r(a={}){let b=a.query?.trim().toLocaleLowerCase(),c=Math.min(Math.max(a.limit??200,1),500);return k().entries.filter(b=>void 0===a.statusCode||b.statusCode===a.statusCode).filter(b=>!a.level||b.level===a.level).filter(b=>!a.source||b.source===a.source).filter(a=>!b||[a.message,a.details,a.provider,a.model,a.source].filter(Boolean).some(a=>a.toLocaleLowerCase().includes(b))).slice().reverse().slice(0,c)}function s(){k().entries=[],p([])}d()}catch(a){d(a)}})},62303:(a,b,c)=>{c.a(a,async(a,d)=>{try{c.d(b,{DW:()=>A,KT:()=>F,MO:()=>B,Tn:()=>O,ZX:()=>I,av:()=>P,gS:()=>N,iO:()=>D,py:()=>M,qk:()=>o,rY:()=>p,tJ:()=>Q,xl:()=>L,zB:()=>C});var e=c(73024),f=c(76760),g=c(47774),h=c(75430),i=c(8102),j=c(11301),k=a([h,j]);function l(a=Date.now()){let b=new Date(a);return Date.UTC(b.getUTCFullYear(),b.getUTCMonth(),b.getUTCDate()+1,0,0,0)}function m(){return(0,f.join)((0,h.getAgentDir)(),"opencode-zen-state.json")}function n(a){try{let b={activeIndex:a.activeIndex,...a.lastSuccessId?{lastSuccessId:a.lastSuccessId}:{},...a.lastSwitch?{lastSwitch:a.lastSwitch}:{},cooldownUntil:Object.fromEntries(a.cooldownUntil),updatedAt:new Date().toISOString()};(0,i.$)(m(),JSON.stringify(b,null,2))}catch{}}[h,j]=k.then?(await k)():k;let Q=["opencode"];function o(a){return"opencode"===a||"opencode-go"===a}function p(a){return globalThis.__piOpenCodeZenSwitchListeners??=new Set,globalThis.__piOpenCodeZenSwitchListeners.add(a),()=>globalThis.__piOpenCodeZenSwitchListeners?.delete(a)}function q(a){for(let b of globalThis.__piOpenCodeZenSwitchListeners??[])b(a)}function r(){return(0,f.join)((0,h.getAgentDir)(),"opencode-zen.json")}function s(){return{protocol:"http",enabled:!1,url:"",port:0,username:"",password:""}}function t(){return{accounts:[],autoSwitch:!0,cooldownMs:6e4,externalAccess:{enabled:!1,port:7474,apiKey:"",freeModelsOnly:!0}}}function u(a,b){let c=v(a)?a:{},d=Number(c.port);return{enabled:!0===c.enabled,port:Number.isInteger(d)&&d>0&&d<=65535?d:b.port,apiKey:"string"==typeof c.apiKey?c.apiKey.trim():b.apiKey,freeModelsOnly:!1!==c.freeModelsOnly}}function v(a){return"object"==typeof a&&null!==a&&!Array.isArray(a)}function w(a,b){if(!v(a))return null;let c="string"==typeof a.apiKey?a.apiKey.trim():"";if(!c)return null;let d="string"==typeof a.id&&a.id.trim()?a.id.trim():`account-${b+1}`;return{id:d,note:"string"==typeof a.note&&a.note.trim()?a.note.trim():d,apiKey:c,enabled:!1!==a.enabled,proxy:function(a){let b=v(a)?a:{},c=Number(b.port),d="string"==typeof b.url?b.url.trim():"",e="string"==typeof b.protocol?b.protocol.toLowerCase():void 0,f="https"===e||"socks5"===e?e:"http";if(d&&(void 0===e||"http"===e||"https"===e||"socks5"===e))try{let a=d.match(/^([a-z][a-z0-9+.-]*):\/\//i)?.[1]?.toLowerCase();("socks5"===a||"https"===a)&&(f=a)}catch{}if(d)try{let a=new URL(/^(https?|socks5):\/\//i.test(d)?d:`http://${d}`);d="http:"!==a.protocol&&"https:"!==a.protocol&&"socks5:"!==a.protocol||a.username||a.password||"/"!==a.pathname&&""!==a.pathname||a.search||a.hash?"":`${a.protocol}//${a.hostname}`}catch{d=""}return{protocol:f,enabled:!1!==b.enabled,url:d,port:Number.isInteger(c)&&c>0&&c<=65535?c:0,username:"string"==typeof b.username?b.username:"",password:"string"==typeof b.password?b.password:""}}(a.proxy)}}function x(a){let b=v(a)?a:{},c=Array.isArray(b.accounts)?b.accounts.map(w).filter(a=>null!==a):[],d=Number(b.cooldownMs),e=t().externalAccess;return{accounts:c,autoSwitch:!1!==b.autoSwitch,cooldownMs:Number.isFinite(d)?Math.min(Math.max(d,0),6e5):6e4,externalAccess:u(b.externalAccess,e)}}function y(a){let b=a?x(a):function(){try{if((0,e.existsSync)(r()))return x(JSON.parse((0,e.readFileSync)(r(),"utf8")));let a=(0,f.join)((0,h.getAgentDir)(),"auth.json");if((0,e.existsSync)(a)){let b=JSON.parse((0,e.readFileSync)(a,"utf8")),c=v(b.opencode)?b.opencode:null,d=c&&"string"==typeof c.key?c.key.trim():"";if(d)return x({accounts:[{id:"legacy-opencode",note:"默认 OpenCode Zen",apiKey:d,enabled:!0,proxy:s()}]})}return t()}catch{return t()}}();if(a)return{config:b,activeIndex:0,cooldownUntil:new Map,dispatchers:new Map};let c=function(){try{if(!(0,e.existsSync)(m()))return{};let a=JSON.parse((0,e.readFileSync)(m(),"utf8"));if(!v(a))return{};let b=Date.now(),c={};if(v(a.cooldownUntil))for(let[d,e]of Object.entries(a.cooldownUntil)){let a=v(e)?e:void 0,f=a?Number(a.until):NaN;a&&Number.isFinite(f)&&!(f<=b)&&(c[d]={until:f,daily:!0===a.daily})}return{..."number"==typeof a.activeIndex&&Number.isInteger(a.activeIndex)&&a.activeIndex>=0?{activeIndex:a.activeIndex}:{},..."string"==typeof a.lastSuccessId?{lastSuccessId:a.lastSuccessId}:{},...v(a.lastSwitch)&&"string"==typeof a.lastSwitch.to?{lastSwitch:a.lastSwitch}:{},...Object.keys(c).length>0?{cooldownUntil:c}:{}}}catch{return{}}}();return{config:b,activeIndex:c.activeIndex??0,cooldownUntil:new Map(Object.entries(c.cooldownUntil??{})),dispatchers:new Map,...c.lastSuccessId?{lastSuccessId:c.lastSuccessId}:{},...c.lastSwitch?{lastSwitch:c.lastSwitch}:{}}}function z(){return globalThis.__piOpenCodeZenState||(globalThis.__piOpenCodeZenState=y()),globalThis.__piOpenCodeZenState}function A(){return structuredClone(z().config)}function B(){return z().config.accounts.find(a=>a.enabled&&a.apiKey)?.apiKey??null}async function C(a){let b=B();if(b)for(let c of(await Promise.allSettled(Q.map(c=>a.setRuntimeApiKey(c,b)))))"rejected"===c.status&&(0,j.wF)({level:"warning",source:"opencode-zen-runtime",provider:"opencode",message:`设置 OpenCode Zen runtime Key 失败:${c.reason instanceof Error?c.reason.message:String(c.reason)}`})}function D(a,b){var c;let d,g=z();for(let c of(g.config=x(a),g.activeIndex=b?Math.max(0,g.config.accounts.findIndex(a=>a.id===b)):0,[...g.cooldownUntil.keys()]))g.config.accounts.some(a=>a.id===c)||g.cooldownUntil.delete(c);for(let a of(g.lastSuccessId&&!g.config.accounts.some(a=>a.id===g.lastSuccessId)&&(g.lastSuccessId=void 0),g.dispatchers.values()))a.close().catch(()=>{});g.dispatchers.clear(),c=g.config,d=r(),(0,e.mkdirSync)((0,f.dirname)(d),{recursive:!0,mode:448}),(0,i.$)(d,JSON.stringify(c,null,2)),n(g)}function E(a){return a.length<=8?"••••••••":`${a.slice(0,4)}••••${a.slice(-4)}`}function F(){let a=z(),b=a.config.accounts[a.activeIndex],c=a.config.externalAccess;return{accounts:a.config.accounts.map(a=>({id:a.id,note:a.note,enabled:a.enabled,apiKeyMasked:E(a.apiKey),hasApiKey:!!a.apiKey,proxy:{protocol:a.proxy.protocol,enabled:a.proxy.enabled,url:a.proxy.url,port:a.proxy.port,username:a.proxy.username,password:"",hasPassword:!!a.proxy.password}})),autoSwitch:a.config.autoSwitch,cooldownMs:a.config.cooldownMs,externalAccess:{enabled:c.enabled,port:c.port,freeModelsOnly:c.freeModelsOnly,apiKeyMasked:E(c.apiKey),hasApiKey:!!c.apiKey,status:globalThis.__piOpenCodeZenExternalStatus??{running:!1}},...b?{activeAccountId:b.id}:{},...a.lastSwitch?{lastSwitch:a.lastSwitch}:{}}}function G(a){if(!a.enabled||!a.url||!a.port)return null;if(!Number.isInteger(a.port)||a.port<1||a.port>65535)throw Error("代理端口无效,必须为 1-65535 的整数");let b=a.url.trim();if(b.includes("://")&&!/^(https?|socks5):\/\//i.test(b))throw Error("OpenCode Zen 账号代理仅支持 http/https/socks5");/^(https?|socks5):\/\//i.test(b)||(b=`http://${b}`);let c=new URL(b);if(c.username||c.password||"/"!==c.pathname||c.search||c.hash)throw Error("代理 URL 只允许主机名,用户名和密码请填写独立字段");if(c.port=String(a.port),a.username&&(c.username=a.username),a.password&&(c.password=a.password),"http:"!==c.protocol&&"https:"!==c.protocol&&"socks5:"!==c.protocol)throw Error("OpenCode Zen 账号代理仅支持 http/https/socks5");return c.toString()}function H(a,b){return"socks5"===b?new g.EV(a):new g.kT(a)}async function I(a){let b=G(a);if(!b)return{ok:!0,latencyMs:0};let c=H(b,a.protocol),d=Date.now();try{let a=await (0,g.Em)("https://opencode.ai/zen/v1/models",{dispatcher:c,headers:{Accept:"application/json","User-Agent":"pi-web-opencode-zen-test"},headersTimeout:15e3,bodyTimeout:15e3});return await a.body.text(),{ok:a.statusCode<500,status:a.statusCode,latencyMs:Date.now()-d}}catch(a){return{ok:!1,latencyMs:Date.now()-d,error:(a instanceof Error?a.message:String(a)).replace(/https?:\/\/[^\s/@]+:[^\s/@]+@/gi,"[proxy]@").replace(/(password|pass|secret|token|key)\s*[:=]\s*[^\s,;]+/gi,"$1=[redacted]")}}finally{await c.close().catch(()=>{})}}function J(a,b=new Set,c=!1){let d=Date.now(),e=a.config.accounts.length;if(0===e)return null;let f=null;for(let c=0;c<e;c++){let g=(a.activeIndex+c)%e,h=a.config.accounts[g];if(!h.enabled||!h.apiKey||b.has(h.id))continue;let i=a.cooldownUntil.get(h.id),j=i?.until??0;if(j>d){i?.daily||f&&!(j<f.until)||(f={account:h,index:g,until:j});continue}return a.activeIndex=(g+1)%e,h}return c&&f?(a.activeIndex=(f.index+1)%e,f.account):null}async function K(a,b){let c=b?.body;if(null!==c){if(void 0===c&&a instanceof Request&&null!==a.body)try{return await a.clone().arrayBuffer()}catch{return}if(void 0!==c&&("string"==typeof c||c instanceof ArrayBuffer||ArrayBuffer.isView(c)||c instanceof Blob))return c}}function L(a=globalThis.fetch.bind(globalThis),b,c){let d=c?y(c):z();return async(e,f)=>{try{let c;if(!function(a){try{let b="string"==typeof a||a instanceof URL?a.toString():a.url;return"opencode.ai"===new URL(b).hostname}catch{return!1}}(e))return a(e,f);let h=d.config.accounts.filter(a=>a.enabled&&a.apiKey);if(0===h.length)return new Response("OpenCode Zen accounts are unavailable",{status:503});let i=async b=>{let c,h,i=(c=new Headers(e instanceof Request?e.headers:void 0),f?.headers&&new Headers(f.headers).forEach((a,b)=>c.set(b,a)),c.set("authorization",`Bearer ${b.apiKey}`),h=function(a,b){let c=G(b.proxy);if(!c)return;let d=a.dispatchers.get(b.id);if(d)return d;let e=H(c,b.proxy.protocol);return a.dispatchers.set(b.id,e),e}(d,b),{...f,...e instanceof Request&&f?.method===void 0?{method:e.method}:{},headers:c,...void 0!==k?{body:k}:{},...h?{dispatcher:h}:{}});return i.dispatcher?await (0,g.hd)("string"==typeof e||e instanceof URL?e.toString():e.url,i):await a(e,i)},k=await K(e,f),m=!(e instanceof Request?null!==e.body:f?.body!==void 0&&null!==f.body)||void 0!==k,n=new Set,o=J(d,n)??J(d,n,!0);if(!o){let a=1/0;for(let b of d.cooldownUntil.values())b.until<a&&(a=b.until);let b=Number.isFinite(a)?Math.max(1,Math.ceil((a-Date.now())/1e3)):Math.ceil(d.config.cooldownMs/1e3);return new Response("OpenCode Zen accounts are cooling down",{status:503,headers:{"Retry-After":String(b)}})}let p=null,r=d.config.autoSwitch&&m?Math.min(Math.max(h.length,1),3):1;for(let a=0;a<r&&o;a++){n.add(o.id);let e=await i(o);if(429!==e.status||!d.config.autoSwitch)return e.ok&&(d.lastSuccessId=o.id),e.ok&&c&&q({sessionId:b,from:c,to:o.note,statusCode:429}),e;let f=await e.arrayBuffer();p=new Response(f,{status:e.status,statusText:e.statusText,headers:e.headers});let g=o;if(d.cooldownUntil.set(g.id,{until:l(),daily:!0}),a===r-1||!(o=J(d,n,!0)))break;d.lastSwitch={timestamp:new Date().toISOString(),from:g.note,to:o.note,statusCode:429},c=g.note,(0,j.wF)({level:"info",source:"opencode-zen-switch",provider:"opencode",message:`OpenCode Zen 429,已从 ${g.note} 切换到 ${o.note}`})}if(p&&d.config.autoSwitch&&n.size>0){let a=Date.now()+1e4;for(let b of n){let c=d.cooldownUntil.get(b);c&&!c.daily&&c.until>a&&d.cooldownUntil.set(b,{until:a,daily:!1})}}if(p&&d.config.autoSwitch&&m&&d.lastSuccessId&&!n.has(d.lastSuccessId)){let a=d.config.accounts.find(a=>a.id===d.lastSuccessId&&a.enabled&&a.apiKey&&!d.cooldownUntil.get(a.id)?.daily);if(a){n.add(a.id),(0,j.wF)({level:"info",source:"opencode-zen-switch",provider:"opencode",message:`OpenCode Zen 全败后回退最近成功账号 ${a.note}`});let e=await i(a);if(429!==e.status)return e.ok&&(d.activeIndex=Math.max(0,d.config.accounts.findIndex(b=>b.id===a.id)),d.lastSuccessId=a.id,c&&q({sessionId:b,from:c,to:a.note,statusCode:429})),e;let f=await e.arrayBuffer();p=new Response(f,{status:e.status,statusText:e.statusText,headers:e.headers}),d.cooldownUntil.set(a.id,{until:l(),daily:!0})}}return p??new Response("OpenCode Zen accounts are unavailable",{status:503})}finally{c||n(d)}}}function M(a){return z().config.accounts.find(b=>b.id===a)?.apiKey??null}function N(a){return z().config.accounts.find(b=>b.id===a)?.proxy??null}function O(a){let b=A();if(!v(a))return b;let c=(Array.isArray(a.accounts)?a.accounts:b.accounts).map((a,c)=>{let d=v(a)?a:{},e="string"==typeof d.id&&d.id.trim()?d.id.trim():`account-${c+1}`,f=b.accounts.find(a=>a.id===e),g=f?.proxy??s(),h=v(d.proxy)?d.proxy:{};return{id:e,note:"string"==typeof d.note&&d.note.trim()?d.note.trim():f?.note??e,apiKey:"string"==typeof d.apiKey&&d.apiKey.trim()?d.apiKey.trim():f?.apiKey??"",enabled:!1!==d.enabled,proxy:{protocol:"http"===h.protocol||"https"===h.protocol||"socks5"===h.protocol?h.protocol:g.protocol,enabled:"boolean"==typeof h.enabled?h.enabled:g.enabled,url:"string"==typeof h.url?h.url.trim():g.url,port:Number.isInteger(Number(h.port))?Number(h.port):g.port,username:"string"==typeof h.username?h.username:g.username,password:"string"==typeof h.password&&h.password?h.password:g.password}}}).filter(a=>a.apiKey),d=v(a.externalAccess)?a.externalAccess:{},e=u({enabled:"boolean"==typeof d.enabled?d.enabled:b.externalAccess.enabled,port:Number.isInteger(Number(d.port))?Number(d.port):b.externalAccess.port,apiKey:"string"==typeof d.apiKey&&d.apiKey.trim()?d.apiKey.trim():b.externalAccess.apiKey,freeModelsOnly:"boolean"==typeof d.freeModelsOnly?d.freeModelsOnly:b.externalAccess.freeModelsOnly},b.externalAccess);return x({accounts:c,autoSwitch:"boolean"==typeof a.autoSwitch?a.autoSwitch:b.autoSwitch,cooldownMs:"number"==typeof a.cooldownMs?a.cooldownMs:b.cooldownMs,externalAccess:e})}function P(a){let b=A(),c=function(a){let b=[];for(let[c,d]of a.split(/\r?\n/).entries()){let a=d.trim();if(!a)continue;let e=a.indexOf("-");if(e<=0||e===a.length-1)throw Error(`第 ${c+1} 行格式错误:需要 账号-apikey`);let f=a.slice(0,e).trim(),g=a.slice(e+1).trim();if(!f||!g)throw Error(`第 ${c+1} 行账号或 API Key 为空`);b.push({note:f,apiKey:g})}return b}(a),d=[...b.accounts],e=z(),f=e.config.accounts[e.activeIndex]?.id;for(let a of c){let b=d.find(b=>b.apiKey===a.apiKey);if(b){b.note!==a.note&&(b.note=a.note);continue}d.push({id:`account-${Date.now().toString(36)}-${d.length}`,note:a.note,apiKey:a.apiKey,enabled:!0,proxy:s()})}return D({...b,accounts:d},f),F()}d()}catch(a){d(a)}})}};