cx-viewer 1.0.3 → 1.0.4

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 (1440) hide show
  1. package/README.md +49 -20
  2. package/build.js +15 -0
  3. package/cli.js +102 -18
  4. package/concepts/ar/BodyDiffJSON.md +1 -1
  5. package/concepts/ar/BodyFields.md +30 -33
  6. package/concepts/ar/GlobalSettings.md +165 -167
  7. package/concepts/ar/MainAgent.md +3 -4
  8. package/concepts/ar/ProxySwitch.md +3 -3
  9. package/concepts/ar/QRCode.md +1 -1
  10. package/concepts/ar/ResponseFields.md +29 -41
  11. package/concepts/ar/SubAgent-Search.md +12 -12
  12. package/concepts/ar/Teammate.md +16 -16
  13. package/concepts/ar/ToolsFirst.md +42 -48
  14. package/concepts/ar/TranslateContextPollution.md +9 -9
  15. package/concepts/ar/UltraPlan.md +38 -38
  16. package/concepts/da/BodyDiffJSON.md +2 -2
  17. package/concepts/da/BodyFields.md +30 -33
  18. package/concepts/da/GlobalSettings.md +165 -167
  19. package/concepts/da/MainAgent.md +3 -4
  20. package/concepts/da/ProxySwitch.md +3 -3
  21. package/concepts/da/QRCode.md +1 -1
  22. package/concepts/da/ResponseFields.md +29 -41
  23. package/concepts/da/SubAgent-Search.md +11 -11
  24. package/concepts/da/Teammate.md +16 -16
  25. package/concepts/da/ToolsFirst.md +42 -48
  26. package/concepts/da/TranslateContextPollution.md +9 -9
  27. package/concepts/da/UltraPlan.md +38 -38
  28. package/concepts/de/BodyDiffJSON.md +2 -2
  29. package/concepts/de/BodyFields.md +30 -33
  30. package/concepts/de/GlobalSettings.md +165 -167
  31. package/concepts/de/MainAgent.md +3 -4
  32. package/concepts/de/ProxySwitch.md +3 -3
  33. package/concepts/de/QRCode.md +1 -1
  34. package/concepts/de/ResponseFields.md +29 -41
  35. package/concepts/de/SubAgent-Search.md +11 -11
  36. package/concepts/de/Teammate.md +15 -15
  37. package/concepts/de/ToolsFirst.md +41 -47
  38. package/concepts/de/TranslateContextPollution.md +9 -9
  39. package/concepts/de/UltraPlan.md +38 -38
  40. package/concepts/en/BodyDiffJSON.md +5 -5
  41. package/concepts/en/BodyFields.md +17 -20
  42. package/concepts/en/GlobalSettings.md +49 -51
  43. package/concepts/en/MainAgent.md +8 -8
  44. package/concepts/en/ProxySwitch.md +3 -3
  45. package/concepts/en/QRCode.md +6 -6
  46. package/concepts/en/ResponseFields.md +7 -19
  47. package/concepts/en/SubAgent-Search.md +2 -2
  48. package/concepts/en/Teammate.md +4 -4
  49. package/concepts/en/Tool-apply_patch.md +11 -0
  50. package/concepts/en/Tool-create_goal.md +8 -0
  51. package/concepts/en/Tool-exec.md +88 -0
  52. package/concepts/en/Tool-followup_task.md +10 -0
  53. package/concepts/en/Tool-get_goal.md +5 -0
  54. package/concepts/en/Tool-image_generation.md +5 -0
  55. package/concepts/en/Tool-interrupt_agent.md +9 -0
  56. package/concepts/en/Tool-list_agents.md +9 -0
  57. package/concepts/en/Tool-list_mcp_resource_templates.md +8 -0
  58. package/concepts/en/Tool-list_mcp_resources.md +8 -0
  59. package/concepts/en/Tool-read_mcp_resource.md +10 -0
  60. package/concepts/en/Tool-request_user_input.md +9 -0
  61. package/concepts/en/Tool-send_message.md +10 -0
  62. package/concepts/en/Tool-shell_command.md +12 -0
  63. package/concepts/en/Tool-spawn_agent.md +11 -0
  64. package/concepts/en/Tool-tool_search.md +12 -0
  65. package/concepts/en/Tool-update_goal.md +9 -0
  66. package/concepts/en/Tool-update_plan.md +9 -0
  67. package/concepts/en/Tool-view_image.md +10 -0
  68. package/concepts/en/Tool-wait.md +12 -0
  69. package/concepts/en/Tool-wait_agent.md +9 -0
  70. package/concepts/en/Tool-web_search.md +11 -0
  71. package/concepts/en/Tools.md +29 -58
  72. package/concepts/en/ToolsFirst.md +24 -30
  73. package/concepts/en/TranslateContextPollution.md +10 -38
  74. package/concepts/en/UltraPlan.md +7 -7
  75. package/concepts/es/BodyDiffJSON.md +1 -1
  76. package/concepts/es/BodyFields.md +35 -38
  77. package/concepts/es/GlobalSettings.md +165 -167
  78. package/concepts/es/MainAgent.md +3 -4
  79. package/concepts/es/ProxySwitch.md +3 -3
  80. package/concepts/es/QRCode.md +1 -1
  81. package/concepts/es/ResponseFields.md +28 -40
  82. package/concepts/es/SubAgent-Search.md +12 -12
  83. package/concepts/es/Teammate.md +17 -17
  84. package/concepts/es/ToolsFirst.md +41 -47
  85. package/concepts/es/TranslateContextPollution.md +9 -9
  86. package/concepts/es/UltraPlan.md +38 -38
  87. package/concepts/fr/BodyDiffJSON.md +2 -2
  88. package/concepts/fr/BodyFields.md +35 -38
  89. package/concepts/fr/GlobalSettings.md +165 -167
  90. package/concepts/fr/MainAgent.md +3 -4
  91. package/concepts/fr/ProxySwitch.md +3 -3
  92. package/concepts/fr/QRCode.md +1 -1
  93. package/concepts/fr/ResponseFields.md +25 -37
  94. package/concepts/fr/SubAgent-Search.md +12 -12
  95. package/concepts/fr/Teammate.md +16 -16
  96. package/concepts/fr/ToolsFirst.md +40 -46
  97. package/concepts/fr/TranslateContextPollution.md +9 -9
  98. package/concepts/fr/UltraPlan.md +38 -38
  99. package/concepts/it/BodyDiffJSON.md +2 -2
  100. package/concepts/it/BodyFields.md +35 -38
  101. package/concepts/it/GlobalSettings.md +165 -167
  102. package/concepts/it/MainAgent.md +3 -4
  103. package/concepts/it/ProxySwitch.md +3 -3
  104. package/concepts/it/QRCode.md +1 -1
  105. package/concepts/it/ResponseFields.md +28 -40
  106. package/concepts/it/SubAgent-Search.md +12 -12
  107. package/concepts/it/Teammate.md +17 -17
  108. package/concepts/it/ToolsFirst.md +41 -47
  109. package/concepts/it/TranslateContextPollution.md +9 -9
  110. package/concepts/it/UltraPlan.md +38 -38
  111. package/concepts/ja/BodyDiffJSON.md +1 -1
  112. package/concepts/ja/BodyFields.md +30 -33
  113. package/concepts/ja/GlobalSettings.md +165 -167
  114. package/concepts/ja/MainAgent.md +3 -4
  115. package/concepts/ja/ProxySwitch.md +3 -3
  116. package/concepts/ja/QRCode.md +1 -1
  117. package/concepts/ja/ResponseFields.md +29 -41
  118. package/concepts/ja/SubAgent-Search.md +12 -12
  119. package/concepts/ja/Teammate.md +17 -17
  120. package/concepts/ja/ToolsFirst.md +41 -47
  121. package/concepts/ja/TranslateContextPollution.md +9 -9
  122. package/concepts/ja/UltraPlan.md +38 -38
  123. package/concepts/ko/BodyDiffJSON.md +1 -1
  124. package/concepts/ko/BodyFields.md +30 -33
  125. package/concepts/ko/GlobalSettings.md +165 -167
  126. package/concepts/ko/MainAgent.md +3 -4
  127. package/concepts/ko/ProxySwitch.md +3 -3
  128. package/concepts/ko/QRCode.md +1 -1
  129. package/concepts/ko/ResponseFields.md +29 -41
  130. package/concepts/ko/SubAgent-Search.md +12 -12
  131. package/concepts/ko/Teammate.md +17 -17
  132. package/concepts/ko/ToolsFirst.md +41 -47
  133. package/concepts/ko/TranslateContextPollution.md +9 -9
  134. package/concepts/ko/UltraPlan.md +38 -38
  135. package/concepts/no/BodyDiffJSON.md +2 -2
  136. package/concepts/no/BodyFields.md +30 -33
  137. package/concepts/no/GlobalSettings.md +165 -167
  138. package/concepts/no/MainAgent.md +3 -4
  139. package/concepts/no/ProxySwitch.md +3 -3
  140. package/concepts/no/QRCode.md +1 -1
  141. package/concepts/no/ResponseFields.md +29 -41
  142. package/concepts/no/SubAgent-Search.md +12 -12
  143. package/concepts/no/Teammate.md +17 -17
  144. package/concepts/no/ToolsFirst.md +42 -48
  145. package/concepts/no/TranslateContextPollution.md +9 -9
  146. package/concepts/no/UltraPlan.md +38 -38
  147. package/concepts/pl/BodyDiffJSON.md +2 -2
  148. package/concepts/pl/BodyFields.md +30 -33
  149. package/concepts/pl/GlobalSettings.md +165 -167
  150. package/concepts/pl/MainAgent.md +3 -4
  151. package/concepts/pl/ProxySwitch.md +3 -3
  152. package/concepts/pl/QRCode.md +1 -1
  153. package/concepts/pl/ResponseFields.md +29 -41
  154. package/concepts/pl/SubAgent-Search.md +12 -12
  155. package/concepts/pl/Teammate.md +17 -17
  156. package/concepts/pl/ToolsFirst.md +42 -48
  157. package/concepts/pl/TranslateContextPollution.md +9 -9
  158. package/concepts/pl/UltraPlan.md +38 -38
  159. package/concepts/pt-BR/BodyDiffJSON.md +2 -2
  160. package/concepts/pt-BR/BodyFields.md +30 -33
  161. package/concepts/pt-BR/GlobalSettings.md +165 -167
  162. package/concepts/pt-BR/MainAgent.md +3 -4
  163. package/concepts/pt-BR/ProxySwitch.md +3 -3
  164. package/concepts/pt-BR/QRCode.md +1 -1
  165. package/concepts/pt-BR/ResponseFields.md +29 -41
  166. package/concepts/pt-BR/SubAgent-Search.md +12 -12
  167. package/concepts/pt-BR/Teammate.md +17 -17
  168. package/concepts/pt-BR/ToolsFirst.md +41 -47
  169. package/concepts/pt-BR/TranslateContextPollution.md +9 -9
  170. package/concepts/pt-BR/UltraPlan.md +38 -38
  171. package/concepts/ru/BodyDiffJSON.md +1 -1
  172. package/concepts/ru/BodyFields.md +30 -33
  173. package/concepts/ru/GlobalSettings.md +165 -167
  174. package/concepts/ru/MainAgent.md +3 -4
  175. package/concepts/ru/ProxySwitch.md +3 -3
  176. package/concepts/ru/QRCode.md +1 -1
  177. package/concepts/ru/ResponseFields.md +29 -41
  178. package/concepts/ru/SubAgent-Search.md +12 -12
  179. package/concepts/ru/Teammate.md +17 -17
  180. package/concepts/ru/ToolsFirst.md +41 -47
  181. package/concepts/ru/TranslateContextPollution.md +9 -9
  182. package/concepts/ru/UltraPlan.md +38 -38
  183. package/concepts/th/BodyDiffJSON.md +1 -1
  184. package/concepts/th/BodyFields.md +30 -33
  185. package/concepts/th/GlobalSettings.md +165 -167
  186. package/concepts/th/MainAgent.md +3 -4
  187. package/concepts/th/ProxySwitch.md +3 -3
  188. package/concepts/th/QRCode.md +1 -1
  189. package/concepts/th/ResponseFields.md +29 -41
  190. package/concepts/th/SubAgent-Search.md +12 -12
  191. package/concepts/th/Teammate.md +17 -17
  192. package/concepts/th/ToolsFirst.md +42 -48
  193. package/concepts/th/TranslateContextPollution.md +9 -9
  194. package/concepts/th/UltraPlan.md +38 -38
  195. package/concepts/tr/BodyDiffJSON.md +1 -1
  196. package/concepts/tr/BodyFields.md +30 -33
  197. package/concepts/tr/GlobalSettings.md +165 -167
  198. package/concepts/tr/MainAgent.md +3 -4
  199. package/concepts/tr/ProxySwitch.md +3 -3
  200. package/concepts/tr/QRCode.md +1 -1
  201. package/concepts/tr/ResponseFields.md +29 -41
  202. package/concepts/tr/SubAgent-Search.md +12 -12
  203. package/concepts/tr/Teammate.md +16 -16
  204. package/concepts/tr/ToolsFirst.md +42 -48
  205. package/concepts/tr/TranslateContextPollution.md +9 -9
  206. package/concepts/tr/UltraPlan.md +38 -38
  207. package/concepts/uk/BodyDiffJSON.md +1 -1
  208. package/concepts/uk/BodyFields.md +30 -33
  209. package/concepts/uk/GlobalSettings.md +165 -167
  210. package/concepts/uk/MainAgent.md +3 -4
  211. package/concepts/uk/ProxySwitch.md +3 -3
  212. package/concepts/uk/QRCode.md +1 -1
  213. package/concepts/uk/ResponseFields.md +29 -41
  214. package/concepts/uk/SubAgent-Search.md +12 -12
  215. package/concepts/uk/Teammate.md +17 -17
  216. package/concepts/uk/ToolsFirst.md +42 -48
  217. package/concepts/uk/TranslateContextPollution.md +9 -9
  218. package/concepts/uk/UltraPlan.md +38 -38
  219. package/concepts/zh/BodyDiffJSON.md +4 -4
  220. package/concepts/zh/BodyFields.md +17 -20
  221. package/concepts/zh/GlobalSettings.md +26 -28
  222. package/concepts/zh/MainAgent.md +6 -6
  223. package/concepts/zh/ProxySwitch.md +1 -1
  224. package/concepts/zh/ResponseFields.md +7 -18
  225. package/concepts/zh/SubAgent-Search.md +2 -2
  226. package/concepts/zh/Teammate.md +4 -4
  227. package/concepts/zh/Tool-apply_patch.md +11 -0
  228. package/concepts/zh/Tool-create_goal.md +8 -0
  229. package/concepts/zh/Tool-exec.md +88 -0
  230. package/concepts/zh/Tool-followup_task.md +10 -0
  231. package/concepts/zh/Tool-get_goal.md +5 -0
  232. package/concepts/zh/Tool-image_generation.md +5 -0
  233. package/concepts/zh/Tool-interrupt_agent.md +9 -0
  234. package/concepts/zh/Tool-list_agents.md +9 -0
  235. package/concepts/zh/Tool-list_mcp_resource_templates.md +8 -0
  236. package/concepts/zh/Tool-list_mcp_resources.md +8 -0
  237. package/concepts/zh/Tool-read_mcp_resource.md +10 -0
  238. package/concepts/zh/Tool-request_user_input.md +9 -0
  239. package/concepts/zh/Tool-send_message.md +10 -0
  240. package/concepts/zh/Tool-shell_command.md +12 -0
  241. package/concepts/zh/Tool-spawn_agent.md +11 -0
  242. package/concepts/zh/Tool-tool_search.md +12 -0
  243. package/concepts/zh/Tool-update_goal.md +9 -0
  244. package/concepts/zh/Tool-update_plan.md +9 -0
  245. package/concepts/zh/Tool-view_image.md +10 -0
  246. package/concepts/zh/Tool-wait.md +12 -0
  247. package/concepts/zh/Tool-wait_agent.md +9 -0
  248. package/concepts/zh/Tool-web_search.md +11 -0
  249. package/concepts/zh/Tools.md +29 -58
  250. package/concepts/zh/ToolsFirst.md +21 -27
  251. package/concepts/zh/TranslateContextPollution.md +10 -38
  252. package/concepts/zh/UltraPlan.md +7 -7
  253. package/concepts/zh-TW/BodyFields.md +27 -30
  254. package/concepts/zh-TW/GlobalSettings.md +26 -28
  255. package/concepts/zh-TW/MainAgent.md +0 -1
  256. package/concepts/zh-TW/ProxySwitch.md +22 -22
  257. package/concepts/zh-TW/ResponseFields.md +29 -40
  258. package/concepts/zh-TW/SubAgent-Search.md +12 -12
  259. package/concepts/zh-TW/Teammate.md +16 -16
  260. package/concepts/zh-TW/ToolsFirst.md +41 -47
  261. package/concepts/zh-TW/UltraPlan.md +38 -38
  262. package/dist/assets/App-BZ9oclBj.js +2 -0
  263. package/dist/assets/App-rWON7PuS.css +1 -0
  264. package/dist/assets/MdxEditorPanel-B4lZ7Z_A.js +1 -0
  265. package/dist/assets/MdxEditorPanel-Da_ceLFo.css +1 -0
  266. package/dist/assets/Mobile-B5V_-6Hc.css +1 -0
  267. package/dist/assets/Mobile-C7Hy-TIM.js +1 -0
  268. package/dist/assets/abnfDiagram-VRR7QNED-DYYppIQV.js +1 -0
  269. package/dist/assets/apl-B8ZmNFqK.js +1 -0
  270. package/dist/assets/arc-BT3um7r4.js +1 -0
  271. package/dist/assets/architectureDiagram-ZJ3FMSHR-uweBqnh-.js +1 -0
  272. package/dist/assets/asciiarmor-CIte6N-S.js +1 -0
  273. package/dist/assets/asn1-Ax1-z1nk.js +1 -0
  274. package/dist/assets/asterisk-CLHf-iRz.js +1 -0
  275. package/dist/assets/blockDiagram-677ZJIJ3-DzeI4GyV.js +1 -0
  276. package/dist/assets/brainfuck-CdLnmYpe.js +1 -0
  277. package/dist/assets/c4Diagram-LMCZKHZV-DBI0K7wS.js +1 -0
  278. package/dist/assets/channel-BrN6yx0e.js +1 -0
  279. package/dist/assets/chunk-2Q5K7J3B-DK9JA8Ct.js +1 -0
  280. package/dist/assets/chunk-32BRIVSS-VNg3Ylzs.js +1 -0
  281. package/dist/assets/chunk-5VM5RSS4-DFhufY9o.js +1 -0
  282. package/dist/assets/chunk-EX3LRPZG-B93MHNBT.js +1 -0
  283. package/dist/assets/chunk-JWPE2WC7-C54OW1iN.js +1 -0
  284. package/dist/assets/chunk-MOJQB5TN-lKhWWIDe.js +1 -0
  285. package/dist/assets/chunk-RYQCIY6F-BK2jDXwB.js +1 -0
  286. package/dist/assets/chunk-V7JOEXUC-aLHBmfOc.js +1 -0
  287. package/dist/assets/chunk-VR4S4FIN-Bomuor1h.js +1 -0
  288. package/dist/assets/chunk-XXDRQBXY-BPj05P7g.js +1 -0
  289. package/dist/assets/classDiagram-OUVF2IWQ-COm0X4uJ.js +1 -0
  290. package/dist/assets/classDiagram-v2-EOCWNBFH-COm0X4uJ.js +1 -0
  291. package/dist/assets/clike-BDgEuk0n.js +1 -0
  292. package/dist/assets/clojure-CrPxgQZl.js +1 -0
  293. package/dist/assets/cmake-BknZiLBu.js +1 -0
  294. package/dist/assets/cobol-DN1mHbgw.js +1 -0
  295. package/dist/assets/coffeescript-DTAwRC7M.js +1 -0
  296. package/dist/assets/commonlisp-B4DJ--Bo.js +1 -0
  297. package/dist/assets/cose-bilkent-JH36ORCC-DU44QHSb.js +1 -0
  298. package/dist/assets/crystal-DoipYOOv.js +1 -0
  299. package/dist/assets/css-BeQRP3p5.js +1 -0
  300. package/dist/assets/cynefin-VYW2F7L2-C0dowxsF.js +15 -0
  301. package/dist/assets/cynefinDiagram-TSTJHNR4-C6vNWPUV.js +1 -0
  302. package/dist/assets/cypher-BzELKutH.js +1 -0
  303. package/dist/assets/cytoscape.esm-D0POlJZ1.js +9 -0
  304. package/dist/assets/d-Mh2Rawoc.js +1 -0
  305. package/dist/assets/dagre-VKFMJZFB-aLG4uEb-.js +1 -0
  306. package/dist/assets/defaultLocale-DZ7E7S9R.js +1 -0
  307. package/dist/assets/diagram-FQU43EPY-D5C8GfdU.js +1 -0
  308. package/dist/assets/diagram-G47NLZAW-C9tRw_xi.js +1 -0
  309. package/dist/assets/diagram-NH7WQ7WH-AYxTxwJ2.js +1 -0
  310. package/dist/assets/diagram-OA4YK3LP-BuBE5n9n.js +1 -0
  311. package/dist/assets/diagram-WEI45ONY-Cda7zYeO.js +1 -0
  312. package/dist/assets/diff-B1OtBbfz.js +1 -0
  313. package/dist/assets/dockerfile-Du7niAGi.js +1 -0
  314. package/dist/assets/dtd-So5hjSa8.js +1 -0
  315. package/dist/assets/dylan-Co15g-RX.js +1 -0
  316. package/dist/assets/ebnf-DWrAnno4.js +1 -0
  317. package/dist/assets/ebnfDiagram-CCIWWBDH-DC_OGyoh.js +1 -0
  318. package/dist/assets/ecl-8tbf0rUT.js +1 -0
  319. package/dist/assets/eiffel-BXtlUtEg.js +1 -0
  320. package/dist/assets/elm-BwiUluiH.js +1 -0
  321. package/dist/assets/erDiagram-Q63AITRT-D2G21PVY.js +1 -0
  322. package/dist/assets/erlang-CrHBLi-m.js +1 -0
  323. package/dist/assets/factor-C7nC06Ta.js +1 -0
  324. package/dist/assets/fcl-DKWfryFT.js +1 -0
  325. package/dist/assets/flowDiagram-23GEKE2U-CEQPYHrk.js +1 -0
  326. package/dist/assets/forth-Cg8ASoTj.js +1 -0
  327. package/dist/assets/fortran-BHf_qfFx.js +1 -0
  328. package/dist/assets/ganttDiagram-NO4QXBWP-JStxUtFR.js +1 -0
  329. package/dist/assets/gas-cj_2N_z1.js +1 -0
  330. package/dist/assets/gherkin-BiuTaH40.js +1 -0
  331. package/dist/assets/gitGraphDiagram-IHSO6WYX-BiojPH-V.js +1 -0
  332. package/dist/assets/graph-CnJdn47S.js +1 -0
  333. package/dist/assets/groovy-Bq8cXYUU.js +1 -0
  334. package/dist/assets/haskell-1ANuaeie.js +1 -0
  335. package/dist/assets/haxe-BUNSvWf_.js +1 -0
  336. package/dist/assets/html2canvas.esm-HFdlUwfn.js +20 -0
  337. package/dist/assets/http-DPC2IRQA.js +1 -0
  338. package/dist/assets/idl-DDbIciu_.js +1 -0
  339. package/dist/assets/index-BEyKG3O5.css +1 -0
  340. package/dist/assets/index-BduJoLQ5.js +1 -0
  341. package/dist/assets/index-BqwR8F0v.js +1 -0
  342. package/dist/assets/index-BsycQyrv.js +1 -0
  343. package/dist/assets/index-CFSDxZyA.js +1 -0
  344. package/dist/assets/index-CunNLTHc.js +1 -0
  345. package/dist/assets/index-OGkDFNTK.js +1 -0
  346. package/dist/assets/index-oxOyrL07.js +2 -0
  347. package/dist/assets/index-wvaycTGT.js +1 -0
  348. package/dist/assets/infoDiagram-FWYZ7A6U-Csl_aBIC.js +1 -0
  349. package/dist/assets/init-DMZMl1PR.js +1 -0
  350. package/dist/assets/ishikawaDiagram-FXEZZL3T-CjgGuMwr.js +1 -0
  351. package/dist/assets/javascript-Cet1BUca.js +1 -0
  352. package/dist/assets/journeyDiagram-5HDEW3XC-DUOy1PCq.js +1 -0
  353. package/dist/assets/jszip.min-BxIXdRg4.js +12 -0
  354. package/dist/assets/julia-CdxLCr68.js +1 -0
  355. package/dist/assets/kanban-definition-HUTT4EX6-Cx7GSrSj.js +1 -0
  356. package/dist/assets/katex-CfXf84Fz.js +1 -0
  357. package/dist/assets/layout-CCUE9ZRw.js +1 -0
  358. package/dist/assets/linear-GeBi6jJp.js +1 -0
  359. package/dist/assets/livescript-Bw1Vw7Ae.js +1 -0
  360. package/dist/assets/lua-DM1wbcnc.js +1 -0
  361. package/dist/assets/map-DQeg2hXV.js +1 -0
  362. package/dist/assets/mathematica-BXSv1_O1.js +1 -0
  363. package/dist/assets/mbox-CWY0keg3.js +1 -0
  364. package/dist/assets/mermaid.core-Cy9iVxov.js +7 -0
  365. package/dist/assets/mindmap-definition-LN4V7U3C-CUVxVkK5.js +1 -0
  366. package/dist/assets/mirc-CMLrLVMT.js +1 -0
  367. package/dist/assets/mllike-naqhAFf1.js +1 -0
  368. package/dist/assets/modelica-BvadsaHY.js +1 -0
  369. package/dist/assets/mscgen-DOr-Q10p.js +1 -0
  370. package/dist/assets/mumps-DKTl5Nyj.js +1 -0
  371. package/dist/assets/nginx-DWR90-d1.js +1 -0
  372. package/dist/assets/nsis-ooFGduGn.js +1 -0
  373. package/dist/assets/ntriples-q5jkU4X1.js +1 -0
  374. package/dist/assets/octave-Deu9Ci7_.js +1 -0
  375. package/dist/assets/orbiting-BCD4Vuij.svg +7 -0
  376. package/dist/assets/ordinal-DA-_8pMy.js +1 -0
  377. package/dist/assets/oz-cTQm1aoB.js +1 -0
  378. package/dist/assets/pascal-Oh3VmczP.js +1 -0
  379. package/dist/assets/pegDiagram-2B236MQR-BCF1byLY.js +1 -0
  380. package/dist/assets/perl-BddWF1HQ.js +1 -0
  381. package/dist/assets/pieDiagram-ENE6RG2P-D2cZTo8-.js +1 -0
  382. package/dist/assets/pig-g5ZQNIDr.js +1 -0
  383. package/dist/assets/powershell-CNmQNFVJ.js +1 -0
  384. package/dist/assets/properties-B41DXfv6.js +1 -0
  385. package/dist/assets/protobuf-eEBl31OJ.js +1 -0
  386. package/dist/assets/pug-DRSo4eCK.js +1 -0
  387. package/dist/assets/puppet-ClfRubAD.js +1 -0
  388. package/dist/assets/python-BSflc812.js +1 -0
  389. package/dist/assets/q-BBDx3N9Y.js +1 -0
  390. package/dist/assets/quadrantDiagram-ABIIQ3AL-Bwsn2--F.js +1 -0
  391. package/dist/assets/r-CByC1eO8.js +1 -0
  392. package/dist/assets/railroadDiagram-RFXS5EU6-CLGLpWHs.js +1 -0
  393. package/dist/assets/requirementDiagram-TGXJPOKE-BfmBYwZl.js +1 -0
  394. package/dist/assets/rpm-8t935XkD.js +1 -0
  395. package/dist/assets/ruby-CAgbkLZh.js +1 -0
  396. package/dist/assets/sankeyDiagram-HTMAVEWB-CqZhbyFn.js +1 -0
  397. package/dist/assets/sas-C-JWcRvo.js +1 -0
  398. package/dist/assets/scheme-D7o9RjUX.js +1 -0
  399. package/dist/assets/seqResourceLoaders-Bkh2Rb9i.js +2 -0
  400. package/dist/assets/seqResourceLoaders-Do7Kqg3B.css +41 -0
  401. package/dist/assets/sequenceDiagram-DBY2YBRQ-CcOdXkN2.js +1 -0
  402. package/dist/assets/shell-BXA79DV6.js +1 -0
  403. package/dist/assets/shimmer-BBDejmDf.svg +7 -0
  404. package/dist/assets/sieve-DNwyl0rd.js +1 -0
  405. package/dist/assets/simple-mode-CoQRusFX.js +1 -0
  406. package/dist/assets/sizeCapture-X5ZJPWSS-B4OVmPqu.js +1 -0
  407. package/dist/assets/smalltalk-DggktV6S.js +1 -0
  408. package/dist/assets/solr-D7NRuIPM.js +1 -0
  409. package/dist/assets/sparql-Cr71deJQ.js +1 -0
  410. package/dist/assets/spreadsheet-BMD3tYqw.js +1 -0
  411. package/dist/assets/sql-CbOjXfBR.js +1 -0
  412. package/dist/assets/stateDiagram-2N3HPSRC-Dysun0oO.js +1 -0
  413. package/dist/assets/stateDiagram-v2-6OUMAXLB-BFet8xAz.js +1 -0
  414. package/dist/assets/stex-iDPIkRmr.js +1 -0
  415. package/dist/assets/stylus-nWZizI-c.js +1 -0
  416. package/dist/assets/swift-DOhLK5SG.js +1 -0
  417. package/dist/assets/swimlanes-5IMT3BWC-_30OXwXy.js +2 -0
  418. package/dist/assets/swimlanesDiagram-G3AALYLV-C19viY0G.js +1 -0
  419. package/dist/assets/tcl-CQhJd1WY.js +1 -0
  420. package/dist/assets/textile-D9XqfVtL.js +1 -0
  421. package/dist/assets/tiddlywiki-DfOYgVky.js +1 -0
  422. package/dist/assets/tiki-a0_YLWvV.js +1 -0
  423. package/dist/assets/timeline-definition-FHXFAJF6-X1Xk3onD.js +1 -0
  424. package/dist/assets/toml-ekl3F1YB.js +1 -0
  425. package/dist/assets/troff-Bh_pcXF1.js +1 -0
  426. package/dist/assets/ttcn-M6363IRW.js +1 -0
  427. package/dist/assets/ttcn-cfg-7I2DgJEN.js +1 -0
  428. package/dist/assets/turtle-B5jdxH6D.js +1 -0
  429. package/dist/assets/vb-DM-xPmVv.js +1 -0
  430. package/dist/assets/vbscript-B0qu41Yc.js +1 -0
  431. package/dist/assets/velocity-FCgsuVHf.js +1 -0
  432. package/dist/assets/vendor-antd-Bzi1WuBb.js +17 -0
  433. package/dist/assets/vendor-codemirror-CKTrJd47.js +1 -0
  434. package/dist/assets/vendor-highlight-IFTJ9nxW.js +1 -0
  435. package/dist/assets/vendor-markdown-BN3QLsBu.js +3 -0
  436. package/dist/assets/vendor-mdxeditor-4PbKH6K7.js +2 -0
  437. package/dist/assets/vendor-qrcode-Bnjm0rcu.js +6 -0
  438. package/dist/assets/vendor-react-l0sNRNKZ.js +1 -0
  439. package/dist/assets/vendor-virtuoso-2P4SowHC.js +1 -0
  440. package/dist/assets/vendor-xterm-DckPrCx1.js +37 -0
  441. package/dist/assets/vennDiagram-L72KCM5P-D3fQnGq7.js +1 -0
  442. package/dist/assets/verilog-nrfFvR12.js +1 -0
  443. package/dist/assets/vhdl-WlDXtV-W.js +1 -0
  444. package/dist/assets/wardleyDiagram-EHGQE667-CRhqI6-g.js +1 -0
  445. package/dist/assets/webidl-RIQoSXDx.js +1 -0
  446. package/dist/assets/xquery-BN45G3lJ.js +1 -0
  447. package/dist/assets/xychartDiagram-FW5EYKEG-Cmtgmmtg.js +1 -0
  448. package/dist/assets/yacas-U6gaIVhD.js +1 -0
  449. package/dist/assets/z80-CFe5BHbK.js +1 -0
  450. package/dist/index.html +25 -6
  451. package/dist/voice-packs/default/A_choice_for_your_consideration_sir.MP3 +0 -0
  452. package/dist/voice-packs/default/It_is_done_sir.MP3 +0 -0
  453. package/dist/voice-packs/default/The_plan_awaits_your_approval_sir.MP3 +0 -0
  454. package/dist/voice-packs/default/pack.json +24 -0
  455. package/dist/voice-packs/sanguo/ask.MP3 +0 -0
  456. package/dist/voice-packs/sanguo/end.MP3 +0 -0
  457. package/dist/voice-packs/sanguo/pack.json +24 -0
  458. package/dist/voice-packs/sanguo/plan.MP3 +0 -0
  459. package/electron/diag.js +110 -0
  460. package/electron/main.js +1432 -0
  461. package/electron/menu-model.js +107 -0
  462. package/electron/tab-bar.html +575 -0
  463. package/electron/tab-content-preload.js +66 -0
  464. package/electron/tab-preload.js +24 -0
  465. package/electron/tab-worker.js +142 -0
  466. package/electron/window-state.js +60 -0
  467. package/electron/workspace-preload.js +19 -0
  468. package/findcx.js +4 -0
  469. package/i18n.js +3 -423
  470. package/index.html +30 -0
  471. package/interceptor.js +144 -70
  472. package/jsconfig.json +25 -0
  473. package/lib/approval-reviewer.js +23 -0
  474. package/lib/appserver-bridge.js +1753 -237
  475. package/lib/ask-bridge.js +5 -5
  476. package/lib/cli-args.js +1 -0
  477. package/lib/codex-config.js +157 -18
  478. package/lib/context-watcher.js +6 -65
  479. package/lib/delta-reconstructor.js +74 -52
  480. package/lib/ensure-hooks.js +37 -30
  481. package/lib/interceptor-core.js +490 -43
  482. package/lib/log-watcher.js +3 -8
  483. package/lib/main-agent-entry.js +68 -0
  484. package/lib/openai-body.js +95 -0
  485. package/lib/otel-adapter.js +3 -2
  486. package/lib/otel-receiver.js +1 -2
  487. package/lib/perm-bridge.js +84 -44
  488. package/lib/proxy-env.js +45 -1
  489. package/lib/sdk-adapter.js +241 -51
  490. package/lib/sdk-manager.js +523 -370
  491. package/lib/skills-api.js +364 -0
  492. package/lib/stats-worker.js +21 -21
  493. package/lib/token-usage.js +29 -0
  494. package/lib/updater.js +3 -7
  495. package/package.json +27 -6
  496. package/plugins/.gitkeep +0 -0
  497. package/plugins/README.md +8 -0
  498. package/proxy.js +187 -241
  499. package/pty-manager.js +17 -1
  500. package/public/favicon.ico +0 -0
  501. package/public/voice-packs/default/A_choice_for_your_consideration_sir.MP3 +0 -0
  502. package/public/voice-packs/default/It_is_done_sir.MP3 +0 -0
  503. package/public/voice-packs/default/The_plan_awaits_your_approval_sir.MP3 +0 -0
  504. package/public/voice-packs/default/pack.json +24 -0
  505. package/public/voice-packs/sanguo/ask.MP3 +0 -0
  506. package/public/voice-packs/sanguo/end.MP3 +0 -0
  507. package/public/voice-packs/sanguo/pack.json +24 -0
  508. package/public/voice-packs/sanguo/plan.MP3 +0 -0
  509. package/scripts/check-no-control-bytes.js +130 -0
  510. package/scripts/check-sign-config.sh +85 -0
  511. package/scripts/gen-default-voicepack.js +176 -0
  512. package/scripts/mac-sign.sh +47 -0
  513. package/scripts/npm-pack-dry-run.mjs +20 -0
  514. package/server/lib/approval-modal-prefs.js +72 -0
  515. package/server/lib/context-rules.js +70 -0
  516. package/server/lib/delta-reconstructor.js +403 -0
  517. package/server/lib/tools-xml-formatter.js +91 -0
  518. package/server/lib/voice-pack-events.js +79 -0
  519. package/server.js +420 -86
  520. package/src/App.jsx +638 -0
  521. package/src/App.module.css +1088 -0
  522. package/src/AppBase.jsx +2803 -0
  523. package/src/Mobile.jsx +1348 -0
  524. package/src/components/approval/ApprovalModal.jsx +319 -0
  525. package/src/components/approval/ApprovalModal.module.css +160 -0
  526. package/src/components/approval/ToolApprovalPanel.jsx +111 -0
  527. package/src/components/approval/ToolApprovalPanel.module.css +250 -0
  528. package/src/components/chat/ApprovalPortalContext.js +26 -0
  529. package/src/components/chat/AskQuestionForm.jsx +279 -0
  530. package/src/components/chat/AskTimeoutCountdown.jsx +113 -0
  531. package/src/components/chat/ChatInputBar.jsx +584 -0
  532. package/src/components/chat/ChatInputBar.module.css +656 -0
  533. package/src/components/chat/ChatMessage.jsx +1587 -0
  534. package/src/components/chat/ChatMessage.module.css +1560 -0
  535. package/src/components/chat/ChatView.jsx +3533 -0
  536. package/src/components/chat/ChatView.module.css +418 -0
  537. package/src/components/chat/DiffView.jsx +111 -0
  538. package/src/components/chat/DiffView.module.css +141 -0
  539. package/src/components/chat/RoleFilterBar.jsx +35 -0
  540. package/src/components/chat/RoleFilterBar.module.css +62 -0
  541. package/src/components/chat/controllers/askFlowController.js +789 -0
  542. package/src/components/chat/controllers/permissionController.js +84 -0
  543. package/src/components/chat/controllers/ptyPromptController.js +166 -0
  544. package/src/components/chat/controllers/scrollHighlightController.js +50 -0
  545. package/src/components/chat/controllers/splitDragController.js +135 -0
  546. package/src/components/chat/controllers/toolFileChangeController.js +216 -0
  547. package/src/components/chat/interactionOwnership.js +106 -0
  548. package/src/components/chat/uploadDeferLogic.js +46 -0
  549. package/src/components/common/ConceptHelp.jsx +97 -0
  550. package/src/components/common/ConceptHelp.module.css +151 -0
  551. package/src/components/common/ConfirmRemoveButton.jsx +78 -0
  552. package/src/components/common/CountryFlag.jsx +105 -0
  553. package/src/components/common/CountryFlag.module.css +36 -0
  554. package/src/components/common/DingTalkIcon.jsx +20 -0
  555. package/src/components/common/DiscordIcon.jsx +21 -0
  556. package/src/components/common/FeishuIcon.jsx +23 -0
  557. package/src/components/common/HoverPreviewTip.jsx +62 -0
  558. package/src/components/common/HoverPreviewTip.module.css +21 -0
  559. package/src/components/common/ImageLightbox.jsx +244 -0
  560. package/src/components/common/ImageLightbox.module.css +120 -0
  561. package/src/components/common/MemoryDetailModal.jsx +75 -0
  562. package/src/components/common/OpenFolderIcon.jsx +53 -0
  563. package/src/components/common/OpenFolderIcon.module.css +7 -0
  564. package/src/components/common/PanelResizer.jsx +48 -0
  565. package/src/components/common/PanelResizer.module.css +11 -0
  566. package/src/components/common/QuickAutoApproveRows.jsx +66 -0
  567. package/src/components/common/RefreshIcon.jsx +50 -0
  568. package/src/components/common/RefreshIcon.module.css +26 -0
  569. package/src/components/common/SnapLineOverlay.jsx +47 -0
  570. package/src/components/common/SnapLineOverlay.module.css +31 -0
  571. package/src/components/common/ToolsHelp.jsx +113 -0
  572. package/src/components/common/ToolsHelp.module.css +85 -0
  573. package/src/components/common/WeComIcon.jsx +22 -0
  574. package/src/components/common/quickMenuIcons.jsx +99 -0
  575. package/src/components/common/sharedChrome.module.css +274 -0
  576. package/src/components/dashboard/AppHeader.jsx +2085 -0
  577. package/src/components/dashboard/AppHeader.module.css +676 -0
  578. package/src/components/dashboard/CachePopoverContent.jsx +538 -0
  579. package/src/components/dashboard/CachePopoverContent.module.css +191 -0
  580. package/src/components/dashboard/ContextTab.jsx +769 -0
  581. package/src/components/dashboard/ContextTab.module.css +565 -0
  582. package/src/components/dashboard/DetailPanel.jsx +813 -0
  583. package/src/components/dashboard/DetailPanel.module.css +513 -0
  584. package/src/components/dashboard/LiveTagPopover.jsx +89 -0
  585. package/src/components/dashboard/LiveTagPopover.module.css +67 -0
  586. package/src/components/dashboard/RequestList.jsx +146 -0
  587. package/src/components/dashboard/RequestList.module.css +146 -0
  588. package/src/components/dashboard/TeamSessionPanel.jsx +584 -0
  589. package/src/components/dashboard/TeamSessionPanel.module.css +457 -0
  590. package/src/components/dashboard/UsageWindowPill.jsx +166 -0
  591. package/src/components/dashboard/UsageWindowPill.module.css +140 -0
  592. package/src/components/dashboard/WorkflowRunsPanel.jsx +108 -0
  593. package/src/components/dashboard/WorkflowRunsPanel.module.css +72 -0
  594. package/src/components/dashboard/WorkspaceList.jsx +410 -0
  595. package/src/components/dashboard/WorkspaceList.module.css +254 -0
  596. package/src/components/files/FileContentView.jsx +1013 -0
  597. package/src/components/files/FileContentView.module.css +418 -0
  598. package/src/components/files/FileExplorer.jsx +937 -0
  599. package/src/components/files/FileExplorer.module.css +173 -0
  600. package/src/components/files/MdxEditorPanel.base.css +9 -0
  601. package/src/components/files/MdxEditorPanel.jsx +181 -0
  602. package/src/components/files/MdxEditorPanel.module.css +917 -0
  603. package/src/components/git/DiffMiniMap.jsx +98 -0
  604. package/src/components/git/DiffMiniMap.module.css +17 -0
  605. package/src/components/git/FullFileDiffView.jsx +265 -0
  606. package/src/components/git/FullFileDiffView.module.css +176 -0
  607. package/src/components/git/GitChanges.jsx +461 -0
  608. package/src/components/git/GitChanges.module.css +337 -0
  609. package/src/components/git/GitDiffView.jsx +161 -0
  610. package/src/components/git/GitDiffView.module.css +205 -0
  611. package/src/components/mobile/MobileDrawerCloseButton.jsx +18 -0
  612. package/src/components/mobile/MobileFileExplorer.jsx +231 -0
  613. package/src/components/mobile/MobileFileExplorer.module.css +171 -0
  614. package/src/components/mobile/MobileGitDiff.jsx +293 -0
  615. package/src/components/mobile/MobileGitDiff.module.css +317 -0
  616. package/src/components/mobile/MobileStats.jsx +211 -0
  617. package/src/components/mobile/MobileStats.module.css +75 -0
  618. package/src/components/settings/ImAppendSystemModal.jsx +104 -0
  619. package/src/components/settings/ImConversationModal.jsx +328 -0
  620. package/src/components/settings/ImConversationModal.module.css +49 -0
  621. package/src/components/settings/ImPlatformSettings.jsx +453 -0
  622. package/src/components/settings/ImPlatformSettings.module.css +110 -0
  623. package/src/components/settings/ImSkillsModal.jsx +94 -0
  624. package/src/components/settings/ImStatusChip.jsx +80 -0
  625. package/src/components/settings/ImStatusChip.module.css +36 -0
  626. package/src/components/settings/MessagingModal.jsx +65 -0
  627. package/src/components/settings/MessagingModal.module.css +95 -0
  628. package/src/components/settings/ModelPromptTabs.jsx +118 -0
  629. package/src/components/settings/PluginModal.jsx +423 -0
  630. package/src/components/settings/PluginModal.module.css +136 -0
  631. package/src/components/settings/PreferencesForm.jsx +104 -0
  632. package/src/components/settings/PreferencesForm.module.css +27 -0
  633. package/src/components/settings/ProcessModal.jsx +175 -0
  634. package/src/components/settings/ProcessModal.module.css +21 -0
  635. package/src/components/settings/ProjectAliasEditor.jsx +138 -0
  636. package/src/components/settings/ProjectAliasEditor.module.css +87 -0
  637. package/src/components/settings/ProjectPrefsManagerModal.jsx +123 -0
  638. package/src/components/settings/ProjectPrefsManagerModal.module.css +52 -0
  639. package/src/components/settings/ProxyModal.jsx +286 -0
  640. package/src/components/settings/ProxyModal.module.css +141 -0
  641. package/src/components/settings/SkillsManagerModal.jsx +143 -0
  642. package/src/components/settings/SkillsManagerModal.module.css +143 -0
  643. package/src/components/settings/SystemTextModal.jsx +312 -0
  644. package/src/components/settings/SystemTextModal.module.css +331 -0
  645. package/src/components/settings/VoicePackSettings.jsx +319 -0
  646. package/src/components/settings/VoicePackSettings.module.css +151 -0
  647. package/src/components/settings/imPlatforms.js +177 -0
  648. package/src/components/terminal/CustomUltraplanEditModal.jsx +227 -0
  649. package/src/components/terminal/CustomUltraplanEditModal.module.css +189 -0
  650. package/src/components/terminal/PresetExpertPickerModal.jsx +116 -0
  651. package/src/components/terminal/PresetExpertPickerModal.module.css +90 -0
  652. package/src/components/terminal/PresetModal.jsx +118 -0
  653. package/src/components/terminal/ScratchTerminal.jsx +359 -0
  654. package/src/components/terminal/TerminalPanel.jsx +2021 -0
  655. package/src/components/terminal/TerminalPanel.module.css +872 -0
  656. package/src/components/terminal/TerminalWsContext.jsx +226 -0
  657. package/src/components/terminal/UltraPlanModal.jsx +328 -0
  658. package/src/components/terminal/UltraPlanModal.module.css +527 -0
  659. package/src/components/terminal/UltraplanExpertManagerModal.jsx +114 -0
  660. package/src/components/terminal/UltraplanExpertManagerModal.module.css +91 -0
  661. package/src/components/terminal/UltraplanPanel.jsx +307 -0
  662. package/src/components/terminal/UltraplanPanel.module.css +540 -0
  663. package/src/components/terminal/terminalThemes.js +33 -0
  664. package/src/components/viewers/ImageViewer.jsx +288 -0
  665. package/src/components/viewers/ImageViewer.module.css +203 -0
  666. package/src/components/viewers/JsonViewer.jsx +40 -0
  667. package/src/components/viewers/JsonViewer.module.css +9 -0
  668. package/src/components/viewers/LogTable.jsx +131 -0
  669. package/src/components/viewers/MarkdownBlock.jsx +112 -0
  670. package/src/components/viewers/MarkdownBlock.module.css +157 -0
  671. package/src/components/viewers/ToolResultView.jsx +389 -0
  672. package/src/components/viewers/ToolResultView.module.css +108 -0
  673. package/src/components/viewers/WebResultsView.jsx +74 -0
  674. package/src/components/viewers/WebResultsView.module.css +85 -0
  675. package/src/components/viewers/WorkflowLiveHud.jsx +153 -0
  676. package/src/components/viewers/WorkflowLiveHud.module.css +256 -0
  677. package/src/components/viewers/WorkflowPanel.jsx +243 -0
  678. package/src/components/viewers/WorkflowPanel.module.css +265 -0
  679. package/src/components/viewers/WorkflowTimeline.jsx +83 -0
  680. package/src/components/viewers/WorkflowTimeline.module.css +116 -0
  681. package/src/contexts/SettingsContext.jsx +140 -0
  682. package/src/env.js +54 -0
  683. package/src/global.css +607 -0
  684. package/src/hooks/useMarkdownExport.js +146 -0
  685. package/src/hooks/useMermaidRender.js +193 -0
  686. package/src/hooks/useProjectAlias.js +29 -0
  687. package/src/hooks/useSessionStoragePersistedSet.js +41 -0
  688. package/src/i18n/mdxTranslations.js +472 -0
  689. package/src/i18n.js +12409 -0
  690. package/src/img/ccv-logo.png +0 -0
  691. package/src/img/codex/entrance.svg +7 -0
  692. package/src/img/codex/exit.svg +7 -0
  693. package/src/img/codex/orbiting.svg +7 -0
  694. package/src/img/codex/shimmer.svg +7 -0
  695. package/src/img/codex/thinking.svg +7 -0
  696. package/src/img/codex/tickle.svg +7 -0
  697. package/src/img/codex/waiting.svg +7 -0
  698. package/src/img/codex/writing.svg +7 -0
  699. package/src/img/default-avatar.svg +1 -0
  700. package/src/img/default-model-avatar.svg +1 -0
  701. package/src/img/loading-pet.gif +0 -0
  702. package/src/img/model-codex.svg +2 -0
  703. package/src/img/model-deepseek.svg +2 -0
  704. package/src/img/model-gemini.svg +2 -0
  705. package/src/img/model-glm.svg +2 -0
  706. package/src/img/model-kimi.svg +2 -0
  707. package/src/img/model-minimax.svg +2 -0
  708. package/src/img/model-openai.svg +2 -0
  709. package/src/img/model-qwen.svg +2 -0
  710. package/src/img/teammates/DESIGN.md +165 -0
  711. package/src/img/teammates/analyst.svg +32 -0
  712. package/src/img/teammates/auditor.svg +28 -0
  713. package/src/img/teammates/builder.svg +33 -0
  714. package/src/img/teammates/default.svg +25 -0
  715. package/src/img/teammates/designer.svg +25 -0
  716. package/src/img/teammates/executor.svg +31 -0
  717. package/src/img/teammates/expert.svg +30 -0
  718. package/src/img/teammates/explorer.svg +30 -0
  719. package/src/img/teammates/implementer.svg +34 -0
  720. package/src/img/teammates/investigator.svg +29 -0
  721. package/src/img/teammates/marvel/analyst.svg +26 -0
  722. package/src/img/teammates/marvel/auditor.svg +28 -0
  723. package/src/img/teammates/marvel/builder.svg +15 -0
  724. package/src/img/teammates/marvel/default.svg +25 -0
  725. package/src/img/teammates/marvel/designer.svg +21 -0
  726. package/src/img/teammates/marvel/executor.svg +25 -0
  727. package/src/img/teammates/marvel/expert.svg +31 -0
  728. package/src/img/teammates/marvel/explorer.svg +22 -0
  729. package/src/img/teammates/marvel/implementer.svg +30 -0
  730. package/src/img/teammates/marvel/investigator.svg +21 -0
  731. package/src/img/teammates/marvel/researcher.svg +30 -0
  732. package/src/img/teammates/marvel/reviewer.svg +21 -0
  733. package/src/img/teammates/marvel/scanner.svg +23 -0
  734. package/src/img/teammates/marvel/security.svg +30 -0
  735. package/src/img/teammates/marvel/tracer.svg +19 -0
  736. package/src/img/teammates/marvel/translator.svg +24 -0
  737. package/src/img/teammates/marvel/worker.svg +16 -0
  738. package/src/img/teammates/researcher.svg +35 -0
  739. package/src/img/teammates/reviewer.svg +23 -0
  740. package/src/img/teammates/scanner.svg +31 -0
  741. package/src/img/teammates/security.svg +31 -0
  742. package/src/img/teammates/tracer.svg +30 -0
  743. package/src/img/teammates/translator.svg +32 -0
  744. package/src/img/teammates/worker.svg +29 -0
  745. package/src/main.jsx +30 -0
  746. package/src/tokenInterceptor.js +60 -0
  747. package/src/utils/apiUrl.js +26 -0
  748. package/src/utils/approvalReviewerOptions.js +27 -0
  749. package/src/utils/askFallback.js +21 -0
  750. package/src/utils/askOptionDesc.js +55 -0
  751. package/src/utils/askPortalMatcher.js +54 -0
  752. package/src/utils/autoApproveOptions.js +23 -0
  753. package/src/utils/avatarAnimationPostPass.js +46 -0
  754. package/src/utils/builtinPresets.js +18 -0
  755. package/src/utils/clearCheckpoint.js +154 -0
  756. package/src/utils/commandValidator.js +45 -0
  757. package/src/utils/contentFilter.js +675 -0
  758. package/src/utils/contextRaw.js +17 -0
  759. package/src/utils/contextSidebarNavigation.js +16 -0
  760. package/src/utils/conversationEntryNormalize.js +497 -0
  761. package/src/utils/displayScaleHelper.js +47 -0
  762. package/src/utils/entry-slim.js +594 -0
  763. package/src/utils/entryCache.js +179 -0
  764. package/src/utils/errorReport.js +40 -0
  765. package/src/utils/fileExpandedPathsStorage.js +70 -0
  766. package/src/utils/fileIcons.jsx +36 -0
  767. package/src/utils/fileOpen.js +37 -0
  768. package/src/utils/formatters.js +48 -0
  769. package/src/utils/gitApi.js +50 -0
  770. package/src/utils/gitTreeBuilder.js +19 -0
  771. package/src/utils/helpers.js +462 -0
  772. package/src/utils/identityHeal.js +83 -0
  773. package/src/utils/imOrigin.js +24 -0
  774. package/src/utils/imTr.js +7 -0
  775. package/src/utils/imageCompress.js +83 -0
  776. package/src/utils/imageDownscale.js +28 -0
  777. package/src/utils/imageResize.js +112 -0
  778. package/src/utils/ingestPipeline.js +47 -0
  779. package/src/utils/lazyWithReload.js +53 -0
  780. package/src/utils/markdown.js +30 -0
  781. package/src/utils/markdownIncremental.js +39 -0
  782. package/src/utils/markdownProfiler.js +113 -0
  783. package/src/utils/mdExtensionDetect.js +64 -0
  784. package/src/utils/memoryLinkParser.js +44 -0
  785. package/src/utils/modalMask.js +15 -0
  786. package/src/utils/monotime.js +6 -0
  787. package/src/utils/pinnedMenu.js +55 -0
  788. package/src/utils/presetShortcuts.js +14 -0
  789. package/src/utils/projectAlias.js +135 -0
  790. package/src/utils/promptClassifier.js +111 -0
  791. package/src/utils/promptDetect.js +196 -0
  792. package/src/utils/promptNav.js +60 -0
  793. package/src/utils/ptyChunkBuilder.js +251 -0
  794. package/src/utils/quickMenuHoverIntent.js +35 -0
  795. package/src/utils/rateLimitParser.js +249 -0
  796. package/src/utils/readResultPool.js +106 -0
  797. package/src/utils/refreshCachedItemProp.js +32 -0
  798. package/src/utils/requestTools.js +19 -0
  799. package/src/utils/requestType.js +284 -0
  800. package/src/utils/resizeCalc.js +21 -0
  801. package/src/utils/resolveLocalized.js +17 -0
  802. package/src/utils/seqResourceLoaders.js +79 -0
  803. package/src/utils/sessionManager.js +694 -0
  804. package/src/utils/sessionMerge.js +290 -0
  805. package/src/utils/skillModalController.js +111 -0
  806. package/src/utils/skillsParser.js +116 -0
  807. package/src/utils/slashCommandLabels.js +80 -0
  808. package/src/utils/splitDragCalc.js +73 -0
  809. package/src/utils/stickyBottomController.js +643 -0
  810. package/src/utils/svgSanitize.js +48 -0
  811. package/src/utils/systemTags.js +47 -0
  812. package/src/utils/tCodex.js +20 -0
  813. package/src/utils/teamModalBuilder.js +347 -0
  814. package/src/utils/teamSessionParser.js +186 -0
  815. package/src/utils/teammateAvatars.js +194 -0
  816. package/src/utils/teammateDetector.js +106 -0
  817. package/src/utils/termDiag.js +114 -0
  818. package/src/utils/terminalClipboard.js +117 -0
  819. package/src/utils/terminalWriteQueue.js +398 -0
  820. package/src/utils/thinkingMerge.js +49 -0
  821. package/src/utils/tokenUsage.js +1 -0
  822. package/src/utils/toolCatalog.js +31 -0
  823. package/src/utils/toolNameAliases.js +13 -0
  824. package/src/utils/toolResultBuilder.js +312 -0
  825. package/src/utils/toolResultClassifier.js +16 -0
  826. package/src/utils/toolResultCore.js +161 -0
  827. package/src/utils/toolsDiff.js +44 -0
  828. package/src/utils/toolsXmlFormatter.js +3 -0
  829. package/src/utils/ultraplanController.js +109 -0
  830. package/src/utils/ultraplanExperts.js +86 -0
  831. package/src/utils/ultraplanTemplates.js +152 -0
  832. package/src/utils/userImageRefs.js +49 -0
  833. package/src/utils/voicePackPlayer.js +233 -0
  834. package/src/utils/webResultGrouping.js +111 -0
  835. package/src/utils/workflowFormat.js +52 -0
  836. package/src/utils/workflowRuns.js +118 -0
  837. package/src/utils/workflowStore.js +94 -0
  838. package/vite.config.js +106 -0
  839. package/concepts/ar/CacheRebuild.md +0 -36
  840. package/concepts/ar/KVCacheContent.md +0 -49
  841. package/concepts/ar/Tool-Agent.md +0 -125
  842. package/concepts/ar/Tool-AskUserQuestion.md +0 -75
  843. package/concepts/ar/Tool-Bash.md +0 -167
  844. package/concepts/ar/Tool-Edit.md +0 -46
  845. package/concepts/ar/Tool-EnterPlanMode.md +0 -128
  846. package/concepts/ar/Tool-EnterWorktree.md +0 -56
  847. package/concepts/ar/Tool-ExitPlanMode.md +0 -62
  848. package/concepts/ar/Tool-Glob.md +0 -39
  849. package/concepts/ar/Tool-Grep.md +0 -57
  850. package/concepts/ar/Tool-NotebookEdit.md +0 -33
  851. package/concepts/ar/Tool-Read.md +0 -56
  852. package/concepts/ar/Tool-SendMessage.md +0 -41
  853. package/concepts/ar/Tool-Skill.md +0 -56
  854. package/concepts/ar/Tool-Task.md +0 -51
  855. package/concepts/ar/Tool-TaskCreate.md +0 -78
  856. package/concepts/ar/Tool-TaskGet.md +0 -56
  857. package/concepts/ar/Tool-TaskList.md +0 -56
  858. package/concepts/ar/Tool-TaskOutput.md +0 -40
  859. package/concepts/ar/Tool-TaskStop.md +0 -32
  860. package/concepts/ar/Tool-TaskUpdate.md +0 -123
  861. package/concepts/ar/Tool-TeamCreate.md +0 -38
  862. package/concepts/ar/Tool-TeamDelete.md +0 -30
  863. package/concepts/ar/Tool-WebFetch.md +0 -55
  864. package/concepts/ar/Tool-WebSearch.md +0 -58
  865. package/concepts/ar/Tool-Write.md +0 -39
  866. package/concepts/ar/Tool-executeCode.md +0 -41
  867. package/concepts/ar/Tool-getDiagnostics.md +0 -32
  868. package/concepts/ar/Tools.md +0 -67
  869. package/concepts/da/CacheRebuild.md +0 -36
  870. package/concepts/da/KVCacheContent.md +0 -49
  871. package/concepts/da/Tool-Agent.md +0 -125
  872. package/concepts/da/Tool-AskUserQuestion.md +0 -75
  873. package/concepts/da/Tool-Bash.md +0 -167
  874. package/concepts/da/Tool-Edit.md +0 -46
  875. package/concepts/da/Tool-EnterPlanMode.md +0 -128
  876. package/concepts/da/Tool-EnterWorktree.md +0 -56
  877. package/concepts/da/Tool-ExitPlanMode.md +0 -62
  878. package/concepts/da/Tool-Glob.md +0 -39
  879. package/concepts/da/Tool-Grep.md +0 -57
  880. package/concepts/da/Tool-NotebookEdit.md +0 -33
  881. package/concepts/da/Tool-Read.md +0 -56
  882. package/concepts/da/Tool-SendMessage.md +0 -41
  883. package/concepts/da/Tool-Skill.md +0 -56
  884. package/concepts/da/Tool-Task.md +0 -51
  885. package/concepts/da/Tool-TaskCreate.md +0 -78
  886. package/concepts/da/Tool-TaskGet.md +0 -56
  887. package/concepts/da/Tool-TaskList.md +0 -56
  888. package/concepts/da/Tool-TaskOutput.md +0 -40
  889. package/concepts/da/Tool-TaskStop.md +0 -32
  890. package/concepts/da/Tool-TaskUpdate.md +0 -123
  891. package/concepts/da/Tool-TeamCreate.md +0 -38
  892. package/concepts/da/Tool-TeamDelete.md +0 -30
  893. package/concepts/da/Tool-WebFetch.md +0 -55
  894. package/concepts/da/Tool-WebSearch.md +0 -58
  895. package/concepts/da/Tool-Write.md +0 -39
  896. package/concepts/da/Tool-executeCode.md +0 -41
  897. package/concepts/da/Tool-getDiagnostics.md +0 -32
  898. package/concepts/da/Tools.md +0 -67
  899. package/concepts/de/CacheRebuild.md +0 -36
  900. package/concepts/de/KVCacheContent.md +0 -49
  901. package/concepts/de/Tool-Agent.md +0 -125
  902. package/concepts/de/Tool-AskUserQuestion.md +0 -75
  903. package/concepts/de/Tool-Bash.md +0 -167
  904. package/concepts/de/Tool-Edit.md +0 -46
  905. package/concepts/de/Tool-EnterPlanMode.md +0 -128
  906. package/concepts/de/Tool-EnterWorktree.md +0 -56
  907. package/concepts/de/Tool-ExitPlanMode.md +0 -62
  908. package/concepts/de/Tool-Glob.md +0 -39
  909. package/concepts/de/Tool-Grep.md +0 -57
  910. package/concepts/de/Tool-NotebookEdit.md +0 -33
  911. package/concepts/de/Tool-Read.md +0 -56
  912. package/concepts/de/Tool-SendMessage.md +0 -41
  913. package/concepts/de/Tool-Skill.md +0 -56
  914. package/concepts/de/Tool-Task.md +0 -51
  915. package/concepts/de/Tool-TaskCreate.md +0 -78
  916. package/concepts/de/Tool-TaskGet.md +0 -56
  917. package/concepts/de/Tool-TaskList.md +0 -56
  918. package/concepts/de/Tool-TaskOutput.md +0 -40
  919. package/concepts/de/Tool-TaskStop.md +0 -32
  920. package/concepts/de/Tool-TaskUpdate.md +0 -123
  921. package/concepts/de/Tool-TeamCreate.md +0 -38
  922. package/concepts/de/Tool-TeamDelete.md +0 -30
  923. package/concepts/de/Tool-WebFetch.md +0 -55
  924. package/concepts/de/Tool-WebSearch.md +0 -58
  925. package/concepts/de/Tool-Write.md +0 -39
  926. package/concepts/de/Tool-executeCode.md +0 -41
  927. package/concepts/de/Tool-getDiagnostics.md +0 -32
  928. package/concepts/de/Tools.md +0 -67
  929. package/concepts/en/CacheRebuild.md +0 -36
  930. package/concepts/en/KVCacheContent.md +0 -49
  931. package/concepts/en/Tool-Agent.md +0 -125
  932. package/concepts/en/Tool-AskUserQuestion.md +0 -75
  933. package/concepts/en/Tool-Bash.md +0 -167
  934. package/concepts/en/Tool-Edit.md +0 -46
  935. package/concepts/en/Tool-EnterPlanMode.md +0 -128
  936. package/concepts/en/Tool-EnterWorktree.md +0 -56
  937. package/concepts/en/Tool-ExitPlanMode.md +0 -62
  938. package/concepts/en/Tool-Glob.md +0 -39
  939. package/concepts/en/Tool-Grep.md +0 -57
  940. package/concepts/en/Tool-NotebookEdit.md +0 -33
  941. package/concepts/en/Tool-Read.md +0 -56
  942. package/concepts/en/Tool-SendMessage.md +0 -41
  943. package/concepts/en/Tool-Skill.md +0 -56
  944. package/concepts/en/Tool-Task.md +0 -51
  945. package/concepts/en/Tool-TaskCreate.md +0 -78
  946. package/concepts/en/Tool-TaskGet.md +0 -56
  947. package/concepts/en/Tool-TaskList.md +0 -56
  948. package/concepts/en/Tool-TaskOutput.md +0 -40
  949. package/concepts/en/Tool-TaskStop.md +0 -32
  950. package/concepts/en/Tool-TaskUpdate.md +0 -123
  951. package/concepts/en/Tool-TeamCreate.md +0 -38
  952. package/concepts/en/Tool-TeamDelete.md +0 -30
  953. package/concepts/en/Tool-WebFetch.md +0 -55
  954. package/concepts/en/Tool-WebSearch.md +0 -58
  955. package/concepts/en/Tool-Write.md +0 -39
  956. package/concepts/en/Tool-executeCode.md +0 -41
  957. package/concepts/en/Tool-getDiagnostics.md +0 -32
  958. package/concepts/es/CacheRebuild.md +0 -36
  959. package/concepts/es/KVCacheContent.md +0 -49
  960. package/concepts/es/Tool-Agent.md +0 -125
  961. package/concepts/es/Tool-AskUserQuestion.md +0 -75
  962. package/concepts/es/Tool-Bash.md +0 -167
  963. package/concepts/es/Tool-Edit.md +0 -46
  964. package/concepts/es/Tool-EnterPlanMode.md +0 -128
  965. package/concepts/es/Tool-EnterWorktree.md +0 -56
  966. package/concepts/es/Tool-ExitPlanMode.md +0 -62
  967. package/concepts/es/Tool-Glob.md +0 -39
  968. package/concepts/es/Tool-Grep.md +0 -57
  969. package/concepts/es/Tool-NotebookEdit.md +0 -33
  970. package/concepts/es/Tool-Read.md +0 -56
  971. package/concepts/es/Tool-SendMessage.md +0 -41
  972. package/concepts/es/Tool-Skill.md +0 -56
  973. package/concepts/es/Tool-Task.md +0 -51
  974. package/concepts/es/Tool-TaskCreate.md +0 -78
  975. package/concepts/es/Tool-TaskGet.md +0 -56
  976. package/concepts/es/Tool-TaskList.md +0 -56
  977. package/concepts/es/Tool-TaskOutput.md +0 -40
  978. package/concepts/es/Tool-TaskStop.md +0 -32
  979. package/concepts/es/Tool-TaskUpdate.md +0 -123
  980. package/concepts/es/Tool-TeamCreate.md +0 -38
  981. package/concepts/es/Tool-TeamDelete.md +0 -30
  982. package/concepts/es/Tool-WebFetch.md +0 -55
  983. package/concepts/es/Tool-WebSearch.md +0 -58
  984. package/concepts/es/Tool-Write.md +0 -39
  985. package/concepts/es/Tool-executeCode.md +0 -41
  986. package/concepts/es/Tool-getDiagnostics.md +0 -32
  987. package/concepts/es/Tools.md +0 -67
  988. package/concepts/fr/CacheRebuild.md +0 -36
  989. package/concepts/fr/KVCacheContent.md +0 -49
  990. package/concepts/fr/Tool-Agent.md +0 -125
  991. package/concepts/fr/Tool-AskUserQuestion.md +0 -75
  992. package/concepts/fr/Tool-Bash.md +0 -167
  993. package/concepts/fr/Tool-Edit.md +0 -46
  994. package/concepts/fr/Tool-EnterPlanMode.md +0 -128
  995. package/concepts/fr/Tool-EnterWorktree.md +0 -56
  996. package/concepts/fr/Tool-ExitPlanMode.md +0 -62
  997. package/concepts/fr/Tool-Glob.md +0 -39
  998. package/concepts/fr/Tool-Grep.md +0 -57
  999. package/concepts/fr/Tool-NotebookEdit.md +0 -33
  1000. package/concepts/fr/Tool-Read.md +0 -56
  1001. package/concepts/fr/Tool-SendMessage.md +0 -41
  1002. package/concepts/fr/Tool-Skill.md +0 -56
  1003. package/concepts/fr/Tool-Task.md +0 -51
  1004. package/concepts/fr/Tool-TaskCreate.md +0 -78
  1005. package/concepts/fr/Tool-TaskGet.md +0 -56
  1006. package/concepts/fr/Tool-TaskList.md +0 -56
  1007. package/concepts/fr/Tool-TaskOutput.md +0 -40
  1008. package/concepts/fr/Tool-TaskStop.md +0 -32
  1009. package/concepts/fr/Tool-TaskUpdate.md +0 -123
  1010. package/concepts/fr/Tool-TeamCreate.md +0 -38
  1011. package/concepts/fr/Tool-TeamDelete.md +0 -30
  1012. package/concepts/fr/Tool-WebFetch.md +0 -55
  1013. package/concepts/fr/Tool-WebSearch.md +0 -58
  1014. package/concepts/fr/Tool-Write.md +0 -39
  1015. package/concepts/fr/Tool-executeCode.md +0 -41
  1016. package/concepts/fr/Tool-getDiagnostics.md +0 -32
  1017. package/concepts/fr/Tools.md +0 -67
  1018. package/concepts/it/CacheRebuild.md +0 -36
  1019. package/concepts/it/KVCacheContent.md +0 -49
  1020. package/concepts/it/Tool-Agent.md +0 -125
  1021. package/concepts/it/Tool-AskUserQuestion.md +0 -75
  1022. package/concepts/it/Tool-Bash.md +0 -167
  1023. package/concepts/it/Tool-Edit.md +0 -46
  1024. package/concepts/it/Tool-EnterPlanMode.md +0 -128
  1025. package/concepts/it/Tool-EnterWorktree.md +0 -56
  1026. package/concepts/it/Tool-ExitPlanMode.md +0 -62
  1027. package/concepts/it/Tool-Glob.md +0 -39
  1028. package/concepts/it/Tool-Grep.md +0 -57
  1029. package/concepts/it/Tool-NotebookEdit.md +0 -33
  1030. package/concepts/it/Tool-Read.md +0 -56
  1031. package/concepts/it/Tool-SendMessage.md +0 -41
  1032. package/concepts/it/Tool-Skill.md +0 -56
  1033. package/concepts/it/Tool-Task.md +0 -51
  1034. package/concepts/it/Tool-TaskCreate.md +0 -78
  1035. package/concepts/it/Tool-TaskGet.md +0 -56
  1036. package/concepts/it/Tool-TaskList.md +0 -56
  1037. package/concepts/it/Tool-TaskOutput.md +0 -40
  1038. package/concepts/it/Tool-TaskStop.md +0 -32
  1039. package/concepts/it/Tool-TaskUpdate.md +0 -123
  1040. package/concepts/it/Tool-TeamCreate.md +0 -38
  1041. package/concepts/it/Tool-TeamDelete.md +0 -30
  1042. package/concepts/it/Tool-WebFetch.md +0 -55
  1043. package/concepts/it/Tool-WebSearch.md +0 -58
  1044. package/concepts/it/Tool-Write.md +0 -39
  1045. package/concepts/it/Tool-executeCode.md +0 -41
  1046. package/concepts/it/Tool-getDiagnostics.md +0 -32
  1047. package/concepts/it/Tools.md +0 -67
  1048. package/concepts/ja/CacheRebuild.md +0 -36
  1049. package/concepts/ja/KVCacheContent.md +0 -49
  1050. package/concepts/ja/Tool-Agent.md +0 -125
  1051. package/concepts/ja/Tool-AskUserQuestion.md +0 -75
  1052. package/concepts/ja/Tool-Bash.md +0 -167
  1053. package/concepts/ja/Tool-Edit.md +0 -46
  1054. package/concepts/ja/Tool-EnterPlanMode.md +0 -128
  1055. package/concepts/ja/Tool-EnterWorktree.md +0 -56
  1056. package/concepts/ja/Tool-ExitPlanMode.md +0 -62
  1057. package/concepts/ja/Tool-Glob.md +0 -39
  1058. package/concepts/ja/Tool-Grep.md +0 -57
  1059. package/concepts/ja/Tool-NotebookEdit.md +0 -33
  1060. package/concepts/ja/Tool-Read.md +0 -56
  1061. package/concepts/ja/Tool-SendMessage.md +0 -41
  1062. package/concepts/ja/Tool-Skill.md +0 -56
  1063. package/concepts/ja/Tool-Task.md +0 -51
  1064. package/concepts/ja/Tool-TaskCreate.md +0 -78
  1065. package/concepts/ja/Tool-TaskGet.md +0 -56
  1066. package/concepts/ja/Tool-TaskList.md +0 -56
  1067. package/concepts/ja/Tool-TaskOutput.md +0 -40
  1068. package/concepts/ja/Tool-TaskStop.md +0 -32
  1069. package/concepts/ja/Tool-TaskUpdate.md +0 -123
  1070. package/concepts/ja/Tool-TeamCreate.md +0 -38
  1071. package/concepts/ja/Tool-TeamDelete.md +0 -30
  1072. package/concepts/ja/Tool-WebFetch.md +0 -55
  1073. package/concepts/ja/Tool-WebSearch.md +0 -58
  1074. package/concepts/ja/Tool-Write.md +0 -39
  1075. package/concepts/ja/Tool-executeCode.md +0 -41
  1076. package/concepts/ja/Tool-getDiagnostics.md +0 -32
  1077. package/concepts/ja/Tools.md +0 -67
  1078. package/concepts/ko/CacheRebuild.md +0 -36
  1079. package/concepts/ko/KVCacheContent.md +0 -49
  1080. package/concepts/ko/Tool-Agent.md +0 -125
  1081. package/concepts/ko/Tool-AskUserQuestion.md +0 -75
  1082. package/concepts/ko/Tool-Bash.md +0 -167
  1083. package/concepts/ko/Tool-Edit.md +0 -46
  1084. package/concepts/ko/Tool-EnterPlanMode.md +0 -128
  1085. package/concepts/ko/Tool-EnterWorktree.md +0 -56
  1086. package/concepts/ko/Tool-ExitPlanMode.md +0 -62
  1087. package/concepts/ko/Tool-Glob.md +0 -39
  1088. package/concepts/ko/Tool-Grep.md +0 -57
  1089. package/concepts/ko/Tool-NotebookEdit.md +0 -33
  1090. package/concepts/ko/Tool-Read.md +0 -56
  1091. package/concepts/ko/Tool-SendMessage.md +0 -41
  1092. package/concepts/ko/Tool-Skill.md +0 -56
  1093. package/concepts/ko/Tool-Task.md +0 -51
  1094. package/concepts/ko/Tool-TaskCreate.md +0 -78
  1095. package/concepts/ko/Tool-TaskGet.md +0 -56
  1096. package/concepts/ko/Tool-TaskList.md +0 -56
  1097. package/concepts/ko/Tool-TaskOutput.md +0 -40
  1098. package/concepts/ko/Tool-TaskStop.md +0 -32
  1099. package/concepts/ko/Tool-TaskUpdate.md +0 -123
  1100. package/concepts/ko/Tool-TeamCreate.md +0 -38
  1101. package/concepts/ko/Tool-TeamDelete.md +0 -30
  1102. package/concepts/ko/Tool-WebFetch.md +0 -55
  1103. package/concepts/ko/Tool-WebSearch.md +0 -58
  1104. package/concepts/ko/Tool-Write.md +0 -39
  1105. package/concepts/ko/Tool-executeCode.md +0 -41
  1106. package/concepts/ko/Tool-getDiagnostics.md +0 -32
  1107. package/concepts/ko/Tools.md +0 -67
  1108. package/concepts/no/CacheRebuild.md +0 -36
  1109. package/concepts/no/KVCacheContent.md +0 -49
  1110. package/concepts/no/Tool-Agent.md +0 -125
  1111. package/concepts/no/Tool-AskUserQuestion.md +0 -75
  1112. package/concepts/no/Tool-Bash.md +0 -167
  1113. package/concepts/no/Tool-Edit.md +0 -46
  1114. package/concepts/no/Tool-EnterPlanMode.md +0 -128
  1115. package/concepts/no/Tool-EnterWorktree.md +0 -56
  1116. package/concepts/no/Tool-ExitPlanMode.md +0 -62
  1117. package/concepts/no/Tool-Glob.md +0 -39
  1118. package/concepts/no/Tool-Grep.md +0 -57
  1119. package/concepts/no/Tool-NotebookEdit.md +0 -33
  1120. package/concepts/no/Tool-Read.md +0 -56
  1121. package/concepts/no/Tool-SendMessage.md +0 -41
  1122. package/concepts/no/Tool-Skill.md +0 -56
  1123. package/concepts/no/Tool-Task.md +0 -51
  1124. package/concepts/no/Tool-TaskCreate.md +0 -78
  1125. package/concepts/no/Tool-TaskGet.md +0 -56
  1126. package/concepts/no/Tool-TaskList.md +0 -56
  1127. package/concepts/no/Tool-TaskOutput.md +0 -40
  1128. package/concepts/no/Tool-TaskStop.md +0 -32
  1129. package/concepts/no/Tool-TaskUpdate.md +0 -123
  1130. package/concepts/no/Tool-TeamCreate.md +0 -38
  1131. package/concepts/no/Tool-TeamDelete.md +0 -30
  1132. package/concepts/no/Tool-WebFetch.md +0 -55
  1133. package/concepts/no/Tool-WebSearch.md +0 -58
  1134. package/concepts/no/Tool-Write.md +0 -39
  1135. package/concepts/no/Tool-executeCode.md +0 -41
  1136. package/concepts/no/Tool-getDiagnostics.md +0 -32
  1137. package/concepts/no/Tools.md +0 -67
  1138. package/concepts/pl/CacheRebuild.md +0 -36
  1139. package/concepts/pl/KVCacheContent.md +0 -49
  1140. package/concepts/pl/Tool-Agent.md +0 -125
  1141. package/concepts/pl/Tool-AskUserQuestion.md +0 -75
  1142. package/concepts/pl/Tool-Bash.md +0 -167
  1143. package/concepts/pl/Tool-Edit.md +0 -46
  1144. package/concepts/pl/Tool-EnterPlanMode.md +0 -128
  1145. package/concepts/pl/Tool-EnterWorktree.md +0 -56
  1146. package/concepts/pl/Tool-ExitPlanMode.md +0 -62
  1147. package/concepts/pl/Tool-Glob.md +0 -39
  1148. package/concepts/pl/Tool-Grep.md +0 -57
  1149. package/concepts/pl/Tool-NotebookEdit.md +0 -33
  1150. package/concepts/pl/Tool-Read.md +0 -56
  1151. package/concepts/pl/Tool-SendMessage.md +0 -41
  1152. package/concepts/pl/Tool-Skill.md +0 -56
  1153. package/concepts/pl/Tool-Task.md +0 -51
  1154. package/concepts/pl/Tool-TaskCreate.md +0 -78
  1155. package/concepts/pl/Tool-TaskGet.md +0 -56
  1156. package/concepts/pl/Tool-TaskList.md +0 -56
  1157. package/concepts/pl/Tool-TaskOutput.md +0 -40
  1158. package/concepts/pl/Tool-TaskStop.md +0 -32
  1159. package/concepts/pl/Tool-TaskUpdate.md +0 -123
  1160. package/concepts/pl/Tool-TeamCreate.md +0 -38
  1161. package/concepts/pl/Tool-TeamDelete.md +0 -30
  1162. package/concepts/pl/Tool-WebFetch.md +0 -55
  1163. package/concepts/pl/Tool-WebSearch.md +0 -58
  1164. package/concepts/pl/Tool-Write.md +0 -39
  1165. package/concepts/pl/Tool-executeCode.md +0 -41
  1166. package/concepts/pl/Tool-getDiagnostics.md +0 -32
  1167. package/concepts/pl/Tools.md +0 -67
  1168. package/concepts/pt-BR/CacheRebuild.md +0 -36
  1169. package/concepts/pt-BR/KVCacheContent.md +0 -49
  1170. package/concepts/pt-BR/Tool-Agent.md +0 -125
  1171. package/concepts/pt-BR/Tool-AskUserQuestion.md +0 -75
  1172. package/concepts/pt-BR/Tool-Bash.md +0 -167
  1173. package/concepts/pt-BR/Tool-Edit.md +0 -46
  1174. package/concepts/pt-BR/Tool-EnterPlanMode.md +0 -128
  1175. package/concepts/pt-BR/Tool-EnterWorktree.md +0 -56
  1176. package/concepts/pt-BR/Tool-ExitPlanMode.md +0 -62
  1177. package/concepts/pt-BR/Tool-Glob.md +0 -39
  1178. package/concepts/pt-BR/Tool-Grep.md +0 -57
  1179. package/concepts/pt-BR/Tool-NotebookEdit.md +0 -33
  1180. package/concepts/pt-BR/Tool-Read.md +0 -56
  1181. package/concepts/pt-BR/Tool-SendMessage.md +0 -41
  1182. package/concepts/pt-BR/Tool-Skill.md +0 -56
  1183. package/concepts/pt-BR/Tool-Task.md +0 -51
  1184. package/concepts/pt-BR/Tool-TaskCreate.md +0 -78
  1185. package/concepts/pt-BR/Tool-TaskGet.md +0 -56
  1186. package/concepts/pt-BR/Tool-TaskList.md +0 -56
  1187. package/concepts/pt-BR/Tool-TaskOutput.md +0 -40
  1188. package/concepts/pt-BR/Tool-TaskStop.md +0 -32
  1189. package/concepts/pt-BR/Tool-TaskUpdate.md +0 -123
  1190. package/concepts/pt-BR/Tool-TeamCreate.md +0 -38
  1191. package/concepts/pt-BR/Tool-TeamDelete.md +0 -30
  1192. package/concepts/pt-BR/Tool-WebFetch.md +0 -55
  1193. package/concepts/pt-BR/Tool-WebSearch.md +0 -58
  1194. package/concepts/pt-BR/Tool-Write.md +0 -39
  1195. package/concepts/pt-BR/Tool-executeCode.md +0 -41
  1196. package/concepts/pt-BR/Tool-getDiagnostics.md +0 -32
  1197. package/concepts/pt-BR/Tools.md +0 -67
  1198. package/concepts/ru/CacheRebuild.md +0 -36
  1199. package/concepts/ru/KVCacheContent.md +0 -49
  1200. package/concepts/ru/Tool-Agent.md +0 -125
  1201. package/concepts/ru/Tool-AskUserQuestion.md +0 -75
  1202. package/concepts/ru/Tool-Bash.md +0 -167
  1203. package/concepts/ru/Tool-Edit.md +0 -46
  1204. package/concepts/ru/Tool-EnterPlanMode.md +0 -128
  1205. package/concepts/ru/Tool-EnterWorktree.md +0 -56
  1206. package/concepts/ru/Tool-ExitPlanMode.md +0 -62
  1207. package/concepts/ru/Tool-Glob.md +0 -39
  1208. package/concepts/ru/Tool-Grep.md +0 -57
  1209. package/concepts/ru/Tool-NotebookEdit.md +0 -33
  1210. package/concepts/ru/Tool-Read.md +0 -56
  1211. package/concepts/ru/Tool-SendMessage.md +0 -41
  1212. package/concepts/ru/Tool-Skill.md +0 -56
  1213. package/concepts/ru/Tool-Task.md +0 -51
  1214. package/concepts/ru/Tool-TaskCreate.md +0 -78
  1215. package/concepts/ru/Tool-TaskGet.md +0 -56
  1216. package/concepts/ru/Tool-TaskList.md +0 -56
  1217. package/concepts/ru/Tool-TaskOutput.md +0 -40
  1218. package/concepts/ru/Tool-TaskStop.md +0 -32
  1219. package/concepts/ru/Tool-TaskUpdate.md +0 -123
  1220. package/concepts/ru/Tool-TeamCreate.md +0 -38
  1221. package/concepts/ru/Tool-TeamDelete.md +0 -30
  1222. package/concepts/ru/Tool-WebFetch.md +0 -55
  1223. package/concepts/ru/Tool-WebSearch.md +0 -58
  1224. package/concepts/ru/Tool-Write.md +0 -39
  1225. package/concepts/ru/Tool-executeCode.md +0 -41
  1226. package/concepts/ru/Tool-getDiagnostics.md +0 -32
  1227. package/concepts/ru/Tools.md +0 -67
  1228. package/concepts/th/CacheRebuild.md +0 -36
  1229. package/concepts/th/KVCacheContent.md +0 -49
  1230. package/concepts/th/Tool-Agent.md +0 -125
  1231. package/concepts/th/Tool-AskUserQuestion.md +0 -75
  1232. package/concepts/th/Tool-Bash.md +0 -167
  1233. package/concepts/th/Tool-Edit.md +0 -46
  1234. package/concepts/th/Tool-EnterPlanMode.md +0 -128
  1235. package/concepts/th/Tool-EnterWorktree.md +0 -56
  1236. package/concepts/th/Tool-ExitPlanMode.md +0 -62
  1237. package/concepts/th/Tool-Glob.md +0 -39
  1238. package/concepts/th/Tool-Grep.md +0 -57
  1239. package/concepts/th/Tool-NotebookEdit.md +0 -33
  1240. package/concepts/th/Tool-Read.md +0 -56
  1241. package/concepts/th/Tool-SendMessage.md +0 -41
  1242. package/concepts/th/Tool-Skill.md +0 -56
  1243. package/concepts/th/Tool-Task.md +0 -51
  1244. package/concepts/th/Tool-TaskCreate.md +0 -78
  1245. package/concepts/th/Tool-TaskGet.md +0 -56
  1246. package/concepts/th/Tool-TaskList.md +0 -56
  1247. package/concepts/th/Tool-TaskOutput.md +0 -40
  1248. package/concepts/th/Tool-TaskStop.md +0 -32
  1249. package/concepts/th/Tool-TaskUpdate.md +0 -123
  1250. package/concepts/th/Tool-TeamCreate.md +0 -38
  1251. package/concepts/th/Tool-TeamDelete.md +0 -30
  1252. package/concepts/th/Tool-WebFetch.md +0 -55
  1253. package/concepts/th/Tool-WebSearch.md +0 -58
  1254. package/concepts/th/Tool-Write.md +0 -39
  1255. package/concepts/th/Tool-executeCode.md +0 -41
  1256. package/concepts/th/Tool-getDiagnostics.md +0 -32
  1257. package/concepts/th/Tools.md +0 -67
  1258. package/concepts/tr/CacheRebuild.md +0 -36
  1259. package/concepts/tr/KVCacheContent.md +0 -49
  1260. package/concepts/tr/Tool-Agent.md +0 -125
  1261. package/concepts/tr/Tool-AskUserQuestion.md +0 -75
  1262. package/concepts/tr/Tool-Bash.md +0 -167
  1263. package/concepts/tr/Tool-Edit.md +0 -46
  1264. package/concepts/tr/Tool-EnterPlanMode.md +0 -128
  1265. package/concepts/tr/Tool-EnterWorktree.md +0 -56
  1266. package/concepts/tr/Tool-ExitPlanMode.md +0 -62
  1267. package/concepts/tr/Tool-Glob.md +0 -39
  1268. package/concepts/tr/Tool-Grep.md +0 -57
  1269. package/concepts/tr/Tool-NotebookEdit.md +0 -33
  1270. package/concepts/tr/Tool-Read.md +0 -56
  1271. package/concepts/tr/Tool-SendMessage.md +0 -41
  1272. package/concepts/tr/Tool-Skill.md +0 -56
  1273. package/concepts/tr/Tool-Task.md +0 -51
  1274. package/concepts/tr/Tool-TaskCreate.md +0 -78
  1275. package/concepts/tr/Tool-TaskGet.md +0 -56
  1276. package/concepts/tr/Tool-TaskList.md +0 -56
  1277. package/concepts/tr/Tool-TaskOutput.md +0 -40
  1278. package/concepts/tr/Tool-TaskStop.md +0 -32
  1279. package/concepts/tr/Tool-TaskUpdate.md +0 -123
  1280. package/concepts/tr/Tool-TeamCreate.md +0 -38
  1281. package/concepts/tr/Tool-TeamDelete.md +0 -30
  1282. package/concepts/tr/Tool-WebFetch.md +0 -55
  1283. package/concepts/tr/Tool-WebSearch.md +0 -58
  1284. package/concepts/tr/Tool-Write.md +0 -39
  1285. package/concepts/tr/Tool-executeCode.md +0 -41
  1286. package/concepts/tr/Tool-getDiagnostics.md +0 -32
  1287. package/concepts/tr/Tools.md +0 -67
  1288. package/concepts/uk/CacheRebuild.md +0 -36
  1289. package/concepts/uk/KVCacheContent.md +0 -49
  1290. package/concepts/uk/Tool-Agent.md +0 -125
  1291. package/concepts/uk/Tool-AskUserQuestion.md +0 -75
  1292. package/concepts/uk/Tool-Bash.md +0 -167
  1293. package/concepts/uk/Tool-Edit.md +0 -46
  1294. package/concepts/uk/Tool-EnterPlanMode.md +0 -128
  1295. package/concepts/uk/Tool-EnterWorktree.md +0 -56
  1296. package/concepts/uk/Tool-ExitPlanMode.md +0 -62
  1297. package/concepts/uk/Tool-Glob.md +0 -39
  1298. package/concepts/uk/Tool-Grep.md +0 -57
  1299. package/concepts/uk/Tool-NotebookEdit.md +0 -33
  1300. package/concepts/uk/Tool-Read.md +0 -56
  1301. package/concepts/uk/Tool-SendMessage.md +0 -41
  1302. package/concepts/uk/Tool-Skill.md +0 -56
  1303. package/concepts/uk/Tool-Task.md +0 -51
  1304. package/concepts/uk/Tool-TaskCreate.md +0 -78
  1305. package/concepts/uk/Tool-TaskGet.md +0 -56
  1306. package/concepts/uk/Tool-TaskList.md +0 -56
  1307. package/concepts/uk/Tool-TaskOutput.md +0 -40
  1308. package/concepts/uk/Tool-TaskStop.md +0 -32
  1309. package/concepts/uk/Tool-TaskUpdate.md +0 -123
  1310. package/concepts/uk/Tool-TeamCreate.md +0 -38
  1311. package/concepts/uk/Tool-TeamDelete.md +0 -30
  1312. package/concepts/uk/Tool-WebFetch.md +0 -55
  1313. package/concepts/uk/Tool-WebSearch.md +0 -58
  1314. package/concepts/uk/Tool-Write.md +0 -39
  1315. package/concepts/uk/Tool-executeCode.md +0 -41
  1316. package/concepts/uk/Tool-getDiagnostics.md +0 -32
  1317. package/concepts/uk/Tools.md +0 -67
  1318. package/concepts/zh/CacheRebuild.md +0 -36
  1319. package/concepts/zh/KVCacheContent.md +0 -49
  1320. package/concepts/zh/Tool-Agent.md +0 -125
  1321. package/concepts/zh/Tool-AskUserQuestion.md +0 -75
  1322. package/concepts/zh/Tool-Bash.md +0 -167
  1323. package/concepts/zh/Tool-Edit.md +0 -46
  1324. package/concepts/zh/Tool-EnterPlanMode.md +0 -128
  1325. package/concepts/zh/Tool-EnterWorktree.md +0 -56
  1326. package/concepts/zh/Tool-ExitPlanMode.md +0 -62
  1327. package/concepts/zh/Tool-Glob.md +0 -39
  1328. package/concepts/zh/Tool-Grep.md +0 -57
  1329. package/concepts/zh/Tool-NotebookEdit.md +0 -33
  1330. package/concepts/zh/Tool-Read.md +0 -56
  1331. package/concepts/zh/Tool-SendMessage.md +0 -41
  1332. package/concepts/zh/Tool-Skill.md +0 -56
  1333. package/concepts/zh/Tool-Task.md +0 -51
  1334. package/concepts/zh/Tool-TaskCreate.md +0 -78
  1335. package/concepts/zh/Tool-TaskGet.md +0 -56
  1336. package/concepts/zh/Tool-TaskList.md +0 -56
  1337. package/concepts/zh/Tool-TaskOutput.md +0 -40
  1338. package/concepts/zh/Tool-TaskStop.md +0 -32
  1339. package/concepts/zh/Tool-TaskUpdate.md +0 -123
  1340. package/concepts/zh/Tool-TeamCreate.md +0 -38
  1341. package/concepts/zh/Tool-TeamDelete.md +0 -30
  1342. package/concepts/zh/Tool-WebFetch.md +0 -55
  1343. package/concepts/zh/Tool-WebSearch.md +0 -58
  1344. package/concepts/zh/Tool-Write.md +0 -39
  1345. package/concepts/zh/Tool-executeCode.md +0 -41
  1346. package/concepts/zh/Tool-getDiagnostics.md +0 -32
  1347. package/concepts/zh-TW/CacheRebuild.md +0 -36
  1348. package/concepts/zh-TW/KVCacheContent.md +0 -49
  1349. package/concepts/zh-TW/Tool-Agent.md +0 -125
  1350. package/concepts/zh-TW/Tool-AskUserQuestion.md +0 -75
  1351. package/concepts/zh-TW/Tool-Bash.md +0 -167
  1352. package/concepts/zh-TW/Tool-Edit.md +0 -46
  1353. package/concepts/zh-TW/Tool-EnterPlanMode.md +0 -128
  1354. package/concepts/zh-TW/Tool-EnterWorktree.md +0 -56
  1355. package/concepts/zh-TW/Tool-ExitPlanMode.md +0 -62
  1356. package/concepts/zh-TW/Tool-Glob.md +0 -39
  1357. package/concepts/zh-TW/Tool-Grep.md +0 -57
  1358. package/concepts/zh-TW/Tool-NotebookEdit.md +0 -33
  1359. package/concepts/zh-TW/Tool-Read.md +0 -56
  1360. package/concepts/zh-TW/Tool-SendMessage.md +0 -41
  1361. package/concepts/zh-TW/Tool-Skill.md +0 -56
  1362. package/concepts/zh-TW/Tool-Task.md +0 -51
  1363. package/concepts/zh-TW/Tool-TaskCreate.md +0 -78
  1364. package/concepts/zh-TW/Tool-TaskGet.md +0 -56
  1365. package/concepts/zh-TW/Tool-TaskList.md +0 -56
  1366. package/concepts/zh-TW/Tool-TaskOutput.md +0 -40
  1367. package/concepts/zh-TW/Tool-TaskStop.md +0 -32
  1368. package/concepts/zh-TW/Tool-TaskUpdate.md +0 -123
  1369. package/concepts/zh-TW/Tool-TeamCreate.md +0 -38
  1370. package/concepts/zh-TW/Tool-TeamDelete.md +0 -30
  1371. package/concepts/zh-TW/Tool-WebFetch.md +0 -55
  1372. package/concepts/zh-TW/Tool-WebSearch.md +0 -58
  1373. package/concepts/zh-TW/Tool-Write.md +0 -39
  1374. package/concepts/zh-TW/Tool-executeCode.md +0 -41
  1375. package/concepts/zh-TW/Tool-getDiagnostics.md +0 -32
  1376. package/concepts/zh-TW/Tools.md +0 -67
  1377. package/dist/assets/App-BN2YmKSu.js +0 -41
  1378. package/dist/assets/App-fG2r3jFq.css +0 -1
  1379. package/dist/assets/AppHeader-BqUGBbBx.css +0 -41
  1380. package/dist/assets/AppHeader.module-CvH9GQQ2.js +0 -1250
  1381. package/dist/assets/Mobile-BnDkLcBv.css +0 -1
  1382. package/dist/assets/Mobile-CbC8YD3O.js +0 -10
  1383. package/dist/assets/_baseUniq-B2ddYY2A.js +0 -1
  1384. package/dist/assets/arc-DFPOHgcd.js +0 -1
  1385. package/dist/assets/architectureDiagram-Q4EWVU46-1tuXixQv.js +0 -36
  1386. package/dist/assets/blockDiagram-DXYQGD6D-BfVKQPAV.js +0 -132
  1387. package/dist/assets/c4Diagram-AHTNJAMY-Bua8O4-1.js +0 -10
  1388. package/dist/assets/channel-Cf9uPxYW.js +0 -1
  1389. package/dist/assets/chunk-4BX2VUAB-YOIkSNn_.js +0 -1
  1390. package/dist/assets/chunk-4TB4RGXK-CjZt-To5.js +0 -206
  1391. package/dist/assets/chunk-55IACEB6-BAEfMF5S.js +0 -1
  1392. package/dist/assets/chunk-EDXVE4YY-BUYDmLXU.js +0 -1
  1393. package/dist/assets/chunk-FMBD7UC4-Cw_LDap-.js +0 -15
  1394. package/dist/assets/chunk-OYMX7WX6-PlfZFFxd.js +0 -231
  1395. package/dist/assets/chunk-QZHKN3VN-C2ReFZl_.js +0 -1
  1396. package/dist/assets/chunk-YZCP3GAM-B7IVGkPB.js +0 -1
  1397. package/dist/assets/classDiagram-6PBFFD2Q-DdwVeNLZ.js +0 -1
  1398. package/dist/assets/classDiagram-v2-HSJHXN6E-DdwVeNLZ.js +0 -1
  1399. package/dist/assets/clone-C8Lz0121.js +0 -1
  1400. package/dist/assets/cose-bilkent-S5V4N54A-M6rBKf0y.js +0 -1
  1401. package/dist/assets/cytoscape.esm-DxGcaOPV.js +0 -331
  1402. package/dist/assets/dagre-KV5264BT-UPacTWnL.js +0 -4
  1403. package/dist/assets/defaultLocale-DX6XiGOO.js +0 -1
  1404. package/dist/assets/diagram-5BDNPKRD-Cjjtnh0e.js +0 -10
  1405. package/dist/assets/diagram-G4DWMVQ6-CjXILMP0.js +0 -24
  1406. package/dist/assets/diagram-MMDJMWI5-C_-XZ9gc.js +0 -43
  1407. package/dist/assets/diagram-TYMM5635-Dxe2GxUR.js +0 -24
  1408. package/dist/assets/erDiagram-SMLLAGMA-1w-wtgMd.js +0 -85
  1409. package/dist/assets/flowDiagram-DWJPFMVM-B9naMGCj.js +0 -162
  1410. package/dist/assets/ganttDiagram-T4ZO3ILL-BPZBdhPv.js +0 -292
  1411. package/dist/assets/gitGraphDiagram-UUTBAWPF-_P9PdiGG.js +0 -106
  1412. package/dist/assets/graph-CjOY8lRz.js +0 -1
  1413. package/dist/assets/html2canvas.esm-QH1iLAAe.js +0 -22
  1414. package/dist/assets/index-BcCW9op4.js +0 -41
  1415. package/dist/assets/index-DCtZ2KSX.css +0 -1
  1416. package/dist/assets/infoDiagram-42DDH7IO-Ch8SOTtq.js +0 -2
  1417. package/dist/assets/init-Gi6I4Gst.js +0 -1
  1418. package/dist/assets/ishikawaDiagram-UXIWVN3A-XLscQrJT.js +0 -70
  1419. package/dist/assets/journeyDiagram-VCZTEJTY-C3FQ_QPk.js +0 -139
  1420. package/dist/assets/kanban-definition-6JOO6SKY-DIQDTOi3.js +0 -89
  1421. package/dist/assets/katex-DkKDou_j.js +0 -257
  1422. package/dist/assets/layout-DO9W0X_b.js +0 -1
  1423. package/dist/assets/linear-ClCJqwn1.js +0 -1
  1424. package/dist/assets/mermaid.core-BW02B1TS.js +0 -308
  1425. package/dist/assets/min-BuzClhio.js +0 -1
  1426. package/dist/assets/mindmap-definition-QFDTVHPH-DuCaTeZu.js +0 -96
  1427. package/dist/assets/ordinal-Cboi1Yqb.js +0 -1
  1428. package/dist/assets/pieDiagram-DEJITSTG-BZoZ6CI1.js +0 -30
  1429. package/dist/assets/quadrantDiagram-34T5L4WZ-DFNwvtmc.js +0 -7
  1430. package/dist/assets/requirementDiagram-MS252O5E-DPG-7raV.js +0 -84
  1431. package/dist/assets/sankeyDiagram-XADWPNL6-Bp92e1ie.js +0 -10
  1432. package/dist/assets/sequenceDiagram-FGHM5R23-C6ADwqJY.js +0 -157
  1433. package/dist/assets/stateDiagram-FHFEXIEX-BfrwZGmF.js +0 -1
  1434. package/dist/assets/stateDiagram-v2-QKLJ7IA2-4gBW7EPI.js +0 -1
  1435. package/dist/assets/timeline-definition-GMOUNBTQ-Bb-TxYx2.js +0 -120
  1436. package/dist/assets/vennDiagram-DHZGUBPP-DTRiNXJu.js +0 -34
  1437. package/dist/assets/wardley-RL74JXVD-C8j_kjXS.js +0 -162
  1438. package/dist/assets/wardleyDiagram-NUSXRM2D-CvICMc3N.js +0 -20
  1439. package/dist/assets/xychartDiagram-5P7HB3ND-DI0bBGwq.js +0 -7
  1440. package/lib/kv-cache-analyzer.js +0 -164
@@ -0,0 +1,937 @@
1
+ import React, { useState, useCallback, useRef, useEffect, useMemo } from 'react';
2
+ import { Dropdown, Modal, Input, message } from 'antd';
3
+ import { t } from '../../i18n';
4
+ import { apiUrl } from '../../utils/apiUrl';
5
+ import { getFileIcon } from '../../utils/fileIcons';
6
+ import OpenFolderIcon from '../common/OpenFolderIcon';
7
+ import RefreshIcon from '../common/RefreshIcon';
8
+ import styles from './FileExplorer.module.css';
9
+
10
+ function isExternalFileDrag(e) {
11
+ return e.dataTransfer.types.includes('Files') && !e.dataTransfer.types.includes('text/x-internal-move');
12
+ }
13
+
14
+ // Drop 同步阶段抽取顶层 FileSystemEntry;必须在 drop handler 同步周期内调用,否则 items 失效
15
+ function getTopLevelEntries(items) {
16
+ if (!items || !items.length) return null;
17
+ const first = items[0];
18
+ if (typeof first.webkitGetAsEntry !== 'function') return null;
19
+ const entries = [];
20
+ for (let i = 0; i < items.length; i++) {
21
+ if (items[i].kind !== 'file') continue;
22
+ const entry = items[i].webkitGetAsEntry();
23
+ if (entry) entries.push(entry);
24
+ }
25
+ return entries.length ? entries : null;
26
+ }
27
+
28
+ // 批量读 DirectoryReader 直到返回空数组(Chrome 每次最多 100 项,必须循环)
29
+ function readAllEntries(reader) {
30
+ return new Promise((resolve, reject) => {
31
+ const acc = [];
32
+ const readBatch = () => {
33
+ reader.readEntries(
34
+ (batch) => {
35
+ if (batch.length === 0) resolve(acc);
36
+ else { acc.push(...batch); readBatch(); }
37
+ },
38
+ reject
39
+ );
40
+ };
41
+ readBatch();
42
+ });
43
+ }
44
+
45
+ const SKIP_ENTRY_NAMES = new Set(['.DS_Store', 'Thumbs.db', '.localized']);
46
+
47
+ // 递归展开 entry 树为 {file, relPath} 列表;depth cap 32 防 symlink 循环
48
+ async function expandEntries(entries, depth) {
49
+ if (depth > 32) return [];
50
+ const results = [];
51
+ for (const entry of entries) {
52
+ if (!entry || SKIP_ENTRY_NAMES.has(entry.name)) continue;
53
+ if (entry.isFile) {
54
+ try {
55
+ const file = await new Promise((resolve, reject) => entry.file(resolve, reject));
56
+ const rel = entry.fullPath ? (entry.fullPath.startsWith('/') ? entry.fullPath.slice(1) : entry.fullPath) : file.name;
57
+ results.push({ file, relPath: rel });
58
+ } catch (e) {
59
+ console.warn('[FileExplorer] skip unreadable file', entry.name, e && e.message);
60
+ }
61
+ } else if (entry.isDirectory) {
62
+ try {
63
+ const reader = entry.createReader();
64
+ const children = await readAllEntries(reader);
65
+ const sub = await expandEntries(children, depth + 1);
66
+ results.push(...sub);
67
+ } catch (e) {
68
+ console.warn('[FileExplorer] skip unreadable dir', entry.name, e && e.message);
69
+ }
70
+ }
71
+ }
72
+ return results;
73
+ }
74
+
75
+ function TreeNode({ item, path, depth, onFileClick, expandedPaths, onToggleExpand, currentFile, onFileRenamed, refreshTrigger, onHtmlPreview, onAttachToChat, onInsertPathToChat, onImportFiles }) {
76
+ const [children, setChildren] = useState(null);
77
+ const [loading, setLoading] = useState(false);
78
+ const [error, setError] = useState(null);
79
+ const [editing, setEditing] = useState(false);
80
+ const [editName, setEditName] = useState('');
81
+ const [dragging, setDragging] = useState(false);
82
+ const [dragOver, setDragOver] = useState(false);
83
+ const inputRef = useRef(null);
84
+ const submittingRef = useRef(false);
85
+ const itemRef = useRef(null);
86
+
87
+ const childPath = path ? `${path}/${item.name}` : item.name;
88
+ const expanded = expandedPaths.has(childPath);
89
+ const isGitIgnored = item.gitIgnored || false;
90
+
91
+ const fetchChildren = useCallback(async () => {
92
+ setLoading(true);
93
+ setError(null);
94
+ try {
95
+ const res = await fetch(apiUrl(`/api/files?path=${encodeURIComponent(childPath)}`));
96
+ if (!res.ok) throw new Error('Failed');
97
+ const data = await res.json();
98
+ setChildren(data);
99
+ } catch {
100
+ setError('Error');
101
+ } finally {
102
+ setLoading(false);
103
+ }
104
+ }, [childPath]);
105
+
106
+ // expanded 变为 true 时自动加载子节点(恢复展开状态 & 从对话点击路径时级联展开)
107
+ useEffect(() => {
108
+ if (item.type === 'directory' && expanded && children === null && !loading) {
109
+ fetchChildren();
110
+ }
111
+ }, [expanded]); // eslint-disable-line react-hooks/exhaustive-deps
112
+
113
+ // refreshTrigger 变化时,已展开的目录重新加载子节点
114
+ useEffect(() => {
115
+ if (refreshTrigger > 0 && item.type === 'directory' && expanded && children !== null) {
116
+ fetchChildren();
117
+ }
118
+ }, [refreshTrigger]); // eslint-disable-line react-hooks/exhaustive-deps
119
+
120
+ const toggle = useCallback(async () => {
121
+ if (item.type !== 'directory') {
122
+ const ext = (childPath || '').split('.').pop().toLowerCase();
123
+ // .html/.htm 文件在弹窗 iframe 中预览
124
+ if (ext === 'html' || ext === 'htm') {
125
+ if (onHtmlPreview) onHtmlPreview(childPath);
126
+ return;
127
+ }
128
+ // 点击文件,触发回调(Office 文件由上层 onFileClick 回调统一拦截)
129
+ if (onFileClick) onFileClick(childPath);
130
+ return;
131
+ }
132
+ if (expanded) {
133
+ onToggleExpand(childPath);
134
+ return;
135
+ }
136
+ if (children === null) {
137
+ await fetchChildren();
138
+ }
139
+ onToggleExpand(childPath);
140
+ }, [expanded, children, childPath, item, onFileClick, onToggleExpand, fetchChildren, onHtmlPreview]);
141
+
142
+ const isDir = item.type === 'directory';
143
+ const isSelected = currentFile && currentFile === childPath;
144
+
145
+ // 选中文件时自动滚动到可见区域
146
+ useEffect(() => {
147
+ if (isSelected && itemRef.current) {
148
+ requestAnimationFrame(() => {
149
+ itemRef.current?.scrollIntoView({ block: 'nearest', behavior: 'instant' });
150
+ });
151
+ }
152
+ }, [isSelected]);
153
+
154
+ // 进入编辑模式
155
+ const startEditing = useCallback(() => {
156
+ setEditName(item.name);
157
+ setEditing(true);
158
+ submittingRef.current = false;
159
+ }, [item.name]);
160
+
161
+ // 编辑模式下自动 focus 并选中文件名(不含扩展名)
162
+ useEffect(() => {
163
+ if (editing && inputRef.current) {
164
+ inputRef.current.focus();
165
+ const dotIdx = item.name.lastIndexOf('.');
166
+ if (dotIdx > 0 && item.type !== 'directory') {
167
+ inputRef.current.setSelectionRange(0, dotIdx);
168
+ } else {
169
+ inputRef.current.select();
170
+ }
171
+ }
172
+ }, [editing, item.name, item.type]);
173
+
174
+ // 提交重命名
175
+ const submitRename = useCallback(async () => {
176
+ if (submittingRef.current) return;
177
+ const trimmed = editName.trim();
178
+ if (!trimmed || trimmed === item.name) {
179
+ setEditing(false);
180
+ return;
181
+ }
182
+ submittingRef.current = true;
183
+ try {
184
+ const res = await fetch(apiUrl('/api/rename-file'), {
185
+ method: 'POST',
186
+ headers: { 'Content-Type': 'application/json' },
187
+ body: JSON.stringify({ oldPath: childPath, newName: trimmed }),
188
+ });
189
+ const data = await res.json();
190
+ if (!res.ok) {
191
+ alert(t('ui.renameFailed', { error: data.error || res.statusText }));
192
+ setEditing(false);
193
+ return;
194
+ }
195
+ setEditing(false);
196
+ if (onFileRenamed) onFileRenamed(childPath, data.newPath);
197
+ } catch (err) {
198
+ alert(t('ui.renameFailed', { error: err.message }));
199
+ setEditing(false);
200
+ }
201
+ }, [editName, item.name, childPath, onFileRenamed]);
202
+
203
+ // 取消编辑
204
+ const cancelEditing = useCallback(() => {
205
+ setEditing(false);
206
+ }, []);
207
+
208
+ // 双击进入编辑模式
209
+ const handleDoubleClick = useCallback((e) => {
210
+ e.stopPropagation();
211
+ if (isSelected) {
212
+ startEditing();
213
+ }
214
+ }, [isSelected, startEditing]);
215
+
216
+ // 键盘事件:Enter 进入编辑模式 / F2 进入编辑模式
217
+ const handleKeyDown = useCallback((e) => {
218
+ if (editing) return;
219
+ if ((e.key === 'Enter' || e.key === 'F2') && isSelected) {
220
+ e.preventDefault();
221
+ e.stopPropagation();
222
+ startEditing();
223
+ }
224
+ }, [editing, isSelected, startEditing]);
225
+
226
+ // 输入框键盘事件
227
+ const handleInputKeyDown = useCallback((e) => {
228
+ if (e.key === 'Enter') {
229
+ e.preventDefault();
230
+ submitRename();
231
+ } else if (e.key === 'Escape') {
232
+ e.preventDefault();
233
+ cancelEditing();
234
+ }
235
+ e.stopPropagation();
236
+ }, [submitRename, cancelEditing]);
237
+
238
+ const handleClick = useCallback((e) => {
239
+ if (editing) {
240
+ e.stopPropagation();
241
+ return;
242
+ }
243
+ toggle();
244
+ }, [editing, toggle]);
245
+
246
+ // 拖拽事件处理
247
+ const handleDragStart = useCallback((e) => {
248
+ if (editing) { e.preventDefault(); return; }
249
+ e.dataTransfer.setData('text/plain', childPath);
250
+ e.dataTransfer.setData('text/x-internal-move', '1');
251
+ e.dataTransfer.effectAllowed = 'move';
252
+ setDragging(true);
253
+ }, [childPath, editing]);
254
+
255
+ const handleDragEnd = useCallback(() => {
256
+ setDragging(false);
257
+ }, []);
258
+
259
+ const autoExpandTimer = useRef(null);
260
+ const handleDragOver = useCallback((e) => {
261
+ const isExternal = isExternalFileDrag(e);
262
+ const isInternal = e.dataTransfer.types.includes('text/x-internal-move');
263
+ // 内部移动只接受目录;外部导入接受任意节点(文件节点→导入到父目录)
264
+ if (isInternal && !isDir) return;
265
+ if (!isExternal && !isInternal) return;
266
+ e.preventDefault();
267
+ // 节点接受 drop 后阻止冒泡:否则容器级 onDragOver 会同帧 setExternalDragOver(true)
268
+ // / 覆写 dropEffect,导致视觉闪烁与"拖到空白处=移到根"的语义被错误触发。
269
+ e.stopPropagation();
270
+ e.dataTransfer.dropEffect = isExternal ? 'copy' : 'move';
271
+ setDragOver(true);
272
+ // hover 在折叠目录上 500ms → 自动展开(外部导入和内部移动都支持)
273
+ if (isDir && !expanded && !autoExpandTimer.current) {
274
+ autoExpandTimer.current = setTimeout(() => {
275
+ onToggleExpand(childPath);
276
+ autoExpandTimer.current = null;
277
+ }, 500);
278
+ }
279
+ }, [isDir, expanded, childPath, onToggleExpand]);
280
+
281
+ const handleDragLeave = useCallback((e) => {
282
+ // 只在真正离开此节点时才移除高亮(忽略子元素事件冒泡)
283
+ if (itemRef.current && !itemRef.current.contains(e.relatedTarget)) {
284
+ setDragOver(false);
285
+ if (autoExpandTimer.current) { clearTimeout(autoExpandTimer.current); autoExpandTimer.current = null; }
286
+ }
287
+ }, []);
288
+
289
+ const handleDrop = useCallback(async (e) => {
290
+ e.preventDefault();
291
+ // 任何已 preventDefault 的 drop 都视为"被节点消费"——同时 stopPropagation 防止冒泡
292
+ // 到容器级 handleContainerDrop 再次触发"移到根"。包含所有 internal early-return 路径。
293
+ e.stopPropagation();
294
+ setDragOver(false);
295
+ // External file drop — 目录节点导入到该目录,文件节点导入到其父目录
296
+ if (isExternalFileDrag(e) && (e.dataTransfer.files.length > 0 || (e.dataTransfer.items && e.dataTransfer.items.length > 0))) {
297
+ // 同步阶段一次性抽取 entry(异步后 items 会失效)
298
+ const topEntries = getTopLevelEntries(e.dataTransfer.items);
299
+ const flatFiles = Array.from(e.dataTransfer.files);
300
+ const targetDir = isDir ? childPath : (childPath.includes('/') ? childPath.substring(0, childPath.lastIndexOf('/')) : '');
301
+ if (onImportFiles) onImportFiles({ topEntries, flatFiles }, targetDir);
302
+ return;
303
+ }
304
+ // Internal move
305
+ const fromPath = e.dataTransfer.getData('text/plain');
306
+ if (!fromPath || !isDir) return;
307
+ // 不能拖到自身
308
+ if (fromPath === childPath) return;
309
+ // 不能拖到自身子目录
310
+ if (childPath.startsWith(fromPath + '/')) return;
311
+ // 不能拖到当前所在的同目录(无意义移动)
312
+ const fromDir = fromPath.includes('/') ? fromPath.substring(0, fromPath.lastIndexOf('/')) : '';
313
+ if (fromDir === childPath) return;
314
+ try {
315
+ const res = await fetch(apiUrl('/api/move-file'), {
316
+ method: 'POST',
317
+ headers: { 'Content-Type': 'application/json' },
318
+ body: JSON.stringify({ fromPath, toDir: childPath }),
319
+ });
320
+ const data = await res.json();
321
+ if (!res.ok) {
322
+ message.error(data.error || 'Move failed');
323
+ return;
324
+ }
325
+ if (onFileRenamed) onFileRenamed(fromPath, data.newPath);
326
+ } catch (err) {
327
+ message.error(err.message || 'Move failed');
328
+ }
329
+ }, [childPath, isDir, onFileRenamed, onImportFiles]);
330
+
331
+ // 右键菜单项
332
+ const contextMenuItems = useMemo(() => {
333
+ if (isDir) return [
334
+ { key: 'reveal', label: t('ui.contextMenu.revealInExplorer') },
335
+ { key: 'openTerminal', label: t('ui.contextMenu.openTerminal') },
336
+ { key: 'newFile', label: t('ui.contextMenu.newFile') },
337
+ { key: 'newDir', label: t('ui.contextMenu.newDir') },
338
+ { type: 'divider' },
339
+ { key: 'copyPath', label: t('ui.contextMenu.copyPath') },
340
+ { key: 'copyRelPath', label: t('ui.contextMenu.copyRelativePath') },
341
+ { type: 'divider' },
342
+ { key: 'rename', label: t('ui.contextMenu.rename') },
343
+ { key: 'delete', label: t('ui.contextMenu.delete'), danger: true },
344
+ ];
345
+ return [
346
+ { key: 'reveal', label: t('ui.contextMenu.revealInExplorer') },
347
+ { key: 'copyPath', label: t('ui.contextMenu.copyPath') },
348
+ { key: 'copyRelPath', label: t('ui.contextMenu.copyRelativePath') },
349
+ { key: 'attachToChat', label: t('ui.contextMenu.attachToChat') },
350
+ { key: 'insertPathToChat', label: t('ui.contextMenu.insertPathToChat') },
351
+ { type: 'divider' },
352
+ { key: 'rename', label: t('ui.contextMenu.rename') },
353
+ { key: 'delete', label: t('ui.contextMenu.delete'), danger: true },
354
+ ];
355
+ }, [isDir]);
356
+
357
+ const handleMenuClick = useCallback(({ key }) => {
358
+ switch (key) {
359
+ case 'reveal':
360
+ fetch(apiUrl('/api/reveal-file'), {
361
+ method: 'POST',
362
+ headers: { 'Content-Type': 'application/json' },
363
+ body: JSON.stringify({ path: childPath }),
364
+ }).catch(() => {});
365
+ break;
366
+ case 'openTerminal':
367
+ fetch(apiUrl('/api/open-terminal'), {
368
+ method: 'POST',
369
+ headers: { 'Content-Type': 'application/json' },
370
+ body: JSON.stringify({ path: childPath }),
371
+ }).catch(() => {});
372
+ break;
373
+ case 'copyPath':
374
+ fetch(apiUrl('/api/resolve-path'), {
375
+ method: 'POST',
376
+ headers: { 'Content-Type': 'application/json' },
377
+ body: JSON.stringify({ path: childPath }),
378
+ })
379
+ .then(r => r.json())
380
+ .then(data => {
381
+ if (data.fullPath) {
382
+ navigator.clipboard.writeText(data.fullPath).then(() => message.success(t('ui.copied'))).catch(() => {});
383
+ }
384
+ })
385
+ .catch(() => {});
386
+ break;
387
+ case 'copyRelPath':
388
+ navigator.clipboard.writeText(childPath).then(() => message.success(t('ui.copied'))).catch(() => {});
389
+ break;
390
+ case 'attachToChat':
391
+ onAttachToChat?.(childPath);
392
+ break;
393
+ case 'insertPathToChat':
394
+ onInsertPathToChat?.(childPath);
395
+ break;
396
+ case 'rename':
397
+ startEditing();
398
+ break;
399
+ case 'newFile': {
400
+ const inputId = `cxv-newfile-${Date.now()}`;
401
+ Modal.confirm({
402
+ title: t('ui.contextMenu.newFile'),
403
+ content: <Input id={inputId} autoFocus placeholder={t('ui.contextMenu.newFilePlaceholder')} style={{ background: 'var(--bg-container)', borderColor: 'var(--border-primary)', color: 'var(--text-secondary)', caretColor: 'var(--text-secondary)' }} onPressEnter={() => { document.querySelector('.ant-modal-confirm-btns .ant-btn-primary')?.click(); }} />,
404
+ okText: t('ui.contextMenu.newFile'),
405
+ // 失败 throw → antd Modal.confirm 保住弹窗供重试;message.error 显式提示,避免静默关闭误以为成功(同 #84 模式)。
406
+ onOk: async () => {
407
+ const input = document.getElementById(inputId);
408
+ const name = (input?.value || '').trim();
409
+ if (!name) throw new Error('Empty filename');
410
+ let errMsg;
411
+ try {
412
+ const r = await fetch(apiUrl('/api/create-file'), {
413
+ method: 'POST',
414
+ headers: { 'Content-Type': 'application/json' },
415
+ body: JSON.stringify({ dirPath: childPath, name }),
416
+ });
417
+ if (r.ok) { if (onFileRenamed) onFileRenamed(null, `${childPath}/${name}`); return; }
418
+ errMsg = `HTTP ${r.status}`;
419
+ try { const d = await r.json(); if (d?.error) errMsg = d.error; } catch {}
420
+ } catch (err) {
421
+ errMsg = err?.message || 'network error';
422
+ }
423
+ message.error(t('ui.contextMenu.createFileFailed', { error: errMsg }));
424
+ throw new Error(errMsg);
425
+ },
426
+ });
427
+ break;
428
+ }
429
+ case 'newDir': {
430
+ const inputId = `cxv-newdir-${Date.now()}`;
431
+ Modal.confirm({
432
+ title: t('ui.contextMenu.newDir'),
433
+ content: <Input id={inputId} autoFocus placeholder={t('ui.contextMenu.newDirPlaceholder')} style={{ background: 'var(--bg-container)', borderColor: 'var(--border-primary)', color: 'var(--text-secondary)', caretColor: 'var(--text-secondary)' }} onPressEnter={() => { document.querySelector('.ant-modal-confirm-btns .ant-btn-primary')?.click(); }} />,
434
+ okText: t('ui.contextMenu.newDir'),
435
+ onOk: async () => {
436
+ const input = document.getElementById(inputId);
437
+ const name = (input?.value || '').trim();
438
+ if (!name) throw new Error('Empty dir name');
439
+ let errMsg;
440
+ try {
441
+ const r = await fetch(apiUrl('/api/create-dir'), {
442
+ method: 'POST',
443
+ headers: { 'Content-Type': 'application/json' },
444
+ body: JSON.stringify({ dirPath: childPath, name }),
445
+ });
446
+ if (r.ok) { if (onFileRenamed) onFileRenamed(null, `${childPath}/${name}`); return; }
447
+ errMsg = `HTTP ${r.status}`;
448
+ try { const d = await r.json(); if (d?.error) errMsg = d.error; } catch {}
449
+ } catch (err) {
450
+ errMsg = err?.message || 'network error';
451
+ }
452
+ message.error(t('ui.contextMenu.createDirFailed', { error: errMsg }));
453
+ throw new Error(errMsg);
454
+ },
455
+ });
456
+ break;
457
+ }
458
+ case 'delete':
459
+ Modal.confirm({
460
+ title: isDir ? t('ui.contextMenu.deleteDirConfirm', { name: item.name }) : t('ui.contextMenu.deleteConfirm', { name: item.name }),
461
+ okType: 'danger',
462
+ okText: t('ui.contextMenu.delete'),
463
+ onOk: async () => {
464
+ let errMsg;
465
+ try {
466
+ const r = await fetch(apiUrl('/api/delete-file'), {
467
+ method: 'POST',
468
+ headers: { 'Content-Type': 'application/json' },
469
+ body: JSON.stringify({ path: childPath }),
470
+ });
471
+ if (r.ok) { if (onFileRenamed) onFileRenamed(childPath, null); return; }
472
+ errMsg = `HTTP ${r.status}`;
473
+ try { const d = await r.json(); if (d?.error) errMsg = d.error; } catch {}
474
+ } catch (err) {
475
+ errMsg = err?.message || 'network error';
476
+ }
477
+ message.error(t('ui.contextMenu.deleteFailed', { error: errMsg }));
478
+ throw new Error(errMsg);
479
+ },
480
+ });
481
+ break;
482
+ }
483
+ }, [childPath, item.name, isDir, startEditing, onFileRenamed, onAttachToChat, onInsertPathToChat]);
484
+
485
+ const treeItemDiv = (
486
+ <div
487
+ ref={itemRef}
488
+ className={`${styles.treeItem}${isSelected ? ' ' + styles.treeItemSelected : ''}${isGitIgnored ? ' ' + styles.treeItemGitIgnored : ''}${dragging ? ' ' + styles.treeItemDragging : ''}${dragOver ? ' ' + styles.treeItemDragOver : ''}`}
489
+ style={{ paddingLeft: 8 + depth * 16 }}
490
+ onClick={handleClick}
491
+ onDoubleClick={handleDoubleClick}
492
+ onKeyDown={handleKeyDown}
493
+ tabIndex={0}
494
+ draggable={!editing}
495
+ onDragStart={handleDragStart}
496
+ onDragEnd={handleDragEnd}
497
+ onDragOver={handleDragOver}
498
+ onDragLeave={handleDragLeave}
499
+ onDrop={handleDrop}
500
+ >
501
+ <span className={styles.arrow}>
502
+ {isDir ? (
503
+ <svg width="10" height="10" viewBox="0 0 24 24" fill="none" stroke="currentColor" strokeWidth="2.5" strokeLinecap="round" strokeLinejoin="round" className={styles.arrowIcon} style={{ transform: expanded ? 'rotate(90deg)' : 'none' }}>
504
+ <polyline points="9 6 15 12 9 18"/>
505
+ </svg>
506
+ ) : ''}
507
+ </span>
508
+ <span className={styles.icon}>{getFileIcon(item.name, item.type)}</span>
509
+ {editing ? (
510
+ <input
511
+ ref={inputRef}
512
+ className={styles.fileNameInput}
513
+ value={editName}
514
+ onChange={e => setEditName(e.target.value)}
515
+ onKeyDown={handleInputKeyDown}
516
+ onBlur={submitRename}
517
+ onClick={e => e.stopPropagation()}
518
+ />
519
+ ) : (
520
+ <span className={styles.fileName}>{item.name}</span>
521
+ )}
522
+ </div>
523
+ );
524
+
525
+ return (
526
+ <>
527
+ <Dropdown menu={{ items: contextMenuItems, onClick: handleMenuClick }} trigger={['contextMenu']}>
528
+ {treeItemDiv}
529
+ </Dropdown>
530
+ {expanded && loading && (
531
+ <div className={styles.loading} style={{ paddingLeft: 24 + depth * 16 }}>...</div>
532
+ )}
533
+ {expanded && error && (
534
+ <div className={styles.error} style={{ paddingLeft: 24 + depth * 16 }}>{error}</div>
535
+ )}
536
+ {expanded && children && children.map(child => (
537
+ <TreeNode key={child.name} item={child} path={childPath} depth={depth + 1} onFileClick={onFileClick} expandedPaths={expandedPaths} onToggleExpand={onToggleExpand} currentFile={currentFile} onFileRenamed={onFileRenamed} refreshTrigger={refreshTrigger} onHtmlPreview={onHtmlPreview} onAttachToChat={onAttachToChat} onInsertPathToChat={onInsertPathToChat} onImportFiles={onImportFiles} />
538
+ ))}
539
+ </>
540
+ );
541
+ }
542
+
543
+ export default function FileExplorer({ style, onClose, onFileClick, expandedPaths, onToggleExpand, currentFile, refreshTrigger, onManualRefresh, onFileRenamed, onAttachToChat, onInsertPathToChat }) {
544
+ const [items, setItems] = useState(null);
545
+ const [error, setError] = useState(null);
546
+ const [htmlPreviewPath, setHtmlPreviewPath] = useState(null);
547
+ const [externalDragOver, setExternalDragOver] = useState(false);
548
+ // 内部拖动(树内文件拖到容器空白处 = 移到项目根目录)的容器高亮状态。
549
+ // 与 externalDragOver 同帧只可能有一个为 true(容器 dragOver handler 用 isInternal 二选一)。
550
+ const [internalContainerDragOver, setInternalContainerDragOver] = useState(false);
551
+ const mounted = useRef(true);
552
+ const containerRef = useRef(null);
553
+
554
+ // 重新加载根目录
555
+ const refreshRoot = useCallback(() => {
556
+ if (!mounted.current) return;
557
+ fetch(apiUrl('/api/files?path='))
558
+ .then(r => r.ok ? r.json() : Promise.reject())
559
+ .then(data => { if (mounted.current) setItems(data); })
560
+ .catch(() => { if (mounted.current) setError('Failed to load'); });
561
+ }, []);
562
+
563
+ useEffect(() => {
564
+ mounted.current = true;
565
+
566
+ // 加载根目录
567
+ fetch(apiUrl('/api/files?path='))
568
+ .then(r => r.ok ? r.json() : Promise.reject())
569
+ .then(data => { if (mounted.current) setItems(data); })
570
+ .catch(() => { if (mounted.current) setError('Failed to load'); });
571
+
572
+ return () => {
573
+ mounted.current = false;
574
+ };
575
+ }, []); // 空依赖数组,只在挂载时执行一次
576
+
577
+ // 工具触发的增量刷新
578
+ useEffect(() => {
579
+ if (refreshTrigger > 0) refreshRoot();
580
+ }, [refreshTrigger]); // eslint-disable-line react-hooks/exhaustive-deps
581
+
582
+ const headerMenuItems = useMemo(() => [
583
+ { key: 'reveal', label: t('ui.contextMenu.revealInExplorer') },
584
+ { key: 'openTerminal', label: t('ui.contextMenu.openTerminal') },
585
+ { key: 'newFile', label: t('ui.contextMenu.newFile') },
586
+ { key: 'newDir', label: t('ui.contextMenu.newDir') },
587
+ { type: 'divider' },
588
+ { key: 'copyPath', label: t('ui.contextMenu.copyPath') },
589
+ { key: 'copyRelPath', label: t('ui.contextMenu.copyRelativePath') },
590
+ ], []);
591
+
592
+ const handleHeaderMenuClick = useCallback(({ key }) => {
593
+ switch (key) {
594
+ case 'reveal':
595
+ fetch(apiUrl('/api/open-project-dir'), { method: 'POST' }).catch(() => {});
596
+ break;
597
+ case 'openTerminal':
598
+ fetch(apiUrl('/api/open-terminal'), {
599
+ method: 'POST',
600
+ headers: { 'Content-Type': 'application/json' },
601
+ body: JSON.stringify({ path: '' }),
602
+ }).catch(() => {});
603
+ break;
604
+ case 'newFile': {
605
+ const inputId = `cxv-newfile-root-${Date.now()}`;
606
+ Modal.confirm({
607
+ title: t('ui.contextMenu.newFile'),
608
+ content: <Input id={inputId} autoFocus placeholder={t('ui.contextMenu.newFilePlaceholder')} style={{ background: 'var(--bg-container)', borderColor: 'var(--border-primary)', color: 'var(--text-secondary)', caretColor: 'var(--text-secondary)' }} onPressEnter={() => { document.querySelector('.ant-modal-confirm-btns .ant-btn-primary')?.click(); }} />,
609
+ okText: t('ui.contextMenu.newFile'),
610
+ // 失败 throw → antd Modal.confirm 保住弹窗供重试(同 #84 模式)。
611
+ onOk: async () => {
612
+ const input = document.getElementById(inputId);
613
+ const name = (input?.value || '').trim();
614
+ if (!name) throw new Error('Empty filename');
615
+ let errMsg;
616
+ try {
617
+ const r = await fetch(apiUrl('/api/create-file'), {
618
+ method: 'POST',
619
+ headers: { 'Content-Type': 'application/json' },
620
+ body: JSON.stringify({ dirPath: '', name }),
621
+ });
622
+ if (r.ok) { if (onFileRenamed) onFileRenamed(null, name); return; }
623
+ errMsg = `HTTP ${r.status}`;
624
+ try { const d = await r.json(); if (d?.error) errMsg = d.error; } catch {}
625
+ } catch (err) {
626
+ errMsg = err?.message || 'network error';
627
+ }
628
+ message.error(t('ui.contextMenu.createFileFailed', { error: errMsg }));
629
+ throw new Error(errMsg);
630
+ },
631
+ });
632
+ break;
633
+ }
634
+ case 'newDir': {
635
+ const inputId = `cxv-newdir-root-${Date.now()}`;
636
+ Modal.confirm({
637
+ title: t('ui.contextMenu.newDir'),
638
+ content: <Input id={inputId} autoFocus placeholder={t('ui.contextMenu.newDirPlaceholder')} style={{ background: 'var(--bg-container)', borderColor: 'var(--border-primary)', color: 'var(--text-secondary)', caretColor: 'var(--text-secondary)' }} onPressEnter={() => { document.querySelector('.ant-modal-confirm-btns .ant-btn-primary')?.click(); }} />,
639
+ okText: t('ui.contextMenu.newDir'),
640
+ onOk: async () => {
641
+ const input = document.getElementById(inputId);
642
+ const name = (input?.value || '').trim();
643
+ if (!name) throw new Error('Empty dir name');
644
+ let errMsg;
645
+ try {
646
+ const r = await fetch(apiUrl('/api/create-dir'), {
647
+ method: 'POST',
648
+ headers: { 'Content-Type': 'application/json' },
649
+ body: JSON.stringify({ dirPath: '', name }),
650
+ });
651
+ if (r.ok) { if (onFileRenamed) onFileRenamed(null, name); return; }
652
+ errMsg = `HTTP ${r.status}`;
653
+ try { const d = await r.json(); if (d?.error) errMsg = d.error; } catch {}
654
+ } catch (err) {
655
+ errMsg = err?.message || 'network error';
656
+ }
657
+ message.error(t('ui.contextMenu.createDirFailed', { error: errMsg }));
658
+ throw new Error(errMsg);
659
+ },
660
+ });
661
+ break;
662
+ }
663
+ case 'copyPath':
664
+ fetch(apiUrl('/api/resolve-path'), {
665
+ method: 'POST',
666
+ headers: { 'Content-Type': 'application/json' },
667
+ body: JSON.stringify({ path: '' }),
668
+ }).then(r => r.json()).then(data => {
669
+ if (data.fullPath) navigator.clipboard.writeText(data.fullPath).then(() => message.success(t('ui.copied'))).catch(() => {});
670
+ }).catch(() => {});
671
+ break;
672
+ case 'copyRelPath':
673
+ navigator.clipboard.writeText('.').then(() => message.success(t('ui.copied'))).catch(() => {});
674
+ break;
675
+ }
676
+ }, [onFileRenamed]);
677
+
678
+ // Import external files (支持批量文件夹拖入,保留目录结构)
679
+ // 入参 payload:{ topEntries, flatFiles }(drop 事件同步抽取)或 File[](降级兼容)
680
+ const importFiles = useCallback(async (payload, targetDir) => {
681
+ // 1. 统一为 {file, relPath}[]
682
+ let entries = [];
683
+ const topEntries = payload && payload.topEntries;
684
+ const flatFiles = payload && payload.flatFiles;
685
+ const isEntryShape = Array.isArray(topEntries) || Array.isArray(flatFiles);
686
+ if (isEntryShape && topEntries && topEntries.length > 0) {
687
+ // 有 FileSystemEntry:扫描阶段可能耗时,给个 loading
688
+ const hideScan = message.loading(t('ui.importScanning'), 0);
689
+ let scanFailed = false;
690
+ try {
691
+ entries = await expandEntries(topEntries, 0);
692
+ } catch (e) {
693
+ console.warn('[FileExplorer] expandEntries failed, falling back to flat files', e);
694
+ scanFailed = true;
695
+ } finally {
696
+ hideScan();
697
+ }
698
+ // 扫描失败或扫描结果为空时,降级到浏览器展平的 flatFiles(至少顶层文件能导入)
699
+ if ((scanFailed || entries.length === 0) && flatFiles && flatFiles.length > 0) {
700
+ entries = flatFiles.map(f => ({ file: f, relPath: f.name }));
701
+ }
702
+ } else if (isEntryShape && flatFiles && flatFiles.length > 0) {
703
+ // 浏览器不支持 webkitGetAsEntry → 降级为平铺
704
+ entries = flatFiles.map(f => ({ file: f, relPath: f.name }));
705
+ } else if (Array.isArray(payload)) {
706
+ // 纯 File[] 入参(兼容保留)
707
+ entries = payload.map(f => ({ file: f, relPath: f.name }));
708
+ }
709
+ if (entries.length === 0) {
710
+ // 拖入了但没有可导入文件(空文件夹 / 全是被过滤的系统文件)
711
+ if ((topEntries && topEntries.length > 0) || (flatFiles && flatFiles.length > 0)) {
712
+ message.info(t('ui.importNoFiles'));
713
+ }
714
+ return;
715
+ }
716
+
717
+ // 2. 大批量预警
718
+ if (entries.length > 1000) {
719
+ const proceed = await new Promise(resolve => {
720
+ Modal.confirm({
721
+ title: t('ui.importConfirmLarge', { count: entries.length }),
722
+ okText: t('ui.ok'),
723
+ cancelText: t('ui.cancel'),
724
+ onOk: () => resolve(true),
725
+ onCancel: () => resolve(false),
726
+ });
727
+ });
728
+ if (!proceed) return;
729
+ }
730
+
731
+ // 3. 并发上传(限制 3),展示持久 loading(总量已知)
732
+ const total = entries.length;
733
+ let successCount = 0;
734
+ const failures = [];
735
+ let firstOkRelPath = null;
736
+ const hideLoading = message.loading(t('ui.importingProgress', { total }), 0);
737
+
738
+ let idx = 0;
739
+ const worker = async () => {
740
+ while (idx < entries.length) {
741
+ const myIdx = idx++;
742
+ const { file, relPath } = entries[myIdx];
743
+ const lastSlash = relPath.lastIndexOf('/');
744
+ const subDir = lastSlash >= 0 ? relPath.slice(0, lastSlash) : '';
745
+ const finalDir = [targetDir, subDir].filter(Boolean).join('/');
746
+ const form = new FormData();
747
+ form.append('file', file);
748
+ try {
749
+ const res = await fetch(apiUrl(`/api/import-file?dir=${encodeURIComponent(finalDir)}`), { method: 'POST', body: form });
750
+ const data = await res.json();
751
+ if (!res.ok) {
752
+ failures.push({ name: relPath, error: data.error || 'Import failed' });
753
+ } else {
754
+ successCount++;
755
+ if (!firstOkRelPath) firstOkRelPath = data.relPath || relPath;
756
+ }
757
+ } catch (err) {
758
+ failures.push({ name: relPath, error: err.message || 'Import failed' });
759
+ }
760
+ }
761
+ };
762
+ const parallel = Math.min(3, entries.length);
763
+ await Promise.all(Array.from({ length: parallel }, () => worker()));
764
+ hideLoading();
765
+
766
+ // 4. 汇总消息
767
+ if (failures.length === 0) {
768
+ if (successCount === 1) {
769
+ message.success(t('ui.fileImported', { name: firstOkRelPath }));
770
+ } else {
771
+ message.success(t('ui.filesImported', { count: successCount }));
772
+ }
773
+ } else {
774
+ const preview = failures.slice(0, 3).map(f => f.name).join(', ');
775
+ const more = failures.length > 3 ? ` (+${failures.length - 3})` : '';
776
+ if (successCount > 0) {
777
+ message.warning(t('ui.importPartialFailed', { ok: successCount, failed: failures.length, names: preview + more }));
778
+ } else {
779
+ message.error(t('ui.importAllFailed', { failed: failures.length, names: preview + more }));
780
+ }
781
+ }
782
+
783
+ if (successCount > 0 && onFileRenamed) {
784
+ onFileRenamed(null, firstOkRelPath);
785
+ }
786
+ }, [onFileRenamed]);
787
+
788
+ // Container-level drag events for external files
789
+ // dragover 定时器模式:持续收到 dragover 时保持高亮,300ms 无 dragover 则认为拖拽结束
790
+ const dragTimerRef = useRef(null);
791
+
792
+ const resetDragState = useCallback(() => {
793
+ if (dragTimerRef.current) { clearTimeout(dragTimerRef.current); dragTimerRef.current = null; }
794
+ setExternalDragOver(false);
795
+ setInternalContainerDragOver(false);
796
+ }, []);
797
+
798
+ // 全局 drop/dragend 兜底:确保任何情况下状态都能重置
799
+ useEffect(() => {
800
+ const handler = () => resetDragState();
801
+ document.addEventListener('drop', handler);
802
+ document.addEventListener('dragend', handler);
803
+ return () => {
804
+ document.removeEventListener('drop', handler);
805
+ document.removeEventListener('dragend', handler);
806
+ };
807
+ }, [resetDragState]);
808
+
809
+ const handleContainerDragOver = useCallback((e) => {
810
+ const isInternal = e.dataTransfer.types.includes('text/x-internal-move');
811
+ const isExternal = isExternalFileDrag(e);
812
+ if (!isInternal && !isExternal) return;
813
+ e.preventDefault();
814
+ if (isInternal) {
815
+ e.dataTransfer.dropEffect = 'move';
816
+ if (!internalContainerDragOver) setInternalContainerDragOver(true);
817
+ } else {
818
+ e.dataTransfer.dropEffect = 'copy';
819
+ if (!externalDragOver) setExternalDragOver(true);
820
+ }
821
+ // 每次 dragover 重置定时器,300ms 内无新 dragover 则清除状态
822
+ if (dragTimerRef.current) clearTimeout(dragTimerRef.current);
823
+ dragTimerRef.current = setTimeout(() => {
824
+ setExternalDragOver(false);
825
+ setInternalContainerDragOver(false);
826
+ dragTimerRef.current = null;
827
+ }, 300);
828
+ }, [externalDragOver, internalContainerDragOver]);
829
+
830
+ const handleContainerDrop = useCallback(async (e) => {
831
+ resetDragState();
832
+ // 1) External file drop:保留既有 import 行为(拖外部文件到容器空白处 = 导入到根)
833
+ if (isExternalFileDrag(e)) {
834
+ e.preventDefault();
835
+ e.stopPropagation();
836
+ // 同步阶段一次性抽取 entry(异步后 items 会失效)
837
+ const topEntries = getTopLevelEntries(e.dataTransfer.items);
838
+ const flatFiles = Array.from(e.dataTransfer.files);
839
+ if ((topEntries && topEntries.length > 0) || flatFiles.length > 0) {
840
+ importFiles({ topEntries, flatFiles }, '');
841
+ }
842
+ return;
843
+ }
844
+ // 2) Internal move:拖树内文件到容器空白处 = 移到项目根目录。
845
+ // TreeNode 内 drop 已 stopPropagation,所以只有"目标 = 空白处"才会走到这里。
846
+ if (!e.dataTransfer.types.includes('text/x-internal-move')) return;
847
+ e.preventDefault();
848
+ const fromPath = e.dataTransfer.getData('text/plain');
849
+ if (!fromPath) {
850
+ // Safari / Firefox 个别版本在 drop 阶段 getData('text/plain') 偶发返空,
851
+ // 用户感知是"拖到空白处啥也没发生";落一条 warn 便于排查这种平台 bug。
852
+ console.warn('[FileExplorer] internal-move drop with empty fromPath; ignored');
853
+ return;
854
+ }
855
+ const fromDir = fromPath.includes('/') ? fromPath.substring(0, fromPath.lastIndexOf('/')) : '';
856
+ if (fromDir === '') return; // 已在根,no-op(拖回原位无效果,符合直觉)
857
+ try {
858
+ const res = await fetch(apiUrl('/api/move-file'), {
859
+ method: 'POST',
860
+ headers: { 'Content-Type': 'application/json' },
861
+ body: JSON.stringify({ fromPath, toDir: '' }),
862
+ });
863
+ const data = await res.json();
864
+ if (!res.ok) {
865
+ message.error(data.error || 'Move failed');
866
+ return;
867
+ }
868
+ if (onFileRenamed) onFileRenamed(fromPath, data.newPath);
869
+ } catch (err) {
870
+ message.error(err.message || 'Move failed');
871
+ }
872
+ }, [importFiles, resetDragState, onFileRenamed]);
873
+
874
+ return (
875
+ <div ref={containerRef} className={`${styles.fileExplorer}${internalContainerDragOver ? ' ' + styles.internalDragOverContainer : ''}`} style={style} data-file-explorer onDragOver={handleContainerDragOver} onDrop={handleContainerDrop}>
876
+ <div className={styles.header}>
877
+ <Dropdown menu={{ items: headerMenuItems, onClick: handleHeaderMenuClick }} trigger={['contextMenu']}>
878
+ <span className={styles.headerTitle}>
879
+ <OpenFolderIcon apiEndpoint={apiUrl('/api/open-project-dir')} title={t('ui.openProjectDir')} size={14} />
880
+ {t('ui.fileExplorer')}
881
+ {/* 手动刷新:外部 mv/cp/系统级文件变化等 tool_result 感知不到的场景下用户兜底;
882
+ 复用既有 refreshTrigger++ 链路(ChatView state.fileExplorerRefresh),TreeNode
883
+ 的 useEffect 监听到变化 → 已展开目录全部重拉一次。RefreshIcon 内部封装 300ms
884
+ cooldown 防狂点 + 360° 单次旋转反馈。 */}
885
+ {onManualRefresh && (
886
+ <RefreshIcon onClick={onManualRefresh} title={t('ui.fileExplorer.refresh')} />
887
+ )}
888
+ </span>
889
+ </Dropdown>
890
+ <button className={styles.headerCloseBtn} onClick={onClose} title="Close">
891
+ <svg width="14" height="14" viewBox="0 0 24 24" fill="none" stroke="currentColor" strokeWidth="2" strokeLinecap="round" strokeLinejoin="round">
892
+ <polyline points="11 17 6 12 11 7"/>
893
+ <polyline points="18 17 13 12 18 7"/>
894
+ </svg>
895
+ </button>
896
+ </div>
897
+ <div className={styles.treeContainer}>
898
+ {error && <div className={styles.error}>{error}</div>}
899
+ {!items && !error && <div className={styles.loading}>{t('ui.loading')}</div>}
900
+ {items && items.map(item => (
901
+ <TreeNode key={item.name} item={item} path="" depth={0} onFileClick={onFileClick} expandedPaths={expandedPaths} onToggleExpand={onToggleExpand} currentFile={currentFile} onFileRenamed={onFileRenamed} refreshTrigger={refreshTrigger} onHtmlPreview={setHtmlPreviewPath} onAttachToChat={onAttachToChat} onInsertPathToChat={onInsertPathToChat} onImportFiles={importFiles} />
902
+ ))}
903
+ </div>
904
+ {htmlPreviewPath && (
905
+ <Modal
906
+ open
907
+ onCancel={() => setHtmlPreviewPath(null)}
908
+ footer={null}
909
+ closable
910
+ maskClosable
911
+ zIndex={1100}
912
+ width="calc(100vw - 80px)"
913
+ title={<span style={{ color: 'var(--text-primary)', fontSize: 14 }}>{htmlPreviewPath.split('/').pop() || 'Preview'}</span>}
914
+ styles={{
915
+ header: { background: 'var(--bg-container)', borderBottom: '1px solid var(--border-primary)', padding: '12px 20px' },
916
+ body: { background: '#fff', height: 'calc(100vh - 160px)', overflow: 'hidden', padding: 0 },
917
+ mask: { background: 'rgba(0,0,0,0.7)' },
918
+ content: { background: 'var(--bg-container)', border: '1px solid var(--border-primary)', borderRadius: 8, padding: 0 },
919
+ }}
920
+ centered
921
+ >
922
+ <iframe
923
+ // 用 path-style URL 而非 ?path=...:HTML 里相对 `<script src="sorter.js">` 浏览器
924
+ // 才能按"同目录"解析到 `/api/file-raw/<dir>/sorter.js`,c8 / nyc 类报告才完整。
925
+ // path segment 各自 encode 保留分隔斜杠。
926
+ src={apiUrl('/api/file-raw/' + htmlPreviewPath.split('/').map(encodeURIComponent).join('/'))}
927
+ style={{ width: '100%', height: '100%', border: 'none' }}
928
+ title={htmlPreviewPath}
929
+ // 只放 allow-scripts 跟 server CSP 同步(取交集后才生效)。popup / form 都不放:
930
+ // c8 / nyc 报告纯静态交互(sortable / 折叠 / 行内 location.hash 跳转)不依赖这两个。
931
+ sandbox="allow-scripts"
932
+ />
933
+ </Modal>
934
+ )}
935
+ </div>
936
+ );
937
+ }