@codemieai/code 0.13.0 → 0.14.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.
- package/README.md +78 -4
- package/dist/agents/core/AgentCLI.d.ts.map +1 -1
- package/dist/agents/core/AgentCLI.js +53 -4
- package/dist/agents/core/AgentCLI.js.map +1 -1
- package/dist/agents/plugins/claude/claude.models.d.ts +12 -0
- package/dist/agents/plugins/claude/claude.models.d.ts.map +1 -0
- package/dist/agents/plugins/claude/claude.models.js +191 -0
- package/dist/agents/plugins/claude/claude.models.js.map +1 -0
- package/dist/agents/plugins/claude/claude.plugin.d.ts.map +1 -1
- package/dist/agents/plugins/claude/claude.plugin.js +45 -1
- package/dist/agents/plugins/claude/claude.plugin.js.map +1 -1
- package/dist/agents/plugins/codex/codex-models.d.ts +11 -0
- package/dist/agents/plugins/codex/codex-models.d.ts.map +1 -1
- package/dist/agents/plugins/codex/codex-models.js +71 -0
- package/dist/agents/plugins/codex/codex-models.js.map +1 -1
- package/dist/agents/plugins/gemini/gemini.paths.d.ts +11 -0
- package/dist/agents/plugins/gemini/gemini.paths.d.ts.map +1 -0
- package/dist/agents/plugins/gemini/gemini.paths.js +21 -0
- package/dist/agents/plugins/gemini/gemini.paths.js.map +1 -0
- package/dist/agents/plugins/gemini/gemini.session-adapter.d.ts +20 -0
- package/dist/agents/plugins/gemini/gemini.session-adapter.d.ts.map +1 -1
- package/dist/agents/plugins/gemini/gemini.session-adapter.js +119 -3
- package/dist/agents/plugins/gemini/gemini.session-adapter.js.map +1 -1
- package/dist/agents/plugins/pi/pi.models.d.ts +14 -0
- package/dist/agents/plugins/pi/pi.models.d.ts.map +1 -1
- package/dist/agents/plugins/pi/pi.models.js +89 -0
- package/dist/agents/plugins/pi/pi.models.js.map +1 -1
- package/dist/cli/commands/analytics/agent-labels.d.ts.map +1 -1
- package/dist/cli/commands/analytics/agent-labels.js +1 -0
- package/dist/cli/commands/analytics/agent-labels.js.map +1 -1
- package/dist/cli/commands/analytics/aggregator.js +1 -1
- package/dist/cli/commands/analytics/aggregator.js.map +1 -1
- package/dist/cli/commands/analytics/cost/cost-calculator.d.ts +1 -1
- package/dist/cli/commands/analytics/cost/cost-calculator.d.ts.map +1 -1
- package/dist/cli/commands/analytics/cost/cost-enricher.js +2 -2
- package/dist/cli/commands/analytics/cost/cost-enricher.js.map +1 -1
- package/dist/cli/commands/analytics/data-loader.d.ts.map +1 -1
- package/dist/cli/commands/analytics/data-loader.js +9 -0
- package/dist/cli/commands/analytics/data-loader.js.map +1 -1
- package/dist/cli/commands/analytics/native-loader.js +1 -1
- package/dist/cli/commands/analytics/native-loader.js.map +1 -1
- package/dist/cli/commands/analytics/otel-loader.js +1 -1
- package/dist/cli/commands/analytics/otel-loader.js.map +1 -1
- package/dist/cli/commands/analytics/report/client/app.js +1 -1
- package/dist/cli/commands/hook.d.ts.map +1 -1
- package/dist/cli/commands/hook.js +70 -1
- package/dist/cli/commands/hook.js.map +1 -1
- package/dist/cli/commands/proxy/connect-orchestrator.d.ts +95 -0
- package/dist/cli/commands/proxy/connect-orchestrator.d.ts.map +1 -0
- package/dist/cli/commands/proxy/connect-orchestrator.js +501 -0
- package/dist/cli/commands/proxy/connect-orchestrator.js.map +1 -0
- package/dist/cli/commands/proxy/connectors/codex-config-toml.d.ts +81 -0
- package/dist/cli/commands/proxy/connectors/codex-config-toml.d.ts.map +1 -0
- package/dist/cli/commands/proxy/connectors/codex-config-toml.js +218 -0
- package/dist/cli/commands/proxy/connectors/codex-config-toml.js.map +1 -0
- package/dist/cli/commands/proxy/connectors/codex-desktop.d.ts +85 -0
- package/dist/cli/commands/proxy/connectors/codex-desktop.d.ts.map +1 -0
- package/dist/cli/commands/proxy/connectors/codex-desktop.js +299 -0
- package/dist/cli/commands/proxy/connectors/codex-desktop.js.map +1 -0
- package/dist/cli/commands/proxy/connectors/desktop.d.ts +94 -4
- package/dist/cli/commands/proxy/connectors/desktop.d.ts.map +1 -1
- package/dist/cli/commands/proxy/connectors/desktop.js +244 -17
- package/dist/cli/commands/proxy/connectors/desktop.js.map +1 -1
- package/dist/cli/commands/proxy/connectors/managed-mcp-remote.d.ts +25 -0
- package/dist/cli/commands/proxy/connectors/managed-mcp-remote.d.ts.map +1 -1
- package/dist/cli/commands/proxy/connectors/managed-mcp-remote.js +59 -1
- package/dist/cli/commands/proxy/connectors/managed-mcp-remote.js.map +1 -1
- package/dist/cli/commands/proxy/connectors/vscode-claude-code.d.ts +26 -0
- package/dist/cli/commands/proxy/connectors/vscode-claude-code.d.ts.map +1 -0
- package/dist/cli/commands/proxy/connectors/vscode-claude-code.js +132 -0
- package/dist/cli/commands/proxy/connectors/vscode-claude-code.js.map +1 -0
- package/dist/cli/commands/proxy/connectors/vscode.d.ts +2 -0
- package/dist/cli/commands/proxy/connectors/vscode.d.ts.map +1 -1
- package/dist/cli/commands/proxy/connectors/vscode.js +2 -2
- package/dist/cli/commands/proxy/connectors/vscode.js.map +1 -1
- package/dist/cli/commands/proxy/disconnect-orchestrator.d.ts +8 -0
- package/dist/cli/commands/proxy/disconnect-orchestrator.d.ts.map +1 -0
- package/dist/cli/commands/proxy/disconnect-orchestrator.js +43 -0
- package/dist/cli/commands/proxy/disconnect-orchestrator.js.map +1 -0
- package/dist/cli/commands/proxy/index.d.ts.map +1 -1
- package/dist/cli/commands/proxy/index.js +91 -361
- package/dist/cli/commands/proxy/index.js.map +1 -1
- package/dist/cli/index.js +7 -7
- package/dist/providers/integration/setup-ui.d.ts +14 -2
- package/dist/providers/integration/setup-ui.d.ts.map +1 -1
- package/dist/providers/integration/setup-ui.js +70 -33
- package/dist/providers/integration/setup-ui.js.map +1 -1
- package/dist/providers/plugins/anthropic-subscription/anthropic-subscription.setup-steps.d.ts.map +1 -1
- package/dist/providers/plugins/anthropic-subscription/anthropic-subscription.setup-steps.js +9 -2
- package/dist/providers/plugins/anthropic-subscription/anthropic-subscription.setup-steps.js.map +1 -1
- package/dist/providers/plugins/anthropic-subscription/anthropic-subscription.template.d.ts.map +1 -1
- package/dist/providers/plugins/anthropic-subscription/anthropic-subscription.template.js +18 -28
- package/dist/providers/plugins/anthropic-subscription/anthropic-subscription.template.js.map +1 -1
- package/dist/providers/plugins/bedrock/bedrock.setup-steps.d.ts.map +1 -1
- package/dist/providers/plugins/bedrock/bedrock.setup-steps.js +4 -4
- package/dist/providers/plugins/bedrock/bedrock.setup-steps.js.map +1 -1
- package/dist/providers/plugins/litellm/litellm.setup-steps.d.ts.map +1 -1
- package/dist/providers/plugins/litellm/litellm.setup-steps.js +3 -1
- package/dist/providers/plugins/litellm/litellm.setup-steps.js.map +1 -1
- package/dist/providers/plugins/moonshot-subscription/moonshot-subscription.setup-steps.d.ts.map +1 -1
- package/dist/providers/plugins/moonshot-subscription/moonshot-subscription.setup-steps.js +5 -1
- package/dist/providers/plugins/moonshot-subscription/moonshot-subscription.setup-steps.js.map +1 -1
- package/dist/providers/plugins/ollama/ollama.setup-steps.d.ts.map +1 -1
- package/dist/providers/plugins/ollama/ollama.setup-steps.js +3 -2
- package/dist/providers/plugins/ollama/ollama.setup-steps.js.map +1 -1
- package/dist/providers/plugins/sso/proxy/plugins/codex-encrypted-content-sanitizer.plugin.d.ts.map +1 -1
- package/dist/providers/plugins/sso/proxy/plugins/codex-encrypted-content-sanitizer.plugin.js +4 -0
- package/dist/providers/plugins/sso/proxy/plugins/codex-encrypted-content-sanitizer.plugin.js.map +1 -1
- package/dist/providers/plugins/sso/proxy/plugins/codex-model-resolver.d.ts +45 -0
- package/dist/providers/plugins/sso/proxy/plugins/codex-model-resolver.d.ts.map +1 -0
- package/dist/providers/plugins/sso/proxy/plugins/codex-model-resolver.js +129 -0
- package/dist/providers/plugins/sso/proxy/plugins/codex-model-resolver.js.map +1 -0
- package/dist/providers/plugins/sso/proxy/plugins/codex-request-normalizer.plugin.d.ts +27 -0
- package/dist/providers/plugins/sso/proxy/plugins/codex-request-normalizer.plugin.d.ts.map +1 -0
- package/dist/providers/plugins/sso/proxy/plugins/codex-request-normalizer.plugin.js +242 -0
- package/dist/providers/plugins/sso/proxy/plugins/codex-request-normalizer.plugin.js.map +1 -0
- package/dist/providers/plugins/sso/proxy/plugins/index.d.ts +2 -1
- package/dist/providers/plugins/sso/proxy/plugins/index.d.ts.map +1 -1
- package/dist/providers/plugins/sso/proxy/plugins/index.js +3 -1
- package/dist/providers/plugins/sso/proxy/plugins/index.js.map +1 -1
- package/dist/providers/plugins/sso/session/processors/metrics/metrics-api-client.d.ts.map +1 -1
- package/dist/providers/plugins/sso/session/processors/metrics/metrics-api-client.js +15 -1
- package/dist/providers/plugins/sso/session/processors/metrics/metrics-api-client.js.map +1 -1
- package/dist/providers/plugins/sso/sso.auth.d.ts.map +1 -1
- package/dist/providers/plugins/sso/sso.auth.js +3 -0
- package/dist/providers/plugins/sso/sso.auth.js.map +1 -1
- package/dist/telemetry/clients/claude-desktop/claude-desktop.discovery.d.ts.map +1 -1
- package/dist/telemetry/clients/claude-desktop/claude-desktop.discovery.js +13 -1
- package/dist/telemetry/clients/claude-desktop/claude-desktop.discovery.js.map +1 -1
- package/dist/telemetry/clients/claude-desktop/claude-desktop.paths.d.ts +12 -0
- package/dist/telemetry/clients/claude-desktop/claude-desktop.paths.d.ts.map +1 -1
- package/dist/telemetry/clients/claude-desktop/claude-desktop.paths.js +28 -1
- package/dist/telemetry/clients/claude-desktop/claude-desktop.paths.js.map +1 -1
- package/dist/utils/analytics-auth-status.d.ts +48 -0
- package/dist/utils/analytics-auth-status.d.ts.map +1 -0
- package/dist/utils/analytics-auth-status.js +89 -0
- package/dist/utils/analytics-auth-status.js.map +1 -0
- package/dist/utils/model-normalizer.d.ts.map +1 -0
- package/dist/utils/model-normalizer.js.map +1 -0
- package/dist/utils/pricing.d.ts.map +1 -0
- package/dist/{cli/commands/analytics/cost → utils}/pricing.js +3 -3
- package/dist/utils/pricing.js.map +1 -0
- package/package.json +1 -1
- package/scripts/copy-plugins.js +3 -3
- package/dist/cli/commands/analytics/cost/pricing.d.ts.map +0 -1
- package/dist/cli/commands/analytics/cost/pricing.js.map +0 -1
- package/dist/cli/commands/analytics/model-normalizer.d.ts.map +0 -1
- package/dist/cli/commands/analytics/model-normalizer.js.map +0 -1
- /package/dist/{cli/commands/analytics → utils}/model-normalizer.d.ts +0 -0
- /package/dist/{cli/commands/analytics → utils}/model-normalizer.js +0 -0
- /package/dist/{cli/commands/analytics/cost → utils}/pricing.d.ts +0 -0
- /package/dist/{cli/commands/analytics/cost → utils}/pricing.json +0 -0
|
@@ -6,6 +6,36 @@ import { sanitizeLogArgs } from '../../../../utils/security.js';
|
|
|
6
6
|
const VALID_NAME = /^[a-zA-Z0-9_-]+$/;
|
|
7
7
|
const CANONICAL_TRANSPORTS = new Set(['http', 'sse', 'stdio']);
|
|
8
8
|
const CANONICAL_AUTH = new Set(['oauth', 'none']);
|
|
9
|
+
function isNonEmptyString(value) {
|
|
10
|
+
return typeof value === 'string' && value.trim().length > 0;
|
|
11
|
+
}
|
|
12
|
+
/**
|
|
13
|
+
* Sanity-gate an oauth object: require the fields the client cannot run a flow
|
|
14
|
+
* without, type-check the optional ones, and let every unknown key through
|
|
15
|
+
* untouched. This is deliberately not an allowlist.
|
|
16
|
+
*/
|
|
17
|
+
export function isValidOAuthConfig(value) {
|
|
18
|
+
if (typeof value !== 'object' || value === null || Array.isArray(value))
|
|
19
|
+
return false;
|
|
20
|
+
const o = value;
|
|
21
|
+
if (!isNonEmptyString(o.clientId))
|
|
22
|
+
return false;
|
|
23
|
+
if (!isNonEmptyString(o.authorizationUrl))
|
|
24
|
+
return false;
|
|
25
|
+
if (!isNonEmptyString(o.tokenUrl))
|
|
26
|
+
return false;
|
|
27
|
+
if (o.scope !== undefined && o.scope !== null && typeof o.scope !== 'string')
|
|
28
|
+
return false;
|
|
29
|
+
if (o.callbackHost !== undefined && o.callbackHost !== null && typeof o.callbackHost !== 'string')
|
|
30
|
+
return false;
|
|
31
|
+
if (o.callbackPort !== undefined && o.callbackPort !== null) {
|
|
32
|
+
if (typeof o.callbackPort !== 'number' || !Number.isInteger(o.callbackPort))
|
|
33
|
+
return false;
|
|
34
|
+
if (o.callbackPort < 1 || o.callbackPort > 65535)
|
|
35
|
+
return false;
|
|
36
|
+
}
|
|
37
|
+
return true;
|
|
38
|
+
}
|
|
9
39
|
function isValidCanonicalEntry(value) {
|
|
10
40
|
if (typeof value !== 'object' || value === null)
|
|
11
41
|
return false;
|
|
@@ -20,6 +50,18 @@ function isValidCanonicalEntry(value) {
|
|
|
20
50
|
// optionals as `null`, so treat null the same as undefined ("absent").
|
|
21
51
|
if (e.auth !== undefined && e.auth !== null && (typeof e.auth !== 'string' || !CANONICAL_AUTH.has(e.auth)))
|
|
22
52
|
return false;
|
|
53
|
+
// `oauth` accepts a boolean flag or a structured config object. A malformed
|
|
54
|
+
// object invalidates the WHOLE entry: forwarding half a client configuration
|
|
55
|
+
// would make the client fail the flow with no diagnosis.
|
|
56
|
+
if (e.oauth !== undefined && e.oauth !== null) {
|
|
57
|
+
if (typeof e.oauth === 'object') {
|
|
58
|
+
if (!isValidOAuthConfig(e.oauth))
|
|
59
|
+
return false;
|
|
60
|
+
}
|
|
61
|
+
else if (typeof e.oauth !== 'boolean') {
|
|
62
|
+
return false;
|
|
63
|
+
}
|
|
64
|
+
}
|
|
23
65
|
if (e.description !== undefined && e.description !== null && typeof e.description !== 'string')
|
|
24
66
|
return false;
|
|
25
67
|
if (e.clients !== undefined && e.clients !== null &&
|
|
@@ -33,6 +75,12 @@ function pickCanonicalFields(e) {
|
|
|
33
75
|
out.url = e.url;
|
|
34
76
|
if (e.auth !== undefined && e.auth !== null)
|
|
35
77
|
out.auth = e.auth;
|
|
78
|
+
// Copy the oauth value wholesale instead of rebuilding it from known keys:
|
|
79
|
+
// that is what lets a future backend field reach the client without a CLI
|
|
80
|
+
// release. The shallow copy detaches it from the parsed response payload.
|
|
81
|
+
if (e.oauth !== undefined && e.oauth !== null) {
|
|
82
|
+
out.oauth = typeof e.oauth === 'object' ? { ...e.oauth } : e.oauth;
|
|
83
|
+
}
|
|
36
84
|
if (e.description !== undefined && e.description !== null)
|
|
37
85
|
out.description = e.description;
|
|
38
86
|
if (Array.isArray(e.clients))
|
|
@@ -84,7 +132,17 @@ export async function fetchManagedMcpServers(client, codeMieUrl) {
|
|
|
84
132
|
// caller does not mistake it for an authoritative "empty catalog".
|
|
85
133
|
if (!Array.isArray(json))
|
|
86
134
|
return null;
|
|
87
|
-
|
|
135
|
+
const valid = json.filter(isValidCanonicalEntry).map(pickCanonicalFields);
|
|
136
|
+
const dropped = json.length - valid.length;
|
|
137
|
+
if (dropped > 0) {
|
|
138
|
+
logger.warn('[proxy] Managed MCP entries dropped by validation', ...sanitizeLogArgs({ received: json.length, kept: valid.length, dropped }));
|
|
139
|
+
}
|
|
140
|
+
// A non-empty payload where NOTHING survived is a backend contract failure,
|
|
141
|
+
// not an authoritative empty catalog. Returning [] here would make
|
|
142
|
+
// writeDesktopConfig revoke every org MCP server the tenant has.
|
|
143
|
+
if (json.length > 0 && valid.length === 0)
|
|
144
|
+
return null;
|
|
145
|
+
return valid;
|
|
88
146
|
}
|
|
89
147
|
catch (error) {
|
|
90
148
|
logger.warn('[proxy] Managed MCP fetch threw', ...sanitizeLogArgs({ error: error instanceof Error ? error.message : String(error) }));
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"managed-mcp-remote.js","sourceRoot":"","sources":["../../../../../src/cli/commands/proxy/connectors/managed-mcp-remote.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,sCAAsC,CAAC;AAClE,OAAO,EAAE,gBAAgB,EAAE,MAAM,0CAA0C,CAAC;AAC5E,OAAO,EAAE,UAAU,EAAE,MAAM,qCAAqC,CAAC;AACjE,OAAO,EAAE,MAAM,EAAE,MAAM,mBAAmB,CAAC;AAC3C,OAAO,EAAE,eAAe,EAAE,MAAM,qBAAqB,CAAC;AAEtD,MAAM,UAAU,GAAG,kBAAkB,CAAC;AACtC,MAAM,oBAAoB,GAAG,IAAI,GAAG,CAAC,CAAC,MAAM,EAAE,KAAK,EAAE,OAAO,CAAC,CAAC,CAAC;AAC/D,MAAM,cAAc,GAAG,IAAI,GAAG,CAAC,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC,CAAC;
|
|
1
|
+
{"version":3,"file":"managed-mcp-remote.js","sourceRoot":"","sources":["../../../../../src/cli/commands/proxy/connectors/managed-mcp-remote.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
export interface WriteVsCodeClaudeCodeConfigResult {
|
|
2
|
+
written: boolean;
|
|
3
|
+
path: string;
|
|
4
|
+
}
|
|
5
|
+
/**
|
|
6
|
+
* Resolve the VS Code Claude Code extension's `settings.json` path for the given
|
|
7
|
+
* VS Code edition, mirroring `vscode.ts`'s `getVsCodeLanguageModelsPath` — including its
|
|
8
|
+
* throw when the product's user-data directory doesn't exist, so a missing edition fails
|
|
9
|
+
* loudly instead of silently writing into a directory tree nothing will ever read.
|
|
10
|
+
*/
|
|
11
|
+
export declare function getVsCodeClaudeCodeSettingsPath(insiders?: boolean): string;
|
|
12
|
+
/**
|
|
13
|
+
* Write CodeMie's managed `claudeCode.*` keys into the VS Code Claude Code extension's
|
|
14
|
+
* `settings.json` at an explicit path. Preserves every unrelated top-level key and every
|
|
15
|
+
* unrelated `claudeCode.environmentVariables` entry (e.g. keys the user set manually) —
|
|
16
|
+
* only `ANTHROPIC_BASE_URL`/`ANTHROPIC_AUTH_TOKEN` entries and `disableLoginPrompt` are
|
|
17
|
+
* CodeMie-managed and get overwritten.
|
|
18
|
+
*/
|
|
19
|
+
export declare function writeVsCodeClaudeCodeConfigAtPath(configPath: string, gatewayUrl: string, gatewayKey: string): Promise<WriteVsCodeClaudeCodeConfigResult>;
|
|
20
|
+
/**
|
|
21
|
+
* Write CodeMie's managed `claudeCode.*` keys into the current user's VS Code (or VS Code
|
|
22
|
+
* Insiders) `settings.json`, so the bundled Claude Code extension routes through the local
|
|
23
|
+
* gateway daemon without a Claude.ai OAuth login prompt.
|
|
24
|
+
*/
|
|
25
|
+
export declare function writeVsCodeClaudeCodeConfig(gatewayUrl: string, gatewayKey: string, insiders?: boolean): Promise<WriteVsCodeClaudeCodeConfigResult>;
|
|
26
|
+
//# sourceMappingURL=vscode-claude-code.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"vscode-claude-code.d.ts","sourceRoot":"","sources":["../../../../../src/cli/commands/proxy/connectors/vscode-claude-code.ts"],"names":[],"mappings":"AAYA,MAAM,WAAW,iCAAiC;IAChD,OAAO,EAAE,OAAO,CAAC;IACjB,IAAI,EAAE,MAAM,CAAC;CACd;AAQD;;;;;GAKG;AACH,wBAAgB,+BAA+B,CAAC,QAAQ,UAAQ,GAAG,MAAM,CAYxE;AAwFD;;;;;;GAMG;AACH,wBAAsB,iCAAiC,CACrD,UAAU,EAAE,MAAM,EAClB,UAAU,EAAE,MAAM,EAClB,UAAU,EAAE,MAAM,GACjB,OAAO,CAAC,iCAAiC,CAAC,CAiC5C;AAED;;;;GAIG;AACH,wBAAsB,2BAA2B,CAC/C,UAAU,EAAE,MAAM,EAClB,UAAU,EAAE,MAAM,EAClB,QAAQ,UAAQ,GACf,OAAO,CAAC,iCAAiC,CAAC,CAM5C"}
|
|
@@ -0,0 +1,132 @@
|
|
|
1
|
+
import { existsSync } from 'node:fs';
|
|
2
|
+
import { readFile } from 'node:fs/promises';
|
|
3
|
+
import { join } from 'node:path';
|
|
4
|
+
import { ConfigurationError } from '../../../../utils/errors.js';
|
|
5
|
+
import { logger } from '../../../../utils/logger.js';
|
|
6
|
+
import { sanitizeLogArgs } from '../../../../utils/security.js';
|
|
7
|
+
import { getVsCodeProductDir, writeAtomically } from './vscode.js';
|
|
8
|
+
const ANTHROPIC_BASE_URL_KEY = 'ANTHROPIC_BASE_URL';
|
|
9
|
+
const ANTHROPIC_AUTH_TOKEN_KEY = 'ANTHROPIC_AUTH_TOKEN';
|
|
10
|
+
const MANAGED_ENV_VAR_NAMES = new Set([ANTHROPIC_BASE_URL_KEY, ANTHROPIC_AUTH_TOKEN_KEY]);
|
|
11
|
+
/**
|
|
12
|
+
* Resolve the VS Code Claude Code extension's `settings.json` path for the given
|
|
13
|
+
* VS Code edition, mirroring `vscode.ts`'s `getVsCodeLanguageModelsPath` — including its
|
|
14
|
+
* throw when the product's user-data directory doesn't exist, so a missing edition fails
|
|
15
|
+
* loudly instead of silently writing into a directory tree nothing will ever read.
|
|
16
|
+
*/
|
|
17
|
+
export function getVsCodeClaudeCodeSettingsPath(insiders = false) {
|
|
18
|
+
const productDir = getVsCodeProductDir(insiders);
|
|
19
|
+
if (!existsSync(productDir)) {
|
|
20
|
+
const edition = insiders ? 'VS Code Insiders' : 'VS Code';
|
|
21
|
+
const alternative = insiders
|
|
22
|
+
? 'Remove --insiders to configure stable VS Code.'
|
|
23
|
+
: 'Use --insiders if only VS Code Insiders is installed.';
|
|
24
|
+
throw new ConfigurationError(`${edition} user data directory was not found at ${productDir}.\n${alternative}`);
|
|
25
|
+
}
|
|
26
|
+
return join(productDir, 'User', 'settings.json');
|
|
27
|
+
}
|
|
28
|
+
async function readSettings(configPath) {
|
|
29
|
+
if (!existsSync(configPath))
|
|
30
|
+
return {};
|
|
31
|
+
let raw;
|
|
32
|
+
try {
|
|
33
|
+
raw = await readFile(configPath, 'utf-8');
|
|
34
|
+
}
|
|
35
|
+
catch (error) {
|
|
36
|
+
throw new ConfigurationError(`Failed to read VS Code settings at ${configPath}: ` +
|
|
37
|
+
`${error instanceof Error ? error.message : String(error)}`);
|
|
38
|
+
}
|
|
39
|
+
if (raw.trim().length === 0)
|
|
40
|
+
return {};
|
|
41
|
+
try {
|
|
42
|
+
const parsed = JSON.parse(raw);
|
|
43
|
+
if (typeof parsed !== 'object' || parsed === null || Array.isArray(parsed)) {
|
|
44
|
+
throw new ConfigurationError(`VS Code settings must contain a JSON object: ${configPath}`);
|
|
45
|
+
}
|
|
46
|
+
return parsed;
|
|
47
|
+
}
|
|
48
|
+
catch (error) {
|
|
49
|
+
if (error instanceof ConfigurationError)
|
|
50
|
+
throw error;
|
|
51
|
+
throw new ConfigurationError(`VS Code settings at ${configPath} are not valid JSON and were not changed.`);
|
|
52
|
+
}
|
|
53
|
+
}
|
|
54
|
+
function isEnvVarEntry(value) {
|
|
55
|
+
return typeof value === 'object' && value !== null && !Array.isArray(value);
|
|
56
|
+
}
|
|
57
|
+
/**
|
|
58
|
+
* Upsert the two CodeMie-managed entries into an existing `claudeCode.environmentVariables`
|
|
59
|
+
* value, tolerating a malformed existing value instead of crashing or silently discarding data:
|
|
60
|
+
* - A non-array `existing` is treated as empty (logged, not silently dropped).
|
|
61
|
+
* - Non-object array entries (e.g. `null`, from a manual edit) are dropped (logged, not silently).
|
|
62
|
+
* - Entries are de-duplicated by `name`, keeping only the latest occurrence, so a pre-existing
|
|
63
|
+
* duplicate managed entry (e.g. from an older buggy write) never leaves a stale copy behind.
|
|
64
|
+
*/
|
|
65
|
+
function upsertManagedEnvVars(existing, gatewayUrl, gatewayKey) {
|
|
66
|
+
if (existing !== undefined && !Array.isArray(existing)) {
|
|
67
|
+
logger.warn('[proxy] Ignoring malformed claudeCode.environmentVariables (expected an array); replacing it', ...sanitizeLogArgs({ existingType: typeof existing }));
|
|
68
|
+
}
|
|
69
|
+
const sourceEntries = Array.isArray(existing) ? existing : [];
|
|
70
|
+
const droppedCount = sourceEntries.filter(entry => !isEnvVarEntry(entry)).length;
|
|
71
|
+
if (droppedCount > 0) {
|
|
72
|
+
logger.warn('[proxy] Dropping malformed claudeCode.environmentVariables entries', ...sanitizeLogArgs({ droppedCount }));
|
|
73
|
+
}
|
|
74
|
+
const unnamed = [];
|
|
75
|
+
const byName = new Map();
|
|
76
|
+
for (const entry of sourceEntries) {
|
|
77
|
+
if (!isEnvVarEntry(entry))
|
|
78
|
+
continue;
|
|
79
|
+
if (typeof entry.name === 'string') {
|
|
80
|
+
byName.set(entry.name, entry);
|
|
81
|
+
}
|
|
82
|
+
else {
|
|
83
|
+
unnamed.push(entry);
|
|
84
|
+
}
|
|
85
|
+
}
|
|
86
|
+
const managedValues = {
|
|
87
|
+
[ANTHROPIC_BASE_URL_KEY]: gatewayUrl,
|
|
88
|
+
[ANTHROPIC_AUTH_TOKEN_KEY]: gatewayKey,
|
|
89
|
+
};
|
|
90
|
+
for (const [name, value] of Object.entries(managedValues)) {
|
|
91
|
+
byName.set(name, { ...byName.get(name), name, value });
|
|
92
|
+
}
|
|
93
|
+
return [...unnamed, ...byName.values()];
|
|
94
|
+
}
|
|
95
|
+
/**
|
|
96
|
+
* Write CodeMie's managed `claudeCode.*` keys into the VS Code Claude Code extension's
|
|
97
|
+
* `settings.json` at an explicit path. Preserves every unrelated top-level key and every
|
|
98
|
+
* unrelated `claudeCode.environmentVariables` entry (e.g. keys the user set manually) —
|
|
99
|
+
* only `ANTHROPIC_BASE_URL`/`ANTHROPIC_AUTH_TOKEN` entries and `disableLoginPrompt` are
|
|
100
|
+
* CodeMie-managed and get overwritten.
|
|
101
|
+
*/
|
|
102
|
+
export async function writeVsCodeClaudeCodeConfigAtPath(configPath, gatewayUrl, gatewayKey) {
|
|
103
|
+
const settings = await readSettings(configPath);
|
|
104
|
+
const updatedSettings = {
|
|
105
|
+
...settings,
|
|
106
|
+
'claudeCode.disableLoginPrompt': true,
|
|
107
|
+
'claudeCode.environmentVariables': upsertManagedEnvVars(settings['claudeCode.environmentVariables'], gatewayUrl, gatewayKey),
|
|
108
|
+
};
|
|
109
|
+
try {
|
|
110
|
+
await writeAtomically(configPath, `${JSON.stringify(updatedSettings, null, '\t')}\n`);
|
|
111
|
+
}
|
|
112
|
+
catch (error) {
|
|
113
|
+
throw new ConfigurationError(`Failed to update VS Code Claude Code settings at ${configPath}: ` +
|
|
114
|
+
`${error instanceof Error ? error.message : String(error)}`);
|
|
115
|
+
}
|
|
116
|
+
logger.info('[proxy] Configured VS Code Claude Code extension', ...sanitizeLogArgs({
|
|
117
|
+
configPath,
|
|
118
|
+
anthropicBaseUrl: gatewayUrl,
|
|
119
|
+
anthropicAuthToken: gatewayKey,
|
|
120
|
+
managedEnvVarNames: [...MANAGED_ENV_VAR_NAMES],
|
|
121
|
+
}));
|
|
122
|
+
return { written: true, path: configPath };
|
|
123
|
+
}
|
|
124
|
+
/**
|
|
125
|
+
* Write CodeMie's managed `claudeCode.*` keys into the current user's VS Code (or VS Code
|
|
126
|
+
* Insiders) `settings.json`, so the bundled Claude Code extension routes through the local
|
|
127
|
+
* gateway daemon without a Claude.ai OAuth login prompt.
|
|
128
|
+
*/
|
|
129
|
+
export async function writeVsCodeClaudeCodeConfig(gatewayUrl, gatewayKey, insiders = false) {
|
|
130
|
+
return writeVsCodeClaudeCodeConfigAtPath(getVsCodeClaudeCodeSettingsPath(insiders), gatewayUrl, gatewayKey);
|
|
131
|
+
}
|
|
132
|
+
//# sourceMappingURL=vscode-claude-code.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"vscode-claude-code.js","sourceRoot":"","sources":["../../../../../src/cli/commands/proxy/connectors/vscode-claude-code.ts"],"names":[],"mappings":"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"}
|
|
@@ -3,7 +3,9 @@ export interface WriteVsCodeConfigResult {
|
|
|
3
3
|
requiresSecretConfiguration: boolean;
|
|
4
4
|
}
|
|
5
5
|
export declare function isVsCodeSecretReference(value: unknown): value is string;
|
|
6
|
+
export declare function getVsCodeProductDir(insiders: boolean): string;
|
|
6
7
|
export declare function getVsCodeLanguageModelsPath(insiders?: boolean): string;
|
|
8
|
+
export declare function writeAtomically(configPath: string, content: string): Promise<void>;
|
|
7
9
|
export declare function writeVsCodeLanguageModelsConfig(proxyUrl: string, insiders?: boolean): Promise<WriteVsCodeConfigResult>;
|
|
8
10
|
export declare function writeVsCodeLanguageModelsConfigAtPath(configPath: string, proxyUrl: string): Promise<WriteVsCodeConfigResult>;
|
|
9
11
|
//# sourceMappingURL=vscode.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"vscode.d.ts","sourceRoot":"","sources":["../../../../../src/cli/commands/proxy/connectors/vscode.ts"],"names":[],"mappings":"AA6CA,MAAM,WAAW,uBAAuB;IACtC,UAAU,EAAE,MAAM,CAAC;IACnB,2BAA2B,EAAE,OAAO,CAAC;CACtC;AAYD,wBAAgB,uBAAuB,CAAC,KAAK,EAAE,OAAO,GAAG,KAAK,IAAI,MAAM,CAEvE;
|
|
1
|
+
{"version":3,"file":"vscode.d.ts","sourceRoot":"","sources":["../../../../../src/cli/commands/proxy/connectors/vscode.ts"],"names":[],"mappings":"AA6CA,MAAM,WAAW,uBAAuB;IACtC,UAAU,EAAE,MAAM,CAAC;IACnB,2BAA2B,EAAE,OAAO,CAAC;CACtC;AAYD,wBAAgB,uBAAuB,CAAC,KAAK,EAAE,OAAO,GAAG,KAAK,IAAI,MAAM,CAEvE;AAED,wBAAgB,mBAAmB,CAAC,QAAQ,EAAE,OAAO,GAAG,MAAM,CAoB7D;AAED,wBAAgB,2BAA2B,CAAC,QAAQ,UAAQ,GAAG,MAAM,CAYpE;AAyGD,wBAAsB,eAAe,CAAC,UAAU,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAoBxF;AAED,wBAAsB,+BAA+B,CACnD,QAAQ,EAAE,MAAM,EAChB,QAAQ,UAAQ,GACf,OAAO,CAAC,uBAAuB,CAAC,CAKlC;AAED,wBAAsB,qCAAqC,CACzD,UAAU,EAAE,MAAM,EAClB,QAAQ,EAAE,MAAM,GACf,OAAO,CAAC,uBAAuB,CAAC,CA6BlC"}
|
|
@@ -16,7 +16,7 @@ function isManagedProvider(provider) {
|
|
|
16
16
|
export function isVsCodeSecretReference(value) {
|
|
17
17
|
return typeof value === 'string' && SECRET_REFERENCE_PATTERN.test(value);
|
|
18
18
|
}
|
|
19
|
-
function getVsCodeProductDir(insiders) {
|
|
19
|
+
export function getVsCodeProductDir(insiders) {
|
|
20
20
|
const productName = insiders ? 'Code - Insiders' : 'Code';
|
|
21
21
|
if (process.platform === 'darwin') {
|
|
22
22
|
return join(homedir(), 'Library', 'Application Support', productName);
|
|
@@ -134,7 +134,7 @@ async function readProviders(configPath) {
|
|
|
134
134
|
throw new ConfigurationError(`VS Code language model configuration is not valid JSON and was not changed: ${configPath}`);
|
|
135
135
|
}
|
|
136
136
|
}
|
|
137
|
-
async function writeAtomically(configPath, content) {
|
|
137
|
+
export async function writeAtomically(configPath, content) {
|
|
138
138
|
const configDir = dirname(configPath);
|
|
139
139
|
await mkdir(configDir, { recursive: true });
|
|
140
140
|
const tempPath = `${configPath}.${process.pid}.tmp`;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"vscode.js","sourceRoot":"","sources":["../../../../../src/cli/commands/proxy/connectors/vscode.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,SAAS,CAAC;AACrC,OAAO,EAAE,KAAK,EAAE,QAAQ,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AACpF,OAAO,EAAE,OAAO,EAAE,MAAM,SAAS,CAAC;AAClC,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AAC1C,OAAO,EAAE,kBAAkB,EAAE,MAAM,mBAAmB,CAAC;AACvD,OAAO,EACL,wBAAwB,GAGzB,MAAM,oBAAoB,CAAC;AAE5B,MAAM,wBAAwB,GAAG,uCAAuC,CAAC;AAuCzE,SAAS,QAAQ,CAAC,KAAc;IAC9B,OAAO,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,KAAK,IAAI,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;AAC9E,CAAC;AAED,SAAS,iBAAiB,CAAC,QAAiB;IAC1C,OAAO,QAAQ,CAAC,QAAQ,CAAC;QACvB,QAAQ,CAAC,MAAM,KAAK,gBAAgB;QACpC,QAAQ,CAAC,IAAI,KAAK,SAAS,CAAC;AAChC,CAAC;AAED,MAAM,UAAU,uBAAuB,CAAC,KAAc;IACpD,OAAO,OAAO,KAAK,KAAK,QAAQ,IAAI,wBAAwB,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;AAC3E,CAAC;AAED,
|
|
1
|
+
{"version":3,"file":"vscode.js","sourceRoot":"","sources":["../../../../../src/cli/commands/proxy/connectors/vscode.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
export interface DisconnectTargets {
|
|
2
|
+
codexDesktop?: boolean;
|
|
3
|
+
}
|
|
4
|
+
export interface DisconnectOptions {
|
|
5
|
+
targets: DisconnectTargets;
|
|
6
|
+
}
|
|
7
|
+
export declare function disconnectTargets(opts: DisconnectOptions): Promise<void>;
|
|
8
|
+
//# sourceMappingURL=disconnect-orchestrator.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"disconnect-orchestrator.d.ts","sourceRoot":"","sources":["../../../../src/cli/commands/proxy/disconnect-orchestrator.ts"],"names":[],"mappings":"AAaA,MAAM,WAAW,iBAAiB;IAChC,YAAY,CAAC,EAAE,OAAO,CAAC;CACxB;AAED,MAAM,WAAW,iBAAiB;IAChC,OAAO,EAAE,iBAAiB,CAAC;CAC5B;AAWD,wBAAsB,iBAAiB,CAAC,IAAI,EAAE,iBAAiB,GAAG,OAAO,CAAC,IAAI,CAAC,CA2B9E"}
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* `codemie proxy disconnect` — reverse what `connect` wrote for a target.
|
|
3
|
+
*
|
|
4
|
+
* The daemon is deliberately left running: it may still be serving other
|
|
5
|
+
* connected targets, and stopping it is `codemie proxy stop`'s job.
|
|
6
|
+
*/
|
|
7
|
+
import chalk from 'chalk';
|
|
8
|
+
import { logger } from '../../../utils/logger.js';
|
|
9
|
+
import { sanitizeLogArgs } from '../../../utils/security.js';
|
|
10
|
+
import { removeCodexDesktopConfig } from './connectors/codex-desktop.js';
|
|
11
|
+
const DISCONNECT_TARGET_LIST = [
|
|
12
|
+
'Select at least one target to disconnect:',
|
|
13
|
+
'',
|
|
14
|
+
' --codex-desktop Codex desktop app (removes the CodeMie block from ~/.codex/config.toml)',
|
|
15
|
+
'',
|
|
16
|
+
'Example:',
|
|
17
|
+
' codemie proxy disconnect --codex-desktop',
|
|
18
|
+
].join('\n');
|
|
19
|
+
export async function disconnectTargets(opts) {
|
|
20
|
+
if (!opts.targets.codexDesktop) {
|
|
21
|
+
console.log(DISCONNECT_TARGET_LIST);
|
|
22
|
+
return;
|
|
23
|
+
}
|
|
24
|
+
try {
|
|
25
|
+
const result = await removeCodexDesktopConfig();
|
|
26
|
+
if (!result.removed) {
|
|
27
|
+
console.log(chalk.dim('Codex Desktop: nothing to disconnect.'));
|
|
28
|
+
return;
|
|
29
|
+
}
|
|
30
|
+
console.log(chalk.green(`✓ Codex Desktop disconnected (${result.configPath})`));
|
|
31
|
+
if (result.usedBackup) {
|
|
32
|
+
console.log(chalk.yellow('⚠ Restored the backup because the managed block could not be removed cleanly.'));
|
|
33
|
+
}
|
|
34
|
+
console.log(chalk.yellow('⚠ Quit and reopen the ChatGPT desktop app to apply the change.'));
|
|
35
|
+
}
|
|
36
|
+
catch (error) {
|
|
37
|
+
const message = error instanceof Error ? error.message : String(error);
|
|
38
|
+
logger.warn('[proxy] Codex Desktop disconnect failed', ...sanitizeLogArgs({ error: message }));
|
|
39
|
+
console.error(chalk.red(`✗ Codex Desktop — ${message}`));
|
|
40
|
+
process.exitCode = 1;
|
|
41
|
+
}
|
|
42
|
+
}
|
|
43
|
+
//# sourceMappingURL=disconnect-orchestrator.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"disconnect-orchestrator.js","sourceRoot":"","sources":["../../../../src/cli/commands/proxy/disconnect-orchestrator.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AACH,OAAO,KAAK,MAAM,OAAO,CAAC;AAE1B,OAAO,EAAE,MAAM,EAAE,MAAM,mBAAmB,CAAC;AAC3C,OAAO,EAAE,eAAe,EAAE,MAAM,qBAAqB,CAAC;AAEtD,OAAO,EAAE,wBAAwB,EAAE,MAAM,+BAA+B,CAAC;AAUzE,MAAM,sBAAsB,GAAG;IAC7B,2CAA2C;IAC3C,EAAE;IACF,kGAAkG;IAClG,EAAE;IACF,UAAU;IACV,4CAA4C;CAC7C,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAEb,MAAM,CAAC,KAAK,UAAU,iBAAiB,CAAC,IAAuB;IAC7D,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,YAAY,EAAE,CAAC;QAC/B,OAAO,CAAC,GAAG,CAAC,sBAAsB,CAAC,CAAC;QACpC,OAAO;IACT,CAAC;IAED,IAAI,CAAC;QACH,MAAM,MAAM,GAAG,MAAM,wBAAwB,EAAE,CAAC;QAEhD,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC;YACpB,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,uCAAuC,CAAC,CAAC,CAAC;YAChE,OAAO;QACT,CAAC;QAED,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,KAAK,CAAC,iCAAiC,MAAM,CAAC,UAAU,GAAG,CAAC,CAAC,CAAC;QAChF,IAAI,MAAM,CAAC,UAAU,EAAE,CAAC;YACtB,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,MAAM,CACtB,+EAA+E,CAChF,CAAC,CAAC;QACL,CAAC;QACD,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,MAAM,CAAC,gEAAgE,CAAC,CAAC,CAAC;IAC9F,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,MAAM,OAAO,GAAG,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;QACvE,MAAM,CAAC,IAAI,CAAC,yCAAyC,EAAE,GAAG,eAAe,CAAC,EAAE,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC,CAAC;QAC/F,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,qBAAqB,OAAO,EAAE,CAAC,CAAC,CAAC;QACzD,OAAO,CAAC,QAAQ,GAAG,CAAC,CAAC;IACvB,CAAC;AACH,CAAC"}
|
|
@@ -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;
|
|
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;AA0GpC,wBAAgB,kBAAkB,IAAI,OAAO,CA2O5C"}
|