@codemieai/code 0.8.0 → 0.10.0

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 (193) hide show
  1. package/README.md +12 -0
  2. package/dist/agents/core/AgentCLI.d.ts +4 -1
  3. package/dist/agents/core/AgentCLI.d.ts.map +1 -1
  4. package/dist/agents/core/AgentCLI.js +113 -6
  5. package/dist/agents/core/AgentCLI.js.map +1 -1
  6. package/dist/agents/core/BaseAgentAdapter.d.ts +8 -1
  7. package/dist/agents/core/BaseAgentAdapter.d.ts.map +1 -1
  8. package/dist/agents/core/BaseAgentAdapter.js +57 -1
  9. package/dist/agents/core/BaseAgentAdapter.js.map +1 -1
  10. package/dist/agents/core/session/session-origin-audit.d.ts +4 -0
  11. package/dist/agents/core/session/session-origin-audit.d.ts.map +1 -0
  12. package/dist/agents/core/session/session-origin-audit.js +67 -0
  13. package/dist/agents/core/session/session-origin-audit.js.map +1 -0
  14. package/dist/agents/core/session/session-ownership.d.ts +2 -0
  15. package/dist/agents/core/session/session-ownership.d.ts.map +1 -0
  16. package/dist/agents/core/session/session-ownership.js +27 -0
  17. package/dist/agents/core/session/session-ownership.js.map +1 -0
  18. package/dist/agents/core/types.d.ts +33 -1
  19. package/dist/agents/core/types.d.ts.map +1 -1
  20. package/dist/agents/plugins/claude/claude.plugin.d.ts +11 -2
  21. package/dist/agents/plugins/claude/claude.plugin.d.ts.map +1 -1
  22. package/dist/agents/plugins/claude/claude.plugin.js +55 -83
  23. package/dist/agents/plugins/claude/claude.plugin.js.map +1 -1
  24. package/dist/agents/plugins/claude/plugin/__tests__/statusline.test.ts +301 -0
  25. package/dist/agents/plugins/claude/plugin/skills/msgraph/scripts/msgraph.js +25 -2
  26. package/dist/agents/plugins/claude/plugin/statusline.mjs +147 -93
  27. package/dist/agents/plugins/claude/session/processors/claude.conversations-processor.d.ts.map +1 -1
  28. package/dist/agents/plugins/claude/session/processors/claude.conversations-processor.js +2 -0
  29. package/dist/agents/plugins/claude/session/processors/claude.conversations-processor.js.map +1 -1
  30. package/dist/agents/plugins/claude/statusline-installer.d.ts +5 -2
  31. package/dist/agents/plugins/claude/statusline-installer.d.ts.map +1 -1
  32. package/dist/agents/plugins/claude/statusline-installer.js +12 -59
  33. package/dist/agents/plugins/claude/statusline-installer.js.map +1 -1
  34. package/dist/agents/plugins/codex/codex.plugin.d.ts +8 -0
  35. package/dist/agents/plugins/codex/codex.plugin.d.ts.map +1 -1
  36. package/dist/agents/plugins/codex/codex.plugin.js +18 -3
  37. package/dist/agents/plugins/codex/codex.plugin.js.map +1 -1
  38. package/dist/agents/plugins/codex/session/processors/codex.conversations-processor.d.ts.map +1 -1
  39. package/dist/agents/plugins/codex/session/processors/codex.conversations-processor.js +2 -0
  40. package/dist/agents/plugins/codex/session/processors/codex.conversations-processor.js.map +1 -1
  41. package/dist/agents/plugins/gemini/session/processors/gemini.conversations-processor.d.ts.map +1 -1
  42. package/dist/agents/plugins/gemini/session/processors/gemini.conversations-processor.js +2 -0
  43. package/dist/agents/plugins/gemini/session/processors/gemini.conversations-processor.js.map +1 -1
  44. package/dist/agents/plugins/kimi/kimi.plugin.d.ts +1 -1
  45. package/dist/agents/plugins/kimi/kimi.plugin.d.ts.map +1 -1
  46. package/dist/agents/plugins/kimi/kimi.plugin.js +3 -2
  47. package/dist/agents/plugins/kimi/kimi.plugin.js.map +1 -1
  48. package/dist/agents/plugins/opencode/opencode-dynamic-models.d.ts.map +1 -1
  49. package/dist/agents/plugins/opencode/opencode-dynamic-models.js +5 -1
  50. package/dist/agents/plugins/opencode/opencode-dynamic-models.js.map +1 -1
  51. package/dist/agents/plugins/opencode/opencode-model-configs.d.ts.map +1 -1
  52. package/dist/agents/plugins/opencode/opencode-model-configs.js +29 -0
  53. package/dist/agents/plugins/opencode/opencode-model-configs.js.map +1 -1
  54. package/dist/agents/plugins/opencode/opencode.plugin.d.ts.map +1 -1
  55. package/dist/agents/plugins/opencode/opencode.plugin.js +1 -0
  56. package/dist/agents/plugins/opencode/opencode.plugin.js.map +1 -1
  57. package/dist/agents/plugins/opencode/session/processors/opencode.conversations-processor.d.ts.map +1 -1
  58. package/dist/agents/plugins/opencode/session/processors/opencode.conversations-processor.js +2 -0
  59. package/dist/agents/plugins/opencode/session/processors/opencode.conversations-processor.js.map +1 -1
  60. package/dist/bin/proxy-daemon.js +3 -1
  61. package/dist/bin/proxy-daemon.js.map +1 -1
  62. package/dist/cli/commands/analytics/data-loader.d.ts +11 -3
  63. package/dist/cli/commands/analytics/data-loader.d.ts.map +1 -1
  64. package/dist/cli/commands/analytics/data-loader.js +33 -6
  65. package/dist/cli/commands/analytics/data-loader.js.map +1 -1
  66. package/dist/cli/commands/analytics/formatter.d.ts.map +1 -1
  67. package/dist/cli/commands/analytics/formatter.js +4 -1
  68. package/dist/cli/commands/analytics/formatter.js.map +1 -1
  69. package/dist/cli/commands/analytics/index.d.ts +3 -0
  70. package/dist/cli/commands/analytics/index.d.ts.map +1 -1
  71. package/dist/cli/commands/analytics/index.js +25 -7
  72. package/dist/cli/commands/analytics/index.js.map +1 -1
  73. package/dist/cli/commands/analytics/native-loader.d.ts +2 -0
  74. package/dist/cli/commands/analytics/native-loader.d.ts.map +1 -1
  75. package/dist/cli/commands/analytics/native-loader.js +85 -3
  76. package/dist/cli/commands/analytics/native-loader.js.map +1 -1
  77. package/dist/cli/commands/analytics/report/payload-builder.d.ts +3 -0
  78. package/dist/cli/commands/analytics/report/payload-builder.d.ts.map +1 -1
  79. package/dist/cli/commands/analytics/report/payload-builder.js +3 -0
  80. package/dist/cli/commands/analytics/report/payload-builder.js.map +1 -1
  81. package/dist/cli/commands/analytics/report/report-generator.d.ts +3 -2
  82. package/dist/cli/commands/analytics/report/report-generator.d.ts.map +1 -1
  83. package/dist/cli/commands/analytics/report/report-generator.js +9 -4
  84. package/dist/cli/commands/analytics/report/report-generator.js.map +1 -1
  85. package/dist/cli/commands/analytics/report/session-report.d.ts +24 -0
  86. package/dist/cli/commands/analytics/report/session-report.d.ts.map +1 -0
  87. package/dist/cli/commands/analytics/report/session-report.js +50 -0
  88. package/dist/cli/commands/analytics/report/session-report.js.map +1 -0
  89. package/dist/cli/commands/analytics/report/types.d.ts +3 -0
  90. package/dist/cli/commands/analytics/report/types.d.ts.map +1 -1
  91. package/dist/cli/commands/analytics/sources/sessions-source.js +3 -1
  92. package/dist/cli/commands/analytics/sources/sessions-source.js.map +1 -1
  93. package/dist/cli/commands/analytics/sources/types.d.ts +2 -0
  94. package/dist/cli/commands/analytics/sources/types.d.ts.map +1 -1
  95. package/dist/cli/commands/analytics/types.d.ts +2 -0
  96. package/dist/cli/commands/analytics/types.d.ts.map +1 -1
  97. package/dist/cli/commands/assistants/chat/index.d.ts.map +1 -1
  98. package/dist/cli/commands/assistants/chat/index.js +8 -0
  99. package/dist/cli/commands/assistants/chat/index.js.map +1 -1
  100. package/dist/cli/commands/assistants/chat/types.d.ts +1 -0
  101. package/dist/cli/commands/assistants/chat/types.d.ts.map +1 -1
  102. package/dist/cli/commands/assistants/setup/index.js +2 -2
  103. package/dist/cli/commands/assistants/setup/index.js.map +1 -1
  104. package/dist/cli/commands/doctor/checks/JWTAuthCheck.d.ts.map +1 -1
  105. package/dist/cli/commands/doctor/checks/JWTAuthCheck.js +4 -2
  106. package/dist/cli/commands/doctor/checks/JWTAuthCheck.js.map +1 -1
  107. package/dist/cli/commands/hook.d.ts.map +1 -1
  108. package/dist/cli/commands/hook.js +26 -0
  109. package/dist/cli/commands/hook.js.map +1 -1
  110. package/dist/cli/commands/install.d.ts.map +1 -1
  111. package/dist/cli/commands/install.js +26 -17
  112. package/dist/cli/commands/install.js.map +1 -1
  113. package/dist/cli/commands/models.js +1 -1
  114. package/dist/cli/commands/models.js.map +1 -1
  115. package/dist/cli/commands/proxy/connectors/vscode.d.ts +9 -0
  116. package/dist/cli/commands/proxy/connectors/vscode.d.ts.map +1 -0
  117. package/dist/cli/commands/proxy/connectors/vscode.js +209 -0
  118. package/dist/cli/commands/proxy/connectors/vscode.js.map +1 -0
  119. package/dist/cli/commands/proxy/daemon-manager.d.ts +2 -0
  120. package/dist/cli/commands/proxy/daemon-manager.d.ts.map +1 -1
  121. package/dist/cli/commands/proxy/daemon-manager.js +2 -0
  122. package/dist/cli/commands/proxy/daemon-manager.js.map +1 -1
  123. package/dist/cli/commands/proxy/health-check.js +1 -1
  124. package/dist/cli/commands/proxy/health-check.js.map +1 -1
  125. package/dist/cli/commands/proxy/index.d.ts.map +1 -1
  126. package/dist/cli/commands/proxy/index.js +213 -33
  127. package/dist/cli/commands/proxy/index.js.map +1 -1
  128. package/dist/cli/index.js +5 -1
  129. package/dist/cli/index.js.map +1 -1
  130. package/dist/env/types.d.ts +2 -1
  131. package/dist/env/types.d.ts.map +1 -1
  132. package/dist/providers/core/default-agent-hooks.d.ts +10 -0
  133. package/dist/providers/core/default-agent-hooks.d.ts.map +1 -0
  134. package/dist/providers/core/default-agent-hooks.js +54 -0
  135. package/dist/providers/core/default-agent-hooks.js.map +1 -0
  136. package/dist/providers/core/types.d.ts +20 -0
  137. package/dist/providers/core/types.d.ts.map +1 -1
  138. package/dist/providers/core/types.js +20 -0
  139. package/dist/providers/core/types.js.map +1 -1
  140. package/dist/providers/integration/setup-ui.d.ts +1 -1
  141. package/dist/providers/integration/setup-ui.d.ts.map +1 -1
  142. package/dist/providers/integration/setup-ui.js.map +1 -1
  143. package/dist/providers/plugins/jwt/index.d.ts +2 -0
  144. package/dist/providers/plugins/jwt/index.d.ts.map +1 -1
  145. package/dist/providers/plugins/jwt/index.js +6 -3
  146. package/dist/providers/plugins/jwt/index.js.map +1 -1
  147. package/dist/providers/plugins/jwt/jwt.models.d.ts +12 -0
  148. package/dist/providers/plugins/jwt/jwt.models.d.ts.map +1 -0
  149. package/dist/providers/plugins/jwt/jwt.models.js +28 -0
  150. package/dist/providers/plugins/jwt/jwt.models.js.map +1 -0
  151. package/dist/providers/plugins/jwt/jwt.setup-steps.d.ts +1 -1
  152. package/dist/providers/plugins/jwt/jwt.setup-steps.d.ts.map +1 -1
  153. package/dist/providers/plugins/jwt/jwt.setup-steps.js +10 -9
  154. package/dist/providers/plugins/jwt/jwt.setup-steps.js.map +1 -1
  155. package/dist/providers/plugins/jwt/jwt.template.d.ts +1 -1
  156. package/dist/providers/plugins/jwt/jwt.template.d.ts.map +1 -1
  157. package/dist/providers/plugins/jwt/jwt.template.js +9 -6
  158. package/dist/providers/plugins/jwt/jwt.template.js.map +1 -1
  159. package/dist/providers/plugins/jwt/jwt.utils.d.ts +16 -0
  160. package/dist/providers/plugins/jwt/jwt.utils.d.ts.map +1 -0
  161. package/dist/providers/plugins/jwt/jwt.utils.js +21 -0
  162. package/dist/providers/plugins/jwt/jwt.utils.js.map +1 -0
  163. package/dist/providers/plugins/sso/proxy/plugins/index.d.ts +14 -14
  164. package/dist/providers/plugins/sso/proxy/plugins/index.js +16 -16
  165. package/dist/providers/plugins/sso/proxy/plugins/index.js.map +1 -1
  166. package/dist/providers/plugins/sso/proxy/sso.proxy.d.ts.map +1 -1
  167. package/dist/providers/plugins/sso/proxy/sso.proxy.js +3 -2
  168. package/dist/providers/plugins/sso/proxy/sso.proxy.js.map +1 -1
  169. package/dist/providers/plugins/sso/session/processors/conversations/syncProcessor.d.ts.map +1 -1
  170. package/dist/providers/plugins/sso/session/processors/conversations/syncProcessor.js +4 -0
  171. package/dist/providers/plugins/sso/session/processors/conversations/syncProcessor.js.map +1 -1
  172. package/dist/providers/plugins/sso/sso.auth.d.ts.map +1 -1
  173. package/dist/providers/plugins/sso/sso.auth.js +10 -1
  174. package/dist/providers/plugins/sso/sso.auth.js.map +1 -1
  175. package/dist/providers/plugins/sso/sso.template.d.ts.map +1 -1
  176. package/dist/providers/plugins/sso/sso.template.js +6 -82
  177. package/dist/providers/plugins/sso/sso.template.js.map +1 -1
  178. package/dist/telemetry/runtime/DesktopTelemetryRuntime.d.ts.map +1 -1
  179. package/dist/telemetry/runtime/DesktopTelemetryRuntime.js +3 -1
  180. package/dist/telemetry/runtime/DesktopTelemetryRuntime.js.map +1 -1
  181. package/dist/utils/auth.d.ts +1 -1
  182. package/dist/utils/auth.d.ts.map +1 -1
  183. package/dist/utils/auth.js +18 -1
  184. package/dist/utils/auth.js.map +1 -1
  185. package/dist/utils/config.d.ts.map +1 -1
  186. package/dist/utils/config.js +16 -6
  187. package/dist/utils/config.js.map +1 -1
  188. package/dist/utils/errors.d.ts.map +1 -1
  189. package/dist/utils/errors.js +6 -3
  190. package/dist/utils/errors.js.map +1 -1
  191. package/package.json +16 -11
  192. package/scripts/postinstall.mjs +14 -2
  193. package/scripts/validate-secrets.js +20 -4
@@ -0,0 +1,209 @@
1
+ import { existsSync } from 'node:fs';
2
+ import { mkdir, readFile, rename, stat, unlink, writeFile } from 'node:fs/promises';
3
+ import { homedir } from 'node:os';
4
+ import { dirname, join } from 'node:path';
5
+ import { ConfigurationError } from '../../../../utils/errors.js';
6
+ const MANAGED_MODEL_NAME = 'CodeMie Profile Model';
7
+ const SECRET_REFERENCE_PATTERN = /^\$\{input:chat\.lm\.secret\.[^}]+\}$/;
8
+ function isRecord(value) {
9
+ return typeof value === 'object' && value !== null && !Array.isArray(value);
10
+ }
11
+ function isManagedModel(model, currentModelId) {
12
+ if (!isRecord(model))
13
+ return false;
14
+ return model.name === MANAGED_MODEL_NAME ||
15
+ (currentModelId !== undefined && model.id === currentModelId);
16
+ }
17
+ function isManagedProvider(provider) {
18
+ if (!isRecord(provider))
19
+ return false;
20
+ const hasManagedModel = Array.isArray(provider.models) &&
21
+ provider.models.some(model => isManagedModel(model));
22
+ return hasManagedModel || (provider.vendor === 'customendpoint' && provider.name === 'CodeMie');
23
+ }
24
+ export function isVsCodeSecretReference(value) {
25
+ return typeof value === 'string' && SECRET_REFERENCE_PATTERN.test(value);
26
+ }
27
+ function getVsCodeProductDir(insiders) {
28
+ const productName = insiders ? 'Code - Insiders' : 'Code';
29
+ if (process.platform === 'darwin') {
30
+ return join(homedir(), 'Library', 'Application Support', productName);
31
+ }
32
+ if (process.platform === 'win32') {
33
+ const roamingDir = process.env.APPDATA ?? join(homedir(), 'AppData', 'Roaming');
34
+ return join(roamingDir, productName);
35
+ }
36
+ if (process.platform === 'linux') {
37
+ const configDir = process.env.XDG_CONFIG_HOME ?? join(homedir(), '.config');
38
+ return join(configDir, productName);
39
+ }
40
+ throw new ConfigurationError(`VS Code BYOK configuration is not supported on platform "${process.platform}".`);
41
+ }
42
+ export function getVsCodeLanguageModelsPath(insiders = false) {
43
+ const productDir = getVsCodeProductDir(insiders);
44
+ if (!existsSync(productDir)) {
45
+ const edition = insiders ? 'VS Code Insiders' : 'VS Code';
46
+ const alternative = insiders
47
+ ? 'Remove --insiders to configure stable VS Code.'
48
+ : 'Use --insiders if only VS Code Insiders is installed.';
49
+ throw new ConfigurationError(`${edition} user data directory was not found at ${productDir}.\n${alternative}`);
50
+ }
51
+ return join(productDir, 'User', 'chatLanguageModels.json');
52
+ }
53
+ function buildManagedModel(proxyUrl, profileModel) {
54
+ return {
55
+ id: profileModel,
56
+ name: MANAGED_MODEL_NAME,
57
+ url: new URL('/v1/chat/completions', proxyUrl).toString(),
58
+ toolCalling: true,
59
+ vision: true,
60
+ streaming: true,
61
+ thinking: true,
62
+ supportsReasoningEffort: ['minimal', 'low', 'medium', 'high'],
63
+ reasoningEffortFormat: 'chat-completions',
64
+ maxInputTokens: 224000,
65
+ maxOutputTokens: 32000,
66
+ };
67
+ }
68
+ function reconcileModels(existingModels, managedModel) {
69
+ const models = Array.isArray(existingModels) ? existingModels : [];
70
+ const reconciled = [];
71
+ let inserted = false;
72
+ for (const model of models) {
73
+ if (isManagedModel(model, managedModel.id)) {
74
+ if (!inserted) {
75
+ reconciled.push(managedModel);
76
+ inserted = true;
77
+ }
78
+ continue;
79
+ }
80
+ reconciled.push(model);
81
+ }
82
+ if (!inserted)
83
+ reconciled.push(managedModel);
84
+ return reconciled;
85
+ }
86
+ function mergeManagedProviders(providers, proxyUrl, profileModel) {
87
+ const existingProvider = Object.assign({}, ...providers);
88
+ const existingModels = providers.flatMap(provider => Array.isArray(provider.models) ? provider.models : []);
89
+ const existingSettings = Object.assign({}, ...providers.map(provider => isRecord(provider.settings) ? provider.settings : {}));
90
+ const previousManagedModelIds = existingModels
91
+ .filter(model => isManagedModel(model))
92
+ .map(model => isRecord(model) ? model.id : undefined)
93
+ .filter((id) => typeof id === 'string');
94
+ for (const modelId of new Set([
95
+ profileModel,
96
+ ...previousManagedModelIds,
97
+ ])) {
98
+ delete existingSettings[modelId];
99
+ }
100
+ const existingSecretReference = providers
101
+ .map(provider => provider.apiKey)
102
+ .find(isVsCodeSecretReference);
103
+ const provider = {
104
+ ...existingProvider,
105
+ name: 'CodeMie',
106
+ vendor: 'customendpoint',
107
+ apiType: 'chat-completions',
108
+ models: reconcileModels(existingModels, buildManagedModel(proxyUrl, profileModel)),
109
+ };
110
+ // VS Code owns model configuration state and derives "medium" as the default for this
111
+ // non-Claude model. Writing the same setting here races with VS Code's editor and can
112
+ // produce duplicate `settings` keys in its unsaved buffer.
113
+ if (Object.keys(existingSettings).length > 0)
114
+ provider.settings = existingSettings;
115
+ else
116
+ delete provider.settings;
117
+ if (existingSecretReference)
118
+ provider.apiKey = existingSecretReference;
119
+ else
120
+ delete provider.apiKey;
121
+ return {
122
+ provider,
123
+ requiresSecretConfiguration: !existingSecretReference,
124
+ };
125
+ }
126
+ async function readProviders(configPath) {
127
+ if (!existsSync(configPath))
128
+ return [];
129
+ let raw;
130
+ try {
131
+ raw = await readFile(configPath, 'utf-8');
132
+ }
133
+ catch (error) {
134
+ throw new ConfigurationError(`Failed to read VS Code language model configuration at ${configPath}: ` +
135
+ `${error instanceof Error ? error.message : String(error)}`);
136
+ }
137
+ if (raw.trim().length === 0)
138
+ return [];
139
+ try {
140
+ const parsed = JSON.parse(raw);
141
+ if (!Array.isArray(parsed)) {
142
+ throw new ConfigurationError(`VS Code language model configuration must contain a JSON array: ${configPath}`);
143
+ }
144
+ return parsed;
145
+ }
146
+ catch (error) {
147
+ if (error instanceof ConfigurationError)
148
+ throw error;
149
+ throw new ConfigurationError(`VS Code language model configuration is not valid JSON and was not changed: ${configPath}`);
150
+ }
151
+ }
152
+ async function writeAtomically(configPath, content) {
153
+ const configDir = dirname(configPath);
154
+ await mkdir(configDir, { recursive: true });
155
+ const tempPath = `${configPath}.${process.pid}.tmp`;
156
+ const mode = existsSync(configPath)
157
+ ? (await stat(configPath)).mode & 0o777
158
+ : 0o600;
159
+ try {
160
+ await writeFile(tempPath, content, { encoding: 'utf-8', mode });
161
+ await rename(tempPath, configPath);
162
+ }
163
+ catch (error) {
164
+ try {
165
+ await unlink(tempPath);
166
+ }
167
+ catch {
168
+ // The temporary file may not have been created or may already be renamed.
169
+ }
170
+ throw error;
171
+ }
172
+ }
173
+ export async function writeVsCodeLanguageModelsConfig(proxyUrl, profileModel, insiders = false) {
174
+ return writeVsCodeLanguageModelsConfigAtPath(getVsCodeLanguageModelsPath(insiders), proxyUrl, profileModel);
175
+ }
176
+ export async function writeVsCodeLanguageModelsConfigAtPath(configPath, proxyUrl, profileModel) {
177
+ const normalizedProfileModel = profileModel.trim();
178
+ if (!normalizedProfileModel) {
179
+ throw new ConfigurationError('VS Code model configuration requires a profile model.');
180
+ }
181
+ const providers = await readProviders(configPath);
182
+ const managedProviderIndexes = providers
183
+ .map((provider, index) => isManagedProvider(provider) ? index : -1)
184
+ .filter(index => index >= 0);
185
+ const managedProviders = managedProviderIndexes
186
+ .map(index => providers[index])
187
+ .filter(isManagedProvider);
188
+ const { provider: managedProvider, requiresSecretConfiguration } = mergeManagedProviders(managedProviders, proxyUrl, normalizedProfileModel);
189
+ const firstManagedProviderIndex = managedProviderIndexes[0] ?? providers.length;
190
+ const managedProviderIndexSet = new Set(managedProviderIndexes);
191
+ const reconciledProviders = providers.flatMap((provider, index) => {
192
+ if (index === firstManagedProviderIndex)
193
+ return [managedProvider];
194
+ if (managedProviderIndexSet.has(index))
195
+ return [];
196
+ return [provider];
197
+ });
198
+ if (managedProviderIndexes.length === 0)
199
+ reconciledProviders.push(managedProvider);
200
+ try {
201
+ await writeAtomically(configPath, `${JSON.stringify(reconciledProviders, null, '\t')}\n`);
202
+ }
203
+ catch (error) {
204
+ throw new ConfigurationError(`Failed to update VS Code language model configuration at ${configPath}: ` +
205
+ `${error instanceof Error ? error.message : String(error)}`);
206
+ }
207
+ return { configPath, requiresSecretConfiguration };
208
+ }
209
+ //# sourceMappingURL=vscode.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"vscode.js","sourceRoot":"","sources":["../../../../../src/cli/commands/proxy/connectors/vscode.ts"],"names":[],"mappings":"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"}
@@ -7,6 +7,7 @@ export interface DaemonState {
7
7
  telemetryMode?: 'none' | 'claude-desktop';
8
8
  targetUrl?: string;
9
9
  provider?: string;
10
+ project?: string;
10
11
  clientType?: string;
11
12
  syncApiUrl?: string;
12
13
  syncCodeMieUrl?: string;
@@ -32,6 +33,7 @@ export interface SpawnOptions {
32
33
  port?: number;
33
34
  gatewayKey?: string;
34
35
  project?: string;
36
+ clientType?: string;
35
37
  telemetryMode?: 'none' | 'claude-desktop';
36
38
  syncApiUrl?: string;
37
39
  syncCodeMieUrl?: string;
@@ -1 +1 @@
1
- {"version":3,"file":"daemon-manager.d.ts","sourceRoot":"","sources":["../../../../src/cli/commands/proxy/daemon-manager.ts"],"names":[],"mappings":"AAQA,MAAM,WAAW,WAAW;IAC1B,GAAG,EAAE,MAAM,CAAC;IACZ,IAAI,EAAE,MAAM,CAAC;IACb,GAAG,EAAE,MAAM,CAAC;IACZ,OAAO,EAAE,MAAM,CAAC;IAChB,UAAU,EAAE,MAAM,CAAC;IACnB,aAAa,CAAC,EAAE,MAAM,GAAG,gBAAgB,CAAC;IAC1C,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,SAAS,EAAE,MAAM,CAAC;IAGlB,MAAM,CAAC,EAAE,IAAI,GAAG,WAAW,CAAC;IAC5B,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,gBAAgB,CAAC,EAAE,MAAM,CAAC;CAC3B;AAID,wBAAsB,SAAS,CAAC,SAAS,GAAE,MAA2B,GAAG,OAAO,CAAC,WAAW,GAAG,IAAI,CAAC,CAOnG;AAED,wBAAsB,UAAU,CAC9B,KAAK,EAAE,WAAW,EAClB,SAAS,GAAE,MAA2B,GACrC,OAAO,CAAC,IAAI,CAAC,CAIf;AAED,wBAAsB,UAAU,CAAC,SAAS,GAAE,MAA2B,GAAG,OAAO,CAAC,IAAI,CAAC,CAMtF;AAED,wBAAgB,cAAc,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAOnD;AAED,wBAAsB,WAAW,CAC/B,SAAS,GAAE,MAA2B,GACrC,OAAO,CAAC;IAAE,OAAO,EAAE,OAAO,CAAC;IAAC,KAAK,EAAE,WAAW,GAAG,IAAI,CAAA;CAAE,CAAC,CAU1D;AAED,MAAM,WAAW,YAAY;IAC3B,SAAS,EAAE,MAAM,CAAC;IAClB,QAAQ,EAAE,MAAM,CAAC;IACjB,OAAO,EAAE,MAAM,CAAC;IAChB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,aAAa,CAAC,EAAE,MAAM,GAAG,gBAAgB,CAAC;IAC1C,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,cAAc,CAAC,EAAE,MAAM,CAAC;CACzB;AAED,wBAAsB,WAAW,CAAC,IAAI,EAAE,YAAY,GAAG,OAAO,CAAC,WAAW,CAAC,CAmD1E;AAED,wBAAsB,UAAU,IAAI,OAAO,CAAC,IAAI,CAAC,CAqChD"}
1
+ {"version":3,"file":"daemon-manager.d.ts","sourceRoot":"","sources":["../../../../src/cli/commands/proxy/daemon-manager.ts"],"names":[],"mappings":"AAQA,MAAM,WAAW,WAAW;IAC1B,GAAG,EAAE,MAAM,CAAC;IACZ,IAAI,EAAE,MAAM,CAAC;IACb,GAAG,EAAE,MAAM,CAAC;IACZ,OAAO,EAAE,MAAM,CAAC;IAChB,UAAU,EAAE,MAAM,CAAC;IACnB,aAAa,CAAC,EAAE,MAAM,GAAG,gBAAgB,CAAC;IAC1C,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,SAAS,EAAE,MAAM,CAAC;IAGlB,MAAM,CAAC,EAAE,IAAI,GAAG,WAAW,CAAC;IAC5B,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,gBAAgB,CAAC,EAAE,MAAM,CAAC;CAC3B;AAID,wBAAsB,SAAS,CAAC,SAAS,GAAE,MAA2B,GAAG,OAAO,CAAC,WAAW,GAAG,IAAI,CAAC,CAOnG;AAED,wBAAsB,UAAU,CAC9B,KAAK,EAAE,WAAW,EAClB,SAAS,GAAE,MAA2B,GACrC,OAAO,CAAC,IAAI,CAAC,CAIf;AAED,wBAAsB,UAAU,CAAC,SAAS,GAAE,MAA2B,GAAG,OAAO,CAAC,IAAI,CAAC,CAMtF;AAED,wBAAgB,cAAc,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAOnD;AAED,wBAAsB,WAAW,CAC/B,SAAS,GAAE,MAA2B,GACrC,OAAO,CAAC;IAAE,OAAO,EAAE,OAAO,CAAC;IAAC,KAAK,EAAE,WAAW,GAAG,IAAI,CAAA;CAAE,CAAC,CAU1D;AAED,MAAM,WAAW,YAAY;IAC3B,SAAS,EAAE,MAAM,CAAC;IAClB,QAAQ,EAAE,MAAM,CAAC;IACjB,OAAO,EAAE,MAAM,CAAC;IAChB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,aAAa,CAAC,EAAE,MAAM,GAAG,gBAAgB,CAAC;IAC1C,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,cAAc,CAAC,EAAE,MAAM,CAAC;CACzB;AAED,wBAAsB,WAAW,CAAC,IAAI,EAAE,YAAY,GAAG,OAAO,CAAC,WAAW,CAAC,CAqD1E;AAED,wBAAsB,UAAU,IAAI,OAAO,CAAC,IAAI,CAAC,CAqChD"}
@@ -60,6 +60,7 @@ export async function spawnDaemon(opts) {
60
60
  '--profile', opts.profile,
61
61
  '--gateway-key', gatewayKey,
62
62
  ...(opts.project ? ['--project', opts.project] : []),
63
+ ...(opts.clientType ? ['--client-type', opts.clientType] : []),
63
64
  '--state-file', stateFile,
64
65
  ...(opts.port ? ['--port', String(opts.port)] : []),
65
66
  ...(opts.telemetryMode ? ['--telemetry-mode', opts.telemetryMode] : []),
@@ -74,6 +75,7 @@ export async function spawnDaemon(opts) {
74
75
  port: opts.port,
75
76
  gatewayKey,
76
77
  project: opts.project,
78
+ clientType: opts.clientType,
77
79
  telemetryMode: opts.telemetryMode,
78
80
  syncApiUrl: opts.syncApiUrl,
79
81
  syncCodeMieUrl: opts.syncCodeMieUrl
@@ -1 +1 @@
1
- {"version":3,"file":"daemon-manager.js","sourceRoot":"","sources":["../../../../src/cli/commands/proxy/daemon-manager.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"daemon-manager.js","sourceRoot":"","sources":["../../../../src/cli/commands/proxy/daemon-manager.ts"],"names":[],"mappings":"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"}
@@ -55,7 +55,7 @@ export async function checkProxyHealth(opts) {
55
55
  healthy: false,
56
56
  level: 'deep',
57
57
  code: 'unauthorized',
58
- reason: 'SSO session expired — run `codemie proxy connect desktop` to re-login.',
58
+ reason: 'SSO session expired — run `codemie profile login` and restart the proxy.',
59
59
  };
60
60
  }
61
61
  if (!res.ok) {
@@ -1 +1 @@
1
- {"version":3,"file":"health-check.js","sourceRoot":"","sources":["../../../../src/cli/commands/proxy/health-check.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"health-check.js","sourceRoot":"","sources":["../../../../src/cli/commands/proxy/health-check.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/cli/commands/proxy/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAsIpC,wBAAgB,kBAAkB,IAAI,OAAO,CAoT5C"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/cli/commands/proxy/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAmMpC,wBAAgB,kBAAkB,IAAI,OAAO,CAgf5C"}
@@ -2,6 +2,7 @@ import { Command } from 'commander';
2
2
  import chalk from 'chalk';
3
3
  import { ConfigLoader } from '../../../utils/config.js';
4
4
  import { ProviderRegistry } from '../../../providers/index.js';
5
+ import { displaySetupInstructions } from '../../../providers/integration/setup-ui.js';
5
6
  import { ConfigurationError, createErrorContext, formatErrorForUser, } from '../../../utils/errors.js';
6
7
  import { logger } from '../../../utils/logger.js';
7
8
  import { sanitizeLogArgs } from '../../../utils/security.js';
@@ -10,6 +11,7 @@ import { syncPluginSkills } from '../skills/setup/sync-plugin.js';
10
11
  import { checkStatus, readState, spawnDaemon, stopDaemon, } from './daemon-manager.js';
11
12
  import { writeDesktopConfig, getDesktopBaseDir, mapCanonicalToDesktop } from './connectors/desktop.js';
12
13
  import { fetchManagedMcpServers } from './connectors/managed-mcp-remote.js';
14
+ import { writeVsCodeLanguageModelsConfig } from './connectors/vscode.js';
13
15
  import { checkProxyHealth } from './health-check.js';
14
16
  import { printDesktopInspection } from './inspect-desktop.js';
15
17
  const DEFAULT_DAEMON_PORT = 4001;
@@ -24,7 +26,33 @@ function parsePortOption(value, fallback) {
24
26
  }
25
27
  return parsed;
26
28
  }
27
- async function resolveDesktopProxyConfig(profileName) {
29
+ function getEffectiveClientType(state) {
30
+ return state.clientType ?? (state.telemetryMode === 'claude-desktop'
31
+ ? 'claude-desktop'
32
+ : 'codemie-daemon');
33
+ }
34
+ function daemonMatchesRequest(state, requested) {
35
+ return state.profile === requested.profile &&
36
+ state.port === requested.port &&
37
+ state.project === requested.project &&
38
+ (!requested.provider || state.provider === requested.provider) &&
39
+ (!requested.targetUrl || state.targetUrl === requested.targetUrl) &&
40
+ getEffectiveClientType(state) === requested.clientType;
41
+ }
42
+ function formatDaemonConflict(state) {
43
+ const details = [
44
+ 'A proxy is already running with different settings:',
45
+ ` profile: ${state.profile}`,
46
+ ` port: ${state.port}`,
47
+ ];
48
+ if (state.clientType)
49
+ details.push(` client: ${state.clientType}`);
50
+ if (state.project)
51
+ details.push(` project: ${state.project}`);
52
+ details.push('', 'Stop it first:', ' codemie proxy stop');
53
+ return details.join('\n');
54
+ }
55
+ async function resolveSsoProxyConfig(profileName, clientLabel, connectTarget) {
28
56
  const listCodeMieProfiles = async () => {
29
57
  const profiles = await ConfigLoader.listProfiles(process.cwd());
30
58
  return profiles
@@ -42,9 +70,9 @@ async function resolveDesktopProxyConfig(profileName) {
42
70
  const details = available.length > 0
43
71
  ? `Profiles to try:\n- ${available.join('\n- ')}`
44
72
  : 'No SSO-backed CodeMie profiles were found. Run: codemie setup';
45
- throw new ConfigurationError(`Profile "${profileName}" cannot be used for Claude Desktop proxy because it is not SSO-backed.\n\n` +
73
+ throw new ConfigurationError(`Profile "${profileName}" cannot be used for ${clientLabel} proxy because it is not SSO-backed.\n\n` +
46
74
  `Next step:\n` +
47
- ` codemie proxy connect desktop --profile <name>\n\n` +
75
+ ` codemie proxy connect ${connectTarget} --profile <name>\n\n` +
48
76
  `${details}`);
49
77
  }
50
78
  return {
@@ -63,14 +91,14 @@ async function resolveDesktopProxyConfig(profileName) {
63
91
  const details = available.length > 0
64
92
  ? `Next step:\n` +
65
93
  ` codemie profile switch <codemie-profile>\n` +
66
- ` codemie proxy connect desktop\n\n` +
94
+ ` codemie proxy connect ${connectTarget}\n\n` +
67
95
  `Or run once with a specific profile:\n` +
68
- ` codemie proxy connect desktop --profile <codemie-profile>\n\n` +
96
+ ` codemie proxy connect ${connectTarget} --profile <codemie-profile>\n\n` +
69
97
  `Profiles to try:\n- ${available.join('\n- ')}`
70
98
  : `No SSO-backed CodeMie profiles were found.\n\n` +
71
99
  `Next step:\n` +
72
100
  ` codemie setup`;
73
- throw new ConfigurationError(`Claude Desktop proxy needs an SSO-backed CodeMie profile.\n` +
101
+ throw new ConfigurationError(`${clientLabel} proxy needs an SSO-backed CodeMie profile.\n` +
74
102
  `Current active profile: "${activeProfileName ?? 'unknown'}" (provider: ${providerName})\n\n` +
75
103
  `${details}`);
76
104
  }
@@ -111,34 +139,50 @@ export function createProxyCommand() {
111
139
  .option('--port <port>', `Fixed port to listen on (default: ${DEFAULT_DAEMON_PORT})`)
112
140
  .option('--profile <name>', 'Profile whose credentials to use')
113
141
  .action(async (opts) => {
114
- const { running, state } = await checkStatus();
115
- if (running && state) {
116
- console.log(chalk.green(`✓ Proxy already running at ${state.url} (profile: ${state.profile})`));
117
- return;
142
+ try {
143
+ const requestedPort = parsePortOption(opts.port, DEFAULT_DAEMON_PORT);
144
+ const config = await ConfigLoader.load(process.cwd(), opts.profile ? { name: opts.profile } : undefined);
145
+ const profile = config.name ?? 'default';
146
+ const requestedDaemon = {
147
+ profile,
148
+ port: requestedPort,
149
+ project: config.codeMieProject,
150
+ clientType: 'codemie-daemon',
151
+ provider: config.provider ?? 'ai-run-sso',
152
+ targetUrl: config.baseUrl,
153
+ };
154
+ const { running, state } = await checkStatus();
155
+ if (running && state) {
156
+ if (daemonMatchesRequest(state, requestedDaemon)) {
157
+ console.log(chalk.green(`✓ Proxy already running at ${state.url} (profile: ${state.profile})`));
158
+ return;
159
+ }
160
+ throw new ConfigurationError(formatDaemonConflict(state));
161
+ }
162
+ if (!config.baseUrl) {
163
+ throw new ConfigurationError('No API URL configured for this profile.\nRun: codemie setup');
164
+ }
165
+ await verifySsoCredentials(config.baseUrl, profile);
166
+ const cwd = process.cwd();
167
+ await Promise.allSettled([
168
+ syncRegisteredSkills(profile, cwd),
169
+ syncPluginSkills(),
170
+ ]);
171
+ console.log('Starting proxy daemon...');
172
+ const daemonState = await spawnDaemon({
173
+ targetUrl: config.baseUrl,
174
+ provider: config.provider ?? 'ai-run-sso',
175
+ profile,
176
+ port: requestedPort,
177
+ project: config.codeMieProject,
178
+ syncApiUrl: config.ssoConfig?.apiUrl,
179
+ syncCodeMieUrl: config.codeMieUrl,
180
+ });
181
+ console.log(chalk.green(`✓ Proxy running at ${daemonState.url} (profile: ${daemonState.profile})`));
118
182
  }
119
- const config = await ConfigLoader.load(process.cwd(), opts.profile ? { name: opts.profile } : undefined);
120
- if (!config.baseUrl) {
121
- console.error(chalk.red('✗ No API URL configured for this profile.'));
122
- console.error(' Run: codemie setup');
123
- process.exit(1);
183
+ catch (error) {
184
+ printProxyError(error, 'Failed to start proxy');
124
185
  }
125
- await verifySsoCredentials(config.baseUrl, config.name ?? 'default');
126
- const cwd = process.cwd();
127
- await Promise.allSettled([
128
- syncRegisteredSkills(config.name ?? 'default', cwd),
129
- syncPluginSkills(),
130
- ]);
131
- console.log('Starting proxy daemon...');
132
- const daemonState = await spawnDaemon({
133
- targetUrl: config.baseUrl,
134
- provider: config.provider ?? 'ai-run-sso',
135
- profile: config.name ?? 'default',
136
- port: parsePortOption(opts.port, DEFAULT_DAEMON_PORT),
137
- project: config.codeMieProject,
138
- syncApiUrl: config.ssoConfig?.apiUrl,
139
- syncCodeMieUrl: config.codeMieUrl,
140
- });
141
- console.log(chalk.green(`✓ Proxy running at ${daemonState.url} (profile: ${daemonState.profile})`));
142
186
  });
143
187
  // ── proxy stop ──────────────────────────────────────────────────────────────
144
188
  proxy
@@ -186,6 +230,12 @@ export function createProxyCommand() {
186
230
  console.log(` URL: ${state.url}`);
187
231
  console.log(` Port: ${state.port}`);
188
232
  console.log(` Profile: ${state.profile}`);
233
+ if (state.clientType) {
234
+ console.log(` Client: ${state.clientType}`);
235
+ }
236
+ if (state.project) {
237
+ console.log(` Project: ${state.project}`);
238
+ }
189
239
  console.log(` Uptime: ${uptime}`);
190
240
  // Surface a recorded give-up reason even when a fresh ping happens to pass.
191
241
  if (state.health === 'unhealthy' && state.healthReason && health.healthy) {
@@ -233,7 +283,7 @@ export function createProxyCommand() {
233
283
  }
234
284
  if (!running) {
235
285
  console.log('Starting proxy...');
236
- const { config, profileSource } = await resolveDesktopProxyConfig(opts.profile);
286
+ const { config, profileSource } = await resolveSsoProxyConfig(opts.profile, 'Claude Desktop', 'desktop');
237
287
  if (!config.baseUrl) {
238
288
  throw new ConfigurationError('No API URL configured. Run: codemie setup');
239
289
  }
@@ -341,6 +391,136 @@ export function createProxyCommand() {
341
391
  printProxyError(error, 'Failed to connect Claude Desktop proxy');
342
392
  }
343
393
  });
394
+ connect
395
+ .command('vscode')
396
+ .description('Configure VS Code BYOK to use the local proxy')
397
+ .option('--profile <name>', 'Profile whose credentials and model to use')
398
+ .option('--insiders', 'Configure VS Code Insiders instead of stable VS Code')
399
+ .option('--verbose', 'Show detailed connection info (URLs, config paths) for debugging')
400
+ .option('--force', 'Stop any existing proxy and start a fresh one, even if it looks healthy')
401
+ .action(async (opts) => {
402
+ const verbose = Boolean(opts.verbose);
403
+ let startedInThisRun = false;
404
+ try {
405
+ const { config, profileSource } = await resolveSsoProxyConfig(opts.profile, 'VS Code', 'vscode');
406
+ if (!config.baseUrl) {
407
+ throw new ConfigurationError('No API URL configured. Run: codemie setup');
408
+ }
409
+ const profile = config.name ?? 'default';
410
+ const profileModel = config.model?.trim();
411
+ if (!profileModel) {
412
+ throw new ConfigurationError(`Profile "${profile}" has no model configured.\nRun: codemie setup`);
413
+ }
414
+ if (verbose) {
415
+ console.log(chalk.cyan(`Using profile: ${profile} ` +
416
+ `(source: ${profileSource === 'explicit' ? '--profile' : 'active profile'})`));
417
+ }
418
+ else {
419
+ console.log(chalk.cyan(`Using profile: ${profile}`));
420
+ }
421
+ await verifySsoCredentials(config.baseUrl, profile);
422
+ const cwd = process.cwd();
423
+ await Promise.allSettled([
424
+ syncRegisteredSkills(profile, cwd),
425
+ syncPluginSkills(),
426
+ ]);
427
+ let { running, state } = await checkStatus();
428
+ const matchesRequestedDaemon = running && state
429
+ ? state.profile === profile &&
430
+ state.project === config.codeMieProject &&
431
+ state.provider === (config.provider ?? 'ai-run-sso') &&
432
+ state.targetUrl === config.baseUrl &&
433
+ getEffectiveClientType(state) === 'vscode-byok'
434
+ : false;
435
+ let unhealthy = false;
436
+ if (running && state && matchesRequestedDaemon && !opts.force) {
437
+ const health = await checkProxyHealth({
438
+ port: state.port,
439
+ gatewayKey: state.gatewayKey,
440
+ deep: true,
441
+ });
442
+ unhealthy = !health.healthy;
443
+ if (unhealthy) {
444
+ console.log(chalk.yellow(`Existing proxy is unhealthy (${health.reason ?? 'unknown'}). Restarting...`));
445
+ }
446
+ }
447
+ if (running && (!matchesRequestedDaemon || unhealthy || opts.force)) {
448
+ if (opts.force) {
449
+ console.log('Forcing a fresh proxy restart...');
450
+ }
451
+ else if (!matchesRequestedDaemon) {
452
+ console.log('Restarting proxy in VS Code mode...');
453
+ }
454
+ await stopDaemon();
455
+ running = false;
456
+ state = null;
457
+ }
458
+ if (!running) {
459
+ console.log('Starting proxy...');
460
+ state = await spawnDaemon({
461
+ targetUrl: config.baseUrl,
462
+ provider: config.provider ?? 'ai-run-sso',
463
+ profile,
464
+ port: DEFAULT_DAEMON_PORT,
465
+ project: config.codeMieProject,
466
+ clientType: 'vscode-byok',
467
+ syncApiUrl: config.ssoConfig?.apiUrl,
468
+ syncCodeMieUrl: config.codeMieUrl,
469
+ });
470
+ startedInThisRun = true;
471
+ console.log(verbose
472
+ ? chalk.green(`✓ Proxy started at ${state.url}`)
473
+ : chalk.green('✓ Proxy started'));
474
+ }
475
+ const result = await writeVsCodeLanguageModelsConfig(state.url, profileModel, Boolean(opts.insiders));
476
+ logger.info('[proxy] VS Code BYOK configuration written', ...sanitizeLogArgs({
477
+ configPath: result.configPath,
478
+ gatewayUrl: state.url,
479
+ profile: state.profile,
480
+ project: state.project,
481
+ model: profileModel,
482
+ clientType: state.clientType,
483
+ requiresSecretConfiguration: result.requiresSecretConfiguration,
484
+ }));
485
+ console.log(chalk.green(`✓ ${opts.insiders ? 'VS Code Insiders' : 'VS Code'} configured`));
486
+ if (verbose) {
487
+ console.log(` Config: ${result.configPath}`);
488
+ console.log(` Gateway: ${state.url}`);
489
+ console.log(` Model: ${profileModel}`);
490
+ console.log(` Project: ${config.codeMieProject || '(not configured)'}`);
491
+ }
492
+ if (result.requiresSecretConfiguration) {
493
+ displaySetupInstructions({
494
+ setupInstructions: [
495
+ 'One-time VS Code secret setup required:\n',
496
+ '1. Press ⇧⌘P (macOS) or Ctrl+Shift+P (Windows/Linux).',
497
+ '2. Run: Chat: Manage Language Models',
498
+ '3. Right-click CodeMie Profile Model → Update API Key',
499
+ `4. Enter API key: ${state.gatewayKey}\n`,
500
+ 'Reload VS Code to apply changes.',
501
+ ].join('\n'),
502
+ });
503
+ }
504
+ else {
505
+ console.log(chalk.dim(` If VS Code reports a missing or invalid key, open Chat: Manage Language Models, ` +
506
+ `then right-click CodeMie Profile Model → Update API Key and enter ${state.gatewayKey}.`));
507
+ }
508
+ }
509
+ catch (error) {
510
+ if (startedInThisRun) {
511
+ try {
512
+ await stopDaemon();
513
+ logger.info('[proxy] VS Code proxy startup rolled back after configuration failure');
514
+ }
515
+ catch (stopError) {
516
+ logger.warn('[proxy] Failed to stop VS Code proxy after configuration failure', ...sanitizeLogArgs({
517
+ error: stopError instanceof Error ? stopError.message : String(stopError),
518
+ }));
519
+ }
520
+ }
521
+ printProxyError(error, 'Failed to connect VS Code proxy');
522
+ }
523
+ });
344
524
  const inspect = new Command('inspect');
345
525
  inspect.description('Inspect proxy integrations and telemetry state');
346
526
  inspect