@baique/pi-web-sky 0.1.35 → 0.1.37

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 (483) hide show
  1. package/.next/BUILD_ID +1 -1
  2. package/.next/app-path-routes-manifest.json +11 -11
  3. package/.next/build-manifest.json +4 -4
  4. package/.next/next-server.js.nft.json +1 -1
  5. package/.next/prerender-manifest.json +3 -3
  6. package/.next/react-loadable-manifest.json +2 -2
  7. package/.next/required-server-files.js +6 -6
  8. package/.next/required-server-files.json +6 -6
  9. package/.next/server/app/_global-error/page.js +2 -2
  10. package/.next/server/app/_global-error/page_client-reference-manifest.js +1 -1
  11. package/.next/server/app/_global-error.html +1 -1
  12. package/.next/server/app/_global-error.rsc +1 -1
  13. package/.next/server/app/_global-error.segments/_full.segment.rsc +1 -1
  14. package/.next/server/app/_global-error.segments/_global-error/__PAGE__.segment.rsc +1 -1
  15. package/.next/server/app/_global-error.segments/_tree.segment.rsc +1 -1
  16. package/.next/server/app/_not-found/page.js +1 -1
  17. package/.next/server/app/_not-found/page_client-reference-manifest.js +1 -1
  18. package/.next/server/app/_not-found.html +1 -1
  19. package/.next/server/app/_not-found.rsc +3 -3
  20. package/.next/server/app/_not-found.segments/_full.segment.rsc +3 -3
  21. package/.next/server/app/_not-found.segments/_not-found/__PAGE__.segment.rsc +3 -3
  22. package/.next/server/app/_not-found.segments/_tree.segment.rsc +2 -2
  23. package/.next/server/app/api/agent/[id]/bash-output/route.js +2 -2
  24. package/.next/server/app/api/agent/[id]/bash-output/route_client-reference-manifest.js +1 -1
  25. package/.next/server/app/api/agent/[id]/events/route.js +3 -3
  26. package/.next/server/app/api/agent/[id]/events/route_client-reference-manifest.js +1 -1
  27. package/.next/server/app/api/agent/[id]/route.js +2 -2
  28. package/.next/server/app/api/agent/[id]/route_client-reference-manifest.js +1 -1
  29. package/.next/server/app/api/agent/new/route.js +1 -1
  30. package/.next/server/app/api/agent/new/route_client-reference-manifest.js +1 -1
  31. package/.next/server/app/api/agent/running/route.js +1 -1
  32. package/.next/server/app/api/agent/running/route_client-reference-manifest.js +1 -1
  33. package/.next/server/app/api/app-update/route.js +1 -1
  34. package/.next/server/app/api/app-update/route_client-reference-manifest.js +1 -1
  35. package/.next/server/app/api/auth/all-providers/route.js +1 -1
  36. package/.next/server/app/api/auth/all-providers/route_client-reference-manifest.js +1 -1
  37. package/.next/server/app/api/auth/api-key/[provider]/route.js +1 -1
  38. package/.next/server/app/api/auth/api-key/[provider]/route_client-reference-manifest.js +1 -1
  39. package/.next/server/app/api/auth/login/[provider]/route.js +3 -3
  40. package/.next/server/app/api/auth/login/[provider]/route_client-reference-manifest.js +1 -1
  41. package/.next/server/app/api/auth/logout/[provider]/route.js +1 -1
  42. package/.next/server/app/api/auth/logout/[provider]/route_client-reference-manifest.js +1 -1
  43. package/.next/server/app/api/auth/providers/route.js +1 -1
  44. package/.next/server/app/api/auth/providers/route_client-reference-manifest.js +1 -1
  45. package/.next/server/app/api/boards/[id]/canvas/route.js +1 -1
  46. package/.next/server/app/api/boards/[id]/canvas/route_client-reference-manifest.js +1 -1
  47. package/.next/server/app/api/boards/[id]/edges/[eid]/route.js +1 -1
  48. package/.next/server/app/api/boards/[id]/edges/[eid]/route_client-reference-manifest.js +1 -1
  49. package/.next/server/app/api/boards/[id]/edges/route.js +1 -1
  50. package/.next/server/app/api/boards/[id]/edges/route_client-reference-manifest.js +1 -1
  51. package/.next/server/app/api/boards/[id]/nodes/[nid]/route.js +1 -1
  52. package/.next/server/app/api/boards/[id]/nodes/[nid]/route_client-reference-manifest.js +1 -1
  53. package/.next/server/app/api/boards/[id]/nodes/route.js +1 -1
  54. package/.next/server/app/api/boards/[id]/nodes/route_client-reference-manifest.js +1 -1
  55. package/.next/server/app/api/boards/[id]/reconcile-task-edges/route.js +1 -1
  56. package/.next/server/app/api/boards/[id]/reconcile-task-edges/route_client-reference-manifest.js +1 -1
  57. package/.next/server/app/api/boards/[id]/route.js +1 -1
  58. package/.next/server/app/api/boards/[id]/route_client-reference-manifest.js +1 -1
  59. package/.next/server/app/api/boards/purge-orphans/route.js +1 -1
  60. package/.next/server/app/api/boards/purge-orphans/route_client-reference-manifest.js +1 -1
  61. package/.next/server/app/api/boards/reorder/route.js +1 -1
  62. package/.next/server/app/api/boards/reorder/route_client-reference-manifest.js +1 -1
  63. package/.next/server/app/api/boards/route.js +1 -1
  64. package/.next/server/app/api/boards/route_client-reference-manifest.js +1 -1
  65. package/.next/server/app/api/cwd/browse/route.js +1 -1
  66. package/.next/server/app/api/cwd/browse/route_client-reference-manifest.js +1 -1
  67. package/.next/server/app/api/cwd/validate/route.js +2 -2
  68. package/.next/server/app/api/cwd/validate/route_client-reference-manifest.js +1 -1
  69. package/.next/server/app/api/default-cwd/route.js +2 -2
  70. package/.next/server/app/api/default-cwd/route_client-reference-manifest.js +1 -1
  71. package/.next/server/app/api/file-index/route.js +2 -2
  72. package/.next/server/app/api/file-index/route_client-reference-manifest.js +1 -1
  73. package/.next/server/app/api/files/[...path]/route.js +2 -2
  74. package/.next/server/app/api/files/[...path]/route_client-reference-manifest.js +1 -1
  75. package/.next/server/app/api/git/diff/route.js +1 -1
  76. package/.next/server/app/api/git/diff/route_client-reference-manifest.js +1 -1
  77. package/.next/server/app/api/git/status/route.js +1 -1
  78. package/.next/server/app/api/git/status/route_client-reference-manifest.js +1 -1
  79. package/.next/server/app/api/home/route.js +1 -1
  80. package/.next/server/app/api/home/route_client-reference-manifest.js +1 -1
  81. package/.next/server/app/api/mcp/route.js +2 -2
  82. package/.next/server/app/api/mcp/route_client-reference-manifest.js +1 -1
  83. package/.next/server/app/api/models/route.js +2 -2
  84. package/.next/server/app/api/models/route_client-reference-manifest.js +1 -1
  85. package/.next/server/app/api/models-config/catalog/route.js +1 -1
  86. package/.next/server/app/api/models-config/catalog/route_client-reference-manifest.js +1 -1
  87. package/.next/server/app/api/models-config/discover/route.js +1 -1
  88. package/.next/server/app/api/models-config/discover/route_client-reference-manifest.js +1 -1
  89. package/.next/server/app/api/models-config/route.js +1 -1
  90. package/.next/server/app/api/models-config/route_client-reference-manifest.js +1 -1
  91. package/.next/server/app/api/models-config/test/route.js +1 -1
  92. package/.next/server/app/api/models-config/test/route_client-reference-manifest.js +1 -1
  93. package/.next/server/app/api/plugins/route.js +2 -2
  94. package/.next/server/app/api/plugins/route_client-reference-manifest.js +1 -1
  95. package/.next/server/app/api/project-trust/route.js +2 -2
  96. package/.next/server/app/api/project-trust/route_client-reference-manifest.js +1 -1
  97. package/.next/server/app/api/quota/route.js +1 -1
  98. package/.next/server/app/api/quota/route_client-reference-manifest.js +1 -1
  99. package/.next/server/app/api/search/route.js +2 -2
  100. package/.next/server/app/api/search/route_client-reference-manifest.js +1 -1
  101. package/.next/server/app/api/sessions/[id]/auto-name/route.js +3 -3
  102. package/.next/server/app/api/sessions/[id]/auto-name/route_client-reference-manifest.js +1 -1
  103. package/.next/server/app/api/sessions/[id]/context/route.js +2 -2
  104. package/.next/server/app/api/sessions/[id]/context/route_client-reference-manifest.js +1 -1
  105. package/.next/server/app/api/sessions/[id]/entries/[entryId]/thinking/route.js +2 -2
  106. package/.next/server/app/api/sessions/[id]/entries/[entryId]/thinking/route_client-reference-manifest.js +1 -1
  107. package/.next/server/app/api/sessions/[id]/export/route.js +2 -2
  108. package/.next/server/app/api/sessions/[id]/export/route_client-reference-manifest.js +1 -1
  109. package/.next/server/app/api/sessions/[id]/route.js +1 -1
  110. package/.next/server/app/api/sessions/[id]/route_client-reference-manifest.js +1 -1
  111. package/.next/server/app/api/sessions/[id]/state/route.js +2 -2
  112. package/.next/server/app/api/sessions/[id]/state/route_client-reference-manifest.js +1 -1
  113. package/.next/server/app/api/sessions/[id]/todos/route.js +2 -2
  114. package/.next/server/app/api/sessions/[id]/todos/route_client-reference-manifest.js +1 -1
  115. package/.next/server/app/api/sessions/route.js +2 -2
  116. package/.next/server/app/api/sessions/route_client-reference-manifest.js +1 -1
  117. package/.next/server/app/api/skills/check/route.js +1 -1
  118. package/.next/server/app/api/skills/check/route.js.nft.json +1 -1
  119. package/.next/server/app/api/skills/check/route_client-reference-manifest.js +1 -1
  120. package/.next/server/app/api/skills/install/route.js +2 -2
  121. package/.next/server/app/api/skills/install/route_client-reference-manifest.js +1 -1
  122. package/.next/server/app/api/skills/route.js +2 -31
  123. package/.next/server/app/api/skills/route.js.nft.json +1 -1
  124. package/.next/server/app/api/skills/route_client-reference-manifest.js +1 -1
  125. package/.next/server/app/api/skills/search/route.js +1 -1
  126. package/.next/server/app/api/skills/search/route_client-reference-manifest.js +1 -1
  127. package/.next/server/app/api/skills/update/route.js +1 -1
  128. package/.next/server/app/api/skills/update/route.js.nft.json +1 -1
  129. package/.next/server/app/api/skills/update/route_client-reference-manifest.js +1 -1
  130. package/.next/server/app/api/task-card-questions/[id]/answer/route.js +1 -1
  131. package/.next/server/app/api/task-card-questions/[id]/answer/route_client-reference-manifest.js +1 -1
  132. package/.next/server/app/api/task-card-questions/route.js +1 -1
  133. package/.next/server/app/api/task-card-questions/route_client-reference-manifest.js +1 -1
  134. package/.next/server/app/api/task-cards/[id]/route.js +1 -1
  135. package/.next/server/app/api/task-cards/[id]/route_client-reference-manifest.js +1 -1
  136. package/.next/server/app/api/task-cards/route.js +1 -1
  137. package/.next/server/app/api/task-cards/route_client-reference-manifest.js +1 -1
  138. package/.next/server/app/api/task-scheduler/status/route.js +1 -1
  139. package/.next/server/app/api/task-scheduler/status/route_client-reference-manifest.js +1 -1
  140. package/.next/server/app/api/tasks/[id]/board/route.js +1 -1
  141. package/.next/server/app/api/tasks/[id]/board/route_client-reference-manifest.js +1 -1
  142. package/.next/server/app/api/tasks/[id]/route.js +1 -1
  143. package/.next/server/app/api/tasks/[id]/route_client-reference-manifest.js +1 -1
  144. package/.next/server/app/api/tasks/reorder/route.js +1 -1
  145. package/.next/server/app/api/tasks/reorder/route_client-reference-manifest.js +1 -1
  146. package/.next/server/app/api/tasks/route.js +1 -1
  147. package/.next/server/app/api/tasks/route_client-reference-manifest.js +1 -1
  148. package/.next/server/app/api/terminal/[id]/events/route.js +3 -3
  149. package/.next/server/app/api/terminal/[id]/events/route_client-reference-manifest.js +1 -1
  150. package/.next/server/app/api/terminal/[id]/route.js +2 -2
  151. package/.next/server/app/api/terminal/[id]/route_client-reference-manifest.js +1 -1
  152. package/.next/server/app/api/terminal/route.js +2 -2
  153. package/.next/server/app/api/terminal/route_client-reference-manifest.js +1 -1
  154. package/.next/server/app/api/worktrees/route.js +2 -2
  155. package/.next/server/app/api/worktrees/route_client-reference-manifest.js +1 -1
  156. package/.next/server/app/favicon.ico/route.js +1 -1
  157. package/.next/server/app/index.html +1 -1
  158. package/.next/server/app/index.rsc +5 -5
  159. package/.next/server/app/index.segments/__PAGE__.segment.rsc +5 -5
  160. package/.next/server/app/index.segments/_full.segment.rsc +5 -5
  161. package/.next/server/app/index.segments/_tree.segment.rsc +2 -2
  162. package/.next/server/app/manifest.webmanifest/route.js +2 -2
  163. package/.next/server/app/manifest.webmanifest/route_client-reference-manifest.js +1 -1
  164. package/.next/server/app/page.js +3 -3
  165. package/.next/server/app/page_client-reference-manifest.js +1 -1
  166. package/.next/server/app-paths-manifest.json +11 -11
  167. package/.next/server/chunks/2404.js +2 -2
  168. package/.next/server/chunks/2430.js +4 -4
  169. package/.next/server/chunks/3500.js +30 -0
  170. package/.next/server/chunks/4226.js +2 -2
  171. package/.next/server/chunks/542.js +11 -6
  172. package/.next/server/chunks/5794.js +2 -2
  173. package/.next/server/chunks/6429.js +1 -1
  174. package/.next/server/chunks/898.js +2 -2
  175. package/.next/server/instrumentation.js +1 -1
  176. package/.next/server/middleware-build-manifest.js +1 -1
  177. package/.next/server/middleware-react-loadable-manifest.js +1 -1
  178. package/.next/server/middleware.js +3 -3
  179. package/.next/server/next-font-manifest.js +1 -1
  180. package/.next/server/next-font-manifest.json +1 -1
  181. package/.next/server/pages/404.html +1 -1
  182. package/.next/server/pages/500.html +1 -1
  183. package/.next/server/server-reference-manifest.json +1 -1
  184. package/.next/static/chunks/5315.dba7515ae6e139ae.js +4 -0
  185. package/.next/static/chunks/{7999.f4ab221861378788.js → 7999.879d5a20e8641752.js} +1 -1
  186. package/.next/static/chunks/app/_not-found/{page-af4fe23994cb3d66.js → page-8cea8d8de35f4da4.js} +1 -1
  187. package/.next/static/chunks/app/{layout-1d9a7a44fbc92d2e.js → layout-c4ca28ccc08bc975.js} +1 -1
  188. package/.next/static/chunks/app/{page-6d6779a81a0a7639.js → page-c9ead38525a85686.js} +3 -3
  189. package/.next/static/chunks/{main-app-b3e8a8d15d83e1f0.js → main-app-dd2385a1a5a588df.js} +1 -1
  190. package/.next/static/chunks/next/dist/client/components/builtin/global-error-be943dcb89867ab9.js +1 -0
  191. package/.next/static/chunks/{webpack-fa4f40085b1ec1ac.js → webpack-4bbf04891e910713.js} +1 -1
  192. package/.next/static/css/422c7dc0faa04d89.css +1 -0
  193. package/.next/trace +8 -9
  194. package/.next/trace-build +1 -1
  195. package/.next/types/app/api/agent/[id]/bash-output/route.ts +1 -1
  196. package/.next/types/app/api/agent/[id]/events/route.ts +1 -1
  197. package/.next/types/app/api/agent/[id]/route.ts +1 -1
  198. package/.next/types/app/api/agent/new/route.ts +1 -1
  199. package/.next/types/app/api/agent/running/route.ts +1 -1
  200. package/.next/types/app/api/app-update/route.ts +1 -1
  201. package/.next/types/app/api/auth/all-providers/route.ts +1 -1
  202. package/.next/types/app/api/auth/api-key/[provider]/route.ts +1 -1
  203. package/.next/types/app/api/auth/login/[provider]/route.ts +1 -1
  204. package/.next/types/app/api/auth/logout/[provider]/route.ts +1 -1
  205. package/.next/types/app/api/auth/providers/route.ts +1 -1
  206. package/.next/types/app/api/boards/[id]/canvas/route.ts +1 -1
  207. package/.next/types/app/api/boards/[id]/edges/[eid]/route.ts +1 -1
  208. package/.next/types/app/api/boards/[id]/edges/route.ts +1 -1
  209. package/.next/types/app/api/boards/[id]/nodes/[nid]/route.ts +1 -1
  210. package/.next/types/app/api/boards/[id]/nodes/route.ts +1 -1
  211. package/.next/types/app/api/boards/[id]/reconcile-task-edges/route.ts +1 -1
  212. package/.next/types/app/api/boards/[id]/route.ts +1 -1
  213. package/.next/types/app/api/boards/purge-orphans/route.ts +1 -1
  214. package/.next/types/app/api/boards/reorder/route.ts +1 -1
  215. package/.next/types/app/api/boards/route.ts +1 -1
  216. package/.next/types/app/api/cwd/browse/route.ts +1 -1
  217. package/.next/types/app/api/cwd/validate/route.ts +1 -1
  218. package/.next/types/app/api/default-cwd/route.ts +1 -1
  219. package/.next/types/app/api/file-index/route.ts +1 -1
  220. package/.next/types/app/api/files/[...path]/route.ts +1 -1
  221. package/.next/types/app/api/git/diff/route.ts +1 -1
  222. package/.next/types/app/api/git/status/route.ts +1 -1
  223. package/.next/types/app/api/home/route.ts +1 -1
  224. package/.next/types/app/api/mcp/route.ts +1 -1
  225. package/.next/types/app/api/models/route.ts +1 -1
  226. package/.next/types/app/api/models-config/catalog/route.ts +1 -1
  227. package/.next/types/app/api/models-config/discover/route.ts +1 -1
  228. package/.next/types/app/api/models-config/route.ts +1 -1
  229. package/.next/types/app/api/models-config/test/route.ts +1 -1
  230. package/.next/types/app/api/plugins/route.ts +1 -1
  231. package/.next/types/app/api/project-trust/route.ts +1 -1
  232. package/.next/types/app/api/quota/route.ts +1 -1
  233. package/.next/types/app/api/search/route.ts +1 -1
  234. package/.next/types/app/api/sessions/[id]/auto-name/route.ts +1 -1
  235. package/.next/types/app/api/sessions/[id]/context/route.ts +1 -1
  236. package/.next/types/app/api/sessions/[id]/entries/[entryId]/thinking/route.ts +1 -1
  237. package/.next/types/app/api/sessions/[id]/export/route.ts +1 -1
  238. package/.next/types/app/api/sessions/[id]/route.ts +1 -1
  239. package/.next/types/app/api/sessions/[id]/state/route.ts +1 -1
  240. package/.next/types/app/api/sessions/[id]/todos/route.ts +1 -1
  241. package/.next/types/app/api/sessions/route.ts +1 -1
  242. package/.next/types/app/api/skills/check/route.ts +1 -1
  243. package/.next/types/app/api/skills/install/route.ts +1 -1
  244. package/.next/types/app/api/skills/route.ts +1 -1
  245. package/.next/types/app/api/skills/search/route.ts +1 -1
  246. package/.next/types/app/api/skills/update/route.ts +1 -1
  247. package/.next/types/app/api/task-card-questions/[id]/answer/route.ts +1 -1
  248. package/.next/types/app/api/task-card-questions/route.ts +1 -1
  249. package/.next/types/app/api/task-cards/[id]/route.ts +1 -1
  250. package/.next/types/app/api/task-cards/route.ts +1 -1
  251. package/.next/types/app/api/task-scheduler/status/route.ts +1 -1
  252. package/.next/types/app/api/tasks/[id]/board/route.ts +1 -1
  253. package/.next/types/app/api/tasks/[id]/route.ts +1 -1
  254. package/.next/types/app/api/tasks/reorder/route.ts +1 -1
  255. package/.next/types/app/api/tasks/route.ts +1 -1
  256. package/.next/types/app/api/terminal/[id]/events/route.ts +1 -1
  257. package/.next/types/app/api/terminal/[id]/route.ts +1 -1
  258. package/.next/types/app/api/terminal/route.ts +1 -1
  259. package/.next/types/app/api/worktrees/route.ts +1 -1
  260. package/.next/types/app/layout.ts +1 -1
  261. package/.next/types/app/page.ts +1 -1
  262. package/bin/pi-web-sky.js +15 -20
  263. package/lib/agent-client.test.mjs +64 -0
  264. package/lib/agent-client.ts +53 -0
  265. package/lib/agent-event-connection.test.mjs +193 -0
  266. package/lib/agent-event-connection.ts +202 -0
  267. package/lib/agent-event-stream.test.mjs +155 -0
  268. package/lib/agent-event-stream.ts +132 -0
  269. package/lib/agent-event-wire.test.mjs +278 -0
  270. package/lib/agent-event-wire.ts +107 -0
  271. package/lib/agent-phase.ts +24 -0
  272. package/lib/allowed-roots.ts +31 -0
  273. package/lib/ansi.test.mjs +52 -0
  274. package/lib/ansi.ts +211 -0
  275. package/lib/api-types.ts +139 -0
  276. package/lib/app-update.test.mjs +27 -0
  277. package/lib/app-update.ts +28 -0
  278. package/lib/atomic-file.test.mjs +37 -0
  279. package/lib/atomic-file.ts +34 -0
  280. package/lib/audit-session.ts +235 -0
  281. package/lib/bash-output.test.mjs +63 -0
  282. package/lib/bash-output.ts +53 -0
  283. package/lib/bg-image.ts +129 -0
  284. package/lib/board-events.ts +83 -0
  285. package/lib/board-purge.test.mjs +66 -0
  286. package/lib/board-purge.ts +65 -0
  287. package/lib/board-search.test.mjs +110 -0
  288. package/lib/board-search.ts +63 -0
  289. package/lib/board-store.test.mjs +542 -0
  290. package/lib/board-store.ts +794 -0
  291. package/lib/board-types.ts +96 -0
  292. package/lib/board-utils.ts +17 -0
  293. package/lib/bounded-form-data.test.mjs +54 -0
  294. package/lib/bounded-form-data.ts +49 -0
  295. package/lib/browser-notifications.test.mjs +167 -0
  296. package/lib/browser-notifications.ts +104 -0
  297. package/lib/chat-lazy-load.test.mjs +140 -0
  298. package/lib/chat-lazy-load.ts +64 -0
  299. package/lib/clipboard-paths.test.mjs +140 -0
  300. package/lib/clipboard-paths.ts +192 -0
  301. package/lib/clipboard.ts +18 -0
  302. package/lib/compaction-summary.test.mjs +44 -0
  303. package/lib/compaction-summary.ts +34 -0
  304. package/lib/custom-ui-terminal.test.mjs +32 -0
  305. package/lib/custom-ui-terminal.ts +27 -0
  306. package/lib/deepseek-pricing.test.mjs +120 -0
  307. package/lib/deepseek-pricing.ts +71 -0
  308. package/lib/directory-browser.test.mjs +60 -0
  309. package/lib/directory-browser.ts +83 -0
  310. package/lib/draft-stash.test.mjs +91 -0
  311. package/lib/draft-stash.ts +102 -0
  312. package/lib/draft-store.ts +105 -0
  313. package/lib/dropdown-direction.ts +27 -0
  314. package/lib/extension-command.test.mjs +63 -0
  315. package/lib/extension-command.ts +81 -0
  316. package/lib/file-access.test.mjs +31 -0
  317. package/lib/file-access.ts +59 -0
  318. package/lib/file-dirent.test.mjs +56 -0
  319. package/lib/file-dirent.ts +17 -0
  320. package/lib/file-explorer-state.test.mjs +63 -0
  321. package/lib/file-explorer-state.ts +36 -0
  322. package/lib/file-fuzzy.test.mjs +29 -0
  323. package/lib/file-fuzzy.ts +189 -0
  324. package/lib/file-links.test.mjs +92 -0
  325. package/lib/file-links.ts +148 -0
  326. package/lib/file-paths.ts +43 -0
  327. package/lib/file-types.test.mjs +34 -0
  328. package/lib/file-types.ts +73 -0
  329. package/lib/file-upload.test.mjs +70 -0
  330. package/lib/file-upload.ts +59 -0
  331. package/lib/file-viewer-state.test.mjs +20 -0
  332. package/lib/file-viewer-state.ts +15 -0
  333. package/lib/frontmatter.test.mjs +55 -0
  334. package/lib/frontmatter.ts +87 -0
  335. package/lib/git-changes.test.mjs +52 -0
  336. package/lib/git-changes.ts +232 -0
  337. package/lib/git-status.ts +47 -0
  338. package/lib/git-types.ts +29 -0
  339. package/lib/http-dispatcher.test.mjs +83 -0
  340. package/lib/http-dispatcher.ts +86 -0
  341. package/lib/i18n/format.test.mjs +19 -0
  342. package/lib/i18n/format.ts +60 -0
  343. package/lib/i18n/messages/en.ts +662 -0
  344. package/lib/i18n/messages/zh-CN.ts +661 -0
  345. package/lib/i18n/registry.test.mjs +32 -0
  346. package/lib/i18n/registry.ts +43 -0
  347. package/lib/i18n/types.ts +15 -0
  348. package/lib/image-attachments.test.mjs +27 -0
  349. package/lib/image-attachments.ts +56 -0
  350. package/lib/initial-navigation.test.mjs +65 -0
  351. package/lib/initial-navigation.ts +15 -0
  352. package/lib/markdown.test.mjs +104 -0
  353. package/lib/markdown.ts +347 -0
  354. package/lib/message-display.test.mjs +130 -0
  355. package/lib/message-display.ts +47 -0
  356. package/lib/model-catalog.test.mjs +327 -0
  357. package/lib/model-catalog.ts +414 -0
  358. package/lib/model-discovery-auth.ts +58 -0
  359. package/lib/model-discovery.test.mjs +50 -0
  360. package/lib/model-discovery.ts +75 -0
  361. package/lib/model-id-preference.ts +46 -0
  362. package/lib/model-scope.test.mjs +193 -0
  363. package/lib/model-scope.ts +198 -0
  364. package/lib/models-cache.test.mjs +122 -0
  365. package/lib/models-cache.ts +90 -0
  366. package/lib/models-config-store.test.mjs +200 -0
  367. package/lib/models-config-store.ts +84 -0
  368. package/lib/next-config-esm.test.mjs +14 -0
  369. package/lib/next-config.test.mjs +13 -0
  370. package/lib/node-version.test.mjs +33 -0
  371. package/lib/normalize.test.mjs +54 -0
  372. package/lib/normalize.ts +63 -0
  373. package/lib/npx.ts +62 -0
  374. package/lib/panel-layout.test.mjs +56 -0
  375. package/lib/panel-layout.ts +52 -0
  376. package/lib/patch.test.mjs +110 -0
  377. package/lib/patch.ts +134 -0
  378. package/lib/path-security.ts +42 -0
  379. package/lib/paths.test.mjs +58 -0
  380. package/lib/paths.ts +71 -0
  381. package/lib/pi-types.ts +183 -0
  382. package/lib/pi-web-options.test.mjs +63 -0
  383. package/lib/process-lifecycle.test.mjs +83 -0
  384. package/lib/project-command-env.test.mjs +298 -0
  385. package/lib/project-command-env.ts +129 -0
  386. package/lib/project-groups.test.mjs +60 -0
  387. package/lib/project-groups.ts +53 -0
  388. package/lib/project-identity.test.mjs +37 -0
  389. package/lib/project-identity.ts +26 -0
  390. package/lib/project-tree.test.mjs +115 -0
  391. package/lib/project-tree.ts +176 -0
  392. package/lib/project-trust.test.mjs +117 -0
  393. package/lib/project-trust.ts +48 -0
  394. package/lib/prompt-recovery.test.mjs +33 -0
  395. package/lib/prompt-recovery.ts +47 -0
  396. package/lib/provider-api-key-route.test.mjs +12 -0
  397. package/lib/provider-credential-store.test.mjs +126 -0
  398. package/lib/provider-credential-store.ts +114 -0
  399. package/lib/provider-listing-runtime.ts +37 -0
  400. package/lib/provider-listing.test.mjs +114 -0
  401. package/lib/provider-listing.ts +118 -0
  402. package/lib/provider-services.ts +64 -0
  403. package/lib/request-security.test.mjs +256 -0
  404. package/lib/request-security.ts +136 -0
  405. package/lib/rpc-manager-shutdown.test.mjs +372 -0
  406. package/lib/rpc-manager-widgets.test.mjs +342 -0
  407. package/lib/rpc-manager.test.mjs +139 -0
  408. package/lib/rpc-manager.ts +1703 -0
  409. package/lib/rpc-session-info.test.mjs +93 -0
  410. package/lib/session-delete.test.mjs +53 -0
  411. package/lib/session-delete.ts +86 -0
  412. package/lib/session-file-references-core.ts +82 -0
  413. package/lib/session-file-references.test.mjs +91 -0
  414. package/lib/session-file-references.ts +29 -0
  415. package/lib/session-path.test.mjs +24 -0
  416. package/lib/session-path.ts +11 -0
  417. package/lib/session-reader.pagination.test.mjs +115 -0
  418. package/lib/session-reader.test.mjs +446 -0
  419. package/lib/session-reader.ts +548 -0
  420. package/lib/session-resolve.test.mjs +65 -0
  421. package/lib/session-row-context-menu.test.mjs +46 -0
  422. package/lib/session-row-context-menu.ts +29 -0
  423. package/lib/session-scanner.test.mjs +151 -0
  424. package/lib/session-scanner.ts +238 -0
  425. package/lib/session-search.test.mjs +173 -0
  426. package/lib/session-search.ts +284 -0
  427. package/lib/session-stats.ts +26 -0
  428. package/lib/session-timing.test.mjs +107 -0
  429. package/lib/session-timing.ts +45 -0
  430. package/lib/session-title.test.mjs +284 -0
  431. package/lib/session-title.ts +255 -0
  432. package/lib/skill-frontmatter.test.mjs +75 -0
  433. package/lib/skill-frontmatter.ts +40 -0
  434. package/lib/skill-lock.test.mjs +182 -0
  435. package/lib/skill-lock.ts +146 -0
  436. package/lib/skill-updates.test.mjs +182 -0
  437. package/lib/skill-updates.ts +263 -0
  438. package/lib/skills-service.ts +16 -0
  439. package/lib/slash-display.test.mjs +122 -0
  440. package/lib/slash-display.ts +30 -0
  441. package/lib/sqlite-db.test.mjs +140 -0
  442. package/lib/sqlite-db.ts +205 -0
  443. package/lib/startup-preferences.test.mjs +130 -0
  444. package/lib/startup-preferences.ts +65 -0
  445. package/lib/streaming-message.test.mjs +212 -0
  446. package/lib/streaming-message.ts +151 -0
  447. package/lib/subagent-widget.test.mjs +87 -0
  448. package/lib/subagent-widget.ts +109 -0
  449. package/lib/sync-room-server.mjs +137 -0
  450. package/lib/task-card-store.test.mjs +309 -0
  451. package/lib/task-card-store.ts +559 -0
  452. package/lib/task-scheduler.ts +498 -0
  453. package/lib/task-store.test.mjs +216 -0
  454. package/lib/task-store.ts +271 -0
  455. package/lib/terminal-input.test.mjs +46 -0
  456. package/lib/terminal-input.ts +63 -0
  457. package/lib/terminal-manager.test.mjs +71 -0
  458. package/lib/terminal-manager.ts +245 -0
  459. package/lib/tool-execution-progress.test.mjs +32 -0
  460. package/lib/tool-execution-progress.ts +29 -0
  461. package/lib/tool-names.ts +25 -0
  462. package/lib/tool-preset-preference.test.mjs +72 -0
  463. package/lib/tool-preset-preference.ts +41 -0
  464. package/lib/tool-presets.test.mjs +56 -0
  465. package/lib/tool-presets.ts +42 -0
  466. package/lib/turn-written-files.test.mjs +137 -0
  467. package/lib/turn-written-files.ts +60 -0
  468. package/lib/types.ts +349 -0
  469. package/lib/wallpaper-settings.ts +191 -0
  470. package/lib/web-auth.test.mjs +50 -0
  471. package/lib/web-auth.ts +45 -0
  472. package/lib/workspace-memory.test.mjs +129 -0
  473. package/lib/workspace-memory.ts +98 -0
  474. package/lib/worktree.test.mjs +50 -0
  475. package/lib/worktree.ts +250 -0
  476. package/package.json +3 -1
  477. package/server.mjs +34 -0
  478. package/.next/server/chunks/7513.js +0 -30
  479. package/.next/static/chunks/5315.03de3c6abd8b283e.js +0 -4
  480. package/.next/static/chunks/next/dist/client/components/builtin/global-error-00a4badaccb388e6.js +0 -1
  481. package/.next/static/css/cf25164cb7c04d95.css +0 -1
  482. /package/.next/static/{Ud6Y2ONkGuPVFbo1xZQvk → 7sDSz-wW-RWYnxh1l6-fD}/_buildManifest.js +0 -0
  483. /package/.next/static/{Ud6Y2ONkGuPVFbo1xZQvk → 7sDSz-wW-RWYnxh1l6-fD}/_ssgManifest.js +0 -0
@@ -0,0 +1,662 @@
1
+ import type { LocalePlugin } from "../types";
2
+
3
+ /** Pi Web 内置英语语言包。 */
4
+ export const enLocale: LocalePlugin = {
5
+ id: "en",
6
+ label: "English",
7
+ messages: {
8
+ "common.ok": "OK",
9
+ "common.language": "Language",
10
+ "common.models": "Models",
11
+ "common.skills": "Skills",
12
+ "common.plugins": "Plugins",
13
+ "appUpdate.releaseNotes": "Pi Web v{version} is available. View release notes",
14
+ "sidebar.hide": "Hide sidebar",
15
+ "sidebar.show": "Show sidebar",
16
+ "theme.light": "Light mode (click for dark)",
17
+ "theme.dark": "Dark mode (click for system)",
18
+ "theme.auto": "System theme (click for light)",
19
+ "history.full": "History",
20
+ "history.unsaved": "History is available after the session is saved",
21
+ "history.label": "History",
22
+ "nav.stats": "Stats",
23
+ "nav.todo": "TODO",
24
+ "title.generating": "Generating...",
25
+ "title.updated": "Title updated",
26
+ "title.failed": "Generation failed",
27
+ "title.generate": "Generate title",
28
+ "title.unsaved": "Title generation is available after the session is saved",
29
+ "title.noMessages": "Send a message before naming this session",
30
+ "title.generateSession": "Generate a session title",
31
+ "system.prompt": "System prompt",
32
+ "system.empty": "System prompt is empty (tools are disabled)",
33
+ "system.load": "System prompt has not loaded yet",
34
+ "system.loading": "Loading system prompt…",
35
+ "system.label": "System",
36
+ "session.info": "Session info",
37
+ "session.task": "Task",
38
+ "session.name": "Name",
39
+ "session.file": "Session File",
40
+ "session.inMemory": "In-memory",
41
+ "session.id": "ID",
42
+ "session.user": "User",
43
+ "session.assistant": "Assistant",
44
+ "session.toolCalls": "Tool Calls",
45
+ "session.toolResults": "Tool Results",
46
+ "session.total": "Total",
47
+ "session.input": "Input",
48
+ "session.output": "Output",
49
+ "session.cacheRead": "Cache Read",
50
+ "session.cacheWrite": "Cache Write",
51
+ "session.cost": "Cost",
52
+ "session.context": "Context",
53
+ "session.cacheHitRate": "Avg cache hit rate",
54
+ "session.copy": "Copy {value}",
55
+ "session.copied": "Copied",
56
+ "session.title": "Session info",
57
+ "session.load": "Send a message or run /session to load session info",
58
+ "session.infoSection": "Session Info",
59
+ "session.projectSection": "Project Info",
60
+ "session.messages": "Messages",
61
+ "session.tokens": "Tokens",
62
+ "session.totalActive": "Active Time",
63
+ "session.copyFile": "Copy file path",
64
+ "session.copyId": "Copy session ID",
65
+ "session.projectDir": "Project Dir",
66
+ "session.gitBranch": "Git Branch",
67
+ "session.gitWorktree": "Worktree",
68
+ "session.copyProjectDir": "Copy project directory",
69
+ "session.copyGitBranch": "Copy git branch",
70
+ "session.copyGitWorktree": "Copy worktree path",
71
+ "workspace.opening": "Opening workspace...",
72
+ "workspace.unable": "Unable to open workspace",
73
+ "workspace.selectSession": "Select a session from the sidebar",
74
+ "workspace.getStarted": "Get Started",
75
+ "workspace.selectProject": "Select a project directory from the sidebar",
76
+ "workspace.addModels": "Add models via the Models button at the bottom",
77
+ "workspace.stepProject": "Select a project directory from the sidebar",
78
+ "workspace.stepModels": "Add models via the Models button at the bottom",
79
+ "files.hidePanel": "Hide file panel",
80
+ "files.showPanel": "Show file panel",
81
+ "files.noneOpen": "No file open",
82
+ "layout.resizeSidebar": "Resize sidebar",
83
+ "layout.resizeFilePanel": "Resize file panel",
84
+ "layout.resizeHint": "Drag to resize. Double-click or press Enter to reset.",
85
+ "sidebar.new": "New",
86
+ "sidebar.newSessionTitle": "New session in {path}",
87
+ "sidebar.refresh": "Refresh",
88
+ "sidebar.selectProject": "Select project…",
89
+ "sidebar.filterProjects": "Filter projects…",
90
+ "sidebar.noMatchingProjects": "No matching projects",
91
+ "sidebar.useDefaultDirectory": "Use default directory",
92
+ "sidebar.customPath": "Custom path…",
93
+ "directoryPicker.selectDirectory": "Select directory",
94
+ "directoryPicker.goToParent": "Go to parent directory",
95
+ "directoryPicker.directoryPath": "Directory path",
96
+ "directoryPicker.goToDirectory": "Go to directory",
97
+ "directoryPicker.go": "Go",
98
+ "directoryPicker.loadingDirectories": "Loading directories…",
99
+ "directoryPicker.noSubdirectories": "No subdirectories",
100
+ "directoryPicker.openBeforeSelecting": "Open this path before selecting it",
101
+ "directoryPicker.selectCurrentDirectory": "Select current directory",
102
+ "directoryPicker.selectThisFolder": "Select this folder",
103
+ "directoryPicker.noDrives": "No drives found",
104
+ "sidebar.checking": "Checking…",
105
+ "sidebar.open": "Open",
106
+ "sidebar.cancel": "Cancel",
107
+ "sidebar.openRepoRoot": "Open repo root",
108
+ "sidebar.openRepoRootTitle": "Open the repository root to manage worktrees.",
109
+ "sidebar.gitRepoRootOnly": "Git repo root only",
110
+ "sidebar.gitRepoRootOnlyTitle": "Worktrees are available in Git repository roots.",
111
+ "sidebar.worktrees": "Worktrees...",
112
+ "sidebar.checkingWorktrees": "Checking worktrees for this directory.",
113
+ "sidebar.filterWorktrees": "Filter worktrees…",
114
+ "sidebar.noMatchingWorktrees": "No matching worktrees",
115
+ "sidebar.switchWorktree": "Switch worktree",
116
+ "sidebar.switchWorktreeTitle": "Switch worktree: {path}",
117
+ "sidebar.main": "main",
118
+ "sidebar.forceRemoveCheckout": "Uncommitted changes. Force remove checkout?",
119
+ "sidebar.force": "Force",
120
+ "sidebar.createWorktreeTitle": "Create a worktree checkout for a branch",
121
+ "sidebar.newWorktree": "New worktree…",
122
+ "sidebar.branchName": "branch name",
123
+ "sidebar.creating": "Creating…",
124
+ "sidebar.create": "Create",
125
+ "sidebar.uploadFilesTitle": "Upload files to project root",
126
+ "sidebar.uploadFiles": "Upload files",
127
+ "sidebar.refreshExplorer": "Refresh explorer",
128
+ "sidebar.changedFiles": "{count} changed files",
129
+ "sidebar.loading": "Loading...",
130
+ "sidebar.noSessions": "No sessions found",
131
+ "sidebar.agentRunning": "Agent running…",
132
+ "sidebar.newActivity": "New activity",
133
+ "sidebar.newSessionActivity": "New session activity",
134
+ "sidebar.deleteSession": "Delete {title}? This cannot be undone.",
135
+ "sidebar.rename": "Rename",
136
+ "sidebar.pin": "Pin to top",
137
+ "sidebar.unpin": "Unpin",
138
+ "sidebar.pinTask": "Pin task",
139
+ "sidebar.unpinTask": "Unpin task",
140
+ "sidebar.pinned": "Pinned",
141
+ "sidebar.taskRunning": "{count} session(s) running",
142
+ "sidebar.moreActions": "More actions",
143
+ "sidebar.delete": "Delete",
144
+
145
+ "sidebar.expandForks": "Expand forks",
146
+ "sidebar.collapseForks": "Collapse forks",
147
+ "sidebar.taskOpenBoard": "Open board",
148
+ "sidebar.messagesCount": "{count} msgs",
149
+ "sidebar.views": "Views",
150
+ "sidebar.sessionTab": "Sessions",
151
+ "sidebar.boardsTab": "Boards",
152
+ "sidebar.filesTab": "Files",
153
+ "sidebar.tasks": "Tasks",
154
+ "sidebar.tempSessions": "Chat",
155
+ "sidebar.newTask": "New task…",
156
+ "sidebar.taskName": "Task name",
157
+ "sidebar.newTaskSession": "New task session",
158
+ "sidebar.loadMoreSessions": "Load more ({count})",
159
+ "sidebar.resizeTasks": "Drag to resize the tasks area",
160
+ "sidebar.deleteTask": "Delete task",
161
+ "sidebar.deleteTaskConfirm": "Delete task \"{name}\" and its {count} sessions? This cannot be undone.",
162
+ "boards.system": "System",
163
+ "boards.title": "Boards",
164
+ "boards.dragToAdd": "Drag sessions from the sidebar to add",
165
+ "boards.dropToAdd": "Drop to add session",
166
+ "boards.loadingSession": "Loading session…",
167
+ "boards.sessionMissing": "Session no longer exists",
168
+ "boards.collapse": "Collapse",
169
+ "boards.workbenchLimit": "Only one workbench can be expanded at a time",
170
+ "boards.create": "Create",
171
+ "boards.running": "Running",
172
+ "boards.runningDesc": "Auto-collects all running sessions across projects",
173
+ "boards.project": "Project",
174
+ "boards.empty": "No boards yet — create one",
175
+ "boards.new": "New board…",
176
+ "boards.rename": "Rename",
177
+ "boards.delete": "Delete",
178
+ "boards.deleteConfirmTitle": "Delete board?",
179
+ "boards.deleteConfirm": "This deletes the board and its nodes/edges. Sessions themselves are not touched.",
180
+ "boards.cancel": "Cancel",
181
+ "boards.namePlaceholder": "Board name",
182
+ "boards.loadingCanvas": "Loading canvas…",
183
+ "boards.runningEmpty": "No sessions running right now — running sessions appear here automatically.",
184
+ "boards.emptyCanvas": "Empty board — add sessions from the sidebar ({count} nodes)",
185
+ "boards.back": "Back",
186
+ "boards.switchBoard": "Switch board",
187
+ "boards.addSession": "Add session",
188
+ "boards.connect": "Connect",
189
+ "boards.connectDesc": "Connect two cards with a line (click source, then target)",
190
+ "boards.autoLayout": "Auto layout",
191
+ "boards.autoLayoutDesc": "Auto layout is not available yet",
192
+ "boards.cleanup": "Clean up stale",
193
+ "boards.clearDesc": "Clear the canvas (delete all cards/notes/edges)",
194
+ "boards.clearConfirm": "Clear the entire canvas? This cannot be undone.",
195
+ "boards.clearTaskBoardDesc": "Clear the canvas (non-session elements only; session cards stay)",
196
+ "boards.clearTaskConfirm": "Clear the canvas? Notes/edges/text will be removed; session cards stay (session data untouched).",
197
+ "boards.conflictReload": "Canvas was modified by another window/device — loaded the latest version (your unsaved changes were dropped)",
198
+ "boards.reloadCanvas": "Reload canvas (refresh everything from the server)",
199
+ "boards.scrimTitle": "Adjust canvas frost",
200
+ "boards.scrimAlpha": "Opacity",
201
+ "boards.scrimBlur": "Frost strength",
202
+ "boards.noSessions": "No sessions",
203
+ "boards.newSession": "New session",
204
+ "boards.draftPlaceholder": "New session — type a message to start…",
205
+ "boards.searchPlaceholder": "Search cards or notes…",
206
+ "boards.searchNoResults": "No matching items",
207
+ "boards.searchSession": "Session",
208
+ "boards.searchNote": "Note",
209
+ "search.placeholder": "Search sessions…",
210
+ "search.indexing": "Indexing…",
211
+ "search.noResults": "No matching sessions",
212
+ "search.empty": "Type a keyword to search session titles or messages",
213
+ "search.title": "Title",
214
+ "sidebar.worktreePath": "Worktree: {path}",
215
+ "sidebar.removeWorktreeTitle": "Remove worktree checkout {path}; the branch is kept",
216
+ "files.modified": "Modified",
217
+ "files.added": "Added",
218
+ "files.deleted": "Deleted",
219
+ "files.renamed": "Renamed",
220
+ "files.untracked": "Untracked",
221
+ "files.conflict": "Conflict",
222
+ "files.newlyUploaded": "Newly uploaded",
223
+ "files.containsChangedFiles": "Contains changed files",
224
+ "files.insertPath": "Insert path into chat",
225
+ "files.mention": "mention",
226
+ "files.download": "Download file",
227
+ "files.dismissError": "Dismiss error",
228
+ "files.addUploadedFile": "Add uploaded file to chat",
229
+ "files.addAllUploadedFiles": "Add all uploaded files to chat",
230
+ "files.dismissUploadResults": "Dismiss upload results",
231
+ "files.loading": "Loading files...",
232
+ "files.searchPlaceholder": "Search files…",
233
+ "files.noFiles": "No files found",
234
+ "files.explorer": "Explorer",
235
+ "files.changedCount": "{count} files",
236
+ "files.changeStats": "{count} changed files, {additions} lines added, {deletions} lines deleted",
237
+ "files.conflictSummary": "{count} file{countSuffix} already exist: {files}",
238
+ "files.cannotReplace": "Cannot replace: {files}",
239
+ "files.replace": "Replace",
240
+ "files.skipExisting": "Skip existing",
241
+ "files.cancel": "Cancel",
242
+ "files.checking": "Checking files",
243
+ "files.uploading": "Uploading, {progress}%",
244
+ "chat.loadingSession": "Loading session...",
245
+ "chat.runningTool": "Running tool...",
246
+ "chat.generatingToolInput": "Generating parameters...",
247
+ "chat.runningNamedTool": "Running {name}...",
248
+ "chat.runningTools": "Running {names}...",
249
+ "chat.runningToolsMore": "Running {names} (+{count})...",
250
+ "chat.waitingModel": "Waiting for model...",
251
+ "chat.runningCommand": "Running command...",
252
+ "chat.commandBusy": "Running {name}…",
253
+ "chat.thinking": "Thinking...",
254
+ "chat.processDetails": "Process details",
255
+ "chat.message": "message",
256
+ "chat.messages": "messages",
257
+ "chat.toolCall": "tool call",
258
+ "chat.toolCalls": "tool calls",
259
+ "chat.collapseProcess": "Collapse process details",
260
+ "chat.expandProcess": "Expand process details",
261
+ "chat.filesWritten": "Files changed",
262
+ "chat.openWrittenFile": "Open {name}",
263
+ "chat.loadEarlier": "Scroll up to load earlier messages ({count} hidden)",
264
+ "chat.extensionRequest": "extension request",
265
+ "chat.cancel": "Cancel",
266
+ "chat.confirm": "Confirm",
267
+ "chat.submit": "Submit",
268
+ "chat.extensionInput": "Extension terminal input",
269
+ "chat.extensionPanel": "Extension panel",
270
+ "chat.extensionWidgets": "Extension widgets",
271
+ "chat.extensionWidgetAbove": "Above editor widget",
272
+ "chat.extensionWidgetBelow": "Below editor widget",
273
+ "chat.extensionWidgetLine": "{count} line",
274
+ "chat.extensionWidgetLines": "{count} lines",
275
+ "chat.close": "Close",
276
+ "chat.extensionInspect": "inspect",
277
+ "chat.extensionNoDetail": "No details available (try refreshing and retrying)",
278
+ "chat.queued": "Queued · {count}",
279
+ "chat.recall": "Recall to input",
280
+ "chat.recallTitle": "Remove all queued messages and put them back into the input box for editing",
281
+ "chat.retrying": "Retrying ({attempt}/{max})…",
282
+ "chat.loadingCommands": "Loading commands...",
283
+ "chat.slashCommands": "Slash commands · {label}",
284
+ "chat.tabEnter": "Tab / Enter",
285
+ "chat.noCommands": "No extension, prompt, or skill commands found",
286
+ "chat.match": "1 match",
287
+ "chat.matches": "{count} matches",
288
+ "chat.command": "1 command",
289
+ "chat.commands": "{count} commands",
290
+ "chat.loadingFiles": "Loading files...",
291
+ "chat.files": "Files · {label}{hint}",
292
+ "chat.searching": "Searching…",
293
+ "chat.noMatchingFiles": "No matching files",
294
+ "chat.searchingAll": " · searching all files…",
295
+ "chat.indexTruncated": " · index truncated",
296
+ "chat.steerPlaceholder": "Steer now / queue follow-up...",
297
+ "chat.agentPlaceholder": "Agent is running…",
298
+ "chat.messagePlaceholder": "Message… Type / for commands, @ for files",
299
+ "chat.taskPlaceholder": "[{task}] - Message… Type / for commands, @ for files",
300
+ "chat.steer": "Steer",
301
+ "chat.followUp": "Follow-up",
302
+ "chat.send": "Send",
303
+ "chat.attachImage": "Attach image",
304
+ "chat.previewImage": "Preview image",
305
+ "chat.filterModels": "Filter models…",
306
+ "chat.noMatchingModels": "No matching models",
307
+ "chat.showModelId": "Show IDs",
308
+ "chat.moreControls": "More controls",
309
+ "chat.collapseControls": "Collapse controls",
310
+ "chat.shell": "Shell",
311
+ "chat.outputLocal": "output stays local",
312
+ "chat.outputModel": "output sent to model",
313
+ "chat.noTools": "No tools",
314
+ "chat.readOnlyTools": "{count} read-only built-in tools",
315
+ "chat.builtInTools": "{count} built-in tools",
316
+ "chat.allBuiltInTools": "All built-in tools",
317
+ "chat.changeReasoning": "Change reasoning level: {level}",
318
+ "chat.changeReasoningLabel": "Change reasoning level",
319
+ "chat.changeToolPreset": "Change tool preset",
320
+ "chat.stopCompaction": "Stop compaction",
321
+ "chat.compactContext": "Compact context",
322
+ "chat.compacting": "Compacting…",
323
+ "chat.compact": "Compact",
324
+ "chat.scrollToLatest": "Back to latest",
325
+ "bg.title": "Wallpaper",
326
+ "bg.choose": "Choose image…",
327
+ "bg.replace": "Replace image…",
328
+ "bg.remove": "Remove wallpaper",
329
+ "bg.hint": "The original file is stored locally in your browser — never re-encoded or uploaded.",
330
+ "bg.repeat": "Tile horizontally",
331
+ "bg.fill": "Edge colour fill",
332
+ "bg.adjust": "Adjust horizontal position…",
333
+ "bg.adjustHint": "Drag left / right to reposition",
334
+ "bg.adjustDone": "Done",
335
+ "bg.reset": "Reset position",
336
+ "bg.bubbleOpacity": "Bubble opacity",
337
+ "bg.bubbleBlur": "Frost blur",
338
+ "bg.bubbleReset": "Reset bubbles",
339
+ "chat.stopAgent": "Stop agent",
340
+ "chat.stop": "Stop",
341
+ "chat.disableSound": "Disable completion sound",
342
+ "chat.enableSound": "Enable completion sound",
343
+ "chat.thinkingUseDefault": "Use pi default",
344
+ "chat.thinkingOff": "Reasoning off",
345
+ "chat.thinkingMinimal": "Minimal reasoning",
346
+ "chat.thinkingLow": "Low reasoning",
347
+ "chat.thinkingMedium": "Medium reasoning",
348
+ "chat.thinkingHigh": "High reasoning",
349
+ "chat.thinkingXhigh": "Extra-high reasoning",
350
+ "chat.thinkingMax": "Max reasoning",
351
+ "chat.builtIn": "Built-in",
352
+ "chat.extensions": "Extensions",
353
+ "chat.prompts": "Prompts",
354
+ "chat.skills": "Skills",
355
+ "chat.dormant": "dormant",
356
+ "chat.commandCompact": "Compress context, optionally with instructions",
357
+ "chat.commandReload": "Reload extensions, skills, prompts, and tools",
358
+ "chat.commandName": "Set the session display name",
359
+ "chat.commandSession": "Show session message, token, and cost stats",
360
+ "chat.commandCopy": "Copy the last assistant message",
361
+ "chat.compacted": "Compacted",
362
+ "chat.tokensSaved": "{saved} saved",
363
+ "i18n.close": "Close",
364
+ "i18n.copy": "Copy",
365
+ "i18n.pin": "Pin",
366
+ "i18n.pinTitle": "Pin this message (creates a draggable/resizable float)",
367
+ "i18n.copied": "Copied",
368
+ "i18n.cancel": "Cancel",
369
+ "i18n.save": "Save",
370
+ "i18n.saving": "Saving…",
371
+ "i18n.saved": "Saved",
372
+ "i18n.remove": "Remove",
373
+ "i18n.removing": "Removing…",
374
+ "i18n.delete": "Delete",
375
+ "i18n.loading": "Loading...",
376
+ "i18n.search": "Search",
377
+ "i18n.refresh": "Refresh",
378
+ "i18n.update": "Update",
379
+ "i18n.updating": "Updating...",
380
+ "i18n.check": "Check",
381
+ "i18n.checking": "Checking...",
382
+ "i18n.install": "Install",
383
+ "i18n.installing": "Installing...",
384
+ "i18n.noResults": "No results",
385
+ "i18n.searchProviders": "Search providers…",
386
+ "i18n.noProviders": "No providers match",
387
+ "i18n.newModel": "new model",
388
+ "i18n.addProvider": "Add provider",
389
+ "i18n.selectProviderModel": "Select a provider or model",
390
+ "i18n.visibleInPrompt": "Visible in model prompt — click to disable",
391
+ "i18n.hiddenFromPrompt": "Hidden from model prompt — click to enable",
392
+ "i18n.dormant": "Dormant",
393
+ "i18n.hiddenButInvocable": "Hidden from model, still manually invocable",
394
+ "i18n.skillSearchPlaceholder": "e.g. react, testing, deploy",
395
+ "i18n.searching": "Searching…",
396
+ "i18n.noSkills": "No skills found",
397
+ "i18n.checkUpdates": "Check updates",
398
+ "i18n.updates": "updates",
399
+ "i18n.noResolvedResources": "No resolved resources",
400
+ "i18n.enablePackage": "Enable package",
401
+ "i18n.disablePackage": "Disable package",
402
+ "i18n.filtered": "filtered",
403
+ "i18n.openSessionToReload": "Open a session to reload",
404
+ "i18n.notFound": "Not found",
405
+ "i18n.noPlugins": "No plugins configured",
406
+ "trust.resourcesNotLoaded": "Restricted mode",
407
+ "trust.trustProject": "Trust project",
408
+ "trust.trusting": "Trusting...",
409
+ "trust.cancel": "Cancel",
410
+ "trust.dialogTitle": "Trust this project?",
411
+ "trust.dialogBody": "Project resources can run local code. Trust only projects whose contents you know.",
412
+ "trust.skillsNotLoaded": "Project skills are not loaded because this project is not trusted.",
413
+ "trust.pluginsNotLoaded": "Project plugins are not loaded because this project is not trusted.",
414
+ "trust.projectScopeUnavailable": "Project installs are unavailable while project resources are not loaded.",
415
+ "i18n.creatingSession": "Creating new session…",
416
+ "i18n.creating": "Creating…",
417
+ "i18n.subscription": "Subscription",
418
+ "i18n.subscriptions": "Subscriptions",
419
+ "i18n.customEndpoint": "Custom endpoint format",
420
+ "i18n.noChanges": "No changes",
421
+ "i18n.branches": "Branches",
422
+ "i18n.noActiveSession": "No active session",
423
+ "i18n.noBranches": "This session has no branches",
424
+ "i18n.source": "Source",
425
+ "i18n.preview": "Preview",
426
+ "i18n.diff": "Diff",
427
+ "i18n.downloadFile": "Download file",
428
+ "i18n.liveSync": "Live sync active",
429
+ "i18n.notWatching": "Not watching",
430
+ "i18n.fileViewMode": "File view mode",
431
+ "i18n.compareHead": "Compare working tree with HEAD",
432
+ "i18n.mentionSelectedLines": "Mention selected lines",
433
+ "i18n.disableWrap": "Disable word wrap",
434
+ "i18n.enableWrap": "Enable word wrap",
435
+ "i18n.htmlPreview": "HTML preview",
436
+ "i18n.previewFile": "Preview {file}",
437
+ "i18n.invalidMermaid": "Invalid Mermaid diagram",
438
+ "i18n.renderingMermaid": "Rendering Mermaid diagram",
439
+ "i18n.previewAfterStreaming": "Preview available after streaming",
440
+ "i18n.showMermaidSource": "Show Mermaid source",
441
+ "i18n.previewMermaid": "Preview Mermaid diagram",
442
+ "i18n.openMermaidViewer": "Open diagram viewer",
443
+ "i18n.mermaidViewer": "Mermaid diagram viewer",
444
+ "i18n.mermaidDiagram": "Mermaid diagram",
445
+ "i18n.zoomOut": "Zoom out",
446
+ "i18n.zoomIn": "Zoom in",
447
+ "i18n.fitToWidth": "Fit to width",
448
+ "models.discoveryFetching": "Importing models…",
449
+ "models.discoveryFetch": "Import models…",
450
+ "models.discoveryFilterPlaceholder": "Filter {count} models…",
451
+ "models.discoveryFilter": "Filter upstream models",
452
+ "models.discoverySelectShown": "Select shown",
453
+ "models.discoveryNoMatches": "No matching models.",
454
+ "models.discoveryAdded": "added",
455
+ "models.discoveryShowing": "Showing first {shown} of {total}",
456
+ "models.discoveryFetched": "{count} models fetched",
457
+ "models.discoveryAddSelected": "Add selected",
458
+ "models.discoveryAddSelectedCount": "Add selected ({count})",
459
+ "models.catalogSource": "source: models.dev ↗",
460
+ "models.catalogFilling": "Filling details…",
461
+ "models.catalogFill": "Fill model details",
462
+ "models.catalogFilled": "{count} fields filled",
463
+ "models.catalogNoEmptyFields": "No empty fields to fill",
464
+ "models.catalogNoExactMatch": "No exact models.dev match",
465
+ "models.catalogPriceProvider": "Price matched Provider {provider}",
466
+ "models.catalogPriceBaseUrl": "Price matched Base URL to {provider}",
467
+ "models.catalogPriceConsensus": "Price agreed by {support}/{total} records",
468
+ "models.catalogPriceUnreliable": "No reliable price found",
469
+ "models.catalogUndo": "Undo",
470
+ "models.capabilities": "Capabilities",
471
+ "models.reasoning": "Reasoning / thinking",
472
+ "models.imageInput": "Image input",
473
+ "models.modelSpecs": "Model specifications",
474
+ "models.contextWindow": "Context window (tokens)",
475
+ "models.maxOutputTokens": "Max output tokens",
476
+ "models.costPerMillion": "Cost per million tokens",
477
+ "models.costInput": "Input",
478
+ "models.costOutput": "Output",
479
+ "models.costCacheRead": "Cache read",
480
+ "models.costCacheWrite": "Cache write",
481
+ "models.notProvided": "Not provided",
482
+ "models.editCosts": "Edit prices",
483
+ "models.finishEditingCosts": "Done",
484
+ "models.costAllRequired": "Enter a valid non-negative price; blank fields are saved as 0.",
485
+ "models.advancedSettings": "Advanced settings",
486
+ "models.providerDefaults": "Using provider defaults",
487
+ "models.headersSummary": "Headers: {count}",
488
+ "models.compatSummary": "Compatibility: {count}",
489
+ "models.thinkingSummary": "Thinking levels: {count}",
490
+ "models.apiOverride": "API override",
491
+ "models.headers": "Headers",
492
+ "models.headersHelp": "Added to this model's requests and overrides provider headers.",
493
+ "models.compatibility": "Compatibility",
494
+ "models.deepSeekThinkingCompat": "DeepSeek thinking compatibility",
495
+ "models.developerRole": "Use the developer role for the system prompt",
496
+ "models.thinkingLevelMap": "Thinking level map",
497
+ "models.clearAll": "Clear all",
498
+ "i18n.testingModel": "Testing model connection...",
499
+ "i18n.connected": "Connected",
500
+ "i18n.failed": "Failed",
501
+ "i18n.test": "Test",
502
+ "i18n.testConnection": "Test model connection",
503
+ "i18n.provider": "Provider",
504
+ "i18n.model": "Model",
505
+ "i18n.providerName": "Provider name",
506
+ "i18n.rename": "Rename",
507
+ "i18n.default": "Default",
508
+ "i18n.disabled": "Disabled",
509
+ "i18n.noResources": "No resources",
510
+ "i18n.unknown": "Unknown",
511
+ "i18n.installedVersion": "installed {version}",
512
+ "i18n.configuredVersion": "configured {version}",
513
+ "i18n.extensions": "Extensions",
514
+ "i18n.prompts": "Prompts",
515
+ "i18n.themes": "Themes",
516
+ "i18n.resourceCount": "{count} {label}",
517
+ "i18n.extensionShort": "ext",
518
+ "i18n.skillShort": "skills",
519
+ "i18n.promptShort": "prompts",
520
+ "i18n.themeShort": "themes",
521
+ "i18n.custom": "Custom",
522
+ "i18n.clearAll": "clear all",
523
+ "i18n.connectedSuccessfully": "Connected successfully.",
524
+ "i18n.notConnected": "not connected",
525
+ "i18n.configured": "configured",
526
+ "i18n.notConfigured": "not configured",
527
+ "i18n.openingBrowser": "Opening browser…",
528
+ "i18n.submit": "Submit",
529
+ "i18n.login": "Login",
530
+ "i18n.relogin": "Re-login",
531
+ "i18n.disconnect": "Disconnect",
532
+ "i18n.networkError": "Network error",
533
+ "i18n.continuing": "Continuing…",
534
+ "i18n.skills": "Skills",
535
+ "i18n.plugins": "Plugins",
536
+ "i18n.addSkill": "Add skill",
537
+ "i18n.addPlugin": "Add plugin",
538
+ "i18n.selectSkill": "Select a skill",
539
+ "i18n.selectPackage": "Select a package",
540
+ "i18n.updateAvailable": "Update available",
541
+ "i18n.upToDate": "Up to date",
542
+ "i18n.automaticChecksUnavailable": "Automatic checks unavailable",
543
+ "i18n.checkFailed": "Check failed",
544
+ "i18n.installed": "Installed",
545
+ "i18n.status": "Status",
546
+ "i18n.version": "Version",
547
+ "i18n.package": "Package",
548
+ "i18n.resources": "Resources",
549
+ "i18n.installedPath": "Installed path",
550
+ "i18n.cwd": "CWD",
551
+ "i18n.resolvedResources": "Resolved Resources",
552
+ "i18n.reloadSession": "Reload session",
553
+ "i18n.reloading": "Reloading...",
554
+ "i18n.packageRemoved": "Package removed.",
555
+ "i18n.packageInstalled": "Package installed.",
556
+ "i18n.packageUpdated": "Package updated.",
557
+ "i18n.packageDisabled": "Package disabled.",
558
+ "i18n.packageEnabled": "Package enabled.",
559
+ "i18n.sessionReloaded": "Session reloaded.",
560
+ "i18n.thinking": "Thinking",
561
+ "i18n.largeMessageReveal": "Message content is very large ({size}). Click to view as plain text — markdown rendering is disabled to keep the page responsive.",
562
+ "i18n.loadingThinking": "Loading thinking...",
563
+ "i18n.copyMessage": "Copy message",
564
+ "i18n.editFromHere": "Edit from here",
565
+ "i18n.editFromHereTitle": "Edit from here — branches within this session",
566
+ "i18n.newSession": "New session",
567
+ "i18n.newSessionTitle": "New session — creates an independent copy from here",
568
+ "i18n.estimatedTokens": "Estimated token count while streaming",
569
+ "i18n.noOutput": "(no output)",
570
+ "i18n.noSummary": "(no summary)",
571
+ "i18n.conversationCompacted": "Conversation compacted",
572
+ "i18n.compactionDescription": "The conversation history before this point was compacted into the following summary:",
573
+ "i18n.fileContext": "File context: {details}",
574
+ "i18n.readFiles": "Read files",
575
+ "i18n.modifiedFiles": "Modified files",
576
+ "i18n.hiddenExtensionMessage": "hidden extension message",
577
+ "i18n.noMessage": "(no message)",
578
+ "i18n.showExtensionMessage": "Show extension message",
579
+ "i18n.collapse": "Collapse",
580
+ "i18n.expand": "Expand",
581
+ "i18n.hideDetails": "Hide details",
582
+ "i18n.showDetails": "Show details",
583
+ "i18n.thinkingUnavailable": "Thinking content unavailable",
584
+ "i18n.before": "Before",
585
+ "i18n.after": "After",
586
+ "i18n.sessionComplete": "Session complete",
587
+ "i18n.taskFinished": "Task finished.",
588
+ "i18n.attentionNeeded": "Pi needs your attention",
589
+ "i18n.extensionInputNeeded": "An extension is waiting for your input.",
590
+ "todo.title": "Tasks",
591
+ "todo.completed": "completed",
592
+ "todo.empty": "No active tasks. Ask the agent to add some!",
593
+ "notice.title": "Notifications",
594
+ "notice.empty": "No notifications",
595
+ "notice.expand": "Expand details",
596
+ "notice.collapse": "Collapse",
597
+ "notice.remove": "Remove notification",
598
+ "notice.clearAll": "Clear all",
599
+ "terminal.title": "Terminal",
600
+ "terminal.new": "New terminal",
601
+ "terminal.all": "All terminals",
602
+ "terminal.exited": "exited",
603
+ "terminal.cleanupDisconnected": "Remove disconnected terminals",
604
+ "terminal.empty": "No terminal sessions",
605
+ "terminal.createFirst": "Create a terminal session",
606
+ "terminal.close": "Kill process and close",
607
+ "terminal.resize": "Drag to resize terminal",
608
+ "terminal.drag": "Drag to move terminal",
609
+ "mcp.sectionTitle": "MCP servers",
610
+ "mcp.addButton": "Add MCP",
611
+ "mcp.emptyList": "No MCP servers yet. Click \"Add MCP\" below to create one.",
612
+ "mcp.emptyDetail": "Select an MCP server on the left, or click \"Add MCP\".",
613
+ "mcp.itemEnabled": "enabled",
614
+ "mcp.itemDisabled": "disabled",
615
+ "mcp.addTitle": "Add MCP server",
616
+ "mcp.editTitle": "Edit MCP: {name}",
617
+ "mcp.modeBasic": "Basic",
618
+ "mcp.modeJson": "JSON advanced",
619
+ "mcp.nameLabel": "Name",
620
+ "mcp.namePlaceholder": "e.g. github",
621
+ "mcp.specLabel": "Command or URL (http/https is treated as a URL)",
622
+ "mcp.specPlaceholder": "npx -y @modelcontextprotocol/server-github or https://example.com/mcp",
623
+ "mcp.argsLabel": "Extra args (optional, space separated)",
624
+ "mcp.jsonLabel": "Server definition (JSON) - all fields supported: command/url/socket, args, env, lifecycle, directTools, timeout",
625
+ "mcp.loadingDef": "Loading config...",
626
+ "mcp.jsonEmpty": "JSON cannot be empty",
627
+ "mcp.jsonParseError": "JSON parse failed: {message}",
628
+ "mcp.jsonNotObject": "JSON must be an object, e.g. {\"command\":\"npx\",\"args\":[\"-y\",\"...\"]}",
629
+ "mcp.jsonNeedsEntry": "JSON must contain command, url or socket",
630
+ "mcp.save": "Save",
631
+ "mcp.saveEdit": "Save changes",
632
+ "mcp.saving": "Saving...",
633
+ "mcp.cancel": "Cancel",
634
+ "mcp.enable": "Enable",
635
+ "mcp.disable": "Disable",
636
+ "mcp.disabledBadge": "Disabled",
637
+ "mcp.test": "Test connection",
638
+ "mcp.testing": "Testing...",
639
+ "mcp.edit": "Edit",
640
+ "mcp.delete": "Delete",
641
+ "mcp.moveToGlobal": "Move to global",
642
+ "mcp.moveToProject": "Move to project",
643
+ "mcp.kindCommand": "Command",
644
+ "mcp.kindUrl": "URL",
645
+ "mcp.kindSocket": "Socket",
646
+ "mcp.fieldType": "Type",
647
+ "mcp.fieldArgs": "Args",
648
+ "mcp.fieldEnv": "Env vars",
649
+ "mcp.fieldOptions": "Options",
650
+ "mcp.fieldSource": "Source",
651
+ "mcp.fieldCwd": "CWD",
652
+ "mcp.msgEnabled": "Enabled {name} (run /reload to apply)",
653
+ "mcp.msgDisabled": "Disabled {name} (run /reload to apply)",
654
+ "mcp.msgDeleted": "Deleted {name}",
655
+ "mcp.msgMoved": "Moved {name} to {scope} (run /reload to apply)",
656
+ "mcp.msgUpdated": "Updated {name} (run /reload to apply)",
657
+ "mcp.msgAdded": "Added {name} (run /reload to apply)",
658
+ "mcp.msgTestResult": "Test {name}: {result}",
659
+ "mcp.msgTestError": "Test {name}: {error}",
660
+ "common.close": "Close",
661
+ },
662
+ };