@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,52 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Copilot Auth Handler
|
|
3
|
+
*
|
|
4
|
+
* Handles GitHub OAuth authentication for copilot-api.
|
|
5
|
+
* Uses local installation from ~/.ccs/copilot/ (managed by copilot-package-manager).
|
|
6
|
+
*/
|
|
7
|
+
import { CopilotAuthStatus, CopilotDebugInfo } from './types';
|
|
8
|
+
/**
|
|
9
|
+
* Get the path to copilot-api's GitHub token file.
|
|
10
|
+
* copilot-api stores tokens in ~/.local/share/copilot-api/github_token (Linux/macOS)
|
|
11
|
+
* or %APPDATA%/copilot-api/github_token (Windows)
|
|
12
|
+
*/
|
|
13
|
+
export declare function getTokenPath(): string;
|
|
14
|
+
/**
|
|
15
|
+
* Check if GitHub token file exists.
|
|
16
|
+
* Fast check that doesn't require spawning copilot-api process.
|
|
17
|
+
*/
|
|
18
|
+
export declare function hasTokenFile(): boolean;
|
|
19
|
+
/**
|
|
20
|
+
* Check if copilot-api is installed locally.
|
|
21
|
+
* Uses copilot-package-manager to check ~/.ccs/copilot/node_modules/.bin/copilot-api
|
|
22
|
+
*/
|
|
23
|
+
export declare function isCopilotApiInstalled(): boolean;
|
|
24
|
+
/**
|
|
25
|
+
* Get copilot-api debug info.
|
|
26
|
+
* Returns authentication status and version info.
|
|
27
|
+
*/
|
|
28
|
+
export declare function getCopilotDebugInfo(): Promise<CopilotDebugInfo | null>;
|
|
29
|
+
/**
|
|
30
|
+
* Check copilot authentication status.
|
|
31
|
+
* Uses fast token file check first, falls back to copilot-api debug if needed.
|
|
32
|
+
*/
|
|
33
|
+
export declare function checkAuthStatus(): Promise<CopilotAuthStatus>;
|
|
34
|
+
/**
|
|
35
|
+
* Auth flow result with optional device code info.
|
|
36
|
+
*/
|
|
37
|
+
export interface AuthFlowResult {
|
|
38
|
+
success: boolean;
|
|
39
|
+
error?: string;
|
|
40
|
+
/** Device code for user to enter at GitHub */
|
|
41
|
+
deviceCode?: string;
|
|
42
|
+
/** URL where user enters the device code */
|
|
43
|
+
verificationUrl?: string;
|
|
44
|
+
}
|
|
45
|
+
/**
|
|
46
|
+
* Start GitHub OAuth authentication flow.
|
|
47
|
+
* Captures device code from copilot-api output and returns it.
|
|
48
|
+
*
|
|
49
|
+
* @returns Promise that resolves with auth result including device code
|
|
50
|
+
*/
|
|
51
|
+
export declare function startAuthFlow(): Promise<AuthFlowResult>;
|
|
52
|
+
//# sourceMappingURL=copilot-auth.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"copilot-auth.d.ts","sourceRoot":"","sources":["../../src/copilot/copilot-auth.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAMH,OAAO,EAAE,iBAAiB,EAAE,gBAAgB,EAAE,MAAM,SAAS,CAAC;AAM9D;;;;GAIG;AACH,wBAAgB,YAAY,IAAI,MAAM,CAKrC;AAED;;;GAGG;AACH,wBAAgB,YAAY,IAAI,OAAO,CAMtC;AAED;;;GAGG;AACH,wBAAgB,qBAAqB,IAAI,OAAO,CAE/C;AAED;;;GAGG;AACH,wBAAsB,mBAAmB,IAAI,OAAO,CAAC,gBAAgB,GAAG,IAAI,CAAC,CAgD5E;AAED;;;GAGG;AACH,wBAAsB,eAAe,IAAI,OAAO,CAAC,iBAAiB,CAAC,CAiBlE;AAED;;GAEG;AACH,MAAM,WAAW,cAAc;IAC7B,OAAO,EAAE,OAAO,CAAC;IACjB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,8CAA8C;IAC9C,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,4CAA4C;IAC5C,eAAe,CAAC,EAAE,MAAM,CAAC;CAC1B;AAED;;;;;GAKG;AACH,wBAAgB,aAAa,IAAI,OAAO,CAAC,cAAc,CAAC,CA6DvD"}
|
|
@@ -0,0 +1,201 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* Copilot Auth Handler
|
|
4
|
+
*
|
|
5
|
+
* Handles GitHub OAuth authentication for copilot-api.
|
|
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.startAuthFlow = exports.checkAuthStatus = exports.getCopilotDebugInfo = exports.isCopilotApiInstalled = exports.hasTokenFile = exports.getTokenPath = void 0;
|
|
33
|
+
const child_process_1 = require("child_process");
|
|
34
|
+
const fs = __importStar(require("fs"));
|
|
35
|
+
const path = __importStar(require("path"));
|
|
36
|
+
const os = __importStar(require("os"));
|
|
37
|
+
const copilot_package_manager_1 = require("./copilot-package-manager");
|
|
38
|
+
/**
|
|
39
|
+
* Get the path to copilot-api's GitHub token file.
|
|
40
|
+
* copilot-api stores tokens in ~/.local/share/copilot-api/github_token (Linux/macOS)
|
|
41
|
+
* or %APPDATA%/copilot-api/github_token (Windows)
|
|
42
|
+
*/
|
|
43
|
+
function getTokenPath() {
|
|
44
|
+
if (process.platform === 'win32') {
|
|
45
|
+
return path.join(process.env.APPDATA || os.homedir(), 'copilot-api', 'github_token');
|
|
46
|
+
}
|
|
47
|
+
return path.join(os.homedir(), '.local', 'share', 'copilot-api', 'github_token');
|
|
48
|
+
}
|
|
49
|
+
exports.getTokenPath = getTokenPath;
|
|
50
|
+
/**
|
|
51
|
+
* Check if GitHub token file exists.
|
|
52
|
+
* Fast check that doesn't require spawning copilot-api process.
|
|
53
|
+
*/
|
|
54
|
+
function hasTokenFile() {
|
|
55
|
+
try {
|
|
56
|
+
return fs.existsSync(getTokenPath());
|
|
57
|
+
}
|
|
58
|
+
catch {
|
|
59
|
+
return false;
|
|
60
|
+
}
|
|
61
|
+
}
|
|
62
|
+
exports.hasTokenFile = hasTokenFile;
|
|
63
|
+
/**
|
|
64
|
+
* Check if copilot-api is installed locally.
|
|
65
|
+
* Uses copilot-package-manager to check ~/.ccs/copilot/node_modules/.bin/copilot-api
|
|
66
|
+
*/
|
|
67
|
+
function isCopilotApiInstalled() {
|
|
68
|
+
return (0, copilot_package_manager_1.isCopilotApiInstalled)();
|
|
69
|
+
}
|
|
70
|
+
exports.isCopilotApiInstalled = isCopilotApiInstalled;
|
|
71
|
+
/**
|
|
72
|
+
* Get copilot-api debug info.
|
|
73
|
+
* Returns authentication status and version info.
|
|
74
|
+
*/
|
|
75
|
+
async function getCopilotDebugInfo() {
|
|
76
|
+
const binPath = (0, copilot_package_manager_1.getCopilotApiBinPath)();
|
|
77
|
+
return new Promise((resolve) => {
|
|
78
|
+
try {
|
|
79
|
+
const proc = (0, child_process_1.spawn)(binPath, ['debug', '--json'], {
|
|
80
|
+
stdio: ['ignore', 'pipe', 'pipe'],
|
|
81
|
+
shell: process.platform === 'win32',
|
|
82
|
+
timeout: 15000,
|
|
83
|
+
});
|
|
84
|
+
let stdout = '';
|
|
85
|
+
let _stderr = '';
|
|
86
|
+
proc.stdout.on('data', (data) => {
|
|
87
|
+
stdout += data.toString();
|
|
88
|
+
});
|
|
89
|
+
proc.stderr.on('data', (data) => {
|
|
90
|
+
_stderr += data.toString();
|
|
91
|
+
});
|
|
92
|
+
proc.on('close', (code) => {
|
|
93
|
+
if (code === 0 && stdout) {
|
|
94
|
+
try {
|
|
95
|
+
const info = JSON.parse(stdout.trim());
|
|
96
|
+
resolve(info);
|
|
97
|
+
}
|
|
98
|
+
catch {
|
|
99
|
+
resolve(null);
|
|
100
|
+
}
|
|
101
|
+
}
|
|
102
|
+
else {
|
|
103
|
+
resolve(null);
|
|
104
|
+
}
|
|
105
|
+
});
|
|
106
|
+
proc.on('error', () => {
|
|
107
|
+
resolve(null);
|
|
108
|
+
});
|
|
109
|
+
// Timeout after 15 seconds
|
|
110
|
+
setTimeout(() => {
|
|
111
|
+
proc.kill();
|
|
112
|
+
resolve(null);
|
|
113
|
+
}, 15000);
|
|
114
|
+
}
|
|
115
|
+
catch {
|
|
116
|
+
resolve(null);
|
|
117
|
+
}
|
|
118
|
+
});
|
|
119
|
+
}
|
|
120
|
+
exports.getCopilotDebugInfo = getCopilotDebugInfo;
|
|
121
|
+
/**
|
|
122
|
+
* Check copilot authentication status.
|
|
123
|
+
* Uses fast token file check first, falls back to copilot-api debug if needed.
|
|
124
|
+
*/
|
|
125
|
+
async function checkAuthStatus() {
|
|
126
|
+
// Fast path: check if token file exists (instant, no subprocess)
|
|
127
|
+
if (hasTokenFile()) {
|
|
128
|
+
return { authenticated: true };
|
|
129
|
+
}
|
|
130
|
+
// Slow path: try copilot-api debug --json (may timeout)
|
|
131
|
+
// Only used if token file doesn't exist
|
|
132
|
+
const debugInfo = await getCopilotDebugInfo();
|
|
133
|
+
if (debugInfo?.authenticated) {
|
|
134
|
+
return { authenticated: true };
|
|
135
|
+
}
|
|
136
|
+
return {
|
|
137
|
+
authenticated: false,
|
|
138
|
+
};
|
|
139
|
+
}
|
|
140
|
+
exports.checkAuthStatus = checkAuthStatus;
|
|
141
|
+
/**
|
|
142
|
+
* Start GitHub OAuth authentication flow.
|
|
143
|
+
* Captures device code from copilot-api output and returns it.
|
|
144
|
+
*
|
|
145
|
+
* @returns Promise that resolves with auth result including device code
|
|
146
|
+
*/
|
|
147
|
+
function startAuthFlow() {
|
|
148
|
+
const binPath = (0, copilot_package_manager_1.getCopilotApiBinPath)();
|
|
149
|
+
return new Promise((resolve) => {
|
|
150
|
+
console.log('[i] Starting GitHub authentication for Copilot...');
|
|
151
|
+
console.log('');
|
|
152
|
+
const proc = (0, child_process_1.spawn)(binPath, ['auth'], {
|
|
153
|
+
stdio: ['ignore', 'pipe', 'pipe'],
|
|
154
|
+
shell: process.platform === 'win32',
|
|
155
|
+
});
|
|
156
|
+
let stdout = '';
|
|
157
|
+
let deviceCode;
|
|
158
|
+
let verificationUrl;
|
|
159
|
+
proc.stdout.on('data', (data) => {
|
|
160
|
+
const chunk = data.toString();
|
|
161
|
+
stdout += chunk;
|
|
162
|
+
// Echo to console for terminal users
|
|
163
|
+
process.stdout.write(chunk);
|
|
164
|
+
// Parse device code from output like:
|
|
165
|
+
// "Please enter the code "5653-38A1" in https://github.com/login/device"
|
|
166
|
+
const codeMatch = stdout.match(/code\s+"([A-Z0-9]{4}-[A-Z0-9]{4})"/i);
|
|
167
|
+
const urlMatch = stdout.match(/(https:\/\/github\.com\/login\/device)/i);
|
|
168
|
+
if (codeMatch && !deviceCode) {
|
|
169
|
+
deviceCode = codeMatch[1];
|
|
170
|
+
}
|
|
171
|
+
if (urlMatch && !verificationUrl) {
|
|
172
|
+
verificationUrl = urlMatch[1];
|
|
173
|
+
}
|
|
174
|
+
});
|
|
175
|
+
proc.stderr.on('data', (data) => {
|
|
176
|
+
// Echo stderr to console
|
|
177
|
+
process.stderr.write(data.toString());
|
|
178
|
+
});
|
|
179
|
+
proc.on('close', (code) => {
|
|
180
|
+
if (code === 0) {
|
|
181
|
+
resolve({ success: true, deviceCode, verificationUrl });
|
|
182
|
+
}
|
|
183
|
+
else {
|
|
184
|
+
resolve({
|
|
185
|
+
success: false,
|
|
186
|
+
error: `Authentication failed with exit code ${code}`,
|
|
187
|
+
deviceCode,
|
|
188
|
+
verificationUrl,
|
|
189
|
+
});
|
|
190
|
+
}
|
|
191
|
+
});
|
|
192
|
+
proc.on('error', (err) => {
|
|
193
|
+
resolve({
|
|
194
|
+
success: false,
|
|
195
|
+
error: `Failed to start auth: ${err.message}`,
|
|
196
|
+
});
|
|
197
|
+
});
|
|
198
|
+
});
|
|
199
|
+
}
|
|
200
|
+
exports.startAuthFlow = startAuthFlow;
|
|
201
|
+
//# sourceMappingURL=copilot-auth.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"copilot-auth.js","sourceRoot":"","sources":["../../src/copilot/copilot-auth.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Copilot Daemon Manager
|
|
3
|
+
*
|
|
4
|
+
* Manages the copilot-api daemon lifecycle (start/stop/status).
|
|
5
|
+
* Uses local installation from ~/.ccs/copilot/ (managed by copilot-package-manager).
|
|
6
|
+
*/
|
|
7
|
+
import { CopilotDaemonStatus } from './types';
|
|
8
|
+
import { CopilotConfig } from '../config/unified-config-types';
|
|
9
|
+
/**
|
|
10
|
+
* Check if copilot-api daemon is running on the specified port.
|
|
11
|
+
* Uses 127.0.0.1 instead of localhost for more reliable local connections.
|
|
12
|
+
*/
|
|
13
|
+
export declare function isDaemonRunning(port: number): Promise<boolean>;
|
|
14
|
+
/**
|
|
15
|
+
* Get daemon status.
|
|
16
|
+
*/
|
|
17
|
+
export declare function getDaemonStatus(port: number): Promise<CopilotDaemonStatus>;
|
|
18
|
+
/**
|
|
19
|
+
* Start the copilot-api daemon.
|
|
20
|
+
*
|
|
21
|
+
* @param config Copilot configuration
|
|
22
|
+
* @returns Promise that resolves when daemon is ready
|
|
23
|
+
*/
|
|
24
|
+
export declare function startDaemon(config: CopilotConfig): Promise<{
|
|
25
|
+
success: boolean;
|
|
26
|
+
pid?: number;
|
|
27
|
+
error?: string;
|
|
28
|
+
}>;
|
|
29
|
+
/**
|
|
30
|
+
* Stop the copilot-api daemon.
|
|
31
|
+
*/
|
|
32
|
+
export declare function stopDaemon(): Promise<{
|
|
33
|
+
success: boolean;
|
|
34
|
+
error?: string;
|
|
35
|
+
}>;
|
|
36
|
+
//# sourceMappingURL=copilot-daemon.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"copilot-daemon.d.ts","sourceRoot":"","sources":["../../src/copilot/copilot-daemon.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAMH,OAAO,EAAE,mBAAmB,EAAE,MAAM,SAAS,CAAC;AAC9C,OAAO,EAAE,aAAa,EAAE,MAAM,gCAAgC,CAAC;AAK/D;;;GAGG;AACH,wBAAsB,eAAe,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CA0BpE;AAED;;GAEG;AACH,wBAAsB,eAAe,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,mBAAmB,CAAC,CAShF;AA8CD;;;;;GAKG;AACH,wBAAsB,WAAW,CAC/B,MAAM,EAAE,aAAa,GACpB,OAAO,CAAC;IAAE,OAAO,EAAE,OAAO,CAAC;IAAC,GAAG,CAAC,EAAE,MAAM,CAAC;IAAC,KAAK,CAAC,EAAE,MAAM,CAAA;CAAE,CAAC,CAuE7D;AAED;;GAEG;AACH,wBAAsB,UAAU,IAAI,OAAO,CAAC;IAAE,OAAO,EAAE,OAAO,CAAC;IAAC,KAAK,CAAC,EAAE,MAAM,CAAA;CAAE,CAAC,CAyChF"}
|
|
@@ -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"}
|