@kaitranntt/ccs 6.4.0-dev.1 → 6.4.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.
- 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.js +31 -0
- 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/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-mGEFDVQS.js → accounts-OHf-47mH.js} +1 -1
- package/dist/ui/assets/{analytics-3363PLPv.js → analytics-C4uOxyuU.js} +1 -1
- package/dist/ui/assets/{api-BUpOap35.js → api-B_mbwU9C.js} +1 -1
- package/dist/ui/assets/{card-BFvdp_30.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-CeRFx3Vh.js → cliproxy-tXwMpEJd.js} +1 -1
- package/dist/ui/assets/{code-editor-CsXy1qcC.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-mCIF4r_M.js → index-BXPLu3zJ.js} +10 -10
- 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/web-server/routes.js +275 -0
- package/dist/web-server/routes.js.map +1 -1
- package/package.json +1 -1
- package/dist/ui/assets/health-DK1m5XWA.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/settings-COJXs9MQ.js +0 -1
- package/dist/ui/assets/shared-DL1VmXYB.js +0 -1
|
@@ -0,0 +1,237 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* Copilot Daemon Manager
|
|
4
|
+
*
|
|
5
|
+
* Manages the copilot-api daemon lifecycle (start/stop/status).
|
|
6
|
+
* Uses local installation from ~/.ccs/copilot/ (managed by copilot-package-manager).
|
|
7
|
+
*/
|
|
8
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
9
|
+
if (k2 === undefined) k2 = k;
|
|
10
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
11
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
12
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
13
|
+
}
|
|
14
|
+
Object.defineProperty(o, k2, desc);
|
|
15
|
+
}) : (function(o, m, k, k2) {
|
|
16
|
+
if (k2 === undefined) k2 = k;
|
|
17
|
+
o[k2] = m[k];
|
|
18
|
+
}));
|
|
19
|
+
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
20
|
+
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
21
|
+
}) : function(o, v) {
|
|
22
|
+
o["default"] = v;
|
|
23
|
+
});
|
|
24
|
+
var __importStar = (this && this.__importStar) || function (mod) {
|
|
25
|
+
if (mod && mod.__esModule) return mod;
|
|
26
|
+
var result = {};
|
|
27
|
+
if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
|
|
28
|
+
__setModuleDefault(result, mod);
|
|
29
|
+
return result;
|
|
30
|
+
};
|
|
31
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
32
|
+
exports.stopDaemon = exports.startDaemon = exports.getDaemonStatus = exports.isDaemonRunning = void 0;
|
|
33
|
+
const child_process_1 = require("child_process");
|
|
34
|
+
const fs = __importStar(require("fs"));
|
|
35
|
+
const path = __importStar(require("path"));
|
|
36
|
+
const http = __importStar(require("http"));
|
|
37
|
+
const copilot_package_manager_1 = require("./copilot-package-manager");
|
|
38
|
+
const PID_FILE = path.join((0, copilot_package_manager_1.getCopilotDir)(), 'daemon.pid');
|
|
39
|
+
/**
|
|
40
|
+
* Check if copilot-api daemon is running on the specified port.
|
|
41
|
+
* Uses 127.0.0.1 instead of localhost for more reliable local connections.
|
|
42
|
+
*/
|
|
43
|
+
async function isDaemonRunning(port) {
|
|
44
|
+
return new Promise((resolve) => {
|
|
45
|
+
const req = http.request({
|
|
46
|
+
hostname: '127.0.0.1',
|
|
47
|
+
port,
|
|
48
|
+
path: '/usage',
|
|
49
|
+
method: 'GET',
|
|
50
|
+
timeout: 3000,
|
|
51
|
+
}, (res) => {
|
|
52
|
+
resolve(res.statusCode === 200);
|
|
53
|
+
});
|
|
54
|
+
req.on('error', () => {
|
|
55
|
+
resolve(false);
|
|
56
|
+
});
|
|
57
|
+
req.on('timeout', () => {
|
|
58
|
+
req.destroy();
|
|
59
|
+
resolve(false);
|
|
60
|
+
});
|
|
61
|
+
req.end();
|
|
62
|
+
});
|
|
63
|
+
}
|
|
64
|
+
exports.isDaemonRunning = isDaemonRunning;
|
|
65
|
+
/**
|
|
66
|
+
* Get daemon status.
|
|
67
|
+
*/
|
|
68
|
+
async function getDaemonStatus(port) {
|
|
69
|
+
const running = await isDaemonRunning(port);
|
|
70
|
+
const pid = getPidFromFile();
|
|
71
|
+
return {
|
|
72
|
+
running,
|
|
73
|
+
port,
|
|
74
|
+
pid: running ? (pid ?? undefined) : undefined,
|
|
75
|
+
};
|
|
76
|
+
}
|
|
77
|
+
exports.getDaemonStatus = getDaemonStatus;
|
|
78
|
+
/**
|
|
79
|
+
* Read PID from file.
|
|
80
|
+
*/
|
|
81
|
+
function getPidFromFile() {
|
|
82
|
+
try {
|
|
83
|
+
if (fs.existsSync(PID_FILE)) {
|
|
84
|
+
const content = fs.readFileSync(PID_FILE, 'utf8').trim();
|
|
85
|
+
const pid = parseInt(content, 10);
|
|
86
|
+
return isNaN(pid) ? null : pid;
|
|
87
|
+
}
|
|
88
|
+
}
|
|
89
|
+
catch {
|
|
90
|
+
// Ignore errors
|
|
91
|
+
}
|
|
92
|
+
return null;
|
|
93
|
+
}
|
|
94
|
+
/**
|
|
95
|
+
* Write PID to file.
|
|
96
|
+
*/
|
|
97
|
+
function writePidToFile(pid) {
|
|
98
|
+
try {
|
|
99
|
+
const dir = path.dirname(PID_FILE);
|
|
100
|
+
if (!fs.existsSync(dir)) {
|
|
101
|
+
fs.mkdirSync(dir, { recursive: true, mode: 0o700 });
|
|
102
|
+
}
|
|
103
|
+
fs.writeFileSync(PID_FILE, pid.toString(), { mode: 0o600 });
|
|
104
|
+
}
|
|
105
|
+
catch {
|
|
106
|
+
// Ignore errors
|
|
107
|
+
}
|
|
108
|
+
}
|
|
109
|
+
/**
|
|
110
|
+
* Remove PID file.
|
|
111
|
+
*/
|
|
112
|
+
function removePidFile() {
|
|
113
|
+
try {
|
|
114
|
+
if (fs.existsSync(PID_FILE)) {
|
|
115
|
+
fs.unlinkSync(PID_FILE);
|
|
116
|
+
}
|
|
117
|
+
}
|
|
118
|
+
catch {
|
|
119
|
+
// Ignore errors
|
|
120
|
+
}
|
|
121
|
+
}
|
|
122
|
+
/**
|
|
123
|
+
* Start the copilot-api daemon.
|
|
124
|
+
*
|
|
125
|
+
* @param config Copilot configuration
|
|
126
|
+
* @returns Promise that resolves when daemon is ready
|
|
127
|
+
*/
|
|
128
|
+
async function startDaemon(config) {
|
|
129
|
+
// Check if already running
|
|
130
|
+
if (await isDaemonRunning(config.port)) {
|
|
131
|
+
return { success: true, pid: getPidFromFile() ?? undefined };
|
|
132
|
+
}
|
|
133
|
+
const binPath = (0, copilot_package_manager_1.getCopilotApiBinPath)();
|
|
134
|
+
const args = ['start', '--port', config.port.toString()];
|
|
135
|
+
// Add account type
|
|
136
|
+
if (config.account_type !== 'individual') {
|
|
137
|
+
args.push('--account-type', config.account_type);
|
|
138
|
+
}
|
|
139
|
+
// Add rate limiting
|
|
140
|
+
if (config.rate_limit !== null && config.rate_limit > 0) {
|
|
141
|
+
args.push('--rate-limit', config.rate_limit.toString());
|
|
142
|
+
if (config.wait_on_limit) {
|
|
143
|
+
args.push('--wait');
|
|
144
|
+
}
|
|
145
|
+
}
|
|
146
|
+
return new Promise((resolve) => {
|
|
147
|
+
let proc;
|
|
148
|
+
try {
|
|
149
|
+
proc = (0, child_process_1.spawn)(binPath, args, {
|
|
150
|
+
stdio: ['ignore', 'pipe', 'pipe'],
|
|
151
|
+
detached: true,
|
|
152
|
+
shell: process.platform === 'win32',
|
|
153
|
+
});
|
|
154
|
+
// Unref so parent can exit
|
|
155
|
+
proc.unref();
|
|
156
|
+
if (proc.pid) {
|
|
157
|
+
writePidToFile(proc.pid);
|
|
158
|
+
}
|
|
159
|
+
// Wait for daemon to be ready (poll for up to 30 seconds)
|
|
160
|
+
let attempts = 0;
|
|
161
|
+
const maxAttempts = 30;
|
|
162
|
+
const checkInterval = setInterval(async () => {
|
|
163
|
+
attempts++;
|
|
164
|
+
if (await isDaemonRunning(config.port)) {
|
|
165
|
+
clearInterval(checkInterval);
|
|
166
|
+
resolve({ success: true, pid: proc.pid });
|
|
167
|
+
}
|
|
168
|
+
else if (attempts >= maxAttempts) {
|
|
169
|
+
clearInterval(checkInterval);
|
|
170
|
+
resolve({
|
|
171
|
+
success: false,
|
|
172
|
+
error: 'Daemon did not start within 30 seconds',
|
|
173
|
+
});
|
|
174
|
+
}
|
|
175
|
+
}, 1000);
|
|
176
|
+
proc.on('error', (err) => {
|
|
177
|
+
clearInterval(checkInterval);
|
|
178
|
+
resolve({
|
|
179
|
+
success: false,
|
|
180
|
+
error: `Failed to start daemon: ${err.message}`,
|
|
181
|
+
});
|
|
182
|
+
});
|
|
183
|
+
}
|
|
184
|
+
catch (err) {
|
|
185
|
+
resolve({
|
|
186
|
+
success: false,
|
|
187
|
+
error: `Failed to spawn daemon: ${err.message}`,
|
|
188
|
+
});
|
|
189
|
+
}
|
|
190
|
+
});
|
|
191
|
+
}
|
|
192
|
+
exports.startDaemon = startDaemon;
|
|
193
|
+
/**
|
|
194
|
+
* Stop the copilot-api daemon.
|
|
195
|
+
*/
|
|
196
|
+
async function stopDaemon() {
|
|
197
|
+
const pid = getPidFromFile();
|
|
198
|
+
if (!pid) {
|
|
199
|
+
// No PID file, try to find by port
|
|
200
|
+
removePidFile();
|
|
201
|
+
return { success: true };
|
|
202
|
+
}
|
|
203
|
+
try {
|
|
204
|
+
// Send SIGTERM to the process
|
|
205
|
+
process.kill(pid, 'SIGTERM');
|
|
206
|
+
// Wait for process to exit (up to 5 seconds)
|
|
207
|
+
let attempts = 0;
|
|
208
|
+
while (attempts < 10) {
|
|
209
|
+
await new Promise((resolve) => setTimeout(resolve, 500));
|
|
210
|
+
try {
|
|
211
|
+
// Check if process still exists (kill(pid, 0) throws if not)
|
|
212
|
+
process.kill(pid, 0);
|
|
213
|
+
attempts++;
|
|
214
|
+
}
|
|
215
|
+
catch {
|
|
216
|
+
// Process no longer exists
|
|
217
|
+
break;
|
|
218
|
+
}
|
|
219
|
+
}
|
|
220
|
+
removePidFile();
|
|
221
|
+
return { success: true };
|
|
222
|
+
}
|
|
223
|
+
catch (err) {
|
|
224
|
+
const error = err;
|
|
225
|
+
if (error.code === 'ESRCH') {
|
|
226
|
+
// Process doesn't exist
|
|
227
|
+
removePidFile();
|
|
228
|
+
return { success: true };
|
|
229
|
+
}
|
|
230
|
+
return {
|
|
231
|
+
success: false,
|
|
232
|
+
error: `Failed to stop daemon: ${error.message}`,
|
|
233
|
+
};
|
|
234
|
+
}
|
|
235
|
+
}
|
|
236
|
+
exports.stopDaemon = stopDaemon;
|
|
237
|
+
//# sourceMappingURL=copilot-daemon.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"copilot-daemon.js","sourceRoot":"","sources":["../../src/copilot/copilot-daemon.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Copilot Executor
|
|
3
|
+
*
|
|
4
|
+
* Main execution flow for running Claude Code with copilot-api proxy.
|
|
5
|
+
* Uses local installation from ~/.ccs/copilot/ (managed by copilot-package-manager).
|
|
6
|
+
*/
|
|
7
|
+
import { CopilotConfig } from '../config/unified-config-types';
|
|
8
|
+
import { CopilotStatus } from './types';
|
|
9
|
+
/**
|
|
10
|
+
* Get full copilot status (auth + daemon).
|
|
11
|
+
*/
|
|
12
|
+
export declare function getCopilotStatus(config: CopilotConfig): Promise<CopilotStatus>;
|
|
13
|
+
/**
|
|
14
|
+
* Generate environment variables for Claude Code to use copilot-api.
|
|
15
|
+
* Uses model mapping for opus/sonnet/haiku tiers if configured.
|
|
16
|
+
*/
|
|
17
|
+
export declare function generateCopilotEnv(config: CopilotConfig): Record<string, string>;
|
|
18
|
+
/**
|
|
19
|
+
* Execute Claude Code with copilot-api proxy.
|
|
20
|
+
*
|
|
21
|
+
* @param config Copilot configuration
|
|
22
|
+
* @param claudeArgs Arguments to pass to Claude CLI
|
|
23
|
+
* @returns Exit code
|
|
24
|
+
*/
|
|
25
|
+
export declare function executeCopilotProfile(config: CopilotConfig, claudeArgs: string[]): Promise<number>;
|
|
26
|
+
//# sourceMappingURL=copilot-executor.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"copilot-executor.d.ts","sourceRoot":"","sources":["../../src/copilot/copilot-executor.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAGH,OAAO,EAAE,aAAa,EAAE,MAAM,gCAAgC,CAAC;AAI/D,OAAO,EAAE,aAAa,EAAE,MAAM,SAAS,CAAC;AAExC;;GAEG;AACH,wBAAsB,gBAAgB,CAAC,MAAM,EAAE,aAAa,GAAG,OAAO,CAAC,aAAa,CAAC,CAapF;AAED;;;GAGG;AACH,wBAAgB,kBAAkB,CAAC,MAAM,EAAE,aAAa,GAAG,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAqBhF;AAED;;;;;;GAMG;AACH,wBAAsB,qBAAqB,CACzC,MAAM,EAAE,aAAa,EACrB,UAAU,EAAE,MAAM,EAAE,GACnB,OAAO,CAAC,MAAM,CAAC,CAsFjB"}
|
|
@@ -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"}
|