@kaitranntt/ccs 6.4.0 → 6.5.0-dev.1
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.
- package/VERSION +1 -1
- package/dist/auth/profile-detector.d.ts +5 -1
- package/dist/auth/profile-detector.d.ts.map +1 -1
- package/dist/auth/profile-detector.js +31 -0
- package/dist/auth/profile-detector.js.map +1 -1
- package/dist/ccs.d.ts +0 -8
- package/dist/ccs.d.ts.map +1 -1
- package/dist/ccs.js +90 -11
- package/dist/ccs.js.map +1 -1
- package/dist/commands/copilot-command.d.ts +10 -0
- package/dist/commands/copilot-command.d.ts.map +1 -0
- package/dist/commands/copilot-command.js +227 -0
- package/dist/commands/copilot-command.js.map +1 -0
- package/dist/commands/help-command.d.ts.map +1 -1
- package/dist/commands/help-command.js +16 -0
- package/dist/commands/help-command.js.map +1 -1
- package/dist/commands/update-command.d.ts +1 -1
- package/dist/commands/update-command.d.ts.map +1 -1
- package/dist/commands/update-command.js +24 -132
- package/dist/commands/update-command.js.map +1 -1
- package/dist/config/reserved-names.d.ts +1 -1
- package/dist/config/reserved-names.d.ts.map +1 -1
- package/dist/config/reserved-names.js +2 -0
- package/dist/config/reserved-names.js.map +1 -1
- package/dist/config/unified-config-loader.d.ts.map +1 -1
- package/dist/config/unified-config-loader.js +30 -0
- package/dist/config/unified-config-loader.js.map +1 -1
- package/dist/config/unified-config-types.d.ts +45 -2
- package/dist/config/unified-config-types.d.ts.map +1 -1
- package/dist/config/unified-config-types.js +18 -2
- package/dist/config/unified-config-types.js.map +1 -1
- package/dist/copilot/copilot-auth.d.ts +52 -0
- package/dist/copilot/copilot-auth.d.ts.map +1 -0
- package/dist/copilot/copilot-auth.js +201 -0
- package/dist/copilot/copilot-auth.js.map +1 -0
- package/dist/copilot/copilot-daemon.d.ts +36 -0
- package/dist/copilot/copilot-daemon.d.ts.map +1 -0
- package/dist/copilot/copilot-daemon.js +237 -0
- package/dist/copilot/copilot-daemon.js.map +1 -0
- package/dist/copilot/copilot-executor.d.ts +26 -0
- package/dist/copilot/copilot-executor.d.ts.map +1 -0
- package/dist/copilot/copilot-executor.js +144 -0
- package/dist/copilot/copilot-executor.js.map +1 -0
- package/dist/copilot/copilot-models.d.ts +34 -0
- package/dist/copilot/copilot-models.d.ts.map +1 -0
- package/dist/copilot/copilot-models.js +261 -0
- package/dist/copilot/copilot-models.js.map +1 -0
- package/dist/copilot/copilot-package-manager.d.ts +93 -0
- package/dist/copilot/copilot-package-manager.d.ts.map +1 -0
- package/dist/copilot/copilot-package-manager.js +488 -0
- package/dist/copilot/copilot-package-manager.js.map +1 -0
- package/dist/copilot/index.d.ts +13 -0
- package/dist/copilot/index.d.ts.map +1 -0
- package/dist/copilot/index.js +63 -0
- package/dist/copilot/index.js.map +1 -0
- package/dist/copilot/types.d.ts +65 -0
- package/dist/copilot/types.d.ts.map +1 -0
- package/dist/copilot/types.js +8 -0
- package/dist/copilot/types.js.map +1 -0
- package/dist/ui/assets/{accounts-aPbCYgXy.js → accounts-OHf-47mH.js} +1 -1
- package/dist/ui/assets/{analytics-ByHzJ4fO.js → analytics-C4uOxyuU.js} +1 -1
- package/dist/ui/assets/{api-DRVliui6.js → api-B_mbwU9C.js} +1 -1
- package/dist/ui/assets/{card-CkFFTnqL.js → card-CR0u1y_L.js} +1 -1
- package/dist/ui/assets/{cliproxy-control-panel-C9y82uCL.js → cliproxy-control-panel-DIIw97Bs.js} +1 -1
- package/dist/ui/assets/{cliproxy-CJ5njiYX.js → cliproxy-tXwMpEJd.js} +1 -1
- package/dist/ui/assets/{code-editor-D1jkWlaX.js → code-editor-CVohe7u9.js} +1 -1
- package/dist/ui/assets/copilot-C-eWI9Ce.js +4 -0
- package/dist/ui/assets/health-Dh8bSHe-.js +1 -0
- package/dist/ui/assets/icons-WTNLz24z.js +1 -0
- package/dist/ui/assets/index-BXPLu3zJ.js +44 -0
- package/dist/ui/assets/index-D2qNwUdc.css +1 -0
- package/dist/ui/assets/settings-Bi8Aw4yN.js +1 -0
- package/dist/ui/assets/shared-DQlPCpix.js +1 -0
- package/dist/ui/assets/switch-pOvJh4Ez.js +1 -0
- package/dist/ui/index.html +3 -3
- package/dist/utils/package-manager-detector.d.ts +1 -4
- package/dist/utils/package-manager-detector.d.ts.map +1 -1
- package/dist/utils/package-manager-detector.js +2 -61
- package/dist/utils/package-manager-detector.js.map +1 -1
- package/dist/utils/update-checker.d.ts +14 -2
- package/dist/utils/update-checker.d.ts.map +1 -1
- package/dist/utils/update-checker.js +39 -9
- package/dist/utils/update-checker.js.map +1 -1
- package/dist/web-server/routes.js +275 -0
- package/dist/web-server/routes.js.map +1 -1
- package/package.json +1 -1
- package/scripts/worker.js +18 -38
- package/dist/ui/assets/health-B4BNP_1z.js +0 -1
- package/dist/ui/assets/icons-B9AtZK5c.js +0 -1
- package/dist/ui/assets/index-B_6ILhjh.css +0 -1
- package/dist/ui/assets/index-EyLCmFok.js +0 -44
- package/dist/ui/assets/settings-DcAQTmWn.js +0 -1
- package/dist/ui/assets/shared-DJshj6er.js +0 -1
|
@@ -0,0 +1,144 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* Copilot Executor
|
|
4
|
+
*
|
|
5
|
+
* Main execution flow for running Claude Code with copilot-api proxy.
|
|
6
|
+
* Uses local installation from ~/.ccs/copilot/ (managed by copilot-package-manager).
|
|
7
|
+
*/
|
|
8
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
9
|
+
exports.executeCopilotProfile = exports.generateCopilotEnv = exports.getCopilotStatus = void 0;
|
|
10
|
+
const child_process_1 = require("child_process");
|
|
11
|
+
const copilot_auth_1 = require("./copilot-auth");
|
|
12
|
+
const copilot_daemon_1 = require("./copilot-daemon");
|
|
13
|
+
const copilot_package_manager_1 = require("./copilot-package-manager");
|
|
14
|
+
/**
|
|
15
|
+
* Get full copilot status (auth + daemon).
|
|
16
|
+
*/
|
|
17
|
+
async function getCopilotStatus(config) {
|
|
18
|
+
const [auth, daemonRunning] = await Promise.all([
|
|
19
|
+
(0, copilot_auth_1.checkAuthStatus)(),
|
|
20
|
+
(0, copilot_daemon_1.isDaemonRunning)(config.port),
|
|
21
|
+
]);
|
|
22
|
+
return {
|
|
23
|
+
auth,
|
|
24
|
+
daemon: {
|
|
25
|
+
running: daemonRunning,
|
|
26
|
+
port: config.port,
|
|
27
|
+
},
|
|
28
|
+
};
|
|
29
|
+
}
|
|
30
|
+
exports.getCopilotStatus = getCopilotStatus;
|
|
31
|
+
/**
|
|
32
|
+
* Generate environment variables for Claude Code to use copilot-api.
|
|
33
|
+
* Uses model mapping for opus/sonnet/haiku tiers if configured.
|
|
34
|
+
*/
|
|
35
|
+
function generateCopilotEnv(config) {
|
|
36
|
+
// Use mapped models if configured, otherwise fall back to default model
|
|
37
|
+
const opusModel = config.opus_model || config.model;
|
|
38
|
+
const sonnetModel = config.sonnet_model || config.model;
|
|
39
|
+
const haikuModel = config.haiku_model || config.model;
|
|
40
|
+
// Use 127.0.0.1 instead of localhost for more reliable local connections
|
|
41
|
+
// (bypasses DNS resolution and potential IPv6 issues)
|
|
42
|
+
return {
|
|
43
|
+
ANTHROPIC_BASE_URL: `http://127.0.0.1:${config.port}`,
|
|
44
|
+
ANTHROPIC_AUTH_TOKEN: 'dummy', // copilot-api handles auth internally
|
|
45
|
+
ANTHROPIC_MODEL: config.model,
|
|
46
|
+
// Model tier mapping - allows different models for opus/sonnet/haiku
|
|
47
|
+
ANTHROPIC_DEFAULT_OPUS_MODEL: opusModel,
|
|
48
|
+
ANTHROPIC_DEFAULT_SONNET_MODEL: sonnetModel,
|
|
49
|
+
ANTHROPIC_SMALL_FAST_MODEL: haikuModel,
|
|
50
|
+
ANTHROPIC_DEFAULT_HAIKU_MODEL: haikuModel,
|
|
51
|
+
// Disable non-essential traffic to avoid rate limiting
|
|
52
|
+
DISABLE_NON_ESSENTIAL_MODEL_CALLS: '1',
|
|
53
|
+
CLAUDE_CODE_DISABLE_NONESSENTIAL_TRAFFIC: '1',
|
|
54
|
+
};
|
|
55
|
+
}
|
|
56
|
+
exports.generateCopilotEnv = generateCopilotEnv;
|
|
57
|
+
/**
|
|
58
|
+
* Execute Claude Code with copilot-api proxy.
|
|
59
|
+
*
|
|
60
|
+
* @param config Copilot configuration
|
|
61
|
+
* @param claudeArgs Arguments to pass to Claude CLI
|
|
62
|
+
* @returns Exit code
|
|
63
|
+
*/
|
|
64
|
+
async function executeCopilotProfile(config, claudeArgs) {
|
|
65
|
+
// Ensure copilot-api is installed (auto-install if missing, auto-update if outdated)
|
|
66
|
+
try {
|
|
67
|
+
await (0, copilot_package_manager_1.ensureCopilotApi)();
|
|
68
|
+
}
|
|
69
|
+
catch (error) {
|
|
70
|
+
console.error('[X] Failed to install copilot-api.');
|
|
71
|
+
console.error('');
|
|
72
|
+
console.error(`Error: ${error.message}`);
|
|
73
|
+
console.error('');
|
|
74
|
+
console.error('Try installing manually:');
|
|
75
|
+
console.error(' npm install -g copilot-api');
|
|
76
|
+
return 1;
|
|
77
|
+
}
|
|
78
|
+
// Check if copilot-api is installed (should be after ensureCopilotApi)
|
|
79
|
+
if (!(0, copilot_auth_1.isCopilotApiInstalled)()) {
|
|
80
|
+
console.error('[X] copilot-api is not installed.');
|
|
81
|
+
console.error('');
|
|
82
|
+
console.error('Install with: ccs copilot --install');
|
|
83
|
+
return 1;
|
|
84
|
+
}
|
|
85
|
+
// Check authentication
|
|
86
|
+
const authStatus = await (0, copilot_auth_1.checkAuthStatus)();
|
|
87
|
+
if (!authStatus.authenticated) {
|
|
88
|
+
console.error('[X] Not authenticated with GitHub.');
|
|
89
|
+
console.error('');
|
|
90
|
+
console.error('Run: npx copilot-api auth');
|
|
91
|
+
console.error('Or: ccs copilot auth');
|
|
92
|
+
return 1;
|
|
93
|
+
}
|
|
94
|
+
// Check if daemon is running or needs to be started
|
|
95
|
+
let daemonRunning = await (0, copilot_daemon_1.isDaemonRunning)(config.port);
|
|
96
|
+
if (!daemonRunning) {
|
|
97
|
+
if (config.auto_start) {
|
|
98
|
+
console.log('[i] Starting copilot-api daemon...');
|
|
99
|
+
const result = await (0, copilot_daemon_1.startDaemon)(config);
|
|
100
|
+
if (!result.success) {
|
|
101
|
+
console.error(`[X] Failed to start daemon: ${result.error}`);
|
|
102
|
+
return 1;
|
|
103
|
+
}
|
|
104
|
+
console.log(`[OK] Daemon started on port ${config.port}`);
|
|
105
|
+
daemonRunning = true;
|
|
106
|
+
}
|
|
107
|
+
else {
|
|
108
|
+
console.error('[X] copilot-api daemon is not running.');
|
|
109
|
+
console.error('');
|
|
110
|
+
console.error('Start the daemon manually:');
|
|
111
|
+
console.error(` npx copilot-api start --port ${config.port}`);
|
|
112
|
+
console.error('');
|
|
113
|
+
console.error('Or enable auto_start in config:');
|
|
114
|
+
console.error(' ccs config (then enable auto_start in Copilot section)');
|
|
115
|
+
return 1;
|
|
116
|
+
}
|
|
117
|
+
}
|
|
118
|
+
// Generate environment for Claude
|
|
119
|
+
const copilotEnv = generateCopilotEnv(config);
|
|
120
|
+
// Merge with current environment
|
|
121
|
+
const env = {
|
|
122
|
+
...process.env,
|
|
123
|
+
...copilotEnv,
|
|
124
|
+
};
|
|
125
|
+
console.log(`[i] Using GitHub Copilot proxy (model: ${config.model})`);
|
|
126
|
+
console.log('');
|
|
127
|
+
// Spawn Claude CLI
|
|
128
|
+
return new Promise((resolve) => {
|
|
129
|
+
const proc = (0, child_process_1.spawn)('claude', claudeArgs, {
|
|
130
|
+
stdio: 'inherit',
|
|
131
|
+
env,
|
|
132
|
+
shell: process.platform === 'win32',
|
|
133
|
+
});
|
|
134
|
+
proc.on('close', (code) => {
|
|
135
|
+
resolve(code ?? 0);
|
|
136
|
+
});
|
|
137
|
+
proc.on('error', (err) => {
|
|
138
|
+
console.error(`[X] Failed to start Claude: ${err.message}`);
|
|
139
|
+
resolve(1);
|
|
140
|
+
});
|
|
141
|
+
});
|
|
142
|
+
}
|
|
143
|
+
exports.executeCopilotProfile = executeCopilotProfile;
|
|
144
|
+
//# sourceMappingURL=copilot-executor.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"copilot-executor.js","sourceRoot":"","sources":["../../src/copilot/copilot-executor.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Copilot Model Catalog
|
|
3
|
+
*
|
|
4
|
+
* Manages available models from copilot-api.
|
|
5
|
+
* Based on GitHub Copilot supported models:
|
|
6
|
+
* https://docs.github.com/copilot/reference/ai-models/supported-models
|
|
7
|
+
*/
|
|
8
|
+
import { CopilotModel } from './types';
|
|
9
|
+
/**
|
|
10
|
+
* Default models available through copilot-api.
|
|
11
|
+
* Used as fallback when API is not reachable.
|
|
12
|
+
* Source: GitHub Copilot Supported Models (Dec 2025)
|
|
13
|
+
*
|
|
14
|
+
* Plan tiers: free, pro, pro+, business, enterprise
|
|
15
|
+
* Multipliers: 0 = free tier, 0.25-0.33 = cheap, 1 = standard, 3-10 = premium
|
|
16
|
+
*/
|
|
17
|
+
export declare const DEFAULT_COPILOT_MODELS: CopilotModel[];
|
|
18
|
+
/**
|
|
19
|
+
* Fetch available models from running copilot-api daemon.
|
|
20
|
+
*
|
|
21
|
+
* @param port The port copilot-api is running on
|
|
22
|
+
* @returns List of available models
|
|
23
|
+
*/
|
|
24
|
+
export declare function fetchModelsFromDaemon(port: number): Promise<CopilotModel[]>;
|
|
25
|
+
/**
|
|
26
|
+
* Get available models (from daemon or defaults).
|
|
27
|
+
*/
|
|
28
|
+
export declare function getAvailableModels(port: number): Promise<CopilotModel[]>;
|
|
29
|
+
/**
|
|
30
|
+
* Get the default model.
|
|
31
|
+
* Uses gpt-4.1 as it's available on free tier.
|
|
32
|
+
*/
|
|
33
|
+
export declare function getDefaultModel(): string;
|
|
34
|
+
//# sourceMappingURL=copilot-models.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"copilot-models.d.ts","sourceRoot":"","sources":["../../src/copilot/copilot-models.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAGH,OAAO,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AAEvC;;;;;;;GAOG;AACH,eAAO,MAAM,sBAAsB,EAAE,YAAY,EA+HhD,CAAC;AAEF;;;;;GAKG;AACH,wBAAsB,qBAAqB,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,YAAY,EAAE,CAAC,CAkDjF;AAED;;GAEG;AACH,wBAAsB,kBAAkB,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,YAAY,EAAE,CAAC,CAE9E;AAED;;;GAGG;AACH,wBAAgB,eAAe,IAAI,MAAM,CAExC"}
|
|
@@ -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"}
|