@qt4798/pi-web 0.9.18-beta.1 → 0.9.19

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 (343) hide show
  1. package/.next/BUILD_ID +1 -1
  2. package/.next/app-path-routes-manifest.json +13 -6
  3. package/.next/build-manifest.json +3 -3
  4. package/.next/react-loadable-manifest.json +2 -2
  5. package/.next/required-server-files.js +1 -1
  6. package/.next/required-server-files.json +1 -1
  7. package/.next/routes-manifest.json +44 -0
  8. package/.next/server/app/_global-error/page.js +2 -2
  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/_global-error.segment.rsc +1 -1
  15. package/.next/server/app/_global-error.segments/_head.segment.rsc +1 -1
  16. package/.next/server/app/_global-error.segments/_index.segment.rsc +1 -1
  17. package/.next/server/app/_global-error.segments/_tree.segment.rsc +1 -1
  18. package/.next/server/app/_not-found/page.js +2 -2
  19. package/.next/server/app/_not-found/page_client-reference-manifest.js +1 -1
  20. package/.next/server/app/_not-found.html +1 -1
  21. package/.next/server/app/_not-found.rsc +2 -2
  22. package/.next/server/app/_not-found.segments/_full.segment.rsc +2 -2
  23. package/.next/server/app/_not-found.segments/_head.segment.rsc +1 -1
  24. package/.next/server/app/_not-found.segments/_index.segment.rsc +2 -2
  25. package/.next/server/app/_not-found.segments/_not-found/__PAGE__.segment.rsc +1 -1
  26. package/.next/server/app/_not-found.segments/_not-found.segment.rsc +1 -1
  27. package/.next/server/app/_not-found.segments/_tree.segment.rsc +2 -2
  28. package/.next/server/app/api/agent/[id]/bash-output/route.js +1 -1
  29. package/.next/server/app/api/agent/[id]/events/route.js +2 -2
  30. package/.next/server/app/api/agent/[id]/route.js +1 -1
  31. package/.next/server/app/api/agent/new/route.js +1 -1
  32. package/.next/server/app/api/agent/running/events/route.js +1 -1
  33. package/.next/server/app/api/agent/running/route.js +1 -1
  34. package/.next/server/app/api/auth/all-providers/route.js +1 -1
  35. package/.next/server/app/api/auth/api-key/[provider]/route.js +1 -1
  36. package/.next/server/app/api/auth/combined/route.js +1 -1
  37. package/.next/server/app/api/auth/login/[provider]/route.js +1 -1
  38. package/.next/server/app/api/auth/logout/[provider]/route.js +1 -1
  39. package/.next/server/app/api/auth/providers/route.js +1 -1
  40. package/.next/server/app/api/backup/export/route.js +1 -1
  41. package/.next/server/app/api/backup/import/route.js +1 -1
  42. package/.next/server/app/api/cwd/browse/route.js +1 -1
  43. package/.next/server/app/api/cwd/validate/route.js +1 -1
  44. package/.next/server/app/api/deepseek/balance/route.js +1 -0
  45. package/.next/server/app/api/deepseek/balance/route.js.nft.json +1 -0
  46. package/.next/server/app/api/deepseek/balance/route_client-reference-manifest.js +1 -0
  47. package/.next/server/app/api/default-cwd/route.js +1 -1
  48. package/.next/server/app/api/events/route.js +2 -2
  49. package/.next/server/app/api/features/route.js +1 -1
  50. package/.next/server/app/api/file-index/route.js +1 -1
  51. package/.next/server/app/api/files/[...path]/route.js +1 -1
  52. package/.next/server/app/api/git/diff/route.js +1 -1
  53. package/.next/server/app/api/git/push/route.js +1 -1
  54. package/.next/server/app/api/git/stash/route.js +1 -1
  55. package/.next/server/app/api/git/status/route.js +1 -1
  56. package/.next/server/app/api/home/route.js +1 -1
  57. package/.next/server/app/api/import/discover/route.js +1 -1
  58. package/.next/server/app/api/import/execute/route.js +1 -1
  59. package/.next/server/app/api/import/status/route.js +1 -1
  60. package/.next/server/app/api/logs/route.js +1 -1
  61. package/.next/server/app/api/mcp/route.js +2 -0
  62. package/.next/server/app/api/mcp/route.js.nft.json +1 -0
  63. package/.next/server/app/api/mcp/route_client-reference-manifest.js +1 -0
  64. package/.next/server/app/api/models/route.js +1 -1
  65. package/.next/server/app/api/models-config/builtin/route.js +1 -1
  66. package/.next/server/app/api/models-config/builtin/route.js.nft.json +1 -1
  67. package/.next/server/app/api/models-config/catalog/route.js +1 -1
  68. package/.next/server/app/api/models-config/discover/route.js +1 -1
  69. package/.next/server/app/api/models-config/route.js +1 -1
  70. package/.next/server/app/api/models-config/route.js.nft.json +1 -1
  71. package/.next/server/app/api/models-config/test/route.js +1 -1
  72. package/.next/server/app/api/modes/route.js +1 -1
  73. package/.next/server/app/api/opencode-zen/external/key/route.js +1 -0
  74. package/.next/server/app/api/opencode-zen/external/key/route.js.nft.json +1 -0
  75. package/.next/server/app/api/opencode-zen/external/key/route_client-reference-manifest.js +1 -0
  76. package/.next/server/app/api/opencode-zen/external/test/route.js +1 -0
  77. package/.next/server/app/api/opencode-zen/external/test/route.js.nft.json +1 -0
  78. package/.next/server/app/api/opencode-zen/external/test/route_client-reference-manifest.js +1 -0
  79. package/.next/server/app/api/opencode-zen/import/route.js +1 -1
  80. package/.next/server/app/api/opencode-zen/key/route.js +1 -1
  81. package/.next/server/app/api/opencode-zen/route.js +1 -1
  82. package/.next/server/app/api/opencode-zen/test/route.js +1 -1
  83. package/.next/server/app/api/plugins/route.js +1 -1
  84. package/.next/server/app/api/project-trust/route.js +1 -1
  85. package/.next/server/app/api/proxy/route.js +1 -1
  86. package/.next/server/app/api/proxy/test/route.js +1 -1
  87. package/.next/server/app/api/sessions/[id]/auto-name/route.js +2 -2
  88. package/.next/server/app/api/sessions/[id]/context/route.js +1 -1
  89. package/.next/server/app/api/sessions/[id]/entries/[entryId]/thinking/route.js +1 -1
  90. package/.next/server/app/api/sessions/[id]/export/route.js +2 -2
  91. package/.next/server/app/api/sessions/[id]/queue-recovery/route.js +1 -1
  92. package/.next/server/app/api/sessions/[id]/route.js +1 -1
  93. package/.next/server/app/api/sessions/[id]/state/route.js +1 -1
  94. package/.next/server/app/api/sessions/route.js +1 -1
  95. package/.next/server/app/api/settings/title-model/route.js +1 -1
  96. package/.next/server/app/api/skills/check/route.js +1 -1
  97. package/.next/server/app/api/skills/install/route.js +1 -1
  98. package/.next/server/app/api/skills/route.js +1 -1
  99. package/.next/server/app/api/skills/search/route.js +1 -1
  100. package/.next/server/app/api/skills/update/route.js +1 -1
  101. package/.next/server/app/api/snippets/[id]/route.js +1 -0
  102. package/.next/server/app/api/snippets/[id]/route.js.nft.json +1 -0
  103. package/.next/server/app/api/snippets/[id]/route_client-reference-manifest.js +1 -0
  104. package/.next/server/app/api/snippets/route.js +1 -0
  105. package/.next/server/app/api/snippets/route.js.nft.json +1 -0
  106. package/.next/server/app/api/snippets/route_client-reference-manifest.js +1 -0
  107. package/.next/server/app/api/subagents/route.js +2 -0
  108. package/.next/server/app/api/subagents/route.js.nft.json +1 -0
  109. package/.next/server/app/api/subagents/route_client-reference-manifest.js +1 -0
  110. package/.next/server/app/api/tasks/[id]/[action]/route.js +1 -1
  111. package/.next/server/app/api/tasks/[id]/changed-files/route.js +1 -1
  112. package/.next/server/app/api/tasks/[id]/diff/route.js +2 -2
  113. package/.next/server/app/api/tasks/[id]/events/route.js +1 -1
  114. package/.next/server/app/api/tasks/[id]/route.js +1 -1
  115. package/.next/server/app/api/tasks/batch/route.js +1 -1
  116. package/.next/server/app/api/tasks/events/route.js +2 -2
  117. package/.next/server/app/api/tasks/route.js +1 -1
  118. package/.next/server/app/api/tasks/settings/route.js +1 -1
  119. package/.next/server/app/api/tasks/templates/route.js +1 -1
  120. package/.next/server/app/api/themes/[name]/route.js +1 -1
  121. package/.next/server/app/api/themes/route.js +1 -1
  122. package/.next/server/app/api/usage/route.js +1 -1
  123. package/.next/server/app/api/vision-config/route.js +2 -2
  124. package/.next/server/app/api/worktrees/route.js +1 -1
  125. package/.next/server/app/icon.ico/route.js +1 -1
  126. package/.next/server/app/icon.png/route.js +1 -1
  127. package/.next/server/app/icon.svg/route.js +1 -1
  128. package/.next/server/app/index.html +1 -1
  129. package/.next/server/app/index.rsc +4 -4
  130. package/.next/server/app/index.segments/__PAGE__.segment.rsc +3 -3
  131. package/.next/server/app/index.segments/_full.segment.rsc +4 -4
  132. package/.next/server/app/index.segments/_head.segment.rsc +1 -1
  133. package/.next/server/app/index.segments/_index.segment.rsc +2 -2
  134. package/.next/server/app/index.segments/_tree.segment.rsc +2 -2
  135. package/.next/server/app/page.js +17 -14
  136. package/.next/server/app/page_client-reference-manifest.js +1 -1
  137. package/.next/server/app-paths-manifest.json +13 -6
  138. package/.next/server/chunks/1213.js +1 -1
  139. package/.next/server/chunks/1499.js +1 -1
  140. package/.next/server/chunks/2303.js +1 -1
  141. package/.next/server/chunks/2498.js +1 -0
  142. package/.next/server/chunks/4253.js +2 -2
  143. package/.next/server/chunks/440.js +1 -1
  144. package/.next/server/chunks/6429.js +1 -1
  145. package/.next/server/chunks/7915.js +1 -1
  146. package/.next/server/middleware-build-manifest.js +1 -1
  147. package/.next/server/middleware-react-loadable-manifest.js +1 -1
  148. package/.next/server/middleware.js +3 -3
  149. package/.next/server/pages/404.html +1 -1
  150. package/.next/server/pages/500.html +1 -1
  151. package/.next/static/chunks/{3308.4b28a1cf1ba95ccb.js → 3308.d45be6730587846b.js} +1 -1
  152. package/.next/static/chunks/{7370-bb8f0d070d8d0508.js → 9103-7c410d401717ec38.js} +1 -1
  153. package/.next/static/chunks/99.280e10a836dfdb17.js +24 -0
  154. package/.next/static/chunks/app/_global-error/page-6bdd527b5ef202bf.js +1 -0
  155. package/.next/static/chunks/app/api/agent/[id]/bash-output/route-6bdd527b5ef202bf.js +1 -0
  156. package/.next/static/chunks/app/api/agent/[id]/events/route-6bdd527b5ef202bf.js +1 -0
  157. package/.next/static/chunks/app/api/agent/[id]/route-6bdd527b5ef202bf.js +1 -0
  158. package/.next/static/chunks/app/api/agent/new/route-6bdd527b5ef202bf.js +1 -0
  159. package/.next/static/chunks/app/api/agent/running/events/route-6bdd527b5ef202bf.js +1 -0
  160. package/.next/static/chunks/app/api/agent/running/route-6bdd527b5ef202bf.js +1 -0
  161. package/.next/static/chunks/app/api/auth/all-providers/route-6bdd527b5ef202bf.js +1 -0
  162. package/.next/static/chunks/app/api/auth/api-key/[provider]/route-6bdd527b5ef202bf.js +1 -0
  163. package/.next/static/chunks/app/api/auth/combined/route-6bdd527b5ef202bf.js +1 -0
  164. package/.next/static/chunks/app/api/auth/login/[provider]/route-6bdd527b5ef202bf.js +1 -0
  165. package/.next/static/chunks/app/api/auth/logout/[provider]/route-6bdd527b5ef202bf.js +1 -0
  166. package/.next/static/chunks/app/api/auth/providers/route-6bdd527b5ef202bf.js +1 -0
  167. package/.next/static/chunks/app/api/backup/export/route-6bdd527b5ef202bf.js +1 -0
  168. package/.next/static/chunks/app/api/backup/import/route-6bdd527b5ef202bf.js +1 -0
  169. package/.next/static/chunks/app/api/cwd/browse/route-6bdd527b5ef202bf.js +1 -0
  170. package/.next/static/chunks/app/api/cwd/validate/route-6bdd527b5ef202bf.js +1 -0
  171. package/.next/static/chunks/app/api/deepseek/balance/route-6bdd527b5ef202bf.js +1 -0
  172. package/.next/static/chunks/app/api/default-cwd/route-6bdd527b5ef202bf.js +1 -0
  173. package/.next/static/chunks/app/api/events/route-6bdd527b5ef202bf.js +1 -0
  174. package/.next/static/chunks/app/api/features/route-6bdd527b5ef202bf.js +1 -0
  175. package/.next/static/chunks/app/api/file-index/route-6bdd527b5ef202bf.js +1 -0
  176. package/.next/static/chunks/app/api/files/[...path]/route-6bdd527b5ef202bf.js +1 -0
  177. package/.next/static/chunks/app/api/git/diff/route-6bdd527b5ef202bf.js +1 -0
  178. package/.next/static/chunks/app/api/git/push/route-6bdd527b5ef202bf.js +1 -0
  179. package/.next/static/chunks/app/api/git/stash/route-6bdd527b5ef202bf.js +1 -0
  180. package/.next/static/chunks/app/api/git/status/route-6bdd527b5ef202bf.js +1 -0
  181. package/.next/static/chunks/app/api/home/route-6bdd527b5ef202bf.js +1 -0
  182. package/.next/static/chunks/app/api/import/discover/route-6bdd527b5ef202bf.js +1 -0
  183. package/.next/static/chunks/app/api/import/execute/route-6bdd527b5ef202bf.js +1 -0
  184. package/.next/static/chunks/app/api/import/status/route-6bdd527b5ef202bf.js +1 -0
  185. package/.next/static/chunks/app/api/logs/route-6bdd527b5ef202bf.js +1 -0
  186. package/.next/static/chunks/app/api/mcp/route-6bdd527b5ef202bf.js +1 -0
  187. package/.next/static/chunks/app/api/models/route-6bdd527b5ef202bf.js +1 -0
  188. package/.next/static/chunks/app/api/models-config/builtin/route-6bdd527b5ef202bf.js +1 -0
  189. package/.next/static/chunks/app/api/models-config/catalog/route-6bdd527b5ef202bf.js +1 -0
  190. package/.next/static/chunks/app/api/models-config/discover/route-6bdd527b5ef202bf.js +1 -0
  191. package/.next/static/chunks/app/api/models-config/route-6bdd527b5ef202bf.js +1 -0
  192. package/.next/static/chunks/app/api/models-config/test/route-6bdd527b5ef202bf.js +1 -0
  193. package/.next/static/chunks/app/api/modes/route-6bdd527b5ef202bf.js +1 -0
  194. package/.next/static/chunks/app/api/opencode-zen/external/key/route-6bdd527b5ef202bf.js +1 -0
  195. package/.next/static/chunks/app/api/opencode-zen/external/test/route-6bdd527b5ef202bf.js +1 -0
  196. package/.next/static/chunks/app/api/opencode-zen/import/route-6bdd527b5ef202bf.js +1 -0
  197. package/.next/static/chunks/app/api/opencode-zen/key/route-6bdd527b5ef202bf.js +1 -0
  198. package/.next/static/chunks/app/api/opencode-zen/route-6bdd527b5ef202bf.js +1 -0
  199. package/.next/static/chunks/app/api/opencode-zen/test/route-6bdd527b5ef202bf.js +1 -0
  200. package/.next/static/chunks/app/api/plugins/route-6bdd527b5ef202bf.js +1 -0
  201. package/.next/static/chunks/app/api/project-trust/route-6bdd527b5ef202bf.js +1 -0
  202. package/.next/static/chunks/app/api/proxy/route-6bdd527b5ef202bf.js +1 -0
  203. package/.next/static/chunks/app/api/proxy/test/route-6bdd527b5ef202bf.js +1 -0
  204. package/.next/static/chunks/app/api/sessions/[id]/auto-name/route-6bdd527b5ef202bf.js +1 -0
  205. package/.next/static/chunks/app/api/sessions/[id]/context/route-6bdd527b5ef202bf.js +1 -0
  206. package/.next/static/chunks/app/api/sessions/[id]/entries/[entryId]/thinking/route-6bdd527b5ef202bf.js +1 -0
  207. package/.next/static/chunks/app/api/sessions/[id]/export/route-6bdd527b5ef202bf.js +1 -0
  208. package/.next/static/chunks/app/api/sessions/[id]/queue-recovery/route-6bdd527b5ef202bf.js +1 -0
  209. package/.next/static/chunks/app/api/sessions/[id]/route-6bdd527b5ef202bf.js +1 -0
  210. package/.next/static/chunks/app/api/sessions/[id]/state/route-6bdd527b5ef202bf.js +1 -0
  211. package/.next/static/chunks/app/api/sessions/route-6bdd527b5ef202bf.js +1 -0
  212. package/.next/static/chunks/app/api/settings/title-model/route-6bdd527b5ef202bf.js +1 -0
  213. package/.next/static/chunks/app/api/skills/check/route-6bdd527b5ef202bf.js +1 -0
  214. package/.next/static/chunks/app/api/skills/install/route-6bdd527b5ef202bf.js +1 -0
  215. package/.next/static/chunks/app/api/skills/route-6bdd527b5ef202bf.js +1 -0
  216. package/.next/static/chunks/app/api/skills/search/route-6bdd527b5ef202bf.js +1 -0
  217. package/.next/static/chunks/app/api/skills/update/route-6bdd527b5ef202bf.js +1 -0
  218. package/.next/static/chunks/app/api/snippets/[id]/route-6bdd527b5ef202bf.js +1 -0
  219. package/.next/static/chunks/app/api/snippets/route-6bdd527b5ef202bf.js +1 -0
  220. package/.next/static/chunks/app/api/subagents/route-6bdd527b5ef202bf.js +1 -0
  221. package/.next/static/chunks/app/api/tasks/[id]/[action]/route-6bdd527b5ef202bf.js +1 -0
  222. package/.next/static/chunks/app/api/tasks/[id]/changed-files/route-6bdd527b5ef202bf.js +1 -0
  223. package/.next/static/chunks/app/api/tasks/[id]/diff/route-6bdd527b5ef202bf.js +1 -0
  224. package/.next/static/chunks/app/api/tasks/[id]/events/route-6bdd527b5ef202bf.js +1 -0
  225. package/.next/static/chunks/app/api/tasks/[id]/route-6bdd527b5ef202bf.js +1 -0
  226. package/.next/static/chunks/app/api/tasks/batch/route-6bdd527b5ef202bf.js +1 -0
  227. package/.next/static/chunks/app/api/tasks/events/route-6bdd527b5ef202bf.js +1 -0
  228. package/.next/static/chunks/app/api/tasks/route-6bdd527b5ef202bf.js +1 -0
  229. package/.next/static/chunks/app/api/tasks/settings/route-6bdd527b5ef202bf.js +1 -0
  230. package/.next/static/chunks/app/api/tasks/templates/route-6bdd527b5ef202bf.js +1 -0
  231. package/.next/static/chunks/app/api/themes/[name]/route-6bdd527b5ef202bf.js +1 -0
  232. package/.next/static/chunks/app/api/themes/route-6bdd527b5ef202bf.js +1 -0
  233. package/.next/static/chunks/app/api/usage/route-6bdd527b5ef202bf.js +1 -0
  234. package/.next/static/chunks/app/api/vision-config/route-6bdd527b5ef202bf.js +1 -0
  235. package/.next/static/chunks/app/api/worktrees/route-6bdd527b5ef202bf.js +1 -0
  236. package/.next/static/chunks/app/page-451c953ad6232c59.js +53 -0
  237. package/.next/static/chunks/next/dist/client/components/builtin/app-error-6bdd527b5ef202bf.js +1 -0
  238. package/.next/static/chunks/next/dist/client/components/builtin/forbidden-6bdd527b5ef202bf.js +1 -0
  239. package/.next/static/chunks/next/dist/client/components/builtin/not-found-6bdd527b5ef202bf.js +1 -0
  240. package/.next/static/chunks/next/dist/client/components/builtin/unauthorized-6bdd527b5ef202bf.js +1 -0
  241. package/.next/static/chunks/webpack-06a1a811cd141d40.js +1 -0
  242. package/.next/static/css/dda15933a7f70fbf.css +1 -0
  243. package/.next/static/rddGyDxw8t2Q1B_osP7Xr/_buildManifest.js +1 -0
  244. package/.next/trace +9 -10
  245. package/.next/trace-build +1 -1
  246. package/.next/types/app/api/deepseek/balance/route.ts +351 -0
  247. package/.next/types/app/api/mcp/route.ts +351 -0
  248. package/.next/types/app/api/opencode-zen/external/key/route.ts +351 -0
  249. package/.next/types/app/api/opencode-zen/external/test/route.ts +351 -0
  250. package/.next/types/app/api/snippets/[id]/route.ts +351 -0
  251. package/.next/types/app/api/snippets/route.ts +351 -0
  252. package/.next/types/app/api/subagents/route.ts +351 -0
  253. package/.next/types/routes.d.ts +8 -1
  254. package/.next/types/validator.ts +63 -0
  255. package/README.md +81 -158
  256. package/bin/pi-web-options.js +8 -2
  257. package/bin/pi-web.js +0 -0
  258. package/package.json +3 -3
  259. package/.next/static/chunks/2480.cf27ca02e5b19761.js +0 -24
  260. package/.next/static/chunks/app/_global-error/page-05965789d7c1c4dc.js +0 -1
  261. package/.next/static/chunks/app/api/agent/[id]/bash-output/route-05965789d7c1c4dc.js +0 -1
  262. package/.next/static/chunks/app/api/agent/[id]/events/route-05965789d7c1c4dc.js +0 -1
  263. package/.next/static/chunks/app/api/agent/[id]/route-05965789d7c1c4dc.js +0 -1
  264. package/.next/static/chunks/app/api/agent/new/route-05965789d7c1c4dc.js +0 -1
  265. package/.next/static/chunks/app/api/agent/running/events/route-05965789d7c1c4dc.js +0 -1
  266. package/.next/static/chunks/app/api/agent/running/route-05965789d7c1c4dc.js +0 -1
  267. package/.next/static/chunks/app/api/auth/all-providers/route-05965789d7c1c4dc.js +0 -1
  268. package/.next/static/chunks/app/api/auth/api-key/[provider]/route-05965789d7c1c4dc.js +0 -1
  269. package/.next/static/chunks/app/api/auth/combined/route-05965789d7c1c4dc.js +0 -1
  270. package/.next/static/chunks/app/api/auth/login/[provider]/route-05965789d7c1c4dc.js +0 -1
  271. package/.next/static/chunks/app/api/auth/logout/[provider]/route-05965789d7c1c4dc.js +0 -1
  272. package/.next/static/chunks/app/api/auth/providers/route-05965789d7c1c4dc.js +0 -1
  273. package/.next/static/chunks/app/api/backup/export/route-05965789d7c1c4dc.js +0 -1
  274. package/.next/static/chunks/app/api/backup/import/route-05965789d7c1c4dc.js +0 -1
  275. package/.next/static/chunks/app/api/cwd/browse/route-05965789d7c1c4dc.js +0 -1
  276. package/.next/static/chunks/app/api/cwd/validate/route-05965789d7c1c4dc.js +0 -1
  277. package/.next/static/chunks/app/api/default-cwd/route-05965789d7c1c4dc.js +0 -1
  278. package/.next/static/chunks/app/api/events/route-05965789d7c1c4dc.js +0 -1
  279. package/.next/static/chunks/app/api/features/route-05965789d7c1c4dc.js +0 -1
  280. package/.next/static/chunks/app/api/file-index/route-05965789d7c1c4dc.js +0 -1
  281. package/.next/static/chunks/app/api/files/[...path]/route-05965789d7c1c4dc.js +0 -1
  282. package/.next/static/chunks/app/api/git/diff/route-05965789d7c1c4dc.js +0 -1
  283. package/.next/static/chunks/app/api/git/push/route-05965789d7c1c4dc.js +0 -1
  284. package/.next/static/chunks/app/api/git/stash/route-05965789d7c1c4dc.js +0 -1
  285. package/.next/static/chunks/app/api/git/status/route-05965789d7c1c4dc.js +0 -1
  286. package/.next/static/chunks/app/api/home/route-05965789d7c1c4dc.js +0 -1
  287. package/.next/static/chunks/app/api/import/discover/route-05965789d7c1c4dc.js +0 -1
  288. package/.next/static/chunks/app/api/import/execute/route-05965789d7c1c4dc.js +0 -1
  289. package/.next/static/chunks/app/api/import/status/route-05965789d7c1c4dc.js +0 -1
  290. package/.next/static/chunks/app/api/logs/route-05965789d7c1c4dc.js +0 -1
  291. package/.next/static/chunks/app/api/models/route-05965789d7c1c4dc.js +0 -1
  292. package/.next/static/chunks/app/api/models-config/builtin/route-05965789d7c1c4dc.js +0 -1
  293. package/.next/static/chunks/app/api/models-config/catalog/route-05965789d7c1c4dc.js +0 -1
  294. package/.next/static/chunks/app/api/models-config/discover/route-05965789d7c1c4dc.js +0 -1
  295. package/.next/static/chunks/app/api/models-config/route-05965789d7c1c4dc.js +0 -1
  296. package/.next/static/chunks/app/api/models-config/test/route-05965789d7c1c4dc.js +0 -1
  297. package/.next/static/chunks/app/api/modes/route-05965789d7c1c4dc.js +0 -1
  298. package/.next/static/chunks/app/api/opencode-zen/import/route-05965789d7c1c4dc.js +0 -1
  299. package/.next/static/chunks/app/api/opencode-zen/key/route-05965789d7c1c4dc.js +0 -1
  300. package/.next/static/chunks/app/api/opencode-zen/route-05965789d7c1c4dc.js +0 -1
  301. package/.next/static/chunks/app/api/opencode-zen/test/route-05965789d7c1c4dc.js +0 -1
  302. package/.next/static/chunks/app/api/plugins/route-05965789d7c1c4dc.js +0 -1
  303. package/.next/static/chunks/app/api/project-trust/route-05965789d7c1c4dc.js +0 -1
  304. package/.next/static/chunks/app/api/proxy/route-05965789d7c1c4dc.js +0 -1
  305. package/.next/static/chunks/app/api/proxy/test/route-05965789d7c1c4dc.js +0 -1
  306. package/.next/static/chunks/app/api/sessions/[id]/auto-name/route-05965789d7c1c4dc.js +0 -1
  307. package/.next/static/chunks/app/api/sessions/[id]/context/route-05965789d7c1c4dc.js +0 -1
  308. package/.next/static/chunks/app/api/sessions/[id]/entries/[entryId]/thinking/route-05965789d7c1c4dc.js +0 -1
  309. package/.next/static/chunks/app/api/sessions/[id]/export/route-05965789d7c1c4dc.js +0 -1
  310. package/.next/static/chunks/app/api/sessions/[id]/queue-recovery/route-05965789d7c1c4dc.js +0 -1
  311. package/.next/static/chunks/app/api/sessions/[id]/route-05965789d7c1c4dc.js +0 -1
  312. package/.next/static/chunks/app/api/sessions/[id]/state/route-05965789d7c1c4dc.js +0 -1
  313. package/.next/static/chunks/app/api/sessions/route-05965789d7c1c4dc.js +0 -1
  314. package/.next/static/chunks/app/api/settings/title-model/route-05965789d7c1c4dc.js +0 -1
  315. package/.next/static/chunks/app/api/skills/check/route-05965789d7c1c4dc.js +0 -1
  316. package/.next/static/chunks/app/api/skills/install/route-05965789d7c1c4dc.js +0 -1
  317. package/.next/static/chunks/app/api/skills/route-05965789d7c1c4dc.js +0 -1
  318. package/.next/static/chunks/app/api/skills/search/route-05965789d7c1c4dc.js +0 -1
  319. package/.next/static/chunks/app/api/skills/update/route-05965789d7c1c4dc.js +0 -1
  320. package/.next/static/chunks/app/api/tasks/[id]/[action]/route-05965789d7c1c4dc.js +0 -1
  321. package/.next/static/chunks/app/api/tasks/[id]/changed-files/route-05965789d7c1c4dc.js +0 -1
  322. package/.next/static/chunks/app/api/tasks/[id]/diff/route-05965789d7c1c4dc.js +0 -1
  323. package/.next/static/chunks/app/api/tasks/[id]/events/route-05965789d7c1c4dc.js +0 -1
  324. package/.next/static/chunks/app/api/tasks/[id]/route-05965789d7c1c4dc.js +0 -1
  325. package/.next/static/chunks/app/api/tasks/batch/route-05965789d7c1c4dc.js +0 -1
  326. package/.next/static/chunks/app/api/tasks/events/route-05965789d7c1c4dc.js +0 -1
  327. package/.next/static/chunks/app/api/tasks/route-05965789d7c1c4dc.js +0 -1
  328. package/.next/static/chunks/app/api/tasks/settings/route-05965789d7c1c4dc.js +0 -1
  329. package/.next/static/chunks/app/api/tasks/templates/route-05965789d7c1c4dc.js +0 -1
  330. package/.next/static/chunks/app/api/themes/[name]/route-05965789d7c1c4dc.js +0 -1
  331. package/.next/static/chunks/app/api/themes/route-05965789d7c1c4dc.js +0 -1
  332. package/.next/static/chunks/app/api/usage/route-05965789d7c1c4dc.js +0 -1
  333. package/.next/static/chunks/app/api/vision-config/route-05965789d7c1c4dc.js +0 -1
  334. package/.next/static/chunks/app/api/worktrees/route-05965789d7c1c4dc.js +0 -1
  335. package/.next/static/chunks/app/page-8bcd937bdba8d19c.js +0 -50
  336. package/.next/static/chunks/next/dist/client/components/builtin/app-error-05965789d7c1c4dc.js +0 -1
  337. package/.next/static/chunks/next/dist/client/components/builtin/forbidden-05965789d7c1c4dc.js +0 -1
  338. package/.next/static/chunks/next/dist/client/components/builtin/not-found-05965789d7c1c4dc.js +0 -1
  339. package/.next/static/chunks/next/dist/client/components/builtin/unauthorized-05965789d7c1c4dc.js +0 -1
  340. package/.next/static/chunks/webpack-d878f0bb0b95ae97.js +0 -1
  341. package/.next/static/css/0a86c1753fca4340.css +0 -1
  342. package/.next/static/gaIw_JxiSjTlS_2wAVEa6/_buildManifest.js +0 -1
  343. /package/.next/static/{gaIw_JxiSjTlS_2wAVEa6 → rddGyDxw8t2Q1B_osP7Xr}/_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}},"57121":{"*":{"id":"35421","name":"*","chunks":[],"async":false}},"60864":{"*":{"id":"27550","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":60864,"name":"*","chunks":["7330","static/chunks/d3ac728e-7964f816a1ca64e5.js","7370","static/chunks/7370-bb8f0d070d8d0508.js","8974","static/chunks/app/page-8bcd937bdba8d19c.js"],"async":false},"/Volumes/1T 原装/项目研发/pi-web-QT/hooks/useI18n.tsx":{"id":39247,"name":"*","chunks":["7330","static/chunks/d3ac728e-7964f816a1ca64e5.js","7370","static/chunks/7370-bb8f0d070d8d0508.js","8974","static/chunks/app/page-8bcd937bdba8d19c.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/0a86c1753fca4340.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}},"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}},"60864":{"*":{"id":"35790","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":"26571","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","9103","static/chunks/9103-7c410d401717ec38.js","8974","static/chunks/app/page-451c953ad6232c59.js"],"async":false},"/Volumes/1T 原装/项目研发/pi-web-QT/hooks/useI18n.tsx":{"id":39247,"name":"*","chunks":["7330","static/chunks/d3ac728e-7964f816a1ca64e5.js","9103","static/chunks/9103-7c410d401717ec38.js","8974","static/chunks/app/page-451c953ad6232c59.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/dda15933a7f70fbf.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":{}};
@@ -35,15 +35,16 @@
35
35
  "/icon.svg/route": "app/icon.svg/route.js",
36
36
  "/api/agent/[id]/bash-output/route": "app/api/agent/[id]/bash-output/route.js",
37
37
  "/api/agent/running/events/route": "app/api/agent/running/events/route.js",
38
- "/api/auth/all-providers/route": "app/api/auth/all-providers/route.js",
39
38
  "/api/agent/[id]/events/route": "app/api/agent/[id]/events/route.js",
40
39
  "/api/agent/running/route": "app/api/agent/running/route.js",
40
+ "/api/auth/all-providers/route": "app/api/auth/all-providers/route.js",
41
41
  "/api/auth/combined/route": "app/api/auth/combined/route.js",
42
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
44
  "/api/auth/providers/route": "app/api/auth/providers/route.js",
45
45
  "/api/backup/export/route": "app/api/backup/export/route.js",
46
46
  "/api/auth/login/[provider]/route": "app/api/auth/login/[provider]/route.js",
47
+ "/api/deepseek/balance/route": "app/api/deepseek/balance/route.js",
47
48
  "/api/events/route": "app/api/events/route.js",
48
49
  "/api/features/route": "app/api/features/route.js",
49
50
  "/api/backup/import/route": "app/api/backup/import/route.js",
@@ -52,30 +53,36 @@
52
53
  "/api/git/status/route": "app/api/git/status/route.js",
53
54
  "/api/git/stash/route": "app/api/git/stash/route.js",
54
55
  "/api/logs/route": "app/api/logs/route.js",
56
+ "/api/mcp/route": "app/api/mcp/route.js",
55
57
  "/api/models-config/catalog/route": "app/api/models-config/catalog/route.js",
56
58
  "/api/models-config/route": "app/api/models-config/route.js",
57
59
  "/api/models-config/builtin/route": "app/api/models-config/builtin/route.js",
58
60
  "/api/models-config/test/route": "app/api/models-config/test/route.js",
61
+ "/api/modes/route": "app/api/modes/route.js",
62
+ "/api/opencode-zen/external/key/route": "app/api/opencode-zen/external/key/route.js",
63
+ "/api/models/route": "app/api/models/route.js",
59
64
  "/api/models-config/discover/route": "app/api/models-config/discover/route.js",
60
65
  "/api/opencode-zen/import/route": "app/api/opencode-zen/import/route.js",
61
66
  "/api/opencode-zen/key/route": "app/api/opencode-zen/key/route.js",
62
- "/api/modes/route": "app/api/modes/route.js",
63
67
  "/api/opencode-zen/test/route": "app/api/opencode-zen/test/route.js",
68
+ "/api/opencode-zen/external/test/route": "app/api/opencode-zen/external/test/route.js",
64
69
  "/api/opencode-zen/route": "app/api/opencode-zen/route.js",
65
- "/api/models/route": "app/api/models/route.js",
66
70
  "/api/project-trust/route": "app/api/project-trust/route.js",
67
71
  "/api/proxy/route": "app/api/proxy/route.js",
68
72
  "/api/proxy/test/route": "app/api/proxy/test/route.js",
69
73
  "/api/sessions/[id]/export/route": "app/api/sessions/[id]/export/route.js",
70
- "/api/skills/check/route": "app/api/skills/check/route.js",
71
74
  "/api/settings/title-model/route": "app/api/settings/title-model/route.js",
72
- "/api/skills/install/route": "app/api/skills/install/route.js",
73
75
  "/api/plugins/route": "app/api/plugins/route.js",
76
+ "/api/skills/check/route": "app/api/skills/check/route.js",
77
+ "/api/skills/install/route": "app/api/skills/install/route.js",
74
78
  "/api/skills/route": "app/api/skills/route.js",
75
79
  "/api/skills/update/route": "app/api/skills/update/route.js",
80
+ "/api/snippets/[id]/route": "app/api/snippets/[id]/route.js",
81
+ "/api/skills/search/route": "app/api/skills/search/route.js",
82
+ "/api/snippets/route": "app/api/snippets/route.js",
76
83
  "/api/tasks/[id]/changed-files/route": "app/api/tasks/[id]/changed-files/route.js",
84
+ "/api/subagents/route": "app/api/subagents/route.js",
77
85
  "/api/tasks/events/route": "app/api/tasks/events/route.js",
78
- "/api/skills/search/route": "app/api/skills/search/route.js",
79
86
  "/api/vision-config/route": "app/api/vision-config/route.js",
80
87
  "/api/usage/route": "app/api/usage/route.js",
81
88
  "/page": "app/page.js"
@@ -1 +1 @@
1
- exports.id=1213,exports.ids=[1213],exports.modules={16593:(a,b,c)=>{"use strict";c.d(b,{e:()=>z,p:()=>y});var d=c(29021),e=c(33873),f=c(21820);let g=(0,e.join)(process.cwd(),"lib","theme","openchamber"),h={...function(){let a={};try{if(!(0,d.existsSync)(g))return a;for(let b of(0,d.readdirSync)(g)){if(!b.endsWith(".json"))continue;let c=(0,e.join)(g,b);try{let f=JSON.parse((0,d.readFileSync)(c,"utf8"));if(!f||"object"!=typeof f)continue;a[(0,e.basename)(b,".json")]=f}catch{}}}catch{}return a}(),gruvbox:{displayName:"Gruvbox",light:{bg:"#fbf1c7",panel:"#f2e5bc",hover:"#ebdbb2",selected:"#d5c4a1",border:"#bdae93",text:"#3c3836",muted:"#7c6f64",dim:"#a89984",accent:"#458588",accentHover:"#076678",userBg:"#ebdbb2",assistantBg:"#fbf1c7",toolBg:"#f2e5bc",subtle:"rgba(0,0,0,0.04)",red:"#cc241d",green:"#689d6a",orange:"#d65d0e"},dark:{bg:"#1d2021",panel:"#282828",hover:"#3c3836",selected:"#504945",border:"#665c54",text:"#ebdbb2",muted:"#a89984",dim:"#7c6f64",accent:"#83a598",accentHover:"#8ec07c",userBg:"#3c3836",assistantBg:"#282828",toolBg:"#32302f",subtle:"rgba(255,255,255,0.04)",red:"#fb4934",green:"#b8bb26",orange:"#d65d0e"}},nord:{displayName:"Nord",light:{bg:"#e5e9f0",panel:"#eceff4",hover:"#d8dee9",selected:"#c8d0dd",border:"#b6c2d2",text:"#2e3440",muted:"#4c566a",dim:"#6c7890",accent:"#5e81ac",accentHover:"#81a1c1",userBg:"#d8dee9",assistantBg:"#e5e9f0",toolBg:"#eceff4",subtle:"rgba(46,52,64,0.05)",red:"#bf616a",green:"#a3be8c",orange:"#d08770"},dark:{bg:"#2e3440",panel:"#3b4252",hover:"#434c5e",selected:"#4c566a",border:"#5e6680",text:"#eceff4",muted:"#a0aec4",dim:"#7c88a0",accent:"#88c0d0",accentHover:"#81a1c1",userBg:"#434c5e",assistantBg:"#3b4252",toolBg:"#3a4252",subtle:"rgba(236,239,244,0.05)",red:"#bf616a",green:"#a3be8c",orange:"#d08770"}},tokyo:{displayName:"Tokyo Night",light:{bg:"#d5d6db",panel:"#e3e4e9",hover:"#c9cad1",selected:"#b8b9c2",border:"#a6a7b5",text:"#343b59",muted:"#4f5670",dim:"#6f7691",accent:"#565f89",accentHover:"#7aa2f7",userBg:"#c9cad1",assistantBg:"#d5d6db",toolBg:"#e3e4e9",subtle:"rgba(52,59,89,0.05)",red:"#f7768e",green:"#9ece6a",orange:"#e0af68"},dark:{bg:"#1a1b26",panel:"#24283b",hover:"#2f3549",selected:"#3b4261",border:"#414868",text:"#c0caf5",muted:"#7c83b3",dim:"#565f89",accent:"#7aa2f7",accentHover:"#89ddff",userBg:"#2f3549",assistantBg:"#24283b",toolBg:"#1f2335",subtle:"rgba(192,202,245,0.05)",red:"#f7768e",green:"#9ece6a",orange:"#e0af68"}},solarized:{displayName:"Solarized",light:{bg:"#fdf6e3",panel:"#eee8d5",hover:"#e4ddc7",selected:"#d9d2b8",border:"#c3bda8",text:"#586e75",muted:"#7a8a8a",dim:"#93a1a1",accent:"#268bd2",accentHover:"#2aa198",userBg:"#eee8d5",assistantBg:"#fdf6e3",toolBg:"#eee8d5",subtle:"rgba(88,110,117,0.06)",red:"#dc322f",green:"#859900",orange:"#b58900"},dark:{bg:"#002b36",panel:"#073642",hover:"#0e4250",selected:"#14505e",border:"#2c5c66",text:"#839496",muted:"#6d8284",dim:"#586e75",accent:"#268bd2",accentHover:"#2aa198",userBg:"#0e4250",assistantBg:"#073642",toolBg:"#05313c",subtle:"rgba(131,148,150,0.08)",red:"#dc322f",green:"#859900",orange:"#b58900"}},onedark:{displayName:"One Dark",light:{bg:"#fafafa",panel:"#f0f0f0",hover:"#e5e5e5",selected:"#d8d8d8",border:"#c8c8c8",text:"#383a42",muted:"#7f848e",dim:"#a0a1a7",accent:"#4078f2",accentHover:"#005cc5",userBg:"#e8e8f0",assistantBg:"#fafafa",toolBg:"#f0f0f0",subtle:"rgba(56,58,66,0.04)",red:"#e06c75",green:"#98c379",orange:"#d19a66"},dark:{bg:"#282c34",panel:"#21252b",hover:"#2c313a",selected:"#3b4048",border:"#4b5263",text:"#abb2bf",muted:"#7d8799",dim:"#5c6370",accent:"#61afef",accentHover:"#528bff",userBg:"#2c313a",assistantBg:"#21252b",toolBg:"#1e2227",subtle:"rgba(171,178,191,0.06)",red:"#e06c75",green:"#98c379",orange:"#d19a66"}},dracula:{displayName:"Dracula",light:{bg:"#f8f8f2",panel:"#f0f0ea",hover:"#e6e6de",selected:"#d8d8cf",border:"#c6c6bb",text:"#282a36",muted:"#5f6380",dim:"#8a8fae",accent:"#6272a4",accentHover:"#44475a",userBg:"#e6e6de",assistantBg:"#f8f8f2",toolBg:"#f0f0ea",subtle:"rgba(40,42,54,0.05)",red:"#ff5555",green:"#50fa7b",orange:"#ffb86c"},dark:{bg:"#282a36",panel:"#21222c",hover:"#343746",selected:"#44475a",border:"#4a4d63",text:"#f8f8f2",muted:"#9094ad",dim:"#6272a4",accent:"#bd93f9",accentHover:"#ff79c6",userBg:"#343746",assistantBg:"#21222c",toolBg:"#1e1f29",subtle:"rgba(248,248,242,0.05)",red:"#ff5555",green:"#50fa7b",orange:"#ffb86c"}},catppuccin:{displayName:"Catppuccin",light:{bg:"#eff1f5",panel:"#e6e9ef",hover:"#dce0e8",selected:"#ccd0da",border:"#bcc0cc",text:"#4c4f69",muted:"#6c6f85",dim:"#8c8fa1",accent:"#1e66f5",accentHover:"#7287fd",userBg:"#dce0e8",assistantBg:"#eff1f5",toolBg:"#e6e9ef",subtle:"rgba(76,79,105,0.05)",red:"#d20f39",green:"#40a02b",orange:"#df8e1d"},dark:{bg:"#1e1e2e",panel:"#181825",hover:"#313244",selected:"#45475a",border:"#585b70",text:"#cdd6f4",muted:"#8f93b2",dim:"#6c7086",accent:"#89b4fa",accentHover:"#b4befe",userBg:"#313244",assistantBg:"#181825",toolBg:"#14141f",subtle:"rgba(205,214,244,0.05)",red:"#f38ba8",green:"#a6e3a1",orange:"#fab387"}}};function i(a){let b={0:"#000000",1:"#800000",2:"#008000",3:"#808000",4:"#000080",5:"#800080",6:"#008080",7:"#c0c0c0",8:"#808080",9:"#ff0000",10:"#00ff00",11:"#ffff00",12:"#0000ff",13:"#ff00ff",14:"#00ffff",15:"#ffffff"};if(a in b)return b[a];if(a>=16&&a<=231){let b=a-16,c=Math.round(Math.floor(b/36)%6*51),d=Math.round(Math.floor(b/6)%6*51),e=Math.round(b%6*51);return`#${c.toString(16).padStart(2,"0")}${d.toString(16).padStart(2,"0")}${e.toString(16).padStart(2,"0")}`}if(a>=232&&a<=255){let b=Math.round((a-232)/23*255).toString(16).padStart(2,"0");return`#${b}${b}${b}`}return"#000000"}function j(a,b){if(null==a)return"";if("number"==typeof a)return i(a);if("string"==typeof a){let c=a.trim();if(""===c)return"";if(c.startsWith("#"))return c.toLowerCase();if(b[c])return b[c].toLowerCase();let d=Number(c);return isNaN(d)||c!==String(d)?/^[0-9a-fA-F]{6}$/.test(c)?`#${c.toLowerCase()}`:c.toLowerCase():i(d)}return""}function k(a){let b={};if(!a)return b;for(let[c,d]of Object.entries(a))b[c]=j(d,{});return b}function l(a,b){let c={};for(let[d,e]of Object.entries(a))c[d]=j(e,b);return c}function m(a){let b=/^#([0-9a-f]{2})([0-9a-f]{2})([0-9a-f]{2})$/.exec(a);return b?[parseInt(b[1],16),parseInt(b[2],16),parseInt(b[3],16)]:null}function n(a,b,c){return`#${a.toString(16).padStart(2,"0")}${b.toString(16).padStart(2,"0")}${c.toString(16).padStart(2,"0")}`}function o(a,b){let c=m(a);if(!c)return a;let[d,e,f]=c;return n(Math.round(d+(255-d)*b),Math.round(e+(255-e)*b),Math.round(f+(255-f)*b))}function p(a,b){let c=m(a);if(!c)return a;let[d,e,f]=c;return n(Math.round(d*(1-b)),Math.round(e*(1-b)),Math.round(f*(1-b)))}function q(a,b,c){let d=m(a),e=m(b);return d&&e?n(Math.round(d[0]+(e[0]-d[0])*c),Math.round(d[1]+(e[1]-d[1])*c),Math.round(d[2]+(e[2]-d[2])*c)):a}function r(a){let b=m(a);if(!b)return .5;let[c,d,e]=b.map(a=>{let b=a/255;return b<=.03928?b/12.92:Math.pow((b+.055)/1.055,2.4)});return .2126*c+.7152*d+.0722*e}function s(a,b){let c=r(a),d=r(b);return(Math.max(c,d)+.05)/(Math.min(c,d)+.05)}function t(a,b,c=3){if(!m(a)||!m(b)||s(a,b)>=c)return a;let d=r(b)>r(a);for(let e=1;e<=20;e+=1){let f=d?p(a,.05*e):o(a,.05*e);if(s(f,b)>=c)return f}return d?"#000000":"#ffffff"}function u(a,b){let c=b.bg0||"#1a1a1a",d=b.bg1||"#242424",e=b.bg2||"#2e2e2e",f=b.bg3||"#383838",g=b.fg0||"#e8e8e8",h=b.fg3||"#888888",i=b.fg4||"#555555",j=b.red||"#dc2626",k=b.green||"#16a34a",l=b.orange||"#d97706",n=a.accent||l,s=a.text||g,u=a.muted||h,v=a.dim||i,w=a.border||f,x=a.borderAccent||n,y=a.selectedBg||e,z=a.success||k,A=a.error||j,B=a.warning||l,C=a.toolDiffAdded||z,D=a.toolDiffRemoved||A,E=a.userMessageBg||d,F=a.toolSuccessBg||d,G=.5>r(c),H={};H["--bg"]=c,H["--bg-panel"]=d,H["--bg-secondary"]=d,H["--bg-card"]=d,H["--bg-hover"]=e,H["--bg-selected"]=y===d?e:y,H["--bg-card-hover"]=q(d,e,.5),H["--bg-subtle"]=G?"rgba(255,255,255,0.035)":"rgba(15,23,42,0.035)",H["--border"]=w,H["--border-hover"]=x,H["--text"]=s,H["--text-muted"]=u,H["--text-dim"]=v,H["--accent"]=n,H["--accent-hover"]=G?o(n,.2):p(n,.15),H["--accent-blue"]=b.blue||n,H["--accent-red"]=A,H["--accent-green"]=z,H["--accent-orange"]=B;let I=G?.24:.18;return H["--git-status-added"]=t(C,d),H["--git-status-modified"]=t(B,d),H["--git-status-deleted"]=t(D,d),H["--git-status-added-bg"]=q(d,C,I),H["--git-status-modified-bg"]=q(d,B,I),H["--git-status-deleted-bg"]=q(d,D,I),H["--user-bg"]=E,H["--assistant-bg"]=c,H["--tool-bg"]=F,H["--hatch-color"]=G?`rgba(${m(n)?.join(",")||"100,193,182"},0.16)`:`rgba(${m(n)?.join(",")||"13,148,136"},0.12)`,H}let v=["accent","border","borderAccent","borderMuted","success","error","warning","muted","dim","text","thinkingText","selectedBg","userMessageBg","userMessageText","customMessageBg","customMessageText","customMessageLabel","toolPendingBg","toolSuccessBg","toolErrorBg","toolTitle","toolOutput","mdHeading","mdLink","mdLinkUrl","mdCode","mdCodeBlock","mdCodeBlockBorder","mdQuote","mdQuoteBorder","mdHr","mdListBullet","toolDiffAdded","toolDiffRemoved","toolDiffContext","syntaxComment","syntaxKeyword","syntaxFunction","syntaxVariable","syntaxString","syntaxNumber","syntaxType","syntaxOperator","syntaxPunctuation","thinkingOff","thinkingMinimal","thinkingLow","thinkingMedium","thinkingHigh","thinkingXhigh","thinkingMax","bashMode"];function w(a){try{let c=(0,d.readFileSync)(a,"utf-8"),e=JSON.parse(c);if(e.metadata&&"object"==typeof e.metadata&&("light"===e.metadata.variant||"dark"===e.metadata.variant)&&e.colors&&"object"==typeof e.colors&&e.colors.primary){var b;let a,c,d,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u,v,w;return c=(a=(b=e).colors).surface??{},d=a.interactive??{},f=a.primary??{},g=a.status??{},h=a.chat??{},i=a.tools??{},k=(j=a=>"string"==typeof a&&/^#[0-9a-fA-F]{3,8}$/.test(a)?a:"")(c.background)||"#1a1a1a",l=j(c.elevated),m=j(c.muted),n=j(c.subtle),o=j(c.foreground)||"#e8e8e8",p=j(c.mutedForeground),q=j(f.base),r=j(f.hover)||q,s=j(d.border)||"#404040",u=(t=(a,b)=>{if(/^#[0-9a-fA-F]{8}$/.test(a)){let c=parseInt(a.slice(7,9),16)/255,d=a.slice(1,7),e=Math.round(parseInt(d.slice(0,2),16)*c+parseInt(b.slice(1,3),16)*(1-c)),f=Math.round(parseInt(d.slice(2,4),16)*c+parseInt(b.slice(3,5),16)*(1-c)),g=Math.round(parseInt(d.slice(4,6),16)*c+parseInt(b.slice(5,7),16)*(1-c));return`#${[e,f,g].map(a=>a.toString(16).padStart(2,"0")).join("")}`}return a})(j(h.userMessageBackground)||(q?`${q}26`:""),k),v=t(j(i.background)||m||n||k,k),w=b.metadata&&"object"==typeof b.metadata?b.metadata:{},{name:"string"==typeof w.name?w.name:"custom",vars:{bg0:k,bg1:l||m||k,bg2:m||n||k,bg3:n||m||k,fg0:o,fg3:p||"#888888",fg4:p||"#777777"},colors:{accent:q,accentHover:r,text:o,muted:p||o,dim:p||"#888888",border:s,borderAccent:q||s,selectedBg:n||m||"",success:j(g.success)||"#16a34a",error:j(g.error)||"#dc2626",warning:j(g.warning)||"#d97706",userMessageBg:u||k,toolSuccessBg:v||k}}}if(!e.name||"string"!=typeof e.name||!e.colors||"object"!=typeof e.colors)return null;let f={};for(let a of v)f[a]=e.colors[a]??"";return{name:e.name,vars:e.vars,colors:f}}catch{return null}}function x(a){let b=[];try{if(!(0,d.existsSync)(a))return b;for(let c of(0,d.readdirSync)(a)){if(".json"!==(0,e.extname)(c))continue;let f=(0,e.join)(a,c);try{if(!(0,d.statSync)(f).isFile())continue}catch{continue}let g=function(a){let b=(0,e.basename)(a,(0,e.extname)(a)),c=/^(.+)-dark$/i.exec(b);if(c)return{base:c[1],variant:"dark"};let d=/^(.+)-light$/i.exec(b);return d?{base:d[1],variant:"light"}:{base:b,variant:null}}(c),h=w(f);if(!h)continue;let i=k(h.vars).bg0||"#1a1a1a",j=.5>r(i),l=g.variant??(j?"dark":"light");b.push({path:f,base:g.base,variant:l,isDark:j})}}catch{}return b}function y(a){let b=Object.entries(h).map(([a,b])=>({name:a,displayName:b.displayName,hasDark:!!b.dark,hasLight:!!b.light,builtin:!0,accent:b.dark?.accent,accentLight:b.light?.accent})),c=new Set(Object.keys(h)),g=[],i=(0,e.join)((0,f.homedir)(),".pi","agent","themes");if(g.push(...x(i)),a){let b=(0,e.join)(a,".pi","themes");g.push(...x(b))}let j=new Map;for(let a of g){let b=j.get(a.base)||[];b.push(a),j.set(a.base,b)}for(let[a,e]of j){if(c.has(a))continue;c.add(a);let f=!1,g=!1;for(let a of e)"dark"===a.variant&&(f=!0),"light"===a.variant&&(g=!0);b.push({name:a,displayName:a.split(/[-_]/).map(a=>a.charAt(0).toUpperCase()+a.slice(1)).join(" "),hasDark:f,hasLight:g,builtin:!1,...function(a){let b=(a,b)=>{if(a)try{let b=JSON.parse((0,d.readFileSync)(a.path,"utf8"));if(!b.colors||"object"!=typeof b.colors)return;let c=b.colors,e="string"==typeof c.accent?c.accent:"object"==typeof c.primary&&null!==c.primary?c.primary.base:void 0;if("string"==typeof e&&/^#[0-9a-fA-F]{3,8}$/.test(e))return e.toLowerCase();let f=JSON.parse((0,d.readFileSync)(a.path,"utf8")),g=f.vars?.primary;if("string"==typeof g&&/^#[0-9a-fA-F]{3,8}$/.test(g))return g.toLowerCase()}catch{}},c=a.find(a=>"dark"===a.variant),e=a.find(a=>"light"===a.variant);return{accent:b(c,"dark"),accentLight:b(e,"light")}}(e)})}return b}function z(a,b,c){if(!a)return null;let g=function(a,b){let c=h[a];if(!c)return null;let d=c[b];return d?{name:a,isDark:"dark"===b,cssVars:{"--bg":d.bg,"--bg-panel":d.panel,"--bg-secondary":d.panel,"--bg-card":d.panel,"--bg-hover":d.hover,"--bg-selected":d.selected,"--bg-card-hover":d.hover,"--bg-subtle":d.subtle,"--border":d.border,"--border-hover":d.accentHover,"--text":d.text,"--text-muted":d.muted,"--text-dim":d.dim,"--accent":d.accent,"--accent-hover":d.accentHover,"--accent-blue":d.accent,"--accent-red":d.red,"--accent-green":d.green,"--accent-orange":d.orange,"--git-status-added":d.green,"--git-status-modified":d.orange,"--git-status-deleted":d.red,"--git-status-added-bg":d.userBg,"--git-status-modified-bg":d.hover,"--git-status-deleted-bg":d.hover,"--user-bg":d.userBg,"--assistant-bg":d.assistantBg,"--tool-bg":d.toolBg,"--hatch-color":d.subtle}}:null}(a,b);if(g)return g;let i=[(0,e.join)((0,f.homedir)(),".pi","agent","themes")];c&&i.push((0,e.join)(c,".pi","themes"));let j=[`${a}-${b}.json`,`${a}.json`,`${a}-${"dark"===b?"light":"dark"}.json`];for(let b of i)for(let c of j){let f=(0,e.join)(b,c);if(!(0,d.existsSync)(f))continue;let g=w(f);if(!g)continue;let h=k(g.vars),i=u(l(g.colors,h),h);return{name:a,isDark:.5>r(h.bg0||"#1a1a1a"),cssVars:i}}if((0,d.existsSync)(a)){let b=w(a);if(b){let c=k(b.vars),d=u(l(b.colors,c),c),f=c.bg0||"#1a1a1a";return{name:(0,e.basename)(a,(0,e.extname)(a)),isDark:.5>r(f),cssVars:d}}}return null}},78335:()=>{},96487:()=>{}};
1
+ exports.id=1213,exports.ids=[1213],exports.modules={16593:(a,b,c)=>{"use strict";c.d(b,{e:()=>z,p:()=>y});var d=c(29021),e=c(33873),f=c(21820);let g=(0,e.join)(process.cwd(),"lib","theme","openchamber"),h={...function(){let a={};try{if(!(0,d.existsSync)(g))return a;for(let b of(0,d.readdirSync)(g)){if(!b.endsWith(".json"))continue;let c=(0,e.join)(g,b);try{let f=JSON.parse((0,d.readFileSync)(c,"utf8"));if(!f||"object"!=typeof f)continue;a[(0,e.basename)(b,".json")]=f}catch{}}}catch{}return a}(),gruvbox:{displayName:"Gruvbox",light:{bg:"#fbf1c7",panel:"#f2e5bc",hover:"#ebdbb2",selected:"#d5c4a1",border:"#bdae93",text:"#3c3836",muted:"#7c6f64",dim:"#a89984",accent:"#458588",accentHover:"#076678",userBg:"#ebdbb2",assistantBg:"#fbf1c7",toolBg:"#f2e5bc",subtle:"rgba(0,0,0,0.04)",red:"#cc241d",green:"#689d6a",orange:"#d65d0e"},dark:{bg:"#1d2021",panel:"#282828",hover:"#3c3836",selected:"#504945",border:"#665c54",text:"#ebdbb2",muted:"#a89984",dim:"#7c6f64",accent:"#83a598",accentHover:"#8ec07c",userBg:"#3c3836",assistantBg:"#282828",toolBg:"#32302f",subtle:"rgba(255,255,255,0.04)",red:"#fb4934",green:"#b8bb26",orange:"#d65d0e"}},nord:{displayName:"Nord",light:{bg:"#e5e9f0",panel:"#eceff4",hover:"#d8dee9",selected:"#c8d0dd",border:"#b6c2d2",text:"#2e3440",muted:"#4c566a",dim:"#6c7890",accent:"#5e81ac",accentHover:"#81a1c1",userBg:"#d8dee9",assistantBg:"#e5e9f0",toolBg:"#eceff4",subtle:"rgba(46,52,64,0.05)",red:"#bf616a",green:"#a3be8c",orange:"#d08770"},dark:{bg:"#2e3440",panel:"#3b4252",hover:"#434c5e",selected:"#4c566a",border:"#5e6680",text:"#eceff4",muted:"#a0aec4",dim:"#7c88a0",accent:"#88c0d0",accentHover:"#81a1c1",userBg:"#434c5e",assistantBg:"#3b4252",toolBg:"#3a4252",subtle:"rgba(236,239,244,0.05)",red:"#bf616a",green:"#a3be8c",orange:"#d08770"}},tokyo:{displayName:"Tokyo Night",light:{bg:"#d5d6db",panel:"#e3e4e9",hover:"#c9cad1",selected:"#b8b9c2",border:"#a6a7b5",text:"#343b59",muted:"#4f5670",dim:"#6f7691",accent:"#565f89",accentHover:"#7aa2f7",userBg:"#c9cad1",assistantBg:"#d5d6db",toolBg:"#e3e4e9",subtle:"rgba(52,59,89,0.05)",red:"#f7768e",green:"#9ece6a",orange:"#e0af68"},dark:{bg:"#1a1b26",panel:"#24283b",hover:"#2f3549",selected:"#3b4261",border:"#414868",text:"#c0caf5",muted:"#7c83b3",dim:"#565f89",accent:"#7aa2f7",accentHover:"#89ddff",userBg:"#2f3549",assistantBg:"#24283b",toolBg:"#1f2335",subtle:"rgba(192,202,245,0.05)",red:"#f7768e",green:"#9ece6a",orange:"#e0af68"}},solarized:{displayName:"Solarized",light:{bg:"#fdf6e3",panel:"#eee8d5",hover:"#e4ddc7",selected:"#d9d2b8",border:"#c3bda8",text:"#586e75",muted:"#7a8a8a",dim:"#93a1a1",accent:"#268bd2",accentHover:"#2aa198",userBg:"#eee8d5",assistantBg:"#fdf6e3",toolBg:"#eee8d5",subtle:"rgba(88,110,117,0.06)",red:"#dc322f",green:"#859900",orange:"#b58900"},dark:{bg:"#002b36",panel:"#073642",hover:"#0e4250",selected:"#14505e",border:"#2c5c66",text:"#839496",muted:"#6d8284",dim:"#586e75",accent:"#268bd2",accentHover:"#2aa198",userBg:"#0e4250",assistantBg:"#073642",toolBg:"#05313c",subtle:"rgba(131,148,150,0.08)",red:"#dc322f",green:"#859900",orange:"#b58900"}},onedark:{displayName:"One Dark",light:{bg:"#fafafa",panel:"#f0f0f0",hover:"#e5e5e5",selected:"#d8d8d8",border:"#c8c8c8",text:"#383a42",muted:"#7f848e",dim:"#a0a1a7",accent:"#4078f2",accentHover:"#005cc5",userBg:"#e8e8f0",assistantBg:"#fafafa",toolBg:"#f0f0f0",subtle:"rgba(56,58,66,0.04)",red:"#e06c75",green:"#98c379",orange:"#d19a66"},dark:{bg:"#282c34",panel:"#21252b",hover:"#2c313a",selected:"#3b4048",border:"#4b5263",text:"#abb2bf",muted:"#7d8799",dim:"#5c6370",accent:"#61afef",accentHover:"#528bff",userBg:"#2c313a",assistantBg:"#21252b",toolBg:"#1e2227",subtle:"rgba(171,178,191,0.06)",red:"#e06c75",green:"#98c379",orange:"#d19a66"}},dracula:{displayName:"Dracula",light:{bg:"#f8f8f2",panel:"#f0f0ea",hover:"#e6e6de",selected:"#d8d8cf",border:"#c6c6bb",text:"#282a36",muted:"#5f6380",dim:"#8a8fae",accent:"#6272a4",accentHover:"#44475a",userBg:"#e6e6de",assistantBg:"#f8f8f2",toolBg:"#f0f0ea",subtle:"rgba(40,42,54,0.05)",red:"#ff5555",green:"#50fa7b",orange:"#ffb86c"},dark:{bg:"#282a36",panel:"#21222c",hover:"#343746",selected:"#44475a",border:"#4a4d63",text:"#f8f8f2",muted:"#9094ad",dim:"#6272a4",accent:"#bd93f9",accentHover:"#ff79c6",userBg:"#343746",assistantBg:"#21222c",toolBg:"#1e1f29",subtle:"rgba(248,248,242,0.05)",red:"#ff5555",green:"#50fa7b",orange:"#ffb86c"}},catppuccin:{displayName:"Catppuccin",light:{bg:"#eff1f5",panel:"#e6e9ef",hover:"#dce0e8",selected:"#ccd0da",border:"#bcc0cc",text:"#4c4f69",muted:"#6c6f85",dim:"#8c8fa1",accent:"#1e66f5",accentHover:"#7287fd",userBg:"#dce0e8",assistantBg:"#eff1f5",toolBg:"#e6e9ef",subtle:"rgba(76,79,105,0.05)",red:"#d20f39",green:"#40a02b",orange:"#df8e1d"},dark:{bg:"#1e1e2e",panel:"#181825",hover:"#313244",selected:"#45475a",border:"#585b70",text:"#cdd6f4",muted:"#8f93b2",dim:"#6c7086",accent:"#89b4fa",accentHover:"#b4befe",userBg:"#313244",assistantBg:"#181825",toolBg:"#14141f",subtle:"rgba(205,214,244,0.05)",red:"#f38ba8",green:"#a6e3a1",orange:"#fab387"}}};function i(a){let b={0:"#000000",1:"#800000",2:"#008000",3:"#808000",4:"#000080",5:"#800080",6:"#008080",7:"#c0c0c0",8:"#808080",9:"#ff0000",10:"#00ff00",11:"#ffff00",12:"#0000ff",13:"#ff00ff",14:"#00ffff",15:"#ffffff"};if(a in b)return b[a];if(a>=16&&a<=231){let b=a-16,c=Math.round(Math.floor(b/36)%6*51),d=Math.round(Math.floor(b/6)%6*51),e=Math.round(b%6*51);return`#${c.toString(16).padStart(2,"0")}${d.toString(16).padStart(2,"0")}${e.toString(16).padStart(2,"0")}`}if(a>=232&&a<=255){let b=Math.round((a-232)/23*255).toString(16).padStart(2,"0");return`#${b}${b}${b}`}return"#000000"}function j(a,b){if(null==a)return"";if("number"==typeof a)return i(a);if("string"==typeof a){let c=a.trim();if(""===c)return"";if(c.startsWith("#"))return c.toLowerCase();if(b[c])return b[c].toLowerCase();let d=Number(c);return isNaN(d)||c!==String(d)?/^[0-9a-fA-F]{6}$/.test(c)?`#${c.toLowerCase()}`:c.toLowerCase():i(d)}return""}function k(a){let b={};if(!a)return b;for(let[c,d]of Object.entries(a))b[c]=j(d,{});return b}function l(a,b){let c={};for(let[d,e]of Object.entries(a))c[d]=j(e,b);return c}function m(a){let b=/^#([0-9a-f]{2})([0-9a-f]{2})([0-9a-f]{2})$/.exec(a);return b?[parseInt(b[1],16),parseInt(b[2],16),parseInt(b[3],16)]:null}function n(a,b,c){return`#${a.toString(16).padStart(2,"0")}${b.toString(16).padStart(2,"0")}${c.toString(16).padStart(2,"0")}`}function o(a,b){let c=m(a);if(!c)return a;let[d,e,f]=c;return n(Math.round(d+(255-d)*b),Math.round(e+(255-e)*b),Math.round(f+(255-f)*b))}function p(a,b){let c=m(a);if(!c)return a;let[d,e,f]=c;return n(Math.round(d*(1-b)),Math.round(e*(1-b)),Math.round(f*(1-b)))}function q(a,b,c){let d=m(a),e=m(b);return d&&e?n(Math.round(d[0]+(e[0]-d[0])*c),Math.round(d[1]+(e[1]-d[1])*c),Math.round(d[2]+(e[2]-d[2])*c)):a}function r(a){let b=m(a);if(!b)return .5;let[c,d,e]=b.map(a=>{let b=a/255;return b<=.03928?b/12.92:Math.pow((b+.055)/1.055,2.4)});return .2126*c+.7152*d+.0722*e}function s(a,b){let c=r(a),d=r(b);return(Math.max(c,d)+.05)/(Math.min(c,d)+.05)}function t(a,b,c=3){if(!m(a)||!m(b)||s(a,b)>=c)return a;let d=r(b)>r(a);for(let e=1;e<=20;e+=1){let f=d?p(a,.05*e):o(a,.05*e);if(s(f,b)>=c)return f}return d?"#000000":"#ffffff"}function u(a,b){let c=b.bg0||"#1a1a1a",d=b.bg1||"#242424",e=b.bg2||"#2e2e2e",f=b.bg3||"#383838",g=b.fg0||"#e8e8e8",h=b.fg3||"#888888",i=b.fg4||"#555555",j=b.red||"#dc2626",k=b.green||"#16a34a",l=b.orange||"#d97706",n=a.accent||l,s=a.text||g,u=a.muted||h,v=a.dim||i,w=a.border||f,x=a.borderAccent||n,y=a.selectedBg||e,z=a.success||k,A=a.error||j,B=a.warning||l,C=a.toolDiffAdded||z,D=a.toolDiffRemoved||A,E=a.userMessageBg||d,F=a.toolSuccessBg||d,G=.5>r(c),H={};H["--bg"]=c,H["--bg-panel"]=d,H["--bg-secondary"]=d,H["--bg-card"]=d,H["--bg-hover"]=e,H["--bg-selected"]=y===d?e:y,H["--bg-card-hover"]=q(d,e,.5),H["--bg-subtle"]=G?"rgba(255,255,255,0.035)":"rgba(15,23,42,0.035)",H["--border"]=w,H["--border-hover"]=x,H["--text"]=s,H["--text-muted"]=u,H["--text-dim"]=v,H["--accent"]=n,H["--accent-hover"]=G?o(n,.2):p(n,.15),H["--accent-blue"]=b.blue||n,H["--accent-red"]=A,H["--accent-green"]=z,H["--accent-orange"]=B;let I=G?.24:.18;return H["--git-status-added"]=t(C,d),H["--git-status-modified"]=t(B,d),H["--git-status-deleted"]=t(D,d),H["--git-status-added-bg"]=q(d,C,I),H["--git-status-modified-bg"]=q(d,B,I),H["--git-status-deleted-bg"]=q(d,D,I),H["--user-bg"]=E,H["--assistant-bg"]=c,H["--tool-bg"]=F,H["--hatch-color"]=G?`rgba(${m(n)?.join(",")||"100,193,182"},0.16)`:`rgba(${m(n)?.join(",")||"13,148,136"},0.12)`,H["--status-error"]=A,H["--status-warning"]=B,H["--status-success"]=z,H["--status-info"]=n,H["--status-error-bg"]=`color-mix(in srgb, ${A} 14%, var(--bg))`,H["--status-warning-bg"]=`color-mix(in srgb, ${B} 14%, var(--bg))`,H["--status-success-bg"]=`color-mix(in srgb, ${z} 14%, var(--bg))`,H["--status-info-bg"]=`color-mix(in srgb, ${n} 14%, var(--bg))`,H["--status-error-border"]=`color-mix(in srgb, ${A} 45%, var(--bg))`,H["--status-warning-border"]=`color-mix(in srgb, ${B} 45%, var(--bg))`,H["--status-success-border"]=`color-mix(in srgb, ${z} 45%, var(--bg))`,H["--status-info-border"]=`color-mix(in srgb, ${n} 45%, var(--bg))`,H["--syntax-keyword"]=a.syntaxKeyword||a.keyword||n,H["--syntax-string"]=a.syntaxString||a.string||l,H["--syntax-number"]=a.syntaxNumber||a.number||n,H["--syntax-function"]=a.syntaxFunction||a.function||n,H["--syntax-comment"]=a.syntaxComment||a.comment||v,H}let v=["accent","border","borderAccent","borderMuted","success","error","warning","muted","dim","text","thinkingText","selectedBg","userMessageBg","userMessageText","customMessageBg","customMessageText","customMessageLabel","toolPendingBg","toolSuccessBg","toolErrorBg","toolTitle","toolOutput","mdHeading","mdLink","mdLinkUrl","mdCode","mdCodeBlock","mdCodeBlockBorder","mdQuote","mdQuoteBorder","mdHr","mdListBullet","toolDiffAdded","toolDiffRemoved","toolDiffContext","syntaxComment","syntaxKeyword","syntaxFunction","syntaxVariable","syntaxString","syntaxNumber","syntaxType","syntaxOperator","syntaxPunctuation","thinkingOff","thinkingMinimal","thinkingLow","thinkingMedium","thinkingHigh","thinkingXhigh","thinkingMax","bashMode"];function w(a){try{let c=(0,d.readFileSync)(a,"utf-8"),e=JSON.parse(c);if(e.metadata&&"object"==typeof e.metadata&&("light"===e.metadata.variant||"dark"===e.metadata.variant)&&e.colors&&"object"==typeof e.colors&&e.colors.primary){var b;let a,c,d,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u,v,w;return c=(a=(b=e).colors).surface??{},d=a.interactive??{},f=a.primary??{},g=a.status??{},h=a.chat??{},i=a.tools??{},k=(j=a=>"string"==typeof a&&/^#[0-9a-fA-F]{3,8}$/.test(a)?a:"")(c.background)||"#1a1a1a",l=j(c.elevated),m=j(c.muted),n=j(c.subtle),o=j(c.foreground)||"#e8e8e8",p=j(c.mutedForeground),q=j(f.base),r=j(f.hover)||q,s=j(d.border)||"#404040",u=(t=(a,b)=>{if(/^#[0-9a-fA-F]{8}$/.test(a)){let c=parseInt(a.slice(7,9),16)/255,d=a.slice(1,7),e=Math.round(parseInt(d.slice(0,2),16)*c+parseInt(b.slice(1,3),16)*(1-c)),f=Math.round(parseInt(d.slice(2,4),16)*c+parseInt(b.slice(3,5),16)*(1-c)),g=Math.round(parseInt(d.slice(4,6),16)*c+parseInt(b.slice(5,7),16)*(1-c));return`#${[e,f,g].map(a=>a.toString(16).padStart(2,"0")).join("")}`}return a})(j(h.userMessageBackground)||(q?`${q}26`:""),k),v=t(j(i.background)||m||n||k,k),w=b.metadata&&"object"==typeof b.metadata?b.metadata:{},{name:"string"==typeof w.name?w.name:"custom",vars:{bg0:k,bg1:l||m||k,bg2:m||n||k,bg3:n||m||k,fg0:o,fg3:p||"#888888",fg4:p||"#777777"},colors:{accent:q,accentHover:r,text:o,muted:p||o,dim:p||"#888888",border:s,borderAccent:q||s,selectedBg:n||m||"",success:j(g.success)||"#16a34a",error:j(g.error)||"#dc2626",warning:j(g.warning)||"#d97706",userMessageBg:u||k,toolSuccessBg:v||k,keyword:j(a.syntax?.base?.keyword)||q,string:j(a.syntax?.base?.string)||"",number:j(a.syntax?.base?.number)||"",function:j(a.syntax?.base?.function)||"",comment:j(a.syntax?.base?.comment)||""}}}if(!e.name||"string"!=typeof e.name||!e.colors||"object"!=typeof e.colors)return null;let f={};for(let a of v)f[a]=e.colors[a]??"";return{name:e.name,vars:e.vars,colors:f}}catch{return null}}function x(a){let b=[];try{if(!(0,d.existsSync)(a))return b;for(let c of(0,d.readdirSync)(a)){if(".json"!==(0,e.extname)(c))continue;let f=(0,e.join)(a,c);try{if(!(0,d.statSync)(f).isFile())continue}catch{continue}let g=function(a){let b=(0,e.basename)(a,(0,e.extname)(a)),c=/^(.+)-dark$/i.exec(b);if(c)return{base:c[1],variant:"dark"};let d=/^(.+)-light$/i.exec(b);return d?{base:d[1],variant:"light"}:{base:b,variant:null}}(c),h=w(f);if(!h)continue;let i=k(h.vars).bg0||"#1a1a1a",j=.5>r(i),l=g.variant??(j?"dark":"light");b.push({path:f,base:g.base,variant:l,isDark:j})}}catch{}return b}function y(a){let b=Object.entries(h).map(([a,b])=>({name:a,displayName:b.displayName,hasDark:!!b.dark,hasLight:!!b.light,builtin:!0,accent:b.dark?.accent,accentLight:b.light?.accent})),c=new Set(Object.keys(h)),g=[],i=(0,e.join)((0,f.homedir)(),".pi","agent","themes");if(g.push(...x(i)),a){let b=(0,e.join)(a,".pi","themes");g.push(...x(b))}let j=new Map;for(let a of g){let b=j.get(a.base)||[];b.push(a),j.set(a.base,b)}for(let[a,e]of j){if(c.has(a))continue;c.add(a);let f=!1,g=!1;for(let a of e)"dark"===a.variant&&(f=!0),"light"===a.variant&&(g=!0);b.push({name:a,displayName:a.split(/[-_]/).map(a=>a.charAt(0).toUpperCase()+a.slice(1)).join(" "),hasDark:f,hasLight:g,builtin:!1,...function(a){let b=(a,b)=>{if(a)try{let b=JSON.parse((0,d.readFileSync)(a.path,"utf8"));if(!b.colors||"object"!=typeof b.colors)return;let c=b.colors,e="string"==typeof c.accent?c.accent:"object"==typeof c.primary&&null!==c.primary?c.primary.base:void 0;if("string"==typeof e&&/^#[0-9a-fA-F]{3,8}$/.test(e))return e.toLowerCase();let f=JSON.parse((0,d.readFileSync)(a.path,"utf8")),g=f.vars?.primary;if("string"==typeof g&&/^#[0-9a-fA-F]{3,8}$/.test(g))return g.toLowerCase()}catch{}},c=a.find(a=>"dark"===a.variant),e=a.find(a=>"light"===a.variant);return{accent:b(c,"dark"),accentLight:b(e,"light")}}(e)})}return b}function z(a,b,c){if(!a)return null;let g=function(a,b){let c=h[a];if(!c)return null;let d=c[b];return d?{name:a,isDark:"dark"===b,cssVars:{"--bg":d.bg,"--bg-panel":d.panel,"--bg-secondary":d.panel,"--bg-card":d.panel,"--bg-hover":d.hover,"--bg-selected":d.selected,"--bg-card-hover":d.hover,"--bg-subtle":d.subtle,"--border":d.border,"--border-hover":d.accentHover,"--text":d.text,"--text-muted":d.muted,"--text-dim":d.dim,"--accent":d.accent,"--accent-hover":d.accentHover,"--accent-blue":d.accent,"--accent-red":d.red,"--accent-green":d.green,"--accent-orange":d.orange,"--git-status-added":d.green,"--git-status-modified":d.orange,"--git-status-deleted":d.red,"--git-status-added-bg":d.userBg,"--git-status-modified-bg":d.hover,"--git-status-deleted-bg":d.hover,"--user-bg":d.userBg,"--assistant-bg":d.assistantBg,"--tool-bg":d.toolBg,"--hatch-color":d.subtle,"--status-error":d.red,"--status-warning":d.orange,"--status-success":d.green,"--status-info":d.accent,"--status-error-bg":`color-mix(in srgb, ${d.red} 14%, var(--bg))`,"--status-warning-bg":`color-mix(in srgb, ${d.orange} 14%, var(--bg))`,"--status-success-bg":`color-mix(in srgb, ${d.green} 14%, var(--bg))`,"--status-info-bg":`color-mix(in srgb, ${d.accent} 14%, var(--bg))`,"--status-error-border":`color-mix(in srgb, ${d.red} 45%, var(--bg))`,"--status-warning-border":`color-mix(in srgb, ${d.orange} 45%, var(--bg))`,"--status-success-border":`color-mix(in srgb, ${d.green} 45%, var(--bg))`,"--status-info-border":`color-mix(in srgb, ${d.accent} 45%, var(--bg))`,"--syntax-keyword":d.accent,"--syntax-string":d.orange,"--syntax-number":d.accent,"--syntax-function":d.accent,"--syntax-comment":d.dim}}:null}(a,b);if(g)return g;let i=[(0,e.join)((0,f.homedir)(),".pi","agent","themes")];c&&i.push((0,e.join)(c,".pi","themes"));let j=[`${a}-${b}.json`,`${a}.json`,`${a}-${"dark"===b?"light":"dark"}.json`];for(let b of i)for(let c of j){let f=(0,e.join)(b,c);if(!(0,d.existsSync)(f))continue;let g=w(f);if(!g)continue;let h=k(g.vars),i=u(l(g.colors,h),h);return{name:a,isDark:.5>r(h.bg0||"#1a1a1a"),cssVars:i}}if((0,d.existsSync)(a)){let b=w(a);if(b){let c=k(b.vars),d=u(l(b.colors,c),c),f=c.bg0||"#1a1a1a";return{name:(0,e.basename)(a,(0,e.extname)(a)),isDark:.5>r(f),cssVars:d}}}return null}},78335:()=>{},96487:()=>{}};
@@ -1,4 +1,4 @@
1
- "use strict";exports.id=1499,exports.ids=[1499],exports.modules={6835:(a,b,c)=>{c.d(b,{os:()=>d});function d(){return{defaultAgentType:null,modeId:null,configValues:{},autoProcess:!0,maxConcurrent:1,mergeStrategy:"merge",deleteWorktreeDefault:!0,preflightCommand:null,initCommand:null,stagePrompts:null}}},46583:(a,b,c)=>{c.a(a,async(a,d)=>{try{c.d(b,{AI:()=>H,D2:()=>E,Mx:()=>z,Q1:()=>A,Rv:()=>D,_o:()=>w,_s:()=>C,bT:()=>y,dm:()=>B,eG:()=>G,fd:()=>x,h6:()=>v,jf:()=>F,k9:()=>I,listTaskProjects:()=>r,z1:()=>m});var e=c(29021),f=c(33873),g=c(75430),h=c(8102),i=c(50593),j=c(6835),k=a([g]);function l(){return(0,f.join)((0,g.getAgentDir)(),"tasks")}function m(a){return(0,f.join)(l(),(0,i.A0)(a).replace(/^\/+/,"").split("/").filter(Boolean).map(a=>encodeURIComponent(a)).join("--")||"root")}function n(a){return(0,f.join)(m(a),"tasks.jsonl")}function o(a){return(0,f.join)(m(a),"events.jsonl")}function p(){return(0,f.join)(l(),"settings.json")}function q(){return(0,f.join)(l(),"templates.jsonl")}function r(){let a=l();return(0,e.existsSync)(a)?(0,e.readdirSync)(a,{withFileTypes:!0}).filter(a=>a.isDirectory()&&"__engine__"!==a.name).map(a=>{var b;return b=a.name,"/"+b.split("--").map(a=>decodeURIComponent(a)).join("/")}):[]}function s(a){(0,e.existsSync)(a)||(0,e.mkdirSync)(a,{recursive:!0,mode:448})}function t(a){if(!(0,e.existsSync)(a))return[];let b=(0,e.readFileSync)(a,"utf8"),c=[];for(let a of b.split("\n")){let b=a.trim();if(b)try{c.push(JSON.parse(b))}catch{}}return c}function u(a,b){s(a.substring(0,a.lastIndexOf("/")));let c=b.map(a=>JSON.stringify(a)).join("\n")+"\n";(0,h.$)(a,c)}g=(k.then?(await k)():k)[0];let J="__piTaskStore";function v(a){return t(n(a)).sort((a,b)=>a.sortOrder-b.sortOrder||a.id-b.id)}function w(a,b){return v(a).find(a=>a.id===b)??null}function x(a){let b=n(a.projectRoot),c=v(a.projectRoot),d=c.findIndex(b=>b.id===a.id),e={...a,updatedAt:new Date().toISOString()};d>=0?c[d]=e:c.push(e),u(b,c)}function y(a,b){let c=n(a),d=v(a).filter(a=>a.id!==b);u(c,d)}function z(a,b){let c,d,g=((c=globalThis)[J]||(c[J]={nextId:1}),(d=c[J]).nextId<=1&&(d.nextId=function(){let a=l();if(!(0,e.existsSync)(a))return 1;let b=0;for(let c of(0,e.readdirSync)(a,{withFileTypes:!0})){if(!c.isDirectory())continue;let d=(0,f.join)(a,c.name,"tasks.jsonl");if((0,e.existsSync)(d))for(let a of t(d))a.id>b&&(b=a.id)}return b+1}()),d.nextId++),h=new Date().toISOString(),i={...b(g,h),projectRoot:a};return x(i),i}function A(a,b){let c=o(a),d=t(c).reduce((a,b)=>Math.max(a,b.id),0)+1,f={...b,payload:b.payload??null,id:d,createdAt:new Date().toISOString()};return s(c.substring(0,c.lastIndexOf("/"))),(0,e.writeFileSync)(c,JSON.stringify(f)+"\n",{encoding:"utf8",flag:"a",mode:384}),f}function B(a,b,c=500){return t(o(a)).filter(a=>a.taskId===b).slice(-c)}function C(a){let b=p();if(!(0,e.existsSync)(b))return null;try{return JSON.parse((0,e.readFileSync)(b,"utf8"))[a]??null}catch{return null}}function D(a){let b=C(a),c=function(){let a=p();if(!(0,e.existsSync)(a))return(0,j.os)();try{let b=JSON.parse((0,e.readFileSync)(a,"utf8"));return{...(0,j.os)(),...b._global??{}}}catch{return(0,j.os)()}}();return b?{...c,...b,configValues:{...c.configValues,...b.configValues??{}}}:c}function E(a,b){let c=p(),d={};if((0,e.existsSync)(c))try{d=JSON.parse((0,e.readFileSync)(c,"utf8"))}catch{d={}}d[a]=b,s(l()),(0,h.$)(c,JSON.stringify(d,null,2))}function F(a){let b=p();if((0,e.existsSync)(b))try{let c=JSON.parse((0,e.readFileSync)(b,"utf8"));delete c[a],(0,h.$)(b,JSON.stringify(c,null,2))}catch{}}function G(){return t(q())}function H(a){let b=G(),c=b.findIndex(b=>b.id===a.id);c>=0?b[c]=a:b.push(a),u(q(),b)}function I(a){let b=G().filter(b=>b.id!==a);u(q(),b)}d()}catch(a){d(a)}})},50593:(a,b,c)=>{c.d(b,{A0:()=>d});function d(a){return/^[a-zA-Z]:[\\/]/.test(a)||a.startsWith("\\\\")?a.replace(/\\/g,"/"):a}},66544:(a,b,c)=>{c.d(b,{E2:()=>j,EN:()=>i});var d=c(77030);function e(a){return(a.startsWith("[")&&a.endsWith("]")?a.slice(1,-1):a).toLowerCase().replace(/\.$/,"")}function f(a){if(!a||/[\s/@\\]/.test(a))return null;try{let b=new URL(`http://${a}`);if(b.username||b.password||"/"!==b.pathname||b.search||b.hash)return null;return e(b.hostname)}catch{return null}}function g(){return[process.env.PI_WEB_HOSTNAME,...process.env.PI_WEB_ALLOWED_HOSTS?.split(",")??[]].filter(a=>!!a?.trim())}function h(a){try{return new URL(a).origin}catch{return null}}function i(a,b=g()){return!!function(a,b=g()){let c=a.headers.get("host"),h=c?f(c):null;return!!h&&(!!("localhost"===h||h.endsWith(".localhost")||(0,d.isIP)(h))||b.some(a=>{let b;return((b=a?.trim())?(0,d.isIP)(b)?e(b):f(b):null)===h}))}(a,b)&&(!!function(a){if("GET"!==a.method||"navigate"!==a.headers.get("sec-fetch-mode")||"document"!==a.headers.get("sec-fetch-dest")||"?1"!==a.headers.get("sec-fetch-user"))return!1;try{return/^\/api\/sessions\/[^/]+\/export$/.test(new URL(a.url).pathname)}catch{return!1}}(a)||!(a.headers.has("origin")||a.headers.has("sec-fetch-site"))||function(a){let b,c;if("cross-site"===a.headers.get("sec-fetch-site"))return!1;let d=a.headers.get("origin");if(!d)return!0;let e=(b=new URL(a.url),(c=a.headers.get("host"))?h(`${b.protocol}//${c}`):null);return null!==e&&h(d)===e}(a))}function j(a){let b=a.headers.get("content-type")?.split(";",1)[0]?.trim().toLowerCase();return"application/json"===b||!!(b?.startsWith("application/")&&b.endsWith("+json"))}},80154:(a,b,c)=>{c.a(a,async(a,d)=>{try{c.d(b,{KG:()=>F,Kx:()=>u,MR:()=>J,Me:()=>N,Q$:()=>M,Rt:()=>O,UT:()=>q,YC:()=>P,gc:()=>E,lC:()=>r,m5:()=>L,oM:()=>K,r5:()=>k,vq:()=>s,yX:()=>I});var e=c(29021);c(33873);var f=c(79646),g=c(23808),h=c(46583),i=c(56429),j=a([h,i]);[h,i]=j.then?(await j)():j;let R=new Set;function k(a){return R.add(a),()=>R.delete(a)}function l(a){for(let b of R)b(a)}function m(){return globalThis.__piTaskEngine??null}function n(){let a=m();if(!a)throw Error("task engine not running");return a}function o(){return new Date().toISOString()}function p(a,b,c="engine",d){(0,h.fd)(a),b&&(0,h.Q1)(a.projectRoot,{taskId:a.id,kind:b,actor:c,payload:d??null}),l({type:"upsert",id:a.id})}function q(a){let b=(0,h.Mx)(a.projectRoot,(b,c)=>({id:b,projectRoot:a.projectRoot,title:a.title,config:a.config,status:"todo",failureReason:null,lastError:null,runSeq:0,sortOrder:(0,h.h6)(a.projectRoot).length,worktreePath:null,conversationId:null,sessionFile:null,baseBranch:null,workBranch:null,verdict:null,resultSummary:null,userNote:null,filesChanged:null,additions:null,deletions:null,mergeCommit:null,preflight:null,archivedAt:null,createdAt:c,updatedAt:c,startedAt:null,settledAt:null,finishedAt:null}));return(0,h.Q1)(b.projectRoot,{taskId:b.id,kind:"created",actor:"user",payload:{title:b.title}}),l({type:"upsert",id:b.id}),u(b.projectRoot),b}function r(a,b){let c=(0,h._o)(b.projectRoot,a);if(!c)return null;let d={...c,title:b.title,config:b.config};return p(d,"updated","user"),u(d.projectRoot),d}function s(a,b,c){let d=(0,h._o)(b,a);if(!d)return;d.worktreePath&&d.workBranch&&c&&(async()=>{try{await (0,g.IL)(b,d.worktreePath,!0)}catch{}try{await C(b,`git branch -D ${JSON.stringify(d.workBranch)}`)}catch{}})();let e=m(),f=e?.byTask.get(a);f&&(f.session.send({type:"abort"}).catch(()=>void 0),e?.live.delete(f.connectionId),e?.byTask.delete(a)),(0,h.bT)(b,a),l({type:"delete",id:a})}function t(a,b,c,d,f){let g=function(a){for(let b of m()?.byTask.values()??[])if(b.taskId===a)return(0,h._o)(b.projectRoot,a)??null;let b=(0,h.z1)("__engine__").replace(/__engine__$/,"");if(!(0,e.existsSync)(b))return null;for(let c of(0,e.readdirSync)(b,{withFileTypes:!0})){if(!c.isDirectory()||"__engine__"===c.name)continue;let b=(0,h._o)(H(c.name),a);if(b)return b}return null}(a);if(!g||g.runSeq!==b||!c.includes(g.status))return null;let i={...g,...f,status:d,updatedAt:o()};return p(i),i}function u(a){m()&&v(a)}async function v(a){let b=n(),c=(b.pumpLocks.get(a)??Promise.resolve()).then(()=>w(a));b.pumpLocks.set(a,c.catch(()=>void 0)),await c}async function w(a){let b=n();if(b.stopped)return;let c=(0,h.Rv)(a);if(!c.autoProcess)return;let d=(0,h.h6)(a),e=[...b.byTask.values()].filter(b=>b.projectRoot===a).length,f=c.maxConcurrent>0?c.maxConcurrent:1/0;if(!(e>=f))for(let c of d.filter(a=>"queued"===a.status).sort((a,b)=>a.sortOrder-b.sortOrder)){if(e>=f)break;!b.launching.has(c.id)&&await x(c.id,a)&&(e+=1)}}async function x(a,b){let c=n(),d=(0,h._o)(b,a);if(!d||"queued"!==d.status)return!1;let e=globalThis,f=e.__taskLaunchToken=(e.__taskLaunchToken??0)+1;if(c.launching.set(a,f),!t(a,d.runSeq,["queued"],"preparing",{startedAt:o()}))return c.launching.delete(a),!1;(0,h.Q1)(b,{taskId:a,kind:"preparing",actor:"engine"});try{var i,j,k;let e,f,l,m,p,q,r=await (0,g.KI)(b);if(!r.projectRoot)throw Error("Not a git repository");let s=`task/${a}-${d.title.toLowerCase().replace(/[^a-z0-9]+/g,"-").replace(/^-+|-+$/g,"").slice(0,40)||"task"}`,u=null;try{u=(await (0,g.l)(r.projectRoot,s)).path}catch(b){let a=await y(r.projectRoot,s);if(!a)throw b;u=a}let v=r.branch??null,w=(0,h.Rv)(b);w.initCommand&&await C(u,w.initCommand);let{session:x}=await z(d,u),B={taskId:a,runSeq:d.runSeq,connectionId:x.sessionId,projectRoot:b,session:x,pendingRequests:new Set};if(c.live.set(x.sessionId,B),c.byTask.set(a,B),(i=B).session.onEvent(a=>{let b=a.type;(async()=>{var c,d;let e=n().live.get(i.connectionId);if(!e||e.taskId!==i.taskId)return;let f=(0,h._o)(i.projectRoot,i.taskId);if(f&&("running"===f.status||"awaiting_input"===f.status||"merging"===f.status))switch(b){case"extension_ui_request":{let b=a.method,c=a.id;b&&c&&["confirm","input","select","editor"].includes(b)&&(i.pendingRequests.add(c),"running"===f.status&&(t(i.taskId,i.runSeq,["running"],"awaiting_input"),(0,h.Q1)(f.projectRoot,{taskId:i.taskId,kind:"awaiting_input",actor:"engine",payload:{method:b,id:c}})));break}case"extension_ui_response":{let b=a.id;b&&i.pendingRequests.delete(b)&&0===i.pendingRequests.size&&"awaiting_input"===f.status&&t(i.taskId,i.runSeq,["awaiting_input"],"running");break}case"agent_end":if(i.pendingRequests.size>0)break;if("merging"===f.status){let a;c=i,(a=(0,h._o)(c.projectRoot,c.taskId))&&"merging"===a.status&&D(c.session.cwd,"git rev-parse --short HEAD").then(a=>a.output.trim()).catch(()=>null).then(async a=>{let b=(0,h._o)(c.projectRoot,c.taskId);if(b){t(b.id,b.runSeq,["merging"],"done",{mergeCommit:a,finishedAt:o()}),(0,h.Q1)(b.projectRoot,{taskId:b.id,kind:"merged",actor:"engine",payload:{commit:a}});try{b.worktreePath&&await (0,g.IL)(c.projectRoot,b.worktreePath,!0).catch(()=>void 0),b.workBranch&&await C(c.projectRoot,`git branch -D ${JSON.stringify(b.workBranch)}`).catch(()=>void 0)}catch{}}});break}A(i,f);break;case"prompt_error":{let b,c=a.errorMessage??"agent error";t(i.taskId,i.runSeq,["running","awaiting_input"],"failed",{failureReason:"agent_error",lastError:c,settledAt:o(),finishedAt:o()}),(0,h.Q1)(f.projectRoot,{taskId:i.taskId,kind:"failed",actor:"engine",payload:{reason:"agent_error",message:c}}),d=i,(b=n()).live.delete(d.connectionId),b.byTask.delete(d.taskId);break}case"agent_start":"awaiting_input"===f.status&&0===i.pendingRequests.size&&t(i.taskId,i.runSeq,["awaiting_input"],"running")}})()}),!t(a,d.runSeq,["preparing"],"running",{worktreePath:u,workBranch:s,baseBranch:v,conversationId:x.sessionId,sessionFile:x.sessionFile,runSeq:d.runSeq}))return c.live.delete(x.sessionId),c.byTask.delete(a),x.shutdown().catch(()=>void 0),!1;(0,h.Q1)(b,{taskId:a,kind:"started",actor:"engine",payload:{runSeq:d.runSeq,branch:s}});let E=(j=d,k=w,e=j.config?.prompt??j.title,f=k.stagePrompts?.work??k.stagePrompts?.all??"",l=j.config?.agentType??k.defaultAgentType,m=`You are working on task "${j.title}" in a git worktree branch.
1
+ "use strict";exports.id=1499,exports.ids=[1499],exports.modules={6835:(a,b,c)=>{c.d(b,{os:()=>d});function d(){return{defaultAgentType:null,modeId:null,configValues:{},autoProcess:!0,maxConcurrent:1,mergeStrategy:"merge",deleteWorktreeDefault:!0,preflightCommand:null,initCommand:null,stagePrompts:null}}},46583:(a,b,c)=>{c.a(a,async(a,d)=>{try{c.d(b,{AI:()=>H,D2:()=>E,Mx:()=>z,Q1:()=>A,Rv:()=>D,_o:()=>w,_s:()=>C,bT:()=>y,dm:()=>B,eG:()=>G,fd:()=>x,h6:()=>v,jf:()=>F,k9:()=>I,listTaskProjects:()=>r,z1:()=>m});var e=c(29021),f=c(33873),g=c(75430),h=c(8102),i=c(50593),j=c(6835),k=a([g]);function l(){return(0,f.join)((0,g.getAgentDir)(),"tasks")}function m(a){return(0,f.join)(l(),(0,i.A0)(a).replace(/^\/+/,"").split("/").filter(Boolean).map(a=>encodeURIComponent(a)).join("--")||"root")}function n(a){return(0,f.join)(m(a),"tasks.jsonl")}function o(a){return(0,f.join)(m(a),"events.jsonl")}function p(){return(0,f.join)(l(),"settings.json")}function q(){return(0,f.join)(l(),"templates.jsonl")}function r(){let a=l();return(0,e.existsSync)(a)?(0,e.readdirSync)(a,{withFileTypes:!0}).filter(a=>a.isDirectory()&&"__engine__"!==a.name).map(a=>{var b;return b=a.name,"/"+b.split("--").map(a=>decodeURIComponent(a)).join("/")}):[]}function s(a){(0,e.existsSync)(a)||(0,e.mkdirSync)(a,{recursive:!0,mode:448})}function t(a){if(!(0,e.existsSync)(a))return[];let b=(0,e.readFileSync)(a,"utf8"),c=[];for(let a of b.split("\n")){let b=a.trim();if(b)try{c.push(JSON.parse(b))}catch{}}return c}function u(a,b){s(a.substring(0,a.lastIndexOf("/")));let c=b.map(a=>JSON.stringify(a)).join("\n")+"\n";(0,h.$)(a,c)}g=(k.then?(await k)():k)[0];let J="__piTaskStore";function v(a){return t(n(a)).sort((a,b)=>a.sortOrder-b.sortOrder||a.id-b.id)}function w(a,b){return v(a).find(a=>a.id===b)??null}function x(a){let b=n(a.projectRoot),c=v(a.projectRoot),d=c.findIndex(b=>b.id===a.id),e={...a,updatedAt:new Date().toISOString()};d>=0?c[d]=e:c.push(e),u(b,c)}function y(a,b){let c=n(a),d=v(a).filter(a=>a.id!==b);u(c,d)}function z(a,b){let c,d,g=((c=globalThis)[J]||(c[J]={nextId:1}),(d=c[J]).nextId<=1&&(d.nextId=function(){let a=l();if(!(0,e.existsSync)(a))return 1;let b=0;for(let c of(0,e.readdirSync)(a,{withFileTypes:!0})){if(!c.isDirectory())continue;let d=(0,f.join)(a,c.name,"tasks.jsonl");if((0,e.existsSync)(d))for(let a of t(d))a.id>b&&(b=a.id)}return b+1}()),d.nextId++),h=new Date().toISOString(),i={...b(g,h),projectRoot:a};return x(i),i}function A(a,b){let c=o(a),d=t(c).reduce((a,b)=>Math.max(a,b.id),0)+1,f={...b,payload:b.payload??null,id:d,createdAt:new Date().toISOString()};return s(c.substring(0,c.lastIndexOf("/"))),(0,e.writeFileSync)(c,JSON.stringify(f)+"\n",{encoding:"utf8",flag:"a",mode:384}),f}function B(a,b,c=500){return t(o(a)).filter(a=>a.taskId===b).slice(-c)}function C(a){let b=p();if(!(0,e.existsSync)(b))return null;try{return JSON.parse((0,e.readFileSync)(b,"utf8"))[a]??null}catch{return null}}function D(a){let b=C(a),c=function(){let a=p();if(!(0,e.existsSync)(a))return(0,j.os)();try{let b=JSON.parse((0,e.readFileSync)(a,"utf8"));return{...(0,j.os)(),...b._global??{}}}catch{return(0,j.os)()}}();return b?{...c,...b,configValues:{...c.configValues,...b.configValues??{}}}:c}function E(a,b){let c=p(),d={};if((0,e.existsSync)(c))try{d=JSON.parse((0,e.readFileSync)(c,"utf8"))}catch{d={}}d[a]=b,s(l()),(0,h.$)(c,JSON.stringify(d,null,2))}function F(a){let b=p();if((0,e.existsSync)(b))try{let c=JSON.parse((0,e.readFileSync)(b,"utf8"));delete c[a],(0,h.$)(b,JSON.stringify(c,null,2))}catch{}}function G(){return t(q())}function H(a){let b=G(),c=b.findIndex(b=>b.id===a.id);c>=0?b[c]=a:b.push(a),u(q(),b)}function I(a){let b=G().filter(b=>b.id!==a);u(q(),b)}d()}catch(a){d(a)}})},50593:(a,b,c)=>{c.d(b,{A0:()=>d});function d(a){return/^[a-zA-Z]:[\\/]/.test(a)||a.startsWith("\\\\")?a.replace(/\\/g,"/"):a}},66544:(a,b,c)=>{c.d(b,{E2:()=>k,EN:()=>j});var d=c(77030);function e(a){return(a.startsWith("[")&&a.endsWith("]")?a.slice(1,-1):a).toLowerCase().replace(/\.$/,"")}function f(a){if(!a||/[\s/@\\]/.test(a))return null;try{let b=new URL(`http://${a}`);if(b.username||b.password||"/"!==b.pathname||b.search||b.hash)return null;return e(b.hostname)}catch{return null}}function g(){return[process.env.PI_WEB_HOSTNAME,...process.env.PI_WEB_ALLOWED_HOSTS?.split(",")??[]].filter(a=>!!a?.trim())}function h(a){try{return new URL(a).origin}catch{return null}}let i=new Set(["POST","PUT","PATCH","DELETE"]);function j(a,b=g()){return!!function(a,b=g()){let c=a.headers.get("host"),h=c?f(c):null;return!!h&&(!!("localhost"===h||h.endsWith(".localhost")||(0,d.isIP)(h))||b.some(a=>{let b;return((b=a?.trim())?(0,d.isIP)(b)?e(b):f(b):null)===h}))}(a,b)&&(!!function(a){if("GET"!==a.method||"navigate"!==a.headers.get("sec-fetch-mode")||"document"!==a.headers.get("sec-fetch-dest")||"?1"!==a.headers.get("sec-fetch-user"))return!1;try{return/^\/api\/sessions\/[^/]+\/export$/.test(new URL(a.url).pathname)}catch{return!1}}(a)||(a.headers.has("origin")||a.headers.has("sec-fetch-site")?function(a){let b,c;if("cross-site"===a.headers.get("sec-fetch-site"))return!1;let d=a.headers.get("origin");if(!d)return!0;let e=(b=new URL(a.url),(c=a.headers.get("host"))?h(`${b.protocol}//${c}`):null);return null!==e&&h(d)===e}(a):!i.has((a.method??"GET").toUpperCase())))}function k(a){let b=a.headers.get("content-type")?.split(";",1)[0]?.trim().toLowerCase();return"application/json"===b||!!(b?.startsWith("application/")&&b.endsWith("+json"))}},80154:(a,b,c)=>{c.a(a,async(a,d)=>{try{c.d(b,{KG:()=>F,Kx:()=>u,MR:()=>J,Me:()=>N,Q$:()=>M,Rt:()=>O,UT:()=>q,YC:()=>P,gc:()=>E,lC:()=>r,m5:()=>L,oM:()=>K,r5:()=>k,vq:()=>s,yX:()=>I});var e=c(29021);c(33873);var f=c(79646),g=c(23808),h=c(46583),i=c(56429),j=a([h,i]);[h,i]=j.then?(await j)():j;let R=new Set;function k(a){return R.add(a),()=>R.delete(a)}function l(a){for(let b of R)b(a)}function m(){return globalThis.__piTaskEngine??null}function n(){let a=m();if(!a)throw Error("task engine not running");return a}function o(){return new Date().toISOString()}function p(a,b,c="engine",d){(0,h.fd)(a),b&&(0,h.Q1)(a.projectRoot,{taskId:a.id,kind:b,actor:c,payload:d??null}),l({type:"upsert",id:a.id})}function q(a){let b=(0,h.Mx)(a.projectRoot,(b,c)=>({id:b,projectRoot:a.projectRoot,title:a.title,config:a.config,status:"todo",failureReason:null,lastError:null,runSeq:0,sortOrder:(0,h.h6)(a.projectRoot).length,worktreePath:null,conversationId:null,sessionFile:null,baseBranch:null,workBranch:null,verdict:null,resultSummary:null,userNote:null,filesChanged:null,additions:null,deletions:null,mergeCommit:null,preflight:null,archivedAt:null,createdAt:c,updatedAt:c,startedAt:null,settledAt:null,finishedAt:null}));return(0,h.Q1)(b.projectRoot,{taskId:b.id,kind:"created",actor:"user",payload:{title:b.title}}),l({type:"upsert",id:b.id}),u(b.projectRoot),b}function r(a,b){let c=(0,h._o)(b.projectRoot,a);if(!c)return null;let d={...c,title:b.title,config:b.config};return p(d,"updated","user"),u(d.projectRoot),d}function s(a,b,c){let d=(0,h._o)(b,a);if(!d)return;d.worktreePath&&d.workBranch&&c&&(async()=>{try{await (0,g.IL)(b,d.worktreePath,!0)}catch{}try{await C(b,`git branch -D ${JSON.stringify(d.workBranch)}`)}catch{}})();let e=m(),f=e?.byTask.get(a);f&&(f.session.send({type:"abort"}).catch(()=>void 0),e?.live.delete(f.connectionId),e?.byTask.delete(a)),(0,h.bT)(b,a),l({type:"delete",id:a})}function t(a,b,c,d,f){let g=function(a){for(let b of m()?.byTask.values()??[])if(b.taskId===a)return(0,h._o)(b.projectRoot,a)??null;let b=(0,h.z1)("__engine__").replace(/__engine__$/,"");if(!(0,e.existsSync)(b))return null;for(let c of(0,e.readdirSync)(b,{withFileTypes:!0})){if(!c.isDirectory()||"__engine__"===c.name)continue;let b=(0,h._o)(H(c.name),a);if(b)return b}return null}(a);if(!g||g.runSeq!==b||!c.includes(g.status))return null;let i={...g,...f,status:d,updatedAt:o()};return p(i),i}function u(a){m()&&v(a)}async function v(a){let b=n(),c=(b.pumpLocks.get(a)??Promise.resolve()).then(()=>w(a));b.pumpLocks.set(a,c.catch(()=>void 0)),await c}async function w(a){let b=n();if(b.stopped)return;let c=(0,h.Rv)(a);if(!c.autoProcess)return;let d=(0,h.h6)(a),e=[...b.byTask.values()].filter(b=>b.projectRoot===a).length,f=c.maxConcurrent>0?c.maxConcurrent:1/0;if(!(e>=f))for(let c of d.filter(a=>"queued"===a.status).sort((a,b)=>a.sortOrder-b.sortOrder)){if(e>=f)break;!b.launching.has(c.id)&&await x(c.id,a)&&(e+=1)}}async function x(a,b){let c=n(),d=(0,h._o)(b,a);if(!d||"queued"!==d.status)return!1;let e=globalThis,f=e.__taskLaunchToken=(e.__taskLaunchToken??0)+1;if(c.launching.set(a,f),!t(a,d.runSeq,["queued"],"preparing",{startedAt:o()}))return c.launching.delete(a),!1;(0,h.Q1)(b,{taskId:a,kind:"preparing",actor:"engine"});try{var i,j,k;let e,f,l,m,p,q,r=await (0,g.KI)(b);if(!r.projectRoot)throw Error("Not a git repository");let s=`task/${a}-${d.title.toLowerCase().replace(/[^a-z0-9]+/g,"-").replace(/^-+|-+$/g,"").slice(0,40)||"task"}`,u=null;try{u=(await (0,g.l)(r.projectRoot,s)).path}catch(b){let a=await y(r.projectRoot,s);if(!a)throw b;u=a}let v=r.branch??null,w=(0,h.Rv)(b);w.initCommand&&await C(u,w.initCommand);let{session:x}=await z(d,u),B={taskId:a,runSeq:d.runSeq,connectionId:x.sessionId,projectRoot:b,session:x,pendingRequests:new Set};if(c.live.set(x.sessionId,B),c.byTask.set(a,B),(i=B).session.onEvent(a=>{let b=a.type;(async()=>{var c,d;let e=n().live.get(i.connectionId);if(!e||e.taskId!==i.taskId)return;let f=(0,h._o)(i.projectRoot,i.taskId);if(f&&("running"===f.status||"awaiting_input"===f.status||"merging"===f.status))switch(b){case"extension_ui_request":{let b=a.method,c=a.id;b&&c&&["confirm","input","select","editor"].includes(b)&&(i.pendingRequests.add(c),"running"===f.status&&(t(i.taskId,i.runSeq,["running"],"awaiting_input"),(0,h.Q1)(f.projectRoot,{taskId:i.taskId,kind:"awaiting_input",actor:"engine",payload:{method:b,id:c}})));break}case"extension_ui_response":{let b=a.id;b&&i.pendingRequests.delete(b)&&0===i.pendingRequests.size&&"awaiting_input"===f.status&&t(i.taskId,i.runSeq,["awaiting_input"],"running");break}case"agent_end":if(i.pendingRequests.size>0)break;if("merging"===f.status){let a;c=i,(a=(0,h._o)(c.projectRoot,c.taskId))&&"merging"===a.status&&D(c.session.cwd,"git rev-parse --short HEAD").then(a=>a.output.trim()).catch(()=>null).then(async a=>{let b=(0,h._o)(c.projectRoot,c.taskId);if(b){t(b.id,b.runSeq,["merging"],"done",{mergeCommit:a,finishedAt:o()}),(0,h.Q1)(b.projectRoot,{taskId:b.id,kind:"merged",actor:"engine",payload:{commit:a}});try{b.worktreePath&&await (0,g.IL)(c.projectRoot,b.worktreePath,!0).catch(()=>void 0),b.workBranch&&await C(c.projectRoot,`git branch -D ${JSON.stringify(b.workBranch)}`).catch(()=>void 0)}catch{}}});break}A(i,f);break;case"prompt_error":{let b,c=a.errorMessage??"agent error";t(i.taskId,i.runSeq,["running","awaiting_input"],"failed",{failureReason:"agent_error",lastError:c,settledAt:o(),finishedAt:o()}),(0,h.Q1)(f.projectRoot,{taskId:i.taskId,kind:"failed",actor:"engine",payload:{reason:"agent_error",message:c}}),d=i,(b=n()).live.delete(d.connectionId),b.byTask.delete(d.taskId);break}case"agent_start":"awaiting_input"===f.status&&0===i.pendingRequests.size&&t(i.taskId,i.runSeq,["awaiting_input"],"running")}})()}),!t(a,d.runSeq,["preparing"],"running",{worktreePath:u,workBranch:s,baseBranch:v,conversationId:x.sessionId,sessionFile:x.sessionFile,runSeq:d.runSeq}))return c.live.delete(x.sessionId),c.byTask.delete(a),x.shutdown().catch(()=>void 0),!1;(0,h.Q1)(b,{taskId:a,kind:"started",actor:"engine",payload:{runSeq:d.runSeq,branch:s}});let E=(j=d,k=w,e=j.config?.prompt??j.title,f=k.stagePrompts?.work??k.stagePrompts?.all??"",l=j.config?.agentType??k.defaultAgentType,m=`You are working on task "${j.title}" in a git worktree branch.
2
2
  `+(l?`Agent: ${l}
3
3
  `:"")+`Complete the work described below.
4
4
 
@@ -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:()=>u,KT:()=>y,MO:()=>v,Tn:()=>H,ZX:()=>B,av:()=>I,gS:()=>G,iO:()=>x,py:()=>F,qk:()=>l,rY:()=>m,tJ:()=>J,xl:()=>E,zB:()=>w});var e=c(73024),f=c(76760),g=c(47774),h=c(75430),i=c(8102),j=c(11301),k=a([h,j]);[h,j]=k.then?(await k)():k;let J=["opencode","opencode-go"];function l(a){return J.includes(a)}function m(a){return globalThis.__piOpenCodeZenSwitchListeners??=new Set,globalThis.__piOpenCodeZenSwitchListeners.add(a),()=>globalThis.__piOpenCodeZenSwitchListeners?.delete(a)}function n(){return(0,f.join)((0,h.getAgentDir)(),"opencode-zen.json")}function o(){return{protocol:"http",enabled:!1,url:"",port:0,username:"",password:""}}function p(){return{accounts:[],autoSwitch:!0,cooldownMs:6e4}}function q(a){return"object"==typeof a&&null!==a&&!Array.isArray(a)}function r(a,b){if(!q(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=q(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 s(a){let b=q(a)?a:{},c=Array.isArray(b.accounts)?b.accounts.map(r).filter(a=>null!==a):[],d=Number(b.cooldownMs);return{accounts:c,autoSwitch:!1!==b.autoSwitch,cooldownMs:Number.isFinite(d)?Math.min(Math.max(d,0),6e5):6e4}}function t(){return globalThis.__piOpenCodeZenState||(globalThis.__piOpenCodeZenState={config:function(){try{if((0,e.existsSync)(n()))return s(JSON.parse((0,e.readFileSync)(n(),"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=q(b.opencode)?b.opencode:null,d=c&&"string"==typeof c.key?c.key.trim():"";if(d)return s({accounts:[{id:"legacy-opencode",note:"默认 OpenCode Zen",apiKey:d,enabled:!0,proxy:o()}]})}return p()}catch{return p()}}(),activeIndex:0,cooldownUntil:new Map,dispatchers:new Map}),globalThis.__piOpenCodeZenState}function u(){return structuredClone(t().config)}function v(){return t().config.accounts.find(a=>a.enabled&&a.apiKey)?.apiKey??null}async function w(a){let b=v();if(b)for(let c of(await Promise.allSettled(J.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 x(a,b){var c;let d,g=t();for(let c of(g.config=s(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=n(),(0,e.mkdirSync)((0,f.dirname)(d),{recursive:!0,mode:448}),(0,i.$)(d,JSON.stringify(c,null,2))}function y(){let a=t(),b=a.config.accounts[a.activeIndex];return{accounts:a.config.accounts.map(a=>{var b;return{id:a.id,note:a.note,enabled:a.enabled,apiKeyMasked:(b=a.apiKey).length<=8?"••••••••":`${b.slice(0,4)}••••${b.slice(-4)}`,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,...b?{activeAccountId:b.id}:{},...a.lastSwitch?{lastSwitch:a.lastSwitch}:{}}}function z(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 A(a,b){return"socks5"===b?new g.EV(a):new g.kT(a)}async function B(a){let b=z(a);if(!b)return{ok:!0,latencyMs:0};let c=A(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 C(a,b=new Set){let c=Date.now(),d=a.config.accounts.length;if(0===d)return null;for(let e=0;e<d;e++){let f=(a.activeIndex+e)%d,g=a.config.accounts[f];if(!(!g.enabled||!g.apiKey||b.has(g.id))&&!((a.cooldownUntil.get(g.id)??0)>c))return a.activeIndex=(f+1)%d,g}return null}async function D(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 E(a=globalThis.fetch.bind(globalThis),b,c){return async(d,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}}(d))return a(d,e);let h=c?{config:s(c),activeIndex:0,cooldownUntil:new Map,dispatchers:new Map}:t(),i=h.config.accounts.filter(a=>a.enabled&&a.apiKey);if(0===i.length)return new Response("OpenCode Zen accounts are unavailable",{status:503});let k=await D(d,e),l=!(d instanceof Request?null!==d.body:e?.body!==void 0&&null!==e.body)||void 0!==k,m=new Set,n=C(h,m);if(!n)return new Response("OpenCode Zen accounts are cooling down",{status:503,headers:{"Retry-After":String(Math.ceil(h.config.cooldownMs/1e3))}});let o=null,p=h.config.autoSwitch&&l?Math.max(i.length,1):1;for(let c=0;c<p&&n;c++){m.add(n.id);let i=function(a,b,c,d,e){let f=new Headers(a instanceof Request?a.headers:void 0);b?.headers&&new Headers(b.headers).forEach((a,b)=>f.set(b,a)),f.set("authorization",`Bearer ${d.apiKey}`);let g=function(a,b){let c=z(b.proxy);if(!c)return;let d=a.dispatchers.get(b.id);if(d)return d;let e=A(c,b.proxy.protocol);return a.dispatchers.set(b.id,e),e}(c,d);return{...b,...a instanceof Request&&b?.method===void 0?{method:a.method}:{},headers:f,...void 0!==e?{body:e}:{},...g?{dispatcher:g}:{}}}(d,e,h,n,k),l=i.dispatcher?await (0,g.hd)("string"==typeof d||d instanceof URL?d.toString():d.url,i):await a(d,i);if(429!==l.status||!h.config.autoSwitch||c===p-1)return l.ok&&f&&function(a){for(let b of globalThis.__piOpenCodeZenSwitchListeners??[])b(a)}({sessionId:b,from:f,to:n.note,statusCode:429}),l;let q=await l.arrayBuffer();o=new Response(q,{status:l.status,statusText:l.statusText,headers:l.headers});let r=n;if(h.cooldownUntil.set(r.id,Date.now()+h.config.cooldownMs),!(n=C(h,m)))break;h.lastSwitch={timestamp:new Date().toISOString(),from:r.note,to:n.note,statusCode:429},f=r.note,(0,j.wF)({level:"info",source:"opencode-zen-switch",provider:"opencode",message:`OpenCode Zen 429,已从 ${r.note} 切换到 ${n.note}`})}return o??new Response("OpenCode Zen accounts are unavailable",{status:503})}}function F(a){return t().config.accounts.find(b=>b.id===a)?.apiKey??null}function G(a){return t().config.accounts.find(b=>b.id===a)?.proxy??null}function H(a){let b=u();if(!q(a))return b;let c=(Array.isArray(a.accounts)?a.accounts:[]).map((a,c)=>{let d=q(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??o(),h=q(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);return s({accounts:c,autoSwitch:"boolean"==typeof a.autoSwitch?a.autoSwitch:b.autoSwitch,cooldownMs:"number"==typeof a.cooldownMs?a.cooldownMs:b.cooldownMs})}function I(a){let b=u(),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];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:o()})}return x({...b,accounts:d}),y()}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:()=>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:""}}}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}}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,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},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)}})}};
@@ -0,0 +1 @@
1
+ exports.id=2498,exports.ids=[2498],exports.modules={6999:(a,b,c)=>{"use strict";c.a(a,async(a,d)=>{try{c.d(b,{Tu:()=>o,o$:()=>n});var e=c(73024),f=c(76760),g=c(80974),h=c.n(g),i=c(75430),j=c(8102),k=a([i]);i=(k.then?(await k)():k)[0];let p={retries:{retries:10,factor:2,minTimeout:50,maxTimeout:2e3,randomize:!0},stale:3e4};function l(){return(0,f.join)((0,i.getAgentDir)(),"settings.json")}function m(){let a=l();if(!(0,e.existsSync)(a))return{};try{let b=JSON.parse((0,e.readFileSync)(a,"utf8"));return null===b||"object"!=typeof b||Array.isArray(b)?{}:b}catch{return{}}}async function n(a){let b=l(),c=null,d=await h().lock(b,{...p,onCompromised:a=>{c=a}});try{if(c)throw c;let d=m(),e=await a(d);if(c)throw c;if(!e||"object"!=typeof e||!e.settings)throw Error("settings.json mutation must return { settings }");if(!1===e.changed)return{changed:!1};if((0,j.$)(b,JSON.stringify(e.settings,null,2)),c)throw c;return{changed:!0}}finally{d().catch(()=>{})}}function o(){return m()}d()}catch(a){d(a)}})},7859:(a,b,c)=>{"use strict";c.a(a,async(a,d)=>{try{c.d(b,{Bp:()=>n,Dm:()=>m,YB:()=>j,fr:()=>l,y8:()=>k});var e=c(29021),f=c(33873),g=c(75430),h=c(6999),i=a([g,h]);[g,h]=i.then?(await i)():i;let o="titleModel";function j(){let a=(0,h.Tu)()[o];return"string"==typeof a&&a.length>0?a:null}async function k(a){await (0,h.o$)(b=>(null===a||""===a?delete b[o]:b[o]=a,{settings:b}))}function l(){let a=(0,f.join)((0,g.getAgentDir)(),"models.json");if(!(0,e.existsSync)(a))return{providers:{}};try{let b=JSON.parse((0,e.readFileSync)(a,"utf8"));return null!==b&&"object"==typeof b?b:{providers:{}}}catch{return{providers:{}}}}function m(a){let b=a.providers;if(!b||"object"!=typeof b)return[];let c=[];for(let[a,d]of Object.entries(b)){let b=d?.models;if(Array.isArray(b))for(let d of b)"string"==typeof d?.id&&0!==d.id.length&&c.push({provider:a,id:d.id,reasoning:!0===d.reasoning,label:`${a}/${d.id}`})}return c.sort((a,b)=>a.label.localeCompare(b.label))}function n(a,b){return b.some(b=>b.label===a)}d()}catch(a){d(a)}})},8102:(a,b,c)=>{"use strict";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}}}},17551:(a,b,c)=>{"use strict";c.a(a,async(a,d)=>{try{c.d(b,{Br:()=>q,V6:()=>p,z0:()=>r});var e=c(73024),f=c(76760),g=c(80974),h=c.n(g),i=c(75430),j=c(8102),k=c(28967),l=c(18904),m=a([i,l]);[i,l]=m.then?(await m)():m;let s={retries:{retries:10,factor:2,minTimeout:50,maxTimeout:2e3,randomize:!0},stale:3e4};function n(a){return"object"==typeof a&&null!==a&&!Array.isArray(a)}function o(a=(0,i.getAgentDir)()){return(0,f.join)(a,"models.json")}function p(a=o()){if(!(0,e.existsSync)(a))return{providers:{}};let b=JSON.parse((0,e.readFileSync)(a,"utf8"));if(!n(b))throw Error("Invalid models.json: expected an object");if(void 0!==b.providers&&!n(b.providers))throw Error("Invalid models.json: providers must be an object");return b}async function q(a,b=o()){let c,d=(0,f.dirname)(b);if((0,e.existsSync)(d)||(0,e.mkdirSync)(d,{recursive:!0,mode:448}),!(0,e.existsSync)(b))try{(0,e.writeFileSync)(b,JSON.stringify({providers:{}},null,2),{encoding:"utf8",flag:"wx",mode:384})}catch(a){if("EEXIST"!==a.code)throw a}let g=await h().lock(b,{...s,onCompromised:a=>{c=a}}),i=()=>{if(c)throw c};try{i();let c=p(b),d=await a(c);if(!n(d.data))throw Error("Invalid models.json mutation result");return i(),!1!==d.changed&&((0,j.$)(b,JSON.stringify(d.data,null,2)),(0,k.k)(),(0,l.Ln)(),i()),d.result}finally{try{await g()}catch(a){if(c)throw c;throw a}}}function r(a){if(!n(a))throw Error("models.json payload must be an object");if(void 0!==a.providers&&!n(a.providers))throw Error("models.json payload providers must be an object")}d()}catch(a){d(a)}})},18904:(a,b,c)=>{"use strict";c.a(a,async(a,d)=>{try{c.d(b,{IR:()=>m,Ln:()=>j,py:()=>l});var e=c(75430),f=c(7859),g=c(37171),h=a([e,f]);[e,f]=h.then?(await h)():h;let n=null;async function i(a){let b=Date.now();if(n&&b-n.at<6e4)return n.data;let c=await a.getAvailable();return n={data:c,at:b},c}function j(){n=null}function k(a,b){return a.provider===b.provider&&a.id===b.modelId}async function l(a,b,c={}){let d=(0,f.fr)().providers??{},h=new Set;for(let[a,b]of Object.entries(d)){let c=(0,g.du)(b);for(let[b,d]of Object.entries(c))!0===d.hidden&&h.add(`${a}/${b}`)}let j=(b??[]).map(a=>a.trim()).filter(Boolean),k=[],m=[],n={},o=[];if(0===j.length)k=await i(a);else{let b=await (0,e.resolveModelScopeWithDiagnostics)(j,a);for(let c of(m=b.scopedModels,k=b.scopedModels.length>0?b.scopedModels.map(a=>a.model):await i(a),o.push(...b.diagnostics.map(a=>a.message)),m))c.thinkingLevel&&(n[`${c.model.provider}/${c.model.id}`]=c.thinkingLevel)}return c.includeHidden||(k=k.filter(a=>!h.has(`${a.provider}/${a.id}`))),{visible:k,scopedModels:c.includeHidden||k.length===m.length?m:m.filter(a=>!h.has(`${a.model.provider}/${a.model.id}`)),thinkingLevelPins:n,warnings:o}}function m(a,b={}){let c=b.requestedModel?a.visible.find(a=>k(a,b.requestedModel)):void 0;if(b.requestedModel&&!c)throw Error(`Model is not available in the enabled scope: ${b.requestedModel.provider}/${b.requestedModel.modelId}`);let d=c?a.scopedModels.find(a=>k(a.model,{provider:c.provider,modelId:c.id})):void 0,e=!c&&b.defaultModel?a.scopedModels.find(a=>k(a.model,b.defaultModel)):void 0,f=c?void 0:e??a.scopedModels[0],g=c||f||!b.defaultModel?void 0:a.visible.find(a=>k(a,b.defaultModel)),h=c??f?.model??g,i=d??f,j=b.thinkingLevel??i?.thinkingLevel;return{...h?{model:h}:{},...j?{thinkingLevel:j}:{},scopedModels:[...a.scopedModels]}}d()}catch(a){d(a)}})},28967:(a,b,c)=>{"use strict";function d(){return globalThis.__piModelsCacheState||(globalThis.__piModelsCacheState={entries:new Map,inFlight:new Map,generation:0}),globalThis.__piModelsCacheState}function e(){let a=d();a.generation+=1,a.entries.clear(),a.inFlight.clear()}function f(a,b){let c=d(),e=c.entries.get(a);if(e&&e.expiresAt>Date.now())return Promise.resolve(e.data);if(e)return c.inFlight.has(a)||g(c,a,b).catch(()=>{}),Promise.resolve(e.data);let f=c.inFlight.get(a);return f||g(c,a,b)}function g(a,b,c){let d=a.inFlight.get(b);if(d)return d;let e=a.generation,f=Promise.resolve().then(c).then(c=>{if(a.generation===e&&a.inFlight.get(b)===f){let d=Date.now();for(let[b,c]of a.entries)c.expiresAt<=d&&a.entries.delete(b);for(;a.entries.size>=32;){let b=a.entries.keys().next().value;if(void 0===b)break;a.entries.delete(b)}a.entries.set(b,{data:c,expiresAt:d+6e4})}return c}).finally(()=>{a.inFlight.get(b)===f&&a.inFlight.delete(b)});return a.inFlight.set(b,f),f}c.d(b,{k:()=>e,r:()=>f})},37171:(a,b,c)=>{"use strict";c.d(b,{S4:()=>h,du:()=>g});let d=["name","reasoning","contextWindow","maxTokens","thinkingLevelMap","hidden"];function e(a){return"object"==typeof a&&null!==a&&!Array.isArray(a)}function f(a){let b=a?.modelOverrides;if(!e(b))return{};let c={};for(let[a,d]of Object.entries(b))e(d)&&(c[a]={...d});return c}function g(a){let b=function(a){let b={},c=a?.models;if(!Array.isArray(c))return b;for(let a of c)e(a)&&"string"==typeof a.id&&a.id&&(b[a.id]={...a});return b}(a),c=f(a),d=new Set([...Object.keys(b),...Object.keys(c)]),g={};for(let a of d)g[a]={...b[a]??{},...c[a]??{}};return g}function h(a,b){let c=a?{...a}:{},g=f(a),h=Array.isArray(a?.models)?a.models.filter(e).map(a=>({...a})):[];for(let[a,c]of Object.entries(b)){let b={...g[a]??{}},f=h.findIndex(b=>b.id===a),i=f>=0?h[f]:void 0;for(let[a,f]of Object.entries(c)){if(!d.includes(a))continue;i&&delete i[a];let c="thinkingLevelMap"===a&&e(f)&&0===Object.keys(f).length?null:f;null===c?delete b[a]:b[a]=c}(i&&Object.keys(i).every(a=>"id"===a)&&h.splice(f,1),Object.keys(b).length>0)?g[a]=b:delete g[a]}return h.length>0?c.models=h:Array.isArray(a?.models)&&delete c.models,Object.keys(g).length>0?c.modelOverrides=g:delete c.modelOverrides,c}},66544:(a,b,c)=>{"use strict";c.d(b,{E2:()=>k,EN:()=>j});var d=c(77030);function e(a){return(a.startsWith("[")&&a.endsWith("]")?a.slice(1,-1):a).toLowerCase().replace(/\.$/,"")}function f(a){if(!a||/[\s/@\\]/.test(a))return null;try{let b=new URL(`http://${a}`);if(b.username||b.password||"/"!==b.pathname||b.search||b.hash)return null;return e(b.hostname)}catch{return null}}function g(){return[process.env.PI_WEB_HOSTNAME,...process.env.PI_WEB_ALLOWED_HOSTS?.split(",")??[]].filter(a=>!!a?.trim())}function h(a){try{return new URL(a).origin}catch{return null}}let i=new Set(["POST","PUT","PATCH","DELETE"]);function j(a,b=g()){return!!function(a,b=g()){let c=a.headers.get("host"),h=c?f(c):null;return!!h&&(!!("localhost"===h||h.endsWith(".localhost")||(0,d.isIP)(h))||b.some(a=>{let b;return((b=a?.trim())?(0,d.isIP)(b)?e(b):f(b):null)===h}))}(a,b)&&(!!function(a){if("GET"!==a.method||"navigate"!==a.headers.get("sec-fetch-mode")||"document"!==a.headers.get("sec-fetch-dest")||"?1"!==a.headers.get("sec-fetch-user"))return!1;try{return/^\/api\/sessions\/[^/]+\/export$/.test(new URL(a.url).pathname)}catch{return!1}}(a)||(a.headers.has("origin")||a.headers.has("sec-fetch-site")?function(a){let b,c;if("cross-site"===a.headers.get("sec-fetch-site"))return!1;let d=a.headers.get("origin");if(!d)return!0;let e=(b=new URL(a.url),(c=a.headers.get("host"))?h(`${b.protocol}//${c}`):null);return null!==e&&h(d)===e}(a):!i.has((a.method??"GET").toUpperCase())))}function k(a){let b=a.headers.get("content-type")?.split(";",1)[0]?.trim().toLowerCase();return"application/json"===b||!!(b?.startsWith("application/")&&b.endsWith("+json"))}},78335:()=>{},96487:()=>{}};