@kaitranntt/ccs 7.66.1 → 7.67.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 (365) hide show
  1. package/README.md +3 -1
  2. package/dist/api/services/index.d.ts +1 -0
  3. package/dist/api/services/index.d.ts.map +1 -1
  4. package/dist/api/services/index.js +3 -1
  5. package/dist/api/services/index.js.map +1 -1
  6. package/dist/api/services/local-runtime-readiness.d.ts +14 -0
  7. package/dist/api/services/local-runtime-readiness.d.ts.map +1 -0
  8. package/dist/api/services/local-runtime-readiness.js +89 -0
  9. package/dist/api/services/local-runtime-readiness.js.map +1 -0
  10. package/dist/ccs.js +68 -35
  11. package/dist/ccs.js.map +1 -1
  12. package/dist/cliproxy/accounts/types.d.ts +1 -1
  13. package/dist/cliproxy/accounts/types.d.ts.map +1 -1
  14. package/dist/cliproxy/auth/auth-types.d.ts +29 -6
  15. package/dist/cliproxy/auth/auth-types.d.ts.map +1 -1
  16. package/dist/cliproxy/auth/auth-types.js +58 -10
  17. package/dist/cliproxy/auth/auth-types.js.map +1 -1
  18. package/dist/cliproxy/auth/oauth-handler.d.ts +6 -1
  19. package/dist/cliproxy/auth/oauth-handler.d.ts.map +1 -1
  20. package/dist/cliproxy/auth/oauth-handler.js +165 -45
  21. package/dist/cliproxy/auth/oauth-handler.js.map +1 -1
  22. package/dist/cliproxy/auth/oauth-process.d.ts +26 -1
  23. package/dist/cliproxy/auth/oauth-process.d.ts.map +1 -1
  24. package/dist/cliproxy/auth/oauth-process.js +314 -49
  25. package/dist/cliproxy/auth/oauth-process.js.map +1 -1
  26. package/dist/cliproxy/auth/token-manager.d.ts +9 -0
  27. package/dist/cliproxy/auth/token-manager.d.ts.map +1 -1
  28. package/dist/cliproxy/auth/token-manager.js +104 -58
  29. package/dist/cliproxy/auth/token-manager.js.map +1 -1
  30. package/dist/cliproxy/auth-utils.d.ts +2 -1
  31. package/dist/cliproxy/auth-utils.d.ts.map +1 -1
  32. package/dist/cliproxy/auth-utils.js +32 -7
  33. package/dist/cliproxy/auth-utils.js.map +1 -1
  34. package/dist/cliproxy/catalog-cache.d.ts +9 -1
  35. package/dist/cliproxy/catalog-cache.d.ts.map +1 -1
  36. package/dist/cliproxy/catalog-cache.js +115 -29
  37. package/dist/cliproxy/catalog-cache.js.map +1 -1
  38. package/dist/cliproxy/catalog-routing.d.ts +12 -0
  39. package/dist/cliproxy/catalog-routing.d.ts.map +1 -0
  40. package/dist/cliproxy/catalog-routing.js +19 -0
  41. package/dist/cliproxy/catalog-routing.js.map +1 -0
  42. package/dist/cliproxy/codex-plan-compatibility.d.ts +0 -1
  43. package/dist/cliproxy/codex-plan-compatibility.d.ts.map +1 -1
  44. package/dist/cliproxy/codex-plan-compatibility.js +3 -7
  45. package/dist/cliproxy/codex-plan-compatibility.js.map +1 -1
  46. package/dist/cliproxy/config/generator.d.ts +2 -1
  47. package/dist/cliproxy/config/generator.d.ts.map +1 -1
  48. package/dist/cliproxy/config/generator.js +11 -1
  49. package/dist/cliproxy/config/generator.js.map +1 -1
  50. package/dist/cliproxy/executor/index.d.ts +5 -0
  51. package/dist/cliproxy/executor/index.d.ts.map +1 -1
  52. package/dist/cliproxy/executor/index.js +119 -16
  53. package/dist/cliproxy/executor/index.js.map +1 -1
  54. package/dist/cliproxy/gemini-cli-quota-normalizer.js +1 -1
  55. package/dist/cliproxy/gemini-cli-quota-normalizer.js.map +1 -1
  56. package/dist/cliproxy/index.d.ts +1 -1
  57. package/dist/cliproxy/index.d.ts.map +1 -1
  58. package/dist/cliproxy/index.js.map +1 -1
  59. package/dist/cliproxy/managed-model-prefixes.d.ts +7 -0
  60. package/dist/cliproxy/managed-model-prefixes.d.ts.map +1 -0
  61. package/dist/cliproxy/managed-model-prefixes.js +116 -0
  62. package/dist/cliproxy/managed-model-prefixes.js.map +1 -0
  63. package/dist/cliproxy/management-api-client.d.ts +9 -0
  64. package/dist/cliproxy/management-api-client.d.ts.map +1 -1
  65. package/dist/cliproxy/management-api-client.js +14 -0
  66. package/dist/cliproxy/management-api-client.js.map +1 -1
  67. package/dist/cliproxy/model-catalog.d.ts.map +1 -1
  68. package/dist/cliproxy/model-catalog.js +19 -4
  69. package/dist/cliproxy/model-catalog.js.map +1 -1
  70. package/dist/cliproxy/provider-entitlement-evidence.d.ts +17 -0
  71. package/dist/cliproxy/provider-entitlement-evidence.d.ts.map +1 -0
  72. package/dist/cliproxy/provider-entitlement-evidence.js +55 -0
  73. package/dist/cliproxy/provider-entitlement-evidence.js.map +1 -0
  74. package/dist/cliproxy/provider-entitlement-types.d.ts +16 -0
  75. package/dist/cliproxy/provider-entitlement-types.d.ts.map +1 -0
  76. package/dist/cliproxy/provider-entitlement-types.js +3 -0
  77. package/dist/cliproxy/provider-entitlement-types.js.map +1 -0
  78. package/dist/cliproxy/proxy-detector.d.ts.map +1 -1
  79. package/dist/cliproxy/proxy-detector.js +6 -2
  80. package/dist/cliproxy/proxy-detector.js.map +1 -1
  81. package/dist/cliproxy/quota-fetcher-gemini-cli.d.ts.map +1 -1
  82. package/dist/cliproxy/quota-fetcher-gemini-cli.js +64 -19
  83. package/dist/cliproxy/quota-fetcher-gemini-cli.js.map +1 -1
  84. package/dist/cliproxy/quota-fetcher.d.ts +10 -0
  85. package/dist/cliproxy/quota-fetcher.d.ts.map +1 -1
  86. package/dist/cliproxy/quota-fetcher.js +116 -21
  87. package/dist/cliproxy/quota-fetcher.js.map +1 -1
  88. package/dist/cliproxy/quota-types.d.ts +3 -0
  89. package/dist/cliproxy/quota-types.d.ts.map +1 -1
  90. package/dist/cliproxy/routing-strategy-http.d.ts +6 -0
  91. package/dist/cliproxy/routing-strategy-http.d.ts.map +1 -0
  92. package/dist/cliproxy/routing-strategy-http.js +115 -0
  93. package/dist/cliproxy/routing-strategy-http.js.map +1 -0
  94. package/dist/cliproxy/routing-strategy.d.ts +18 -0
  95. package/dist/cliproxy/routing-strategy.d.ts.map +1 -0
  96. package/dist/cliproxy/routing-strategy.js +123 -0
  97. package/dist/cliproxy/routing-strategy.js.map +1 -0
  98. package/dist/cliproxy/services/variant-settings.d.ts.map +1 -1
  99. package/dist/cliproxy/services/variant-settings.js +43 -30
  100. package/dist/cliproxy/services/variant-settings.js.map +1 -1
  101. package/dist/cliproxy/startup-lock.d.ts.map +1 -1
  102. package/dist/cliproxy/startup-lock.js +5 -1
  103. package/dist/cliproxy/startup-lock.js.map +1 -1
  104. package/dist/cliproxy/tool-sanitization-proxy.d.ts +1 -0
  105. package/dist/cliproxy/tool-sanitization-proxy.d.ts.map +1 -1
  106. package/dist/cliproxy/tool-sanitization-proxy.js +6 -0
  107. package/dist/cliproxy/tool-sanitization-proxy.js.map +1 -1
  108. package/dist/cliproxy/types.d.ts +7 -0
  109. package/dist/cliproxy/types.d.ts.map +1 -1
  110. package/dist/cliproxy/types.js.map +1 -1
  111. package/dist/commands/api-command/create-command.d.ts +3 -0
  112. package/dist/commands/api-command/create-command.d.ts.map +1 -1
  113. package/dist/commands/api-command/create-command.js +20 -6
  114. package/dist/commands/api-command/create-command.js.map +1 -1
  115. package/dist/commands/api-command/help.d.ts.map +1 -1
  116. package/dist/commands/api-command/help.js +1 -0
  117. package/dist/commands/api-command/help.js.map +1 -1
  118. package/dist/commands/cleanup-command.d.ts +1 -1
  119. package/dist/commands/cleanup-command.d.ts.map +1 -1
  120. package/dist/commands/cleanup-command.js +57 -34
  121. package/dist/commands/cleanup-command.js.map +1 -1
  122. package/dist/commands/cliproxy/catalog-subcommand.d.ts.map +1 -1
  123. package/dist/commands/cliproxy/catalog-subcommand.js +72 -44
  124. package/dist/commands/cliproxy/catalog-subcommand.js.map +1 -1
  125. package/dist/commands/cliproxy/help-subcommand.d.ts.map +1 -1
  126. package/dist/commands/cliproxy/help-subcommand.js +6 -2
  127. package/dist/commands/cliproxy/help-subcommand.js.map +1 -1
  128. package/dist/commands/cliproxy/index.d.ts.map +1 -1
  129. package/dist/commands/cliproxy/index.js +14 -0
  130. package/dist/commands/cliproxy/index.js.map +1 -1
  131. package/dist/commands/cliproxy/quota-subcommand.d.ts +2 -0
  132. package/dist/commands/cliproxy/quota-subcommand.d.ts.map +1 -1
  133. package/dist/commands/cliproxy/quota-subcommand.js +8 -1
  134. package/dist/commands/cliproxy/quota-subcommand.js.map +1 -1
  135. package/dist/commands/cliproxy/routing-subcommand.d.ts +4 -0
  136. package/dist/commands/cliproxy/routing-subcommand.d.ts.map +1 -0
  137. package/dist/commands/cliproxy/routing-subcommand.js +68 -0
  138. package/dist/commands/cliproxy/routing-subcommand.js.map +1 -0
  139. package/dist/commands/cliproxy/variant-subcommand.d.ts.map +1 -1
  140. package/dist/commands/cliproxy/variant-subcommand.js +44 -3
  141. package/dist/commands/cliproxy/variant-subcommand.js.map +1 -1
  142. package/dist/commands/command-catalog.d.ts +2 -2
  143. package/dist/commands/command-catalog.d.ts.map +1 -1
  144. package/dist/commands/command-catalog.js +3 -1
  145. package/dist/commands/command-catalog.js.map +1 -1
  146. package/dist/commands/completion-backend.d.ts.map +1 -1
  147. package/dist/commands/completion-backend.js +15 -1
  148. package/dist/commands/completion-backend.js.map +1 -1
  149. package/dist/commands/config-command.d.ts.map +1 -1
  150. package/dist/commands/config-command.js +23 -0
  151. package/dist/commands/config-command.js.map +1 -1
  152. package/dist/commands/docker/up-subcommand.js +1 -1
  153. package/dist/commands/docker/up-subcommand.js.map +1 -1
  154. package/dist/commands/help-command.d.ts.map +1 -1
  155. package/dist/commands/help-command.js +62 -1
  156. package/dist/commands/help-command.js.map +1 -1
  157. package/dist/commands/update-command.d.ts +20 -5
  158. package/dist/commands/update-command.d.ts.map +1 -1
  159. package/dist/commands/update-command.js +169 -119
  160. package/dist/commands/update-command.js.map +1 -1
  161. package/dist/config/unified-config-loader.d.ts +2 -1
  162. package/dist/config/unified-config-loader.d.ts.map +1 -1
  163. package/dist/config/unified-config-loader.js +37 -1
  164. package/dist/config/unified-config-loader.js.map +1 -1
  165. package/dist/config/unified-config-types.d.ts +29 -1
  166. package/dist/config/unified-config-types.d.ts.map +1 -1
  167. package/dist/config/unified-config-types.js +13 -1
  168. package/dist/config/unified-config-types.js.map +1 -1
  169. package/dist/copilot/copilot-executor.d.ts.map +1 -1
  170. package/dist/copilot/copilot-executor.js +5 -8
  171. package/dist/copilot/copilot-executor.js.map +1 -1
  172. package/dist/delegation/headless-executor.d.ts.map +1 -1
  173. package/dist/delegation/headless-executor.js +19 -16
  174. package/dist/delegation/headless-executor.js.map +1 -1
  175. package/dist/errors/error-handler.d.ts.map +1 -1
  176. package/dist/errors/error-handler.js +13 -0
  177. package/dist/errors/error-handler.js.map +1 -1
  178. package/dist/glmt/glmt-transformer.d.ts +1 -0
  179. package/dist/glmt/glmt-transformer.d.ts.map +1 -1
  180. package/dist/glmt/glmt-transformer.js +9 -0
  181. package/dist/glmt/glmt-transformer.js.map +1 -1
  182. package/dist/management/checks/image-analysis-check.d.ts.map +1 -1
  183. package/dist/management/checks/image-analysis-check.js +19 -1
  184. package/dist/management/checks/image-analysis-check.js.map +1 -1
  185. package/dist/management/recovery-manager.d.ts +6 -0
  186. package/dist/management/recovery-manager.d.ts.map +1 -1
  187. package/dist/management/recovery-manager.js +72 -2
  188. package/dist/management/recovery-manager.js.map +1 -1
  189. package/dist/services/logging/index.d.ts +7 -0
  190. package/dist/services/logging/index.d.ts.map +1 -0
  191. package/dist/services/logging/index.js +22 -0
  192. package/dist/services/logging/index.js.map +1 -0
  193. package/dist/services/logging/log-buffer.d.ts +5 -0
  194. package/dist/services/logging/log-buffer.d.ts.map +1 -0
  195. package/dist/services/logging/log-buffer.js +20 -0
  196. package/dist/services/logging/log-buffer.js.map +1 -0
  197. package/dist/services/logging/log-config.d.ts +4 -0
  198. package/dist/services/logging/log-config.d.ts.map +1 -0
  199. package/dist/services/logging/log-config.js +68 -0
  200. package/dist/services/logging/log-config.js.map +1 -0
  201. package/dist/services/logging/log-paths.d.ts +8 -0
  202. package/dist/services/logging/log-paths.d.ts.map +1 -0
  203. package/dist/services/logging/log-paths.js +66 -0
  204. package/dist/services/logging/log-paths.js.map +1 -0
  205. package/dist/services/logging/log-reader.d.ts +5 -0
  206. package/dist/services/logging/log-reader.d.ts.map +1 -0
  207. package/dist/services/logging/log-reader.js +124 -0
  208. package/dist/services/logging/log-reader.js.map +1 -0
  209. package/dist/services/logging/log-redaction.d.ts +2 -0
  210. package/dist/services/logging/log-redaction.d.ts.map +1 -0
  211. package/dist/services/logging/log-redaction.js +53 -0
  212. package/dist/services/logging/log-redaction.js.map +1 -0
  213. package/dist/services/logging/log-storage.d.ts +4 -0
  214. package/dist/services/logging/log-storage.d.ts.map +1 -0
  215. package/dist/services/logging/log-storage.js +109 -0
  216. package/dist/services/logging/log-storage.js.map +1 -0
  217. package/dist/services/logging/log-types.d.ts +30 -0
  218. package/dist/services/logging/log-types.d.ts.map +1 -0
  219. package/dist/services/logging/log-types.js +19 -0
  220. package/dist/services/logging/log-types.js.map +1 -0
  221. package/dist/services/logging/logger.d.ts +9 -0
  222. package/dist/services/logging/logger.d.ts.map +1 -0
  223. package/dist/services/logging/logger.js +46 -0
  224. package/dist/services/logging/logger.js.map +1 -0
  225. package/dist/shared/agy-gemini-pro-compatibility.d.ts +15 -0
  226. package/dist/shared/agy-gemini-pro-compatibility.d.ts.map +1 -0
  227. package/dist/shared/agy-gemini-pro-compatibility.js +18 -0
  228. package/dist/shared/agy-gemini-pro-compatibility.js.map +1 -0
  229. package/dist/shared/cliproxy-model-routing.d.ts +45 -0
  230. package/dist/shared/cliproxy-model-routing.d.ts.map +1 -0
  231. package/dist/shared/cliproxy-model-routing.js +144 -0
  232. package/dist/shared/cliproxy-model-routing.js.map +1 -0
  233. package/dist/shared/provider-preset-catalog.d.ts +3 -1
  234. package/dist/shared/provider-preset-catalog.d.ts.map +1 -1
  235. package/dist/shared/provider-preset-catalog.js +16 -0
  236. package/dist/shared/provider-preset-catalog.js.map +1 -1
  237. package/dist/ui/assets/{accounts-BjfPKR8m.js → accounts-DjL3iVZW.js} +1 -1
  238. package/dist/ui/assets/{alert-dialog-Dh2NUFdm.js → alert-dialog-Tc_D1a_B.js} +1 -1
  239. package/dist/ui/assets/api-CUtkvXmX.js +4 -0
  240. package/dist/ui/assets/{auth-section-Dp10_YyD.js → auth-section-CuKWQHC7.js} +1 -1
  241. package/dist/ui/assets/{backups-section-C0jF8MP1.js → backups-section-BKW2pbb9.js} +1 -1
  242. package/dist/ui/assets/{channels-CkXuK5i7.js → channels-DvWJMdaq.js} +1 -1
  243. package/dist/ui/assets/{checkbox-tA5FH8Ol.js → checkbox-B0hZxMK5.js} +1 -1
  244. package/dist/ui/assets/{claude-extension-Bg2ZkzMz.js → claude-extension-Dfqu-rev.js} +1 -1
  245. package/dist/ui/assets/cliproxy-C9RxW-I8.js +3 -0
  246. package/dist/ui/assets/cliproxy-ai-providers-BXLuuxNf.js +15 -0
  247. package/dist/ui/assets/{cliproxy-control-panel-Da-sGGyI.js → cliproxy-control-panel-aQ7cCc2U.js} +1 -1
  248. package/dist/ui/assets/{codex-ooWKOPa2.js → codex-aq4RI6_n.js} +9 -9
  249. package/dist/ui/assets/{confirm-dialog-CKjwhn9j.js → confirm-dialog-CpDk6eu4.js} +1 -1
  250. package/dist/ui/assets/{copilot-GA7EPiK1.js → copilot-CQRpGXvY.js} +2 -2
  251. package/dist/ui/assets/{cursor-B6c8CyHG.js → cursor-BpXPf6qi.js} +1 -1
  252. package/dist/ui/assets/{droid-CPRHOIX2.js → droid-Cgx-yLjy.js} +2 -2
  253. package/dist/ui/assets/{globalenv-section-Czgnw_GV.js → globalenv-section-DsNqG1yB.js} +1 -1
  254. package/dist/ui/assets/{health-CXLOMk8n.js → health-BY-O-JcA.js} +1 -1
  255. package/dist/ui/assets/icons-KVCk4_U8.js +1 -0
  256. package/dist/ui/assets/index-BmSzf0T9.js +72 -0
  257. package/dist/ui/assets/index-CLGiPB3A.js +1 -0
  258. package/dist/ui/assets/{index-CvfzKRSH.js → index-Cet36v1V.js} +1 -1
  259. package/dist/ui/assets/{index-Boa5e-GY.js → index-DH6L6ybH.js} +1 -1
  260. package/dist/ui/assets/{index-BceMcbCR.js → index-DsCjnpco.js} +1 -1
  261. package/dist/ui/assets/{index-D2v_-6AW.js → index-TQFuDZdB.js} +1 -1
  262. package/dist/ui/assets/index-teLjoh2T.css +1 -0
  263. package/dist/ui/assets/logs-D5ro-pc7.js +1 -0
  264. package/dist/ui/assets/{masked-input-B1_asiUI.js → masked-input-h0XkMSwB.js} +1 -1
  265. package/dist/ui/assets/proxy-status-widget-yBdrFeb7.js +1 -0
  266. package/dist/ui/assets/{raw-json-settings-editor-panel-DMbTkxWw.js → raw-json-settings-editor-panel-Cb7ZInQV.js} +1 -1
  267. package/dist/ui/assets/searchable-select-D4xr5xKS.js +1 -0
  268. package/dist/ui/assets/{separator-CdaalG0K.js → separator-gw5BjIpP.js} +1 -1
  269. package/dist/ui/assets/{shared-BiFB-et0.js → shared-C-VeA1Z9.js} +1 -1
  270. package/dist/ui/assets/{table-BPwgFXLQ.js → table-Bd4isC18.js} +1 -1
  271. package/dist/ui/assets/{tanstack-DWm6aJ-G.js → tanstack-CrmUhA7Z.js} +2 -2
  272. package/dist/ui/assets/updates-DiK8I67C.js +1 -0
  273. package/dist/ui/index.html +4 -4
  274. package/dist/utils/hooks/image-analysis-runtime-status.d.ts.map +1 -1
  275. package/dist/utils/hooks/image-analysis-runtime-status.js +5 -1
  276. package/dist/utils/hooks/image-analysis-runtime-status.js.map +1 -1
  277. package/dist/utils/hooks/image-analyzer-hook-utils.d.ts +21 -0
  278. package/dist/utils/hooks/image-analyzer-hook-utils.d.ts.map +1 -0
  279. package/dist/utils/hooks/image-analyzer-hook-utils.js +81 -0
  280. package/dist/utils/hooks/image-analyzer-hook-utils.js.map +1 -0
  281. package/dist/utils/hooks/image-analyzer-profile-hook-injector.d.ts +1 -0
  282. package/dist/utils/hooks/image-analyzer-profile-hook-injector.d.ts.map +1 -1
  283. package/dist/utils/hooks/image-analyzer-profile-hook-injector.js +33 -12
  284. package/dist/utils/hooks/image-analyzer-profile-hook-injector.js.map +1 -1
  285. package/dist/utils/hooks/index.d.ts +1 -0
  286. package/dist/utils/hooks/index.d.ts.map +1 -1
  287. package/dist/utils/hooks/index.js +3 -1
  288. package/dist/utils/hooks/index.js.map +1 -1
  289. package/dist/utils/image-analysis/index.d.ts +1 -0
  290. package/dist/utils/image-analysis/index.d.ts.map +1 -1
  291. package/dist/utils/image-analysis/index.js +6 -1
  292. package/dist/utils/image-analysis/index.js.map +1 -1
  293. package/dist/utils/image-analysis/repair.d.ts +12 -0
  294. package/dist/utils/image-analysis/repair.d.ts.map +1 -0
  295. package/dist/utils/image-analysis/repair.js +105 -0
  296. package/dist/utils/image-analysis/repair.js.map +1 -0
  297. package/dist/utils/package-manager-detector.d.ts +30 -4
  298. package/dist/utils/package-manager-detector.d.ts.map +1 -1
  299. package/dist/utils/package-manager-detector.js +247 -60
  300. package/dist/utils/package-manager-detector.js.map +1 -1
  301. package/dist/utils/update-checker.d.ts +1 -1
  302. package/dist/utils/update-checker.d.ts.map +1 -1
  303. package/dist/utils/websearch/trace.d.ts.map +1 -1
  304. package/dist/utils/websearch/trace.js +7 -0
  305. package/dist/utils/websearch/trace.js.map +1 -1
  306. package/dist/web-server/index.d.ts.map +1 -1
  307. package/dist/web-server/index.js +24 -0
  308. package/dist/web-server/index.js.map +1 -1
  309. package/dist/web-server/middleware/request-logging-middleware.d.ts +3 -0
  310. package/dist/web-server/middleware/request-logging-middleware.d.ts.map +1 -0
  311. package/dist/web-server/middleware/request-logging-middleware.js +30 -0
  312. package/dist/web-server/middleware/request-logging-middleware.js.map +1 -0
  313. package/dist/web-server/routes/auth-routes.d.ts +10 -0
  314. package/dist/web-server/routes/auth-routes.d.ts.map +1 -1
  315. package/dist/web-server/routes/auth-routes.js +33 -6
  316. package/dist/web-server/routes/auth-routes.js.map +1 -1
  317. package/dist/web-server/routes/catalog-routes.d.ts.map +1 -1
  318. package/dist/web-server/routes/catalog-routes.js +9 -8
  319. package/dist/web-server/routes/catalog-routes.js.map +1 -1
  320. package/dist/web-server/routes/cliproxy-auth-routes.d.ts +8 -0
  321. package/dist/web-server/routes/cliproxy-auth-routes.d.ts.map +1 -1
  322. package/dist/web-server/routes/cliproxy-auth-routes.js +86 -76
  323. package/dist/web-server/routes/cliproxy-auth-routes.js.map +1 -1
  324. package/dist/web-server/routes/cliproxy-routing-routes.d.ts +3 -0
  325. package/dist/web-server/routes/cliproxy-routing-routes.d.ts.map +1 -0
  326. package/dist/web-server/routes/cliproxy-routing-routes.js +34 -0
  327. package/dist/web-server/routes/cliproxy-routing-routes.js.map +1 -0
  328. package/dist/web-server/routes/image-analysis-routes.d.ts.map +1 -1
  329. package/dist/web-server/routes/image-analysis-routes.js +1 -10
  330. package/dist/web-server/routes/image-analysis-routes.js.map +1 -1
  331. package/dist/web-server/routes/index.d.ts.map +1 -1
  332. package/dist/web-server/routes/index.js +22 -0
  333. package/dist/web-server/routes/index.js.map +1 -1
  334. package/dist/web-server/routes/logs-routes.d.ts +3 -0
  335. package/dist/web-server/routes/logs-routes.d.ts.map +1 -0
  336. package/dist/web-server/routes/logs-routes.js +75 -0
  337. package/dist/web-server/routes/logs-routes.js.map +1 -0
  338. package/dist/web-server/routes/profile-routes.d.ts.map +1 -1
  339. package/dist/web-server/routes/profile-routes.js +8 -0
  340. package/dist/web-server/routes/profile-routes.js.map +1 -1
  341. package/dist/web-server/routes/settings-routes.d.ts.map +1 -1
  342. package/dist/web-server/routes/settings-routes.js +2 -0
  343. package/dist/web-server/routes/settings-routes.js.map +1 -1
  344. package/dist/web-server/services/logs-dashboard-service.d.ts +7 -0
  345. package/dist/web-server/services/logs-dashboard-service.d.ts.map +1 -0
  346. package/dist/web-server/services/logs-dashboard-service.js +33 -0
  347. package/dist/web-server/services/logs-dashboard-service.js.map +1 -0
  348. package/dist/web-server/usage/routes.d.ts.map +1 -1
  349. package/dist/web-server/usage/routes.js +11 -0
  350. package/dist/web-server/usage/routes.js.map +1 -1
  351. package/dist/web-server/websocket.d.ts.map +1 -1
  352. package/dist/web-server/websocket.js +23 -14
  353. package/dist/web-server/websocket.js.map +1 -1
  354. package/lib/hooks/image-analyzer-transformer.cjs +5 -0
  355. package/package.json +1 -1
  356. package/dist/ui/assets/api-C-3mQCFf.js +0 -4
  357. package/dist/ui/assets/cliproxy-1qRVSbVC.js +0 -3
  358. package/dist/ui/assets/cliproxy-ai-providers-DBSXTTyw.js +0 -21
  359. package/dist/ui/assets/icons-B9oTjo-t.js +0 -1
  360. package/dist/ui/assets/index-BMHPMj0j.js +0 -69
  361. package/dist/ui/assets/index-CknHGRYp.css +0 -1
  362. package/dist/ui/assets/index-v-DY6Zby.js +0 -1
  363. package/dist/ui/assets/proxy-status-widget-Ci1JpStj.js +0 -1
  364. package/dist/ui/assets/searchable-select-HbP2PXl3.js +0 -1
  365. package/dist/ui/assets/updates-l8Co9uve.js +0 -1
@@ -11,25 +11,40 @@ import type { AccountInfo } from '../account-manager';
11
11
  * - aws-authcode: AWS Builder ID via Authorization Code flow (CLI flag only)
12
12
  * - google: Social OAuth via Google
13
13
  * - github: Social OAuth via GitHub (management API only)
14
+ * - idc: IAM Identity Center (IDC) via CLI flags with start URL + region
14
15
  */
15
- export declare const KIRO_AUTH_METHODS: readonly ["aws", "aws-authcode", "google", "github"];
16
+ export declare const KIRO_AUTH_METHODS: readonly ["aws", "aws-authcode", "google", "github", "idc"];
16
17
  export type KiroAuthMethod = (typeof KIRO_AUTH_METHODS)[number];
17
18
  /** CLI binary supports these Kiro methods directly via flags. */
18
- export declare const KIRO_CLI_AUTH_METHODS: readonly ["aws", "aws-authcode", "google"];
19
+ export declare const KIRO_CLI_AUTH_METHODS: readonly ["aws", "aws-authcode", "google", "idc"];
19
20
  export type KiroCLIAuthMethod = (typeof KIRO_CLI_AUTH_METHODS)[number];
21
+ export declare const KIRO_IDC_FLOWS: readonly ["authcode", "device"];
22
+ export type KiroIDCFlow = (typeof KIRO_IDC_FLOWS)[number];
23
+ export declare const DEFAULT_KIRO_IDC_FLOW: KiroIDCFlow;
20
24
  /** Default Kiro method for CCS UX and AWS Organization support. */
21
25
  export declare const DEFAULT_KIRO_AUTH_METHOD: KiroAuthMethod;
22
26
  export declare function isKiroAuthMethod(value: string): value is KiroAuthMethod;
23
27
  export declare function isKiroCLIAuthMethod(value: string): value is KiroCLIAuthMethod;
28
+ export declare function isKiroIDCFlow(value: string): value is KiroIDCFlow;
24
29
  export declare function normalizeKiroAuthMethod(value?: string): KiroAuthMethod;
25
- export declare function isKiroDeviceCodeMethod(method: KiroAuthMethod): boolean;
26
- export declare function getKiroCallbackPort(method: KiroAuthMethod): number | null;
30
+ export declare function normalizeKiroIDCFlow(value?: string): KiroIDCFlow;
31
+ export declare function isKiroDeviceCodeMethod(method: KiroAuthMethod, options?: {
32
+ idcFlow?: KiroIDCFlow;
33
+ }): boolean;
34
+ export declare function getKiroCallbackPort(method: KiroAuthMethod, options?: {
35
+ idcFlow?: KiroIDCFlow;
36
+ }): number | null;
27
37
  export declare function getKiroCLIAuthFlag(method: KiroCLIAuthMethod): string;
38
+ export declare function getKiroCLIAuthArgs(method: KiroCLIAuthMethod, options?: {
39
+ idcStartUrl?: string;
40
+ idcRegion?: string;
41
+ idcFlow?: KiroIDCFlow;
42
+ }): string[];
28
43
  /**
29
44
  * Kiro method for CLIProxyAPI management endpoint:
30
45
  * GET /v0/management/kiro-auth-url?method=<value>
31
46
  */
32
- export declare function toKiroManagementMethod(method: KiroAuthMethod): 'aws' | 'google' | 'github';
47
+ export declare function toKiroManagementMethod(method: KiroAuthMethod): 'aws' | 'google' | 'github' | null;
33
48
  /**
34
49
  * OAuth callback ports used by CLIProxyAPI (hardcoded in binary)
35
50
  * See: https://github.com/router-for-me/CLIProxyAPI/tree/main/internal/auth
@@ -108,7 +123,9 @@ export declare const CLIPROXY_CALLBACK_PROVIDER_MAP: Record<CLIProxyProvider, st
108
123
  */
109
124
  export declare const CLIPROXY_AUTH_URL_PROVIDER_MAP: Record<CLIProxyProvider, string>;
110
125
  export declare function getManagementAuthUrlPath(provider: CLIProxyProvider): string;
111
- export declare function getPasteCallbackStartPath(provider: CLIProxyProvider): string;
126
+ export declare function getPasteCallbackStartPath(provider: CLIProxyProvider, options?: {
127
+ kiroMethod?: KiroAuthMethod;
128
+ }): string | null;
112
129
  export declare function getManagementOAuthCallbackPath(): string;
113
130
  /**
114
131
  * Get OAuth config for provider
@@ -127,6 +144,12 @@ export interface OAuthOptions {
127
144
  acceptAgyRisk?: boolean;
128
145
  /** Kiro auth method override (CLI + Dashboard parity). */
129
146
  kiroMethod?: KiroAuthMethod;
147
+ /** Kiro IDC start URL (required when kiroMethod=idc). */
148
+ kiroIDCStartUrl?: string;
149
+ /** Kiro IDC region override. */
150
+ kiroIDCRegion?: string;
151
+ /** Kiro IDC flow override (authcode or device). */
152
+ kiroIDCFlow?: KiroIDCFlow;
130
153
  /** If true, triggered from Web UI (enables project selection prompt) */
131
154
  fromUI?: boolean;
132
155
  /** If true, use --no-incognito flag (Kiro only - use normal browser instead of incognito) */
@@ -1 +1 @@
1
- {"version":3,"file":"auth-types.d.ts","sourceRoot":"","sources":["../../../src/cliproxy/auth/auth-types.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"auth-types.d.ts","sourceRoot":"","sources":["../../../src/cliproxy/auth/auth-types.ts"],"names":[],"mappings":"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"}
@@ -5,7 +5,7 @@
5
5
  * Type definitions and OAuth configurations for CLIProxy authentication.
6
6
  */
7
7
  Object.defineProperty(exports, "__esModule", { value: true });
8
- exports.getOAuthConfig = exports.getManagementOAuthCallbackPath = exports.getPasteCallbackStartPath = exports.getManagementAuthUrlPath = exports.CLIPROXY_AUTH_URL_PROVIDER_MAP = exports.CLIPROXY_CALLBACK_PROVIDER_MAP = exports.PROVIDER_TYPE_VALUES = exports.PROVIDER_AUTH_PREFIXES = exports.OAUTH_CONFIGS = exports.OAUTH_CALLBACK_PORTS = exports.toKiroManagementMethod = exports.getKiroCLIAuthFlag = exports.getKiroCallbackPort = exports.isKiroDeviceCodeMethod = exports.normalizeKiroAuthMethod = exports.isKiroCLIAuthMethod = exports.isKiroAuthMethod = exports.DEFAULT_KIRO_AUTH_METHOD = exports.KIRO_CLI_AUTH_METHODS = exports.KIRO_AUTH_METHODS = void 0;
8
+ exports.getOAuthConfig = exports.getManagementOAuthCallbackPath = exports.getPasteCallbackStartPath = exports.getManagementAuthUrlPath = exports.CLIPROXY_AUTH_URL_PROVIDER_MAP = exports.CLIPROXY_CALLBACK_PROVIDER_MAP = exports.PROVIDER_TYPE_VALUES = exports.PROVIDER_AUTH_PREFIXES = exports.OAUTH_CONFIGS = exports.OAUTH_CALLBACK_PORTS = exports.toKiroManagementMethod = exports.getKiroCLIAuthArgs = exports.getKiroCLIAuthFlag = exports.getKiroCallbackPort = exports.isKiroDeviceCodeMethod = exports.normalizeKiroIDCFlow = exports.normalizeKiroAuthMethod = exports.isKiroIDCFlow = exports.isKiroCLIAuthMethod = exports.isKiroAuthMethod = exports.DEFAULT_KIRO_AUTH_METHOD = exports.DEFAULT_KIRO_IDC_FLOW = exports.KIRO_IDC_FLOWS = exports.KIRO_CLI_AUTH_METHODS = exports.KIRO_AUTH_METHODS = void 0;
9
9
  const provider_capabilities_1 = require("../provider-capabilities");
10
10
  /**
11
11
  * Kiro authentication methods supported by CLIProxyAPIPlus.
@@ -13,10 +13,13 @@ const provider_capabilities_1 = require("../provider-capabilities");
13
13
  * - aws-authcode: AWS Builder ID via Authorization Code flow (CLI flag only)
14
14
  * - google: Social OAuth via Google
15
15
  * - github: Social OAuth via GitHub (management API only)
16
+ * - idc: IAM Identity Center (IDC) via CLI flags with start URL + region
16
17
  */
17
- exports.KIRO_AUTH_METHODS = ['aws', 'aws-authcode', 'google', 'github'];
18
+ exports.KIRO_AUTH_METHODS = ['aws', 'aws-authcode', 'google', 'github', 'idc'];
18
19
  /** CLI binary supports these Kiro methods directly via flags. */
19
- exports.KIRO_CLI_AUTH_METHODS = ['aws', 'aws-authcode', 'google'];
20
+ exports.KIRO_CLI_AUTH_METHODS = ['aws', 'aws-authcode', 'google', 'idc'];
21
+ exports.KIRO_IDC_FLOWS = ['authcode', 'device'];
22
+ exports.DEFAULT_KIRO_IDC_FLOW = 'authcode';
20
23
  /** Default Kiro method for CCS UX and AWS Organization support. */
21
24
  exports.DEFAULT_KIRO_AUTH_METHOD = 'aws';
22
25
  function isKiroAuthMethod(value) {
@@ -27,6 +30,10 @@ function isKiroCLIAuthMethod(value) {
27
30
  return exports.KIRO_CLI_AUTH_METHODS.includes(value);
28
31
  }
29
32
  exports.isKiroCLIAuthMethod = isKiroCLIAuthMethod;
33
+ function isKiroIDCFlow(value) {
34
+ return exports.KIRO_IDC_FLOWS.includes(value);
35
+ }
36
+ exports.isKiroIDCFlow = isKiroIDCFlow;
30
37
  function normalizeKiroAuthMethod(value) {
31
38
  if (!value)
32
39
  return exports.DEFAULT_KIRO_AUTH_METHOD;
@@ -34,12 +41,25 @@ function normalizeKiroAuthMethod(value) {
34
41
  return isKiroAuthMethod(normalized) ? normalized : exports.DEFAULT_KIRO_AUTH_METHOD;
35
42
  }
36
43
  exports.normalizeKiroAuthMethod = normalizeKiroAuthMethod;
37
- function isKiroDeviceCodeMethod(method) {
38
- return method === 'aws';
44
+ function normalizeKiroIDCFlow(value) {
45
+ if (!value)
46
+ return exports.DEFAULT_KIRO_IDC_FLOW;
47
+ const normalized = value.trim().toLowerCase();
48
+ return isKiroIDCFlow(normalized) ? normalized : exports.DEFAULT_KIRO_IDC_FLOW;
49
+ }
50
+ exports.normalizeKiroIDCFlow = normalizeKiroIDCFlow;
51
+ function isKiroDeviceCodeMethod(method, options) {
52
+ if (method === 'aws') {
53
+ return true;
54
+ }
55
+ if (method === 'idc') {
56
+ return normalizeKiroIDCFlow(options?.idcFlow) === 'device';
57
+ }
58
+ return false;
39
59
  }
40
60
  exports.isKiroDeviceCodeMethod = isKiroDeviceCodeMethod;
41
- function getKiroCallbackPort(method) {
42
- return isKiroDeviceCodeMethod(method) ? null : 9876;
61
+ function getKiroCallbackPort(method, options) {
62
+ return isKiroDeviceCodeMethod(method, options) ? null : 9876;
43
63
  }
44
64
  exports.getKiroCallbackPort = getKiroCallbackPort;
45
65
  function getKiroCLIAuthFlag(method) {
@@ -50,9 +70,28 @@ function getKiroCLIAuthFlag(method) {
50
70
  return '--kiro-aws-authcode';
51
71
  case 'google':
52
72
  return '--kiro-google-login';
73
+ case 'idc':
74
+ return '--kiro-idc-login';
53
75
  }
54
76
  }
55
77
  exports.getKiroCLIAuthFlag = getKiroCLIAuthFlag;
78
+ function getKiroCLIAuthArgs(method, options) {
79
+ if (method !== 'idc') {
80
+ return [getKiroCLIAuthFlag(method)];
81
+ }
82
+ const startUrl = options?.idcStartUrl?.trim();
83
+ if (!startUrl) {
84
+ throw new Error('Kiro IDC login requires --kiro-idc-start-url');
85
+ }
86
+ const args = [getKiroCLIAuthFlag('idc'), '--kiro-idc-start-url', startUrl];
87
+ const region = options?.idcRegion?.trim();
88
+ if (region) {
89
+ args.push('--kiro-idc-region', region);
90
+ }
91
+ args.push('--kiro-idc-flow', normalizeKiroIDCFlow(options?.idcFlow));
92
+ return args;
93
+ }
94
+ exports.getKiroCLIAuthArgs = getKiroCLIAuthArgs;
56
95
  /**
57
96
  * Kiro method for CLIProxyAPI management endpoint:
58
97
  * GET /v0/management/kiro-auth-url?method=<value>
@@ -63,6 +102,8 @@ function toKiroManagementMethod(method) {
63
102
  return 'google';
64
103
  case 'github':
65
104
  return 'github';
105
+ case 'idc':
106
+ return null;
66
107
  case 'aws-authcode':
67
108
  return 'aws';
68
109
  case 'aws':
@@ -191,10 +232,17 @@ function getManagementAuthUrlPath(provider) {
191
232
  return `/v0/management/${authUrlProvider}-auth-url?is_webui=true`;
192
233
  }
193
234
  exports.getManagementAuthUrlPath = getManagementAuthUrlPath;
194
- function getPasteCallbackStartPath(provider) {
195
- // Kiro CLI auth methods still use the legacy start route.
235
+ function getPasteCallbackStartPath(provider, options) {
196
236
  if (provider === 'kiro') {
197
- return `/oauth/${provider}/start`;
237
+ const kiroMethod = options?.kiroMethod ?? normalizeKiroAuthMethod();
238
+ if (kiroMethod === 'aws-authcode' || kiroMethod === 'idc') {
239
+ return null;
240
+ }
241
+ const managementMethod = toKiroManagementMethod(kiroMethod);
242
+ if (!managementMethod) {
243
+ return null;
244
+ }
245
+ return `${getManagementAuthUrlPath(provider)}&method=${encodeURIComponent(managementMethod)}`;
198
246
  }
199
247
  return getManagementAuthUrlPath(provider);
200
248
  }
@@ -1 +1 @@
1
- {"version":3,"file":"auth-types.js","sourceRoot":"","sources":["../../../src/cliproxy/auth/auth-types.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"auth-types.js","sourceRoot":"","sources":["../../../src/cliproxy/auth/auth-types.ts"],"names":[],"mappings":"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"}
@@ -12,6 +12,7 @@
12
12
  import { CLIProxyProvider } from '../types';
13
13
  import { AccountInfo } from '../account-manager';
14
14
  import { OAuthOptions } from './auth-types';
15
+ import { ProviderTokenSnapshot } from './token-manager';
15
16
  import { type ProxyTarget } from '../proxy-target-resolver';
16
17
  interface PasteCallbackStartData {
17
18
  url?: string;
@@ -19,9 +20,13 @@ interface PasteCallbackStartData {
19
20
  state?: string;
20
21
  status?: string;
21
22
  }
22
- export declare function requestPasteCallbackStart(provider: CLIProxyProvider, target: ProxyTarget): Promise<PasteCallbackStartData>;
23
+ export declare function requestPasteCallbackStart(provider: CLIProxyProvider, target: ProxyTarget, options?: {
24
+ kiroMethod?: OAuthOptions['kiroMethod'];
25
+ }): Promise<PasteCallbackStartData>;
23
26
  export declare function getCliAuthNicknameError(provider: CLIProxyProvider, nickname: string | undefined, existingAccounts: Array<Pick<AccountInfo, 'id' | 'nickname'>>, allowExistingAccountId?: string): string | null;
27
+ export declare function findNewTokenSnapshotForManualAuth(provider: CLIProxyProvider, tokenDir: string, knownTokenFiles: ProviderTokenSnapshot[], expectedAccountId?: string): ProviderTokenSnapshot | null;
24
28
  export declare function resolvePasteCallbackAuthUrl(target: ProxyTarget, startData: PasteCallbackStartData, timeoutMs: number, pollIntervalMs?: number): Promise<string | null>;
29
+ export declare function usesKiroLocalCallbackReplay(method: OAuthOptions['kiroMethod'], idcFlow: OAuthOptions['kiroIDCFlow']): boolean;
25
30
  /**
26
31
  * Trigger OAuth flow for provider
27
32
  * Auto-detects headless environment and uses --no-browser flag accordingly
@@ -1 +1 @@
1
- {"version":3,"file":"oauth-handler.d.ts","sourceRoot":"","sources":["../../../src/cliproxy/auth/oauth-handler.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAMH,OAAO,EAAE,gBAAgB,EAAE,MAAM,UAAU,CAAC;AAC5C,OAAO,EACL,WAAW,EAQZ,MAAM,oBAAoB,CAAC;AAK5B,OAAO,EACL,YAAY,EAYb,MAAM,cAAc,CAAC;AAKtB,OAAO,EAIL,KAAK,WAAW,EACjB,MAAM,0BAA0B,CAAC;AASlC,UAAU,sBAAsB;IAC9B,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAID,wBAAsB,yBAAyB,CAC7C,QAAQ,EAAE,gBAAgB,EAC1B,MAAM,EAAE,WAAW,GAClB,OAAO,CAAC,sBAAsB,CAAC,CAejC;AAED,wBAAgB,uBAAuB,CACrC,QAAQ,EAAE,gBAAgB,EAC1B,QAAQ,EAAE,MAAM,GAAG,SAAS,EAC5B,gBAAgB,EAAE,KAAK,CAAC,IAAI,CAAC,WAAW,EAAE,IAAI,GAAG,UAAU,CAAC,CAAC,EAC7D,sBAAsB,CAAC,EAAE,MAAM,GAC9B,MAAM,GAAG,IAAI,CAef;AAMD,wBAAsB,2BAA2B,CAC/C,MAAM,EAAE,WAAW,EACnB,SAAS,EAAE,sBAAsB,EACjC,SAAS,EAAE,MAAM,EACjB,cAAc,GAAE,MAAiD,GAChE,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CAwCxB;AAySD;;;;;GAKG;AACH,wBAAsB,YAAY,CAChC,QAAQ,EAAE,gBAAgB,EAC1B,OAAO,GAAE,YAAiB,GACzB,OAAO,CAAC,WAAW,GAAG,IAAI,CAAC,CAqN7B;AAED;;;GAGG;AACH,wBAAsB,UAAU,CAC9B,QAAQ,EAAE,gBAAgB,EAC1B,OAAO,GAAE;IAAE,OAAO,CAAC,EAAE,OAAO,CAAC;IAAC,QAAQ,CAAC,EAAE,OAAO,CAAC;IAAC,OAAO,CAAC,EAAE,MAAM,CAAA;CAAO,GACxE,OAAO,CAAC,OAAO,CAAC,CAiBlB"}
1
+ {"version":3,"file":"oauth-handler.d.ts","sourceRoot":"","sources":["../../../src/cliproxy/auth/oauth-handler.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAMH,OAAO,EAAE,gBAAgB,EAAE,MAAM,UAAU,CAAC;AAC5C,OAAO,EACL,WAAW,EAQZ,MAAM,oBAAoB,CAAC;AAK5B,OAAO,EACL,YAAY,EAcb,MAAM,cAAc,CAAC;AAEtB,OAAO,EACL,qBAAqB,EAMtB,MAAM,iBAAiB,CAAC;AAGzB,OAAO,EAIL,KAAK,WAAW,EACjB,MAAM,0BAA0B,CAAC;AASlC,UAAU,sBAAsB;IAC9B,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAKD,wBAAsB,yBAAyB,CAC7C,QAAQ,EAAE,gBAAgB,EAC1B,MAAM,EAAE,WAAW,EACnB,OAAO,CAAC,EAAE;IAAE,UAAU,CAAC,EAAE,YAAY,CAAC,YAAY,CAAC,CAAA;CAAE,GACpD,OAAO,CAAC,sBAAsB,CAAC,CAkBjC;AAED,wBAAgB,uBAAuB,CACrC,QAAQ,EAAE,gBAAgB,EAC1B,QAAQ,EAAE,MAAM,GAAG,SAAS,EAC5B,gBAAgB,EAAE,KAAK,CAAC,IAAI,CAAC,WAAW,EAAE,IAAI,GAAG,UAAU,CAAC,CAAC,EAC7D,sBAAsB,CAAC,EAAE,MAAM,GAC9B,MAAM,GAAG,IAAI,CAef;AAkBD,wBAAgB,iCAAiC,CAC/C,QAAQ,EAAE,gBAAgB,EAC1B,QAAQ,EAAE,MAAM,EAChB,eAAe,EAAE,qBAAqB,EAAE,EACxC,iBAAiB,CAAC,EAAE,MAAM,GACzB,qBAAqB,GAAG,IAAI,CAE9B;AAkED,wBAAsB,2BAA2B,CAC/C,MAAM,EAAE,WAAW,EACnB,SAAS,EAAE,sBAAsB,EACjC,SAAS,EAAE,MAAM,EACjB,cAAc,GAAE,MAAiD,GAChE,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CAwCxB;AAgLD,wBAAgB,2BAA2B,CACzC,MAAM,EAAE,YAAY,CAAC,YAAY,CAAC,EAClC,OAAO,EAAE,YAAY,CAAC,aAAa,CAAC,GACnC,OAAO,CAMT;AA0MD;;;;;GAKG;AACH,wBAAsB,YAAY,CAChC,QAAQ,EAAE,gBAAgB,EAC1B,OAAO,GAAE,YAAiB,GACzB,OAAO,CAAC,WAAW,GAAG,IAAI,CAAC,CA6N7B;AAED;;;GAGG;AACH,wBAAsB,UAAU,CAC9B,QAAQ,EAAE,gBAAgB,EAC1B,OAAO,GAAE;IAAE,OAAO,CAAC,EAAE,OAAO,CAAC;IAAC,QAAQ,CAAC,EAAE,OAAO,CAAC;IAAC,OAAO,CAAC,EAAE,MAAM,CAAA;CAAO,GACxE,OAAO,CAAC,OAAO,CAAC,CAiBlB"}
@@ -34,7 +34,7 @@ var __importStar = (this && this.__importStar) || function (mod) {
34
34
  return result;
35
35
  };
36
36
  Object.defineProperty(exports, "__esModule", { value: true });
37
- exports.ensureAuth = exports.triggerOAuth = exports.resolvePasteCallbackAuthUrl = exports.getCliAuthNicknameError = exports.requestPasteCallbackStart = void 0;
37
+ exports.ensureAuth = exports.triggerOAuth = exports.usesKiroLocalCallbackReplay = exports.resolvePasteCallbackAuthUrl = exports.findNewTokenSnapshotForManualAuth = exports.getCliAuthNicknameError = exports.requestPasteCallbackStart = void 0;
38
38
  const fs = __importStar(require("fs"));
39
39
  const ui_1 = require("../../utils/ui");
40
40
  const binary_manager_1 = require("../binary-manager");
@@ -50,13 +50,16 @@ const proxy_target_resolver_1 = require("../proxy-target-resolver");
50
50
  const account_safety_1 = require("../account-safety");
51
51
  const antigravity_responsibility_1 = require("../antigravity-responsibility");
52
52
  const PASTE_CALLBACK_AUTH_URL_POLL_INTERVAL_MS = 3000;
53
- async function requestPasteCallbackStart(provider, target) {
54
- const startPath = (0, auth_types_1.getPasteCallbackStartPath)(provider);
53
+ const POLLED_AUTH_LOCAL_TOKEN_GRACE_MS = 15 * 1000;
54
+ async function requestPasteCallbackStart(provider, target, options) {
55
+ const startPath = (0, auth_types_1.getPasteCallbackStartPath)(provider, {
56
+ kiroMethod: options?.kiroMethod,
57
+ });
58
+ if (!startPath) {
59
+ throw new Error(`Paste-callback start is not available for ${provider} with the selected method`);
60
+ }
55
61
  const response = await fetch((0, proxy_target_resolver_1.buildProxyUrl)(target, startPath), {
56
- ...(provider === 'kiro' ? { method: 'POST' } : {}),
57
- headers: provider === 'kiro'
58
- ? (0, proxy_target_resolver_1.buildManagementHeaders)(target, { 'Content-Type': 'application/json' })
59
- : (0, proxy_target_resolver_1.buildManagementHeaders)(target),
62
+ headers: (0, proxy_target_resolver_1.buildManagementHeaders)(target),
60
63
  });
61
64
  if (!response.ok) {
62
65
  throw new Error(`OAuth start failed with status ${response.status}`);
@@ -81,6 +84,55 @@ exports.getCliAuthNicknameError = getCliAuthNicknameError;
81
84
  function sleep(ms) {
82
85
  return new Promise((resolve) => setTimeout(resolve, ms));
83
86
  }
87
+ function parseAuthUrlState(url) {
88
+ if (!url) {
89
+ return null;
90
+ }
91
+ try {
92
+ return new URL(url).searchParams.get('state');
93
+ }
94
+ catch {
95
+ return null;
96
+ }
97
+ }
98
+ function findNewTokenSnapshotForManualAuth(provider, tokenDir, knownTokenFiles, expectedAccountId) {
99
+ return (0, token_manager_1.findNewTokenSnapshotForAuthAttempt)(provider, tokenDir, knownTokenFiles, expectedAccountId);
100
+ }
101
+ exports.findNewTokenSnapshotForManualAuth = findNewTokenSnapshotForManualAuth;
102
+ async function waitForManualCallbackToken(provider, target, tokenDir, oauthState, knownTokenFiles, expectedAccountId, timeoutMs, pollIntervalMs = PASTE_CALLBACK_AUTH_URL_POLL_INTERVAL_MS) {
103
+ const deadline = Date.now() + timeoutMs;
104
+ let upstreamCompletedAt = null;
105
+ while (Date.now() < deadline) {
106
+ const tokenSnapshot = findNewTokenSnapshotForManualAuth(provider, tokenDir, knownTokenFiles, expectedAccountId);
107
+ if (tokenSnapshot) {
108
+ return { tokenSnapshot };
109
+ }
110
+ if (oauthState) {
111
+ const response = await fetch((0, proxy_target_resolver_1.buildProxyUrl)(target, `/v0/management/get-auth-status?state=${encodeURIComponent(oauthState)}`), { headers: (0, proxy_target_resolver_1.buildManagementHeaders)(target) });
112
+ if (response.ok) {
113
+ const data = (await response.json());
114
+ if (data.status === 'error') {
115
+ return {
116
+ tokenSnapshot: null,
117
+ error: data.error || 'Authentication failed while waiting for local token persistence',
118
+ };
119
+ }
120
+ if (data.status === 'ok' && upstreamCompletedAt === null) {
121
+ upstreamCompletedAt = Date.now();
122
+ }
123
+ }
124
+ }
125
+ if (upstreamCompletedAt !== null &&
126
+ Date.now() - upstreamCompletedAt >= POLLED_AUTH_LOCAL_TOKEN_GRACE_MS) {
127
+ break;
128
+ }
129
+ if (Date.now() + pollIntervalMs >= deadline) {
130
+ break;
131
+ }
132
+ await sleep(pollIntervalMs);
133
+ }
134
+ return { tokenSnapshot: null };
135
+ }
84
136
  async function resolvePasteCallbackAuthUrl(target, startData, timeoutMs, pollIntervalMs = PASTE_CALLBACK_AUTH_URL_POLL_INTERVAL_MS) {
85
137
  const authUrl = startData.url || startData.auth_url;
86
138
  if (authUrl) {
@@ -223,11 +275,43 @@ async function prepareBinary(provider, verbose) {
223
275
  throw error;
224
276
  }
225
277
  }
278
+ function buildOAuthArgs(provider, configPath, headless, noIncognito, options = {}) {
279
+ const args = ['--config', configPath];
280
+ if (provider === 'kiro') {
281
+ const method = (0, auth_types_1.normalizeKiroAuthMethod)(options.kiroMethod);
282
+ if (!(0, auth_types_1.isKiroCLIAuthMethod)(method)) {
283
+ throw new Error(`Kiro auth method '${method}' is not supported by CLI flow.`);
284
+ }
285
+ args.push(...(0, auth_types_1.getKiroCLIAuthArgs)(method, {
286
+ idcStartUrl: options.kiroIDCStartUrl,
287
+ idcRegion: options.kiroIDCRegion,
288
+ idcFlow: options.kiroIDCFlow,
289
+ }));
290
+ }
291
+ else {
292
+ args.push((0, auth_types_1.getOAuthConfig)(provider).authFlag);
293
+ }
294
+ if (headless) {
295
+ args.push('--no-browser');
296
+ }
297
+ if (provider === 'kiro' && noIncognito) {
298
+ args.push('--no-incognito');
299
+ }
300
+ return args;
301
+ }
302
+ function usesKiroLocalCallbackReplay(method, idcFlow) {
303
+ const normalizedMethod = (0, auth_types_1.normalizeKiroAuthMethod)(method);
304
+ if (normalizedMethod === 'aws-authcode') {
305
+ return true;
306
+ }
307
+ return normalizedMethod === 'idc' && (0, auth_types_1.normalizeKiroIDCFlow)(idcFlow) === 'authcode';
308
+ }
309
+ exports.usesKiroLocalCallbackReplay = usesKiroLocalCallbackReplay;
226
310
  /**
227
311
  * Handle paste-callback mode: show auth URL, prompt for callback paste
228
312
  * Uses proxy target resolver to connect to correct CLIProxyAPI instance (local or remote)
229
313
  */
230
- async function handlePasteCallbackMode(provider, oauthConfig, verbose, tokenDir, nickname, expectedAccountId) {
314
+ async function handlePasteCallbackMode(provider, oauthConfig, verbose, tokenDir, nickname, expectedAccountId, options) {
231
315
  // Resolve CLIProxyAPI target (local or remote based on config)
232
316
  const target = (0, proxy_target_resolver_1.getProxyTarget)();
233
317
  // OAuth state timeout (10 minutes, matches CLIProxyAPI state TTL)
@@ -235,12 +319,13 @@ async function handlePasteCallbackMode(provider, oauthConfig, verbose, tokenDir,
235
319
  console.log('');
236
320
  console.log((0, ui_1.info)(`Starting ${oauthConfig.displayName} OAuth (paste-callback mode)...`));
237
321
  try {
238
- // Request auth URL from CLIProxyAPI.
239
- // Kiro keeps its legacy start route because CLI auth methods do not share the generic
240
- // management auth-url contract used by providers like Claude.
322
+ // Request auth URL from CLIProxyAPI management endpoints when the selected
323
+ // provider/method supports the manual start-url contract.
241
324
  let startData;
242
325
  try {
243
- startData = await requestPasteCallbackStart(provider, target);
326
+ startData = await requestPasteCallbackStart(provider, target, {
327
+ kiroMethod: options?.kiroMethod,
328
+ });
244
329
  }
245
330
  catch (error) {
246
331
  const startError = error.message;
@@ -253,6 +338,8 @@ async function handlePasteCallbackMode(provider, oauthConfig, verbose, tokenDir,
253
338
  console.log((0, ui_1.fail)('No authorization URL received'));
254
339
  return null;
255
340
  }
341
+ const oauthState = startData.state || parseAuthUrlState(authUrl);
342
+ const knownTokenFiles = (0, token_manager_1.listProviderTokenSnapshots)(provider, tokenDir);
256
343
  // Display auth URL in box
257
344
  console.log('');
258
345
  console.log(' ╔══════════════════════════════════════════════════════════════╗');
@@ -328,8 +415,23 @@ async function handlePasteCallbackMode(provider, oauthConfig, verbose, tokenDir,
328
415
  (0, account_safety_1.warnPossible403Ban)(provider, callbackError);
329
416
  return null;
330
417
  }
418
+ console.log((0, ui_1.info)('Callback submitted. Waiting for token exchange...'));
419
+ const { tokenSnapshot, error: tokenWaitError } = await waitForManualCallbackToken(provider, target, tokenDir, oauthState, knownTokenFiles, expectedAccountId, OAUTH_STATE_TIMEOUT_MS);
420
+ if (tokenWaitError) {
421
+ console.log((0, ui_1.fail)(tokenWaitError));
422
+ (0, account_safety_1.warnPossible403Ban)(provider, tokenWaitError);
423
+ return null;
424
+ }
425
+ if (!tokenSnapshot) {
426
+ console.log((0, ui_1.fail)('Authentication completed upstream, but no new local token was saved for this account. Update CCS/CLIProxy and retry.'));
427
+ return null;
428
+ }
429
+ const account = (0, token_manager_1.registerAccountFromToken)(provider, tokenDir, nickname, verbose, tokenSnapshot.file);
430
+ if (!account) {
431
+ console.log((0, ui_1.fail)('Authenticated token could not be matched to the requested account. Retry the flow.'));
432
+ return null;
433
+ }
331
434
  console.log((0, ui_1.ok)('Authentication successful!'));
332
- const account = (0, token_manager_1.registerAccountFromToken)(provider, tokenDir, nickname, verbose, expectedAccountId);
333
435
  // Account safety: check for cross-provider conflicts
334
436
  if (account?.email) {
335
437
  const conflicts = (0, account_safety_1.checkNewAccountConflict)(provider, account.email);
@@ -362,6 +464,7 @@ async function triggerOAuth(provider, options = {}) {
362
464
  const acceptAgyRisk = options.acceptAgyRisk === true;
363
465
  const { nickname } = options;
364
466
  const resolvedKiroMethod = provider === 'kiro' ? (0, auth_types_1.normalizeKiroAuthMethod)(options.kiroMethod) : auth_types_1.DEFAULT_KIRO_AUTH_METHOD;
467
+ const resolvedKiroIDCFlow = provider === 'kiro' ? (0, auth_types_1.normalizeKiroIDCFlow)(options.kiroIDCFlow) : auth_types_1.DEFAULT_KIRO_IDC_FLOW;
365
468
  if (provider === 'agy') {
366
469
  if (fromUI && !acceptAgyRisk) {
367
470
  console.log((0, ui_1.fail)('Antigravity OAuth blocked: responsibility acknowledgement is missing.'));
@@ -388,11 +491,6 @@ async function triggerOAuth(provider, options = {}) {
388
491
  console.log((0, ui_1.fail)(nicknameError));
389
492
  return null;
390
493
  }
391
- // Handle paste-callback mode
392
- if (options.pasteCallback) {
393
- const tokenDir = (0, token_manager_1.getProviderTokenDir)(provider);
394
- return handlePasteCallbackMode(provider, oauthConfig, verbose, tokenDir, nickname, existingNameMatch?.id);
395
- }
396
494
  // Handle --import flag: skip OAuth and import from Kiro IDE directly
397
495
  if (options.import && provider === 'kiro') {
398
496
  const tokenDir = (0, token_manager_1.getProviderTokenDir)(provider);
@@ -407,34 +505,38 @@ async function triggerOAuth(provider, options = {}) {
407
505
  console.log(' Use: ccs config -> Accounts -> Add Kiro account -> Method: GitHub OAuth');
408
506
  return null;
409
507
  }
410
- const callbackPort = provider === 'kiro' ? (0, auth_types_1.getKiroCallbackPort)(resolvedKiroMethod) : oauth_port_diagnostics_1.OAUTH_CALLBACK_PORTS[provider];
508
+ const callbackPort = provider === 'kiro'
509
+ ? (0, auth_types_1.getKiroCallbackPort)(resolvedKiroMethod, { idcFlow: resolvedKiroIDCFlow })
510
+ : oauth_port_diagnostics_1.OAUTH_CALLBACK_PORTS[provider];
411
511
  const isCLI = !fromUI;
412
512
  const headless = options.headless ?? (0, environment_detector_1.isHeadlessEnvironment)();
413
- const isDeviceCodeFlow = provider === 'kiro' ? (0, auth_types_1.isKiroDeviceCodeMethod)(resolvedKiroMethod) : callbackPort === null;
414
- let authFlag = oauthConfig.authFlag;
415
- if (provider === 'kiro') {
416
- if (!(0, auth_types_1.isKiroCLIAuthMethod)(resolvedKiroMethod)) {
417
- console.log((0, ui_1.fail)(`Kiro auth method '${resolvedKiroMethod}' is not supported by CLI flow.`));
418
- console.log(' Use Dashboard management OAuth for this method.');
419
- return null;
420
- }
421
- authFlag = (0, auth_types_1.getKiroCLIAuthFlag)(resolvedKiroMethod);
513
+ const isDeviceCodeFlow = provider === 'kiro'
514
+ ? (0, auth_types_1.isKiroDeviceCodeMethod)(resolvedKiroMethod, { idcFlow: resolvedKiroIDCFlow })
515
+ : callbackPort === null;
516
+ let selectedPasteCallback = options.pasteCallback === true;
517
+ if (provider === 'kiro' && !(0, auth_types_1.isKiroCLIAuthMethod)(resolvedKiroMethod)) {
518
+ console.log((0, ui_1.fail)(`Kiro auth method '${resolvedKiroMethod}' is not supported by CLI flow.`));
519
+ console.log(' Use Dashboard management OAuth for this method.');
520
+ return null;
422
521
  }
423
522
  // Interactive mode selection for headless environments
424
523
  // Skip if explicit mode flag provided or device code flow (no callback needed)
425
- if (headless && !options.pasteCallback && !options.portForward && !isDeviceCodeFlow) {
524
+ if (headless && !selectedPasteCallback && !options.portForward && !isDeviceCodeFlow) {
426
525
  // Non-interactive environment (piped input) - default to paste mode
427
526
  if (!process.stdin.isTTY) {
428
- const tokenDir = (0, token_manager_1.getProviderTokenDir)(provider);
429
- return handlePasteCallbackMode(provider, oauthConfig, verbose, tokenDir, nickname, existingNameMatch?.id);
527
+ selectedPasteCallback = true;
430
528
  }
431
- const mode = await promptOAuthModeChoice(callbackPort);
432
- if (mode === 'paste') {
433
- const tokenDir = (0, token_manager_1.getProviderTokenDir)(provider);
434
- return handlePasteCallbackMode(provider, oauthConfig, verbose, tokenDir, nickname, existingNameMatch?.id);
529
+ else {
530
+ const mode = await promptOAuthModeChoice(callbackPort);
531
+ if (mode === 'paste') {
532
+ selectedPasteCallback = true;
533
+ }
435
534
  }
436
- // mode === 'forward' continues to existing port-forwarding flow below
437
535
  }
536
+ const useSelectedKiroLocalPasteCallback = selectedPasteCallback &&
537
+ provider === 'kiro' &&
538
+ usesKiroLocalCallbackReplay(resolvedKiroMethod, resolvedKiroIDCFlow);
539
+ const useSelectedKiroDirectCliFlow = provider === 'kiro' && (isDeviceCodeFlow || useSelectedKiroLocalPasteCallback);
438
540
  if (existingAccounts.length > 0 && !add) {
439
541
  console.log('');
440
542
  console.log((0, ui_1.info)(`${existingAccounts.length} account(s) already authenticated for ${oauthConfig.displayName}`));
@@ -443,6 +545,10 @@ async function triggerOAuth(provider, options = {}) {
443
545
  return null;
444
546
  }
445
547
  }
548
+ if (selectedPasteCallback && !useSelectedKiroDirectCliFlow) {
549
+ const tokenDir = (0, token_manager_1.getProviderTokenDir)(provider);
550
+ return handlePasteCallbackMode(provider, oauthConfig, verbose, tokenDir, nickname, existingNameMatch?.id, { kiroMethod: provider === 'kiro' ? resolvedKiroMethod : undefined });
551
+ }
446
552
  // Pre-flight checks (skip for device code flows which don't need callback ports)
447
553
  if (!isDeviceCodeFlow && !(await runPreflightChecks(provider, oauthConfig))) {
448
554
  return null;
@@ -461,14 +567,19 @@ async function triggerOAuth(provider, options = {}) {
461
567
  console.error(`[auth] Freed port ${localCallbackPort} for OAuth callback`);
462
568
  }
463
569
  }
464
- // Build args
465
- const args = ['--config', configPath, authFlag];
466
- if (headless) {
467
- args.push('--no-browser');
570
+ const processHeadless = selectedPasteCallback && provider === 'kiro' ? true : headless;
571
+ let args;
572
+ try {
573
+ args = buildOAuthArgs(provider, configPath, processHeadless, noIncognito, {
574
+ kiroMethod: provider === 'kiro' ? resolvedKiroMethod : undefined,
575
+ kiroIDCStartUrl: options.kiroIDCStartUrl,
576
+ kiroIDCRegion: options.kiroIDCRegion,
577
+ kiroIDCFlow: provider === 'kiro' ? resolvedKiroIDCFlow : undefined,
578
+ });
468
579
  }
469
- // Kiro-specific: --no-incognito to use normal browser (saves login credentials)
470
- if (provider === 'kiro' && noIncognito) {
471
- args.push('--no-incognito');
580
+ catch (error) {
581
+ console.log((0, ui_1.fail)(error.message));
582
+ return null;
472
583
  }
473
584
  // Show step based on flow type
474
585
  if (isDeviceCodeFlow) {
@@ -479,7 +590,13 @@ async function triggerOAuth(provider, options = {}) {
479
590
  else {
480
591
  (0, environment_detector_1.showStep)(2, 4, 'progress', `Starting callback server on port ${callbackPort}...`);
481
592
  // Show headless instructions (only for authorization code flows)
482
- if (headless) {
593
+ if (useSelectedKiroLocalPasteCallback) {
594
+ console.log('');
595
+ console.log((0, ui_1.info)('Paste-callback mode enabled for Kiro CLI auth.'));
596
+ console.log(' CCS will print the authorization URL and wait for you to paste the final callback URL.');
597
+ console.log('');
598
+ }
599
+ else if (headless) {
483
600
  console.log('');
484
601
  console.log((0, ui_1.warn)('PORT FORWARDING REQUIRED'));
485
602
  console.log(` OAuth callback uses localhost:${callbackPort} which must be reachable.`);
@@ -496,11 +613,14 @@ async function triggerOAuth(provider, options = {}) {
496
613
  tokenDir,
497
614
  oauthConfig,
498
615
  callbackPort,
499
- headless,
616
+ headless: processHeadless,
500
617
  verbose,
501
618
  isCLI,
502
619
  nickname,
503
620
  expectedAccountId: existingNameMatch?.id,
621
+ authFlowType: isDeviceCodeFlow ? 'device_code' : 'authorization_code',
622
+ kiroMethod: provider === 'kiro' ? resolvedKiroMethod : undefined,
623
+ manualCallback: useSelectedKiroLocalPasteCallback,
504
624
  });
505
625
  // Show hint for Kiro users about --no-incognito option (first-time auth only)
506
626
  if (account && provider === 'kiro' && !noIncognito) {