@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.
Files changed (93) 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 +90 -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/commands/update-command.d.ts +1 -1
  18. package/dist/commands/update-command.d.ts.map +1 -1
  19. package/dist/commands/update-command.js +24 -132
  20. package/dist/commands/update-command.js.map +1 -1
  21. package/dist/config/reserved-names.d.ts +1 -1
  22. package/dist/config/reserved-names.d.ts.map +1 -1
  23. package/dist/config/reserved-names.js +2 -0
  24. package/dist/config/reserved-names.js.map +1 -1
  25. package/dist/config/unified-config-loader.d.ts.map +1 -1
  26. package/dist/config/unified-config-loader.js +30 -0
  27. package/dist/config/unified-config-loader.js.map +1 -1
  28. package/dist/config/unified-config-types.d.ts +45 -2
  29. package/dist/config/unified-config-types.d.ts.map +1 -1
  30. package/dist/config/unified-config-types.js +18 -2
  31. package/dist/config/unified-config-types.js.map +1 -1
  32. package/dist/copilot/copilot-auth.d.ts +52 -0
  33. package/dist/copilot/copilot-auth.d.ts.map +1 -0
  34. package/dist/copilot/copilot-auth.js +201 -0
  35. package/dist/copilot/copilot-auth.js.map +1 -0
  36. package/dist/copilot/copilot-daemon.d.ts +36 -0
  37. package/dist/copilot/copilot-daemon.d.ts.map +1 -0
  38. package/dist/copilot/copilot-daemon.js +237 -0
  39. package/dist/copilot/copilot-daemon.js.map +1 -0
  40. package/dist/copilot/copilot-executor.d.ts +26 -0
  41. package/dist/copilot/copilot-executor.d.ts.map +1 -0
  42. package/dist/copilot/copilot-executor.js +144 -0
  43. package/dist/copilot/copilot-executor.js.map +1 -0
  44. package/dist/copilot/copilot-models.d.ts +34 -0
  45. package/dist/copilot/copilot-models.d.ts.map +1 -0
  46. package/dist/copilot/copilot-models.js +261 -0
  47. package/dist/copilot/copilot-models.js.map +1 -0
  48. package/dist/copilot/copilot-package-manager.d.ts +93 -0
  49. package/dist/copilot/copilot-package-manager.d.ts.map +1 -0
  50. package/dist/copilot/copilot-package-manager.js +488 -0
  51. package/dist/copilot/copilot-package-manager.js.map +1 -0
  52. package/dist/copilot/index.d.ts +13 -0
  53. package/dist/copilot/index.d.ts.map +1 -0
  54. package/dist/copilot/index.js +63 -0
  55. package/dist/copilot/index.js.map +1 -0
  56. package/dist/copilot/types.d.ts +65 -0
  57. package/dist/copilot/types.d.ts.map +1 -0
  58. package/dist/copilot/types.js +8 -0
  59. package/dist/copilot/types.js.map +1 -0
  60. package/dist/ui/assets/{accounts-aPbCYgXy.js → accounts-OHf-47mH.js} +1 -1
  61. package/dist/ui/assets/{analytics-ByHzJ4fO.js → analytics-C4uOxyuU.js} +1 -1
  62. package/dist/ui/assets/{api-DRVliui6.js → api-B_mbwU9C.js} +1 -1
  63. package/dist/ui/assets/{card-CkFFTnqL.js → card-CR0u1y_L.js} +1 -1
  64. package/dist/ui/assets/{cliproxy-control-panel-C9y82uCL.js → cliproxy-control-panel-DIIw97Bs.js} +1 -1
  65. package/dist/ui/assets/{cliproxy-CJ5njiYX.js → cliproxy-tXwMpEJd.js} +1 -1
  66. package/dist/ui/assets/{code-editor-D1jkWlaX.js → code-editor-CVohe7u9.js} +1 -1
  67. package/dist/ui/assets/copilot-C-eWI9Ce.js +4 -0
  68. package/dist/ui/assets/health-Dh8bSHe-.js +1 -0
  69. package/dist/ui/assets/icons-WTNLz24z.js +1 -0
  70. package/dist/ui/assets/index-BXPLu3zJ.js +44 -0
  71. package/dist/ui/assets/index-D2qNwUdc.css +1 -0
  72. package/dist/ui/assets/settings-Bi8Aw4yN.js +1 -0
  73. package/dist/ui/assets/shared-DQlPCpix.js +1 -0
  74. package/dist/ui/assets/switch-pOvJh4Ez.js +1 -0
  75. package/dist/ui/index.html +3 -3
  76. package/dist/utils/package-manager-detector.d.ts +1 -4
  77. package/dist/utils/package-manager-detector.d.ts.map +1 -1
  78. package/dist/utils/package-manager-detector.js +2 -61
  79. package/dist/utils/package-manager-detector.js.map +1 -1
  80. package/dist/utils/update-checker.d.ts +14 -2
  81. package/dist/utils/update-checker.d.ts.map +1 -1
  82. package/dist/utils/update-checker.js +39 -9
  83. package/dist/utils/update-checker.js.map +1 -1
  84. package/dist/web-server/routes.js +275 -0
  85. package/dist/web-server/routes.js.map +1 -1
  86. package/package.json +1 -1
  87. package/scripts/worker.js +18 -38
  88. package/dist/ui/assets/health-B4BNP_1z.js +0 -1
  89. package/dist/ui/assets/icons-B9AtZK5c.js +0 -1
  90. package/dist/ui/assets/index-B_6ILhjh.css +0 -1
  91. package/dist/ui/assets/index-EyLCmFok.js +0 -44
  92. package/dist/ui/assets/settings-DcAQTmWn.js +0 -1
  93. 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"}