@kaitranntt/ccs 8.2.0 → 8.3.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (301) hide show
  1. package/README.md +12 -0
  2. package/config/base-claude.settings.json +1 -5
  3. package/dist/api/services/cliproxy-profile-bridge.d.ts.map +1 -1
  4. package/dist/api/services/cliproxy-profile-bridge.js +6 -0
  5. package/dist/api/services/cliproxy-profile-bridge.js.map +1 -1
  6. package/dist/api/services/profile-writer.d.ts.map +1 -1
  7. package/dist/api/services/profile-writer.js +18 -8
  8. package/dist/api/services/profile-writer.js.map +1 -1
  9. package/dist/auth/commands/create-command.d.ts.map +1 -1
  10. package/dist/auth/commands/create-command.js +11 -0
  11. package/dist/auth/commands/create-command.js.map +1 -1
  12. package/dist/cliproxy/accounts/account-safety-cross-lane.d.ts +41 -0
  13. package/dist/cliproxy/accounts/account-safety-cross-lane.d.ts.map +1 -0
  14. package/dist/cliproxy/accounts/account-safety-cross-lane.js +177 -0
  15. package/dist/cliproxy/accounts/account-safety-cross-lane.js.map +1 -0
  16. package/dist/cliproxy/accounts/account-safety.d.ts +29 -1
  17. package/dist/cliproxy/accounts/account-safety.d.ts.map +1 -1
  18. package/dist/cliproxy/accounts/account-safety.js +41 -7
  19. package/dist/cliproxy/accounts/account-safety.js.map +1 -1
  20. package/dist/cliproxy/accounts/drain-order.d.ts +277 -0
  21. package/dist/cliproxy/accounts/drain-order.d.ts.map +1 -0
  22. package/dist/cliproxy/accounts/drain-order.js +575 -0
  23. package/dist/cliproxy/accounts/drain-order.js.map +1 -0
  24. package/dist/cliproxy/accounts/pool-state.d.ts +132 -0
  25. package/dist/cliproxy/accounts/pool-state.d.ts.map +1 -0
  26. package/dist/cliproxy/accounts/pool-state.js +201 -0
  27. package/dist/cliproxy/accounts/pool-state.js.map +1 -0
  28. package/dist/cliproxy/accounts/registry.d.ts +17 -1
  29. package/dist/cliproxy/accounts/registry.d.ts.map +1 -1
  30. package/dist/cliproxy/accounts/registry.js +47 -1
  31. package/dist/cliproxy/accounts/registry.js.map +1 -1
  32. package/dist/cliproxy/accounts/types.d.ts +20 -0
  33. package/dist/cliproxy/accounts/types.d.ts.map +1 -1
  34. package/dist/cliproxy/auth/oauth-handler.d.ts.map +1 -1
  35. package/dist/cliproxy/auth/oauth-handler.js +29 -0
  36. package/dist/cliproxy/auth/oauth-handler.js.map +1 -1
  37. package/dist/cliproxy/claude-shadow-warning.d.ts +39 -0
  38. package/dist/cliproxy/claude-shadow-warning.d.ts.map +1 -0
  39. package/dist/cliproxy/claude-shadow-warning.js +187 -0
  40. package/dist/cliproxy/claude-shadow-warning.js.map +1 -0
  41. package/dist/cliproxy/config/base-config-loader.d.ts +6 -5
  42. package/dist/cliproxy/config/base-config-loader.d.ts.map +1 -1
  43. package/dist/cliproxy/config/base-config-loader.js +19 -12
  44. package/dist/cliproxy/config/base-config-loader.js.map +1 -1
  45. package/dist/cliproxy/config/env-builder.d.ts +3 -0
  46. package/dist/cliproxy/config/env-builder.d.ts.map +1 -1
  47. package/dist/cliproxy/config/env-builder.js +158 -20
  48. package/dist/cliproxy/config/env-builder.js.map +1 -1
  49. package/dist/cliproxy/config/generator.d.ts +2 -1
  50. package/dist/cliproxy/config/generator.d.ts.map +1 -1
  51. package/dist/cliproxy/config/generator.js +66 -9
  52. package/dist/cliproxy/config/generator.js.map +1 -1
  53. package/dist/cliproxy/config/thinking-config.d.ts.map +1 -1
  54. package/dist/cliproxy/config/thinking-config.js +2 -0
  55. package/dist/cliproxy/config/thinking-config.js.map +1 -1
  56. package/dist/cliproxy/executor/account-resolution.d.ts.map +1 -1
  57. package/dist/cliproxy/executor/account-resolution.js +5 -0
  58. package/dist/cliproxy/executor/account-resolution.js.map +1 -1
  59. package/dist/cliproxy/executor/auth-coordinator.d.ts +4 -0
  60. package/dist/cliproxy/executor/auth-coordinator.d.ts.map +1 -1
  61. package/dist/cliproxy/executor/auth-coordinator.js +5 -1
  62. package/dist/cliproxy/executor/auth-coordinator.js.map +1 -1
  63. package/dist/cliproxy/executor/index.d.ts.map +1 -1
  64. package/dist/cliproxy/executor/index.js +20 -0
  65. package/dist/cliproxy/executor/index.js.map +1 -1
  66. package/dist/cliproxy/model-catalog.d.ts.map +1 -1
  67. package/dist/cliproxy/model-catalog.js +15 -0
  68. package/dist/cliproxy/model-catalog.js.map +1 -1
  69. package/dist/cliproxy/proxy/upstream-response-timeout.d.ts.map +1 -1
  70. package/dist/cliproxy/proxy/upstream-response-timeout.js +8 -1
  71. package/dist/cliproxy/proxy/upstream-response-timeout.js.map +1 -1
  72. package/dist/cliproxy/quota/quota-fetcher-claude.d.ts +9 -0
  73. package/dist/cliproxy/quota/quota-fetcher-claude.d.ts.map +1 -1
  74. package/dist/cliproxy/quota/quota-fetcher-claude.js +53 -16
  75. package/dist/cliproxy/quota/quota-fetcher-claude.js.map +1 -1
  76. package/dist/cliproxy/quota/quota-fetcher.d.ts.map +1 -1
  77. package/dist/cliproxy/quota/quota-fetcher.js +4 -0
  78. package/dist/cliproxy/quota/quota-fetcher.js.map +1 -1
  79. package/dist/cliproxy/quota/quota-manager.d.ts +7 -0
  80. package/dist/cliproxy/quota/quota-manager.d.ts.map +1 -1
  81. package/dist/cliproxy/quota/quota-manager.js +51 -2
  82. package/dist/cliproxy/quota/quota-manager.js.map +1 -1
  83. package/dist/cliproxy/routing/pool-onboarding-hint.d.ts +95 -0
  84. package/dist/cliproxy/routing/pool-onboarding-hint.d.ts.map +1 -0
  85. package/dist/cliproxy/routing/pool-onboarding-hint.js +172 -0
  86. package/dist/cliproxy/routing/pool-onboarding-hint.js.map +1 -0
  87. package/dist/cliproxy/routing/pool-opt-in-prompt.d.ts +50 -0
  88. package/dist/cliproxy/routing/pool-opt-in-prompt.d.ts.map +1 -0
  89. package/dist/cliproxy/routing/pool-opt-in-prompt.js +232 -0
  90. package/dist/cliproxy/routing/pool-opt-in-prompt.js.map +1 -0
  91. package/dist/cliproxy/routing/routing-strategy.d.ts +132 -0
  92. package/dist/cliproxy/routing/routing-strategy.d.ts.map +1 -1
  93. package/dist/cliproxy/routing/routing-strategy.js +342 -5
  94. package/dist/cliproxy/routing/routing-strategy.js.map +1 -1
  95. package/dist/cliproxy/services/stats-fetcher.d.ts +13 -0
  96. package/dist/cliproxy/services/stats-fetcher.d.ts.map +1 -1
  97. package/dist/cliproxy/services/stats-fetcher.js +25 -1
  98. package/dist/cliproxy/services/stats-fetcher.js.map +1 -1
  99. package/dist/commands/bar/help-subcommand.d.ts +2 -0
  100. package/dist/commands/bar/help-subcommand.d.ts.map +1 -0
  101. package/dist/commands/bar/help-subcommand.js +63 -0
  102. package/dist/commands/bar/help-subcommand.js.map +1 -0
  103. package/dist/commands/bar/index.d.ts +8 -0
  104. package/dist/commands/bar/index.d.ts.map +1 -0
  105. package/dist/commands/bar/index.js +78 -0
  106. package/dist/commands/bar/index.js.map +1 -0
  107. package/dist/commands/bar/install-subcommand.d.ts +92 -0
  108. package/dist/commands/bar/install-subcommand.d.ts.map +1 -0
  109. package/dist/commands/bar/install-subcommand.js +605 -0
  110. package/dist/commands/bar/install-subcommand.js.map +1 -0
  111. package/dist/commands/bar/launch-subcommand.d.ts +64 -0
  112. package/dist/commands/bar/launch-subcommand.d.ts.map +1 -0
  113. package/dist/commands/bar/launch-subcommand.js +236 -0
  114. package/dist/commands/bar/launch-subcommand.js.map +1 -0
  115. package/dist/commands/bar/uninstall-subcommand.d.ts +13 -0
  116. package/dist/commands/bar/uninstall-subcommand.d.ts.map +1 -0
  117. package/dist/commands/bar/uninstall-subcommand.js +78 -0
  118. package/dist/commands/bar/uninstall-subcommand.js.map +1 -0
  119. package/dist/commands/bar/version-subcommand.d.ts +8 -0
  120. package/dist/commands/bar/version-subcommand.d.ts.map +1 -0
  121. package/dist/commands/bar/version-subcommand.js +62 -0
  122. package/dist/commands/bar/version-subcommand.js.map +1 -0
  123. package/dist/commands/cliproxy/help-subcommand.d.ts.map +1 -1
  124. package/dist/commands/cliproxy/help-subcommand.js +20 -1
  125. package/dist/commands/cliproxy/help-subcommand.js.map +1 -1
  126. package/dist/commands/cliproxy/index.d.ts.map +1 -1
  127. package/dist/commands/cliproxy/index.js +20 -0
  128. package/dist/commands/cliproxy/index.js.map +1 -1
  129. package/dist/commands/cliproxy/order-subcommand.d.ts +16 -0
  130. package/dist/commands/cliproxy/order-subcommand.d.ts.map +1 -0
  131. package/dist/commands/cliproxy/order-subcommand.js +520 -0
  132. package/dist/commands/cliproxy/order-subcommand.js.map +1 -0
  133. package/dist/commands/cliproxy/pool-state-renderer.d.ts +40 -0
  134. package/dist/commands/cliproxy/pool-state-renderer.d.ts.map +1 -0
  135. package/dist/commands/cliproxy/pool-state-renderer.js +220 -0
  136. package/dist/commands/cliproxy/pool-state-renderer.js.map +1 -0
  137. package/dist/commands/cliproxy/pool-subcommand.d.ts +10 -0
  138. package/dist/commands/cliproxy/pool-subcommand.d.ts.map +1 -0
  139. package/dist/commands/cliproxy/pool-subcommand.js +112 -0
  140. package/dist/commands/cliproxy/pool-subcommand.js.map +1 -0
  141. package/dist/commands/cliproxy/quota-subcommand.d.ts.map +1 -1
  142. package/dist/commands/cliproxy/quota-subcommand.js +7 -0
  143. package/dist/commands/cliproxy/quota-subcommand.js.map +1 -1
  144. package/dist/commands/cliproxy/routing-subcommand.d.ts.map +1 -1
  145. package/dist/commands/cliproxy/routing-subcommand.js +19 -0
  146. package/dist/commands/cliproxy/routing-subcommand.js.map +1 -1
  147. package/dist/commands/command-catalog.d.ts.map +1 -1
  148. package/dist/commands/command-catalog.js +7 -0
  149. package/dist/commands/command-catalog.js.map +1 -1
  150. package/dist/commands/help-command.d.ts.map +1 -1
  151. package/dist/commands/help-command.js +6 -1
  152. package/dist/commands/help-command.js.map +1 -1
  153. package/dist/commands/root-command-router.d.ts.map +1 -1
  154. package/dist/commands/root-command-router.js +7 -0
  155. package/dist/commands/root-command-router.js.map +1 -1
  156. package/dist/config/loader/yaml-serializer.d.ts.map +1 -1
  157. package/dist/config/loader/yaml-serializer.js +13 -0
  158. package/dist/config/loader/yaml-serializer.js.map +1 -1
  159. package/dist/config/schemas/cliproxy.d.ts +37 -0
  160. package/dist/config/schemas/cliproxy.d.ts.map +1 -1
  161. package/dist/config/schemas/quota.d.ts +26 -2
  162. package/dist/config/schemas/quota.d.ts.map +1 -1
  163. package/dist/config/schemas/quota.js +20 -1
  164. package/dist/config/schemas/quota.js.map +1 -1
  165. package/dist/config/unified-config-loader.d.ts.map +1 -1
  166. package/dist/config/unified-config-loader.js +3 -0
  167. package/dist/config/unified-config-loader.js.map +1 -1
  168. package/dist/dispatcher/flows/account-flow.d.ts.map +1 -1
  169. package/dist/dispatcher/flows/account-flow.js +9 -0
  170. package/dist/dispatcher/flows/account-flow.js.map +1 -1
  171. package/dist/glmt/delta-accumulator.d.ts.map +1 -1
  172. package/dist/glmt/delta-accumulator.js +1 -0
  173. package/dist/glmt/delta-accumulator.js.map +1 -1
  174. package/dist/management/doctor.d.ts.map +1 -1
  175. package/dist/management/doctor.js +10 -0
  176. package/dist/management/doctor.js.map +1 -1
  177. package/dist/proxy/profile-router.d.ts +14 -0
  178. package/dist/proxy/profile-router.d.ts.map +1 -1
  179. package/dist/proxy/profile-router.js +1 -0
  180. package/dist/proxy/profile-router.js.map +1 -1
  181. package/dist/proxy/server/http-helpers.d.ts +5 -0
  182. package/dist/proxy/server/http-helpers.d.ts.map +1 -1
  183. package/dist/proxy/server/http-helpers.js +40 -1
  184. package/dist/proxy/server/http-helpers.js.map +1 -1
  185. package/dist/proxy/server/messages-route.d.ts.map +1 -1
  186. package/dist/proxy/server/messages-route.js +173 -10
  187. package/dist/proxy/server/messages-route.js.map +1 -1
  188. package/dist/proxy/upstream-url.d.ts +42 -2
  189. package/dist/proxy/upstream-url.d.ts.map +1 -1
  190. package/dist/proxy/upstream-url.js +83 -4
  191. package/dist/proxy/upstream-url.js.map +1 -1
  192. package/dist/ui/assets/{Trans-DsGR5Bhb.js → Trans-RG_sMDEu.js} +1 -1
  193. package/dist/ui/assets/accounts-yTXURc-q.js +1 -0
  194. package/dist/ui/assets/{alert-dialog-Do0XfN46.js → alert-dialog-DjvPgzFs.js} +1 -1
  195. package/dist/ui/assets/{api-B7OYas_V.js → api-Ck1dtNEM.js} +3 -3
  196. package/dist/ui/assets/{auth-section-BmTeNetL.js → auth-section-DBnY_LPz.js} +1 -1
  197. package/dist/ui/assets/{backups-section-COawLfTr.js → backups-section-Ci-uL4Of.js} +1 -1
  198. package/dist/ui/assets/{channels-C9LVYmNJ.js → channels-BeS9O5q0.js} +1 -1
  199. package/dist/ui/assets/{checkbox-BkFzg8C-.js → checkbox-DFeFDZBp.js} +1 -1
  200. package/dist/ui/assets/{claude-extension-Ch7L4lTF.js → claude-extension-DS5qN19Z.js} +1 -1
  201. package/dist/ui/assets/{cliproxy-B3uWt6gn.js → cliproxy-D7HJH4mZ.js} +1 -1
  202. package/dist/ui/assets/{cliproxy-ai-providers-Bn1_AdKD.js → cliproxy-ai-providers-oJQZXrtc.js} +1 -1
  203. package/dist/ui/assets/{cliproxy-control-panel-DC4pOOfY.js → cliproxy-control-panel-2mRPEcRj.js} +1 -1
  204. package/dist/ui/assets/codex-D0AUQ6jA.js +30 -0
  205. package/dist/ui/assets/{confirm-dialog-4rb-E8-R.js → confirm-dialog-B37-CVuq.js} +1 -1
  206. package/dist/ui/assets/{copilot-zgPXNkMw.js → copilot-KaaW-mko.js} +2 -2
  207. package/dist/ui/assets/{cursor-lRPpppk-.js → cursor-BKiTgYi5.js} +1 -1
  208. package/dist/ui/assets/{droid-koOj34SB.js → droid-DHdqGnFw.js} +2 -2
  209. package/dist/ui/assets/{globalenv-section-jOkPVwvN.js → globalenv-section-SfZO97nU.js} +1 -1
  210. package/dist/ui/assets/health-CSRS9O0D.js +1 -0
  211. package/dist/ui/assets/icons-DSLG1YsC.js +1 -0
  212. package/dist/ui/assets/{index-D7crOfea.js → index-CGgavq2X.js} +37 -37
  213. package/dist/ui/assets/{index-BLC5PyZn.js → index-ChTYEBCZ.js} +1 -1
  214. package/dist/ui/assets/index-Cu_F55_O.js +1 -0
  215. package/dist/ui/assets/{index-CRhKyfnS.js → index-DJ66NrBH.js} +1 -1
  216. package/dist/ui/assets/index-DWUuSBUe.js +1 -0
  217. package/dist/ui/assets/{index-BK-PSsqi.js → index-DycwEe96.js} +1 -1
  218. package/dist/ui/assets/index-DzFlVVV3.css +1 -0
  219. package/dist/ui/assets/{index-De3yNJ94.js → index-iQuEEGbH.js} +1 -1
  220. package/dist/ui/assets/{logs-BplpQHRb.js → logs-tiZ_51mo.js} +1 -1
  221. package/dist/ui/assets/{masked-input-DuLL3EwS.js → masked-input-D9FVoeMA.js} +1 -1
  222. package/dist/ui/assets/proxy-status-widget-2k26d8pS.js +1 -0
  223. package/dist/ui/assets/{raw-json-settings-editor-panel-ClPqZ6iZ.js → raw-json-settings-editor-panel-CguBh93H.js} +1 -1
  224. package/dist/ui/assets/{searchable-select-BH1b065u.js → searchable-select-C4wShshD.js} +1 -1
  225. package/dist/ui/assets/{separator-BOiJ0l4s.js → separator-mvGlDdEW.js} +1 -1
  226. package/dist/ui/assets/{shared-CunXigZu.js → shared-Ck0yAwbs.js} +1 -1
  227. package/dist/ui/assets/{table-C7ysR1Xz.js → table-DrUJOxKL.js} +1 -1
  228. package/dist/ui/assets/updates-BVHBFcq8.js +1 -0
  229. package/dist/ui/assets/{use-accounts-CwRU3ln9.js → use-accounts-DLtuaniS.js} +1 -1
  230. package/dist/ui/index.html +3 -3
  231. package/dist/utils/browser/mcp-installer.d.ts.map +1 -1
  232. package/dist/utils/browser/mcp-installer.js +5 -34
  233. package/dist/utils/browser/mcp-installer.js.map +1 -1
  234. package/dist/utils/claude-user-config-lock.d.ts +9 -0
  235. package/dist/utils/claude-user-config-lock.d.ts.map +1 -0
  236. package/dist/utils/claude-user-config-lock.js +96 -0
  237. package/dist/utils/claude-user-config-lock.js.map +1 -0
  238. package/dist/utils/image-analysis/mcp-installer.d.ts.map +1 -1
  239. package/dist/utils/image-analysis/mcp-installer.js +5 -34
  240. package/dist/utils/image-analysis/mcp-installer.js.map +1 -1
  241. package/dist/utils/websearch/mcp-installer.d.ts.map +1 -1
  242. package/dist/utils/websearch/mcp-installer.js +112 -78
  243. package/dist/utils/websearch/mcp-installer.js.map +1 -1
  244. package/dist/web-server/model-pricing.d.ts.map +1 -1
  245. package/dist/web-server/model-pricing.js +7 -0
  246. package/dist/web-server/model-pricing.js.map +1 -1
  247. package/dist/web-server/routes/account-routes.d.ts.map +1 -1
  248. package/dist/web-server/routes/account-routes.js +116 -0
  249. package/dist/web-server/routes/account-routes.js.map +1 -1
  250. package/dist/web-server/routes/bar-routes.d.ts +149 -0
  251. package/dist/web-server/routes/bar-routes.d.ts.map +1 -0
  252. package/dist/web-server/routes/bar-routes.js +415 -0
  253. package/dist/web-server/routes/bar-routes.js.map +1 -0
  254. package/dist/web-server/routes/index.d.ts.map +1 -1
  255. package/dist/web-server/routes/index.js +18 -0
  256. package/dist/web-server/routes/index.js.map +1 -1
  257. package/dist/web-server/usage/bar-analytics.d.ts +101 -0
  258. package/dist/web-server/usage/bar-analytics.d.ts.map +1 -0
  259. package/dist/web-server/usage/bar-analytics.js +315 -0
  260. package/dist/web-server/usage/bar-analytics.js.map +1 -0
  261. package/dist/web-server/usage/claude-native-credentials.d.ts +56 -0
  262. package/dist/web-server/usage/claude-native-credentials.d.ts.map +1 -0
  263. package/dist/web-server/usage/claude-native-credentials.js +140 -0
  264. package/dist/web-server/usage/claude-native-credentials.js.map +1 -0
  265. package/dist/web-server/usage/cliproxy-snapshot-reader.d.ts +24 -0
  266. package/dist/web-server/usage/cliproxy-snapshot-reader.d.ts.map +1 -0
  267. package/dist/web-server/usage/cliproxy-snapshot-reader.js +82 -0
  268. package/dist/web-server/usage/cliproxy-snapshot-reader.js.map +1 -0
  269. package/dist/web-server/usage/cliproxy-usage-syncer.d.ts +3 -2
  270. package/dist/web-server/usage/cliproxy-usage-syncer.d.ts.map +1 -1
  271. package/dist/web-server/usage/cliproxy-usage-syncer.js +14 -2
  272. package/dist/web-server/usage/cliproxy-usage-syncer.js.map +1 -1
  273. package/dist/web-server/usage/cliproxy-usage-transformer.d.ts +8 -1
  274. package/dist/web-server/usage/cliproxy-usage-transformer.d.ts.map +1 -1
  275. package/dist/web-server/usage/cliproxy-usage-transformer.js +31 -4
  276. package/dist/web-server/usage/cliproxy-usage-transformer.js.map +1 -1
  277. package/dist/web-server/usage/codex-local-quota-collector.d.ts +74 -0
  278. package/dist/web-server/usage/codex-local-quota-collector.d.ts.map +1 -0
  279. package/dist/web-server/usage/codex-local-quota-collector.js +250 -0
  280. package/dist/web-server/usage/codex-local-quota-collector.js.map +1 -0
  281. package/dist/web-server/usage/data-aggregator.d.ts +11 -0
  282. package/dist/web-server/usage/data-aggregator.d.ts.map +1 -1
  283. package/dist/web-server/usage/data-aggregator.js +29 -1
  284. package/dist/web-server/usage/data-aggregator.js.map +1 -1
  285. package/dist/web-server/usage/native-quota-collector.d.ts +44 -0
  286. package/dist/web-server/usage/native-quota-collector.d.ts.map +1 -0
  287. package/dist/web-server/usage/native-quota-collector.js +378 -0
  288. package/dist/web-server/usage/native-quota-collector.js.map +1 -0
  289. package/dist/web-server/usage/types.d.ts +2 -0
  290. package/dist/web-server/usage/types.d.ts.map +1 -1
  291. package/package.json +1 -1
  292. package/scripts/run-test-bucket.js +183 -17
  293. package/dist/ui/assets/accounts-DHBmHeH-.js +0 -1
  294. package/dist/ui/assets/codex-CcODhykP.js +0 -30
  295. package/dist/ui/assets/health-CxHauE3Y.js +0 -1
  296. package/dist/ui/assets/icons-DzKUh8vG.js +0 -1
  297. package/dist/ui/assets/index-DOfPoKe_.css +0 -1
  298. package/dist/ui/assets/index-DUGnoURR.js +0 -1
  299. package/dist/ui/assets/index-I_ek1xyD.js +0 -1
  300. package/dist/ui/assets/proxy-status-widget-BruRPTSl.js +0 -1
  301. package/dist/ui/assets/updates-BtBCV2xk.js +0 -1
@@ -0,0 +1,63 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.showHelp = void 0;
4
+ const ui_1 = require("../../utils/ui");
5
+ async function showHelp() {
6
+ await (0, ui_1.initUI)();
7
+ console.log('');
8
+ console.log((0, ui_1.header)('CCS Bar (macOS Menu Bar App)'));
9
+ console.log('');
10
+ console.log((0, ui_1.subheader)('Usage:'));
11
+ console.log(` ${(0, ui_1.color)('ccs bar', 'command')} [command] [options]`);
12
+ console.log('');
13
+ const sections = [
14
+ [
15
+ 'Commands:',
16
+ [
17
+ ['launch', 'Start the web-server, write ~/.ccs/bar.json, and open the app (default)'],
18
+ ['install', 'Download CCS Bar from the ccs-bar-latest GitHub release into ~/Applications'],
19
+ ['uninstall', 'Remove the app and version pin'],
20
+ ['version', 'Show CLI and installed app versions'],
21
+ ],
22
+ ],
23
+ [
24
+ 'Options:',
25
+ [
26
+ ['--help, -h', 'Show this help message'],
27
+ ['--version', 'Show CLI and installed app versions'],
28
+ ],
29
+ ],
30
+ [
31
+ 'Install options:',
32
+ [
33
+ ['--launch', 'Launch CCS Bar immediately after install without prompting'],
34
+ ['--no-launch', 'Skip the launch prompt after install'],
35
+ ],
36
+ ],
37
+ [
38
+ 'Examples:',
39
+ [
40
+ ['ccs bar', 'Start the web-server and open CCS Bar (default launch)'],
41
+ ['ccs bar install', 'Download and install CCS Bar, then prompt to launch'],
42
+ ['ccs bar install --launch', 'Install and launch immediately (no prompt)'],
43
+ ['ccs bar install --no-launch', 'Install without launching'],
44
+ ['ccs bar version', 'Show CLI and installed app versions'],
45
+ ['ccs bar uninstall', 'Remove CCS Bar and its version pin'],
46
+ ],
47
+ ],
48
+ ];
49
+ for (const [title, rows] of sections) {
50
+ console.log((0, ui_1.subheader)(title));
51
+ const width = Math.max(...rows.map(([command]) => command.length));
52
+ for (const [command, description] of rows) {
53
+ console.log(` ${(0, ui_1.color)(command.padEnd(width + 2), 'command')} ${description}`);
54
+ }
55
+ console.log('');
56
+ }
57
+ console.log((0, ui_1.dim)(' macOS only. The app communicates with the CCS web-server on localhost only.'));
58
+ console.log((0, ui_1.dim)(' Gatekeeper quarantine is cleared automatically after install. If the app is still blocked,'));
59
+ console.log((0, ui_1.dim)(' right-click > Open or run `xattr -dr com.apple.quarantine` manually.'));
60
+ console.log('');
61
+ }
62
+ exports.showHelp = showHelp;
63
+ //# sourceMappingURL=help-subcommand.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"help-subcommand.js","sourceRoot":"","sources":["../../../src/commands/bar/help-subcommand.ts"],"names":[],"mappings":";;;AAAA,uCAAuE;AAEhE,KAAK,UAAU,QAAQ;IAC5B,MAAM,IAAA,WAAM,GAAE,CAAC;IACf,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;IAChB,OAAO,CAAC,GAAG,CAAC,IAAA,WAAM,EAAC,8BAA8B,CAAC,CAAC,CAAC;IACpD,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;IAChB,OAAO,CAAC,GAAG,CAAC,IAAA,cAAS,EAAC,QAAQ,CAAC,CAAC,CAAC;IACjC,OAAO,CAAC,GAAG,CAAC,KAAK,IAAA,UAAK,EAAC,SAAS,EAAE,SAAS,CAAC,sBAAsB,CAAC,CAAC;IACpE,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;IAEhB,MAAM,QAAQ,GAAmC;QAC/C;YACE,WAAW;YACX;gBACE,CAAC,QAAQ,EAAE,yEAAyE,CAAC;gBACrF,CAAC,SAAS,EAAE,6EAA6E,CAAC;gBAC1F,CAAC,WAAW,EAAE,gCAAgC,CAAC;gBAC/C,CAAC,SAAS,EAAE,qCAAqC,CAAC;aACnD;SACF;QACD;YACE,UAAU;YACV;gBACE,CAAC,YAAY,EAAE,wBAAwB,CAAC;gBACxC,CAAC,WAAW,EAAE,qCAAqC,CAAC;aACrD;SACF;QACD;YACE,kBAAkB;YAClB;gBACE,CAAC,UAAU,EAAE,4DAA4D,CAAC;gBAC1E,CAAC,aAAa,EAAE,sCAAsC,CAAC;aACxD;SACF;QACD;YACE,WAAW;YACX;gBACE,CAAC,SAAS,EAAE,wDAAwD,CAAC;gBACrE,CAAC,iBAAiB,EAAE,qDAAqD,CAAC;gBAC1E,CAAC,0BAA0B,EAAE,4CAA4C,CAAC;gBAC1E,CAAC,6BAA6B,EAAE,2BAA2B,CAAC;gBAC5D,CAAC,iBAAiB,EAAE,qCAAqC,CAAC;gBAC1D,CAAC,mBAAmB,EAAE,oCAAoC,CAAC;aAC5D;SACF;KACF,CAAC;IAEF,KAAK,MAAM,CAAC,KAAK,EAAE,IAAI,CAAC,IAAI,QAAQ,EAAE,CAAC;QACrC,OAAO,CAAC,GAAG,CAAC,IAAA,cAAS,EAAC,KAAK,CAAC,CAAC,CAAC;QAC9B,MAAM,KAAK,GAAG,IAAI,CAAC,GAAG,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,OAAO,CAAC,EAAE,EAAE,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC;QACnE,KAAK,MAAM,CAAC,OAAO,EAAE,WAAW,CAAC,IAAI,IAAI,EAAE,CAAC;YAC1C,OAAO,CAAC,GAAG,CAAC,KAAK,IAAA,UAAK,EAAC,OAAO,CAAC,MAAM,CAAC,KAAK,GAAG,CAAC,CAAC,EAAE,SAAS,CAAC,IAAI,WAAW,EAAE,CAAC,CAAC;QACjF,CAAC;QACD,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;IAClB,CAAC;IAED,OAAO,CAAC,GAAG,CAAC,IAAA,QAAG,EAAC,+EAA+E,CAAC,CAAC,CAAC;IAClG,OAAO,CAAC,GAAG,CACT,IAAA,QAAG,EACD,8FAA8F,CAC/F,CACF,CAAC;IACF,OAAO,CAAC,GAAG,CAAC,IAAA,QAAG,EAAC,wEAAwE,CAAC,CAAC,CAAC;IAC3F,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;AAClB,CAAC;AA/DD,4BA+DC"}
@@ -0,0 +1,8 @@
1
+ /**
2
+ * `ccs bar` command dispatcher
3
+ *
4
+ * Mirrors the pattern in src/commands/docker/index.ts.
5
+ * Subcommands: launch (default), install, uninstall, version / --version, help / --help / -h.
6
+ */
7
+ export declare function handleBarCommand(args: string[]): Promise<void>;
8
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/commands/bar/index.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAIH,wBAAsB,gBAAgB,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CAgDpE"}
@@ -0,0 +1,78 @@
1
+ "use strict";
2
+ /**
3
+ * `ccs bar` command dispatcher
4
+ *
5
+ * Mirrors the pattern in src/commands/docker/index.ts.
6
+ * Subcommands: launch (default), install, uninstall, version / --version, help / --help / -h.
7
+ */
8
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
9
+ if (k2 === undefined) k2 = k;
10
+ var desc = Object.getOwnPropertyDescriptor(m, k);
11
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
12
+ desc = { enumerable: true, get: function() { return m[k]; } };
13
+ }
14
+ Object.defineProperty(o, k2, desc);
15
+ }) : (function(o, m, k, k2) {
16
+ if (k2 === undefined) k2 = k;
17
+ o[k2] = m[k];
18
+ }));
19
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
20
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
21
+ }) : function(o, v) {
22
+ o["default"] = v;
23
+ });
24
+ var __importStar = (this && this.__importStar) || function (mod) {
25
+ if (mod && mod.__esModule) return mod;
26
+ var result = {};
27
+ if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
28
+ __setModuleDefault(result, mod);
29
+ return result;
30
+ };
31
+ Object.defineProperty(exports, "__esModule", { value: true });
32
+ exports.handleBarCommand = void 0;
33
+ const arg_extractor_1 = require("../arg-extractor");
34
+ async function handleBarCommand(args) {
35
+ const subcommand = args[0];
36
+ // --help / -h anywhere in args (e.g. `ccs bar install --help`) → show help.
37
+ // Mirrors docker/index.ts: hasAnyFlag(normalizedArgs, ['--help', '-h']).
38
+ // Also dispatch bare `help` subcommand for symmetry.
39
+ if ((0, arg_extractor_1.hasAnyFlag)(args, ['--help', '-h']) || subcommand === 'help') {
40
+ const { showHelp } = await Promise.resolve().then(() => __importStar(require('./help-subcommand')));
41
+ await showHelp();
42
+ return;
43
+ }
44
+ // --version / version are aliases for the version subcommand
45
+ if (subcommand === '--version' || subcommand === 'version') {
46
+ const { handleBarVersion } = await Promise.resolve().then(() => __importStar(require('./version-subcommand')));
47
+ await handleBarVersion();
48
+ return;
49
+ }
50
+ const commandHandlers = {
51
+ launch: async (subArgs) => {
52
+ const { handleBarLaunch } = await Promise.resolve().then(() => __importStar(require('./launch-subcommand')));
53
+ await handleBarLaunch(subArgs);
54
+ },
55
+ install: async (subArgs) => {
56
+ const { handleBarInstall } = await Promise.resolve().then(() => __importStar(require('./install-subcommand')));
57
+ await handleBarInstall(subArgs);
58
+ },
59
+ uninstall: async (subArgs) => {
60
+ const { handleBarUninstall } = await Promise.resolve().then(() => __importStar(require('./uninstall-subcommand')));
61
+ await handleBarUninstall(subArgs);
62
+ },
63
+ };
64
+ // Bare `ccs bar` → launch
65
+ if (!subcommand || subcommand === 'launch') {
66
+ await commandHandlers.launch(subcommand ? args.slice(1) : []);
67
+ return;
68
+ }
69
+ const handler = commandHandlers[subcommand];
70
+ if (!handler) {
71
+ console.error(`[X] Unknown bar subcommand: ${subcommand}`);
72
+ console.error('[i] Usage: ccs bar [launch|install|uninstall|version|--help]');
73
+ return;
74
+ }
75
+ await handler(args.slice(1));
76
+ }
77
+ exports.handleBarCommand = handleBarCommand;
78
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/commands/bar/index.ts"],"names":[],"mappings":";AAAA;;;;;GAKG;;;;;;;;;;;;;;;;;;;;;;;;;;AAEH,oDAA8C;AAEvC,KAAK,UAAU,gBAAgB,CAAC,IAAc;IACnD,MAAM,UAAU,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC;IAE3B,4EAA4E;IAC5E,yEAAyE;IACzE,qDAAqD;IACrD,IAAI,IAAA,0BAAU,EAAC,IAAI,EAAE,CAAC,QAAQ,EAAE,IAAI,CAAC,CAAC,IAAI,UAAU,KAAK,MAAM,EAAE,CAAC;QAChE,MAAM,EAAE,QAAQ,EAAE,GAAG,wDAAa,mBAAmB,GAAC,CAAC;QACvD,MAAM,QAAQ,EAAE,CAAC;QACjB,OAAO;IACT,CAAC;IAED,6DAA6D;IAC7D,IAAI,UAAU,KAAK,WAAW,IAAI,UAAU,KAAK,SAAS,EAAE,CAAC;QAC3D,MAAM,EAAE,gBAAgB,EAAE,GAAG,wDAAa,sBAAsB,GAAC,CAAC;QAClE,MAAM,gBAAgB,EAAE,CAAC;QACzB,OAAO;IACT,CAAC;IAED,MAAM,eAAe,GAAyD;QAC5E,MAAM,EAAE,KAAK,EAAE,OAAO,EAAE,EAAE;YACxB,MAAM,EAAE,eAAe,EAAE,GAAG,wDAAa,qBAAqB,GAAC,CAAC;YAChE,MAAM,eAAe,CAAC,OAAO,CAAC,CAAC;QACjC,CAAC;QACD,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE,EAAE;YACzB,MAAM,EAAE,gBAAgB,EAAE,GAAG,wDAAa,sBAAsB,GAAC,CAAC;YAClE,MAAM,gBAAgB,CAAC,OAAO,CAAC,CAAC;QAClC,CAAC;QACD,SAAS,EAAE,KAAK,EAAE,OAAO,EAAE,EAAE;YAC3B,MAAM,EAAE,kBAAkB,EAAE,GAAG,wDAAa,wBAAwB,GAAC,CAAC;YACtE,MAAM,kBAAkB,CAAC,OAAO,CAAC,CAAC;QACpC,CAAC;KACF,CAAC;IAEF,0BAA0B;IAC1B,IAAI,CAAC,UAAU,IAAI,UAAU,KAAK,QAAQ,EAAE,CAAC;QAC3C,MAAM,eAAe,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;QAC9D,OAAO;IACT,CAAC;IAED,MAAM,OAAO,GAAG,eAAe,CAAC,UAAU,CAAC,CAAC;IAC5C,IAAI,CAAC,OAAO,EAAE,CAAC;QACb,OAAO,CAAC,KAAK,CAAC,+BAA+B,UAAU,EAAE,CAAC,CAAC;QAC3D,OAAO,CAAC,KAAK,CAAC,8DAA8D,CAAC,CAAC;QAC9E,OAAO;IACT,CAAC;IAED,MAAM,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;AAC/B,CAAC;AAhDD,4CAgDC"}
@@ -0,0 +1,92 @@
1
+ /**
2
+ * `ccs bar install` — download the CCS Bar app from the floating
3
+ * `ccs-bar-latest` GitHub release tag and install to ~/Applications.
4
+ *
5
+ * Intentionally uses a FLOATING tag (not the exact CLI version) so the
6
+ * Swift app can be rebuilt and published independently. After extraction,
7
+ * the real app version is read from the bundle's Contents/Info.plist
8
+ * (CFBundleShortVersionString) and pinned to ~/.ccs/bar/.version.
9
+ *
10
+ * Post-install compat check: single GET {baseUrl}/api/bar/summary.
11
+ * 200 = server serves the bar API (compatible).
12
+ * 404 = server too old (actionable warning).
13
+ * Other / unreachable = soft-warn, never hard-fail install.
14
+ *
15
+ * Mirrors the download/version-pin pattern in src/cliproxy/binary-manager.ts.
16
+ */
17
+ export interface ReleaseAssetResult {
18
+ downloadUrl: string;
19
+ }
20
+ export interface CompatResult {
21
+ compatible: boolean;
22
+ reason: 'ok' | 'no-bar-api' | 'unreachable';
23
+ }
24
+ export interface InstallDeps {
25
+ /**
26
+ * Resolve the asset download URL from a GitHub release tag.
27
+ * Production: calls GitHub API releases/tags/{tag}.
28
+ * Test: mock that returns a fake URL.
29
+ */
30
+ fetchReleaseAsset: (tag: string, asset: string) => Promise<ReleaseAssetResult>;
31
+ /**
32
+ * Download the zip archive and extract the .app bundle into dest/.
33
+ * Production: uses undici to stream + extract (with redirect + status check).
34
+ */
35
+ downloadAndExtract: (url: string, dest: string) => Promise<void>;
36
+ /**
37
+ * GET {baseUrl}/api/bar/summary — capability handshake.
38
+ * 200 → compatible; 404 → no-bar-api; else/unreachable → unreachable.
39
+ * Never hard-fails install.
40
+ */
41
+ verifyCompat: (baseUrl: string) => Promise<CompatResult>;
42
+ /**
43
+ * Read CFBundleShortVersionString from {appPath}/Contents/Info.plist.
44
+ * Returns null if the file is absent or unreadable.
45
+ */
46
+ readAppBundleVersion: (appPath: string) => string | null;
47
+ /** Returns path to ~/.ccs (respects CCS_HOME). */
48
+ getCcsDir: () => string;
49
+ /** Destination directory for the .app bundle (~/Applications by default). */
50
+ getAppsDir: () => string;
51
+ /**
52
+ * Clear the macOS Gatekeeper quarantine attribute from the installed app.
53
+ * Run via `/usr/bin/xattr -dr com.apple.quarantine <appPath>` (execFile, not shell-string).
54
+ * Returns true on success, false if xattr is unavailable or the call fails (non-fatal).
55
+ * Injectable for tests — avoids touching the real system.
56
+ */
57
+ clearQuarantine: (appPath: string) => Promise<boolean>;
58
+ /**
59
+ * Invoke handleBarLaunch after a successful install when the user consents.
60
+ * Injectable so tests can assert invocation without starting a real server.
61
+ */
62
+ launchBar: (args: string[]) => Promise<void>;
63
+ /**
64
+ * Ask the user whether to launch CCS Bar now (stdin-TTY-only).
65
+ * Returns true on yes/default, false on no or non-TTY stdin.
66
+ * Injectable for tests.
67
+ */
68
+ promptLaunch: () => Promise<boolean>;
69
+ /**
70
+ * Detect whether CCS Bar is already running.
71
+ * Production: uses /usr/bin/pgrep -x CCSBar (exit 0 = running, exit 1 = not found).
72
+ * Returns false on any error (treat pgrep failure as not running).
73
+ * Injectable for tests — avoids touching the real process table.
74
+ */
75
+ isBarRunning: () => Promise<boolean>;
76
+ /**
77
+ * Remove an existing app bundle before extraction so a malformed archive
78
+ * cannot silently leave the old version in place.
79
+ * Production: fs.rmSync(appPath, { recursive: true, force: true }).
80
+ * Injectable for tests — avoids real filesystem side-effects.
81
+ * Throws on failure; caller catches and aborts install.
82
+ */
83
+ removeExistingApp: (appPath: string) => void;
84
+ }
85
+ /**
86
+ * Validate that a download URL is https and its hostname is in the allowlist
87
+ * (exact match or *.githubusercontent.com wildcard).
88
+ * Throws a descriptive Error if validation fails.
89
+ */
90
+ export declare function validateDownloadUrl(url: string): void;
91
+ export declare function handleBarInstall(args: string[], deps?: Partial<InstallDeps>): Promise<void>;
92
+ //# sourceMappingURL=install-subcommand.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"install-subcommand.d.ts","sourceRoot":"","sources":["../../../src/commands/bar/install-subcommand.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AAoCH,MAAM,WAAW,kBAAkB;IACjC,WAAW,EAAE,MAAM,CAAC;CACrB;AAED,MAAM,WAAW,YAAY;IAC3B,UAAU,EAAE,OAAO,CAAC;IACpB,MAAM,EAAE,IAAI,GAAG,YAAY,GAAG,aAAa,CAAC;CAC7C;AAED,MAAM,WAAW,WAAW;IAC1B;;;;OAIG;IACH,iBAAiB,EAAE,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,KAAK,OAAO,CAAC,kBAAkB,CAAC,CAAC;IAC/E;;;OAGG;IACH,kBAAkB,EAAE,CAAC,GAAG,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;IACjE;;;;OAIG;IACH,YAAY,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK,OAAO,CAAC,YAAY,CAAC,CAAC;IACzD;;;OAGG;IACH,oBAAoB,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK,MAAM,GAAG,IAAI,CAAC;IACzD,kDAAkD;IAClD,SAAS,EAAE,MAAM,MAAM,CAAC;IACxB,6EAA6E;IAC7E,UAAU,EAAE,MAAM,MAAM,CAAC;IACzB;;;;;OAKG;IACH,eAAe,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK,OAAO,CAAC,OAAO,CAAC,CAAC;IACvD;;;OAGG;IACH,SAAS,EAAE,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;IAC7C;;;;OAIG;IACH,YAAY,EAAE,MAAM,OAAO,CAAC,OAAO,CAAC,CAAC;IACrC;;;;;OAKG;IACH,YAAY,EAAE,MAAM,OAAO,CAAC,OAAO,CAAC,CAAC;IACrC;;;;;;OAMG;IACH,iBAAiB,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK,IAAI,CAAC;CAC9C;AAMD;;;;GAIG;AACH,wBAAgB,mBAAmB,CAAC,GAAG,EAAE,MAAM,GAAG,IAAI,CAuBrD;AA0TD,wBAAsB,gBAAgB,CACpC,IAAI,EAAE,MAAM,EAAE,EACd,IAAI,GAAE,OAAO,CAAC,WAAW,CAAM,GAC9B,OAAO,CAAC,IAAI,CAAC,CAoOf"}