@henlii/pidance 0.1.3 → 0.2.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 (271) hide show
  1. package/.next/BUILD_ID +1 -1
  2. package/.next/app-path-routes-manifest.json +14 -9
  3. package/.next/build-manifest.json +2 -2
  4. package/.next/prerender-manifest.json +3 -3
  5. package/.next/required-server-files.json +6 -2
  6. package/.next/routes-manifest.json +36 -6
  7. package/.next/server/app/_global-error/page.js +3 -3
  8. package/.next/server/app/_global-error/page_client-reference-manifest.js +1 -1
  9. package/.next/server/app/_global-error.html +1 -1
  10. package/.next/server/app/_global-error.rsc +1 -1
  11. package/.next/server/app/_global-error.segments/_full.segment.rsc +1 -1
  12. package/.next/server/app/_global-error.segments/_global-error/__PAGE__.segment.rsc +1 -1
  13. package/.next/server/app/_global-error.segments/_global-error.segment.rsc +1 -1
  14. package/.next/server/app/_global-error.segments/_head.segment.rsc +1 -1
  15. package/.next/server/app/_global-error.segments/_index.segment.rsc +1 -1
  16. package/.next/server/app/_global-error.segments/_tree.segment.rsc +1 -1
  17. package/.next/server/app/_not-found/page.js +2 -2
  18. package/.next/server/app/_not-found/page_client-reference-manifest.js +1 -1
  19. package/.next/server/app/_not-found.html +1 -1
  20. package/.next/server/app/_not-found.rsc +3 -3
  21. package/.next/server/app/_not-found.segments/_full.segment.rsc +3 -3
  22. package/.next/server/app/_not-found.segments/_head.segment.rsc +1 -1
  23. package/.next/server/app/_not-found.segments/_index.segment.rsc +3 -3
  24. package/.next/server/app/_not-found.segments/_not-found/__PAGE__.segment.rsc +1 -1
  25. package/.next/server/app/_not-found.segments/_not-found.segment.rsc +1 -1
  26. package/.next/server/app/_not-found.segments/_tree.segment.rsc +2 -2
  27. package/.next/server/app/api/about/route.js +1 -1
  28. package/.next/server/app/api/agent/[id]/bash-output/route.js +1 -1
  29. package/.next/server/app/api/agent/[id]/events/route.js +2 -2
  30. package/.next/server/app/api/agent/[id]/route.js +1 -1
  31. package/.next/server/app/api/agent/new/route.js +1 -1
  32. package/.next/server/app/api/agent/running/events/route.js +2 -2
  33. package/.next/server/app/api/agent/running/route.js +1 -1
  34. package/.next/server/app/api/agent-settings/route.js +2 -2
  35. package/.next/server/app/api/attachments/route.js +1 -1
  36. package/.next/server/app/api/auth/all-providers/route.js +1 -1
  37. package/.next/server/app/api/auth/api-key/[provider]/route.js +1 -1
  38. package/.next/server/app/api/auth/login/[provider]/route.js +2 -2
  39. package/.next/server/app/api/auth/logout/[provider]/route.js +1 -1
  40. package/.next/server/app/api/auth/providers/route.js +1 -1
  41. package/.next/server/app/api/auth/ui-session/route.js +1 -1
  42. package/.next/server/app/api/cwd/browse/route.js +1 -1
  43. package/.next/server/app/api/cwd/validate/route.js +1 -1
  44. package/.next/server/app/api/default-cwd/route.js +1 -1
  45. package/.next/server/app/api/file-index/route.js +1 -1
  46. package/.next/server/app/api/files/[...path]/route.js +5 -5
  47. package/.next/server/app/api/git/diff/route.js +1 -1
  48. package/.next/server/app/api/git/status/route.js +1 -1
  49. package/.next/server/app/api/home/route.js +1 -1
  50. package/.next/server/app/api/models/route.js +1 -1
  51. package/.next/server/app/api/models-config/raw/route.js +1 -0
  52. package/.next/server/app/api/models-config/raw/route_client-reference-manifest.js +1 -0
  53. package/.next/server/app/api/models-config/route.js +1 -1
  54. package/.next/server/app/api/models-config/test/route.js +1 -1
  55. package/.next/server/app/api/plugins/route.js +1 -2
  56. package/.next/server/app/api/plugins/search/route.js +1 -0
  57. package/.next/server/app/api/{runtime/switch → plugins/search}/route_client-reference-manifest.js +1 -1
  58. package/.next/server/app/api/plugins/updates/route.js +1 -0
  59. package/.next/server/app/api/plugins/updates/route_client-reference-manifest.js +1 -0
  60. package/.next/server/app/api/preferences/route.js +1 -0
  61. package/.next/server/app/api/preferences/route_client-reference-manifest.js +1 -0
  62. package/.next/server/app/api/project-assets/route.js +13 -0
  63. package/.next/server/app/api/project-assets/route_client-reference-manifest.js +1 -0
  64. package/.next/server/app/api/prompts/route.js +1 -0
  65. package/.next/server/app/api/{runtime → prompts}/route_client-reference-manifest.js +1 -1
  66. package/.next/server/app/api/sessions/[id]/archive/route.js +1 -1
  67. package/.next/server/app/api/sessions/[id]/auto-name/route.js +4 -4
  68. package/.next/server/app/api/sessions/[id]/command-entry/route.js +1 -1
  69. package/.next/server/app/api/sessions/[id]/context/route.js +1 -1
  70. package/.next/server/app/api/sessions/[id]/entries/[entryId]/thinking/route.js +1 -1
  71. package/.next/server/app/api/sessions/[id]/export/route.js +17 -17
  72. package/.next/server/app/api/sessions/[id]/info/route.js +1 -1
  73. package/.next/server/app/api/sessions/[id]/route.js +1 -1
  74. package/.next/server/app/api/sessions/[id]/state/route.js +1 -1
  75. package/.next/server/app/api/sessions/[id]/tool-results/[toolCallId]/route.js +1 -1
  76. package/.next/server/app/api/sessions/route.js +1 -1
  77. package/.next/server/app/api/sessions/search/route.js +3 -3
  78. package/.next/server/app/api/settings/raw/route.js +2 -0
  79. package/.next/server/app/api/settings/raw/route_client-reference-manifest.js +1 -0
  80. package/.next/server/app/api/skills/check/route.js +1 -1
  81. package/.next/server/app/api/skills/install/route.js +1 -1
  82. package/.next/server/app/api/skills/route.js +2 -2
  83. package/.next/server/app/api/skills/search/route.js +1 -1
  84. package/.next/server/app/api/skills/update/route.js +1 -1
  85. package/.next/server/app/api/subagent-runs/route.js +1 -1
  86. package/.next/server/app/api/update/apply/route.js +4 -2
  87. package/.next/server/app/api/update/check/route.js +2 -2
  88. package/.next/server/app/api/worktrees/route.js +1 -1
  89. package/.next/server/app/icon.png/route.js +1 -1
  90. package/.next/server/app/index.html +1 -1
  91. package/.next/server/app/index.rsc +5 -5
  92. package/.next/server/app/index.segments/__PAGE__.segment.rsc +3 -3
  93. package/.next/server/app/index.segments/_full.segment.rsc +5 -5
  94. package/.next/server/app/index.segments/_head.segment.rsc +1 -1
  95. package/.next/server/app/index.segments/_index.segment.rsc +3 -3
  96. package/.next/server/app/index.segments/_tree.segment.rsc +2 -2
  97. package/.next/server/app/page.js +6 -6
  98. package/.next/server/app/page_client-reference-manifest.js +1 -1
  99. package/.next/server/app-paths-manifest.json +14 -9
  100. package/.next/server/chunks/188.js +1 -1
  101. package/.next/server/chunks/2325.js +1 -1
  102. package/.next/server/chunks/3960.js +1 -1
  103. package/.next/server/chunks/5319.js +1 -1
  104. package/.next/server/chunks/5582.js +1 -0
  105. package/.next/server/chunks/6192.js +1 -1
  106. package/.next/server/chunks/7561.js +1 -1
  107. package/.next/server/chunks/7594.js +1 -0
  108. package/.next/server/chunks/8359.js +2 -0
  109. package/.next/server/chunks/981.js +1 -1
  110. package/.next/server/chunks/9874.js +1 -1
  111. package/.next/server/instrumentation.js +1 -1
  112. package/.next/server/middleware-build-manifest.js +1 -1
  113. package/.next/server/middleware.js +2 -2
  114. package/.next/server/pages/404.html +1 -1
  115. package/.next/server/pages/500.html +1 -1
  116. package/.next/server/server-reference-manifest.json +1 -1
  117. package/.next/server/webpack-runtime.js +1 -1
  118. package/.next/static/chunks/1-71e25539dfd4d39d.js +1 -0
  119. package/.next/static/chunks/9780-f1bf37996f7894e3.js +1 -0
  120. package/.next/static/chunks/app/_global-error/page-c74291295bcd24a9.js +1 -0
  121. package/.next/static/chunks/app/api/about/route-c74291295bcd24a9.js +1 -0
  122. package/.next/static/chunks/app/api/agent/[id]/bash-output/route-c74291295bcd24a9.js +1 -0
  123. package/.next/static/chunks/app/api/agent/[id]/events/route-c74291295bcd24a9.js +1 -0
  124. package/.next/static/chunks/app/api/agent/[id]/route-c74291295bcd24a9.js +1 -0
  125. package/.next/static/chunks/app/api/agent/new/route-c74291295bcd24a9.js +1 -0
  126. package/.next/static/chunks/app/api/agent/running/events/route-c74291295bcd24a9.js +1 -0
  127. package/.next/static/chunks/app/api/agent/running/route-c74291295bcd24a9.js +1 -0
  128. package/.next/static/chunks/app/api/agent-settings/route-c74291295bcd24a9.js +1 -0
  129. package/.next/static/chunks/app/api/attachments/route-c74291295bcd24a9.js +1 -0
  130. package/.next/static/chunks/app/api/auth/all-providers/route-c74291295bcd24a9.js +1 -0
  131. package/.next/static/chunks/app/api/auth/api-key/[provider]/route-c74291295bcd24a9.js +1 -0
  132. package/.next/static/chunks/app/api/auth/login/[provider]/route-c74291295bcd24a9.js +1 -0
  133. package/.next/static/chunks/app/api/auth/logout/[provider]/route-c74291295bcd24a9.js +1 -0
  134. package/.next/static/chunks/app/api/auth/providers/route-c74291295bcd24a9.js +1 -0
  135. package/.next/static/chunks/app/api/auth/ui-session/route-c74291295bcd24a9.js +1 -0
  136. package/.next/static/chunks/app/api/cwd/browse/route-c74291295bcd24a9.js +1 -0
  137. package/.next/static/chunks/app/api/cwd/validate/route-c74291295bcd24a9.js +1 -0
  138. package/.next/static/chunks/app/api/default-cwd/route-c74291295bcd24a9.js +1 -0
  139. package/.next/static/chunks/app/api/file-index/route-c74291295bcd24a9.js +1 -0
  140. package/.next/static/chunks/app/api/files/[...path]/route-c74291295bcd24a9.js +1 -0
  141. package/.next/static/chunks/app/api/git/diff/route-c74291295bcd24a9.js +1 -0
  142. package/.next/static/chunks/app/api/git/status/route-c74291295bcd24a9.js +1 -0
  143. package/.next/static/chunks/app/api/home/route-c74291295bcd24a9.js +1 -0
  144. package/.next/static/chunks/app/api/models/route-c74291295bcd24a9.js +1 -0
  145. package/.next/static/chunks/app/api/models-config/raw/route-c74291295bcd24a9.js +1 -0
  146. package/.next/static/chunks/app/api/models-config/route-c74291295bcd24a9.js +1 -0
  147. package/.next/static/chunks/app/api/models-config/test/route-c74291295bcd24a9.js +1 -0
  148. package/.next/static/chunks/app/api/plugins/route-c74291295bcd24a9.js +1 -0
  149. package/.next/static/chunks/app/api/plugins/search/route-c74291295bcd24a9.js +1 -0
  150. package/.next/static/chunks/app/api/plugins/updates/route-c74291295bcd24a9.js +1 -0
  151. package/.next/static/chunks/app/api/preferences/route-c74291295bcd24a9.js +1 -0
  152. package/.next/static/chunks/app/api/project-assets/route-c74291295bcd24a9.js +1 -0
  153. package/.next/static/chunks/app/api/prompts/route-c74291295bcd24a9.js +1 -0
  154. package/.next/static/chunks/app/api/sessions/[id]/archive/route-c74291295bcd24a9.js +1 -0
  155. package/.next/static/chunks/app/api/sessions/[id]/auto-name/route-c74291295bcd24a9.js +1 -0
  156. package/.next/static/chunks/app/api/sessions/[id]/command-entry/route-c74291295bcd24a9.js +1 -0
  157. package/.next/static/chunks/app/api/sessions/[id]/context/route-c74291295bcd24a9.js +1 -0
  158. package/.next/static/chunks/app/api/sessions/[id]/entries/[entryId]/thinking/route-c74291295bcd24a9.js +1 -0
  159. package/.next/static/chunks/app/api/sessions/[id]/export/route-c74291295bcd24a9.js +1 -0
  160. package/.next/static/chunks/app/api/sessions/[id]/info/route-c74291295bcd24a9.js +1 -0
  161. package/.next/static/chunks/app/api/sessions/[id]/route-c74291295bcd24a9.js +1 -0
  162. package/.next/static/chunks/app/api/sessions/[id]/state/route-c74291295bcd24a9.js +1 -0
  163. package/.next/static/chunks/app/api/sessions/[id]/tool-results/[toolCallId]/route-c74291295bcd24a9.js +1 -0
  164. package/.next/static/chunks/app/api/sessions/route-c74291295bcd24a9.js +1 -0
  165. package/.next/static/chunks/app/api/sessions/search/route-c74291295bcd24a9.js +1 -0
  166. package/.next/static/chunks/app/api/settings/raw/route-c74291295bcd24a9.js +1 -0
  167. package/.next/static/chunks/app/api/skills/check/route-c74291295bcd24a9.js +1 -0
  168. package/.next/static/chunks/app/api/skills/install/route-c74291295bcd24a9.js +1 -0
  169. package/.next/static/chunks/app/api/skills/route-c74291295bcd24a9.js +1 -0
  170. package/.next/static/chunks/app/api/skills/search/route-c74291295bcd24a9.js +1 -0
  171. package/.next/static/chunks/app/api/skills/update/route-c74291295bcd24a9.js +1 -0
  172. package/.next/static/chunks/app/api/subagent-runs/route-c74291295bcd24a9.js +1 -0
  173. package/.next/static/chunks/app/api/update/apply/route-c74291295bcd24a9.js +1 -0
  174. package/.next/static/chunks/app/api/update/check/route-c74291295bcd24a9.js +1 -0
  175. package/.next/static/chunks/app/api/worktrees/route-c74291295bcd24a9.js +1 -0
  176. package/.next/static/chunks/app/page-70c6f7b44782cf46.js +25 -0
  177. package/.next/static/chunks/next/dist/client/components/builtin/app-error-c74291295bcd24a9.js +1 -0
  178. package/.next/static/chunks/next/dist/client/components/builtin/forbidden-c74291295bcd24a9.js +1 -0
  179. package/.next/static/chunks/next/dist/client/components/builtin/not-found-c74291295bcd24a9.js +1 -0
  180. package/.next/static/chunks/next/dist/client/components/builtin/unauthorized-c74291295bcd24a9.js +1 -0
  181. package/.next/static/css/{08fde228db4b094f.css → 3f30d6a75b867678.css} +1 -1
  182. package/.next/static/l9Mw1Wc-mHEZSNYCeXd3z/_buildManifest.js +1 -0
  183. package/README.en.md +25 -10
  184. package/README.md +26 -10
  185. package/README.zh-CN.md +32 -2
  186. package/bin/pidance.js +17 -0
  187. package/package.json +4 -6
  188. package/.next/server/app/api/runtime/route.js +0 -1
  189. package/.next/server/app/api/runtime/switch/route.js +0 -1
  190. package/.next/server/chunks/1734.js +0 -1
  191. package/.next/server/chunks/1965.js +0 -8
  192. package/.next/server/chunks/2537.js +0 -1
  193. package/.next/server/chunks/2817.js +0 -17
  194. package/.next/server/chunks/3115.js +0 -4
  195. package/.next/server/chunks/3504.js +0 -1
  196. package/.next/server/chunks/3533.js +0 -1293
  197. package/.next/server/chunks/3603.js +0 -1
  198. package/.next/server/chunks/3757.js +0 -1
  199. package/.next/server/chunks/3776.js +0 -1
  200. package/.next/server/chunks/4188.js +0 -1
  201. package/.next/server/chunks/443.js +0 -32
  202. package/.next/server/chunks/6454.js +0 -28
  203. package/.next/server/chunks/7075.js +0 -1
  204. package/.next/server/chunks/7129.js +0 -6
  205. package/.next/server/chunks/7527.js +0 -1
  206. package/.next/server/chunks/8213.js +0 -1
  207. package/.next/server/chunks/8875.js +0 -2
  208. package/.next/server/chunks/9071.js +0 -1
  209. package/.next/server/chunks/951.js +0 -8
  210. package/.next/server/chunks/9784.js +0 -2
  211. package/.next/server/chunks/9883.js +0 -2
  212. package/.next/static/Y_GKPks6Yv2rUhwcLuaB0/_buildManifest.js +0 -1
  213. package/.next/static/chunks/5531-66b1a21ff1c52081.js +0 -1
  214. package/.next/static/chunks/9780-3a70190d23b25b10.js +0 -1
  215. package/.next/static/chunks/app/_global-error/page-81852e4fa8c48c17.js +0 -1
  216. package/.next/static/chunks/app/api/about/route-81852e4fa8c48c17.js +0 -1
  217. package/.next/static/chunks/app/api/agent/[id]/bash-output/route-81852e4fa8c48c17.js +0 -1
  218. package/.next/static/chunks/app/api/agent/[id]/events/route-81852e4fa8c48c17.js +0 -1
  219. package/.next/static/chunks/app/api/agent/[id]/route-81852e4fa8c48c17.js +0 -1
  220. package/.next/static/chunks/app/api/agent/new/route-81852e4fa8c48c17.js +0 -1
  221. package/.next/static/chunks/app/api/agent/running/events/route-81852e4fa8c48c17.js +0 -1
  222. package/.next/static/chunks/app/api/agent/running/route-81852e4fa8c48c17.js +0 -1
  223. package/.next/static/chunks/app/api/agent-settings/route-81852e4fa8c48c17.js +0 -1
  224. package/.next/static/chunks/app/api/attachments/route-81852e4fa8c48c17.js +0 -1
  225. package/.next/static/chunks/app/api/auth/all-providers/route-81852e4fa8c48c17.js +0 -1
  226. package/.next/static/chunks/app/api/auth/api-key/[provider]/route-81852e4fa8c48c17.js +0 -1
  227. package/.next/static/chunks/app/api/auth/login/[provider]/route-81852e4fa8c48c17.js +0 -1
  228. package/.next/static/chunks/app/api/auth/logout/[provider]/route-81852e4fa8c48c17.js +0 -1
  229. package/.next/static/chunks/app/api/auth/providers/route-81852e4fa8c48c17.js +0 -1
  230. package/.next/static/chunks/app/api/auth/ui-session/route-81852e4fa8c48c17.js +0 -1
  231. package/.next/static/chunks/app/api/cwd/browse/route-81852e4fa8c48c17.js +0 -1
  232. package/.next/static/chunks/app/api/cwd/validate/route-81852e4fa8c48c17.js +0 -1
  233. package/.next/static/chunks/app/api/default-cwd/route-81852e4fa8c48c17.js +0 -1
  234. package/.next/static/chunks/app/api/file-index/route-81852e4fa8c48c17.js +0 -1
  235. package/.next/static/chunks/app/api/files/[...path]/route-81852e4fa8c48c17.js +0 -1
  236. package/.next/static/chunks/app/api/git/diff/route-81852e4fa8c48c17.js +0 -1
  237. package/.next/static/chunks/app/api/git/status/route-81852e4fa8c48c17.js +0 -1
  238. package/.next/static/chunks/app/api/home/route-81852e4fa8c48c17.js +0 -1
  239. package/.next/static/chunks/app/api/models/route-81852e4fa8c48c17.js +0 -1
  240. package/.next/static/chunks/app/api/models-config/route-81852e4fa8c48c17.js +0 -1
  241. package/.next/static/chunks/app/api/models-config/test/route-81852e4fa8c48c17.js +0 -1
  242. package/.next/static/chunks/app/api/plugins/route-81852e4fa8c48c17.js +0 -1
  243. package/.next/static/chunks/app/api/runtime/route-81852e4fa8c48c17.js +0 -1
  244. package/.next/static/chunks/app/api/runtime/switch/route-81852e4fa8c48c17.js +0 -1
  245. package/.next/static/chunks/app/api/sessions/[id]/archive/route-81852e4fa8c48c17.js +0 -1
  246. package/.next/static/chunks/app/api/sessions/[id]/auto-name/route-81852e4fa8c48c17.js +0 -1
  247. package/.next/static/chunks/app/api/sessions/[id]/command-entry/route-81852e4fa8c48c17.js +0 -1
  248. package/.next/static/chunks/app/api/sessions/[id]/context/route-81852e4fa8c48c17.js +0 -1
  249. package/.next/static/chunks/app/api/sessions/[id]/entries/[entryId]/thinking/route-81852e4fa8c48c17.js +0 -1
  250. package/.next/static/chunks/app/api/sessions/[id]/export/route-81852e4fa8c48c17.js +0 -1
  251. package/.next/static/chunks/app/api/sessions/[id]/info/route-81852e4fa8c48c17.js +0 -1
  252. package/.next/static/chunks/app/api/sessions/[id]/route-81852e4fa8c48c17.js +0 -1
  253. package/.next/static/chunks/app/api/sessions/[id]/state/route-81852e4fa8c48c17.js +0 -1
  254. package/.next/static/chunks/app/api/sessions/[id]/tool-results/[toolCallId]/route-81852e4fa8c48c17.js +0 -1
  255. package/.next/static/chunks/app/api/sessions/route-81852e4fa8c48c17.js +0 -1
  256. package/.next/static/chunks/app/api/sessions/search/route-81852e4fa8c48c17.js +0 -1
  257. package/.next/static/chunks/app/api/skills/check/route-81852e4fa8c48c17.js +0 -1
  258. package/.next/static/chunks/app/api/skills/install/route-81852e4fa8c48c17.js +0 -1
  259. package/.next/static/chunks/app/api/skills/route-81852e4fa8c48c17.js +0 -1
  260. package/.next/static/chunks/app/api/skills/search/route-81852e4fa8c48c17.js +0 -1
  261. package/.next/static/chunks/app/api/skills/update/route-81852e4fa8c48c17.js +0 -1
  262. package/.next/static/chunks/app/api/subagent-runs/route-81852e4fa8c48c17.js +0 -1
  263. package/.next/static/chunks/app/api/update/apply/route-81852e4fa8c48c17.js +0 -1
  264. package/.next/static/chunks/app/api/update/check/route-81852e4fa8c48c17.js +0 -1
  265. package/.next/static/chunks/app/api/worktrees/route-81852e4fa8c48c17.js +0 -1
  266. package/.next/static/chunks/app/page-36437a35f2251063.js +0 -25
  267. package/.next/static/chunks/next/dist/client/components/builtin/app-error-81852e4fa8c48c17.js +0 -1
  268. package/.next/static/chunks/next/dist/client/components/builtin/forbidden-81852e4fa8c48c17.js +0 -1
  269. package/.next/static/chunks/next/dist/client/components/builtin/not-found-81852e4fa8c48c17.js +0 -1
  270. package/.next/static/chunks/next/dist/client/components/builtin/unauthorized-81852e4fa8c48c17.js +0 -1
  271. /package/.next/static/{Y_GKPks6Yv2rUhwcLuaB0 → l9Mw1Wc-mHEZSNYCeXd3z}/_ssgManifest.js +0 -0
@@ -0,0 +1 @@
1
+ (self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[552,796,976,1004,1097,1273,1541,2053,2138,2504,2718,2835,2837,3032,3432,3507,3851,3943,3955,4016,4037,4133,4428,4459,4629,4896,5221,5408,5418,5907,6132,6444,6450,6709,6801,6819,6849,6919,6988,7032,7067,7074,7198,7483,7769,7812,7837,7851,8167,8197,8429,8658,8743,8933,9043,9156,9293,9560,9742,9968],{84441:()=>{}},_=>{_.O(0,[8441,3794,7358],()=>_(_.s=84441)),_N_E=_.O()}]);
@@ -0,0 +1 @@
1
+ (self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[552,796,976,1004,1097,1273,1541,2053,2138,2504,2718,2835,2837,3032,3432,3507,3851,3943,3955,4016,4037,4133,4428,4459,4629,4896,5221,5408,5418,5907,6132,6444,6450,6709,6801,6819,6849,6919,6988,7032,7067,7074,7198,7483,7769,7812,7837,7851,8167,8197,8429,8658,8743,8933,9043,9156,9293,9560,9742,9968],{84441:()=>{}},_=>{_.O(0,[8441,3794,7358],()=>_(_.s=84441)),_N_E=_.O()}]);
@@ -0,0 +1 @@
1
+ (self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[552,796,976,1004,1097,1273,1541,2053,2138,2504,2718,2835,2837,3032,3432,3507,3851,3943,3955,4016,4037,4133,4428,4459,4629,4896,5221,5408,5418,5907,6132,6444,6450,6709,6801,6819,6849,6919,6988,7032,7067,7074,7198,7483,7769,7812,7837,7851,8167,8197,8429,8658,8743,8933,9043,9156,9293,9560,9742,9968],{84441:()=>{}},_=>{_.O(0,[8441,3794,7358],()=>_(_.s=84441)),_N_E=_.O()}]);
@@ -0,0 +1 @@
1
+ (self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[552,796,976,1004,1097,1273,1541,2053,2138,2504,2718,2835,2837,3032,3432,3507,3851,3943,3955,4016,4037,4133,4428,4459,4629,4896,5221,5408,5418,5907,6132,6444,6450,6709,6801,6819,6849,6919,6988,7032,7067,7074,7198,7483,7769,7812,7837,7851,8167,8197,8429,8658,8743,8933,9043,9156,9293,9560,9742,9968],{84441:()=>{}},_=>{_.O(0,[8441,3794,7358],()=>_(_.s=84441)),_N_E=_.O()}]);
@@ -1 +1 @@
1
- /*! tailwindcss v4.2.2 | MIT License | https://tailwindcss.com */@layer properties{@supports (((-webkit-hyphens:none)) and (not (margin-trim:inline))) or ((-moz-orient:inline) and (not (color:rgb(from red r g b)))){*,::backdrop,:after,:before{--tw-rotate-x:initial;--tw-rotate-y:initial;--tw-rotate-z:initial;--tw-skew-x:initial;--tw-skew-y:initial;--tw-border-style:solid;--tw-ordinal:initial;--tw-slashed-zero:initial;--tw-numeric-figure:initial;--tw-numeric-spacing:initial;--tw-numeric-fraction:initial;--tw-outline-style:solid;--tw-blur:initial;--tw-brightness:initial;--tw-contrast:initial;--tw-grayscale:initial;--tw-hue-rotate:initial;--tw-invert:initial;--tw-opacity:initial;--tw-saturate:initial;--tw-sepia:initial;--tw-drop-shadow:initial;--tw-drop-shadow-color:initial;--tw-drop-shadow-alpha:100%;--tw-drop-shadow-size:initial;--tw-backdrop-blur:initial;--tw-backdrop-brightness:initial;--tw-backdrop-contrast:initial;--tw-backdrop-grayscale:initial;--tw-backdrop-hue-rotate:initial;--tw-backdrop-invert:initial;--tw-backdrop-opacity:initial;--tw-backdrop-saturate:initial;--tw-backdrop-sepia:initial;--tw-ease:initial}}}@layer theme{:host,:root{--font-sans:ui-sans-serif,system-ui,sans-serif,"Apple Color Emoji","Segoe UI Emoji","Segoe UI Symbol","Noto Color Emoji";--font-mono:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,"Liberation Mono","Courier New",monospace;--spacing:.25rem;--text-xs:.75rem;--text-xs--line-height:calc(1 / .75);--radius-xs:.125rem;--radius-sm:.25rem;--radius-md:.375rem;--radius-lg:.5rem;--ease-in:cubic-bezier(.4,0,1,1);--ease-out:cubic-bezier(0,0,.2,1);--animate-spin:spin 1s linear infinite;--default-transition-duration:.15s;--default-transition-timing-function:cubic-bezier(.4,0,.2,1);--default-font-family:var(--font-sans);--default-mono-font-family:var(--font-mono);--color-text-muted:var(--text-muted);--color-status-running:var(--status-running)}}@layer base{*,::backdrop,:after,:before{box-sizing:border-box;border:0 solid;margin:0;padding:0}::file-selector-button{box-sizing:border-box;border:0 solid;margin:0;padding:0}:host,html{-webkit-text-size-adjust:100%;tab-size:4;line-height:1.5;font-family:var(--default-font-family,ui-sans-serif,system-ui,sans-serif,"Apple Color Emoji","Segoe UI Emoji","Segoe UI Symbol","Noto Color Emoji");font-feature-settings:var(--default-font-feature-settings,normal);font-variation-settings:var(--default-font-variation-settings,normal);-webkit-tap-highlight-color:transparent}hr{height:0;color:inherit;border-top-width:1px}abbr:where([title]){-webkit-text-decoration:underline dotted;text-decoration:underline dotted}h1,h2,h3,h4,h5,h6{font-size:inherit;font-weight:inherit}a{color:inherit;-webkit-text-decoration:inherit;text-decoration:inherit}b,strong{font-weight:bolder}code,kbd,pre,samp{font-family:var(--default-mono-font-family,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,"Liberation Mono","Courier New",monospace);font-feature-settings:var(--default-mono-font-feature-settings,normal);font-variation-settings:var(--default-mono-font-variation-settings,normal);font-size:1em}small{font-size:80%}sub,sup{vertical-align:baseline;font-size:75%;line-height:0;position:relative}sub{bottom:-.25em}sup{top:-.5em}table{text-indent:0;border-color:inherit;border-collapse:collapse}:-moz-focusring{outline:auto}progress{vertical-align:baseline}summary{display:list-item}menu,ol,ul{list-style:none}audio,canvas,embed,iframe,img,object,svg,video{vertical-align:middle;display:block}img,video{max-width:100%;height:auto}button,input,optgroup,select,textarea{font:inherit;font-feature-settings:inherit;font-variation-settings:inherit;letter-spacing:inherit;color:inherit;opacity:1;background-color:#0000;border-radius:0}::file-selector-button{font:inherit;font-feature-settings:inherit;font-variation-settings:inherit;letter-spacing:inherit;color:inherit;opacity:1;background-color:#0000;border-radius:0}:where(select:is([multiple],[size])) optgroup{font-weight:bolder}:where(select:is([multiple],[size])) optgroup option{padding-inline-start:20px}::file-selector-button{margin-inline-end:4px}::placeholder{opacity:1}@supports (not ((-webkit-appearance:-apple-pay-button))) or (contain-intrinsic-size:1px){::placeholder{color:currentColor}@supports (color:color-mix(in lab,red,red)){::placeholder{color:color-mix(in oklab,currentcolor 50%,transparent)}}}textarea{resize:vertical}::-webkit-search-decoration{-webkit-appearance:none}::-webkit-date-and-time-value{min-height:1lh;text-align:inherit}::-webkit-datetime-edit{display:inline-flex}::-webkit-datetime-edit-fields-wrapper{padding:0}::-webkit-datetime-edit,::-webkit-datetime-edit-year-field{padding-block:0}::-webkit-datetime-edit-day-field,::-webkit-datetime-edit-month-field{padding-block:0}::-webkit-datetime-edit-hour-field,::-webkit-datetime-edit-minute-field{padding-block:0}::-webkit-datetime-edit-millisecond-field,::-webkit-datetime-edit-second-field{padding-block:0}::-webkit-datetime-edit-meridiem-field{padding-block:0}::-webkit-calendar-picker-indicator{line-height:1}:-moz-ui-invalid{box-shadow:none}button,input:where([type=button],[type=reset],[type=submit]){appearance:button}::file-selector-button{appearance:button}::-webkit-inner-spin-button,::-webkit-outer-spin-button{height:auto}[hidden]:where(:not([hidden=until-found])){display:none!important}}@layer components;@layer utilities{.pointer-events-none{pointer-events:none}.collapse{visibility:collapse}.visible{visibility:visible}.sr-only{clip-path:inset(50%);white-space:nowrap;border-width:0;width:1px;height:1px;margin:-1px;padding:0;overflow:hidden}.absolute,.sr-only{position:absolute}.fixed{position:fixed}.relative{position:relative}.static{position:static}.sticky{position:sticky}.inset-0{inset:calc(var(--spacing) * 0)}.start{inset-inline-start:var(--spacing)}.end{inset-inline-end:var(--spacing)}.z-50{z-index:50}.row-0{grid-row:0}.row-399{grid-row:399}.container{width:100%}@media (min-width:40rem){.container{max-width:40rem}}@media (min-width:48rem){.container{max-width:48rem}}@media (min-width:64rem){.container{max-width:64rem}}@media (min-width:80rem){.container{max-width:80rem}}@media (min-width:96rem){.container{max-width:96rem}}.mb-3{margin-bottom:calc(var(--spacing) * 3)}.mb-4{margin-bottom:calc(var(--spacing) * 4)}.block{display:block}.contents{display:contents}.flex{display:flex}.grid{display:grid}.hidden{display:none}.inline{display:inline}.inline-block{display:inline-block}.inline-flex{display:inline-flex}.table{display:table}.size-1\.5{width:calc(var(--spacing) * 1.5);height:calc(var(--spacing) * 1.5)}.size-3{width:calc(var(--spacing) * 3);height:calc(var(--spacing) * 3)}.size-4{width:calc(var(--spacing) * 4);height:calc(var(--spacing) * 4)}.size-5{width:calc(var(--spacing) * 5);height:calc(var(--spacing) * 5)}.h-\[720px\]{height:720px}.h-full{height:100%}.w-\[720px\]{width:720px}.w-full{width:100%}.max-w-\[760px\]{max-width:760px}.flex-1{flex:1}.flex-shrink{flex-shrink:1}.shrink-0{flex-shrink:0}.border-collapse{border-collapse:collapse}.transform{transform:var(--tw-rotate-x,) var(--tw-rotate-y,) var(--tw-rotate-z,) var(--tw-skew-x,) var(--tw-skew-y,)}.animate-\[drop-ripple_2\.4s_ease-out_infinite_backwards\]{animation:drop-ripple 2.4s ease-out infinite backwards}.animate-\[drop-zone-in_0\.15s_ease_both\]{animation:drop-zone-in .15s both}.animate-\[pulse_1\.5s_ease-in-out_infinite\]{animation:pulse 1.5s ease-in-out infinite}.animate-spin{animation:var(--animate-spin)}.resize{resize:both}.flex-col{flex-direction:column}.flex-wrap{flex-wrap:wrap}.items-center{align-items:center}.justify-center{justify-content:center}.gap-2{gap:calc(var(--spacing) * 2)}.overflow-hidden{overflow:hidden}.overflow-y-auto{overflow-y:auto}.rounded-full{border-radius:3.40282e+38px}.border{border-style:var(--tw-border-style);border-width:1px}.border-\[1\.5px\]{border-style:var(--tw-border-style);border-width:1.5px}.border-solid{--tw-border-style:solid;border-style:solid}.border-\[color-mix\(in_srgb\,var\(--accent\)_50\%\,transparent\)\]{border-color:var(--accent)}@supports (color:color-mix(in lab,red,red)){.border-\[color-mix\(in_srgb\,var\(--accent\)_50\%\,transparent\)\]{border-color:color-mix(in srgb,var(--accent) 50%,transparent)}}.bg-\[color-mix\(in_srgb\,var\(--accent\)_6\%\,transparent\)\]{background-color:var(--accent)}@supports (color:color-mix(in lab,red,red)){.bg-\[color-mix\(in_srgb\,var\(--accent\)_6\%\,transparent\)\]{background-color:color-mix(in srgb,var(--accent) 6%,transparent)}}.bg-status-running{background-color:var(--color-status-running)}.px-2{padding-inline:calc(var(--spacing) * 2)}.px-4{padding-inline:calc(var(--spacing) * 4)}.py-1{padding-block:calc(var(--spacing) * 1)}.py-2{padding-block:calc(var(--spacing) * 2)}.py-3{padding-block:calc(var(--spacing) * 3)}.py-8{padding-block:calc(var(--spacing) * 8)}.pt-4{padding-top:calc(var(--spacing) * 4)}.text-center{text-align:center}.text-xs{font-size:var(--text-xs);line-height:var(--tw-leading,var(--text-xs--line-height))}.text-\[13px\]{font-size:13px}.break-all{word-break:break-all}.text-\[var\(--error-text\)\]{color:var(--error-text)}.text-text-muted{color:var(--color-text-muted)}.capitalize{text-transform:capitalize}.uppercase{text-transform:uppercase}.italic{font-style:italic}.tabular-nums{--tw-numeric-spacing:tabular-nums;font-variant-numeric:var(--tw-ordinal,) var(--tw-slashed-zero,) var(--tw-numeric-figure,) var(--tw-numeric-spacing,) var(--tw-numeric-fraction,)}.line-through{text-decoration-line:line-through}.underline{text-decoration-line:underline}.outline{outline-style:var(--tw-outline-style);outline-width:1px}.blur{--tw-blur:blur(8px)}.blur,.filter{filter:var(--tw-blur,) var(--tw-brightness,) var(--tw-contrast,) var(--tw-grayscale,) var(--tw-hue-rotate,) var(--tw-invert,) var(--tw-saturate,) var(--tw-sepia,) var(--tw-drop-shadow,)}.backdrop-blur-\[1px\]{--tw-backdrop-blur:blur(1px);-webkit-backdrop-filter:var(--tw-backdrop-blur,) var(--tw-backdrop-brightness,) var(--tw-backdrop-contrast,) var(--tw-backdrop-grayscale,) var(--tw-backdrop-hue-rotate,) var(--tw-backdrop-invert,) var(--tw-backdrop-opacity,) var(--tw-backdrop-saturate,) var(--tw-backdrop-sepia,);backdrop-filter:var(--tw-backdrop-blur,) var(--tw-backdrop-brightness,) var(--tw-backdrop-contrast,) var(--tw-backdrop-grayscale,) var(--tw-backdrop-hue-rotate,) var(--tw-backdrop-invert,) var(--tw-backdrop-opacity,) var(--tw-backdrop-saturate,) var(--tw-backdrop-sepia,)}.transition{transition-property:color,background-color,border-color,outline-color,text-decoration-color,fill,stroke,--tw-gradient-from,--tw-gradient-via,--tw-gradient-to,opacity,box-shadow,transform,translate,scale,rotate,filter,-webkit-backdrop-filter,backdrop-filter,display,content-visibility,overlay,pointer-events;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.ease-in{--tw-ease:var(--ease-in);transition-timing-function:var(--ease-in)}.ease-out{--tw-ease:var(--ease-out);transition-timing-function:var(--ease-out)}.\[scrollbar-width\:none\]{scrollbar-width:none}@media (min-width:520px){.min-\[520px\]\:flex{display:flex}}}:root{color-scheme:light;--bg:#fdfcfa;--bg-panel:#f7f6f4;--bg-elevated:#fff;--bg-hover:#0000000d;--bg-selected:#b350172b;--bg-subtle:#f4f3f1;--border:#e5e1de;--border-strong:#cbc7c2;--text:#393a34;--text-muted:#5c5c54;--text-dim:#797970;--accent:#b35017;--accent-hover:#9a4310;--accent-foreground:#fff;--user-bg:#f7f2ee;--assistant-bg:#fdfcfa;--tool-bg:#efeeec80;--code-bg:#f4f3f1;--status-running:#b35017;--status-unread:#2d72c4;--status-success:#5f8d3d;--status-warning:#8d6c15;--status-danger:#b7493f;--status-success-bg:#5f8d3d14;--status-success-border:#5f8d3d59;--status-success-foreground:#fff;--status-warning-bg:#8d6c1514;--status-warning-border:#8d6c1566;--status-danger-bg:#b7493f12;--status-danger-border:#b7493f66;--error-text:#a43d35;--diff-added-text:#47752b;--diff-added-bg:#5f8d3d17;--diff-added-border:#5f8d3d99;--diff-removed-text:#a43d35;--diff-removed-bg:#b7493f17;--diff-removed-border:#b7493f99;--diff-hunk-bg:#2d72c41f;--live-indicator-glow:0 0 6px #5f8d3d99;--warning:var(--status-warning);--danger:var(--status-danger);--success:var(--status-success);--focus:#b35017;--focus-ring:#b3501755;--overlay:#39393420;--disabled-opacity:.48;--shadow-float:0 18px 50px #39393424;--shadow-input:0 1px 2px #39393412,0 0 0 1px #ffffff80 inset;--radius-xs:4px;--radius-sm:6px;--radius-md:9px;--radius-lg:13px;--radius-pill:999px}html.dark{color-scheme:dark;--bg:#120f0e;--bg-panel:#171615;--bg-elevated:#1c1a18;--bg-hover:#ffffff12;--bg-selected:#b9a5992b;--bg-subtle:#171616;--border:#242323;--border-strong:#504e4c;--text:#c9c5ba;--text-muted:#8f8b81;--text-dim:#77736b;--accent:#da7c47;--accent-hover:#eb8c57;--accent-foreground:#120f0e;--user-bg:#25170e;--assistant-bg:#120f0e;--tool-bg:#120f0e80;--code-bg:#0e0c0b;--status-running:#da7c47;--status-unread:#479fe6;--status-success:#76ad4f;--status-warning:#c67f13;--status-danger:#da5b4a;--status-success-bg:#76ad4f1f;--status-success-border:#76ad4f70;--status-success-foreground:#120f0e;--status-warning-bg:#c67f131f;--status-warning-border:#c67f1370;--status-danger-bg:#da5b4a1f;--status-danger-border:#da5b4a7a;--error-text:#ed7665;--diff-added-text:#8bc766;--diff-added-bg:#76ad4f1f;--diff-added-border:#76ad4fb3;--diff-removed-text:#ed7665;--diff-removed-bg:#da5b4a24;--diff-removed-border:#da5b4ab3;--diff-hunk-bg:#479fe624;--live-indicator-glow:0 0 6px #76ad4fb3;--warning:var(--status-warning);--danger:var(--status-danger);--success:var(--status-success);--focus:#da7c47;--focus-ring:#da7c4755;--overlay:#0009;--disabled-opacity:.48;--shadow-float:0 20px 60px #00000070;--shadow-input:0 1px 2px #00000040,0 0 0 1px #ffffff08 inset}html[data-theme-style=fusion]{--bg:#fbfcfd;--bg-panel:#f3f6f7;--bg-elevated:#fff;--bg-hover:#163b4d0a;--bg-selected:#2e6f9520;--bg-subtle:#eef2f3;--border:#dce4e6;--border-strong:#bdcbd0;--text:#263439;--text-muted:#607077;--text-dim:#819096;--accent:#286e98;--accent-hover:#1e5c82;--accent-foreground:#fff;--user-bg:#eaf2f7;--assistant-bg:#fbfcfd;--tool-bg:#f0f5f4;--code-bg:#172126;--status-running:#27836e;--status-unread:#286e98;--status-success:#49805d;--status-warning:#9a6a1a;--status-danger:#b34f58;--status-success-bg:#49805d14;--status-success-border:#49805d59;--status-success-foreground:#fff;--status-warning-bg:#9a6a1a14;--status-warning-border:#9a6a1a66;--status-danger-bg:#b34f5812;--status-danger-border:#b34f5866;--error-text:#a23f49;--diff-added-text:#39704d;--diff-added-bg:#49805d17;--diff-added-border:#49805d99;--diff-removed-text:#a23f49;--diff-removed-bg:#b34f5817;--diff-removed-border:#b34f5899;--diff-hunk-bg:#286e981f;--live-indicator-glow:0 0 6px #49805d99;--focus:#286e98;--focus-ring:#286e9844;--overlay:#18343d30;--shadow-float:0 18px 48px #163b4d20;--shadow-input:0 1px 2px #163b4d12,0 0 0 1px #fff inset}html.dark[data-theme-style=fusion]{--bg:#101719;--bg-panel:#141d20;--bg-elevated:#192428;--bg-hover:#d8edf212;--bg-selected:#6ba7c426;--bg-subtle:#172124;--border:#263337;--border-strong:#46585e;--text:#ced8d8;--text-muted:#8d9c9e;--text-dim:#708084;--accent:#69a7ca;--accent-hover:#7fb8d6;--accent-foreground:#0f1719;--user-bg:#162832;--assistant-bg:#101719;--tool-bg:#121d1f;--code-bg:#0b1113;--status-running:#5eb39b;--status-unread:#69a7ca;--status-success:#79ad78;--status-warning:#d0a356;--status-danger:#dd777e;--status-success-bg:#79ad781f;--status-success-border:#79ad7870;--status-success-foreground:#101719;--status-warning-bg:#d0a3561f;--status-warning-border:#d0a35670;--status-danger-bg:#dd777e1f;--status-danger-border:#dd777e7a;--error-text:#ed8f95;--diff-added-text:#91c590;--diff-added-bg:#79ad781f;--diff-added-border:#79ad78b3;--diff-removed-text:#ed8f95;--diff-removed-bg:#dd777e24;--diff-removed-border:#dd777eb3;--diff-hunk-bg:#69a7ca24;--live-indicator-glow:0 0 6px #79ad78b3;--focus:#69a7ca;--focus-ring:#69a7ca55;--overlay:#0009;--shadow-float:0 20px 60px #0006;--shadow-input:0 1px 2px #0000003d,0 0 0 1px #ffffff08 inset}::view-transition-old(root){mix-blend-mode:normal;animation:none}::view-transition-new(root){mix-blend-mode:normal;animation:none}::view-transition-old(root){z-index:1}::view-transition-new(root){z-index:2}*{box-sizing:border-box}body,html{background:var(--bg);height:100%;color:var(--text);overscroll-behavior:none;margin:0;padding:0;font-family:Aptos,Segoe UI Variable,Noto Sans SC,-apple-system,BlinkMacSystemFont,sans-serif;font-size:14px}body{height:100dvh}::-webkit-scrollbar{width:4px;height:4px}::-webkit-scrollbar-track{background:0 0}::-webkit-scrollbar-thumb{background:var(--border);border-radius:2px}::-webkit-scrollbar-thumb:hover{background:var(--text-dim)}:root{--font-mono:var(--font-noto-mono),"JetBrains Mono","Fira Code","Consolas",ui-monospace,"PingFang SC","Microsoft YaHei",monospace}code,pre{font-family:var(--font-mono)}.markdown-body{color:var(--text);word-break:break-word;font-size:14px;line-height:1.72}.markdown-body.markdown-body--extension{font-size:inherit;color:inherit;line-height:1.5}.markdown-body.markdown-body--extension p{margin:0 0 4px}.markdown-body.markdown-body--extension p:last-child{margin-bottom:0}.markdown-body.markdown-body--extension h1,.markdown-body.markdown-body--extension h2,.markdown-body.markdown-body--extension h3,.markdown-body.markdown-body--extension h4,.markdown-body.markdown-body--extension h5,.markdown-body.markdown-body--extension h6{margin:0 0 4px;font-size:1em;font-weight:650;line-height:1.35}.markdown-body.markdown-body--extension ol,.markdown-body.markdown-body--extension ul{margin:2px 0 4px}.markdown-body p{margin:0 0 8px}.markdown-body p:last-child{margin-bottom:0}.markdown-body h1,.markdown-body h2,.markdown-body h3,.markdown-body h4,.markdown-body h5,.markdown-body h6{color:var(--text);letter-spacing:0;margin:10px 0 5px;font-weight:600;line-height:1.35}.markdown-body h1{font-size:1.16em}.markdown-body h2{font-size:1.08em}.markdown-body h3{color:var(--text);font-size:.98em}@supports (color:color-mix(in lab,red,red)){.markdown-body h3{color:color-mix(in srgb,var(--text) 88%,var(--text-muted))}}.markdown-body ol,.markdown-body ul{margin:5px 0 8px;padding-left:22px;list-style-position:outside}.markdown-body li{margin:3px 0;padding-left:2px}.markdown-body ul>li{list-style-type:disc}.markdown-body ol>li{list-style-type:decimal}.markdown-body li>p{margin:0}.markdown-body li::marker{color:var(--accent)}@supports (color:color-mix(in lab,red,red)){.markdown-body li::marker{color:color-mix(in srgb,var(--accent) 72%,var(--text-muted))}}.markdown-body li::marker{font-weight:600}.markdown-body strong{color:var(--text)}@supports (color:color-mix(in lab,red,red)){.markdown-body strong{color:color-mix(in srgb,var(--text) 88%,var(--accent))}}.markdown-body strong{font-weight:700}.markdown-body em{color:var(--text-muted)}.markdown-body a{color:var(--accent);text-underline-offset:3px;text-decoration:underline;text-decoration-thickness:1px;-webkit-text-decoration-color:var(--accent);text-decoration-color:var(--accent)}@supports (color:color-mix(in lab,red,red)){.markdown-body a{-webkit-text-decoration-color:color-mix(in srgb,var(--accent) 45%,transparent);text-decoration-color:color-mix(in srgb,var(--accent) 45%,transparent)}}.markdown-body a:hover{-webkit-text-decoration-color:var(--accent);text-decoration-color:var(--accent)}.markdown-body .markdown-inline-code{background:var(--bg-subtle);color:var(--text);font-family:var(--font-mono);box-shadow:inset 0 0 0 1px var(--border);border-radius:5px;padding:1px 5px;font-size:.92em}@supports (color:color-mix(in lab,red,red)){.markdown-body .markdown-inline-code{box-shadow:inset 0 0 0 1px color-mix(in srgb,var(--border) 70%,transparent)}}.markdown-body .contains-task-list{padding-left:0;list-style:none}.markdown-body .task-list-item{padding-left:25px;display:block;position:relative}.markdown-body .task-list-item::marker{content:""}.markdown-body .task-list-item>input[type=checkbox],.markdown-body .task-list-item>p:first-child>input[type=checkbox]:first-child{appearance:none;border:1px solid var(--border);background:var(--bg);border-radius:4px;place-content:center;width:14px;height:14px;margin:0;display:inline-grid;position:absolute;top:.35em;left:0}.markdown-body .task-list-item>input[type=checkbox]:checked,.markdown-body .task-list-item>p:first-child>input[type=checkbox]:first-child:checked{border-color:var(--accent)}@supports (color:color-mix(in lab,red,red)){.markdown-body .task-list-item>input[type=checkbox]:checked,.markdown-body .task-list-item>p:first-child>input[type=checkbox]:first-child:checked{border-color:color-mix(in srgb,var(--accent) 55%,var(--border))}}.markdown-body .task-list-item>input[type=checkbox]:checked,.markdown-body .task-list-item>p:first-child>input[type=checkbox]:first-child:checked{background:var(--accent)}@supports (color:color-mix(in lab,red,red)){.markdown-body .task-list-item>input[type=checkbox]:checked,.markdown-body .task-list-item>p:first-child>input[type=checkbox]:first-child:checked{background:color-mix(in srgb,var(--accent) 10%,var(--bg))}}.markdown-body .task-list-item>input[type=checkbox]:checked:before,.markdown-body .task-list-item>p:first-child>input[type=checkbox]:first-child:checked:before{content:"";border:solid var(--accent);border-width:0 1.5px 1.5px 0;width:4px;height:8px;transform:rotate(45deg)translateY(-1px)}.markdown-body blockquote{border-left:3px solid var(--border)}@supports (color:color-mix(in lab,red,red)){.markdown-body blockquote{border-left:3px solid color-mix(in srgb,var(--border) 75%,var(--text-muted))}}.markdown-body blockquote{background:var(--bg-subtle);color:var(--text-muted);border-radius:0 6px 6px 0;margin:6px 0;padding:6px 11px}.markdown-table-wrap{border:1px solid var(--border);border-radius:var(--radius-md);width:100%;margin:8px 0;overflow:auto hidden}.markdown-body table{border-collapse:separate;border-spacing:0;min-width:100%;font-size:13px}.markdown-body td,.markdown-body th{border:0;border-bottom:1px solid var(--border);text-align:left;vertical-align:top;padding:6px 10px}.markdown-body tr:last-child td{border-bottom:0}.markdown-body th{background:var(--bg-panel);color:var(--text)}@supports (color:color-mix(in lab,red,red)){.markdown-body th{color:color-mix(in srgb,var(--text) 88%,var(--text-muted))}}.markdown-body th{font-weight:650}.markdown-body tbody tr:nth-child(2n) td{background:var(--bg-subtle)}.markdown-body hr{background:linear-gradient(90deg,transparent,var(--border),transparent);border:none;height:1px;margin:12px 0}.markdown-body .katex-display{margin:.6em 0;padding:2px 0;overflow:auto hidden}.markdown-body .katex{font-size:1.05em}.markdown-user-message p{white-space:pre-wrap}.markdown-custom-message{line-height:1.32}.markdown-custom-message p{margin:0}.markdown-custom-message h1,.markdown-custom-message h2,.markdown-custom-message h3,.markdown-custom-message h4,.markdown-custom-message h5,.markdown-custom-message h6{margin:4px 0 2px;line-height:1.18}.markdown-custom-message ol,.markdown-custom-message ul{margin:2px 0 3px}.markdown-custom-message li{margin:0}.markdown-custom-message blockquote{margin:3px 0;padding:4px 8px}.markdown-custom-message .markdown-code-block,.markdown-custom-message .markdown-table-wrap{margin:4px 0}.markdown-compaction-message{line-height:1.5}.markdown-compaction-message p{margin:0 0 7px}.markdown-compaction-message h1,.markdown-compaction-message h2,.markdown-compaction-message h3,.markdown-compaction-message h4,.markdown-compaction-message h5,.markdown-compaction-message h6{margin:8px 0 3px;line-height:1.25}.markdown-compaction-message ol,.markdown-compaction-message ul{margin:4px 0 8px}.markdown-compaction-message li{margin:2px 0}.markdown-compaction-message .markdown-code-block,.markdown-compaction-message .markdown-table-wrap{margin:6px 0}.compaction-file-details{border-top:1px solid var(--border);color:var(--text-muted);margin-top:10px;padding-top:8px;font-size:12px}.compaction-file-details summary{cursor:pointer;font-weight:600;line-height:1.4}.compaction-file-section{margin-top:8px}.compaction-file-title{color:var(--text);margin-bottom:4px;font-size:11px;font-weight:650}.compaction-file-list{border:1px solid var(--border);background:var(--bg-panel);max-height:180px;font-family:var(--font-mono);border-radius:6px;margin:0;padding:7px 8px;font-size:11px;line-height:1.45;list-style:none;overflow:auto}.compaction-file-list li{overflow-wrap:anywhere}.compaction-file-list li+li{margin-top:3px}.markdown-code-block{border:1px solid var(--border);border-radius:var(--radius-md);background:var(--code-bg);box-shadow:none;margin:6px 0;position:relative;overflow:hidden}.markdown-code-header{background:var(--bg-panel);padding:5px 10px}@supports (color:color-mix(in lab,red,red)){.markdown-code-header{background:color-mix(in srgb,var(--bg-panel) 88%,var(--code-bg))}}.markdown-code-header{border-bottom:1px solid var(--border);color:var(--text-dim);justify-content:space-between;align-items:center;gap:8px;font-size:11px;display:flex}.markdown-code-lang{color:var(--text-muted);font-family:var(--font-mono);font-weight:650}.markdown-code-actions{align-items:center;gap:6px;display:flex}.markdown-code-action{border:1px solid var(--border);background:var(--bg);color:var(--text-muted);cursor:pointer;font:inherit;border-radius:5px;padding:2px 7px;font-size:11px;line-height:1.25}.markdown-code-action:hover:not(:disabled){color:var(--text);border-color:var(--border)}@supports (color:color-mix(in lab,red,red)){.markdown-code-action:hover:not(:disabled){border-color:color-mix(in srgb,var(--border) 70%,var(--text-muted))}}.markdown-code-action:disabled{color:var(--text-dim);cursor:not-allowed;opacity:var(--disabled-opacity)}.chat-input-shell:focus-within{border-color:var(--focus)!important;box-shadow:var(--shadow-input),0 0 0 3px var(--focus-ring)!important}@supports (color:color-mix(in lab,red,red)){.chat-input-shell:focus-within{box-shadow:var(--shadow-input),0 0 0 3px color-mix(in srgb,var(--focus-ring) 72%,transparent)!important}}.markdown-code-action.is-active{background:var(--bg-selected);color:var(--text)}.mermaid-block{background:var(--bg);padding:12px;overflow-x:auto}@supports (color:color-mix(in lab,red,red)){.mermaid-block{background:color-mix(in srgb,var(--bg) 92%,var(--bg-panel))}}.mermaid-block svg{max-width:none;display:block}.mermaid-block-loading{min-height:120px}.mermaid-block-error{color:var(--text-muted);font-family:var(--font-mono);font-size:12px}.file-viewer-toolbar{min-height:35px}.file-viewer-path{flex:auto;min-width:48px}.file-viewer-meta{text-overflow:ellipsis;flex:0 auto;min-width:0;overflow:hidden}.file-viewer-controls{gap:6px}.file-viewer-action-slot{flex:0 0 24px;justify-content:center;align-items:center;width:24px;height:24px;display:flex}.file-viewer-mode-switch{border:1px solid var(--border);border-radius:5px;height:24px;display:flex;overflow:hidden}.file-viewer-mode-button{border:0;border-left:1px solid var(--border);height:22px;font:inherit;letter-spacing:0;cursor:pointer;white-space:nowrap;padding:0 8px;font-size:11px;font-weight:500}.file-viewer-mode-button:first-child{border-left:0}.file-viewer-mode-button:hover{filter:brightness(1.08)}.file-viewer-icon-button{box-sizing:border-box;border:1px solid var(--border);width:24px;height:24px;flex:0 0 24px}.file-viewer-icon-button:hover{color:var(--text);background:var(--bg-hover)!important}.file-viewer-icon-button:focus-visible,.file-viewer-mode-button:focus-visible{outline:2px solid var(--accent);outline-offset:-2px}@media (max-width:640px){.file-viewer-meta{display:none}}@media (max-width:380px){.file-viewer-toolbar{gap:6px!important;padding-inline:8px!important}.file-viewer-mode-button{padding-inline:6px}}.markdown-file-preview h1{font-size:1.8em}.markdown-file-preview h2{font-size:1.4em}.markdown-file-preview h3{font-size:1.15em}.markdown-file-preview p{margin:0 0 12px}.markdown-file-preview pre{border:1px solid var(--border);border-radius:6px;margin:12px 0;padding:12px 16px;font-size:13px;overflow-x:auto}.markdown-file-preview code,.markdown-file-preview pre{background:var(--bg-panel);font-family:var(--font-mono)}.markdown-file-preview code{border-radius:3px;padding:1px 5px;font-size:.9em}.markdown-file-preview pre code{background:0 0;padding:0}.markdown-body span.linenumber,span.linenumber{color:var(--text-dim)!important;font-style:normal!important}@keyframes drop-zone-in{0%{opacity:0;transform:scale(.97)}to{opacity:1;transform:scale(1)}}@keyframes drop-icon-float{0%,to{transform:translateY(0)}50%{transform:translateY(-6px)}}@keyframes drop-ring-pulse{0%,to{opacity:.5;transform:scale(1)}50%{opacity:1;transform:scale(1.06)}}@keyframes drop-ripple{0%{opacity:.6;transform:scale(0)}to{opacity:0;transform:scale(1)}}@keyframes blink{0%,to{opacity:1}50%{opacity:.3}}@keyframes spin{to{transform:rotate(1turn)}}@keyframes sidebar-running-spin{0%{transform:rotate(0)}to{transform:rotate(1turn)}}@keyframes pulse{50%{opacity:.5}}@keyframes notice-shelf-in{0%{opacity:0;transform:translateY(-6px)scale(.995)}to{opacity:1;transform:translateY(0)scale(1)}}@keyframes notice-shelf-out{0%{opacity:1;transform:translateY(0)scale(1)}to{opacity:0;transform:translateY(-5px)scale(.995)}}@media (prefers-reduced-motion:reduce){.notice-shelf-item{animation-duration:.001ms!important}}.chat-jump-bottom{z-index:45;border:1px solid var(--border);background:var(--bg-panel);width:32px;height:32px;color:var(--text-muted);cursor:pointer;opacity:0;pointer-events:none;border-radius:50%;justify-content:center;align-items:center;padding:0;transition:opacity .15s,transform .15s,background-color .15s,color .15s;display:flex;position:absolute;bottom:14px;left:50%;transform:translate(-50%)translateY(6px)scale(.92);box-shadow:0 1px 2px #0f172a0f,0 8px 24px -12px #0f172a2e}.chat-jump-bottom.is-visible{opacity:1;pointer-events:auto;transform:translate(-50%)translateY(0)scale(1)}.chat-jump-bottom:hover{background:var(--bg-hover);color:var(--text)}@media (prefers-reduced-motion:reduce){.chat-jump-bottom,.chat-jump-bottom.is-visible{transition:opacity .001ms;transform:translate(-50%)}}@keyframes saved-pop{0%{box-shadow:0 0 0 0 color-mix(in srgb,var(--status-success) 55%,transparent);transform:scale(1)}40%{box-shadow:0 0 0 6px color-mix(in srgb,var(--status-success) 25%,transparent);transform:scale(1.08)}to{transform:scale(1);box-shadow:0 0 #0000}}@keyframes saved-check-draw{0%{stroke-dashoffset:18px;opacity:0}to{stroke-dashoffset:0;opacity:1}}@media (min-width:641px){.sidebar-overlay-backdrop{display:none!important}.sidebar-container{transition:width .2s,min-width .2s;position:relative;overflow:hidden}.sidebar-container.sidebar-dragging{transition:none}.sidebar-container.sidebar-open{width:var(--sidebar-width,260px);min-width:var(--sidebar-width,260px)}.sidebar-container.sidebar-closed{width:0;min-width:0;border-right:none!important}.sidebar-inner{width:var(--sidebar-width,260px);min-width:var(--sidebar-width,260px)}}.sidebar-inner{flex-direction:column;flex:auto;min-width:0;height:100%;min-height:0;display:flex}.sidebar-resize-handle{cursor:col-resize;z-index:10;touch-action:none;width:5px;position:absolute;top:0;bottom:0;right:0}.sidebar-resize-handle.dragging,.sidebar-resize-handle:hover{background:var(--accent)}@supports (color:color-mix(in lab,red,red)){.sidebar-resize-handle.dragging,.sidebar-resize-handle:hover{background:color-mix(in srgb,var(--accent) 35%,transparent)}}.sidebar-resize-handle:focus-visible{outline:2px solid var(--accent);outline-offset:-2px}@media (max-width:640px){.sidebar-resize-handle{display:none}}.sidebar-pagination-btn{height:22px;color:var(--text-dim);cursor:pointer;background:0 0;border:none;border-radius:6px;align-items:center;gap:4px;padding:0 8px;font-size:11px;transition:background .12s,color .12s;display:inline-flex}.sidebar-pagination-btn:hover{background:var(--bg-hover);color:var(--text)}.sidebar-pagination-btn:focus-visible{outline:2px solid var(--accent);outline-offset:-2px}@media (min-width:641px){.workspace-container{flex-shrink:0;transition:width .2s,min-width .2s;overflow:hidden}.workspace-container.workspace-dragging{transition:none}.workspace-container.workspace-closed{border-left:none!important}}@media (max-width:640px){.chat-stats-center{display:none!important}.sidebar-container{width:280px;max-width:85vw;transition:transform .25s,box-shadow .25s;top:0;bottom:0;left:0;position:fixed!important}.sidebar-container.sidebar-open{transform:translate(0);box-shadow:4px 0 20px #00000026}.sidebar-container.sidebar-closed{box-shadow:none;transform:translate(-100%)}.workspace-container{transition:transform .25s,box-shadow .25s;top:0;bottom:0;right:0;width:100%!important;min-width:0!important;position:fixed!important}.workspace-container.workspace-open{transform:translate(0);box-shadow:-4px 0 20px #00000026}.workspace-container.workspace-closed{box-shadow:none;transform:translate(100%);border-left:none!important}.workspace-container>.workspace-inner{width:100%!important;min-width:0!important}}.sidebar-icon-btn{width:24px;height:24px;color:var(--text-muted);cursor:pointer;background:0 0;border:none;border-radius:6px;flex-shrink:0;justify-content:center;align-items:center;padding:0;transition:background .12s,color .12s;display:inline-flex}.sidebar-icon-btn:hover:not(:disabled){background:var(--bg-hover);color:var(--text)}.sidebar-icon-btn:active:not(:disabled){background:var(--bg-selected)}.sidebar-icon-btn:focus-visible{outline:2px solid var(--accent);outline-offset:-2px}.sidebar-icon-btn:disabled{color:var(--text-dim)}@media (hover:hover) and (pointer:fine){.instant-tooltip[data-tooltip],.sidebar-icon-btn[data-tooltip]{position:relative}.instant-tooltip[data-tooltip]:after,.sidebar-icon-btn[data-tooltip]:after{content:attr(data-tooltip);z-index:9000;border:1px solid var(--border-strong);border-radius:var(--radius-sm);background:var(--bg-elevated);max-width:260px;color:var(--text);box-shadow:var(--shadow-float);white-space:nowrap;pointer-events:none;opacity:0;padding:5px 8px;font-size:11px;font-weight:400;line-height:1.35;transition:none;position:absolute;top:calc(100% + 6px);left:50%;transform:translate(-50%,-2px)}.instant-tooltip[data-tooltip]:focus-visible:after,.instant-tooltip[data-tooltip]:hover:after,.sidebar-icon-btn[data-tooltip]:focus-visible:after,.sidebar-icon-btn[data-tooltip]:hover:after{opacity:1;transform:translate(-50%)}.tooltip-up[data-tooltip]:after{top:auto;bottom:calc(100% + 6px)}.workspace-container .sidebar-icon-btn[data-tooltip]:after{top:50%;left:auto;right:calc(100% + 6px);transform:translate(2px,-50%)}.workspace-container .sidebar-icon-btn[data-tooltip]:focus-visible:after,.workspace-container .sidebar-icon-btn[data-tooltip]:hover:after{transform:translateY(-50%)}.sidebar-indent-indicator{opacity:0;pointer-events:none}.sidebar-row:focus-within>.sidebar-indent-indicator,.sidebar-row:hover>.sidebar-indent-indicator{opacity:1;pointer-events:auto}.sidebar-row:focus-within .sidebar-indicator-icon,.sidebar-row:hover .sidebar-indicator-icon{opacity:0;pointer-events:none}}@media (hover:none),(pointer:coarse){.sidebar-indent-indicator{opacity:1;pointer-events:auto}.sidebar-indicator-icon{opacity:0;pointer-events:none}}.sidebar-chevron-always{opacity:1;pointer-events:auto}.sidebar-indicator-icon{transition:opacity .12s}.extension-card-btn{border:1px solid var(--border);background:var(--bg);height:26px;color:var(--text-muted);font:inherit;cursor:pointer;border-radius:6px;align-items:center;gap:5px;padding:0 12px;font-size:12px;transition:background .12s,color .12s,border-color .12s;display:inline-flex}.extension-card-btn:hover:not(:disabled){background:var(--bg-hover);color:var(--text)}.extension-card-btn:disabled{cursor:not-allowed;opacity:.55}.guide-selectors{flex-wrap:wrap;align-items:center;gap:4px;margin-bottom:10px;display:flex}.guide-selector{background:0 0;border:1px solid #0000;border-radius:6px;align-items:center;gap:5px;height:28px;padding:0 6px;transition:background .12s,border-color .12s;display:inline-flex}.guide-selector:hover{background:var(--bg-hover)}.guide-selector:focus-within{background:var(--bg-hover);border-color:var(--accent)}.guide-selector-icon{color:var(--text-dim);flex-shrink:0}.guide-select{width:160px;min-width:0;max-width:160px;color:var(--text);font:inherit;cursor:pointer;text-overflow:ellipsis;background:0 0;border:none;outline:none;font-size:12.5px}.guide-select:disabled{color:var(--text-dim);cursor:default}.guide-new-worktree-btn{width:18px;height:18px;color:var(--text-dim);cursor:pointer;background:0 0;border:1px solid #0000;border-radius:5px;justify-content:center;align-items:center;padding:0;transition:background .12s,color .12s;display:inline-flex}.guide-new-worktree-btn:hover:not(:disabled){background:var(--bg-hover);color:var(--text)}.guide-new-worktree-btn:disabled{cursor:default;opacity:.5}.guide-worktree-form{flex-wrap:wrap;align-items:center;gap:6px;display:flex}.guide-worktree-input{border:1px solid var(--border);background:var(--bg-panel);min-width:160px;max-width:260px;height:28px;color:var(--text);font:inherit;border-radius:6px;outline:none;padding:0 8px;font-size:12.5px}.guide-worktree-input:focus{border-color:var(--accent)}.guide-worktree-error{color:var(--danger,#e5484d);font-size:11px}@media (max-width:640px){.guide-selectors{flex-wrap:nowrap}.guide-selector{flex:1;min-width:0}.guide-select{width:100%;max-width:none}.guide-new-worktree-btn{flex-shrink:0}}.sidebar-icon-btn--active,.sidebar-icon-btn--active:hover:not(:disabled){background:var(--bg-selected);color:var(--accent)}.sidebar-icon-btn--danger:hover:not(:disabled){background:var(--status-danger-bg);color:var(--status-danger)}.sidebar-icon-btn--done,.sidebar-icon-btn--done:hover:not(:disabled){background:var(--status-success)}@supports (color:color-mix(in lab,red,red)){.sidebar-icon-btn--done,.sidebar-icon-btn--done:hover:not(:disabled){background:color-mix(in srgb,var(--status-success) 18%,transparent)}}.sidebar-icon-btn--done,.sidebar-icon-btn--done:hover:not(:disabled){color:var(--status-success)}.sidebar-row .sidebar-icon-btn--hover{opacity:0}.sidebar-row .sidebar-icon-btn--hover:focus-visible,.sidebar-row:focus-within .sidebar-icon-btn--hover,.sidebar-row:hover .sidebar-icon-btn--hover{opacity:1}@media (max-width:640px){.sidebar-toolbar{gap:12px!important}}.settings-layout{height:min(72dvh,660px);min-height:0;display:flex}.settings-nav-list{flex-direction:column;gap:2px;padding:10px 8px;display:flex}.settings-nav-item{border-radius:var(--radius-sm);width:100%;color:var(--text-muted);text-align:left;cursor:pointer;background:0 0;border:none;align-items:center;gap:8px;font-size:13px;font-weight:400;transition:background .12s,color .12s;display:flex;position:relative}.settings-nav-item:hover{background:var(--bg-hover);color:var(--text)}.settings-nav-item.is-active{background:var(--bg-selected);color:var(--text);font-weight:600}.settings-nav-item.is-active:before{border-radius:var(--radius-pill);background:var(--accent);content:"";width:2px;position:absolute;top:7px;bottom:7px;left:3px}.settings-content-pane,.settings-scroll-region{flex-direction:column;flex:1;min-width:0;min-height:0;display:flex}.settings-content-pane{background:var(--bg);overflow:hidden}.settings-scroll-region{scrollbar-gutter:stable;overflow-y:auto}.settings-page-content{width:min(100%,700px);padding:24px 28px 32px}.settings-choice{margin-bottom:26px}.settings-segmented-control{border:1px solid var(--border);border-radius:var(--radius-md);background:var(--bg-panel);width:fit-content;max-width:100%;box-shadow:var(--shadow-input);gap:2px;padding:3px;display:flex}.settings-segmented-option{border-radius:var(--radius-sm);min-width:96px;height:32px;color:var(--text-muted);white-space:nowrap;cursor:pointer;background:0 0;border:none;padding:0 14px;font-size:12.5px;transition:background .12s,color .12s,box-shadow .12s}.settings-segmented-option:hover{color:var(--text)}.settings-segmented-option.is-active{background:var(--bg-elevated);color:var(--text);box-shadow:0 1px 3px var(--text)}@supports (color:color-mix(in lab,red,red)){.settings-segmented-option.is-active{box-shadow:0 1px 3px color-mix(in srgb,var(--text) 12%,transparent)}}.settings-segmented-option.is-active{font-weight:600}.settings-empty-state{text-align:center;flex-direction:column;justify-content:center;align-items:center;gap:10px;height:100%;padding:32px 24px;display:flex}.app-top-bar{height:36px}.app-top-bar,.workspace-header{border-bottom:1px solid var(--border);background:var(--bg-panel);flex-shrink:0;align-items:center;display:flex}.workspace-header{gap:4px;height:40px;padding:0 8px 0 12px}.changes-panel{border-left:1px solid var(--border);background:var(--bg-panel);flex-direction:column;flex-shrink:0;align-self:stretch;min-width:0;height:100%;min-height:0;display:flex;position:relative;overflow:hidden}.changes-panel>.changes-panel{border-left:none;flex:auto;height:100%;min-height:0;width:100%!important;min-width:0!important}.changes-panel-content{flex:1;grid-template-rows:minmax(120px,36%) minmax(0,1fr);min-height:0;display:grid}.changes-panel-diff,.changes-panel-list{min-height:0;overflow:auto}.changes-panel-list{border-bottom:1px solid var(--border)}.changes-panel-hint{color:var(--text-dim);padding:18px 14px;font-size:11.5px;line-height:1.5}.changes-panel-hint.is-error{color:var(--status-danger)}.changes-panel-resize-handle{z-index:10;cursor:col-resize;touch-action:none;width:6px;position:absolute;top:0;bottom:0;left:-3px}.changes-panel-resize-handle.dragging,.changes-panel-resize-handle:hover{background:var(--accent)}@supports (color:color-mix(in lab,red,red)){.changes-panel-resize-handle.dragging,.changes-panel-resize-handle:hover{background:color-mix(in srgb,var(--accent) 35%,transparent)}}.secondary-panel-inner{flex-direction:column;width:100%;min-width:0;height:100%;min-height:0;display:flex;overflow:hidden}.secondary-panel-tabs{flex:none;min-width:0;min-height:0}.secondary-panel-body{flex-direction:column;flex:auto;min-width:0;min-height:0;display:flex;overflow:hidden}.workspace-navigation-rail{border-left:1px solid var(--border);background:var(--bg);flex-direction:column;align-items:center;gap:4px;padding:8px 0;display:flex}.workspace-resize-handle{cursor:col-resize;z-index:10;touch-action:none;width:5px;position:absolute;top:0;bottom:0;left:0}.workspace-resize-handle.dragging,.workspace-resize-handle:hover{background:var(--accent)}@supports (color:color-mix(in lab,red,red)){.workspace-resize-handle.dragging,.workspace-resize-handle:hover{background:color-mix(in srgb,var(--accent) 35%,transparent)}}@media (max-width:640px){.workspace-resize-handle{display:none}}.file-row-actions{background:var(--bg-panel);border:1px solid var(--border);opacity:0;visibility:hidden;border-radius:6px;align-items:center;gap:2px;padding:1px;transition:opacity .12s,visibility .12s;display:flex;position:absolute;top:50%;right:4px;transform:translateY(-50%)}.file-row{border-radius:var(--radius-xs);transition:background .12s}.file-row:focus-within,.file-row:hover{background:var(--bg-hover)}.file-row:focus-visible{outline:2px solid var(--accent);outline-offset:-2px}.file-row-actions:has([data-menu-open=true]),.file-row:focus-within .file-row-actions,.file-row:hover .file-row-actions{opacity:1;visibility:visible}.file-row-action-btn{width:24px;height:24px;color:var(--text-muted);cursor:pointer;background:0 0;border:none;border-radius:5px;flex-shrink:0;justify-content:center;align-items:center;padding:0;text-decoration:none;transition:background .12s,color .12s;display:inline-flex}.file-row-action-btn:hover{background:var(--bg-hover);color:var(--text)}.file-row-action-btn:focus-visible{outline:2px solid var(--accent);outline-offset:-2px}@media (pointer:coarse){.file-row-actions{opacity:1;visibility:visible}.file-row .file-row-badge{display:none}}.git-file-row{cursor:pointer;width:100%;height:26px;color:var(--text);text-align:left;border-radius:var(--radius-xs);background:0 0;border:none;align-items:center;gap:6px;padding:0 8px;font-size:12px;transition:background .12s,color .12s;display:flex}.git-file-row:hover{background:var(--bg-hover)}.git-file-row.is-selected{background:var(--bg-selected);color:var(--text)}@media (max-width:640px){.changes-panel{display:none!important}}.git-file-row:focus-visible{outline:2px solid var(--accent);outline-offset:-2px}@media (hover:none),(pointer:coarse){.sidebar-row .sidebar-icon-btn--hover{opacity:1}.sidebar-icon-btn{width:28px;height:28px;position:relative}.sidebar-icon-btn:after{content:"";position:absolute;inset:-4px -2px}}@media (max-width:640px){.app-top-bar{height:44px}.app-top-bar>button:not(.app-top-bar-stats){width:44px!important;height:44px!important}.app-top-bar-stats{min-width:0;max-width:min(48vw,168px);overflow:hidden;gap:4px!important;height:44px!important;padding:0 8px!important}.app-top-bar-stats>span{text-overflow:ellipsis;min-width:0;overflow:hidden}.workspace-header{height:44px;padding-right:6px}.workspace-header .sidebar-icon-btn,.workspace-navigation-rail .sidebar-icon-btn{width:36px;height:36px}.workspace-navigation-rail{gap:8px;padding-top:8px}.settings-layout{height:min(78dvh,680px)}.settings-nav-list{padding:10px}.settings-page-content{padding:20px 16px 28px}.settings-segmented-control{width:100%;overflow-x:auto}.settings-segmented-option{flex:1 0 auto;min-width:0;height:40px}.chat-input-shell{padding:9px 8px 9px 12px!important}.chat-input-shell button{min-height:40px}.file-row{min-height:44px}.file-row>svg{width:12px;height:12px}.file-row-icon svg{width:18px;height:18px}.file-row-action-btn{width:32px;height:32px}}.sidebar-row .sidebar-icon-btn--hover.sidebar-icon-btn--active{opacity:1}@media (hover:none),(pointer:coarse){.sidebar-chevron-btn:after{content:"";position:absolute;inset:-5px -3px}}.file-viewer-toolbar{min-width:0}.file-viewer-path{text-overflow:ellipsis;white-space:nowrap;min-width:72px;overflow:hidden}.file-viewer-meta{white-space:nowrap;flex-shrink:0}.file-viewer-controls{flex-shrink:0;align-items:center;gap:3px;margin-left:auto;display:flex}.file-viewer-icon-button{width:26px;height:26px;color:var(--text-muted);cursor:pointer;background:0 0;border:1px solid #0000;border-radius:5px;flex:none;justify-content:center;align-items:center;padding:0;text-decoration:none;transition:color .12s,background .12s,border-color .12s;display:inline-flex}.file-viewer-icon-button:hover:not(:disabled),.file-viewer-icon-button[data-active=true]{color:var(--text);background:var(--bg-selected);border-color:var(--border)}.file-viewer-icon-button.is-save:not(:disabled){color:var(--accent)}.file-close-confirm__button:focus-visible,.file-editor-notice button:focus-visible,.file-viewer-icon-button:focus-visible{outline:2px solid var(--accent);outline-offset:1px}.file-viewer-icon-button:disabled{opacity:.34;cursor:not-allowed}.file-viewer-toolbar-separator{background:var(--border);flex:none;width:1px;height:16px;margin:0 2px}.file-viewer-live-indicator{border-radius:50%;flex:none;width:6px;height:6px}.file-source-editor{box-sizing:border-box;resize:none;background:var(--bg);width:100%;min-width:max-content;height:100%;min-height:0;color:var(--text);caret-color:var(--accent);font-family:var(--font-mono);tab-size:2;white-space:pre;border:0;outline:0;flex:auto;margin:0;padding:14px 18px;font-size:13px;line-height:1.6;display:block;overflow:auto}.file-source-editor.is-wrapped{white-space:pre-wrap;overflow-wrap:anywhere;min-width:100%}.file-close-confirm,.file-editor-notice{border-bottom:1px solid var(--border);background:var(--accent);align-items:center;gap:10px;min-height:34px;padding:5px 10px 5px 12px;display:flex}@supports (color:color-mix(in lab,red,red)){.file-close-confirm,.file-editor-notice{background:color-mix(in srgb,var(--accent) 7%,var(--bg-panel))}}.file-close-confirm,.file-editor-notice{color:var(--text-muted);flex:none;font-size:11.5px}.file-editor-notice.is-warning{background:var(--status-warning)}@supports (color:color-mix(in lab,red,red)){.file-editor-notice.is-warning{background:color-mix(in srgb,var(--status-warning) 10%,var(--bg-panel))}}.file-editor-notice.is-warning{color:var(--status-warning)}@supports (color:color-mix(in lab,red,red)){.file-editor-notice.is-warning{color:color-mix(in srgb,var(--status-warning) 72%,var(--text))}}.file-editor-notice.is-error{background:var(--status-danger)}@supports (color:color-mix(in lab,red,red)){.file-editor-notice.is-error{background:color-mix(in srgb,var(--status-danger) 9%,var(--bg-panel))}}.file-editor-notice.is-error{color:var(--status-danger)}.file-editor-notice.is-success{background:var(--status-success)}@supports (color:color-mix(in lab,red,red)){.file-editor-notice.is-success{background:color-mix(in srgb,var(--status-success) 8%,var(--bg-panel))}}.file-editor-notice.is-success{color:var(--status-success)}.file-editor-notice__actions{align-items:center;gap:5px;margin-left:auto;display:flex}.file-close-confirm__button,.file-editor-notice button{border:1px solid var(--border);background:var(--bg);min-height:24px;color:var(--text-muted);font:inherit;cursor:pointer;white-space:nowrap;border-radius:5px;padding:2px 8px}.file-close-confirm__button:hover,.file-editor-notice button:hover{color:var(--text);background:var(--bg-hover)}.file-close-confirm__button.is-danger,.file-editor-notice button.is-danger{color:var(--status-danger);border-color:var(--status-danger)}@supports (color:color-mix(in lab,red,red)){.file-close-confirm__button.is-danger,.file-editor-notice button.is-danger{border-color:color-mix(in srgb,var(--status-danger) 35%,var(--border))}}.file-close-confirm{background:var(--status-warning);min-height:36px}@supports (color:color-mix(in lab,red,red)){.file-close-confirm{background:color-mix(in srgb,var(--status-warning) 7%,var(--bg-panel))}}.file-close-confirm__message{text-overflow:ellipsis;white-space:nowrap;min-width:0;margin-right:auto;overflow:hidden}.file-close-confirm__button{align-items:center;gap:5px;display:inline-flex}.file-tab-dirty-dot{background:var(--accent);width:8px;height:8px;box-shadow:0 0 0 2px var(--accent);border-radius:50%}@supports (color:color-mix(in lab,red,red)){.file-tab-dirty-dot{box-shadow:0 0 0 2px color-mix(in srgb,var(--accent) 12%,transparent)}}.file-save-spinner,.file-tab-dirty-dot.is-saving{animation:file-editor-pulse .9s ease-in-out infinite alternate}.file-save-spinner{border:2px solid var(--accent);width:11px;height:11px}@supports (color:color-mix(in lab,red,red)){.file-save-spinner{border:2px solid color-mix(in srgb,var(--accent) 28%,transparent)}}.file-save-spinner{border-top-color:var(--accent);border-radius:50%;animation-name:file-editor-spin;animation-duration:.65s;animation-timing-function:linear;animation-iteration-count:infinite}.file-viewer-context-label{z-index:2;border-bottom:1px solid var(--border);background:var(--bg-panel);color:var(--text-dim);padding:5px 12px;font-size:10.5px;position:sticky;top:0}@keyframes file-editor-spin{to{transform:rotate(1turn)}}@keyframes file-editor-pulse{to{opacity:.45}}@media (max-width:640px){.file-viewer-toolbar{gap:6px!important;padding-left:8px!important;padding-right:0!important}.file-viewer-meta{display:none}.file-viewer-controls{scrollbar-width:none;max-width:68vw;padding-right:8px;overflow-x:auto}.file-viewer-controls::-webkit-scrollbar{display:none}.file-close-confirm,.file-editor-notice{flex-wrap:wrap;align-items:flex-start}.file-editor-notice__actions{width:100%;margin-left:0}.file-close-confirm__message{flex-basis:100%;width:100%}.file-close-confirm__button span{display:none}.file-close-confirm__button{justify-content:center;width:28px;padding:0}.file-source-editor{padding:12px}}@media (prefers-reduced-motion:reduce){.file-save-spinner,.file-tab-dirty-dot.is-saving{animation:none}}@property --tw-rotate-x{syntax:"*";inherits:false}@property --tw-rotate-y{syntax:"*";inherits:false}@property --tw-rotate-z{syntax:"*";inherits:false}@property --tw-skew-x{syntax:"*";inherits:false}@property --tw-skew-y{syntax:"*";inherits:false}@property --tw-border-style{syntax:"*";inherits:false;initial-value:solid}@property --tw-ordinal{syntax:"*";inherits:false}@property --tw-slashed-zero{syntax:"*";inherits:false}@property --tw-numeric-figure{syntax:"*";inherits:false}@property --tw-numeric-spacing{syntax:"*";inherits:false}@property --tw-numeric-fraction{syntax:"*";inherits:false}@property --tw-outline-style{syntax:"*";inherits:false;initial-value:solid}@property --tw-blur{syntax:"*";inherits:false}@property --tw-brightness{syntax:"*";inherits:false}@property --tw-contrast{syntax:"*";inherits:false}@property --tw-grayscale{syntax:"*";inherits:false}@property --tw-hue-rotate{syntax:"*";inherits:false}@property --tw-invert{syntax:"*";inherits:false}@property --tw-opacity{syntax:"*";inherits:false}@property --tw-saturate{syntax:"*";inherits:false}@property --tw-sepia{syntax:"*";inherits:false}@property --tw-drop-shadow{syntax:"*";inherits:false}@property --tw-drop-shadow-color{syntax:"*";inherits:false}@property --tw-drop-shadow-alpha{syntax:"<percentage>";inherits:false;initial-value:100%}@property --tw-drop-shadow-size{syntax:"*";inherits:false}@property --tw-backdrop-blur{syntax:"*";inherits:false}@property --tw-backdrop-brightness{syntax:"*";inherits:false}@property --tw-backdrop-contrast{syntax:"*";inherits:false}@property --tw-backdrop-grayscale{syntax:"*";inherits:false}@property --tw-backdrop-hue-rotate{syntax:"*";inherits:false}@property --tw-backdrop-invert{syntax:"*";inherits:false}@property --tw-backdrop-opacity{syntax:"*";inherits:false}@property --tw-backdrop-saturate{syntax:"*";inherits:false}@property --tw-backdrop-sepia{syntax:"*";inherits:false}@property --tw-ease{syntax:"*";inherits:false}
1
+ /*! tailwindcss v4.2.2 | MIT License | https://tailwindcss.com */@layer properties{@supports (((-webkit-hyphens:none)) and (not (margin-trim:inline))) or ((-moz-orient:inline) and (not (color:rgb(from red r g b)))){*,::backdrop,:after,:before{--tw-rotate-x:initial;--tw-rotate-y:initial;--tw-rotate-z:initial;--tw-skew-x:initial;--tw-skew-y:initial;--tw-border-style:solid;--tw-ordinal:initial;--tw-slashed-zero:initial;--tw-numeric-figure:initial;--tw-numeric-spacing:initial;--tw-numeric-fraction:initial;--tw-outline-style:solid;--tw-blur:initial;--tw-brightness:initial;--tw-contrast:initial;--tw-grayscale:initial;--tw-hue-rotate:initial;--tw-invert:initial;--tw-opacity:initial;--tw-saturate:initial;--tw-sepia:initial;--tw-drop-shadow:initial;--tw-drop-shadow-color:initial;--tw-drop-shadow-alpha:100%;--tw-drop-shadow-size:initial;--tw-backdrop-blur:initial;--tw-backdrop-brightness:initial;--tw-backdrop-contrast:initial;--tw-backdrop-grayscale:initial;--tw-backdrop-hue-rotate:initial;--tw-backdrop-invert:initial;--tw-backdrop-opacity:initial;--tw-backdrop-saturate:initial;--tw-backdrop-sepia:initial;--tw-ease:initial}}}@layer theme{:host,:root{--font-sans:ui-sans-serif,system-ui,sans-serif,"Apple Color Emoji","Segoe UI Emoji","Segoe UI Symbol","Noto Color Emoji";--font-mono:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,"Liberation Mono","Courier New",monospace;--spacing:.25rem;--text-xs:.75rem;--text-xs--line-height:calc(1 / .75);--radius-xs:.125rem;--radius-sm:.25rem;--radius-md:.375rem;--radius-lg:.5rem;--ease-in:cubic-bezier(.4,0,1,1);--ease-out:cubic-bezier(0,0,.2,1);--animate-spin:spin 1s linear infinite;--default-transition-duration:.15s;--default-transition-timing-function:cubic-bezier(.4,0,.2,1);--default-font-family:var(--font-sans);--default-mono-font-family:var(--font-mono);--color-text-muted:var(--text-muted);--color-status-running:var(--status-running)}}@layer base{*,::backdrop,:after,:before{box-sizing:border-box;border:0 solid;margin:0;padding:0}::file-selector-button{box-sizing:border-box;border:0 solid;margin:0;padding:0}:host,html{-webkit-text-size-adjust:100%;tab-size:4;line-height:1.5;font-family:var(--default-font-family,ui-sans-serif,system-ui,sans-serif,"Apple Color Emoji","Segoe UI Emoji","Segoe UI Symbol","Noto Color Emoji");font-feature-settings:var(--default-font-feature-settings,normal);font-variation-settings:var(--default-font-variation-settings,normal);-webkit-tap-highlight-color:transparent}hr{height:0;color:inherit;border-top-width:1px}abbr:where([title]){-webkit-text-decoration:underline dotted;text-decoration:underline dotted}h1,h2,h3,h4,h5,h6{font-size:inherit;font-weight:inherit}a{color:inherit;-webkit-text-decoration:inherit;text-decoration:inherit}b,strong{font-weight:bolder}code,kbd,pre,samp{font-family:var(--default-mono-font-family,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,"Liberation Mono","Courier New",monospace);font-feature-settings:var(--default-mono-font-feature-settings,normal);font-variation-settings:var(--default-mono-font-variation-settings,normal);font-size:1em}small{font-size:80%}sub,sup{vertical-align:baseline;font-size:75%;line-height:0;position:relative}sub{bottom:-.25em}sup{top:-.5em}table{text-indent:0;border-color:inherit;border-collapse:collapse}:-moz-focusring{outline:auto}progress{vertical-align:baseline}summary{display:list-item}menu,ol,ul{list-style:none}audio,canvas,embed,iframe,img,object,svg,video{vertical-align:middle;display:block}img,video{max-width:100%;height:auto}button,input,optgroup,select,textarea{font:inherit;font-feature-settings:inherit;font-variation-settings:inherit;letter-spacing:inherit;color:inherit;opacity:1;background-color:#0000;border-radius:0}::file-selector-button{font:inherit;font-feature-settings:inherit;font-variation-settings:inherit;letter-spacing:inherit;color:inherit;opacity:1;background-color:#0000;border-radius:0}:where(select:is([multiple],[size])) optgroup{font-weight:bolder}:where(select:is([multiple],[size])) optgroup option{padding-inline-start:20px}::file-selector-button{margin-inline-end:4px}::placeholder{opacity:1}@supports (not ((-webkit-appearance:-apple-pay-button))) or (contain-intrinsic-size:1px){::placeholder{color:currentColor}@supports (color:color-mix(in lab,red,red)){::placeholder{color:color-mix(in oklab,currentcolor 50%,transparent)}}}textarea{resize:vertical}::-webkit-search-decoration{-webkit-appearance:none}::-webkit-date-and-time-value{min-height:1lh;text-align:inherit}::-webkit-datetime-edit{display:inline-flex}::-webkit-datetime-edit-fields-wrapper{padding:0}::-webkit-datetime-edit,::-webkit-datetime-edit-year-field{padding-block:0}::-webkit-datetime-edit-day-field,::-webkit-datetime-edit-month-field{padding-block:0}::-webkit-datetime-edit-hour-field,::-webkit-datetime-edit-minute-field{padding-block:0}::-webkit-datetime-edit-millisecond-field,::-webkit-datetime-edit-second-field{padding-block:0}::-webkit-datetime-edit-meridiem-field{padding-block:0}::-webkit-calendar-picker-indicator{line-height:1}:-moz-ui-invalid{box-shadow:none}button,input:where([type=button],[type=reset],[type=submit]){appearance:button}::file-selector-button{appearance:button}::-webkit-inner-spin-button,::-webkit-outer-spin-button{height:auto}[hidden]:where(:not([hidden=until-found])){display:none!important}}@layer components;@layer utilities{.pointer-events-none{pointer-events:none}.collapse{visibility:collapse}.visible{visibility:visible}.sr-only{clip-path:inset(50%);white-space:nowrap;border-width:0;width:1px;height:1px;margin:-1px;padding:0;overflow:hidden}.absolute,.sr-only{position:absolute}.fixed{position:fixed}.relative{position:relative}.static{position:static}.sticky{position:sticky}.inset-0{inset:calc(var(--spacing) * 0)}.start{inset-inline-start:var(--spacing)}.end{inset-inline-end:var(--spacing)}.z-50{z-index:50}.row-0{grid-row:0}.row-399{grid-row:399}.container{width:100%}@media (min-width:40rem){.container{max-width:40rem}}@media (min-width:48rem){.container{max-width:48rem}}@media (min-width:64rem){.container{max-width:64rem}}@media (min-width:80rem){.container{max-width:80rem}}@media (min-width:96rem){.container{max-width:96rem}}.mb-3{margin-bottom:calc(var(--spacing) * 3)}.mb-4{margin-bottom:calc(var(--spacing) * 4)}.block{display:block}.contents{display:contents}.flex{display:flex}.grid{display:grid}.hidden{display:none}.inline{display:inline}.inline-block{display:inline-block}.inline-flex{display:inline-flex}.table{display:table}.size-1\.5{width:calc(var(--spacing) * 1.5);height:calc(var(--spacing) * 1.5)}.size-3{width:calc(var(--spacing) * 3);height:calc(var(--spacing) * 3)}.size-4{width:calc(var(--spacing) * 4);height:calc(var(--spacing) * 4)}.size-5{width:calc(var(--spacing) * 5);height:calc(var(--spacing) * 5)}.h-\[720px\]{height:720px}.h-full{height:100%}.w-\[720px\]{width:720px}.w-full{width:100%}.max-w-\[760px\]{max-width:760px}.flex-1{flex:1}.flex-shrink{flex-shrink:1}.shrink-0{flex-shrink:0}.border-collapse{border-collapse:collapse}.transform{transform:var(--tw-rotate-x,) var(--tw-rotate-y,) var(--tw-rotate-z,) var(--tw-skew-x,) var(--tw-skew-y,)}.animate-\[drop-ripple_2\.4s_ease-out_infinite_backwards\]{animation:drop-ripple 2.4s ease-out infinite backwards}.animate-\[drop-zone-in_0\.15s_ease_both\]{animation:drop-zone-in .15s both}.animate-\[pulse_1\.5s_ease-in-out_infinite\]{animation:pulse 1.5s ease-in-out infinite}.animate-spin{animation:var(--animate-spin)}.resize{resize:both}.flex-col{flex-direction:column}.flex-wrap{flex-wrap:wrap}.items-center{align-items:center}.justify-center{justify-content:center}.gap-2{gap:calc(var(--spacing) * 2)}.overflow-hidden{overflow:hidden}.overflow-y-auto{overflow-y:auto}.rounded-full{border-radius:3.40282e+38px}.border{border-style:var(--tw-border-style);border-width:1px}.border-\[1\.5px\]{border-style:var(--tw-border-style);border-width:1.5px}.border-solid{--tw-border-style:solid;border-style:solid}.border-\[color-mix\(in_srgb\,var\(--accent\)_50\%\,transparent\)\]{border-color:var(--accent)}@supports (color:color-mix(in lab,red,red)){.border-\[color-mix\(in_srgb\,var\(--accent\)_50\%\,transparent\)\]{border-color:color-mix(in srgb,var(--accent) 50%,transparent)}}.bg-\[color-mix\(in_srgb\,var\(--accent\)_6\%\,transparent\)\]{background-color:var(--accent)}@supports (color:color-mix(in lab,red,red)){.bg-\[color-mix\(in_srgb\,var\(--accent\)_6\%\,transparent\)\]{background-color:color-mix(in srgb,var(--accent) 6%,transparent)}}.bg-status-running{background-color:var(--color-status-running)}.px-2{padding-inline:calc(var(--spacing) * 2)}.px-4{padding-inline:calc(var(--spacing) * 4)}.py-1{padding-block:calc(var(--spacing) * 1)}.py-2{padding-block:calc(var(--spacing) * 2)}.py-3{padding-block:calc(var(--spacing) * 3)}.py-8{padding-block:calc(var(--spacing) * 8)}.pt-4{padding-top:calc(var(--spacing) * 4)}.text-center{text-align:center}.text-xs{font-size:var(--text-xs);line-height:var(--tw-leading,var(--text-xs--line-height))}.text-\[13px\]{font-size:13px}.break-all{word-break:break-all}.text-\[var\(--error-text\)\]{color:var(--error-text)}.text-text-muted{color:var(--color-text-muted)}.capitalize{text-transform:capitalize}.uppercase{text-transform:uppercase}.italic{font-style:italic}.tabular-nums{--tw-numeric-spacing:tabular-nums;font-variant-numeric:var(--tw-ordinal,) var(--tw-slashed-zero,) var(--tw-numeric-figure,) var(--tw-numeric-spacing,) var(--tw-numeric-fraction,)}.line-through{text-decoration-line:line-through}.underline{text-decoration-line:underline}.outline{outline-style:var(--tw-outline-style);outline-width:1px}.blur{--tw-blur:blur(8px)}.blur,.filter{filter:var(--tw-blur,) var(--tw-brightness,) var(--tw-contrast,) var(--tw-grayscale,) var(--tw-hue-rotate,) var(--tw-invert,) var(--tw-saturate,) var(--tw-sepia,) var(--tw-drop-shadow,)}.backdrop-blur-\[1px\]{--tw-backdrop-blur:blur(1px);-webkit-backdrop-filter:var(--tw-backdrop-blur,) var(--tw-backdrop-brightness,) var(--tw-backdrop-contrast,) var(--tw-backdrop-grayscale,) var(--tw-backdrop-hue-rotate,) var(--tw-backdrop-invert,) var(--tw-backdrop-opacity,) var(--tw-backdrop-saturate,) var(--tw-backdrop-sepia,);backdrop-filter:var(--tw-backdrop-blur,) var(--tw-backdrop-brightness,) var(--tw-backdrop-contrast,) var(--tw-backdrop-grayscale,) var(--tw-backdrop-hue-rotate,) var(--tw-backdrop-invert,) var(--tw-backdrop-opacity,) var(--tw-backdrop-saturate,) var(--tw-backdrop-sepia,)}.transition{transition-property:color,background-color,border-color,outline-color,text-decoration-color,fill,stroke,--tw-gradient-from,--tw-gradient-via,--tw-gradient-to,opacity,box-shadow,transform,translate,scale,rotate,filter,-webkit-backdrop-filter,backdrop-filter,display,content-visibility,overlay,pointer-events;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.ease-in{--tw-ease:var(--ease-in);transition-timing-function:var(--ease-in)}.ease-out{--tw-ease:var(--ease-out);transition-timing-function:var(--ease-out)}.\[scrollbar-width\:none\]{scrollbar-width:none}@media (min-width:520px){.min-\[520px\]\:flex{display:flex}}}:root{color-scheme:light;--bg:#fdfcfa;--bg-panel:#f7f6f4;--bg-elevated:#fff;--bg-hover:#0000000d;--bg-selected:#b350172b;--bg-subtle:#f4f3f1;--border:#e5e1de;--border-strong:#cbc7c2;--text:#393a34;--text-muted:#5c5c54;--text-dim:#797970;--accent:#b35017;--accent-hover:#9a4310;--accent-foreground:#fff;--user-bg:#f7f2ee;--assistant-bg:#fdfcfa;--tool-bg:#efeeec80;--code-bg:#f4f3f1;--status-running:#b35017;--status-unread:#2d72c4;--status-success:#5f8d3d;--status-warning:#8d6c15;--status-danger:#b7493f;--status-success-bg:#5f8d3d14;--status-success-border:#5f8d3d59;--status-success-foreground:#fff;--status-warning-bg:#8d6c1514;--status-warning-border:#8d6c1566;--status-danger-bg:#b7493f12;--status-danger-border:#b7493f66;--error-text:#a43d35;--diff-added-text:#47752b;--diff-added-bg:#5f8d3d17;--diff-added-border:#5f8d3d99;--diff-removed-text:#a43d35;--diff-removed-bg:#b7493f17;--diff-removed-border:#b7493f99;--diff-hunk-bg:#2d72c41f;--live-indicator-glow:0 0 6px #5f8d3d99;--warning:var(--status-warning);--danger:var(--status-danger);--success:var(--status-success);--focus:#b35017;--focus-ring:#b3501755;--overlay:#39393420;--disabled-opacity:.48;--shadow-float:0 18px 50px #39393424;--shadow-input:0 1px 2px #39393412,0 0 0 1px #ffffff80 inset;--radius-xs:4px;--radius-sm:6px;--radius-md:9px;--radius-lg:13px;--radius-pill:999px}html.dark{color-scheme:dark;--bg:#120f0e;--bg-panel:#171615;--bg-elevated:#1c1a18;--bg-hover:#ffffff12;--bg-selected:#b9a5992b;--bg-subtle:#171616;--border:#242323;--border-strong:#504e4c;--text:#c9c5ba;--text-muted:#8f8b81;--text-dim:#77736b;--accent:#da7c47;--accent-hover:#eb8c57;--accent-foreground:#120f0e;--user-bg:#25170e;--assistant-bg:#120f0e;--tool-bg:#120f0e80;--code-bg:#0e0c0b;--status-running:#da7c47;--status-unread:#479fe6;--status-success:#76ad4f;--status-warning:#c67f13;--status-danger:#da5b4a;--status-success-bg:#76ad4f1f;--status-success-border:#76ad4f70;--status-success-foreground:#120f0e;--status-warning-bg:#c67f131f;--status-warning-border:#c67f1370;--status-danger-bg:#da5b4a1f;--status-danger-border:#da5b4a7a;--error-text:#ed7665;--diff-added-text:#8bc766;--diff-added-bg:#76ad4f1f;--diff-added-border:#76ad4fb3;--diff-removed-text:#ed7665;--diff-removed-bg:#da5b4a24;--diff-removed-border:#da5b4ab3;--diff-hunk-bg:#479fe624;--live-indicator-glow:0 0 6px #76ad4fb3;--warning:var(--status-warning);--danger:var(--status-danger);--success:var(--status-success);--focus:#da7c47;--focus-ring:#da7c4755;--overlay:#0009;--disabled-opacity:.48;--shadow-float:0 20px 60px #00000070;--shadow-input:0 1px 2px #00000040,0 0 0 1px #ffffff08 inset}html[data-theme-style=fusion]{--bg:#fbfcfd;--bg-panel:#f3f6f7;--bg-elevated:#fff;--bg-hover:#163b4d0a;--bg-selected:#2e6f9520;--bg-subtle:#eef2f3;--border:#dce4e6;--border-strong:#bdcbd0;--text:#263439;--text-muted:#607077;--text-dim:#819096;--accent:#286e98;--accent-hover:#1e5c82;--accent-foreground:#fff;--user-bg:#eaf2f7;--assistant-bg:#fbfcfd;--tool-bg:#f0f5f4;--code-bg:#172126;--status-running:#27836e;--status-unread:#286e98;--status-success:#49805d;--status-warning:#9a6a1a;--status-danger:#b34f58;--status-success-bg:#49805d14;--status-success-border:#49805d59;--status-success-foreground:#fff;--status-warning-bg:#9a6a1a14;--status-warning-border:#9a6a1a66;--status-danger-bg:#b34f5812;--status-danger-border:#b34f5866;--error-text:#a23f49;--diff-added-text:#39704d;--diff-added-bg:#49805d17;--diff-added-border:#49805d99;--diff-removed-text:#a23f49;--diff-removed-bg:#b34f5817;--diff-removed-border:#b34f5899;--diff-hunk-bg:#286e981f;--live-indicator-glow:0 0 6px #49805d99;--focus:#286e98;--focus-ring:#286e9844;--overlay:#18343d30;--shadow-float:0 18px 48px #163b4d20;--shadow-input:0 1px 2px #163b4d12,0 0 0 1px #fff inset}html.dark[data-theme-style=fusion]{--bg:#101719;--bg-panel:#141d20;--bg-elevated:#192428;--bg-hover:#d8edf212;--bg-selected:#6ba7c426;--bg-subtle:#172124;--border:#263337;--border-strong:#46585e;--text:#ced8d8;--text-muted:#8d9c9e;--text-dim:#708084;--accent:#69a7ca;--accent-hover:#7fb8d6;--accent-foreground:#0f1719;--user-bg:#162832;--assistant-bg:#101719;--tool-bg:#121d1f;--code-bg:#0b1113;--status-running:#5eb39b;--status-unread:#69a7ca;--status-success:#79ad78;--status-warning:#d0a356;--status-danger:#dd777e;--status-success-bg:#79ad781f;--status-success-border:#79ad7870;--status-success-foreground:#101719;--status-warning-bg:#d0a3561f;--status-warning-border:#d0a35670;--status-danger-bg:#dd777e1f;--status-danger-border:#dd777e7a;--error-text:#ed8f95;--diff-added-text:#91c590;--diff-added-bg:#79ad781f;--diff-added-border:#79ad78b3;--diff-removed-text:#ed8f95;--diff-removed-bg:#dd777e24;--diff-removed-border:#dd777eb3;--diff-hunk-bg:#69a7ca24;--live-indicator-glow:0 0 6px #79ad78b3;--focus:#69a7ca;--focus-ring:#69a7ca55;--overlay:#0009;--shadow-float:0 20px 60px #0006;--shadow-input:0 1px 2px #0000003d,0 0 0 1px #ffffff08 inset}::view-transition-old(root){mix-blend-mode:normal;animation:none}::view-transition-new(root){mix-blend-mode:normal;animation:none}::view-transition-old(root){z-index:1}::view-transition-new(root){z-index:2}*{box-sizing:border-box}body,html{background:var(--bg);height:100%;color:var(--text);overscroll-behavior:none;margin:0;padding:0;font-family:Aptos,Segoe UI Variable,Noto Sans SC,-apple-system,BlinkMacSystemFont,sans-serif;font-size:14px}body{height:100dvh}::-webkit-scrollbar{width:4px;height:4px}::-webkit-scrollbar-track{background:0 0}::-webkit-scrollbar-thumb{background:var(--border);border-radius:2px}::-webkit-scrollbar-thumb:hover{background:var(--text-dim)}:root{--font-mono:var(--font-noto-mono),"JetBrains Mono","Fira Code","Consolas",ui-monospace,"PingFang SC","Microsoft YaHei",monospace}code,pre{font-family:var(--font-mono)}.markdown-body{color:var(--text);word-break:break-word;font-size:14px;line-height:1.72}.markdown-body.markdown-body--extension{font-size:inherit;color:inherit;line-height:1.5}.markdown-body.markdown-body--extension p{margin:0 0 4px}.markdown-body.markdown-body--extension p:last-child{margin-bottom:0}.markdown-body.markdown-body--extension h1,.markdown-body.markdown-body--extension h2,.markdown-body.markdown-body--extension h3,.markdown-body.markdown-body--extension h4,.markdown-body.markdown-body--extension h5,.markdown-body.markdown-body--extension h6{margin:0 0 4px;font-size:1em;font-weight:650;line-height:1.35}.markdown-body.markdown-body--extension ol,.markdown-body.markdown-body--extension ul{margin:2px 0 4px}.markdown-body p{margin:0 0 8px}.markdown-body p:last-child{margin-bottom:0}.markdown-body h1,.markdown-body h2,.markdown-body h3,.markdown-body h4,.markdown-body h5,.markdown-body h6{color:var(--text);letter-spacing:0;margin:10px 0 5px;font-weight:600;line-height:1.35}.markdown-body h1{font-size:1.16em}.markdown-body h2{font-size:1.08em}.markdown-body h3{color:var(--text);font-size:.98em}@supports (color:color-mix(in lab,red,red)){.markdown-body h3{color:color-mix(in srgb,var(--text) 88%,var(--text-muted))}}.markdown-body ol,.markdown-body ul{margin:5px 0 8px;padding-left:22px;list-style-position:outside}.markdown-body li{margin:3px 0;padding-left:2px}.markdown-body ul>li{list-style-type:disc}.markdown-body ol>li{list-style-type:decimal}.markdown-body li>p{margin:0}.markdown-body li::marker{color:var(--accent)}@supports (color:color-mix(in lab,red,red)){.markdown-body li::marker{color:color-mix(in srgb,var(--accent) 72%,var(--text-muted))}}.markdown-body li::marker{font-weight:600}.markdown-body strong{color:var(--text)}@supports (color:color-mix(in lab,red,red)){.markdown-body strong{color:color-mix(in srgb,var(--text) 88%,var(--accent))}}.markdown-body strong{font-weight:700}.markdown-body em{color:var(--text-muted)}.markdown-body a{color:var(--accent);text-underline-offset:3px;text-decoration:underline;text-decoration-thickness:1px;-webkit-text-decoration-color:var(--accent);text-decoration-color:var(--accent)}@supports (color:color-mix(in lab,red,red)){.markdown-body a{-webkit-text-decoration-color:color-mix(in srgb,var(--accent) 45%,transparent);text-decoration-color:color-mix(in srgb,var(--accent) 45%,transparent)}}.markdown-body a:hover{-webkit-text-decoration-color:var(--accent);text-decoration-color:var(--accent)}.markdown-body .markdown-inline-code{background:var(--bg-subtle);color:var(--text);font-family:var(--font-mono);box-shadow:inset 0 0 0 1px var(--border);border-radius:5px;padding:1px 5px;font-size:.92em}@supports (color:color-mix(in lab,red,red)){.markdown-body .markdown-inline-code{box-shadow:inset 0 0 0 1px color-mix(in srgb,var(--border) 70%,transparent)}}.markdown-body .contains-task-list{padding-left:0;list-style:none}.markdown-body .task-list-item{padding-left:25px;display:block;position:relative}.markdown-body .task-list-item::marker{content:""}.markdown-body .task-list-item>input[type=checkbox],.markdown-body .task-list-item>p:first-child>input[type=checkbox]:first-child{appearance:none;border:1px solid var(--border);background:var(--bg);border-radius:4px;place-content:center;width:14px;height:14px;margin:0;display:inline-grid;position:absolute;top:.35em;left:0}.markdown-body .task-list-item>input[type=checkbox]:checked,.markdown-body .task-list-item>p:first-child>input[type=checkbox]:first-child:checked{border-color:var(--accent)}@supports (color:color-mix(in lab,red,red)){.markdown-body .task-list-item>input[type=checkbox]:checked,.markdown-body .task-list-item>p:first-child>input[type=checkbox]:first-child:checked{border-color:color-mix(in srgb,var(--accent) 55%,var(--border))}}.markdown-body .task-list-item>input[type=checkbox]:checked,.markdown-body .task-list-item>p:first-child>input[type=checkbox]:first-child:checked{background:var(--accent)}@supports (color:color-mix(in lab,red,red)){.markdown-body .task-list-item>input[type=checkbox]:checked,.markdown-body .task-list-item>p:first-child>input[type=checkbox]:first-child:checked{background:color-mix(in srgb,var(--accent) 10%,var(--bg))}}.markdown-body .task-list-item>input[type=checkbox]:checked:before,.markdown-body .task-list-item>p:first-child>input[type=checkbox]:first-child:checked:before{content:"";border:solid var(--accent);border-width:0 1.5px 1.5px 0;width:4px;height:8px;transform:rotate(45deg)translateY(-1px)}.markdown-body blockquote{border-left:3px solid var(--border)}@supports (color:color-mix(in lab,red,red)){.markdown-body blockquote{border-left:3px solid color-mix(in srgb,var(--border) 75%,var(--text-muted))}}.markdown-body blockquote{background:var(--bg-subtle);color:var(--text-muted);border-radius:0 6px 6px 0;margin:6px 0;padding:6px 11px}.markdown-table-wrap{border:1px solid var(--border);border-radius:var(--radius-md);width:100%;margin:8px 0;overflow:auto hidden}.markdown-body table{border-collapse:separate;border-spacing:0;min-width:100%;font-size:13px}.markdown-body td,.markdown-body th{border:0;border-bottom:1px solid var(--border);text-align:left;vertical-align:top;padding:6px 10px}.markdown-body tr:last-child td{border-bottom:0}.markdown-body th{background:var(--bg-panel);color:var(--text)}@supports (color:color-mix(in lab,red,red)){.markdown-body th{color:color-mix(in srgb,var(--text) 88%,var(--text-muted))}}.markdown-body th{font-weight:650}.markdown-body tbody tr:nth-child(2n) td{background:var(--bg-subtle)}.markdown-body hr{background:linear-gradient(90deg,transparent,var(--border),transparent);border:none;height:1px;margin:12px 0}.markdown-body .katex-display{margin:.6em 0;padding:2px 0;overflow:auto hidden}.markdown-body .katex{font-size:1.05em}.markdown-user-message p{white-space:pre-wrap}.markdown-custom-message{line-height:1.32}.markdown-custom-message p{margin:0}.markdown-custom-message h1,.markdown-custom-message h2,.markdown-custom-message h3,.markdown-custom-message h4,.markdown-custom-message h5,.markdown-custom-message h6{margin:4px 0 2px;line-height:1.18}.markdown-custom-message ol,.markdown-custom-message ul{margin:2px 0 3px}.markdown-custom-message li{margin:0}.markdown-custom-message blockquote{margin:3px 0;padding:4px 8px}.markdown-custom-message .markdown-code-block,.markdown-custom-message .markdown-table-wrap{margin:4px 0}.markdown-compaction-message{line-height:1.5}.markdown-compaction-message p{margin:0 0 7px}.markdown-compaction-message h1,.markdown-compaction-message h2,.markdown-compaction-message h3,.markdown-compaction-message h4,.markdown-compaction-message h5,.markdown-compaction-message h6{margin:8px 0 3px;line-height:1.25}.markdown-compaction-message ol,.markdown-compaction-message ul{margin:4px 0 8px}.markdown-compaction-message li{margin:2px 0}.markdown-compaction-message .markdown-code-block,.markdown-compaction-message .markdown-table-wrap{margin:6px 0}.compaction-file-details{border-top:1px solid var(--border);color:var(--text-muted);margin-top:10px;padding-top:8px;font-size:12px}.compaction-file-details summary{cursor:pointer;font-weight:600;line-height:1.4}.compaction-file-section{margin-top:8px}.compaction-file-title{color:var(--text);margin-bottom:4px;font-size:11px;font-weight:650}.compaction-file-list{border:1px solid var(--border);background:var(--bg-panel);max-height:180px;font-family:var(--font-mono);border-radius:6px;margin:0;padding:7px 8px;font-size:11px;line-height:1.45;list-style:none;overflow:auto}.compaction-file-list li{overflow-wrap:anywhere}.compaction-file-list li+li{margin-top:3px}.markdown-code-block{border:1px solid var(--border);border-radius:var(--radius-md);background:var(--code-bg);box-shadow:none;margin:6px 0;position:relative;overflow:hidden}.markdown-code-header{background:var(--bg-panel);padding:5px 10px}@supports (color:color-mix(in lab,red,red)){.markdown-code-header{background:color-mix(in srgb,var(--bg-panel) 88%,var(--code-bg))}}.markdown-code-header{border-bottom:1px solid var(--border);color:var(--text-dim);justify-content:space-between;align-items:center;gap:8px;font-size:11px;display:flex}.markdown-code-lang{color:var(--text-muted);font-family:var(--font-mono);font-weight:650}.markdown-code-actions{align-items:center;gap:6px;display:flex}.markdown-code-action{border:1px solid var(--border);background:var(--bg);color:var(--text-muted);cursor:pointer;font:inherit;border-radius:5px;padding:2px 7px;font-size:11px;line-height:1.25}.markdown-code-action:hover:not(:disabled){color:var(--text);border-color:var(--border)}@supports (color:color-mix(in lab,red,red)){.markdown-code-action:hover:not(:disabled){border-color:color-mix(in srgb,var(--border) 70%,var(--text-muted))}}.markdown-code-action:disabled{color:var(--text-dim);cursor:not-allowed;opacity:var(--disabled-opacity)}.chat-input-shell:focus-within{border-color:var(--focus)!important;box-shadow:var(--shadow-input),0 0 0 3px var(--focus-ring)!important}@supports (color:color-mix(in lab,red,red)){.chat-input-shell:focus-within{box-shadow:var(--shadow-input),0 0 0 3px color-mix(in srgb,var(--focus-ring) 72%,transparent)!important}}.markdown-code-action.is-active{background:var(--bg-selected);color:var(--text)}.mermaid-block{background:var(--bg);padding:12px;overflow-x:auto}@supports (color:color-mix(in lab,red,red)){.mermaid-block{background:color-mix(in srgb,var(--bg) 92%,var(--bg-panel))}}.mermaid-block svg{max-width:none;display:block}.mermaid-block-loading{min-height:120px}.mermaid-block-error{color:var(--text-muted);font-family:var(--font-mono);font-size:12px}.file-viewer-toolbar{min-height:35px}.file-viewer-path{flex:auto;min-width:48px}.file-viewer-meta{text-overflow:ellipsis;flex:0 auto;min-width:0;overflow:hidden}.file-viewer-controls{gap:6px}.file-viewer-action-slot{flex:0 0 24px;justify-content:center;align-items:center;width:24px;height:24px;display:flex}.file-viewer-mode-switch{border:1px solid var(--border);border-radius:5px;height:24px;display:flex;overflow:hidden}.file-viewer-mode-button{border:0;border-left:1px solid var(--border);height:22px;font:inherit;letter-spacing:0;cursor:pointer;white-space:nowrap;padding:0 8px;font-size:11px;font-weight:500}.file-viewer-mode-button:first-child{border-left:0}.file-viewer-mode-button:hover{filter:brightness(1.08)}.file-viewer-icon-button{box-sizing:border-box;border:1px solid var(--border);width:24px;height:24px;flex:0 0 24px}.file-viewer-icon-button:hover{color:var(--text);background:var(--bg-hover)!important}.file-viewer-icon-button:focus-visible,.file-viewer-mode-button:focus-visible{outline:2px solid var(--accent);outline-offset:-2px}@media (max-width:640px){.file-viewer-meta{display:none}}@media (max-width:380px){.file-viewer-toolbar{gap:6px!important;padding-inline:8px!important}.file-viewer-mode-button{padding-inline:6px}}.markdown-file-preview h1{font-size:1.8em}.markdown-file-preview h2{font-size:1.4em}.markdown-file-preview h3{font-size:1.15em}.markdown-file-preview p{margin:0 0 12px}.markdown-file-preview pre{border:1px solid var(--border);border-radius:6px;margin:12px 0;padding:12px 16px;font-size:13px;overflow-x:auto}.markdown-file-preview code,.markdown-file-preview pre{background:var(--bg-panel);font-family:var(--font-mono)}.markdown-file-preview code{border-radius:3px;padding:1px 5px;font-size:.9em}.markdown-file-preview pre code{background:0 0;padding:0}.markdown-body span.linenumber,span.linenumber{color:var(--text-dim)!important;font-style:normal!important}@keyframes drop-zone-in{0%{opacity:0;transform:scale(.97)}to{opacity:1;transform:scale(1)}}@keyframes drop-icon-float{0%,to{transform:translateY(0)}50%{transform:translateY(-6px)}}@keyframes drop-ring-pulse{0%,to{opacity:.5;transform:scale(1)}50%{opacity:1;transform:scale(1.06)}}@keyframes drop-ripple{0%{opacity:.6;transform:scale(0)}to{opacity:0;transform:scale(1)}}@keyframes blink{0%,to{opacity:1}50%{opacity:.3}}@keyframes spin{to{transform:rotate(1turn)}}@keyframes sidebar-running-spin{0%{transform:rotate(0)}to{transform:rotate(1turn)}}@keyframes pulse{50%{opacity:.5}}@keyframes notice-shelf-in{0%{opacity:0;transform:translateY(-6px)scale(.995)}to{opacity:1;transform:translateY(0)scale(1)}}@keyframes notice-shelf-out{0%{opacity:1;transform:translateY(0)scale(1)}to{opacity:0;transform:translateY(-5px)scale(.995)}}@media (prefers-reduced-motion:reduce){.notice-shelf-item{animation-duration:.001ms!important}}.chat-jump-bottom{z-index:45;border:1px solid var(--border);background:var(--bg-panel);width:32px;height:32px;color:var(--text-muted);cursor:pointer;opacity:0;pointer-events:none;border-radius:50%;justify-content:center;align-items:center;padding:0;transition:opacity .15s,transform .15s,background-color .15s,color .15s;display:flex;position:absolute;bottom:14px;left:50%;transform:translate(-50%)translateY(6px)scale(.92);box-shadow:0 1px 2px #0f172a0f,0 8px 24px -12px #0f172a2e}.chat-jump-bottom.is-visible{opacity:1;pointer-events:auto;transform:translate(-50%)translateY(0)scale(1)}.chat-jump-bottom:hover{background:var(--bg-hover);color:var(--text)}@media (prefers-reduced-motion:reduce){.chat-jump-bottom,.chat-jump-bottom.is-visible{transition:opacity .001ms;transform:translate(-50%)}}@keyframes saved-pop{0%{box-shadow:0 0 0 0 color-mix(in srgb,var(--status-success) 55%,transparent);transform:scale(1)}40%{box-shadow:0 0 0 6px color-mix(in srgb,var(--status-success) 25%,transparent);transform:scale(1.08)}to{transform:scale(1);box-shadow:0 0 #0000}}@keyframes saved-check-draw{0%{stroke-dashoffset:18px;opacity:0}to{stroke-dashoffset:0;opacity:1}}@media (min-width:641px){.sidebar-overlay-backdrop{display:none!important}.sidebar-container{transition:width .2s,min-width .2s;position:relative;overflow:hidden}.sidebar-container.sidebar-dragging{transition:none}.sidebar-container.sidebar-open{width:var(--sidebar-width,260px);min-width:var(--sidebar-width,260px)}.sidebar-container.sidebar-closed{width:0;min-width:0;border-right:none!important}.sidebar-inner{width:var(--sidebar-width,260px);min-width:var(--sidebar-width,260px)}}.sidebar-inner{flex-direction:column;flex:auto;min-width:0;height:100%;min-height:0;display:flex}.sidebar-resize-handle{cursor:col-resize;z-index:10;touch-action:none;width:5px;position:absolute;top:0;bottom:0;right:0}.sidebar-resize-handle.dragging,.sidebar-resize-handle:hover{background:var(--accent)}@supports (color:color-mix(in lab,red,red)){.sidebar-resize-handle.dragging,.sidebar-resize-handle:hover{background:color-mix(in srgb,var(--accent) 35%,transparent)}}.sidebar-resize-handle:focus-visible{outline:2px solid var(--accent);outline-offset:-2px}@media (max-width:640px){.sidebar-resize-handle{display:none}}.sidebar-pagination-btn{height:22px;color:var(--text-dim);cursor:pointer;background:0 0;border:none;border-radius:6px;align-items:center;gap:4px;padding:0 8px;font-size:11px;transition:background .12s,color .12s;display:inline-flex}.sidebar-pagination-btn:hover{background:var(--bg-hover);color:var(--text)}.sidebar-pagination-btn:focus-visible{outline:2px solid var(--accent);outline-offset:-2px}@media (min-width:641px){.workspace-container{flex-shrink:0;transition:width .2s,min-width .2s;overflow:hidden}.workspace-container.workspace-dragging{transition:none}.workspace-container.workspace-closed{border-left:none!important}}@media (max-width:640px){.chat-stats-center{display:none!important}.sidebar-container{width:280px;max-width:85vw;transition:transform .25s,box-shadow .25s;top:0;bottom:0;left:0;position:fixed!important}.sidebar-container.sidebar-open{transform:translate(0);box-shadow:4px 0 20px #00000026}.sidebar-container.sidebar-closed{box-shadow:none;transform:translate(-100%)}.workspace-container{transition:transform .25s,box-shadow .25s;top:0;bottom:0;right:0;width:100%!important;min-width:0!important;position:fixed!important}.workspace-container.workspace-open{transform:translate(0);box-shadow:-4px 0 20px #00000026}.workspace-container.workspace-closed{box-shadow:none;transform:translate(100%);border-left:none!important}.workspace-container>.workspace-inner{width:100%!important;min-width:0!important}}.sidebar-icon-btn{width:24px;height:24px;color:var(--text-muted);cursor:pointer;background:0 0;border:none;border-radius:6px;flex-shrink:0;justify-content:center;align-items:center;padding:0;transition:background .12s,color .12s;display:inline-flex}.sidebar-icon-btn:hover:not(:disabled){background:var(--bg-hover);color:var(--text)}.sidebar-icon-btn:active:not(:disabled){background:var(--bg-selected)}.sidebar-icon-btn:focus-visible{outline:2px solid var(--accent);outline-offset:-2px}.sidebar-icon-btn:disabled{color:var(--text-dim)}@media (hover:hover) and (pointer:fine){.sidebar-indent-indicator{opacity:0;pointer-events:none}.sidebar-row:focus-within>.sidebar-indent-indicator,.sidebar-row:hover>.sidebar-indent-indicator{opacity:1;pointer-events:auto}.sidebar-row:focus-within .sidebar-indicator-icon,.sidebar-row:hover .sidebar-indicator-icon{opacity:0;pointer-events:none}}@media (hover:none),(pointer:coarse){.sidebar-indent-indicator{opacity:1;pointer-events:auto}.sidebar-indicator-icon{opacity:0;pointer-events:none}}.sidebar-chevron-always{opacity:1;pointer-events:auto}.sidebar-indicator-icon{transition:opacity .12s}.extension-card-btn{border:1px solid var(--border);background:var(--bg);height:26px;color:var(--text-muted);font:inherit;cursor:pointer;border-radius:6px;align-items:center;gap:5px;padding:0 12px;font-size:12px;transition:background .12s,color .12s,border-color .12s;display:inline-flex}.extension-card-btn:hover:not(:disabled){background:var(--bg-hover);color:var(--text)}.extension-card-btn:disabled{cursor:not-allowed;opacity:.55}.guide-selectors{flex-wrap:wrap;align-items:center;gap:4px;margin-bottom:10px;display:flex}.guide-selector{background:0 0;border:1px solid #0000;border-radius:6px;align-items:center;gap:5px;height:28px;padding:0 6px;transition:background .12s,border-color .12s;display:inline-flex}.guide-selector:hover{background:var(--bg-hover)}.guide-selector:focus-within{background:var(--bg-hover);border-color:var(--accent)}.guide-selector-icon{color:var(--text-dim);flex-shrink:0}.guide-select{width:160px;min-width:0;max-width:160px;color:var(--text);font:inherit;cursor:pointer;text-overflow:ellipsis;background:0 0;border:none;outline:none;font-size:12.5px}.guide-select:disabled{color:var(--text-dim);cursor:default}.guide-new-worktree-btn{width:18px;height:18px;color:var(--text-dim);cursor:pointer;background:0 0;border:1px solid #0000;border-radius:5px;justify-content:center;align-items:center;padding:0;transition:background .12s,color .12s;display:inline-flex}.guide-new-worktree-btn:hover:not(:disabled){background:var(--bg-hover);color:var(--text)}.guide-new-worktree-btn:disabled{cursor:default;opacity:.5}.guide-worktree-form{flex-wrap:wrap;align-items:center;gap:6px;display:flex}.guide-worktree-input{border:1px solid var(--border);background:var(--bg-panel);min-width:160px;max-width:260px;height:28px;color:var(--text);font:inherit;border-radius:6px;outline:none;padding:0 8px;font-size:12.5px}.guide-worktree-input:focus{border-color:var(--accent)}.guide-worktree-error{color:var(--danger,#e5484d);font-size:11px}@media (max-width:640px){.guide-selectors{flex-wrap:nowrap}.guide-selector{flex:1;min-width:0}.guide-select{width:100%;max-width:none}.guide-new-worktree-btn{flex-shrink:0}}.sidebar-icon-btn--active,.sidebar-icon-btn--active:hover:not(:disabled){background:var(--bg-selected);color:var(--accent)}.sidebar-icon-btn--danger:hover:not(:disabled){background:var(--status-danger-bg);color:var(--status-danger)}.sidebar-icon-btn--done,.sidebar-icon-btn--done:hover:not(:disabled){background:var(--status-success)}@supports (color:color-mix(in lab,red,red)){.sidebar-icon-btn--done,.sidebar-icon-btn--done:hover:not(:disabled){background:color-mix(in srgb,var(--status-success) 18%,transparent)}}.sidebar-icon-btn--done,.sidebar-icon-btn--done:hover:not(:disabled){color:var(--status-success)}.sidebar-row .sidebar-icon-btn--hover{opacity:0}.sidebar-row .sidebar-icon-btn--hover:focus-visible,.sidebar-row:focus-within .sidebar-icon-btn--hover,.sidebar-row:hover .sidebar-icon-btn--hover{opacity:1}@media (max-width:640px){.sidebar-toolbar{gap:12px!important}}.settings-layout{height:min(72dvh,660px);min-height:0;display:flex}.settings-nav-list{flex-direction:column;gap:2px;padding:10px 8px;display:flex}.settings-nav-item{border-radius:var(--radius-sm);width:100%;color:var(--text-muted);text-align:left;cursor:pointer;background:0 0;border:none;align-items:center;gap:8px;font-size:13px;font-weight:400;transition:background .12s,color .12s;display:flex;position:relative}.settings-nav-item:hover{background:var(--bg-hover);color:var(--text)}.settings-nav-item.is-active{background:var(--bg-selected);color:var(--text);font-weight:600}.settings-nav-item.is-active:before{border-radius:var(--radius-pill);background:var(--accent);content:"";width:2px;position:absolute;top:7px;bottom:7px;left:3px}.settings-content-pane,.settings-scroll-region{flex-direction:column;flex:1;min-width:0;min-height:0;display:flex}.settings-content-pane{background:var(--bg);overflow:hidden}.settings-scroll-region{scrollbar-gutter:stable;overflow-y:auto}.settings-page-content{width:min(100%,700px);padding:24px 28px 32px}.settings-choice{margin-bottom:26px}.settings-segmented-control{border:1px solid var(--border);border-radius:var(--radius-md);background:var(--bg-panel);width:fit-content;max-width:100%;box-shadow:var(--shadow-input);gap:2px;padding:3px;display:flex}.settings-segmented-option{border-radius:var(--radius-sm);min-width:96px;height:32px;color:var(--text-muted);white-space:nowrap;cursor:pointer;background:0 0;border:none;padding:0 14px;font-size:12.5px;transition:background .12s,color .12s,box-shadow .12s}.settings-segmented-option:hover{color:var(--text)}.settings-segmented-option.is-active{background:var(--bg-elevated);color:var(--text);box-shadow:0 1px 3px var(--text)}@supports (color:color-mix(in lab,red,red)){.settings-segmented-option.is-active{box-shadow:0 1px 3px color-mix(in srgb,var(--text) 12%,transparent)}}.settings-segmented-option.is-active{font-weight:600}.settings-empty-state{text-align:center;flex-direction:column;justify-content:center;align-items:center;gap:10px;height:100%;padding:32px 24px;display:flex}.app-top-bar{height:36px}.app-top-bar,.workspace-header{border-bottom:1px solid var(--border);background:var(--bg-panel);flex-shrink:0;align-items:center;display:flex}.workspace-header{gap:4px;height:40px;padding:0 8px 0 12px}.changes-panel{border-left:1px solid var(--border);background:var(--bg-panel);flex-direction:column;flex-shrink:0;align-self:stretch;min-width:0;height:100%;min-height:0;display:flex;position:relative;overflow:hidden}.changes-panel>.changes-panel{border-left:none;flex:auto;height:100%;min-height:0;width:100%!important;min-width:0!important}.changes-panel-content{flex:1;grid-template-rows:minmax(120px,36%) minmax(0,1fr);min-height:0;display:grid}.changes-panel-diff,.changes-panel-list{min-height:0;overflow:auto}.changes-panel-list{border-bottom:1px solid var(--border)}.changes-panel-hint{color:var(--text-dim);padding:18px 14px;font-size:11.5px;line-height:1.5}.changes-panel-hint.is-error{color:var(--status-danger)}.changes-panel-resize-handle{z-index:10;cursor:col-resize;touch-action:none;width:6px;position:absolute;top:0;bottom:0;left:-3px}.changes-panel-resize-handle.dragging,.changes-panel-resize-handle:hover{background:var(--accent)}@supports (color:color-mix(in lab,red,red)){.changes-panel-resize-handle.dragging,.changes-panel-resize-handle:hover{background:color-mix(in srgb,var(--accent) 35%,transparent)}}.secondary-panel-inner{flex-direction:column;width:100%;min-width:0;height:100%;min-height:0;display:flex;overflow:hidden}.secondary-panel-tabs{flex:none;min-width:0;min-height:0}.secondary-panel-body{flex-direction:column;flex:auto;min-width:0;min-height:0;display:flex;overflow:hidden}.workspace-navigation-rail{border-left:1px solid var(--border);background:var(--bg);flex-direction:column;align-items:center;gap:4px;padding:8px 0;display:flex}.workspace-resize-handle{cursor:col-resize;z-index:10;touch-action:none;width:5px;position:absolute;top:0;bottom:0;left:0}.workspace-resize-handle.dragging,.workspace-resize-handle:hover{background:var(--accent)}@supports (color:color-mix(in lab,red,red)){.workspace-resize-handle.dragging,.workspace-resize-handle:hover{background:color-mix(in srgb,var(--accent) 35%,transparent)}}@media (max-width:640px){.workspace-resize-handle{display:none}}.file-row-actions{background:var(--bg-panel);border:1px solid var(--border);opacity:0;visibility:hidden;border-radius:6px;align-items:center;gap:2px;padding:1px;transition:opacity .12s,visibility .12s;display:flex;position:absolute;top:50%;right:4px;transform:translateY(-50%)}.file-row{border-radius:var(--radius-xs);transition:background .12s}.file-row:focus-within,.file-row:hover{background:var(--bg-hover)}.file-row:focus-visible{outline:2px solid var(--accent);outline-offset:-2px}.file-row-actions:has([data-menu-open=true]),.file-row:focus-within .file-row-actions,.file-row:hover .file-row-actions{opacity:1;visibility:visible}.file-row-action-btn{width:24px;height:24px;color:var(--text-muted);cursor:pointer;background:0 0;border:none;border-radius:5px;flex-shrink:0;justify-content:center;align-items:center;padding:0;text-decoration:none;transition:background .12s,color .12s;display:inline-flex}.file-row-action-btn:hover{background:var(--bg-hover);color:var(--text)}.file-row-action-btn:focus-visible{outline:2px solid var(--accent);outline-offset:-2px}@media (pointer:coarse){.file-row-actions{opacity:1;visibility:visible}.file-row .file-row-badge{display:none}}.git-file-row{cursor:pointer;width:100%;height:26px;color:var(--text);text-align:left;border-radius:var(--radius-xs);background:0 0;border:none;align-items:center;gap:6px;padding:0 8px;font-size:12px;transition:background .12s,color .12s;display:flex}.git-file-row:hover{background:var(--bg-hover)}.git-file-row.is-selected{background:var(--bg-selected);color:var(--text)}@media (max-width:640px){.changes-panel{display:none!important}}.git-file-row:focus-visible{outline:2px solid var(--accent);outline-offset:-2px}@media (hover:none),(pointer:coarse){.sidebar-row .sidebar-icon-btn--hover{opacity:1}.sidebar-icon-btn{width:28px;height:28px;position:relative}.sidebar-icon-btn:after{content:"";position:absolute;inset:-4px -2px}}@media (max-width:640px){.app-top-bar{height:44px}.app-top-bar>button:not(.app-top-bar-stats){width:44px!important;height:44px!important}.app-top-bar-stats{min-width:0;max-width:min(48vw,168px);overflow:hidden;gap:4px!important;height:44px!important;padding:0 8px!important}.app-top-bar-stats>span{text-overflow:ellipsis;min-width:0;overflow:hidden}.workspace-header{height:44px;padding-right:6px}.workspace-header .sidebar-icon-btn,.workspace-navigation-rail .sidebar-icon-btn{width:36px;height:36px}.workspace-navigation-rail{gap:8px;padding-top:8px}.settings-layout{height:min(78dvh,680px)}.settings-nav-list{padding:10px}.settings-page-content{padding:20px 16px 28px}.settings-segmented-control{width:100%;overflow-x:auto}.settings-segmented-option{flex:1 0 auto;min-width:0;height:40px}.chat-input-shell{padding:9px 8px 9px 12px!important}.chat-input-shell button{min-height:40px}.file-row{min-height:44px}.file-row>svg{width:12px;height:12px}.file-row-icon svg{width:18px;height:18px}.file-row-action-btn{width:32px;height:32px}}.sidebar-row .sidebar-icon-btn--hover.sidebar-icon-btn--active{opacity:1}@media (hover:none),(pointer:coarse){.sidebar-chevron-btn:after{content:"";position:absolute;inset:-5px -3px}}.file-viewer-toolbar{min-width:0}.file-viewer-path{text-overflow:ellipsis;white-space:nowrap;min-width:72px;overflow:hidden}.file-viewer-meta{white-space:nowrap;flex-shrink:0}.file-viewer-controls{flex-shrink:0;align-items:center;gap:3px;margin-left:auto;display:flex}.file-viewer-icon-button{width:26px;height:26px;color:var(--text-muted);cursor:pointer;background:0 0;border:1px solid #0000;border-radius:5px;flex:none;justify-content:center;align-items:center;padding:0;text-decoration:none;transition:color .12s,background .12s,border-color .12s;display:inline-flex}.file-viewer-icon-button:hover:not(:disabled),.file-viewer-icon-button[data-active=true]{color:var(--text);background:var(--bg-selected);border-color:var(--border)}.file-viewer-icon-button.is-save:not(:disabled){color:var(--accent)}.file-close-confirm__button:focus-visible,.file-editor-notice button:focus-visible,.file-viewer-icon-button:focus-visible{outline:2px solid var(--accent);outline-offset:1px}.file-viewer-icon-button:disabled{opacity:.34;cursor:not-allowed}.file-viewer-toolbar-separator{background:var(--border);flex:none;width:1px;height:16px;margin:0 2px}.file-viewer-live-indicator{border-radius:50%;flex:none;width:6px;height:6px}.file-source-editor{box-sizing:border-box;resize:none;background:var(--bg);width:100%;min-width:max-content;height:100%;min-height:0;color:var(--text);caret-color:var(--accent);font-family:var(--font-mono);tab-size:2;white-space:pre;border:0;outline:0;flex:auto;margin:0;padding:14px 18px;font-size:13px;line-height:1.6;display:block;overflow:auto}.file-source-editor.is-wrapped{white-space:pre-wrap;overflow-wrap:anywhere;min-width:100%}.file-close-confirm,.file-editor-notice{border-bottom:1px solid var(--border);background:var(--accent);align-items:center;gap:10px;min-height:34px;padding:5px 10px 5px 12px;display:flex}@supports (color:color-mix(in lab,red,red)){.file-close-confirm,.file-editor-notice{background:color-mix(in srgb,var(--accent) 7%,var(--bg-panel))}}.file-close-confirm,.file-editor-notice{color:var(--text-muted);flex:none;font-size:11.5px}.file-editor-notice.is-warning{background:var(--status-warning)}@supports (color:color-mix(in lab,red,red)){.file-editor-notice.is-warning{background:color-mix(in srgb,var(--status-warning) 10%,var(--bg-panel))}}.file-editor-notice.is-warning{color:var(--status-warning)}@supports (color:color-mix(in lab,red,red)){.file-editor-notice.is-warning{color:color-mix(in srgb,var(--status-warning) 72%,var(--text))}}.file-editor-notice.is-error{background:var(--status-danger)}@supports (color:color-mix(in lab,red,red)){.file-editor-notice.is-error{background:color-mix(in srgb,var(--status-danger) 9%,var(--bg-panel))}}.file-editor-notice.is-error{color:var(--status-danger)}.file-editor-notice.is-success{background:var(--status-success)}@supports (color:color-mix(in lab,red,red)){.file-editor-notice.is-success{background:color-mix(in srgb,var(--status-success) 8%,var(--bg-panel))}}.file-editor-notice.is-success{color:var(--status-success)}.file-editor-notice__actions{align-items:center;gap:5px;margin-left:auto;display:flex}.file-close-confirm__button,.file-editor-notice button{border:1px solid var(--border);background:var(--bg);min-height:24px;color:var(--text-muted);font:inherit;cursor:pointer;white-space:nowrap;border-radius:5px;padding:2px 8px}.file-close-confirm__button:hover,.file-editor-notice button:hover{color:var(--text);background:var(--bg-hover)}.file-close-confirm__button.is-danger,.file-editor-notice button.is-danger{color:var(--status-danger);border-color:var(--status-danger)}@supports (color:color-mix(in lab,red,red)){.file-close-confirm__button.is-danger,.file-editor-notice button.is-danger{border-color:color-mix(in srgb,var(--status-danger) 35%,var(--border))}}.file-close-confirm{background:var(--status-warning);min-height:36px}@supports (color:color-mix(in lab,red,red)){.file-close-confirm{background:color-mix(in srgb,var(--status-warning) 7%,var(--bg-panel))}}.file-close-confirm__message{text-overflow:ellipsis;white-space:nowrap;min-width:0;margin-right:auto;overflow:hidden}.file-close-confirm__button{align-items:center;gap:5px;display:inline-flex}.file-tab-dirty-dot{background:var(--accent);width:8px;height:8px;box-shadow:0 0 0 2px var(--accent);border-radius:50%}@supports (color:color-mix(in lab,red,red)){.file-tab-dirty-dot{box-shadow:0 0 0 2px color-mix(in srgb,var(--accent) 12%,transparent)}}.file-save-spinner,.file-tab-dirty-dot.is-saving{animation:file-editor-pulse .9s ease-in-out infinite alternate}.file-save-spinner{border:2px solid var(--accent);width:11px;height:11px}@supports (color:color-mix(in lab,red,red)){.file-save-spinner{border:2px solid color-mix(in srgb,var(--accent) 28%,transparent)}}.file-save-spinner{border-top-color:var(--accent);border-radius:50%;animation-name:file-editor-spin;animation-duration:.65s;animation-timing-function:linear;animation-iteration-count:infinite}.file-viewer-context-label{z-index:2;border-bottom:1px solid var(--border);background:var(--bg-panel);color:var(--text-dim);padding:5px 12px;font-size:10.5px;position:sticky;top:0}@keyframes file-editor-spin{to{transform:rotate(1turn)}}@keyframes file-editor-pulse{to{opacity:.45}}@media (max-width:640px){.file-viewer-toolbar{gap:6px!important;padding-left:8px!important;padding-right:0!important}.file-viewer-meta{display:none}.file-viewer-controls{scrollbar-width:none;max-width:68vw;padding-right:8px;overflow-x:auto}.file-viewer-controls::-webkit-scrollbar{display:none}.file-close-confirm,.file-editor-notice{flex-wrap:wrap;align-items:flex-start}.file-editor-notice__actions{width:100%;margin-left:0}.file-close-confirm__message{flex-basis:100%;width:100%}.file-close-confirm__button span{display:none}.file-close-confirm__button{justify-content:center;width:28px;padding:0}.file-source-editor{padding:12px}}@media (prefers-reduced-motion:reduce){.file-save-spinner,.file-tab-dirty-dot.is-saving{animation:none}}@property --tw-rotate-x{syntax:"*";inherits:false}@property --tw-rotate-y{syntax:"*";inherits:false}@property --tw-rotate-z{syntax:"*";inherits:false}@property --tw-skew-x{syntax:"*";inherits:false}@property --tw-skew-y{syntax:"*";inherits:false}@property --tw-border-style{syntax:"*";inherits:false;initial-value:solid}@property --tw-ordinal{syntax:"*";inherits:false}@property --tw-slashed-zero{syntax:"*";inherits:false}@property --tw-numeric-figure{syntax:"*";inherits:false}@property --tw-numeric-spacing{syntax:"*";inherits:false}@property --tw-numeric-fraction{syntax:"*";inherits:false}@property --tw-outline-style{syntax:"*";inherits:false;initial-value:solid}@property --tw-blur{syntax:"*";inherits:false}@property --tw-brightness{syntax:"*";inherits:false}@property --tw-contrast{syntax:"*";inherits:false}@property --tw-grayscale{syntax:"*";inherits:false}@property --tw-hue-rotate{syntax:"*";inherits:false}@property --tw-invert{syntax:"*";inherits:false}@property --tw-opacity{syntax:"*";inherits:false}@property --tw-saturate{syntax:"*";inherits:false}@property --tw-sepia{syntax:"*";inherits:false}@property --tw-drop-shadow{syntax:"*";inherits:false}@property --tw-drop-shadow-color{syntax:"*";inherits:false}@property --tw-drop-shadow-alpha{syntax:"<percentage>";inherits:false;initial-value:100%}@property --tw-drop-shadow-size{syntax:"*";inherits:false}@property --tw-backdrop-blur{syntax:"*";inherits:false}@property --tw-backdrop-brightness{syntax:"*";inherits:false}@property --tw-backdrop-contrast{syntax:"*";inherits:false}@property --tw-backdrop-grayscale{syntax:"*";inherits:false}@property --tw-backdrop-hue-rotate{syntax:"*";inherits:false}@property --tw-backdrop-invert{syntax:"*";inherits:false}@property --tw-backdrop-opacity{syntax:"*";inherits:false}@property --tw-backdrop-saturate{syntax:"*";inherits:false}@property --tw-backdrop-sepia{syntax:"*";inherits:false}@property --tw-ease{syntax:"*";inherits:false}
@@ -0,0 +1 @@
1
+ self.__BUILD_MANIFEST={__rewrites:{afterFiles:[],beforeFiles:[],fallback:[]},__routerFilterStatic:{numItems:42,errorRate:1e-4,numBits:806,numHashes:14,bitArray:[1,0,0,1,0,0,0,1,0,0,0,0,0,0,1,0,0,1,0,0,1,0,1,0,1,1,1,1,0,0,1,0,0,1,1,0,0,0,1,1,1,1,1,0,1,1,0,1,1,0,1,0,0,1,1,0,1,1,0,0,1,0,1,0,1,0,0,0,1,0,1,1,0,0,1,0,1,0,0,0,0,1,0,1,1,1,1,0,1,0,1,0,1,1,1,0,0,0,1,0,1,0,1,1,0,0,1,0,1,0,1,0,0,1,1,1,0,0,1,0,1,1,0,1,1,0,0,0,1,1,1,0,1,0,0,0,1,1,1,1,0,0,0,0,0,1,0,1,1,0,1,0,1,0,1,0,1,0,0,1,1,0,0,1,0,0,1,1,0,0,0,0,0,1,1,0,0,0,1,0,1,1,1,1,1,0,1,1,0,0,0,1,1,1,1,0,1,1,0,0,1,1,1,1,0,1,1,1,1,0,1,0,0,1,1,1,0,1,0,1,1,0,1,1,0,1,0,0,0,1,1,1,0,0,0,0,1,1,0,1,1,0,1,0,1,0,0,1,0,1,1,1,1,1,0,1,1,1,1,1,0,0,0,0,1,0,1,1,1,0,0,1,1,0,1,0,0,1,0,0,0,0,0,1,0,1,0,0,1,0,0,1,0,1,1,0,1,0,1,1,1,1,1,1,0,0,1,0,0,0,0,1,1,0,0,1,0,0,1,1,0,0,0,0,0,1,0,0,0,0,0,1,0,1,1,0,0,1,0,1,1,1,0,1,0,0,0,0,1,1,0,1,1,0,1,0,0,1,0,0,0,1,0,0,0,1,1,0,0,0,0,1,1,0,1,0,1,0,1,0,0,1,0,1,1,1,0,1,0,1,1,0,1,1,1,1,0,1,0,0,1,0,1,0,1,0,1,0,1,0,1,1,0,1,0,1,0,1,0,0,0,1,1,0,0,1,1,1,0,0,0,0,1,0,1,1,1,1,1,0,1,0,0,0,1,0,1,1,1,0,0,1,0,0,0,0,0,1,0,1,0,0,1,1,0,1,0,0,1,0,0,1,0,1,1,1,1,1,1,0,1,1,0,0,0,0,1,1,1,0,0,1,0,1,0,1,1,1,1,0,0,1,0,1,1,1,1,1,0,1,0,0,0,1,1,1,1,0,0,0,1,0,0,1,1,1,1,1,1,0,1,1,0,1,1,1,0,0,0,1,0,1,1,1,0,1,0,0,1,0,0,1,1,1,1,0,0,0,0,1,0,1,0,0,1,1,1,0,0,0,1,0,1,1,0,1,1,0,1,1,1,1,0,0,1,0,0,1,1,1,1,1,1,1,1,1,1,1,0,1,1,1,0,1,0,0,0,0,0,0,0,0,0,1,0,0,1,1,1,0,1,0,0,0,1,1,0,0,1,1,0,1,0,1,0,0,1,0,0,1,1,1,1,1,0,0,1,0,1,1,0,0,0,0,1,0,0,1,1,1,1,0,0,0,1,0,1,1,1,1,1,0,1,1,1,1,0,1,0,1,0,1,1,1,1,0,0,1,1,1,1,0,1,0,1,1,0,1,1,0,0,0,1,0,0,0,1,1,1,1,1,0,0,0,1,1,0,1,0,0,1,0,1,1,0,1,1,1,1,0,1,0,1,1,0,1,0,1,0,0,0,1,1,0,0,1,0,0,1,0,1,0,0,1,0,1,0,1,1,0,1,0,1,1,0,0,0,1,1,1,1,1,0,0,1,0,0,1,1,0,1,1,1,1,0,0,0,1,0,1,0,1,1,1,0,1,0,1,0,0,1,1,1,0,0,0]},__routerFilterDynamic:{numItems:6,errorRate:1e-4,numBits:116,numHashes:14,bitArray:[1,1,0,0,0,1,0,1,1,1,1,0,1,0,1,0,0,1,1,1,0,1,1,0,1,1,0,1,0,1,1,0,0,0,1,0,0,1,0,1,1,0,0,1,1,1,0,0,0,1,0,0,1,1,0,0,0,0,1,1,1,1,1,0,0,1,1,1,1,0,0,0,0,0,1,0,0,0,1,1,1,0,1,0,0,1,0,1,0,0,0,1,0,0,1,0,0,0,1,1,1,1,1,1,0,0,1,0,1,0,0,1,1,0,0,0]},sortedPages:["/_app"]},self.__BUILD_MANIFEST_CB&&self.__BUILD_MANIFEST_CB();
package/README.en.md CHANGED
@@ -10,7 +10,7 @@
10
10
 
11
11
  Pidance is an open-source web client for the [Pi](https://github.com/badlogic/pi-mono) coding agent. It reads local Pi session files directly and preserves Pi SDK session and runtime semantics, bringing live chat, project files, Git, worktrees, subagents, and configuration into one browser workspace. Pi remains the source of truth for data and execution semantics; Pidance provides a clearer and more complete interface.
12
12
 
13
- > Current version: `0.1.0` · npm package: `@henlii/pidance` · CLI: `pidance`
13
+ > Current version: `0.2.1` · npm package: `@henlii/pidance` · CLI: `pidance`
14
14
 
15
15
  ## Preview
16
16
 
@@ -109,18 +109,33 @@ See [docs/release.md](./docs/release.md) for the complete procedure.
109
109
 
110
110
  ## Architecture
111
111
 
112
- ```text
113
- Browser
114
- ├─ Session / file / Git REST APIs ─▶ Next.js Route Handlers ─▶ local disk and Pi config
115
- ├─ Send message ───────────────────▶ SessionService ──────────▶ AgentSession
116
- └─ SSE events ◀──────────────────── EventStreamManager ◀───── AgentSession events
112
+ Pidance is a Pi Web mode adapter: the main Agent runs the in-process Pi SDK (`AgentSessionRuntime`). See [#20](https://github.com/henlii/pidance/issues/20) for the implementation specification and acceptance criteria.
117
113
 
118
- ~/.pi/agent/sessions/*.jsonl always remains the session source of truth
114
+ ```text
115
+ Browser / Route Handlers
116
+
117
+
118
+ SessionService ───────▶ read-only session projections and caches
119
+
120
+
121
+ LiveSessionRegistry
122
+
123
+
124
+ SdkSessionHost ───────▶ Web Extension UI Adapter
125
+
126
+
127
+ Pi AgentSessionRuntime
128
+ ├─ AgentSession
129
+ ├─ AgentSessionServices
130
+ └─ SessionManager
131
+
132
+ ~/.pi/agent/sessions/*.jsonl remains the Pi session source of truth
119
133
  ```
120
134
 
121
- - **Read-only browsing** parses Pi `.jsonl` sessions without creating an AgentSession.
122
- - **Sending a message** creates or reuses an in-process AgentSession wrapper on the server.
123
- - Session service, event streaming, extension UI, project context, and chat composition form one-way seams so the UI cannot bypass session lifecycle rules.
135
+ - **Read-only browsing** parses Pi `.jsonl` sessions without creating an AgentSession; scanners and caches never write JSONL.
136
+ - **Sending a message** creates or reuses an in-process SDK session host only when needed.
137
+ - Pi owns agent lifecycle, session replacement, resources, and JSONL/tree semantics. Pidance owns product use cases, the live registry, Web event projection, and UI adapters.
138
+ - Session service, event streaming, Extension UI, project context, and chat composition remain one-way dependencies so the UI cannot bypass session lifecycle rules.
124
139
  - File endpoints only expose explicit roots such as selected projects, worktrees, and session working directories.
125
140
 
126
141
  ## Documentation
package/README.md CHANGED
@@ -10,7 +10,7 @@
10
10
 
11
11
  Pidance 是面向 [Pi](https://github.com/badlogic/pi-mono) coding agent 的开源 Web 客户端。它直接读取本机 Pi 会话文件,并沿用 Pi SDK 的会话与运行时语义,把实时对话、项目文件、Git、工作树、子代理和配置管理汇集到一个浏览器工作区。Pi 仍是数据与执行语义的事实来源;Pidance 负责提供更清晰、更完整的操作界面。
12
12
 
13
- > 当前版本:`0.1.0` · npm 包:`@henlii/pidance` · CLI:`pidance`
13
+ > 当前版本:`0.2.1` · npm 包:`@henlii/pidance` · CLI:`pidance`
14
14
 
15
15
  ## 界面预览
16
16
 
@@ -109,18 +109,34 @@ npm run test:browser # 浏览器回归(需已运行的实例,默认
109
109
 
110
110
  ## 架构概览
111
111
 
112
- ```text
113
- 浏览器
114
- ├─ 会话 / 文件 / Git REST API ──▶ Next.js Route Handlers ──▶ 本地磁盘与 Pi 配置
115
- ├─ 发送消息 ───────────────────▶ SessionService ───────────▶ AgentSession
116
- └─ SSE 事件流 ◀──────────────── EventStreamManager ◀────── AgentSession 事件
112
+ Pidance 是 Pi 的 Web mode adapter:主 Agent 使用同进程 Pi SDK(`AgentSessionRuntime`)。
113
+ 完整实施规格与验收见 [#20](https://github.com/henlii/pidance/issues/20)。
117
114
 
118
- ~/.pi/agent/sessions/*.jsonl 始终是会话事实来源
115
+ ```text
116
+ 浏览器 / Route Handlers
117
+
118
+
119
+ SessionService ───────▶ 只读会话投影与缓存
120
+
121
+
122
+ LiveSessionRegistry
123
+
124
+
125
+ SdkSessionHost ───────▶ Web Extension UI Adapter
126
+
127
+
128
+ Pi AgentSessionRuntime
129
+ ├─ AgentSession
130
+ ├─ AgentSessionServices
131
+ └─ SessionManager
132
+
133
+ ~/.pi/agent/sessions/*.jsonl 始终是 Pi 会话事实来源
119
134
  ```
120
135
 
121
- - **只读浏览**直接解析 Pi `.jsonl` 会话,不创建 AgentSession。
122
- - **发送消息**时才在服务端进程内创建或复用 AgentSession wrapper
123
- - 会话服务、事件流、扩展 UI、项目上下文和聊天合成器按单向 seam 分层,避免 UI 绕过会话生命周期。
136
+ - **只读浏览**直接解析 Pi `.jsonl` 会话,不创建 AgentSession;快扫和缓存不得写 JSONL
137
+ - **发送消息**时才在服务端进程内创建或复用 SDK session host
138
+ - Pi SDK 拥有 Agent、会话替换、资源和 JSONL/tree 语义;Pidance 只拥有产品用例、live registry、Web 事件与 UI 适配。
139
+ - SessionService、事件流、Extension UI、项目上下文和聊天合成器保持单向依赖,UI 不绕过会话生命周期。
124
140
  - 文件端点仅允许访问已选择项目、工作树和会话工作目录等明确根路径。
125
141
 
126
142
  ## 文档
package/README.zh-CN.md CHANGED
@@ -110,6 +110,31 @@ npm run lint
110
110
 
111
111
  开发时不要运行 `next build` / `npm run build`,它会写入 `.next/`,容易影响正在运行的 dev server。发布流程再执行构建。
112
112
 
113
+ ## 架构
114
+
115
+ Pidance 是 Pi 的 Web mode adapter:主 Agent 使用同进程 Pi SDK(`AgentSessionRuntime`)。完整实施规格与验收见 [#20](https://github.com/henlii/pidance/issues/20)。
116
+
117
+ ```text
118
+ 浏览器 / Route Handlers
119
+
120
+
121
+ SessionService ───────▶ 只读会话投影与缓存
122
+
123
+
124
+ LiveSessionRegistry
125
+
126
+
127
+ SdkSessionHost ───────▶ Web Extension UI Adapter
128
+
129
+
130
+ Pi AgentSessionRuntime
131
+ ├─ AgentSession
132
+ ├─ AgentSessionServices
133
+ └─ SessionManager
134
+ ```
135
+
136
+ Pi SDK 拥有 Agent、会话替换、资源和 JSONL/tree 语义;Pidance 只拥有产品用例、live registry、Web 事件与 UI 适配。`~/.pi/agent/sessions/*.jsonl` 始终是 Pi 会话事实来源,快扫与缓存只读。
137
+
113
138
  ## 项目结构
114
139
 
115
140
  ```
@@ -148,8 +173,13 @@ lib/
148
173
  git-status.ts # Git status 收集和规范化
149
174
  git-types.ts # Git 数据共享类型
150
175
  http-dispatcher.ts # 服务端 fetch 的 HTTP(S) 代理配置
151
- rpc-manager.ts # AgentSessionWrapper 生命周期和全局 registry
152
- session-reader.ts # 解析 .jsonl 会话文件和分支上下文
176
+ live-session-registry.ts # 目标:live registry、启动锁、running 和 idle
177
+ sdk-session-host.ts # 目标:同进程 Pi SDK host 与事件/状态投影
178
+ web-extension-ui.ts # 目标:Pi ExtensionUIContext 到 Web UI
179
+ rpc-manager.ts # 迁移期 legacy:外部 RPC registry/factory
180
+ pi-runtime/ # 迁移期 legacy:外部进程/协议/runtime slot
181
+ session-file.ts # 迁移期 legacy:自研 JSONL tree reader/writer
182
+ session-reader.ts # 解析 .jsonl 会话文件和分支上下文
153
183
  session-file-references.ts # 会话引用文件的检查
154
184
  normalize.ts # 规范化 toolCall 字段名
155
185
  file-access.ts # 文件读取安全边界和允许的根目录
package/bin/pidance.js CHANGED
@@ -15,6 +15,23 @@ const { shouldRequireAuth, resolvePassword, describeHost } = require("./pidance-
15
15
  const pkgDir = path.join(__dirname, "..");
16
16
  const nextDir = path.join(pkgDir, ".next");
17
17
 
18
+ // Node engine 门禁(与 package.json engines.node 对齐):低于最低版本直接失败,
19
+ // 避免进入半运行状态。npm engines 默认只警告,这里 fail-closed。
20
+ const MIN_NODE = { major: 22, minor: 19, patch: 0 };
21
+ function nodeMeetsMin(version) {
22
+ const m = String(version).replace(/^v/, "").split(".").map((x) => parseInt(x, 10) || 0);
23
+ const [maj = 0, min = 0, pat = 0] = m;
24
+ if (maj !== MIN_NODE.major) return maj > MIN_NODE.major;
25
+ if (min !== MIN_NODE.minor) return min > MIN_NODE.minor;
26
+ return pat >= MIN_NODE.patch;
27
+ }
28
+ if (!nodeMeetsMin(process.versions.node)) {
29
+ console.error(
30
+ `[pidance] 拒绝启动:需要 Node.js >= ${MIN_NODE.major}.${MIN_NODE.minor}.${MIN_NODE.patch},当前为 ${process.versions.node}。`,
31
+ );
32
+ process.exit(1);
33
+ }
34
+
18
35
  // Resolve next's CLI entry directly to avoid relying on .bin symlinks (which
19
36
  // may not exist when installed via npx).
20
37
  let nextBin;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@henlii/pidance",
3
- "version": "0.1.3",
3
+ "version": "0.2.1",
4
4
  "description": "Pidance:面向 Pi coding agent 的开源 Web 客户端",
5
5
  "homepage": "https://github.com/henlii/pidance#readme",
6
6
  "repository": {
@@ -12,7 +12,7 @@
12
12
  },
13
13
  "license": "MIT",
14
14
  "engines": {
15
- "node": ">=20.9.0"
15
+ "node": ">=22.19.0"
16
16
  },
17
17
  "publishConfig": {
18
18
  "access": "public",
@@ -47,7 +47,7 @@
47
47
  "start": "next start -p 31415",
48
48
  "lint": "eslint .",
49
49
  "typecheck": "tsc --noEmit",
50
- "test": "node --test lib/*.test.mjs lib/pi-runtime/*.test.mjs components/*.test.mjs hooks/*.test.mjs bin/*.test.mjs",
50
+ "test": "node --test lib/*.test.mjs components/*.test.mjs hooks/*.test.mjs bin/*.test.mjs",
51
51
  "verify:render-bridge": "node scripts/verify-subagent-render-bridge.mjs",
52
52
  "test:browser": "node --test scripts/browser-regression.test.mjs",
53
53
  "check": "npm run typecheck && npm run lint && npm run test",
@@ -56,15 +56,13 @@
56
56
  "release:check": "npm run check && npm run build && npm run release:audit"
57
57
  },
58
58
  "dependencies": {
59
+ "@earendil-works/pi-coding-agent": "0.84.1",
59
60
  "lucide-react": "^0.562.0",
60
61
  "next": "16.2.11",
61
62
  "react": "^19.2.4",
62
63
  "react-dom": "^19.2.4",
63
64
  "undici": "8.5.0"
64
65
  },
65
- "optionalDependencies": {
66
- "@earendil-works/pi-coding-agent": "0.81.1"
67
- },
68
66
  "devDependencies": {
69
67
  "@lobehub/icons": "^5.6.0",
70
68
  "@tailwindcss/postcss": "^4.2.2",
@@ -1 +0,0 @@
1
- (()=>{var a={};a.id=1386,a.ids=[1386],a.modules={261:a=>{"use strict";a.exports=require("next/dist/shared/lib/router/utils/app-paths")},2633:(a,b,c)=>{"use strict";c.d(b,{aw:()=>j,dz:()=>k,o6:()=>i});var d=c(89477),e=c(86697),f=c(95398);let g=(0,e.join)("node_modules","@earendil-works","pi-coding-agent","dist","cli.js");function h(a){try{if(!(0,d.statSync)(a).isFile())return!1;return(0,d.accessSync)(a,d.constants.R_OK),!0}catch{return!1}}function i(a,b=5e3){try{let c=a.endsWith(".js")?(0,f.execFileSync)(process.execPath,[a,"--version"],{encoding:"utf8",timeout:b,env:process.env}):(0,f.execFileSync)(a,["--version"],{encoding:"utf8",timeout:b,env:process.env}),d=String(c).trim().split(/\r?\n/)[0]?.trim()??"",e=d.match(/(\d+\.\d+\.\d+(?:-[\w.]+)?)/);return e?.[1]??(d||null)}catch{return null}}function j(a=process.env){let b=a.PIDANCE_PI_RUNTIME?.trim();if(b){let a=(0,e.isAbsolute)(b)?b:(0,e.resolve)(b);if(h(a)||(0,d.existsSync)(a))return{path:a,source:"configured-path",version:i(a)}}{let b=a.HOME||"",c=a.PIDANCE_PI_RUNTIME_SLOTS_DIR?.trim()||(b?(0,e.join)(b,".pidance","runtimes","pi"):"");if(c){let a=(0,e.join)(c,"current");for(let b of[(0,e.join)(a,"bin","pi"),(0,e.join)(a,"pi"),(0,e.join)(a,"dist","cli.js"),(0,e.join)(a,"node_modules","@earendil-works","pi-coding-agent","dist","cli.js")])if(h(b)){let a=null;try{let c=(0,e.resolve)(b).match(/[/\\](\d+\.\d+\.\d+(?:-[\w.]+)?)[/\\]/);a=c?.[1]??null}catch{a=null}return{path:(0,e.resolve)(b),source:"configured-path",version:a??i(b)}}}}let c=function(a){for(let b of a.split(e.delimiter)){if(!b)continue;let a=(0,e.join)(b,"pi");if(h(a))return(0,e.resolve)(a)}return null}(a.PATH??"");if(c)return{path:c,source:"path",version:i(c)};if("1"===a.PIDANCE_PI_RUNTIME_FALLBACK_BUNDLED){let a=function(){let a=(0,e.resolve)(process.cwd());for(let b=0;b<12&&a!==(0,e.dirname)(a);b++){let b=(0,e.join)(a,g);if(h(b))return(0,e.resolve)(b);a=(0,e.dirname)(a)}return null}();if(a)return{path:a,source:"bundled-fallback",version:i(a)}}return{path:null,source:"none",version:null}}function k(a=process.env){return"inprocess"===(a.PIDANCE_AGENT_RUNTIME??"rpc").trim().toLowerCase()?"inprocess":"rpc"}},3121:(a,b,c)=>{"use strict";c.r(b),c.d(b,{handler:()=>E,patchFetch:()=>D,routeModule:()=>z,serverHooks:()=>C,workAsyncStorage:()=>A,workUnitAsyncStorage:()=>B});var d={};c.r(d),c.d(d,{GET:()=>y,dynamic:()=>x});var e=c(19225),f=c(84006),g=c(8317),h=c(99373),i=c(34775),j=c(24235),k=c(261),l=c(54365),m=c(90771),n=c(73461),o=c(67798),p=c(92280),q=c(62018),r=c(45696),s=c(47929),t=c(86439),u=c(37527),v=c(23211),w=c(26984);let x="force-dynamic";async function y(){try{let a=(0,w.Z)(process.env,process.cwd());return v.NextResponse.json(a,{headers:{"Cache-Control":"no-store"}})}catch(b){let a=b instanceof Error?b.message:String(b);return v.NextResponse.json({pidanceVersion:"0.0.0",agentRuntimeMode:"inprocess",managementPiVersion:null,runtime:{path:null,version:null,source:"none",protocol:"inprocess",compatible:!1},capabilities:{deltaOnlyMessageUpdate:!1,agentSettled:!1,bashExecutionUpdate:!1,extensionUi:!1,getEntries:!1,getTree:!1},upgrade:{policy:{allowAutoUpgrade:!1,allowExplicitUpgrade:!1,slotsRoot:""},slots:[],current:null,recommendation:"blocked",reason:`runtime probe failed: ${a}`},notes:[`runtime probe failed: ${a}`]},{status:200,headers:{"Cache-Control":"no-store"}})}}let z=new e.AppRouteRouteModule({definition:{kind:f.RouteKind.APP_ROUTE,page:"/api/runtime/route",pathname:"/api/runtime",filename:"route",bundlePath:"app/api/runtime/route"},distDir:".next",relativeProjectDir:"",resolvedPagePath:"/tmp/pidance-release-build/app/api/runtime/route.ts",nextConfigOutput:"",userland:d,...{}}),{workAsyncStorage:A,workUnitAsyncStorage:B,serverHooks:C}=z;function D(){return(0,g.patchFetch)({workAsyncStorage:A,workUnitAsyncStorage:B})}async function E(a,b,c){c.requestMeta&&(0,h.setRequestMeta)(a,c.requestMeta),z.isDev&&(0,h.addRequestMeta)(a,"devRequestTimingInternalsEnd",process.hrtime.bigint());let d="/api/runtime/route";"/index"===d&&(d="/");let e=await z.prepare(a,b,{srcPage:d,multiZoneDraftMode:!1});if(!e)return b.statusCode=400,b.end("Bad Request"),null==c.waitUntil||c.waitUntil.call(c,Promise.resolve()),null;let{buildId:g,deploymentId:v,params:w,nextConfig:x,parsedUrl:y,isDraftMode:A,prerenderManifest:B,routerServerContext:C,isOnDemandRevalidate:D,revalidateOnlyGenerated:E,resolvedPathname:F,clientReferenceManifest:G,serverActionsManifest:H}=e,I=(0,k.normalizeAppPath)(d),J=!!(B.dynamicRoutes[I]||B.routes[F]),K=async()=>((null==C?void 0:C.render404)?await C.render404(a,b,y,!1):b.end("This page could not be found"),null);if(J&&!A){let a=!!B.routes[F],b=B.dynamicRoutes[I];if(b&&!1===b.fallback&&!a){if(x.adapterPath)return await K();throw new t.NoFallbackError}}let L=null;!J||z.isDev||A||(L="/index"===(L=F)?"/":L);let M=!0===z.isDev||!J,N=J&&!M;H&&G&&(0,j.setManifestsSingleton)({page:d,clientReferenceManifest:G,serverActionsManifest:H});let O=a.method||"GET",P=(0,i.getTracer)(),Q=P.getActiveScopeSpan(),R=!!(null==C?void 0:C.isWrappedByNextServer),S=!!(0,h.getRequestMeta)(a,"minimalMode"),T=(0,h.getRequestMeta)(a,"incrementalCache")||await z.getIncrementalCache(a,x,B,S);null==T||T.resetRequestCache(),globalThis.__incrementalCache=T;let U={params:w,previewProps:B.preview,renderOpts:{experimental:{authInterrupts:!!x.experimental.authInterrupts},cacheComponents:!!x.cacheComponents,supportsDynamicResponse:M,incrementalCache:T,cacheLifeProfiles:x.cacheLife,waitUntil:c.waitUntil,onClose:a=>{b.on("close",a)},onAfterTaskError:void 0,onInstrumentationRequestError:(b,c,d,e)=>z.onRequestError(a,b,d,e,C)},sharedContext:{buildId:g,deploymentId:v}},V=new l.NodeNextRequest(a),W=new l.NodeNextResponse(b),X=m.NextRequestAdapter.fromNodeNextRequest(V,(0,m.signalFromNodeResponse)(b));try{let e,g=async a=>z.handle(X,U).finally(()=>{if(!a)return;a.setAttributes({"http.status_code":b.statusCode,"next.rsc":!1});let c=P.getRootSpanAttributes();if(!c)return;if(c.get("next.span_type")!==n.BaseServerSpan.handleRequest)return void console.warn(`Unexpected root span type '${c.get("next.span_type")}'. Please report this Next.js issue https://github.com/vercel/next.js`);let f=c.get("next.route");if(f){let b=`${O} ${f}`;a.setAttributes({"next.route":f,"http.route":f,"next.span_name":b}),a.updateName(b),e&&e!==a&&(e.setAttribute("http.route",f),e.updateName(b))}else a.updateName(`${O} ${d}`)}),h=async e=>{var h,i;let j=async({previousCacheEntry:f})=>{try{if(!S&&D&&E&&!f)return b.statusCode=404,b.setHeader("x-nextjs-cache","REVALIDATED"),b.end("This page could not be found"),null;let d=await g(e);a.fetchMetrics=U.renderOpts.fetchMetrics;let h=U.renderOpts.pendingWaitUntil;h&&c.waitUntil&&(c.waitUntil(h),h=void 0);let i=U.renderOpts.collectedTags;if(!J)return await (0,p.I)(V,W,d,U.renderOpts.pendingWaitUntil),null;{let a=await d.blob(),b=(0,q.toNodeOutgoingHttpHeaders)(d.headers);i&&(b[s.NEXT_CACHE_TAGS_HEADER]=i),!b["content-type"]&&a.type&&(b["content-type"]=a.type);let c=void 0!==U.renderOpts.collectedRevalidate&&!(U.renderOpts.collectedRevalidate>=s.INFINITE_CACHE)&&U.renderOpts.collectedRevalidate,e=void 0===U.renderOpts.collectedExpire||U.renderOpts.collectedExpire>=s.INFINITE_CACHE?void 0:U.renderOpts.collectedExpire;return{value:{kind:u.CachedRouteKind.APP_ROUTE,status:d.status,body:Buffer.from(await a.arrayBuffer()),headers:b},cacheControl:{revalidate:c,expire:e}}}}catch(b){throw(null==f?void 0:f.isStale)&&await z.onRequestError(a,b,{routerKind:"App Router",routePath:d,routeType:"route",revalidateReason:(0,o.c)({isStaticGeneration:N,isOnDemandRevalidate:D})},!1,C),b}},k=await z.handleResponse({req:a,nextConfig:x,cacheKey:L,routeKind:f.RouteKind.APP_ROUTE,isFallback:!1,prerenderManifest:B,isRoutePPREnabled:!1,isOnDemandRevalidate:D,revalidateOnlyGenerated:E,responseGenerator:j,waitUntil:c.waitUntil,isMinimalMode:S});if(!J)return null;if((null==k||null==(h=k.value)?void 0:h.kind)!==u.CachedRouteKind.APP_ROUTE)throw Object.defineProperty(Error(`Invariant: app-route received invalid cache entry ${null==k||null==(i=k.value)?void 0:i.kind}`),"__NEXT_ERROR_CODE",{value:"E701",enumerable:!1,configurable:!0});S||b.setHeader("x-nextjs-cache",D?"REVALIDATED":k.isMiss?"MISS":k.isStale?"STALE":"HIT"),A&&b.setHeader("Cache-Control","private, no-cache, no-store, max-age=0, must-revalidate");let l=(0,q.fromNodeOutgoingHttpHeaders)(k.value.headers);return S&&J||l.delete(s.NEXT_CACHE_TAGS_HEADER),!k.cacheControl||b.getHeader("Cache-Control")||l.get("Cache-Control")||l.set("Cache-Control",(0,r.getCacheControlHeader)(k.cacheControl)),await (0,p.I)(V,W,new Response(k.value.body,{headers:l,status:k.value.status||200})),null};R&&Q?await h(Q):(e=P.getActiveScopeSpan(),await P.withPropagatedContext(a.headers,()=>P.trace(n.BaseServerSpan.handleRequest,{spanName:`${O} ${d}`,kind:i.SpanKind.SERVER,attributes:{"http.method":O,"http.target":a.url}},h),void 0,!R))}catch(b){if(b instanceof t.NoFallbackError||await z.onRequestError(a,b,{routerKind:"App Router",routePath:I,routeType:"route",revalidateReason:(0,o.c)({isStaticGeneration:N,isOnDemandRevalidate:D})},!1,C),J)throw b;return await (0,p.I)(V,W,new Response(null,{status:500})),null}}},3295:a=>{"use strict";a.exports=require("next/dist/server/app-render/after-task-async-storage.external.js")},10846:a=>{"use strict";a.exports=require("next/dist/compiled/next-server/app-page.runtime.prod.js")},26984:(a,b,c)=>{"use strict";c.d(b,{Z:()=>i});var d=c(89477),e=c(86697),f=c(2633),g=c(91166);function h(a){if(!a)return null;let b=a.match(/^(\d+)\.(\d+)\.(\d+)/);return b?{major:Number(b[1]),minor:Number(b[2]),patch:Number(b[3])}:null}function i(a=process.env,b=process.cwd()){let c,j,k,l=(0,f.dz)(a),m=function(a){try{let b=(0,d.readFileSync)(a,"utf8"),c=JSON.parse(b);return"string"==typeof c.version&&c.version.trim()?c.version.trim():null}catch{return null}}((0,e.join)(b,"package.json"))??a.NEXT_PUBLIC_APP_VERSION?.trim()??"0.0.0";if("rpc"===l){let b=(0,g.OS)(a);c=b?{path:b.path,source:"configured-path",version:b.version}:(0,f.aw)(a)}else c={path:null,source:"none",version:a.NEXT_PUBLIC_PI_VERSION?.trim()??null};let n=c.version,o=a.NEXT_PUBLIC_PI_VERSION?.trim()||n||null,p=[];"rpc"!==l||c.path||p.push("未解析到外部 Pi 二进制;设置 PIDANCE_PI_RUNTIME 或将 pi 加入 PATH"),"rpc"===l&&"bundled-fallback"===c.source&&p.push("当前使用 bundled fallback CLI,不是独立可升级引擎");let q=(0,g.jl)(a,n);return"available"===q.recommendation&&p.push(q.reason),{pidanceVersion:m,agentRuntimeMode:l,managementPiVersion:o,runtime:{path:"rpc"===l?c.path:null,version:n,source:"rpc"===l?c.source:"none",protocol:"rpc"===l?"rpc":"inprocess",compatible:function(a,b){if("inprocess"===a)return!0;if(!b.path)return!1;let c=h(b.version);return!!c&&(0!==c.major||!(c.minor<81))}(l,c)},capabilities:(k=!!(j=h(n))&&(j.major>0||0===j.major&&j.minor>=84),"inprocess"===l?{deltaOnlyMessageUpdate:!1,agentSettled:!1,bashExecutionUpdate:!1,extensionUi:!0,getEntries:!1,getTree:!1}:{deltaOnlyMessageUpdate:k,agentSettled:!0,bashExecutionUpdate:k,extensionUi:!0,getEntries:!0,getTree:!0}),upgrade:q,notes:p}}},29294:a=>{"use strict";a.exports=require("next/dist/server/app-render/work-async-storage.external.js")},44870:a=>{"use strict";a.exports=require("next/dist/compiled/next-server/app-route.runtime.prod.js")},62228:a=>{"use strict";a.exports=require("node:os")},63033:a=>{"use strict";a.exports=require("next/dist/server/app-render/work-unit-async-storage.external.js")},78335:()=>{},86439:a=>{"use strict";a.exports=require("next/dist/shared/lib/no-fallback-error.external")},86697:a=>{"use strict";a.exports=require("node:path")},89477:a=>{"use strict";a.exports=require("node:fs")},91166:(a,b,c)=>{"use strict";c.d(b,{OS:()=>l,jl:()=>j,pF:()=>h,uZ:()=>k,wJ:()=>i});var d=c(89477),e=c(62228),f=c(86697);let g=(0,f.join)(".pidance","runtimes","pi");function h(a=process.env){let b=31415===Number(a.PORT||a.PIDANCE_PORT||0),c="1"===a.PIDANCE_PI_RUNTIME_AUTO_UPGRADE&&!b,d="1"===a.PIDANCE_PI_RUNTIME_EXPLICIT_UPGRADE||!b&&"0"!==a.PIDANCE_PI_RUNTIME_EXPLICIT_UPGRADE,i=a.PIDANCE_PI_RUNTIME_SLOTS_DIR?.trim()||function(a=(0,e.homedir)()){return(0,f.join)(a,g)}(a.HOME||(0,e.homedir)());return{allowAutoUpgrade:c,allowExplicitUpgrade:d,slotsRoot:(0,f.resolve)(i)}}function i(a){if(!(0,d.existsSync)(a))return{slots:[],current:null};let b=null,c=(0,f.join)(a,"current");try{if((0,d.existsSync)(c)){let a=(0,d.lstatSync)(c);a.isSymbolicLink()?b=(0,d.realpathSync)(c):a.isDirectory()&&(b=(0,f.resolve)(c))}}catch{b=null}let e=[],g=[];try{g=(0,d.readdirSync)(a)}catch{return{slots:[],current:null}}for(let c of g){if("current"===c||c.startsWith(".")||!/^\d+\.\d+\.\d+(?:-[\w.]+)?$/.test(c))continue;let g=(0,f.join)(a,c);try{if(!(0,d.lstatSync)(g).isDirectory())continue}catch{continue}let h=(0,f.resolve)(g);e.push({version:c,path:h,isCurrent:null!==b&&h===b})}e.sort((a,b)=>a.version.localeCompare(b.version,void 0,{numeric:!0}));let h=e.find(a=>a.isCurrent)??null;return{slots:e,current:h}}function j(a=process.env,b=null){let c=h(a),{slots:d,current:e}=i(c.slotsRoot);if(!c.allowAutoUpgrade&&!c.allowExplicitUpgrade)return{policy:c,slots:d,current:e,recommendation:"blocked",reason:"当前端口/策略禁止 runtime 升级(31415 默认禁自动)"};if(0===d.length)return{policy:c,slots:d,current:e,recommendation:"none",reason:"无本地 runtime slot;可管理员显式安装到 slots 目录"};let f=d[d.length-1];return e&&f.version!==e.version?{policy:c,slots:d,current:e,recommendation:c.allowExplicitUpgrade?"available":"blocked",reason:`本地 slot 最新 ${f.version},current 为 ${e.version}`}:b&&f&&f.version!==b?{policy:c,slots:d,current:e,recommendation:c.allowExplicitUpgrade?"available":"blocked",reason:`slot 最新 ${f.version},当前运行时 ${b}`}:{policy:c,slots:d,current:e,recommendation:"none",reason:"current 已是本地最新 slot,或无可切换版本"}}function k(a){for(let b of[(0,f.join)(a,"bin","pi"),(0,f.join)(a,"pi"),(0,f.join)(a,"dist","cli.js"),(0,f.join)(a,"node_modules","@earendil-works","pi-coding-agent","dist","cli.js")])try{if((0,d.existsSync)(b))return(0,f.resolve)(b)}catch{}try{if((0,d.existsSync)(a)&&(0,d.lstatSync)(a).isSymbolicLink())return k((0,d.realpathSync)(a))}catch{}return null}function l(a=process.env){let{current:b}=i(h(a).slotsRoot);if(!b)return null;let c=k(b.path);return c?{path:c,version:b.version}:null}},95398:a=>{"use strict";a.exports=require("node:child_process")},96487:()=>{}};var b=require("../../../webpack-runtime.js");b.C(a);var c=b.X(0,[4741,1813],()=>b(b.s=3121));module.exports=c})();
@@ -1 +0,0 @@
1
- (()=>{var a={};a.id=1345,a.ids=[1345],a.modules={261:a=>{"use strict";a.exports=require("next/dist/shared/lib/router/utils/app-paths")},1884:(a,b,c)=>{"use strict";c.r(b),c.d(b,{handler:()=>F,patchFetch:()=>E,routeModule:()=>A,serverHooks:()=>D,workAsyncStorage:()=>B,workUnitAsyncStorage:()=>C});var d={};c.r(d),c.d(d,{POST:()=>z,dynamic:()=>y});var e=c(19225),f=c(84006),g=c(8317),h=c(99373),i=c(34775),j=c(24235),k=c(261),l=c(54365),m=c(90771),n=c(73461),o=c(67798),p=c(92280),q=c(62018),r=c(45696),s=c(47929),t=c(86439),u=c(37527),v=c(23211),w=c(39156),x=c(26984);let y="force-dynamic";async function z(a){let b;try{b=await a.json()}catch{return v.NextResponse.json({error:"Invalid JSON body"},{status:400})}let c=b&&"object"==typeof b&&"string"==typeof b.version?b.version.trim():"";if(!c)return v.NextResponse.json({error:"version is required"},{status:400});let d=(0,w.$)(c,process.env);if(!d.ok){let a="forbidden"===d.code?403:"not_found"===d.code||"invalid_version"===d.code?404:500;return v.NextResponse.json({success:!1,error:d.error,code:d.code},{status:a})}let e=(0,x.Z)(process.env,process.cwd());return v.NextResponse.json({success:!0,switched:d,runtime:e.runtime,upgrade:e.upgrade,note:"current 已切换;已有 live 会话仍用旧进程,需重启 Pidance 后新会话生效"})}let A=new e.AppRouteRouteModule({definition:{kind:f.RouteKind.APP_ROUTE,page:"/api/runtime/switch/route",pathname:"/api/runtime/switch",filename:"route",bundlePath:"app/api/runtime/switch/route"},distDir:".next",relativeProjectDir:"",resolvedPagePath:"/tmp/pidance-release-build/app/api/runtime/switch/route.ts",nextConfigOutput:"",userland:d,...{}}),{workAsyncStorage:B,workUnitAsyncStorage:C,serverHooks:D}=A;function E(){return(0,g.patchFetch)({workAsyncStorage:B,workUnitAsyncStorage:C})}async function F(a,b,c){c.requestMeta&&(0,h.setRequestMeta)(a,c.requestMeta),A.isDev&&(0,h.addRequestMeta)(a,"devRequestTimingInternalsEnd",process.hrtime.bigint());let d="/api/runtime/switch/route";"/index"===d&&(d="/");let e=await A.prepare(a,b,{srcPage:d,multiZoneDraftMode:!1});if(!e)return b.statusCode=400,b.end("Bad Request"),null==c.waitUntil||c.waitUntil.call(c,Promise.resolve()),null;let{buildId:g,deploymentId:v,params:w,nextConfig:x,parsedUrl:y,isDraftMode:z,prerenderManifest:B,routerServerContext:C,isOnDemandRevalidate:D,revalidateOnlyGenerated:E,resolvedPathname:F,clientReferenceManifest:G,serverActionsManifest:H}=e,I=(0,k.normalizeAppPath)(d),J=!!(B.dynamicRoutes[I]||B.routes[F]),K=async()=>((null==C?void 0:C.render404)?await C.render404(a,b,y,!1):b.end("This page could not be found"),null);if(J&&!z){let a=!!B.routes[F],b=B.dynamicRoutes[I];if(b&&!1===b.fallback&&!a){if(x.adapterPath)return await K();throw new t.NoFallbackError}}let L=null;!J||A.isDev||z||(L="/index"===(L=F)?"/":L);let M=!0===A.isDev||!J,N=J&&!M;H&&G&&(0,j.setManifestsSingleton)({page:d,clientReferenceManifest:G,serverActionsManifest:H});let O=a.method||"GET",P=(0,i.getTracer)(),Q=P.getActiveScopeSpan(),R=!!(null==C?void 0:C.isWrappedByNextServer),S=!!(0,h.getRequestMeta)(a,"minimalMode"),T=(0,h.getRequestMeta)(a,"incrementalCache")||await A.getIncrementalCache(a,x,B,S);null==T||T.resetRequestCache(),globalThis.__incrementalCache=T;let U={params:w,previewProps:B.preview,renderOpts:{experimental:{authInterrupts:!!x.experimental.authInterrupts},cacheComponents:!!x.cacheComponents,supportsDynamicResponse:M,incrementalCache:T,cacheLifeProfiles:x.cacheLife,waitUntil:c.waitUntil,onClose:a=>{b.on("close",a)},onAfterTaskError:void 0,onInstrumentationRequestError:(b,c,d,e)=>A.onRequestError(a,b,d,e,C)},sharedContext:{buildId:g,deploymentId:v}},V=new l.NodeNextRequest(a),W=new l.NodeNextResponse(b),X=m.NextRequestAdapter.fromNodeNextRequest(V,(0,m.signalFromNodeResponse)(b));try{let e,g=async a=>A.handle(X,U).finally(()=>{if(!a)return;a.setAttributes({"http.status_code":b.statusCode,"next.rsc":!1});let c=P.getRootSpanAttributes();if(!c)return;if(c.get("next.span_type")!==n.BaseServerSpan.handleRequest)return void console.warn(`Unexpected root span type '${c.get("next.span_type")}'. Please report this Next.js issue https://github.com/vercel/next.js`);let f=c.get("next.route");if(f){let b=`${O} ${f}`;a.setAttributes({"next.route":f,"http.route":f,"next.span_name":b}),a.updateName(b),e&&e!==a&&(e.setAttribute("http.route",f),e.updateName(b))}else a.updateName(`${O} ${d}`)}),h=async e=>{var h,i;let j=async({previousCacheEntry:f})=>{try{if(!S&&D&&E&&!f)return b.statusCode=404,b.setHeader("x-nextjs-cache","REVALIDATED"),b.end("This page could not be found"),null;let d=await g(e);a.fetchMetrics=U.renderOpts.fetchMetrics;let h=U.renderOpts.pendingWaitUntil;h&&c.waitUntil&&(c.waitUntil(h),h=void 0);let i=U.renderOpts.collectedTags;if(!J)return await (0,p.I)(V,W,d,U.renderOpts.pendingWaitUntil),null;{let a=await d.blob(),b=(0,q.toNodeOutgoingHttpHeaders)(d.headers);i&&(b[s.NEXT_CACHE_TAGS_HEADER]=i),!b["content-type"]&&a.type&&(b["content-type"]=a.type);let c=void 0!==U.renderOpts.collectedRevalidate&&!(U.renderOpts.collectedRevalidate>=s.INFINITE_CACHE)&&U.renderOpts.collectedRevalidate,e=void 0===U.renderOpts.collectedExpire||U.renderOpts.collectedExpire>=s.INFINITE_CACHE?void 0:U.renderOpts.collectedExpire;return{value:{kind:u.CachedRouteKind.APP_ROUTE,status:d.status,body:Buffer.from(await a.arrayBuffer()),headers:b},cacheControl:{revalidate:c,expire:e}}}}catch(b){throw(null==f?void 0:f.isStale)&&await A.onRequestError(a,b,{routerKind:"App Router",routePath:d,routeType:"route",revalidateReason:(0,o.c)({isStaticGeneration:N,isOnDemandRevalidate:D})},!1,C),b}},k=await A.handleResponse({req:a,nextConfig:x,cacheKey:L,routeKind:f.RouteKind.APP_ROUTE,isFallback:!1,prerenderManifest:B,isRoutePPREnabled:!1,isOnDemandRevalidate:D,revalidateOnlyGenerated:E,responseGenerator:j,waitUntil:c.waitUntil,isMinimalMode:S});if(!J)return null;if((null==k||null==(h=k.value)?void 0:h.kind)!==u.CachedRouteKind.APP_ROUTE)throw Object.defineProperty(Error(`Invariant: app-route received invalid cache entry ${null==k||null==(i=k.value)?void 0:i.kind}`),"__NEXT_ERROR_CODE",{value:"E701",enumerable:!1,configurable:!0});S||b.setHeader("x-nextjs-cache",D?"REVALIDATED":k.isMiss?"MISS":k.isStale?"STALE":"HIT"),z&&b.setHeader("Cache-Control","private, no-cache, no-store, max-age=0, must-revalidate");let l=(0,q.fromNodeOutgoingHttpHeaders)(k.value.headers);return S&&J||l.delete(s.NEXT_CACHE_TAGS_HEADER),!k.cacheControl||b.getHeader("Cache-Control")||l.get("Cache-Control")||l.set("Cache-Control",(0,r.getCacheControlHeader)(k.cacheControl)),await (0,p.I)(V,W,new Response(k.value.body,{headers:l,status:k.value.status||200})),null};R&&Q?await h(Q):(e=P.getActiveScopeSpan(),await P.withPropagatedContext(a.headers,()=>P.trace(n.BaseServerSpan.handleRequest,{spanName:`${O} ${d}`,kind:i.SpanKind.SERVER,attributes:{"http.method":O,"http.target":a.url}},h),void 0,!R))}catch(b){if(b instanceof t.NoFallbackError||await A.onRequestError(a,b,{routerKind:"App Router",routePath:I,routeType:"route",revalidateReason:(0,o.c)({isStaticGeneration:N,isOnDemandRevalidate:D})},!1,C),J)throw b;return await (0,p.I)(V,W,new Response(null,{status:500})),null}}},2633:(a,b,c)=>{"use strict";c.d(b,{aw:()=>j,dz:()=>k,o6:()=>i});var d=c(89477),e=c(86697),f=c(95398);let g=(0,e.join)("node_modules","@earendil-works","pi-coding-agent","dist","cli.js");function h(a){try{if(!(0,d.statSync)(a).isFile())return!1;return(0,d.accessSync)(a,d.constants.R_OK),!0}catch{return!1}}function i(a,b=5e3){try{let c=a.endsWith(".js")?(0,f.execFileSync)(process.execPath,[a,"--version"],{encoding:"utf8",timeout:b,env:process.env}):(0,f.execFileSync)(a,["--version"],{encoding:"utf8",timeout:b,env:process.env}),d=String(c).trim().split(/\r?\n/)[0]?.trim()??"",e=d.match(/(\d+\.\d+\.\d+(?:-[\w.]+)?)/);return e?.[1]??(d||null)}catch{return null}}function j(a=process.env){let b=a.PIDANCE_PI_RUNTIME?.trim();if(b){let a=(0,e.isAbsolute)(b)?b:(0,e.resolve)(b);if(h(a)||(0,d.existsSync)(a))return{path:a,source:"configured-path",version:i(a)}}{let b=a.HOME||"",c=a.PIDANCE_PI_RUNTIME_SLOTS_DIR?.trim()||(b?(0,e.join)(b,".pidance","runtimes","pi"):"");if(c){let a=(0,e.join)(c,"current");for(let b of[(0,e.join)(a,"bin","pi"),(0,e.join)(a,"pi"),(0,e.join)(a,"dist","cli.js"),(0,e.join)(a,"node_modules","@earendil-works","pi-coding-agent","dist","cli.js")])if(h(b)){let a=null;try{let c=(0,e.resolve)(b).match(/[/\\](\d+\.\d+\.\d+(?:-[\w.]+)?)[/\\]/);a=c?.[1]??null}catch{a=null}return{path:(0,e.resolve)(b),source:"configured-path",version:a??i(b)}}}}let c=function(a){for(let b of a.split(e.delimiter)){if(!b)continue;let a=(0,e.join)(b,"pi");if(h(a))return(0,e.resolve)(a)}return null}(a.PATH??"");if(c)return{path:c,source:"path",version:i(c)};if("1"===a.PIDANCE_PI_RUNTIME_FALLBACK_BUNDLED){let a=function(){let a=(0,e.resolve)(process.cwd());for(let b=0;b<12&&a!==(0,e.dirname)(a);b++){let b=(0,e.join)(a,g);if(h(b))return(0,e.resolve)(b);a=(0,e.dirname)(a)}return null}();if(a)return{path:a,source:"bundled-fallback",version:i(a)}}return{path:null,source:"none",version:null}}function k(a=process.env){return"inprocess"===(a.PIDANCE_AGENT_RUNTIME??"rpc").trim().toLowerCase()?"inprocess":"rpc"}},3295:a=>{"use strict";a.exports=require("next/dist/server/app-render/after-task-async-storage.external.js")},10846:a=>{"use strict";a.exports=require("next/dist/compiled/next-server/app-page.runtime.prod.js")},26984:(a,b,c)=>{"use strict";c.d(b,{Z:()=>i});var d=c(89477),e=c(86697),f=c(2633),g=c(91166);function h(a){if(!a)return null;let b=a.match(/^(\d+)\.(\d+)\.(\d+)/);return b?{major:Number(b[1]),minor:Number(b[2]),patch:Number(b[3])}:null}function i(a=process.env,b=process.cwd()){let c,j,k,l=(0,f.dz)(a),m=function(a){try{let b=(0,d.readFileSync)(a,"utf8"),c=JSON.parse(b);return"string"==typeof c.version&&c.version.trim()?c.version.trim():null}catch{return null}}((0,e.join)(b,"package.json"))??a.NEXT_PUBLIC_APP_VERSION?.trim()??"0.0.0";if("rpc"===l){let b=(0,g.OS)(a);c=b?{path:b.path,source:"configured-path",version:b.version}:(0,f.aw)(a)}else c={path:null,source:"none",version:a.NEXT_PUBLIC_PI_VERSION?.trim()??null};let n=c.version,o=a.NEXT_PUBLIC_PI_VERSION?.trim()||n||null,p=[];"rpc"!==l||c.path||p.push("未解析到外部 Pi 二进制;设置 PIDANCE_PI_RUNTIME 或将 pi 加入 PATH"),"rpc"===l&&"bundled-fallback"===c.source&&p.push("当前使用 bundled fallback CLI,不是独立可升级引擎");let q=(0,g.jl)(a,n);return"available"===q.recommendation&&p.push(q.reason),{pidanceVersion:m,agentRuntimeMode:l,managementPiVersion:o,runtime:{path:"rpc"===l?c.path:null,version:n,source:"rpc"===l?c.source:"none",protocol:"rpc"===l?"rpc":"inprocess",compatible:function(a,b){if("inprocess"===a)return!0;if(!b.path)return!1;let c=h(b.version);return!!c&&(0!==c.major||!(c.minor<81))}(l,c)},capabilities:(k=!!(j=h(n))&&(j.major>0||0===j.major&&j.minor>=84),"inprocess"===l?{deltaOnlyMessageUpdate:!1,agentSettled:!1,bashExecutionUpdate:!1,extensionUi:!0,getEntries:!1,getTree:!1}:{deltaOnlyMessageUpdate:k,agentSettled:!0,bashExecutionUpdate:k,extensionUi:!0,getEntries:!0,getTree:!0}),upgrade:q,notes:p}}},29294:a=>{"use strict";a.exports=require("next/dist/server/app-render/work-async-storage.external.js")},39156:(a,b,c)=>{"use strict";c.d(b,{$:()=>h});var d=c(89477),e=c(86697),f=c(91166),g=c(2633);function h(a,b=process.env){let c=(0,f.pF)(b);if(!c.allowExplicitUpgrade)return{ok:!1,error:"当前策略禁止显式切换 runtime(31415 默认关闭;设 PIDANCE_PI_RUNTIME_EXPLICIT_UPGRADE=1)",code:"forbidden"};if(!/^\d+\.\d+\.\d+(?:-[\w.]+)?$/.test(a))return{ok:!1,error:`非法版本号: ${a}`,code:"invalid_version"};let{slots:i}=(0,f.wJ)(c.slotsRoot),j=i.find(b=>b.version===a);if(!j)return{ok:!1,error:`slot 不存在: ${a}(根目录 ${c.slotsRoot})`,code:"not_found"};let k=(0,f.uZ)(j.path);if(!k)return{ok:!1,error:`slot ${a} 内未找到可执行 pi`,code:"no_binary"};let l=(0,g.o6)(k);if(!l)return{ok:!1,error:`slot ${a} 的 pi --version 失败`,code:"no_binary"};let m=(0,e.join)(c.slotsRoot,"current"),n=(0,e.join)(c.slotsRoot,`.current.tmp-${process.pid}`);try{(0,d.mkdirSync)(c.slotsRoot,{recursive:!0});try{(0,d.existsSync)(n)&&(0,d.unlinkSync)(n)}catch{}(0,d.symlinkSync)(j.path,n);try{if((0,d.existsSync)(m)||(0,d.lstatSync)(m).isSymbolicLink())try{(0,d.unlinkSync)(m)}catch{}}catch{}(0,d.renameSync)(n,m)}catch(a){try{(0,d.existsSync)(n)&&(0,d.unlinkSync)(n)}catch{}return{ok:!1,error:a instanceof Error?a.message:String(a),code:"io_error"}}return{ok:!0,version:a,path:(0,e.resolve)(j.path),binary:(0,e.resolve)(k),binaryVersion:l}}},44870:a=>{"use strict";a.exports=require("next/dist/compiled/next-server/app-route.runtime.prod.js")},62228:a=>{"use strict";a.exports=require("node:os")},63033:a=>{"use strict";a.exports=require("next/dist/server/app-render/work-unit-async-storage.external.js")},78335:()=>{},86439:a=>{"use strict";a.exports=require("next/dist/shared/lib/no-fallback-error.external")},86697:a=>{"use strict";a.exports=require("node:path")},89477:a=>{"use strict";a.exports=require("node:fs")},91166:(a,b,c)=>{"use strict";c.d(b,{OS:()=>l,jl:()=>j,pF:()=>h,uZ:()=>k,wJ:()=>i});var d=c(89477),e=c(62228),f=c(86697);let g=(0,f.join)(".pidance","runtimes","pi");function h(a=process.env){let b=31415===Number(a.PORT||a.PIDANCE_PORT||0),c="1"===a.PIDANCE_PI_RUNTIME_AUTO_UPGRADE&&!b,d="1"===a.PIDANCE_PI_RUNTIME_EXPLICIT_UPGRADE||!b&&"0"!==a.PIDANCE_PI_RUNTIME_EXPLICIT_UPGRADE,i=a.PIDANCE_PI_RUNTIME_SLOTS_DIR?.trim()||function(a=(0,e.homedir)()){return(0,f.join)(a,g)}(a.HOME||(0,e.homedir)());return{allowAutoUpgrade:c,allowExplicitUpgrade:d,slotsRoot:(0,f.resolve)(i)}}function i(a){if(!(0,d.existsSync)(a))return{slots:[],current:null};let b=null,c=(0,f.join)(a,"current");try{if((0,d.existsSync)(c)){let a=(0,d.lstatSync)(c);a.isSymbolicLink()?b=(0,d.realpathSync)(c):a.isDirectory()&&(b=(0,f.resolve)(c))}}catch{b=null}let e=[],g=[];try{g=(0,d.readdirSync)(a)}catch{return{slots:[],current:null}}for(let c of g){if("current"===c||c.startsWith(".")||!/^\d+\.\d+\.\d+(?:-[\w.]+)?$/.test(c))continue;let g=(0,f.join)(a,c);try{if(!(0,d.lstatSync)(g).isDirectory())continue}catch{continue}let h=(0,f.resolve)(g);e.push({version:c,path:h,isCurrent:null!==b&&h===b})}e.sort((a,b)=>a.version.localeCompare(b.version,void 0,{numeric:!0}));let h=e.find(a=>a.isCurrent)??null;return{slots:e,current:h}}function j(a=process.env,b=null){let c=h(a),{slots:d,current:e}=i(c.slotsRoot);if(!c.allowAutoUpgrade&&!c.allowExplicitUpgrade)return{policy:c,slots:d,current:e,recommendation:"blocked",reason:"当前端口/策略禁止 runtime 升级(31415 默认禁自动)"};if(0===d.length)return{policy:c,slots:d,current:e,recommendation:"none",reason:"无本地 runtime slot;可管理员显式安装到 slots 目录"};let f=d[d.length-1];return e&&f.version!==e.version?{policy:c,slots:d,current:e,recommendation:c.allowExplicitUpgrade?"available":"blocked",reason:`本地 slot 最新 ${f.version},current 为 ${e.version}`}:b&&f&&f.version!==b?{policy:c,slots:d,current:e,recommendation:c.allowExplicitUpgrade?"available":"blocked",reason:`slot 最新 ${f.version},当前运行时 ${b}`}:{policy:c,slots:d,current:e,recommendation:"none",reason:"current 已是本地最新 slot,或无可切换版本"}}function k(a){for(let b of[(0,f.join)(a,"bin","pi"),(0,f.join)(a,"pi"),(0,f.join)(a,"dist","cli.js"),(0,f.join)(a,"node_modules","@earendil-works","pi-coding-agent","dist","cli.js")])try{if((0,d.existsSync)(b))return(0,f.resolve)(b)}catch{}try{if((0,d.existsSync)(a)&&(0,d.lstatSync)(a).isSymbolicLink())return k((0,d.realpathSync)(a))}catch{}return null}function l(a=process.env){let{current:b}=i(h(a).slotsRoot);if(!b)return null;let c=k(b.path);return c?{path:c,version:b.version}:null}},95398:a=>{"use strict";a.exports=require("node:child_process")},96487:()=>{}};var b=require("../../../../webpack-runtime.js");b.C(a);var c=b.X(0,[4741,1813],()=>b(b.s=1884));module.exports=c})();
@@ -1 +0,0 @@
1
- exports.id=1734,exports.ids=[1734],exports.modules={13072:()=>{},64601:()=>{},68809:(a,b,c)=>{"use strict";c.r(b),c.d(b,{stream:()=>m,streamSimple:()=>n});var d=c(55686),e=c(839),f=c(8334),g=c(52212),h=c(72893),i=c(88470),j=c(67181),k=c(43588);let l=0,m=(a,b,c)=>{let k=new g.Q2;return(async()=>{let g={role:"assistant",content:[],api:"google-generative-ai",provider:a.provider,model:a.id,usage:{input:0,output:0,cacheRead:0,cacheWrite:0,totalTokens:0,cost:{input:0,output:0,cacheRead:0,cacheWrite:0,total:0}},stopReason:"stop",timestamp:Date.now()};try{var m,n,r;let f,s,t=c?.apiKey;if(!t)throw Error(`No API key for provider: ${a.provider}`);let u=(m=a,n=t,r=c?.headers,f={},m.baseUrl&&(f.baseUrl=m.baseUrl,f.apiVersion=""),(s=(0,h.m)({...m.headers,...r}))&&(f.headers=s),new d.M4({apiKey:n,httpOptions:Object.keys(f).length>0?f:void 0})),v=function(a,b,c={}){let d=(0,j._0)(a,b),e={};void 0!==c.temperature&&(e.temperature=c.temperature),void 0!==c.maxTokens&&(e.maxOutputTokens=c.maxTokens);let f={...Object.keys(e).length>0&&e,...b.systemPrompt&&{systemInstruction:(0,i.J)(b.systemPrompt)},...b.tools&&b.tools.length>0&&{tools:(0,j.B1)(b.tools)}};if(b.tools&&b.tools.length>0&&c.toolChoice?f.toolConfig={functionCallingConfig:{mode:(0,j._Q)(c.toolChoice)}}:f.toolConfig=void 0,c.thinking?.enabled&&a.reasoning){let a={includeThoughts:!0};void 0!==c.thinking.level?a.thinkingLevel=c.thinking.level:void 0!==c.thinking.budgetTokens&&(a.thinkingBudget=c.thinking.budgetTokens),f.thinkingConfig=a}else{var g;a.reasoning&&c.thinking&&!c.thinking.enabled&&(g=a,f.thinkingConfig=p(g)?{thinkingLevel:"LOW"}:q(g)||o(g)?{thinkingLevel:"MINIMAL"}:{thinkingBudget:0})}if(c.signal){if(c.signal.aborted)throw Error("Request aborted");f.abortSignal=c.signal}return{model:a.id,contents:d,config:f}}(a,b,c),w=await c?.onPayload?.(v,a);void 0!==w&&(v=w);let x=await u.models.generateContentStream(v);k.push({type:"start",partial:g});let y=null,z=g.content,A=()=>z.length-1;for await(let b of x){g.responseId||=b.responseId;let c=b.candidates?.[0];if(c?.content?.parts)for(let a of c.content.parts){if(void 0!==a.text){let b=(0,j.oH)(a);y&&(!b||"thinking"===y.type)&&(b||"text"===y.type)||(y&&("text"===y.type?k.push({type:"text_end",contentIndex:z.length-1,content:y.text,partial:g}):k.push({type:"thinking_end",contentIndex:A(),content:y.thinking,partial:g})),b?(y={type:"thinking",thinking:"",thinkingSignature:void 0},g.content.push(y),k.push({type:"thinking_start",contentIndex:A(),partial:g})):(y={type:"text",text:""},g.content.push(y),k.push({type:"text_start",contentIndex:A(),partial:g}))),"thinking"===y.type?(y.thinking+=a.text,y.thinkingSignature=(0,j.pc)(y.thinkingSignature,a.thoughtSignature),k.push({type:"thinking_delta",contentIndex:A(),delta:a.text,partial:g})):(y.text+=a.text,y.textSignature=(0,j.pc)(y.textSignature,a.thoughtSignature),k.push({type:"text_delta",contentIndex:A(),delta:a.text,partial:g}))}if(a.functionCall){y&&("text"===y.type?k.push({type:"text_end",contentIndex:A(),content:y.text,partial:g}):k.push({type:"thinking_end",contentIndex:A(),content:y.thinking,partial:g}),y=null);let b=a.functionCall.id,c=!b||g.content.some(a=>"toolCall"===a.type&&a.id===b)?`${a.functionCall.name}_${Date.now()}_${++l}`:b,d={type:"toolCall",id:c,name:a.functionCall.name||"",arguments:a.functionCall.args??{},...a.thoughtSignature&&{thoughtSignature:a.thoughtSignature}};g.content.push(d),k.push({type:"toolcall_start",contentIndex:A(),partial:g}),k.push({type:"toolcall_delta",contentIndex:A(),delta:JSON.stringify(d.arguments),partial:g}),k.push({type:"toolcall_end",contentIndex:A(),toolCall:d,partial:g})}}c?.finishReason&&(g.stopReason=(0,j.f7)(c.finishReason),g.content.some(a=>"toolCall"===a.type)&&(g.stopReason="toolUse")),b.usageMetadata&&(g.usage={input:(b.usageMetadata.promptTokenCount||0)-(b.usageMetadata.cachedContentTokenCount||0),output:(b.usageMetadata.candidatesTokenCount||0)+(b.usageMetadata.thoughtsTokenCount||0),cacheRead:b.usageMetadata.cachedContentTokenCount||0,cacheWrite:0,reasoning:b.usageMetadata.thoughtsTokenCount||0,totalTokens:b.usageMetadata.totalTokenCount||0,cost:{input:0,output:0,cacheRead:0,cacheWrite:0,total:0}},(0,e.yN)(a,g.usage))}if(y&&("text"===y.type?k.push({type:"text_end",contentIndex:A(),content:y.text,partial:g}):k.push({type:"thinking_end",contentIndex:A(),content:y.thinking,partial:g})),c?.signal?.aborted)throw Error("Request was aborted");if("aborted"===g.stopReason||"error"===g.stopReason)throw Error("An unknown error occurred");k.push({type:"done",reason:g.stopReason,message:g}),k.end()}catch(a){for(let a of g.content)"index"in a&&delete a.index;g.stopReason=c?.signal?.aborted?"aborted":"error",g.errorMessage=(0,f.lR)((0,f.Jo)(a)),k.push({type:"error",reason:g.stopReason,error:g}),k.end()}})(),k},n=(a,b,c)=>{var d,f,g;let h=c?.apiKey;if(!h)throw Error(`No API key for provider: ${a.provider}`);let i=(0,k.QP)(a,b,c,h);if(!c?.reasoning)return m(a,b,{...i,thinking:{enabled:!1}});let j=(0,e.Kt)(a,c.reasoning),l="off"===j?"high":j;return p(a)||q(a)||o(a)?m(a,b,{...i,thinking:{enabled:!0,level:function(a,b){if(p(b))switch(a){case"minimal":case"low":return"LOW";case"medium":case"high":return"HIGH"}if(o(b))switch(a){case"minimal":case"low":return"MINIMAL";case"medium":case"high":return"HIGH"}switch(a){case"minimal":return"MINIMAL";case"low":return"LOW";case"medium":return"MEDIUM";case"high":return"HIGH"}}(l,a)}}):m(a,b,{...i,thinking:{enabled:!0,budgetTokens:(d=a,f=l,g=c.thinkingBudgets,g?.[f]!==void 0?g[f]:d.id.includes("2.5-pro")?({minimal:128,low:2048,medium:8192,high:32768})[f]:d.id.includes("2.5-flash-lite")?({minimal:512,low:2048,medium:8192,high:24576})[f]:d.id.includes("2.5-flash")?({minimal:128,low:2048,medium:8192,high:24576})[f]:-1)}})};function o(a){return/gemma-?4/.test(a.id.toLowerCase())}function p(a){return/gemini-3(?:\.\d+)?-pro/.test(a.id.toLowerCase())}function q(a){let b=a.id.toLowerCase();return/gemini-3(?:\.\d+)?-flash/.test(b)||"gemini-flash-latest"===b||"gemini-flash-lite-latest"===b}}};