@kaitranntt/ccs 6.4.0-dev.1 → 6.4.0-dev.3

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 (83) hide show
  1. package/VERSION +1 -1
  2. package/dist/auth/profile-detector.d.ts +5 -1
  3. package/dist/auth/profile-detector.d.ts.map +1 -1
  4. package/dist/auth/profile-detector.js +31 -0
  5. package/dist/auth/profile-detector.js.map +1 -1
  6. package/dist/ccs.d.ts +0 -8
  7. package/dist/ccs.d.ts.map +1 -1
  8. package/dist/ccs.js +92 -11
  9. package/dist/ccs.js.map +1 -1
  10. package/dist/commands/copilot-command.d.ts +10 -0
  11. package/dist/commands/copilot-command.d.ts.map +1 -0
  12. package/dist/commands/copilot-command.js +227 -0
  13. package/dist/commands/copilot-command.js.map +1 -0
  14. package/dist/commands/help-command.d.ts.map +1 -1
  15. package/dist/commands/help-command.js +16 -0
  16. package/dist/commands/help-command.js.map +1 -1
  17. package/dist/config/reserved-names.d.ts +1 -1
  18. package/dist/config/reserved-names.d.ts.map +1 -1
  19. package/dist/config/reserved-names.js +2 -0
  20. package/dist/config/reserved-names.js.map +1 -1
  21. package/dist/config/unified-config-loader.d.ts.map +1 -1
  22. package/dist/config/unified-config-loader.js +30 -0
  23. package/dist/config/unified-config-loader.js.map +1 -1
  24. package/dist/config/unified-config-types.d.ts +45 -2
  25. package/dist/config/unified-config-types.d.ts.map +1 -1
  26. package/dist/config/unified-config-types.js +18 -2
  27. package/dist/config/unified-config-types.js.map +1 -1
  28. package/dist/copilot/copilot-auth.d.ts +52 -0
  29. package/dist/copilot/copilot-auth.d.ts.map +1 -0
  30. package/dist/copilot/copilot-auth.js +201 -0
  31. package/dist/copilot/copilot-auth.js.map +1 -0
  32. package/dist/copilot/copilot-daemon.d.ts +36 -0
  33. package/dist/copilot/copilot-daemon.d.ts.map +1 -0
  34. package/dist/copilot/copilot-daemon.js +237 -0
  35. package/dist/copilot/copilot-daemon.js.map +1 -0
  36. package/dist/copilot/copilot-executor.d.ts +26 -0
  37. package/dist/copilot/copilot-executor.d.ts.map +1 -0
  38. package/dist/copilot/copilot-executor.js +144 -0
  39. package/dist/copilot/copilot-executor.js.map +1 -0
  40. package/dist/copilot/copilot-models.d.ts +34 -0
  41. package/dist/copilot/copilot-models.d.ts.map +1 -0
  42. package/dist/copilot/copilot-models.js +261 -0
  43. package/dist/copilot/copilot-models.js.map +1 -0
  44. package/dist/copilot/copilot-package-manager.d.ts +93 -0
  45. package/dist/copilot/copilot-package-manager.d.ts.map +1 -0
  46. package/dist/copilot/copilot-package-manager.js +488 -0
  47. package/dist/copilot/copilot-package-manager.js.map +1 -0
  48. package/dist/copilot/index.d.ts +13 -0
  49. package/dist/copilot/index.d.ts.map +1 -0
  50. package/dist/copilot/index.js +63 -0
  51. package/dist/copilot/index.js.map +1 -0
  52. package/dist/copilot/types.d.ts +65 -0
  53. package/dist/copilot/types.d.ts.map +1 -0
  54. package/dist/copilot/types.js +8 -0
  55. package/dist/copilot/types.js.map +1 -0
  56. package/dist/ui/assets/{accounts-mGEFDVQS.js → accounts-OHf-47mH.js} +1 -1
  57. package/dist/ui/assets/{analytics-3363PLPv.js → analytics-C4uOxyuU.js} +1 -1
  58. package/dist/ui/assets/{api-BUpOap35.js → api-B_mbwU9C.js} +1 -1
  59. package/dist/ui/assets/{card-BFvdp_30.js → card-CR0u1y_L.js} +1 -1
  60. package/dist/ui/assets/{cliproxy-control-panel-C9y82uCL.js → cliproxy-control-panel-DIIw97Bs.js} +1 -1
  61. package/dist/ui/assets/{cliproxy-CeRFx3Vh.js → cliproxy-tXwMpEJd.js} +1 -1
  62. package/dist/ui/assets/{code-editor-CsXy1qcC.js → code-editor-CVohe7u9.js} +1 -1
  63. package/dist/ui/assets/copilot-C-eWI9Ce.js +4 -0
  64. package/dist/ui/assets/health-Dh8bSHe-.js +1 -0
  65. package/dist/ui/assets/icons-WTNLz24z.js +1 -0
  66. package/dist/ui/assets/{index-mCIF4r_M.js → index-BXPLu3zJ.js} +10 -10
  67. package/dist/ui/assets/index-D2qNwUdc.css +1 -0
  68. package/dist/ui/assets/settings-Bi8Aw4yN.js +1 -0
  69. package/dist/ui/assets/shared-DQlPCpix.js +1 -0
  70. package/dist/ui/assets/switch-pOvJh4Ez.js +1 -0
  71. package/dist/ui/index.html +3 -3
  72. package/dist/utils/update-checker.d.ts +14 -2
  73. package/dist/utils/update-checker.d.ts.map +1 -1
  74. package/dist/utils/update-checker.js +39 -9
  75. package/dist/utils/update-checker.js.map +1 -1
  76. package/dist/web-server/routes.js +275 -0
  77. package/dist/web-server/routes.js.map +1 -1
  78. package/package.json +1 -1
  79. package/dist/ui/assets/health-DK1m5XWA.js +0 -1
  80. package/dist/ui/assets/icons-B9AtZK5c.js +0 -1
  81. package/dist/ui/assets/index-B_6ILhjh.css +0 -1
  82. package/dist/ui/assets/settings-COJXs9MQ.js +0 -1
  83. package/dist/ui/assets/shared-DL1VmXYB.js +0 -1
@@ -0,0 +1,261 @@
1
+ "use strict";
2
+ /**
3
+ * Copilot Model Catalog
4
+ *
5
+ * Manages available models from copilot-api.
6
+ * Based on GitHub Copilot supported models:
7
+ * https://docs.github.com/copilot/reference/ai-models/supported-models
8
+ */
9
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ var desc = Object.getOwnPropertyDescriptor(m, k);
12
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
13
+ desc = { enumerable: true, get: function() { return m[k]; } };
14
+ }
15
+ Object.defineProperty(o, k2, desc);
16
+ }) : (function(o, m, k, k2) {
17
+ if (k2 === undefined) k2 = k;
18
+ o[k2] = m[k];
19
+ }));
20
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
21
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
22
+ }) : function(o, v) {
23
+ o["default"] = v;
24
+ });
25
+ var __importStar = (this && this.__importStar) || function (mod) {
26
+ if (mod && mod.__esModule) return mod;
27
+ var result = {};
28
+ if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
29
+ __setModuleDefault(result, mod);
30
+ return result;
31
+ };
32
+ Object.defineProperty(exports, "__esModule", { value: true });
33
+ exports.getDefaultModel = exports.getAvailableModels = exports.fetchModelsFromDaemon = exports.DEFAULT_COPILOT_MODELS = void 0;
34
+ const http = __importStar(require("http"));
35
+ /**
36
+ * Default models available through copilot-api.
37
+ * Used as fallback when API is not reachable.
38
+ * Source: GitHub Copilot Supported Models (Dec 2025)
39
+ *
40
+ * Plan tiers: free, pro, pro+, business, enterprise
41
+ * Multipliers: 0 = free tier, 0.25-0.33 = cheap, 1 = standard, 3-10 = premium
42
+ */
43
+ exports.DEFAULT_COPILOT_MODELS = [
44
+ // Anthropic Models - All require paid Copilot subscription
45
+ {
46
+ id: 'claude-sonnet-4.5',
47
+ name: 'Claude Sonnet 4.5',
48
+ provider: 'anthropic',
49
+ minPlan: 'pro',
50
+ multiplier: 1,
51
+ },
52
+ {
53
+ id: 'claude-sonnet-4',
54
+ name: 'Claude Sonnet 4',
55
+ provider: 'anthropic',
56
+ minPlan: 'pro',
57
+ multiplier: 1,
58
+ },
59
+ {
60
+ id: 'claude-opus-4.5',
61
+ name: 'Claude Opus 4.5',
62
+ provider: 'anthropic',
63
+ minPlan: 'pro',
64
+ multiplier: 3,
65
+ preview: true,
66
+ },
67
+ {
68
+ id: 'claude-opus-4.1',
69
+ name: 'Claude Opus 4.1',
70
+ provider: 'anthropic',
71
+ minPlan: 'pro',
72
+ multiplier: 10,
73
+ },
74
+ {
75
+ id: 'claude-haiku-4.5',
76
+ name: 'Claude Haiku 4.5',
77
+ provider: 'anthropic',
78
+ minPlan: 'pro', // Requires paid Copilot subscription
79
+ multiplier: 0.33,
80
+ },
81
+ // OpenAI Models
82
+ {
83
+ id: 'gpt-5.2',
84
+ name: 'GPT-5.2',
85
+ provider: 'openai',
86
+ minPlan: 'pro',
87
+ multiplier: 1,
88
+ preview: true,
89
+ },
90
+ {
91
+ id: 'gpt-5.1-codex-max',
92
+ name: 'GPT-5.1 Codex Max',
93
+ provider: 'openai',
94
+ minPlan: 'pro',
95
+ multiplier: 1,
96
+ },
97
+ { id: 'gpt-5.1-codex', name: 'GPT-5.1 Codex', provider: 'openai', minPlan: 'pro', multiplier: 1 },
98
+ {
99
+ id: 'gpt-5.1-codex-mini',
100
+ name: 'GPT-5.1 Codex Mini',
101
+ provider: 'openai',
102
+ minPlan: 'pro',
103
+ multiplier: 0.33,
104
+ preview: true,
105
+ },
106
+ { id: 'gpt-5.1', name: 'GPT-5.1', provider: 'openai', minPlan: 'pro', multiplier: 1 },
107
+ {
108
+ id: 'gpt-5-codex',
109
+ name: 'GPT-5 Codex',
110
+ provider: 'openai',
111
+ minPlan: 'pro',
112
+ multiplier: 1,
113
+ preview: true,
114
+ },
115
+ { id: 'gpt-5', name: 'GPT-5', provider: 'openai', minPlan: 'pro', multiplier: 1 },
116
+ { id: 'gpt-5-mini', name: 'GPT-5 Mini', provider: 'openai', minPlan: 'free', multiplier: 0 },
117
+ {
118
+ id: 'gpt-4.1',
119
+ name: 'GPT-4.1',
120
+ provider: 'openai',
121
+ isDefault: true,
122
+ minPlan: 'free',
123
+ multiplier: 0,
124
+ },
125
+ // Google Models
126
+ {
127
+ id: 'gemini-3-pro',
128
+ name: 'Gemini 3 Pro',
129
+ provider: 'openai',
130
+ minPlan: 'pro',
131
+ multiplier: 1,
132
+ preview: true,
133
+ },
134
+ {
135
+ id: 'gemini-3-flash',
136
+ name: 'Gemini 3 Flash',
137
+ provider: 'openai',
138
+ minPlan: 'pro',
139
+ multiplier: 0.33,
140
+ preview: true,
141
+ },
142
+ {
143
+ id: 'gemini-2.5-pro',
144
+ name: 'Gemini 2.5 Pro',
145
+ provider: 'openai',
146
+ minPlan: 'pro',
147
+ multiplier: 1,
148
+ },
149
+ // xAI Models
150
+ {
151
+ id: 'grok-code-fast-1',
152
+ name: 'Grok Code Fast 1',
153
+ provider: 'openai',
154
+ minPlan: 'pro',
155
+ multiplier: 0.25,
156
+ },
157
+ // Fine-tuned Models
158
+ {
159
+ id: 'raptor-mini',
160
+ name: 'Raptor Mini',
161
+ provider: 'openai',
162
+ minPlan: 'free',
163
+ multiplier: 0,
164
+ preview: true,
165
+ },
166
+ ];
167
+ /**
168
+ * Fetch available models from running copilot-api daemon.
169
+ *
170
+ * @param port The port copilot-api is running on
171
+ * @returns List of available models
172
+ */
173
+ async function fetchModelsFromDaemon(port) {
174
+ return new Promise((resolve) => {
175
+ const req = http.request({
176
+ // Use 127.0.0.1 instead of localhost for more reliable local connections
177
+ hostname: '127.0.0.1',
178
+ port,
179
+ path: '/v1/models',
180
+ method: 'GET',
181
+ timeout: 5000,
182
+ }, (res) => {
183
+ let data = '';
184
+ res.on('data', (chunk) => {
185
+ data += chunk;
186
+ });
187
+ res.on('end', () => {
188
+ try {
189
+ const response = JSON.parse(data);
190
+ if (response.data && Array.isArray(response.data)) {
191
+ const models = response.data.map((m) => ({
192
+ id: m.id,
193
+ name: formatModelName(m.id),
194
+ provider: detectProvider(m.id),
195
+ isDefault: m.id === 'gpt-4.1', // Free tier default
196
+ }));
197
+ resolve(models.length > 0 ? models : exports.DEFAULT_COPILOT_MODELS);
198
+ }
199
+ else {
200
+ resolve(exports.DEFAULT_COPILOT_MODELS);
201
+ }
202
+ }
203
+ catch {
204
+ resolve(exports.DEFAULT_COPILOT_MODELS);
205
+ }
206
+ });
207
+ });
208
+ req.on('error', () => {
209
+ resolve(exports.DEFAULT_COPILOT_MODELS);
210
+ });
211
+ req.on('timeout', () => {
212
+ req.destroy();
213
+ resolve(exports.DEFAULT_COPILOT_MODELS);
214
+ });
215
+ req.end();
216
+ });
217
+ }
218
+ exports.fetchModelsFromDaemon = fetchModelsFromDaemon;
219
+ /**
220
+ * Get available models (from daemon or defaults).
221
+ */
222
+ async function getAvailableModels(port) {
223
+ return fetchModelsFromDaemon(port);
224
+ }
225
+ exports.getAvailableModels = getAvailableModels;
226
+ /**
227
+ * Get the default model.
228
+ * Uses gpt-4.1 as it's available on free tier.
229
+ */
230
+ function getDefaultModel() {
231
+ return 'gpt-4.1';
232
+ }
233
+ exports.getDefaultModel = getDefaultModel;
234
+ /**
235
+ * Detect provider from model ID.
236
+ */
237
+ function detectProvider(modelId) {
238
+ if (modelId.includes('claude'))
239
+ return 'anthropic';
240
+ return 'openai';
241
+ }
242
+ /**
243
+ * Format model ID to human-readable name.
244
+ * Includes badges for preview and plan tier.
245
+ */
246
+ function formatModelName(modelId) {
247
+ // Find model in catalog for metadata
248
+ const model = exports.DEFAULT_COPILOT_MODELS.find((m) => m.id === modelId);
249
+ if (model) {
250
+ let name = model.name;
251
+ if (model.preview)
252
+ name += ' (Preview)';
253
+ return name;
254
+ }
255
+ // Fallback: convert kebab-case to title case
256
+ return modelId
257
+ .split('-')
258
+ .map((word) => word.charAt(0).toUpperCase() + word.slice(1))
259
+ .join(' ');
260
+ }
261
+ //# sourceMappingURL=copilot-models.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"copilot-models.js","sourceRoot":"","sources":["../../src/copilot/copilot-models.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,93 @@
1
+ /**
2
+ * Copilot Package Manager
3
+ *
4
+ * Self-managed npm package installation for copilot-api:
5
+ * - Installs copilot-api locally to ~/.ccs/copilot/
6
+ * - Auto-updates to latest version (like CLIProxy binary manager)
7
+ * - Version caching to avoid hitting npm registry on every run
8
+ * - Retry logic with exponential backoff
9
+ *
10
+ * Pattern: Mirrors CLIProxy BinaryManager but for npm packages
11
+ */
12
+ /** Update check result */
13
+ interface UpdateCheckResult {
14
+ hasUpdate: boolean;
15
+ currentVersion: string;
16
+ latestVersion: string;
17
+ fromCache: boolean;
18
+ }
19
+ /**
20
+ * Get copilot base directory
21
+ * All copilot-related files are stored under ~/.ccs/copilot/
22
+ */
23
+ export declare function getCopilotDir(): string;
24
+ /**
25
+ * Get path to copilot-api binary
26
+ */
27
+ export declare function getCopilotApiBinPath(): string;
28
+ /**
29
+ * Get path to version pin file
30
+ */
31
+ export declare function getVersionPinPath(): string;
32
+ /**
33
+ * Check if copilot-api is installed locally
34
+ */
35
+ export declare function isCopilotApiInstalled(): boolean;
36
+ /**
37
+ * Get installed version from .version file
38
+ */
39
+ export declare function getInstalledVersion(): string | null;
40
+ /**
41
+ * Get pinned version if one exists
42
+ */
43
+ export declare function getPinnedVersion(): string | null;
44
+ /**
45
+ * Save pinned version
46
+ */
47
+ export declare function savePinnedVersion(version: string): void;
48
+ /**
49
+ * Clear pinned version
50
+ */
51
+ export declare function clearPinnedVersion(): void;
52
+ /**
53
+ * Check for updates
54
+ */
55
+ export declare function checkForUpdates(): Promise<UpdateCheckResult>;
56
+ /**
57
+ * Ensure copilot-api is available (install if missing, update if outdated)
58
+ * @returns Path to copilot-api binary
59
+ */
60
+ export declare function ensureCopilotApi(verbose?: boolean): Promise<string>;
61
+ /**
62
+ * Install a specific version of copilot-api
63
+ */
64
+ export declare function installCopilotApiVersion(version: string, _verbose?: boolean): Promise<void>;
65
+ /**
66
+ * Uninstall copilot-api (remove ~/.ccs/copilot directory)
67
+ */
68
+ export declare function uninstallCopilotApi(): void;
69
+ /**
70
+ * Get copilot-api info
71
+ */
72
+ export declare function getCopilotApiInfo(): {
73
+ installed: boolean;
74
+ version: string | null;
75
+ path: string;
76
+ pinnedVersion: string | null;
77
+ };
78
+ declare const _default: {
79
+ getCopilotDir: typeof getCopilotDir;
80
+ getCopilotApiBinPath: typeof getCopilotApiBinPath;
81
+ isCopilotApiInstalled: typeof isCopilotApiInstalled;
82
+ getInstalledVersion: typeof getInstalledVersion;
83
+ getPinnedVersion: typeof getPinnedVersion;
84
+ savePinnedVersion: typeof savePinnedVersion;
85
+ clearPinnedVersion: typeof clearPinnedVersion;
86
+ checkForUpdates: typeof checkForUpdates;
87
+ ensureCopilotApi: typeof ensureCopilotApi;
88
+ installCopilotApiVersion: typeof installCopilotApiVersion;
89
+ uninstallCopilotApi: typeof uninstallCopilotApi;
90
+ getCopilotApiInfo: typeof getCopilotApiInfo;
91
+ };
92
+ export default _default;
93
+ //# sourceMappingURL=copilot-package-manager.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"copilot-package-manager.d.ts","sourceRoot":"","sources":["../../src/copilot/copilot-package-manager.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAwBH,0BAA0B;AAC1B,UAAU,iBAAiB;IACzB,SAAS,EAAE,OAAO,CAAC;IACnB,cAAc,EAAE,MAAM,CAAC;IACvB,aAAa,EAAE,MAAM,CAAC;IACtB,SAAS,EAAE,OAAO,CAAC;CACpB;AASD;;;GAGG;AACH,wBAAgB,aAAa,IAAI,MAAM,CAEtC;AAED;;GAEG;AACH,wBAAgB,oBAAoB,IAAI,MAAM,CAG7C;AAuBD;;GAEG;AACH,wBAAgB,iBAAiB,IAAI,MAAM,CAE1C;AAED;;GAEG;AACH,wBAAgB,qBAAqB,IAAI,OAAO,CAE/C;AAED;;GAEG;AACH,wBAAgB,mBAAmB,IAAI,MAAM,GAAG,IAAI,CAUnD;AA+FD;;GAEG;AACH,wBAAgB,gBAAgB,IAAI,MAAM,GAAG,IAAI,CAUhD;AAED;;GAEG;AACH,wBAAgB,iBAAiB,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI,CAQvD;AAED;;GAEG;AACH,wBAAgB,kBAAkB,IAAI,IAAI,CASzC;AAED;;GAEG;AACH,wBAAsB,eAAe,IAAI,OAAO,CAAC,iBAAiB,CAAC,CAkClE;AAkED;;;GAGG;AACH,wBAAsB,gBAAgB,CAAC,OAAO,UAAQ,GAAG,OAAO,CAAC,MAAM,CAAC,CA4FvE;AAED;;GAEG;AACH,wBAAsB,wBAAwB,CAAC,OAAO,EAAE,MAAM,EAAE,QAAQ,UAAQ,GAAG,OAAO,CAAC,IAAI,CAAC,CAkB/F;AAED;;GAEG;AACH,wBAAgB,mBAAmB,IAAI,IAAI,CAK1C;AAED;;GAEG;AACH,wBAAgB,iBAAiB,IAAI;IACnC,SAAS,EAAE,OAAO,CAAC;IACnB,OAAO,EAAE,MAAM,GAAG,IAAI,CAAC;IACvB,IAAI,EAAE,MAAM,CAAC;IACb,aAAa,EAAE,MAAM,GAAG,IAAI,CAAC;CAC9B,CAOA;;;;;;;;;;;;;;;AAED,wBAaE"}