@kaitranntt/ccs 6.7.0 → 6.7.1-dev.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (623) hide show
  1. package/README.md +45 -23
  2. package/dist/api/index.d.ts +7 -0
  3. package/dist/api/index.d.ts.map +1 -0
  4. package/dist/api/index.js +24 -0
  5. package/dist/api/index.js.map +1 -0
  6. package/dist/api/services/index.d.ts +10 -0
  7. package/dist/api/services/index.d.ts.map +1 -0
  8. package/dist/api/services/index.js +26 -0
  9. package/dist/api/services/index.js.map +1 -0
  10. package/dist/api/services/profile-reader.d.ts +28 -0
  11. package/dist/api/services/profile-reader.d.ts.map +1 -0
  12. package/dist/api/services/profile-reader.js +148 -0
  13. package/dist/api/services/profile-reader.js.map +1 -0
  14. package/dist/api/services/profile-types.d.ts +42 -0
  15. package/dist/api/services/profile-types.d.ts.map +1 -0
  16. package/dist/api/services/profile-types.js +8 -0
  17. package/dist/api/services/profile-types.js.map +1 -0
  18. package/dist/api/services/profile-writer.d.ts +6 -0
  19. package/dist/api/services/profile-writer.d.ts.map +1 -0
  20. package/dist/api/services/profile-writer.js +176 -0
  21. package/dist/api/services/profile-writer.js.map +1 -0
  22. package/dist/api/services/validation-service.d.ts +26 -0
  23. package/dist/api/services/validation-service.d.ts.map +1 -0
  24. package/dist/api/services/validation-service.js +77 -0
  25. package/dist/api/services/validation-service.js.map +1 -0
  26. package/dist/auth/auth-commands.d.ts +16 -22
  27. package/dist/auth/auth-commands.d.ts.map +1 -1
  28. package/dist/auth/auth-commands.js +29 -467
  29. package/dist/auth/auth-commands.js.map +1 -1
  30. package/dist/auth/commands/create-command.d.ts +11 -0
  31. package/dist/auth/commands/create-command.d.ts.map +1 -0
  32. package/dist/auth/commands/create-command.js +137 -0
  33. package/dist/auth/commands/create-command.js.map +1 -0
  34. package/dist/auth/commands/default-command.d.ts +15 -0
  35. package/dist/auth/commands/default-command.d.ts.map +1 -0
  36. package/dist/auth/commands/default-command.js +71 -0
  37. package/dist/auth/commands/default-command.js.map +1 -0
  38. package/dist/auth/commands/index.d.ts +12 -0
  39. package/dist/auth/commands/index.d.ts.map +1 -0
  40. package/dist/auth/commands/index.js +25 -0
  41. package/dist/auth/commands/index.js.map +1 -0
  42. package/dist/auth/commands/list-command.d.ts +11 -0
  43. package/dist/auth/commands/list-command.d.ts.map +1 -0
  44. package/dist/auth/commands/list-command.js +124 -0
  45. package/dist/auth/commands/list-command.js.map +1 -0
  46. package/dist/auth/commands/remove-command.d.ts +11 -0
  47. package/dist/auth/commands/remove-command.d.ts.map +1 -0
  48. package/dist/auth/commands/remove-command.js +102 -0
  49. package/dist/auth/commands/remove-command.js.map +1 -0
  50. package/dist/auth/commands/show-command.d.ts +11 -0
  51. package/dist/auth/commands/show-command.d.ts.map +1 -0
  52. package/dist/auth/commands/show-command.js +103 -0
  53. package/dist/auth/commands/show-command.js.map +1 -0
  54. package/dist/auth/commands/types.d.ts +50 -0
  55. package/dist/auth/commands/types.d.ts.map +1 -0
  56. package/dist/auth/commands/types.js +26 -0
  57. package/dist/auth/commands/types.js.map +1 -0
  58. package/dist/auth/index.d.ts +8 -0
  59. package/dist/auth/index.d.ts.map +1 -0
  60. package/dist/auth/index.js +16 -0
  61. package/dist/auth/index.js.map +1 -0
  62. package/dist/auth/profile-detector.d.ts +0 -5
  63. package/dist/auth/profile-detector.d.ts.map +1 -1
  64. package/dist/auth/profile-detector.js +1 -9
  65. package/dist/auth/profile-detector.js.map +1 -1
  66. package/dist/auth/profile-registry.d.ts +0 -4
  67. package/dist/auth/profile-registry.d.ts.map +1 -1
  68. package/dist/auth/profile-registry.js +3 -10
  69. package/dist/auth/profile-registry.js.map +1 -1
  70. package/dist/ccs.js +21 -4
  71. package/dist/ccs.js.map +1 -1
  72. package/dist/cliproxy/auth/auth-types.d.ts +85 -0
  73. package/dist/cliproxy/auth/auth-types.d.ts.map +1 -0
  74. package/dist/cliproxy/auth/auth-types.js +100 -0
  75. package/dist/cliproxy/auth/auth-types.js.map +1 -0
  76. package/dist/cliproxy/auth/environment-detector.d.ts +30 -0
  77. package/dist/cliproxy/auth/environment-detector.d.ts.map +1 -0
  78. package/dist/cliproxy/auth/environment-detector.js +124 -0
  79. package/dist/cliproxy/auth/environment-detector.js.map +1 -0
  80. package/dist/cliproxy/auth/index.d.ts +11 -0
  81. package/dist/cliproxy/auth/index.d.ts.map +1 -0
  82. package/dist/cliproxy/auth/index.js +35 -0
  83. package/dist/cliproxy/auth/index.js.map +1 -0
  84. package/dist/cliproxy/auth/oauth-handler.d.ts +29 -0
  85. package/dist/cliproxy/auth/oauth-handler.d.ts.map +1 -0
  86. package/dist/cliproxy/auth/oauth-handler.js +205 -0
  87. package/dist/cliproxy/auth/oauth-handler.js.map +1 -0
  88. package/dist/cliproxy/auth/oauth-process.d.ts +27 -0
  89. package/dist/cliproxy/auth/oauth-process.d.ts.map +1 -0
  90. package/dist/cliproxy/auth/oauth-process.js +209 -0
  91. package/dist/cliproxy/auth/oauth-process.js.map +1 -0
  92. package/dist/cliproxy/auth/token-manager.d.ts +53 -0
  93. package/dist/cliproxy/auth/token-manager.d.ts.map +1 -0
  94. package/dist/cliproxy/auth/token-manager.js +250 -0
  95. package/dist/cliproxy/auth/token-manager.js.map +1 -0
  96. package/dist/cliproxy/auth-handler.d.ts +13 -103
  97. package/dist/cliproxy/auth-handler.d.ts.map +1 -1
  98. package/dist/cliproxy/auth-handler.js +35 -766
  99. package/dist/cliproxy/auth-handler.js.map +1 -1
  100. package/dist/cliproxy/binary/downloader.d.ts +29 -0
  101. package/dist/cliproxy/binary/downloader.d.ts.map +1 -0
  102. package/dist/cliproxy/binary/downloader.js +218 -0
  103. package/dist/cliproxy/binary/downloader.js.map +1 -0
  104. package/dist/cliproxy/binary/extractor.d.ts +12 -0
  105. package/dist/cliproxy/binary/extractor.d.ts.map +1 -0
  106. package/dist/cliproxy/binary/extractor.js +27 -0
  107. package/dist/cliproxy/binary/extractor.js.map +1 -0
  108. package/dist/cliproxy/binary/index.d.ts +13 -0
  109. package/dist/cliproxy/binary/index.d.ts.map +1 -0
  110. package/dist/cliproxy/binary/index.js +53 -0
  111. package/dist/cliproxy/binary/index.js.map +1 -0
  112. package/dist/cliproxy/binary/installer.d.ts +24 -0
  113. package/dist/cliproxy/binary/installer.d.ts.map +1 -0
  114. package/dist/cliproxy/binary/installer.js +117 -0
  115. package/dist/cliproxy/binary/installer.js.map +1 -0
  116. package/dist/cliproxy/binary/lifecycle.d.ts +11 -0
  117. package/dist/cliproxy/binary/lifecycle.d.ts.map +1 -0
  118. package/dist/cliproxy/binary/lifecycle.js +106 -0
  119. package/dist/cliproxy/binary/lifecycle.js.map +1 -0
  120. package/dist/cliproxy/binary/tar-extractor.d.ts +9 -0
  121. package/dist/cliproxy/binary/tar-extractor.d.ts.map +1 -0
  122. package/dist/cliproxy/binary/tar-extractor.js +118 -0
  123. package/dist/cliproxy/binary/tar-extractor.js.map +1 -0
  124. package/dist/cliproxy/binary/types.d.ts +24 -0
  125. package/dist/cliproxy/binary/types.d.ts.map +1 -0
  126. package/dist/cliproxy/binary/types.js +14 -0
  127. package/dist/cliproxy/binary/types.js.map +1 -0
  128. package/dist/cliproxy/binary/updater.d.ts +7 -0
  129. package/dist/cliproxy/binary/updater.d.ts.map +1 -0
  130. package/dist/cliproxy/binary/updater.js +18 -0
  131. package/dist/cliproxy/binary/updater.js.map +1 -0
  132. package/dist/cliproxy/binary/verifier.d.ts +18 -0
  133. package/dist/cliproxy/binary/verifier.d.ts.map +1 -0
  134. package/dist/cliproxy/binary/verifier.js +82 -0
  135. package/dist/cliproxy/binary/verifier.js.map +1 -0
  136. package/dist/cliproxy/binary/version-cache.d.ts +46 -0
  137. package/dist/cliproxy/binary/version-cache.d.ts.map +1 -0
  138. package/dist/cliproxy/binary/version-cache.js +171 -0
  139. package/dist/cliproxy/binary/version-cache.js.map +1 -0
  140. package/dist/cliproxy/binary/version-checker.d.ts +19 -0
  141. package/dist/cliproxy/binary/version-checker.d.ts.map +1 -0
  142. package/dist/cliproxy/binary/version-checker.js +77 -0
  143. package/dist/cliproxy/binary/version-checker.js.map +1 -0
  144. package/dist/cliproxy/binary/zip-extractor.d.ts +9 -0
  145. package/dist/cliproxy/binary/zip-extractor.d.ts.map +1 -0
  146. package/dist/cliproxy/binary/zip-extractor.js +110 -0
  147. package/dist/cliproxy/binary/zip-extractor.js.map +1 -0
  148. package/dist/cliproxy/binary-manager.d.ts +16 -170
  149. package/dist/cliproxy/binary-manager.d.ts.map +1 -1
  150. package/dist/cliproxy/binary-manager.js +38 -865
  151. package/dist/cliproxy/binary-manager.js.map +1 -1
  152. package/dist/cliproxy/services/binary-service.d.ts +65 -0
  153. package/dist/cliproxy/services/binary-service.d.ts.map +1 -0
  154. package/dist/cliproxy/services/binary-service.js +140 -0
  155. package/dist/cliproxy/services/binary-service.js.map +1 -0
  156. package/dist/cliproxy/services/index.d.ts +8 -0
  157. package/dist/cliproxy/services/index.d.ts.map +1 -0
  158. package/dist/cliproxy/services/index.js +31 -0
  159. package/dist/cliproxy/services/index.js.map +1 -0
  160. package/dist/cliproxy/services/proxy-lifecycle-service.d.ts +38 -0
  161. package/dist/cliproxy/services/proxy-lifecycle-service.d.ts.map +1 -0
  162. package/dist/cliproxy/services/proxy-lifecycle-service.js +41 -0
  163. package/dist/cliproxy/services/proxy-lifecycle-service.js.map +1 -0
  164. package/dist/cliproxy/services/variant-config-adapter.d.ts +38 -0
  165. package/dist/cliproxy/services/variant-config-adapter.d.ts.map +1 -0
  166. package/dist/cliproxy/services/variant-config-adapter.js +172 -0
  167. package/dist/cliproxy/services/variant-config-adapter.js.map +1 -0
  168. package/dist/cliproxy/services/variant-service.d.ts +37 -0
  169. package/dist/cliproxy/services/variant-service.d.ts.map +1 -0
  170. package/dist/cliproxy/services/variant-service.js +128 -0
  171. package/dist/cliproxy/services/variant-service.js.map +1 -0
  172. package/dist/cliproxy/services/variant-settings.d.ts +32 -0
  173. package/dist/cliproxy/services/variant-settings.d.ts.map +1 -0
  174. package/dist/cliproxy/services/variant-settings.js +128 -0
  175. package/dist/cliproxy/services/variant-settings.js.map +1 -0
  176. package/dist/commands/api-command.d.ts +3 -6
  177. package/dist/commands/api-command.d.ts.map +1 -1
  178. package/dist/commands/api-command.js +84 -445
  179. package/dist/commands/api-command.js.map +1 -1
  180. package/dist/commands/cliproxy-command.d.ts +0 -3
  181. package/dist/commands/cliproxy-command.d.ts.map +1 -1
  182. package/dist/commands/cliproxy-command.js +182 -621
  183. package/dist/commands/cliproxy-command.js.map +1 -1
  184. package/dist/commands/index.d.ts +17 -0
  185. package/dist/commands/index.d.ts.map +1 -0
  186. package/dist/commands/index.js +33 -0
  187. package/dist/commands/index.js.map +1 -0
  188. package/dist/config/unified-config-loader.d.ts +7 -0
  189. package/dist/config/unified-config-loader.d.ts.map +1 -1
  190. package/dist/config/unified-config-loader.js +11 -1
  191. package/dist/config/unified-config-loader.js.map +1 -1
  192. package/dist/delegation/executor/index.d.ts +7 -0
  193. package/dist/delegation/executor/index.d.ts.map +1 -0
  194. package/dist/delegation/executor/index.js +28 -0
  195. package/dist/delegation/executor/index.js.map +1 -0
  196. package/dist/delegation/executor/result-aggregator.d.ts +30 -0
  197. package/dist/delegation/executor/result-aggregator.d.ts.map +1 -0
  198. package/dist/delegation/executor/result-aggregator.js +66 -0
  199. package/dist/delegation/executor/result-aggregator.js.map +1 -0
  200. package/dist/delegation/executor/stream-parser.d.ts +28 -0
  201. package/dist/delegation/executor/stream-parser.d.ts.map +1 -0
  202. package/dist/delegation/executor/stream-parser.js +140 -0
  203. package/dist/delegation/executor/stream-parser.js.map +1 -0
  204. package/dist/delegation/executor/types.d.ts +121 -0
  205. package/dist/delegation/executor/types.d.ts.map +1 -0
  206. package/dist/delegation/executor/types.js +6 -0
  207. package/dist/delegation/executor/types.js.map +1 -0
  208. package/dist/delegation/headless-executor.d.ts +13 -91
  209. package/dist/delegation/headless-executor.d.ts.map +1 -1
  210. package/dist/delegation/headless-executor.js +84 -291
  211. package/dist/delegation/headless-executor.js.map +1 -1
  212. package/dist/delegation/index.d.ts +11 -0
  213. package/dist/delegation/index.d.ts.map +1 -0
  214. package/dist/delegation/index.js +33 -0
  215. package/dist/delegation/index.js.map +1 -0
  216. package/dist/delegation/result-formatter.d.ts +1 -30
  217. package/dist/delegation/result-formatter.d.ts.map +1 -1
  218. package/dist/delegation/result-formatter.js.map +1 -1
  219. package/dist/errors/cleanup-registry.d.ts +64 -0
  220. package/dist/errors/cleanup-registry.d.ts.map +1 -0
  221. package/dist/errors/cleanup-registry.js +141 -0
  222. package/dist/errors/cleanup-registry.js.map +1 -0
  223. package/dist/errors/error-handler.d.ts +45 -0
  224. package/dist/errors/error-handler.d.ts.map +1 -0
  225. package/dist/errors/error-handler.js +150 -0
  226. package/dist/errors/error-handler.js.map +1 -0
  227. package/dist/errors/error-types.d.ts +102 -0
  228. package/dist/errors/error-types.d.ts.map +1 -0
  229. package/dist/errors/error-types.js +158 -0
  230. package/dist/errors/error-types.js.map +1 -0
  231. package/dist/errors/exit-codes.d.ts +49 -0
  232. package/dist/errors/exit-codes.d.ts.map +1 -0
  233. package/dist/errors/exit-codes.js +72 -0
  234. package/dist/errors/exit-codes.js.map +1 -0
  235. package/dist/errors/index.d.ts +29 -0
  236. package/dist/errors/index.d.ts.map +1 -0
  237. package/dist/errors/index.js +62 -0
  238. package/dist/errors/index.js.map +1 -0
  239. package/dist/glmt/glmt-transformer.d.ts +29 -248
  240. package/dist/glmt/glmt-transformer.d.ts.map +1 -1
  241. package/dist/glmt/glmt-transformer.js +63 -718
  242. package/dist/glmt/glmt-transformer.js.map +1 -1
  243. package/dist/glmt/index.d.ts +14 -0
  244. package/dist/glmt/index.d.ts.map +1 -0
  245. package/dist/glmt/index.js +41 -0
  246. package/dist/glmt/index.js.map +1 -0
  247. package/dist/glmt/pipeline/content-transformer.d.ts +39 -0
  248. package/dist/glmt/pipeline/content-transformer.d.ts.map +1 -0
  249. package/dist/glmt/pipeline/content-transformer.js +162 -0
  250. package/dist/glmt/pipeline/content-transformer.js.map +1 -0
  251. package/dist/glmt/pipeline/index.d.ts +12 -0
  252. package/dist/glmt/pipeline/index.d.ts.map +1 -0
  253. package/dist/glmt/pipeline/index.js +20 -0
  254. package/dist/glmt/pipeline/index.js.map +1 -0
  255. package/dist/glmt/pipeline/request-transformer.d.ts +31 -0
  256. package/dist/glmt/pipeline/request-transformer.d.ts.map +1 -0
  257. package/dist/glmt/pipeline/request-transformer.js +116 -0
  258. package/dist/glmt/pipeline/request-transformer.js.map +1 -0
  259. package/dist/glmt/pipeline/response-builder.d.ts +52 -0
  260. package/dist/glmt/pipeline/response-builder.d.ts.map +1 -0
  261. package/dist/glmt/pipeline/response-builder.js +205 -0
  262. package/dist/glmt/pipeline/response-builder.js.map +1 -0
  263. package/dist/glmt/pipeline/stream-parser.d.ts +59 -0
  264. package/dist/glmt/pipeline/stream-parser.d.ts.map +1 -0
  265. package/dist/glmt/pipeline/stream-parser.js +241 -0
  266. package/dist/glmt/pipeline/stream-parser.js.map +1 -0
  267. package/dist/glmt/pipeline/tool-call-handler.d.ts +22 -0
  268. package/dist/glmt/pipeline/tool-call-handler.d.ts.map +1 -0
  269. package/dist/glmt/pipeline/tool-call-handler.js +87 -0
  270. package/dist/glmt/pipeline/tool-call-handler.js.map +1 -0
  271. package/dist/glmt/pipeline/types.d.ts +159 -0
  272. package/dist/glmt/pipeline/types.d.ts.map +1 -0
  273. package/dist/glmt/pipeline/types.js +6 -0
  274. package/dist/glmt/pipeline/types.js.map +1 -0
  275. package/dist/management/checks/cliproxy-check.d.ts +37 -0
  276. package/dist/management/checks/cliproxy-check.d.ts.map +1 -0
  277. package/dist/management/checks/cliproxy-check.js +187 -0
  278. package/dist/management/checks/cliproxy-check.js.map +1 -0
  279. package/dist/management/checks/config-check.d.ts +27 -0
  280. package/dist/management/checks/config-check.d.ts.map +1 -0
  281. package/dist/management/checks/config-check.js +158 -0
  282. package/dist/management/checks/config-check.js.map +1 -0
  283. package/dist/management/checks/env-check.d.ts +17 -0
  284. package/dist/management/checks/env-check.d.ts.map +1 -0
  285. package/dist/management/checks/env-check.js +71 -0
  286. package/dist/management/checks/env-check.js.map +1 -0
  287. package/dist/management/checks/index.d.ts +12 -0
  288. package/dist/management/checks/index.d.ts.map +1 -0
  289. package/dist/management/checks/index.js +48 -0
  290. package/dist/management/checks/index.js.map +1 -0
  291. package/dist/management/checks/oauth-check.d.ts +16 -0
  292. package/dist/management/checks/oauth-check.d.ts.map +1 -0
  293. package/dist/management/checks/oauth-check.js +68 -0
  294. package/dist/management/checks/oauth-check.js.map +1 -0
  295. package/dist/management/checks/profile-check.d.ts +36 -0
  296. package/dist/management/checks/profile-check.d.ts.map +1 -0
  297. package/dist/management/checks/profile-check.js +165 -0
  298. package/dist/management/checks/profile-check.js.map +1 -0
  299. package/dist/management/checks/symlink-check.d.ts +30 -0
  300. package/dist/management/checks/symlink-check.d.ts.map +1 -0
  301. package/dist/management/checks/symlink-check.js +204 -0
  302. package/dist/management/checks/symlink-check.js.map +1 -0
  303. package/dist/management/checks/system-check.d.ts +25 -0
  304. package/dist/management/checks/system-check.d.ts.map +1 -0
  305. package/dist/management/checks/system-check.js +136 -0
  306. package/dist/management/checks/system-check.js.map +1 -0
  307. package/dist/management/checks/types.d.ts +64 -0
  308. package/dist/management/checks/types.d.ts.map +1 -0
  309. package/dist/management/checks/types.js +63 -0
  310. package/dist/management/checks/types.js.map +1 -0
  311. package/dist/management/doctor.d.ts +3 -92
  312. package/dist/management/doctor.d.ts.map +1 -1
  313. package/dist/management/doctor.js +15 -831
  314. package/dist/management/doctor.js.map +1 -1
  315. package/dist/management/index.d.ts +15 -0
  316. package/dist/management/index.d.ts.map +1 -0
  317. package/dist/management/index.js +56 -0
  318. package/dist/management/index.js.map +1 -0
  319. package/dist/management/repair/auto-repair.d.ts +13 -0
  320. package/dist/management/repair/auto-repair.d.ts.map +1 -0
  321. package/dist/management/repair/auto-repair.js +170 -0
  322. package/dist/management/repair/auto-repair.js.map +1 -0
  323. package/dist/management/repair/index.d.ts +5 -0
  324. package/dist/management/repair/index.d.ts.map +1 -0
  325. package/dist/management/repair/index.js +9 -0
  326. package/dist/management/repair/index.js.map +1 -0
  327. package/dist/types/delegation.d.ts +1 -13
  328. package/dist/types/delegation.d.ts.map +1 -1
  329. package/dist/types/utils.d.ts +27 -0
  330. package/dist/types/utils.d.ts.map +1 -1
  331. package/dist/ui/assets/{accounts-p1_nf0Jy.js → accounts-BqDNXZu4.js} +1 -1
  332. package/dist/ui/assets/analytics-DQMyOsqI.js +1 -0
  333. package/dist/ui/assets/api-Bzyq4XP7.js +1 -0
  334. package/dist/ui/assets/{card-CCDc-Mx9.js → card-CIN0KDsX.js} +1 -1
  335. package/dist/ui/assets/cliproxy-5iKdPrEG.js +3 -0
  336. package/dist/ui/assets/cliproxy-control-panel-CJ2CfYod.js +1 -0
  337. package/dist/ui/assets/{code-editor-Br9x-r-E.js → code-editor-CDmNFLQ6.js} +1 -1
  338. package/dist/ui/assets/confirm-dialog-CaiDQikc.js +1 -0
  339. package/dist/ui/assets/copilot-nS6iAyk2.js +4 -0
  340. package/dist/ui/assets/form-utils-DP6ILe7Z.js +20 -0
  341. package/dist/ui/assets/health-DYOQfC7u.js +1 -0
  342. package/dist/ui/assets/{icons-BOsxPbiD.js → icons-ZmwVoUeR.js} +1 -1
  343. package/dist/ui/assets/index-C6Dah-xh.js +46 -0
  344. package/dist/ui/assets/index-It66SkKf.css +1 -0
  345. package/dist/ui/assets/{radix-ui-DFHQr9A5.js → radix-ui-CV3R9pD6.js} +3 -3
  346. package/dist/ui/assets/settings-DABC9b5G.js +1 -0
  347. package/dist/ui/assets/{shared-BfYhSN4-.js → shared-BwU4OKQc.js} +1 -1
  348. package/dist/ui/assets/{switch-CMk95lwf.js → switch-BQ6sBBUv.js} +1 -1
  349. package/dist/ui/assets/{tanstack-C4gT2P7V.js → tanstack-Df9bCj5R.js} +1 -1
  350. package/dist/ui/index.html +6 -6
  351. package/dist/utils/claude-spawner.d.ts +54 -0
  352. package/dist/utils/claude-spawner.d.ts.map +1 -0
  353. package/dist/utils/claude-spawner.js +118 -0
  354. package/dist/utils/claude-spawner.js.map +1 -0
  355. package/dist/utils/delegation-validator.d.ts +8 -4
  356. package/dist/utils/delegation-validator.d.ts.map +1 -1
  357. package/dist/utils/delegation-validator.js.map +1 -1
  358. package/dist/utils/helpers.d.ts +0 -11
  359. package/dist/utils/helpers.d.ts.map +1 -1
  360. package/dist/utils/helpers.js +1 -57
  361. package/dist/utils/helpers.js.map +1 -1
  362. package/dist/utils/index.d.ts +15 -0
  363. package/dist/utils/index.d.ts.map +1 -0
  364. package/dist/utils/index.js +50 -0
  365. package/dist/utils/index.js.map +1 -0
  366. package/dist/utils/time.d.ts +10 -0
  367. package/dist/utils/time.d.ts.map +1 -0
  368. package/dist/utils/time.js +27 -0
  369. package/dist/utils/time.js.map +1 -0
  370. package/dist/utils/ui/boxes.d.ts +24 -0
  371. package/dist/utils/ui/boxes.d.ts.map +1 -0
  372. package/dist/utils/ui/boxes.js +108 -0
  373. package/dist/utils/ui/boxes.js.map +1 -0
  374. package/dist/utils/ui/colors.d.ts +25 -0
  375. package/dist/utils/ui/colors.d.ts.map +1 -0
  376. package/dist/utils/ui/colors.js +70 -0
  377. package/dist/utils/ui/colors.js.map +1 -0
  378. package/dist/utils/ui/index.d.ts +51 -0
  379. package/dist/utils/ui/index.d.ts.map +1 -0
  380. package/dist/utils/ui/index.js +96 -0
  381. package/dist/utils/ui/index.js.map +1 -0
  382. package/dist/utils/ui/indicators.d.ts +23 -0
  383. package/dist/utils/ui/indicators.d.ts.map +1 -0
  384. package/dist/utils/ui/indicators.js +39 -0
  385. package/dist/utils/ui/indicators.js.map +1 -0
  386. package/dist/utils/ui/init.d.ts +30 -0
  387. package/dist/utils/ui/init.d.ts.map +1 -0
  388. package/dist/utils/ui/init.js +102 -0
  389. package/dist/utils/ui/init.js.map +1 -0
  390. package/dist/utils/ui/spinner.d.ts +13 -0
  391. package/dist/utils/ui/spinner.d.ts.map +1 -0
  392. package/dist/utils/ui/spinner.js +89 -0
  393. package/dist/utils/ui/spinner.js.map +1 -0
  394. package/dist/utils/ui/tables.d.ts +12 -0
  395. package/dist/utils/ui/tables.d.ts.map +1 -0
  396. package/dist/utils/ui/tables.js +69 -0
  397. package/dist/utils/ui/tables.js.map +1 -0
  398. package/dist/utils/ui/tasks.d.ts +26 -0
  399. package/dist/utils/ui/tasks.d.ts.map +1 -0
  400. package/dist/utils/ui/tasks.js +102 -0
  401. package/dist/utils/ui/tasks.js.map +1 -0
  402. package/dist/utils/ui/text.d.ts +24 -0
  403. package/dist/utils/ui/text.d.ts.map +1 -0
  404. package/dist/utils/ui/text.js +60 -0
  405. package/dist/utils/ui/text.js.map +1 -0
  406. package/dist/utils/ui/types.d.ts +36 -0
  407. package/dist/utils/ui/types.d.ts.map +1 -0
  408. package/dist/utils/ui/types.js +33 -0
  409. package/dist/utils/ui/types.js.map +1 -0
  410. package/dist/utils/ui.d.ts +3 -138
  411. package/dist/utils/ui.d.ts.map +1 -1
  412. package/dist/utils/ui.js +40 -567
  413. package/dist/utils/ui.js.map +1 -1
  414. package/dist/utils/websearch/gemini-cli.d.ts +36 -0
  415. package/dist/utils/websearch/gemini-cli.d.ts.map +1 -0
  416. package/dist/utils/websearch/gemini-cli.js +132 -0
  417. package/dist/utils/websearch/gemini-cli.js.map +1 -0
  418. package/dist/utils/websearch/grok-cli.d.ts +26 -0
  419. package/dist/utils/websearch/grok-cli.d.ts.map +1 -0
  420. package/dist/utils/websearch/grok-cli.js +81 -0
  421. package/dist/utils/websearch/grok-cli.js.map +1 -0
  422. package/dist/utils/websearch/hook-config.d.ts +21 -0
  423. package/dist/utils/websearch/hook-config.d.ts.map +1 -0
  424. package/dist/utils/websearch/hook-config.js +183 -0
  425. package/dist/utils/websearch/hook-config.js.map +1 -0
  426. package/dist/utils/websearch/hook-env.d.ts +16 -0
  427. package/dist/utils/websearch/hook-env.d.ts.map +1 -0
  428. package/dist/utils/websearch/hook-env.js +62 -0
  429. package/dist/utils/websearch/hook-env.js.map +1 -0
  430. package/dist/utils/websearch/hook-installer.d.ts +27 -0
  431. package/dist/utils/websearch/hook-installer.d.ts.map +1 -0
  432. package/dist/utils/websearch/hook-installer.js +141 -0
  433. package/dist/utils/websearch/hook-installer.js.map +1 -0
  434. package/dist/utils/websearch/index.d.ts +15 -0
  435. package/dist/utils/websearch/index.d.ts.map +1 -0
  436. package/dist/utils/websearch/index.js +44 -0
  437. package/dist/utils/websearch/index.js.map +1 -0
  438. package/dist/utils/websearch/opencode-cli.d.ts +26 -0
  439. package/dist/utils/websearch/opencode-cli.d.ts.map +1 -0
  440. package/dist/utils/websearch/opencode-cli.js +81 -0
  441. package/dist/utils/websearch/opencode-cli.js.map +1 -0
  442. package/dist/utils/websearch/status.d.ts +35 -0
  443. package/dist/utils/websearch/status.d.ts.map +1 -0
  444. package/dist/utils/websearch/status.js +185 -0
  445. package/dist/utils/websearch/status.js.map +1 -0
  446. package/dist/utils/websearch/types.d.ts +85 -0
  447. package/dist/utils/websearch/types.d.ts.map +1 -0
  448. package/dist/utils/websearch/types.js +10 -0
  449. package/dist/utils/websearch/types.js.map +1 -0
  450. package/dist/utils/websearch-manager.d.ts +7 -186
  451. package/dist/utils/websearch-manager.d.ts.map +1 -1
  452. package/dist/utils/websearch-manager.js +37 -710
  453. package/dist/utils/websearch-manager.js.map +1 -1
  454. package/dist/web-server/data-aggregator.d.ts +3 -51
  455. package/dist/web-server/data-aggregator.d.ts.map +1 -1
  456. package/dist/web-server/data-aggregator.js +18 -386
  457. package/dist/web-server/data-aggregator.js.map +1 -1
  458. package/dist/web-server/health/cliproxy-checks.d.ts +23 -0
  459. package/dist/web-server/health/cliproxy-checks.d.ts.map +1 -0
  460. package/dist/web-server/health/cliproxy-checks.js +145 -0
  461. package/dist/web-server/health/cliproxy-checks.js.map +1 -0
  462. package/dist/web-server/health/config-checks.d.ts +19 -0
  463. package/dist/web-server/health/config-checks.d.ts.map +1 -0
  464. package/dist/web-server/health/config-checks.js +174 -0
  465. package/dist/web-server/health/config-checks.js.map +1 -0
  466. package/dist/web-server/health/environment-checks.d.ts +11 -0
  467. package/dist/web-server/health/environment-checks.d.ts.map +1 -0
  468. package/dist/web-server/health/environment-checks.js +40 -0
  469. package/dist/web-server/health/environment-checks.js.map +1 -0
  470. package/dist/web-server/health/index.d.ts +13 -0
  471. package/dist/web-server/health/index.d.ts.map +1 -0
  472. package/dist/web-server/health/index.js +41 -0
  473. package/dist/web-server/health/index.js.map +1 -0
  474. package/dist/web-server/health/oauth-checks.d.ts +11 -0
  475. package/dist/web-server/health/oauth-checks.d.ts.map +1 -0
  476. package/dist/web-server/health/oauth-checks.js +34 -0
  477. package/dist/web-server/health/oauth-checks.js.map +1 -0
  478. package/dist/web-server/health/profile-checks.d.ts +19 -0
  479. package/dist/web-server/health/profile-checks.d.ts.map +1 -0
  480. package/dist/web-server/health/profile-checks.js +152 -0
  481. package/dist/web-server/health/profile-checks.js.map +1 -0
  482. package/dist/web-server/health/symlink-checks.d.ts +15 -0
  483. package/dist/web-server/health/symlink-checks.d.ts.map +1 -0
  484. package/dist/web-server/health/symlink-checks.js +173 -0
  485. package/dist/web-server/health/symlink-checks.js.map +1 -0
  486. package/dist/web-server/health/system-checks.d.ts +19 -0
  487. package/dist/web-server/health/system-checks.d.ts.map +1 -0
  488. package/dist/web-server/health/system-checks.js +127 -0
  489. package/dist/web-server/health/system-checks.js.map +1 -0
  490. package/dist/web-server/health/types.d.ts +34 -0
  491. package/dist/web-server/health/types.d.ts.map +1 -0
  492. package/dist/web-server/health/types.js +8 -0
  493. package/dist/web-server/health/types.js.map +1 -0
  494. package/dist/web-server/health/websearch-checks.d.ts +11 -0
  495. package/dist/web-server/health/websearch-checks.d.ts.map +1 -0
  496. package/dist/web-server/health/websearch-checks.js +53 -0
  497. package/dist/web-server/health/websearch-checks.js.map +1 -0
  498. package/dist/web-server/health-service.d.ts +4 -30
  499. package/dist/web-server/health-service.d.ts.map +1 -1
  500. package/dist/web-server/health-service.js +28 -695
  501. package/dist/web-server/health-service.js.map +1 -1
  502. package/dist/web-server/index.d.ts.map +1 -1
  503. package/dist/web-server/index.js +2 -5
  504. package/dist/web-server/index.js.map +1 -1
  505. package/dist/web-server/routes/cliproxy-auth-routes.d.ts +6 -0
  506. package/dist/web-server/routes/cliproxy-auth-routes.d.ts.map +1 -0
  507. package/dist/web-server/routes/cliproxy-auth-routes.js +202 -0
  508. package/dist/web-server/routes/cliproxy-auth-routes.js.map +1 -0
  509. package/dist/web-server/routes/cliproxy-stats-routes.d.ts +6 -0
  510. package/dist/web-server/routes/cliproxy-stats-routes.d.ts.map +1 -0
  511. package/dist/web-server/routes/cliproxy-stats-routes.js +253 -0
  512. package/dist/web-server/routes/cliproxy-stats-routes.js.map +1 -0
  513. package/dist/web-server/routes/config-routes.d.ts +6 -0
  514. package/dist/web-server/routes/config-routes.d.ts.map +1 -0
  515. package/dist/web-server/routes/config-routes.js +145 -0
  516. package/dist/web-server/routes/config-routes.js.map +1 -0
  517. package/dist/web-server/routes/copilot-routes.d.ts +6 -0
  518. package/dist/web-server/routes/copilot-routes.d.ts.map +1 -0
  519. package/dist/web-server/routes/copilot-routes.js +195 -0
  520. package/dist/web-server/routes/copilot-routes.js.map +1 -0
  521. package/dist/web-server/routes/copilot-settings-routes.d.ts +6 -0
  522. package/dist/web-server/routes/copilot-settings-routes.d.ts.map +1 -0
  523. package/dist/web-server/routes/copilot-settings-routes.js +122 -0
  524. package/dist/web-server/routes/copilot-settings-routes.js.map +1 -0
  525. package/dist/web-server/routes/health-routes.d.ts +6 -0
  526. package/dist/web-server/routes/health-routes.d.ts.map +1 -0
  527. package/dist/web-server/routes/health-routes.js +30 -0
  528. package/dist/web-server/routes/health-routes.js.map +1 -0
  529. package/dist/web-server/routes/index.d.ts +8 -0
  530. package/dist/web-server/routes/index.d.ts.map +1 -0
  531. package/dist/web-server/routes/index.js +54 -0
  532. package/dist/web-server/routes/index.js.map +1 -0
  533. package/dist/web-server/routes/misc-routes.d.ts +6 -0
  534. package/dist/web-server/routes/misc-routes.d.ts.map +1 -0
  535. package/dist/web-server/routes/misc-routes.js +219 -0
  536. package/dist/web-server/routes/misc-routes.js.map +1 -0
  537. package/dist/web-server/routes/profile-routes.d.ts +6 -0
  538. package/dist/web-server/routes/profile-routes.d.ts.map +1 -0
  539. package/dist/web-server/routes/profile-routes.js +164 -0
  540. package/dist/web-server/routes/profile-routes.js.map +1 -0
  541. package/dist/web-server/routes/provider-routes.d.ts +6 -0
  542. package/dist/web-server/routes/provider-routes.d.ts.map +1 -0
  543. package/dist/web-server/routes/provider-routes.js +146 -0
  544. package/dist/web-server/routes/provider-routes.js.map +1 -0
  545. package/dist/web-server/routes/route-helpers.d.ts +55 -0
  546. package/dist/web-server/routes/route-helpers.d.ts.map +1 -0
  547. package/dist/web-server/routes/route-helpers.js +201 -0
  548. package/dist/web-server/routes/route-helpers.js.map +1 -0
  549. package/dist/web-server/routes/settings-routes.d.ts +6 -0
  550. package/dist/web-server/routes/settings-routes.d.ts.map +1 -0
  551. package/dist/web-server/routes/settings-routes.js +207 -0
  552. package/dist/web-server/routes/settings-routes.js.map +1 -0
  553. package/dist/web-server/routes/variant-routes.d.ts +6 -0
  554. package/dist/web-server/routes/variant-routes.d.ts.map +1 -0
  555. package/dist/web-server/routes/variant-routes.js +158 -0
  556. package/dist/web-server/routes/variant-routes.js.map +1 -0
  557. package/dist/web-server/routes/websearch-routes.d.ts +6 -0
  558. package/dist/web-server/routes/websearch-routes.d.ts.map +1 -0
  559. package/dist/web-server/routes/websearch-routes.js +130 -0
  560. package/dist/web-server/routes/websearch-routes.js.map +1 -0
  561. package/dist/web-server/services/index.d.ts +7 -0
  562. package/dist/web-server/services/index.d.ts.map +1 -0
  563. package/dist/web-server/services/index.js +21 -0
  564. package/dist/web-server/services/index.js.map +1 -0
  565. package/dist/web-server/services/usage-aggregator.d.ts +7 -0
  566. package/dist/web-server/services/usage-aggregator.d.ts.map +1 -0
  567. package/dist/web-server/services/usage-aggregator.js +23 -0
  568. package/dist/web-server/services/usage-aggregator.js.map +1 -0
  569. package/dist/web-server/usage/aggregator.d.ts +54 -0
  570. package/dist/web-server/usage/aggregator.d.ts.map +1 -0
  571. package/dist/web-server/usage/aggregator.js +470 -0
  572. package/dist/web-server/usage/aggregator.js.map +1 -0
  573. package/dist/web-server/usage/data-aggregator.d.ts +55 -0
  574. package/dist/web-server/usage/data-aggregator.d.ts.map +1 -0
  575. package/dist/web-server/usage/data-aggregator.js +391 -0
  576. package/dist/web-server/usage/data-aggregator.js.map +1 -0
  577. package/dist/web-server/usage/disk-cache.d.ts +46 -0
  578. package/dist/web-server/usage/disk-cache.d.ts.map +1 -0
  579. package/dist/web-server/usage/disk-cache.js +162 -0
  580. package/dist/web-server/usage/disk-cache.js.map +1 -0
  581. package/dist/web-server/usage/handlers.d.ts +50 -0
  582. package/dist/web-server/usage/handlers.d.ts.map +1 -0
  583. package/dist/web-server/usage/handlers.js +524 -0
  584. package/dist/web-server/usage/handlers.js.map +1 -0
  585. package/dist/web-server/usage/index.d.ts +12 -0
  586. package/dist/web-server/usage/index.d.ts.map +1 -0
  587. package/dist/web-server/usage/index.js +54 -0
  588. package/dist/web-server/usage/index.js.map +1 -0
  589. package/dist/web-server/usage/routes.d.ts +11 -0
  590. package/dist/web-server/usage/routes.d.ts.map +1 -0
  591. package/dist/web-server/usage/routes.js +37 -0
  592. package/dist/web-server/usage/routes.js.map +1 -0
  593. package/dist/web-server/usage/types.d.ts +119 -0
  594. package/dist/web-server/usage/types.d.ts.map +1 -0
  595. package/dist/web-server/usage/types.js +9 -0
  596. package/dist/web-server/usage/types.js.map +1 -0
  597. package/dist/web-server/usage-disk-cache.d.ts +3 -42
  598. package/dist/web-server/usage-disk-cache.d.ts.map +1 -1
  599. package/dist/web-server/usage-disk-cache.js +5 -144
  600. package/dist/web-server/usage-disk-cache.js.map +1 -1
  601. package/dist/web-server/usage-routes.d.ts +3 -31
  602. package/dist/web-server/usage-routes.d.ts.map +1 -1
  603. package/dist/web-server/usage-routes.js +8 -1139
  604. package/dist/web-server/usage-routes.js.map +1 -1
  605. package/dist/web-server/usage-types.d.ts +3 -115
  606. package/dist/web-server/usage-types.d.ts.map +1 -1
  607. package/dist/web-server/usage-types.js +17 -3
  608. package/dist/web-server/usage-types.js.map +1 -1
  609. package/package.json +1 -1
  610. package/dist/ui/assets/analytics-D1k2nYcF.js +0 -1
  611. package/dist/ui/assets/api-D9VVmZ1j.js +0 -1
  612. package/dist/ui/assets/cliproxy-CTt_Nsft.js +0 -1
  613. package/dist/ui/assets/cliproxy-control-panel-DKMAi4_4.js +0 -1
  614. package/dist/ui/assets/copilot-C6F8PT_L.js +0 -4
  615. package/dist/ui/assets/form-utils-BuXDJb0w.js +0 -20
  616. package/dist/ui/assets/health-DiAvJaSn.js +0 -1
  617. package/dist/ui/assets/index-Brq6EBKZ.css +0 -1
  618. package/dist/ui/assets/index-ByU8ZhED.js +0 -48
  619. package/dist/ui/assets/settings-CEomZLGl.js +0 -1
  620. package/dist/web-server/routes.d.ts +0 -7
  621. package/dist/web-server/routes.d.ts.map +0 -1
  622. package/dist/web-server/routes.js +0 -1891
  623. package/dist/web-server/routes.js.map +0 -1
@@ -1,5 +1,9 @@
1
1
  #!/usr/bin/env node
2
2
  "use strict";
3
+ /**
4
+ * Headless executor for Claude CLI delegation
5
+ * Spawns claude with -p flag for single-turn execution
6
+ */
3
7
  var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
4
8
  if (k2 === undefined) k2 = k;
5
9
  var desc = Object.getOwnPropertyDescriptor(m, k);
@@ -32,9 +36,10 @@ const fs = __importStar(require("fs"));
32
36
  const session_manager_1 = require("./session-manager");
33
37
  const settings_parser_1 = require("./settings-parser");
34
38
  const ui_1 = require("../utils/ui");
39
+ const stream_parser_1 = require("./executor/stream-parser");
40
+ const result_aggregator_1 = require("./executor/result-aggregator");
35
41
  /**
36
42
  * Headless executor for Claude CLI delegation
37
- * Spawns claude with -p flag for single-turn execution
38
43
  */
39
44
  class HeadlessExecutor {
40
45
  /**
@@ -63,21 +68,17 @@ class HeadlessExecutor {
63
68
  throw new Error(`Settings file not found: ${settingsPath}\nProfile "${profile}" may not be configured.`);
64
69
  }
65
70
  // Smart slash command detection and preservation
66
- // Detects if prompt contains slash command and restructures for proper execution
67
71
  const processedPrompt = this._processSlashCommand(enhancedPrompt);
68
72
  // Prepare arguments
69
73
  const args = ['-p', processedPrompt, '--settings', settingsPath];
70
74
  // Always use stream-json for real-time progress visibility
71
- // Note: --verbose is required when using --print with stream-json
72
75
  args.push('--output-format', 'stream-json', '--verbose');
73
76
  // Add permission mode
74
77
  if (permissionMode && permissionMode !== 'default') {
75
78
  if (permissionMode === 'bypassPermissions') {
76
79
  args.push('--dangerously-skip-permissions');
77
- // Warn about dangerous mode
78
80
  if (process.env.CCS_DEBUG) {
79
81
  console.warn((0, ui_1.warn)('WARNING: Using --dangerously-skip-permissions mode'));
80
- console.warn((0, ui_1.warn)('This bypasses ALL permission checks. Use only in trusted environments.'));
81
82
  }
82
83
  }
83
84
  else {
@@ -90,17 +91,12 @@ class HeadlessExecutor {
90
91
  if (lastSession) {
91
92
  args.push('--resume', lastSession.sessionId);
92
93
  if (process.env.CCS_DEBUG) {
93
- const cost = lastSession.totalCost !== undefined && lastSession.totalCost !== null
94
- ? lastSession.totalCost.toFixed(4)
95
- : '0.0000';
96
- console.error((0, ui_1.info)(`Resuming session: ${lastSession.sessionId} (${lastSession.turns} turns, $${cost})`));
94
+ const cost = lastSession.totalCost?.toFixed(4) || '0.0000';
95
+ console.error((0, ui_1.info)(`Resuming session: ${lastSession.sessionId} ($${cost})`));
97
96
  }
98
97
  }
99
98
  else if (sessionId) {
100
99
  args.push('--resume', sessionId);
101
- if (process.env.CCS_DEBUG) {
102
- console.error((0, ui_1.info)(`Resuming specific session: ${sessionId}`));
103
- }
104
100
  }
105
101
  else {
106
102
  console.warn((0, ui_1.warn)('No previous session found, starting new session'));
@@ -108,37 +104,43 @@ class HeadlessExecutor {
108
104
  }
109
105
  else if (sessionId) {
110
106
  args.push('--resume', sessionId);
111
- if (process.env.CCS_DEBUG) {
112
- console.error((0, ui_1.info)(`Resuming specific session: ${sessionId}`));
113
- }
114
107
  }
115
108
  // Add tool restrictions from settings
116
109
  const toolRestrictions = settings_parser_1.SettingsParser.parseToolRestrictions(cwd);
117
110
  if (toolRestrictions.allowedTools.length > 0) {
118
- args.push('--allowedTools');
119
- toolRestrictions.allowedTools.forEach((tool) => args.push(tool));
111
+ args.push('--allowedTools', ...toolRestrictions.allowedTools);
120
112
  }
121
113
  if (toolRestrictions.disallowedTools.length > 0) {
122
- args.push('--disallowedTools');
123
- toolRestrictions.disallowedTools.forEach((tool) => args.push(tool));
114
+ args.push('--disallowedTools', ...toolRestrictions.disallowedTools);
124
115
  }
125
- // Note: No max-turns limit - using time-based limits instead (default 10min timeout)
126
- // Passthrough extra args (from Claude CLI flags like --agent, --system-prompt-file, etc.)
116
+ // Passthrough extra args
127
117
  if (extraArgs.length > 0) {
128
118
  args.push(...extraArgs);
129
119
  }
130
- // Debug log args
131
120
  if (process.env.CCS_DEBUG) {
132
121
  console.error((0, ui_1.info)(`Claude CLI args: ${args.join(' ')}`));
133
122
  }
134
123
  // Initialize UI before spawning
135
124
  await ui_1.ui.init();
136
125
  // Execute with spawn
126
+ return this._spawnAndExecute(claudeCli, args, {
127
+ cwd,
128
+ profile,
129
+ timeout,
130
+ resumeSession,
131
+ sessionId,
132
+ sessionMgr,
133
+ });
134
+ }
135
+ /**
136
+ * Spawn Claude CLI and handle execution
137
+ */
138
+ static _spawnAndExecute(claudeCli, args, ctx) {
139
+ const { cwd, profile, timeout, resumeSession, sessionId, sessionMgr } = ctx;
137
140
  return new Promise((resolve, reject) => {
138
141
  const startTime = Date.now();
139
- // Show progress unless explicitly disabled with CCS_QUIET
140
142
  const showProgress = !process.env.CCS_QUIET;
141
- // Show initial progress message
143
+ const streamBuffer = new stream_parser_1.StreamBuffer();
142
144
  if (showProgress) {
143
145
  const modelName = profile === 'glm' ? 'GLM-4.6' : profile === 'kimi' ? 'Kimi' : profile.toUpperCase();
144
146
  console.error(ui_1.ui.info(`Delegating to ${modelName}...`));
@@ -151,416 +153,207 @@ class HeadlessExecutor {
151
153
  let stdout = '';
152
154
  let stderr = '';
153
155
  let progressInterval;
154
- const messages = []; // Accumulate stream-json messages
155
- let partialLine = ''; // Buffer for incomplete JSON lines
156
- // Handle parent process termination (Ctrl+C or Esc in Claude)
157
- // When main Claude session is killed, cleanup spawned child process
156
+ const messages = [];
157
+ let timedOut = false;
158
+ // Setup signal handlers for cleanup
158
159
  const cleanupHandler = () => {
159
160
  if (!proc.killed) {
160
- if (process.env.CCS_DEBUG) {
161
- console.error((0, ui_1.warn)('Parent process terminating, killing delegated session...'));
162
- }
163
161
  proc.kill('SIGTERM');
164
- // Force kill if not dead after 2s
165
162
  setTimeout(() => {
166
- if (!proc.killed) {
163
+ if (!proc.killed)
167
164
  proc.kill('SIGKILL');
168
- }
169
165
  }, 2000);
170
166
  }
171
167
  };
172
- // Register signal handlers for parent process termination
173
168
  process.once('SIGINT', cleanupHandler);
174
169
  process.once('SIGTERM', cleanupHandler);
175
- // Cleanup signal handlers when child process exits
176
170
  const removeSignalHandlers = () => {
177
171
  process.removeListener('SIGINT', cleanupHandler);
178
172
  process.removeListener('SIGTERM', cleanupHandler);
179
173
  };
180
174
  proc.on('close', removeSignalHandlers);
181
175
  proc.on('error', removeSignalHandlers);
182
- // Progress indicator (show elapsed time every 5 seconds)
176
+ // Progress indicator
183
177
  if (showProgress) {
184
178
  progressInterval = setInterval(() => {
185
179
  const elapsed = ((Date.now() - startTime) / 1000).toFixed(1);
186
180
  process.stderr.write(`${ui_1.ui.info(`Still running... ${elapsed}s elapsed`)}\r`);
187
181
  }, 5000);
188
182
  }
189
- // Capture stdout (stream-json format - jsonl)
183
+ // Capture stdout (stream-json format)
190
184
  proc.stdout?.on('data', (data) => {
191
185
  const dataStr = data.toString();
192
186
  stdout += dataStr;
193
- // Parse stream-json messages (jsonl format - one JSON per line)
194
- const chunk = partialLine + dataStr;
195
- const lines = chunk.split('\n');
196
- partialLine = lines.pop() || ''; // Save incomplete line for next chunk
197
- for (const line of lines) {
198
- if (!line.trim())
199
- continue;
200
- try {
201
- const msg = JSON.parse(line);
202
- messages.push(msg);
203
- // Show real-time tool use with verbose details
204
- if (showProgress && msg.type === 'assistant') {
205
- const toolUses = msg.message?.content?.filter((c) => c.type === 'tool_use') || [];
206
- for (const tool of toolUses) {
207
- process.stderr.write('\r\x1b[K'); // Clear line
208
- // Show verbose tool use with description/input if available
209
- const toolInput = tool.input || {};
210
- let verboseMsg = `[Tool] ${tool.name}`;
211
- // Add context based on tool type (all Claude Code tools)
212
- switch (tool.name) {
213
- case 'Bash':
214
- if (toolInput.command) {
215
- // Truncate long commands
216
- const command = toolInput.command;
217
- const cmd = command.length > 80 ? command.substring(0, 77) + '...' : command;
218
- verboseMsg += `: ${cmd}`;
219
- }
220
- break;
221
- case 'Edit':
222
- case 'Write':
223
- case 'Read':
224
- if (toolInput.file_path) {
225
- verboseMsg += `: ${toolInput.file_path}`;
226
- }
227
- break;
228
- case 'NotebookEdit':
229
- case 'NotebookRead':
230
- if (toolInput.notebook_path) {
231
- verboseMsg += `: ${toolInput.notebook_path}`;
232
- }
233
- break;
234
- case 'Grep':
235
- if (toolInput.pattern) {
236
- verboseMsg += `: searching for "${toolInput.pattern}"`;
237
- if (toolInput.path) {
238
- verboseMsg += ` in ${toolInput.path}`;
239
- }
240
- }
241
- break;
242
- case 'Glob':
243
- if (toolInput.pattern) {
244
- verboseMsg += `: ${toolInput.pattern}`;
245
- }
246
- break;
247
- case 'SlashCommand':
248
- if (toolInput.command) {
249
- verboseMsg += `: ${toolInput.command}`;
250
- }
251
- break;
252
- case 'Task':
253
- if (toolInput.description) {
254
- verboseMsg += `: ${toolInput.description}`;
255
- }
256
- else if (toolInput.prompt) {
257
- const promptText = toolInput.prompt;
258
- const prompt = promptText.length > 60 ? promptText.substring(0, 57) + '...' : promptText;
259
- verboseMsg += `: ${prompt}`;
260
- }
261
- break;
262
- case 'TodoWrite':
263
- if (toolInput.todos && Array.isArray(toolInput.todos)) {
264
- // Show in_progress task instead of just count
265
- const inProgressTask = toolInput.todos.find((t) => t.status === 'in_progress');
266
- if (inProgressTask && inProgressTask.activeForm) {
267
- verboseMsg += `: ${inProgressTask.activeForm}`;
268
- }
269
- else {
270
- // Fallback to count if no in_progress task
271
- verboseMsg += `: ${toolInput.todos.length} task(s)`;
272
- }
273
- }
274
- break;
275
- case 'WebFetch':
276
- if (toolInput.url) {
277
- verboseMsg += `: ${toolInput.url}`;
278
- }
279
- break;
280
- case 'WebSearch':
281
- if (toolInput.query) {
282
- verboseMsg += `: "${toolInput.query}"`;
283
- }
284
- break;
285
- default:
286
- // For unknown tools, show first meaningful parameter
287
- if (Object.keys(toolInput).length > 0) {
288
- const firstKey = Object.keys(toolInput)[0];
289
- const firstValue = toolInput[firstKey];
290
- if (typeof firstValue === 'string' && firstValue.length < 60) {
291
- verboseMsg += `: ${firstValue}`;
292
- }
293
- }
294
- }
295
- process.stderr.write(`${verboseMsg}\n`);
296
- }
297
- }
298
- }
299
- catch (parseError) {
300
- // Skip malformed JSON lines (shouldn't happen with stream-json)
301
- if (process.env.CCS_DEBUG) {
302
- console.error((0, ui_1.warn)(`Failed to parse stream-json line: ${parseError.message}`));
187
+ const parsedMessages = streamBuffer.parseChunk(dataStr);
188
+ for (const msg of parsedMessages) {
189
+ messages.push(msg);
190
+ // Show real-time tool use
191
+ if (showProgress && msg.type === 'assistant') {
192
+ const toolUses = msg.message?.content?.filter((c) => c.type === 'tool_use') || [];
193
+ for (const tool of toolUses) {
194
+ process.stderr.write('\r\x1b[K');
195
+ const toolInput = tool.input || {};
196
+ const verboseMsg = (0, stream_parser_1.formatToolVerbose)(tool.name || 'Unknown', toolInput);
197
+ process.stderr.write(`${verboseMsg}\n`);
303
198
  }
304
199
  }
305
200
  }
306
201
  });
307
- // Stream stderr in real-time (progress messages from Claude CLI)
202
+ // Stream stderr in real-time
308
203
  proc.stderr?.on('data', (data) => {
309
204
  const stderrText = data.toString();
310
205
  stderr += stderrText;
311
- // Show stderr in real-time if in TTY
312
206
  if (showProgress) {
313
- // Clear progress line before showing stderr
314
- if (progressInterval) {
315
- process.stderr.write('\r\x1b[K'); // Clear line
316
- }
207
+ if (progressInterval)
208
+ process.stderr.write('\r\x1b[K');
317
209
  process.stderr.write(stderrText);
318
210
  }
319
211
  });
320
212
  // Handle completion
321
213
  proc.on('close', (exitCode) => {
322
214
  const duration = Date.now() - startTime;
323
- // Clear progress indicator
324
215
  if (progressInterval) {
325
216
  clearInterval(progressInterval);
326
- process.stderr.write('\r\x1b[K'); // Clear line
217
+ process.stderr.write('\r\x1b[K');
327
218
  }
328
- // Show completion message
329
219
  if (showProgress) {
330
220
  const durationSec = (duration / 1000).toFixed(1);
331
- if (timedOut) {
332
- console.error(ui_1.ui.warn(`Execution timed out after ${durationSec}s`));
333
- }
334
- else {
335
- console.error(ui_1.ui.info(`Execution completed in ${durationSec}s`));
336
- }
337
- console.error(''); // Blank line before formatted output
221
+ console.error(timedOut
222
+ ? ui_1.ui.warn(`Timed out after ${durationSec}s`)
223
+ : ui_1.ui.info(`Completed in ${durationSec}s`));
224
+ console.error('');
338
225
  }
339
- const result = {
226
+ const result = (0, result_aggregator_1.buildExecutionResult)({
340
227
  exitCode: exitCode || 0,
341
228
  stdout,
342
229
  stderr,
343
230
  cwd,
344
231
  profile,
345
232
  duration,
346
- timedOut: false,
347
- success: exitCode === 0 && !timedOut,
348
- messages, // Include all stream-json messages
349
- };
350
- // Extract metadata from final 'result' message in stream-json
351
- const resultMessage = messages.find((m) => m.type === 'result');
352
- if (resultMessage) {
353
- // Add parsed fields from result message
354
- result.sessionId = resultMessage.session_id || undefined;
355
- result.totalCost = resultMessage.total_cost_usd || 0;
356
- result.numTurns = resultMessage.num_turns || 0;
357
- result.isError = resultMessage.is_error || false;
358
- result.type = resultMessage.type || null;
359
- result.subtype = resultMessage.subtype || undefined;
360
- result.durationApi = resultMessage.duration_api_ms || 0;
361
- result.permissionDenials = resultMessage.permission_denials || [];
362
- result.errors = resultMessage.errors || [];
363
- // Extract content from result message
364
- result.content = resultMessage.result || '';
365
- }
366
- else {
367
- // Fallback: no result message found (shouldn't happen)
368
- result.content = stdout;
369
- if (process.env.CCS_DEBUG) {
370
- console.error((0, ui_1.warn)('No result message found in stream-json output'));
371
- }
372
- }
373
- // Store or update session if we have session ID (even on timeout, for :continue support)
233
+ timedOut,
234
+ messages,
235
+ });
236
+ // Store session
374
237
  if (result.sessionId) {
375
238
  if (resumeSession || sessionId) {
376
- // Update existing session
377
- sessionMgr.updateSession(profile, result.sessionId, {
378
- totalCost: result.totalCost,
379
- });
239
+ sessionMgr.updateSession(profile, result.sessionId, { totalCost: result.totalCost });
380
240
  }
381
241
  else {
382
- // Store new session
383
242
  sessionMgr.storeSession(profile, {
384
243
  sessionId: result.sessionId,
385
244
  totalCost: result.totalCost,
386
- cwd: result.cwd,
245
+ cwd,
387
246
  });
388
247
  }
389
- // Cleanup expired sessions periodically
390
- if (Math.random() < 0.1) {
391
- // 10% chance
248
+ if (Math.random() < 0.1)
392
249
  sessionMgr.cleanupExpired();
393
- }
394
250
  }
395
251
  resolve(result);
396
252
  });
397
253
  // Handle errors
398
254
  proc.on('error', (error) => {
399
- if (progressInterval) {
255
+ if (progressInterval)
400
256
  clearInterval(progressInterval);
401
- }
402
257
  reject(new Error(`Failed to execute Claude CLI: ${error.message}`));
403
258
  });
404
- // Handle timeout with graceful SIGTERM then forceful SIGKILL
405
- let timedOut = false;
259
+ // Handle timeout
406
260
  if (timeout > 0) {
407
261
  const timeoutHandle = setTimeout(() => {
408
262
  if (!proc.killed) {
409
263
  timedOut = true;
410
264
  if (progressInterval) {
411
265
  clearInterval(progressInterval);
412
- process.stderr.write('\r\x1b[K'); // Clear line
266
+ process.stderr.write('\r\x1b[K');
413
267
  }
414
- if (process.env.CCS_DEBUG) {
415
- console.error((0, ui_1.warn)(`Timeout reached after ${timeout}ms, sending SIGTERM for graceful shutdown...`));
416
- }
417
- // Send SIGTERM for graceful shutdown
418
268
  proc.kill('SIGTERM');
419
- // If process doesn't terminate within 10s, force kill
420
269
  setTimeout(() => {
421
- if (!proc.killed) {
422
- if (process.env.CCS_DEBUG) {
423
- console.error((0, ui_1.warn)('Process did not terminate gracefully, sending SIGKILL...'));
424
- }
270
+ if (!proc.killed)
425
271
  proc.kill('SIGKILL');
426
- }
427
- }, 10000); // Give 10s for graceful shutdown instead of 5s
272
+ }, 10000);
428
273
  }
429
274
  }, timeout);
430
- // Clear timeout on successful completion
431
275
  proc.on('close', () => clearTimeout(timeoutHandle));
432
276
  }
433
277
  });
434
278
  }
435
- /**
436
- * Validate permission mode
437
- * @param mode - Permission mode
438
- * @throws {Error} If mode is invalid
439
- * @private
440
- */
279
+ /** Validate permission mode */
441
280
  static _validatePermissionMode(mode) {
442
281
  const VALID_MODES = ['default', 'plan', 'acceptEdits', 'bypassPermissions'];
443
282
  if (!VALID_MODES.includes(mode)) {
444
283
  throw new Error(`Invalid permission mode: "${mode}". Valid modes: ${VALID_MODES.join(', ')}`);
445
284
  }
446
285
  }
447
- /**
448
- * Detect Claude CLI executable
449
- * @returns Path to claude CLI or null if not found
450
- * @private
451
- */
286
+ /** Detect Claude CLI executable */
452
287
  static _detectClaudeCli() {
453
- // Check environment variable override
454
- if (process.env.CCS_CLAUDE_PATH) {
288
+ if (process.env.CCS_CLAUDE_PATH)
455
289
  return process.env.CCS_CLAUDE_PATH;
456
- }
457
- // Try to find in PATH
458
290
  const { execSync } = require('child_process');
459
291
  try {
460
- const result = execSync('command -v claude', { encoding: 'utf8' });
461
- return result.trim();
292
+ return execSync('command -v claude', { encoding: 'utf8' }).trim();
462
293
  }
463
- catch (_error) {
294
+ catch {
464
295
  return null;
465
296
  }
466
297
  }
467
- /**
468
- * Execute with retry logic
469
- * @param profile - Profile name
470
- * @param enhancedPrompt - Enhanced prompt
471
- * @param options - Execution options
472
- * @returns execution result
473
- */
298
+ /** Execute with retry logic */
474
299
  static async executeWithRetry(profile, enhancedPrompt, options = {}) {
475
300
  const { maxRetries = 2, ...execOptions } = options;
476
301
  let lastError;
477
302
  for (let attempt = 0; attempt <= maxRetries; attempt++) {
478
303
  try {
479
304
  const result = await this.execute(profile, enhancedPrompt, execOptions);
480
- // If successful, return immediately
481
- if (result.success) {
305
+ if (result.success)
482
306
  return result;
483
- }
484
- // If not last attempt, retry
485
307
  if (attempt < maxRetries) {
486
308
  console.error((0, ui_1.warn)(`Attempt ${attempt + 1} failed, retrying...`));
487
- await this._sleep(1000 * (attempt + 1)); // Exponential backoff
309
+ await this._sleep(1000 * (attempt + 1));
488
310
  continue;
489
311
  }
490
- // Last attempt failed, return result anyway
491
312
  return result;
492
313
  }
493
314
  catch (error) {
494
315
  lastError = error;
495
316
  if (attempt < maxRetries) {
496
- console.error((0, ui_1.warn)(`Attempt ${attempt + 1} errored: ${error.message}, retrying...`));
317
+ console.error((0, ui_1.warn)(`Attempt ${attempt + 1} errored, retrying...`));
497
318
  await this._sleep(1000 * (attempt + 1));
498
319
  }
499
320
  }
500
321
  }
501
- // All retries exhausted
502
322
  throw lastError || new Error('Execution failed after all retry attempts');
503
323
  }
504
- /**
505
- * Sleep utility for retry backoff
506
- * @param ms - Milliseconds to sleep
507
- * @returns Promise<void>
508
- * @private
509
- */
324
+ /** Sleep utility for retry backoff */
510
325
  static _sleep(ms) {
511
326
  return new Promise((resolve) => setTimeout(resolve, ms));
512
327
  }
513
- /**
514
- * Process prompt to detect and preserve slash commands
515
- * Implements smart enhancement: preserves slash command at start, allows context in rest
516
- * @param prompt - Original prompt (may contain slash command)
517
- * @returns Processed prompt with slash command preserved
518
- * @private
519
- */
328
+ /** Process prompt to detect and preserve slash commands */
520
329
  static _processSlashCommand(prompt) {
521
330
  const trimmed = prompt.trim();
522
- // Case 1: Already starts with slash command - keep as-is
523
- if (trimmed.match(/^\/[\w:-]+(\s|$)/)) {
331
+ // Case 1: Already starts with slash command
332
+ if (trimmed.match(/^\/[\w:-]+(\s|$)/))
524
333
  return prompt;
525
- }
526
334
  // Case 2: Find slash command embedded in text
527
- // Look for /command that's NOT part of a file path
528
- // File paths: /home/user, /path/to/file (have / before or after)
529
- // Commands: /cook, /plan (standalone, preceded by space/colon/start)
530
- // Strategy: Find LAST occurrence that looks like a command, not a path
531
335
  const embeddedSlash = trimmed.match(/(?:^|[^\w/])(\/[\w:-]+)(\s+[\s\S]*)?$/);
532
336
  if (embeddedSlash) {
533
- const command = embeddedSlash[1]; // e.g., "/cook"
534
- const args = (embeddedSlash[2] || '').trim(); // Everything after command
535
- // Calculate where the command starts (excluding preceding char if any)
337
+ const command = embeddedSlash[1];
338
+ const args = (embeddedSlash[2] || '').trim();
536
339
  const matchIndex = embeddedSlash.index || 0;
537
340
  const matchStart = matchIndex + (embeddedSlash[0][0] === '/' ? 0 : 1);
538
341
  const beforeCommand = trimmed.substring(0, matchStart).trim();
539
- // Restructure: command first, context after
540
- if (beforeCommand && args) {
342
+ if (beforeCommand && args)
541
343
  return `${command} ${args}\n\nContext: ${beforeCommand}`;
542
- }
543
- else if (beforeCommand) {
344
+ if (beforeCommand)
544
345
  return `${command}\n\nContext: ${beforeCommand}`;
545
- }
546
346
  return args ? `${command} ${args}` : command;
547
347
  }
548
- // No slash command detected, return as-is
549
348
  return prompt;
550
349
  }
551
- /**
552
- * Test if profile is executable (quick health check)
553
- * @param profile - Profile name
554
- * @returns True if profile can execute
555
- */
350
+ /** Test if profile is executable */
556
351
  static async testProfile(profile) {
557
352
  try {
558
- const result = await this.execute(profile, 'Say "test successful"', {
559
- timeout: 10000,
560
- });
353
+ const result = await this.execute(profile, 'Say "test successful"', { timeout: 10000 });
561
354
  return result.success;
562
355
  }
563
- catch (_error) {
356
+ catch {
564
357
  return false;
565
358
  }
566
359
  }