@codemieai/code 0.0.57 → 0.0.58

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/README.md +124 -19
  2. package/bin/proxy-daemon.js +10 -0
  3. package/dist/agents/core/session/SessionStore.d.ts +4 -0
  4. package/dist/agents/core/session/SessionStore.d.ts.map +1 -1
  5. package/dist/agents/core/session/SessionStore.js +40 -1
  6. package/dist/agents/core/session/SessionStore.js.map +1 -1
  7. package/dist/agents/core/session/types.d.ts +7 -0
  8. package/dist/agents/core/session/types.d.ts.map +1 -1
  9. package/dist/agents/plugins/claude/plugin/.claude-plugin/plugin.json +1 -1
  10. package/dist/agents/plugins/claude/session/processors/claude.conversations-processor.d.ts +1 -0
  11. package/dist/agents/plugins/claude/session/processors/claude.conversations-processor.d.ts.map +1 -1
  12. package/dist/agents/plugins/claude/session/processors/claude.conversations-processor.js +32 -20
  13. package/dist/agents/plugins/claude/session/processors/claude.conversations-processor.js.map +1 -1
  14. package/dist/agents/plugins/claude/session/processors/claude.metrics-processor.d.ts +2 -0
  15. package/dist/agents/plugins/claude/session/processors/claude.metrics-processor.d.ts.map +1 -1
  16. package/dist/agents/plugins/claude/session/processors/claude.metrics-processor.js +24 -1
  17. package/dist/agents/plugins/claude/session/processors/claude.metrics-processor.js.map +1 -1
  18. package/dist/bin/proxy-daemon.d.ts +2 -0
  19. package/dist/bin/proxy-daemon.d.ts.map +1 -0
  20. package/dist/bin/proxy-daemon.js +138 -0
  21. package/dist/bin/proxy-daemon.js.map +1 -0
  22. package/dist/cli/commands/proxy/connectors/desktop.d.ts +55 -0
  23. package/dist/cli/commands/proxy/connectors/desktop.d.ts.map +1 -0
  24. package/dist/cli/commands/proxy/connectors/desktop.js +175 -0
  25. package/dist/cli/commands/proxy/connectors/desktop.js.map +1 -0
  26. package/dist/cli/commands/proxy/daemon-manager.d.ts +35 -0
  27. package/dist/cli/commands/proxy/daemon-manager.d.ts.map +1 -0
  28. package/dist/cli/commands/proxy/daemon-manager.js +107 -0
  29. package/dist/cli/commands/proxy/daemon-manager.js.map +1 -0
  30. package/dist/cli/commands/proxy/index.d.ts +3 -0
  31. package/dist/cli/commands/proxy/index.d.ts.map +1 -0
  32. package/dist/cli/commands/proxy/index.js +221 -0
  33. package/dist/cli/commands/proxy/index.js.map +1 -0
  34. package/dist/cli/commands/proxy/inspect-desktop.d.ts +28 -0
  35. package/dist/cli/commands/proxy/inspect-desktop.d.ts.map +1 -0
  36. package/dist/cli/commands/proxy/inspect-desktop.js +134 -0
  37. package/dist/cli/commands/proxy/inspect-desktop.js.map +1 -0
  38. package/dist/cli/index.js +12 -0
  39. package/dist/cli/index.js.map +1 -1
  40. package/dist/providers/plugins/sso/proxy/plugins/gateway-key.plugin.d.ts +9 -0
  41. package/dist/providers/plugins/sso/proxy/plugins/gateway-key.plugin.d.ts.map +1 -0
  42. package/dist/providers/plugins/sso/proxy/plugins/gateway-key.plugin.js +36 -0
  43. package/dist/providers/plugins/sso/proxy/plugins/gateway-key.plugin.js.map +1 -0
  44. package/dist/providers/plugins/sso/proxy/plugins/index.d.ts +2 -1
  45. package/dist/providers/plugins/sso/proxy/plugins/index.d.ts.map +1 -1
  46. package/dist/providers/plugins/sso/proxy/plugins/index.js +3 -1
  47. package/dist/providers/plugins/sso/proxy/plugins/index.js.map +1 -1
  48. package/dist/providers/plugins/sso/proxy/proxy-types.d.ts +4 -0
  49. package/dist/providers/plugins/sso/proxy/proxy-types.d.ts.map +1 -1
  50. package/dist/providers/plugins/sso/proxy/sso.proxy.d.ts.map +1 -1
  51. package/dist/providers/plugins/sso/proxy/sso.proxy.js +4 -3
  52. package/dist/providers/plugins/sso/proxy/sso.proxy.js.map +1 -1
  53. package/dist/telemetry/clients/claude-desktop/ClaudeDesktopTelemetryAdapter.d.ts +15 -0
  54. package/dist/telemetry/clients/claude-desktop/ClaudeDesktopTelemetryAdapter.d.ts.map +1 -0
  55. package/dist/telemetry/clients/claude-desktop/ClaudeDesktopTelemetryAdapter.js +117 -0
  56. package/dist/telemetry/clients/claude-desktop/ClaudeDesktopTelemetryAdapter.js.map +1 -0
  57. package/dist/telemetry/clients/claude-desktop/claude-desktop.discovery.d.ts +3 -0
  58. package/dist/telemetry/clients/claude-desktop/claude-desktop.discovery.d.ts.map +1 -0
  59. package/dist/telemetry/clients/claude-desktop/claude-desktop.discovery.js +138 -0
  60. package/dist/telemetry/clients/claude-desktop/claude-desktop.discovery.js.map +1 -0
  61. package/dist/telemetry/clients/claude-desktop/claude-desktop.metrics.d.ts +4 -0
  62. package/dist/telemetry/clients/claude-desktop/claude-desktop.metrics.d.ts.map +1 -0
  63. package/dist/telemetry/clients/claude-desktop/claude-desktop.metrics.js +53 -0
  64. package/dist/telemetry/clients/claude-desktop/claude-desktop.metrics.js.map +1 -0
  65. package/dist/telemetry/clients/claude-desktop/claude-desktop.parser.d.ts +4 -0
  66. package/dist/telemetry/clients/claude-desktop/claude-desktop.parser.d.ts.map +1 -0
  67. package/dist/telemetry/clients/claude-desktop/claude-desktop.parser.js +60 -0
  68. package/dist/telemetry/clients/claude-desktop/claude-desktop.parser.js.map +1 -0
  69. package/dist/telemetry/clients/claude-desktop/claude-desktop.paths.d.ts +4 -0
  70. package/dist/telemetry/clients/claude-desktop/claude-desktop.paths.d.ts.map +1 -0
  71. package/dist/telemetry/clients/claude-desktop/claude-desktop.paths.js +19 -0
  72. package/dist/telemetry/clients/claude-desktop/claude-desktop.paths.js.map +1 -0
  73. package/dist/telemetry/runtime/DesktopTelemetryRuntime.d.ts +23 -0
  74. package/dist/telemetry/runtime/DesktopTelemetryRuntime.d.ts.map +1 -0
  75. package/dist/telemetry/runtime/DesktopTelemetryRuntime.js +243 -0
  76. package/dist/telemetry/runtime/DesktopTelemetryRuntime.js.map +1 -0
  77. package/dist/telemetry/runtime/checkpoints.d.ts +10 -0
  78. package/dist/telemetry/runtime/checkpoints.d.ts.map +1 -0
  79. package/dist/telemetry/runtime/checkpoints.js +8 -0
  80. package/dist/telemetry/runtime/checkpoints.js.map +1 -0
  81. package/dist/telemetry/runtime/types.d.ts +32 -0
  82. package/dist/telemetry/runtime/types.d.ts.map +1 -0
  83. package/dist/telemetry/runtime/types.js +2 -0
  84. package/dist/telemetry/runtime/types.js.map +1 -0
  85. package/dist/utils/processes.d.ts +6 -0
  86. package/dist/utils/processes.d.ts.map +1 -1
  87. package/dist/utils/processes.js +13 -3
  88. package/dist/utils/processes.js.map +1 -1
  89. package/package.json +4 -2
  90. package/scripts/README.md +15 -1
  91. package/scripts/prepare-install-artifacts.mjs +66 -0
  92. package/scripts/test-desktop-telemetry.js +229 -0
  93. package/scripts/test-proxy-endpoint.js +173 -0
@@ -1 +1 @@
1
- {"version":3,"file":"claude.metrics-processor.d.ts","sourceRoot":"","sources":["../../../../../../src/agents/plugins/claude/session/processors/claude.metrics-processor.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAEH,OAAO,KAAK,EAAE,gBAAgB,EAAE,iBAAiB,EAAE,gBAAgB,EAAE,MAAM,2CAA2C,CAAC;AACvH,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,gDAAgD,CAAC;AAKpF,qBAAa,gBAAiB,YAAW,gBAAgB;IACvD,QAAQ,CAAC,IAAI,aAAa;IAC1B,QAAQ,CAAC,QAAQ,KAAK;IAEtB,aAAa,CAAC,OAAO,EAAE,aAAa,GAAG,OAAO;IAIxC,OAAO,CAAC,OAAO,EAAE,aAAa,EAAE,OAAO,EAAE,iBAAiB,GAAG,OAAO,CAAC,gBAAgB,CAAC;IAY5F;;OAEG;YACW,eAAe;IAqE7B;;OAEG;IACH,OAAO,CAAC,yBAAyB;IAiCjC;;OAEG;IACH,OAAO,CAAC,yBAAyB;IAuLjC;;OAEG;IACH,OAAO,CAAC,oBAAoB;CAuD7B"}
1
+ {"version":3,"file":"claude.metrics-processor.d.ts","sourceRoot":"","sources":["../../../../../../src/agents/plugins/claude/session/processors/claude.metrics-processor.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAEH,OAAO,KAAK,EAAE,gBAAgB,EAAE,iBAAiB,EAAE,gBAAgB,EAAE,MAAM,2CAA2C,CAAC;AACvH,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,gDAAgD,CAAC;AAKpF,qBAAa,gBAAiB,YAAW,gBAAgB;IACvD,QAAQ,CAAC,IAAI,aAAa;IAC1B,QAAQ,CAAC,QAAQ,KAAK;IAEtB,aAAa,CAAC,OAAO,EAAE,aAAa,GAAG,OAAO;IAIxC,OAAO,CAAC,OAAO,EAAE,aAAa,EAAE,OAAO,EAAE,iBAAiB,GAAG,OAAO,CAAC,gBAAgB,CAAC;IAY5F;;OAEG;YACW,eAAe;IAqE7B;;OAEG;IACH,OAAO,CAAC,yBAAyB;IAiCjC;;OAEG;IACH,OAAO,CAAC,yBAAyB;IAkMjC,OAAO,CAAC,mBAAmB;IAS3B,OAAO,CAAC,qBAAqB;IAS7B;;OAEG;IACH,OAAO,CAAC,oBAAoB;CAuD7B"}
@@ -108,6 +108,12 @@ export class MetricsProcessor {
108
108
  */
109
109
  extractDeltasFromMessages(messages, sessionId, agentName, processedIds, attachedUserPrompts) {
110
110
  const deltas = [];
111
+ const messagesByUuid = new Map();
112
+ for (const msg of messages) {
113
+ if (msg.uuid) {
114
+ messagesByUuid.set(msg.uuid, msg);
115
+ }
116
+ }
111
117
  // Build tool results map with full content
112
118
  const toolResultsMap = new Map();
113
119
  for (const msg of messages) {
@@ -139,7 +145,9 @@ export class MetricsProcessor {
139
145
  // Build user prompts map: uuid → text content
140
146
  const userPromptsMap = new Map();
141
147
  for (const msg of messages) {
142
- if (msg.message?.role === 'user' && msg.uuid) {
148
+ if (msg.message?.role === 'user' &&
149
+ msg.uuid &&
150
+ !this.isSyntheticUserPrompt(msg, messagesByUuid)) {
143
151
  let textContent = '';
144
152
  if (Array.isArray(msg.message.content)) {
145
153
  for (const block of msg.message.content) {
@@ -262,6 +270,21 @@ export class MetricsProcessor {
262
270
  }
263
271
  return deltas;
264
272
  }
273
+ isToolResultMessage(msg) {
274
+ if (msg?.type !== 'user')
275
+ return false;
276
+ const content = msg.message?.content;
277
+ if (!Array.isArray(content))
278
+ return false;
279
+ return content.some((item) => item.type === 'tool_result');
280
+ }
281
+ isSyntheticUserPrompt(msg, messagesByUuid) {
282
+ if (msg?.type !== 'user' || !msg.parentUuid) {
283
+ return false;
284
+ }
285
+ const parent = messagesByUuid.get(msg.parentUuid);
286
+ return this.isToolResultMessage(parent);
287
+ }
265
288
  /**
266
289
  * Extract file operation from tool call (simplified version of legacy logic)
267
290
  */
@@ -1 +1 @@
1
- {"version":3,"file":"claude.metrics-processor.js","sourceRoot":"","sources":["../../../../../../src/agents/plugins/claude/session/processors/claude.metrics-processor.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"claude.metrics-processor.js","sourceRoot":"","sources":["../../../../../../src/agents/plugins/claude/session/processors/claude.metrics-processor.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ import '../providers/plugins/sso/proxy/plugins/index.js';
2
+ //# sourceMappingURL=proxy-daemon.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"proxy-daemon.d.ts","sourceRoot":"","sources":["../../src/bin/proxy-daemon.ts"],"names":[],"mappings":"AAYA,OAAO,iDAAiD,CAAC"}
@@ -0,0 +1,138 @@
1
+ /**
2
+ * CodeMie Proxy Daemon Entry Point
3
+ *
4
+ * Spawned as a detached process by `codemie proxy start`.
5
+ * Starts CodeMieProxy on the requested port, writes state file, handles SIGTERM.
6
+ */
7
+ import { parseArgs } from 'node:util';
8
+ import { readFileSync } from 'node:fs';
9
+ import { writeFile, unlink, rename } from 'node:fs/promises';
10
+ import { join } from 'node:path';
11
+ import { CodeMieProxy } from '../providers/plugins/sso/index.js';
12
+ import '../providers/plugins/sso/proxy/plugins/index.js'; // Auto-register core plugins
13
+ import { ClaudeDesktopTelemetryAdapter } from '../telemetry/clients/claude-desktop/ClaudeDesktopTelemetryAdapter.js';
14
+ import { DesktopTelemetryRuntime } from '../telemetry/runtime/DesktopTelemetryRuntime.js';
15
+ import { getDirname } from '../utils/paths.js';
16
+ import { logger } from '../utils/logger.js';
17
+ function readCliVersion() {
18
+ try {
19
+ const pkgPath = join(getDirname(import.meta.url), '../../package.json');
20
+ const pkg = JSON.parse(readFileSync(pkgPath, 'utf-8'));
21
+ return pkg.version ?? '0.0.0';
22
+ }
23
+ catch {
24
+ return '0.0.0';
25
+ }
26
+ }
27
+ const { values } = parseArgs({
28
+ options: {
29
+ 'target-url': { type: 'string' },
30
+ 'provider': { type: 'string' },
31
+ 'profile': { type: 'string' },
32
+ 'port': { type: 'string' },
33
+ 'gateway-key': { type: 'string' },
34
+ 'state-file': { type: 'string' },
35
+ 'auth-method': { type: 'string' },
36
+ 'telemetry-mode': { type: 'string' },
37
+ 'sync-api-url': { type: 'string' },
38
+ 'sync-codemie-url': { type: 'string' },
39
+ },
40
+ strict: false,
41
+ });
42
+ const targetUrl = values['target-url'];
43
+ const stateFile = values['state-file'];
44
+ if (!targetUrl || !stateFile) {
45
+ process.stderr.write('[proxy-daemon] --target-url and --state-file are required\n');
46
+ process.exit(1);
47
+ }
48
+ const portArg = values['port'];
49
+ const parsedPort = portArg ? Number.parseInt(portArg, 10) : undefined;
50
+ if (parsedPort !== undefined && (!Number.isFinite(parsedPort) || parsedPort <= 0)) {
51
+ process.stderr.write(`[proxy-daemon] Invalid --port value: ${portArg}\n`);
52
+ process.exit(1);
53
+ }
54
+ const port = parsedPort;
55
+ const gatewayKey = values['gateway-key'] ?? 'codemie-proxy';
56
+ const profile = values['profile'] ?? 'default';
57
+ const provider = values['provider'] ?? 'ai-run-sso';
58
+ const authMethod = (values['auth-method'] ?? 'sso');
59
+ const telemetryMode = (values['telemetry-mode'] ?? 'none');
60
+ const syncApiUrl = values['sync-api-url'];
61
+ const syncCodeMieUrl = values['sync-codemie-url'];
62
+ const config = {
63
+ targetApiUrl: targetUrl,
64
+ port,
65
+ // Bind to 127.0.0.1 explicitly — Claude Desktop's gateway URL validator
66
+ // accepts only HTTPS or http on the literal 127.0.0.1 loopback IP, and the
67
+ // default 'localhost' bind on macOS lands on IPv6 ::1 only.
68
+ host: '127.0.0.1',
69
+ provider,
70
+ profile,
71
+ gatewayKey,
72
+ authMethod,
73
+ clientType: telemetryMode === 'claude-desktop' ? 'claude-desktop' : 'codemie-daemon',
74
+ version: readCliVersion(),
75
+ telemetryMode,
76
+ syncApiUrl,
77
+ syncCodeMieUrl,
78
+ };
79
+ const proxy = new CodeMieProxy(config);
80
+ let telemetryRuntime;
81
+ async function writeStateAtomic(state) {
82
+ const tmp = stateFile + '.tmp';
83
+ await writeFile(tmp, JSON.stringify(state, null, 2), 'utf-8');
84
+ await rename(tmp, stateFile);
85
+ }
86
+ async function cleanup() {
87
+ try {
88
+ await telemetryRuntime?.stop();
89
+ }
90
+ catch { /* ignore */ }
91
+ try {
92
+ await proxy.stop();
93
+ }
94
+ catch { /* ignore */ }
95
+ try {
96
+ await unlink(stateFile);
97
+ }
98
+ catch { /* ignore */ }
99
+ }
100
+ process.on('SIGTERM', async () => { await cleanup(); process.exit(0); });
101
+ process.on('SIGINT', async () => { await cleanup(); process.exit(0); });
102
+ try {
103
+ const { port: actualPort, url } = await proxy.start();
104
+ if (config.telemetryMode === 'claude-desktop') {
105
+ telemetryRuntime = new DesktopTelemetryRuntime(new ClaudeDesktopTelemetryAdapter(), {
106
+ clientType: 'claude-desktop',
107
+ targetApiUrl: config.targetApiUrl,
108
+ provider: config.provider ?? 'ai-run-sso',
109
+ version: config.version ?? '0.0.0',
110
+ profile: config.profile,
111
+ syncApiUrl: config.syncApiUrl,
112
+ syncCodeMieUrl: config.syncCodeMieUrl,
113
+ pollIntervalMs: config.telemetryPollIntervalMs ?? 10000,
114
+ inactivityTimeoutMs: config.telemetryInactivityTimeoutMs ?? 300000
115
+ });
116
+ await telemetryRuntime.start();
117
+ }
118
+ await writeStateAtomic({
119
+ pid: process.pid,
120
+ port: actualPort,
121
+ url,
122
+ profile,
123
+ gatewayKey,
124
+ targetUrl: config.targetApiUrl,
125
+ provider: config.provider,
126
+ clientType: config.clientType,
127
+ telemetryMode,
128
+ syncApiUrl: config.syncApiUrl,
129
+ syncCodeMieUrl: config.syncCodeMieUrl,
130
+ startedAt: new Date().toISOString(),
131
+ });
132
+ logger.debug(`[proxy-daemon] Started on ${url} (profile: ${profile})`);
133
+ }
134
+ catch (error) {
135
+ process.stderr.write(`[proxy-daemon] Failed to start: ${error.message}\n`);
136
+ process.exit(1);
137
+ }
138
+ //# sourceMappingURL=proxy-daemon.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"proxy-daemon.js","sourceRoot":"","sources":["../../src/bin/proxy-daemon.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,55 @@
1
+ /**
2
+ * Curated list of Claude models we expose by default.
3
+ *
4
+ * Each entry is matched against the gateway's `/v1/models` response either as
5
+ * an exact ID or as `<entry>-<YYYYMMDD>` (the dated variant). The actual
6
+ * resolved ID is what gets written to the Desktop config so the gateway
7
+ * receives a model name it has registered.
8
+ */
9
+ export declare const PREFERRED_CLAUDE_MODELS: readonly ["claude-opus-4-7", "claude-opus-4-6", "claude-sonnet-4-6", "claude-haiku-4-5"];
10
+ /**
11
+ * Fetch the model list from the gateway's `/v1/models` endpoint and return
12
+ * the IDs of usable Claude-family models (excludes `-vertex` aliases since
13
+ * the gateway already picks the right backend for the canonical names).
14
+ *
15
+ * Returns [] if the gateway is unreachable or returns a non-OK response.
16
+ */
17
+ export declare function fetchClaudeModels(proxyUrl: string, gatewayKey: string): Promise<string[]>;
18
+ /**
19
+ * Resolve each entry in {@link PREFERRED_CLAUDE_MODELS} against the gateway's
20
+ * `/v1/models` response. For each preferred name, prefer the exact ID; fall
21
+ * back to the dated variant `<preferred>-YYYYMMDD` (latest if multiple).
22
+ * Entries with no available match are dropped silently.
23
+ *
24
+ * Preserves the order of {@link PREFERRED_CLAUDE_MODELS}.
25
+ */
26
+ export declare function selectPreferredClaudeModels(available: string[], preferred?: readonly string[]): string[];
27
+ export interface DesktopGatewayConfig {
28
+ inferenceProvider: 'gateway';
29
+ inferenceGatewayBaseUrl: string;
30
+ inferenceGatewayApiKey: string;
31
+ inferenceGatewayAuthScheme: 'bearer';
32
+ }
33
+ export declare function buildGatewayConfig(proxyUrl: string, gatewayKey: string): DesktopGatewayConfig;
34
+ /**
35
+ * Returns the base directory where Claude Desktop (3P) stores its config.
36
+ * macOS: ~/Library/Application Support/Claude-3p
37
+ * Windows: %APPDATA%\Claude-3p
38
+ */
39
+ export declare function getDesktopBaseDir(): string;
40
+ /**
41
+ * Returns the path to the active inference config JSON file under configLibrary/.
42
+ * If `_meta.json` doesn't exist or has no `appliedId`, returns the path that
43
+ * a freshly-generated UUID would use; the caller is responsible for creating
44
+ * `_meta.json` to register it.
45
+ */
46
+ export declare function getDesktopConfigPath(baseDir?: string): Promise<string>;
47
+ /**
48
+ * Write/merge the inference gateway settings into Claude Desktop's
49
+ * `configLibrary/<UUID>.json` and update `_meta.json` so the app picks them up.
50
+ *
51
+ * Preserves all non-inference keys in the existing config file.
52
+ * Returns the absolute path of the config file written.
53
+ */
54
+ export declare function writeDesktopConfig(proxyUrl: string, gatewayKey: string, baseDir?: string): Promise<string>;
55
+ //# sourceMappingURL=desktop.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"desktop.d.ts","sourceRoot":"","sources":["../../../../../src/cli/commands/proxy/connectors/desktop.ts"],"names":[],"mappings":"AAqBA;;;;;;;GAOG;AACH,eAAO,MAAM,uBAAuB,0FAK1B,CAAC;AAEX;;;;;;GAMG;AACH,wBAAsB,iBAAiB,CAAC,QAAQ,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC,CAgB/F;AAED;;;;;;;GAOG;AACH,wBAAgB,2BAA2B,CACzC,SAAS,EAAE,MAAM,EAAE,EACnB,SAAS,GAAE,SAAS,MAAM,EAA4B,GACrD,MAAM,EAAE,CAiBV;AAED,MAAM,WAAW,oBAAoB;IACnC,iBAAiB,EAAE,SAAS,CAAC;IAC7B,uBAAuB,EAAE,MAAM,CAAC;IAChC,sBAAsB,EAAE,MAAM,CAAC;IAC/B,0BAA0B,EAAE,QAAQ,CAAC;CACtC;AAYD,wBAAgB,kBAAkB,CAAC,QAAQ,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,GAAG,oBAAoB,CAO7F;AAED;;;;GAIG;AACH,wBAAgB,iBAAiB,IAAI,MAAM,CAE1C;AAED;;;;;GAKG;AACH,wBAAsB,oBAAoB,CAAC,OAAO,GAAE,MAA4B,GAAG,OAAO,CAAC,MAAM,CAAC,CAYjG;AAED;;;;;;GAMG;AACH,wBAAsB,kBAAkB,CACtC,QAAQ,EAAE,MAAM,EAChB,UAAU,EAAE,MAAM,EAClB,OAAO,GAAE,MAA4B,GACpC,OAAO,CAAC,MAAM,CAAC,CAyDjB"}
@@ -0,0 +1,175 @@
1
+ import { readFile, writeFile, mkdir } from 'node:fs/promises';
2
+ import { existsSync } from 'node:fs';
3
+ import { join } from 'node:path';
4
+ import { randomUUID } from 'node:crypto';
5
+ import { getClaudeDesktopBaseDir } from '../../../../telemetry/clients/claude-desktop/claude-desktop.paths.js';
6
+ const INFERENCE_KEYS = [
7
+ 'inferenceProvider',
8
+ 'inferenceGatewayBaseUrl',
9
+ 'inferenceGatewayApiKey',
10
+ 'inferenceGatewayAuthScheme',
11
+ ];
12
+ /**
13
+ * Curated list of Claude models we expose by default.
14
+ *
15
+ * Each entry is matched against the gateway's `/v1/models` response either as
16
+ * an exact ID or as `<entry>-<YYYYMMDD>` (the dated variant). The actual
17
+ * resolved ID is what gets written to the Desktop config so the gateway
18
+ * receives a model name it has registered.
19
+ */
20
+ export const PREFERRED_CLAUDE_MODELS = [
21
+ 'claude-opus-4-7',
22
+ 'claude-opus-4-6',
23
+ 'claude-sonnet-4-6',
24
+ 'claude-haiku-4-5',
25
+ ];
26
+ /**
27
+ * Fetch the model list from the gateway's `/v1/models` endpoint and return
28
+ * the IDs of usable Claude-family models (excludes `-vertex` aliases since
29
+ * the gateway already picks the right backend for the canonical names).
30
+ *
31
+ * Returns [] if the gateway is unreachable or returns a non-OK response.
32
+ */
33
+ export async function fetchClaudeModels(proxyUrl, gatewayKey) {
34
+ try {
35
+ const response = await fetch(new URL('/v1/models', proxyUrl), {
36
+ headers: { Authorization: `Bearer ${gatewayKey}` },
37
+ });
38
+ if (!response.ok)
39
+ return [];
40
+ const json = await response.json();
41
+ const ids = (json.data ?? [])
42
+ .map((m) => m.id)
43
+ .filter((id) => typeof id === 'string');
44
+ return ids
45
+ .filter((id) => /^claude-/i.test(id))
46
+ .filter((id) => !/-vertex$/i.test(id));
47
+ }
48
+ catch {
49
+ return [];
50
+ }
51
+ }
52
+ /**
53
+ * Resolve each entry in {@link PREFERRED_CLAUDE_MODELS} against the gateway's
54
+ * `/v1/models` response. For each preferred name, prefer the exact ID; fall
55
+ * back to the dated variant `<preferred>-YYYYMMDD` (latest if multiple).
56
+ * Entries with no available match are dropped silently.
57
+ *
58
+ * Preserves the order of {@link PREFERRED_CLAUDE_MODELS}.
59
+ */
60
+ export function selectPreferredClaudeModels(available, preferred = PREFERRED_CLAUDE_MODELS) {
61
+ const availableSet = new Set(available);
62
+ const resolved = [];
63
+ for (const name of preferred) {
64
+ if (availableSet.has(name)) {
65
+ resolved.push(name);
66
+ continue;
67
+ }
68
+ const datePrefix = `${name}-`;
69
+ const dated = available
70
+ .filter((id) => id.startsWith(datePrefix))
71
+ .filter((id) => /^\d{6,10}$/.test(id.slice(datePrefix.length)))
72
+ .sort()
73
+ .pop();
74
+ if (dated)
75
+ resolved.push(dated);
76
+ }
77
+ return resolved;
78
+ }
79
+ export function buildGatewayConfig(proxyUrl, gatewayKey) {
80
+ return {
81
+ inferenceProvider: 'gateway',
82
+ inferenceGatewayBaseUrl: proxyUrl,
83
+ inferenceGatewayApiKey: gatewayKey,
84
+ inferenceGatewayAuthScheme: 'bearer',
85
+ };
86
+ }
87
+ /**
88
+ * Returns the base directory where Claude Desktop (3P) stores its config.
89
+ * macOS: ~/Library/Application Support/Claude-3p
90
+ * Windows: %APPDATA%\Claude-3p
91
+ */
92
+ export function getDesktopBaseDir() {
93
+ return getClaudeDesktopBaseDir();
94
+ }
95
+ /**
96
+ * Returns the path to the active inference config JSON file under configLibrary/.
97
+ * If `_meta.json` doesn't exist or has no `appliedId`, returns the path that
98
+ * a freshly-generated UUID would use; the caller is responsible for creating
99
+ * `_meta.json` to register it.
100
+ */
101
+ export async function getDesktopConfigPath(baseDir = getDesktopBaseDir()) {
102
+ const libDir = join(baseDir, 'configLibrary');
103
+ const metaPath = join(libDir, '_meta.json');
104
+ if (existsSync(metaPath)) {
105
+ try {
106
+ const meta = JSON.parse(await readFile(metaPath, 'utf-8'));
107
+ if (meta.appliedId)
108
+ return join(libDir, `${meta.appliedId}.json`);
109
+ }
110
+ catch {
111
+ // Corrupt meta — fall through to fresh UUID
112
+ }
113
+ }
114
+ return join(libDir, `${randomUUID()}.json`);
115
+ }
116
+ /**
117
+ * Write/merge the inference gateway settings into Claude Desktop's
118
+ * `configLibrary/<UUID>.json` and update `_meta.json` so the app picks them up.
119
+ *
120
+ * Preserves all non-inference keys in the existing config file.
121
+ * Returns the absolute path of the config file written.
122
+ */
123
+ export async function writeDesktopConfig(proxyUrl, gatewayKey, baseDir = getDesktopBaseDir()) {
124
+ const libDir = join(baseDir, 'configLibrary');
125
+ if (!existsSync(libDir)) {
126
+ await mkdir(libDir, { recursive: true });
127
+ }
128
+ const metaPath = join(libDir, '_meta.json');
129
+ let meta = {};
130
+ if (existsSync(metaPath)) {
131
+ try {
132
+ meta = JSON.parse(await readFile(metaPath, 'utf-8'));
133
+ }
134
+ catch {
135
+ meta = {};
136
+ }
137
+ }
138
+ const configId = meta.appliedId ?? randomUUID();
139
+ const configPath = join(libDir, `${configId}.json`);
140
+ let existing = {};
141
+ if (existsSync(configPath)) {
142
+ try {
143
+ existing = JSON.parse(await readFile(configPath, 'utf-8'));
144
+ }
145
+ catch {
146
+ existing = {};
147
+ }
148
+ }
149
+ // Discover available Claude models from the gateway and curate down to the
150
+ // preferred set so the user doesn't have to type them manually in the GUI.
151
+ const discoveredModels = await fetchClaudeModels(proxyUrl, gatewayKey);
152
+ const resolvedModels = selectPreferredClaudeModels(discoveredModels);
153
+ const inferenceModels = resolvedModels.map((name) => ({ name }));
154
+ for (const key of INFERENCE_KEYS) {
155
+ delete existing[key];
156
+ }
157
+ delete existing.inferenceModels;
158
+ const merged = {
159
+ ...existing,
160
+ ...buildGatewayConfig(proxyUrl, gatewayKey),
161
+ ...(inferenceModels.length > 0 ? { inferenceModels } : {}),
162
+ };
163
+ await writeFile(configPath, JSON.stringify(merged, null, 2), 'utf-8');
164
+ const entries = meta.entries ?? [];
165
+ if (!entries.find((e) => e.id === configId)) {
166
+ entries.push({ id: configId, name: 'CodeMie Proxy' });
167
+ }
168
+ const updatedMeta = {
169
+ appliedId: configId,
170
+ entries,
171
+ };
172
+ await writeFile(metaPath, JSON.stringify(updatedMeta, null, 2), 'utf-8');
173
+ return configPath;
174
+ }
175
+ //# sourceMappingURL=desktop.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"desktop.js","sourceRoot":"","sources":["../../../../../src/cli/commands/proxy/connectors/desktop.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,35 @@
1
+ export interface DaemonState {
2
+ pid: number;
3
+ port: number;
4
+ url: string;
5
+ profile: string;
6
+ gatewayKey: string;
7
+ telemetryMode?: 'none' | 'claude-desktop';
8
+ targetUrl?: string;
9
+ provider?: string;
10
+ clientType?: string;
11
+ syncApiUrl?: string;
12
+ syncCodeMieUrl?: string;
13
+ startedAt: string;
14
+ }
15
+ export declare function readState(stateFile?: string): Promise<DaemonState | null>;
16
+ export declare function writeState(state: DaemonState, stateFile?: string): Promise<void>;
17
+ export declare function clearState(stateFile?: string): Promise<void>;
18
+ export declare function isProcessAlive(pid: number): boolean;
19
+ export declare function checkStatus(stateFile?: string): Promise<{
20
+ running: boolean;
21
+ state: DaemonState | null;
22
+ }>;
23
+ export interface SpawnOptions {
24
+ targetUrl: string;
25
+ provider: string;
26
+ profile: string;
27
+ port?: number;
28
+ gatewayKey?: string;
29
+ telemetryMode?: 'none' | 'claude-desktop';
30
+ syncApiUrl?: string;
31
+ syncCodeMieUrl?: string;
32
+ }
33
+ export declare function spawnDaemon(opts: SpawnOptions): Promise<DaemonState>;
34
+ export declare function stopDaemon(): Promise<void>;
35
+ //# sourceMappingURL=daemon-manager.d.ts.map
@@ -0,0 +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;CACnB;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,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,CAiD1E;AAED,wBAAsB,UAAU,IAAI,OAAO,CAAC,IAAI,CAAC,CAsBhD"}
@@ -0,0 +1,107 @@
1
+ import { writeFile, readFile, unlink, rename } from 'node:fs/promises';
2
+ import { join } from 'node:path';
3
+ import { getCodemieHome, getDirname } from '../../../utils/paths.js';
4
+ import { logger } from '../../../utils/logger.js';
5
+ import { sanitizeLogArgs } from '../../../utils/security.js';
6
+ import { ToolExecutionError } from '../../../utils/errors.js';
7
+ import { spawnDetached } from '../../../utils/processes.js';
8
+ const DEFAULT_STATE_FILE = join(getCodemieHome(), 'proxy-daemon.json');
9
+ export async function readState(stateFile = DEFAULT_STATE_FILE) {
10
+ try {
11
+ const raw = await readFile(stateFile, 'utf-8');
12
+ return JSON.parse(raw);
13
+ }
14
+ catch {
15
+ return null;
16
+ }
17
+ }
18
+ export async function writeState(state, stateFile = DEFAULT_STATE_FILE) {
19
+ const tmp = stateFile + '.tmp';
20
+ await writeFile(tmp, JSON.stringify(state, null, 2), 'utf-8');
21
+ await rename(tmp, stateFile);
22
+ }
23
+ export async function clearState(stateFile = DEFAULT_STATE_FILE) {
24
+ try {
25
+ await unlink(stateFile);
26
+ }
27
+ catch {
28
+ // Already gone — no-op
29
+ }
30
+ }
31
+ export function isProcessAlive(pid) {
32
+ try {
33
+ process.kill(pid, 0);
34
+ return true;
35
+ }
36
+ catch {
37
+ return false;
38
+ }
39
+ }
40
+ export async function checkStatus(stateFile = DEFAULT_STATE_FILE) {
41
+ const state = await readState(stateFile);
42
+ if (!state)
43
+ return { running: false, state: null };
44
+ if (!isProcessAlive(state.pid)) {
45
+ await clearState(stateFile);
46
+ return { running: false, state: null };
47
+ }
48
+ return { running: true, state };
49
+ }
50
+ export async function spawnDaemon(opts) {
51
+ const stateFile = DEFAULT_STATE_FILE;
52
+ const gatewayKey = opts.gatewayKey ?? 'codemie-proxy';
53
+ // Locate the daemon binary relative to this compiled file:
54
+ // dist/cli/commands/proxy/daemon-manager.js → ../../../../bin/proxy-daemon.js
55
+ const daemonBin = join(getDirname(import.meta.url), '../../../../bin/proxy-daemon.js');
56
+ const args = [
57
+ daemonBin,
58
+ '--target-url', opts.targetUrl,
59
+ '--provider', opts.provider,
60
+ '--profile', opts.profile,
61
+ '--gateway-key', gatewayKey,
62
+ '--state-file', stateFile,
63
+ ...(opts.port ? ['--port', String(opts.port)] : []),
64
+ ...(opts.telemetryMode ? ['--telemetry-mode', opts.telemetryMode] : []),
65
+ ...(opts.syncApiUrl ? ['--sync-api-url', opts.syncApiUrl] : []),
66
+ ...(opts.syncCodeMieUrl ? ['--sync-codemie-url', opts.syncCodeMieUrl] : []),
67
+ ];
68
+ logger.debug('[daemon-manager] Spawning daemon', ...sanitizeLogArgs({
69
+ daemonBin,
70
+ targetUrl: opts.targetUrl,
71
+ provider: opts.provider,
72
+ profile: opts.profile,
73
+ port: opts.port,
74
+ gatewayKey,
75
+ telemetryMode: opts.telemetryMode,
76
+ syncApiUrl: opts.syncApiUrl,
77
+ syncCodeMieUrl: opts.syncCodeMieUrl
78
+ }));
79
+ spawnDetached(process.execPath, args);
80
+ // Poll up to 5 s for daemon readiness
81
+ for (let i = 0; i < 50; i++) {
82
+ await new Promise(r => setTimeout(r, 100));
83
+ const state = await readState(stateFile);
84
+ if (state && isProcessAlive(state.pid))
85
+ return state;
86
+ }
87
+ throw new ToolExecutionError('proxy-daemon', 'Daemon failed to start within 5 seconds. Check logs: ~/.codemie/logs/');
88
+ }
89
+ export async function stopDaemon() {
90
+ const stateFile = DEFAULT_STATE_FILE;
91
+ const state = await readState(stateFile);
92
+ if (!state)
93
+ return;
94
+ if (isProcessAlive(state.pid)) {
95
+ process.kill(state.pid, 'SIGTERM');
96
+ for (let i = 0; i < 50; i++) {
97
+ await new Promise(r => setTimeout(r, 100));
98
+ if (!isProcessAlive(state.pid)) {
99
+ await clearState(stateFile);
100
+ return;
101
+ }
102
+ }
103
+ throw new ToolExecutionError('proxy-daemon', `Daemon pid ${state.pid} did not stop within 5 seconds`);
104
+ }
105
+ await clearState(stateFile);
106
+ }
107
+ //# sourceMappingURL=daemon-manager.js.map