@kaitranntt/ccs 4.4.0 → 5.0.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 (262) hide show
  1. package/README.md +98 -7
  2. package/VERSION +1 -1
  3. package/config/base-agy.settings.json +10 -0
  4. package/config/base-codex.settings.json +10 -0
  5. package/config/base-gemini.settings.json +10 -0
  6. package/dist/auth/auth-commands.d.ts +52 -0
  7. package/dist/auth/auth-commands.d.ts.map +1 -0
  8. package/dist/auth/auth-commands.js +479 -0
  9. package/dist/auth/auth-commands.js.map +1 -0
  10. package/dist/auth/profile-detector.d.ts +68 -0
  11. package/dist/auth/profile-detector.d.ts.map +1 -0
  12. package/dist/auth/profile-detector.js +209 -0
  13. package/dist/auth/profile-detector.js.map +1 -0
  14. package/dist/auth/profile-registry.d.ts +60 -0
  15. package/dist/auth/profile-registry.d.ts.map +1 -0
  16. package/dist/auth/profile-registry.js +188 -0
  17. package/dist/auth/profile-registry.js.map +1 -0
  18. package/dist/ccs.d.ts +10 -0
  19. package/dist/ccs.d.ts.map +1 -0
  20. package/dist/ccs.js +320 -0
  21. package/dist/ccs.js.map +1 -0
  22. package/dist/cliproxy/auth-handler.d.ts +95 -0
  23. package/dist/cliproxy/auth-handler.d.ts.map +1 -0
  24. package/dist/cliproxy/auth-handler.js +443 -0
  25. package/dist/cliproxy/auth-handler.js.map +1 -0
  26. package/dist/cliproxy/base-config-loader.d.ts +42 -0
  27. package/dist/cliproxy/base-config-loader.d.ts.map +1 -0
  28. package/dist/cliproxy/base-config-loader.js +123 -0
  29. package/dist/cliproxy/base-config-loader.js.map +1 -0
  30. package/dist/cliproxy/binary-manager.d.ts +104 -0
  31. package/dist/cliproxy/binary-manager.d.ts.map +1 -0
  32. package/dist/cliproxy/binary-manager.js +567 -0
  33. package/dist/cliproxy/binary-manager.js.map +1 -0
  34. package/dist/cliproxy/cliproxy-executor.d.ts +33 -0
  35. package/dist/cliproxy/cliproxy-executor.d.ts.map +1 -0
  36. package/dist/cliproxy/cliproxy-executor.js +297 -0
  37. package/dist/cliproxy/cliproxy-executor.js.map +1 -0
  38. package/dist/cliproxy/config-generator.d.ts +89 -0
  39. package/dist/cliproxy/config-generator.d.ts.map +1 -0
  40. package/dist/cliproxy/config-generator.js +263 -0
  41. package/dist/cliproxy/config-generator.js.map +1 -0
  42. package/dist/cliproxy/index.d.ts +13 -0
  43. package/dist/cliproxy/index.d.ts.map +1 -0
  44. package/dist/cliproxy/index.js +62 -0
  45. package/dist/cliproxy/index.js.map +1 -0
  46. package/dist/cliproxy/platform-detector.d.ts +48 -0
  47. package/dist/cliproxy/platform-detector.d.ts.map +1 -0
  48. package/dist/cliproxy/platform-detector.js +118 -0
  49. package/dist/cliproxy/platform-detector.js.map +1 -0
  50. package/dist/cliproxy/types.d.ts +169 -0
  51. package/dist/cliproxy/types.d.ts.map +1 -0
  52. package/dist/cliproxy/types.js +7 -0
  53. package/dist/cliproxy/types.js.map +1 -0
  54. package/dist/commands/doctor-command.d.ts +10 -0
  55. package/dist/commands/doctor-command.d.ts.map +1 -0
  56. package/dist/commands/doctor-command.js +44 -0
  57. package/dist/commands/doctor-command.js.map +1 -0
  58. package/dist/commands/help-command.d.ts +5 -0
  59. package/dist/commands/help-command.d.ts.map +1 -0
  60. package/dist/commands/help-command.js +104 -0
  61. package/dist/commands/help-command.js.map +1 -0
  62. package/dist/commands/install-command.d.ts +14 -0
  63. package/dist/commands/install-command.d.ts.map +1 -0
  64. package/dist/commands/install-command.js +39 -0
  65. package/dist/commands/install-command.js.map +1 -0
  66. package/dist/commands/shell-completion-command.d.ts +10 -0
  67. package/dist/commands/shell-completion-command.d.ts.map +1 -0
  68. package/dist/commands/shell-completion-command.js +85 -0
  69. package/dist/commands/shell-completion-command.js.map +1 -0
  70. package/dist/commands/sync-command.d.ts +10 -0
  71. package/dist/commands/sync-command.d.ts.map +1 -0
  72. package/dist/commands/sync-command.js +59 -0
  73. package/dist/commands/sync-command.js.map +1 -0
  74. package/dist/commands/update-command.d.ts +12 -0
  75. package/dist/commands/update-command.d.ts.map +1 -0
  76. package/dist/commands/update-command.js +295 -0
  77. package/dist/commands/update-command.js.map +1 -0
  78. package/dist/commands/version-command.d.ts +10 -0
  79. package/dist/commands/version-command.d.ts.map +1 -0
  80. package/dist/commands/version-command.js +100 -0
  81. package/dist/commands/version-command.js.map +1 -0
  82. package/dist/delegation/delegation-handler.d.ts +60 -0
  83. package/dist/delegation/delegation-handler.d.ts.map +1 -0
  84. package/dist/delegation/delegation-handler.js +174 -0
  85. package/dist/delegation/delegation-handler.js.map +1 -0
  86. package/dist/delegation/headless-executor.d.ts +114 -0
  87. package/dist/delegation/headless-executor.d.ts.map +1 -0
  88. package/dist/delegation/headless-executor.js +562 -0
  89. package/dist/delegation/headless-executor.js.map +1 -0
  90. package/dist/delegation/result-formatter.d.ts +108 -0
  91. package/dist/delegation/result-formatter.d.ts.map +1 -0
  92. package/dist/delegation/result-formatter.js +391 -0
  93. package/dist/delegation/result-formatter.js.map +1 -0
  94. package/dist/delegation/session-manager.d.ts +58 -0
  95. package/dist/delegation/session-manager.d.ts.map +1 -0
  96. package/dist/delegation/session-manager.js +153 -0
  97. package/dist/delegation/session-manager.js.map +1 -0
  98. package/dist/delegation/settings-parser.d.ts +31 -0
  99. package/dist/delegation/settings-parser.d.ts.map +1 -0
  100. package/dist/delegation/settings-parser.js +107 -0
  101. package/dist/delegation/settings-parser.js.map +1 -0
  102. package/dist/glmt/delta-accumulator.d.ts +210 -0
  103. package/dist/glmt/delta-accumulator.d.ts.map +1 -0
  104. package/dist/glmt/delta-accumulator.js +351 -0
  105. package/dist/glmt/delta-accumulator.js.map +1 -0
  106. package/dist/glmt/glmt-proxy.d.ts +72 -0
  107. package/dist/glmt/glmt-proxy.d.ts.map +1 -0
  108. package/dist/glmt/glmt-proxy.js +427 -0
  109. package/dist/glmt/glmt-proxy.js.map +1 -0
  110. package/dist/glmt/glmt-transformer.d.ts +265 -0
  111. package/dist/glmt/glmt-transformer.d.ts.map +1 -0
  112. package/dist/glmt/glmt-transformer.js +832 -0
  113. package/dist/glmt/glmt-transformer.js.map +1 -0
  114. package/dist/glmt/locale-enforcer.d.ts +38 -0
  115. package/dist/glmt/locale-enforcer.d.ts.map +1 -0
  116. package/dist/glmt/locale-enforcer.js +69 -0
  117. package/dist/glmt/locale-enforcer.js.map +1 -0
  118. package/dist/glmt/reasoning-enforcer.d.ts +52 -0
  119. package/dist/glmt/reasoning-enforcer.d.ts.map +1 -0
  120. package/dist/glmt/reasoning-enforcer.js +151 -0
  121. package/dist/glmt/reasoning-enforcer.js.map +1 -0
  122. package/dist/glmt/sse-parser.d.ts +47 -0
  123. package/dist/glmt/sse-parser.d.ts.map +1 -0
  124. package/dist/glmt/sse-parser.js +93 -0
  125. package/dist/glmt/sse-parser.js.map +1 -0
  126. package/dist/management/doctor.d.ts +104 -0
  127. package/dist/management/doctor.d.ts.map +1 -0
  128. package/dist/management/doctor.js +673 -0
  129. package/dist/management/doctor.js.map +1 -0
  130. package/dist/management/instance-manager.d.ts +57 -0
  131. package/dist/management/instance-manager.d.ts.map +1 -0
  132. package/dist/management/instance-manager.js +195 -0
  133. package/dist/management/instance-manager.js.map +1 -0
  134. package/dist/management/recovery-manager.d.ts +39 -0
  135. package/dist/management/recovery-manager.d.ts.map +1 -0
  136. package/dist/management/recovery-manager.js +141 -0
  137. package/dist/management/recovery-manager.js.map +1 -0
  138. package/dist/management/shared-manager.d.ts +47 -0
  139. package/dist/management/shared-manager.d.ts.map +1 -0
  140. package/dist/management/shared-manager.js +388 -0
  141. package/dist/management/shared-manager.js.map +1 -0
  142. package/dist/types/cli.d.ts +50 -0
  143. package/dist/types/cli.d.ts.map +1 -0
  144. package/dist/types/cli.js +16 -0
  145. package/dist/types/cli.js.map +1 -0
  146. package/dist/types/config.d.ts +51 -0
  147. package/dist/types/config.d.ts.map +1 -0
  148. package/dist/types/config.js +26 -0
  149. package/dist/types/config.js.map +1 -0
  150. package/dist/types/delegation.d.ts +61 -0
  151. package/dist/types/delegation.d.ts.map +1 -0
  152. package/dist/types/delegation.js +6 -0
  153. package/dist/types/delegation.js.map +1 -0
  154. package/dist/types/glmt.d.ts +95 -0
  155. package/dist/types/glmt.d.ts.map +1 -0
  156. package/dist/types/glmt.js +7 -0
  157. package/dist/types/glmt.js.map +1 -0
  158. package/dist/types/index.d.ts +13 -0
  159. package/dist/types/index.d.ts.map +1 -0
  160. package/dist/types/index.js +16 -0
  161. package/dist/types/index.js.map +1 -0
  162. package/dist/types/utils.d.ts +36 -0
  163. package/dist/types/utils.d.ts.map +1 -0
  164. package/dist/types/utils.js +22 -0
  165. package/dist/types/utils.js.map +1 -0
  166. package/dist/utils/claude-detector.d.ts +14 -0
  167. package/dist/utils/claude-detector.d.ts.map +1 -0
  168. package/dist/utils/claude-detector.js +112 -0
  169. package/dist/utils/claude-detector.js.map +1 -0
  170. package/dist/utils/claude-dir-installer.d.ts +46 -0
  171. package/dist/utils/claude-dir-installer.d.ts.map +1 -0
  172. package/dist/utils/claude-dir-installer.js +289 -0
  173. package/dist/utils/claude-dir-installer.js.map +1 -0
  174. package/dist/utils/claude-symlink-manager.d.ts +61 -0
  175. package/dist/utils/claude-symlink-manager.d.ts.map +1 -0
  176. package/dist/utils/claude-symlink-manager.js +291 -0
  177. package/dist/utils/claude-symlink-manager.js.map +1 -0
  178. package/dist/utils/config-manager.d.ts +32 -0
  179. package/dist/utils/config-manager.d.ts.map +1 -0
  180. package/dist/utils/config-manager.js +143 -0
  181. package/dist/utils/config-manager.js.map +1 -0
  182. package/dist/utils/delegation-validator.d.ts +39 -0
  183. package/dist/utils/delegation-validator.d.ts.map +1 -0
  184. package/dist/utils/delegation-validator.js +161 -0
  185. package/dist/utils/delegation-validator.js.map +1 -0
  186. package/dist/utils/error-codes.d.ts +36 -0
  187. package/dist/utils/error-codes.d.ts.map +1 -0
  188. package/dist/utils/error-codes.js +63 -0
  189. package/dist/utils/error-codes.js.map +1 -0
  190. package/dist/utils/error-manager.d.ts +59 -0
  191. package/dist/utils/error-manager.d.ts.map +1 -0
  192. package/dist/utils/error-manager.js +228 -0
  193. package/dist/utils/error-manager.js.map +1 -0
  194. package/dist/utils/helpers.d.ts +27 -0
  195. package/dist/utils/helpers.d.ts.map +1 -0
  196. package/dist/utils/helpers.js +150 -0
  197. package/dist/utils/helpers.js.map +1 -0
  198. package/dist/utils/package-manager-detector.d.ts +14 -0
  199. package/dist/utils/package-manager-detector.d.ts.map +1 -0
  200. package/dist/utils/package-manager-detector.js +162 -0
  201. package/dist/utils/package-manager-detector.js.map +1 -0
  202. package/dist/utils/progress-indicator.d.ts +52 -0
  203. package/dist/utils/progress-indicator.d.ts.map +1 -0
  204. package/dist/utils/progress-indicator.js +102 -0
  205. package/dist/utils/progress-indicator.js.map +1 -0
  206. package/dist/utils/prompt.d.ts +29 -0
  207. package/dist/utils/prompt.d.ts.map +1 -0
  208. package/dist/utils/prompt.js +116 -0
  209. package/dist/utils/prompt.js.map +1 -0
  210. package/dist/utils/shell-completion.d.ts +52 -0
  211. package/dist/utils/shell-completion.d.ts.map +1 -0
  212. package/dist/utils/shell-completion.js +231 -0
  213. package/dist/utils/shell-completion.js.map +1 -0
  214. package/dist/utils/shell-executor.d.ts +15 -0
  215. package/dist/utils/shell-executor.d.ts.map +1 -0
  216. package/dist/utils/shell-executor.js +57 -0
  217. package/dist/utils/shell-executor.js.map +1 -0
  218. package/dist/utils/update-checker.d.ts +48 -0
  219. package/dist/utils/update-checker.d.ts.map +1 -0
  220. package/dist/utils/update-checker.js +241 -0
  221. package/dist/utils/update-checker.js.map +1 -0
  222. package/lib/ccs +21 -1907
  223. package/lib/ccs.ps1 +26 -1800
  224. package/lib/error-codes.ps1 +2 -1
  225. package/lib/prompt.ps1 +2 -2
  226. package/package.json +31 -11
  227. package/scripts/add-shebang.js +39 -0
  228. package/scripts/bump-version.sh +25 -37
  229. package/scripts/dev-install.sh +32 -11
  230. package/scripts/postinstall.js +29 -29
  231. package/bin/auth/auth-commands.js +0 -499
  232. package/bin/auth/profile-detector.js +0 -204
  233. package/bin/auth/profile-registry.js +0 -225
  234. package/bin/ccs.js +0 -1034
  235. package/bin/delegation/README.md +0 -191
  236. package/bin/delegation/delegation-handler.js +0 -212
  237. package/bin/delegation/headless-executor.js +0 -618
  238. package/bin/delegation/result-formatter.js +0 -485
  239. package/bin/delegation/session-manager.js +0 -157
  240. package/bin/delegation/settings-parser.js +0 -109
  241. package/bin/glmt/delta-accumulator.js +0 -276
  242. package/bin/glmt/glmt-proxy.js +0 -495
  243. package/bin/glmt/glmt-transformer.js +0 -999
  244. package/bin/glmt/locale-enforcer.js +0 -72
  245. package/bin/glmt/reasoning-enforcer.js +0 -173
  246. package/bin/glmt/sse-parser.js +0 -96
  247. package/bin/management/doctor.js +0 -721
  248. package/bin/management/instance-manager.js +0 -202
  249. package/bin/management/recovery-manager.js +0 -135
  250. package/bin/management/shared-manager.js +0 -402
  251. package/bin/utils/claude-detector.js +0 -73
  252. package/bin/utils/claude-dir-installer.js +0 -283
  253. package/bin/utils/claude-symlink-manager.js +0 -289
  254. package/bin/utils/config-manager.js +0 -103
  255. package/bin/utils/delegation-validator.js +0 -154
  256. package/bin/utils/error-codes.js +0 -59
  257. package/bin/utils/error-manager.js +0 -165
  258. package/bin/utils/helpers.js +0 -136
  259. package/bin/utils/progress-indicator.js +0 -111
  260. package/bin/utils/prompt.js +0 -134
  261. package/bin/utils/shell-completion.js +0 -256
  262. package/bin/utils/update-checker.js +0 -243
@@ -0,0 +1,108 @@
1
+ #!/usr/bin/env node
2
+ /**
3
+ * Formats delegation execution results for display
4
+ * Creates ASCII box output with file change tracking
5
+ */
6
+ interface ExecutionResult {
7
+ profile: string;
8
+ cwd: string;
9
+ exitCode: number;
10
+ stdout: string;
11
+ stderr: string;
12
+ duration: number;
13
+ success: boolean;
14
+ content?: string;
15
+ sessionId?: string;
16
+ totalCost?: number;
17
+ numTurns?: number;
18
+ subtype?: string;
19
+ permissionDenials?: PermissionDenial[];
20
+ errors?: ErrorInfo[];
21
+ timedOut?: boolean;
22
+ }
23
+ interface PermissionDenial {
24
+ tool_name?: string;
25
+ tool_input?: {
26
+ command?: string;
27
+ description?: string;
28
+ [key: string]: unknown;
29
+ };
30
+ }
31
+ interface ErrorInfo {
32
+ message?: string;
33
+ error?: string;
34
+ [key: string]: unknown;
35
+ }
36
+ interface FileChanges {
37
+ created: string[];
38
+ modified: string[];
39
+ }
40
+ /**
41
+ * Result Formatter Class
42
+ */
43
+ declare class ResultFormatter {
44
+ /**
45
+ * Format execution result with complete source-of-truth
46
+ */
47
+ static format(result: ExecutionResult): string;
48
+ /**
49
+ * Extract file changes from output
50
+ */
51
+ static extractFileChanges(output: string, cwd: string): FileChanges;
52
+ /**
53
+ * Format header with delegation indicator
54
+ */
55
+ private static formatHeader;
56
+ /**
57
+ * Format info box with delegation details
58
+ */
59
+ private static formatInfoBox;
60
+ /**
61
+ * Format task output
62
+ */
63
+ private static formatOutput;
64
+ /**
65
+ * Format stderr output
66
+ */
67
+ private static formatStderr;
68
+ /**
69
+ * Format file list (created or modified) - Currently unused
70
+ */
71
+ /**
72
+ * Format footer with completion status
73
+ */
74
+ private static formatFooter;
75
+ /**
76
+ * Get display name for model profile
77
+ */
78
+ private static getModelDisplayName;
79
+ /**
80
+ * Truncate string to max length
81
+ */
82
+ private static truncate;
83
+ /**
84
+ * Format minimal result (for quick tasks)
85
+ */
86
+ static formatMinimal(result: ExecutionResult): string;
87
+ /**
88
+ * Format verbose result (with full details)
89
+ */
90
+ static formatVerbose(result: ExecutionResult): string;
91
+ /**
92
+ * Check if NO_COLOR environment variable is set - Currently unused
93
+ */
94
+ /**
95
+ * Format timeout error (session exceeded time limit)
96
+ */
97
+ private static formatTimeoutError;
98
+ /**
99
+ * Format permission denials
100
+ */
101
+ private static formatPermissionDenials;
102
+ /**
103
+ * Format errors array
104
+ */
105
+ private static formatErrors;
106
+ }
107
+ export { ResultFormatter };
108
+ //# sourceMappingURL=result-formatter.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"result-formatter.d.ts","sourceRoot":"","sources":["../../src/delegation/result-formatter.ts"],"names":[],"mappings":";AAEA;;;GAGG;AAMH,UAAU,eAAe;IACvB,OAAO,EAAE,MAAM,CAAC;IAChB,GAAG,EAAE,MAAM,CAAC;IACZ,QAAQ,EAAE,MAAM,CAAC;IACjB,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,MAAM,CAAC;IACf,QAAQ,EAAE,MAAM,CAAC;IACjB,OAAO,EAAE,OAAO,CAAC;IACjB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,iBAAiB,CAAC,EAAE,gBAAgB,EAAE,CAAC;IACvC,MAAM,CAAC,EAAE,SAAS,EAAE,CAAC;IAErB,QAAQ,CAAC,EAAE,OAAO,CAAC;CACpB;AAED,UAAU,gBAAgB;IACxB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,UAAU,CAAC,EAAE;QACX,OAAO,CAAC,EAAE,MAAM,CAAC;QACjB,WAAW,CAAC,EAAE,MAAM,CAAC;QACrB,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC;KACxB,CAAC;CACH;AAED,UAAU,SAAS;IACjB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC;CACxB;AAED,UAAU,WAAW;IACnB,OAAO,EAAE,MAAM,EAAE,CAAC;IAClB,QAAQ,EAAE,MAAM,EAAE,CAAC;CACpB;AAED;;GAEG;AACH,cAAM,eAAe;IACnB;;OAEG;IACH,MAAM,CAAC,MAAM,CAAC,MAAM,EAAE,eAAe,GAAG,MAAM;IAsE9C;;OAEG;IACH,MAAM,CAAC,kBAAkB,CAAC,MAAM,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,GAAG,WAAW;IAiHnE;;OAEG;IACH,OAAO,CAAC,MAAM,CAAC,YAAY;IAM3B;;OAEG;IACH,OAAO,CAAC,MAAM,CAAC,aAAa;IAkD5B;;OAEG;IACH,OAAO,CAAC,MAAM,CAAC,YAAY;IAQ3B;;OAEG;IACH,OAAO,CAAC,MAAM,CAAC,YAAY;IAI3B;;OAEG;IAaH;;OAEG;IACH,OAAO,CAAC,MAAM,CAAC,YAAY;IAM3B;;OAEG;IACH,OAAO,CAAC,MAAM,CAAC,mBAAmB;IAWlC;;OAEG;IACH,OAAO,CAAC,MAAM,CAAC,QAAQ;IAOvB;;OAEG;IACH,MAAM,CAAC,aAAa,CAAC,MAAM,EAAE,eAAe,GAAG,MAAM;IASrD;;OAEG;IACH,MAAM,CAAC,aAAa,CAAC,MAAM,EAAE,eAAe,GAAG,MAAM;IAiBrD;;OAEG;IAOH;;OAEG;IACH,OAAO,CAAC,MAAM,CAAC,kBAAkB;IA8CjC;;OAEG;IACH,OAAO,CAAC,MAAM,CAAC,uBAAuB;IActC;;OAEG;IACH,OAAO,CAAC,MAAM,CAAC,YAAY;CAU5B;AAED,OAAO,EAAE,eAAe,EAAE,CAAC"}
@@ -0,0 +1,391 @@
1
+ #!/usr/bin/env node
2
+ "use strict";
3
+ /**
4
+ * Formats delegation execution results for display
5
+ * Creates ASCII box output with file change tracking
6
+ */
7
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
8
+ if (k2 === undefined) k2 = k;
9
+ var desc = Object.getOwnPropertyDescriptor(m, k);
10
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
11
+ desc = { enumerable: true, get: function() { return m[k]; } };
12
+ }
13
+ Object.defineProperty(o, k2, desc);
14
+ }) : (function(o, m, k, k2) {
15
+ if (k2 === undefined) k2 = k;
16
+ o[k2] = m[k];
17
+ }));
18
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
19
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
20
+ }) : function(o, v) {
21
+ o["default"] = v;
22
+ });
23
+ var __importStar = (this && this.__importStar) || function (mod) {
24
+ if (mod && mod.__esModule) return mod;
25
+ var result = {};
26
+ if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
27
+ __setModuleDefault(result, mod);
28
+ return result;
29
+ };
30
+ Object.defineProperty(exports, "__esModule", { value: true });
31
+ exports.ResultFormatter = void 0;
32
+ const path = __importStar(require("path"));
33
+ const child_process_1 = require("child_process");
34
+ const fs = __importStar(require("fs"));
35
+ /**
36
+ * Result Formatter Class
37
+ */
38
+ class ResultFormatter {
39
+ /**
40
+ * Format execution result with complete source-of-truth
41
+ */
42
+ static format(result) {
43
+ const { profile, cwd, exitCode, stdout, stderr, duration, success, content, sessionId, totalCost, numTurns, subtype, permissionDenials, errors, timedOut, } = result;
44
+ // Handle timeout (graceful termination)
45
+ if (timedOut) {
46
+ return this.formatTimeoutError(result);
47
+ }
48
+ // Handle legacy max_turns error (Claude CLI might still return this)
49
+ if (subtype === 'error_max_turns') {
50
+ return this.formatTimeoutError(result);
51
+ }
52
+ // Use content field for output (JSON result or fallback stdout)
53
+ const displayOutput = content || stdout;
54
+ // Build formatted output
55
+ let output = '';
56
+ // Header
57
+ output += this.formatHeader(profile, success);
58
+ // Info box (file detection handled by delegated session itself)
59
+ output += this.formatInfoBox(cwd, profile, duration, exitCode, sessionId, totalCost, numTurns);
60
+ // Task output
61
+ output += '\n';
62
+ output += this.formatOutput(displayOutput);
63
+ // Permission denials if present
64
+ if (permissionDenials && permissionDenials.length > 0) {
65
+ output += '\n';
66
+ output += this.formatPermissionDenials(permissionDenials);
67
+ }
68
+ // Errors if present
69
+ if (errors && errors.length > 0) {
70
+ output += '\n';
71
+ output += this.formatErrors(errors);
72
+ }
73
+ // Stderr if present
74
+ if (stderr && stderr.trim()) {
75
+ output += '\n';
76
+ output += this.formatStderr(stderr);
77
+ }
78
+ // Footer
79
+ output += '\n';
80
+ output += this.formatFooter(success, duration);
81
+ return output;
82
+ }
83
+ /**
84
+ * Extract file changes from output
85
+ */
86
+ static extractFileChanges(output, cwd) {
87
+ const created = [];
88
+ const modified = [];
89
+ // Patterns to match file operations (case-insensitive)
90
+ const createdPatterns = [
91
+ /created:\s*([^\n\r]+)/gi,
92
+ /create:\s*([^\n\r]+)/gi,
93
+ /wrote:\s*([^\n\r]+)/gi,
94
+ /write:\s*([^\n\r]+)/gi,
95
+ /new file:\s*([^\n\r]+)/gi,
96
+ /generated:\s*([^\n\r]+)/gi,
97
+ /added:\s*([^\n\r]+)/gi,
98
+ ];
99
+ const modifiedPatterns = [
100
+ /modified:\s*([^\n\r]+)/gi,
101
+ /update:\s*([^\n\r]+)/gi,
102
+ /updated:\s*([^\n\r]+)/gi,
103
+ /edit:\s*([^\n\r]+)/gi,
104
+ /edited:\s*([^\n\r]+)/gi,
105
+ /changed:\s*([^\n\r]+)/gi,
106
+ ];
107
+ // Helper to check if file is infrastructure (should be ignored)
108
+ const isInfrastructure = (filePath) => {
109
+ return filePath.includes('/.claude/') || filePath.startsWith('.claude/');
110
+ };
111
+ // Extract created files
112
+ for (const pattern of createdPatterns) {
113
+ let match;
114
+ while ((match = pattern.exec(output)) !== null) {
115
+ const filePath = match[1].trim();
116
+ if (filePath && !created.includes(filePath) && !isInfrastructure(filePath)) {
117
+ created.push(filePath);
118
+ }
119
+ }
120
+ }
121
+ // Extract modified files
122
+ for (const pattern of modifiedPatterns) {
123
+ let match;
124
+ while ((match = pattern.exec(output)) !== null) {
125
+ const filePath = match[1].trim();
126
+ // Don't include if already in created list or is infrastructure
127
+ if (filePath &&
128
+ !modified.includes(filePath) &&
129
+ !created.includes(filePath) &&
130
+ !isInfrastructure(filePath)) {
131
+ modified.push(filePath);
132
+ }
133
+ }
134
+ }
135
+ // Fallback: Scan filesystem for recently modified files (last 5 minutes)
136
+ if (created.length === 0 && modified.length === 0 && cwd) {
137
+ try {
138
+ // Use find command to get recently modified files (excluding infrastructure)
139
+ const findCmd = `find . -type f -mmin -5 -not -path "./.git/*" -not -path "./node_modules/*" -not -path "./.claude/*" 2>/dev/null | head -20`;
140
+ const result = (0, child_process_1.execSync)(findCmd, { cwd, encoding: 'utf8', timeout: 5000 });
141
+ const files = result.split('\n').filter((f) => f.trim());
142
+ files.forEach((file) => {
143
+ const fullPath = path.join(cwd, file);
144
+ // Double-check not infrastructure
145
+ if (isInfrastructure(fullPath)) {
146
+ return;
147
+ }
148
+ try {
149
+ const stats = fs.statSync(fullPath);
150
+ const now = Date.now();
151
+ const mtime = stats.mtimeMs;
152
+ const ctime = stats.ctimeMs;
153
+ // If both mtime and ctime are very recent (within 10 minutes), likely created
154
+ // ctime = inode change time, for new files this is close to creation time
155
+ const isVeryRecent = now - mtime < 600000 && now - ctime < 600000;
156
+ const timeDiff = Math.abs(mtime - ctime);
157
+ // If mtime and ctime are very close (< 1 second apart) and both recent, it's created
158
+ if (isVeryRecent && timeDiff < 1000) {
159
+ if (!created.includes(fullPath)) {
160
+ created.push(fullPath);
161
+ }
162
+ }
163
+ else {
164
+ // Otherwise, it's modified
165
+ if (!modified.includes(fullPath)) {
166
+ modified.push(fullPath);
167
+ }
168
+ }
169
+ }
170
+ catch (_statError) {
171
+ // If stat fails, default to created (since we're in fallback mode)
172
+ if (!created.includes(fullPath) && !modified.includes(fullPath)) {
173
+ created.push(fullPath);
174
+ }
175
+ }
176
+ });
177
+ }
178
+ catch (scanError) {
179
+ // Silently fail if filesystem scan doesn't work
180
+ if (process.env.CCS_DEBUG) {
181
+ console.error(`[!] Filesystem scan failed: ${scanError.message}`);
182
+ }
183
+ }
184
+ }
185
+ return { created, modified };
186
+ }
187
+ /**
188
+ * Format header with delegation indicator
189
+ */
190
+ static formatHeader(profile, success) {
191
+ const modelName = this.getModelDisplayName(profile);
192
+ const icon = success ? '[i]' : '[X]';
193
+ return `${icon} Delegated to ${modelName} (ccs:${profile})\n`;
194
+ }
195
+ /**
196
+ * Format info box with delegation details
197
+ */
198
+ static formatInfoBox(cwd, profile, duration, exitCode, sessionId, totalCost, numTurns) {
199
+ const modelName = this.getModelDisplayName(profile);
200
+ const durationSec = (duration / 1000).toFixed(1);
201
+ // Calculate box width (fit longest line + padding)
202
+ const maxWidth = 70;
203
+ const cwdLine = `Working Directory: ${cwd}`;
204
+ const boxWidth = Math.min(Math.max(cwdLine.length + 4, 50), maxWidth);
205
+ const lines = [
206
+ `Working Directory: ${this.truncate(cwd, boxWidth - 22)}`,
207
+ `Model: ${modelName}`,
208
+ `Duration: ${durationSec}s`,
209
+ `Exit Code: ${exitCode}`,
210
+ ];
211
+ // Add JSON-specific fields if available
212
+ if (sessionId) {
213
+ // Abbreviate session ID (Git-style first 8 chars) to prevent wrapping
214
+ const shortId = sessionId.length > 8 ? sessionId.substring(0, 8) : sessionId;
215
+ lines.push(`Session ID: ${shortId}`);
216
+ }
217
+ if (totalCost !== undefined && totalCost !== null) {
218
+ lines.push(`Cost: $${totalCost.toFixed(4)}`);
219
+ }
220
+ if (numTurns) {
221
+ lines.push(`Turns: ${numTurns}`);
222
+ }
223
+ let box = '';
224
+ box += '╔' + '═'.repeat(boxWidth - 2) + '╗\n';
225
+ for (const line of lines) {
226
+ const padding = boxWidth - line.length - 4;
227
+ box += '║ ' + line + ' '.repeat(Math.max(0, padding)) + ' ║\n';
228
+ }
229
+ box += '╚' + '═'.repeat(boxWidth - 2) + '╝';
230
+ return box;
231
+ }
232
+ /**
233
+ * Format task output
234
+ */
235
+ static formatOutput(output) {
236
+ if (!output || !output.trim()) {
237
+ return '[i] No output from delegated task\n';
238
+ }
239
+ return output.trim() + '\n';
240
+ }
241
+ /**
242
+ * Format stderr output
243
+ */
244
+ static formatStderr(stderr) {
245
+ return `[!] Stderr:\n${stderr.trim()}\n\n`;
246
+ }
247
+ /**
248
+ * Format file list (created or modified) - Currently unused
249
+ */
250
+ /*
251
+ private static formatFileList(label: string, files: string[]): string {
252
+ let output = `[i] ${label} Files:\n`;
253
+
254
+ for (const file of files) {
255
+ output += ` - ${file}\n`;
256
+ }
257
+
258
+ return output;
259
+ }
260
+ */
261
+ /**
262
+ * Format footer with completion status
263
+ */
264
+ static formatFooter(success, _duration) {
265
+ const icon = success ? '[OK]' : '[X]';
266
+ const status = success ? 'Delegation completed' : 'Delegation failed';
267
+ return `${icon} ${status}\n`;
268
+ }
269
+ /**
270
+ * Get display name for model profile
271
+ */
272
+ static getModelDisplayName(profile) {
273
+ const displayNames = {
274
+ glm: 'GLM-4.6',
275
+ glmt: 'GLM-4.6 (Thinking)',
276
+ kimi: 'Kimi',
277
+ default: 'Claude',
278
+ };
279
+ return displayNames[profile] || profile.toUpperCase();
280
+ }
281
+ /**
282
+ * Truncate string to max length
283
+ */
284
+ static truncate(str, maxLength) {
285
+ if (str.length <= maxLength) {
286
+ return str;
287
+ }
288
+ return str.substring(0, maxLength - 3) + '...';
289
+ }
290
+ /**
291
+ * Format minimal result (for quick tasks)
292
+ */
293
+ static formatMinimal(result) {
294
+ const { profile, success, duration } = result;
295
+ const modelName = this.getModelDisplayName(profile);
296
+ const icon = success ? '[OK]' : '[X]';
297
+ const durationSec = (duration / 1000).toFixed(1);
298
+ return `${icon} ${modelName} delegation ${success ? 'completed' : 'failed'} (${durationSec}s)\n`;
299
+ }
300
+ /**
301
+ * Format verbose result (with full details)
302
+ */
303
+ static formatVerbose(result) {
304
+ const basic = this.format(result);
305
+ // Add additional debug info
306
+ let verbose = basic;
307
+ verbose += '\n=== Debug Information ===\n';
308
+ verbose += `CWD: ${result.cwd}\n`;
309
+ verbose += `Profile: ${result.profile}\n`;
310
+ verbose += `Exit Code: ${result.exitCode}\n`;
311
+ verbose += `Duration: ${result.duration}ms\n`;
312
+ verbose += `Success: ${result.success}\n`;
313
+ verbose += `Stdout Length: ${result.stdout.length} chars\n`;
314
+ verbose += `Stderr Length: ${result.stderr.length} chars\n`;
315
+ return verbose;
316
+ }
317
+ /**
318
+ * Check if NO_COLOR environment variable is set - Currently unused
319
+ */
320
+ /*
321
+ private static shouldDisableColors(): boolean {
322
+ return process.env.NO_COLOR !== undefined;
323
+ }
324
+ */
325
+ /**
326
+ * Format timeout error (session exceeded time limit)
327
+ */
328
+ static formatTimeoutError(result) {
329
+ const { profile, cwd, duration, sessionId, totalCost, numTurns, permissionDenials } = result;
330
+ let output = '';
331
+ // Header
332
+ output += this.formatHeader(profile, false);
333
+ // Info box
334
+ output += this.formatInfoBox(cwd, profile, duration, 0, sessionId, totalCost, numTurns);
335
+ // Timeout message
336
+ output += '\n';
337
+ const timeoutMin = (duration / 60000).toFixed(1);
338
+ output += `[!] Execution timed out after ${timeoutMin} minutes\n\n`;
339
+ output += 'The delegated session exceeded its time limit before completing the task.\n';
340
+ output += 'Session was gracefully terminated and saved for continuation.\n';
341
+ // Permission denials if present
342
+ if (permissionDenials && permissionDenials.length > 0) {
343
+ output += '\n';
344
+ output += this.formatPermissionDenials(permissionDenials);
345
+ output += '\n';
346
+ output += 'The task may require permissions that were denied.\n';
347
+ output += 'Consider running with --permission-mode bypassPermissions or execute manually.\n';
348
+ }
349
+ // Suggestions
350
+ output += '\n';
351
+ output += 'Suggestions:\n';
352
+ output += ` - Continue session: ccs ${profile}:continue -p "finish the task"\n`;
353
+ output += ` - Increase timeout: ccs ${profile} -p "task" --timeout ${duration * 2}\n`;
354
+ output += ' - Break task into smaller steps\n';
355
+ output += ' - Run task manually in main Claude session\n';
356
+ output += '\n';
357
+ // Abbreviate session ID (Git-style first 8 chars)
358
+ const shortId = sessionId && sessionId.length > 8 ? sessionId.substring(0, 8) : sessionId;
359
+ output += `[i] Session persisted with ID: ${shortId}\n`;
360
+ if (totalCost !== undefined && totalCost !== null) {
361
+ output += `[i] Cost: $${totalCost.toFixed(4)}\n`;
362
+ }
363
+ return output;
364
+ }
365
+ /**
366
+ * Format permission denials
367
+ */
368
+ static formatPermissionDenials(denials) {
369
+ let output = '[!] Permission Denials:\n';
370
+ for (const denial of denials) {
371
+ const tool = denial.tool_name || 'Unknown';
372
+ const input = denial.tool_input || {};
373
+ const command = input.command || input.description || JSON.stringify(input);
374
+ output += ` - ${tool}: ${command}\n`;
375
+ }
376
+ return output;
377
+ }
378
+ /**
379
+ * Format errors array
380
+ */
381
+ static formatErrors(errors) {
382
+ let output = '[X] Errors:\n';
383
+ for (const error of errors) {
384
+ const message = error.message || error.error || JSON.stringify(error);
385
+ output += ` - ${message}\n`;
386
+ }
387
+ return output;
388
+ }
389
+ }
390
+ exports.ResultFormatter = ResultFormatter;
391
+ //# sourceMappingURL=result-formatter.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"result-formatter.js","sourceRoot":"","sources":["../../src/delegation/result-formatter.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,58 @@
1
+ #!/usr/bin/env node
2
+ /**
3
+ * Manages delegation session persistence for multi-turn conversations
4
+ */
5
+ interface SessionData {
6
+ sessionId: string;
7
+ totalCost?: number;
8
+ cwd?: string;
9
+ }
10
+ interface TurnData {
11
+ totalCost?: number;
12
+ }
13
+ interface SessionMetadata {
14
+ sessionId: string;
15
+ profile: string;
16
+ startTime: number;
17
+ lastTurnTime: number;
18
+ totalCost: number;
19
+ turns: number;
20
+ cwd: string;
21
+ }
22
+ /**
23
+ * Session Manager Class
24
+ */
25
+ declare class SessionManager {
26
+ private readonly sessionsPath;
27
+ constructor();
28
+ /**
29
+ * Store new session metadata
30
+ */
31
+ storeSession(profile: string, sessionData: SessionData): void;
32
+ /**
33
+ * Update session after additional turn
34
+ */
35
+ updateSession(profile: string, sessionId: string, turnData: TurnData): void;
36
+ /**
37
+ * Get last session for profile
38
+ */
39
+ getLastSession(profile: string): SessionMetadata | null;
40
+ /**
41
+ * Clear all sessions for profile
42
+ */
43
+ clearProfile(profile: string): void;
44
+ /**
45
+ * Clean up expired sessions (>30 days)
46
+ */
47
+ cleanupExpired(): void;
48
+ /**
49
+ * Load sessions from disk
50
+ */
51
+ private loadSessions;
52
+ /**
53
+ * Save sessions to disk
54
+ */
55
+ private saveSessions;
56
+ }
57
+ export { SessionManager };
58
+ //# sourceMappingURL=session-manager.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"session-manager.d.ts","sourceRoot":"","sources":["../../src/delegation/session-manager.ts"],"names":[],"mappings":";AAEA;;GAEG;AAMH,UAAU,WAAW;IACnB,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,GAAG,CAAC,EAAE,MAAM,CAAC;CACd;AAED,UAAU,QAAQ;IAChB,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED,UAAU,eAAe;IACvB,SAAS,EAAE,MAAM,CAAC;IAClB,OAAO,EAAE,MAAM,CAAC;IAChB,SAAS,EAAE,MAAM,CAAC;IAClB,YAAY,EAAE,MAAM,CAAC;IACrB,SAAS,EAAE,MAAM,CAAC;IAClB,KAAK,EAAE,MAAM,CAAC;IACd,GAAG,EAAE,MAAM,CAAC;CACb;AAMD;;GAEG;AACH,cAAM,cAAc;IAClB,OAAO,CAAC,QAAQ,CAAC,YAAY,CAAS;;IAMtC;;OAEG;IACH,YAAY,CAAC,OAAO,EAAE,MAAM,EAAE,WAAW,EAAE,WAAW,GAAG,IAAI;IAqB7D;;OAEG;IACH,aAAa,CAAC,OAAO,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,QAAQ,EAAE,QAAQ,GAAG,IAAI;IAsB3E;;OAEG;IACH,cAAc,CAAC,OAAO,EAAE,MAAM,GAAG,eAAe,GAAG,IAAI;IAMvD;;OAEG;IACH,YAAY,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI;IAOnC;;OAEG;IACH,cAAc,IAAI,IAAI;IAqBtB;;OAEG;IACH,OAAO,CAAC,YAAY;IAepB;;OAEG;IACH,OAAO,CAAC,YAAY;CAWrB;AAED,OAAO,EAAE,cAAc,EAAE,CAAC"}