@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
@@ -1 +1 @@
1
- {"version":3,"file":"instance-directory.js","sourceRoot":"","sources":["../../src/management/instance-directory.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,uCAAyB;AACzB,2CAA6B;AAE7B,SAAgB,qBAAqB,CAAC,IAAY;IAChD,OAAO,CAAC,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC;AAC/B,CAAC;AAFD,sDAEC;AAED,SAAgB,wBAAwB,CAAC,YAAoB;IAC3D,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,YAAY,CAAC,EAAE,CAAC;QACjC,OAAO,EAAE,CAAC;IACZ,CAAC;IAED,OAAO,EAAE,CAAC,WAAW,CAAC,YAAY,CAAC,CAAC,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE;QAClD,IAAI,CAAC,qBAAqB,CAAC,IAAI,CAAC,EAAE,CAAC;YACjC,OAAO,KAAK,CAAC;QACf,CAAC;QAED,IAAI,CAAC;YACH,OAAO,EAAE,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,YAAY,EAAE,IAAI,CAAC,CAAC,CAAC,WAAW,EAAE,CAAC;QAClE,CAAC;QAAC,MAAM,CAAC;YACP,OAAO,KAAK,CAAC;QACf,CAAC;IACH,CAAC,CAAC,CAAC;AACL,CAAC;AAhBD,4DAgBC;AAED,SAAgB,wBAAwB,CAAC,YAAoB;IAC3D,OAAO,wBAAwB,CAAC,YAAY,CAAC,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,YAAY,EAAE,IAAI,CAAC,CAAC,CAAC;AAC7F,CAAC;AAFD,4DAEC"}
1
+ {"version":3,"file":"instance-directory.js","sourceRoot":"","sources":["../../src/management/instance-directory.ts"],"names":[],"mappings":"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"}
@@ -8,7 +8,7 @@
8
8
  import type { AccountContextPolicy } from '../auth/account-context';
9
9
  /** Options for instance creation */
10
10
  export interface InstanceOptions {
11
- /** Skip shared symlinks (commands, skills, agents, settings.json) */
11
+ /** Skip shared symlinks (commands, skills, agents, settings.json, CLAUDE.md) */
12
12
  bare?: boolean;
13
13
  }
14
14
  /**
@@ -53,10 +53,7 @@ declare class InstanceManager {
53
53
  * Selectively copies only mcpServers key (not OAuth sessions or caches).
54
54
  */
55
55
  syncMcpServers(instancePath: string): boolean;
56
- /**
57
- * Sanitize profile name for filesystem
58
- */
59
- private sanitizeName;
56
+ private getInstanceStats;
60
57
  }
61
58
  export { InstanceManager };
62
59
  export default InstanceManager;
@@ -1 +1 @@
1
- {"version":3,"file":"instance-manager.d.ts","sourceRoot":"","sources":["../../src/management/instance-manager.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAOH,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,yBAAyB,CAAC;AAUpE,oCAAoC;AACpC,MAAM,WAAW,eAAe;IAC9B,qEAAqE;IACrE,IAAI,CAAC,EAAE,OAAO,CAAC;CAChB;AAED;;GAEG;AACH,cAAM,eAAe;IACnB,OAAO,CAAC,QAAQ,CAAC,YAAY,CAAS;IACtC,OAAO,CAAC,QAAQ,CAAC,aAAa,CAAgB;IAC9C,OAAO,CAAC,QAAQ,CAAC,eAAe,CAAyB;IACzD,OAAO,CAAC,QAAQ,CAAC,gBAAgB,CAAyB;;IAS1D;;OAEG;IACG,cAAc,CAClB,WAAW,EAAE,MAAM,EACnB,aAAa,GAAE,oBAA6D,EAC5E,OAAO,GAAE,eAAoB,GAC5B,OAAO,CAAC,MAAM,CAAC;IAwClB;;OAEG;IACH,eAAe,CAAC,WAAW,EAAE,MAAM,GAAG,MAAM;IAK5C;;OAEG;IACH,OAAO,CAAC,kBAAkB;IAmC1B;;OAEG;IACH,OAAO,CAAC,gBAAgB;IAuBxB;;OAEG;IACG,cAAc,CAAC,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAqBxD;;OAEG;IACH,aAAa,IAAI,MAAM,EAAE;IAIzB;;OAEG;IACH,WAAW,CAAC,WAAW,EAAE,MAAM,GAAG,OAAO;IAKzC;;;OAGG;IACH,cAAc,CAAC,YAAY,EAAE,MAAM,GAAG,OAAO;IA+D7C;;OAEG;IACH,OAAO,CAAC,YAAY;CAIrB;AAED,OAAO,EAAE,eAAe,EAAE,CAAC;AAC3B,eAAe,eAAe,CAAC"}
1
+ {"version":3,"file":"instance-manager.d.ts","sourceRoot":"","sources":["../../src/management/instance-manager.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAOH,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,yBAAyB,CAAC;AAgBpE,oCAAoC;AACpC,MAAM,WAAW,eAAe;IAC9B,gFAAgF;IAChF,IAAI,CAAC,EAAE,OAAO,CAAC;CAChB;AAED;;GAEG;AACH,cAAM,eAAe;IACnB,OAAO,CAAC,QAAQ,CAAC,YAAY,CAAS;IACtC,OAAO,CAAC,QAAQ,CAAC,aAAa,CAAgB;IAC9C,OAAO,CAAC,QAAQ,CAAC,eAAe,CAAyB;IACzD,OAAO,CAAC,QAAQ,CAAC,gBAAgB,CAAyB;;IAS1D;;OAEG;IACG,cAAc,CAClB,WAAW,EAAE,MAAM,EACnB,aAAa,GAAE,oBAA6D,EAC5E,OAAO,GAAE,eAAoB,GAC5B,OAAO,CAAC,MAAM,CAAC;IAkDlB;;OAEG;IACH,eAAe,CAAC,WAAW,EAAE,MAAM,GAAG,MAAM;IAK5C;;OAEG;IACH,OAAO,CAAC,kBAAkB;IAmB1B;;OAEG;IACH,OAAO,CAAC,gBAAgB;IAuBxB;;OAEG;IACG,cAAc,CAAC,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAqBxD;;OAEG;IACH,aAAa,IAAI,MAAM,EAAE;IAIzB;;OAEG;IACH,WAAW,CAAC,WAAW,EAAE,MAAM,GAAG,OAAO;IAKzC;;;OAGG;IACH,cAAc,CAAC,YAAY,EAAE,MAAM,GAAG,OAAO;IA+D7C,OAAO,CAAC,gBAAgB;CAQzB;AAED,OAAO,EAAE,eAAe,EAAE,CAAC;AAC3B,eAAe,eAAe,CAAC"}
@@ -42,6 +42,7 @@ const account_context_1 = require("../auth/account-context");
42
42
  const config_manager_1 = require("../utils/config-manager");
43
43
  const logging_1 = require("../services/logging");
44
44
  const config_loader_facade_1 = require("../config/config-loader-facade");
45
+ const error_types_1 = require("../errors/error-types");
45
46
  const instance_directory_1 = require("./instance-directory");
46
47
  const logger = (0, logging_1.createLogger)('management:instance-manager');
47
48
  const MANAGED_MCP_SERVER_NAMES = new Set(['ccs-websearch', 'ccs-image-analysis', 'ccs-browser']);
@@ -60,16 +61,26 @@ class InstanceManager {
60
61
  */
61
62
  async ensureInstance(profileName, contextPolicy = { mode: account_context_1.DEFAULT_ACCOUNT_CONTEXT_MODE }, options = {}) {
62
63
  const instancePath = this.getInstancePath(profileName);
64
+ const initialInstanceStats = this.getInstanceStats(instancePath);
65
+ if (initialInstanceStats) {
66
+ (0, instance_directory_1.assertSafeAccountInstancePath)(this.instancesDir, instancePath);
67
+ }
68
+ else {
69
+ (0, instance_directory_1.ensureSafeAccountInstancesDirectory)(this.instancesDir);
70
+ }
63
71
  // Serialize context sync operations per profile across processes.
64
72
  await this.contextSyncLock.withLock(profileName, async () => {
65
73
  // Lazy initialization
66
- if (!fs.existsSync(instancePath)) {
74
+ if (!this.getInstanceStats(instancePath)) {
75
+ (0, instance_directory_1.ensureSafeAccountInstancesDirectory)(this.instancesDir);
67
76
  logger.stage('route', 'instance.init', 'Initializing new profile instance', {
68
77
  profile: profileName,
69
78
  bare: options.bare === true,
70
79
  });
71
80
  this.initializeInstance(profileName, instancePath, options);
72
81
  }
82
+ // Re-check after locking/creation before any operation can mutate the instance.
83
+ (0, instance_directory_1.assertSafeAccountInstancePath)(this.instancesDir, instancePath);
73
84
  // Validate structure (auto-fix missing dirs)
74
85
  this.validateInstance(instancePath);
75
86
  // Apply context policy (isolated by default, optional shared group).
@@ -94,7 +105,7 @@ class InstanceManager {
94
105
  * Get instance path for profile
95
106
  */
96
107
  getInstancePath(profileName) {
97
- const safeName = this.sanitizeName(profileName);
108
+ const safeName = (0, instance_directory_1.normalizeAccountInstanceName)(profileName);
98
109
  return path.join(this.instancesDir, safeName);
99
110
  }
100
111
  /**
@@ -103,27 +114,12 @@ class InstanceManager {
103
114
  initializeInstance(profileName, instancePath, _options = {}) {
104
115
  try {
105
116
  // Create base directory
106
- fs.mkdirSync(instancePath, { recursive: true, mode: 0o700 });
107
- // Create Claude-expected subdirectories (profile-specific only)
108
- const subdirs = [
109
- 'session-env',
110
- 'todos',
111
- 'logs',
112
- 'file-history',
113
- 'shell-snapshots',
114
- 'debug',
115
- '.anthropic',
116
- ];
117
- subdirs.forEach((dir) => {
118
- const dirPath = path.join(instancePath, dir);
119
- if (!fs.existsSync(dirPath)) {
120
- fs.mkdirSync(dirPath, { recursive: true, mode: 0o700 });
121
- }
122
- });
123
- // Shared links are created during ensureInstance() under the plugin layout lock.
117
+ fs.mkdirSync(instancePath, { mode: 0o700 });
118
+ // Expected subdirectories and shared links are created only after the
119
+ // caller validates that this new root stayed inside the managed parent.
124
120
  }
125
121
  catch (error) {
126
- throw new Error(`Failed to initialize instance for ${profileName}: ${error.message}`);
122
+ throw new error_types_1.ProfileError(`Failed to initialize instance for ${profileName}: ${error.message}`, profileName);
127
123
  }
128
124
  }
129
125
  /**
@@ -241,12 +237,15 @@ class InstanceManager {
241
237
  return false;
242
238
  }
243
239
  }
244
- /**
245
- * Sanitize profile name for filesystem
246
- */
247
- sanitizeName(name) {
248
- // Replace unsafe characters with dash
249
- return name.replace(/[^a-zA-Z0-9_-]/g, '-').toLowerCase();
240
+ getInstanceStats(instancePath) {
241
+ try {
242
+ return fs.lstatSync(instancePath);
243
+ }
244
+ catch (error) {
245
+ if (error.code === 'ENOENT')
246
+ return null;
247
+ throw error;
248
+ }
250
249
  }
251
250
  }
252
251
  exports.InstanceManager = InstanceManager;
@@ -1 +1 @@
1
- {"version":3,"file":"instance-manager.js","sourceRoot":"","sources":["../../src/management/instance-manager.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"instance-manager.js","sourceRoot":"","sources":["../../src/management/instance-manager.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,6 @@
1
+ /// <reference types="node" />
2
+ /// <reference types="node" />
3
+ export declare function readRegularFileContent(filePath: string): Buffer | null;
4
+ export declare function recoverInterruptedClaims(filePath: string): void;
5
+ export declare function claimCanonicalFirstCopy(filePath: string, canonicalContent: Buffer | null, reason: string): boolean;
6
+ //# sourceMappingURL=canonical-first-file-claims.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"canonical-first-file-claims.d.ts","sourceRoot":"","sources":["../../../src/management/shared-manager/canonical-first-file-claims.ts"],"names":[],"mappings":";;AAQA,wBAAgB,sBAAsB,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAGtE;AAmED,wBAAgB,wBAAwB,CAAC,QAAQ,EAAE,MAAM,GAAG,IAAI,CAa/D;AAED,wBAAgB,uBAAuB,CACrC,QAAQ,EAAE,MAAM,EAChB,gBAAgB,EAAE,MAAM,GAAG,IAAI,EAC/B,MAAM,EAAE,MAAM,GACb,OAAO,CAyBT"}
@@ -0,0 +1,143 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
15
+ }) : function(o, v) {
16
+ o["default"] = v;
17
+ });
18
+ var __importStar = (this && this.__importStar) || function (mod) {
19
+ if (mod && mod.__esModule) return mod;
20
+ var result = {};
21
+ if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
22
+ __setModuleDefault(result, mod);
23
+ return result;
24
+ };
25
+ Object.defineProperty(exports, "__esModule", { value: true });
26
+ exports.claimCanonicalFirstCopy = exports.recoverInterruptedClaims = exports.readRegularFileContent = void 0;
27
+ const fs = __importStar(require("fs"));
28
+ const path = __importStar(require("path"));
29
+ const ui_1 = require("../../utils/ui");
30
+ const fs_helpers_1 = require("./fs-helpers");
31
+ let claimSequence = 0;
32
+ function readRegularFileContent(filePath) {
33
+ const stats = (0, fs_helpers_1.getLstatSync)(filePath);
34
+ return stats?.isFile() ? fs.readFileSync(filePath) : null;
35
+ }
36
+ exports.readRegularFileContent = readRegularFileContent;
37
+ function preserveClaim(filePath, claimPath, reason) {
38
+ const basePath = `${filePath}.ccs-shared-conflict`;
39
+ let sequence = 0;
40
+ while (true) {
41
+ const recoveryPath = sequence === 0 ? basePath : `${basePath}-${sequence}`;
42
+ try {
43
+ fs.linkSync(claimPath, recoveryPath);
44
+ try {
45
+ fs.unlinkSync(claimPath);
46
+ }
47
+ catch {
48
+ // Both names preserve the same inode, so leaving the claim is safe.
49
+ }
50
+ console.log((0, ui_1.warn)(`${reason}; preserved content at ${recoveryPath}`));
51
+ return recoveryPath;
52
+ }
53
+ catch (err) {
54
+ const code = err.code;
55
+ if (code === 'EEXIST') {
56
+ sequence++;
57
+ continue;
58
+ }
59
+ try {
60
+ fs.copyFileSync(claimPath, recoveryPath, fs.constants.COPYFILE_EXCL);
61
+ fs.chmodSync(recoveryPath, fs.statSync(claimPath).mode & 0o777);
62
+ fs.unlinkSync(claimPath);
63
+ console.log((0, ui_1.warn)(`${reason}; copied content to ${recoveryPath} (${code ?? 'link failed'})`));
64
+ return recoveryPath;
65
+ }
66
+ catch (copyError) {
67
+ if (copyError.code === 'EEXIST') {
68
+ sequence++;
69
+ continue;
70
+ }
71
+ if (!(0, fs_helpers_1.getLstatSync)(filePath)) {
72
+ try {
73
+ fs.renameSync(claimPath, filePath);
74
+ }
75
+ catch {
76
+ // The claim remains the only recoverable copy if restoration loses a race.
77
+ }
78
+ }
79
+ console.log((0, ui_1.warn)(`${reason}; unable to publish recovery, restored original when possible`));
80
+ throw err;
81
+ }
82
+ }
83
+ }
84
+ }
85
+ function interruptedClaimPaths(filePath) {
86
+ const directory = path.dirname(filePath);
87
+ const prefix = `${path.basename(filePath)}.ccs-shared-claim-`;
88
+ try {
89
+ return fs
90
+ .readdirSync(directory)
91
+ .filter((entry) => entry.startsWith(prefix))
92
+ .map((entry) => path.join(directory, entry))
93
+ .filter((entryPath) => fs.lstatSync(entryPath).isFile())
94
+ .sort();
95
+ }
96
+ catch (err) {
97
+ if (err.code === 'ENOENT')
98
+ return [];
99
+ throw err;
100
+ }
101
+ }
102
+ function recoverInterruptedClaims(filePath) {
103
+ const claims = interruptedClaimPaths(filePath);
104
+ if (claims.length === 0)
105
+ return;
106
+ if (claims.length === 1 && !(0, fs_helpers_1.getLstatSync)(filePath)) {
107
+ fs.renameSync(claims[0], filePath);
108
+ console.log((0, ui_1.warn)(`Recovered interrupted shared-file claim at ${filePath}`));
109
+ return;
110
+ }
111
+ for (const claimPath of claims) {
112
+ preserveClaim(filePath, claimPath, `Quarantined interrupted shared-file claim for ${filePath}`);
113
+ }
114
+ }
115
+ exports.recoverInterruptedClaims = recoverInterruptedClaims;
116
+ function claimCanonicalFirstCopy(filePath, canonicalContent, reason) {
117
+ const initialStats = (0, fs_helpers_1.getLstatSync)(filePath);
118
+ if (!initialStats?.isFile())
119
+ return false;
120
+ const claimPath = `${filePath}.ccs-shared-claim-${process.pid}-${Date.now()}-${claimSequence++}`;
121
+ fs.renameSync(filePath, claimPath);
122
+ if ((0, fs_helpers_1.getLstatSync)(filePath)) {
123
+ preserveClaim(filePath, claimPath, `Concurrent replacement detected at ${filePath}`);
124
+ throw Object.assign(new TypeError(`Concurrent replacement detected at ${filePath}`), {
125
+ code: 'EEXIST',
126
+ });
127
+ }
128
+ const claimedContent = fs.readFileSync(claimPath);
129
+ if (canonicalContent?.equals(claimedContent)) {
130
+ fs.unlinkSync(claimPath);
131
+ }
132
+ else {
133
+ preserveClaim(filePath, claimPath, reason);
134
+ }
135
+ if ((0, fs_helpers_1.getLstatSync)(filePath)) {
136
+ throw Object.assign(new TypeError(`Path reappeared during reconciliation: ${filePath}`), {
137
+ code: 'EEXIST',
138
+ });
139
+ }
140
+ return true;
141
+ }
142
+ exports.claimCanonicalFirstCopy = claimCanonicalFirstCopy;
143
+ //# sourceMappingURL=canonical-first-file-claims.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"canonical-first-file-claims.js","sourceRoot":"","sources":["../../../src/management/shared-manager/canonical-first-file-claims.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,15 @@
1
+ interface CanonicalFirstRoots {
2
+ claudeDir: string;
3
+ sharedDir: string;
4
+ instancesDir: string;
5
+ }
6
+ /**
7
+ * Reconcile a canonical-first shared file before any seed or symlink mutation.
8
+ * Existing canonical content always wins. With no canonical, one unique byte
9
+ * variant is adopted; conflicting variants are all quarantined for recovery.
10
+ */
11
+ export declare function reconcileCanonicalFirstFile(roots: CanonicalFirstRoots, fileName: string): void;
12
+ /** Preserve a later divergent copy without allowing it to replace canonical content. */
13
+ export declare function preserveCanonicalFirstDivergence(divergedPath: string, canonicalPath: string): boolean;
14
+ export {};
15
+ //# sourceMappingURL=canonical-first-file-reconciler.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"canonical-first-file-reconciler.d.ts","sourceRoot":"","sources":["../../../src/management/shared-manager/canonical-first-file-reconciler.ts"],"names":[],"mappings":"AAmBA,UAAU,mBAAmB;IAC3B,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,MAAM,CAAC;IAClB,YAAY,EAAE,MAAM,CAAC;CACtB;AA6CD;;;;GAIG;AACH,wBAAgB,2BAA2B,CAAC,KAAK,EAAE,mBAAmB,EAAE,QAAQ,EAAE,MAAM,GAAG,IAAI,CAiD9F;AAED,wFAAwF;AACxF,wBAAgB,gCAAgC,CAC9C,YAAY,EAAE,MAAM,EACpB,aAAa,EAAE,MAAM,GACpB,OAAO,CAaT"}
@@ -0,0 +1,131 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
15
+ }) : function(o, v) {
16
+ o["default"] = v;
17
+ });
18
+ var __importStar = (this && this.__importStar) || function (mod) {
19
+ if (mod && mod.__esModule) return mod;
20
+ var result = {};
21
+ if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
22
+ __setModuleDefault(result, mod);
23
+ return result;
24
+ };
25
+ var __importDefault = (this && this.__importDefault) || function (mod) {
26
+ return (mod && mod.__esModule) ? mod : { "default": mod };
27
+ };
28
+ Object.defineProperty(exports, "__esModule", { value: true });
29
+ exports.preserveCanonicalFirstDivergence = exports.reconcileCanonicalFirstFile = void 0;
30
+ const fs = __importStar(require("fs"));
31
+ const path = __importStar(require("path"));
32
+ const ui_1 = require("../../utils/ui");
33
+ const profile_registry_1 = __importDefault(require("../../auth/profile-registry"));
34
+ const shared_resource_policy_1 = require("../../auth/shared-resource-policy");
35
+ const instance_directory_1 = require("../instance-directory");
36
+ const diverged_file_adopter_1 = require("./diverged-file-adopter");
37
+ const fs_helpers_1 = require("./fs-helpers");
38
+ const canonical_first_file_claims_1 = require("./canonical-first-file-claims");
39
+ function candidatePaths(roots, fileName) {
40
+ const profiles = new profile_registry_1.default().getAllProfilesMerged();
41
+ const profilesByInstanceName = new Map();
42
+ for (const [profileName, profile] of Object.entries(profiles)) {
43
+ const instanceName = (0, instance_directory_1.normalizeAccountInstanceName)(profileName);
44
+ const matches = profilesByInstanceName.get(instanceName) ?? [];
45
+ matches.push(profile);
46
+ profilesByInstanceName.set(instanceName, matches);
47
+ }
48
+ return [
49
+ path.join(roots.sharedDir, fileName),
50
+ ...(0, instance_directory_1.listAccountInstancePaths)(roots.instancesDir)
51
+ .filter((instancePath) => {
52
+ const instanceName = (0, instance_directory_1.normalizeAccountInstanceName)(path.basename(instancePath));
53
+ const matches = profilesByInstanceName.get(instanceName) ?? [];
54
+ if (matches.length > 1)
55
+ return false;
56
+ return matches.length === 0 || !(0, shared_resource_policy_1.isProfileLocalSharedResourceMode)(matches[0]);
57
+ })
58
+ .map((instancePath) => path.join(instancePath, fileName)),
59
+ ];
60
+ }
61
+ function reconcileCandidatesAgainstCanonical(canonicalPath, candidates) {
62
+ let canonicalContent = null;
63
+ try {
64
+ canonicalContent = fs.readFileSync(canonicalPath);
65
+ }
66
+ catch {
67
+ // A present but unreadable or dangling canonical path still owns precedence.
68
+ }
69
+ for (const candidatePath of candidates) {
70
+ (0, canonical_first_file_claims_1.claimCanonicalFirstCopy)(candidatePath, canonicalContent, `Canonical ${path.basename(canonicalPath)} wins over divergent copy at ${candidatePath}`);
71
+ }
72
+ }
73
+ /**
74
+ * Reconcile a canonical-first shared file before any seed or symlink mutation.
75
+ * Existing canonical content always wins. With no canonical, one unique byte
76
+ * variant is adopted; conflicting variants are all quarantined for recovery.
77
+ */
78
+ function reconcileCanonicalFirstFile(roots, fileName) {
79
+ const canonicalPath = path.join(roots.claudeDir, fileName);
80
+ const candidates = candidatePaths(roots, fileName);
81
+ for (const candidatePath of candidates) {
82
+ if (candidatePath !== path.join(roots.sharedDir, fileName)) {
83
+ const instancePath = path.dirname(candidatePath);
84
+ if (!(0, instance_directory_1.isSafeAccountInstancePath)(roots.instancesDir, instancePath))
85
+ continue;
86
+ }
87
+ (0, canonical_first_file_claims_1.recoverInterruptedClaims)(candidatePath);
88
+ }
89
+ if ((0, fs_helpers_1.getLstatSync)(canonicalPath)) {
90
+ reconcileCandidatesAgainstCanonical(canonicalPath, candidates);
91
+ return;
92
+ }
93
+ const variants = [];
94
+ for (const candidatePath of candidates) {
95
+ const content = (0, canonical_first_file_claims_1.readRegularFileContent)(candidatePath);
96
+ if (content)
97
+ variants.push({ path: candidatePath, content });
98
+ }
99
+ if (variants.length === 0)
100
+ return;
101
+ const uniqueContents = [];
102
+ for (const variant of variants) {
103
+ if (!uniqueContents.some((content) => content.equals(variant.content))) {
104
+ uniqueContents.push(variant.content);
105
+ }
106
+ }
107
+ if (uniqueContents.length === 1) {
108
+ (0, diverged_file_adopter_1.adoptDivergedFileContent)(variants[0].path, canonicalPath);
109
+ reconcileCandidatesAgainstCanonical(canonicalPath, candidates);
110
+ console.log((0, ui_1.info)(`Adopted the only existing ${fileName} variant as canonical content`));
111
+ return;
112
+ }
113
+ for (const variant of variants) {
114
+ (0, canonical_first_file_claims_1.claimCanonicalFirstCopy)(variant.path, null, `Conflicting ${fileName} variants found while no canonical file exists`);
115
+ }
116
+ console.log((0, ui_1.warn)(`No ${fileName} variant was selected; recover one of the .ccs-shared-conflict files explicitly`));
117
+ }
118
+ exports.reconcileCanonicalFirstFile = reconcileCanonicalFirstFile;
119
+ /** Preserve a later divergent copy without allowing it to replace canonical content. */
120
+ function preserveCanonicalFirstDivergence(divergedPath, canonicalPath) {
121
+ let canonicalContent = null;
122
+ try {
123
+ canonicalContent = fs.readFileSync(canonicalPath);
124
+ }
125
+ catch {
126
+ // Preserve the divergence when canonical cannot be compared safely.
127
+ }
128
+ return (0, canonical_first_file_claims_1.claimCanonicalFirstCopy)(divergedPath, canonicalContent, `Canonical ${path.basename(canonicalPath)} wins over divergent copy at ${divergedPath}`);
129
+ }
130
+ exports.preserveCanonicalFirstDivergence = preserveCanonicalFirstDivergence;
131
+ //# sourceMappingURL=canonical-first-file-reconciler.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"canonical-first-file-reconciler.js","sourceRoot":"","sources":["../../../src/management/shared-manager/canonical-first-file-reconciler.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,5 @@
1
+ export type DivergedFileAdoption = 'not-claimed' | 'claimed';
2
+ export declare function assertAdoptionPathAbsent(managedPath: string, adoption: DivergedFileAdoption): void;
3
+ export declare function recoverOrphanedCanonicalClaim(canonicalPath: string): boolean;
4
+ export declare function adoptDivergedFileContent(divergedPath: string, canonicalPath: string): DivergedFileAdoption;
5
+ //# sourceMappingURL=diverged-file-adopter.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"diverged-file-adopter.d.ts","sourceRoot":"","sources":["../../../src/management/shared-manager/diverged-file-adopter.ts"],"names":[],"mappings":"AAMA,MAAM,MAAM,oBAAoB,GAAG,aAAa,GAAG,SAAS,CAAC;AAqB7D,wBAAgB,wBAAwB,CACtC,WAAW,EAAE,MAAM,EACnB,QAAQ,EAAE,oBAAoB,GAC7B,IAAI,CAMN;AAED,wBAAgB,6BAA6B,CAAC,aAAa,EAAE,MAAM,GAAG,OAAO,CA6C5E;AA8OD,wBAAgB,wBAAwB,CACtC,YAAY,EAAE,MAAM,EACpB,aAAa,EAAE,MAAM,GACpB,oBAAoB,CAwGtB"}