@springbrand/cli 0.1.7-alpha.0 → 0.1.7-alpha.2

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 (98) hide show
  1. package/README.md +25 -12
  2. package/dist/commands/auth.d.ts.map +1 -1
  3. package/dist/commands/auth.js +156 -40
  4. package/dist/commands/auth.js.map +1 -1
  5. package/dist/commands/connect.d.ts +2 -0
  6. package/dist/commands/connect.d.ts.map +1 -1
  7. package/dist/commands/connect.js +36 -22
  8. package/dist/commands/connect.js.map +1 -1
  9. package/dist/commands/doctor.js +2 -2
  10. package/dist/commands/doctor.js.map +1 -1
  11. package/dist/lib/auth.d.ts +23 -12
  12. package/dist/lib/auth.d.ts.map +1 -1
  13. package/dist/lib/auth.js +243 -55
  14. package/dist/lib/auth.js.map +1 -1
  15. package/dist/lib/codex-plugin.d.ts +8 -0
  16. package/dist/lib/codex-plugin.d.ts.map +1 -1
  17. package/dist/lib/codex-plugin.js +191 -21
  18. package/dist/lib/codex-plugin.js.map +1 -1
  19. package/dist/lib/connect-all-uninstall.d.ts +2 -2
  20. package/dist/lib/connect-all-uninstall.d.ts.map +1 -1
  21. package/dist/lib/connect-all-uninstall.js +69 -31
  22. package/dist/lib/connect-all-uninstall.js.map +1 -1
  23. package/dist/lib/connect-all.d.ts +4 -0
  24. package/dist/lib/connect-all.d.ts.map +1 -1
  25. package/dist/lib/connect-all.js +12 -9
  26. package/dist/lib/connect-all.js.map +1 -1
  27. package/dist/lib/connect-auth.d.ts +4 -2
  28. package/dist/lib/connect-auth.d.ts.map +1 -1
  29. package/dist/lib/connect-auth.js +14 -9
  30. package/dist/lib/connect-auth.js.map +1 -1
  31. package/dist/lib/connect-clients.d.ts +1 -1
  32. package/dist/lib/connect-clients.d.ts.map +1 -1
  33. package/dist/lib/connect-clients.js +23 -14
  34. package/dist/lib/connect-clients.js.map +1 -1
  35. package/dist/lib/connect-fallback.d.ts.map +1 -1
  36. package/dist/lib/connect-fallback.js +13 -4
  37. package/dist/lib/connect-fallback.js.map +1 -1
  38. package/dist/lib/connect-generic.d.ts +12 -0
  39. package/dist/lib/connect-generic.d.ts.map +1 -0
  40. package/dist/lib/connect-generic.js +80 -0
  41. package/dist/lib/connect-generic.js.map +1 -0
  42. package/dist/lib/connect-preflight.d.ts +1 -0
  43. package/dist/lib/connect-preflight.d.ts.map +1 -1
  44. package/dist/lib/connect-preflight.js +31 -19
  45. package/dist/lib/connect-preflight.js.map +1 -1
  46. package/dist/lib/connect-result.d.ts +1 -1
  47. package/dist/lib/constants.d.ts +2 -0
  48. package/dist/lib/constants.d.ts.map +1 -1
  49. package/dist/lib/constants.js +4 -1
  50. package/dist/lib/constants.js.map +1 -1
  51. package/dist/lib/cursor-config.d.ts +2 -2
  52. package/dist/lib/cursor-config.d.ts.map +1 -1
  53. package/dist/lib/cursor-config.js +5 -5
  54. package/dist/lib/cursor-config.js.map +1 -1
  55. package/dist/lib/devin-config.d.ts +9 -0
  56. package/dist/lib/devin-config.d.ts.map +1 -0
  57. package/dist/lib/devin-config.js +32 -0
  58. package/dist/lib/devin-config.js.map +1 -0
  59. package/dist/lib/doctor-checks.d.ts +1 -1
  60. package/dist/lib/doctor-checks.d.ts.map +1 -1
  61. package/dist/lib/doctor-checks.js +7 -4
  62. package/dist/lib/doctor-checks.js.map +1 -1
  63. package/dist/lib/doctor-report.d.ts +2 -2
  64. package/dist/lib/install-report.d.ts +1 -1
  65. package/dist/lib/key-environment.d.ts +14 -0
  66. package/dist/lib/key-environment.d.ts.map +1 -0
  67. package/dist/lib/key-environment.js +8 -0
  68. package/dist/lib/key-environment.js.map +1 -0
  69. package/dist/lib/mcp-endpoint.d.ts +4 -1
  70. package/dist/lib/mcp-endpoint.d.ts.map +1 -1
  71. package/dist/lib/mcp-endpoint.js +5 -0
  72. package/dist/lib/mcp-endpoint.js.map +1 -1
  73. package/dist/lib/mcp-json-config.d.ts +2 -0
  74. package/dist/lib/mcp-json-config.d.ts.map +1 -1
  75. package/dist/lib/mcp-json-config.js +10 -4
  76. package/dist/lib/mcp-json-config.js.map +1 -1
  77. package/dist/lib/omp-config.d.ts +2 -2
  78. package/dist/lib/omp-config.d.ts.map +1 -1
  79. package/dist/lib/omp-config.js +5 -5
  80. package/dist/lib/omp-config.js.map +1 -1
  81. package/dist/lib/pi-config.d.ts +2 -2
  82. package/dist/lib/pi-config.d.ts.map +1 -1
  83. package/dist/lib/pi-config.js +5 -5
  84. package/dist/lib/pi-config.js.map +1 -1
  85. package/dist/lib/registration-detect.js +5 -5
  86. package/dist/lib/registration-detect.js.map +1 -1
  87. package/dist/lib/workbuddy-config.d.ts +1 -1
  88. package/dist/lib/workbuddy-config.d.ts.map +1 -1
  89. package/dist/lib/workbuddy-config.js +5 -5
  90. package/dist/lib/workbuddy-config.js.map +1 -1
  91. package/package.json +1 -1
  92. package/skill/springbrand-action-api/SKILL.md +20 -7
  93. package/skill/springbrand-action-api/references/action-discovery.md +20 -4
  94. package/skill/springbrand-connector/SKILL.md +3 -2
  95. package/skill/springbrand-gtm/SKILL.md +38 -5
  96. package/skill/springbrand-platform/SKILL.md +4 -2
  97. package/skill/springbrand-platform/references/plugin-discovery.md +5 -4
  98. package/skill/use-springbrand/SKILL.md +127 -18
package/dist/lib/auth.js CHANGED
@@ -4,7 +4,7 @@ import * as os from 'os';
4
4
  import * as path from 'path';
5
5
  import spawn from 'cross-spawn';
6
6
  import { err, errLine } from './output.js';
7
- import { SPRINGBRAND_API_KEY_VAR } from './constants.js';
7
+ import { apiKeyEnvVar, KEY_ENVIRONMENTS } from './key-environment.js';
8
8
  /**
9
9
  * The wire format the platform mints and the Gateway parses:
10
10
  * `sbk_v1_<environment>_<16-byte id>_<32-byte secret>`. Authoritative definition lives in
@@ -39,6 +39,9 @@ export function loadConfig() {
39
39
  const config = {};
40
40
  if (typeof obj['api_key'] === 'string')
41
41
  config.api_key = obj['api_key'];
42
+ const apiKeys = parseApiKeyMap(obj['api_keys']);
43
+ if (apiKeys)
44
+ config.api_keys = apiKeys;
42
45
  const connect = parseConnectMap(obj['connect']);
43
46
  if (connect)
44
47
  config.connect = connect;
@@ -51,6 +54,18 @@ export function loadConfig() {
51
54
  return {};
52
55
  }
53
56
  }
57
+ function parseApiKeyMap(value) {
58
+ if (value === null || typeof value !== 'object' || Array.isArray(value))
59
+ return undefined;
60
+ const record = value;
61
+ const out = {};
62
+ for (const environment of KEY_ENVIRONMENTS) {
63
+ const key = record[environment];
64
+ if (typeof key === 'string')
65
+ out[environment] = key;
66
+ }
67
+ return Object.keys(out).length > 0 ? out : undefined;
68
+ }
54
69
  function parseConnectMap(value) {
55
70
  if (value === null || typeof value !== 'object' || Array.isArray(value))
56
71
  return undefined;
@@ -123,12 +138,22 @@ export function takePendingConnectAttempt() {
123
138
  return Date.now() - pending.ts <= PENDING_ATTEMPT_MAX_AGE_MS ? pending.id : undefined;
124
139
  }
125
140
  /** Throwing variant for callers with their own cleanup (connect's telemetry flush). */
126
- export function writeConfig(apiKey) {
127
- updateConfig((config) => ({ ...config, api_key: apiKey }));
141
+ export function writeConfig(apiKey, environment) {
142
+ updateConfig((config) => {
143
+ const next = {
144
+ ...config,
145
+ api_keys: { ...config.api_keys, [environment]: apiKey },
146
+ };
147
+ // A legacy key moves into its parsed environment on the first write. A key for
148
+ // the other environment stays until that environment writes its own slot.
149
+ if (config.api_key && parseKeyIdentity(config.api_key)?.environment === environment)
150
+ delete next.api_key;
151
+ return next;
152
+ });
128
153
  }
129
- export function saveConfig(apiKey) {
154
+ export function saveConfig(apiKey, environment) {
130
155
  try {
131
- writeConfig(apiKey);
156
+ writeConfig(apiKey, environment);
132
157
  }
133
158
  catch (e) {
134
159
  err({ error: `Could not write config: ${e instanceof Error ? e.message : String(e)}` });
@@ -136,15 +161,25 @@ export function saveConfig(apiKey) {
136
161
  }
137
162
  }
138
163
  /** `authMode` omitted rewrites the entry without one: a reconnect that degraded must not keep a stale key claim. */
164
+ function connectContextKey(client, mcpUrl) {
165
+ return mcpUrl ? `${client}:${new URL(mcpUrl).origin}` : client;
166
+ }
167
+ function isClientContextKey(key, client) {
168
+ return key === client || key.startsWith(`${client}:`);
169
+ }
139
170
  export function saveConnectContext(client, attemptId, authMode, mcpUrl) {
140
171
  const entry = authMode
141
172
  ? { attempt_id: attemptId, auth_mode: authMode }
142
173
  : { attempt_id: attemptId };
143
174
  try {
144
- updateConfig((config) => ({
145
- ...config,
146
- connect: { ...config.connect, [mcpUrl ? `${client}:${new URL(mcpUrl).origin}` : client]: entry },
147
- }));
175
+ updateConfig((config) => {
176
+ const connect = { ...config.connect };
177
+ // The environment-scoped key supersedes the pre-environment marker.
178
+ if (mcpUrl)
179
+ delete connect[client];
180
+ connect[connectContextKey(client, mcpUrl)] = entry;
181
+ return { ...config, connect };
182
+ });
148
183
  }
149
184
  catch (e) {
150
185
  // Best-effort attribution marker: a write failure must not fail a connect that has
@@ -153,7 +188,7 @@ export function saveConnectContext(client, attemptId, authMode, mcpUrl) {
153
188
  }
154
189
  }
155
190
  /** Distinguishes a missing entry from an unreadable config file. */
156
- export function connectContextState(client) {
191
+ export function connectContextState(client, mcpUrl) {
157
192
  let raw;
158
193
  try {
159
194
  raw = fs.readFileSync(configFile(), 'utf8');
@@ -163,23 +198,31 @@ export function connectContextState(client) {
163
198
  }
164
199
  try {
165
200
  const parsed = JSON.parse(raw);
166
- const entry = parsed && typeof parsed === 'object' ? parsed.connect?.[client] : undefined;
167
- return entry ? 'present' : 'absent';
201
+ const connect = parsed && typeof parsed === 'object' ? parsed.connect : undefined;
202
+ if (!connect || typeof connect !== 'object' || Array.isArray(connect))
203
+ return 'absent';
204
+ const keys = Object.keys(connect);
205
+ return mcpUrl
206
+ ? (connect[connectContextKey(client, mcpUrl)] || connect[client] ? 'present' : 'absent')
207
+ : (keys.some((key) => isClientContextKey(key, client)) ? 'present' : 'absent');
168
208
  }
169
209
  catch {
170
210
  return 'unreadable';
171
211
  }
172
212
  }
173
213
  /** Kept marker after uninstall makes doctor offer to reinstall the harness. */
174
- export function clearConnectContext(client) {
214
+ export function clearConnectContext(client, mcpUrl) {
175
215
  // Read-first: writing through an unreadable config would rewrite it as {}.
176
- if (connectContextState(client) !== 'present')
216
+ if (connectContextState(client, mcpUrl) !== 'present')
177
217
  return;
178
218
  try {
179
219
  updateConfig((config) => {
180
- if (!config.connect?.[client])
220
+ if (!config.connect)
181
221
  return config;
182
- const remaining = Object.fromEntries(Object.entries(config.connect).filter(([key]) => key !== client));
222
+ const exact = connectContextKey(client, mcpUrl);
223
+ const remaining = Object.fromEntries(Object.entries(config.connect).filter(([key]) => mcpUrl
224
+ ? key !== exact && key !== client
225
+ : !isClientContextKey(key, client)));
183
226
  const { connect, ...rest } = config;
184
227
  void connect;
185
228
  return Object.keys(remaining).length > 0 ? { ...rest, connect: remaining } : rest;
@@ -203,12 +246,64 @@ function resolveProfilePath(shell, platform) {
203
246
  return path.join(home, '.config', 'fish', 'config.fish');
204
247
  return path.join(home, '.profile');
205
248
  }
206
- export function persistApiKeyToEnvironment(apiKey, options) {
249
+ function escapeRegExp(value) {
250
+ return value.replace(/[.*+?^${}()|[\]\\]/g, '\\$&');
251
+ }
252
+ function labelledManagedBlockPattern(environment) {
253
+ const begin = `${MANAGED_ENV_BEGIN} (${environment})`;
254
+ const end = `${MANAGED_ENV_END} (${environment})`;
255
+ return new RegExp(`^${escapeRegExp(begin)}$[\\s\\S]*?^${escapeRegExp(end)}$\\n?`, 'gm');
256
+ }
257
+ // The pre-environment CLI wrote one unlabelled block. It belongs to production.
258
+ const LEGACY_MANAGED_BLOCK = new RegExp(`^${escapeRegExp(MANAGED_ENV_BEGIN)}$[\\s\\S]*?^${escapeRegExp(MANAGED_ENV_END)}$\\n?`, 'gm');
259
+ /** The environment of the key in the single pre-environment managed block, when readable. */
260
+ function legacyManagedBlockEnvironment(content) {
261
+ const block = new RegExp(`^${escapeRegExp(MANAGED_ENV_BEGIN)}$([\\s\\S]*?)^${escapeRegExp(MANAGED_ENV_END)}$`, 'm').exec(content)?.[1];
262
+ if (!block)
263
+ return undefined;
264
+ const value = /(?:export\s+SPRINGBRAND_API_KEY=|set\s+-gx\s+SPRINGBRAND_API_KEY\s+)'([^']+)'/.exec(block)?.[1];
265
+ return value ? parseKeyIdentity(value)?.environment : undefined;
266
+ }
267
+ function stripManagedBlocks(content, environment) {
268
+ let next = content;
269
+ if (environment === undefined || environment === 'production')
270
+ next = next.replace(LEGACY_MANAGED_BLOCK, '');
271
+ if (environment === undefined || environment === 'production')
272
+ next = next.replace(labelledManagedBlockPattern('production'), '');
273
+ if (environment === undefined || environment === 'dev')
274
+ next = next.replace(labelledManagedBlockPattern('dev'), '');
275
+ return next;
276
+ }
277
+ /** Logout must not delete another environment's legacy dev export. */
278
+ function stripManagedBlocksForRemoval(content, environment) {
279
+ if (environment === 'all')
280
+ return stripManagedBlocks(content, undefined);
281
+ if (environment === 'dev') {
282
+ let next = content.replace(labelledManagedBlockPattern('dev'), '');
283
+ if (legacyManagedBlockEnvironment(content) === 'dev')
284
+ next = next.replace(LEGACY_MANAGED_BLOCK, '');
285
+ return next;
286
+ }
287
+ let next = content.replace(labelledManagedBlockPattern('production'), '');
288
+ if (legacyManagedBlockEnvironment(content) !== 'dev')
289
+ next = next.replace(LEGACY_MANAGED_BLOCK, '');
290
+ return next;
291
+ }
292
+ function writeProfile(profile, content) {
293
+ fs.mkdirSync(path.dirname(profile), { recursive: true });
294
+ const temporary = `${profile}.tmp-${process.pid}-${Date.now()}`;
295
+ fs.writeFileSync(temporary, content, { mode: 0o600 });
296
+ fs.chmodSync(temporary, 0o600);
297
+ fs.renameSync(temporary, profile);
298
+ fs.chmodSync(profile, 0o600);
299
+ }
300
+ export function persistApiKeyToEnvironment(apiKey, environment, options) {
207
301
  const platform = options?.platform ?? process.platform;
302
+ const variable = apiKeyEnvVar(environment);
208
303
  if (platform === 'win32') {
209
- const result = spawn.sync('setx', [SPRINGBRAND_API_KEY_VAR, apiKey], { stdio: 'ignore' });
304
+ const result = spawn.sync('setx', [variable, apiKey], { stdio: 'ignore' });
210
305
  if (result.error || result.status !== 0) {
211
- throw new Error('Could not set SPRINGBRAND_API_KEY in the Windows user environment', {
306
+ throw new Error(`Could not set ${variable} in the Windows user environment`, {
212
307
  cause: result.error,
213
308
  });
214
309
  }
@@ -218,37 +313,101 @@ export function persistApiKeyToEnvironment(apiKey, options) {
218
313
  const fish = shell === 'fish';
219
314
  const profile = resolveProfilePath(shell, platform);
220
315
  const quotedKey = `'${apiKey.replaceAll("'", "'\\''")}'`;
221
- const prefix = fish ? `set -gx ${SPRINGBRAND_API_KEY_VAR} ` : `export ${SPRINGBRAND_API_KEY_VAR}=`;
316
+ const prefix = fish ? `set -gx ${variable} ` : `export ${variable}=`;
222
317
  const assignment = `${prefix}${quotedKey}`;
223
318
  const existing = fs.existsSync(profile) ? fs.readFileSync(profile, 'utf8') : '';
224
- // Replace only our managed block. This preserves unrelated profile content and makes
225
- // repeated installs idempotent even when the user has other exports nearby.
226
- const block = `${MANAGED_ENV_BEGIN}\n${assignment}\n${MANAGED_ENV_END}`;
227
- const withoutManaged = existing
228
- .replace(new RegExp(`\\n?${MANAGED_ENV_BEGIN.replace(/[.*+?^${}()|[\]\\]/g, '\\$&')}[\\s\\S]*?${MANAGED_ENV_END.replace(/[.*+?^${}()|[\]\\]/g, '\\$&')}\\n?`, 'g'), '')
229
- .trimEnd();
230
- const updated = `${withoutManaged}${withoutManaged ? '\n\n' : ''}${block}\n`;
231
- fs.mkdirSync(path.dirname(profile), { recursive: true });
232
- const temporary = `${profile}.tmp-${process.pid}-${Date.now()}`;
233
- fs.writeFileSync(temporary, updated, { mode: 0o600 });
234
- fs.chmodSync(temporary, 0o600);
235
- fs.renameSync(temporary, profile);
236
- fs.chmodSync(profile, 0o600);
319
+ // A pre-environment dev key lived in the production variable. On the first dev
320
+ // write, move it into the dev block instead of leaving a broad export behind.
321
+ const source = environment === 'dev' && legacyManagedBlockEnvironment(existing) === 'dev'
322
+ ? existing.replace(LEGACY_MANAGED_BLOCK, '')
323
+ : existing;
324
+ const withoutManaged = stripManagedBlocks(source, environment).trimEnd();
325
+ const block = `${MANAGED_ENV_BEGIN} (${environment})\n${assignment}\n${MANAGED_ENV_END} (${environment})`;
326
+ writeProfile(profile, `${withoutManaged}${withoutManaged ? '\n\n' : ''}${block}\n`);
327
+ }
328
+ /** Best-effort removal of one environment's export, or both with `all`. */
329
+ export function removeApiKeyFromEnvironment(environment, options) {
330
+ const platform = options?.platform ?? process.platform;
331
+ if (platform === 'win32') {
332
+ const variables = environment === 'all'
333
+ ? KEY_ENVIRONMENTS.map(apiKeyEnvVar)
334
+ : [apiKeyEnvVar(environment)];
335
+ for (const variable of variables) {
336
+ // setx has no "unset"; deleting the user variable is the Windows equivalent.
337
+ spawn.sync('reg', ['delete', 'HKCU\\Environment', '/v', variable, '/f'], { stdio: 'ignore' });
338
+ }
339
+ return;
340
+ }
341
+ const shell = path.basename(options?.shell ?? process.env['SHELL'] ?? '');
342
+ const profile = resolveProfilePath(shell, platform);
343
+ if (!fs.existsSync(profile))
344
+ return;
345
+ const existing = fs.readFileSync(profile, 'utf8');
346
+ const next = stripManagedBlocksForRemoval(existing, environment);
347
+ if (next === existing)
348
+ return;
349
+ writeProfile(profile, next);
350
+ }
351
+ /** Remove one environment's saved key; returns whether anything was removed. */
352
+ export function clearConfig(environment) {
353
+ const config = loadConfig();
354
+ const hasLegacy = config.api_key !== undefined &&
355
+ (parseKeyIdentity(config.api_key)?.environment === environment ||
356
+ (environment === 'production' && parseKeyIdentity(config.api_key) === undefined));
357
+ if (!config.api_keys?.[environment] && !hasLegacy)
358
+ return false;
359
+ try {
360
+ updateConfig((current) => {
361
+ const keys = { ...current.api_keys };
362
+ delete keys[environment];
363
+ const next = {
364
+ ...current,
365
+ ...(Object.keys(keys).length > 0 ? { api_keys: keys } : {}),
366
+ };
367
+ if (Object.keys(keys).length === 0)
368
+ delete next.api_keys;
369
+ if (hasLegacy)
370
+ delete next.api_key;
371
+ return next;
372
+ });
373
+ return true;
374
+ }
375
+ catch {
376
+ // Write failed — key was not actually removed
377
+ return false;
378
+ }
237
379
  }
238
- export function clearConfig() {
239
- if (!loadConfig().api_key)
380
+ /** Remove every saved key and the parked install attempt. */
381
+ export function clearAllConfig() {
382
+ const config = loadConfig();
383
+ if (!config.api_key && !config.api_keys)
240
384
  return false;
241
385
  try {
242
386
  // The parked id goes too: the next person to sign in on this machine is not the one
243
387
  // whose copy minted it.
244
- updateConfig(({ api_key: _key, pending_connect_attempt: _attempt, ...rest }) => rest);
388
+ updateConfig(({ api_key: _key, api_keys: _keys, pending_connect_attempt: _attempt, ...rest }) => rest);
245
389
  return true;
246
390
  }
247
391
  catch {
248
- // Write failed — key was not actually removed
249
392
  return false;
250
393
  }
251
394
  }
395
+ /** Environments with a saved key, in canonical order. */
396
+ export function savedKeyEnvironments() {
397
+ const config = loadConfig();
398
+ const saved = new Set();
399
+ for (const environment of KEY_ENVIRONMENTS) {
400
+ if (config.api_keys?.[environment])
401
+ saved.add(environment);
402
+ }
403
+ if (config.api_key) {
404
+ const identity = parseKeyIdentity(config.api_key);
405
+ // The legacy slot was production by default; keep an unparseable value visible
406
+ // to logout --all without claiming it belongs to dev.
407
+ saved.add(identity?.environment ?? 'production');
408
+ }
409
+ return KEY_ENVIRONMENTS.filter((environment) => saved.has(environment));
410
+ }
252
411
  /** The one rule that is ours to enforce: the key becomes an HTTP header, so CR/LF cannot pass. */
253
412
  function isHeaderSafe(key) {
254
413
  for (let i = 0; i < key.length; i += 1) {
@@ -284,47 +443,76 @@ export function maskKey(key) {
284
443
  : key.slice(0, 12) + '...' + key.slice(-4);
285
444
  }
286
445
  // The one flag/env/config precedence chain; `source` says which place a caller must name.
287
- function lookupApiKey(explicitApiKey) {
446
+ function lookupApiKey(explicitApiKey, environment) {
288
447
  if (explicitApiKey)
289
- return { value: explicitApiKey, source: 'explicit' };
290
- const envKey = process.env[SPRINGBRAND_API_KEY_VAR];
291
- if (envKey)
292
- return { value: envKey, source: 'env' };
448
+ return { value: explicitApiKey, source: 'explicit', environment };
449
+ const envKey = process.env[apiKeyEnvVar(environment)];
450
+ if (envKey) {
451
+ // The generic production variable may still hold a pre-environment dev key.
452
+ // It is not a production credential; let production fall through to its slot.
453
+ const legacyDevInProduction = environment === 'production' &&
454
+ parseKeyIdentity(envKey)?.environment === 'dev';
455
+ if (!legacyDevInProduction)
456
+ return { value: envKey, source: 'env', environment, envVar: apiKeyEnvVar(environment) };
457
+ }
458
+ // A dev key exported by the pre-environment CLI lived in the production variable.
459
+ // Accept it only for dev, and only when the key itself proves the environment.
460
+ if (environment === 'dev') {
461
+ const legacyEnvKey = process.env[apiKeyEnvVar('production')];
462
+ if (legacyEnvKey && parseKeyIdentity(legacyEnvKey)?.environment === 'dev')
463
+ return { value: legacyEnvKey, source: 'env', environment, envVar: apiKeyEnvVar('production') };
464
+ }
293
465
  // No try/catch: loadConfig swallows its own errors and returns {}.
294
- const stored = loadConfig().api_key;
295
- return stored ? { value: stored, source: 'config' } : { source: 'none' };
466
+ const config = loadConfig();
467
+ const stored = config.api_keys?.[environment];
468
+ if (stored)
469
+ return { value: stored, source: 'config', environment };
470
+ if (config.api_key && parseKeyIdentity(config.api_key)?.environment === environment)
471
+ return { value: config.api_key, source: 'config', environment };
472
+ return { source: 'none', environment };
296
473
  }
297
474
  /** Key for optional paths (telemetry, auth probes) — absent is a valid answer, so never exits. */
298
- export function resolvedApiKey(explicitApiKey) {
299
- return lookupApiKey(explicitApiKey).value;
475
+ export function resolvedApiKey(explicitApiKey, environment = 'production') {
476
+ return lookupApiKey(explicitApiKey, environment).value;
300
477
  }
301
478
  /** Answers "is this the CLI's own key" without the value leaving the caller; see sdk/cli/CLAUDE.md. */
302
479
  export function matchesCliKey(value) {
303
- return value !== undefined && value === resolvedApiKey();
480
+ if (value === undefined)
481
+ return false;
482
+ for (const environment of KEY_ENVIRONMENTS) {
483
+ if (value === lookupApiKey(undefined, environment).value)
484
+ return true;
485
+ }
486
+ return false;
304
487
  }
305
488
  /** resolvedApiKey for keys that reach a config file or the wire — loadConfig() is unvalidated on read. */
306
- export function validatedApiKey(explicitApiKey) {
307
- const key = resolvedApiKey(explicitApiKey);
489
+ export function validatedApiKey(explicitApiKey, environment = 'production') {
490
+ const key = resolvedApiKey(explicitApiKey, environment);
308
491
  return key && validateKeyFormat(key) ? key : undefined;
309
492
  }
310
493
  /**
311
494
  * The diagnosis, not the key: doctor must report a bad credential and say where it came from
312
495
  * rather than exit like getApiKey does.
313
496
  */
314
- export function apiKeyStatus(explicitApiKey) {
315
- const { value, source } = lookupApiKey(explicitApiKey);
497
+ export function apiKeyStatus(explicitApiKey, environment = 'production') {
498
+ const { value, source, envVar } = lookupApiKey(explicitApiKey, environment);
316
499
  if (!value || source === 'none') {
317
- return { error: 'No API key found. Run: sp auth login', source: 'none' };
500
+ return {
501
+ error: environment === 'production'
502
+ ? 'No API key found. Run: sp auth login'
503
+ : 'No development API key found. Run: sp auth login --env dev',
504
+ source: 'none',
505
+ };
318
506
  }
319
507
  // Shape is the server's call. A local prefix rule turns a key format we have not shipped
320
508
  // support for yet into a hard failure the user cannot work around, and the 401 says more.
321
509
  if (!isHeaderSafe(value)) {
322
510
  return { error: 'The API key contains control characters and cannot be sent', source };
323
511
  }
324
- return { key: value, source };
512
+ return { key: value, source, environment, ...(envVar ? { envVar } : {}) };
325
513
  }
326
- export function getApiKey() {
327
- const resolved = apiKeyStatus();
514
+ export function getApiKey(environment = 'production') {
515
+ const resolved = apiKeyStatus(undefined, environment);
328
516
  if ('key' in resolved)
329
517
  return resolved.key;
330
518
  err({ error: resolved.error });
@@ -1 +1 @@
1
- {"version":3,"file":"auth.js","sourceRoot":"","sources":["../../src/lib/auth.ts"],"names":[],"mappings":"AAAA,sDAAsD;AAEtD,OAAO,KAAK,EAAE,MAAM,IAAI,CAAC;AACzB,OAAO,KAAK,EAAE,MAAM,IAAI,CAAC;AACzB,OAAO,KAAK,IAAI,MAAM,MAAM,CAAC;AAC7B,OAAO,KAAK,MAAM,aAAa,CAAC;AAChC,OAAO,EAAE,GAAG,EAAE,OAAO,EAAE,MAAM,aAAa,CAAC;AAC3C,OAAO,EAAE,uBAAuB,EAAE,MAAM,gBAAgB,CAAC;AACzD;;;;;GAKG;AACH,MAAM,CAAC,MAAM,cAAc,GAAG,SAAS,CAAC;AACxC,MAAM,WAAW,GAAG,uDAAuD,CAAC;AAC5E,MAAM,CAAC,MAAM,eAAe,GAAG,wEAAwE,CAAC;AACxG,OAAO,EAAE,aAAa,EAAE,eAAe,EAAE,MAAM,gBAAgB,CAAC;AAChE,MAAM,UAAU,SAAS;IACrB,2EAA2E;IAC3E,OAAO,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,OAAO,EAAE,EAAE,cAAc,CAAC,CAAC;AACnD,CAAC;AACD,MAAM,UAAU,UAAU;IACtB,OAAO,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,EAAE,aAAa,CAAC,CAAC;AACjD,CAAC;AACD,yFAAyF;AACzF,MAAM,CAAC,MAAM,cAAc,GAAG,iBAAiB,CAAC;AAChD,wFAAwF;AACxF,4FAA4F;AAC5F,MAAM,CAAC,MAAM,mBAAmB,GAAG,gCAAgC,CAAC;AACpE,MAAM,iBAAiB,GAAG,qCAAqC,CAAC;AAChE,MAAM,eAAe,GAAG,mCAAmC,CAAC;AAC5D,MAAM,mBAAmB,GAAG,CAAC,SAAS,EAAE,OAAO,EAAE,UAAU,CAAC,CAAC;AAC7D,MAAM,UAAU,UAAU;IACtB,IAAI,CAAC;QACD,MAAM,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,YAAY,CAAC,UAAU,EAAE,EAAE,MAAM,CAAC,CAAC,CAAC;QAC9D,IAAI,GAAG,KAAK,IAAI,IAAI,OAAO,GAAG,KAAK,QAAQ,IAAI,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC;YAC7D,OAAO,EAAE,CAAC;QACd,MAAM,GAAG,GAAG,GAA8B,CAAC;QAC3C,MAAM,MAAM,GAAsB,EAAE,CAAC;QACrC,IAAI,OAAO,GAAG,CAAC,SAAS,CAAC,KAAK,QAAQ;YAClC,MAAM,CAAC,OAAO,GAAG,GAAG,CAAC,SAAS,CAAC,CAAC;QACpC,MAAM,OAAO,GAAG,eAAe,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC,CAAC;QAChD,IAAI,OAAO;YACP,MAAM,CAAC,OAAO,GAAG,OAAO,CAAC;QAC7B,MAAM,OAAO,GAAG,mBAAmB,CAAC,GAAG,CAAC,yBAAyB,CAAC,CAAC,CAAC;QACpE,IAAI,OAAO;YACP,MAAM,CAAC,uBAAuB,GAAG,OAAO,CAAC;QAC7C,OAAO,MAAM,CAAC;IAClB,CAAC;IACD,MAAM,CAAC;QACH,OAAO,EAAE,CAAC;IACd,CAAC;AACL,CAAC;AACD,SAAS,eAAe,CAAC,KAAc;IACnC,IAAI,KAAK,KAAK,IAAI,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC;QACnE,OAAO,SAAS,CAAC;IACrB,MAAM,GAAG,GAAiC,EAAE,CAAC;IAC7C,KAAK,MAAM,CAAC,MAAM,EAAE,KAAK,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC;QAClD,MAAM,MAAM,GAAG,KAAsD,CAAC;QACtE,MAAM,SAAS,GAAG,MAAM,EAAE,UAAU,CAAC;QACrC,IAAI,OAAO,SAAS,KAAK,QAAQ;YAC7B,SAAS;QACb,MAAM,QAAQ,GAAG,MAAM,EAAE,SAAS,CAAC;QACnC,GAAG,CAAC,MAAM,CAAC;YACP,OAAO,QAAQ,KAAK,QAAQ,IAAI,mBAAmB,CAAC,QAAQ,CAAC,QAAQ,CAAC;gBAClE,CAAC,CAAC,EAAE,UAAU,EAAE,SAAS,EAAE,SAAS,EAAE,QAA4B,EAAE;gBACpE,CAAC,CAAC,EAAE,UAAU,EAAE,SAAS,EAAE,CAAC;IACxC,CAAC;IACD,OAAO,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,SAAS,CAAC;AACzD,CAAC;AACD,SAAS,mBAAmB,CAAC,KAAc;IACvC,MAAM,KAAK,GAAG,KAA0D,CAAC;IACzE,IAAI,OAAO,KAAK,EAAE,EAAE,KAAK,QAAQ,IAAI,OAAO,KAAK,CAAC,EAAE,KAAK,QAAQ;QAC7D,OAAO,SAAS,CAAC;IACrB,OAAO,WAAW,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE,EAAE,KAAK,CAAC,EAAE,EAAE,EAAE,EAAE,KAAK,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,SAAS,CAAC;AAC9E,CAAC;AACD,MAAM,UAAU,WAAW,CAAC,KAAa;IACrC,OAAO,4EAA4E,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;AACpG,CAAC;AACD;;;;GAIG;AACH,SAAS,YAAY,CAAC,MAAwD;IAC1E,yDAAyD;IACzD,EAAE,CAAC,SAAS,CAAC,SAAS,EAAE,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC,CAAC;IAC5D,sEAAsE;IACtE,EAAE,CAAC,aAAa,CAAC,UAAU,EAAE,EAAE,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,UAAU,EAAE,CAAC,CAAC,EAAE,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC,CAAC;AAC1F,CAAC;AACD;;;GAGG;AACH,MAAM,UAAU,yBAAyB,CAAC,SAAiB;IACvD,IAAI,CAAC,WAAW,CAAC,SAAS,CAAC;QACvB,OAAO;IACX,IAAI,CAAC;QACD,YAAY,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC;YACtB,GAAG,MAAM;YACT,uBAAuB,EAAE,EAAE,EAAE,EAAE,SAAS,EAAE,EAAE,EAAE,IAAI,CAAC,GAAG,EAAE,EAAE;SAC7D,CAAC,CAAC,CAAC;IACR,CAAC;IACD,MAAM,CAAC;QACH,oDAAoD;IACxD,CAAC;AACL,CAAC;AACD,2FAA2F;AAC3F,MAAM,0BAA0B,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,IAAI,CAAC;AACvD,+EAA+E;AAC/E,MAAM,UAAU,yBAAyB;IACrC,MAAM,OAAO,GAAG,UAAU,EAAE,CAAC,uBAAuB,CAAC;IACrD,IAAI,CAAC,OAAO;QACR,OAAO,SAAS,CAAC;IACrB,IAAI,CAAC;QACD,YAAY,CAAC,CAAC,EAAE,uBAAuB,EAAE,QAAQ,EAAE,GAAG,IAAI,EAAqB,EAAE,EAAE,CAAC,IAAI,CAAC,CAAC;IAC9F,CAAC;IACD,MAAM,CAAC;QACH,oFAAoF;QACpF,sBAAsB;QACtB,OAAO,SAAS,CAAC;IACrB,CAAC;IACD,OAAO,IAAI,CAAC,GAAG,EAAE,GAAG,OAAO,CAAC,EAAE,IAAI,0BAA0B,CAAC,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC,CAAC,SAAS,CAAC;AAC1F,CAAC;AACD,uFAAuF;AACvF,MAAM,UAAU,WAAW,CAAC,MAAc;IACtC,YAAY,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC,EAAE,GAAG,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,CAAC,CAAC,CAAC;AAC/D,CAAC;AACD,MAAM,UAAU,UAAU,CAAC,MAAc;IACrC,IAAI,CAAC;QACD,WAAW,CAAC,MAAM,CAAC,CAAC;IACxB,CAAC;IACD,OAAO,CAAC,EAAE,CAAC;QACP,GAAG,CAAC,EAAE,KAAK,EAAE,2BAA2B,CAAC,YAAY,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;QACxF,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IACpB,CAAC;AACL,CAAC;AACD,oHAAoH;AACpH,MAAM,UAAU,kBAAkB,CAAC,MAAc,EAAE,SAAiB,EAAE,QAA2B,EAAE,MAAe;IAC9G,MAAM,KAAK,GAAG,QAAQ;QAClB,CAAC,CAAC,EAAE,UAAU,EAAE,SAAS,EAAE,SAAS,EAAE,QAAQ,EAAE;QAChD,CAAC,CAAC,EAAE,UAAU,EAAE,SAAS,EAAE,CAAC;IAChC,IAAI,CAAC;QACD,YAAY,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC;YACtB,GAAG,MAAM;YACT,OAAO,EAAE,EAAE,GAAG,MAAM,CAAC,OAAO,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,GAAG,MAAM,IAAI,IAAI,GAAG,CAAC,MAAM,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,EAAE,KAAK,EAAE;SACnG,CAAC,CAAC,CAAC;IACR,CAAC;IACD,OAAO,CAAC,EAAE,CAAC;QACP,mFAAmF;QACnF,yFAAyF;QACzF,OAAO,CAAC,+CAA+C,CAAC,YAAY,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;IACzG,CAAC;AACL,CAAC;AACD,oEAAoE;AACpE,MAAM,UAAU,mBAAmB,CAAC,MAAc;IAC9C,IAAI,GAAG,CAAC;IACR,IAAI,CAAC;QACD,GAAG,GAAG,EAAE,CAAC,YAAY,CAAC,UAAU,EAAE,EAAE,MAAM,CAAC,CAAC;IAChD,CAAC;IACD,OAAO,CAAC,EAAE,CAAC;QACP,OAAQ,CAAwB,CAAC,IAAI,KAAK,QAAQ,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,YAAY,CAAC;IACjF,CAAC;IACD,IAAI,CAAC;QACD,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;QAC/B,MAAM,KAAK,GAAG,MAAM,IAAI,OAAO,MAAM,KAAK,QAAQ,CAAC,CAAC,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;QAC1F,OAAO,KAAK,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,QAAQ,CAAC;IACxC,CAAC;IACD,MAAM,CAAC;QACH,OAAO,YAAY,CAAC;IACxB,CAAC;AACL,CAAC;AACD,+EAA+E;AAC/E,MAAM,UAAU,mBAAmB,CAAC,MAAc;IAC9C,2EAA2E;IAC3E,IAAI,mBAAmB,CAAC,MAAM,CAAC,KAAK,SAAS;QACzC,OAAO;IACX,IAAI,CAAC;QACD,YAAY,CAAC,CAAC,MAAM,EAAE,EAAE;YACpB,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC,MAAM,CAAC;gBACzB,OAAO,MAAM,CAAC;YAClB,MAAM,SAAS,GAAG,MAAM,CAAC,WAAW,CAAC,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,EAAE,CAAC,GAAG,KAAK,MAAM,CAAC,CAAC,CAAC;YACvG,MAAM,EAAE,OAAO,EAAE,GAAG,IAAI,EAAE,GAAG,MAAM,CAAC;YACpC,KAAK,OAAO,CAAC;YACb,OAAO,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,GAAG,IAAI,EAAE,OAAO,EAAE,SAAS,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC;QACtF,CAAC,CAAC,CAAC;IACP,CAAC;IACD,OAAO,CAAC,EAAE,CAAC;QACP,OAAO,CAAC,6CAA6C,CAAC,YAAY,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;IACvG,CAAC;AACL,CAAC;AACD,SAAS,kBAAkB,CAAC,KAAa,EAAE,QAAyB;IAChE,MAAM,IAAI,GAAG,EAAE,CAAC,OAAO,EAAE,CAAC;IAC1B,MAAM,cAAc,GAAG,CAAC,eAAe,EAAE,aAAa,EAAE,UAAU,CAAC;SAC9D,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC,CAAC,+EAA+E;SACpH,IAAI,CAAC,CAAC,SAAS,EAAE,EAAE,CAAC,EAAE,CAAC,UAAU,CAAC,SAAS,CAAC,CAAC,IAAI,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,eAAe,CAAC,CAAC;IACvF,IAAI,KAAK,KAAK,KAAK;QACf,OAAO,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC;IACrC,IAAI,KAAK,KAAK,MAAM,EAAE,CAAC;QACnB,OAAO,QAAQ,KAAK,QAAQ,CAAC,CAAC,CAAC,cAAc,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,SAAS,CAAC,CAAC;IAC/E,CAAC;IACD,IAAI,KAAK,KAAK,MAAM;QAChB,OAAO,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,SAAS,EAAE,MAAM,EAAE,aAAa,CAAC,CAAC;IAC7D,OAAO,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,UAAU,CAAC,CAAC;AACvC,CAAC;AACD,MAAM,UAAU,0BAA0B,CAAC,MAAc,EAAE,OAA4B;IACnF,MAAM,QAAQ,GAAG,OAAO,EAAE,QAAQ,IAAI,OAAO,CAAC,QAAQ,CAAC;IACvD,IAAI,QAAQ,KAAK,OAAO,EAAE,CAAC;QACvB,MAAM,MAAM,GAAG,KAAK,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC,uBAAuB,EAAE,MAAM,CAAC,EAAE,EAAE,KAAK,EAAE,QAAQ,EAAE,CAAC,CAAC;QAC1F,IAAI,MAAM,CAAC,KAAK,IAAI,MAAM,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YACtC,MAAM,IAAI,KAAK,CAAC,mEAAmE,EAAE;gBACjF,KAAK,EAAE,MAAM,CAAC,KAAK;aACtB,CAAC,CAAC;QACP,CAAC;QACD,OAAO;IACX,CAAC;IACD,MAAM,KAAK,GAAG,IAAI,CAAC,QAAQ,CAAC,OAAO,EAAE,KAAK,IAAI,OAAO,CAAC,GAAG,CAAC,OAAO,CAAC,IAAI,EAAE,CAAC,CAAC;IAC1E,MAAM,IAAI,GAAG,KAAK,KAAK,MAAM,CAAC;IAC9B,MAAM,OAAO,GAAG,kBAAkB,CAAC,KAAK,EAAE,QAAQ,CAAC,CAAC;IACpD,MAAM,SAAS,GAAG,IAAI,MAAM,CAAC,UAAU,CAAC,GAAG,EAAE,OAAO,CAAC,GAAG,CAAC;IACzD,MAAM,MAAM,GAAG,IAAI,CAAC,CAAC,CAAC,WAAW,uBAAuB,GAAG,CAAC,CAAC,CAAC,UAAU,uBAAuB,GAAG,CAAC;IACnG,MAAM,UAAU,GAAG,GAAG,MAAM,GAAG,SAAS,EAAE,CAAC;IAC3C,MAAM,QAAQ,GAAG,EAAE,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,YAAY,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;IAChF,qFAAqF;IACrF,4EAA4E;IAC5E,MAAM,KAAK,GAAG,GAAG,iBAAiB,KAAK,UAAU,KAAK,eAAe,EAAE,CAAC;IACxE,MAAM,cAAc,GAAG,QAAQ;SAC1B,OAAO,CAAC,IAAI,MAAM,CAAC,OAAO,iBAAiB,CAAC,OAAO,CAAC,qBAAqB,EAAE,MAAM,CAAC,aAAa,eAAe,CAAC,OAAO,CAAC,qBAAqB,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,EAAE,EAAE,CAAC;SACtK,OAAO,EAAE,CAAC;IACf,MAAM,OAAO,GAAG,GAAG,cAAc,GAAG,cAAc,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,GAAG,KAAK,IAAI,CAAC;IAC7E,EAAE,CAAC,SAAS,CAAC,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;IACzD,MAAM,SAAS,GAAG,GAAG,OAAO,QAAQ,OAAO,CAAC,GAAG,IAAI,IAAI,CAAC,GAAG,EAAE,EAAE,CAAC;IAChE,EAAE,CAAC,aAAa,CAAC,SAAS,EAAE,OAAO,EAAE,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC,CAAC;IACtD,EAAE,CAAC,SAAS,CAAC,SAAS,EAAE,KAAK,CAAC,CAAC;IAC/B,EAAE,CAAC,UAAU,CAAC,SAAS,EAAE,OAAO,CAAC,CAAC;IAClC,EAAE,CAAC,SAAS,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC;AACjC,CAAC;AACD,MAAM,UAAU,WAAW;IACvB,IAAI,CAAC,UAAU,EAAE,CAAC,OAAO;QACrB,OAAO,KAAK,CAAC;IACjB,IAAI,CAAC;QACD,oFAAoF;QACpF,wBAAwB;QACxB,YAAY,CAAC,CAAC,EAAE,OAAO,EAAE,IAAI,EAAE,uBAAuB,EAAE,QAAQ,EAAE,GAAG,IAAI,EAAqB,EAAE,EAAE,CAAC,IAAI,CAAC,CAAC;QACzG,OAAO,IAAI,CAAC;IAChB,CAAC;IACD,MAAM,CAAC;QACH,8CAA8C;QAC9C,OAAO,KAAK,CAAC;IACjB,CAAC;AACL,CAAC;AACD,kGAAkG;AAClG,SAAS,YAAY,CAAC,GAAW;IAC7B,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,GAAG,CAAC,MAAM,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC;QACrC,IAAI,GAAG,CAAC,UAAU,CAAC,CAAC,CAAC,GAAG,IAAI;YACxB,OAAO,KAAK,CAAC;IACrB,CAAC;IACD,OAAO,IAAI,CAAC;AAChB,CAAC;AACD;;;;GAIG;AACH,MAAM,UAAU,gBAAgB,CAAC,GAAW;IACxC,MAAM,KAAK,GAAG,WAAW,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;IACpC,IAAI,CAAC,KAAK;QACN,OAAO,SAAS,CAAC;IACrB,MAAM,WAAW,GAAG,KAAK,CAAC,CAAC,CAAmB,CAAC;IAC/C,MAAM,EAAE,GAAG,KAAK,CAAC,CAAC,CAAE,CAAC;IACrB,OAAO,EAAE,WAAW,EAAE,EAAE,EAAE,KAAK,EAAE,YAAY,WAAW,IAAI,EAAE,EAAE,EAAE,CAAC;AACvE,CAAC;AACD,MAAM,UAAU,iBAAiB,CAAC,GAAW;IACzC,OAAO,YAAY,CAAC,GAAG,CAAC,IAAI,WAAW,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AACtD,CAAC;AACD,MAAM,UAAU,OAAO,CAAC,GAAW;IAC/B,IAAI,GAAG,CAAC,MAAM,IAAI,CAAC;QACf,OAAO,KAAK,CAAC;IACjB,MAAM,QAAQ,GAAG,gBAAgB,CAAC,GAAG,CAAC,CAAC;IACvC,0FAA0F;IAC1F,+CAA+C;IAC/C,OAAO,QAAQ;QACX,CAAC,CAAC,GAAG,cAAc,GAAG,QAAQ,CAAC,WAAW,IAAI,QAAQ,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,MAAM,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE;QAC1F,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,GAAG,KAAK,GAAG,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;AACnD,CAAC;AACD,0FAA0F;AAC1F,SAAS,YAAY,CAAC,cAAuB;IACzC,IAAI,cAAc;QACd,OAAO,EAAE,KAAK,EAAE,cAAc,EAAE,MAAM,EAAE,UAAU,EAAE,CAAC;IACzD,MAAM,MAAM,GAAG,OAAO,CAAC,GAAG,CAAC,uBAAuB,CAAC,CAAC;IACpD,IAAI,MAAM;QACN,OAAO,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC;IAC5C,mEAAmE;IACnE,MAAM,MAAM,GAAG,UAAU,EAAE,CAAC,OAAO,CAAC;IACpC,OAAO,MAAM,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,QAAQ,EAAE,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,MAAM,EAAE,CAAC;AAC7E,CAAC;AACD,kGAAkG;AAClG,MAAM,UAAU,cAAc,CAAC,cAAuB;IAClD,OAAO,YAAY,CAAC,cAAc,CAAC,CAAC,KAAK,CAAC;AAC9C,CAAC;AACD,uGAAuG;AACvG,MAAM,UAAU,aAAa,CAAC,KAAyB;IACnD,OAAO,KAAK,KAAK,SAAS,IAAI,KAAK,KAAK,cAAc,EAAE,CAAC;AAC7D,CAAC;AACD,0GAA0G;AAC1G,MAAM,UAAU,eAAe,CAAC,cAAuB;IACnD,MAAM,GAAG,GAAG,cAAc,CAAC,cAAc,CAAC,CAAC;IAC3C,OAAO,GAAG,IAAI,iBAAiB,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,SAAS,CAAC;AAC3D,CAAC;AACD;;;GAGG;AACH,MAAM,UAAU,YAAY,CAAC,cAAuB;IAChD,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,GAAG,YAAY,CAAC,cAAc,CAAC,CAAC;IACvD,IAAI,CAAC,KAAK,IAAI,MAAM,KAAK,MAAM,EAAE,CAAC;QAC9B,OAAO,EAAE,KAAK,EAAE,sCAAsC,EAAE,MAAM,EAAE,MAAM,EAAE,CAAC;IAC7E,CAAC;IACD,yFAAyF;IACzF,0FAA0F;IAC1F,IAAI,CAAC,YAAY,CAAC,KAAK,CAAC,EAAE,CAAC;QACvB,OAAO,EAAE,KAAK,EAAE,4DAA4D,EAAE,MAAM,EAAE,CAAC;IAC3F,CAAC;IACD,OAAO,EAAE,GAAG,EAAE,KAAK,EAAE,MAAM,EAAE,CAAC;AAClC,CAAC;AACD,MAAM,UAAU,SAAS;IACrB,MAAM,QAAQ,GAAG,YAAY,EAAE,CAAC;IAChC,IAAI,KAAK,IAAI,QAAQ;QACjB,OAAO,QAAQ,CAAC,GAAG,CAAC;IACxB,GAAG,CAAC,EAAE,KAAK,EAAE,QAAQ,CAAC,KAAK,EAAE,CAAC,CAAC;IAC/B,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AACpB,CAAC"}
1
+ {"version":3,"file":"auth.js","sourceRoot":"","sources":["../../src/lib/auth.ts"],"names":[],"mappings":"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"}
@@ -1,5 +1,13 @@
1
1
  export declare const CODEX_PLUGIN_NAME = "springbrand-cli";
2
2
  export declare const CODEX_MARKETPLACE_NAME = "springbrand-cli-local";
3
+ /**
4
+ * Remove one environment's server, or both when no URL is selected. When no SpringBrand
5
+ * server remains, unregister the local plugin as well.
6
+ */
7
+ export declare function removeCodexPluginServers(mcpUrl?: string): {
8
+ removed: boolean;
9
+ pluginRemoved: boolean;
10
+ };
3
11
  export declare function installCodexPlugin(options: {
4
12
  mcpUrl: string;
5
13
  apiKey?: string;
@@ -1 +1 @@
1
- {"version":3,"file":"codex-plugin.d.ts","sourceRoot":"","sources":["../../src/lib/codex-plugin.ts"],"names":[],"mappings":"AASA,eAAO,MAAM,iBAAiB,oBAAoB,CAAC;AACnD,eAAO,MAAM,sBAAsB,0BAA0B,CAAC;AA0H9D,wBAAgB,kBAAkB,CAAC,OAAO,EAAE;IAAE,MAAM,EAAE,MAAM,CAAC;IAAC,MAAM,CAAC,EAAE,MAAM,CAAA;CAAE,GAAG,IAAI,CASrF"}
1
+ {"version":3,"file":"codex-plugin.d.ts","sourceRoot":"","sources":["../../src/lib/codex-plugin.ts"],"names":[],"mappings":"AASA,eAAO,MAAM,iBAAiB,oBAAoB,CAAC;AACnD,eAAO,MAAM,sBAAsB,0BAA0B,CAAC;AAsQ9D;;;GAGG;AACH,wBAAgB,wBAAwB,CAAC,MAAM,CAAC,EAAE,MAAM,GAAG;IAAE,OAAO,EAAE,OAAO,CAAC;IAAC,aAAa,EAAE,OAAO,CAAA;CAAE,CAgCtG;AAED,wBAAgB,kBAAkB,CAAC,OAAO,EAAE;IAAE,MAAM,EAAE,MAAM,CAAC;IAAC,MAAM,CAAC,EAAE,MAAM,CAAA;CAAE,GAAG,IAAI,CASrF"}