@kaitranntt/ccs 8.8.1 → 8.9.0-dev.10

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 (429) hide show
  1. package/README.md +9 -7
  2. package/dist/api/services/profile-lifecycle-validation.d.ts.map +1 -1
  3. package/dist/api/services/profile-lifecycle-validation.js +3 -8
  4. package/dist/api/services/profile-lifecycle-validation.js.map +1 -1
  5. package/dist/auth/auth-commands.js +3 -3
  6. package/dist/auth/auth-commands.js.map +1 -1
  7. package/dist/auth/resume-lane-diagnostics.d.ts +9 -0
  8. package/dist/auth/resume-lane-diagnostics.d.ts.map +1 -1
  9. package/dist/auth/resume-lane-diagnostics.js +105 -1
  10. package/dist/auth/resume-lane-diagnostics.js.map +1 -1
  11. package/dist/auth/resume-lane-warning.d.ts +9 -1
  12. package/dist/auth/resume-lane-warning.d.ts.map +1 -1
  13. package/dist/auth/resume-lane-warning.js +72 -5
  14. package/dist/auth/resume-lane-warning.js.map +1 -1
  15. package/dist/ccs.d.ts +1 -1
  16. package/dist/ccs.d.ts.map +1 -1
  17. package/dist/ccs.js +5 -1
  18. package/dist/ccs.js.map +1 -1
  19. package/dist/cliproxy/accounts/registry.d.ts.map +1 -1
  20. package/dist/cliproxy/accounts/registry.js +14 -16
  21. package/dist/cliproxy/accounts/registry.js.map +1 -1
  22. package/dist/cliproxy/ai-providers/model-id-normalizer.d.ts +1 -1
  23. package/dist/cliproxy/ai-providers/model-id-normalizer.d.ts.map +1 -1
  24. package/dist/cliproxy/auth/oauth-cli-args.d.ts +11 -0
  25. package/dist/cliproxy/auth/oauth-cli-args.d.ts.map +1 -0
  26. package/dist/cliproxy/auth/oauth-cli-args.js +53 -0
  27. package/dist/cliproxy/auth/oauth-cli-args.js.map +1 -0
  28. package/dist/cliproxy/auth/oauth-cli-capabilities.d.ts +11 -0
  29. package/dist/cliproxy/auth/oauth-cli-capabilities.d.ts.map +1 -0
  30. package/dist/cliproxy/auth/oauth-cli-capabilities.js +101 -0
  31. package/dist/cliproxy/auth/oauth-cli-capabilities.js.map +1 -0
  32. package/dist/cliproxy/auth/oauth-handler.d.ts +0 -6
  33. package/dist/cliproxy/auth/oauth-handler.d.ts.map +1 -1
  34. package/dist/cliproxy/auth/oauth-handler.js +70 -43
  35. package/dist/cliproxy/auth/oauth-handler.js.map +1 -1
  36. package/dist/cliproxy/auth/test-fixtures/gemini-backend-guidance-child.scenario.d.ts +2 -0
  37. package/dist/cliproxy/auth/test-fixtures/gemini-backend-guidance-child.scenario.d.ts.map +1 -0
  38. package/dist/cliproxy/auth/test-fixtures/gemini-backend-guidance-child.scenario.js +207 -0
  39. package/dist/cliproxy/auth/test-fixtures/gemini-backend-guidance-child.scenario.js.map +1 -0
  40. package/dist/cliproxy/binary/install-lifecycle-lock.d.ts +2 -0
  41. package/dist/cliproxy/binary/install-lifecycle-lock.d.ts.map +1 -0
  42. package/dist/cliproxy/binary/install-lifecycle-lock.js +63 -0
  43. package/dist/cliproxy/binary/install-lifecycle-lock.js.map +1 -0
  44. package/dist/cliproxy/binary/installer.d.ts +13 -1
  45. package/dist/cliproxy/binary/installer.d.ts.map +1 -1
  46. package/dist/cliproxy/binary/installer.js +81 -42
  47. package/dist/cliproxy/binary/installer.js.map +1 -1
  48. package/dist/cliproxy/binary/lifecycle.d.ts +6 -1
  49. package/dist/cliproxy/binary/lifecycle.d.ts.map +1 -1
  50. package/dist/cliproxy/binary/lifecycle.js +13 -10
  51. package/dist/cliproxy/binary/lifecycle.js.map +1 -1
  52. package/dist/cliproxy/binary-manager.d.ts +3 -0
  53. package/dist/cliproxy/binary-manager.d.ts.map +1 -1
  54. package/dist/cliproxy/binary-manager.js +32 -30
  55. package/dist/cliproxy/binary-manager.js.map +1 -1
  56. package/dist/cliproxy/config/env-builder.d.ts +5 -0
  57. package/dist/cliproxy/config/env-builder.d.ts.map +1 -1
  58. package/dist/cliproxy/config/env-builder.js +24 -1
  59. package/dist/cliproxy/config/env-builder.js.map +1 -1
  60. package/dist/cliproxy/config/extended-context-config.d.ts.map +1 -1
  61. package/dist/cliproxy/config/extended-context-config.js +38 -1
  62. package/dist/cliproxy/config/extended-context-config.js.map +1 -1
  63. package/dist/cliproxy/config/generator.d.ts +2 -1
  64. package/dist/cliproxy/config/generator.d.ts.map +1 -1
  65. package/dist/cliproxy/config/generator.js +81 -11
  66. package/dist/cliproxy/config/generator.js.map +1 -1
  67. package/dist/cliproxy/config/oauth-model-alias-config.d.ts +6 -0
  68. package/dist/cliproxy/config/oauth-model-alias-config.d.ts.map +1 -0
  69. package/dist/cliproxy/config/oauth-model-alias-config.js +136 -0
  70. package/dist/cliproxy/config/oauth-model-alias-config.js.map +1 -0
  71. package/dist/cliproxy/config/payload-rule-config.d.ts +6 -0
  72. package/dist/cliproxy/config/payload-rule-config.d.ts.map +1 -0
  73. package/dist/cliproxy/config/payload-rule-config.js +137 -0
  74. package/dist/cliproxy/config/payload-rule-config.js.map +1 -0
  75. package/dist/cliproxy/executor/claude-launcher.d.ts +3 -0
  76. package/dist/cliproxy/executor/claude-launcher.d.ts.map +1 -1
  77. package/dist/cliproxy/executor/claude-launcher.js +7 -3
  78. package/dist/cliproxy/executor/claude-launcher.js.map +1 -1
  79. package/dist/cliproxy/executor/env-resolver.d.ts +2 -0
  80. package/dist/cliproxy/executor/env-resolver.d.ts.map +1 -1
  81. package/dist/cliproxy/executor/env-resolver.js +6 -4
  82. package/dist/cliproxy/executor/env-resolver.js.map +1 -1
  83. package/dist/cliproxy/executor/index.d.ts.map +1 -1
  84. package/dist/cliproxy/executor/index.js +7 -5
  85. package/dist/cliproxy/executor/index.js.map +1 -1
  86. package/dist/cliproxy/executor/launch-settings.d.ts.map +1 -1
  87. package/dist/cliproxy/executor/launch-settings.js +9 -2
  88. package/dist/cliproxy/executor/launch-settings.js.map +1 -1
  89. package/dist/cliproxy/model-catalog.d.ts +8 -0
  90. package/dist/cliproxy/model-catalog.d.ts.map +1 -1
  91. package/dist/cliproxy/model-catalog.js +109 -2
  92. package/dist/cliproxy/model-catalog.js.map +1 -1
  93. package/dist/cliproxy/quota/quota-fetcher-claude.d.ts.map +1 -1
  94. package/dist/cliproxy/quota/quota-fetcher-claude.js +11 -1
  95. package/dist/cliproxy/quota/quota-fetcher-claude.js.map +1 -1
  96. package/dist/cliproxy/routing/retry-settings.d.ts +18 -0
  97. package/dist/cliproxy/routing/retry-settings.d.ts.map +1 -0
  98. package/dist/cliproxy/routing/retry-settings.js +185 -0
  99. package/dist/cliproxy/routing/retry-settings.js.map +1 -0
  100. package/dist/cliproxy/routing/routing-strategy-http.d.ts +3 -0
  101. package/dist/cliproxy/routing/routing-strategy-http.d.ts.map +1 -1
  102. package/dist/cliproxy/routing/routing-strategy-http.js +13 -3
  103. package/dist/cliproxy/routing/routing-strategy-http.js.map +1 -1
  104. package/dist/cliproxy/services/binary-service.d.ts.map +1 -1
  105. package/dist/cliproxy/services/binary-service.js +24 -20
  106. package/dist/cliproxy/services/binary-service.js.map +1 -1
  107. package/dist/cliproxy/services/catalog-cache.d.ts.map +1 -1
  108. package/dist/cliproxy/services/catalog-cache.js +8 -0
  109. package/dist/cliproxy/services/catalog-cache.js.map +1 -1
  110. package/dist/cliproxy/session-tracker.d.ts.map +1 -1
  111. package/dist/cliproxy/session-tracker.js +4 -18
  112. package/dist/cliproxy/session-tracker.js.map +1 -1
  113. package/dist/cliproxy/types/binary-types.d.ts +1 -0
  114. package/dist/cliproxy/types/binary-types.d.ts.map +1 -1
  115. package/dist/cliproxy/types/config-types.d.ts +3 -0
  116. package/dist/cliproxy/types/config-types.d.ts.map +1 -1
  117. package/dist/codex-auth/shell-detect.d.ts +2 -0
  118. package/dist/codex-auth/shell-detect.d.ts.map +1 -1
  119. package/dist/codex-auth/shell-detect.js +15 -1
  120. package/dist/codex-auth/shell-detect.js.map +1 -1
  121. package/dist/commands/bar/bar-process-control.d.ts +43 -0
  122. package/dist/commands/bar/bar-process-control.d.ts.map +1 -0
  123. package/dist/commands/bar/bar-process-control.js +255 -0
  124. package/dist/commands/bar/bar-process-control.js.map +1 -0
  125. package/dist/commands/bar/bar-server-probe.d.ts +5 -2
  126. package/dist/commands/bar/bar-server-probe.d.ts.map +1 -1
  127. package/dist/commands/bar/bar-server-probe.js +38 -12
  128. package/dist/commands/bar/bar-server-probe.js.map +1 -1
  129. package/dist/commands/bar/help-subcommand.d.ts.map +1 -1
  130. package/dist/commands/bar/help-subcommand.js +2 -0
  131. package/dist/commands/bar/help-subcommand.js.map +1 -1
  132. package/dist/commands/bar/index.d.ts.map +1 -1
  133. package/dist/commands/bar/index.js +13 -3
  134. package/dist/commands/bar/index.js.map +1 -1
  135. package/dist/commands/bar/launch-descriptor.d.ts +2 -0
  136. package/dist/commands/bar/launch-descriptor.d.ts.map +1 -1
  137. package/dist/commands/bar/launch-descriptor.js +6 -1
  138. package/dist/commands/bar/launch-descriptor.js.map +1 -1
  139. package/dist/commands/bar/launch-subcommand.d.ts +18 -1
  140. package/dist/commands/bar/launch-subcommand.d.ts.map +1 -1
  141. package/dist/commands/bar/launch-subcommand.js +149 -45
  142. package/dist/commands/bar/launch-subcommand.js.map +1 -1
  143. package/dist/commands/bar/port-arg.d.ts +16 -0
  144. package/dist/commands/bar/port-arg.d.ts.map +1 -0
  145. package/dist/commands/bar/port-arg.js +41 -0
  146. package/dist/commands/bar/port-arg.js.map +1 -0
  147. package/dist/commands/bar/serve-subcommand.d.ts +5 -0
  148. package/dist/commands/bar/serve-subcommand.d.ts.map +1 -1
  149. package/dist/commands/bar/serve-subcommand.js +47 -29
  150. package/dist/commands/bar/serve-subcommand.js.map +1 -1
  151. package/dist/commands/bar/status-subcommand.d.ts.map +1 -1
  152. package/dist/commands/bar/status-subcommand.js +11 -2
  153. package/dist/commands/bar/status-subcommand.js.map +1 -1
  154. package/dist/commands/bar/stop-subcommand.d.ts +5 -0
  155. package/dist/commands/bar/stop-subcommand.d.ts.map +1 -1
  156. package/dist/commands/bar/stop-subcommand.js +71 -27
  157. package/dist/commands/bar/stop-subcommand.js.map +1 -1
  158. package/dist/commands/cliproxy/catalog-subcommand.d.ts.map +1 -1
  159. package/dist/commands/cliproxy/catalog-subcommand.js +2 -0
  160. package/dist/commands/cliproxy/catalog-subcommand.js.map +1 -1
  161. package/dist/commands/cliproxy/quota-subcommand/format-helpers.js +1 -1
  162. package/dist/commands/cliproxy/quota-subcommand/handlers.js +1 -1
  163. package/dist/commands/cliproxy/quota-subcommand/handlers.js.map +1 -1
  164. package/dist/commands/cliproxy/quota-subcommand/sections/claude.d.ts.map +1 -1
  165. package/dist/commands/cliproxy/quota-subcommand/sections/claude.js +3 -2
  166. package/dist/commands/cliproxy/quota-subcommand/sections/claude.js.map +1 -1
  167. package/dist/commands/cliproxy/quota-subcommand/sections/codex.js +1 -1
  168. package/dist/commands/cliproxy/quota-subcommand/sections/codex.js.map +1 -1
  169. package/dist/commands/cliproxy/quota-subcommand/sections/gemini-cli.js +1 -1
  170. package/dist/commands/cliproxy/quota-subcommand/sections/gemini-cli.js.map +1 -1
  171. package/dist/commands/setup-command.js +1 -1
  172. package/dist/commands/setup-command.js.map +1 -1
  173. package/dist/commands/version-command.js +1 -1
  174. package/dist/commands/version-command.js.map +1 -1
  175. package/dist/config/schemas/auth.d.ts +2 -2
  176. package/dist/config/schemas/auth.d.ts.map +1 -1
  177. package/dist/config/schemas/cliproxy.d.ts +66 -0
  178. package/dist/config/schemas/cliproxy.d.ts.map +1 -1
  179. package/dist/config/schemas/cliproxy.js +13 -1
  180. package/dist/config/schemas/cliproxy.js.map +1 -1
  181. package/dist/config/schemas/index.d.ts +1 -1
  182. package/dist/config/schemas/index.d.ts.map +1 -1
  183. package/dist/config/schemas/index.js.map +1 -1
  184. package/dist/config/schemas/version.d.ts +2 -1
  185. package/dist/config/schemas/version.d.ts.map +1 -1
  186. package/dist/config/schemas/version.js +2 -1
  187. package/dist/config/schemas/version.js.map +1 -1
  188. package/dist/copilot/copilot-executor.d.ts +3 -1
  189. package/dist/copilot/copilot-executor.d.ts.map +1 -1
  190. package/dist/copilot/copilot-executor.js +11 -7
  191. package/dist/copilot/copilot-executor.js.map +1 -1
  192. package/dist/cursor/cursor-profile-executor.d.ts +3 -1
  193. package/dist/cursor/cursor-profile-executor.d.ts.map +1 -1
  194. package/dist/cursor/cursor-profile-executor.js +8 -4
  195. package/dist/cursor/cursor-profile-executor.js.map +1 -1
  196. package/dist/delegation/delegation-handler.d.ts.map +1 -1
  197. package/dist/delegation/delegation-handler.js +12 -2
  198. package/dist/delegation/delegation-handler.js.map +1 -1
  199. package/dist/delegation/headless-executor.d.ts.map +1 -1
  200. package/dist/delegation/headless-executor.js +4 -3
  201. package/dist/delegation/headless-executor.js.map +1 -1
  202. package/dist/dispatcher/flows/copilot-flow.d.ts.map +1 -1
  203. package/dist/dispatcher/flows/copilot-flow.js +3 -2
  204. package/dist/dispatcher/flows/copilot-flow.js.map +1 -1
  205. package/dist/dispatcher/flows/cursor-flow.d.ts.map +1 -1
  206. package/dist/dispatcher/flows/cursor-flow.js +3 -2
  207. package/dist/dispatcher/flows/cursor-flow.js.map +1 -1
  208. package/dist/dispatcher/flows/settings-flow.d.ts.map +1 -1
  209. package/dist/dispatcher/flows/settings-flow.js +12 -10
  210. package/dist/dispatcher/flows/settings-flow.js.map +1 -1
  211. package/dist/management/instance-directory.d.ts +19 -0
  212. package/dist/management/instance-directory.d.ts.map +1 -1
  213. package/dist/management/instance-directory.js +130 -7
  214. package/dist/management/instance-directory.js.map +1 -1
  215. package/dist/management/instance-manager.d.ts +2 -5
  216. package/dist/management/instance-manager.d.ts.map +1 -1
  217. package/dist/management/instance-manager.js +26 -27
  218. package/dist/management/instance-manager.js.map +1 -1
  219. package/dist/management/shared-manager/canonical-first-file-claims.d.ts +6 -0
  220. package/dist/management/shared-manager/canonical-first-file-claims.d.ts.map +1 -0
  221. package/dist/management/shared-manager/canonical-first-file-claims.js +143 -0
  222. package/dist/management/shared-manager/canonical-first-file-claims.js.map +1 -0
  223. package/dist/management/shared-manager/canonical-first-file-reconciler.d.ts +15 -0
  224. package/dist/management/shared-manager/canonical-first-file-reconciler.d.ts.map +1 -0
  225. package/dist/management/shared-manager/canonical-first-file-reconciler.js +131 -0
  226. package/dist/management/shared-manager/canonical-first-file-reconciler.js.map +1 -0
  227. package/dist/management/shared-manager/diverged-file-adopter.d.ts +5 -0
  228. package/dist/management/shared-manager/diverged-file-adopter.d.ts.map +1 -0
  229. package/dist/management/shared-manager/diverged-file-adopter.js +391 -0
  230. package/dist/management/shared-manager/diverged-file-adopter.js.map +1 -0
  231. package/dist/management/shared-manager/fs-helpers.d.ts +9 -0
  232. package/dist/management/shared-manager/fs-helpers.d.ts.map +1 -1
  233. package/dist/management/shared-manager/fs-helpers.js +9 -0
  234. package/dist/management/shared-manager/fs-helpers.js.map +1 -1
  235. package/dist/management/shared-manager/plugin-layout-internals.d.ts +1 -1
  236. package/dist/management/shared-manager/plugin-layout-internals.d.ts.map +1 -1
  237. package/dist/management/shared-manager/plugin-layout-internals.js +54 -8
  238. package/dist/management/shared-manager/plugin-layout-internals.js.map +1 -1
  239. package/dist/management/shared-manager/shared-dir-linker.d.ts +1 -1
  240. package/dist/management/shared-manager/shared-dir-linker.d.ts.map +1 -1
  241. package/dist/management/shared-manager/shared-dir-linker.js +147 -75
  242. package/dist/management/shared-manager/shared-dir-linker.js.map +1 -1
  243. package/dist/management/shared-manager/types.d.ts +12 -1
  244. package/dist/management/shared-manager/types.d.ts.map +1 -1
  245. package/dist/management/shared-manager/types.js +12 -1
  246. package/dist/management/shared-manager/types.js.map +1 -1
  247. package/dist/proxy/proxy-daemon-entry.js +10 -2
  248. package/dist/proxy/proxy-daemon-entry.js.map +1 -1
  249. package/dist/proxy/server/messages-route.d.ts +2 -2
  250. package/dist/proxy/server/messages-route.d.ts.map +1 -1
  251. package/dist/proxy/server/messages-route.js +33 -24
  252. package/dist/proxy/server/messages-route.js.map +1 -1
  253. package/dist/proxy/server/proxy-server.d.ts +1 -0
  254. package/dist/proxy/server/proxy-server.d.ts.map +1 -1
  255. package/dist/proxy/server/proxy-server.js +57 -5
  256. package/dist/proxy/server/proxy-server.js.map +1 -1
  257. package/dist/proxy/server/upstream-transport.d.ts +14 -0
  258. package/dist/proxy/server/upstream-transport.d.ts.map +1 -0
  259. package/dist/proxy/server/upstream-transport.js +72 -0
  260. package/dist/proxy/server/upstream-transport.js.map +1 -0
  261. package/dist/proxy/transformers/request-transformer.d.ts.map +1 -1
  262. package/dist/proxy/transformers/request-transformer.js +43 -1
  263. package/dist/proxy/transformers/request-transformer.js.map +1 -1
  264. package/dist/services/logging/log-redaction.d.ts.map +1 -1
  265. package/dist/services/logging/log-redaction.js +4 -1
  266. package/dist/services/logging/log-redaction.js.map +1 -1
  267. package/dist/services/logging/log-types.d.ts +1 -0
  268. package/dist/services/logging/log-types.d.ts.map +1 -1
  269. package/dist/services/logging/log-types.js.map +1 -1
  270. package/dist/shared/extended-context-utils.d.ts +18 -2
  271. package/dist/shared/extended-context-utils.d.ts.map +1 -1
  272. package/dist/shared/extended-context-utils.js +38 -3
  273. package/dist/shared/extended-context-utils.js.map +1 -1
  274. package/dist/shared/provider-preset-catalog.d.ts +2 -1
  275. package/dist/shared/provider-preset-catalog.d.ts.map +1 -1
  276. package/dist/shared/provider-preset-catalog.js +18 -1
  277. package/dist/shared/provider-preset-catalog.js.map +1 -1
  278. package/dist/types/config.d.ts +2 -2
  279. package/dist/types/config.d.ts.map +1 -1
  280. package/dist/ui/assets/{Trans-DTklOPAl.js → Trans-Dv0FgbfN.js} +1 -1
  281. package/dist/ui/assets/{accounts-Cvmw1zaL.js → accounts-DD4gJm5G.js} +1 -1
  282. package/dist/ui/assets/{alert-dialog-xN1Vxm4Q.js → alert-dialog-CfsyUL5i.js} +1 -1
  283. package/dist/ui/assets/{api-UjGDV1dn.js → api-Rml_6r1f.js} +1 -1
  284. package/dist/ui/assets/{auth-section-exE9zovq.js → auth-section-ud23YOqo.js} +1 -1
  285. package/dist/ui/assets/{backups-section-CANdqpNT.js → backups-section-BvojIR_s.js} +1 -1
  286. package/dist/ui/assets/{channels-C8d6AgLN.js → channels-C6JAnQ-P.js} +1 -1
  287. package/dist/ui/assets/{checkbox-B71vxZdD.js → checkbox-e4TE1vtU.js} +1 -1
  288. package/dist/ui/assets/{claude-extension-COD7m8Iq.js → claude-extension-Crqbbisi.js} +1 -1
  289. package/dist/ui/assets/cliproxy-CTzg_fbJ.js +4 -0
  290. package/dist/ui/assets/{cliproxy-ai-providers-C79GuQ92.js → cliproxy-ai-providers-DRfGjeni.js} +5 -5
  291. package/dist/ui/assets/{cliproxy-control-panel-B6_hOtz6.js → cliproxy-control-panel-C0TgmqD6.js} +1 -1
  292. package/dist/ui/assets/{codex-3mlgCMGk.js → codex-CGFN2_Yz.js} +1 -1
  293. package/dist/ui/assets/{confirm-dialog-CHnCNFFP.js → confirm-dialog-CWYwcPu7.js} +1 -1
  294. package/dist/ui/assets/{copilot-CfmS6yON.js → copilot-CDo33AQ9.js} +2 -2
  295. package/dist/ui/assets/{cursor-tzPHgV8J.js → cursor-nVJdycFe.js} +1 -1
  296. package/dist/ui/assets/{droid-Bc8LlbJa.js → droid-C1mg2O8N.js} +1 -1
  297. package/dist/ui/assets/{globalenv-section-DTYeLBoB.js → globalenv-section-D0iUrk5Z.js} +1 -1
  298. package/dist/ui/assets/{health-9Xyzeiyx.js → health-CIcj1Jxy.js} +1 -1
  299. package/dist/ui/assets/{index-B0M7QB1o.js → index-AosRBwPp.js} +1 -1
  300. package/dist/ui/assets/{index-DoHAX6LH.js → index-BCqgbLRB.js} +1 -1
  301. package/dist/ui/assets/{index-CEx6YJb5.js → index-BxcCMHzL.js} +1 -1
  302. package/dist/ui/assets/{index-Bz1gMXk1.js → index-DZbSKKhp.js} +1 -1
  303. package/dist/ui/assets/{index-DuD3QaMG.js → index-DvvpgsgL.js} +1 -1
  304. package/dist/ui/assets/index-DwlqXVPF.js +56 -0
  305. package/dist/ui/assets/{index-Bjg11-rW.js → index-W-L7VU-4.js} +1 -1
  306. package/dist/ui/assets/{logs-CrjUtfDp.js → logs-CLIARnH2.js} +1 -1
  307. package/dist/ui/assets/{masked-input-BAtRbixr.js → masked-input-BRcjJtU3.js} +1 -1
  308. package/dist/ui/assets/proxy-status-widget-CBBs3HmJ.js +1 -0
  309. package/dist/ui/assets/{raw-json-settings-editor-panel-CvJCywnk.js → raw-json-settings-editor-panel-DhDm8jkK.js} +1 -1
  310. package/dist/ui/assets/{searchable-select-Bn50_-2s.js → searchable-select-DW5e6ct1.js} +1 -1
  311. package/dist/ui/assets/{separator-DY36bzud.js → separator-D-2blr1t.js} +1 -1
  312. package/dist/ui/assets/{shared-BynjOvKs.js → shared-BIRVeSaP.js} +1 -1
  313. package/dist/ui/assets/{table-DdcK8yYq.js → table-CEyFyU_X.js} +1 -1
  314. package/dist/ui/assets/{updates-D27A1hQG.js → updates-Dcpm3clh.js} +1 -1
  315. package/dist/ui/assets/{use-accounts-CRxt0j07.js → use-accounts-Cjb9-mnK.js} +1 -1
  316. package/dist/ui/icons/orcarouter.svg +1 -0
  317. package/dist/ui/index.html +2 -2
  318. package/dist/utils/fetch-proxy-setup.d.ts.map +1 -1
  319. package/dist/utils/fetch-proxy-setup.js +10 -6
  320. package/dist/utils/fetch-proxy-setup.js.map +1 -1
  321. package/dist/utils/hooks/image-analysis-backend-resolver.d.ts.map +1 -1
  322. package/dist/utils/hooks/image-analysis-backend-resolver.js +6 -0
  323. package/dist/utils/hooks/image-analysis-backend-resolver.js.map +1 -1
  324. package/dist/utils/hooks/image-analysis-runtime-status.d.ts.map +1 -1
  325. package/dist/utils/hooks/image-analysis-runtime-status.js +8 -3
  326. package/dist/utils/hooks/image-analysis-runtime-status.js.map +1 -1
  327. package/dist/utils/package-manager-detector.d.ts.map +1 -1
  328. package/dist/utils/package-manager-detector.js +6 -2
  329. package/dist/utils/package-manager-detector.js.map +1 -1
  330. package/dist/utils/shell-executor.d.ts +1 -1
  331. package/dist/utils/shell-executor.d.ts.map +1 -1
  332. package/dist/utils/shell-executor.js +5 -8
  333. package/dist/utils/shell-executor.js.map +1 -1
  334. package/dist/utils/sync-lock-retry.d.ts +9 -0
  335. package/dist/utils/sync-lock-retry.d.ts.map +1 -0
  336. package/dist/utils/sync-lock-retry.js +107 -0
  337. package/dist/utils/sync-lock-retry.js.map +1 -0
  338. package/dist/utils/websearch/agy.d.ts +3 -1
  339. package/dist/utils/websearch/agy.d.ts.map +1 -1
  340. package/dist/utils/websearch/agy.js +33 -23
  341. package/dist/utils/websearch/agy.js.map +1 -1
  342. package/dist/utils/websearch/claude-tool-args.d.ts +1 -1
  343. package/dist/utils/websearch/claude-tool-args.d.ts.map +1 -1
  344. package/dist/utils/websearch/claude-tool-args.js +3 -2
  345. package/dist/utils/websearch/claude-tool-args.js.map +1 -1
  346. package/dist/utils/websearch/gemini-cli.d.ts +3 -1
  347. package/dist/utils/websearch/gemini-cli.d.ts.map +1 -1
  348. package/dist/utils/websearch/gemini-cli.js +33 -23
  349. package/dist/utils/websearch/gemini-cli.js.map +1 -1
  350. package/dist/utils/websearch/grok-cli.d.ts +3 -1
  351. package/dist/utils/websearch/grok-cli.d.ts.map +1 -1
  352. package/dist/utils/websearch/grok-cli.js +33 -23
  353. package/dist/utils/websearch/grok-cli.js.map +1 -1
  354. package/dist/utils/websearch/hook-config.d.ts +2 -1
  355. package/dist/utils/websearch/hook-config.d.ts.map +1 -1
  356. package/dist/utils/websearch/hook-config.js +1 -2
  357. package/dist/utils/websearch/hook-config.js.map +1 -1
  358. package/dist/utils/websearch/hook-env.d.ts +2 -1
  359. package/dist/utils/websearch/hook-env.d.ts.map +1 -1
  360. package/dist/utils/websearch/hook-env.js +1 -2
  361. package/dist/utils/websearch/hook-env.js.map +1 -1
  362. package/dist/utils/websearch/hook-installer.d.ts +2 -1
  363. package/dist/utils/websearch/hook-installer.d.ts.map +1 -1
  364. package/dist/utils/websearch/hook-installer.js +1 -2
  365. package/dist/utils/websearch/hook-installer.js.map +1 -1
  366. package/dist/utils/websearch/index.d.ts +2 -0
  367. package/dist/utils/websearch/index.d.ts.map +1 -1
  368. package/dist/utils/websearch/index.js +3 -1
  369. package/dist/utils/websearch/index.js.map +1 -1
  370. package/dist/utils/websearch/launch-state.d.ts +9 -0
  371. package/dist/utils/websearch/launch-state.d.ts.map +1 -0
  372. package/dist/utils/websearch/launch-state.js +15 -0
  373. package/dist/utils/websearch/launch-state.js.map +1 -0
  374. package/dist/utils/websearch/mcp-installer.d.ts +6 -5
  375. package/dist/utils/websearch/mcp-installer.d.ts.map +1 -1
  376. package/dist/utils/websearch/mcp-installer.js +10 -15
  377. package/dist/utils/websearch/mcp-installer.js.map +1 -1
  378. package/dist/utils/websearch/opencode-cli.d.ts +3 -1
  379. package/dist/utils/websearch/opencode-cli.d.ts.map +1 -1
  380. package/dist/utils/websearch/opencode-cli.js +33 -23
  381. package/dist/utils/websearch/opencode-cli.js.map +1 -1
  382. package/dist/utils/websearch/status.d.ts +7 -3
  383. package/dist/utils/websearch/status.d.ts.map +1 -1
  384. package/dist/utils/websearch/status.js +50 -31
  385. package/dist/utils/websearch/status.js.map +1 -1
  386. package/dist/utils/websearch-manager.d.ts +2 -0
  387. package/dist/utils/websearch-manager.d.ts.map +1 -1
  388. package/dist/utils/websearch-manager.js +3 -1
  389. package/dist/utils/websearch-manager.js.map +1 -1
  390. package/dist/web-server/model-pricing.d.ts.map +1 -1
  391. package/dist/web-server/model-pricing.js +43 -10
  392. package/dist/web-server/model-pricing.js.map +1 -1
  393. package/dist/web-server/routes/bar-routes.d.ts.map +1 -1
  394. package/dist/web-server/routes/bar-routes.js +15 -10
  395. package/dist/web-server/routes/bar-routes.js.map +1 -1
  396. package/dist/web-server/routes/cliproxy-routing-routes.d.ts.map +1 -1
  397. package/dist/web-server/routes/cliproxy-routing-routes.js +28 -0
  398. package/dist/web-server/routes/cliproxy-routing-routes.js.map +1 -1
  399. package/dist/web-server/routes/settings-routes.d.ts.map +1 -1
  400. package/dist/web-server/routes/settings-routes.js +1 -0
  401. package/dist/web-server/routes/settings-routes.js.map +1 -1
  402. package/dist/web-server/services/cliproxy-dashboard-install-service.d.ts +5 -0
  403. package/dist/web-server/services/cliproxy-dashboard-install-service.d.ts.map +1 -1
  404. package/dist/web-server/services/cliproxy-dashboard-install-service.js +53 -36
  405. package/dist/web-server/services/cliproxy-dashboard-install-service.js.map +1 -1
  406. package/dist/web-server/usage/claude-native-credentials.d.ts +23 -2
  407. package/dist/web-server/usage/claude-native-credentials.d.ts.map +1 -1
  408. package/dist/web-server/usage/claude-native-credentials.js +78 -14
  409. package/dist/web-server/usage/claude-native-credentials.js.map +1 -1
  410. package/dist/web-server/usage/native-quota-collector.d.ts +10 -9
  411. package/dist/web-server/usage/native-quota-collector.d.ts.map +1 -1
  412. package/dist/web-server/usage/native-quota-collector.js +113 -42
  413. package/dist/web-server/usage/native-quota-collector.js.map +1 -1
  414. package/lib/ccs +1 -1
  415. package/lib/ccs.ps1 +1 -1
  416. package/package.json +6 -2
  417. package/scripts/ci-parity-gate.sh +4 -30
  418. package/scripts/completion/ccs.bash +1 -1
  419. package/scripts/completion/ccs.fish +1 -1
  420. package/scripts/completion/ccs.ps1 +1 -1
  421. package/scripts/completion/ccs.zsh +1 -1
  422. package/scripts/dev-release.sh +1 -1
  423. package/scripts/hardening-inventory.js +37 -4
  424. package/scripts/maintainability-metrics.js +2 -8
  425. package/scripts/run-test-bucket.js +1 -0
  426. package/scripts/runtime-source-classifier.js +12 -0
  427. package/dist/ui/assets/cliproxy-CXDOPGj3.js +0 -4
  428. package/dist/ui/assets/index-EnTQAKOi.js +0 -56
  429. package/dist/ui/assets/proxy-status-widget-D87qCiqo.js +0 -1
@@ -13,6 +13,8 @@ export interface LaunchDescriptorOptions {
13
13
  runtime?: string;
14
14
  home?: string;
15
15
  ccsHome?: string;
16
+ /** Server port; recorded in args so the Swift app self-starts on the same port. */
17
+ port?: number;
16
18
  }
17
19
  export declare function getLaunchShimPath(home?: string): string;
18
20
  export declare function writeLaunchShim(home: string, entrypointPath?: string): string;
@@ -1 +1 @@
1
- {"version":3,"file":"launch-descriptor.d.ts","sourceRoot":"","sources":["../../../src/commands/bar/launch-descriptor.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAQH,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AAQ9C,MAAM,WAAW,uBAAuB;IACtC,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAED,wBAAgB,iBAAiB,CAAC,IAAI,GAAE,MAAqB,GAAG,MAAM,CAErE;AAUD,wBAAgB,eAAe,CAAC,IAAI,EAAE,MAAM,EAAE,cAAc,CAAC,EAAE,MAAM,GAAG,MAAM,CAkC7E;AAED,wBAAgB,yBAAyB,CAAC,OAAO,GAAE,uBAA4B,GAAG,UAAU,CAW3F"}
1
+ {"version":3,"file":"launch-descriptor.d.ts","sourceRoot":"","sources":["../../../src/commands/bar/launch-descriptor.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAQH,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AAQ9C,MAAM,WAAW,uBAAuB;IACtC,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,mFAAmF;IACnF,IAAI,CAAC,EAAE,MAAM,CAAC;CACf;AAED,wBAAgB,iBAAiB,CAAC,IAAI,GAAE,MAAqB,GAAG,MAAM,CAErE;AAUD,wBAAgB,eAAe,CAAC,IAAI,EAAE,MAAM,EAAE,cAAc,CAAC,EAAE,MAAM,GAAG,MAAM,CAkC7E;AAED,wBAAgB,yBAAyB,CAAC,OAAO,GAAE,uBAA4B,GAAG,UAAU,CAgB3F"}
@@ -95,7 +95,12 @@ function createBarLaunchDescriptor(options = {}) {
95
95
  return {
96
96
  schema: bar_paths_1.LAUNCH_JSON_SCHEMA,
97
97
  runtime: options.runtime ?? process.execPath,
98
- args: [entrypoint, 'bar', 'serve'],
98
+ args: [
99
+ entrypoint,
100
+ 'bar',
101
+ 'serve',
102
+ ...(options.port !== undefined ? ['--port', String(options.port)] : []),
103
+ ],
99
104
  home,
100
105
  ...(ccsHome ? { ccsHome } : {}),
101
106
  };
@@ -1 +1 @@
1
- {"version":3,"file":"launch-descriptor.js","sourceRoot":"","sources":["../../../src/commands/bar/launch-descriptor.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"launch-descriptor.js","sourceRoot":"","sources":["../../../src/commands/bar/launch-descriptor.ts"],"names":[],"mappings":"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"}
@@ -7,7 +7,11 @@
7
7
  * Detached model (replaces the old in-process model):
8
8
  * 1. Probe candidate ports (bar.json port first, then 3000/3001/3002/8000/8080).
9
9
  * 2. If a live server is found → reuse it, write bar.json, open app, return.
10
- * 3. Else refresh launch.json, getPort to pick a free port, spawn
10
+ * With an explicit --port that differs from the running server's port,
11
+ * stop that server first and fall through to a fresh start instead.
12
+ * 3. Else → pick a port (--port exactly when given; otherwise bar.json's
13
+ * recorded port first, then the default candidates), refresh launch.json
14
+ * (including --port so the Swift app self-starts on the same port), spawn
11
15
  * `ccs bar serve --port N` detached with stdio → serve.log, poll
12
16
  * /api/bar/summary until 200 (timeout ~10 s), write bar.json, open app,
13
17
  * return. The CLI process exits; the server continues as a detached child.
@@ -53,10 +57,23 @@ export interface LaunchDeps {
53
57
  * Returns the live baseUrl on success, throws on timeout.
54
58
  */
55
59
  waitForServerLive: (baseUrl: string) => Promise<void>;
60
+ /**
61
+ * Build the launch.json descriptor (includes the chosen --port so the Swift
62
+ * app self-starts the server on the same port).
63
+ */
64
+ createLaunchDescriptor: (opts?: {
65
+ port?: number;
66
+ }) => LaunchJson;
56
67
  /**
57
68
  * Write launch.json so the Swift app can spawn the server independently.
58
69
  */
59
70
  writeLaunchDescriptor: (jsonPath: string, descriptor: LaunchJson) => void;
71
+ /**
72
+ * Stop the detached CCS Bar server recorded in server.pid and wait briefly
73
+ * for the port to free. Used when an explicit --port differs from the port
74
+ * the running server occupies.
75
+ */
76
+ stopDetachedServer: (ccsDir: string) => Promise<void>;
60
77
  /** Open the installed .app bundle. Throws if the app is not found. */
61
78
  openApp: (appPath: string) => Promise<void>;
62
79
  /** Returns path to ~/.ccs (respects CCS_HOME for test isolation). */
@@ -1 +1 @@
1
- {"version":3,"file":"launch-subcommand.d.ts","sourceRoot":"","sources":["../../../src/commands/bar/launch-subcommand.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;GAgBG;;AAKH,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,eAAe,CAAC;AAUlD,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AAE9C,OAAO,EACL,wBAAwB,IAAI,yBAAyB,EACrD,cAAc,IAAI,eAAe,EAClC,MAAM,oBAAoB,CAAC;AAC5B,OAAO,KAAK,EAAE,aAAa,IAAI,cAAc,EAAE,MAAM,oBAAoB,CAAC;AAW1E,OAAO,EAAE,yBAAyB,IAAI,wBAAwB,EAAE,CAAC;AACjE,OAAO,EAAE,eAAe,IAAI,cAAc,EAAE,CAAC;AAM7C,MAAM,WAAW,gBAAgB;IAC/B,OAAO,EAAE,MAAM,CAAC;IAChB,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,EAAE,UAAU,CAAC;CACtB;AAED,MAAM,MAAM,aAAa,GAAG,cAAc,CAAC;AAE3C,MAAM,WAAW,UAAU;IACzB;;;;OAIG;IACH,iBAAiB,EAAE,MAAM,OAAO,CAAC,aAAa,GAAG,IAAI,CAAC,CAAC;IACvD;;;OAGG;IACH,OAAO,EAAE,CAAC,IAAI,EAAE;QAAE,IAAI,EAAE,MAAM,EAAE,CAAC;QAAC,IAAI,EAAE,MAAM,CAAA;KAAE,KAAK,OAAO,CAAC,MAAM,CAAC,CAAC;IACrE;;;OAGG;IACH,mBAAmB,EAAE,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,KAAK,YAAY,GAAG,IAAI,CAAC;IAC5E;;;OAGG;IACH,iBAAiB,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;IACtD;;OAEG;IACH,qBAAqB,EAAE,CAAC,QAAQ,EAAE,MAAM,EAAE,UAAU,EAAE,UAAU,KAAK,IAAI,CAAC;IAC1E,sEAAsE;IACtE,OAAO,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;IAC5C,qEAAqE;IACrE,SAAS,EAAE,MAAM,MAAM,CAAC;IACxB,oFAAoF;IACpF,cAAc,EAAE,MAAM,CAAC;CACxB;AAkCD;;;GAGG;AACH,qBAAa,0BAA2B,SAAQ,KAAK;gBACvC,OAAO,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM;CAIhD;AAED,qBAAa,qBAAsB,SAAQ,KAAK;gBAClC,OAAO,EAAE,MAAM,EAAE,cAAc,EAAE,MAAM;CAIpD;AAMD,wBAAsB,wBAAwB,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAgF7E;AAyBD,wBAAsB,eAAe,CACnC,KAAK,EAAE,MAAM,EAAE,EACf,IAAI,GAAE,OAAO,CAAC,UAAU,CAAM,GAC7B,OAAO,CAAC,IAAI,CAAC,CAoIf"}
1
+ {"version":3,"file":"launch-subcommand.d.ts","sourceRoot":"","sources":["../../../src/commands/bar/launch-subcommand.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;GAoBG;;AAKH,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,eAAe,CAAC;AAUlD,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AAG9C,OAAO,EACL,wBAAwB,IAAI,yBAAyB,EACrD,cAAc,IAAI,eAAe,EAClC,MAAM,oBAAoB,CAAC;AAC5B,OAAO,KAAK,EAAE,aAAa,IAAI,cAAc,EAAE,MAAM,oBAAoB,CAAC;AAY1E,OAAO,EAAE,yBAAyB,IAAI,wBAAwB,EAAE,CAAC;AACjE,OAAO,EAAE,eAAe,IAAI,cAAc,EAAE,CAAC;AAM7C,MAAM,WAAW,gBAAgB;IAC/B,OAAO,EAAE,MAAM,CAAC;IAChB,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,EAAE,UAAU,CAAC;CACtB;AAED,MAAM,MAAM,aAAa,GAAG,cAAc,CAAC;AAE3C,MAAM,WAAW,UAAU;IACzB;;;;OAIG;IACH,iBAAiB,EAAE,MAAM,OAAO,CAAC,aAAa,GAAG,IAAI,CAAC,CAAC;IACvD;;;OAGG;IACH,OAAO,EAAE,CAAC,IAAI,EAAE;QAAE,IAAI,EAAE,MAAM,EAAE,CAAC;QAAC,IAAI,EAAE,MAAM,CAAA;KAAE,KAAK,OAAO,CAAC,MAAM,CAAC,CAAC;IACrE;;;OAGG;IACH,mBAAmB,EAAE,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,KAAK,YAAY,GAAG,IAAI,CAAC;IAC5E;;;OAGG;IACH,iBAAiB,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;IACtD;;;OAGG;IACH,sBAAsB,EAAE,CAAC,IAAI,CAAC,EAAE;QAAE,IAAI,CAAC,EAAE,MAAM,CAAA;KAAE,KAAK,UAAU,CAAC;IACjE;;OAEG;IACH,qBAAqB,EAAE,CAAC,QAAQ,EAAE,MAAM,EAAE,UAAU,EAAE,UAAU,KAAK,IAAI,CAAC;IAC1E;;;;OAIG;IACH,kBAAkB,EAAE,CAAC,MAAM,EAAE,MAAM,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;IACtD,sEAAsE;IACtE,OAAO,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;IAC5C,qEAAqE;IACrE,SAAS,EAAE,MAAM,MAAM,CAAC;IACxB,oFAAoF;IACpF,cAAc,EAAE,MAAM,CAAC;CACxB;AAkCD;;;GAGG;AACH,qBAAa,0BAA2B,SAAQ,KAAK;gBACvC,OAAO,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM;CAIhD;AAED,qBAAa,qBAAsB,SAAQ,KAAK;gBAClC,OAAO,EAAE,MAAM,EAAE,cAAc,EAAE,MAAM;CAIpD;AAMD,wBAAsB,wBAAwB,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CA4E7E;AAyBD,wBAAsB,eAAe,CACnC,KAAK,EAAE,MAAM,EAAE,EACf,IAAI,GAAE,OAAO,CAAC,UAAU,CAAM,GAC7B,OAAO,CAAC,IAAI,CAAC,CAyOf"}
@@ -8,7 +8,11 @@
8
8
  * Detached model (replaces the old in-process model):
9
9
  * 1. Probe candidate ports (bar.json port first, then 3000/3001/3002/8000/8080).
10
10
  * 2. If a live server is found → reuse it, write bar.json, open app, return.
11
- * 3. Else refresh launch.json, getPort to pick a free port, spawn
11
+ * With an explicit --port that differs from the running server's port,
12
+ * stop that server first and fall through to a fresh start instead.
13
+ * 3. Else → pick a port (--port exactly when given; otherwise bar.json's
14
+ * recorded port first, then the default candidates), refresh launch.json
15
+ * (including --port so the Swift app self-starts on the same port), spawn
12
16
  * `ccs bar serve --port N` detached with stdio → serve.log, poll
13
17
  * /api/bar/summary until 200 (timeout ~10 s), write bar.json, open app,
14
18
  * return. The CLI process exits; the server continues as a detached child.
@@ -48,9 +52,11 @@ const config_loader_facade_1 = require("../../config/config-loader-facade");
48
52
  const bar_auth_token_1 = require("../../utils/bar-auth-token");
49
53
  const bar_paths_1 = require("./bar-paths");
50
54
  const launch_descriptor_1 = require("./launch-descriptor");
55
+ const port_arg_1 = require("./port-arg");
51
56
  const bar_server_probe_1 = require("./bar-server-probe");
52
57
  Object.defineProperty(exports, "defaultFindRunningServer", { enumerable: true, get: function () { return bar_server_probe_1.defaultFindRunningServer; } });
53
58
  Object.defineProperty(exports, "resolveBarPort", { enumerable: true, get: function () { return bar_server_probe_1.resolveBarPort; } });
59
+ const bar_process_control_1 = require("./bar-process-control");
54
60
  const BAR_PROBE_TIMEOUT_MS = 1500;
55
61
  const MAX_BAR_PROBE_RESPONSE_BYTES = 8192;
56
62
  // ---------------------------------------------------------------------------
@@ -122,13 +128,9 @@ async function defaultWaitForServerLive(baseUrl) {
122
128
  settled = true;
123
129
  clearTimeout(absoluteDeadline);
124
130
  socket.destroy();
125
- if (statusCode === 200) {
126
- const echoMatch = headerSection.match(new RegExp(`${bar_auth_token_1.BAR_AUTH_TOKEN_HEADER}:\\s*([^\\r\\n]+)`, 'i'));
127
- const proof = echoMatch ? echoMatch[1].trim() : '';
128
- resolve({ statusCode, tokenMatched: (0, bar_auth_token_1.isMatchingBarAuthProof)(token, nonce, proof) });
129
- return;
130
- }
131
- resolve({ statusCode, tokenMatched: false });
131
+ const echoMatch = headerSection.match(new RegExp(`${bar_auth_token_1.BAR_AUTH_TOKEN_HEADER}:\\s*([^\\r\\n]+)`, 'i'));
132
+ const proof = echoMatch ? echoMatch[1].trim() : '';
133
+ resolve({ statusCode, tokenMatched: (0, bar_auth_token_1.isMatchingBarAuthProof)(token, nonce, proof) });
132
134
  };
133
135
  const socket = net.connect({ host: url.hostname.replace(/^\[|\]$/g, ''), port: Number(url.port) }, () => {
134
136
  // Do NOT include the token in the request; only send a fresh nonce so
@@ -145,7 +147,7 @@ async function defaultWaitForServerLive(baseUrl) {
145
147
  const statusMatch = rawResponse.match(/^HTTP\/\d(?:\.\d)?\s+(\d{3})/);
146
148
  if (statusMatch) {
147
149
  const code = Number(statusMatch[1]);
148
- if (code !== 200) {
150
+ if (code !== 200 && code !== 401 && code !== 403) {
149
151
  finish(code, rawResponse);
150
152
  return;
151
153
  }
@@ -168,7 +170,7 @@ async function defaultWaitForServerLive(baseUrl) {
168
170
  const { statusCode, tokenMatched } = await probe();
169
171
  if (statusCode === 200 && tokenMatched)
170
172
  return;
171
- if (statusCode !== null && isAuthRequiredStatus(statusCode)) {
173
+ if (statusCode !== null && isAuthRequiredStatus(statusCode) && tokenMatched) {
172
174
  throw new BarServerAuthRequiredError(baseUrl, statusCode);
173
175
  }
174
176
  await new Promise((resolve) => setTimeout(resolve, INTERVAL_MS));
@@ -195,17 +197,34 @@ const DEFAULT_APP_INSTALL_PATH = path.join(os.homedir(), 'Applications', 'CCS Ba
195
197
  // Implementation
196
198
  // ---------------------------------------------------------------------------
197
199
  async function handleBarLaunch(_args, deps = {}) {
200
+ const argError = (0, port_arg_1.validatePortArgs)(_args);
201
+ if (argError !== null) {
202
+ console.error(`[X] ${argError}`);
203
+ process.exitCode = 1;
204
+ return;
205
+ }
198
206
  const ccsDir = (deps.getCcsDir ?? defaultGetCcsDir)();
199
207
  const openApp = deps.openApp ?? defaultOpenApp;
200
208
  const appInstallPath = deps.appInstallPath ?? DEFAULT_APP_INSTALL_PATH;
201
209
  const getPortFn = deps.getPort ?? defaultGetPort;
202
210
  const spawnDetachedServer = deps.spawnDetachedServer ?? defaultSpawnDetachedServer;
203
211
  const waitForServerLive = deps.waitForServerLive ?? defaultWaitForServerLive;
212
+ const createLaunchDescriptor = deps.createLaunchDescriptor ?? launch_descriptor_1.createBarLaunchDescriptor;
204
213
  const writeLaunchDescriptor = deps.writeLaunchDescriptor ?? defaultWriteLaunchDescriptor;
214
+ const stopDetachedServer = deps.stopDetachedServer ?? bar_process_control_1.stopDetachedBarServer;
205
215
  // Wire findRunningServer after ccsDir is resolved.
206
216
  const findRunningServer = deps.findRunningServer ?? (() => (0, bar_server_probe_1.defaultFindRunningServer)(ccsDir));
207
217
  const barJsonPath = (0, bar_paths_1.getBarJsonPath)(ccsDir);
208
218
  const launchJsonPath = (0, bar_paths_1.getLaunchJsonPath)(ccsDir);
219
+ // 0. Parse --port. A present-but-invalid value is a hard error (silently
220
+ // launching on a different port than the user asked for is worse).
221
+ const portFlag = (0, port_arg_1.parsePortFlag)(_args);
222
+ if (portFlag.present && portFlag.port === null) {
223
+ console.error('[X] Invalid --port value. Use a number between 1 and 65535.');
224
+ process.exitCode = 1;
225
+ return;
226
+ }
227
+ const requestedPort = portFlag.port;
209
228
  // 1. Probe for an already-running server.
210
229
  let running = null;
211
230
  try {
@@ -214,65 +233,137 @@ async function handleBarLaunch(_args, deps = {}) {
214
233
  catch {
215
234
  /* any probe error counts as null */
216
235
  }
236
+ let movingFrom = null;
237
+ let port = null;
217
238
  if (running !== null) {
218
239
  if (running.authRequired) {
219
240
  console.error(`[X] CCS Bar cannot launch while dashboard authentication protects ${running.baseUrl}.`);
220
241
  console.error('[i] Disable dashboard authentication for CCS Bar or start the dashboard manually.');
221
242
  return;
222
243
  }
223
- // Reuse the live server — write bar.json and open the app.
224
- const barJson = {
225
- baseUrl: running.baseUrl,
226
- port: running.port,
227
- authMode: 'loopback',
228
- };
244
+ if (requestedPort === null || running.port === requestedPort) {
245
+ // Reuse the live server — write bar.json and open the app.
246
+ const barJson = {
247
+ baseUrl: running.baseUrl,
248
+ port: running.port,
249
+ authMode: 'loopback',
250
+ };
251
+ try {
252
+ fs.mkdirSync(ccsDir, { recursive: true });
253
+ fs.writeFileSync(barJsonPath, JSON.stringify(barJson, null, 2));
254
+ }
255
+ catch (err) {
256
+ const msg = err instanceof Error ? err.message : String(err);
257
+ console.error(`[X] Failed to write bar.json: ${msg}`);
258
+ return;
259
+ }
260
+ console.log(`[OK] Reusing running CCS web-server at ${running.baseUrl}`);
261
+ console.log(`[i] Discovery file written: ${barJsonPath}`);
262
+ await _openAppWithFallback(appInstallPath, openApp);
263
+ return;
264
+ }
265
+ // Explicit --port that differs from the running server: preflight the
266
+ // destination before disrupting the healthy current service.
267
+ console.log(`[i] CCS Bar server is running on port ${running.port}; moving to port ${requestedPort}...`);
268
+ if (requestedPort === null)
269
+ return;
229
270
  try {
230
- fs.mkdirSync(ccsDir, { recursive: true });
231
- fs.writeFileSync(barJsonPath, JSON.stringify(barJson, null, 2));
271
+ const availablePort = await getPortFn({ port: [requestedPort], host: '127.0.0.1' });
272
+ if (availablePort !== requestedPort) {
273
+ console.error(`[X] Port ${requestedPort} is already in use by another process.`);
274
+ console.error('[i] The existing CCS Bar server was left running.');
275
+ process.exitCode = 1;
276
+ return;
277
+ }
278
+ port = requestedPort;
232
279
  }
233
280
  catch (err) {
234
281
  const msg = err instanceof Error ? err.message : String(err);
235
- console.error(`[X] Failed to write bar.json: ${msg}`);
282
+ console.error(`[X] Could not preflight port ${requestedPort}: ${msg}`);
283
+ console.error('[i] The existing CCS Bar server was left running.');
284
+ process.exitCode = 1;
236
285
  return;
237
286
  }
238
- console.log(`[OK] Reusing running CCS web-server at ${running.baseUrl}`);
239
- console.log(`[i] Discovery file written: ${barJsonPath}`);
240
- await _openAppWithFallback(appInstallPath, openApp);
241
- return;
287
+ try {
288
+ await stopDetachedServer(ccsDir);
289
+ }
290
+ catch (err) {
291
+ const msg = err instanceof Error ? err.message : String(err);
292
+ console.error(`[X] Could not safely stop the running server: ${msg}`);
293
+ console.error('[i] Recovery state was preserved; resolve the stop error, then retry.');
294
+ process.exitCode = 1;
295
+ return;
296
+ }
297
+ movingFrom = running;
298
+ // Fall through to the fresh-start path below.
242
299
  }
243
- // 2. No live server — pick a port, write/refresh launch.json, spawn detached.
244
- // 2a. Pick a free port.
245
- let port;
300
+ // 2. No live server (or moving ports) — pick a port, write/refresh
301
+ // launch.json, spawn detached.
302
+ // 2a. Pick a free port. An explicit --port must be honored exactly; without
303
+ // it, the port recorded in bar.json is preferred so the server keeps
304
+ // coming back on the port the user last chose (sticky port).
246
305
  try {
247
- port = await getPortFn({ port: [3000, 3001, 3002, 8000, 8080], host: '127.0.0.1' });
306
+ if (port !== null) {
307
+ // Destination was already preflighted before stopping the prior server.
308
+ }
309
+ else if (requestedPort !== null) {
310
+ const got = await getPortFn({ port: [requestedPort], host: '127.0.0.1' });
311
+ if (got !== requestedPort) {
312
+ console.error(`[X] Port ${requestedPort} is already in use by another process.`);
313
+ console.error('[i] Choose a different port or free it, then retry.');
314
+ process.exitCode = 1;
315
+ return;
316
+ }
317
+ port = requestedPort;
318
+ }
319
+ else {
320
+ const stickyPort = (0, bar_server_probe_1.resolveBarPort)(ccsDir);
321
+ const base = [3000, 3001, 3002, 8000, 8080];
322
+ const candidates = stickyPort !== null ? [stickyPort, ...base.filter((p) => p !== stickyPort)] : base;
323
+ port = await getPortFn({ port: candidates, host: '127.0.0.1' });
324
+ }
248
325
  }
249
326
  catch (err) {
250
327
  const msg = err instanceof Error ? err.message : String(err);
251
328
  console.error(`[X] Could not find a free port: ${msg}`);
252
329
  return;
253
330
  }
254
- // 2b. Write/refresh launch.json so the Swift app can self-start next time.
255
- try {
256
- const launchDescriptor = (0, launch_descriptor_1.createBarLaunchDescriptor)();
257
- writeLaunchDescriptor(launchJsonPath, launchDescriptor);
258
- }
259
- catch (err) {
260
- // Non-fatal — the Swift app falls back to resolving `ccs` via PATH.
261
- const msg = err instanceof Error ? err.message : String(err);
262
- console.error(`[!] Could not write launch.json: ${msg}`);
331
+ if (port === null) {
332
+ console.error('[X] Could not resolve a valid CCS Bar port.');
333
+ process.exitCode = 1;
334
+ return;
263
335
  }
264
- // 2c. Spawn the detached server.
336
+ const selectedPort = port;
337
+ const rollbackPriorServer = async () => {
338
+ if (movingFrom === null)
339
+ return;
340
+ try {
341
+ spawnDetachedServer(movingFrom.port, serveLogPath);
342
+ await waitForServerLive(movingFrom.baseUrl);
343
+ console.log(`[OK] Restored CCS Bar server at ${movingFrom.baseUrl}.`);
344
+ }
345
+ catch (rollbackErr) {
346
+ const message = rollbackErr instanceof Error ? rollbackErr.message : String(rollbackErr);
347
+ console.error(`[X] Failed to restore CCS Bar at ${movingFrom.baseUrl}: ${message}`);
348
+ console.error('[i] Existing discovery and launch state was preserved for manual recovery.');
349
+ }
350
+ };
351
+ // 2b. Spawn the detached server. launch.json is not replaced until the new
352
+ // server is proven live, preserving the prior recovery path during a move.
265
353
  const serveLogPath = (0, bar_paths_1.getServeLogPath)(ccsDir);
266
- const baseUrl = `http://127.0.0.1:${port}`;
354
+ const baseUrl = `http://127.0.0.1:${selectedPort}`;
267
355
  let spawnedChild;
268
356
  try {
269
357
  fs.mkdirSync((0, bar_paths_1.getBarDir)(ccsDir), { recursive: true });
270
- spawnedChild = spawnDetachedServer(port, serveLogPath);
358
+ spawnedChild = spawnDetachedServer(selectedPort, serveLogPath);
271
359
  }
272
360
  catch (err) {
273
361
  const msg = err instanceof Error ? err.message : String(err);
274
362
  console.error(`[X] Could not start CCS web-server: ${msg}`);
275
- console.error('[i] Run `ccs config` to start the dashboard manually.');
363
+ await rollbackPriorServer();
364
+ if (movingFrom === null)
365
+ console.error('[i] Run `ccs config` to start the dashboard manually.');
366
+ process.exitCode = 1;
276
367
  return;
277
368
  }
278
369
  console.log('[i] Starting CCS Bar server...');
@@ -285,17 +376,30 @@ async function handleBarLaunch(_args, deps = {}) {
285
376
  spawnedChild?.kill();
286
377
  console.error(`[X] CCS Bar cannot launch while dashboard authentication protects ${baseUrl}.`);
287
378
  console.error('[i] Disable dashboard authentication for CCS Bar or start the dashboard manually.');
288
- return;
289
379
  }
290
- const msg = err instanceof Error ? err.message : String(err);
291
- console.error(`[X] Could not connect to CCS web-server: ${msg}`);
292
- console.error(`[i] Check logs at ${serveLogPath}`);
380
+ else {
381
+ const msg = err instanceof Error ? err.message : String(err);
382
+ console.error(`[X] Could not connect to CCS web-server: ${msg}`);
383
+ console.error(`[i] Check logs at ${serveLogPath}`);
384
+ }
385
+ spawnedChild?.kill();
386
+ await rollbackPriorServer();
387
+ process.exitCode = 1;
293
388
  return;
294
389
  }
390
+ // 2d. Persist the proven-good recovery descriptor.
391
+ try {
392
+ const launchDescriptor = createLaunchDescriptor({ port: selectedPort });
393
+ writeLaunchDescriptor(launchJsonPath, launchDescriptor);
394
+ }
395
+ catch (err) {
396
+ const msg = err instanceof Error ? err.message : String(err);
397
+ console.error(`[!] Could not write launch.json: ${msg}`);
398
+ }
295
399
  // 2e. Write bar.json.
296
400
  const barJson = {
297
401
  baseUrl,
298
- port,
402
+ port: selectedPort,
299
403
  authMode: 'loopback',
300
404
  };
301
405
  try {
@@ -1 +1 @@
1
- {"version":3,"file":"launch-subcommand.js","sourceRoot":"","sources":["../../../src/commands/bar/launch-subcommand.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"launch-subcommand.js","sourceRoot":"","sources":["../../../src/commands/bar/launch-subcommand.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,16 @@
1
+ /**
2
+ * Shared `--port N` flag parsing for the `ccs bar` command family.
3
+ *
4
+ * `present` distinguishes "flag not given" from "flag given with a bad value"
5
+ * so launch can reject typos loudly instead of silently falling back to the
6
+ * default port list.
7
+ */
8
+ export interface PortFlag {
9
+ /** True when `--port` appears in args at all. */
10
+ present: boolean;
11
+ /** The parsed port (1-65535), or null when absent or invalid. */
12
+ port: number | null;
13
+ }
14
+ export declare function validatePortArgs(args: string[]): string | null;
15
+ export declare function parsePortFlag(args: string[]): PortFlag;
16
+ //# sourceMappingURL=port-arg.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"port-arg.d.ts","sourceRoot":"","sources":["../../../src/commands/bar/port-arg.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,MAAM,WAAW,QAAQ;IACvB,iDAAiD;IACjD,OAAO,EAAE,OAAO,CAAC;IACjB,iEAAiE;IACjE,IAAI,EAAE,MAAM,GAAG,IAAI,CAAC;CACrB;AAED,wBAAgB,gBAAgB,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,MAAM,GAAG,IAAI,CAY9D;AAED,wBAAgB,aAAa,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,QAAQ,CAUtD"}
@@ -0,0 +1,41 @@
1
+ "use strict";
2
+ /**
3
+ * Shared `--port N` flag parsing for the `ccs bar` command family.
4
+ *
5
+ * `present` distinguishes "flag not given" from "flag given with a bad value"
6
+ * so launch can reject typos loudly instead of silently falling back to the
7
+ * default port list.
8
+ */
9
+ Object.defineProperty(exports, "__esModule", { value: true });
10
+ exports.parsePortFlag = exports.validatePortArgs = void 0;
11
+ function validatePortArgs(args) {
12
+ let foundPort = false;
13
+ for (let index = 0; index < args.length; index += 1) {
14
+ const arg = args[index];
15
+ if (arg !== '--port')
16
+ return `Unknown option: ${arg}`;
17
+ if (foundPort)
18
+ return 'Duplicate option: --port';
19
+ foundPort = true;
20
+ const raw = args[index + 1];
21
+ if (raw === undefined)
22
+ return 'Missing value for --port';
23
+ index += 1;
24
+ }
25
+ return null;
26
+ }
27
+ exports.validatePortArgs = validatePortArgs;
28
+ function parsePortFlag(args) {
29
+ const idx = args.indexOf('--port');
30
+ if (idx === -1)
31
+ return { present: false, port: null };
32
+ const raw = args[idx + 1];
33
+ if (raw === undefined || !/^[1-9]\d{0,4}$/.test(raw)) {
34
+ return { present: true, port: null };
35
+ }
36
+ const n = Number(raw);
37
+ const valid = Number.isSafeInteger(n) && n <= 65535;
38
+ return { present: true, port: valid ? n : null };
39
+ }
40
+ exports.parsePortFlag = parsePortFlag;
41
+ //# sourceMappingURL=port-arg.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"port-arg.js","sourceRoot":"","sources":["../../../src/commands/bar/port-arg.ts"],"names":[],"mappings":";AAAA;;;;;;GAMG;;;AASH,SAAgB,gBAAgB,CAAC,IAAc;IAC7C,IAAI,SAAS,GAAG,KAAK,CAAC;IACtB,KAAK,IAAI,KAAK,GAAG,CAAC,EAAE,KAAK,GAAG,IAAI,CAAC,MAAM,EAAE,KAAK,IAAI,CAAC,EAAE,CAAC;QACpD,MAAM,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC;QACxB,IAAI,GAAG,KAAK,QAAQ;YAAE,OAAO,mBAAmB,GAAG,EAAE,CAAC;QACtD,IAAI,SAAS;YAAE,OAAO,0BAA0B,CAAC;QACjD,SAAS,GAAG,IAAI,CAAC;QACjB,MAAM,GAAG,GAAG,IAAI,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC;QAC5B,IAAI,GAAG,KAAK,SAAS;YAAE,OAAO,0BAA0B,CAAC;QACzD,KAAK,IAAI,CAAC,CAAC;IACb,CAAC;IACD,OAAO,IAAI,CAAC;AACd,CAAC;AAZD,4CAYC;AAED,SAAgB,aAAa,CAAC,IAAc;IAC1C,MAAM,GAAG,GAAG,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;IACnC,IAAI,GAAG,KAAK,CAAC,CAAC;QAAE,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC;IACtD,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC;IAC1B,IAAI,GAAG,KAAK,SAAS,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC;QACrD,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC;IACvC,CAAC;IACD,MAAM,CAAC,GAAG,MAAM,CAAC,GAAG,CAAC,CAAC;IACtB,MAAM,KAAK,GAAG,MAAM,CAAC,aAAa,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,KAAK,CAAC;IACpD,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,IAAI,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;AACnD,CAAC;AAVD,sCAUC"}
@@ -12,6 +12,7 @@
12
12
  * Accepts: --port N (honours a port the launcher pre-selected via getPort).
13
13
  */
14
14
  import type { DashboardInfo } from './bar-server-probe';
15
+ import type { BarServerProcessRecord } from './bar-process-control';
15
16
  export interface ServeDeps {
16
17
  /** Probe candidate ports for a running CCS server. Never throws. */
17
18
  findRunningServer: () => Promise<DashboardInfo | null>;
@@ -38,10 +39,14 @@ export interface ServeDeps {
38
39
  writeFile: (filePath: string, content: string) => void;
39
40
  /** Remove a file if it exists (for cleanup on exit). */
40
41
  removeFile: (filePath: string) => void;
42
+ /** Remove server.pid only if it still identifies this process. */
43
+ removeProcessRecordIfOwned: (filePath: string, record: BarServerProcessRecord) => void;
41
44
  /** Register process signal handlers. */
42
45
  onSignal: (signal: 'SIGINT' | 'SIGTERM', handler: () => void) => void;
43
46
  /** Exit the process. */
44
47
  exit: (code: number) => never;
48
+ /** Read a stable OS birth marker so later stop commands cannot signal a reused PID. */
49
+ getProcessBirthIdentity: (pid: number) => string | null;
45
50
  }
46
51
  export declare function handleBarServe(args: string[], deps?: Partial<ServeDeps>): Promise<void>;
47
52
  //# sourceMappingURL=serve-subcommand.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"serve-subcommand.d.ts","sourceRoot":"","sources":["../../../src/commands/bar/serve-subcommand.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAOH,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AAOxD,MAAM,WAAW,SAAS;IACxB,oEAAoE;IACpE,iBAAiB,EAAE,MAAM,OAAO,CAAC,aAAa,GAAG,IAAI,CAAC,CAAC;IACvD;;;;OAIG;IACH,WAAW,EAAE,CAAC,IAAI,EAAE;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAA;KAAE,KAAK,OAAO,CAAC,aAAa,CAAC,CAAC;IAC9E;;;OAGG;IACH,OAAO,EAAE,CAAC,IAAI,EAAE;QAAE,IAAI,EAAE,MAAM,EAAE,CAAC;QAAC,IAAI,EAAE,MAAM,CAAA;KAAE,KAAK,OAAO,CAAC,MAAM,CAAC,CAAC;IACrE,8CAA8C;IAC9C,SAAS,EAAE,MAAM,MAAM,CAAC;IACxB,oDAAoD;IACpD,SAAS,EAAE,CAAC,QAAQ,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,KAAK,IAAI,CAAC;IACvD,wDAAwD;IACxD,UAAU,EAAE,CAAC,QAAQ,EAAE,MAAM,KAAK,IAAI,CAAC;IACvC,wCAAwC;IACxC,QAAQ,EAAE,CAAC,MAAM,EAAE,QAAQ,GAAG,SAAS,EAAE,OAAO,EAAE,MAAM,IAAI,KAAK,IAAI,CAAC;IACtE,wBAAwB;IACxB,IAAI,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,KAAK,CAAC;CAC/B;AA8DD,wBAAsB,cAAc,CAAC,IAAI,EAAE,MAAM,EAAE,EAAE,IAAI,GAAE,OAAO,CAAC,SAAS,CAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAqGjG"}
1
+ {"version":3,"file":"serve-subcommand.d.ts","sourceRoot":"","sources":["../../../src/commands/bar/serve-subcommand.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAQH,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AAOxD,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,uBAAuB,CAAC;AAMpE,MAAM,WAAW,SAAS;IACxB,oEAAoE;IACpE,iBAAiB,EAAE,MAAM,OAAO,CAAC,aAAa,GAAG,IAAI,CAAC,CAAC;IACvD;;;;OAIG;IACH,WAAW,EAAE,CAAC,IAAI,EAAE;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAA;KAAE,KAAK,OAAO,CAAC,aAAa,CAAC,CAAC;IAC9E;;;OAGG;IACH,OAAO,EAAE,CAAC,IAAI,EAAE;QAAE,IAAI,EAAE,MAAM,EAAE,CAAC;QAAC,IAAI,EAAE,MAAM,CAAA;KAAE,KAAK,OAAO,CAAC,MAAM,CAAC,CAAC;IACrE,8CAA8C;IAC9C,SAAS,EAAE,MAAM,MAAM,CAAC;IACxB,oDAAoD;IACpD,SAAS,EAAE,CAAC,QAAQ,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,KAAK,IAAI,CAAC;IACvD,wDAAwD;IACxD,UAAU,EAAE,CAAC,QAAQ,EAAE,MAAM,KAAK,IAAI,CAAC;IACvC,kEAAkE;IAClE,0BAA0B,EAAE,CAAC,QAAQ,EAAE,MAAM,EAAE,MAAM,EAAE,sBAAsB,KAAK,IAAI,CAAC;IACvF,wCAAwC;IACxC,QAAQ,EAAE,CAAC,MAAM,EAAE,QAAQ,GAAG,SAAS,EAAE,OAAO,EAAE,MAAM,IAAI,KAAK,IAAI,CAAC;IACtE,wBAAwB;IACxB,IAAI,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,KAAK,CAAC;IAC9B,uFAAuF;IACvF,uBAAuB,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,MAAM,GAAG,IAAI,CAAC;CACzD;AAyCD,wBAAsB,cAAc,CAAC,IAAI,EAAE,MAAM,EAAE,EAAE,IAAI,GAAE,OAAO,CAAC,SAAS,CAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CA0IjG"}