@kaitranntt/ccs 7.37.1 → 7.38.0-dev.2

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 (97) hide show
  1. package/config/base-qwen.settings.json +2 -2
  2. package/dist/api/services/provider-presets.js +1 -1
  3. package/dist/api/services/provider-presets.js.map +1 -1
  4. package/dist/cliproxy/catalog-cache.d.ts +39 -0
  5. package/dist/cliproxy/catalog-cache.d.ts.map +1 -0
  6. package/dist/cliproxy/catalog-cache.js +246 -0
  7. package/dist/cliproxy/catalog-cache.js.map +1 -0
  8. package/dist/cliproxy/config/extended-context-config.d.ts +39 -0
  9. package/dist/cliproxy/config/extended-context-config.d.ts.map +1 -0
  10. package/dist/cliproxy/config/extended-context-config.js +114 -0
  11. package/dist/cliproxy/config/extended-context-config.js.map +1 -0
  12. package/dist/cliproxy/config/generator.d.ts +3 -2
  13. package/dist/cliproxy/config/generator.d.ts.map +1 -1
  14. package/dist/cliproxy/config/generator.js +87 -5
  15. package/dist/cliproxy/config/generator.js.map +1 -1
  16. package/dist/cliproxy/config/index.d.ts +1 -0
  17. package/dist/cliproxy/config/index.d.ts.map +1 -1
  18. package/dist/cliproxy/config/index.js +1 -0
  19. package/dist/cliproxy/config/index.js.map +1 -1
  20. package/dist/cliproxy/executor/env-resolver.d.ts +2 -0
  21. package/dist/cliproxy/executor/env-resolver.d.ts.map +1 -1
  22. package/dist/cliproxy/executor/env-resolver.js +5 -1
  23. package/dist/cliproxy/executor/env-resolver.js.map +1 -1
  24. package/dist/cliproxy/executor/index.d.ts.map +1 -1
  25. package/dist/cliproxy/executor/index.js +22 -0
  26. package/dist/cliproxy/executor/index.js.map +1 -1
  27. package/dist/cliproxy/index.d.ts +2 -1
  28. package/dist/cliproxy/index.d.ts.map +1 -1
  29. package/dist/cliproxy/index.js +10 -1
  30. package/dist/cliproxy/index.js.map +1 -1
  31. package/dist/cliproxy/management-api-client.d.ts +6 -1
  32. package/dist/cliproxy/management-api-client.d.ts.map +1 -1
  33. package/dist/cliproxy/management-api-client.js +9 -0
  34. package/dist/cliproxy/management-api-client.js.map +1 -1
  35. package/dist/cliproxy/management-api-types.d.ts +30 -0
  36. package/dist/cliproxy/management-api-types.d.ts.map +1 -1
  37. package/dist/cliproxy/model-catalog.d.ts +12 -0
  38. package/dist/cliproxy/model-catalog.d.ts.map +1 -1
  39. package/dist/cliproxy/model-catalog.js +53 -3
  40. package/dist/cliproxy/model-catalog.js.map +1 -1
  41. package/dist/cliproxy/platform-detector.d.ts +4 -4
  42. package/dist/cliproxy/platform-detector.d.ts.map +1 -1
  43. package/dist/cliproxy/platform-detector.js +2 -2
  44. package/dist/cliproxy/platform-detector.js.map +1 -1
  45. package/dist/commands/cliproxy/catalog-subcommand.d.ts +7 -0
  46. package/dist/commands/cliproxy/catalog-subcommand.d.ts.map +1 -0
  47. package/dist/commands/cliproxy/catalog-subcommand.js +123 -0
  48. package/dist/commands/cliproxy/catalog-subcommand.js.map +1 -0
  49. package/dist/commands/cliproxy/help-subcommand.d.ts.map +1 -1
  50. package/dist/commands/cliproxy/help-subcommand.js +8 -0
  51. package/dist/commands/cliproxy/help-subcommand.js.map +1 -1
  52. package/dist/commands/cliproxy/index.d.ts.map +1 -1
  53. package/dist/commands/cliproxy/index.js +15 -0
  54. package/dist/commands/cliproxy/index.js.map +1 -1
  55. package/dist/commands/help-command.d.ts.map +1 -1
  56. package/dist/commands/help-command.js +13 -0
  57. package/dist/commands/help-command.js.map +1 -1
  58. package/dist/commands/version-command.js +1 -1
  59. package/dist/commands/version-command.js.map +1 -1
  60. package/dist/ui/assets/{accounts-D0KU1a-4.js → accounts-ResKjvou.js} +1 -1
  61. package/dist/ui/assets/{alert-dialog-BNRDV_Kh.js → alert-dialog-BnSvEwhd.js} +1 -1
  62. package/dist/ui/assets/{api-ClkFu9LY.js → api-ClPWraVr.js} +1 -1
  63. package/dist/ui/assets/{auth-section-CNhNN1Jp.js → auth-section-CZmgtezT.js} +1 -1
  64. package/dist/ui/assets/{backups-section-CZ721HIu.js → backups-section-CcQsXemH.js} +1 -1
  65. package/dist/ui/assets/cliproxy-C0JgtLfO.js +3 -0
  66. package/dist/ui/assets/{cliproxy-control-panel-T9i_Ldh0.js → cliproxy-control-panel-CBO7xTqe.js} +1 -1
  67. package/dist/ui/assets/{confirm-dialog-Cy1__gRc.js → confirm-dialog-Cjs1FPCy.js} +1 -1
  68. package/dist/ui/assets/{copilot-Cdqs2Jbh.js → copilot-DCA0pQV3.js} +2 -2
  69. package/dist/ui/assets/{globalenv-section-BEKtYN6I.js → globalenv-section-D_GVHsDN.js} +1 -1
  70. package/dist/ui/assets/{health-BaHazGgS.js → health-riN3OSz-.js} +1 -1
  71. package/dist/ui/assets/{index-CiULLjNI.js → index-7gcYb5Oq.js} +3 -3
  72. package/dist/ui/assets/{index-PjscK1jS.js → index-BXTtPkoG.js} +1 -1
  73. package/dist/ui/assets/{index-BZn6kF0u.js → index-BjiZGSfI.js} +1 -1
  74. package/dist/ui/assets/{index-BTBpI5th.js → index-CK0URaBN.js} +1 -1
  75. package/dist/ui/assets/{index-C2MS84sf.js → index-sdtPg8Gr.js} +1 -1
  76. package/dist/ui/assets/{proxy-status-widget-BY6Lnr80.js → proxy-status-widget-B-LQxeOH.js} +1 -1
  77. package/dist/ui/assets/{shared-dZGNvBe9.js → shared-PuUIRrgy.js} +1 -1
  78. package/dist/ui/assets/{switch-BCFbehJz.js → switch-CCYYFslZ.js} +1 -1
  79. package/dist/ui/index.html +1 -1
  80. package/dist/utils/shell-executor.d.ts +6 -0
  81. package/dist/utils/shell-executor.d.ts.map +1 -1
  82. package/dist/utils/shell-executor.js +42 -4
  83. package/dist/utils/shell-executor.js.map +1 -1
  84. package/dist/utils/ui/init.d.ts +1 -1
  85. package/dist/utils/ui/init.d.ts.map +1 -1
  86. package/dist/utils/ui/init.js +25 -36
  87. package/dist/utils/ui/init.js.map +1 -1
  88. package/dist/web-server/routes/catalog-routes.d.ts +3 -0
  89. package/dist/web-server/routes/catalog-routes.d.ts.map +1 -0
  90. package/dist/web-server/routes/catalog-routes.js +27 -0
  91. package/dist/web-server/routes/catalog-routes.js.map +1 -0
  92. package/dist/web-server/routes/index.d.ts.map +1 -1
  93. package/dist/web-server/routes/index.js +2 -0
  94. package/dist/web-server/routes/index.js.map +1 -1
  95. package/package.json +1 -1
  96. package/scripts/code-reviewer.ts +1 -1
  97. package/dist/ui/assets/cliproxy-DeGucfVg.js +0 -3
@@ -3,8 +3,8 @@
3
3
  "ANTHROPIC_BASE_URL": "http://127.0.0.1:8317/api/provider/qwen",
4
4
  "ANTHROPIC_AUTH_TOKEN": "ccs-internal-managed",
5
5
  "ANTHROPIC_MODEL": "qwen3-coder-plus",
6
- "ANTHROPIC_DEFAULT_OPUS_MODEL": "qwen3-coder-plus",
6
+ "ANTHROPIC_DEFAULT_OPUS_MODEL": "qwen3-max",
7
7
  "ANTHROPIC_DEFAULT_SONNET_MODEL": "qwen3-coder-plus",
8
- "ANTHROPIC_DEFAULT_HAIKU_MODEL": "qwen3-vl-plus"
8
+ "ANTHROPIC_DEFAULT_HAIKU_MODEL": "qwen3-coder-flash"
9
9
  }
10
10
  }
@@ -125,7 +125,7 @@ exports.PROVIDER_PRESETS = [
125
125
  {
126
126
  id: 'qwen',
127
127
  name: 'Qwen',
128
- description: 'Alibaba Cloud - qwen3-coder-plus (256K context)',
128
+ description: 'Alibaba Cloud - Qwen3 models (256K-1M context, thinking support)',
129
129
  baseUrl: 'https://dashscope-intl.aliyuncs.com/apps/anthropic',
130
130
  defaultProfileName: 'qwen',
131
131
  defaultModel: 'qwen3-coder-plus',
@@ -1 +1 @@
1
- {"version":3,"file":"provider-presets.js","sourceRoot":"","sources":["../../../src/api/services/provider-presets.ts"],"names":[],"mappings":";AAAA;;;;;GAKG;;;AAsBU,QAAA,mBAAmB,GAAG,2BAA2B,CAAC;AAE/D;;;;GAIG;AACU,QAAA,gBAAgB,GAAqB;IAChD,cAAc;IACd;QACE,EAAE,EAAE,YAAY;QAChB,IAAI,EAAE,YAAY;QAClB,WAAW,EAAE,kDAAkD;QAC/D,OAAO,EAAE,2BAAmB;QAC5B,kBAAkB,EAAE,YAAY;QAChC,YAAY,EAAE,2BAA2B;QACzC,iBAAiB,EAAE,WAAW;QAC9B,UAAU,EAAE,wCAAwC;QACpD,QAAQ,EAAE,aAAa;QACvB,cAAc,EAAE,IAAI;KACrB;IACD;QACE,EAAE,EAAE,QAAQ;QACZ,IAAI,EAAE,gBAAgB;QACtB,WAAW,EAAE,oDAAoD;QACjE,OAAO,EAAE,wBAAwB;QACjC,kBAAkB,EAAE,QAAQ;QAC5B,YAAY,EAAE,aAAa;QAC3B,iBAAiB,EAAE,QAAQ;QAC3B,UAAU,EAAE,8DAA8D;QAC1E,QAAQ,EAAE,aAAa;QACvB,cAAc,EAAE,KAAK;KACtB;IACD,wBAAwB;IACxB;QACE,EAAE,EAAE,KAAK;QACT,IAAI,EAAE,KAAK;QACX,WAAW,EAAE,iBAAiB;QAC9B,OAAO,EAAE,gCAAgC;QACzC,kBAAkB,EAAE,KAAK;QACzB,YAAY,EAAE,SAAS;QACvB,iBAAiB,EAAE,SAAS;QAC5B,UAAU,EAAE,4BAA4B;QACxC,QAAQ,EAAE,aAAa;QACvB,cAAc,EAAE,IAAI;KACrB;IACD;QACE,EAAE,EAAE,MAAM;QACV,IAAI,EAAE,MAAM;QACZ,WAAW,EAAE,gCAAgC;QAC7C,OAAO,EAAE,sDAAsD;QAC/D,kBAAkB,EAAE,MAAM;QAC1B,YAAY,EAAE,SAAS;QACvB,iBAAiB,EAAE,SAAS;QAC5B,UAAU,EAAE,qBAAqB;QACjC,QAAQ,EAAE,aAAa;QACvB,cAAc,EAAE,IAAI;QACpB,QAAQ,EAAE;YACR,qBAAqB,EAAE,KAAK;YAC5B,oBAAoB,EAAE,OAAO;YAC7B,mBAAmB,EAAE,OAAO;YAC5B,gBAAgB,EAAE,MAAM;YACxB,mBAAmB,EAAE,OAAO;YAC5B,cAAc,EAAE,SAAS;SAC1B;QACD,qBAAqB,EAAE,IAAI;KAC5B;IACD;QACE,EAAE,EAAE,MAAM;QACV,IAAI,EAAE,MAAM;QACZ,WAAW,EAAE,oCAAoC;QACjD,OAAO,EAAE,8BAA8B;QACvC,kBAAkB,EAAE,MAAM;QAC1B,YAAY,EAAE,wBAAwB;QACtC,iBAAiB,EAAE,QAAQ;QAC3B,UAAU,EAAE,mCAAmC;QAC/C,QAAQ,EAAE,aAAa;QACvB,cAAc,EAAE,IAAI;QACpB,qBAAqB,EAAE,IAAI;KAC5B;IACD;QACE,EAAE,EAAE,SAAS;QACb,IAAI,EAAE,eAAe;QACrB,WAAW,EAAE,uCAAuC;QACpD,OAAO,EAAE,6DAA6D;QACtE,kBAAkB,EAAE,SAAS;QAC7B,YAAY,EAAE,mBAAmB;QACjC,iBAAiB,EAAE,oBAAoB;QACvC,UAAU,EAAE,4DAA4D;QACxE,QAAQ,EAAE,aAAa;QACvB,cAAc,EAAE,IAAI;KACrB;IACD;QACE,EAAE,EAAE,IAAI;QACR,IAAI,EAAE,SAAS;QACf,WAAW,EAAE,wDAAwD;QACrE,OAAO,EAAE,kCAAkC;QAC3C,kBAAkB,EAAE,IAAI;QACxB,YAAY,EAAE,cAAc;QAC5B,iBAAiB,EAAE,2BAA2B;QAC9C,UAAU,EAAE,yCAAyC;QACrD,QAAQ,EAAE,aAAa;QACvB,cAAc,EAAE,IAAI;KACrB;IACD;QACE,EAAE,EAAE,UAAU;QACd,IAAI,EAAE,UAAU;QAChB,WAAW,EAAE,4CAA4C;QACzD,OAAO,EAAE,oCAAoC;QAC7C,kBAAkB,EAAE,UAAU;QAC9B,YAAY,EAAE,eAAe;QAC7B,iBAAiB,EAAE,QAAQ;QAC3B,UAAU,EAAE,2CAA2C;QACvD,QAAQ,EAAE,aAAa;QACvB,cAAc,EAAE,IAAI;KACrB;IACD;QACE,EAAE,EAAE,MAAM;QACV,IAAI,EAAE,MAAM;QACZ,WAAW,EAAE,iDAAiD;QAC9D,OAAO,EAAE,oDAAoD;QAC7D,kBAAkB,EAAE,MAAM;QAC1B,YAAY,EAAE,kBAAkB;QAChC,iBAAiB,EAAE,QAAQ;QAC3B,UAAU,EAAE,kDAAkD;QAC9D,QAAQ,EAAE,aAAa;QACvB,cAAc,EAAE,IAAI;KACrB;IACD;QACE,EAAE,EAAE,cAAc;QAClB,IAAI,EAAE,cAAc;QACpB,WAAW,EAAE,wEAAwE;QACrF,OAAO,EAAE,oBAAoB;QAC7B,kBAAkB,EAAE,cAAc;QAClC,YAAY,EAAE,eAAe;QAC7B,iBAAiB,EAAE,2BAA2B;QAC9C,UAAU,EAAE,gCAAgC;QAC5C,QAAQ,EAAE,aAAa;QACvB,cAAc,EAAE,IAAI;KACrB;CACF,CAAC;AAEF,uBAAuB;AACvB,SAAgB,aAAa,CAAC,EAAU;IACtC,OAAO,wBAAgB,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,WAAW,EAAE,CAAC,CAAC;AACjE,CAAC;AAFD,sCAEC;AAED,yBAAyB;AACzB,SAAgB,YAAY;IAC1B,OAAO,wBAAgB,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;AAC3C,CAAC;AAFD,oCAEC;AAED,kCAAkC;AAClC,SAAgB,eAAe,CAAC,EAAU;IACxC,OAAO,aAAa,CAAC,EAAE,CAAC,KAAK,SAAS,CAAC;AACzC,CAAC;AAFD,0CAEC"}
1
+ {"version":3,"file":"provider-presets.js","sourceRoot":"","sources":["../../../src/api/services/provider-presets.ts"],"names":[],"mappings":";AAAA;;;;;GAKG;;;AAsBU,QAAA,mBAAmB,GAAG,2BAA2B,CAAC;AAE/D;;;;GAIG;AACU,QAAA,gBAAgB,GAAqB;IAChD,cAAc;IACd;QACE,EAAE,EAAE,YAAY;QAChB,IAAI,EAAE,YAAY;QAClB,WAAW,EAAE,kDAAkD;QAC/D,OAAO,EAAE,2BAAmB;QAC5B,kBAAkB,EAAE,YAAY;QAChC,YAAY,EAAE,2BAA2B;QACzC,iBAAiB,EAAE,WAAW;QAC9B,UAAU,EAAE,wCAAwC;QACpD,QAAQ,EAAE,aAAa;QACvB,cAAc,EAAE,IAAI;KACrB;IACD;QACE,EAAE,EAAE,QAAQ;QACZ,IAAI,EAAE,gBAAgB;QACtB,WAAW,EAAE,oDAAoD;QACjE,OAAO,EAAE,wBAAwB;QACjC,kBAAkB,EAAE,QAAQ;QAC5B,YAAY,EAAE,aAAa;QAC3B,iBAAiB,EAAE,QAAQ;QAC3B,UAAU,EAAE,8DAA8D;QAC1E,QAAQ,EAAE,aAAa;QACvB,cAAc,EAAE,KAAK;KACtB;IACD,wBAAwB;IACxB;QACE,EAAE,EAAE,KAAK;QACT,IAAI,EAAE,KAAK;QACX,WAAW,EAAE,iBAAiB;QAC9B,OAAO,EAAE,gCAAgC;QACzC,kBAAkB,EAAE,KAAK;QACzB,YAAY,EAAE,SAAS;QACvB,iBAAiB,EAAE,SAAS;QAC5B,UAAU,EAAE,4BAA4B;QACxC,QAAQ,EAAE,aAAa;QACvB,cAAc,EAAE,IAAI;KACrB;IACD;QACE,EAAE,EAAE,MAAM;QACV,IAAI,EAAE,MAAM;QACZ,WAAW,EAAE,gCAAgC;QAC7C,OAAO,EAAE,sDAAsD;QAC/D,kBAAkB,EAAE,MAAM;QAC1B,YAAY,EAAE,SAAS;QACvB,iBAAiB,EAAE,SAAS;QAC5B,UAAU,EAAE,qBAAqB;QACjC,QAAQ,EAAE,aAAa;QACvB,cAAc,EAAE,IAAI;QACpB,QAAQ,EAAE;YACR,qBAAqB,EAAE,KAAK;YAC5B,oBAAoB,EAAE,OAAO;YAC7B,mBAAmB,EAAE,OAAO;YAC5B,gBAAgB,EAAE,MAAM;YACxB,mBAAmB,EAAE,OAAO;YAC5B,cAAc,EAAE,SAAS;SAC1B;QACD,qBAAqB,EAAE,IAAI;KAC5B;IACD;QACE,EAAE,EAAE,MAAM;QACV,IAAI,EAAE,MAAM;QACZ,WAAW,EAAE,oCAAoC;QACjD,OAAO,EAAE,8BAA8B;QACvC,kBAAkB,EAAE,MAAM;QAC1B,YAAY,EAAE,wBAAwB;QACtC,iBAAiB,EAAE,QAAQ;QAC3B,UAAU,EAAE,mCAAmC;QAC/C,QAAQ,EAAE,aAAa;QACvB,cAAc,EAAE,IAAI;QACpB,qBAAqB,EAAE,IAAI;KAC5B;IACD;QACE,EAAE,EAAE,SAAS;QACb,IAAI,EAAE,eAAe;QACrB,WAAW,EAAE,uCAAuC;QACpD,OAAO,EAAE,6DAA6D;QACtE,kBAAkB,EAAE,SAAS;QAC7B,YAAY,EAAE,mBAAmB;QACjC,iBAAiB,EAAE,oBAAoB;QACvC,UAAU,EAAE,4DAA4D;QACxE,QAAQ,EAAE,aAAa;QACvB,cAAc,EAAE,IAAI;KACrB;IACD;QACE,EAAE,EAAE,IAAI;QACR,IAAI,EAAE,SAAS;QACf,WAAW,EAAE,wDAAwD;QACrE,OAAO,EAAE,kCAAkC;QAC3C,kBAAkB,EAAE,IAAI;QACxB,YAAY,EAAE,cAAc;QAC5B,iBAAiB,EAAE,2BAA2B;QAC9C,UAAU,EAAE,yCAAyC;QACrD,QAAQ,EAAE,aAAa;QACvB,cAAc,EAAE,IAAI;KACrB;IACD;QACE,EAAE,EAAE,UAAU;QACd,IAAI,EAAE,UAAU;QAChB,WAAW,EAAE,4CAA4C;QACzD,OAAO,EAAE,oCAAoC;QAC7C,kBAAkB,EAAE,UAAU;QAC9B,YAAY,EAAE,eAAe;QAC7B,iBAAiB,EAAE,QAAQ;QAC3B,UAAU,EAAE,2CAA2C;QACvD,QAAQ,EAAE,aAAa;QACvB,cAAc,EAAE,IAAI;KACrB;IACD;QACE,EAAE,EAAE,MAAM;QACV,IAAI,EAAE,MAAM;QACZ,WAAW,EAAE,kEAAkE;QAC/E,OAAO,EAAE,oDAAoD;QAC7D,kBAAkB,EAAE,MAAM;QAC1B,YAAY,EAAE,kBAAkB;QAChC,iBAAiB,EAAE,QAAQ;QAC3B,UAAU,EAAE,kDAAkD;QAC9D,QAAQ,EAAE,aAAa;QACvB,cAAc,EAAE,IAAI;KACrB;IACD;QACE,EAAE,EAAE,cAAc;QAClB,IAAI,EAAE,cAAc;QACpB,WAAW,EAAE,wEAAwE;QACrF,OAAO,EAAE,oBAAoB;QAC7B,kBAAkB,EAAE,cAAc;QAClC,YAAY,EAAE,eAAe;QAC7B,iBAAiB,EAAE,2BAA2B;QAC9C,UAAU,EAAE,gCAAgC;QAC5C,QAAQ,EAAE,aAAa;QACvB,cAAc,EAAE,IAAI;KACrB;CACF,CAAC;AAEF,uBAAuB;AACvB,SAAgB,aAAa,CAAC,EAAU;IACtC,OAAO,wBAAgB,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,WAAW,EAAE,CAAC,CAAC;AACjE,CAAC;AAFD,sCAEC;AAED,yBAAyB;AACzB,SAAgB,YAAY;IAC1B,OAAO,wBAAgB,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;AAC3C,CAAC;AAFD,oCAEC;AAED,kCAAkC;AAClC,SAAgB,eAAe,CAAC,EAAU;IACxC,OAAO,aAAa,CAAC,EAAE,CAAC,KAAK,SAAS,CAAC;AACzC,CAAC;AAFD,0CAEC"}
@@ -0,0 +1,39 @@
1
+ import type { CLIProxyProvider } from './types';
2
+ import type { ProviderCatalog } from './model-catalog';
3
+ import type { RemoteModelInfo } from './management-api-types';
4
+ /** Cache structure stored on disk */
5
+ interface CatalogCacheData {
6
+ providers: Record<string, RemoteModelInfo[]>;
7
+ fetchedAt: number;
8
+ }
9
+ /** CCS provider → channel name mapping (reverse) */
10
+ export declare const PROVIDER_TO_CHANNEL: Record<string, string>;
11
+ /** Providers to sync from CLIProxyAPI */
12
+ export declare const SYNCABLE_PROVIDERS: CLIProxyProvider[];
13
+ /** Read cached catalog data, null if expired or missing */
14
+ export declare function getCachedCatalog(): CatalogCacheData | null;
15
+ /** Save catalog data to cache */
16
+ export declare function setCachedCatalog(providers: Record<string, RemoteModelInfo[]>): void;
17
+ /** Delete cache file */
18
+ export declare function clearCatalogCache(): boolean;
19
+ /** Get cache age in human-readable format, or null if no cache */
20
+ export declare function getCacheAge(): string | null;
21
+ /**
22
+ * Merge remote models with static catalog for a provider.
23
+ * Remote fields override static where present.
24
+ * Static-only fields preserved: broken, deprecated, deprecationReason, issueUrl, tier.
25
+ * Models in static but not in remote → kept.
26
+ * Models in remote but not in static → added.
27
+ */
28
+ export declare function mergeCatalog(provider: CLIProxyProvider, remoteModels: RemoteModelInfo[]): ProviderCatalog | undefined;
29
+ /**
30
+ * Get resolved catalog for a provider.
31
+ * Uses cached remote data if available, falls back to static.
32
+ */
33
+ export declare function getResolvedCatalog(provider: CLIProxyProvider): ProviderCatalog | undefined;
34
+ /**
35
+ * Get all resolved catalogs (for Dashboard).
36
+ */
37
+ export declare function getAllResolvedCatalogs(): Partial<Record<CLIProxyProvider, ProviderCatalog>>;
38
+ export {};
39
+ //# sourceMappingURL=catalog-cache.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"catalog-cache.d.ts","sourceRoot":"","sources":["../../src/cliproxy/catalog-cache.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,SAAS,CAAC;AAChD,OAAO,KAAK,EAAc,eAAe,EAAmB,MAAM,iBAAiB,CAAC;AAEpF,OAAO,KAAK,EAAE,eAAe,EAAyB,MAAM,wBAAwB,CAAC;AAKrF,qCAAqC;AACrC,UAAU,gBAAgB;IACxB,SAAS,EAAE,MAAM,CAAC,MAAM,EAAE,eAAe,EAAE,CAAC,CAAC;IAC7C,SAAS,EAAE,MAAM,CAAC;CACnB;AAYD,oDAAoD;AACpD,eAAO,MAAM,mBAAmB,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAEtD,CAAC;AAEF,yCAAyC;AACzC,eAAO,MAAM,kBAAkB,EAAE,gBAAgB,EAAyC,CAAC;AAM3F,2DAA2D;AAC3D,wBAAgB,gBAAgB,IAAI,gBAAgB,GAAG,IAAI,CAU1D;AAED,iCAAiC;AACjC,wBAAgB,gBAAgB,CAAC,SAAS,EAAE,MAAM,CAAC,MAAM,EAAE,eAAe,EAAE,CAAC,GAAG,IAAI,CASnF;AAED,wBAAwB;AACxB,wBAAgB,iBAAiB,IAAI,OAAO,CAW3C;AAED,kEAAkE;AAClE,wBAAgB,WAAW,IAAI,MAAM,GAAG,IAAI,CAa3C;AAyCD;;;;;;GAMG;AACH,wBAAgB,YAAY,CAC1B,QAAQ,EAAE,gBAAgB,EAC1B,YAAY,EAAE,eAAe,EAAE,GAC9B,eAAe,GAAG,SAAS,CAuD7B;AAED;;;GAGG;AACH,wBAAgB,kBAAkB,CAAC,QAAQ,EAAE,gBAAgB,GAAG,eAAe,GAAG,SAAS,CAM1F;AAED;;GAEG;AACH,wBAAgB,sBAAsB,IAAI,OAAO,CAAC,MAAM,CAAC,gBAAgB,EAAE,eAAe,CAAC,CAAC,CAiB3F"}
@@ -0,0 +1,246 @@
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.getAllResolvedCatalogs = exports.getResolvedCatalog = exports.mergeCatalog = exports.getCacheAge = exports.clearCatalogCache = exports.setCachedCatalog = exports.getCachedCatalog = exports.SYNCABLE_PROVIDERS = exports.PROVIDER_TO_CHANNEL = void 0;
27
+ const fs = __importStar(require("fs"));
28
+ const path = __importStar(require("path"));
29
+ const config_manager_1 = require("../utils/config-manager");
30
+ const model_catalog_1 = require("./model-catalog");
31
+ const CACHE_FILE_NAME = 'model-catalog-cache.json';
32
+ const CACHE_TTL_MS = 24 * 60 * 60 * 1000; // 24 hours
33
+ /** Channel name → CCS provider mapping */
34
+ const CHANNEL_TO_PROVIDER = {
35
+ antigravity: 'agy',
36
+ claude: 'claude',
37
+ gemini: 'gemini',
38
+ codex: 'codex',
39
+ qwen: 'qwen',
40
+ iflow: 'iflow',
41
+ };
42
+ /** CCS provider → channel name mapping (reverse) */
43
+ exports.PROVIDER_TO_CHANNEL = Object.fromEntries(Object.entries(CHANNEL_TO_PROVIDER).map(([k, v]) => [v, k]));
44
+ /** Providers to sync from CLIProxyAPI */
45
+ exports.SYNCABLE_PROVIDERS = ['agy', 'gemini', 'codex', 'claude'];
46
+ function getCacheFilePath() {
47
+ return path.join((0, config_manager_1.getCcsDir)(), CACHE_FILE_NAME);
48
+ }
49
+ /** Read cached catalog data, null if expired or missing */
50
+ function getCachedCatalog() {
51
+ try {
52
+ const filePath = getCacheFilePath();
53
+ if (!fs.existsSync(filePath))
54
+ return null;
55
+ const data = JSON.parse(fs.readFileSync(filePath, 'utf8'));
56
+ if (Date.now() - data.fetchedAt > CACHE_TTL_MS)
57
+ return null;
58
+ return data;
59
+ }
60
+ catch {
61
+ return null;
62
+ }
63
+ }
64
+ exports.getCachedCatalog = getCachedCatalog;
65
+ /** Save catalog data to cache */
66
+ function setCachedCatalog(providers) {
67
+ try {
68
+ const filePath = getCacheFilePath();
69
+ const dir = path.dirname(filePath);
70
+ if (!fs.existsSync(dir))
71
+ fs.mkdirSync(dir, { recursive: true });
72
+ fs.writeFileSync(filePath, JSON.stringify({ providers, fetchedAt: Date.now() }));
73
+ }
74
+ catch {
75
+ // Ignore cache write errors
76
+ }
77
+ }
78
+ exports.setCachedCatalog = setCachedCatalog;
79
+ /** Delete cache file */
80
+ function clearCatalogCache() {
81
+ try {
82
+ const filePath = getCacheFilePath();
83
+ if (fs.existsSync(filePath)) {
84
+ fs.unlinkSync(filePath);
85
+ return true;
86
+ }
87
+ return false;
88
+ }
89
+ catch {
90
+ return false;
91
+ }
92
+ }
93
+ exports.clearCatalogCache = clearCatalogCache;
94
+ /** Get cache age in human-readable format, or null if no cache */
95
+ function getCacheAge() {
96
+ try {
97
+ const filePath = getCacheFilePath();
98
+ if (!fs.existsSync(filePath))
99
+ return null;
100
+ const data = JSON.parse(fs.readFileSync(filePath, 'utf8'));
101
+ const ageMs = Date.now() - data.fetchedAt;
102
+ const hours = Math.floor(ageMs / (60 * 60 * 1000));
103
+ const minutes = Math.floor((ageMs % (60 * 60 * 1000)) / (60 * 1000));
104
+ if (hours > 0)
105
+ return `${hours}h ${minutes}m ago`;
106
+ return `${minutes}m ago`;
107
+ }
108
+ catch {
109
+ return null;
110
+ }
111
+ }
112
+ exports.getCacheAge = getCacheAge;
113
+ /** Map remote thinking support to CCS ThinkingSupport */
114
+ function mapThinking(remote) {
115
+ if (!remote)
116
+ return undefined;
117
+ // If levels are provided, it's a levels-type thinking
118
+ if (remote.levels && remote.levels.length > 0) {
119
+ return {
120
+ type: 'levels',
121
+ levels: remote.levels,
122
+ dynamicAllowed: remote.dynamic_allowed,
123
+ };
124
+ }
125
+ // If min/max budget are provided, it's budget-type
126
+ if (remote.min !== undefined || remote.max !== undefined) {
127
+ return {
128
+ type: 'budget',
129
+ min: remote.min,
130
+ max: remote.max,
131
+ zeroAllowed: remote.zero_allowed,
132
+ dynamicAllowed: remote.dynamic_allowed,
133
+ };
134
+ }
135
+ return { type: 'none' };
136
+ }
137
+ /** Map RemoteModelInfo to ModelEntry */
138
+ function mapRemoteToModelEntry(remote) {
139
+ const entry = {
140
+ id: remote.id,
141
+ name: remote.display_name || remote.id,
142
+ };
143
+ if (remote.description)
144
+ entry.description = remote.description;
145
+ if (remote.context_length && remote.context_length >= 1000000) {
146
+ entry.extendedContext = true;
147
+ }
148
+ const thinking = mapThinking(remote.thinking);
149
+ if (thinking)
150
+ entry.thinking = thinking;
151
+ return entry;
152
+ }
153
+ /**
154
+ * Merge remote models with static catalog for a provider.
155
+ * Remote fields override static where present.
156
+ * Static-only fields preserved: broken, deprecated, deprecationReason, issueUrl, tier.
157
+ * Models in static but not in remote → kept.
158
+ * Models in remote but not in static → added.
159
+ */
160
+ function mergeCatalog(provider, remoteModels) {
161
+ const staticCatalog = model_catalog_1.MODEL_CATALOG[provider];
162
+ if (!staticCatalog && remoteModels.length === 0)
163
+ return undefined;
164
+ const displayName = staticCatalog?.displayName || provider;
165
+ const defaultModel = staticCatalog?.defaultModel || (remoteModels[0]?.id ?? '');
166
+ // Build map of static models by lowercase ID for fast lookup
167
+ const staticMap = new Map();
168
+ if (staticCatalog) {
169
+ for (const model of staticCatalog.models) {
170
+ staticMap.set(model.id.toLowerCase(), model);
171
+ }
172
+ }
173
+ // Process remote models: merge with static entries
174
+ const mergedIds = new Set();
175
+ const mergedModels = [];
176
+ for (const remote of remoteModels) {
177
+ const remoteEntry = mapRemoteToModelEntry(remote);
178
+ const staticEntry = staticMap.get(remote.id.toLowerCase());
179
+ mergedIds.add(remote.id.toLowerCase());
180
+ if (staticEntry) {
181
+ // Merge: remote overrides, static fills gaps
182
+ mergedModels.push({
183
+ ...remoteEntry,
184
+ // Preserve static-only fields
185
+ tier: staticEntry.tier,
186
+ broken: staticEntry.broken,
187
+ issueUrl: staticEntry.issueUrl,
188
+ deprecated: staticEntry.deprecated,
189
+ deprecationReason: staticEntry.deprecationReason,
190
+ });
191
+ }
192
+ else {
193
+ mergedModels.push(remoteEntry);
194
+ }
195
+ }
196
+ // Add static-only models not in remote
197
+ if (staticCatalog) {
198
+ for (const model of staticCatalog.models) {
199
+ if (!mergedIds.has(model.id.toLowerCase())) {
200
+ mergedModels.push(model);
201
+ }
202
+ }
203
+ }
204
+ return {
205
+ provider,
206
+ displayName,
207
+ defaultModel,
208
+ models: mergedModels,
209
+ };
210
+ }
211
+ exports.mergeCatalog = mergeCatalog;
212
+ /**
213
+ * Get resolved catalog for a provider.
214
+ * Uses cached remote data if available, falls back to static.
215
+ */
216
+ function getResolvedCatalog(provider) {
217
+ const cached = getCachedCatalog();
218
+ if (cached && cached.providers[provider]) {
219
+ return mergeCatalog(provider, cached.providers[provider]);
220
+ }
221
+ return model_catalog_1.MODEL_CATALOG[provider];
222
+ }
223
+ exports.getResolvedCatalog = getResolvedCatalog;
224
+ /**
225
+ * Get all resolved catalogs (for Dashboard).
226
+ */
227
+ function getAllResolvedCatalogs() {
228
+ const result = {};
229
+ const cached = getCachedCatalog();
230
+ // Get all known providers from both static and cache
231
+ const providers = new Set();
232
+ for (const p of Object.keys(model_catalog_1.MODEL_CATALOG))
233
+ providers.add(p);
234
+ if (cached) {
235
+ for (const p of Object.keys(cached.providers))
236
+ providers.add(p);
237
+ }
238
+ for (const provider of providers) {
239
+ const catalog = getResolvedCatalog(provider);
240
+ if (catalog)
241
+ result[provider] = catalog;
242
+ }
243
+ return result;
244
+ }
245
+ exports.getAllResolvedCatalogs = getAllResolvedCatalogs;
246
+ //# sourceMappingURL=catalog-cache.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"catalog-cache.js","sourceRoot":"","sources":["../../src/cliproxy/catalog-cache.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,39 @@
1
+ /**
2
+ * Extended Context Configuration
3
+ *
4
+ * Handles the [1m] suffix for models supporting 1M token context window.
5
+ * Claude Code recognizes this suffix to enable extended context.
6
+ *
7
+ * Behavior:
8
+ * - Gemini family (gemini-* but NOT gemini-claude-*): Auto-enabled by default
9
+ * - Claude (Anthropic): Opt-in via --1m flag
10
+ */
11
+ /// <reference types="node" />
12
+ import { CLIProxyProvider } from '../types';
13
+ /**
14
+ * Apply extended context suffix to model name.
15
+ * Appends [1m] suffix if not already present.
16
+ *
17
+ * @param model - Model name (may include thinking suffix like "model(high)")
18
+ * @returns Model name with [1m] suffix, e.g., "gemini-2.5-pro[1m]" or "gemini-2.5-pro(high)[1m]"
19
+ */
20
+ export declare function applyExtendedContextSuffix(model: string): string;
21
+ /**
22
+ * Determine if extended context should be applied to a model.
23
+ *
24
+ * @param provider - CLIProxy provider
25
+ * @param modelId - Base model ID (without suffixes)
26
+ * @param extendedContextOverride - CLI override (true = force on, false = force off, undefined = auto)
27
+ * @returns Whether to apply extended context suffix
28
+ */
29
+ export declare function shouldApplyExtendedContext(provider: CLIProxyProvider, modelId: string, extendedContextOverride?: boolean): boolean;
30
+ /**
31
+ * Apply extended context configuration to env vars.
32
+ * Modifies ANTHROPIC_MODEL and tier models with [1m] suffix.
33
+ *
34
+ * @param envVars - Environment variables to modify (mutated in place)
35
+ * @param provider - CLIProxy provider
36
+ * @param extendedContextOverride - CLI override (true = force on, false = force off, undefined = auto)
37
+ */
38
+ export declare function applyExtendedContextConfig(envVars: NodeJS.ProcessEnv, provider: CLIProxyProvider, extendedContextOverride?: boolean): void;
39
+ //# sourceMappingURL=extended-context-config.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"extended-context-config.d.ts","sourceRoot":"","sources":["../../../src/cliproxy/config/extended-context-config.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;;AAEH,OAAO,EAAE,gBAAgB,EAAE,MAAM,UAAU,CAAC;AAO5C;;;;;;GAMG;AACH,wBAAgB,0BAA0B,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAOhE;AAED;;;;;;;GAOG;AACH,wBAAgB,0BAA0B,CACxC,QAAQ,EAAE,gBAAgB,EAC1B,OAAO,EAAE,MAAM,EACf,uBAAuB,CAAC,EAAE,OAAO,GAChC,OAAO,CAsBT;AAED;;;;;;;GAOG;AACH,wBAAgB,0BAA0B,CACxC,OAAO,EAAE,MAAM,CAAC,UAAU,EAC1B,QAAQ,EAAE,gBAAgB,EAC1B,uBAAuB,CAAC,EAAE,OAAO,GAChC,IAAI,CA8BN"}
@@ -0,0 +1,114 @@
1
+ "use strict";
2
+ /**
3
+ * Extended Context Configuration
4
+ *
5
+ * Handles the [1m] suffix for models supporting 1M token context window.
6
+ * Claude Code recognizes this suffix to enable extended context.
7
+ *
8
+ * Behavior:
9
+ * - Gemini family (gemini-* but NOT gemini-claude-*): Auto-enabled by default
10
+ * - Claude (Anthropic): Opt-in via --1m flag
11
+ */
12
+ Object.defineProperty(exports, "__esModule", { value: true });
13
+ exports.applyExtendedContextConfig = exports.shouldApplyExtendedContext = exports.applyExtendedContextSuffix = void 0;
14
+ const model_catalog_1 = require("../model-catalog");
15
+ const ui_1 = require("../../utils/ui");
16
+ /** Extended context suffix recognized by Claude Code */
17
+ const EXTENDED_CONTEXT_SUFFIX = '[1m]';
18
+ /**
19
+ * Apply extended context suffix to model name.
20
+ * Appends [1m] suffix if not already present.
21
+ *
22
+ * @param model - Model name (may include thinking suffix like "model(high)")
23
+ * @returns Model name with [1m] suffix, e.g., "gemini-2.5-pro[1m]" or "gemini-2.5-pro(high)[1m]"
24
+ */
25
+ function applyExtendedContextSuffix(model) {
26
+ if (!model)
27
+ return model;
28
+ // Case-insensitive check to avoid double suffix (handles [1M], [1m], etc.)
29
+ if (model.toLowerCase().endsWith(EXTENDED_CONTEXT_SUFFIX.toLowerCase())) {
30
+ return model;
31
+ }
32
+ return `${model}${EXTENDED_CONTEXT_SUFFIX}`;
33
+ }
34
+ exports.applyExtendedContextSuffix = applyExtendedContextSuffix;
35
+ /**
36
+ * Determine if extended context should be applied to a model.
37
+ *
38
+ * @param provider - CLIProxy provider
39
+ * @param modelId - Base model ID (without suffixes)
40
+ * @param extendedContextOverride - CLI override (true = force on, false = force off, undefined = auto)
41
+ * @returns Whether to apply extended context suffix
42
+ */
43
+ function shouldApplyExtendedContext(provider, modelId, extendedContextOverride) {
44
+ // Explicit override takes priority
45
+ if (extendedContextOverride === true) {
46
+ // User explicitly requested --1m
47
+ const supported = (0, model_catalog_1.supportsExtendedContext)(provider, modelId);
48
+ if (!supported) {
49
+ console.error((0, ui_1.warn)(`Model "${modelId}" does not support 1M extended context. Flag ignored.`));
50
+ }
51
+ return supported;
52
+ }
53
+ if (extendedContextOverride === false) {
54
+ // User explicitly disabled with --no-1m
55
+ return false;
56
+ }
57
+ // Auto behavior: enable for native Gemini models only
58
+ if ((0, model_catalog_1.isNativeGeminiModel)(modelId)) {
59
+ return (0, model_catalog_1.supportsExtendedContext)(provider, modelId);
60
+ }
61
+ // For other models (Claude, etc.), default to off - require explicit --1m
62
+ return false;
63
+ }
64
+ exports.shouldApplyExtendedContext = shouldApplyExtendedContext;
65
+ /**
66
+ * Apply extended context configuration to env vars.
67
+ * Modifies ANTHROPIC_MODEL and tier models with [1m] suffix.
68
+ *
69
+ * @param envVars - Environment variables to modify (mutated in place)
70
+ * @param provider - CLIProxy provider
71
+ * @param extendedContextOverride - CLI override (true = force on, false = force off, undefined = auto)
72
+ */
73
+ function applyExtendedContextConfig(envVars, provider, extendedContextOverride) {
74
+ // Get base model to check support (strip any existing suffixes for lookup)
75
+ const baseModel = envVars.ANTHROPIC_MODEL || '';
76
+ const cleanModelId = stripModelSuffixes(baseModel);
77
+ if (!shouldApplyExtendedContext(provider, cleanModelId, extendedContextOverride)) {
78
+ return;
79
+ }
80
+ // Apply suffix to main model
81
+ if (envVars.ANTHROPIC_MODEL) {
82
+ envVars.ANTHROPIC_MODEL = applyExtendedContextSuffix(envVars.ANTHROPIC_MODEL);
83
+ }
84
+ // Apply to tier models if they support extended context
85
+ const tierModels = [
86
+ 'ANTHROPIC_DEFAULT_OPUS_MODEL',
87
+ 'ANTHROPIC_DEFAULT_SONNET_MODEL',
88
+ 'ANTHROPIC_DEFAULT_HAIKU_MODEL',
89
+ ];
90
+ for (const tierVar of tierModels) {
91
+ const model = envVars[tierVar];
92
+ if (model) {
93
+ const tierCleanId = stripModelSuffixes(model);
94
+ if (shouldApplyExtendedContext(provider, tierCleanId, extendedContextOverride)) {
95
+ envVars[tierVar] = applyExtendedContextSuffix(model);
96
+ }
97
+ }
98
+ }
99
+ }
100
+ exports.applyExtendedContextConfig = applyExtendedContextConfig;
101
+ /**
102
+ * Strip thinking and extended context suffixes from model ID for catalog lookup.
103
+ * Examples:
104
+ * "gemini-2.5-pro(high)[1m]" -> "gemini-2.5-pro"
105
+ * "gemini-2.5-pro(8192)" -> "gemini-2.5-pro"
106
+ * "gemini-2.5-pro" -> "gemini-2.5-pro"
107
+ */
108
+ function stripModelSuffixes(modelId) {
109
+ return modelId
110
+ .trim()
111
+ .replace(/\[1m\]$/i, '') // Remove [1m] suffix
112
+ .replace(/\([^)]+\)$/, ''); // Remove thinking suffix like (high) or (8192)
113
+ }
114
+ //# sourceMappingURL=extended-context-config.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"extended-context-config.js","sourceRoot":"","sources":["../../../src/cliproxy/config/extended-context-config.ts"],"names":[],"mappings":";AAAA;;;;;;;;;GASG;;;AAGH,oDAAgF;AAChF,uCAAsC;AAEtC,wDAAwD;AACxD,MAAM,uBAAuB,GAAG,MAAM,CAAC;AAEvC;;;;;;GAMG;AACH,SAAgB,0BAA0B,CAAC,KAAa;IACtD,IAAI,CAAC,KAAK;QAAE,OAAO,KAAK,CAAC;IACzB,2EAA2E;IAC3E,IAAI,KAAK,CAAC,WAAW,EAAE,CAAC,QAAQ,CAAC,uBAAuB,CAAC,WAAW,EAAE,CAAC,EAAE,CAAC;QACxE,OAAO,KAAK,CAAC;IACf,CAAC;IACD,OAAO,GAAG,KAAK,GAAG,uBAAuB,EAAE,CAAC;AAC9C,CAAC;AAPD,gEAOC;AAED;;;;;;;GAOG;AACH,SAAgB,0BAA0B,CACxC,QAA0B,EAC1B,OAAe,EACf,uBAAiC;IAEjC,mCAAmC;IACnC,IAAI,uBAAuB,KAAK,IAAI,EAAE,CAAC;QACrC,iCAAiC;QACjC,MAAM,SAAS,GAAG,IAAA,uCAAuB,EAAC,QAAQ,EAAE,OAAO,CAAC,CAAC;QAC7D,IAAI,CAAC,SAAS,EAAE,CAAC;YACf,OAAO,CAAC,KAAK,CAAC,IAAA,SAAI,EAAC,UAAU,OAAO,uDAAuD,CAAC,CAAC,CAAC;QAChG,CAAC;QACD,OAAO,SAAS,CAAC;IACnB,CAAC;IACD,IAAI,uBAAuB,KAAK,KAAK,EAAE,CAAC;QACtC,wCAAwC;QACxC,OAAO,KAAK,CAAC;IACf,CAAC;IAED,sDAAsD;IACtD,IAAI,IAAA,mCAAmB,EAAC,OAAO,CAAC,EAAE,CAAC;QACjC,OAAO,IAAA,uCAAuB,EAAC,QAAQ,EAAE,OAAO,CAAC,CAAC;IACpD,CAAC;IAED,0EAA0E;IAC1E,OAAO,KAAK,CAAC;AACf,CAAC;AA1BD,gEA0BC;AAED;;;;;;;GAOG;AACH,SAAgB,0BAA0B,CACxC,OAA0B,EAC1B,QAA0B,EAC1B,uBAAiC;IAEjC,2EAA2E;IAC3E,MAAM,SAAS,GAAG,OAAO,CAAC,eAAe,IAAI,EAAE,CAAC;IAChD,MAAM,YAAY,GAAG,kBAAkB,CAAC,SAAS,CAAC,CAAC;IAEnD,IAAI,CAAC,0BAA0B,CAAC,QAAQ,EAAE,YAAY,EAAE,uBAAuB,CAAC,EAAE,CAAC;QACjF,OAAO;IACT,CAAC;IAED,6BAA6B;IAC7B,IAAI,OAAO,CAAC,eAAe,EAAE,CAAC;QAC5B,OAAO,CAAC,eAAe,GAAG,0BAA0B,CAAC,OAAO,CAAC,eAAe,CAAC,CAAC;IAChF,CAAC;IAED,wDAAwD;IACxD,MAAM,UAAU,GAAG;QACjB,8BAA8B;QAC9B,gCAAgC;QAChC,+BAA+B;KACvB,CAAC;IAEX,KAAK,MAAM,OAAO,IAAI,UAAU,EAAE,CAAC;QACjC,MAAM,KAAK,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC;QAC/B,IAAI,KAAK,EAAE,CAAC;YACV,MAAM,WAAW,GAAG,kBAAkB,CAAC,KAAK,CAAC,CAAC;YAC9C,IAAI,0BAA0B,CAAC,QAAQ,EAAE,WAAW,EAAE,uBAAuB,CAAC,EAAE,CAAC;gBAC/E,OAAO,CAAC,OAAO,CAAC,GAAG,0BAA0B,CAAC,KAAK,CAAC,CAAC;YACvD,CAAC;QACH,CAAC;IACH,CAAC;AACH,CAAC;AAlCD,gEAkCC;AAED;;;;;;GAMG;AACH,SAAS,kBAAkB,CAAC,OAAe;IACzC,OAAO,OAAO;SACX,IAAI,EAAE;SACN,OAAO,CAAC,UAAU,EAAE,EAAE,CAAC,CAAC,qBAAqB;SAC7C,OAAO,CAAC,YAAY,EAAE,EAAE,CAAC,CAAC,CAAC,+CAA+C;AAC/E,CAAC"}
@@ -14,8 +14,9 @@ export declare const CCS_CONTROL_PANEL_SECRET = "ccs";
14
14
  * v3: Logging disabled by default (user opt-in via ~/.ccs/config.yaml)
15
15
  * v4: Added Kiro (AWS) and GitHub Copilot providers
16
16
  * v5: Added disable-cooling: true for stability
17
+ * v6: Added oauth-model-alias with Opus 4.6 support
17
18
  */
18
- export declare const CLIPROXY_CONFIG_VERSION = 5;
19
+ export declare const CLIPROXY_CONFIG_VERSION = 6;
19
20
  /**
20
21
  * Get provider configuration
21
22
  * Model mappings are loaded from config/base-{provider}.settings.json
@@ -37,7 +38,7 @@ export declare function generateConfig(provider: CLIProxyProvider, port?: number
37
38
  export declare function parseUserApiKeys(content: string): string[];
38
39
  /**
39
40
  * Force regenerate config.yaml with latest settings.
40
- * Preserves user-added API keys and port settings.
41
+ * Preserves user-added API keys, claude-api-key section, and port settings.
41
42
  *
42
43
  * @param port - Default port to use if not found in existing config
43
44
  * @returns Path to new config file
@@ -1 +1 @@
1
- {"version":3,"file":"generator.d.ts","sourceRoot":"","sources":["../../../src/cliproxy/config/generator.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAIH,OAAO,EAAE,gBAAgB,EAAE,cAAc,EAAE,MAAM,UAAU,CAAC;AAO5D,gDAAgD;AAChD,eAAO,MAAM,oBAAoB,yBAAyB,CAAC;AAE3D,8DAA8D;AAC9D,eAAO,MAAM,wBAAwB,QAAQ,CAAC;AAE9C;;;;;;;GAOG;AACH,eAAO,MAAM,uBAAuB,IAAI,CAAC;AAczC;;;GAGG;AACH,wBAAgB,iBAAiB,CAAC,QAAQ,EAAE,gBAAgB,GAAG,cAAc,CAe5E;AAwHD;;;;GAIG;AACH,wBAAgB,cAAc,CAC5B,QAAQ,EAAE,gBAAgB,EAC1B,IAAI,GAAE,MAA8B,GACnC,MAAM,CAeR;AAED;;;;;;GAMG;AACH,wBAAgB,gBAAgB,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,EAAE,CAqC1D;AAED;;;;;;GAMG;AACH,wBAAgB,gBAAgB,CAAC,IAAI,GAAE,MAA8B,GAAG,MAAM,CAmC7E;AAED;;;GAGG;AACH,wBAAgB,uBAAuB,IAAI,OAAO,CAoBjD;AAED;;GAEG;AACH,wBAAgB,YAAY,CAAC,IAAI,GAAE,MAA8B,GAAG,OAAO,CAE1E;AAED;;GAEG;AACH,wBAAgB,mBAAmB,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI,CAKtD;AAED;;GAEG;AACH,wBAAgB,YAAY,IAAI,IAAI,CAEnC"}
1
+ {"version":3,"file":"generator.d.ts","sourceRoot":"","sources":["../../../src/cliproxy/config/generator.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAIH,OAAO,EAAE,gBAAgB,EAAE,cAAc,EAAE,MAAM,UAAU,CAAC;AAO5D,gDAAgD;AAChD,eAAO,MAAM,oBAAoB,yBAAyB,CAAC;AAE3D,8DAA8D;AAC9D,eAAO,MAAM,wBAAwB,QAAQ,CAAC;AAE9C;;;;;;;;GAQG;AACH,eAAO,MAAM,uBAAuB,IAAI,CAAC;AA8BzC;;;GAGG;AACH,wBAAgB,iBAAiB,CAAC,QAAQ,EAAE,gBAAgB,GAAG,cAAc,CAe5E;AA4JD;;;;GAIG;AACH,wBAAgB,cAAc,CAC5B,QAAQ,EAAE,gBAAgB,EAC1B,IAAI,GAAE,MAA8B,GACnC,MAAM,CAeR;AAED;;;;;;GAMG;AACH,wBAAgB,gBAAgB,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,EAAE,CAqC1D;AA6BD;;;;;;GAMG;AACH,wBAAgB,gBAAgB,CAAC,IAAI,GAAE,MAA8B,GAAG,MAAM,CAiD7E;AAED;;;GAGG;AACH,wBAAgB,uBAAuB,IAAI,OAAO,CAoBjD;AAED;;GAEG;AACH,wBAAgB,YAAY,CAAC,IAAI,GAAE,MAA8B,GAAG,OAAO,CAE1E;AAED;;GAEG;AACH,wBAAgB,mBAAmB,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI,CAKtD;AAED;;GAEG;AACH,wBAAgB,YAAY,IAAI,IAAI,CAEnC"}