@qt4798/pi-web 0.9.15 → 0.9.16-beta.0

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 (273) hide show
  1. package/.next/BUILD_ID +1 -1
  2. package/.next/app-path-routes-manifest.json +20 -10
  3. package/.next/build-manifest.json +2 -2
  4. package/.next/react-loadable-manifest.json +4 -0
  5. package/.next/required-server-files.js +1 -1
  6. package/.next/required-server-files.json +1 -1
  7. package/.next/routes-manifest.json +71 -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 +1 -1
  22. package/.next/server/app/_not-found.segments/_full.segment.rsc +1 -1
  23. package/.next/server/app/_not-found.segments/_head.segment.rsc +1 -1
  24. package/.next/server/app/_not-found.segments/_index.segment.rsc +1 -1
  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 +1 -1
  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 +1 -1
  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/route.js +1 -1
  33. package/.next/server/app/api/auth/all-providers/route.js +1 -1
  34. package/.next/server/app/api/auth/api-key/[provider]/route.js +1 -1
  35. package/.next/server/app/api/auth/login/[provider]/route.js +1 -1
  36. package/.next/server/app/api/auth/logout/[provider]/route.js +1 -1
  37. package/.next/server/app/api/auth/providers/route.js +1 -1
  38. package/.next/server/app/api/backup/export/route.js +1 -1
  39. package/.next/server/app/api/backup/import/route.js +1 -1
  40. package/.next/server/app/api/cwd/browse/route.js +1 -1
  41. package/.next/server/app/api/cwd/validate/route.js +1 -1
  42. package/.next/server/app/api/default-cwd/route.js +1 -1
  43. package/.next/server/app/api/file-index/route.js +1 -1
  44. package/.next/server/app/api/files/[...path]/route.js +1 -1
  45. package/.next/server/app/api/git/diff/route.js +6 -1
  46. package/.next/server/app/api/git/diff/route.js.nft.json +1 -1
  47. package/.next/server/app/api/git/status/route.js +6 -1
  48. package/.next/server/app/api/git/status/route.js.nft.json +1 -1
  49. package/.next/server/app/api/home/route.js +1 -1
  50. package/.next/server/app/api/import/discover/route.js +1 -1
  51. package/.next/server/app/api/import/execute/route.js +1 -1
  52. package/.next/server/app/api/import/status/route.js +1 -1
  53. package/.next/server/app/api/models/route.js +1 -1
  54. package/.next/server/app/api/models-config/builtin/route.js +1 -1
  55. package/.next/server/app/api/models-config/catalog/route.js +1 -1
  56. package/.next/server/app/api/models-config/discover/route.js +1 -1
  57. package/.next/server/app/api/models-config/route.js +1 -1
  58. package/.next/server/app/api/models-config/test/route.js +1 -1
  59. package/.next/server/app/api/plugins/route.js +1 -1
  60. package/.next/server/app/api/project-trust/route.js +1 -1
  61. package/.next/server/app/api/sessions/[id]/auto-name/route.js +2 -2
  62. package/.next/server/app/api/sessions/[id]/context/route.js +1 -1
  63. package/.next/server/app/api/sessions/[id]/entries/[entryId]/thinking/route.js +1 -1
  64. package/.next/server/app/api/sessions/[id]/export/route.js +1 -1
  65. package/.next/server/app/api/sessions/[id]/queue-recovery/route.js +1 -1
  66. package/.next/server/app/api/sessions/[id]/route.js +1 -1
  67. package/.next/server/app/api/sessions/[id]/state/route.js +1 -1
  68. package/.next/server/app/api/sessions/route.js +1 -1
  69. package/.next/server/app/api/settings/title-model/route.js +1 -1
  70. package/.next/server/app/api/skills/check/route.js +1 -1
  71. package/.next/server/app/api/skills/install/route.js +1 -1
  72. package/.next/server/app/api/skills/route.js +2 -2
  73. package/.next/server/app/api/skills/search/route.js +1 -1
  74. package/.next/server/app/api/skills/update/route.js +1 -1
  75. package/.next/server/app/api/tasks/[id]/[action]/route.js +1 -0
  76. package/.next/server/app/api/tasks/[id]/[action]/route.js.nft.json +1 -0
  77. package/.next/server/app/api/tasks/[id]/[action]/route_client-reference-manifest.js +1 -0
  78. package/.next/server/app/api/tasks/[id]/changed-files/route.js +6 -0
  79. package/.next/server/app/api/tasks/[id]/changed-files/route.js.nft.json +1 -0
  80. package/.next/server/app/api/tasks/[id]/changed-files/route_client-reference-manifest.js +1 -0
  81. package/.next/server/app/api/tasks/[id]/diff/route.js +6 -0
  82. package/.next/server/app/api/tasks/[id]/diff/route.js.nft.json +1 -0
  83. package/.next/server/app/api/tasks/[id]/diff/route_client-reference-manifest.js +1 -0
  84. package/.next/server/app/api/tasks/[id]/events/route.js +1 -0
  85. package/.next/server/app/api/tasks/[id]/events/route.js.nft.json +1 -0
  86. package/.next/server/app/api/tasks/[id]/events/route_client-reference-manifest.js +1 -0
  87. package/.next/server/app/api/tasks/[id]/route.js +1 -0
  88. package/.next/server/app/api/tasks/[id]/route.js.nft.json +1 -0
  89. package/.next/server/app/api/tasks/[id]/route_client-reference-manifest.js +1 -0
  90. package/.next/server/app/api/tasks/batch/route.js +1 -0
  91. package/.next/server/app/api/tasks/batch/route.js.nft.json +1 -0
  92. package/.next/server/app/api/tasks/batch/route_client-reference-manifest.js +1 -0
  93. package/.next/server/app/api/tasks/events/route.js +3 -0
  94. package/.next/server/app/api/tasks/events/route.js.nft.json +1 -0
  95. package/.next/server/app/api/tasks/events/route_client-reference-manifest.js +1 -0
  96. package/.next/server/app/api/tasks/route.js +1 -0
  97. package/.next/server/app/api/tasks/route.js.nft.json +1 -0
  98. package/.next/server/app/api/tasks/route_client-reference-manifest.js +1 -0
  99. package/.next/server/app/api/tasks/settings/route.js +1 -0
  100. package/.next/server/app/api/tasks/settings/route.js.nft.json +1 -0
  101. package/.next/server/app/api/tasks/settings/route_client-reference-manifest.js +1 -0
  102. package/.next/server/app/api/tasks/templates/route.js +1 -0
  103. package/.next/server/app/api/tasks/templates/route.js.nft.json +1 -0
  104. package/.next/server/app/api/tasks/templates/route_client-reference-manifest.js +1 -0
  105. package/.next/server/app/api/themes/[name]/route.js +1 -1
  106. package/.next/server/app/api/themes/route.js +1 -1
  107. package/.next/server/app/api/worktrees/route.js +1 -1
  108. package/.next/server/app/icon.ico/route.js +1 -1
  109. package/.next/server/app/icon.png/route.js +1 -1
  110. package/.next/server/app/icon.svg/route.js +1 -1
  111. package/.next/server/app/index.html +1 -1
  112. package/.next/server/app/index.rsc +3 -3
  113. package/.next/server/app/index.segments/__PAGE__.segment.rsc +3 -3
  114. package/.next/server/app/index.segments/_full.segment.rsc +3 -3
  115. package/.next/server/app/index.segments/_head.segment.rsc +1 -1
  116. package/.next/server/app/index.segments/_index.segment.rsc +1 -1
  117. package/.next/server/app/index.segments/_tree.segment.rsc +1 -1
  118. package/.next/server/app/page.js +4 -4
  119. package/.next/server/app/page_client-reference-manifest.js +1 -1
  120. package/.next/server/app-paths-manifest.json +20 -10
  121. package/.next/server/chunks/1499.js +19 -0
  122. package/.next/server/chunks/4253.js +13 -0
  123. package/.next/server/chunks/4367.js +1 -1
  124. package/.next/server/chunks/4980.js +1 -1
  125. package/.next/server/chunks/6337.js +1 -1
  126. package/.next/server/chunks/7915.js +1 -1
  127. package/.next/server/instrumentation.js +1 -1
  128. package/.next/server/instrumentation.js.nft.json +1 -1
  129. package/.next/server/middleware-build-manifest.js +1 -1
  130. package/.next/server/middleware-react-loadable-manifest.js +1 -1
  131. package/.next/server/pages/404.html +1 -1
  132. package/.next/server/pages/500.html +1 -1
  133. package/.next/static/chunks/7160-15bb6d6d6b8f98ef.js +1 -0
  134. package/.next/static/chunks/app/_global-error/page-b6fdcd4bc49766d5.js +1 -0
  135. package/.next/static/chunks/app/api/agent/[id]/bash-output/route-b6fdcd4bc49766d5.js +1 -0
  136. package/.next/static/chunks/app/api/agent/[id]/events/route-b6fdcd4bc49766d5.js +1 -0
  137. package/.next/static/chunks/app/api/agent/[id]/route-b6fdcd4bc49766d5.js +1 -0
  138. package/.next/static/chunks/app/api/agent/new/route-b6fdcd4bc49766d5.js +1 -0
  139. package/.next/static/chunks/app/api/agent/running/route-b6fdcd4bc49766d5.js +1 -0
  140. package/.next/static/chunks/app/api/auth/all-providers/route-b6fdcd4bc49766d5.js +1 -0
  141. package/.next/static/chunks/app/api/auth/api-key/[provider]/route-b6fdcd4bc49766d5.js +1 -0
  142. package/.next/static/chunks/app/api/auth/login/[provider]/route-b6fdcd4bc49766d5.js +1 -0
  143. package/.next/static/chunks/app/api/auth/logout/[provider]/route-b6fdcd4bc49766d5.js +1 -0
  144. package/.next/static/chunks/app/api/auth/providers/route-b6fdcd4bc49766d5.js +1 -0
  145. package/.next/static/chunks/app/api/backup/export/route-b6fdcd4bc49766d5.js +1 -0
  146. package/.next/static/chunks/app/api/backup/import/route-b6fdcd4bc49766d5.js +1 -0
  147. package/.next/static/chunks/app/api/cwd/browse/route-b6fdcd4bc49766d5.js +1 -0
  148. package/.next/static/chunks/app/api/cwd/validate/route-b6fdcd4bc49766d5.js +1 -0
  149. package/.next/static/chunks/app/api/default-cwd/route-b6fdcd4bc49766d5.js +1 -0
  150. package/.next/static/chunks/app/api/file-index/route-b6fdcd4bc49766d5.js +1 -0
  151. package/.next/static/chunks/app/api/files/[...path]/route-b6fdcd4bc49766d5.js +1 -0
  152. package/.next/static/chunks/app/api/git/diff/route-b6fdcd4bc49766d5.js +1 -0
  153. package/.next/static/chunks/app/api/git/status/route-b6fdcd4bc49766d5.js +1 -0
  154. package/.next/static/chunks/app/api/home/route-b6fdcd4bc49766d5.js +1 -0
  155. package/.next/static/chunks/app/api/import/discover/route-b6fdcd4bc49766d5.js +1 -0
  156. package/.next/static/chunks/app/api/import/execute/route-b6fdcd4bc49766d5.js +1 -0
  157. package/.next/static/chunks/app/api/import/status/route-b6fdcd4bc49766d5.js +1 -0
  158. package/.next/static/chunks/app/api/models/route-b6fdcd4bc49766d5.js +1 -0
  159. package/.next/static/chunks/app/api/models-config/builtin/route-b6fdcd4bc49766d5.js +1 -0
  160. package/.next/static/chunks/app/api/models-config/catalog/route-b6fdcd4bc49766d5.js +1 -0
  161. package/.next/static/chunks/app/api/models-config/discover/route-b6fdcd4bc49766d5.js +1 -0
  162. package/.next/static/chunks/app/api/models-config/route-b6fdcd4bc49766d5.js +1 -0
  163. package/.next/static/chunks/app/api/models-config/test/route-b6fdcd4bc49766d5.js +1 -0
  164. package/.next/static/chunks/app/api/plugins/route-b6fdcd4bc49766d5.js +1 -0
  165. package/.next/static/chunks/app/api/project-trust/route-b6fdcd4bc49766d5.js +1 -0
  166. package/.next/static/chunks/app/api/sessions/[id]/auto-name/route-b6fdcd4bc49766d5.js +1 -0
  167. package/.next/static/chunks/app/api/sessions/[id]/context/route-b6fdcd4bc49766d5.js +1 -0
  168. package/.next/static/chunks/app/api/sessions/[id]/entries/[entryId]/thinking/route-b6fdcd4bc49766d5.js +1 -0
  169. package/.next/static/chunks/app/api/sessions/[id]/export/route-b6fdcd4bc49766d5.js +1 -0
  170. package/.next/static/chunks/app/api/sessions/[id]/queue-recovery/route-b6fdcd4bc49766d5.js +1 -0
  171. package/.next/static/chunks/app/api/sessions/[id]/route-b6fdcd4bc49766d5.js +1 -0
  172. package/.next/static/chunks/app/api/sessions/[id]/state/route-b6fdcd4bc49766d5.js +1 -0
  173. package/.next/static/chunks/app/api/sessions/route-b6fdcd4bc49766d5.js +1 -0
  174. package/.next/static/chunks/app/api/settings/title-model/route-b6fdcd4bc49766d5.js +1 -0
  175. package/.next/static/chunks/app/api/skills/check/route-b6fdcd4bc49766d5.js +1 -0
  176. package/.next/static/chunks/app/api/skills/install/route-b6fdcd4bc49766d5.js +1 -0
  177. package/.next/static/chunks/app/api/skills/route-b6fdcd4bc49766d5.js +1 -0
  178. package/.next/static/chunks/app/api/skills/search/route-b6fdcd4bc49766d5.js +1 -0
  179. package/.next/static/chunks/app/api/skills/update/route-b6fdcd4bc49766d5.js +1 -0
  180. package/.next/static/chunks/app/api/tasks/[id]/[action]/route-b6fdcd4bc49766d5.js +1 -0
  181. package/.next/static/chunks/app/api/tasks/[id]/changed-files/route-b6fdcd4bc49766d5.js +1 -0
  182. package/.next/static/chunks/app/api/tasks/[id]/diff/route-b6fdcd4bc49766d5.js +1 -0
  183. package/.next/static/chunks/app/api/tasks/[id]/events/route-b6fdcd4bc49766d5.js +1 -0
  184. package/.next/static/chunks/app/api/tasks/[id]/route-b6fdcd4bc49766d5.js +1 -0
  185. package/.next/static/chunks/app/api/tasks/batch/route-b6fdcd4bc49766d5.js +1 -0
  186. package/.next/static/chunks/app/api/tasks/events/route-b6fdcd4bc49766d5.js +1 -0
  187. package/.next/static/chunks/app/api/tasks/route-b6fdcd4bc49766d5.js +1 -0
  188. package/.next/static/chunks/app/api/tasks/settings/route-b6fdcd4bc49766d5.js +1 -0
  189. package/.next/static/chunks/app/api/tasks/templates/route-b6fdcd4bc49766d5.js +1 -0
  190. package/.next/static/chunks/app/api/themes/[name]/route-b6fdcd4bc49766d5.js +1 -0
  191. package/.next/static/chunks/app/api/themes/route-b6fdcd4bc49766d5.js +1 -0
  192. package/.next/static/chunks/app/api/worktrees/route-b6fdcd4bc49766d5.js +1 -0
  193. package/.next/static/chunks/app/page-82d7450b08727b16.js +15 -0
  194. package/.next/static/chunks/next/dist/client/components/builtin/app-error-b6fdcd4bc49766d5.js +1 -0
  195. package/.next/static/chunks/next/dist/client/components/builtin/forbidden-b6fdcd4bc49766d5.js +1 -0
  196. package/.next/static/chunks/next/dist/client/components/builtin/not-found-b6fdcd4bc49766d5.js +1 -0
  197. package/.next/static/chunks/next/dist/client/components/builtin/unauthorized-b6fdcd4bc49766d5.js +1 -0
  198. package/.next/static/epdOjhSfv16VGNZsEm8XB/_buildManifest.js +1 -0
  199. package/.next/trace +9 -7
  200. package/.next/trace-build +1 -1
  201. package/.next/types/app/api/tasks/[id]/[action]/route.ts +351 -0
  202. package/.next/types/app/api/tasks/[id]/changed-files/route.ts +351 -0
  203. package/.next/types/app/api/tasks/[id]/diff/route.ts +351 -0
  204. package/.next/types/app/api/tasks/[id]/events/route.ts +351 -0
  205. package/.next/types/app/api/tasks/[id]/route.ts +351 -0
  206. package/.next/types/app/api/tasks/batch/route.ts +351 -0
  207. package/.next/types/app/api/tasks/events/route.ts +351 -0
  208. package/.next/types/app/api/tasks/route.ts +351 -0
  209. package/.next/types/app/api/tasks/settings/route.ts +351 -0
  210. package/.next/types/app/api/tasks/templates/route.ts +351 -0
  211. package/.next/types/routes.d.ts +11 -1
  212. package/.next/types/validator.ts +90 -0
  213. package/README.en.md +47 -0
  214. package/README.md +51 -0
  215. package/package.json +1 -1
  216. package/.next/server/chunks/3961.js +0 -6
  217. package/.next/static/2u8qV5tbHVkAgCeA8TyZR/_buildManifest.js +0 -1
  218. package/.next/static/chunks/7253-7943c800c2fd7b70.js +0 -1
  219. package/.next/static/chunks/app/_global-error/page-bc5f4c047207b363.js +0 -1
  220. package/.next/static/chunks/app/api/agent/[id]/bash-output/route-bc5f4c047207b363.js +0 -1
  221. package/.next/static/chunks/app/api/agent/[id]/events/route-bc5f4c047207b363.js +0 -1
  222. package/.next/static/chunks/app/api/agent/[id]/route-bc5f4c047207b363.js +0 -1
  223. package/.next/static/chunks/app/api/agent/new/route-bc5f4c047207b363.js +0 -1
  224. package/.next/static/chunks/app/api/agent/running/route-bc5f4c047207b363.js +0 -1
  225. package/.next/static/chunks/app/api/auth/all-providers/route-bc5f4c047207b363.js +0 -1
  226. package/.next/static/chunks/app/api/auth/api-key/[provider]/route-bc5f4c047207b363.js +0 -1
  227. package/.next/static/chunks/app/api/auth/login/[provider]/route-bc5f4c047207b363.js +0 -1
  228. package/.next/static/chunks/app/api/auth/logout/[provider]/route-bc5f4c047207b363.js +0 -1
  229. package/.next/static/chunks/app/api/auth/providers/route-bc5f4c047207b363.js +0 -1
  230. package/.next/static/chunks/app/api/backup/export/route-bc5f4c047207b363.js +0 -1
  231. package/.next/static/chunks/app/api/backup/import/route-bc5f4c047207b363.js +0 -1
  232. package/.next/static/chunks/app/api/cwd/browse/route-bc5f4c047207b363.js +0 -1
  233. package/.next/static/chunks/app/api/cwd/validate/route-bc5f4c047207b363.js +0 -1
  234. package/.next/static/chunks/app/api/default-cwd/route-bc5f4c047207b363.js +0 -1
  235. package/.next/static/chunks/app/api/file-index/route-bc5f4c047207b363.js +0 -1
  236. package/.next/static/chunks/app/api/files/[...path]/route-bc5f4c047207b363.js +0 -1
  237. package/.next/static/chunks/app/api/git/diff/route-bc5f4c047207b363.js +0 -1
  238. package/.next/static/chunks/app/api/git/status/route-bc5f4c047207b363.js +0 -1
  239. package/.next/static/chunks/app/api/home/route-bc5f4c047207b363.js +0 -1
  240. package/.next/static/chunks/app/api/import/discover/route-bc5f4c047207b363.js +0 -1
  241. package/.next/static/chunks/app/api/import/execute/route-bc5f4c047207b363.js +0 -1
  242. package/.next/static/chunks/app/api/import/status/route-bc5f4c047207b363.js +0 -1
  243. package/.next/static/chunks/app/api/models/route-bc5f4c047207b363.js +0 -1
  244. package/.next/static/chunks/app/api/models-config/builtin/route-bc5f4c047207b363.js +0 -1
  245. package/.next/static/chunks/app/api/models-config/catalog/route-bc5f4c047207b363.js +0 -1
  246. package/.next/static/chunks/app/api/models-config/discover/route-bc5f4c047207b363.js +0 -1
  247. package/.next/static/chunks/app/api/models-config/route-bc5f4c047207b363.js +0 -1
  248. package/.next/static/chunks/app/api/models-config/test/route-bc5f4c047207b363.js +0 -1
  249. package/.next/static/chunks/app/api/plugins/route-bc5f4c047207b363.js +0 -1
  250. package/.next/static/chunks/app/api/project-trust/route-bc5f4c047207b363.js +0 -1
  251. package/.next/static/chunks/app/api/sessions/[id]/auto-name/route-bc5f4c047207b363.js +0 -1
  252. package/.next/static/chunks/app/api/sessions/[id]/context/route-bc5f4c047207b363.js +0 -1
  253. package/.next/static/chunks/app/api/sessions/[id]/entries/[entryId]/thinking/route-bc5f4c047207b363.js +0 -1
  254. package/.next/static/chunks/app/api/sessions/[id]/export/route-bc5f4c047207b363.js +0 -1
  255. package/.next/static/chunks/app/api/sessions/[id]/queue-recovery/route-bc5f4c047207b363.js +0 -1
  256. package/.next/static/chunks/app/api/sessions/[id]/route-bc5f4c047207b363.js +0 -1
  257. package/.next/static/chunks/app/api/sessions/[id]/state/route-bc5f4c047207b363.js +0 -1
  258. package/.next/static/chunks/app/api/sessions/route-bc5f4c047207b363.js +0 -1
  259. package/.next/static/chunks/app/api/settings/title-model/route-bc5f4c047207b363.js +0 -1
  260. package/.next/static/chunks/app/api/skills/check/route-bc5f4c047207b363.js +0 -1
  261. package/.next/static/chunks/app/api/skills/install/route-bc5f4c047207b363.js +0 -1
  262. package/.next/static/chunks/app/api/skills/route-bc5f4c047207b363.js +0 -1
  263. package/.next/static/chunks/app/api/skills/search/route-bc5f4c047207b363.js +0 -1
  264. package/.next/static/chunks/app/api/skills/update/route-bc5f4c047207b363.js +0 -1
  265. package/.next/static/chunks/app/api/themes/[name]/route-bc5f4c047207b363.js +0 -1
  266. package/.next/static/chunks/app/api/themes/route-bc5f4c047207b363.js +0 -1
  267. package/.next/static/chunks/app/api/worktrees/route-bc5f4c047207b363.js +0 -1
  268. package/.next/static/chunks/app/page-3e915a4cae4742de.js +0 -15
  269. package/.next/static/chunks/next/dist/client/components/builtin/app-error-bc5f4c047207b363.js +0 -1
  270. package/.next/static/chunks/next/dist/client/components/builtin/forbidden-bc5f4c047207b363.js +0 -1
  271. package/.next/static/chunks/next/dist/client/components/builtin/not-found-bc5f4c047207b363.js +0 -1
  272. package/.next/static/chunks/next/dist/client/components/builtin/unauthorized-bc5f4c047207b363.js +0 -1
  273. /package/.next/static/{2u8qV5tbHVkAgCeA8TyZR → epdOjhSfv16VGNZsEm8XB}/_ssgManifest.js +0 -0
@@ -2,7 +2,7 @@
2
2
  // Do not edit this file manually
3
3
 
4
4
  type AppRoutes = "/"
5
- type AppRouteHandlerRoutes = "/api/agent/[id]" | "/api/agent/[id]/bash-output" | "/api/agent/[id]/events" | "/api/agent/new" | "/api/agent/running" | "/api/auth/all-providers" | "/api/auth/api-key/[provider]" | "/api/auth/login/[provider]" | "/api/auth/logout/[provider]" | "/api/auth/providers" | "/api/backup/export" | "/api/backup/import" | "/api/cwd/browse" | "/api/cwd/validate" | "/api/default-cwd" | "/api/file-index" | "/api/files/[...path]" | "/api/git/diff" | "/api/git/status" | "/api/home" | "/api/import/discover" | "/api/import/execute" | "/api/import/status" | "/api/models" | "/api/models-config" | "/api/models-config/builtin" | "/api/models-config/catalog" | "/api/models-config/discover" | "/api/models-config/test" | "/api/plugins" | "/api/project-trust" | "/api/sessions" | "/api/sessions/[id]" | "/api/sessions/[id]/auto-name" | "/api/sessions/[id]/context" | "/api/sessions/[id]/entries/[entryId]/thinking" | "/api/sessions/[id]/export" | "/api/sessions/[id]/queue-recovery" | "/api/sessions/[id]/state" | "/api/settings/title-model" | "/api/skills" | "/api/skills/check" | "/api/skills/install" | "/api/skills/search" | "/api/skills/update" | "/api/themes" | "/api/themes/[name]" | "/api/worktrees"
5
+ type AppRouteHandlerRoutes = "/api/agent/[id]" | "/api/agent/[id]/bash-output" | "/api/agent/[id]/events" | "/api/agent/new" | "/api/agent/running" | "/api/auth/all-providers" | "/api/auth/api-key/[provider]" | "/api/auth/login/[provider]" | "/api/auth/logout/[provider]" | "/api/auth/providers" | "/api/backup/export" | "/api/backup/import" | "/api/cwd/browse" | "/api/cwd/validate" | "/api/default-cwd" | "/api/file-index" | "/api/files/[...path]" | "/api/git/diff" | "/api/git/status" | "/api/home" | "/api/import/discover" | "/api/import/execute" | "/api/import/status" | "/api/models" | "/api/models-config" | "/api/models-config/builtin" | "/api/models-config/catalog" | "/api/models-config/discover" | "/api/models-config/test" | "/api/plugins" | "/api/project-trust" | "/api/sessions" | "/api/sessions/[id]" | "/api/sessions/[id]/auto-name" | "/api/sessions/[id]/context" | "/api/sessions/[id]/entries/[entryId]/thinking" | "/api/sessions/[id]/export" | "/api/sessions/[id]/queue-recovery" | "/api/sessions/[id]/state" | "/api/settings/title-model" | "/api/skills" | "/api/skills/check" | "/api/skills/install" | "/api/skills/search" | "/api/skills/update" | "/api/tasks" | "/api/tasks/[id]" | "/api/tasks/[id]/[action]" | "/api/tasks/[id]/changed-files" | "/api/tasks/[id]/diff" | "/api/tasks/[id]/events" | "/api/tasks/batch" | "/api/tasks/events" | "/api/tasks/settings" | "/api/tasks/templates" | "/api/themes" | "/api/themes/[name]" | "/api/worktrees"
6
6
  type PageRoutes = never
7
7
  type LayoutRoutes = "/"
8
8
  type RedirectRoutes = never
@@ -57,6 +57,16 @@ interface ParamMap {
57
57
  "/api/skills/install": {}
58
58
  "/api/skills/search": {}
59
59
  "/api/skills/update": {}
60
+ "/api/tasks": {}
61
+ "/api/tasks/[id]": { "id": string; }
62
+ "/api/tasks/[id]/[action]": { "id": string; "action": string; }
63
+ "/api/tasks/[id]/changed-files": { "id": string; }
64
+ "/api/tasks/[id]/diff": { "id": string; }
65
+ "/api/tasks/[id]/events": { "id": string; }
66
+ "/api/tasks/batch": {}
67
+ "/api/tasks/events": {}
68
+ "/api/tasks/settings": {}
69
+ "/api/tasks/templates": {}
60
70
  "/api/themes": {}
61
71
  "/api/themes/[name]": { "name": string; }
62
72
  "/api/worktrees": {}
@@ -461,6 +461,96 @@ type RouteHandlerConfig<Route extends AppRouteHandlerRoutes = AppRouteHandlerRou
461
461
  type __Unused = __Check
462
462
  }
463
463
 
464
+ // Validate ../../app/api/tasks/[id]/[action]/route.ts
465
+ {
466
+ type __IsExpected<Specific extends RouteHandlerConfig<"/api/tasks/[id]/[action]">> = Specific
467
+ const handler = {} as typeof import("../../app/api/tasks/[id]/[action]/route.js")
468
+ type __Check = __IsExpected<typeof handler>
469
+ // @ts-ignore
470
+ type __Unused = __Check
471
+ }
472
+
473
+ // Validate ../../app/api/tasks/[id]/changed-files/route.ts
474
+ {
475
+ type __IsExpected<Specific extends RouteHandlerConfig<"/api/tasks/[id]/changed-files">> = Specific
476
+ const handler = {} as typeof import("../../app/api/tasks/[id]/changed-files/route.js")
477
+ type __Check = __IsExpected<typeof handler>
478
+ // @ts-ignore
479
+ type __Unused = __Check
480
+ }
481
+
482
+ // Validate ../../app/api/tasks/[id]/diff/route.ts
483
+ {
484
+ type __IsExpected<Specific extends RouteHandlerConfig<"/api/tasks/[id]/diff">> = Specific
485
+ const handler = {} as typeof import("../../app/api/tasks/[id]/diff/route.js")
486
+ type __Check = __IsExpected<typeof handler>
487
+ // @ts-ignore
488
+ type __Unused = __Check
489
+ }
490
+
491
+ // Validate ../../app/api/tasks/[id]/events/route.ts
492
+ {
493
+ type __IsExpected<Specific extends RouteHandlerConfig<"/api/tasks/[id]/events">> = Specific
494
+ const handler = {} as typeof import("../../app/api/tasks/[id]/events/route.js")
495
+ type __Check = __IsExpected<typeof handler>
496
+ // @ts-ignore
497
+ type __Unused = __Check
498
+ }
499
+
500
+ // Validate ../../app/api/tasks/[id]/route.ts
501
+ {
502
+ type __IsExpected<Specific extends RouteHandlerConfig<"/api/tasks/[id]">> = Specific
503
+ const handler = {} as typeof import("../../app/api/tasks/[id]/route.js")
504
+ type __Check = __IsExpected<typeof handler>
505
+ // @ts-ignore
506
+ type __Unused = __Check
507
+ }
508
+
509
+ // Validate ../../app/api/tasks/batch/route.ts
510
+ {
511
+ type __IsExpected<Specific extends RouteHandlerConfig<"/api/tasks/batch">> = Specific
512
+ const handler = {} as typeof import("../../app/api/tasks/batch/route.js")
513
+ type __Check = __IsExpected<typeof handler>
514
+ // @ts-ignore
515
+ type __Unused = __Check
516
+ }
517
+
518
+ // Validate ../../app/api/tasks/events/route.ts
519
+ {
520
+ type __IsExpected<Specific extends RouteHandlerConfig<"/api/tasks/events">> = Specific
521
+ const handler = {} as typeof import("../../app/api/tasks/events/route.js")
522
+ type __Check = __IsExpected<typeof handler>
523
+ // @ts-ignore
524
+ type __Unused = __Check
525
+ }
526
+
527
+ // Validate ../../app/api/tasks/route.ts
528
+ {
529
+ type __IsExpected<Specific extends RouteHandlerConfig<"/api/tasks">> = Specific
530
+ const handler = {} as typeof import("../../app/api/tasks/route.js")
531
+ type __Check = __IsExpected<typeof handler>
532
+ // @ts-ignore
533
+ type __Unused = __Check
534
+ }
535
+
536
+ // Validate ../../app/api/tasks/settings/route.ts
537
+ {
538
+ type __IsExpected<Specific extends RouteHandlerConfig<"/api/tasks/settings">> = Specific
539
+ const handler = {} as typeof import("../../app/api/tasks/settings/route.js")
540
+ type __Check = __IsExpected<typeof handler>
541
+ // @ts-ignore
542
+ type __Unused = __Check
543
+ }
544
+
545
+ // Validate ../../app/api/tasks/templates/route.ts
546
+ {
547
+ type __IsExpected<Specific extends RouteHandlerConfig<"/api/tasks/templates">> = Specific
548
+ const handler = {} as typeof import("../../app/api/tasks/templates/route.js")
549
+ type __Check = __IsExpected<typeof handler>
550
+ // @ts-ignore
551
+ type __Unused = __Check
552
+ }
553
+
464
554
  // Validate ../../app/api/themes/[name]/route.ts
465
555
  {
466
556
  type __IsExpected<Specific extends RouteHandlerConfig<"/api/themes/[name]">> = Specific
package/README.en.md CHANGED
@@ -17,10 +17,57 @@
17
17
  - A browsable folder picker for loading a project without manually entering a path.
18
18
  - File explorer and preview for source, diffs, images, audio, PDF, and DOCX files.
19
19
  - Model, OAuth/API-key, skill, plugin, theme, language, and Git worktree management in the browser.
20
+ - Task board (Beta, desktop only): four-column kanban that runs each task as an agent in its own git worktree branch, with review, merge, archive and per-project settings.
20
21
  - Mobile layout keeps the selected model and send action visible, while long project and repository labels truncate instead of causing horizontal scrolling.
21
22
 
23
+ ## Task board (Beta)
24
+
25
+ On desktop, click the board button (four-square icon) in the title bar to toggle between chat and the task board. The board turns "delegate work to an agent" into a trackable pipeline: create → start → run → review → merge → done.
26
+
27
+ ### Status columns
28
+
29
+ | Column | Statuses | Meaning |
30
+ | --- | --- | --- |
31
+ | Todo | `todo` | Created, waiting to start |
32
+ | In progress | `queued` / `preparing` / `running` | Queued, setting up the worktree, agent running |
33
+ | Attention | `awaiting_input` / `review` / `merging` / `failed` | Needs you: waiting for input, review, merging, failed |
34
+ | Done | `done` / `canceled` | Finished or canceled (canceled hidden by default, toggle in Filter) |
35
+
36
+ ### Workflow
37
+
38
+ 1. **New task** — pick a project, write a title and a prompt (task description). Save recurring prompts as templates.
39
+ 2. **Start** — click **Start** on the card; the engine creates a dedicated branch (`task/<id>-<slug>`) under the project's `-worktrees` directory and runs the agent there. You can also drag a todo card onto the **In progress** column to start it, or use **Start all** to queue every todo of the project.
40
+ 3. **Running / cancel** — cancel anytime while running; tasks that need your input flip to *awaiting input*.
41
+ 4. **Review** — when the agent finishes, the task moves to **Attention** (a red badge appears in the board title; a system notification fires while the window is inactive). Open the detail drawer to inspect changed files, diffs and the full timeline; projects with a preflight command show an acceptance red/green light.
42
+ - **Merge** — accept the result (auto or manual commit message; optionally delete the worktree). The agent merges inside its session; the task then lands in **Done**.
43
+ - **Return** — send it back with feedback to keep working.
44
+ 5. **Archive** — archive finished/failed/canceled tasks (hidden by default, toggle in Filter); **Archive all** clears the Done column.
45
+ 6. **Failures** — failed tasks show the error; **Retry** relaunches on a new run generation, or **Edit** then restart; canceled tasks can be **re-queued**.
46
+
47
+ ### Task settings
48
+
49
+ The board's own **Task settings** button configures per-project execution (separate from the main Settings modal):
50
+
51
+ | Setting | Meaning |
52
+ | --- | --- |
53
+ | Auto-process queued tasks | Start tasks as soon as they are queued |
54
+ | Max concurrent tasks | Per-project execution limit (0 = unlimited) |
55
+ | Merge strategy | Merge commit or squash |
56
+ | Delete worktree after merge (default) | Auto-clean worktree + branch after merge |
57
+ | Preflight command | Command run in the worktree before review (acceptance check, e.g. `npm test`) |
58
+ | Init command | Command run in the worktree before the agent starts (e.g. `pnpm install`) |
59
+ | Stage prompts | Extra instructions per stage: work / retry / return / merge |
60
+
61
+ ### Notes & limits
62
+
63
+ - Tasks are stored under `~/.pi/agent/tasks/` (JSONL, atomic writes); task sessions live with your other sessions and are browsable from the sessions list.
64
+ - Each task runs in its own git worktree branch; task agents are explicitly constrained not to commit/push other branches or checkouts.
65
+ - The engine is a single server process (exclusive lock); interrupted tasks are recovered on restart (marked failed/interrupted, retryable).
66
+ - Beta: desktop only; the mobile UI does not show the board.
67
+
22
68
  ## Latest changes (2026-08-05)
23
69
 
70
+ - **Task board (Beta, desktop)** — a new title-bar button toggles a four-column kanban (Todo / In progress / Attention / Done) that runs each task as an agent in its own git worktree branch: drag-to-start, detail drawer (timeline / diff / changed files), review & merge, return with feedback, archive, task templates, per-project task settings (concurrency / merge strategy / preflight / init command / stage prompts), system notifications, and full i18n + theme support. Tasks are stored under `~/.pi/agent/tasks/` (JSONL).
24
71
  - **Builtin model config persistence fix** — edits to builtin provider models (context window / max output / reasoning / thinking map / name / hidden) now persist as field-level `modelOverrides` instead of whole-model replacement entries, so untouched fields are never reset. All `models.json` mutations are serialized behind a file lock with atomic writes; local saves and the global Save button can no longer overwrite each other.
25
72
  - **Draft protection** — switching providers, clicking the global Save, or closing Settings first flushes pending builtin model edits; on failure the draft is kept and an error is shown instead of silently dropping changes. Historical `models[]` configs remain supported with custom/transport fields preserved.
26
73
 
package/README.md CHANGED
@@ -34,11 +34,62 @@
34
34
  | 备份恢复 | 一键导出/导入核心配置、技能、插件、MCP 服务器与会话(可选含密钥),跨平台自动适配路径与命令。 |
35
35
  | 技能与插件 | 查询、安装、启停 Skills 与 package 插件。 |
36
36
  | Git Worktree | 在同一项目下创建、切换和移除 Worktree。 |
37
+ | 任务看板 | 桌面端四列看板:把任务交给 agent 在 worktree 分支中执行,支持验收、合并、归档、每项目设置(Beta)。 |
37
38
  | 主题与语言 | 支持 Pi TUI 主题、亮暗模式及中文/English。 |
38
39
  | 移动端 | 适配 Safari/Chrome 窄屏布局;模型选择和发送操作保持可见。 |
39
40
 
41
+ ## 任务看板(Beta)
42
+
43
+ 桌面端(非移动端)点击标题栏的看板按钮(四宫格图标)即可在聊天与任务看板之间切换。看板把「给 agent 派活」变成了一个可跟踪、可验收、可归档的流水线。
44
+
45
+ ### 状态与四列
46
+
47
+ 任务按状态落入四列:
48
+
49
+ | 列 | 状态 | 说明 |
50
+ | --- | --- | --- |
51
+ | 待办 | `todo` | 已创建、等待启动 |
52
+ | 进行中 | `queued` / `preparing` / `running` | 排队中、创建 worktree 中、agent 执行中 |
53
+ | 待处理 | `awaiting_input` / `review` / `merging` / `failed` | 需要你处理:等待输入、待验收、合并中、失败 |
54
+ | 已完成 | `done` / `canceled` | 完成或取消(取消默认隐藏,可在筛选里打开) |
55
+
56
+ 一条任务的完整生命周期:**创建 → 启动 → 执行 → 待验收 → 合并 → 已完成**。
57
+
58
+ ### 使用流程
59
+
60
+ 1. **新建任务**:点击「新建任务」,选择项目、填写标题与任务说明(prompt)。可把常用任务存为模板复用。
61
+ 2. **启动**:点击卡片上的「开始」,引擎会自动在该项目的 `-worktrees` 目录下创建独立分支(`task/<id>-<slug>`),在其中启动 agent 执行。也可以把待办卡片**拖到「进行中」列**直接启动;「全部启动」会排队当前项目的全部待办任务。
62
+ 3. **执行与等待**:任务运行时可随时点「取消」;agent 需要你输入时会进入「等待输入」状态。
63
+ 4. **验收**:agent 完成后任务进入「待处理」列(顶部标题栏会出现红色待处理计数徽章,窗口未激活时还会收到系统通知)。点卡片打开详情抽屉:查看变更文件、Diff、完整时间线;配置了预检命令的项目会显示验收红绿灯。
64
+ - **合并**:接受产出,可选择自动/手动提交信息、是否删除 worktree。合并由 agent 在会话内完成,成功后任务进入「已完成」。
65
+ - **退回**:不满意时填写反馈退回给 agent 继续修改。
66
+ 5. **归档**:已完成/失败/取消的任务可归档(默认隐藏,筛选里可显示);「全部归档」一键清空已完成列。
67
+ 6. **失败处理**:失败任务显示错误信息,可「重试」(换新代际重新执行)或「编辑」后重新启动;取消的任务可「重新排队」回到待办。
68
+
69
+ ### 任务设置
70
+
71
+ 看板标题栏的「任务设置」按项目配置执行行为(独立于主设置弹窗):
72
+
73
+ | 设置 | 说明 |
74
+ | --- | --- |
75
+ | 自动处理排队任务 | 开启后任务一排队即自动启动 |
76
+ | 最大并发任务数 | 每项目同时执行的上限(0 = 不限) |
77
+ | 合并策略 | 合并提交(merge commit)或压缩提交(squash) |
78
+ | 合并后删除 worktree(默认) | 合并完成后自动清理 worktree 与分支 |
79
+ | 预检命令(验收检查) | 任务进入待验收前在 worktree 中运行的命令,输出红绿灯结果(如 `npm test`) |
80
+ | 初始化命令 | agent 启动前在 worktree 中执行(如 `pnpm install`) |
81
+ | 阶段提示词 | 执行 / 重试 / 退回 / 合并各阶段的附加指令 |
82
+
83
+ ### 技术说明与限制
84
+
85
+ - 任务存储于 `~/.pi/agent/tasks/`(JSONL,原子写),与会话文件同级;任务会话与其他会话一样可在会话列表查看。
86
+ - 每个任务在独立 git worktree 分支中执行,互不干扰;**任务 agent 被明确约束不得提交/推送其他分支或工作区的改动**。
87
+ - 引擎由服务器进程持有(单实例锁),重启后自动恢复中断的任务(标记为失败/中断,可重试)。
88
+ - Beta 阶段:仅在桌面端显示入口;移动端不可用。
89
+
40
90
  ## 最新更新(2026-08-05)
41
91
 
92
+ - **任务看板(Beta,桌面端)**:标题栏新增看板按钮,四列看板(待办/进行中/待处理/已完成)把任务交给 agent 在独立 git worktree 分支中执行;支持拖拽启动、详情抽屉(时间线/Diff/变更文件)、验收合并、退回反馈、归档、任务模板、每项目任务设置(并发/合并策略/预检/初始化命令/阶段提示词)、系统通知与中英文/主题适配。任务存于 `~/.pi/agent/tasks/`(JSONL)。
42
93
  - **内置模型配置持久化修复**:内置供应商模型编辑(上下文窗口 / 最大输出 / 思考映射 / 名称 / 隐藏)改为写入 SDK 原生 `modelOverrides` 字段级覆盖,不再整模型替换,也不会重置未修改字段;`models.json` 读写加互斥锁与原子写,局部保存和全局保存互不覆盖。
43
94
  - **草稿保护**:切换供应商、点击全局保存或关闭设置前会自动保存未提交的内置模型修改;保存失败保留草稿并提示,不再静默丢失。兼容历史 `models[]` 配置,自定义与传输字段原样保留。
44
95
  - **备份导入修复**:修复超过 10MB 的备份包导入被截断(413)的问题,上传上限与导入接口对齐(600MB);导入按钮改为标准按钮样式,不再像纯文字。
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@qt4798/pi-web",
3
- "version": "0.9.15",
3
+ "version": "0.9.16-beta.0",
4
4
  "description": "Web workspace for the pi coding agent",
5
5
  "homepage": "https://github.com/t479842598/pi-web-QT#readme",
6
6
  "repository": {
@@ -1,6 +0,0 @@
1
- "use strict";exports.id=3961,exports.ids=[3961],exports.modules={1060:(a,b,c)=>{c.d(b,{Ac:()=>n,GO:()=>j,X:()=>l,_4:()=>d,cV:()=>k,jL:()=>f,kv:()=>e,oC:()=>m});let d=262144,e=0xa00000,f=0xa00000,g={png:"image/png",jpg:"image/jpeg",jpeg:"image/jpeg",gif:"image/gif",webp:"image/webp",svg:"image/svg+xml",bmp:"image/bmp",ico:"image/x-icon",avif:"image/avif"},h={mp3:"audio/mpeg",wav:"audio/wav",ogg:"audio/ogg",oga:"audio/ogg",opus:"audio/ogg",m4a:"audio/mp4",aac:"audio/aac",flac:"audio/flac",weba:"audio/webm",webm:"audio/webm"},i={pdf:"application/pdf",docx:"application/vnd.openxmlformats-officedocument.wordprocessingml.document"};function j(a){return(a.replace(/\\/g,"/").split("/").pop()??"").toLowerCase().split(".").pop()??""}function k(a){return g[j(a)]??null}function l(a){return h[j(a)]??null}function m(a){return i[j(a)]??null}function n(a){let b=j(a);return"pdf"===b||"docx"===b?b:null}},33012:(a,b,c)=>{c.d(b,{S:()=>A,$:()=>x});var d=c(79646),e=c(29021),f=c(33873),g=c.n(f),h=c(28354),i=c(1060);let j=new Set(["DD","AU","UD","UA","DU","AA","UU"]);function k(a){let b=`${a.indexStatus}${a.worktreeStatus}`;return"??"===b?{status:"untracked",code:"U"}:j.has(b)||b.includes("U")?{status:"conflict",code:"C"}:b.includes("D")?{status:"deleted",code:"D"}:b.includes("R")||b.includes("C")?{status:"renamed",code:"R"}:b.includes("A")?{status:"added",code:"A"}:{status:"modified",code:"M"}}let l=(0,h.promisify)(d.execFile);async function m(a,b,c=8388608){let{stdout:d}=await l("git",["-C",a,...b],{timeout:1e4,maxBuffer:c,env:{...process.env,LC_ALL:"C"}});return d}async function n(a){try{return(await m(a,["rev-parse","--show-toplevel"])).trim()||null}catch{return null}}function o(a,b){let c=g().relative(g().resolve(a),g().resolve(b));return""===c||!c.startsWith(`..${g().sep}`)&&".."!==c&&!g().isAbsolute(c)}function p(a){try{return(0,e.realpathSync)(a)}catch{return g().resolve(a)}}function q(a){return a.split(g().sep).join("/")}async function r(a){return function(a){let b=a.split("\0"),c=[];for(let a=0;a<b.length;a+=1){var d,e;let f=b[a];if(!f||f.length<4||" "!==f[2])continue;let g={path:f.slice(3),indexStatus:f[0],worktreeStatus:f[1]};d=g.indexStatus,e=g.worktreeStatus,("R"===d||"C"===d||"R"===e||"C"===e)&&(g.originalPath=b[a+1]||void 0,a+=1),c.push(g)}return c}(await m(a,["status","--porcelain=v1","-z","--untracked-files=all"]))}async function s(a,b){let c=q(g().relative(a,b));try{let b=await m(a,["diff","--no-color","--no-ext-diff","--numstat","HEAD","--",c||"."]),d=0,e=0;for(let a of b.split(/\r?\n/)){if(!a)continue;let[b,c]=a.split(" ",2),f=Number(b),g=Number(c);Number.isInteger(f)&&(d+=f),Number.isInteger(g)&&(e+=g)}return{additions:d,deletions:e}}catch{return{additions:0,deletions:0}}}function t(a){return a.includes(0)}function u(a){return a.split("\0").filter(Boolean)}async function v(a,b){return 0===b.length?[]:new Promise(c=>{let e=(0,d.spawn)("git",["-C",a,"check-ignore","--no-index","--stdin","-z"],{env:{...process.env,LC_ALL:"C"},stdio:["pipe","pipe","ignore"]}),f="",g=!1,h=a=>{g||(g=!0,clearTimeout(i),c(a))},i=setTimeout(()=>{e.kill(),h([])},1e4);e.stdout.on("data",a=>{f+=a.toString()}),e.once("error",()=>h([])),e.once("close",()=>h(u(f))),e.stdin.end(`${b.join("\0")}\0`)})}async function w(a){try{let[b,c]=await Promise.all([m(a,["ls-files","--cached","-z"]),m(a,["ls-files","--others","--ignored","--exclude-standard","--directory","-z"])]),d=u(b),e=new Set([...d,...function(a){let b=new Set;for(let c of a){let a=g().posix.dirname(c);for(;a&&"."!==a;)b.add(a),a=g().posix.dirname(a)}return[...b]}(d),...u(c).map(a=>a.replace(/\/+$/,""))]);return(await v(a,[...e])).map(b=>g().resolve(a,b))}catch{return[]}}async function x(a){let b=p(a),c=await n(b);if(!c)return{isGitRepository:!1,repositoryRoot:null,files:[],additions:0,deletions:0,ignoredPaths:[]};let[d,f,h]=await Promise.all([r(c),s(c,b),w(c)]),j=d.flatMap(a=>{let d=g().resolve(c,a.path);return o(b,d)?[{filePath:d,...k(a),indexStatus:a.indexStatus,worktreeStatus:a.worktreeStatus}]:[]}),l=j.reduce((a,b)=>a+("untracked"===b.status?function(a){try{let b=(0,e.lstatSync)(a);if(!b.isFile()||b.size>i._4)return 0;let c=(0,e.readFileSync)(a);if(t(c)||0===c.length)return 0;let d=c.toString("utf8");return d.endsWith("\n")?d.split("\n").length-1:d.split("\n").length}catch{return 0}}(b.filePath):0),0);return{isGitRepository:!0,repositoryRoot:c,files:j,additions:f.additions+l,deletions:f.deletions,ignoredPaths:h.filter(a=>o(b,a))}}function y(a,b){let c=b.endsWith("\n"),d=b.split("\n");c&&d.pop();let e=d.map(a=>`+${a}`).join("\n"),f=!c&&d.length>0?"\n\":"";return`diff --git a/${a} b/${a}
2
- new file mode 100644
3
- --- /dev/null
4
- +++ b/${a}
5
- @@ -0,0 +1,${d.length} @@
6
- ${e}${f}`}async function z(a,b,c){try{return await m(a,["diff","--no-color","--no-ext-diff","--unified=3","HEAD","--",...c&&c!==b?[c,b]:[b]],4*i._4)}catch{return null}}async function A(a,b){let c,d=p(a),f=await n(d),h=g().resolve(d,g().relative(g().resolve(a),g().resolve(b)));if(!f||!o(f,h))return{supported:!1};let j=q(g().relative(f,h)),l=(await r(f)).find(a=>a.path===j);if(!l)return{supported:!1};let{status:m}=k(l);if("deleted"===m){let a=await z(f,j,l.originalPath);return a?.includes("\n@@ ")?{supported:!0,status:m,patch:a}:{supported:!1}}try{c=(0,e.lstatSync)(h)}catch{return{supported:!1}}if(!c.isFile()||c.size>i._4)return{supported:!1};let s=(0,e.readFileSync)(h);if(t(s))return{supported:!1};let u=s.toString("utf8"),v="untracked"===m?y(j,u):await z(f,j,l.originalPath)??("added"===m?y(j,u):null);return v?.includes("\n@@ ")?{supported:!0,status:m,patch:v}:{supported:!1}}},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"))}},80547:(a,b,c)=>{c.a(a,async(a,d)=>{try{c.d(b,{A$:()=>n,Nw:()=>i.Nw,mc:()=>m,uK:()=>l,wz:()=>i.wz});var e=c(29021),f=c(21820),g=c(33873),h=c.n(g),i=c(25252),j=c(40402),k=a([j]);j=(k.then?(await k)():k)[0];let o=/^[a-zA-Z]:[\\/]/;function l(a){return o.test(a)||a.startsWith("\\\\")||a.startsWith("//")}async function m(){let a=Date.now(),b=globalThis.__piAllowedRootsCache;if(b&&b.expiresAt>a)return b.roots;let c=await (0,j.dQ)(),d=new Set;for(let a of c)a.cwd&&d.add((0,i.Nw)(a.cwd)),a.projectRoot&&d.add((0,i.Nw)(a.projectRoot));try{for(let a of(0,e.readdirSync)((0,f.homedir)()))/^pi-cwd-\d{8}$/.test(a)&&d.add((0,i.Nw)(h().join((0,f.homedir)(),a)))}catch{}for(let a of(0,i.HM)())d.add(a);return globalThis.__piAllowedRootsCache={roots:d,expiresAt:a+5e3},d}function n(a,b){for(let c of b){let b=l(a)||l(c),d=b?h().win32:h(),e=b?"\\":h().sep,f=d.resolve(a),g=d.resolve(c),i=b?f.toLowerCase():f,j=b?g.toLowerCase():g,k=j.endsWith(e)?j:j+e;if(i===j||i.startsWith(k))return!0}return!1}d()}catch(a){d(a)}})}};
@@ -1 +0,0 @@
1
- self.__BUILD_MANIFEST={__rewrites:{afterFiles:[],beforeFiles:[],fallback:[]},__routerFilterStatic:{numItems:39,errorRate:1e-4,numBits:748,numHashes:14,bitArray:[1,0,0,1,0,1,1,1,1,1,0,1,0,1,1,0,0,0,1,0,1,1,1,1,1,0,1,1,1,0,0,0,1,0,1,1,1,1,1,0,0,1,0,1,0,0,1,1,1,0,1,1,0,1,0,0,1,1,0,0,1,1,0,1,0,1,0,1,0,0,1,1,1,1,0,0,1,0,0,1,1,0,0,0,1,0,1,0,1,0,0,0,1,0,1,0,1,0,1,1,1,0,1,1,0,1,0,1,0,1,1,0,1,1,1,0,1,0,1,1,1,0,1,1,1,0,1,1,1,1,1,1,1,0,0,0,0,0,0,1,0,0,0,1,0,0,1,1,0,1,1,0,0,0,1,1,1,1,1,0,1,1,0,0,1,0,0,1,0,1,0,1,1,1,1,0,1,0,1,1,0,0,1,1,0,1,1,0,0,0,0,0,1,0,0,1,0,0,0,1,1,0,1,0,0,1,0,1,0,1,0,0,1,1,0,0,1,0,1,1,1,1,1,0,1,0,1,0,1,0,0,1,0,0,1,1,0,1,0,0,0,0,1,1,1,1,0,0,1,1,1,1,1,0,1,1,0,0,1,1,1,0,1,0,1,0,1,0,1,1,1,1,1,0,1,1,1,0,0,1,1,0,0,0,0,0,1,1,0,0,0,0,1,0,1,1,0,1,1,1,1,1,0,1,0,0,0,0,1,1,0,0,1,0,1,0,1,0,0,0,1,1,1,1,0,0,1,1,0,0,1,1,1,1,0,0,1,1,0,0,0,1,1,1,0,0,0,1,1,0,0,1,1,1,0,0,1,1,0,1,0,0,1,1,1,1,0,0,1,0,1,1,0,1,1,1,0,0,0,0,0,0,0,0,0,1,1,0,1,1,0,1,0,0,1,1,0,1,1,1,0,1,1,0,0,0,0,1,0,0,1,1,0,0,0,0,0,0,0,0,1,0,0,1,0,0,0,1,1,1,0,1,0,1,0,1,0,0,0,0,0,0,0,0,1,1,0,0,1,0,1,0,1,0,1,0,0,0,0,1,0,1,0,1,0,0,1,1,0,1,0,0,0,0,0,0,0,0,0,0,1,1,1,0,0,0,0,0,1,0,1,1,0,1,0,1,0,1,1,1,0,1,0,0,0,1,0,1,1,0,0,0,1,0,0,1,1,0,1,1,0,0,1,1,1,0,1,0,0,0,0,1,0,1,1,0,1,0,1,0,0,1,1,1,0,1,0,0,0,1,1,0,0,0,1,1,0,0,0,0,0,1,1,0,1,1,1,1,0,1,1,1,1,0,0,1,0,1,1,1,0,0,1,0,0,1,0,0,1,1,0,1,1,0,0,0,0,0,1,1,1,0,1,1,1,0,0,1,0,1,1,0,1,0,1,1,0,0,0,0,0,0,1,0,0,0,1,0,0,0,1,0,0,1,0,0,1,1,1,0,1,1,0,1,1,1,0,1,0,0,1,1,1,0,1,0,1,0,1,1,1,0,1,1,1,1,0,1,1,1,1,0,1,1,0,1,0,0,1,0,0,0,1,1,1,0,1,0,1,1,1,1,1,0,1,1,0,0,1,0,0,1,1,1,1,1,1,1,1,1,1,0,1,0,0,0,1,1,1,1,1,0,0,0,1,1,0,1,0,1,1,0,1,1,1,0,1,1,0,0,0,0,1,0,0,1,1,0]},__routerFilterDynamic:{numItems:7,errorRate:1e-4,numBits:135,numHashes:14,bitArray:[0,1,1,0,0,1,0,1,0,0,1,0,0,1,0,1,0,0,0,0,1,0,1,1,1,1,0,0,1,0,0,0,1,1,1,1,1,0,1,0,1,1,1,0,0,0,1,1,1,1,1,0,1,0,0,1,1,1,1,0,1,0,0,1,1,1,1,0,1,1,1,1,1,0,0,0,0,1,0,0,1,0,1,0,0,0,1,0,1,1,1,0,0,1,0,0,0,0,1,0,0,0,0,0,0,0,0,1,1,1,1,1,0,1,1,0,0,0,0,0,1,0,0,1,1,1,1,1,0,0,1,0,1,0,1]},sortedPages:["/_app"]},self.__BUILD_MANIFEST_CB&&self.__BUILD_MANIFEST_CB();