@silgrid/pi-web 0.0.1

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 (701) hide show
  1. package/.next/BUILD_ID +1 -0
  2. package/.next/app-path-routes-manifest.json +64 -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 +189 -0
  12. package/.next/react-loadable-manifest.json +2367 -0
  13. package/.next/required-server-files.js +388 -0
  14. package/.next/required-server-files.json +388 -0
  15. package/.next/routes-manifest.json +499 -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 +21 -0
  31. package/.next/server/app/_not-found.segments/_full.segment.rsc +21 -0
  32. package/.next/server/app/_not-found.segments/_not-found/__PAGE__.segment.rsc +25 -0
  33. package/.next/server/app/_not-found.segments/_tree.segment.rsc +6 -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]/bg-tasks/[taskId]/kill/route.js +1 -0
  38. package/.next/server/app/api/agent/[id]/bg-tasks/[taskId]/kill/route.js.nft.json +1 -0
  39. package/.next/server/app/api/agent/[id]/bg-tasks/[taskId]/kill/route_client-reference-manifest.js +1 -0
  40. package/.next/server/app/api/agent/[id]/bg-tasks/[taskId]/logs/route.js +1 -0
  41. package/.next/server/app/api/agent/[id]/bg-tasks/[taskId]/logs/route.js.nft.json +1 -0
  42. package/.next/server/app/api/agent/[id]/bg-tasks/[taskId]/logs/route_client-reference-manifest.js +1 -0
  43. package/.next/server/app/api/agent/[id]/bg-tasks/route.js +1 -0
  44. package/.next/server/app/api/agent/[id]/bg-tasks/route.js.nft.json +1 -0
  45. package/.next/server/app/api/agent/[id]/bg-tasks/route_client-reference-manifest.js +1 -0
  46. package/.next/server/app/api/agent/[id]/events/route.js +3 -0
  47. package/.next/server/app/api/agent/[id]/events/route.js.nft.json +1 -0
  48. package/.next/server/app/api/agent/[id]/events/route_client-reference-manifest.js +1 -0
  49. package/.next/server/app/api/agent/[id]/lease/route.js +1 -0
  50. package/.next/server/app/api/agent/[id]/lease/route.js.nft.json +1 -0
  51. package/.next/server/app/api/agent/[id]/lease/route_client-reference-manifest.js +1 -0
  52. package/.next/server/app/api/agent/[id]/route.js +1 -0
  53. package/.next/server/app/api/agent/[id]/route.js.nft.json +1 -0
  54. package/.next/server/app/api/agent/[id]/route_client-reference-manifest.js +1 -0
  55. package/.next/server/app/api/agent/new/route.js +1 -0
  56. package/.next/server/app/api/agent/new/route.js.nft.json +1 -0
  57. package/.next/server/app/api/agent/new/route_client-reference-manifest.js +1 -0
  58. package/.next/server/app/api/agent/running/route.js +1 -0
  59. package/.next/server/app/api/agent/running/route.js.nft.json +1 -0
  60. package/.next/server/app/api/agent/running/route_client-reference-manifest.js +1 -0
  61. package/.next/server/app/api/app-update/route.js +1 -0
  62. package/.next/server/app/api/app-update/route.js.nft.json +1 -0
  63. package/.next/server/app/api/app-update/route_client-reference-manifest.js +1 -0
  64. package/.next/server/app/api/auth/api-key/[provider]/route.js +1 -0
  65. package/.next/server/app/api/auth/api-key/[provider]/route.js.nft.json +1 -0
  66. package/.next/server/app/api/auth/api-key/[provider]/route_client-reference-manifest.js +1 -0
  67. package/.next/server/app/api/auth/login/[provider]/route.js +3 -0
  68. package/.next/server/app/api/auth/login/[provider]/route.js.nft.json +1 -0
  69. package/.next/server/app/api/auth/login/[provider]/route_client-reference-manifest.js +1 -0
  70. package/.next/server/app/api/auth/logout/[provider]/route.js +1 -0
  71. package/.next/server/app/api/auth/logout/[provider]/route.js.nft.json +1 -0
  72. package/.next/server/app/api/auth/logout/[provider]/route_client-reference-manifest.js +1 -0
  73. package/.next/server/app/api/auth/providers/route.js +1 -0
  74. package/.next/server/app/api/auth/providers/route.js.nft.json +1 -0
  75. package/.next/server/app/api/auth/providers/route_client-reference-manifest.js +1 -0
  76. package/.next/server/app/api/cwd/browse/route.js +1 -0
  77. package/.next/server/app/api/cwd/browse/route.js.nft.json +1 -0
  78. package/.next/server/app/api/cwd/browse/route_client-reference-manifest.js +1 -0
  79. package/.next/server/app/api/cwd/validate/route.js +1 -0
  80. package/.next/server/app/api/cwd/validate/route.js.nft.json +1 -0
  81. package/.next/server/app/api/cwd/validate/route_client-reference-manifest.js +1 -0
  82. package/.next/server/app/api/default-cwd/route.js +1 -0
  83. package/.next/server/app/api/default-cwd/route.js.nft.json +1 -0
  84. package/.next/server/app/api/default-cwd/route_client-reference-manifest.js +1 -0
  85. package/.next/server/app/api/file-index/route.js +1 -0
  86. package/.next/server/app/api/file-index/route.js.nft.json +1 -0
  87. package/.next/server/app/api/file-index/route_client-reference-manifest.js +1 -0
  88. package/.next/server/app/api/files/[...path]/route.js +49 -0
  89. package/.next/server/app/api/files/[...path]/route.js.nft.json +1 -0
  90. package/.next/server/app/api/files/[...path]/route_client-reference-manifest.js +1 -0
  91. package/.next/server/app/api/git/diff/route.js +6 -0
  92. package/.next/server/app/api/git/diff/route.js.nft.json +1 -0
  93. package/.next/server/app/api/git/diff/route_client-reference-manifest.js +1 -0
  94. package/.next/server/app/api/git/status/route.js +6 -0
  95. package/.next/server/app/api/git/status/route.js.nft.json +1 -0
  96. package/.next/server/app/api/git/status/route_client-reference-manifest.js +1 -0
  97. package/.next/server/app/api/home/route.js +1 -0
  98. package/.next/server/app/api/home/route.js.nft.json +1 -0
  99. package/.next/server/app/api/home/route_client-reference-manifest.js +1 -0
  100. package/.next/server/app/api/models/route.js +1 -0
  101. package/.next/server/app/api/models/route.js.nft.json +1 -0
  102. package/.next/server/app/api/models/route_client-reference-manifest.js +1 -0
  103. package/.next/server/app/api/models-config/catalog/route.js +1 -0
  104. package/.next/server/app/api/models-config/catalog/route.js.nft.json +1 -0
  105. package/.next/server/app/api/models-config/catalog/route_client-reference-manifest.js +1 -0
  106. package/.next/server/app/api/models-config/discover/route.js +1 -0
  107. package/.next/server/app/api/models-config/discover/route.js.nft.json +1 -0
  108. package/.next/server/app/api/models-config/discover/route_client-reference-manifest.js +1 -0
  109. package/.next/server/app/api/models-config/route.js +1 -0
  110. package/.next/server/app/api/models-config/route.js.nft.json +1 -0
  111. package/.next/server/app/api/models-config/route_client-reference-manifest.js +1 -0
  112. package/.next/server/app/api/models-config/test/route.js +1 -0
  113. package/.next/server/app/api/models-config/test/route.js.nft.json +1 -0
  114. package/.next/server/app/api/models-config/test/route_client-reference-manifest.js +1 -0
  115. package/.next/server/app/api/plugins/check/route.js +1 -0
  116. package/.next/server/app/api/plugins/check/route.js.nft.json +1 -0
  117. package/.next/server/app/api/plugins/check/route_client-reference-manifest.js +1 -0
  118. package/.next/server/app/api/plugins/route.js +1 -0
  119. package/.next/server/app/api/plugins/route.js.nft.json +1 -0
  120. package/.next/server/app/api/plugins/route_client-reference-manifest.js +1 -0
  121. package/.next/server/app/api/project-trust/route.js +1 -0
  122. package/.next/server/app/api/project-trust/route.js.nft.json +1 -0
  123. package/.next/server/app/api/project-trust/route_client-reference-manifest.js +1 -0
  124. package/.next/server/app/api/provider-usage/query/route.js +1 -0
  125. package/.next/server/app/api/provider-usage/query/route.js.nft.json +1 -0
  126. package/.next/server/app/api/provider-usage/query/route_client-reference-manifest.js +1 -0
  127. package/.next/server/app/api/push/config/route.js +1 -0
  128. package/.next/server/app/api/push/config/route.js.nft.json +1 -0
  129. package/.next/server/app/api/push/config/route_client-reference-manifest.js +1 -0
  130. package/.next/server/app/api/push/subscribe/route.js +1 -0
  131. package/.next/server/app/api/push/subscribe/route.js.nft.json +1 -0
  132. package/.next/server/app/api/push/subscribe/route_client-reference-manifest.js +1 -0
  133. package/.next/server/app/api/sessions/[id]/auto-name/route.js +10 -0
  134. package/.next/server/app/api/sessions/[id]/auto-name/route.js.nft.json +1 -0
  135. package/.next/server/app/api/sessions/[id]/auto-name/route_client-reference-manifest.js +1 -0
  136. package/.next/server/app/api/sessions/[id]/context/route.js +1 -0
  137. package/.next/server/app/api/sessions/[id]/context/route.js.nft.json +1 -0
  138. package/.next/server/app/api/sessions/[id]/context/route_client-reference-manifest.js +1 -0
  139. package/.next/server/app/api/sessions/[id]/entries/[entryId]/thinking/route.js +1 -0
  140. package/.next/server/app/api/sessions/[id]/entries/[entryId]/thinking/route.js.nft.json +1 -0
  141. package/.next/server/app/api/sessions/[id]/entries/[entryId]/thinking/route_client-reference-manifest.js +1 -0
  142. package/.next/server/app/api/sessions/[id]/entries/[entryId]/tool-result-image/route.js +1 -0
  143. package/.next/server/app/api/sessions/[id]/entries/[entryId]/tool-result-image/route.js.nft.json +1 -0
  144. package/.next/server/app/api/sessions/[id]/entries/[entryId]/tool-result-image/route_client-reference-manifest.js +1 -0
  145. package/.next/server/app/api/sessions/[id]/export/route.js +54 -0
  146. package/.next/server/app/api/sessions/[id]/export/route.js.nft.json +1 -0
  147. package/.next/server/app/api/sessions/[id]/export/route_client-reference-manifest.js +1 -0
  148. package/.next/server/app/api/sessions/[id]/route.js +1 -0
  149. package/.next/server/app/api/sessions/[id]/route.js.nft.json +1 -0
  150. package/.next/server/app/api/sessions/[id]/route_client-reference-manifest.js +1 -0
  151. package/.next/server/app/api/sessions/[id]/state/route.js +1 -0
  152. package/.next/server/app/api/sessions/[id]/state/route.js.nft.json +1 -0
  153. package/.next/server/app/api/sessions/[id]/state/route_client-reference-manifest.js +1 -0
  154. package/.next/server/app/api/sessions/route.js +1 -0
  155. package/.next/server/app/api/sessions/route.js.nft.json +1 -0
  156. package/.next/server/app/api/sessions/route_client-reference-manifest.js +1 -0
  157. package/.next/server/app/api/sessions/search/route.js +1 -0
  158. package/.next/server/app/api/sessions/search/route.js.nft.json +1 -0
  159. package/.next/server/app/api/sessions/search/route_client-reference-manifest.js +1 -0
  160. package/.next/server/app/api/skills/check/route.js +1 -0
  161. package/.next/server/app/api/skills/check/route.js.nft.json +1 -0
  162. package/.next/server/app/api/skills/check/route_client-reference-manifest.js +1 -0
  163. package/.next/server/app/api/skills/install/route.js +1 -0
  164. package/.next/server/app/api/skills/install/route.js.nft.json +1 -0
  165. package/.next/server/app/api/skills/install/route_client-reference-manifest.js +1 -0
  166. package/.next/server/app/api/skills/route.js +4 -0
  167. package/.next/server/app/api/skills/route.js.nft.json +1 -0
  168. package/.next/server/app/api/skills/route_client-reference-manifest.js +1 -0
  169. package/.next/server/app/api/skills/search/route.js +1 -0
  170. package/.next/server/app/api/skills/search/route.js.nft.json +1 -0
  171. package/.next/server/app/api/skills/search/route_client-reference-manifest.js +1 -0
  172. package/.next/server/app/api/skills/update/route.js +1 -0
  173. package/.next/server/app/api/skills/update/route.js.nft.json +1 -0
  174. package/.next/server/app/api/skills/update/route_client-reference-manifest.js +1 -0
  175. package/.next/server/app/api/subagents/[id]/route.js +1 -0
  176. package/.next/server/app/api/subagents/[id]/route.js.nft.json +1 -0
  177. package/.next/server/app/api/subagents/[id]/route_client-reference-manifest.js +1 -0
  178. package/.next/server/app/api/subagents/profiles/route.js +1 -0
  179. package/.next/server/app/api/subagents/profiles/route.js.nft.json +1 -0
  180. package/.next/server/app/api/subagents/profiles/route_client-reference-manifest.js +1 -0
  181. package/.next/server/app/api/subagents/settings/route.js +1 -0
  182. package/.next/server/app/api/subagents/settings/route.js.nft.json +1 -0
  183. package/.next/server/app/api/subagents/settings/route_client-reference-manifest.js +1 -0
  184. package/.next/server/app/api/terminal/[id]/events/route.js +4 -0
  185. package/.next/server/app/api/terminal/[id]/events/route.js.nft.json +1 -0
  186. package/.next/server/app/api/terminal/[id]/events/route_client-reference-manifest.js +1 -0
  187. package/.next/server/app/api/terminal/[id]/route.js +1 -0
  188. package/.next/server/app/api/terminal/[id]/route.js.nft.json +1 -0
  189. package/.next/server/app/api/terminal/[id]/route_client-reference-manifest.js +1 -0
  190. package/.next/server/app/api/terminal/route.js +1 -0
  191. package/.next/server/app/api/terminal/route.js.nft.json +1 -0
  192. package/.next/server/app/api/terminal/route_client-reference-manifest.js +1 -0
  193. package/.next/server/app/api/tools/settings/route.js +1 -0
  194. package/.next/server/app/api/tools/settings/route.js.nft.json +1 -0
  195. package/.next/server/app/api/tools/settings/route_client-reference-manifest.js +1 -0
  196. package/.next/server/app/api/web-auth/route.js +1 -0
  197. package/.next/server/app/api/web-auth/route.js.nft.json +1 -0
  198. package/.next/server/app/api/web-auth/route_client-reference-manifest.js +1 -0
  199. package/.next/server/app/api/worktrees/route.js +1 -0
  200. package/.next/server/app/api/worktrees/route.js.nft.json +1 -0
  201. package/.next/server/app/api/worktrees/route_client-reference-manifest.js +1 -0
  202. package/.next/server/app/favicon.ico/route.js +1 -0
  203. package/.next/server/app/favicon.ico/route.js.nft.json +1 -0
  204. package/.next/server/app/favicon.ico.body +0 -0
  205. package/.next/server/app/favicon.ico.meta +1 -0
  206. package/.next/server/app/index.html +1 -0
  207. package/.next/server/app/index.meta +21 -0
  208. package/.next/server/app/index.rsc +22 -0
  209. package/.next/server/app/index.segments/__PAGE__.segment.rsc +25 -0
  210. package/.next/server/app/index.segments/_full.segment.rsc +22 -0
  211. package/.next/server/app/index.segments/_tree.segment.rsc +7 -0
  212. package/.next/server/app/login/page.js +1 -0
  213. package/.next/server/app/login/page.js.nft.json +1 -0
  214. package/.next/server/app/login/page_client-reference-manifest.js +1 -0
  215. package/.next/server/app/login.html +1 -0
  216. package/.next/server/app/login.meta +26 -0
  217. package/.next/server/app/login.rsc +25 -0
  218. package/.next/server/app/login.segments/_full.segment.rsc +25 -0
  219. package/.next/server/app/login.segments/_tree.segment.rsc +6 -0
  220. package/.next/server/app/login.segments/login/__PAGE__.segment.rsc +29 -0
  221. package/.next/server/app/manifest.webmanifest/route.js +17 -0
  222. package/.next/server/app/manifest.webmanifest/route.js.nft.json +1 -0
  223. package/.next/server/app/manifest.webmanifest/route_client-reference-manifest.js +1 -0
  224. package/.next/server/app/manifest.webmanifest.body +1 -0
  225. package/.next/server/app/manifest.webmanifest.meta +1 -0
  226. package/.next/server/app/page.js +305 -0
  227. package/.next/server/app/page.js.nft.json +1 -0
  228. package/.next/server/app/page_client-reference-manifest.js +1 -0
  229. package/.next/server/app-paths-manifest.json +64 -0
  230. package/.next/server/chunks/1094.js +160 -0
  231. package/.next/server/chunks/1515.js +1 -0
  232. package/.next/server/chunks/1555.js +1 -0
  233. package/.next/server/chunks/1601.js +24 -0
  234. package/.next/server/chunks/1625.js +1 -0
  235. package/.next/server/chunks/1800.js +1 -0
  236. package/.next/server/chunks/1813.js +1 -0
  237. package/.next/server/chunks/1860.js +1 -0
  238. package/.next/server/chunks/2075.js +23 -0
  239. package/.next/server/chunks/2106.js +1 -0
  240. package/.next/server/chunks/2169.js +36 -0
  241. package/.next/server/chunks/2190.js +1 -0
  242. package/.next/server/chunks/2238.js +8 -0
  243. package/.next/server/chunks/2243.js +1 -0
  244. package/.next/server/chunks/2325.js +82 -0
  245. package/.next/server/chunks/2349.js +1 -0
  246. package/.next/server/chunks/2408.js +1 -0
  247. package/.next/server/chunks/2430.js +193 -0
  248. package/.next/server/chunks/2452.js +93 -0
  249. package/.next/server/chunks/2744.js +1 -0
  250. package/.next/server/chunks/2903.js +1 -0
  251. package/.next/server/chunks/295.js +1 -0
  252. package/.next/server/chunks/3012.js +1 -0
  253. package/.next/server/chunks/3186.js +86 -0
  254. package/.next/server/chunks/3379.js +1 -0
  255. package/.next/server/chunks/3383.js +27 -0
  256. package/.next/server/chunks/3569.js +1 -0
  257. package/.next/server/chunks/3618.js +1 -0
  258. package/.next/server/chunks/3869.js +8 -0
  259. package/.next/server/chunks/3894.js +1 -0
  260. package/.next/server/chunks/3907.js +1 -0
  261. package/.next/server/chunks/426.js +14 -0
  262. package/.next/server/chunks/4267.js +1 -0
  263. package/.next/server/chunks/4315.js +1 -0
  264. package/.next/server/chunks/4367.js +1 -0
  265. package/.next/server/chunks/4372.js +1 -0
  266. package/.next/server/chunks/4538.js +24 -0
  267. package/.next/server/chunks/4548.js +1 -0
  268. package/.next/server/chunks/4563.js +38 -0
  269. package/.next/server/chunks/4674.js +1 -0
  270. package/.next/server/chunks/4741.js +165 -0
  271. package/.next/server/chunks/4815.js +3 -0
  272. package/.next/server/chunks/4980.js +1 -0
  273. package/.next/server/chunks/5029.js +1 -0
  274. package/.next/server/chunks/5318.js +1 -0
  275. package/.next/server/chunks/5974.js +77 -0
  276. package/.next/server/chunks/6052.js +141 -0
  277. package/.next/server/chunks/611.js +1 -0
  278. package/.next/server/chunks/6253.js +104 -0
  279. package/.next/server/chunks/6337.js +1 -0
  280. package/.next/server/chunks/6366.js +80 -0
  281. package/.next/server/chunks/6429.js +14 -0
  282. package/.next/server/chunks/673.js +287 -0
  283. package/.next/server/chunks/6916.js +226 -0
  284. package/.next/server/chunks/703.js +1 -0
  285. package/.next/server/chunks/7233.js +1 -0
  286. package/.next/server/chunks/7265.js +215 -0
  287. package/.next/server/chunks/7307.js +1 -0
  288. package/.next/server/chunks/7561.js +1 -0
  289. package/.next/server/chunks/7710.js +1 -0
  290. package/.next/server/chunks/7744.js +64 -0
  291. package/.next/server/chunks/7790.js +1 -0
  292. package/.next/server/chunks/7799.js +34 -0
  293. package/.next/server/chunks/7872.js +1 -0
  294. package/.next/server/chunks/7916.js +1 -0
  295. package/.next/server/chunks/8106.js +1 -0
  296. package/.next/server/chunks/8294.js +1 -0
  297. package/.next/server/chunks/8333.js +79 -0
  298. package/.next/server/chunks/835.js +1 -0
  299. package/.next/server/chunks/8397.js +41 -0
  300. package/.next/server/chunks/8604.js +115 -0
  301. package/.next/server/chunks/8713.js +148 -0
  302. package/.next/server/chunks/8782.js +153 -0
  303. package/.next/server/chunks/8920.js +62 -0
  304. package/.next/server/chunks/922.js +5 -0
  305. package/.next/server/chunks/9280.js +255 -0
  306. package/.next/server/chunks/9486.js +1 -0
  307. package/.next/server/chunks/9509.js +1 -0
  308. package/.next/server/chunks/9510.js +90 -0
  309. package/.next/server/chunks/974.js +1 -0
  310. package/.next/server/functions-config-manifest.json +26 -0
  311. package/.next/server/instrumentation.js +1 -0
  312. package/.next/server/instrumentation.js.nft.json +1 -0
  313. package/.next/server/interception-route-rewrite-manifest.js +1 -0
  314. package/.next/server/middleware-build-manifest.js +1 -0
  315. package/.next/server/middleware-manifest.json +6 -0
  316. package/.next/server/middleware-react-loadable-manifest.js +1 -0
  317. package/.next/server/middleware.js +163 -0
  318. package/.next/server/middleware.js.nft.json +1 -0
  319. package/.next/server/next-font-manifest.js +1 -0
  320. package/.next/server/next-font-manifest.json +1 -0
  321. package/.next/server/pages/404.html +1 -0
  322. package/.next/server/pages/500.html +1 -0
  323. package/.next/server/pages-manifest.json +4 -0
  324. package/.next/server/prefetch-hints.json +53 -0
  325. package/.next/server/server-reference-manifest.js +1 -0
  326. package/.next/server/server-reference-manifest.json +1 -0
  327. package/.next/server/webpack-runtime.js +1 -0
  328. package/.next/static/LjKuOrhAxmaoMmiEKpqEL/_buildManifest.js +1 -0
  329. package/.next/static/LjKuOrhAxmaoMmiEKpqEL/_ssgManifest.js +1 -0
  330. package/.next/static/chunks/103.23142a67b02246a8.js +215 -0
  331. package/.next/static/chunks/1032.12b382a9096ab2a4.js +1 -0
  332. package/.next/static/chunks/1063.775c442bdbeef08b.js +1 -0
  333. package/.next/static/chunks/1278-efae9cc32e883ab7.js +1 -0
  334. package/.next/static/chunks/1327.09252bb80616cc3a.js +1 -0
  335. package/.next/static/chunks/1708.d029f8776e4578de.js +1 -0
  336. package/.next/static/chunks/1781.866132cea8e77cd0.js +1 -0
  337. package/.next/static/chunks/1ba63609.b2ae90f43319a29e.js +153 -0
  338. package/.next/static/chunks/2081.47b6e9391094055f.js +1 -0
  339. package/.next/static/chunks/2181.ba21239d3ac39f81.js +1 -0
  340. package/.next/static/chunks/2258.4defa30121ef44a5.js +1 -0
  341. package/.next/static/chunks/2325.23caf22075e51aa5.js +1 -0
  342. package/.next/static/chunks/2356.523277bb8c6bf72a.js +23 -0
  343. package/.next/static/chunks/2418.b5d9e177e10a686e.js +1 -0
  344. package/.next/static/chunks/2480.cf27ca02e5b19761.js +24 -0
  345. package/.next/static/chunks/2539.c5a4f2fd8e421c70.js +41 -0
  346. package/.next/static/chunks/2619.9431a3f48da8eef4.js +1 -0
  347. package/.next/static/chunks/268.72794ee2773c2060.js +80 -0
  348. package/.next/static/chunks/2695.6f49435bae1e6f33.js +90 -0
  349. package/.next/static/chunks/2703.495a65ed14b2f094.js +36 -0
  350. package/.next/static/chunks/2821.934bcf60fbdc28c6.js +1 -0
  351. package/.next/static/chunks/3251.0dce7a0a0ff67235.js +1 -0
  352. package/.next/static/chunks/3308.be8762955e7155d1.js +73 -0
  353. package/.next/static/chunks/3336.a76f9485fe7cb762.js +1 -0
  354. package/.next/static/chunks/370.8e8f3cf8eb0e29dd.js +1 -0
  355. package/.next/static/chunks/3716.72bf4c9d7325debd.js +1 -0
  356. package/.next/static/chunks/3794-6cecce02b123eb1f.js +52 -0
  357. package/.next/static/chunks/398.ffa02af9062a3950.js +77 -0
  358. package/.next/static/chunks/3995.eca0f5bef1fc3ae5.js +38 -0
  359. package/.next/static/chunks/4004.74b9bcf5478b1663.js +160 -0
  360. package/.next/static/chunks/4202.8440832386f023c7.js +226 -0
  361. package/.next/static/chunks/4238.6f102dcbcf2ae339.js +141 -0
  362. package/.next/static/chunks/4405.7a19458960a1058e.js +287 -0
  363. package/.next/static/chunks/4424.fd0c93a807a333e1.js +1 -0
  364. package/.next/static/chunks/4866.d1060b4faf2ae1e2.js +1 -0
  365. package/.next/static/chunks/4970.8a63b4953b0e4946.js +1 -0
  366. package/.next/static/chunks/4bd1b696-8a4ab4fdf0ae305a.js +1 -0
  367. package/.next/static/chunks/5020.9ac8d0dc8390bb6e.js +1 -0
  368. package/.next/static/chunks/5137.f163e94c74a94d01.js +1 -0
  369. package/.next/static/chunks/5242.7b643c6b3394cac1.js +1 -0
  370. package/.next/static/chunks/5361.afc00ab2626bacbf.js +1 -0
  371. package/.next/static/chunks/5521.cfdf2cfc6db31407.js +1 -0
  372. package/.next/static/chunks/5526.ff46471041fdcb79.js +86 -0
  373. package/.next/static/chunks/5681.dd0e66b0de16e54b.js +27 -0
  374. package/.next/static/chunks/5772-fa9b9cccdc812bf9.js +3 -0
  375. package/.next/static/chunks/6121.eb9023b1cbc78ee2.js +1 -0
  376. package/.next/static/chunks/6161.4836cd7d031026bf.js +1 -0
  377. package/.next/static/chunks/6195.1153369f5f8b13a2.js +24 -0
  378. package/.next/static/chunks/6294.24f510c0c3e3714c.js +1 -0
  379. package/.next/static/chunks/6654.16f727522ec47f5a.js +1 -0
  380. package/.next/static/chunks/6794.f746d8fbbf248ecf.js +93 -0
  381. package/.next/static/chunks/7256.e07cf52d87d40252.js +1 -0
  382. package/.next/static/chunks/7268.236544be8e242c16.js +1 -0
  383. package/.next/static/chunks/7331.2add3c4e125a2dba.js +104 -0
  384. package/.next/static/chunks/7543.89f7b805ed0f2901.js +1 -0
  385. package/.next/static/chunks/8200.a36b9f8c983c6b9e.js +5 -0
  386. package/.next/static/chunks/869.7152372b662e31af.js +1 -0
  387. package/.next/static/chunks/8863.fa0320ea586efb3b.js +1 -0
  388. package/.next/static/chunks/8885.cf60cac98bf8b70c.js +79 -0
  389. package/.next/static/chunks/8901.e117d206a917bda0.js +1 -0
  390. package/.next/static/chunks/90542734.ae439f2382f58c51.js +1 -0
  391. package/.next/static/chunks/918.6a9bbe564e4a2d0f.js +115 -0
  392. package/.next/static/chunks/934.9006461bd0548660.js +1 -0
  393. package/.next/static/chunks/9445-fde6feabcb39142c.js +7 -0
  394. package/.next/static/chunks/9522.c7c6e9c330f9ba6b.js +1 -0
  395. package/.next/static/chunks/9614.3221013d7f0af27f.js +64 -0
  396. package/.next/static/chunks/9698.4d09a99b9d99f3e5.js +148 -0
  397. package/.next/static/chunks/9705.40a82b97f214e28b.js +1 -0
  398. package/.next/static/chunks/973.88e865b52eff479a.js +8 -0
  399. package/.next/static/chunks/9764.2669775c6e107a01.js +62 -0
  400. package/.next/static/chunks/9793.4567af813117ad25.js +1 -0
  401. package/.next/static/chunks/993e5495.8797001fcfcf2889.js +62 -0
  402. package/.next/static/chunks/9974.9a0f79beca65e8c4.js +34 -0
  403. package/.next/static/chunks/app/_global-error/page-de89e25daaacc442.js +1 -0
  404. package/.next/static/chunks/app/_not-found/page-4aac80d225231e36.js +1 -0
  405. package/.next/static/chunks/app/api/agent/[id]/bash-output/route-de89e25daaacc442.js +1 -0
  406. package/.next/static/chunks/app/api/agent/[id]/bg-tasks/[taskId]/kill/route-de89e25daaacc442.js +1 -0
  407. package/.next/static/chunks/app/api/agent/[id]/bg-tasks/[taskId]/logs/route-de89e25daaacc442.js +1 -0
  408. package/.next/static/chunks/app/api/agent/[id]/bg-tasks/route-de89e25daaacc442.js +1 -0
  409. package/.next/static/chunks/app/api/agent/[id]/events/route-de89e25daaacc442.js +1 -0
  410. package/.next/static/chunks/app/api/agent/[id]/lease/route-de89e25daaacc442.js +1 -0
  411. package/.next/static/chunks/app/api/agent/[id]/route-de89e25daaacc442.js +1 -0
  412. package/.next/static/chunks/app/api/agent/new/route-de89e25daaacc442.js +1 -0
  413. package/.next/static/chunks/app/api/agent/running/route-de89e25daaacc442.js +1 -0
  414. package/.next/static/chunks/app/api/app-update/route-de89e25daaacc442.js +1 -0
  415. package/.next/static/chunks/app/api/auth/api-key/[provider]/route-de89e25daaacc442.js +1 -0
  416. package/.next/static/chunks/app/api/auth/login/[provider]/route-de89e25daaacc442.js +1 -0
  417. package/.next/static/chunks/app/api/auth/logout/[provider]/route-de89e25daaacc442.js +1 -0
  418. package/.next/static/chunks/app/api/auth/providers/route-de89e25daaacc442.js +1 -0
  419. package/.next/static/chunks/app/api/cwd/browse/route-de89e25daaacc442.js +1 -0
  420. package/.next/static/chunks/app/api/cwd/validate/route-de89e25daaacc442.js +1 -0
  421. package/.next/static/chunks/app/api/default-cwd/route-de89e25daaacc442.js +1 -0
  422. package/.next/static/chunks/app/api/file-index/route-de89e25daaacc442.js +1 -0
  423. package/.next/static/chunks/app/api/files/[...path]/route-de89e25daaacc442.js +1 -0
  424. package/.next/static/chunks/app/api/git/diff/route-de89e25daaacc442.js +1 -0
  425. package/.next/static/chunks/app/api/git/status/route-de89e25daaacc442.js +1 -0
  426. package/.next/static/chunks/app/api/home/route-de89e25daaacc442.js +1 -0
  427. package/.next/static/chunks/app/api/models/route-de89e25daaacc442.js +1 -0
  428. package/.next/static/chunks/app/api/models-config/catalog/route-de89e25daaacc442.js +1 -0
  429. package/.next/static/chunks/app/api/models-config/discover/route-de89e25daaacc442.js +1 -0
  430. package/.next/static/chunks/app/api/models-config/route-de89e25daaacc442.js +1 -0
  431. package/.next/static/chunks/app/api/models-config/test/route-de89e25daaacc442.js +1 -0
  432. package/.next/static/chunks/app/api/plugins/check/route-de89e25daaacc442.js +1 -0
  433. package/.next/static/chunks/app/api/plugins/route-de89e25daaacc442.js +1 -0
  434. package/.next/static/chunks/app/api/project-trust/route-de89e25daaacc442.js +1 -0
  435. package/.next/static/chunks/app/api/provider-usage/query/route-de89e25daaacc442.js +1 -0
  436. package/.next/static/chunks/app/api/push/config/route-de89e25daaacc442.js +1 -0
  437. package/.next/static/chunks/app/api/push/subscribe/route-de89e25daaacc442.js +1 -0
  438. package/.next/static/chunks/app/api/sessions/[id]/auto-name/route-de89e25daaacc442.js +1 -0
  439. package/.next/static/chunks/app/api/sessions/[id]/context/route-de89e25daaacc442.js +1 -0
  440. package/.next/static/chunks/app/api/sessions/[id]/entries/[entryId]/thinking/route-de89e25daaacc442.js +1 -0
  441. package/.next/static/chunks/app/api/sessions/[id]/entries/[entryId]/tool-result-image/route-de89e25daaacc442.js +1 -0
  442. package/.next/static/chunks/app/api/sessions/[id]/export/route-de89e25daaacc442.js +1 -0
  443. package/.next/static/chunks/app/api/sessions/[id]/route-de89e25daaacc442.js +1 -0
  444. package/.next/static/chunks/app/api/sessions/[id]/state/route-de89e25daaacc442.js +1 -0
  445. package/.next/static/chunks/app/api/sessions/route-de89e25daaacc442.js +1 -0
  446. package/.next/static/chunks/app/api/sessions/search/route-de89e25daaacc442.js +1 -0
  447. package/.next/static/chunks/app/api/skills/check/route-de89e25daaacc442.js +1 -0
  448. package/.next/static/chunks/app/api/skills/install/route-de89e25daaacc442.js +1 -0
  449. package/.next/static/chunks/app/api/skills/route-de89e25daaacc442.js +1 -0
  450. package/.next/static/chunks/app/api/skills/search/route-de89e25daaacc442.js +1 -0
  451. package/.next/static/chunks/app/api/skills/update/route-de89e25daaacc442.js +1 -0
  452. package/.next/static/chunks/app/api/subagents/[id]/route-de89e25daaacc442.js +1 -0
  453. package/.next/static/chunks/app/api/subagents/profiles/route-de89e25daaacc442.js +1 -0
  454. package/.next/static/chunks/app/api/subagents/settings/route-de89e25daaacc442.js +1 -0
  455. package/.next/static/chunks/app/api/terminal/[id]/events/route-de89e25daaacc442.js +1 -0
  456. package/.next/static/chunks/app/api/terminal/[id]/route-de89e25daaacc442.js +1 -0
  457. package/.next/static/chunks/app/api/terminal/route-de89e25daaacc442.js +1 -0
  458. package/.next/static/chunks/app/api/tools/settings/route-de89e25daaacc442.js +1 -0
  459. package/.next/static/chunks/app/api/web-auth/route-de89e25daaacc442.js +1 -0
  460. package/.next/static/chunks/app/api/worktrees/route-de89e25daaacc442.js +1 -0
  461. package/.next/static/chunks/app/layout-a6caf92e84e665d2.js +1 -0
  462. package/.next/static/chunks/app/login/page-815e8450466affea.js +1 -0
  463. package/.next/static/chunks/app/manifest.webmanifest/route-de89e25daaacc442.js +1 -0
  464. package/.next/static/chunks/app/page-9c67870933d9ca8a.js +283 -0
  465. package/.next/static/chunks/bf2ff291.3a109dffc1fe84af.js +122 -0
  466. package/.next/static/chunks/d3ac728e-7964f816a1ca64e5.js +1 -0
  467. package/.next/static/chunks/da12927c.476aa688a637649c.js +82 -0
  468. package/.next/static/chunks/db9d41be.e72ce090a86a3691.js +1 -0
  469. package/.next/static/chunks/e868780c-1584512c612787d7.js +18 -0
  470. package/.next/static/chunks/framework-b33a8f5d57cd8d87.js +1 -0
  471. package/.next/static/chunks/main-app-14e4d7eee2133f9d.js +1 -0
  472. package/.next/static/chunks/main-dfacbb9b8661e871.js +5 -0
  473. package/.next/static/chunks/next/dist/client/components/builtin/app-error-de89e25daaacc442.js +1 -0
  474. package/.next/static/chunks/next/dist/client/components/builtin/forbidden-de89e25daaacc442.js +1 -0
  475. package/.next/static/chunks/next/dist/client/components/builtin/global-error-eeb75bb921471360.js +1 -0
  476. package/.next/static/chunks/next/dist/client/components/builtin/not-found-de89e25daaacc442.js +1 -0
  477. package/.next/static/chunks/next/dist/client/components/builtin/unauthorized-de89e25daaacc442.js +1 -0
  478. package/.next/static/chunks/polyfills-42372ed130431b0a.js +1 -0
  479. package/.next/static/chunks/webpack-1b16208bb4ccd9c1.js +1 -0
  480. package/.next/static/css/4cbedad236d913cb.css +1 -0
  481. package/.next/static/css/88714c00e109ce28.css +1 -0
  482. package/.next/static/css/99d403e3f3e28297.css +1 -0
  483. package/.next/static/css/bb9361c7f832a89d.css +1 -0
  484. package/.next/static/media/15605e25b523335c-s.woff2 +0 -0
  485. package/.next/static/media/1a3dce5cfb5f7760-s.woff2 +0 -0
  486. package/.next/static/media/1cdd02902f937a18-s.woff2 +0 -0
  487. package/.next/static/media/4c4b3b30b6bcb2be-s.woff2 +0 -0
  488. package/.next/static/media/641a7b8a5800ee0e-s.woff2 +0 -0
  489. package/.next/static/media/7deddc85b7ffd1dc-s.p.woff2 +0 -0
  490. package/.next/static/media/KaTeX_AMS-Regular.1608a09b.woff +0 -0
  491. package/.next/static/media/KaTeX_AMS-Regular.4aafdb68.ttf +0 -0
  492. package/.next/static/media/KaTeX_AMS-Regular.a79f1c31.woff2 +0 -0
  493. package/.next/static/media/KaTeX_Caligraphic-Bold.b6770918.woff +0 -0
  494. package/.next/static/media/KaTeX_Caligraphic-Bold.cce5b8ec.ttf +0 -0
  495. package/.next/static/media/KaTeX_Caligraphic-Bold.ec17d132.woff2 +0 -0
  496. package/.next/static/media/KaTeX_Caligraphic-Regular.07ef19e7.ttf +0 -0
  497. package/.next/static/media/KaTeX_Caligraphic-Regular.55fac258.woff2 +0 -0
  498. package/.next/static/media/KaTeX_Caligraphic-Regular.dad44a7f.woff +0 -0
  499. package/.next/static/media/KaTeX_Fraktur-Bold.9f256b85.woff +0 -0
  500. package/.next/static/media/KaTeX_Fraktur-Bold.b18f59e1.ttf +0 -0
  501. package/.next/static/media/KaTeX_Fraktur-Bold.d42a5579.woff2 +0 -0
  502. package/.next/static/media/KaTeX_Fraktur-Regular.7c187121.woff +0 -0
  503. package/.next/static/media/KaTeX_Fraktur-Regular.d3c882a6.woff2 +0 -0
  504. package/.next/static/media/KaTeX_Fraktur-Regular.ed38e79f.ttf +0 -0
  505. package/.next/static/media/KaTeX_Main-Bold.b74a1a8b.ttf +0 -0
  506. package/.next/static/media/KaTeX_Main-Bold.c3fb5ac2.woff2 +0 -0
  507. package/.next/static/media/KaTeX_Main-Bold.d181c465.woff +0 -0
  508. package/.next/static/media/KaTeX_Main-BoldItalic.6f2bb1df.woff2 +0 -0
  509. package/.next/static/media/KaTeX_Main-BoldItalic.70d8b0a5.ttf +0 -0
  510. package/.next/static/media/KaTeX_Main-BoldItalic.e3f82f9d.woff +0 -0
  511. package/.next/static/media/KaTeX_Main-Italic.47373d1e.ttf +0 -0
  512. package/.next/static/media/KaTeX_Main-Italic.8916142b.woff2 +0 -0
  513. package/.next/static/media/KaTeX_Main-Italic.9024d815.woff +0 -0
  514. package/.next/static/media/KaTeX_Main-Regular.0462f03b.woff2 +0 -0
  515. package/.next/static/media/KaTeX_Main-Regular.7f51fe03.woff +0 -0
  516. package/.next/static/media/KaTeX_Main-Regular.b7f8fe9b.ttf +0 -0
  517. package/.next/static/media/KaTeX_Math-BoldItalic.572d331f.woff2 +0 -0
  518. package/.next/static/media/KaTeX_Math-BoldItalic.a879cf83.ttf +0 -0
  519. package/.next/static/media/KaTeX_Math-BoldItalic.f1035d8d.woff +0 -0
  520. package/.next/static/media/KaTeX_Math-Italic.5295ba48.woff +0 -0
  521. package/.next/static/media/KaTeX_Math-Italic.939bc644.ttf +0 -0
  522. package/.next/static/media/KaTeX_Math-Italic.f28c23ac.woff2 +0 -0
  523. package/.next/static/media/KaTeX_SansSerif-Bold.8c5b5494.woff2 +0 -0
  524. package/.next/static/media/KaTeX_SansSerif-Bold.94e1e8dc.ttf +0 -0
  525. package/.next/static/media/KaTeX_SansSerif-Bold.bf59d231.woff +0 -0
  526. package/.next/static/media/KaTeX_SansSerif-Italic.3b1e59b3.woff2 +0 -0
  527. package/.next/static/media/KaTeX_SansSerif-Italic.7c9bc82b.woff +0 -0
  528. package/.next/static/media/KaTeX_SansSerif-Italic.b4c20c84.ttf +0 -0
  529. package/.next/static/media/KaTeX_SansSerif-Regular.74048478.woff +0 -0
  530. package/.next/static/media/KaTeX_SansSerif-Regular.ba21ed5f.woff2 +0 -0
  531. package/.next/static/media/KaTeX_SansSerif-Regular.d4d7ba48.ttf +0 -0
  532. package/.next/static/media/KaTeX_Script-Regular.03e9641d.woff2 +0 -0
  533. package/.next/static/media/KaTeX_Script-Regular.07505710.woff +0 -0
  534. package/.next/static/media/KaTeX_Script-Regular.fe9cbbe1.ttf +0 -0
  535. package/.next/static/media/KaTeX_Size1-Regular.e1e279cb.woff +0 -0
  536. package/.next/static/media/KaTeX_Size1-Regular.eae34984.woff2 +0 -0
  537. package/.next/static/media/KaTeX_Size1-Regular.fabc004a.ttf +0 -0
  538. package/.next/static/media/KaTeX_Size2-Regular.57727022.woff +0 -0
  539. package/.next/static/media/KaTeX_Size2-Regular.5916a24f.woff2 +0 -0
  540. package/.next/static/media/KaTeX_Size2-Regular.d6b476ec.ttf +0 -0
  541. package/.next/static/media/KaTeX_Size3-Regular.9acaf01c.woff +0 -0
  542. package/.next/static/media/KaTeX_Size3-Regular.a144ef58.ttf +0 -0
  543. package/.next/static/media/KaTeX_Size3-Regular.b4230e7e.woff2 +0 -0
  544. package/.next/static/media/KaTeX_Size4-Regular.10d95fd3.woff2 +0 -0
  545. package/.next/static/media/KaTeX_Size4-Regular.7a996c9d.woff +0 -0
  546. package/.next/static/media/KaTeX_Size4-Regular.fbccdabe.ttf +0 -0
  547. package/.next/static/media/KaTeX_Typewriter-Regular.6258592b.woff +0 -0
  548. package/.next/static/media/KaTeX_Typewriter-Regular.a8709e36.woff2 +0 -0
  549. package/.next/static/media/KaTeX_Typewriter-Regular.d97aaf4a.ttf +0 -0
  550. package/.next/static/media/ec14413c594b3356-s.p.woff2 +0 -0
  551. package/.next/trace +40 -0
  552. package/.next/trace-build +1 -0
  553. package/.next/types/app/api/agent/[id]/bash-output/route.ts +353 -0
  554. package/.next/types/app/api/agent/[id]/bg-tasks/[taskId]/kill/route.ts +353 -0
  555. package/.next/types/app/api/agent/[id]/bg-tasks/[taskId]/logs/route.ts +353 -0
  556. package/.next/types/app/api/agent/[id]/bg-tasks/route.ts +353 -0
  557. package/.next/types/app/api/agent/[id]/events/route.ts +353 -0
  558. package/.next/types/app/api/agent/[id]/lease/route.ts +353 -0
  559. package/.next/types/app/api/agent/[id]/route.ts +353 -0
  560. package/.next/types/app/api/agent/new/route.ts +353 -0
  561. package/.next/types/app/api/agent/running/route.ts +353 -0
  562. package/.next/types/app/api/app-update/route.ts +353 -0
  563. package/.next/types/app/api/auth/api-key/[provider]/route.ts +353 -0
  564. package/.next/types/app/api/auth/login/[provider]/route.ts +353 -0
  565. package/.next/types/app/api/auth/logout/[provider]/route.ts +353 -0
  566. package/.next/types/app/api/auth/providers/route.ts +353 -0
  567. package/.next/types/app/api/cwd/browse/route.ts +353 -0
  568. package/.next/types/app/api/cwd/validate/route.ts +353 -0
  569. package/.next/types/app/api/default-cwd/route.ts +353 -0
  570. package/.next/types/app/api/file-index/route.ts +353 -0
  571. package/.next/types/app/api/files/[...path]/route.ts +353 -0
  572. package/.next/types/app/api/git/diff/route.ts +353 -0
  573. package/.next/types/app/api/git/status/route.ts +353 -0
  574. package/.next/types/app/api/home/route.ts +353 -0
  575. package/.next/types/app/api/models/route.ts +353 -0
  576. package/.next/types/app/api/models-config/catalog/route.ts +353 -0
  577. package/.next/types/app/api/models-config/discover/route.ts +353 -0
  578. package/.next/types/app/api/models-config/route.ts +353 -0
  579. package/.next/types/app/api/models-config/test/route.ts +353 -0
  580. package/.next/types/app/api/plugins/check/route.ts +353 -0
  581. package/.next/types/app/api/plugins/route.ts +353 -0
  582. package/.next/types/app/api/project-trust/route.ts +353 -0
  583. package/.next/types/app/api/provider-usage/query/route.ts +353 -0
  584. package/.next/types/app/api/push/config/route.ts +353 -0
  585. package/.next/types/app/api/push/subscribe/route.ts +353 -0
  586. package/.next/types/app/api/sessions/[id]/auto-name/route.ts +353 -0
  587. package/.next/types/app/api/sessions/[id]/context/route.ts +353 -0
  588. package/.next/types/app/api/sessions/[id]/entries/[entryId]/thinking/route.ts +353 -0
  589. package/.next/types/app/api/sessions/[id]/entries/[entryId]/tool-result-image/route.ts +353 -0
  590. package/.next/types/app/api/sessions/[id]/export/route.ts +353 -0
  591. package/.next/types/app/api/sessions/[id]/route.ts +353 -0
  592. package/.next/types/app/api/sessions/[id]/state/route.ts +353 -0
  593. package/.next/types/app/api/sessions/route.ts +353 -0
  594. package/.next/types/app/api/sessions/search/route.ts +353 -0
  595. package/.next/types/app/api/skills/check/route.ts +353 -0
  596. package/.next/types/app/api/skills/install/route.ts +353 -0
  597. package/.next/types/app/api/skills/route.ts +353 -0
  598. package/.next/types/app/api/skills/search/route.ts +353 -0
  599. package/.next/types/app/api/skills/update/route.ts +353 -0
  600. package/.next/types/app/api/subagents/[id]/route.ts +353 -0
  601. package/.next/types/app/api/subagents/profiles/route.ts +353 -0
  602. package/.next/types/app/api/subagents/settings/route.ts +353 -0
  603. package/.next/types/app/api/terminal/[id]/events/route.ts +353 -0
  604. package/.next/types/app/api/terminal/[id]/route.ts +353 -0
  605. package/.next/types/app/api/terminal/route.ts +353 -0
  606. package/.next/types/app/api/tools/settings/route.ts +353 -0
  607. package/.next/types/app/api/web-auth/route.ts +353 -0
  608. package/.next/types/app/api/worktrees/route.ts +353 -0
  609. package/.next/types/app/layout.ts +89 -0
  610. package/.next/types/app/login/page.ts +89 -0
  611. package/.next/types/app/page.ts +89 -0
  612. package/.next/types/cache-life.d.ts +146 -0
  613. package/.next/types/package.json +1 -0
  614. package/.next/types/root-params.d.ts +3 -0
  615. package/.next/types/routes.d.ts +129 -0
  616. package/.next/types/validator.ts +583 -0
  617. package/LICENSE +21 -0
  618. package/README.ja.md +134 -0
  619. package/README.md +216 -0
  620. package/README.ru.md +134 -0
  621. package/README.zh-CN.md +136 -0
  622. package/bin/node-version.js +35 -0
  623. package/bin/pi-web-options.js +89 -0
  624. package/bin/pi-web.js +132 -0
  625. package/bin/prepare-terminal.js +14 -0
  626. package/bin/process-lifecycle.js +81 -0
  627. package/next.config.ts +82 -0
  628. package/package.json +90 -0
  629. package/public/icons/apple-touch-icon.png +0 -0
  630. package/public/icons/catppuccin/LICENSE +22 -0
  631. package/public/icons/catppuccin/README.md +10 -0
  632. package/public/icons/catppuccin/latte/_file.svg +3 -0
  633. package/public/icons/catppuccin/latte/_folder.svg +3 -0
  634. package/public/icons/catppuccin/latte/_folder_open.svg +3 -0
  635. package/public/icons/catppuccin/latte/bash.svg +7 -0
  636. package/public/icons/catppuccin/latte/bun-lock.svg +8 -0
  637. package/public/icons/catppuccin/latte/config.svg +3 -0
  638. package/public/icons/catppuccin/latte/css.svg +6 -0
  639. package/public/icons/catppuccin/latte/database.svg +3 -0
  640. package/public/icons/catppuccin/latte/docker.svg +3 -0
  641. package/public/icons/catppuccin/latte/env.svg +3 -0
  642. package/public/icons/catppuccin/latte/eslint.svg +6 -0
  643. package/public/icons/catppuccin/latte/git.svg +6 -0
  644. package/public/icons/catppuccin/latte/go.svg +3 -0
  645. package/public/icons/catppuccin/latte/graphql.svg +3 -0
  646. package/public/icons/catppuccin/latte/html.svg +6 -0
  647. package/public/icons/catppuccin/latte/javascript-react.svg +8 -0
  648. package/public/icons/catppuccin/latte/javascript.svg +6 -0
  649. package/public/icons/catppuccin/latte/json.svg +3 -0
  650. package/public/icons/catppuccin/latte/lock.svg +3 -0
  651. package/public/icons/catppuccin/latte/markdown.svg +3 -0
  652. package/public/icons/catppuccin/latte/ms-word.svg +6 -0
  653. package/public/icons/catppuccin/latte/next.svg +6 -0
  654. package/public/icons/catppuccin/latte/npm-lock.svg +7 -0
  655. package/public/icons/catppuccin/latte/pdf.svg +3 -0
  656. package/public/icons/catppuccin/latte/python.svg +8 -0
  657. package/public/icons/catppuccin/latte/rust.svg +6 -0
  658. package/public/icons/catppuccin/latte/sass.svg +3 -0
  659. package/public/icons/catppuccin/latte/terraform.svg +3 -0
  660. package/public/icons/catppuccin/latte/toml.svg +3 -0
  661. package/public/icons/catppuccin/latte/typescript-react.svg +8 -0
  662. package/public/icons/catppuccin/latte/typescript.svg +6 -0
  663. package/public/icons/catppuccin/latte/yaml.svg +3 -0
  664. package/public/icons/catppuccin/mocha/_file.svg +3 -0
  665. package/public/icons/catppuccin/mocha/_folder.svg +3 -0
  666. package/public/icons/catppuccin/mocha/_folder_open.svg +3 -0
  667. package/public/icons/catppuccin/mocha/bash.svg +7 -0
  668. package/public/icons/catppuccin/mocha/bun-lock.svg +8 -0
  669. package/public/icons/catppuccin/mocha/config.svg +3 -0
  670. package/public/icons/catppuccin/mocha/css.svg +6 -0
  671. package/public/icons/catppuccin/mocha/database.svg +3 -0
  672. package/public/icons/catppuccin/mocha/docker.svg +3 -0
  673. package/public/icons/catppuccin/mocha/env.svg +3 -0
  674. package/public/icons/catppuccin/mocha/eslint.svg +6 -0
  675. package/public/icons/catppuccin/mocha/git.svg +6 -0
  676. package/public/icons/catppuccin/mocha/go.svg +3 -0
  677. package/public/icons/catppuccin/mocha/graphql.svg +3 -0
  678. package/public/icons/catppuccin/mocha/html.svg +6 -0
  679. package/public/icons/catppuccin/mocha/javascript-react.svg +8 -0
  680. package/public/icons/catppuccin/mocha/javascript.svg +6 -0
  681. package/public/icons/catppuccin/mocha/json.svg +3 -0
  682. package/public/icons/catppuccin/mocha/lock.svg +3 -0
  683. package/public/icons/catppuccin/mocha/markdown.svg +3 -0
  684. package/public/icons/catppuccin/mocha/ms-word.svg +6 -0
  685. package/public/icons/catppuccin/mocha/next.svg +6 -0
  686. package/public/icons/catppuccin/mocha/npm-lock.svg +7 -0
  687. package/public/icons/catppuccin/mocha/pdf.svg +3 -0
  688. package/public/icons/catppuccin/mocha/python.svg +8 -0
  689. package/public/icons/catppuccin/mocha/rust.svg +6 -0
  690. package/public/icons/catppuccin/mocha/sass.svg +3 -0
  691. package/public/icons/catppuccin/mocha/terraform.svg +3 -0
  692. package/public/icons/catppuccin/mocha/toml.svg +3 -0
  693. package/public/icons/catppuccin/mocha/typescript-react.svg +8 -0
  694. package/public/icons/catppuccin/mocha/typescript.svg +6 -0
  695. package/public/icons/catppuccin/mocha/yaml.svg +3 -0
  696. package/public/icons/icon-192.png +0 -0
  697. package/public/icons/icon-512.png +0 -0
  698. package/public/offline.html +83 -0
  699. package/public/provider-icons.svg +54 -0
  700. package/public/sw.js +143 -0
  701. package/public/sw.test.mjs +141 -0
package/README.ja.md ADDED
@@ -0,0 +1,134 @@
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 @silgrid/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 @silgrid/pi-web@latest
34
+ pi-web
35
+ ```
36
+
37
+ 更新時は、実行中のプロセスを `Ctrl+C` で停止してから同じインストールコマンドを再実行します。アンインストールするには `npm uninstall -g @silgrid/pi-web` を実行します。
38
+
39
+ ## 設定
40
+
41
+ ポートとホスト名では、コマンドラインオプションが対応する環境変数より優先されます。`--no-open` と `PI_WEB_NO_OPEN=1` は、どちらを指定してもブラウザーの自動起動が無効になります。`pi-web --help`(または `-h`)で起動オプションを表示して終了します。未知のオプションはエラーで終了します。
42
+
43
+ | オプションまたは環境変数 | 用途 | デフォルト |
44
+ | --- | --- | --- |
45
+ | `--help`、`-h` | 起動オプションを表示して終了 | — |
46
+ | `--port <port>`、`-p <port>`、または `PORT` | サーバーポート | `30141` |
47
+ | `--hostname <host>`、`-H <host>`、または `PI_WEB_HOSTNAME` | バインドするホスト名 | `127.0.0.1` |
48
+ | `--no-open` または `PI_WEB_NO_OPEN=1` | ブラウザーを自動的に開かない | 自動的に開く |
49
+ | `PI_WEB_ALLOWED_HOSTS` | 追加で許可するプロキシまたはカスタムホスト名。複数指定はカンマ区切りで完全一致 | 未設定 |
50
+ | `PI_WEB_PASSWORD` | ブラウザーのパスワードログインを有効化。API はユーザー名 `pi` の Basic Auth も利用可能 | 認証なし |
51
+
52
+ 例:
53
+
54
+ ```bash
55
+ pi-web --help
56
+ pi-web -p 8080 -H 0.0.0.0 --no-open
57
+ ```
58
+
59
+ ### リモートアクセス
60
+
61
+ ループバック以外のアドレスにバインドすると、高い権限の操作を実行できるエージェントがネットワークに公開されます。信頼できる LAN で使用する場合も、十分に長いランダムなパスワードを設定してください:
62
+
63
+ ```bash
64
+ PI_WEB_PASSWORD='十分に長いランダムなパスワード' pi-web --hostname 0.0.0.0
65
+ ```
66
+
67
+ パスワード認証は接続を暗号化しません。平文 HTTP で Pi Web をインターネットに公開せず、信頼できるリバースプロキシによる HTTPS または信頼できる VPN を使用してください。リバースプロキシが外部ホスト名を転送する場合は、その名前を完全一致で `PI_WEB_ALLOWED_HOSTS` に追加します。この許可リストは Pi Web のバインド先を変更しません。
68
+
69
+ ### HTTP プロキシ
70
+
71
+ サーバー側のモデルリクエストと API リクエストは、標準の `HTTP_PROXY`、`HTTPS_PROXY`、`NO_PROXY` 環境変数を使用します。
72
+
73
+ macOS または Linux:
74
+
75
+ ```bash
76
+ HTTP_PROXY=http://127.0.0.1:7890 \
77
+ HTTPS_PROXY=http://127.0.0.1:7890 \
78
+ NO_PROXY=localhost,127.0.0.1 \
79
+ npx @silgrid/pi-web@latest
80
+ ```
81
+
82
+ Windows PowerShell:
83
+
84
+ ```powershell
85
+ $env:HTTP_PROXY = "http://127.0.0.1:7890"
86
+ $env:HTTPS_PROXY = "http://127.0.0.1:7890"
87
+ $env:NO_PROXY = "localhost,127.0.0.1"
88
+ npx @silgrid/pi-web@latest
89
+ ```
90
+
91
+ ## 注意事項
92
+
93
+ - **エージェントデータ**:Pi Web はデフォルトで `~/.pi/agent` の pi データを読み込みます。セッションファイルは `sessions/<encoded-cwd>/<timestamp>_<uuid>.jsonl` にあります。別の pi エージェントディレクトリを使用するには `PI_CODING_AGENT_DIR` を設定してください。
94
+ - **ファイルシステムへのアクセス**:Pi Web はエージェントデータディレクトリと、セッションに記録された作業ディレクトリを読み取れる必要があります。既存の pi セッションを共有する場合は、pi と同じファイルシステム環境で Pi Web を実行してください。
95
+ - **共有設定**:Models パネルは pi のモデル、設定、認証情報ストレージを使用するため、変更は両方のインターフェースに反映されます。
96
+ - **ファイルアクセスの範囲**:ファイルブラウザーは、Pi Web で選択した作業ディレクトリと、既知のプロジェクトまたはセッションルートに限定されます。汎用のファイルシステムブラウザーではありません。
97
+ - **Git worktree**:スイッチャーの表示条件、worktree の作成、削除時の動作については [Worktrees in Pi Web](./docs/worktrees.md) を参照してください。
98
+
99
+ ## 開発
100
+
101
+ ```bash
102
+ npm install
103
+ npm run dev
104
+ ```
105
+
106
+ 開発サーバーは [http://127.0.0.1:30141](http://127.0.0.1:30141) で動作します。一般的なチェックは次のコマンドで実行します:
107
+
108
+ ```bash
109
+ npm test
110
+ node_modules/.bin/tsc --noEmit
111
+ npm run lint
112
+ ```
113
+
114
+ 通常の開発中は `next build` または `npm run build` を実行しないでください。`.next/` に書き込まれ、開発サーバーに影響する可能性があります。ビルドはリリース作業時にのみ実行してください。
115
+
116
+ コントリビューター向けガイド:[Internationalization](./docs/i18n.md) と [Release process](./docs/release.md)。
117
+
118
+ ## リポジトリ構成
119
+
120
+ ```text
121
+ app/ Next.js UI と API ルート
122
+ components/ React UI コンポーネント
123
+ hooks/ クライアントの状態と操作に関する hooks
124
+ lib/ セッション、エージェント、モデル、ファイル、Git、セキュリティのロジック
125
+ public/ 静的アセットと PWA ファイル
126
+ bin/ npm CLI エントリポイントと起動オプションの解析
127
+ docs/ ユーザーおよびコントリビューター向けの個別ガイド
128
+ ```
129
+
130
+ アーキテクチャの説明と詳細なファイルマップについては [AGENTS.md](./AGENTS.md) を参照してください。
131
+
132
+ ## ライセンス
133
+
134
+ [MIT](./LICENSE)
package/README.md ADDED
@@ -0,0 +1,216 @@
1
+ # Pi Web
2
+
3
+ [中文文档](./README.zh-CN.md) | [日本語](./README.ja.md) | [Русский](./README.ru.md)
4
+
5
+ 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.
6
+
7
+ This is the **@silgrid/pi-web** fork of [agegr/pi-web](https://github.com/agegr/pi-web), adding split-pane chat and background task panels. The fork keeps its own version line (`0.0.x`) and never reuses upstream version numbers.
8
+
9
+ ## Fork baseline
10
+
11
+ | Fork version | Upstream version | Upstream commit |
12
+ |---|---|---|
13
+ | 0.0.1 | 0.9.1 | `ffb2daf` |
14
+
15
+ Update one row per upstream merge so the table stays the mapping between the fork line and the upstream baseline.
16
+
17
+ ![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)
18
+
19
+ ## Features
20
+
21
+ - **Session workspace**: browse, resume, rename, export, and delete conversations grouped by project, with running state, context usage, cost, and compaction details.
22
+ - **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.
23
+ - **Project file tools**: browse and upload files, inspect Git diffs, and preview source, Markdown, images, audio, PDFs, and DOCX files with automatic refresh.
24
+ - **Git worktrees**: switch checkouts from the sidebar while keeping sessions from the same repository grouped together.
25
+ - **Web-based configuration**: manage provider login and API keys, models, model tests, plugin packages, and skills without leaving Pi Web.
26
+ - **English, Simplified Chinese, and Traditional Chinese UI**: Pi Web follows the browser language initially and provides a language switcher in the top bar.
27
+
28
+ ## Quick Start
29
+
30
+ Pi Web requires Node.js 22.19.0 or newer. Check your version with `node --version`, then run:
31
+
32
+ ```bash
33
+ npx @silgrid/pi-web@latest
34
+ ```
35
+
36
+ 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.
37
+
38
+ If no model provider is configured yet, open the **Models** panel to sign in or add an API key.
39
+
40
+ To install the `pi-web` command globally:
41
+
42
+ ```bash
43
+ npm install -g @silgrid/pi-web@latest
44
+ pi-web
45
+ ```
46
+
47
+ To update, stop the running process with `Ctrl+C` and run the same install command again. To uninstall, run `npm uninstall -g @silgrid/pi-web`.
48
+
49
+ ## Deployment (container autostart)
50
+
51
+ This fork ships a deployment script for containers without systemd:
52
+
53
+ ```bash
54
+ ./deploy-piweb.sh # npm i -g @silgrid/pi-web@latest, then restart the tmux service
55
+ ```
56
+
57
+ The script installs the latest published package globally and (re)starts pi-web
58
+ in a detached `tmux` session (`piweb`) with a restart loop. `PI_WEB_IDLE_TIMEOUT_MS=0`
59
+ is required for unattended runs: by default pi-web exits after 10 idle minutes,
60
+ which looks like the process "self-exits" when run as a background service.
61
+
62
+ For container entrypoint autostart, create the tmux session at container start
63
+ (e.g. from an entrypoint script or shell rc):
64
+
65
+ ```bash
66
+ tmux new-session -d -s piweb 'PI_WEB_IDLE_TIMEOUT_MS=0 pi-web'
67
+ ```
68
+
69
+ Override the session name with `PIWEB_TMUX_SESSION`; attach with `tmux attach -t piweb`.
70
+
71
+ ## Configuration
72
+
73
+ 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. Run `pi-web --help` (or `-h`) to print startup options and exit without starting the server. Unknown options exit with an error.
74
+
75
+ | Option or environment variable | Purpose | Default |
76
+ | --- | --- | --- |
77
+ | `--help`, `-h` | Print startup options and exit | — |
78
+ | `--port <port>`, `-p <port>`, or `PORT` | Server port | `30141` |
79
+ | `--hostname <host>`, `-H <host>`, or `PI_WEB_HOSTNAME` | Bind hostname | `127.0.0.1` |
80
+ | `--no-open` or `PI_WEB_NO_OPEN=1` | Do not open a browser automatically | Browser opens |
81
+ | `PI_WEB_SKIP_VERSION_CHECK=1` | Disable Pi Web update checks | Unset |
82
+ | `PI_WEB_ALLOWED_HOSTS` | Additional exact proxy or custom hostnames, comma-separated | Unset |
83
+ | `PI_WEB_PASSWORD` | Enable browser password login; API clients may use Basic Auth with username `pi` | Authentication disabled |
84
+ | `PI_WEB_IDLE_TIMEOUT_MS` | Session idle timeout in milliseconds, up to `2147483647`; `0` disables idle shutdown; invalid or out-of-range values use the default | `600000` (10 min) |
85
+
86
+ For example:
87
+
88
+ ```bash
89
+ pi-web --help
90
+ pi-web -p 8080 -H 0.0.0.0 --no-open
91
+ ```
92
+
93
+ ### Remote Access
94
+
95
+ Binding to a non-loopback address exposes an agent that can execute high-privilege actions. On a trusted LAN, require a long random password:
96
+
97
+ ```bash
98
+ PI_WEB_PASSWORD='a-long-random-password' pi-web --hostname 0.0.0.0
99
+ ```
100
+
101
+ Password authentication does not encrypt the connection. 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.
102
+
103
+ ### HTTP Proxy
104
+
105
+ Server-side model and API requests honor the standard `HTTP_PROXY`, `HTTPS_PROXY`, and `NO_PROXY` environment variables.
106
+
107
+ On macOS or Linux:
108
+
109
+ ```bash
110
+ HTTP_PROXY=http://127.0.0.1:7890 \
111
+ HTTPS_PROXY=http://127.0.0.1:7890 \
112
+ NO_PROXY=localhost,127.0.0.1 \
113
+ npx @silgrid/pi-web@latest
114
+ ```
115
+
116
+ On Windows PowerShell:
117
+
118
+ ```powershell
119
+ $env:HTTP_PROXY = "http://127.0.0.1:7890"
120
+ $env:HTTPS_PROXY = "http://127.0.0.1:7890"
121
+ $env:NO_PROXY = "localhost,127.0.0.1"
122
+ npx @silgrid/pi-web@latest
123
+ ```
124
+
125
+ ## Notes
126
+
127
+ - **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.
128
+ - **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.
129
+ - **Shared configuration**: the Models panel uses pi's model, settings, and credential storage, so changes are visible to both interfaces.
130
+ - **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.
131
+ - **Git worktrees**: see [Worktrees in Pi Web](./docs/worktrees.md) for switcher visibility, worktree creation, and removal behavior.
132
+
133
+ ### Downstream Session Context Menu
134
+
135
+ Electron wrappers and other downstream integrations can provide a session-row
136
+ context menu without patching `SessionSidebar`. Listen for the cancelable
137
+ `pi-web:session-row-contextmenu` browser event and call `preventDefault()`
138
+ synchronously when the integration will handle it:
139
+
140
+ ```js
141
+ window.addEventListener("pi-web:session-row-contextmenu", (event) => {
142
+ event.preventDefault();
143
+ const { id, path, cwd, name, clientX, clientY, refresh } = event.detail;
144
+
145
+ void openSessionMenu({ id, path, cwd, name, clientX, clientY }).then((changed) => {
146
+ if (changed) refresh();
147
+ });
148
+ });
149
+ ```
150
+
151
+ The detail object contains `id`, `path`, `cwd`, optional `name`, pointer
152
+ coordinates, and a `refresh()` callback for actions that change the session
153
+ list. If no listener cancels the extension event, Pi Web preserves the
154
+ browser's native context menu. This hook is browser-side and independent of
155
+ Pi agent extensions.
156
+
157
+ ### Extension Session Liveness
158
+
159
+ Server-side Pi extensions with detached work can prevent automatic idle
160
+ session eviction through the versioned global registry:
161
+
162
+ ```js
163
+ const liveness = globalThis[Symbol.for("@agegr/pi-web/session-liveness/v1")];
164
+ const release = liveness?.version === 1
165
+ ? liveness.register({
166
+ name: "my-extension",
167
+ sessionId,
168
+ sessionFile: sessionFile || undefined,
169
+ isActive: () => detachedJobs.size > 0,
170
+ })
171
+ : () => {};
172
+ ```
173
+
174
+ Register once per active extension session and call the returned idempotent
175
+ `release` function on session shutdown, replacement, or reload. `isActive`
176
+ must be synchronous, cheap, and scoped to the supplied exact session id or
177
+ file. Provider errors fail safe by preserving that session. This lease only
178
+ affects automatic idle eviction; explicit shutdown and Stop fallback cleanup
179
+ still take precedence.
180
+
181
+ ## Development
182
+
183
+ ```bash
184
+ npm install
185
+ npm run dev
186
+ ```
187
+
188
+ The development server runs at [http://127.0.0.1:30141](http://127.0.0.1:30141). Run the common checks with:
189
+
190
+ ```bash
191
+ npm test
192
+ node_modules/.bin/tsc --noEmit
193
+ npm run lint
194
+ ```
195
+
196
+ 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.
197
+
198
+ Contributor guides: [Internationalization](./docs/i18n.md) and [Release process](./docs/release.md).
199
+
200
+ ## Repository Layout
201
+
202
+ ```text
203
+ app/ Next.js UI and API routes
204
+ components/ React UI components
205
+ hooks/ Client state and interaction hooks
206
+ lib/ Session, agent, model, file, Git, and security logic
207
+ public/ Static assets and PWA files
208
+ bin/ npm CLI entrypoint and launch option parsing
209
+ docs/ Focused user and contributor guides
210
+ ```
211
+
212
+ See [AGENTS.md](./AGENTS.md) for the architecture notes and detailed file map.
213
+
214
+ ## License
215
+
216
+ [MIT](./LICENSE)
package/README.ru.md ADDED
@@ -0,0 +1,134 @@
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 @silgrid/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 @silgrid/pi-web@latest
34
+ pi-web
35
+ ```
36
+
37
+ Для обновления остановите запущенный процесс с помощью `Ctrl+C` и повторите ту же команду установки. Для удаления выполните `npm uninstall -g @silgrid/pi-web`.
38
+
39
+ ## Настройка
40
+
41
+ Для порта и имени хоста параметры командной строки имеют приоритет над соответствующими переменными окружения. И `--no-open`, и `PI_WEB_NO_OPEN=1` отключают автоматическое открытие браузера независимо друг от друга. `pi-web --help` (или `-h`) выводит параметры запуска и завершает работу без старта сервера. Неизвестные параметры завершают процесс с ошибкой.
42
+
43
+ | Параметр или переменная окружения | Назначение | Значение по умолчанию |
44
+ | --- | --- | --- |
45
+ | `--help`, `-h` | Показать параметры запуска и выйти | — |
46
+ | `--port <port>`, `-p <port>` или `PORT` | Порт сервера | `30141` |
47
+ | `--hostname <host>`, `-H <host>` или `PI_WEB_HOSTNAME` | Имя хоста для привязки | `127.0.0.1` |
48
+ | `--no-open` или `PI_WEB_NO_OPEN=1` | Не открывать браузер автоматически | Браузер открывается |
49
+ | `PI_WEB_ALLOWED_HOSTS` | Дополнительные точные имена прокси или пользовательских хостов через запятую | Не задано |
50
+ | `PI_WEB_PASSWORD` | Включить вход по паролю в браузере; API также поддерживает Basic Auth с именем `pi` | Аутентификация отключена |
51
+
52
+ Пример:
53
+
54
+ ```bash
55
+ pi-web --help
56
+ pi-web -p 8080 -H 0.0.0.0 --no-open
57
+ ```
58
+
59
+ ### Удалённый доступ
60
+
61
+ Привязка к адресу, отличному от loopback, открывает сетевой доступ к агенту, способному выполнять операции с широкими полномочиями. Даже в доверенной локальной сети используйте длинный случайный пароль:
62
+
63
+ ```bash
64
+ PI_WEB_PASSWORD='длинный-случайный-пароль' pi-web --hostname 0.0.0.0
65
+ ```
66
+
67
+ Парольная аутентификация не шифрует соединение. Не публикуйте Pi Web в интернете по обычному HTTP; используйте HTTPS через доверенный обратный прокси или надёжное VPN-подключение. Если обратный прокси передаёт внешнее имя хоста, добавьте это точное имя в `PI_WEB_ALLOWED_HOSTS`. Этот список разрешённых имён не меняет адрес, к которому привязывается Pi Web.
68
+
69
+ ### HTTP-прокси
70
+
71
+ Для серверных запросов к моделям и API используются стандартные переменные окружения `HTTP_PROXY`, `HTTPS_PROXY` и `NO_PROXY`.
72
+
73
+ В macOS и Linux:
74
+
75
+ ```bash
76
+ HTTP_PROXY=http://127.0.0.1:7890 \
77
+ HTTPS_PROXY=http://127.0.0.1:7890 \
78
+ NO_PROXY=localhost,127.0.0.1 \
79
+ npx @silgrid/pi-web@latest
80
+ ```
81
+
82
+ В Windows PowerShell:
83
+
84
+ ```powershell
85
+ $env:HTTP_PROXY = "http://127.0.0.1:7890"
86
+ $env:HTTPS_PROXY = "http://127.0.0.1:7890"
87
+ $env:NO_PROXY = "localhost,127.0.0.1"
88
+ npx @silgrid/pi-web@latest
89
+ ```
90
+
91
+ ## Примечания
92
+
93
+ - **Данные агента**: по умолчанию Pi Web читает данные pi из `~/.pi/agent`, включая файлы сессий в `sessions/<encoded-cwd>/<timestamp>_<uuid>.jsonl`. Чтобы использовать другой каталог агента pi, задайте `PI_CODING_AGENT_DIR`.
94
+ - **Доступ к файловой системе**: Pi Web должен иметь доступ для чтения к каталогу данных агента и рабочим каталогам, записанным в сессиях. При совместном использовании существующих сессий запускайте Pi Web в той же файловой среде, что и pi.
95
+ - **Общие настройки**: панель Models использует хранилища моделей, настроек и учётных данных pi, поэтому изменения видны в обоих интерфейсах.
96
+ - **Граница доступа к файлам**: файловый браузер ограничен рабочими каталогами, выбранными в Pi Web, и уже известными корнями проектов или сессий; это не универсальный файловый менеджер.
97
+ - **Git worktree**: условия отображения переключателя, создание рабочих деревьев и их удаление описаны в документе [Worktrees in Pi Web](./docs/worktrees.md).
98
+
99
+ ## Разработка
100
+
101
+ ```bash
102
+ npm install
103
+ npm run dev
104
+ ```
105
+
106
+ Сервер разработки доступен по адресу [http://127.0.0.1:30141](http://127.0.0.1:30141). Основные проверки запускаются командами:
107
+
108
+ ```bash
109
+ npm test
110
+ node_modules/.bin/tsc --noEmit
111
+ npm run lint
112
+ ```
113
+
114
+ Не запускайте `next build` или `npm run build` во время обычной разработки. Эти команды записывают данные в `.next/` и могут помешать работе сервера разработки; выполняйте сборку только при подготовке релиза.
115
+
116
+ Руководства для участников: [Internationalization](./docs/i18n.md) и [Release process](./docs/release.md).
117
+
118
+ ## Структура репозитория
119
+
120
+ ```text
121
+ app/ UI Next.js и маршруты API
122
+ components/ Компоненты интерфейса React
123
+ hooks/ Состояние клиента и обработчики взаимодействий
124
+ lib/ Логика сессий, агента, моделей, файлов, Git и безопасности
125
+ public/ Статические ресурсы и файлы PWA
126
+ bin/ Точка входа npm CLI и разбор параметров запуска
127
+ docs/ Тематические руководства для пользователей и участников
128
+ ```
129
+
130
+ Описание архитектуры и подробная карта файлов приведены в [AGENTS.md](./AGENTS.md).
131
+
132
+ ## Лицензия
133
+
134
+ [MIT](./LICENSE)
@@ -0,0 +1,136 @@
1
+ # Pi Web
2
+
3
+ [English](./README.md) | [日本語](./README.ja.md) | [Русский](./README.ru.md)
4
+
5
+ [pi 编程智能体](https://github.com/earendil-works/pi)的本地浏览器界面。Pi Web 与 pi 共用本机配置和会话文件,可在浏览器中查找和继续对话、运行智能体、配置模型与资源,并查看项目文件。
6
+
7
+ 中文微信群:请查看 [GitHub Discussions 帖子](https://github.com/agegr/pi-web/discussions/271)。
8
+
9
+ ![Pi Web 展示包含结构化 Markdown、工具调用和项目导航的 pi 会话](https://raw.githubusercontent.com/agegr/pi-web/main/docs/screenshot2.png)
10
+
11
+ ## 功能
12
+
13
+ - **会话工作区**:按项目查找、继续、重命名、导出和删除对话,并查看运行状态、上下文占用、花费和压缩信息。
14
+ - **两种分支方式**:**新会话**会从较早的消息创建独立会话文件;**从此处编辑**会在当前会话内创建分支。
15
+ - **项目文件工具**:浏览和上传文件、查看 Git Diff,并预览源码、Markdown、图片、音频、PDF 和 DOCX;文件变化后会自动刷新。
16
+ - **Git worktree**:从侧边栏切换 checkout,同时把同一仓库不同 worktree 的会话归在一起。
17
+ - **网页配置**:无需离开 Pi Web,即可管理 Provider 登录和 API Key、模型、模型测试、插件包及技能。
18
+ - **英文、简体中文和繁体中文界面**:Pi Web 首次打开时跟随浏览器语言,也可从顶部栏切换语言。
19
+
20
+ ## 快速开始
21
+
22
+ Pi Web 要求 Node.js 22.19.0 或更高版本。先用 `node --version` 检查版本,然后运行:
23
+
24
+ ```bash
25
+ npx @silgrid/pi-web@latest
26
+ ```
27
+
28
+ 服务就绪后,命令行会尝试自动打开浏览器。如果没有打开,请访问 [http://127.0.0.1:30141](http://127.0.0.1:30141)。Pi Web 默认仅监听 `127.0.0.1`。
29
+
30
+ 如果尚未配置模型 Provider,请打开**模型(Models)**面板登录或添加 API Key。
31
+
32
+ 如需全局安装 `pi-web` 命令:
33
+
34
+ ```bash
35
+ npm install -g @silgrid/pi-web@latest
36
+ pi-web
37
+ ```
38
+
39
+ 更新前先用 `Ctrl+C` 停止正在运行的进程,再次执行同一条安装命令。卸载时运行 `npm uninstall -g @silgrid/pi-web`。
40
+
41
+ ## 配置
42
+
43
+ 端口和主机名以命令行参数为准,优先于对应的环境变量。`--no-open` 与 `PI_WEB_NO_OPEN=1` 中任意一个都会关闭自动打开浏览器。运行 `pi-web --help`(或 `-h`)可打印启动选项并以退出码 0 结束,不会启动服务;未知参数会报错并以退出码 1 结束。
44
+
45
+ | 参数或环境变量 | 用途 | 默认值 |
46
+ | --- | --- | --- |
47
+ | `--help`、`-h` | 打印启动选项并退出 | — |
48
+ | `--port <端口>`、`-p <端口>` 或 `PORT` | 服务端口 | `30141` |
49
+ | `--hostname <主机>`、`-H <主机>` 或 `PI_WEB_HOSTNAME` | 监听主机名 | `127.0.0.1` |
50
+ | `--no-open` 或 `PI_WEB_NO_OPEN=1` | 不自动打开浏览器 | 自动打开 |
51
+ | `PI_WEB_ALLOWED_HOSTS` | 额外允许的代理或自定义主机名,多个值用逗号分隔,必须精确匹配 | 未设置 |
52
+ | `PI_WEB_PASSWORD` | 启用浏览器密码登录;API 客户端可使用用户名为 `pi` 的 Basic Auth | 不启用认证 |
53
+
54
+ 例如:
55
+
56
+ ```bash
57
+ pi-web --help
58
+ pi-web -p 8080 -H 0.0.0.0 --no-open
59
+ ```
60
+
61
+ ### 远程访问
62
+
63
+ 监听非回环地址会暴露一个可执行高权限操作的智能体。在可信局域网中使用时,请设置足够长的随机密码:
64
+
65
+ ```bash
66
+ PI_WEB_PASSWORD='足够长的随机密码' pi-web --hostname 0.0.0.0
67
+ ```
68
+
69
+ 密码认证不会加密连接。不要通过明文 HTTP 将 Pi Web 暴露到互联网;远程访问应使用可信反向代理提供 HTTPS,或通过可信 VPN。如果反向代理传递外部主机名,请把该名称精确加入 `PI_WEB_ALLOWED_HOSTS`。这个白名单不会改变 Pi Web 的监听地址。
70
+
71
+ ### HTTP 代理
72
+
73
+ 服务端的模型和 API 请求会读取标准的 `HTTP_PROXY`、`HTTPS_PROXY` 和 `NO_PROXY` 环境变量。
74
+
75
+ macOS 或 Linux:
76
+
77
+ ```bash
78
+ HTTP_PROXY=http://127.0.0.1:7890 \
79
+ HTTPS_PROXY=http://127.0.0.1:7890 \
80
+ NO_PROXY=localhost,127.0.0.1 \
81
+ npx @silgrid/pi-web@latest
82
+ ```
83
+
84
+ Windows PowerShell:
85
+
86
+ ```powershell
87
+ $env:HTTP_PROXY = "http://127.0.0.1:7890"
88
+ $env:HTTPS_PROXY = "http://127.0.0.1:7890"
89
+ $env:NO_PROXY = "localhost,127.0.0.1"
90
+ npx @silgrid/pi-web@latest
91
+ ```
92
+
93
+ ## 注意事项
94
+
95
+ - **智能体数据**:Pi Web 默认读取 `~/.pi/agent` 下的 pi 数据,包括 `sessions/<编码后的工作目录>/<时间戳>_<uuid>.jsonl` 中的会话文件。可通过 `PI_CODING_AGENT_DIR` 指定其他 pi agent 目录。
96
+ - **文件系统访问**:Pi Web 必须能读取智能体数据目录及会话记录中的工作目录。与现有 pi 会话共用数据时,请让 Pi Web 运行在与 pi 相同的文件系统环境中。
97
+ - **共享配置**:模型面板使用 pi 的模型、设置和凭据存储,因此两种界面都能看到相关更改。
98
+ - **文件访问边界**:文件浏览器仅能访问在 Pi Web 中选择过的工作目录,以及它已识别的项目或会话根目录;它不是通用的文件系统浏览器。
99
+ - **Git worktree**:切换器何时显示、如何创建 worktree,以及删除会产生什么影响,见 [Pi Web 里的 Worktree](./docs/worktrees.zh-CN.md)。
100
+
101
+ ## 开发
102
+
103
+ ```bash
104
+ npm install
105
+ npm run dev
106
+ ```
107
+
108
+ 开发服务器运行在 [http://127.0.0.1:30141](http://127.0.0.1:30141)。常用检查命令:
109
+
110
+ ```bash
111
+ npm test
112
+ node_modules/.bin/tsc --noEmit
113
+ npm run lint
114
+ ```
115
+
116
+ 日常开发时不要运行 `next build` 或 `npm run build`。它们会写入 `.next/`,可能干扰开发服务器;仅在发布流程中执行构建。
117
+
118
+ 贡献者文档:[国际化](./docs/i18n.md)和[发布流程](./docs/release.md)。
119
+
120
+ ## 仓库结构
121
+
122
+ ```text
123
+ app/ Next.js 界面和 API 路由
124
+ components/ React 界面组件
125
+ hooks/ 客户端状态和交互 hooks
126
+ lib/ 会话、智能体、模型、文件、Git 和安全逻辑
127
+ public/ 静态资源和 PWA 文件
128
+ bin/ npm CLI 入口及启动参数解析
129
+ docs/ 面向用户和贡献者的专题文档
130
+ ```
131
+
132
+ 架构说明和详细文件地图见 [AGENTS.md](./AGENTS.md)。
133
+
134
+ ## 许可证
135
+
136
+ [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
+ };