@baique/pi-web-sky 0.1.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 (604) hide show
  1. package/.next/BUILD_ID +1 -0
  2. package/.next/app-path-routes-manifest.json +48 -0
  3. package/.next/build-manifest.json +20 -0
  4. package/.next/diagnostics/build-diagnostics.json +6 -0
  5. package/.next/diagnostics/framework.json +1 -0
  6. package/.next/export-marker.json +6 -0
  7. package/.next/images-manifest.json +68 -0
  8. package/.next/next-minimal-server.js.nft.json +1 -0
  9. package/.next/next-server.js.nft.json +1 -0
  10. package/.next/package.json +1 -0
  11. package/.next/prerender-manifest.json +161 -0
  12. package/.next/react-loadable-manifest.json +2367 -0
  13. package/.next/required-server-files.js +369 -0
  14. package/.next/required-server-files.json +369 -0
  15. package/.next/routes-manifest.json +386 -0
  16. package/.next/server/app/_global-error/page.js +31 -0
  17. package/.next/server/app/_global-error/page.js.nft.json +1 -0
  18. package/.next/server/app/_global-error/page_client-reference-manifest.js +1 -0
  19. package/.next/server/app/_global-error.html +1 -0
  20. package/.next/server/app/_global-error.meta +27 -0
  21. package/.next/server/app/_global-error.rsc +14 -0
  22. package/.next/server/app/_global-error.segments/_full.segment.rsc +14 -0
  23. package/.next/server/app/_global-error.segments/_global-error/__PAGE__.segment.rsc +20 -0
  24. package/.next/server/app/_global-error.segments/_tree.segment.rsc +1 -0
  25. package/.next/server/app/_not-found/page.js +1 -0
  26. package/.next/server/app/_not-found/page.js.nft.json +1 -0
  27. package/.next/server/app/_not-found/page_client-reference-manifest.js +1 -0
  28. package/.next/server/app/_not-found.html +1 -0
  29. package/.next/server/app/_not-found.meta +27 -0
  30. package/.next/server/app/_not-found.rsc +20 -0
  31. package/.next/server/app/_not-found.segments/_full.segment.rsc +20 -0
  32. package/.next/server/app/_not-found.segments/_not-found/__PAGE__.segment.rsc +24 -0
  33. package/.next/server/app/_not-found.segments/_tree.segment.rsc +5 -0
  34. package/.next/server/app/api/agent/[id]/bash-output/route.js +1 -0
  35. package/.next/server/app/api/agent/[id]/bash-output/route.js.nft.json +1 -0
  36. package/.next/server/app/api/agent/[id]/bash-output/route_client-reference-manifest.js +1 -0
  37. package/.next/server/app/api/agent/[id]/events/route.js +3 -0
  38. package/.next/server/app/api/agent/[id]/events/route.js.nft.json +1 -0
  39. package/.next/server/app/api/agent/[id]/events/route_client-reference-manifest.js +1 -0
  40. package/.next/server/app/api/agent/[id]/route.js +1 -0
  41. package/.next/server/app/api/agent/[id]/route.js.nft.json +1 -0
  42. package/.next/server/app/api/agent/[id]/route_client-reference-manifest.js +1 -0
  43. package/.next/server/app/api/agent/new/route.js +1 -0
  44. package/.next/server/app/api/agent/new/route.js.nft.json +1 -0
  45. package/.next/server/app/api/agent/new/route_client-reference-manifest.js +1 -0
  46. package/.next/server/app/api/agent/running/events/route.js +3 -0
  47. package/.next/server/app/api/agent/running/events/route.js.nft.json +1 -0
  48. package/.next/server/app/api/agent/running/events/route_client-reference-manifest.js +1 -0
  49. package/.next/server/app/api/agent/running/route.js +1 -0
  50. package/.next/server/app/api/agent/running/route.js.nft.json +1 -0
  51. package/.next/server/app/api/agent/running/route_client-reference-manifest.js +1 -0
  52. package/.next/server/app/api/app-update/route.js +1 -0
  53. package/.next/server/app/api/app-update/route.js.nft.json +1 -0
  54. package/.next/server/app/api/app-update/route_client-reference-manifest.js +1 -0
  55. package/.next/server/app/api/auth/all-providers/route.js +1 -0
  56. package/.next/server/app/api/auth/all-providers/route.js.nft.json +1 -0
  57. package/.next/server/app/api/auth/all-providers/route_client-reference-manifest.js +1 -0
  58. package/.next/server/app/api/auth/api-key/[provider]/route.js +1 -0
  59. package/.next/server/app/api/auth/api-key/[provider]/route.js.nft.json +1 -0
  60. package/.next/server/app/api/auth/api-key/[provider]/route_client-reference-manifest.js +1 -0
  61. package/.next/server/app/api/auth/login/[provider]/route.js +3 -0
  62. package/.next/server/app/api/auth/login/[provider]/route.js.nft.json +1 -0
  63. package/.next/server/app/api/auth/login/[provider]/route_client-reference-manifest.js +1 -0
  64. package/.next/server/app/api/auth/logout/[provider]/route.js +1 -0
  65. package/.next/server/app/api/auth/logout/[provider]/route.js.nft.json +1 -0
  66. package/.next/server/app/api/auth/logout/[provider]/route_client-reference-manifest.js +1 -0
  67. package/.next/server/app/api/auth/providers/route.js +1 -0
  68. package/.next/server/app/api/auth/providers/route.js.nft.json +1 -0
  69. package/.next/server/app/api/auth/providers/route_client-reference-manifest.js +1 -0
  70. package/.next/server/app/api/cwd/browse/route.js +1 -0
  71. package/.next/server/app/api/cwd/browse/route.js.nft.json +1 -0
  72. package/.next/server/app/api/cwd/browse/route_client-reference-manifest.js +1 -0
  73. package/.next/server/app/api/cwd/validate/route.js +1 -0
  74. package/.next/server/app/api/cwd/validate/route.js.nft.json +1 -0
  75. package/.next/server/app/api/cwd/validate/route_client-reference-manifest.js +1 -0
  76. package/.next/server/app/api/default-cwd/route.js +1 -0
  77. package/.next/server/app/api/default-cwd/route.js.nft.json +1 -0
  78. package/.next/server/app/api/default-cwd/route_client-reference-manifest.js +1 -0
  79. package/.next/server/app/api/file-index/route.js +1 -0
  80. package/.next/server/app/api/file-index/route.js.nft.json +1 -0
  81. package/.next/server/app/api/file-index/route_client-reference-manifest.js +1 -0
  82. package/.next/server/app/api/files/[...path]/route.js +49 -0
  83. package/.next/server/app/api/files/[...path]/route.js.nft.json +1 -0
  84. package/.next/server/app/api/files/[...path]/route_client-reference-manifest.js +1 -0
  85. package/.next/server/app/api/git/diff/route.js +6 -0
  86. package/.next/server/app/api/git/diff/route.js.nft.json +1 -0
  87. package/.next/server/app/api/git/diff/route_client-reference-manifest.js +1 -0
  88. package/.next/server/app/api/git/status/route.js +6 -0
  89. package/.next/server/app/api/git/status/route.js.nft.json +1 -0
  90. package/.next/server/app/api/git/status/route_client-reference-manifest.js +1 -0
  91. package/.next/server/app/api/home/route.js +1 -0
  92. package/.next/server/app/api/home/route.js.nft.json +1 -0
  93. package/.next/server/app/api/home/route_client-reference-manifest.js +1 -0
  94. package/.next/server/app/api/models/route.js +1 -0
  95. package/.next/server/app/api/models/route.js.nft.json +1 -0
  96. package/.next/server/app/api/models/route_client-reference-manifest.js +1 -0
  97. package/.next/server/app/api/models-config/catalog/route.js +1 -0
  98. package/.next/server/app/api/models-config/catalog/route.js.nft.json +1 -0
  99. package/.next/server/app/api/models-config/catalog/route_client-reference-manifest.js +1 -0
  100. package/.next/server/app/api/models-config/discover/route.js +1 -0
  101. package/.next/server/app/api/models-config/discover/route.js.nft.json +1 -0
  102. package/.next/server/app/api/models-config/discover/route_client-reference-manifest.js +1 -0
  103. package/.next/server/app/api/models-config/route.js +1 -0
  104. package/.next/server/app/api/models-config/route.js.nft.json +1 -0
  105. package/.next/server/app/api/models-config/route_client-reference-manifest.js +1 -0
  106. package/.next/server/app/api/models-config/test/route.js +1 -0
  107. package/.next/server/app/api/models-config/test/route.js.nft.json +1 -0
  108. package/.next/server/app/api/models-config/test/route_client-reference-manifest.js +1 -0
  109. package/.next/server/app/api/plugins/route.js +1 -0
  110. package/.next/server/app/api/plugins/route.js.nft.json +1 -0
  111. package/.next/server/app/api/plugins/route_client-reference-manifest.js +1 -0
  112. package/.next/server/app/api/project-trust/route.js +1 -0
  113. package/.next/server/app/api/project-trust/route.js.nft.json +1 -0
  114. package/.next/server/app/api/project-trust/route_client-reference-manifest.js +1 -0
  115. package/.next/server/app/api/sessions/[id]/auto-name/route.js +10 -0
  116. package/.next/server/app/api/sessions/[id]/auto-name/route.js.nft.json +1 -0
  117. package/.next/server/app/api/sessions/[id]/auto-name/route_client-reference-manifest.js +1 -0
  118. package/.next/server/app/api/sessions/[id]/context/route.js +1 -0
  119. package/.next/server/app/api/sessions/[id]/context/route.js.nft.json +1 -0
  120. package/.next/server/app/api/sessions/[id]/context/route_client-reference-manifest.js +1 -0
  121. package/.next/server/app/api/sessions/[id]/entries/[entryId]/thinking/route.js +1 -0
  122. package/.next/server/app/api/sessions/[id]/entries/[entryId]/thinking/route.js.nft.json +1 -0
  123. package/.next/server/app/api/sessions/[id]/entries/[entryId]/thinking/route_client-reference-manifest.js +1 -0
  124. package/.next/server/app/api/sessions/[id]/export/route.js +54 -0
  125. package/.next/server/app/api/sessions/[id]/export/route.js.nft.json +1 -0
  126. package/.next/server/app/api/sessions/[id]/export/route_client-reference-manifest.js +1 -0
  127. package/.next/server/app/api/sessions/[id]/route.js +1 -0
  128. package/.next/server/app/api/sessions/[id]/route.js.nft.json +1 -0
  129. package/.next/server/app/api/sessions/[id]/route_client-reference-manifest.js +1 -0
  130. package/.next/server/app/api/sessions/[id]/state/route.js +1 -0
  131. package/.next/server/app/api/sessions/[id]/state/route.js.nft.json +1 -0
  132. package/.next/server/app/api/sessions/[id]/state/route_client-reference-manifest.js +1 -0
  133. package/.next/server/app/api/sessions/[id]/todos/route.js +1 -0
  134. package/.next/server/app/api/sessions/[id]/todos/route.js.nft.json +1 -0
  135. package/.next/server/app/api/sessions/[id]/todos/route_client-reference-manifest.js +1 -0
  136. package/.next/server/app/api/sessions/route.js +1 -0
  137. package/.next/server/app/api/sessions/route.js.nft.json +1 -0
  138. package/.next/server/app/api/sessions/route_client-reference-manifest.js +1 -0
  139. package/.next/server/app/api/skills/check/route.js +1 -0
  140. package/.next/server/app/api/skills/check/route.js.nft.json +1 -0
  141. package/.next/server/app/api/skills/check/route_client-reference-manifest.js +1 -0
  142. package/.next/server/app/api/skills/install/route.js +1 -0
  143. package/.next/server/app/api/skills/install/route.js.nft.json +1 -0
  144. package/.next/server/app/api/skills/install/route_client-reference-manifest.js +1 -0
  145. package/.next/server/app/api/skills/route.js +6 -0
  146. package/.next/server/app/api/skills/route.js.nft.json +1 -0
  147. package/.next/server/app/api/skills/route_client-reference-manifest.js +1 -0
  148. package/.next/server/app/api/skills/search/route.js +1 -0
  149. package/.next/server/app/api/skills/search/route.js.nft.json +1 -0
  150. package/.next/server/app/api/skills/search/route_client-reference-manifest.js +1 -0
  151. package/.next/server/app/api/skills/update/route.js +1 -0
  152. package/.next/server/app/api/skills/update/route.js.nft.json +1 -0
  153. package/.next/server/app/api/skills/update/route_client-reference-manifest.js +1 -0
  154. package/.next/server/app/api/worktrees/route.js +1 -0
  155. package/.next/server/app/api/worktrees/route.js.nft.json +1 -0
  156. package/.next/server/app/api/worktrees/route_client-reference-manifest.js +1 -0
  157. package/.next/server/app/favicon.ico/route.js +1 -0
  158. package/.next/server/app/favicon.ico/route.js.nft.json +1 -0
  159. package/.next/server/app/favicon.ico.body +0 -0
  160. package/.next/server/app/favicon.ico.meta +1 -0
  161. package/.next/server/app/index.html +1 -0
  162. package/.next/server/app/index.meta +21 -0
  163. package/.next/server/app/index.rsc +21 -0
  164. package/.next/server/app/index.segments/__PAGE__.segment.rsc +24 -0
  165. package/.next/server/app/index.segments/_full.segment.rsc +21 -0
  166. package/.next/server/app/index.segments/_tree.segment.rsc +6 -0
  167. package/.next/server/app/manifest.webmanifest/route.js +17 -0
  168. package/.next/server/app/manifest.webmanifest/route.js.nft.json +1 -0
  169. package/.next/server/app/manifest.webmanifest/route_client-reference-manifest.js +1 -0
  170. package/.next/server/app/manifest.webmanifest.body +1 -0
  171. package/.next/server/app/manifest.webmanifest.meta +1 -0
  172. package/.next/server/app/page.js +93 -0
  173. package/.next/server/app/page.js.nft.json +1 -0
  174. package/.next/server/app/page_client-reference-manifest.js +1 -0
  175. package/.next/server/app-paths-manifest.json +48 -0
  176. package/.next/server/chunks/1094.js +160 -0
  177. package/.next/server/chunks/1515.js +1 -0
  178. package/.next/server/chunks/1555.js +1 -0
  179. package/.next/server/chunks/1601.js +24 -0
  180. package/.next/server/chunks/1625.js +1 -0
  181. package/.next/server/chunks/1800.js +1 -0
  182. package/.next/server/chunks/1813.js +1 -0
  183. package/.next/server/chunks/1860.js +1 -0
  184. package/.next/server/chunks/2075.js +23 -0
  185. package/.next/server/chunks/2106.js +1 -0
  186. package/.next/server/chunks/2169.js +36 -0
  187. package/.next/server/chunks/2190.js +1 -0
  188. package/.next/server/chunks/2325.js +82 -0
  189. package/.next/server/chunks/2349.js +1 -0
  190. package/.next/server/chunks/2408.js +1 -0
  191. package/.next/server/chunks/2430.js +193 -0
  192. package/.next/server/chunks/2452.js +93 -0
  193. package/.next/server/chunks/2744.js +1 -0
  194. package/.next/server/chunks/2903.js +1 -0
  195. package/.next/server/chunks/295.js +1 -0
  196. package/.next/server/chunks/3012.js +1 -0
  197. package/.next/server/chunks/3186.js +86 -0
  198. package/.next/server/chunks/3379.js +1 -0
  199. package/.next/server/chunks/3383.js +27 -0
  200. package/.next/server/chunks/3569.js +1 -0
  201. package/.next/server/chunks/3869.js +8 -0
  202. package/.next/server/chunks/3894.js +1 -0
  203. package/.next/server/chunks/4267.js +1 -0
  204. package/.next/server/chunks/4315.js +1 -0
  205. package/.next/server/chunks/4367.js +1 -0
  206. package/.next/server/chunks/4372.js +1 -0
  207. package/.next/server/chunks/4538.js +24 -0
  208. package/.next/server/chunks/4548.js +1 -0
  209. package/.next/server/chunks/4563.js +38 -0
  210. package/.next/server/chunks/4674.js +1 -0
  211. package/.next/server/chunks/4741.js +165 -0
  212. package/.next/server/chunks/4980.js +1 -0
  213. package/.next/server/chunks/5029.js +1 -0
  214. package/.next/server/chunks/5318.js +1 -0
  215. package/.next/server/chunks/5582.js +3 -0
  216. package/.next/server/chunks/5974.js +77 -0
  217. package/.next/server/chunks/6052.js +141 -0
  218. package/.next/server/chunks/611.js +1 -0
  219. package/.next/server/chunks/6253.js +104 -0
  220. package/.next/server/chunks/6337.js +1 -0
  221. package/.next/server/chunks/6366.js +80 -0
  222. package/.next/server/chunks/6429.js +1 -0
  223. package/.next/server/chunks/673.js +287 -0
  224. package/.next/server/chunks/6916.js +226 -0
  225. package/.next/server/chunks/703.js +1 -0
  226. package/.next/server/chunks/7233.js +1 -0
  227. package/.next/server/chunks/7265.js +215 -0
  228. package/.next/server/chunks/7307.js +1 -0
  229. package/.next/server/chunks/7561.js +1 -0
  230. package/.next/server/chunks/7710.js +1 -0
  231. package/.next/server/chunks/7744.js +64 -0
  232. package/.next/server/chunks/7790.js +1 -0
  233. package/.next/server/chunks/7799.js +34 -0
  234. package/.next/server/chunks/7872.js +1 -0
  235. package/.next/server/chunks/8106.js +1 -0
  236. package/.next/server/chunks/8294.js +1 -0
  237. package/.next/server/chunks/8333.js +79 -0
  238. package/.next/server/chunks/835.js +1 -0
  239. package/.next/server/chunks/8397.js +41 -0
  240. package/.next/server/chunks/8604.js +115 -0
  241. package/.next/server/chunks/8713.js +148 -0
  242. package/.next/server/chunks/8782.js +153 -0
  243. package/.next/server/chunks/8920.js +62 -0
  244. package/.next/server/chunks/922.js +5 -0
  245. package/.next/server/chunks/9280.js +255 -0
  246. package/.next/server/chunks/9486.js +1 -0
  247. package/.next/server/chunks/9509.js +1 -0
  248. package/.next/server/chunks/9510.js +90 -0
  249. package/.next/server/chunks/974.js +1 -0
  250. package/.next/server/functions-config-manifest.json +19 -0
  251. package/.next/server/instrumentation.js +1 -0
  252. package/.next/server/instrumentation.js.nft.json +1 -0
  253. package/.next/server/interception-route-rewrite-manifest.js +1 -0
  254. package/.next/server/middleware-build-manifest.js +1 -0
  255. package/.next/server/middleware-manifest.json +6 -0
  256. package/.next/server/middleware-react-loadable-manifest.js +1 -0
  257. package/.next/server/middleware.js +163 -0
  258. package/.next/server/middleware.js.nft.json +1 -0
  259. package/.next/server/next-font-manifest.js +1 -0
  260. package/.next/server/next-font-manifest.json +1 -0
  261. package/.next/server/pages/404.html +1 -0
  262. package/.next/server/pages/500.html +1 -0
  263. package/.next/server/pages-manifest.json +4 -0
  264. package/.next/server/prefetch-hints.json +39 -0
  265. package/.next/server/server-reference-manifest.js +1 -0
  266. package/.next/server/server-reference-manifest.json +1 -0
  267. package/.next/server/webpack-runtime.js +1 -0
  268. package/.next/static/chunks/103.23142a67b02246a8.js +215 -0
  269. package/.next/static/chunks/1032.12b382a9096ab2a4.js +1 -0
  270. package/.next/static/chunks/1063.775c442bdbeef08b.js +1 -0
  271. package/.next/static/chunks/1327.09252bb80616cc3a.js +1 -0
  272. package/.next/static/chunks/1708.d029f8776e4578de.js +1 -0
  273. package/.next/static/chunks/1781.866132cea8e77cd0.js +1 -0
  274. package/.next/static/chunks/1ba63609.b2ae90f43319a29e.js +153 -0
  275. package/.next/static/chunks/2081.47b6e9391094055f.js +1 -0
  276. package/.next/static/chunks/2181.ba21239d3ac39f81.js +1 -0
  277. package/.next/static/chunks/2258.4defa30121ef44a5.js +1 -0
  278. package/.next/static/chunks/2325.23caf22075e51aa5.js +1 -0
  279. package/.next/static/chunks/2356.523277bb8c6bf72a.js +23 -0
  280. package/.next/static/chunks/2418.b5d9e177e10a686e.js +1 -0
  281. package/.next/static/chunks/2480.cf27ca02e5b19761.js +24 -0
  282. package/.next/static/chunks/2539.c5a4f2fd8e421c70.js +41 -0
  283. package/.next/static/chunks/2619.9431a3f48da8eef4.js +1 -0
  284. package/.next/static/chunks/268.72794ee2773c2060.js +80 -0
  285. package/.next/static/chunks/2695.6f49435bae1e6f33.js +90 -0
  286. package/.next/static/chunks/2703.495a65ed14b2f094.js +36 -0
  287. package/.next/static/chunks/2821.934bcf60fbdc28c6.js +1 -0
  288. package/.next/static/chunks/3249-d891ccff87c62b6d.js +7 -0
  289. package/.next/static/chunks/3251.0dce7a0a0ff67235.js +1 -0
  290. package/.next/static/chunks/3308.be8762955e7155d1.js +73 -0
  291. package/.next/static/chunks/3336.a76f9485fe7cb762.js +1 -0
  292. package/.next/static/chunks/370.8e8f3cf8eb0e29dd.js +1 -0
  293. package/.next/static/chunks/3716.72bf4c9d7325debd.js +1 -0
  294. package/.next/static/chunks/3794-d29203733ca4633c.js +52 -0
  295. package/.next/static/chunks/398.ffa02af9062a3950.js +77 -0
  296. package/.next/static/chunks/3995.eca0f5bef1fc3ae5.js +38 -0
  297. package/.next/static/chunks/4004.74b9bcf5478b1663.js +160 -0
  298. package/.next/static/chunks/4202.8440832386f023c7.js +226 -0
  299. package/.next/static/chunks/4238.6f102dcbcf2ae339.js +141 -0
  300. package/.next/static/chunks/4405.7a19458960a1058e.js +287 -0
  301. package/.next/static/chunks/4424.fd0c93a807a333e1.js +1 -0
  302. package/.next/static/chunks/4866.d1060b4faf2ae1e2.js +1 -0
  303. package/.next/static/chunks/4970.8a63b4953b0e4946.js +1 -0
  304. package/.next/static/chunks/4bd1b696-8a4ab4fdf0ae305a.js +1 -0
  305. package/.next/static/chunks/5020.9ac8d0dc8390bb6e.js +1 -0
  306. package/.next/static/chunks/5137.f163e94c74a94d01.js +1 -0
  307. package/.next/static/chunks/5242.7b643c6b3394cac1.js +1 -0
  308. package/.next/static/chunks/5361.afc00ab2626bacbf.js +1 -0
  309. package/.next/static/chunks/5521.cfdf2cfc6db31407.js +1 -0
  310. package/.next/static/chunks/5526.ff46471041fdcb79.js +86 -0
  311. package/.next/static/chunks/5681.dd0e66b0de16e54b.js +27 -0
  312. package/.next/static/chunks/6121.eb9023b1cbc78ee2.js +1 -0
  313. package/.next/static/chunks/6161.4836cd7d031026bf.js +1 -0
  314. package/.next/static/chunks/6195.1153369f5f8b13a2.js +24 -0
  315. package/.next/static/chunks/6294.24f510c0c3e3714c.js +1 -0
  316. package/.next/static/chunks/6654.16f727522ec47f5a.js +1 -0
  317. package/.next/static/chunks/6794.f746d8fbbf248ecf.js +93 -0
  318. package/.next/static/chunks/7256.e07cf52d87d40252.js +1 -0
  319. package/.next/static/chunks/7268.236544be8e242c16.js +1 -0
  320. package/.next/static/chunks/7331.2add3c4e125a2dba.js +104 -0
  321. package/.next/static/chunks/7543.89f7b805ed0f2901.js +1 -0
  322. package/.next/static/chunks/8200.a36b9f8c983c6b9e.js +5 -0
  323. package/.next/static/chunks/869.7152372b662e31af.js +1 -0
  324. package/.next/static/chunks/8863.fa0320ea586efb3b.js +1 -0
  325. package/.next/static/chunks/8885.cf60cac98bf8b70c.js +79 -0
  326. package/.next/static/chunks/8901.e117d206a917bda0.js +1 -0
  327. package/.next/static/chunks/90542734.ae439f2382f58c51.js +1 -0
  328. package/.next/static/chunks/918.6a9bbe564e4a2d0f.js +115 -0
  329. package/.next/static/chunks/934.9006461bd0548660.js +1 -0
  330. package/.next/static/chunks/9522.c7c6e9c330f9ba6b.js +1 -0
  331. package/.next/static/chunks/9614.3221013d7f0af27f.js +64 -0
  332. package/.next/static/chunks/9698.4d09a99b9d99f3e5.js +148 -0
  333. package/.next/static/chunks/9705.40a82b97f214e28b.js +1 -0
  334. package/.next/static/chunks/973.88e865b52eff479a.js +8 -0
  335. package/.next/static/chunks/9764.2669775c6e107a01.js +62 -0
  336. package/.next/static/chunks/9793.4567af813117ad25.js +1 -0
  337. package/.next/static/chunks/993e5495.8797001fcfcf2889.js +62 -0
  338. package/.next/static/chunks/9974.9a0f79beca65e8c4.js +34 -0
  339. package/.next/static/chunks/app/_global-error/page-13f6e99c6fd8ad23.js +1 -0
  340. package/.next/static/chunks/app/_not-found/page-af4fe23994cb3d66.js +1 -0
  341. package/.next/static/chunks/app/api/agent/[id]/bash-output/route-13f6e99c6fd8ad23.js +1 -0
  342. package/.next/static/chunks/app/api/agent/[id]/events/route-13f6e99c6fd8ad23.js +1 -0
  343. package/.next/static/chunks/app/api/agent/[id]/route-13f6e99c6fd8ad23.js +1 -0
  344. package/.next/static/chunks/app/api/agent/new/route-13f6e99c6fd8ad23.js +1 -0
  345. package/.next/static/chunks/app/api/agent/running/events/route-13f6e99c6fd8ad23.js +1 -0
  346. package/.next/static/chunks/app/api/agent/running/route-13f6e99c6fd8ad23.js +1 -0
  347. package/.next/static/chunks/app/api/app-update/route-13f6e99c6fd8ad23.js +1 -0
  348. package/.next/static/chunks/app/api/auth/all-providers/route-13f6e99c6fd8ad23.js +1 -0
  349. package/.next/static/chunks/app/api/auth/api-key/[provider]/route-13f6e99c6fd8ad23.js +1 -0
  350. package/.next/static/chunks/app/api/auth/login/[provider]/route-13f6e99c6fd8ad23.js +1 -0
  351. package/.next/static/chunks/app/api/auth/logout/[provider]/route-13f6e99c6fd8ad23.js +1 -0
  352. package/.next/static/chunks/app/api/auth/providers/route-13f6e99c6fd8ad23.js +1 -0
  353. package/.next/static/chunks/app/api/cwd/browse/route-13f6e99c6fd8ad23.js +1 -0
  354. package/.next/static/chunks/app/api/cwd/validate/route-13f6e99c6fd8ad23.js +1 -0
  355. package/.next/static/chunks/app/api/default-cwd/route-13f6e99c6fd8ad23.js +1 -0
  356. package/.next/static/chunks/app/api/file-index/route-13f6e99c6fd8ad23.js +1 -0
  357. package/.next/static/chunks/app/api/files/[...path]/route-13f6e99c6fd8ad23.js +1 -0
  358. package/.next/static/chunks/app/api/git/diff/route-13f6e99c6fd8ad23.js +1 -0
  359. package/.next/static/chunks/app/api/git/status/route-13f6e99c6fd8ad23.js +1 -0
  360. package/.next/static/chunks/app/api/home/route-13f6e99c6fd8ad23.js +1 -0
  361. package/.next/static/chunks/app/api/models/route-13f6e99c6fd8ad23.js +1 -0
  362. package/.next/static/chunks/app/api/models-config/catalog/route-13f6e99c6fd8ad23.js +1 -0
  363. package/.next/static/chunks/app/api/models-config/discover/route-13f6e99c6fd8ad23.js +1 -0
  364. package/.next/static/chunks/app/api/models-config/route-13f6e99c6fd8ad23.js +1 -0
  365. package/.next/static/chunks/app/api/models-config/test/route-13f6e99c6fd8ad23.js +1 -0
  366. package/.next/static/chunks/app/api/plugins/route-13f6e99c6fd8ad23.js +1 -0
  367. package/.next/static/chunks/app/api/project-trust/route-13f6e99c6fd8ad23.js +1 -0
  368. package/.next/static/chunks/app/api/sessions/[id]/auto-name/route-13f6e99c6fd8ad23.js +1 -0
  369. package/.next/static/chunks/app/api/sessions/[id]/context/route-13f6e99c6fd8ad23.js +1 -0
  370. package/.next/static/chunks/app/api/sessions/[id]/entries/[entryId]/thinking/route-13f6e99c6fd8ad23.js +1 -0
  371. package/.next/static/chunks/app/api/sessions/[id]/export/route-13f6e99c6fd8ad23.js +1 -0
  372. package/.next/static/chunks/app/api/sessions/[id]/route-13f6e99c6fd8ad23.js +1 -0
  373. package/.next/static/chunks/app/api/sessions/[id]/state/route-13f6e99c6fd8ad23.js +1 -0
  374. package/.next/static/chunks/app/api/sessions/[id]/todos/route-13f6e99c6fd8ad23.js +1 -0
  375. package/.next/static/chunks/app/api/sessions/route-13f6e99c6fd8ad23.js +1 -0
  376. package/.next/static/chunks/app/api/skills/check/route-13f6e99c6fd8ad23.js +1 -0
  377. package/.next/static/chunks/app/api/skills/install/route-13f6e99c6fd8ad23.js +1 -0
  378. package/.next/static/chunks/app/api/skills/route-13f6e99c6fd8ad23.js +1 -0
  379. package/.next/static/chunks/app/api/skills/search/route-13f6e99c6fd8ad23.js +1 -0
  380. package/.next/static/chunks/app/api/skills/update/route-13f6e99c6fd8ad23.js +1 -0
  381. package/.next/static/chunks/app/api/worktrees/route-13f6e99c6fd8ad23.js +1 -0
  382. package/.next/static/chunks/app/layout-e13da2c32b9945e1.js +1 -0
  383. package/.next/static/chunks/app/manifest.webmanifest/route-13f6e99c6fd8ad23.js +1 -0
  384. package/.next/static/chunks/app/page-b99ee1f741615942.js +87 -0
  385. package/.next/static/chunks/bf2ff291.3a109dffc1fe84af.js +122 -0
  386. package/.next/static/chunks/d3ac728e-7964f816a1ca64e5.js +1 -0
  387. package/.next/static/chunks/da12927c.476aa688a637649c.js +82 -0
  388. package/.next/static/chunks/db9d41be.e72ce090a86a3691.js +1 -0
  389. package/.next/static/chunks/framework-b33a8f5d57cd8d87.js +1 -0
  390. package/.next/static/chunks/main-430d592a1108ec6e.js +5 -0
  391. package/.next/static/chunks/main-app-b3e8a8d15d83e1f0.js +1 -0
  392. package/.next/static/chunks/next/dist/client/components/builtin/app-error-13f6e99c6fd8ad23.js +1 -0
  393. package/.next/static/chunks/next/dist/client/components/builtin/forbidden-13f6e99c6fd8ad23.js +1 -0
  394. package/.next/static/chunks/next/dist/client/components/builtin/global-error-00a4badaccb388e6.js +1 -0
  395. package/.next/static/chunks/next/dist/client/components/builtin/not-found-13f6e99c6fd8ad23.js +1 -0
  396. package/.next/static/chunks/next/dist/client/components/builtin/unauthorized-13f6e99c6fd8ad23.js +1 -0
  397. package/.next/static/chunks/polyfills-42372ed130431b0a.js +1 -0
  398. package/.next/static/chunks/webpack-84e477ecef987e5c.js +1 -0
  399. package/.next/static/css/4cbedad236d913cb.css +1 -0
  400. package/.next/static/css/4f1c05a951b42320.css +1 -0
  401. package/.next/static/css/88714c00e109ce28.css +1 -0
  402. package/.next/static/media/15605e25b523335c-s.woff2 +0 -0
  403. package/.next/static/media/1a3dce5cfb5f7760-s.woff2 +0 -0
  404. package/.next/static/media/1cdd02902f937a18-s.woff2 +0 -0
  405. package/.next/static/media/4c4b3b30b6bcb2be-s.woff2 +0 -0
  406. package/.next/static/media/641a7b8a5800ee0e-s.woff2 +0 -0
  407. package/.next/static/media/7deddc85b7ffd1dc-s.p.woff2 +0 -0
  408. package/.next/static/media/KaTeX_AMS-Regular.1608a09b.woff +0 -0
  409. package/.next/static/media/KaTeX_AMS-Regular.4aafdb68.ttf +0 -0
  410. package/.next/static/media/KaTeX_AMS-Regular.a79f1c31.woff2 +0 -0
  411. package/.next/static/media/KaTeX_Caligraphic-Bold.b6770918.woff +0 -0
  412. package/.next/static/media/KaTeX_Caligraphic-Bold.cce5b8ec.ttf +0 -0
  413. package/.next/static/media/KaTeX_Caligraphic-Bold.ec17d132.woff2 +0 -0
  414. package/.next/static/media/KaTeX_Caligraphic-Regular.07ef19e7.ttf +0 -0
  415. package/.next/static/media/KaTeX_Caligraphic-Regular.55fac258.woff2 +0 -0
  416. package/.next/static/media/KaTeX_Caligraphic-Regular.dad44a7f.woff +0 -0
  417. package/.next/static/media/KaTeX_Fraktur-Bold.9f256b85.woff +0 -0
  418. package/.next/static/media/KaTeX_Fraktur-Bold.b18f59e1.ttf +0 -0
  419. package/.next/static/media/KaTeX_Fraktur-Bold.d42a5579.woff2 +0 -0
  420. package/.next/static/media/KaTeX_Fraktur-Regular.7c187121.woff +0 -0
  421. package/.next/static/media/KaTeX_Fraktur-Regular.d3c882a6.woff2 +0 -0
  422. package/.next/static/media/KaTeX_Fraktur-Regular.ed38e79f.ttf +0 -0
  423. package/.next/static/media/KaTeX_Main-Bold.b74a1a8b.ttf +0 -0
  424. package/.next/static/media/KaTeX_Main-Bold.c3fb5ac2.woff2 +0 -0
  425. package/.next/static/media/KaTeX_Main-Bold.d181c465.woff +0 -0
  426. package/.next/static/media/KaTeX_Main-BoldItalic.6f2bb1df.woff2 +0 -0
  427. package/.next/static/media/KaTeX_Main-BoldItalic.70d8b0a5.ttf +0 -0
  428. package/.next/static/media/KaTeX_Main-BoldItalic.e3f82f9d.woff +0 -0
  429. package/.next/static/media/KaTeX_Main-Italic.47373d1e.ttf +0 -0
  430. package/.next/static/media/KaTeX_Main-Italic.8916142b.woff2 +0 -0
  431. package/.next/static/media/KaTeX_Main-Italic.9024d815.woff +0 -0
  432. package/.next/static/media/KaTeX_Main-Regular.0462f03b.woff2 +0 -0
  433. package/.next/static/media/KaTeX_Main-Regular.7f51fe03.woff +0 -0
  434. package/.next/static/media/KaTeX_Main-Regular.b7f8fe9b.ttf +0 -0
  435. package/.next/static/media/KaTeX_Math-BoldItalic.572d331f.woff2 +0 -0
  436. package/.next/static/media/KaTeX_Math-BoldItalic.a879cf83.ttf +0 -0
  437. package/.next/static/media/KaTeX_Math-BoldItalic.f1035d8d.woff +0 -0
  438. package/.next/static/media/KaTeX_Math-Italic.5295ba48.woff +0 -0
  439. package/.next/static/media/KaTeX_Math-Italic.939bc644.ttf +0 -0
  440. package/.next/static/media/KaTeX_Math-Italic.f28c23ac.woff2 +0 -0
  441. package/.next/static/media/KaTeX_SansSerif-Bold.8c5b5494.woff2 +0 -0
  442. package/.next/static/media/KaTeX_SansSerif-Bold.94e1e8dc.ttf +0 -0
  443. package/.next/static/media/KaTeX_SansSerif-Bold.bf59d231.woff +0 -0
  444. package/.next/static/media/KaTeX_SansSerif-Italic.3b1e59b3.woff2 +0 -0
  445. package/.next/static/media/KaTeX_SansSerif-Italic.7c9bc82b.woff +0 -0
  446. package/.next/static/media/KaTeX_SansSerif-Italic.b4c20c84.ttf +0 -0
  447. package/.next/static/media/KaTeX_SansSerif-Regular.74048478.woff +0 -0
  448. package/.next/static/media/KaTeX_SansSerif-Regular.ba21ed5f.woff2 +0 -0
  449. package/.next/static/media/KaTeX_SansSerif-Regular.d4d7ba48.ttf +0 -0
  450. package/.next/static/media/KaTeX_Script-Regular.03e9641d.woff2 +0 -0
  451. package/.next/static/media/KaTeX_Script-Regular.07505710.woff +0 -0
  452. package/.next/static/media/KaTeX_Script-Regular.fe9cbbe1.ttf +0 -0
  453. package/.next/static/media/KaTeX_Size1-Regular.e1e279cb.woff +0 -0
  454. package/.next/static/media/KaTeX_Size1-Regular.eae34984.woff2 +0 -0
  455. package/.next/static/media/KaTeX_Size1-Regular.fabc004a.ttf +0 -0
  456. package/.next/static/media/KaTeX_Size2-Regular.57727022.woff +0 -0
  457. package/.next/static/media/KaTeX_Size2-Regular.5916a24f.woff2 +0 -0
  458. package/.next/static/media/KaTeX_Size2-Regular.d6b476ec.ttf +0 -0
  459. package/.next/static/media/KaTeX_Size3-Regular.9acaf01c.woff +0 -0
  460. package/.next/static/media/KaTeX_Size3-Regular.a144ef58.ttf +0 -0
  461. package/.next/static/media/KaTeX_Size3-Regular.b4230e7e.woff2 +0 -0
  462. package/.next/static/media/KaTeX_Size4-Regular.10d95fd3.woff2 +0 -0
  463. package/.next/static/media/KaTeX_Size4-Regular.7a996c9d.woff +0 -0
  464. package/.next/static/media/KaTeX_Size4-Regular.fbccdabe.ttf +0 -0
  465. package/.next/static/media/KaTeX_Typewriter-Regular.6258592b.woff +0 -0
  466. package/.next/static/media/KaTeX_Typewriter-Regular.a8709e36.woff2 +0 -0
  467. package/.next/static/media/KaTeX_Typewriter-Regular.d97aaf4a.ttf +0 -0
  468. package/.next/static/media/ec14413c594b3356-s.p.woff2 +0 -0
  469. package/.next/static/zL8d0yAvyIXQ8s3Kyfvnp/_buildManifest.js +1 -0
  470. package/.next/static/zL8d0yAvyIXQ8s3Kyfvnp/_ssgManifest.js +1 -0
  471. package/.next/trace +42 -0
  472. package/.next/trace-build +1 -0
  473. package/.next/types/app/api/agent/[id]/bash-output/route.ts +353 -0
  474. package/.next/types/app/api/agent/[id]/events/route.ts +353 -0
  475. package/.next/types/app/api/agent/[id]/route.ts +353 -0
  476. package/.next/types/app/api/agent/new/route.ts +353 -0
  477. package/.next/types/app/api/agent/running/events/route.ts +353 -0
  478. package/.next/types/app/api/agent/running/route.ts +353 -0
  479. package/.next/types/app/api/app-update/route.ts +353 -0
  480. package/.next/types/app/api/auth/all-providers/route.ts +353 -0
  481. package/.next/types/app/api/auth/api-key/[provider]/route.ts +353 -0
  482. package/.next/types/app/api/auth/login/[provider]/route.ts +353 -0
  483. package/.next/types/app/api/auth/logout/[provider]/route.ts +353 -0
  484. package/.next/types/app/api/auth/providers/route.ts +353 -0
  485. package/.next/types/app/api/cwd/browse/route.ts +353 -0
  486. package/.next/types/app/api/cwd/validate/route.ts +353 -0
  487. package/.next/types/app/api/default-cwd/route.ts +353 -0
  488. package/.next/types/app/api/file-index/route.ts +353 -0
  489. package/.next/types/app/api/files/[...path]/route.ts +353 -0
  490. package/.next/types/app/api/git/diff/route.ts +353 -0
  491. package/.next/types/app/api/git/status/route.ts +353 -0
  492. package/.next/types/app/api/home/route.ts +353 -0
  493. package/.next/types/app/api/models/route.ts +353 -0
  494. package/.next/types/app/api/models-config/catalog/route.ts +353 -0
  495. package/.next/types/app/api/models-config/discover/route.ts +353 -0
  496. package/.next/types/app/api/models-config/route.ts +353 -0
  497. package/.next/types/app/api/models-config/test/route.ts +353 -0
  498. package/.next/types/app/api/plugins/route.ts +353 -0
  499. package/.next/types/app/api/project-trust/route.ts +353 -0
  500. package/.next/types/app/api/sessions/[id]/auto-name/route.ts +353 -0
  501. package/.next/types/app/api/sessions/[id]/context/route.ts +353 -0
  502. package/.next/types/app/api/sessions/[id]/entries/[entryId]/thinking/route.ts +353 -0
  503. package/.next/types/app/api/sessions/[id]/export/route.ts +353 -0
  504. package/.next/types/app/api/sessions/[id]/route.ts +353 -0
  505. package/.next/types/app/api/sessions/[id]/state/route.ts +353 -0
  506. package/.next/types/app/api/sessions/[id]/todos/route.ts +353 -0
  507. package/.next/types/app/api/sessions/route.ts +353 -0
  508. package/.next/types/app/api/skills/check/route.ts +353 -0
  509. package/.next/types/app/api/skills/install/route.ts +353 -0
  510. package/.next/types/app/api/skills/route.ts +353 -0
  511. package/.next/types/app/api/skills/search/route.ts +353 -0
  512. package/.next/types/app/api/skills/update/route.ts +353 -0
  513. package/.next/types/app/api/worktrees/route.ts +353 -0
  514. package/.next/types/app/layout.ts +89 -0
  515. package/.next/types/app/page.ts +89 -0
  516. package/.next/types/cache-life.d.ts +146 -0
  517. package/.next/types/package.json +1 -0
  518. package/.next/types/root-params.d.ts +3 -0
  519. package/.next/types/routes.d.ts +113 -0
  520. package/.next/types/validator.ts +439 -0
  521. package/LICENSE +25 -0
  522. package/README.ja.md +132 -0
  523. package/README.md +168 -0
  524. package/README.ru.md +132 -0
  525. package/README.zh-CN.md +137 -0
  526. package/bin/node-version.js +35 -0
  527. package/bin/pi-web-options.js +43 -0
  528. package/bin/pi-web-sky.js +115 -0
  529. package/bin/pi-web.js +115 -0
  530. package/bin/process-lifecycle.js +46 -0
  531. package/next.config.ts +56 -0
  532. package/package.json +83 -0
  533. package/public/icons/apple-touch-icon.png +0 -0
  534. package/public/icons/catppuccin/LICENSE +22 -0
  535. package/public/icons/catppuccin/README.md +10 -0
  536. package/public/icons/catppuccin/latte/_file.svg +3 -0
  537. package/public/icons/catppuccin/latte/_folder.svg +3 -0
  538. package/public/icons/catppuccin/latte/_folder_open.svg +3 -0
  539. package/public/icons/catppuccin/latte/bash.svg +7 -0
  540. package/public/icons/catppuccin/latte/bun-lock.svg +8 -0
  541. package/public/icons/catppuccin/latte/config.svg +3 -0
  542. package/public/icons/catppuccin/latte/css.svg +6 -0
  543. package/public/icons/catppuccin/latte/database.svg +3 -0
  544. package/public/icons/catppuccin/latte/docker.svg +3 -0
  545. package/public/icons/catppuccin/latte/env.svg +3 -0
  546. package/public/icons/catppuccin/latte/eslint.svg +6 -0
  547. package/public/icons/catppuccin/latte/git.svg +6 -0
  548. package/public/icons/catppuccin/latte/go.svg +3 -0
  549. package/public/icons/catppuccin/latte/graphql.svg +3 -0
  550. package/public/icons/catppuccin/latte/html.svg +6 -0
  551. package/public/icons/catppuccin/latte/javascript-react.svg +8 -0
  552. package/public/icons/catppuccin/latte/javascript.svg +6 -0
  553. package/public/icons/catppuccin/latte/json.svg +3 -0
  554. package/public/icons/catppuccin/latte/lock.svg +3 -0
  555. package/public/icons/catppuccin/latte/markdown.svg +3 -0
  556. package/public/icons/catppuccin/latte/ms-word.svg +6 -0
  557. package/public/icons/catppuccin/latte/next.svg +6 -0
  558. package/public/icons/catppuccin/latte/npm-lock.svg +7 -0
  559. package/public/icons/catppuccin/latte/pdf.svg +3 -0
  560. package/public/icons/catppuccin/latte/python.svg +8 -0
  561. package/public/icons/catppuccin/latte/rust.svg +6 -0
  562. package/public/icons/catppuccin/latte/sass.svg +3 -0
  563. package/public/icons/catppuccin/latte/terraform.svg +3 -0
  564. package/public/icons/catppuccin/latte/toml.svg +3 -0
  565. package/public/icons/catppuccin/latte/typescript-react.svg +8 -0
  566. package/public/icons/catppuccin/latte/typescript.svg +6 -0
  567. package/public/icons/catppuccin/latte/yaml.svg +3 -0
  568. package/public/icons/catppuccin/mocha/_file.svg +3 -0
  569. package/public/icons/catppuccin/mocha/_folder.svg +3 -0
  570. package/public/icons/catppuccin/mocha/_folder_open.svg +3 -0
  571. package/public/icons/catppuccin/mocha/bash.svg +7 -0
  572. package/public/icons/catppuccin/mocha/bun-lock.svg +8 -0
  573. package/public/icons/catppuccin/mocha/config.svg +3 -0
  574. package/public/icons/catppuccin/mocha/css.svg +6 -0
  575. package/public/icons/catppuccin/mocha/database.svg +3 -0
  576. package/public/icons/catppuccin/mocha/docker.svg +3 -0
  577. package/public/icons/catppuccin/mocha/env.svg +3 -0
  578. package/public/icons/catppuccin/mocha/eslint.svg +6 -0
  579. package/public/icons/catppuccin/mocha/git.svg +6 -0
  580. package/public/icons/catppuccin/mocha/go.svg +3 -0
  581. package/public/icons/catppuccin/mocha/graphql.svg +3 -0
  582. package/public/icons/catppuccin/mocha/html.svg +6 -0
  583. package/public/icons/catppuccin/mocha/javascript-react.svg +8 -0
  584. package/public/icons/catppuccin/mocha/javascript.svg +6 -0
  585. package/public/icons/catppuccin/mocha/json.svg +3 -0
  586. package/public/icons/catppuccin/mocha/lock.svg +3 -0
  587. package/public/icons/catppuccin/mocha/markdown.svg +3 -0
  588. package/public/icons/catppuccin/mocha/ms-word.svg +6 -0
  589. package/public/icons/catppuccin/mocha/next.svg +6 -0
  590. package/public/icons/catppuccin/mocha/npm-lock.svg +7 -0
  591. package/public/icons/catppuccin/mocha/pdf.svg +3 -0
  592. package/public/icons/catppuccin/mocha/python.svg +8 -0
  593. package/public/icons/catppuccin/mocha/rust.svg +6 -0
  594. package/public/icons/catppuccin/mocha/sass.svg +3 -0
  595. package/public/icons/catppuccin/mocha/terraform.svg +3 -0
  596. package/public/icons/catppuccin/mocha/toml.svg +3 -0
  597. package/public/icons/catppuccin/mocha/typescript-react.svg +8 -0
  598. package/public/icons/catppuccin/mocha/typescript.svg +6 -0
  599. package/public/icons/catppuccin/mocha/yaml.svg +3 -0
  600. package/public/icons/icon-192.png +0 -0
  601. package/public/icons/icon-512.png +0 -0
  602. package/public/offline.html +83 -0
  603. package/public/sw.js +118 -0
  604. package/public/sw.test.mjs +86 -0
package/README.ja.md ADDED
@@ -0,0 +1,132 @@
1
+ # Pi Web
2
+
3
+ [English](./README.md) | [简体中文](./README.zh-CN.md) | [Русский](./README.ru.md)
4
+
5
+ [pi コーディングエージェント](https://github.com/earendil-works/pi) のローカルブラウザー UI です。Pi Web は pi と同じローカル設定とセッションファイルを使用し、ブラウザーから会話の検索と再開、エージェントの実行、モデルやリソースの設定、プロジェクトファイルの確認を行えます。
6
+
7
+ ![構造化された Markdown、ツール呼び出し、プロジェクトナビゲーションとともに pi セッションを表示する Pi Web](https://raw.githubusercontent.com/agegr/pi-web/main/docs/screenshot2.png)
8
+
9
+ ## 機能
10
+
11
+ - **セッションワークスペース**:プロジェクトごとに会話を閲覧、再開、名前変更、エクスポート、削除し、実行状態、コンテキスト使用量、コスト、コンパクション情報を確認できます。
12
+ - **2 種類の分岐**:**New session** は以前のメッセージから独立したセッションファイルを作成し、**Edit from here** は現在のセッション内にブランチを作成します。
13
+ - **プロジェクトファイルツール**:ファイルの閲覧とアップロード、Git Diff の確認、ソース、Markdown、画像、音声、PDF、DOCX のプレビューに対応し、変更時は自動更新されます。
14
+ - **Git worktree**:同じリポジトリのセッションをまとめたまま、サイドバーからチェックアウトを切り替えられます。
15
+ - **Web での設定**:Pi Web を離れずに、Provider のログインと API Key、モデル、モデルテスト、プラグインパッケージ、スキルを管理できます。
16
+ - **英語と簡体字中国語の UI**:初回はブラウザーの言語に従い、トップバーから言語を切り替えられます。
17
+
18
+ ## クイックスタート
19
+
20
+ Pi Web には Node.js 22.19.0 以降が必要です。`node --version` でバージョンを確認してから、次を実行します:
21
+
22
+ ```bash
23
+ npx @agegr/pi-web@latest
24
+ ```
25
+
26
+ サーバーの準備が整うと、CLI はブラウザーを自動的に開こうとします。開かない場合は [http://127.0.0.1:30141](http://127.0.0.1:30141) にアクセスしてください。Pi Web はデフォルトで `127.0.0.1` のみをリッスンします。
27
+
28
+ モデル Provider が未設定の場合は、**Models** パネルを開いてログインするか API Key を追加してください。
29
+
30
+ `pi-web` コマンドをグローバルにインストールする場合:
31
+
32
+ ```bash
33
+ npm install -g @agegr/pi-web@latest
34
+ pi-web
35
+ ```
36
+
37
+ 更新時は、実行中のプロセスを `Ctrl+C` で停止してから同じインストールコマンドを再実行します。アンインストールするには `npm uninstall -g @agegr/pi-web` を実行します。
38
+
39
+ ## 設定
40
+
41
+ ポートとホスト名では、コマンドラインオプションが対応する環境変数より優先されます。`--no-open` と `PI_WEB_NO_OPEN=1` は、どちらを指定してもブラウザーの自動起動が無効になります。
42
+
43
+ | オプションまたは環境変数 | 用途 | デフォルト |
44
+ | --- | --- | --- |
45
+ | `--port <port>`、`-p <port>`、または `PORT` | サーバーポート | `30141` |
46
+ | `--hostname <host>`、`-H <host>`、または `PI_WEB_HOSTNAME` | バインドするホスト名 | `127.0.0.1` |
47
+ | `--no-open` または `PI_WEB_NO_OPEN=1` | ブラウザーを自動的に開かない | 自動的に開く |
48
+ | `PI_WEB_ALLOWED_HOSTS` | 追加で許可するプロキシまたはカスタムホスト名。複数指定はカンマ区切りで完全一致 | 未設定 |
49
+ | `PI_WEB_PASSWORD` | HTTP Basic Auth を有効化。ユーザー名は常に `pi` | 認証なし |
50
+
51
+ 例:
52
+
53
+ ```bash
54
+ pi-web -p 8080 -H 0.0.0.0 --no-open
55
+ ```
56
+
57
+ ### リモートアクセス
58
+
59
+ ループバック以外のアドレスにバインドすると、高い権限の操作を実行できるエージェントがネットワークに公開されます。信頼できる LAN で使用する場合も、十分に長いランダムなパスワードを設定してください:
60
+
61
+ ```bash
62
+ PI_WEB_PASSWORD='十分に長いランダムなパスワード' pi-web --hostname 0.0.0.0
63
+ ```
64
+
65
+ Basic Auth は転送中のパスワードを暗号化しません。平文 HTTP で Pi Web をインターネットに公開せず、信頼できるリバースプロキシによる HTTPS または信頼できる VPN を使用してください。リバースプロキシが外部ホスト名を転送する場合は、その名前を完全一致で `PI_WEB_ALLOWED_HOSTS` に追加します。この許可リストは Pi Web のバインド先を変更しません。
66
+
67
+ ### HTTP プロキシ
68
+
69
+ サーバー側のモデルリクエストと API リクエストは、標準の `HTTP_PROXY`、`HTTPS_PROXY`、`NO_PROXY` 環境変数を使用します。
70
+
71
+ macOS または Linux:
72
+
73
+ ```bash
74
+ HTTP_PROXY=http://127.0.0.1:7890 \
75
+ HTTPS_PROXY=http://127.0.0.1:7890 \
76
+ NO_PROXY=localhost,127.0.0.1 \
77
+ npx @agegr/pi-web@latest
78
+ ```
79
+
80
+ Windows PowerShell:
81
+
82
+ ```powershell
83
+ $env:HTTP_PROXY = "http://127.0.0.1:7890"
84
+ $env:HTTPS_PROXY = "http://127.0.0.1:7890"
85
+ $env:NO_PROXY = "localhost,127.0.0.1"
86
+ npx @agegr/pi-web@latest
87
+ ```
88
+
89
+ ## 注意事項
90
+
91
+ - **エージェントデータ**:Pi Web はデフォルトで `~/.pi/agent` の pi データを読み込みます。セッションファイルは `sessions/<encoded-cwd>/<timestamp>_<uuid>.jsonl` にあります。別の pi エージェントディレクトリを使用するには `PI_CODING_AGENT_DIR` を設定してください。
92
+ - **ファイルシステムへのアクセス**:Pi Web はエージェントデータディレクトリと、セッションに記録された作業ディレクトリを読み取れる必要があります。既存の pi セッションを共有する場合は、pi と同じファイルシステム環境で Pi Web を実行してください。
93
+ - **共有設定**:Models パネルは pi のモデル、設定、認証情報ストレージを使用するため、変更は両方のインターフェースに反映されます。
94
+ - **ファイルアクセスの範囲**:ファイルブラウザーは、Pi Web で選択した作業ディレクトリと、既知のプロジェクトまたはセッションルートに限定されます。汎用のファイルシステムブラウザーではありません。
95
+ - **Git worktree**:スイッチャーの表示条件、worktree の作成、削除時の動作については [Worktrees in Pi Web](./docs/worktrees.md) を参照してください。
96
+
97
+ ## 開発
98
+
99
+ ```bash
100
+ npm install
101
+ npm run dev
102
+ ```
103
+
104
+ 開発サーバーは [http://127.0.0.1:30141](http://127.0.0.1:30141) で動作します。一般的なチェックは次のコマンドで実行します:
105
+
106
+ ```bash
107
+ npm test
108
+ node_modules/.bin/tsc --noEmit
109
+ npm run lint
110
+ ```
111
+
112
+ 通常の開発中は `next build` または `npm run build` を実行しないでください。`.next/` に書き込まれ、開発サーバーに影響する可能性があります。ビルドはリリース作業時にのみ実行してください。
113
+
114
+ コントリビューター向けガイド:[Internationalization](./docs/i18n.md) と [Release process](./docs/release.md)。
115
+
116
+ ## リポジトリ構成
117
+
118
+ ```text
119
+ app/ Next.js UI と API ルート
120
+ components/ React UI コンポーネント
121
+ hooks/ クライアントの状態と操作に関する hooks
122
+ lib/ セッション、エージェント、モデル、ファイル、Git、セキュリティのロジック
123
+ public/ 静的アセットと PWA ファイル
124
+ bin/ npm CLI エントリポイントと起動オプションの解析
125
+ docs/ ユーザーおよびコントリビューター向けの個別ガイド
126
+ ```
127
+
128
+ アーキテクチャの説明と詳細なファイルマップについては [AGENTS.md](./AGENTS.md) を参照してください。
129
+
130
+ ## ライセンス
131
+
132
+ [MIT](./LICENSE)
package/README.md ADDED
@@ -0,0 +1,168 @@
1
+ # Pi Web — Sky Edition (@baique/pi-web-sky)
2
+
3
+ > **Sky 皮肤版**:基于 [pi-web](https://github.com/earendil-works/pi)(经 [@agegr/pi-web](https://github.com/agegr/pi-web) 二开)的独立发行版,MIT 协议。
4
+ > 在原生 pi-web 之上新增了 Sky 皮肤:毛玻璃气泡与面板、JetBrains Mono 消息字体、加深/提亮文字对比度、右上角 todo 面板、右下角堆叠弱通知。
5
+
6
+ [中文文档](./README.zh-CN.md) | [日本語](./README.ja.md) | [Русский](./README.ru.md)
7
+
8
+ Local browser UI for the [pi coding agent](https://github.com/earendil-works/pi). Pi Web uses the same local configuration and session files as pi, so you can browse and resume conversations, run agent turns, configure models and resources, and inspect project files from a browser.
9
+
10
+ ## Sky skin(本版新增)
11
+
12
+ - **毛玻璃界面**:消息气泡、输入框、工具栏、扩展区、顶栏统一 frosted-glass,壁纸可透出
13
+ - **JetBrains Mono 消息字体**(Consolas 回退,中文兜底)
14
+ - **文字对比度**:浅色偏青蓝深色、深色偏白
15
+ - **右上角 todo 面板**:窄面板展示会话 pi-todo 状态,运行中 6s 轮询 + 展开前即时刷新
16
+ - **右下角堆叠弱通知**:扩展/错误等瞬时提示以小卡片堆叠在右下角,自动消失
17
+ - 生产构建与开发隔离(`.next-prod`),不污染 `npm run dev`
18
+
19
+ ![Pi Web displaying a pi session with structured Markdown, tool calls, and project navigation](https://raw.githubusercontent.com/agegr/pi-web/main/docs/screenshot2.png)
20
+
21
+ ## Features
22
+
23
+ - **Session workspace**: browse, resume, rename, export, and delete conversations grouped by project, with running state, context usage, cost, and compaction details.
24
+ - **Two ways to branch**: **New session** creates an independent session file from an earlier message; **Edit from here** creates a branch inside the current session.
25
+ - **Project file tools**: browse and upload files, inspect Git diffs, and preview source, Markdown, images, audio, PDFs, and DOCX files with automatic refresh.
26
+ - **Git worktrees**: switch checkouts from the sidebar while keeping sessions from the same repository grouped together.
27
+ - **Web-based configuration**: manage provider login and API keys, models, model tests, plugin packages, and skills without leaving Pi Web.
28
+ - **English and Simplified Chinese UI**: Pi Web follows the browser language initially and provides a language switcher in the top bar.
29
+
30
+ ## Quick Start
31
+
32
+ Pi Web requires Node.js 22.19.0 or newer. Check your version with `node --version`, then run:
33
+
34
+ ```bash
35
+ npx @agegr/pi-web@latest
36
+ ```
37
+
38
+ The CLI opens a browser after the server is ready. If it does not, open [http://127.0.0.1:30141](http://127.0.0.1:30141). Pi Web listens only on `127.0.0.1` by default.
39
+
40
+ If no model provider is configured yet, open the **Models** panel to sign in or add an API key.
41
+
42
+ To install the `pi-web` command globally:
43
+
44
+ ```bash
45
+ npm install -g @agegr/pi-web@latest
46
+ pi-web
47
+ ```
48
+
49
+ To update, stop the running process with `Ctrl+C` and run the same install command again. To uninstall, run `npm uninstall -g @agegr/pi-web`.
50
+
51
+ ## Configuration
52
+
53
+ For port and hostname, command-line options override the corresponding environment variables. Either `--no-open` or `PI_WEB_NO_OPEN=1` disables automatic browser opening.
54
+
55
+ | Option or environment variable | Purpose | Default |
56
+ | --- | --- | --- |
57
+ | `--port <port>`, `-p <port>`, or `PORT` | Server port | `30141` |
58
+ | `--hostname <host>`, `-H <host>`, or `PI_WEB_HOSTNAME` | Bind hostname | `127.0.0.1` |
59
+ | `--no-open` or `PI_WEB_NO_OPEN=1` | Do not open a browser automatically | Browser opens |
60
+ | `PI_WEB_ALLOWED_HOSTS` | Additional exact proxy or custom hostnames, comma-separated | Unset |
61
+ | `PI_WEB_PASSWORD` | Enable HTTP Basic Auth; the username is always `pi` | Authentication disabled |
62
+
63
+ For example:
64
+
65
+ ```bash
66
+ pi-web -p 8080 -H 0.0.0.0 --no-open
67
+ ```
68
+
69
+ ### Remote Access
70
+
71
+ Binding to a non-loopback address exposes an agent that can execute high-privilege actions. On a trusted LAN, require a long random password:
72
+
73
+ ```bash
74
+ PI_WEB_PASSWORD='a-long-random-password' pi-web --hostname 0.0.0.0
75
+ ```
76
+
77
+ Basic Auth does not encrypt the password in transit. Do not expose Pi Web over plain HTTP to the internet; use HTTPS through a trusted reverse proxy or a trusted VPN. If a reverse proxy sends an external hostname, add that exact name to `PI_WEB_ALLOWED_HOSTS`. This allow-list does not change the address Pi Web binds to.
78
+
79
+ ### HTTP Proxy
80
+
81
+ Server-side model and API requests honor the standard `HTTP_PROXY`, `HTTPS_PROXY`, and `NO_PROXY` environment variables.
82
+
83
+ On macOS or Linux:
84
+
85
+ ```bash
86
+ HTTP_PROXY=http://127.0.0.1:7890 \
87
+ HTTPS_PROXY=http://127.0.0.1:7890 \
88
+ NO_PROXY=localhost,127.0.0.1 \
89
+ npx @agegr/pi-web@latest
90
+ ```
91
+
92
+ On Windows PowerShell:
93
+
94
+ ```powershell
95
+ $env:HTTP_PROXY = "http://127.0.0.1:7890"
96
+ $env:HTTPS_PROXY = "http://127.0.0.1:7890"
97
+ $env:NO_PROXY = "localhost,127.0.0.1"
98
+ npx @agegr/pi-web@latest
99
+ ```
100
+
101
+ ## Notes
102
+
103
+ - **Agent data**: Pi Web reads pi data from `~/.pi/agent` by default, including session files under `sessions/<encoded-cwd>/<timestamp>_<uuid>.jsonl`. Set `PI_CODING_AGENT_DIR` to use another pi agent directory.
104
+ - **Filesystem access**: Pi Web must be able to read the agent data directory and the working directories recorded by its sessions. Run Pi Web in the same filesystem environment as pi when sharing existing sessions.
105
+ - **Shared configuration**: the Models panel uses pi's model, settings, and credential storage, so changes are visible to both interfaces.
106
+ - **File access boundary**: the file browser is limited to working directories selected in Pi Web and project or session roots it already knows about; it is not a general filesystem browser.
107
+ - **Git worktrees**: see [Worktrees in Pi Web](./docs/worktrees.md) for switcher visibility, worktree creation, and removal behavior.
108
+
109
+ ### Downstream Session Context Menu
110
+
111
+ Electron wrappers and other downstream integrations can provide a session-row
112
+ context menu without patching `SessionSidebar`. Listen for the cancelable
113
+ `pi-web:session-row-contextmenu` browser event and call `preventDefault()`
114
+ synchronously when the integration will handle it:
115
+
116
+ ```js
117
+ window.addEventListener("pi-web:session-row-contextmenu", (event) => {
118
+ event.preventDefault();
119
+ const { id, path, cwd, name, clientX, clientY, refresh } = event.detail;
120
+
121
+ void openSessionMenu({ id, path, cwd, name, clientX, clientY }).then((changed) => {
122
+ if (changed) refresh();
123
+ });
124
+ });
125
+ ```
126
+
127
+ The detail object contains `id`, `path`, `cwd`, optional `name`, pointer
128
+ coordinates, and a `refresh()` callback for actions that change the session
129
+ list. If no listener cancels the extension event, Pi Web preserves the
130
+ browser's native context menu. This hook is browser-side and independent of
131
+ Pi agent extensions.
132
+
133
+ ## Development
134
+
135
+ ```bash
136
+ npm install
137
+ npm run dev
138
+ ```
139
+
140
+ The development server runs at [http://127.0.0.1:30141](http://127.0.0.1:30141). Run the common checks with:
141
+
142
+ ```bash
143
+ npm test
144
+ node_modules/.bin/tsc --noEmit
145
+ npm run lint
146
+ ```
147
+
148
+ Do not run `next build` or `npm run build` during normal development. It writes to `.next/` and can interfere with the development server; leave builds for release work.
149
+
150
+ Contributor guides: [Internationalization](./docs/i18n.md) and [Release process](./docs/release.md).
151
+
152
+ ## Repository Layout
153
+
154
+ ```text
155
+ app/ Next.js UI and API routes
156
+ components/ React UI components
157
+ hooks/ Client state and interaction hooks
158
+ lib/ Session, agent, model, file, Git, and security logic
159
+ public/ Static assets and PWA files
160
+ bin/ npm CLI entrypoint and launch option parsing
161
+ docs/ Focused user and contributor guides
162
+ ```
163
+
164
+ See [AGENTS.md](./AGENTS.md) for the architecture notes and detailed file map.
165
+
166
+ ## License
167
+
168
+ [MIT](./LICENSE)
package/README.ru.md ADDED
@@ -0,0 +1,132 @@
1
+ # Pi Web
2
+
3
+ [English](./README.md) | [中文文档](./README.zh-CN.md) | [日本語](./README.ja.md)
4
+
5
+ Локальный браузерный интерфейс для [pi coding agent](https://github.com/earendil-works/pi). Pi Web использует те же локальные настройки и файлы сессий, что и pi, поэтому в браузере можно находить и продолжать диалоги, запускать агента, настраивать модели и ресурсы, а также просматривать файлы проекта.
6
+
7
+ ![Pi Web показывает сессию pi со структурированным Markdown, вызовами инструментов и навигацией по проекту](https://raw.githubusercontent.com/agegr/pi-web/main/docs/screenshot2.png)
8
+
9
+ ## Возможности
10
+
11
+ - **Рабочее пространство сессий**: просмотр, продолжение, переименование, экспорт и удаление диалогов, сгруппированных по проектам, с отображением состояния выполнения, использования контекста, стоимости и сведений о сжатии.
12
+ - **Два способа создать ветку**: **New session** создаёт независимый файл сессии из более раннего сообщения, а **Edit from here** создаёт ветку внутри текущей сессии.
13
+ - **Инструменты для файлов проекта**: просмотр и загрузка файлов, проверка Git Diff, предпросмотр исходного кода, Markdown, изображений, аудио, PDF и DOCX с автоматическим обновлением.
14
+ - **Git worktree**: переключение рабочих деревьев в боковой панели с сохранением общей группы сессий одного репозитория.
15
+ - **Настройка через Web**: управление входом в Provider и API Key, моделями, тестами моделей, пакетами плагинов и навыками без выхода из Pi Web.
16
+ - **Интерфейс на английском и упрощённом китайском**: при первом запуске Pi Web учитывает язык браузера, а затем язык можно переключить в верхней панели.
17
+
18
+ ## Быстрый старт
19
+
20
+ Для работы Pi Web требуется Node.js 22.19.0 или новее. Проверьте версию командой `node --version`, затем выполните:
21
+
22
+ ```bash
23
+ npx @agegr/pi-web@latest
24
+ ```
25
+
26
+ Когда сервер будет готов, CLI попытается открыть браузер автоматически. Если этого не произошло, откройте [http://127.0.0.1:30141](http://127.0.0.1:30141). По умолчанию Pi Web прослушивает только `127.0.0.1`.
27
+
28
+ Если Provider модели ещё не настроен, откройте панель **Models**, войдите в учётную запись или добавьте API Key.
29
+
30
+ Чтобы установить команду `pi-web` глобально:
31
+
32
+ ```bash
33
+ npm install -g @agegr/pi-web@latest
34
+ pi-web
35
+ ```
36
+
37
+ Для обновления остановите запущенный процесс с помощью `Ctrl+C` и повторите ту же команду установки. Для удаления выполните `npm uninstall -g @agegr/pi-web`.
38
+
39
+ ## Настройка
40
+
41
+ Для порта и имени хоста параметры командной строки имеют приоритет над соответствующими переменными окружения. И `--no-open`, и `PI_WEB_NO_OPEN=1` отключают автоматическое открытие браузера независимо друг от друга.
42
+
43
+ | Параметр или переменная окружения | Назначение | Значение по умолчанию |
44
+ | --- | --- | --- |
45
+ | `--port <port>`, `-p <port>` или `PORT` | Порт сервера | `30141` |
46
+ | `--hostname <host>`, `-H <host>` или `PI_WEB_HOSTNAME` | Имя хоста для привязки | `127.0.0.1` |
47
+ | `--no-open` или `PI_WEB_NO_OPEN=1` | Не открывать браузер автоматически | Браузер открывается |
48
+ | `PI_WEB_ALLOWED_HOSTS` | Дополнительные точные имена прокси или пользовательских хостов через запятую | Не задано |
49
+ | `PI_WEB_PASSWORD` | Включить HTTP Basic Auth; имя пользователя всегда `pi` | Аутентификация отключена |
50
+
51
+ Пример:
52
+
53
+ ```bash
54
+ pi-web -p 8080 -H 0.0.0.0 --no-open
55
+ ```
56
+
57
+ ### Удалённый доступ
58
+
59
+ Привязка к адресу, отличному от loopback, открывает сетевой доступ к агенту, способному выполнять операции с широкими полномочиями. Даже в доверенной локальной сети используйте длинный случайный пароль:
60
+
61
+ ```bash
62
+ PI_WEB_PASSWORD='длинный-случайный-пароль' pi-web --hostname 0.0.0.0
63
+ ```
64
+
65
+ Basic Auth не шифрует пароль при передаче. Не публикуйте Pi Web в интернете по обычному HTTP; используйте HTTPS через доверенный обратный прокси или надёжное VPN-подключение. Если обратный прокси передаёт внешнее имя хоста, добавьте это точное имя в `PI_WEB_ALLOWED_HOSTS`. Этот список разрешённых имён не меняет адрес, к которому привязывается Pi Web.
66
+
67
+ ### HTTP-прокси
68
+
69
+ Для серверных запросов к моделям и API используются стандартные переменные окружения `HTTP_PROXY`, `HTTPS_PROXY` и `NO_PROXY`.
70
+
71
+ В macOS и Linux:
72
+
73
+ ```bash
74
+ HTTP_PROXY=http://127.0.0.1:7890 \
75
+ HTTPS_PROXY=http://127.0.0.1:7890 \
76
+ NO_PROXY=localhost,127.0.0.1 \
77
+ npx @agegr/pi-web@latest
78
+ ```
79
+
80
+ В Windows PowerShell:
81
+
82
+ ```powershell
83
+ $env:HTTP_PROXY = "http://127.0.0.1:7890"
84
+ $env:HTTPS_PROXY = "http://127.0.0.1:7890"
85
+ $env:NO_PROXY = "localhost,127.0.0.1"
86
+ npx @agegr/pi-web@latest
87
+ ```
88
+
89
+ ## Примечания
90
+
91
+ - **Данные агента**: по умолчанию Pi Web читает данные pi из `~/.pi/agent`, включая файлы сессий в `sessions/<encoded-cwd>/<timestamp>_<uuid>.jsonl`. Чтобы использовать другой каталог агента pi, задайте `PI_CODING_AGENT_DIR`.
92
+ - **Доступ к файловой системе**: Pi Web должен иметь доступ для чтения к каталогу данных агента и рабочим каталогам, записанным в сессиях. При совместном использовании существующих сессий запускайте Pi Web в той же файловой среде, что и pi.
93
+ - **Общие настройки**: панель Models использует хранилища моделей, настроек и учётных данных pi, поэтому изменения видны в обоих интерфейсах.
94
+ - **Граница доступа к файлам**: файловый браузер ограничен рабочими каталогами, выбранными в Pi Web, и уже известными корнями проектов или сессий; это не универсальный файловый менеджер.
95
+ - **Git worktree**: условия отображения переключателя, создание рабочих деревьев и их удаление описаны в документе [Worktrees in Pi Web](./docs/worktrees.md).
96
+
97
+ ## Разработка
98
+
99
+ ```bash
100
+ npm install
101
+ npm run dev
102
+ ```
103
+
104
+ Сервер разработки доступен по адресу [http://127.0.0.1:30141](http://127.0.0.1:30141). Основные проверки запускаются командами:
105
+
106
+ ```bash
107
+ npm test
108
+ node_modules/.bin/tsc --noEmit
109
+ npm run lint
110
+ ```
111
+
112
+ Не запускайте `next build` или `npm run build` во время обычной разработки. Эти команды записывают данные в `.next/` и могут помешать работе сервера разработки; выполняйте сборку только при подготовке релиза.
113
+
114
+ Руководства для участников: [Internationalization](./docs/i18n.md) и [Release process](./docs/release.md).
115
+
116
+ ## Структура репозитория
117
+
118
+ ```text
119
+ app/ UI Next.js и маршруты API
120
+ components/ Компоненты интерфейса React
121
+ hooks/ Состояние клиента и обработчики взаимодействий
122
+ lib/ Логика сессий, агента, моделей, файлов, Git и безопасности
123
+ public/ Статические ресурсы и файлы PWA
124
+ bin/ Точка входа npm CLI и разбор параметров запуска
125
+ docs/ Тематические руководства для пользователей и участников
126
+ ```
127
+
128
+ Описание архитектуры и подробная карта файлов приведены в [AGENTS.md](./AGENTS.md).
129
+
130
+ ## Лицензия
131
+
132
+ [MIT](./LICENSE)
@@ -0,0 +1,137 @@
1
+ # Pi Web — Sky 皮肤版(@baique/pi-web-sky)
2
+
3
+ > **Sky 皮肤版**:基于 [pi-web](https://github.com/earendil-works/pi)(经 [@agegr/pi-web](https://github.com/agegr/pi-web) 二开)的独立发行版,MIT 协议。
4
+ > 在原生 pi-web 之上新增 Sky 皮肤:毛玻璃气泡与面板、JetBrains Mono 消息字体、加深/提亮文字对比度、右上角 todo 面板、右下角堆叠弱通知。
5
+
6
+ [English](./README.md) | [日本語](./README.ja.md) | [Русский](./README.ru.md)
7
+
8
+ [pi 编程智能体](https://github.com/earendil-works/pi)的本地浏览器界面。Pi Web 与 pi 共用本机配置和会话文件,可在浏览器中查找和继续对话、运行智能体、配置模型与资源,并查看项目文件。
9
+
10
+ 中文微信群:请查看 [GitHub Discussions 帖子](https://github.com/agegr/pi-web/discussions/271)。
11
+
12
+ ![Pi Web 展示包含结构化 Markdown、工具调用和项目导航的 pi 会话](https://raw.githubusercontent.com/agegr/pi-web/main/docs/screenshot2.png)
13
+
14
+ ## 功能
15
+
16
+ - **会话工作区**:按项目查找、继续、重命名、导出和删除对话,并查看运行状态、上下文占用、花费和压缩信息。
17
+ - **两种分支方式**:**新会话**会从较早的消息创建独立会话文件;**从此处编辑**会在当前会话内创建分支。
18
+ - **项目文件工具**:浏览和上传文件、查看 Git Diff,并预览源码、Markdown、图片、音频、PDF 和 DOCX;文件变化后会自动刷新。
19
+ - **Git worktree**:从侧边栏切换 checkout,同时把同一仓库不同 worktree 的会话归在一起。
20
+ - **网页配置**:无需离开 Pi Web,即可管理 Provider 登录和 API Key、模型、模型测试、插件包及技能。
21
+ - **英文和简体中文界面**:Pi Web 首次打开时跟随浏览器语言,也可从顶部栏切换语言。
22
+
23
+ ## 快速开始
24
+
25
+ Pi Web 要求 Node.js 22.19.0 或更高版本。先用 `node --version` 检查版本,然后运行:
26
+
27
+ ```bash
28
+ npx @agegr/pi-web@latest
29
+ ```
30
+
31
+ 服务就绪后,命令行会尝试自动打开浏览器。如果没有打开,请访问 [http://127.0.0.1:30141](http://127.0.0.1:30141)。Pi Web 默认仅监听 `127.0.0.1`。
32
+
33
+ 如果尚未配置模型 Provider,请打开**模型(Models)**面板登录或添加 API Key。
34
+
35
+ 如需全局安装 `pi-web` 命令:
36
+
37
+ ```bash
38
+ npm install -g @agegr/pi-web@latest
39
+ pi-web
40
+ ```
41
+
42
+ 更新前先用 `Ctrl+C` 停止正在运行的进程,再次执行同一条安装命令。卸载时运行 `npm uninstall -g @agegr/pi-web`。
43
+
44
+ ## 配置
45
+
46
+ 端口和主机名以命令行参数为准,优先于对应的环境变量。`--no-open` 与 `PI_WEB_NO_OPEN=1` 中任意一个都会关闭自动打开浏览器。
47
+
48
+ | 参数或环境变量 | 用途 | 默认值 |
49
+ | --- | --- | --- |
50
+ | `--port <端口>`、`-p <端口>` 或 `PORT` | 服务端口 | `30141` |
51
+ | `--hostname <主机>`、`-H <主机>` 或 `PI_WEB_HOSTNAME` | 监听主机名 | `127.0.0.1` |
52
+ | `--no-open` 或 `PI_WEB_NO_OPEN=1` | 不自动打开浏览器 | 自动打开 |
53
+ | `PI_WEB_ALLOWED_HOSTS` | 额外允许的代理或自定义主机名,多个值用逗号分隔,必须精确匹配 | 未设置 |
54
+ | `PI_WEB_PASSWORD` | 启用 HTTP Basic Auth,用户名固定为 `pi` | 不启用认证 |
55
+
56
+ 例如:
57
+
58
+ ```bash
59
+ pi-web -p 8080 -H 0.0.0.0 --no-open
60
+ ```
61
+
62
+ ### 远程访问
63
+
64
+ 监听非回环地址会暴露一个可执行高权限操作的智能体。在可信局域网中使用时,请设置足够长的随机密码:
65
+
66
+ ```bash
67
+ PI_WEB_PASSWORD='足够长的随机密码' pi-web --hostname 0.0.0.0
68
+ ```
69
+
70
+ Basic Auth 不会加密传输中的密码。不要通过明文 HTTP 将 Pi Web 暴露到互联网;远程访问应使用可信反向代理提供 HTTPS,或通过可信 VPN。如果反向代理传递外部主机名,请把该名称精确加入 `PI_WEB_ALLOWED_HOSTS`。这个白名单不会改变 Pi Web 的监听地址。
71
+
72
+ ### HTTP 代理
73
+
74
+ 服务端的模型和 API 请求会读取标准的 `HTTP_PROXY`、`HTTPS_PROXY` 和 `NO_PROXY` 环境变量。
75
+
76
+ macOS 或 Linux:
77
+
78
+ ```bash
79
+ HTTP_PROXY=http://127.0.0.1:7890 \
80
+ HTTPS_PROXY=http://127.0.0.1:7890 \
81
+ NO_PROXY=localhost,127.0.0.1 \
82
+ npx @agegr/pi-web@latest
83
+ ```
84
+
85
+ Windows PowerShell:
86
+
87
+ ```powershell
88
+ $env:HTTP_PROXY = "http://127.0.0.1:7890"
89
+ $env:HTTPS_PROXY = "http://127.0.0.1:7890"
90
+ $env:NO_PROXY = "localhost,127.0.0.1"
91
+ npx @agegr/pi-web@latest
92
+ ```
93
+
94
+ ## 注意事项
95
+
96
+ - **智能体数据**:Pi Web 默认读取 `~/.pi/agent` 下的 pi 数据,包括 `sessions/<编码后的工作目录>/<时间戳>_<uuid>.jsonl` 中的会话文件。可通过 `PI_CODING_AGENT_DIR` 指定其他 pi agent 目录。
97
+ - **文件系统访问**:Pi Web 必须能读取智能体数据目录及会话记录中的工作目录。与现有 pi 会话共用数据时,请让 Pi Web 运行在与 pi 相同的文件系统环境中。
98
+ - **共享配置**:模型面板使用 pi 的模型、设置和凭据存储,因此两种界面都能看到相关更改。
99
+ - **文件访问边界**:文件浏览器仅能访问在 Pi Web 中选择过的工作目录,以及它已识别的项目或会话根目录;它不是通用的文件系统浏览器。
100
+ - **Git worktree**:切换器何时显示、如何创建 worktree,以及删除会产生什么影响,见 [Pi Web 里的 Worktree](./docs/worktrees.zh-CN.md)。
101
+
102
+ ## 开发
103
+
104
+ ```bash
105
+ npm install
106
+ npm run dev
107
+ ```
108
+
109
+ 开发服务器运行在 [http://127.0.0.1:30141](http://127.0.0.1:30141)。常用检查命令:
110
+
111
+ ```bash
112
+ npm test
113
+ node_modules/.bin/tsc --noEmit
114
+ npm run lint
115
+ ```
116
+
117
+ 日常开发时不要运行 `next build` 或 `npm run build`。它们会写入 `.next/`,可能干扰开发服务器;仅在发布流程中执行构建。
118
+
119
+ 贡献者文档:[国际化](./docs/i18n.md)和[发布流程](./docs/release.md)。
120
+
121
+ ## 仓库结构
122
+
123
+ ```text
124
+ app/ Next.js 界面和 API 路由
125
+ components/ React 界面组件
126
+ hooks/ 客户端状态和交互 hooks
127
+ lib/ 会话、智能体、模型、文件、Git 和安全逻辑
128
+ public/ 静态资源和 PWA 文件
129
+ bin/ npm CLI 入口及启动参数解析
130
+ docs/ 面向用户和贡献者的专题文档
131
+ ```
132
+
133
+ 架构说明和详细文件地图见 [AGENTS.md](./AGENTS.md)。
134
+
135
+ ## 许可证
136
+
137
+ [MIT](./LICENSE)
@@ -0,0 +1,35 @@
1
+ "use strict";
2
+
3
+ const MIN_NODE_VERSION = "22.19.0";
4
+
5
+ function parseNodeVersion(version) {
6
+ const match = /^v?(\d+)\.(\d+)\.(\d+)/.exec(version);
7
+ if (!match) return null;
8
+ return match.slice(1).map(Number);
9
+ }
10
+
11
+ function isNodeVersionSupported(version) {
12
+ const current = parseNodeVersion(version);
13
+ const minimum = parseNodeVersion(MIN_NODE_VERSION);
14
+ if (!current || !minimum) return false;
15
+
16
+ for (let index = 0; index < minimum.length; index += 1) {
17
+ if (current[index] > minimum[index]) return true;
18
+ if (current[index] < minimum[index]) return false;
19
+ }
20
+ return true;
21
+ }
22
+
23
+ function getUnsupportedNodeVersionMessage(version) {
24
+ return [
25
+ `Pi Web requires Node.js ${MIN_NODE_VERSION} or newer.`,
26
+ `Current Node.js version: ${version}.`,
27
+ "Upgrade Node.js and try again: https://nodejs.org/",
28
+ ].join("\n");
29
+ }
30
+
31
+ module.exports = {
32
+ MIN_NODE_VERSION,
33
+ getUnsupportedNodeVersionMessage,
34
+ isNodeVersionSupported,
35
+ };
@@ -0,0 +1,43 @@
1
+ "use strict";
2
+
3
+ // eslint-disable-next-line @typescript-eslint/no-require-imports
4
+ const { parseArgs } = require("util");
5
+
6
+ const TRUE_VALUES = new Set(["1", "true", "yes", "on"]);
7
+
8
+ function isEnabled(value) {
9
+ return typeof value === "string" && TRUE_VALUES.has(value.trim().toLowerCase());
10
+ }
11
+
12
+ function normalizePort(value) {
13
+ if (typeof value !== "string" || !/^\d+$/.test(value)) {
14
+ throw new Error("Port must be a non-negative integer.");
15
+ }
16
+
17
+ const port = Number(value);
18
+ if (!Number.isSafeInteger(port) || port > 65535) {
19
+ throw new Error("Port must be between 0 and 65535.");
20
+ }
21
+
22
+ return String(port);
23
+ }
24
+
25
+ function parseLaunchOptions(args = process.argv.slice(2), env = process.env) {
26
+ const { values: cliArgs } = parseArgs({
27
+ args,
28
+ options: {
29
+ port: { type: "string", short: "p" },
30
+ hostname: { type: "string", short: "H" },
31
+ "no-open": { type: "boolean" },
32
+ },
33
+ strict: false,
34
+ });
35
+
36
+ return {
37
+ port: normalizePort(cliArgs.port ?? env.PORT ?? "30141"),
38
+ hostname: cliArgs.hostname ?? env.PI_WEB_HOSTNAME ?? "127.0.0.1",
39
+ openBrowser: !cliArgs["no-open"] && !isEnabled(env.PI_WEB_NO_OPEN),
40
+ };
41
+ }
42
+
43
+ module.exports = { parseLaunchOptions };