@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
@@ -0,0 +1 @@
1
+ {"version":3,"file":"daemon-manager.js","sourceRoot":"","sources":["../../../../src/cli/commands/proxy/daemon-manager.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,3 @@
1
+ import { Command } from 'commander';
2
+ export declare function createProxyCommand(): Command;
3
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +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;AAyGpC,wBAAgB,kBAAkB,IAAI,OAAO,CAqK5C"}
@@ -0,0 +1,221 @@
1
+ import { Command } from 'commander';
2
+ import chalk from 'chalk';
3
+ import { ConfigLoader } from '../../../utils/config.js';
4
+ import { ProviderRegistry } from '../../../providers/index.js';
5
+ import { ConfigurationError } from '../../../utils/errors.js';
6
+ import { checkStatus, readState, spawnDaemon, stopDaemon, } from './daemon-manager.js';
7
+ import { writeDesktopConfig } from './connectors/desktop.js';
8
+ import { printDesktopInspection } from './inspect-desktop.js';
9
+ const DEFAULT_DAEMON_PORT = 4001;
10
+ const DEFAULT_DESKTOP_INSPECT_LIMIT = 5;
11
+ function parsePortOption(value, fallback) {
12
+ if (!value) {
13
+ return fallback;
14
+ }
15
+ const parsed = Number.parseInt(value, 10);
16
+ if (!Number.isFinite(parsed) || parsed <= 0) {
17
+ throw new ConfigurationError(`Invalid port value: ${value}`);
18
+ }
19
+ return parsed;
20
+ }
21
+ async function resolveDesktopProxyConfig(profileName) {
22
+ const listCodeMieProfiles = async () => {
23
+ const profiles = await ConfigLoader.listProfiles(process.cwd());
24
+ return profiles
25
+ .filter(({ profile }) => {
26
+ const provider = ProviderRegistry.getProvider(profile.provider ?? '');
27
+ return provider?.authType === 'sso';
28
+ })
29
+ .map(({ name }) => name);
30
+ };
31
+ if (profileName) {
32
+ const explicitConfig = await ConfigLoader.load(process.cwd(), { name: profileName });
33
+ const explicitProvider = ProviderRegistry.getProvider(explicitConfig.provider ?? '');
34
+ if (explicitProvider?.authType !== 'sso') {
35
+ const available = await listCodeMieProfiles();
36
+ const details = available.length > 0
37
+ ? `Available CodeMie profiles:\n- ${available.join('\n- ')}`
38
+ : 'No CodeMie SSO profiles were found. Run: codemie setup';
39
+ throw new ConfigurationError(`Profile "${profileName}" is not a CodeMie SSO profile.\n` +
40
+ `Use a CodeMie-backed profile with: codemie proxy connect desktop --profile <name>\n\n` +
41
+ `${details}`);
42
+ }
43
+ return {
44
+ config: explicitConfig,
45
+ profileSource: 'explicit'
46
+ };
47
+ }
48
+ const activeConfig = await ConfigLoader.load(process.cwd());
49
+ const activeProvider = ProviderRegistry.getProvider(activeConfig.provider ?? '');
50
+ if (activeProvider?.authType === 'sso') {
51
+ return { config: activeConfig, profileSource: 'active' };
52
+ }
53
+ const activeProfileName = await ConfigLoader.getActiveProfileName(process.cwd());
54
+ const available = await listCodeMieProfiles();
55
+ const providerName = activeConfig.provider ?? 'unknown';
56
+ const details = available.length > 0
57
+ ? `Use: codemie profile switch <codemie-profile>\n` +
58
+ `Or: codemie proxy connect desktop --profile <codemie-profile>\n\n` +
59
+ `Available CodeMie profiles:\n- ${available.join('\n- ')}`
60
+ : 'Create or switch to a CodeMie SSO profile before using Claude Desktop proxy.';
61
+ throw new ConfigurationError(`Claude Desktop proxy requires an SSO-backed CodeMie profile. ` +
62
+ `Current active profile is "${activeProfileName ?? 'unknown'}" with provider "${providerName}".\n` +
63
+ `${details}`);
64
+ }
65
+ async function verifySsoCredentials(baseUrl, profileName) {
66
+ try {
67
+ const { CodeMieSSO } = await import('../../../providers/plugins/sso/sso.auth.js');
68
+ const sso = new CodeMieSSO();
69
+ const creds = await sso.getStoredCredentials(baseUrl);
70
+ if (!creds) {
71
+ console.error(chalk.red(`✗ No SSO credentials found for profile '${profileName}'.`));
72
+ console.error(` Run: codemie profile login --url ${baseUrl}`);
73
+ process.exit(1);
74
+ }
75
+ }
76
+ catch (err) {
77
+ console.error(chalk.red(`✗ Failed to verify credentials: ${err.message}`));
78
+ process.exit(1);
79
+ }
80
+ }
81
+ export function createProxyCommand() {
82
+ const proxy = new Command('proxy');
83
+ proxy.description('Manage the CodeMie local gateway proxy daemon');
84
+ // ── proxy start ─────────────────────────────────────────────────────────────
85
+ proxy
86
+ .command('start')
87
+ .description('Start the background proxy daemon')
88
+ .option('--port <port>', `Fixed port to listen on (default: ${DEFAULT_DAEMON_PORT})`)
89
+ .option('--profile <name>', 'Profile whose credentials to use')
90
+ .action(async (opts) => {
91
+ const { running, state } = await checkStatus();
92
+ if (running && state) {
93
+ console.log(chalk.green(`✓ Proxy already running at ${state.url} (profile: ${state.profile})`));
94
+ return;
95
+ }
96
+ const config = await ConfigLoader.load(process.cwd(), opts.profile ? { name: opts.profile } : undefined);
97
+ if (!config.baseUrl) {
98
+ console.error(chalk.red('✗ No API URL configured for this profile.'));
99
+ console.error(' Run: codemie setup');
100
+ process.exit(1);
101
+ }
102
+ await verifySsoCredentials(config.baseUrl, config.name ?? 'default');
103
+ console.log('Starting proxy daemon...');
104
+ const daemonState = await spawnDaemon({
105
+ targetUrl: config.baseUrl,
106
+ provider: config.provider ?? 'ai-run-sso',
107
+ profile: config.name ?? 'default',
108
+ port: parsePortOption(opts.port, DEFAULT_DAEMON_PORT),
109
+ syncApiUrl: config.ssoConfig?.apiUrl,
110
+ syncCodeMieUrl: config.codeMieUrl,
111
+ });
112
+ console.log(chalk.green(`✓ Proxy running at ${daemonState.url} (profile: ${daemonState.profile})`));
113
+ });
114
+ // ── proxy stop ──────────────────────────────────────────────────────────────
115
+ proxy
116
+ .command('stop')
117
+ .description('Stop the background proxy daemon')
118
+ .action(async () => {
119
+ const { running } = await checkStatus();
120
+ if (!running) {
121
+ console.log('Proxy is not running.');
122
+ return;
123
+ }
124
+ await stopDaemon();
125
+ console.log(chalk.green('✓ Proxy stopped'));
126
+ });
127
+ // ── proxy status ─────────────────────────────────────────────────────────────
128
+ proxy
129
+ .command('status')
130
+ .description('Show proxy daemon status')
131
+ .action(async () => {
132
+ const { running, state } = await checkStatus();
133
+ if (!running || !state) {
134
+ console.log('Status: stopped');
135
+ return;
136
+ }
137
+ const uptimeSec = Math.floor((Date.now() - new Date(state.startedAt).getTime()) / 1000);
138
+ const uptime = uptimeSec < 60
139
+ ? `${uptimeSec}s`
140
+ : uptimeSec < 3600
141
+ ? `${Math.floor(uptimeSec / 60)}m ${uptimeSec % 60}s`
142
+ : `${Math.floor(uptimeSec / 3600)}h ${Math.floor((uptimeSec % 3600) / 60)}m`;
143
+ console.log(`Status: ${chalk.green('running')}`);
144
+ console.log(` URL: ${state.url}`);
145
+ console.log(` Port: ${state.port}`);
146
+ console.log(` Profile: ${state.profile}`);
147
+ console.log(` Uptime: ${uptime}`);
148
+ });
149
+ // ── proxy connect ────────────────────────────────────────────────────────────
150
+ const connect = new Command('connect');
151
+ connect.description('Configure a client to use the local proxy');
152
+ connect
153
+ .command('desktop')
154
+ .description('Configure Claude Desktop (3P) to use the local proxy')
155
+ .option('--profile <name>', 'Profile whose credentials to use for Claude Desktop proxy')
156
+ .action(async (opts) => {
157
+ let { running, state } = await checkStatus();
158
+ if (running && state?.telemetryMode !== 'claude-desktop') {
159
+ console.log('Proxy is running without Desktop telemetry — restarting in claude-desktop mode...');
160
+ await stopDaemon();
161
+ running = false;
162
+ state = null;
163
+ }
164
+ if (!running) {
165
+ console.log('Proxy not running — starting it now...');
166
+ const { config, profileSource } = await resolveDesktopProxyConfig(opts.profile);
167
+ if (!config.baseUrl) {
168
+ console.error(chalk.red('✗ No API URL configured. Run: codemie setup'));
169
+ process.exit(1);
170
+ }
171
+ const provider = ProviderRegistry.getProvider(config.provider ?? '');
172
+ if (provider?.authType !== 'sso') {
173
+ console.error(chalk.red(`✗ Claude Desktop proxy requires an SSO-backed profile. Selected provider: ${config.provider ?? 'unknown'}`));
174
+ console.error(' Use: codemie proxy connect desktop --profile <your-ai-run-sso-profile>');
175
+ process.exit(1);
176
+ }
177
+ if (!config.codeMieUrl) {
178
+ console.error(chalk.red('✗ Selected profile is missing CodeMie URL.'));
179
+ console.error(' Run: codemie setup or codemie profile login');
180
+ process.exit(1);
181
+ }
182
+ console.log(chalk.cyan(`Using profile: ${config.name ?? 'default'} ` +
183
+ `(source: ${profileSource === 'explicit' ? '--profile' : 'active profile'})`));
184
+ await verifySsoCredentials(config.baseUrl, config.name ?? 'default');
185
+ state = await spawnDaemon({
186
+ targetUrl: config.baseUrl,
187
+ provider: config.provider ?? 'ai-run-sso',
188
+ profile: config.name ?? 'default',
189
+ port: DEFAULT_DAEMON_PORT,
190
+ telemetryMode: 'claude-desktop',
191
+ syncApiUrl: config.ssoConfig?.apiUrl,
192
+ syncCodeMieUrl: config.codeMieUrl,
193
+ });
194
+ console.log(chalk.green(`✓ Proxy started at ${state.url}`));
195
+ }
196
+ const configPath = await writeDesktopConfig(state.url, state.gatewayKey);
197
+ console.log(chalk.green('✓ Claude Desktop configured'));
198
+ console.log(` Config: ${configPath}`);
199
+ console.log(` Gateway: ${state.url}`);
200
+ console.log(chalk.dim(' Telemetry: metrics and conversations will sync as claude-desktop.'));
201
+ console.log(chalk.yellow(' Restart Claude Desktop to apply changes.'));
202
+ });
203
+ const inspect = new Command('inspect');
204
+ inspect.description('Inspect proxy integrations and telemetry state');
205
+ inspect
206
+ .command('desktop')
207
+ .description('Inspect Claude Desktop proxy telemetry readiness')
208
+ .option('--limit <count>', 'Maximum number of recent sessions to inspect', String(DEFAULT_DESKTOP_INSPECT_LIMIT))
209
+ .action(async (opts) => {
210
+ const { running, state } = await checkStatus();
211
+ const persistedState = state ?? await readState();
212
+ const limit = Number.parseInt(opts.limit, 10);
213
+ await printDesktopInspection(running, persistedState, {
214
+ limit: Number.isFinite(limit) && limit > 0 ? limit : undefined
215
+ });
216
+ });
217
+ proxy.addCommand(connect);
218
+ proxy.addCommand(inspect);
219
+ return proxy;
220
+ }
221
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/cli/commands/proxy/index.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,28 @@
1
+ import type { LocalTelemetryDiscoveredSession } from '../../../telemetry/runtime/types.js';
2
+ import type { DaemonState } from './daemon-manager.js';
3
+ interface DesktopInspectionResult {
4
+ daemonRunning: boolean;
5
+ daemonState: DaemonState | null;
6
+ desktopBaseDir: string;
7
+ localSessionsRoot: string;
8
+ codeSessionsRoot: string;
9
+ credentialsUrl?: string;
10
+ hasCredentials: boolean;
11
+ sessions: DesktopSessionInspection[];
12
+ }
13
+ interface DesktopSessionInspection {
14
+ discovered: LocalTelemetryDiscoveredSession;
15
+ codemieSessionId?: string;
16
+ sessionStatus: string;
17
+ metricsFileExists: boolean;
18
+ conversationFileExists: boolean;
19
+ reasons: string[];
20
+ }
21
+ export declare function inspectDesktopProxy(daemonRunning: boolean, daemonState: DaemonState | null, options?: {
22
+ limit?: number;
23
+ }): Promise<DesktopInspectionResult>;
24
+ export declare function printDesktopInspection(daemonRunning: boolean, daemonState: DaemonState | null, options?: {
25
+ limit?: number;
26
+ }): Promise<void>;
27
+ export {};
28
+ //# sourceMappingURL=inspect-desktop.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"inspect-desktop.d.ts","sourceRoot":"","sources":["../../../../src/cli/commands/proxy/inspect-desktop.ts"],"names":[],"mappings":"AAeA,OAAO,KAAK,EAAE,+BAA+B,EAAE,MAAM,8BAA8B,CAAC;AACpF,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,qBAAqB,CAAC;AAIvD,UAAU,uBAAuB;IAC/B,aAAa,EAAE,OAAO,CAAC;IACvB,WAAW,EAAE,WAAW,GAAG,IAAI,CAAC;IAChC,cAAc,EAAE,MAAM,CAAC;IACvB,iBAAiB,EAAE,MAAM,CAAC;IAC1B,gBAAgB,EAAE,MAAM,CAAC;IACzB,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,cAAc,EAAE,OAAO,CAAC;IACxB,QAAQ,EAAE,wBAAwB,EAAE,CAAC;CACtC;AAED,UAAU,wBAAwB;IAChC,UAAU,EAAE,+BAA+B,CAAC;IAC5C,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,aAAa,EAAE,MAAM,CAAC;IACtB,iBAAiB,EAAE,OAAO,CAAC;IAC3B,sBAAsB,EAAE,OAAO,CAAC;IAChC,OAAO,EAAE,MAAM,EAAE,CAAC;CACnB;AA+ED,wBAAsB,mBAAmB,CACvC,aAAa,EAAE,OAAO,EACtB,WAAW,EAAE,WAAW,GAAG,IAAI,EAC/B,OAAO,GAAE;IAAE,KAAK,CAAC,EAAE,MAAM,CAAA;CAAO,GAC/B,OAAO,CAAC,uBAAuB,CAAC,CAuBlC;AAED,wBAAsB,sBAAsB,CAC1C,aAAa,EAAE,OAAO,EACtB,WAAW,EAAE,WAAW,GAAG,IAAI,EAC/B,OAAO,GAAE;IAAE,KAAK,CAAC,EAAE,MAAM,CAAA;CAAO,GAC/B,OAAO,CAAC,IAAI,CAAC,CA6Cf"}
@@ -0,0 +1,134 @@
1
+ import { existsSync } from 'fs';
2
+ import { readFile } from 'fs/promises';
3
+ import chalk from 'chalk';
4
+ import { SessionStore } from '../../../agents/core/session/SessionStore.js';
5
+ import { getSessionConversationPath, getSessionMetricsPath } from '../../../agents/core/session/session-config.js';
6
+ import { CodeMieSSO } from '../../../providers/plugins/sso/sso.auth.js';
7
+ import { discoverClaudeDesktopSessions } from '../../../telemetry/clients/claude-desktop/claude-desktop.discovery.js';
8
+ import { getClaudeDesktopBaseDir, getClaudeDesktopCodeSessionsRoot, getClaudeDesktopLocalSessionsRoot } from '../../../telemetry/clients/claude-desktop/claude-desktop.paths.js';
9
+ const DEFAULT_MAX_SESSIONS = 5;
10
+ function formatDate(timestamp) {
11
+ if (!timestamp) {
12
+ return 'n/a';
13
+ }
14
+ const value = typeof timestamp === 'string' ? new Date(timestamp).getTime() : timestamp;
15
+ return new Date(value).toISOString();
16
+ }
17
+ function formatBoolean(value) {
18
+ return value ? chalk.green('yes') : chalk.red('no');
19
+ }
20
+ function formatSessionStatus(session) {
21
+ if (session.codemieSessionId && session.metricsFileExists && session.conversationFileExists) {
22
+ return chalk.green('ingested');
23
+ }
24
+ if (session.codemieSessionId) {
25
+ return chalk.yellow('session-only');
26
+ }
27
+ return chalk.red('not-ingested');
28
+ }
29
+ async function countJsonlLines(path) {
30
+ if (!existsSync(path)) {
31
+ return 0;
32
+ }
33
+ const content = await readFile(path, 'utf-8');
34
+ return content.split('\n').filter(Boolean).length;
35
+ }
36
+ async function inspectSessions(sessions, daemonState) {
37
+ const sessionStore = new SessionStore();
38
+ const daemonStartedAt = daemonState?.startedAt ? new Date(daemonState.startedAt).getTime() : undefined;
39
+ const inspections = [];
40
+ for (const discovered of sessions) {
41
+ const persisted = await sessionStore.findSessionByExternalId('claude-desktop', discovered.externalSessionId);
42
+ const reasons = [];
43
+ if (!daemonState) {
44
+ reasons.push('daemon-not-running');
45
+ }
46
+ else if (daemonState.telemetryMode !== 'claude-desktop') {
47
+ reasons.push('daemon-not-in-desktop-mode');
48
+ }
49
+ if (daemonStartedAt && discovered.createdAt < daemonStartedAt && !persisted) {
50
+ reasons.push('session-created-before-daemon-start');
51
+ }
52
+ if (discovered.isArchived) {
53
+ reasons.push('session-archived');
54
+ }
55
+ const codemieSessionId = persisted?.sessionId;
56
+ const metricsPath = codemieSessionId ? getSessionMetricsPath(codemieSessionId) : '';
57
+ const conversationPath = codemieSessionId ? getSessionConversationPath(codemieSessionId) : '';
58
+ inspections.push({
59
+ discovered,
60
+ codemieSessionId,
61
+ sessionStatus: persisted?.status ?? 'none',
62
+ metricsFileExists: Boolean(codemieSessionId && existsSync(metricsPath)),
63
+ conversationFileExists: Boolean(codemieSessionId && existsSync(conversationPath)),
64
+ reasons
65
+ });
66
+ }
67
+ return inspections;
68
+ }
69
+ export async function inspectDesktopProxy(daemonRunning, daemonState, options = {}) {
70
+ const localSessionsRoot = getClaudeDesktopLocalSessionsRoot();
71
+ const codeSessionsRoot = getClaudeDesktopCodeSessionsRoot();
72
+ const desktopBaseDir = getClaudeDesktopBaseDir();
73
+ const credentialsUrl = daemonState?.syncCodeMieUrl || daemonState?.targetUrl;
74
+ const credentials = credentialsUrl
75
+ ? await new CodeMieSSO().getStoredCredentials(credentialsUrl).catch(() => null)
76
+ : null;
77
+ const discovered = await discoverClaudeDesktopSessions(0);
78
+ const sortedSessions = discovered
79
+ .sort((a, b) => b.updatedAt - a.updatedAt)
80
+ .slice(0, options.limit ?? DEFAULT_MAX_SESSIONS);
81
+ return {
82
+ daemonRunning,
83
+ daemonState,
84
+ desktopBaseDir,
85
+ localSessionsRoot,
86
+ codeSessionsRoot,
87
+ credentialsUrl,
88
+ hasCredentials: Boolean(credentials?.cookies),
89
+ sessions: await inspectSessions(sortedSessions, daemonState)
90
+ };
91
+ }
92
+ export async function printDesktopInspection(daemonRunning, daemonState, options = {}) {
93
+ const result = await inspectDesktopProxy(daemonRunning, daemonState, options);
94
+ console.log(chalk.bold('Claude Desktop Proxy Inspection'));
95
+ console.log(`Daemon running: ${daemonRunning ? chalk.green('yes') : chalk.red('no')}`);
96
+ console.log(`Telemetry mode: ${daemonState?.telemetryMode ?? chalk.red('none')}`);
97
+ console.log(`Daemon clientType: ${daemonState?.clientType ?? 'n/a'}`);
98
+ console.log(`Target URL: ${daemonState?.targetUrl ?? 'n/a'}`);
99
+ console.log(`Sync API URL: ${daemonState?.syncApiUrl ?? 'n/a'}`);
100
+ console.log(`CodeMie URL: ${daemonState?.syncCodeMieUrl ?? 'n/a'}`);
101
+ console.log(`Started at: ${formatDate(daemonState?.startedAt)}`);
102
+ console.log(`Desktop base dir: ${result.desktopBaseDir} (${formatBoolean(existsSync(result.desktopBaseDir))})`);
103
+ console.log(`Local sessions root: ${result.localSessionsRoot} (${formatBoolean(existsSync(result.localSessionsRoot))})`);
104
+ console.log(`Code sessions root: ${result.codeSessionsRoot} (${formatBoolean(existsSync(result.codeSessionsRoot))})`);
105
+ console.log(`SSO credentials: ${formatBoolean(result.hasCredentials)}${result.credentialsUrl ? ` (${result.credentialsUrl})` : ''}`);
106
+ console.log('');
107
+ if (result.sessions.length === 0) {
108
+ console.log(chalk.yellow('No Claude Desktop local-agent sessions found.'));
109
+ return;
110
+ }
111
+ console.log(chalk.bold(`Recent sessions (${result.sessions.length})`));
112
+ for (const session of result.sessions) {
113
+ const metricsPath = session.codemieSessionId ? getSessionMetricsPath(session.codemieSessionId) : undefined;
114
+ const conversationPath = session.codemieSessionId ? getSessionConversationPath(session.codemieSessionId) : undefined;
115
+ const [metricsLines, conversationLines] = await Promise.all([
116
+ metricsPath ? countJsonlLines(metricsPath) : Promise.resolve(0),
117
+ conversationPath ? countJsonlLines(conversationPath) : Promise.resolve(0)
118
+ ]);
119
+ console.log(`- ${session.discovered.externalSessionId}`);
120
+ console.log(` Updated: ${formatDate(session.discovered.updatedAt)}`);
121
+ console.log(` Created: ${formatDate(session.discovered.createdAt)}`);
122
+ console.log(` CLI session id: ${session.discovered.agentSessionId}`);
123
+ console.log(` Model: ${session.discovered.model ?? 'n/a'}`);
124
+ console.log(` Working dir: ${session.discovered.workingDirectory}`);
125
+ console.log(` Transcript: ${session.discovered.transcriptPath}`);
126
+ console.log(` CodeMie session: ${session.codemieSessionId ?? 'none'}`);
127
+ console.log(` Status: ${formatSessionStatus(session)} (${session.sessionStatus})`);
128
+ console.log(` Metrics JSONL: ${session.metricsFileExists ? chalk.green(`yes (${metricsLines} lines)`) : chalk.red('no')}`);
129
+ console.log(` Conversation JSONL: ${session.conversationFileExists ? chalk.green(`yes (${conversationLines} lines)`) : chalk.red('no')}`);
130
+ console.log(` Reasons: ${session.reasons.length > 0 ? session.reasons.join(', ') : 'eligible'}`);
131
+ console.log('');
132
+ }
133
+ }
134
+ //# sourceMappingURL=inspect-desktop.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"inspect-desktop.js","sourceRoot":"","sources":["../../../../src/cli/commands/proxy/inspect-desktop.ts"],"names":[],"mappings":"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"}
package/dist/cli/index.js CHANGED
@@ -29,6 +29,7 @@ import { createModelsCommand } from './commands/models.js';
29
29
  import { createAssistantsCommand } from './commands/assistants/index.js';
30
30
  import { createMcpCommand } from './commands/mcp/index.js';
31
31
  import { createMcpProxyCommand } from './commands/mcp-proxy.js';
32
+ import { createProxyCommand } from './commands/proxy/index.js';
32
33
  import { FirstTimeExperience } from './first-time.js';
33
34
  import { getDirname } from '../utils/paths.js';
34
35
  const program = new Command();
@@ -48,6 +49,16 @@ program
48
49
  .description('AI/Run CodeMie CLI - Professional CLI wrapper for managing multiple AI coding agents')
49
50
  .version(version)
50
51
  .option('--task <task>', 'Execute a single task using the built-in agent and exit');
52
+ program.addHelpText('after', `
53
+ Claude Desktop 3P:
54
+ codemie proxy connect desktop Connect Claude Desktop through CodeMie proxy
55
+ codemie proxy inspect desktop Inspect Desktop proxy state, sessions, and sync
56
+ codemie proxy stop Stop the local proxy daemon
57
+
58
+ Profile selection:
59
+ Uses the active CodeMie profile by default.
60
+ Override for one run with: codemie proxy connect desktop --profile <name>
61
+ `);
51
62
  // Add commands
52
63
  program.addCommand(createSetupCommand());
53
64
  program.addCommand(createProfileCommand());
@@ -71,6 +82,7 @@ program.addCommand(createTestMetricsCommand());
71
82
  program.addCommand(createModelsCommand());
72
83
  program.addCommand(createMcpCommand());
73
84
  program.addCommand(createMcpProxyCommand());
85
+ program.addCommand(createProxyCommand());
74
86
  // Check for --task option before parsing commands
75
87
  const taskIndex = process.argv.indexOf('--task');
76
88
  if (taskIndex !== -1 && taskIndex < process.argv.length - 1) {
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/cli/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/cli/index.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,9 @@
1
+ import type { ProxyPlugin, PluginContext, ProxyInterceptor } from './types.js';
2
+ export declare class GatewayKeyPlugin implements ProxyPlugin {
3
+ id: string;
4
+ name: string;
5
+ version: string;
6
+ priority: number;
7
+ createInterceptor(context: PluginContext): ProxyInterceptor;
8
+ }
9
+ //# sourceMappingURL=gateway-key.plugin.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"gateway-key.plugin.d.ts","sourceRoot":"","sources":["../../../../../../src/providers/plugins/sso/proxy/plugins/gateway-key.plugin.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,WAAW,EAAE,aAAa,EAAE,gBAAgB,EAAE,MAAM,YAAY,CAAC;AAK/E,qBAAa,gBAAiB,YAAW,WAAW;IAClD,EAAE,SAAgC;IAClC,IAAI,SAAsB;IAC1B,OAAO,SAAW;IAClB,QAAQ,SAAK;IAEb,iBAAiB,CAAC,OAAO,EAAE,aAAa,GAAG,gBAAgB;CAoC5D"}
@@ -0,0 +1,36 @@
1
+ import { logger } from '../../../../../utils/logger.js';
2
+ export class GatewayKeyPlugin {
3
+ id = '@codemie/proxy-gateway-key';
4
+ name = 'Gateway Key Auth';
5
+ version = '1.0.0';
6
+ priority = 7;
7
+ createInterceptor(context) {
8
+ const gatewayKey = context.config.gatewayKey;
9
+ return {
10
+ name: this.name,
11
+ async handleRequest(ctx, _req, res, _httpClient) {
12
+ if (!gatewayKey)
13
+ return false;
14
+ if (ctx.metadata.gatewayKeyValidated)
15
+ return false;
16
+ const authHeader = ctx.headers['authorization'];
17
+ const expected = `Bearer ${gatewayKey}`;
18
+ if (!authHeader || authHeader !== expected) {
19
+ logger.debug('[gateway-key] Rejected: invalid or missing gateway key');
20
+ res.statusCode = 401;
21
+ res.setHeader('Content-Type', 'application/json');
22
+ res.end(JSON.stringify({
23
+ type: 'error',
24
+ error: { type: 'authentication_error', message: 'Invalid API key' },
25
+ }));
26
+ return true;
27
+ }
28
+ delete ctx.headers['authorization'];
29
+ ctx.metadata.gatewayKeyValidated = true;
30
+ logger.debug('[gateway-key] Gateway key validated, authorization header stripped');
31
+ return false;
32
+ },
33
+ };
34
+ }
35
+ }
36
+ //# sourceMappingURL=gateway-key.plugin.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"gateway-key.plugin.js","sourceRoot":"","sources":["../../../../../../src/providers/plugins/sso/proxy/plugins/gateway-key.plugin.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,MAAM,EAAE,MAAM,gCAAgC,CAAC;AAExD,MAAM,OAAO,gBAAgB;IAC3B,EAAE,GAAG,4BAA4B,CAAC;IAClC,IAAI,GAAG,kBAAkB,CAAC;IAC1B,OAAO,GAAG,OAAO,CAAC;IAClB,QAAQ,GAAG,CAAC,CAAC;IAEb,iBAAiB,CAAC,OAAsB;QACtC,MAAM,UAAU,GAAG,OAAO,CAAC,MAAM,CAAC,UAAU,CAAC;QAE7C,OAAO;YACL,IAAI,EAAE,IAAI,CAAC,IAAI;YAEf,KAAK,CAAC,aAAa,CACjB,GAAiB,EACjB,IAAqB,EACrB,GAAmB,EACnB,WAA4B;gBAE5B,IAAI,CAAC,UAAU;oBAAE,OAAO,KAAK,CAAC;gBAC9B,IAAI,GAAG,CAAC,QAAQ,CAAC,mBAAmB;oBAAE,OAAO,KAAK,CAAC;gBAEnD,MAAM,UAAU,GAAG,GAAG,CAAC,OAAO,CAAC,eAAe,CAAC,CAAC;gBAChD,MAAM,QAAQ,GAAG,UAAU,UAAU,EAAE,CAAC;gBAExC,IAAI,CAAC,UAAU,IAAI,UAAU,KAAK,QAAQ,EAAE,CAAC;oBAC3C,MAAM,CAAC,KAAK,CAAC,wDAAwD,CAAC,CAAC;oBACvE,GAAG,CAAC,UAAU,GAAG,GAAG,CAAC;oBACrB,GAAG,CAAC,SAAS,CAAC,cAAc,EAAE,kBAAkB,CAAC,CAAC;oBAClD,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC;wBACrB,IAAI,EAAE,OAAO;wBACb,KAAK,EAAE,EAAE,IAAI,EAAE,sBAAsB,EAAE,OAAO,EAAE,iBAAiB,EAAE;qBACpE,CAAC,CAAC,CAAC;oBACJ,OAAO,IAAI,CAAC;gBACd,CAAC;gBAED,OAAO,GAAG,CAAC,OAAO,CAAC,eAAe,CAAC,CAAC;gBACpC,GAAG,CAAC,QAAQ,CAAC,mBAAmB,GAAG,IAAI,CAAC;gBACxC,MAAM,CAAC,KAAK,CAAC,oEAAoE,CAAC,CAAC;gBACnF,OAAO,KAAK,CAAC;YACf,CAAC;SACF,CAAC;IACJ,CAAC;CACF"}
@@ -6,6 +6,7 @@
6
6
  */
7
7
  import { MCPAuthPlugin } from './mcp-auth.plugin.js';
8
8
  import { EndpointBlockerPlugin } from './endpoint-blocker.plugin.js';
9
+ import { GatewayKeyPlugin } from './gateway-key.plugin.js';
9
10
  import { SSOAuthPlugin } from './sso-auth.plugin.js';
10
11
  import { JWTAuthPlugin } from './jwt-auth.plugin.js';
11
12
  import { HeaderInjectionPlugin } from './header-injection.plugin.js';
@@ -17,7 +18,7 @@ import { LoggingPlugin } from './logging.plugin.js';
17
18
  * Called at app startup
18
19
  */
19
20
  export declare function registerCorePlugins(): void;
20
- export { MCPAuthPlugin, EndpointBlockerPlugin, SSOAuthPlugin, JWTAuthPlugin, HeaderInjectionPlugin, RequestSanitizerPlugin, ClaudeThinkingTransformerPlugin, LoggingPlugin, };
21
+ export { MCPAuthPlugin, EndpointBlockerPlugin, GatewayKeyPlugin, SSOAuthPlugin, JWTAuthPlugin, HeaderInjectionPlugin, RequestSanitizerPlugin, ClaudeThinkingTransformerPlugin, LoggingPlugin, };
21
22
  export { SSOSessionSyncPlugin } from './sso.session-sync.plugin.js';
22
23
  export { getPluginRegistry, resetPluginRegistry } from './registry.js';
23
24
  export * from './types.js';
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../../src/providers/plugins/sso/proxy/plugins/index.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAGH,OAAO,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AACrD,OAAO,EAAE,qBAAqB,EAAE,MAAM,8BAA8B,CAAC;AACrE,OAAO,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AACrD,OAAO,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AACrD,OAAO,EAAE,qBAAqB,EAAE,MAAM,8BAA8B,CAAC;AACrE,OAAO,EAAE,sBAAsB,EAAE,MAAM,+BAA+B,CAAC;AACvE,OAAO,EAAE,+BAA+B,EAAE,MAAM,yCAAyC,CAAC;AAC1F,OAAO,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AAGpD;;;GAGG;AACH,wBAAgB,mBAAmB,IAAI,IAAI,CAa1C;AAMD,OAAO,EACL,aAAa,EACb,qBAAqB,EACrB,aAAa,EACb,aAAa,EACb,qBAAqB,EACrB,sBAAsB,EACtB,+BAA+B,EAC/B,aAAa,GACd,CAAC;AACF,OAAO,EAAE,oBAAoB,EAAE,MAAM,8BAA8B,CAAC;AACpE,OAAO,EAAE,iBAAiB,EAAE,mBAAmB,EAAE,MAAM,eAAe,CAAC;AACvE,cAAc,YAAY,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../../src/providers/plugins/sso/proxy/plugins/index.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAGH,OAAO,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AACrD,OAAO,EAAE,qBAAqB,EAAE,MAAM,8BAA8B,CAAC;AACrE,OAAO,EAAE,gBAAgB,EAAE,MAAM,yBAAyB,CAAC;AAC3D,OAAO,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AACrD,OAAO,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AACrD,OAAO,EAAE,qBAAqB,EAAE,MAAM,8BAA8B,CAAC;AACrE,OAAO,EAAE,sBAAsB,EAAE,MAAM,+BAA+B,CAAC;AACvE,OAAO,EAAE,+BAA+B,EAAE,MAAM,yCAAyC,CAAC;AAC1F,OAAO,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AAGpD;;;GAGG;AACH,wBAAgB,mBAAmB,IAAI,IAAI,CAc1C;AAMD,OAAO,EACL,aAAa,EACb,qBAAqB,EACrB,gBAAgB,EAChB,aAAa,EACb,aAAa,EACb,qBAAqB,EACrB,sBAAsB,EACtB,+BAA+B,EAC/B,aAAa,GACd,CAAC;AACF,OAAO,EAAE,oBAAoB,EAAE,MAAM,8BAA8B,CAAC;AACpE,OAAO,EAAE,iBAAiB,EAAE,mBAAmB,EAAE,MAAM,eAAe,CAAC;AACvE,cAAc,YAAY,CAAC"}
@@ -7,6 +7,7 @@
7
7
  import { getPluginRegistry } from './registry.js';
8
8
  import { MCPAuthPlugin } from './mcp-auth.plugin.js';
9
9
  import { EndpointBlockerPlugin } from './endpoint-blocker.plugin.js';
10
+ import { GatewayKeyPlugin } from './gateway-key.plugin.js';
10
11
  import { SSOAuthPlugin } from './sso-auth.plugin.js';
11
12
  import { JWTAuthPlugin } from './jwt-auth.plugin.js';
12
13
  import { HeaderInjectionPlugin } from './header-injection.plugin.js';
@@ -23,6 +24,7 @@ export function registerCorePlugins() {
23
24
  // Register in any order (priority determines execution order)
24
25
  registry.register(new MCPAuthPlugin()); // Priority 3 - MCP auth relay routing
25
26
  registry.register(new EndpointBlockerPlugin()); // Priority 5 - blocks unwanted endpoints early
27
+ registry.register(new GatewayKeyPlugin()); // Priority 7 - gateway key validation (daemon mode)
26
28
  registry.register(new SSOAuthPlugin());
27
29
  registry.register(new JWTAuthPlugin());
28
30
  registry.register(new RequestSanitizerPlugin()); // Priority 15 - strips unsupported reasoning params
@@ -34,7 +36,7 @@ export function registerCorePlugins() {
34
36
  // Auto-register on import
35
37
  registerCorePlugins();
36
38
  // Re-export for convenience
37
- export { MCPAuthPlugin, EndpointBlockerPlugin, SSOAuthPlugin, JWTAuthPlugin, HeaderInjectionPlugin, RequestSanitizerPlugin, ClaudeThinkingTransformerPlugin, LoggingPlugin, };
39
+ export { MCPAuthPlugin, EndpointBlockerPlugin, GatewayKeyPlugin, SSOAuthPlugin, JWTAuthPlugin, HeaderInjectionPlugin, RequestSanitizerPlugin, ClaudeThinkingTransformerPlugin, LoggingPlugin, };
38
40
  export { SSOSessionSyncPlugin } from './sso.session-sync.plugin.js';
39
41
  export { getPluginRegistry, resetPluginRegistry } from './registry.js';
40
42
  export * from './types.js';
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../../src/providers/plugins/sso/proxy/plugins/index.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAAE,iBAAiB,EAAE,MAAM,eAAe,CAAC;AAClD,OAAO,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AACrD,OAAO,EAAE,qBAAqB,EAAE,MAAM,8BAA8B,CAAC;AACrE,OAAO,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AACrD,OAAO,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AACrD,OAAO,EAAE,qBAAqB,EAAE,MAAM,8BAA8B,CAAC;AACrE,OAAO,EAAE,sBAAsB,EAAE,MAAM,+BAA+B,CAAC;AACvE,OAAO,EAAE,+BAA+B,EAAE,MAAM,yCAAyC,CAAC;AAC1F,OAAO,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AACpD,OAAO,EAAE,oBAAoB,EAAE,MAAM,8BAA8B,CAAC;AAEpE;;;GAGG;AACH,MAAM,UAAU,mBAAmB;IACjC,MAAM,QAAQ,GAAG,iBAAiB,EAAE,CAAC;IAErC,8DAA8D;IAC9D,QAAQ,CAAC,QAAQ,CAAC,IAAI,aAAa,EAAE,CAAC,CAAC,CAAU,sCAAsC;IACvF,QAAQ,CAAC,QAAQ,CAAC,IAAI,qBAAqB,EAAE,CAAC,CAAC,CAAC,+CAA+C;IAC/F,QAAQ,CAAC,QAAQ,CAAC,IAAI,aAAa,EAAE,CAAC,CAAC;IACvC,QAAQ,CAAC,QAAQ,CAAC,IAAI,aAAa,EAAE,CAAC,CAAC;IACvC,QAAQ,CAAC,QAAQ,CAAC,IAAI,sBAAsB,EAAE,CAAC,CAAC,CAAC,oDAAoD;IACrG,QAAQ,CAAC,QAAQ,CAAC,IAAI,+BAA+B,EAAE,CAAC,CAAC,CAAC,kEAAkE;IAC5H,QAAQ,CAAC,QAAQ,CAAC,IAAI,qBAAqB,EAAE,CAAC,CAAC;IAC/C,QAAQ,CAAC,QAAQ,CAAC,IAAI,aAAa,EAAE,CAAC,CAAC,CAAC,mDAAmD;IAC3F,QAAQ,CAAC,QAAQ,CAAC,IAAI,oBAAoB,EAAE,CAAC,CAAC,CAAC,wDAAwD;AACzG,CAAC;AAED,0BAA0B;AAC1B,mBAAmB,EAAE,CAAC;AAEtB,4BAA4B;AAC5B,OAAO,EACL,aAAa,EACb,qBAAqB,EACrB,aAAa,EACb,aAAa,EACb,qBAAqB,EACrB,sBAAsB,EACtB,+BAA+B,EAC/B,aAAa,GACd,CAAC;AACF,OAAO,EAAE,oBAAoB,EAAE,MAAM,8BAA8B,CAAC;AACpE,OAAO,EAAE,iBAAiB,EAAE,mBAAmB,EAAE,MAAM,eAAe,CAAC;AACvE,cAAc,YAAY,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../../src/providers/plugins/sso/proxy/plugins/index.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAAE,iBAAiB,EAAE,MAAM,eAAe,CAAC;AAClD,OAAO,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AACrD,OAAO,EAAE,qBAAqB,EAAE,MAAM,8BAA8B,CAAC;AACrE,OAAO,EAAE,gBAAgB,EAAE,MAAM,yBAAyB,CAAC;AAC3D,OAAO,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AACrD,OAAO,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AACrD,OAAO,EAAE,qBAAqB,EAAE,MAAM,8BAA8B,CAAC;AACrE,OAAO,EAAE,sBAAsB,EAAE,MAAM,+BAA+B,CAAC;AACvE,OAAO,EAAE,+BAA+B,EAAE,MAAM,yCAAyC,CAAC;AAC1F,OAAO,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AACpD,OAAO,EAAE,oBAAoB,EAAE,MAAM,8BAA8B,CAAC;AAEpE;;;GAGG;AACH,MAAM,UAAU,mBAAmB;IACjC,MAAM,QAAQ,GAAG,iBAAiB,EAAE,CAAC;IAErC,8DAA8D;IAC9D,QAAQ,CAAC,QAAQ,CAAC,IAAI,aAAa,EAAE,CAAC,CAAC,CAAU,sCAAsC;IACvF,QAAQ,CAAC,QAAQ,CAAC,IAAI,qBAAqB,EAAE,CAAC,CAAC,CAAC,+CAA+C;IAC/F,QAAQ,CAAC,QAAQ,CAAC,IAAI,gBAAgB,EAAE,CAAC,CAAC,CAAM,oDAAoD;IACpG,QAAQ,CAAC,QAAQ,CAAC,IAAI,aAAa,EAAE,CAAC,CAAC;IACvC,QAAQ,CAAC,QAAQ,CAAC,IAAI,aAAa,EAAE,CAAC,CAAC;IACvC,QAAQ,CAAC,QAAQ,CAAC,IAAI,sBAAsB,EAAE,CAAC,CAAC,CAAC,oDAAoD;IACrG,QAAQ,CAAC,QAAQ,CAAC,IAAI,+BAA+B,EAAE,CAAC,CAAC,CAAC,kEAAkE;IAC5H,QAAQ,CAAC,QAAQ,CAAC,IAAI,qBAAqB,EAAE,CAAC,CAAC;IAC/C,QAAQ,CAAC,QAAQ,CAAC,IAAI,aAAa,EAAE,CAAC,CAAC,CAAC,mDAAmD;IAC3F,QAAQ,CAAC,QAAQ,CAAC,IAAI,oBAAoB,EAAE,CAAC,CAAC,CAAC,wDAAwD;AACzG,CAAC;AAED,0BAA0B;AAC1B,mBAAmB,EAAE,CAAC;AAEtB,4BAA4B;AAC5B,OAAO,EACL,aAAa,EACb,qBAAqB,EACrB,gBAAgB,EAChB,aAAa,EACb,aAAa,EACb,qBAAqB,EACrB,sBAAsB,EACtB,+BAA+B,EAC/B,aAAa,GACd,CAAC;AACF,OAAO,EAAE,oBAAoB,EAAE,MAAM,8BAA8B,CAAC;AACpE,OAAO,EAAE,iBAAiB,EAAE,mBAAmB,EAAE,MAAM,eAAe,CAAC;AACvE,cAAc,YAAY,CAAC"}