cx-viewer 1.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (864) hide show
  1. package/LICENSE.md +21 -0
  2. package/README.md +221 -0
  3. package/cli.js +735 -0
  4. package/concepts/ar/BodyDiffJSON.md +32 -0
  5. package/concepts/ar/BodyFields.md +42 -0
  6. package/concepts/ar/CacheRebuild.md +36 -0
  7. package/concepts/ar/GlobalSettings.md +232 -0
  8. package/concepts/ar/KVCacheContent.md +49 -0
  9. package/concepts/ar/MainAgent.md +23 -0
  10. package/concepts/ar/ProxySwitch.md +50 -0
  11. package/concepts/ar/QRCode.md +25 -0
  12. package/concepts/ar/ResponseFields.md +50 -0
  13. package/concepts/ar/SubAgent-Search.md +20 -0
  14. package/concepts/ar/Teammate.md +26 -0
  15. package/concepts/ar/Tool-Agent.md +125 -0
  16. package/concepts/ar/Tool-AskUserQuestion.md +75 -0
  17. package/concepts/ar/Tool-Bash.md +167 -0
  18. package/concepts/ar/Tool-Edit.md +46 -0
  19. package/concepts/ar/Tool-EnterPlanMode.md +128 -0
  20. package/concepts/ar/Tool-EnterWorktree.md +56 -0
  21. package/concepts/ar/Tool-ExitPlanMode.md +62 -0
  22. package/concepts/ar/Tool-Glob.md +39 -0
  23. package/concepts/ar/Tool-Grep.md +57 -0
  24. package/concepts/ar/Tool-NotebookEdit.md +33 -0
  25. package/concepts/ar/Tool-Read.md +56 -0
  26. package/concepts/ar/Tool-SendMessage.md +41 -0
  27. package/concepts/ar/Tool-Skill.md +56 -0
  28. package/concepts/ar/Tool-Task.md +51 -0
  29. package/concepts/ar/Tool-TaskCreate.md +78 -0
  30. package/concepts/ar/Tool-TaskGet.md +56 -0
  31. package/concepts/ar/Tool-TaskList.md +56 -0
  32. package/concepts/ar/Tool-TaskOutput.md +40 -0
  33. package/concepts/ar/Tool-TaskStop.md +32 -0
  34. package/concepts/ar/Tool-TaskUpdate.md +123 -0
  35. package/concepts/ar/Tool-TeamCreate.md +38 -0
  36. package/concepts/ar/Tool-TeamDelete.md +30 -0
  37. package/concepts/ar/Tool-WebFetch.md +55 -0
  38. package/concepts/ar/Tool-WebSearch.md +58 -0
  39. package/concepts/ar/Tool-Write.md +39 -0
  40. package/concepts/ar/Tool-executeCode.md +41 -0
  41. package/concepts/ar/Tool-getDiagnostics.md +32 -0
  42. package/concepts/ar/Tools.md +67 -0
  43. package/concepts/ar/ToolsFirst.md +77 -0
  44. package/concepts/ar/TranslateContextPollution.md +46 -0
  45. package/concepts/ar/UltraPlan.md +55 -0
  46. package/concepts/da/BodyDiffJSON.md +32 -0
  47. package/concepts/da/BodyFields.md +42 -0
  48. package/concepts/da/CacheRebuild.md +36 -0
  49. package/concepts/da/GlobalSettings.md +232 -0
  50. package/concepts/da/KVCacheContent.md +49 -0
  51. package/concepts/da/MainAgent.md +23 -0
  52. package/concepts/da/ProxySwitch.md +50 -0
  53. package/concepts/da/QRCode.md +25 -0
  54. package/concepts/da/ResponseFields.md +50 -0
  55. package/concepts/da/SubAgent-Search.md +20 -0
  56. package/concepts/da/Teammate.md +26 -0
  57. package/concepts/da/Tool-Agent.md +125 -0
  58. package/concepts/da/Tool-AskUserQuestion.md +75 -0
  59. package/concepts/da/Tool-Bash.md +167 -0
  60. package/concepts/da/Tool-Edit.md +46 -0
  61. package/concepts/da/Tool-EnterPlanMode.md +128 -0
  62. package/concepts/da/Tool-EnterWorktree.md +56 -0
  63. package/concepts/da/Tool-ExitPlanMode.md +62 -0
  64. package/concepts/da/Tool-Glob.md +39 -0
  65. package/concepts/da/Tool-Grep.md +57 -0
  66. package/concepts/da/Tool-NotebookEdit.md +33 -0
  67. package/concepts/da/Tool-Read.md +56 -0
  68. package/concepts/da/Tool-SendMessage.md +41 -0
  69. package/concepts/da/Tool-Skill.md +56 -0
  70. package/concepts/da/Tool-Task.md +51 -0
  71. package/concepts/da/Tool-TaskCreate.md +78 -0
  72. package/concepts/da/Tool-TaskGet.md +56 -0
  73. package/concepts/da/Tool-TaskList.md +56 -0
  74. package/concepts/da/Tool-TaskOutput.md +40 -0
  75. package/concepts/da/Tool-TaskStop.md +32 -0
  76. package/concepts/da/Tool-TaskUpdate.md +123 -0
  77. package/concepts/da/Tool-TeamCreate.md +38 -0
  78. package/concepts/da/Tool-TeamDelete.md +30 -0
  79. package/concepts/da/Tool-WebFetch.md +55 -0
  80. package/concepts/da/Tool-WebSearch.md +58 -0
  81. package/concepts/da/Tool-Write.md +39 -0
  82. package/concepts/da/Tool-executeCode.md +41 -0
  83. package/concepts/da/Tool-getDiagnostics.md +32 -0
  84. package/concepts/da/Tools.md +67 -0
  85. package/concepts/da/ToolsFirst.md +77 -0
  86. package/concepts/da/TranslateContextPollution.md +46 -0
  87. package/concepts/da/UltraPlan.md +55 -0
  88. package/concepts/de/BodyDiffJSON.md +32 -0
  89. package/concepts/de/BodyFields.md +42 -0
  90. package/concepts/de/CacheRebuild.md +36 -0
  91. package/concepts/de/GlobalSettings.md +232 -0
  92. package/concepts/de/KVCacheContent.md +49 -0
  93. package/concepts/de/MainAgent.md +23 -0
  94. package/concepts/de/ProxySwitch.md +50 -0
  95. package/concepts/de/QRCode.md +25 -0
  96. package/concepts/de/ResponseFields.md +50 -0
  97. package/concepts/de/SubAgent-Search.md +20 -0
  98. package/concepts/de/Teammate.md +26 -0
  99. package/concepts/de/Tool-Agent.md +125 -0
  100. package/concepts/de/Tool-AskUserQuestion.md +75 -0
  101. package/concepts/de/Tool-Bash.md +167 -0
  102. package/concepts/de/Tool-Edit.md +46 -0
  103. package/concepts/de/Tool-EnterPlanMode.md +128 -0
  104. package/concepts/de/Tool-EnterWorktree.md +56 -0
  105. package/concepts/de/Tool-ExitPlanMode.md +62 -0
  106. package/concepts/de/Tool-Glob.md +39 -0
  107. package/concepts/de/Tool-Grep.md +57 -0
  108. package/concepts/de/Tool-NotebookEdit.md +33 -0
  109. package/concepts/de/Tool-Read.md +56 -0
  110. package/concepts/de/Tool-SendMessage.md +41 -0
  111. package/concepts/de/Tool-Skill.md +56 -0
  112. package/concepts/de/Tool-Task.md +51 -0
  113. package/concepts/de/Tool-TaskCreate.md +78 -0
  114. package/concepts/de/Tool-TaskGet.md +56 -0
  115. package/concepts/de/Tool-TaskList.md +56 -0
  116. package/concepts/de/Tool-TaskOutput.md +40 -0
  117. package/concepts/de/Tool-TaskStop.md +32 -0
  118. package/concepts/de/Tool-TaskUpdate.md +123 -0
  119. package/concepts/de/Tool-TeamCreate.md +38 -0
  120. package/concepts/de/Tool-TeamDelete.md +30 -0
  121. package/concepts/de/Tool-WebFetch.md +55 -0
  122. package/concepts/de/Tool-WebSearch.md +58 -0
  123. package/concepts/de/Tool-Write.md +39 -0
  124. package/concepts/de/Tool-executeCode.md +41 -0
  125. package/concepts/de/Tool-getDiagnostics.md +32 -0
  126. package/concepts/de/Tools.md +67 -0
  127. package/concepts/de/ToolsFirst.md +77 -0
  128. package/concepts/de/TranslateContextPollution.md +46 -0
  129. package/concepts/de/UltraPlan.md +55 -0
  130. package/concepts/en/BodyDiffJSON.md +32 -0
  131. package/concepts/en/BodyFields.md +42 -0
  132. package/concepts/en/CacheRebuild.md +36 -0
  133. package/concepts/en/GlobalSettings.md +232 -0
  134. package/concepts/en/KVCacheContent.md +49 -0
  135. package/concepts/en/MainAgent.md +23 -0
  136. package/concepts/en/ProxySwitch.md +50 -0
  137. package/concepts/en/QRCode.md +29 -0
  138. package/concepts/en/ResponseFields.md +50 -0
  139. package/concepts/en/SubAgent-Search.md +20 -0
  140. package/concepts/en/Teammate.md +26 -0
  141. package/concepts/en/Tool-Agent.md +125 -0
  142. package/concepts/en/Tool-AskUserQuestion.md +75 -0
  143. package/concepts/en/Tool-Bash.md +167 -0
  144. package/concepts/en/Tool-Edit.md +46 -0
  145. package/concepts/en/Tool-EnterPlanMode.md +128 -0
  146. package/concepts/en/Tool-EnterWorktree.md +56 -0
  147. package/concepts/en/Tool-ExitPlanMode.md +62 -0
  148. package/concepts/en/Tool-Glob.md +39 -0
  149. package/concepts/en/Tool-Grep.md +57 -0
  150. package/concepts/en/Tool-NotebookEdit.md +33 -0
  151. package/concepts/en/Tool-Read.md +56 -0
  152. package/concepts/en/Tool-SendMessage.md +41 -0
  153. package/concepts/en/Tool-Skill.md +56 -0
  154. package/concepts/en/Tool-Task.md +51 -0
  155. package/concepts/en/Tool-TaskCreate.md +78 -0
  156. package/concepts/en/Tool-TaskGet.md +56 -0
  157. package/concepts/en/Tool-TaskList.md +56 -0
  158. package/concepts/en/Tool-TaskOutput.md +40 -0
  159. package/concepts/en/Tool-TaskStop.md +32 -0
  160. package/concepts/en/Tool-TaskUpdate.md +123 -0
  161. package/concepts/en/Tool-TeamCreate.md +38 -0
  162. package/concepts/en/Tool-TeamDelete.md +30 -0
  163. package/concepts/en/Tool-WebFetch.md +55 -0
  164. package/concepts/en/Tool-WebSearch.md +58 -0
  165. package/concepts/en/Tool-Write.md +39 -0
  166. package/concepts/en/Tool-executeCode.md +41 -0
  167. package/concepts/en/Tool-getDiagnostics.md +32 -0
  168. package/concepts/en/Tools.md +67 -0
  169. package/concepts/en/ToolsFirst.md +77 -0
  170. package/concepts/en/TranslateContextPollution.md +46 -0
  171. package/concepts/en/UltraPlan.md +55 -0
  172. package/concepts/es/BodyDiffJSON.md +32 -0
  173. package/concepts/es/BodyFields.md +42 -0
  174. package/concepts/es/CacheRebuild.md +36 -0
  175. package/concepts/es/GlobalSettings.md +232 -0
  176. package/concepts/es/KVCacheContent.md +49 -0
  177. package/concepts/es/MainAgent.md +23 -0
  178. package/concepts/es/ProxySwitch.md +50 -0
  179. package/concepts/es/QRCode.md +25 -0
  180. package/concepts/es/ResponseFields.md +50 -0
  181. package/concepts/es/SubAgent-Search.md +20 -0
  182. package/concepts/es/Teammate.md +26 -0
  183. package/concepts/es/Tool-Agent.md +125 -0
  184. package/concepts/es/Tool-AskUserQuestion.md +75 -0
  185. package/concepts/es/Tool-Bash.md +167 -0
  186. package/concepts/es/Tool-Edit.md +46 -0
  187. package/concepts/es/Tool-EnterPlanMode.md +128 -0
  188. package/concepts/es/Tool-EnterWorktree.md +56 -0
  189. package/concepts/es/Tool-ExitPlanMode.md +62 -0
  190. package/concepts/es/Tool-Glob.md +39 -0
  191. package/concepts/es/Tool-Grep.md +57 -0
  192. package/concepts/es/Tool-NotebookEdit.md +33 -0
  193. package/concepts/es/Tool-Read.md +56 -0
  194. package/concepts/es/Tool-SendMessage.md +41 -0
  195. package/concepts/es/Tool-Skill.md +56 -0
  196. package/concepts/es/Tool-Task.md +51 -0
  197. package/concepts/es/Tool-TaskCreate.md +78 -0
  198. package/concepts/es/Tool-TaskGet.md +56 -0
  199. package/concepts/es/Tool-TaskList.md +56 -0
  200. package/concepts/es/Tool-TaskOutput.md +40 -0
  201. package/concepts/es/Tool-TaskStop.md +32 -0
  202. package/concepts/es/Tool-TaskUpdate.md +123 -0
  203. package/concepts/es/Tool-TeamCreate.md +38 -0
  204. package/concepts/es/Tool-TeamDelete.md +30 -0
  205. package/concepts/es/Tool-WebFetch.md +55 -0
  206. package/concepts/es/Tool-WebSearch.md +58 -0
  207. package/concepts/es/Tool-Write.md +39 -0
  208. package/concepts/es/Tool-executeCode.md +41 -0
  209. package/concepts/es/Tool-getDiagnostics.md +32 -0
  210. package/concepts/es/Tools.md +67 -0
  211. package/concepts/es/ToolsFirst.md +77 -0
  212. package/concepts/es/TranslateContextPollution.md +46 -0
  213. package/concepts/es/UltraPlan.md +55 -0
  214. package/concepts/fr/BodyDiffJSON.md +32 -0
  215. package/concepts/fr/BodyFields.md +42 -0
  216. package/concepts/fr/CacheRebuild.md +36 -0
  217. package/concepts/fr/GlobalSettings.md +232 -0
  218. package/concepts/fr/KVCacheContent.md +49 -0
  219. package/concepts/fr/MainAgent.md +23 -0
  220. package/concepts/fr/ProxySwitch.md +50 -0
  221. package/concepts/fr/QRCode.md +25 -0
  222. package/concepts/fr/ResponseFields.md +50 -0
  223. package/concepts/fr/SubAgent-Search.md +20 -0
  224. package/concepts/fr/Teammate.md +26 -0
  225. package/concepts/fr/Tool-Agent.md +125 -0
  226. package/concepts/fr/Tool-AskUserQuestion.md +75 -0
  227. package/concepts/fr/Tool-Bash.md +167 -0
  228. package/concepts/fr/Tool-Edit.md +46 -0
  229. package/concepts/fr/Tool-EnterPlanMode.md +128 -0
  230. package/concepts/fr/Tool-EnterWorktree.md +56 -0
  231. package/concepts/fr/Tool-ExitPlanMode.md +62 -0
  232. package/concepts/fr/Tool-Glob.md +39 -0
  233. package/concepts/fr/Tool-Grep.md +57 -0
  234. package/concepts/fr/Tool-NotebookEdit.md +33 -0
  235. package/concepts/fr/Tool-Read.md +56 -0
  236. package/concepts/fr/Tool-SendMessage.md +41 -0
  237. package/concepts/fr/Tool-Skill.md +56 -0
  238. package/concepts/fr/Tool-Task.md +51 -0
  239. package/concepts/fr/Tool-TaskCreate.md +78 -0
  240. package/concepts/fr/Tool-TaskGet.md +56 -0
  241. package/concepts/fr/Tool-TaskList.md +56 -0
  242. package/concepts/fr/Tool-TaskOutput.md +40 -0
  243. package/concepts/fr/Tool-TaskStop.md +32 -0
  244. package/concepts/fr/Tool-TaskUpdate.md +123 -0
  245. package/concepts/fr/Tool-TeamCreate.md +38 -0
  246. package/concepts/fr/Tool-TeamDelete.md +30 -0
  247. package/concepts/fr/Tool-WebFetch.md +55 -0
  248. package/concepts/fr/Tool-WebSearch.md +58 -0
  249. package/concepts/fr/Tool-Write.md +39 -0
  250. package/concepts/fr/Tool-executeCode.md +41 -0
  251. package/concepts/fr/Tool-getDiagnostics.md +32 -0
  252. package/concepts/fr/Tools.md +67 -0
  253. package/concepts/fr/ToolsFirst.md +77 -0
  254. package/concepts/fr/TranslateContextPollution.md +46 -0
  255. package/concepts/fr/UltraPlan.md +55 -0
  256. package/concepts/it/BodyDiffJSON.md +32 -0
  257. package/concepts/it/BodyFields.md +42 -0
  258. package/concepts/it/CacheRebuild.md +36 -0
  259. package/concepts/it/GlobalSettings.md +232 -0
  260. package/concepts/it/KVCacheContent.md +49 -0
  261. package/concepts/it/MainAgent.md +23 -0
  262. package/concepts/it/ProxySwitch.md +50 -0
  263. package/concepts/it/QRCode.md +25 -0
  264. package/concepts/it/ResponseFields.md +50 -0
  265. package/concepts/it/SubAgent-Search.md +20 -0
  266. package/concepts/it/Teammate.md +26 -0
  267. package/concepts/it/Tool-Agent.md +125 -0
  268. package/concepts/it/Tool-AskUserQuestion.md +75 -0
  269. package/concepts/it/Tool-Bash.md +167 -0
  270. package/concepts/it/Tool-Edit.md +46 -0
  271. package/concepts/it/Tool-EnterPlanMode.md +128 -0
  272. package/concepts/it/Tool-EnterWorktree.md +56 -0
  273. package/concepts/it/Tool-ExitPlanMode.md +62 -0
  274. package/concepts/it/Tool-Glob.md +39 -0
  275. package/concepts/it/Tool-Grep.md +57 -0
  276. package/concepts/it/Tool-NotebookEdit.md +33 -0
  277. package/concepts/it/Tool-Read.md +56 -0
  278. package/concepts/it/Tool-SendMessage.md +41 -0
  279. package/concepts/it/Tool-Skill.md +56 -0
  280. package/concepts/it/Tool-Task.md +51 -0
  281. package/concepts/it/Tool-TaskCreate.md +78 -0
  282. package/concepts/it/Tool-TaskGet.md +56 -0
  283. package/concepts/it/Tool-TaskList.md +56 -0
  284. package/concepts/it/Tool-TaskOutput.md +40 -0
  285. package/concepts/it/Tool-TaskStop.md +32 -0
  286. package/concepts/it/Tool-TaskUpdate.md +123 -0
  287. package/concepts/it/Tool-TeamCreate.md +38 -0
  288. package/concepts/it/Tool-TeamDelete.md +30 -0
  289. package/concepts/it/Tool-WebFetch.md +55 -0
  290. package/concepts/it/Tool-WebSearch.md +58 -0
  291. package/concepts/it/Tool-Write.md +39 -0
  292. package/concepts/it/Tool-executeCode.md +41 -0
  293. package/concepts/it/Tool-getDiagnostics.md +32 -0
  294. package/concepts/it/Tools.md +67 -0
  295. package/concepts/it/ToolsFirst.md +77 -0
  296. package/concepts/it/TranslateContextPollution.md +46 -0
  297. package/concepts/it/UltraPlan.md +55 -0
  298. package/concepts/ja/BodyDiffJSON.md +32 -0
  299. package/concepts/ja/BodyFields.md +42 -0
  300. package/concepts/ja/CacheRebuild.md +36 -0
  301. package/concepts/ja/GlobalSettings.md +232 -0
  302. package/concepts/ja/KVCacheContent.md +49 -0
  303. package/concepts/ja/MainAgent.md +23 -0
  304. package/concepts/ja/ProxySwitch.md +50 -0
  305. package/concepts/ja/QRCode.md +25 -0
  306. package/concepts/ja/ResponseFields.md +50 -0
  307. package/concepts/ja/SubAgent-Search.md +20 -0
  308. package/concepts/ja/Teammate.md +26 -0
  309. package/concepts/ja/Tool-Agent.md +125 -0
  310. package/concepts/ja/Tool-AskUserQuestion.md +75 -0
  311. package/concepts/ja/Tool-Bash.md +167 -0
  312. package/concepts/ja/Tool-Edit.md +46 -0
  313. package/concepts/ja/Tool-EnterPlanMode.md +128 -0
  314. package/concepts/ja/Tool-EnterWorktree.md +56 -0
  315. package/concepts/ja/Tool-ExitPlanMode.md +62 -0
  316. package/concepts/ja/Tool-Glob.md +39 -0
  317. package/concepts/ja/Tool-Grep.md +57 -0
  318. package/concepts/ja/Tool-NotebookEdit.md +33 -0
  319. package/concepts/ja/Tool-Read.md +56 -0
  320. package/concepts/ja/Tool-SendMessage.md +41 -0
  321. package/concepts/ja/Tool-Skill.md +56 -0
  322. package/concepts/ja/Tool-Task.md +51 -0
  323. package/concepts/ja/Tool-TaskCreate.md +78 -0
  324. package/concepts/ja/Tool-TaskGet.md +56 -0
  325. package/concepts/ja/Tool-TaskList.md +56 -0
  326. package/concepts/ja/Tool-TaskOutput.md +40 -0
  327. package/concepts/ja/Tool-TaskStop.md +32 -0
  328. package/concepts/ja/Tool-TaskUpdate.md +123 -0
  329. package/concepts/ja/Tool-TeamCreate.md +38 -0
  330. package/concepts/ja/Tool-TeamDelete.md +30 -0
  331. package/concepts/ja/Tool-WebFetch.md +55 -0
  332. package/concepts/ja/Tool-WebSearch.md +58 -0
  333. package/concepts/ja/Tool-Write.md +39 -0
  334. package/concepts/ja/Tool-executeCode.md +41 -0
  335. package/concepts/ja/Tool-getDiagnostics.md +32 -0
  336. package/concepts/ja/Tools.md +67 -0
  337. package/concepts/ja/ToolsFirst.md +77 -0
  338. package/concepts/ja/TranslateContextPollution.md +46 -0
  339. package/concepts/ja/UltraPlan.md +55 -0
  340. package/concepts/ko/BodyDiffJSON.md +32 -0
  341. package/concepts/ko/BodyFields.md +42 -0
  342. package/concepts/ko/CacheRebuild.md +36 -0
  343. package/concepts/ko/GlobalSettings.md +232 -0
  344. package/concepts/ko/KVCacheContent.md +49 -0
  345. package/concepts/ko/MainAgent.md +23 -0
  346. package/concepts/ko/ProxySwitch.md +50 -0
  347. package/concepts/ko/QRCode.md +25 -0
  348. package/concepts/ko/ResponseFields.md +50 -0
  349. package/concepts/ko/SubAgent-Search.md +20 -0
  350. package/concepts/ko/Teammate.md +26 -0
  351. package/concepts/ko/Tool-Agent.md +125 -0
  352. package/concepts/ko/Tool-AskUserQuestion.md +75 -0
  353. package/concepts/ko/Tool-Bash.md +167 -0
  354. package/concepts/ko/Tool-Edit.md +46 -0
  355. package/concepts/ko/Tool-EnterPlanMode.md +128 -0
  356. package/concepts/ko/Tool-EnterWorktree.md +56 -0
  357. package/concepts/ko/Tool-ExitPlanMode.md +62 -0
  358. package/concepts/ko/Tool-Glob.md +39 -0
  359. package/concepts/ko/Tool-Grep.md +57 -0
  360. package/concepts/ko/Tool-NotebookEdit.md +33 -0
  361. package/concepts/ko/Tool-Read.md +56 -0
  362. package/concepts/ko/Tool-SendMessage.md +41 -0
  363. package/concepts/ko/Tool-Skill.md +56 -0
  364. package/concepts/ko/Tool-Task.md +51 -0
  365. package/concepts/ko/Tool-TaskCreate.md +78 -0
  366. package/concepts/ko/Tool-TaskGet.md +56 -0
  367. package/concepts/ko/Tool-TaskList.md +56 -0
  368. package/concepts/ko/Tool-TaskOutput.md +40 -0
  369. package/concepts/ko/Tool-TaskStop.md +32 -0
  370. package/concepts/ko/Tool-TaskUpdate.md +123 -0
  371. package/concepts/ko/Tool-TeamCreate.md +38 -0
  372. package/concepts/ko/Tool-TeamDelete.md +30 -0
  373. package/concepts/ko/Tool-WebFetch.md +55 -0
  374. package/concepts/ko/Tool-WebSearch.md +58 -0
  375. package/concepts/ko/Tool-Write.md +39 -0
  376. package/concepts/ko/Tool-executeCode.md +41 -0
  377. package/concepts/ko/Tool-getDiagnostics.md +32 -0
  378. package/concepts/ko/Tools.md +67 -0
  379. package/concepts/ko/ToolsFirst.md +77 -0
  380. package/concepts/ko/TranslateContextPollution.md +46 -0
  381. package/concepts/ko/UltraPlan.md +55 -0
  382. package/concepts/no/BodyDiffJSON.md +32 -0
  383. package/concepts/no/BodyFields.md +42 -0
  384. package/concepts/no/CacheRebuild.md +36 -0
  385. package/concepts/no/GlobalSettings.md +232 -0
  386. package/concepts/no/KVCacheContent.md +49 -0
  387. package/concepts/no/MainAgent.md +23 -0
  388. package/concepts/no/ProxySwitch.md +50 -0
  389. package/concepts/no/QRCode.md +25 -0
  390. package/concepts/no/ResponseFields.md +50 -0
  391. package/concepts/no/SubAgent-Search.md +20 -0
  392. package/concepts/no/Teammate.md +26 -0
  393. package/concepts/no/Tool-Agent.md +125 -0
  394. package/concepts/no/Tool-AskUserQuestion.md +75 -0
  395. package/concepts/no/Tool-Bash.md +167 -0
  396. package/concepts/no/Tool-Edit.md +46 -0
  397. package/concepts/no/Tool-EnterPlanMode.md +128 -0
  398. package/concepts/no/Tool-EnterWorktree.md +56 -0
  399. package/concepts/no/Tool-ExitPlanMode.md +62 -0
  400. package/concepts/no/Tool-Glob.md +39 -0
  401. package/concepts/no/Tool-Grep.md +57 -0
  402. package/concepts/no/Tool-NotebookEdit.md +33 -0
  403. package/concepts/no/Tool-Read.md +56 -0
  404. package/concepts/no/Tool-SendMessage.md +41 -0
  405. package/concepts/no/Tool-Skill.md +56 -0
  406. package/concepts/no/Tool-Task.md +51 -0
  407. package/concepts/no/Tool-TaskCreate.md +78 -0
  408. package/concepts/no/Tool-TaskGet.md +56 -0
  409. package/concepts/no/Tool-TaskList.md +56 -0
  410. package/concepts/no/Tool-TaskOutput.md +40 -0
  411. package/concepts/no/Tool-TaskStop.md +32 -0
  412. package/concepts/no/Tool-TaskUpdate.md +123 -0
  413. package/concepts/no/Tool-TeamCreate.md +38 -0
  414. package/concepts/no/Tool-TeamDelete.md +30 -0
  415. package/concepts/no/Tool-WebFetch.md +55 -0
  416. package/concepts/no/Tool-WebSearch.md +58 -0
  417. package/concepts/no/Tool-Write.md +39 -0
  418. package/concepts/no/Tool-executeCode.md +41 -0
  419. package/concepts/no/Tool-getDiagnostics.md +32 -0
  420. package/concepts/no/Tools.md +67 -0
  421. package/concepts/no/ToolsFirst.md +77 -0
  422. package/concepts/no/TranslateContextPollution.md +46 -0
  423. package/concepts/no/UltraPlan.md +55 -0
  424. package/concepts/pl/BodyDiffJSON.md +32 -0
  425. package/concepts/pl/BodyFields.md +42 -0
  426. package/concepts/pl/CacheRebuild.md +36 -0
  427. package/concepts/pl/GlobalSettings.md +232 -0
  428. package/concepts/pl/KVCacheContent.md +49 -0
  429. package/concepts/pl/MainAgent.md +23 -0
  430. package/concepts/pl/ProxySwitch.md +50 -0
  431. package/concepts/pl/QRCode.md +25 -0
  432. package/concepts/pl/ResponseFields.md +50 -0
  433. package/concepts/pl/SubAgent-Search.md +20 -0
  434. package/concepts/pl/Teammate.md +26 -0
  435. package/concepts/pl/Tool-Agent.md +125 -0
  436. package/concepts/pl/Tool-AskUserQuestion.md +75 -0
  437. package/concepts/pl/Tool-Bash.md +167 -0
  438. package/concepts/pl/Tool-Edit.md +46 -0
  439. package/concepts/pl/Tool-EnterPlanMode.md +128 -0
  440. package/concepts/pl/Tool-EnterWorktree.md +56 -0
  441. package/concepts/pl/Tool-ExitPlanMode.md +62 -0
  442. package/concepts/pl/Tool-Glob.md +39 -0
  443. package/concepts/pl/Tool-Grep.md +57 -0
  444. package/concepts/pl/Tool-NotebookEdit.md +33 -0
  445. package/concepts/pl/Tool-Read.md +56 -0
  446. package/concepts/pl/Tool-SendMessage.md +41 -0
  447. package/concepts/pl/Tool-Skill.md +56 -0
  448. package/concepts/pl/Tool-Task.md +51 -0
  449. package/concepts/pl/Tool-TaskCreate.md +78 -0
  450. package/concepts/pl/Tool-TaskGet.md +56 -0
  451. package/concepts/pl/Tool-TaskList.md +56 -0
  452. package/concepts/pl/Tool-TaskOutput.md +40 -0
  453. package/concepts/pl/Tool-TaskStop.md +32 -0
  454. package/concepts/pl/Tool-TaskUpdate.md +123 -0
  455. package/concepts/pl/Tool-TeamCreate.md +38 -0
  456. package/concepts/pl/Tool-TeamDelete.md +30 -0
  457. package/concepts/pl/Tool-WebFetch.md +55 -0
  458. package/concepts/pl/Tool-WebSearch.md +58 -0
  459. package/concepts/pl/Tool-Write.md +39 -0
  460. package/concepts/pl/Tool-executeCode.md +41 -0
  461. package/concepts/pl/Tool-getDiagnostics.md +32 -0
  462. package/concepts/pl/Tools.md +67 -0
  463. package/concepts/pl/ToolsFirst.md +77 -0
  464. package/concepts/pl/TranslateContextPollution.md +46 -0
  465. package/concepts/pl/UltraPlan.md +55 -0
  466. package/concepts/pt-BR/BodyDiffJSON.md +32 -0
  467. package/concepts/pt-BR/BodyFields.md +42 -0
  468. package/concepts/pt-BR/CacheRebuild.md +36 -0
  469. package/concepts/pt-BR/GlobalSettings.md +232 -0
  470. package/concepts/pt-BR/KVCacheContent.md +49 -0
  471. package/concepts/pt-BR/MainAgent.md +23 -0
  472. package/concepts/pt-BR/ProxySwitch.md +50 -0
  473. package/concepts/pt-BR/QRCode.md +25 -0
  474. package/concepts/pt-BR/ResponseFields.md +50 -0
  475. package/concepts/pt-BR/SubAgent-Search.md +20 -0
  476. package/concepts/pt-BR/Teammate.md +26 -0
  477. package/concepts/pt-BR/Tool-Agent.md +125 -0
  478. package/concepts/pt-BR/Tool-AskUserQuestion.md +75 -0
  479. package/concepts/pt-BR/Tool-Bash.md +167 -0
  480. package/concepts/pt-BR/Tool-Edit.md +46 -0
  481. package/concepts/pt-BR/Tool-EnterPlanMode.md +128 -0
  482. package/concepts/pt-BR/Tool-EnterWorktree.md +56 -0
  483. package/concepts/pt-BR/Tool-ExitPlanMode.md +62 -0
  484. package/concepts/pt-BR/Tool-Glob.md +39 -0
  485. package/concepts/pt-BR/Tool-Grep.md +57 -0
  486. package/concepts/pt-BR/Tool-NotebookEdit.md +33 -0
  487. package/concepts/pt-BR/Tool-Read.md +56 -0
  488. package/concepts/pt-BR/Tool-SendMessage.md +41 -0
  489. package/concepts/pt-BR/Tool-Skill.md +56 -0
  490. package/concepts/pt-BR/Tool-Task.md +51 -0
  491. package/concepts/pt-BR/Tool-TaskCreate.md +78 -0
  492. package/concepts/pt-BR/Tool-TaskGet.md +56 -0
  493. package/concepts/pt-BR/Tool-TaskList.md +56 -0
  494. package/concepts/pt-BR/Tool-TaskOutput.md +40 -0
  495. package/concepts/pt-BR/Tool-TaskStop.md +32 -0
  496. package/concepts/pt-BR/Tool-TaskUpdate.md +123 -0
  497. package/concepts/pt-BR/Tool-TeamCreate.md +38 -0
  498. package/concepts/pt-BR/Tool-TeamDelete.md +30 -0
  499. package/concepts/pt-BR/Tool-WebFetch.md +55 -0
  500. package/concepts/pt-BR/Tool-WebSearch.md +58 -0
  501. package/concepts/pt-BR/Tool-Write.md +39 -0
  502. package/concepts/pt-BR/Tool-executeCode.md +41 -0
  503. package/concepts/pt-BR/Tool-getDiagnostics.md +32 -0
  504. package/concepts/pt-BR/Tools.md +67 -0
  505. package/concepts/pt-BR/ToolsFirst.md +77 -0
  506. package/concepts/pt-BR/TranslateContextPollution.md +46 -0
  507. package/concepts/pt-BR/UltraPlan.md +55 -0
  508. package/concepts/ru/BodyDiffJSON.md +32 -0
  509. package/concepts/ru/BodyFields.md +42 -0
  510. package/concepts/ru/CacheRebuild.md +36 -0
  511. package/concepts/ru/GlobalSettings.md +232 -0
  512. package/concepts/ru/KVCacheContent.md +49 -0
  513. package/concepts/ru/MainAgent.md +23 -0
  514. package/concepts/ru/ProxySwitch.md +50 -0
  515. package/concepts/ru/QRCode.md +25 -0
  516. package/concepts/ru/ResponseFields.md +50 -0
  517. package/concepts/ru/SubAgent-Search.md +20 -0
  518. package/concepts/ru/Teammate.md +26 -0
  519. package/concepts/ru/Tool-Agent.md +125 -0
  520. package/concepts/ru/Tool-AskUserQuestion.md +75 -0
  521. package/concepts/ru/Tool-Bash.md +167 -0
  522. package/concepts/ru/Tool-Edit.md +46 -0
  523. package/concepts/ru/Tool-EnterPlanMode.md +128 -0
  524. package/concepts/ru/Tool-EnterWorktree.md +56 -0
  525. package/concepts/ru/Tool-ExitPlanMode.md +62 -0
  526. package/concepts/ru/Tool-Glob.md +39 -0
  527. package/concepts/ru/Tool-Grep.md +57 -0
  528. package/concepts/ru/Tool-NotebookEdit.md +33 -0
  529. package/concepts/ru/Tool-Read.md +56 -0
  530. package/concepts/ru/Tool-SendMessage.md +41 -0
  531. package/concepts/ru/Tool-Skill.md +56 -0
  532. package/concepts/ru/Tool-Task.md +51 -0
  533. package/concepts/ru/Tool-TaskCreate.md +78 -0
  534. package/concepts/ru/Tool-TaskGet.md +56 -0
  535. package/concepts/ru/Tool-TaskList.md +56 -0
  536. package/concepts/ru/Tool-TaskOutput.md +40 -0
  537. package/concepts/ru/Tool-TaskStop.md +32 -0
  538. package/concepts/ru/Tool-TaskUpdate.md +123 -0
  539. package/concepts/ru/Tool-TeamCreate.md +38 -0
  540. package/concepts/ru/Tool-TeamDelete.md +30 -0
  541. package/concepts/ru/Tool-WebFetch.md +55 -0
  542. package/concepts/ru/Tool-WebSearch.md +58 -0
  543. package/concepts/ru/Tool-Write.md +39 -0
  544. package/concepts/ru/Tool-executeCode.md +41 -0
  545. package/concepts/ru/Tool-getDiagnostics.md +32 -0
  546. package/concepts/ru/Tools.md +67 -0
  547. package/concepts/ru/ToolsFirst.md +77 -0
  548. package/concepts/ru/TranslateContextPollution.md +46 -0
  549. package/concepts/ru/UltraPlan.md +55 -0
  550. package/concepts/th/BodyDiffJSON.md +32 -0
  551. package/concepts/th/BodyFields.md +42 -0
  552. package/concepts/th/CacheRebuild.md +36 -0
  553. package/concepts/th/GlobalSettings.md +232 -0
  554. package/concepts/th/KVCacheContent.md +49 -0
  555. package/concepts/th/MainAgent.md +23 -0
  556. package/concepts/th/ProxySwitch.md +50 -0
  557. package/concepts/th/QRCode.md +25 -0
  558. package/concepts/th/ResponseFields.md +50 -0
  559. package/concepts/th/SubAgent-Search.md +20 -0
  560. package/concepts/th/Teammate.md +26 -0
  561. package/concepts/th/Tool-Agent.md +125 -0
  562. package/concepts/th/Tool-AskUserQuestion.md +75 -0
  563. package/concepts/th/Tool-Bash.md +167 -0
  564. package/concepts/th/Tool-Edit.md +46 -0
  565. package/concepts/th/Tool-EnterPlanMode.md +128 -0
  566. package/concepts/th/Tool-EnterWorktree.md +56 -0
  567. package/concepts/th/Tool-ExitPlanMode.md +62 -0
  568. package/concepts/th/Tool-Glob.md +39 -0
  569. package/concepts/th/Tool-Grep.md +57 -0
  570. package/concepts/th/Tool-NotebookEdit.md +33 -0
  571. package/concepts/th/Tool-Read.md +56 -0
  572. package/concepts/th/Tool-SendMessage.md +41 -0
  573. package/concepts/th/Tool-Skill.md +56 -0
  574. package/concepts/th/Tool-Task.md +51 -0
  575. package/concepts/th/Tool-TaskCreate.md +78 -0
  576. package/concepts/th/Tool-TaskGet.md +56 -0
  577. package/concepts/th/Tool-TaskList.md +56 -0
  578. package/concepts/th/Tool-TaskOutput.md +40 -0
  579. package/concepts/th/Tool-TaskStop.md +32 -0
  580. package/concepts/th/Tool-TaskUpdate.md +123 -0
  581. package/concepts/th/Tool-TeamCreate.md +38 -0
  582. package/concepts/th/Tool-TeamDelete.md +30 -0
  583. package/concepts/th/Tool-WebFetch.md +55 -0
  584. package/concepts/th/Tool-WebSearch.md +58 -0
  585. package/concepts/th/Tool-Write.md +39 -0
  586. package/concepts/th/Tool-executeCode.md +41 -0
  587. package/concepts/th/Tool-getDiagnostics.md +32 -0
  588. package/concepts/th/Tools.md +67 -0
  589. package/concepts/th/ToolsFirst.md +77 -0
  590. package/concepts/th/TranslateContextPollution.md +46 -0
  591. package/concepts/th/UltraPlan.md +55 -0
  592. package/concepts/tr/BodyDiffJSON.md +32 -0
  593. package/concepts/tr/BodyFields.md +42 -0
  594. package/concepts/tr/CacheRebuild.md +36 -0
  595. package/concepts/tr/GlobalSettings.md +232 -0
  596. package/concepts/tr/KVCacheContent.md +49 -0
  597. package/concepts/tr/MainAgent.md +23 -0
  598. package/concepts/tr/ProxySwitch.md +50 -0
  599. package/concepts/tr/QRCode.md +25 -0
  600. package/concepts/tr/ResponseFields.md +50 -0
  601. package/concepts/tr/SubAgent-Search.md +20 -0
  602. package/concepts/tr/Teammate.md +26 -0
  603. package/concepts/tr/Tool-Agent.md +125 -0
  604. package/concepts/tr/Tool-AskUserQuestion.md +75 -0
  605. package/concepts/tr/Tool-Bash.md +167 -0
  606. package/concepts/tr/Tool-Edit.md +46 -0
  607. package/concepts/tr/Tool-EnterPlanMode.md +128 -0
  608. package/concepts/tr/Tool-EnterWorktree.md +56 -0
  609. package/concepts/tr/Tool-ExitPlanMode.md +62 -0
  610. package/concepts/tr/Tool-Glob.md +39 -0
  611. package/concepts/tr/Tool-Grep.md +57 -0
  612. package/concepts/tr/Tool-NotebookEdit.md +33 -0
  613. package/concepts/tr/Tool-Read.md +56 -0
  614. package/concepts/tr/Tool-SendMessage.md +41 -0
  615. package/concepts/tr/Tool-Skill.md +56 -0
  616. package/concepts/tr/Tool-Task.md +51 -0
  617. package/concepts/tr/Tool-TaskCreate.md +78 -0
  618. package/concepts/tr/Tool-TaskGet.md +56 -0
  619. package/concepts/tr/Tool-TaskList.md +56 -0
  620. package/concepts/tr/Tool-TaskOutput.md +40 -0
  621. package/concepts/tr/Tool-TaskStop.md +32 -0
  622. package/concepts/tr/Tool-TaskUpdate.md +123 -0
  623. package/concepts/tr/Tool-TeamCreate.md +38 -0
  624. package/concepts/tr/Tool-TeamDelete.md +30 -0
  625. package/concepts/tr/Tool-WebFetch.md +55 -0
  626. package/concepts/tr/Tool-WebSearch.md +58 -0
  627. package/concepts/tr/Tool-Write.md +39 -0
  628. package/concepts/tr/Tool-executeCode.md +41 -0
  629. package/concepts/tr/Tool-getDiagnostics.md +32 -0
  630. package/concepts/tr/Tools.md +67 -0
  631. package/concepts/tr/ToolsFirst.md +77 -0
  632. package/concepts/tr/TranslateContextPollution.md +46 -0
  633. package/concepts/tr/UltraPlan.md +55 -0
  634. package/concepts/uk/BodyDiffJSON.md +32 -0
  635. package/concepts/uk/BodyFields.md +42 -0
  636. package/concepts/uk/CacheRebuild.md +36 -0
  637. package/concepts/uk/GlobalSettings.md +232 -0
  638. package/concepts/uk/KVCacheContent.md +49 -0
  639. package/concepts/uk/MainAgent.md +23 -0
  640. package/concepts/uk/ProxySwitch.md +50 -0
  641. package/concepts/uk/QRCode.md +25 -0
  642. package/concepts/uk/ResponseFields.md +50 -0
  643. package/concepts/uk/SubAgent-Search.md +20 -0
  644. package/concepts/uk/Teammate.md +26 -0
  645. package/concepts/uk/Tool-Agent.md +125 -0
  646. package/concepts/uk/Tool-AskUserQuestion.md +75 -0
  647. package/concepts/uk/Tool-Bash.md +167 -0
  648. package/concepts/uk/Tool-Edit.md +46 -0
  649. package/concepts/uk/Tool-EnterPlanMode.md +128 -0
  650. package/concepts/uk/Tool-EnterWorktree.md +56 -0
  651. package/concepts/uk/Tool-ExitPlanMode.md +62 -0
  652. package/concepts/uk/Tool-Glob.md +39 -0
  653. package/concepts/uk/Tool-Grep.md +57 -0
  654. package/concepts/uk/Tool-NotebookEdit.md +33 -0
  655. package/concepts/uk/Tool-Read.md +56 -0
  656. package/concepts/uk/Tool-SendMessage.md +41 -0
  657. package/concepts/uk/Tool-Skill.md +56 -0
  658. package/concepts/uk/Tool-Task.md +51 -0
  659. package/concepts/uk/Tool-TaskCreate.md +78 -0
  660. package/concepts/uk/Tool-TaskGet.md +56 -0
  661. package/concepts/uk/Tool-TaskList.md +56 -0
  662. package/concepts/uk/Tool-TaskOutput.md +40 -0
  663. package/concepts/uk/Tool-TaskStop.md +32 -0
  664. package/concepts/uk/Tool-TaskUpdate.md +123 -0
  665. package/concepts/uk/Tool-TeamCreate.md +38 -0
  666. package/concepts/uk/Tool-TeamDelete.md +30 -0
  667. package/concepts/uk/Tool-WebFetch.md +55 -0
  668. package/concepts/uk/Tool-WebSearch.md +58 -0
  669. package/concepts/uk/Tool-Write.md +39 -0
  670. package/concepts/uk/Tool-executeCode.md +41 -0
  671. package/concepts/uk/Tool-getDiagnostics.md +32 -0
  672. package/concepts/uk/Tools.md +67 -0
  673. package/concepts/uk/ToolsFirst.md +77 -0
  674. package/concepts/uk/TranslateContextPollution.md +46 -0
  675. package/concepts/uk/UltraPlan.md +55 -0
  676. package/concepts/zh/BodyDiffJSON.md +32 -0
  677. package/concepts/zh/BodyFields.md +42 -0
  678. package/concepts/zh/CacheRebuild.md +36 -0
  679. package/concepts/zh/GlobalSettings.md +232 -0
  680. package/concepts/zh/KVCacheContent.md +49 -0
  681. package/concepts/zh/MainAgent.md +23 -0
  682. package/concepts/zh/ProxySwitch.md +50 -0
  683. package/concepts/zh/QRCode.md +29 -0
  684. package/concepts/zh/ResponseFields.md +50 -0
  685. package/concepts/zh/SubAgent-Search.md +20 -0
  686. package/concepts/zh/Teammate.md +26 -0
  687. package/concepts/zh/Tool-Agent.md +125 -0
  688. package/concepts/zh/Tool-AskUserQuestion.md +75 -0
  689. package/concepts/zh/Tool-Bash.md +167 -0
  690. package/concepts/zh/Tool-Edit.md +46 -0
  691. package/concepts/zh/Tool-EnterPlanMode.md +128 -0
  692. package/concepts/zh/Tool-EnterWorktree.md +56 -0
  693. package/concepts/zh/Tool-ExitPlanMode.md +62 -0
  694. package/concepts/zh/Tool-Glob.md +39 -0
  695. package/concepts/zh/Tool-Grep.md +57 -0
  696. package/concepts/zh/Tool-NotebookEdit.md +33 -0
  697. package/concepts/zh/Tool-Read.md +56 -0
  698. package/concepts/zh/Tool-SendMessage.md +41 -0
  699. package/concepts/zh/Tool-Skill.md +56 -0
  700. package/concepts/zh/Tool-Task.md +51 -0
  701. package/concepts/zh/Tool-TaskCreate.md +78 -0
  702. package/concepts/zh/Tool-TaskGet.md +56 -0
  703. package/concepts/zh/Tool-TaskList.md +56 -0
  704. package/concepts/zh/Tool-TaskOutput.md +40 -0
  705. package/concepts/zh/Tool-TaskStop.md +32 -0
  706. package/concepts/zh/Tool-TaskUpdate.md +123 -0
  707. package/concepts/zh/Tool-TeamCreate.md +38 -0
  708. package/concepts/zh/Tool-TeamDelete.md +30 -0
  709. package/concepts/zh/Tool-WebFetch.md +55 -0
  710. package/concepts/zh/Tool-WebSearch.md +58 -0
  711. package/concepts/zh/Tool-Write.md +39 -0
  712. package/concepts/zh/Tool-executeCode.md +41 -0
  713. package/concepts/zh/Tool-getDiagnostics.md +32 -0
  714. package/concepts/zh/Tools.md +67 -0
  715. package/concepts/zh/ToolsFirst.md +77 -0
  716. package/concepts/zh/TranslateContextPollution.md +46 -0
  717. package/concepts/zh/UltraPlan.md +55 -0
  718. package/concepts/zh-TW/BodyDiffJSON.md +32 -0
  719. package/concepts/zh-TW/BodyFields.md +42 -0
  720. package/concepts/zh-TW/CacheRebuild.md +36 -0
  721. package/concepts/zh-TW/GlobalSettings.md +232 -0
  722. package/concepts/zh-TW/KVCacheContent.md +49 -0
  723. package/concepts/zh-TW/MainAgent.md +23 -0
  724. package/concepts/zh-TW/ProxySwitch.md +50 -0
  725. package/concepts/zh-TW/QRCode.md +25 -0
  726. package/concepts/zh-TW/ResponseFields.md +50 -0
  727. package/concepts/zh-TW/SubAgent-Search.md +20 -0
  728. package/concepts/zh-TW/Teammate.md +26 -0
  729. package/concepts/zh-TW/Tool-Agent.md +125 -0
  730. package/concepts/zh-TW/Tool-AskUserQuestion.md +75 -0
  731. package/concepts/zh-TW/Tool-Bash.md +167 -0
  732. package/concepts/zh-TW/Tool-Edit.md +46 -0
  733. package/concepts/zh-TW/Tool-EnterPlanMode.md +128 -0
  734. package/concepts/zh-TW/Tool-EnterWorktree.md +56 -0
  735. package/concepts/zh-TW/Tool-ExitPlanMode.md +62 -0
  736. package/concepts/zh-TW/Tool-Glob.md +39 -0
  737. package/concepts/zh-TW/Tool-Grep.md +57 -0
  738. package/concepts/zh-TW/Tool-NotebookEdit.md +33 -0
  739. package/concepts/zh-TW/Tool-Read.md +56 -0
  740. package/concepts/zh-TW/Tool-SendMessage.md +41 -0
  741. package/concepts/zh-TW/Tool-Skill.md +56 -0
  742. package/concepts/zh-TW/Tool-Task.md +51 -0
  743. package/concepts/zh-TW/Tool-TaskCreate.md +78 -0
  744. package/concepts/zh-TW/Tool-TaskGet.md +56 -0
  745. package/concepts/zh-TW/Tool-TaskList.md +56 -0
  746. package/concepts/zh-TW/Tool-TaskOutput.md +40 -0
  747. package/concepts/zh-TW/Tool-TaskStop.md +32 -0
  748. package/concepts/zh-TW/Tool-TaskUpdate.md +123 -0
  749. package/concepts/zh-TW/Tool-TeamCreate.md +38 -0
  750. package/concepts/zh-TW/Tool-TeamDelete.md +30 -0
  751. package/concepts/zh-TW/Tool-WebFetch.md +55 -0
  752. package/concepts/zh-TW/Tool-WebSearch.md +58 -0
  753. package/concepts/zh-TW/Tool-Write.md +39 -0
  754. package/concepts/zh-TW/Tool-executeCode.md +41 -0
  755. package/concepts/zh-TW/Tool-getDiagnostics.md +32 -0
  756. package/concepts/zh-TW/Tools.md +67 -0
  757. package/concepts/zh-TW/ToolsFirst.md +77 -0
  758. package/concepts/zh-TW/TranslateContextPollution.md +46 -0
  759. package/concepts/zh-TW/UltraPlan.md +55 -0
  760. package/dist/assets/App-BzrN42Qt.js +41 -0
  761. package/dist/assets/App-fG2r3jFq.css +1 -0
  762. package/dist/assets/AppHeader-B3hrnZr-.css +41 -0
  763. package/dist/assets/AppHeader.module-BMU2vyC4.js +1246 -0
  764. package/dist/assets/Mobile-BnDkLcBv.css +1 -0
  765. package/dist/assets/Mobile-C9wxQTXV.js +10 -0
  766. package/dist/assets/_baseUniq-CXWHShmB.js +1 -0
  767. package/dist/assets/arc-qbol0NJo.js +1 -0
  768. package/dist/assets/architectureDiagram-Q4EWVU46-COZebb1N.js +36 -0
  769. package/dist/assets/blockDiagram-DXYQGD6D-COCgzPKy.js +132 -0
  770. package/dist/assets/c4Diagram-AHTNJAMY-Bs5XvLEo.js +10 -0
  771. package/dist/assets/channel-DvLUZ3Xf.js +1 -0
  772. package/dist/assets/chunk-4BX2VUAB-CyGriz9d.js +1 -0
  773. package/dist/assets/chunk-4TB4RGXK-DlT_q-fl.js +206 -0
  774. package/dist/assets/chunk-55IACEB6-NHN99ZNC.js +1 -0
  775. package/dist/assets/chunk-EDXVE4YY-fK4f9Na9.js +1 -0
  776. package/dist/assets/chunk-FMBD7UC4-DL-dQIq1.js +15 -0
  777. package/dist/assets/chunk-OYMX7WX6-6uruB4VY.js +231 -0
  778. package/dist/assets/chunk-QZHKN3VN-CCWIqLO8.js +1 -0
  779. package/dist/assets/chunk-YZCP3GAM-Cu84DMJo.js +1 -0
  780. package/dist/assets/classDiagram-6PBFFD2Q-ByKhp2Tk.js +1 -0
  781. package/dist/assets/classDiagram-v2-HSJHXN6E-ByKhp2Tk.js +1 -0
  782. package/dist/assets/clone-DZHpE494.js +1 -0
  783. package/dist/assets/cose-bilkent-S5V4N54A-Dqi4iU3-.js +1 -0
  784. package/dist/assets/cytoscape.esm-DxGcaOPV.js +331 -0
  785. package/dist/assets/dagre-KV5264BT-Dl-EJ9rb.js +4 -0
  786. package/dist/assets/default-avatar-CT9tlZjd.svg +1 -0
  787. package/dist/assets/default-model-avatar-DlbUPjyv.svg +1 -0
  788. package/dist/assets/defaultLocale-DX6XiGOO.js +1 -0
  789. package/dist/assets/diagram-5BDNPKRD-BYtyzF0D.js +10 -0
  790. package/dist/assets/diagram-G4DWMVQ6-BuETHFNU.js +24 -0
  791. package/dist/assets/diagram-MMDJMWI5-Z02oZp6I.js +43 -0
  792. package/dist/assets/diagram-TYMM5635-BpGlKv8l.js +24 -0
  793. package/dist/assets/erDiagram-SMLLAGMA-C4YngeQh.js +85 -0
  794. package/dist/assets/flowDiagram-DWJPFMVM-BWddFffg.js +162 -0
  795. package/dist/assets/ganttDiagram-T4ZO3ILL-Bg0jOD4m.js +292 -0
  796. package/dist/assets/gitGraphDiagram-UUTBAWPF-Bz-3sTXZ.js +106 -0
  797. package/dist/assets/graph-XiH8DkIu.js +1 -0
  798. package/dist/assets/html2canvas.esm-QH1iLAAe.js +22 -0
  799. package/dist/assets/index-BuUsWKGZ.js +41 -0
  800. package/dist/assets/index-DCtZ2KSX.css +1 -0
  801. package/dist/assets/infoDiagram-42DDH7IO-DLo-lOCE.js +2 -0
  802. package/dist/assets/init-Gi6I4Gst.js +1 -0
  803. package/dist/assets/ishikawaDiagram-UXIWVN3A-BsIzT5eO.js +70 -0
  804. package/dist/assets/journeyDiagram-VCZTEJTY-C3bOkKqv.js +139 -0
  805. package/dist/assets/kanban-definition-6JOO6SKY-D-rJRNbp.js +89 -0
  806. package/dist/assets/katex-DkKDou_j.js +257 -0
  807. package/dist/assets/layout-Bqp8Hh1c.js +1 -0
  808. package/dist/assets/linear-BWRSipGb.js +1 -0
  809. package/dist/assets/loading-pet-12a9GTQC.gif +0 -0
  810. package/dist/assets/mermaid.core-CJa7klhs.js +308 -0
  811. package/dist/assets/min-CQ_VyzMd.js +1 -0
  812. package/dist/assets/mindmap-definition-QFDTVHPH-Bnj7DDSx.js +96 -0
  813. package/dist/assets/model-deepseek-LDuqTN2N.svg +2 -0
  814. package/dist/assets/ordinal-Cboi1Yqb.js +1 -0
  815. package/dist/assets/pieDiagram-DEJITSTG-CC8a7Ylw.js +30 -0
  816. package/dist/assets/quadrantDiagram-34T5L4WZ-CrmL1WUV.js +7 -0
  817. package/dist/assets/requirementDiagram-MS252O5E-TfkX4u_6.js +84 -0
  818. package/dist/assets/sankeyDiagram-XADWPNL6-DMwBbND7.js +10 -0
  819. package/dist/assets/sequenceDiagram-FGHM5R23-CFghMYsm.js +157 -0
  820. package/dist/assets/stateDiagram-FHFEXIEX-1H6JIM7l.js +1 -0
  821. package/dist/assets/stateDiagram-v2-QKLJ7IA2-CtXMaKcb.js +1 -0
  822. package/dist/assets/timeline-definition-GMOUNBTQ-DnLMBlVa.js +120 -0
  823. package/dist/assets/vennDiagram-DHZGUBPP-DoIkY_KL.js +34 -0
  824. package/dist/assets/wardley-RL74JXVD-3n5XmOD5.js +162 -0
  825. package/dist/assets/wardleyDiagram-NUSXRM2D-UMOq3ofC.js +20 -0
  826. package/dist/assets/xychartDiagram-5P7HB3ND-CNDuQ5Cg.js +7 -0
  827. package/dist/favicon.ico +0 -0
  828. package/dist/index.html +15 -0
  829. package/findcx.js +204 -0
  830. package/i18n.js +2413 -0
  831. package/interceptor.js +698 -0
  832. package/lib/appserver-bridge.js +584 -0
  833. package/lib/ask-bridge.js +126 -0
  834. package/lib/codex-config.js +146 -0
  835. package/lib/constants.js +26 -0
  836. package/lib/context-watcher.js +85 -0
  837. package/lib/cxv-editor.js +73 -0
  838. package/lib/delta-reconstructor.js +256 -0
  839. package/lib/ensure-hooks.js +88 -0
  840. package/lib/extract-plugin-name.mjs +18 -0
  841. package/lib/file-api.js +128 -0
  842. package/lib/git-diff.js +89 -0
  843. package/lib/interceptor-core.js +270 -0
  844. package/lib/kv-cache-analyzer.js +164 -0
  845. package/lib/log-management.js +198 -0
  846. package/lib/log-stream.js +310 -0
  847. package/lib/log-watcher.js +245 -0
  848. package/lib/otel-adapter.js +251 -0
  849. package/lib/otel-receiver.js +198 -0
  850. package/lib/perm-bridge.js +142 -0
  851. package/lib/plugin-loader.js +161 -0
  852. package/lib/plugin-manager.js +118 -0
  853. package/lib/proxy-env.js +23 -0
  854. package/lib/proxy-errors.js +18 -0
  855. package/lib/sdk-adapter.js +77 -0
  856. package/lib/sdk-manager.js +464 -0
  857. package/lib/stats-worker.js +384 -0
  858. package/lib/updater.js +123 -0
  859. package/lib/user-profile.js +43 -0
  860. package/package.json +115 -0
  861. package/proxy.js +369 -0
  862. package/pty-manager.js +407 -0
  863. package/server.js +3226 -0
  864. package/workspace-registry.js +151 -0
package/cli.js ADDED
@@ -0,0 +1,735 @@
1
+ #!/usr/bin/env node
2
+
3
+ // 阻止 server.js 自动启动(必须在任何导入之前设置)
4
+ process.env.CXV_WORKSPACE_MODE = '1';
5
+
6
+ import { readFileSync, writeFileSync, existsSync, realpathSync, unlinkSync, mkdirSync } from 'node:fs';
7
+ import { resolve } from 'node:path';
8
+ import { fileURLToPath } from 'node:url';
9
+ import { homedir } from 'node:os';
10
+ import { spawn } from 'node:child_process';
11
+ import { t } from './i18n.js';
12
+ import { INJECT_IMPORT, resolveCliPath, resolveNativePath, resolveNpmCodexPath, buildShellCandidates } from './findcx.js';
13
+ import { ensureHooks } from './lib/ensure-hooks.js';
14
+
15
+ const __dirname = fileURLToPath(new URL('.', import.meta.url));
16
+
17
+ const INJECT_START = '// >>> Start CX Viewer Web Service >>>';
18
+ const INJECT_END = '// <<< Start CX Viewer Web Service <<<';
19
+ const INJECT_BLOCK = `${INJECT_START}\n${INJECT_IMPORT}\n${INJECT_END}`;
20
+
21
+
22
+ const SHELL_HOOK_START = '# >>> CX-Viewer Auto-Inject >>>';
23
+ const SHELL_HOOK_END = '# <<< CX-Viewer Auto-Inject <<<';
24
+
25
+ const cliPath = resolveCliPath();
26
+
27
+ function getShellConfigPath() {
28
+ const shell = process.env.SHELL || '';
29
+ if (shell.includes('zsh')) return resolve(homedir(), '.zshrc');
30
+ if (shell.includes('bash')) {
31
+ const bashProfile = resolve(homedir(), '.bash_profile');
32
+ if (process.platform === 'darwin' && existsSync(bashProfile)) return bashProfile;
33
+ return resolve(homedir(), '.bashrc');
34
+ }
35
+ return resolve(homedir(), '.zshrc');
36
+ }
37
+
38
+ function buildShellHook(isNative) {
39
+ // Commands/flags that should pass through directly without cxv interception
40
+ // These are non-interactive commands that don't involve API calls
41
+ const passthroughCommands = [
42
+ // Subcommands (no API calls)
43
+ 'doctor', // health check for auto-updater
44
+ 'install', // install native build
45
+ 'update', // self-update
46
+ 'upgrade', // alias for update
47
+ 'auth', // authentication management
48
+ 'setup-token', // token setup
49
+ 'agents', // list configured agents
50
+ 'plugin', // plugin management
51
+ 'plugins', // alias for plugin
52
+ 'mcp', // MCP server configuration
53
+ ];
54
+
55
+ const passthroughFlags = [
56
+ // Version/help info
57
+ '--version', '-v', '--v',
58
+ '--help', '-h',
59
+ ];
60
+
61
+ if (isNative) {
62
+ return `${SHELL_HOOK_START}
63
+ codex() {
64
+ # Avoid recursion if cxv invokes codex
65
+ if [ "$1" = "--cxv-internal" ]; then
66
+ shift
67
+ command codex "$@"
68
+ return
69
+ fi
70
+ # Pass through certain commands directly without cxv interception
71
+ case "$1" in
72
+ ${passthroughCommands.join('|')})
73
+ command codex "$@"
74
+ return
75
+ ;;
76
+ ${passthroughFlags.join('|')})
77
+ command codex "$@"
78
+ return
79
+ ;;
80
+ esac
81
+ cxv run -- codex --cxv-internal "$@"
82
+ }
83
+ ${SHELL_HOOK_END}`;
84
+ }
85
+
86
+ const candidates = buildShellCandidates();
87
+ return `${SHELL_HOOK_START}
88
+ codex() {
89
+ # Pass through certain commands directly without cxv interception
90
+ case "$1" in
91
+ ${passthroughCommands.join('|')})
92
+ command codex "$@"
93
+ return
94
+ ;;
95
+ ${passthroughFlags.join('|')})
96
+ command codex "$@"
97
+ return
98
+ ;;
99
+ esac
100
+ local cli_js=""
101
+ for candidate in ${candidates}; do
102
+ if [ -f "$candidate" ]; then
103
+ cli_js="$candidate"
104
+ break
105
+ fi
106
+ done
107
+ if [ -n "$cli_js" ] && ! grep -q "CX Viewer" "$cli_js" 2>/dev/null; then
108
+ cxv -logger 2>/dev/null
109
+ fi
110
+ command codex "$@"
111
+ }
112
+ ${SHELL_HOOK_END}`;
113
+ }
114
+
115
+ function installShellHook(isNative) {
116
+ const configPath = getShellConfigPath();
117
+ try {
118
+ let content = existsSync(configPath) ? readFileSync(configPath, 'utf-8') : '';
119
+
120
+ if (content.includes(SHELL_HOOK_START)) {
121
+ const hook = buildShellHook(isNative);
122
+ // Extract existing hook content
123
+ const regex = new RegExp(`${SHELL_HOOK_START}[\\s\\S]*?${SHELL_HOOK_END}`);
124
+ const existingMatch = content.match(regex);
125
+ if (existingMatch && existingMatch[0] === hook) {
126
+ return { path: configPath, status: 'exists' };
127
+ }
128
+ // Hook content differs: remove old and reinstall
129
+ removeShellHook();
130
+ content = existsSync(configPath) ? readFileSync(configPath, 'utf-8') : '';
131
+ }
132
+
133
+ const hook = buildShellHook(isNative);
134
+ const newContent = content.endsWith('\n') ? content + '\n' + hook + '\n' : content + '\n\n' + hook + '\n';
135
+ writeFileSync(configPath, newContent);
136
+ return { path: configPath, status: 'installed' };
137
+ } catch (err) {
138
+ return { path: configPath, status: 'error', error: err.message };
139
+ }
140
+ }
141
+
142
+ function removeShellHook() {
143
+ // 扫描所有可能的 shell 配置文件,清理所有遗留 hook
144
+ const configPath = getShellConfigPath();
145
+ const allPaths = new Set([configPath]);
146
+ const home = homedir();
147
+ for (const f of ['.zshrc', '.zprofile', '.bashrc', '.bash_profile', '.profile']) {
148
+ allPaths.add(resolve(home, f));
149
+ }
150
+ let lastResult = { path: configPath, status: 'clean' };
151
+ for (const p of allPaths) {
152
+ try {
153
+ if (!existsSync(p)) continue;
154
+ const content = readFileSync(p, 'utf-8');
155
+ if (!content.includes(SHELL_HOOK_START)) continue;
156
+ const regex = new RegExp(`\\n?${SHELL_HOOK_START}[\\s\\S]*?${SHELL_HOOK_END}\\n?`, 'g');
157
+ const newContent = content.replace(regex, '\n');
158
+ writeFileSync(p, newContent);
159
+ lastResult = { path: p, status: 'removed' };
160
+ } catch (err) {
161
+ lastResult = { path: p, status: 'error', error: err.message };
162
+ }
163
+ }
164
+ return lastResult;
165
+ }
166
+
167
+ function injectCliJs() {
168
+ const content = readFileSync(cliPath, 'utf-8');
169
+ if (content.includes(INJECT_START)) {
170
+ return 'exists';
171
+ }
172
+ const lines = content.split('\n');
173
+ lines.splice(2, 0, INJECT_BLOCK);
174
+ writeFileSync(cliPath, lines.join('\n'));
175
+ return 'injected';
176
+ }
177
+
178
+ function removeCliJsInjection() {
179
+ try {
180
+ if (!existsSync(cliPath)) return 'not_found';
181
+ const content = readFileSync(cliPath, 'utf-8');
182
+ if (!content.includes(INJECT_START)) return 'clean';
183
+ const regex = new RegExp(`${INJECT_START}\\n${INJECT_IMPORT}\\n${INJECT_END}\\n?`, 'g');
184
+ writeFileSync(cliPath, content.replace(regex, ''));
185
+ return 'removed';
186
+ } catch {
187
+ return 'error';
188
+ }
189
+ }
190
+
191
+ async function runProxyCommand(args) {
192
+ // 直接模式:不启动 proxy,直接运行 codex
193
+ try {
194
+ // args = ['run', '--', 'command', 'codex', ...] or ['run', 'codex', ...]
195
+ // Our hook uses: cxv run -- codex --cxv-internal "$@"
196
+ // args[0] is 'run'.
197
+ // If args[1] is '--', then command starts at args[2].
198
+
199
+ let cmdStartIndex = 1;
200
+ if (args[1] === '--') {
201
+ cmdStartIndex = 2;
202
+ }
203
+
204
+ let cmd = args[cmdStartIndex];
205
+ if (!cmd) {
206
+ console.error('No command provided to run.');
207
+ process.exit(1);
208
+ }
209
+ let cmdArgs = args.slice(cmdStartIndex + 1);
210
+
211
+ // If cmd is 'codex' and next arg is '--cxv-internal', remove it
212
+ if (cmdArgs[0] === '--cxv-internal') {
213
+ cmdArgs.shift();
214
+ }
215
+
216
+ const env = { ...process.env };
217
+ // Determine the path to the native 'codex' executable
218
+ if (cmd === 'codex') {
219
+ const nativePath = resolveNativePath();
220
+ if (nativePath) {
221
+ cmd = nativePath;
222
+ }
223
+ }
224
+ env.CXV_DIRECT_MODE = '1';
225
+
226
+ const child = spawn(cmd, cmdArgs, { stdio: 'inherit', env });
227
+
228
+ child.on('exit', (code) => {
229
+ process.exit(code);
230
+ });
231
+
232
+ child.on('error', (err) => {
233
+ console.error('Failed to start command:', err);
234
+ process.exit(1);
235
+ });
236
+ } catch (err) {
237
+ console.error('Run error:', err);
238
+ process.exit(1);
239
+ }
240
+ }
241
+
242
+ // ensureHooks() extracted to lib/ensure-hooks.js (shared with electron/tab-worker.js)
243
+
244
+ async function runCliMode(extraCodexArgs = [], cwd) {
245
+ // 首先尝试 npm 版本(包括 nvm 安装),找不到再尝试 native 版本
246
+ let codexPath = resolveNpmCodexPath();
247
+ let isNpmVersion = !!codexPath;
248
+
249
+ if (!codexPath) {
250
+ codexPath = resolveNativePath();
251
+ }
252
+
253
+ if (!codexPath) {
254
+ console.error(t('cli.cMode.notFound'));
255
+ process.exit(1);
256
+ }
257
+
258
+ console.log(t('cli.cMode.starting'));
259
+
260
+ const workingDir = cwd || process.cwd();
261
+
262
+ // 注册工作区
263
+ const { registerWorkspace } = await import('./workspace-registry.js');
264
+ registerWorkspace(workingDir);
265
+
266
+ // 确保 AskUserQuestion hook 已注册到 ~/.codex/settings.json
267
+ ensureHooks();
268
+
269
+ // 2. 设置 CLI 模式标记
270
+ process.env.CXV_CLI_MODE = '1';
271
+ process.env.CXV_PROJECT_DIR = workingDir;
272
+ // 当 --dangerously-skip-permissions 生效时,通知 perm-bridge 不要拦截
273
+ if (extraCodexArgs.includes('--dangerously-skip-permissions')) {
274
+ process.env.CXV_BYPASS_PERMISSIONS = '1';
275
+ }
276
+
277
+ // 初始化日志文件(CXV_WORKSPACE_MODE=1 下 interceptor 跳过了自动初始化)
278
+ const { initForWorkspace } = await import('./interceptor.js');
279
+ initForWorkspace(workingDir);
280
+
281
+ // 启动 HTTP 服务器(工作区模式下需要手动调用 startViewer)
282
+ const serverMod = await import('./server.js');
283
+ await serverMod.startViewer();
284
+
285
+ // 等待服务器启动完成
286
+ await new Promise(resolve => {
287
+ const check = () => {
288
+ const port = serverMod.getPort();
289
+ if (port) resolve(port);
290
+ else setTimeout(check, 100);
291
+ };
292
+ setTimeout(check, 200);
293
+ });
294
+
295
+ const port = serverMod.getPort();
296
+
297
+ // 标记工作区已启动(跳过前端工作区选择器)
298
+ serverMod.setWorkspaceLaunched(true);
299
+
300
+ // 启动日志监听和统计(startViewer 在 workspace 模式下跳过了这些)
301
+ serverMod.initPostLaunch();
302
+
303
+ // 注入 OTel 配置到 config.toml(补充数据源)
304
+ const otelEndpoint = `http://127.0.0.1:${port}`;
305
+ const codexConfigPath = resolve(homedir(), '.codex', 'config.toml');
306
+ let _otelConfigInjected = false;
307
+ const OTEL_MARKER = '# >>> CX-Viewer OTel >>>';
308
+ const OTEL_MARKER_END = '# <<< CX-Viewer OTel <<<';
309
+ try {
310
+ let configContent = existsSync(codexConfigPath) ? readFileSync(codexConfigPath, 'utf-8') : '';
311
+ const otelRegex = new RegExp(`\\n?${OTEL_MARKER}[\\s\\S]*?${OTEL_MARKER_END}\\n?`, 'g');
312
+ configContent = configContent.replace(otelRegex, '\n');
313
+ const otelBlock = `\n${OTEL_MARKER}\n[otel]\ntrace_exporter = { otlp-http = { protocol = "json", endpoint = "${otelEndpoint}" } }\n${OTEL_MARKER_END}\n`;
314
+ configContent = configContent.trimEnd() + otelBlock;
315
+ writeFileSync(codexConfigPath, configContent);
316
+ _otelConfigInjected = true;
317
+ } catch (err) {
318
+ console.error('[CX Viewer] Failed to inject OTel config:', err.message);
319
+ }
320
+
321
+ // 启动 App-Server Bridge(WebSocket 中间代理,获取完整执行日志)
322
+ const { LOG_FILE: currentLogFile } = await import('./interceptor.js');
323
+ let _bridge = null;
324
+ let bridgeArgs = [];
325
+ try {
326
+ const { startAppServerBridge } = await import('./lib/appserver-bridge.js');
327
+ _bridge = await startAppServerBridge({
328
+ cwd: workingDir,
329
+ codexPath,
330
+ logFile: currentLogFile,
331
+ env: process.env,
332
+ });
333
+ // 让 codex TUI 通过 --remote 连接到代理
334
+ bridgeArgs = ['--remote', `ws://127.0.0.1:${_bridge.proxyPort}`];
335
+ console.log(`[CX Viewer] App-Server bridge started (proxy:${_bridge.proxyPort} → server:${_bridge.appServerPort})`);
336
+ } catch (err) {
337
+ console.warn('[CX Viewer] App-Server bridge failed, falling back to direct mode:', err.message);
338
+ }
339
+
340
+ // 启动 PTY 中的 codex TUI
341
+ const { spawnCodex, killPty } = await import('./pty-manager.js');
342
+ try {
343
+ await spawnCodex(null, workingDir, [...bridgeArgs, ...extraCodexArgs], codexPath, isNpmVersion, port);
344
+ } catch (err) {
345
+ console.error('[CX Viewer] Failed to spawn Codex:', err.message);
346
+ if (_bridge) _bridge.stop();
347
+ await serverMod.stopViewer();
348
+ process.exit(1);
349
+ }
350
+
351
+ // 4. 自动打开浏览器
352
+ const protocol = serverMod.getProtocol();
353
+ const url = `${protocol}://127.0.0.1:${port}`;
354
+ try {
355
+ const cmd = process.platform === 'darwin' ? 'open' : process.platform === 'win32' ? 'start' : 'xdg-open';
356
+ const { execSync } = await import('node:child_process');
357
+ execSync(`${cmd} ${url}`, { stdio: 'ignore', timeout: 5000 });
358
+ } catch {}
359
+
360
+ console.log(`CX Viewer:`);
361
+ console.log(` ➜ Local: ${url}`);
362
+ const _lanIps = serverMod.getAllLocalIps();
363
+ const _token = serverMod.getAccessToken();
364
+ for (const _ip of _lanIps) {
365
+ console.log(` ➜ Network: ${protocol}://${_ip}:${port}?token=${_token}`);
366
+ }
367
+
368
+ // 5. 注册退出处理
369
+ const cleanupOtelConfig = () => {
370
+ if (!_otelConfigInjected) return;
371
+ try {
372
+ let c = readFileSync(codexConfigPath, 'utf-8');
373
+ const re = new RegExp(`\\n?${OTEL_MARKER}[\\s\\S]*?${OTEL_MARKER_END}\\n?`, 'g');
374
+ c = c.replace(re, '\n');
375
+ writeFileSync(codexConfigPath, c.trimEnd() + '\n');
376
+ } catch {}
377
+ };
378
+ const cleanup = () => {
379
+ killPty();
380
+ if (_bridge) _bridge.stop();
381
+ cleanupOtelConfig();
382
+ serverMod.stopViewer().finally(() => process.exit());
383
+ };
384
+ process.on('SIGINT', cleanup);
385
+ process.on('SIGTERM', cleanup);
386
+ }
387
+
388
+ async function runSdkMode(extraCodexArgs = [], cwd) {
389
+ // 检查 SDK 是否可用
390
+ let sdkManager;
391
+ try {
392
+ sdkManager = await import('./lib/sdk-manager.js');
393
+ if (!sdkManager.isSdkAvailable()) throw new Error('query not available');
394
+ } catch {
395
+ console.warn('[CX Viewer] Agent SDK not available, falling back to PTY mode (-C)');
396
+ return runCliMode(extraCodexArgs, cwd);
397
+ }
398
+
399
+ const workingDir = cwd || process.cwd();
400
+
401
+ // 注册工作区
402
+ const { registerWorkspace } = await import('./workspace-registry.js');
403
+ registerWorkspace(workingDir);
404
+
405
+ // 不需要 ensureHooks — SDK canUseTool 处理 AskUserQuestion + 权限
406
+ // 不需要 proxy — SDK 直接管理 API 通信
407
+
408
+ // 设置环境标记(必须在 import server.js 之前)
409
+ process.env.CXV_CLI_MODE = '1';
410
+ process.env.CXV_SDK_MODE = '1';
411
+ process.env.CXV_PROJECT_DIR = workingDir;
412
+
413
+ // 启动 HTTP 服务器
414
+ const serverMod = await import('./server.js');
415
+
416
+ await new Promise(resolve => {
417
+ const check = () => {
418
+ const port = serverMod.getPort();
419
+ if (port) resolve(port);
420
+ else setTimeout(check, 100);
421
+ };
422
+ setTimeout(check, 200);
423
+ });
424
+
425
+ const port = serverMod.getPort();
426
+ const { basename } = await import('node:path');
427
+
428
+ // 解析 permission mode from CLI args
429
+ // --d / --dangerously-skip-permissions → bypassPermissions(跳过所有权限检查)
430
+ // --ad / --allow-dangerously-skip-permissions → default(只是允许用户后续切换,不立即跳过)
431
+ let permissionMode = 'default';
432
+ if (extraCodexArgs.includes('--dangerously-skip-permissions')) {
433
+ permissionMode = 'bypassPermissions';
434
+ }
435
+
436
+ // 初始化 SDK 会话
437
+ sdkManager.initSdkSession(workingDir, basename(workingDir), {
438
+ onEntry: (entry) => serverMod.pushSdkEntry(entry),
439
+ onStreamingStatus: (data) => serverMod.setSdkStreamingState(data),
440
+ broadcastWs: (msg) => serverMod.broadcastWsMessage(msg),
441
+ permissionMode,
442
+ });
443
+
444
+ // 注册 SDK 回调到 server.js(WS 消息路由用)
445
+ serverMod.setSdkResolveApproval(sdkManager.resolveApproval);
446
+ serverMod.setSdkSendUserMessage(sdkManager.sendUserMessage);
447
+
448
+ // 自动打开浏览器
449
+ const protocol = serverMod.getProtocol();
450
+ const url = `${protocol}://127.0.0.1:${port}`;
451
+ try {
452
+ const cmd = process.platform === 'darwin' ? 'open' : process.platform === 'win32' ? 'start' : 'xdg-open';
453
+ const { execSync } = await import('node:child_process');
454
+ execSync(`${cmd} ${url}`, { stdio: 'ignore', timeout: 5000 });
455
+ } catch {}
456
+
457
+ console.log(`CX Viewer (SDK mode):`);
458
+ console.log(` ➜ Local: ${url}`);
459
+ const _lanIps = serverMod.getAllLocalIps();
460
+ const _token = serverMod.getAccessToken();
461
+ for (const _ip of _lanIps) {
462
+ console.log(` ➜ Network: ${protocol}://${_ip}:${port}?token=${_token}`);
463
+ }
464
+
465
+ // 注册退出处理
466
+ const cleanup = () => {
467
+ sdkManager.stopSession();
468
+ serverMod.stopViewer().finally(() => process.exit());
469
+ };
470
+ process.on('SIGINT', cleanup);
471
+ process.on('SIGTERM', cleanup);
472
+ }
473
+
474
+ async function runCliModeWorkspaceSelector(extraCodexArgs = []) {
475
+ // 首先尝试 npm 版本(包括 nvm 安装),找不到再尝试 native 版本
476
+ let codexPath = resolveNpmCodexPath();
477
+ let isNpmVersion = !!codexPath;
478
+
479
+ if (!codexPath) {
480
+ codexPath = resolveNativePath();
481
+ }
482
+
483
+ if (!codexPath) {
484
+ console.error(t('cli.cMode.notFound'));
485
+ process.exit(1);
486
+ }
487
+
488
+ console.log(t('cli.cMode.starting'));
489
+
490
+ process.env.CXV_CLI_MODE = '1';
491
+
492
+ // 启动 HTTP 服务器(工作区模式,不初始化 interceptor 日志)
493
+ const serverMod = await import('./server.js');
494
+
495
+ // 工作区模式下 server.js 跳过了自动启动,需要手动调用
496
+ await serverMod.startViewer();
497
+
498
+ const port = serverMod.getPort();
499
+
500
+ // 保存 extraCodexArgs 和 codexPath 供后续 launch 使用
501
+ serverMod.setWorkspaceCodexArgs(extraCodexArgs);
502
+ serverMod.setWorkspaceCodexPath(codexPath, isNpmVersion);
503
+
504
+ // 自动打开浏览器
505
+ const wsProtocol = serverMod.getProtocol();
506
+ const url = `${wsProtocol}://127.0.0.1:${port}`;
507
+ try {
508
+ const cmd = process.platform === 'darwin' ? 'open' : process.platform === 'win32' ? 'start' : 'xdg-open';
509
+ const { execSync } = await import('node:child_process');
510
+ execSync(`${cmd} ${url}`, { stdio: 'ignore', timeout: 5000 });
511
+ } catch {}
512
+
513
+ console.log(`CX Viewer (Workspace):`);
514
+ console.log(` ➜ Local: ${url}`);
515
+ const _lanIps = serverMod.getAllLocalIps();
516
+ const _token = serverMod.getAccessToken();
517
+ for (const _ip of _lanIps) {
518
+ console.log(` ➜ Network: ${wsProtocol}://${_ip}:${port}?token=${_token}`);
519
+ }
520
+
521
+ // 注册退出处理
522
+ const { killPty } = await import('./pty-manager.js');
523
+ const cleanup = () => {
524
+ killPty();
525
+ serverMod.stopViewer().finally(() => process.exit());
526
+ };
527
+ process.on('SIGINT', cleanup);
528
+ process.on('SIGTERM', cleanup);
529
+ }
530
+
531
+ // === 主逻辑 ===
532
+
533
+ const args = process.argv.slice(2);
534
+
535
+ // cxv 自有命令判断
536
+ const isLogger = args.includes('-logger');
537
+ const isUninstall = args.includes('--uninstall') || args.includes('-uninstall');
538
+ const isHelp = args.includes('--help') || args.includes('-h') || args[0] === 'help';
539
+ const isVersion = args.includes('--v') || args.includes('--version') || args.includes('-v');
540
+
541
+ if (isHelp) {
542
+ console.log(t('cli.help'));
543
+ process.exit(0);
544
+ }
545
+
546
+ if (isVersion) {
547
+ try {
548
+ const pkg = JSON.parse(readFileSync(resolve(__dirname, 'package.json'), 'utf-8'));
549
+ console.log(`cx-viewer v${pkg.version}`);
550
+ } catch (e) {
551
+ console.error('Failed to read version:', e.message);
552
+ }
553
+ process.exit(0);
554
+ }
555
+
556
+ if (isUninstall) {
557
+ const cliResult = removeCliJsInjection();
558
+ const shellResult = removeShellHook();
559
+
560
+ if (cliResult === 'removed' || cliResult === 'clean') {
561
+ console.log(t('cli.uninstall.cliCleaned'));
562
+ } else if (cliResult === 'not_found') {
563
+ // Silent is better for mixed mode uninstall
564
+ } else {
565
+ console.log(t('cli.uninstall.cliFail'));
566
+ }
567
+
568
+ if (shellResult.status === 'removed') {
569
+ console.log(t('cli.uninstall.hookRemoved', { path: shellResult.path }));
570
+ } else if (shellResult.status === 'clean' || shellResult.status === 'not_found') {
571
+ console.log(t('cli.uninstall.hookClean', { path: shellResult.path }));
572
+ } else {
573
+ console.log(t('cli.uninstall.hookFail', { error: shellResult.error }));
574
+ }
575
+
576
+ // 清理 statusLine 配置和脚本(兼容历史版本遗留)
577
+ try {
578
+ const settingsPath = resolve(homedir(), '.codex', 'settings.json');
579
+ if (existsSync(settingsPath)) {
580
+ const settings = JSON.parse(readFileSync(settingsPath, 'utf-8'));
581
+ if (settings.statusLine?.command?.includes('cxv-statusline')) {
582
+ delete settings.statusLine;
583
+ writeFileSync(settingsPath, JSON.stringify(settings, null, 2) + '\n');
584
+ console.log('Cleaned statusLine config from settings.json');
585
+ }
586
+ }
587
+ const cxvScript = resolve(homedir(), '.codex', 'cxv-statusline.sh');
588
+ if (existsSync(cxvScript)) {
589
+ unlinkSync(cxvScript);
590
+ console.log('Removed cxv-statusline.sh');
591
+ }
592
+ // 清理 context-window.json
593
+ const ctxFile = resolve(homedir(), '.codex', 'context-window.json');
594
+ if (existsSync(ctxFile)) {
595
+ unlinkSync(ctxFile);
596
+ }
597
+ } catch { }
598
+
599
+ console.log(t('cli.uninstall.reloadShell'));
600
+ console.log(t('cli.uninstall.done'));
601
+ process.exit(0);
602
+ }
603
+
604
+ if (isLogger) {
605
+ // 安装/修复 hook 逻辑(原来无参数 cxv 的行为)
606
+ let mode = 'unknown';
607
+
608
+ let prefersNative = true;
609
+ const paths = (process.env.PATH || '').split(':');
610
+ for (const dir of paths) {
611
+ if (!dir) continue;
612
+ const exePath = resolve(dir, 'codex');
613
+ if (existsSync(exePath)) {
614
+ try {
615
+ const real = realpathSync(exePath);
616
+ if (real.includes('node_modules')) {
617
+ prefersNative = false;
618
+ } else {
619
+ prefersNative = true;
620
+ }
621
+ break;
622
+ } catch (e) {
623
+ // ignore
624
+ }
625
+ }
626
+ }
627
+
628
+ const nativePath = resolveNativePath();
629
+ const hasNpm = existsSync(cliPath);
630
+
631
+ if (prefersNative) {
632
+ if (nativePath) {
633
+ mode = 'native';
634
+ } else if (hasNpm) {
635
+ mode = 'npm';
636
+ }
637
+ } else {
638
+ if (hasNpm) {
639
+ mode = 'npm';
640
+ } else if (nativePath) {
641
+ mode = 'native';
642
+ }
643
+ }
644
+
645
+ if (mode === 'unknown') {
646
+ console.error(t('cli.inject.notFound', { path: cliPath }));
647
+ console.error('Also could not find native "codex" command in PATH.');
648
+ console.error('Please make sure @openai/codex is installed.');
649
+ process.exit(1);
650
+ }
651
+
652
+ if (mode === 'npm') {
653
+ try {
654
+ const cliResult = injectCliJs();
655
+ const shellResult = installShellHook(false);
656
+
657
+ if (cliResult === 'exists' && shellResult.status === 'exists') {
658
+ console.log(t('cli.alreadyWorking'));
659
+ } else {
660
+ if (cliResult === 'exists') {
661
+ console.log(t('cli.inject.exists'));
662
+ } else {
663
+ console.log(t('cli.inject.success'));
664
+ }
665
+
666
+ if (shellResult.status === 'installed') {
667
+ console.log('All READY!');
668
+ } else if (shellResult.status !== 'exists') {
669
+ console.log(t('cli.hook.fail', { error: shellResult.error }));
670
+ }
671
+ }
672
+ console.log(t('cli.usage.hint'));
673
+ } catch (err) {
674
+ if (err.code === 'ENOENT') {
675
+ console.error(t('cli.inject.notFound', { path: cliPath }));
676
+ console.error(t('cli.inject.notFoundHint'));
677
+ } else {
678
+ console.error(t('cli.inject.fail', { error: err.message }));
679
+ }
680
+ process.exit(1);
681
+ }
682
+ } else {
683
+ // Native Mode
684
+ try {
685
+ console.log('Detected Codex Code Native Install.');
686
+ const shellResult = installShellHook(true);
687
+
688
+ if (shellResult.status === 'exists') {
689
+ console.log(t('cli.alreadyWorking'));
690
+ } else if (shellResult.status === 'installed') {
691
+ console.log('Native Hook Installed! All READY!');
692
+ } else {
693
+ console.log(t('cli.hook.fail', { error: shellResult.error }));
694
+ }
695
+ console.log(t('cli.usage.hint'));
696
+ } catch (err) {
697
+ console.error('Failed to install native hook:', err);
698
+ process.exit(1);
699
+ }
700
+ }
701
+ process.exit(0);
702
+ }
703
+
704
+ if (args[0] === 'run') {
705
+ runProxyCommand(args);
706
+ } else if (args.includes('-SDK') || args.includes('--sdk')) {
707
+ // SDK 模式(显式 -SDK 切换)
708
+ let codexArgs = args.filter(a => a !== '-SDK' && a !== '--sdk')
709
+ .map(a => a === '--d' ? '--dangerously-skip-permissions' : a === '--ad' ? '--allow-dangerously-skip-permissions' : a);
710
+
711
+ // 处理 codex 不支持的 -c/--continue 参数(codex 使用 resume 子命令)
712
+ codexArgs = codexArgs.filter(a => a !== '-c' && a !== '--continue');
713
+
714
+ runSdkMode(codexArgs, process.cwd()).catch(err => {
715
+ console.error('SDK mode error:', err);
716
+ process.exit(1);
717
+ });
718
+ } else {
719
+ // PTY 模式(默认)
720
+ // 将 -c/--continue 转换为 codex 的 resume 子命令
721
+ let codexArgs = args.map(a => a === '--d' ? '--dangerously-skip-permissions' : a === '--ad' ? '--allow-dangerously-skip-permissions' : a);
722
+
723
+ // 处理 codex 不支持的 -c/--continue 参数
724
+ const hasContinue = codexArgs.includes('-c') || codexArgs.includes('--continue');
725
+ codexArgs = codexArgs.filter(a => a !== '-c' && a !== '--continue');
726
+
727
+ // 如果用户想继续会话,在 codex 中使用 resume 子命令
728
+ // 但子命令需要在参数列表开头,所以我们不能直接添加
729
+ // 暂时忽略 -c 参数,codex 会自动恢复最近的会话
730
+
731
+ runCliMode(codexArgs, process.cwd()).catch(err => {
732
+ console.error('CLI mode error:', err);
733
+ process.exit(1);
734
+ });
735
+ }