gooseworks 0.4.2 → 0.4.5-dev.15.facf60fb

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 (156) hide show
  1. package/README.md +84 -22
  2. package/dist/agents/staging.d.ts +38 -0
  3. package/dist/agents/staging.d.ts.map +1 -0
  4. package/dist/agents/staging.js +309 -0
  5. package/dist/agents/staging.js.map +1 -0
  6. package/dist/auth/credentials.d.ts +1 -0
  7. package/dist/auth/credentials.d.ts.map +1 -1
  8. package/dist/auth/credentials.js +26 -8
  9. package/dist/auth/credentials.js.map +1 -1
  10. package/dist/auth/device-flow.d.ts +79 -0
  11. package/dist/auth/device-flow.d.ts.map +1 -0
  12. package/dist/auth/device-flow.js +411 -0
  13. package/dist/auth/device-flow.js.map +1 -0
  14. package/dist/auth/login-mode.d.ts +25 -0
  15. package/dist/auth/login-mode.d.ts.map +1 -0
  16. package/dist/auth/login-mode.js +87 -0
  17. package/dist/auth/login-mode.js.map +1 -0
  18. package/dist/auth/oauth-server.d.ts +2 -2
  19. package/dist/auth/oauth-server.d.ts.map +1 -1
  20. package/dist/auth/oauth-server.js +28 -5
  21. package/dist/auth/oauth-server.js.map +1 -1
  22. package/dist/auth/paste-login.d.ts +27 -0
  23. package/dist/auth/paste-login.d.ts.map +1 -0
  24. package/dist/auth/paste-login.js +203 -0
  25. package/dist/auth/paste-login.js.map +1 -0
  26. package/dist/commands/doctor.d.ts +29 -5
  27. package/dist/commands/doctor.d.ts.map +1 -1
  28. package/dist/commands/doctor.js +116 -63
  29. package/dist/commands/doctor.js.map +1 -1
  30. package/dist/commands/fetch.d.ts +1 -0
  31. package/dist/commands/fetch.d.ts.map +1 -1
  32. package/dist/commands/fetch.js +64 -29
  33. package/dist/commands/fetch.js.map +1 -1
  34. package/dist/commands/formats.js +2 -2
  35. package/dist/commands/formats.js.map +1 -1
  36. package/dist/commands/graphics/publish-flow.js +1 -1
  37. package/dist/commands/graphics/publish-flow.js.map +1 -1
  38. package/dist/commands/install.d.ts.map +1 -1
  39. package/dist/commands/install.js +126 -26
  40. package/dist/commands/install.js.map +1 -1
  41. package/dist/commands/launch.d.ts +3 -0
  42. package/dist/commands/launch.d.ts.map +1 -0
  43. package/dist/commands/launch.js +35 -0
  44. package/dist/commands/launch.js.map +1 -0
  45. package/dist/commands/login.d.ts +21 -1
  46. package/dist/commands/login.d.ts.map +1 -1
  47. package/dist/commands/login.js +112 -30
  48. package/dist/commands/login.js.map +1 -1
  49. package/dist/commands/logout.d.ts.map +1 -1
  50. package/dist/commands/logout.js +7 -1
  51. package/dist/commands/logout.js.map +1 -1
  52. package/dist/commands/skills.d.ts +50 -0
  53. package/dist/commands/skills.d.ts.map +1 -0
  54. package/dist/commands/skills.js +160 -0
  55. package/dist/commands/skills.js.map +1 -0
  56. package/dist/commands/styles.js +2 -2
  57. package/dist/commands/styles.js.map +1 -1
  58. package/dist/commands/tool.d.ts +17 -0
  59. package/dist/commands/tool.d.ts.map +1 -0
  60. package/dist/commands/tool.js +239 -0
  61. package/dist/commands/tool.js.map +1 -0
  62. package/dist/commands/update.d.ts.map +1 -1
  63. package/dist/commands/update.js +37 -6
  64. package/dist/commands/update.js.map +1 -1
  65. package/dist/commands/video-local.d.ts +9 -0
  66. package/dist/commands/video-local.d.ts.map +1 -0
  67. package/dist/commands/video-local.js +83 -0
  68. package/dist/commands/video-local.js.map +1 -0
  69. package/dist/commands/video-save.d.ts +3 -0
  70. package/dist/commands/video-save.d.ts.map +1 -0
  71. package/dist/commands/video-save.js +83 -0
  72. package/dist/commands/video-save.js.map +1 -0
  73. package/dist/config.d.ts.map +1 -1
  74. package/dist/config.js +14 -3
  75. package/dist/config.js.map +1 -1
  76. package/dist/environment.d.ts +9 -0
  77. package/dist/environment.d.ts.map +1 -0
  78. package/dist/environment.js +105 -0
  79. package/dist/environment.js.map +1 -0
  80. package/dist/index.js +12 -38
  81. package/dist/index.js.map +1 -1
  82. package/dist/lib/graphics-cache.d.ts.map +1 -1
  83. package/dist/lib/graphics-cache.js +2 -2
  84. package/dist/lib/graphics-cache.js.map +1 -1
  85. package/dist/lib/mcp-client.d.ts +53 -0
  86. package/dist/lib/mcp-client.d.ts.map +1 -0
  87. package/dist/lib/mcp-client.js +196 -0
  88. package/dist/lib/mcp-client.js.map +1 -0
  89. package/dist/lib/video-local-captions.d.ts +83 -0
  90. package/dist/lib/video-local-captions.d.ts.map +1 -0
  91. package/dist/lib/video-local-captions.js +261 -0
  92. package/dist/lib/video-local-captions.js.map +1 -0
  93. package/dist/lib/video-local-runtime.d.ts +8 -0
  94. package/dist/lib/video-local-runtime.d.ts.map +1 -0
  95. package/dist/lib/video-local-runtime.js +201 -0
  96. package/dist/lib/video-local-runtime.js.map +1 -0
  97. package/dist/lib/video-save-mcp.d.ts +9 -0
  98. package/dist/lib/video-save-mcp.d.ts.map +1 -0
  99. package/dist/lib/video-save-mcp.js +162 -0
  100. package/dist/lib/video-save-mcp.js.map +1 -0
  101. package/dist/lib/video-save.d.ts +77 -0
  102. package/dist/lib/video-save.d.ts.map +1 -0
  103. package/dist/lib/video-save.js +440 -0
  104. package/dist/lib/video-save.js.map +1 -0
  105. package/dist/program.d.ts +2 -0
  106. package/dist/program.d.ts.map +1 -0
  107. package/dist/program.js +56 -0
  108. package/dist/program.js.map +1 -0
  109. package/dist/skills/custom-video-skill.d.ts +3 -0
  110. package/dist/skills/custom-video-skill.d.ts.map +1 -0
  111. package/dist/skills/custom-video-skill.js +6 -0
  112. package/dist/skills/custom-video-skill.js.map +1 -0
  113. package/dist/skills/installer.d.ts +12 -6
  114. package/dist/skills/installer.d.ts.map +1 -1
  115. package/dist/skills/installer.js +82 -38
  116. package/dist/skills/installer.js.map +1 -1
  117. package/dist/skills/master-skill.d.ts +34 -28
  118. package/dist/skills/master-skill.d.ts.map +1 -1
  119. package/dist/skills/master-skill.js +2264 -858
  120. package/dist/skills/master-skill.js.map +1 -1
  121. package/dist/skills/package-freshness.d.ts +16 -0
  122. package/dist/skills/package-freshness.d.ts.map +1 -0
  123. package/dist/skills/package-freshness.js +36 -0
  124. package/dist/skills/package-freshness.js.map +1 -0
  125. package/dist/skills/releases.d.ts +12 -0
  126. package/dist/skills/releases.d.ts.map +1 -0
  127. package/dist/skills/releases.js +155 -0
  128. package/dist/skills/releases.js.map +1 -0
  129. package/dist/skills/routes.d.ts.map +1 -1
  130. package/dist/skills/routes.js +12 -6
  131. package/dist/skills/routes.js.map +1 -1
  132. package/dist/skills/staging-content.d.ts +3 -0
  133. package/dist/skills/staging-content.d.ts.map +1 -0
  134. package/dist/skills/staging-content.js +12 -0
  135. package/dist/skills/staging-content.js.map +1 -0
  136. package/dist/utils/browser-preflight.d.ts +29 -0
  137. package/dist/utils/browser-preflight.d.ts.map +1 -0
  138. package/dist/utils/browser-preflight.js +338 -0
  139. package/dist/utils/browser-preflight.js.map +1 -0
  140. package/dist/utils/http.d.ts +7 -1
  141. package/dist/utils/http.d.ts.map +1 -1
  142. package/dist/utils/http.js +5 -1
  143. package/dist/utils/http.js.map +1 -1
  144. package/package.json +11 -3
  145. package/skills/goose-ads/SKILL.md +509 -239
  146. package/skills/goose-product-photos/SKILL.md +161 -60
  147. package/skills/goose-video/SKILL.md +592 -259
  148. package/skills/goose-video-local/SKILL.md +1409 -236
  149. package/skills/gooseworks/SKILL.md +327 -34
  150. package/skills/make-custom-video/SKILL.md +735 -0
  151. package/skills/manifest.json +12 -0
  152. package/skills/routes.json +13 -6
  153. package/dist/skills/fetcher.d.ts +0 -18
  154. package/dist/skills/fetcher.d.ts.map +0 -1
  155. package/dist/skills/fetcher.js +0 -118
  156. package/dist/skills/fetcher.js.map +0 -1
@@ -37,6 +37,8 @@ exports.installCommand = void 0;
37
37
  exports.createInstallCommand = createInstallCommand;
38
38
  const commander_1 = require("commander");
39
39
  const login_1 = require("./login");
40
+ const credentials_1 = require("../auth/credentials");
41
+ const device_flow_1 = require("../auth/device-flow");
40
42
  const installer_1 = require("../skills/installer");
41
43
  const claude_1 = require("../agents/claude");
42
44
  const claude_mcp_1 = require("../agents/claude-mcp");
@@ -47,6 +49,10 @@ const logger = __importStar(require("../utils/logger"));
47
49
  const master_skill_1 = require("../skills/master-skill");
48
50
  const config_1 = require("../config");
49
51
  const version_1 = require("../version");
52
+ const doctor_1 = require("./doctor");
53
+ const skills_1 = require("./skills");
54
+ const environment_1 = require("../environment");
55
+ const staging_1 = require("../agents/staging");
50
56
  function createInstallCommand() {
51
57
  return new commander_1.Command('install')
52
58
  .description(`Install GooseWorks data tools into your coding agent
@@ -58,13 +64,37 @@ Examples:
58
64
  .option('--codex', 'Configure for Codex')
59
65
  .option('--cursor', 'Configure for Cursor')
60
66
  .option('--all', 'Configure for all detected agents (implies --mcp)')
67
+ .option('--overwrite-modified', 'Replace edited or untracked managed skill files after you back them up')
61
68
  .option('--mcp', 'Also register the GooseWorks MCP server')
62
69
  .option('--with <skill-slug>', 'Also install a standalone GooseWorks skill (repeatable)', collectSkillSlug, [])
63
70
  .option('--api-base <url>', 'API base URL', config_1.API_BASE)
64
71
  .option('--ref <code>', 'Referral or marketing campaign code for attribution')
72
+ .option('--project <folder>', 'Required staging test folder; used only by gooseworks launch')
73
+ .option('--skills-only', 'Sign in and install GooseWorks skills to ~/.agents/skills only; configure no agents (cloud sandboxes)')
65
74
  .action(async (opts) => {
66
75
  logger.banner((0, version_1.getVersion)());
76
+ if (opts.skillsOnly) {
77
+ await installSkillsOnly(opts);
78
+ return;
79
+ }
67
80
  const targetAgents = resolveTargetAgents(opts);
81
+ if ((0, environment_1.getEnvironment)() === 'staging') {
82
+ if (targetAgents.some(agent => agent === 'cursor'))
83
+ throw new Error('Cursor staging isolation is not verified. Use --claude or --codex.');
84
+ (0, staging_1.assertCleanProject)((0, staging_1.projectProfile)(opts.project || '').project);
85
+ await (0, login_1.ensureLoggedIn)(opts.apiBase, opts.ref);
86
+ const entries = (0, master_skill_1.getEntrySkills)().map(skill => ({ ...skill, content: (0, staging_1.stagingContent)(skill.content) }));
87
+ const results = (0, installer_1.installManagedEntrySkills)(entries, { overwriteModified: opts.overwriteModified });
88
+ if (results.some(result => result.action === 'preserved'))
89
+ throw new Error('Staging entry has edits. Review/back up the files before --overwrite-modified.');
90
+ for (const slug of opts.with || [])
91
+ await (0, installer_1.installStandaloneSkill)(slug, { overwriteModified: opts.overwriteModified });
92
+ (0, staging_1.installStagingProject)(opts.project, targetAgents);
93
+ logger.done(`Staging installed. Start a new isolated session: gooseworks --env staging launch --agent ${targetAgents[0]} --project ${JSON.stringify(opts.project)}`);
94
+ return;
95
+ }
96
+ if (opts.project)
97
+ throw new Error('--project is for isolated staging installs; omit it for the normal production install');
68
98
  if (targetAgents.length === 0) {
69
99
  logger.error('No agent specified. Use --claude, --codex, --cursor, or --all');
70
100
  process.exit(1);
@@ -75,32 +105,9 @@ Examples:
75
105
  logger.step(1, 3, 'Authenticating...');
76
106
  const creds = await (0, login_1.ensureLoggedIn)(opts.apiBase, opts.ref);
77
107
  logger.success(`Logged in as ${creds.email}`);
78
- // Step 2: Install entry skills (clean old skills first)
79
- logger.step(2, 3, 'Installing GooseWorks skills...');
80
- (0, installer_1.removeAllSkills)();
81
- for (const r of (0, installer_1.installManagedEntrySkills)((0, master_skill_1.getEntrySkills)(), { force: true })) {
82
- logger.success(`Installed ${r.name} skill to ~/.agents/skills/${r.name}/`);
83
- }
84
- for (const slug of opts.with || []) {
85
- try {
86
- logger.info(`Installing standalone skill ${slug}...`);
87
- let lastReported = 0;
88
- await (0, installer_1.installStandaloneSkill)(slug, {
89
- onProgress: ({ downloaded, total }) => {
90
- const step = Math.max(1, Math.min(5, Math.ceil(total / 10)));
91
- if (downloaded === total || downloaded - lastReported >= step) {
92
- logger.info(` Downloaded ${downloaded}/${total} files for ${slug}`);
93
- lastReported = downloaded;
94
- }
95
- },
96
- });
97
- logger.success(`Installed standalone skill ${slug} to ~/.agents/skills/${slug}/`);
98
- }
99
- catch (error) {
100
- const message = error instanceof Error ? error.message : String(error);
101
- logger.error(`Could not install standalone skill ${slug}: ${message}`);
102
- }
103
- }
108
+ // Step 2: Refresh bundled entries; preserve standalone and edited copies.
109
+ if (!(await installSkillFiles(opts, 2, 3)))
110
+ return;
104
111
  // Step 3: Configure agents
105
112
  logger.step(3, 3, 'Configuring agents...');
106
113
  for (const agent of targetAgents) {
@@ -182,6 +189,8 @@ Examples:
182
189
  logger.success('Cursor configured');
183
190
  }
184
191
  }
192
+ // General setup only; selected renderers are checked after they are fetched.
193
+ reportLocalVideoToolchain();
185
194
  const agentNames = targetAgents.map((a) => a === 'claude' ? 'Claude Code' : a === 'codex' ? 'Codex' : 'Cursor').join(' and ');
186
195
  logger.done(`Setup complete! Open ${agentNames} and ask for the work you want done.`);
187
196
  console.log('');
@@ -199,6 +208,79 @@ Examples:
199
208
  });
200
209
  }
201
210
  exports.installCommand = createInstallCommand();
211
+ /**
212
+ * Refreshes the bundled entry skills (after the freshness check) and installs
213
+ * any `--with` standalone skills into ~/.agents/skills. Returns false when the
214
+ * refresh was refused (the process has been told to exit).
215
+ */
216
+ async function installSkillFiles(opts, step, totalSteps) {
217
+ const freshness = await (0, skills_1.readEntryFreshnessReport)();
218
+ await (0, skills_1.reportEntrySkillFreshness)(freshness);
219
+ if (freshness.cli === 'outdated') {
220
+ logger.error('Entry refresh refused: upgrade this CLI before installing its bundled instructions. No skill files were changed.');
221
+ process.exit(1);
222
+ return false;
223
+ }
224
+ logger.step(step, totalSteps, 'Installing GooseWorks skills...');
225
+ for (const r of (0, installer_1.installManagedEntrySkills)((0, master_skill_1.getEntrySkills)(), { overwriteModified: opts.overwriteModified })) {
226
+ if (r.action === 'preserved')
227
+ logger.warn(`Preserved edited or untracked ${r.name}; review/back up before --overwrite-modified.`);
228
+ else
229
+ logger.success(`${r.action === 'installed' ? 'Installed' : 'Kept'} ${r.name} skill at ~/.agents/skills/${r.name}/`);
230
+ }
231
+ for (const slug of opts.with || []) {
232
+ try {
233
+ logger.info(`Installing standalone skill ${slug}...`);
234
+ let lastReported = 0;
235
+ await (0, installer_1.installStandaloneSkill)(slug, {
236
+ overwriteModified: opts.overwriteModified,
237
+ onProgress: ({ downloaded, total }) => {
238
+ const step = Math.max(1, Math.min(5, Math.ceil(total / 10)));
239
+ if (downloaded === total || downloaded - lastReported >= step) {
240
+ logger.info(` Downloaded ${downloaded}/${total} files for ${slug}`);
241
+ lastReported = downloaded;
242
+ }
243
+ },
244
+ });
245
+ logger.success(`Installed standalone skill ${slug} to ~/.agents/skills/${slug}/`);
246
+ }
247
+ catch (error) {
248
+ const message = error instanceof Error ? error.message : String(error);
249
+ logger.error(`Could not install standalone skill ${slug}: ${message}`);
250
+ }
251
+ }
252
+ return true;
253
+ }
254
+ /**
255
+ * `install --skills-only` (GOOSE-3937): for cloud sandboxes. Signs in (resuming
256
+ * a pending `login --device --no-wait`) and installs skills only — no agent
257
+ * configs, no MCP files, no toolchain report.
258
+ */
259
+ async function installSkillsOnly(opts) {
260
+ if (opts.claude || opts.codex || opts.cursor || opts.all || opts.mcp) {
261
+ throw new Error('--skills-only installs skills only. Drop the agent flags.');
262
+ }
263
+ if ((0, environment_1.getEnvironment)() === 'staging')
264
+ throw new Error('Use --claude or --codex with --project for staging');
265
+ if (opts.project)
266
+ throw new Error('--project is for isolated staging installs; omit it for the normal production install');
267
+ logger.step(1, 2, 'Authenticating...');
268
+ if (!(0, credentials_1.getCredentials)() && !(0, device_flow_1.readPendingDeviceLogin)(opts.apiBase || config_1.API_BASE)) {
269
+ // No sign-in in progress. Start one and stop here: a cloud agent's shell
270
+ // only shows output when the command ends, so waiting would hide the link.
271
+ const outcome = await (0, login_1.signIn)(opts.apiBase || config_1.API_BASE, opts.ref, { wait: false });
272
+ if (outcome.status === 'pending') {
273
+ logger.warn('Not signed in yet. After you approve, run this command again to finish.');
274
+ process.exitCode = 2;
275
+ return;
276
+ }
277
+ }
278
+ const creds = await (0, login_1.ensureLoggedIn)(opts.apiBase, opts.ref);
279
+ logger.success(`Logged in as ${creds.email}`);
280
+ if (!(await installSkillFiles(opts, 2, 2)))
281
+ return;
282
+ logger.done('Skills installed in ~/.agents/skills. Read ~/.agents/skills/gooseworks/SKILL.md to use GooseWorks.');
283
+ }
202
284
  function resolveTargetAgents(opts) {
203
285
  if (opts.all) {
204
286
  const detected = (0, detect_1.detectAgents)();
@@ -217,6 +299,24 @@ function resolveTargetAgents(opts) {
217
299
  targets.push('cursor');
218
300
  return targets;
219
301
  }
302
+ function reportLocalVideoToolchain() {
303
+ let missing;
304
+ try {
305
+ missing = (0, doctor_1.runDoctorChecks)({ includeAuth: false }).filter((c) => !c.ok);
306
+ }
307
+ catch {
308
+ return; // a broken probe must never fail the install
309
+ }
310
+ if (missing.length === 0) {
311
+ logger.success('Local video toolchain ready for general setup (ffmpeg, ffprobe, Playwright Chromium, Node). Check the selected renderer with `gooseworks doctor --renderer-script <path>` before paid work.');
312
+ return;
313
+ }
314
+ logger.info('Video ads are made on this machine and need these tools. To make them here, install:');
315
+ for (const c of missing) {
316
+ logger.warn(` ${c.label} → ${c.fix}`);
317
+ }
318
+ logger.info('Then run `gooseworks doctor` for general setup; check the selected browser renderer with `--renderer-script <path>` before paid work.');
319
+ }
220
320
  function collectSkillSlug(value, previous) {
221
321
  return [...previous, value];
222
322
  }
@@ -1 +1 @@
1
- {"version":3,"file":"install.js","sourceRoot":"","sources":["../../src/commands/install.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"install.js","sourceRoot":"","sources":["../../src/commands/install.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,3 @@
1
+ import { Command } from 'commander';
2
+ export declare const launchCommand: Command;
3
+ //# sourceMappingURL=launch.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"launch.d.ts","sourceRoot":"","sources":["../../src/commands/launch.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAKpC,eAAO,MAAM,aAAa,SAqBtB,CAAC"}
@@ -0,0 +1,35 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.launchCommand = void 0;
4
+ const commander_1 = require("commander");
5
+ const node_child_process_1 = require("node:child_process");
6
+ const environment_1 = require("../environment");
7
+ const staging_1 = require("../agents/staging");
8
+ exports.launchCommand = new commander_1.Command('launch')
9
+ .description('Start a fresh agent session that can load only staging GooseWorks skills and MCP')
10
+ .requiredOption('--project <folder>', 'The clean folder to test in')
11
+ .requiredOption('--agent <name>', 'claude or codex')
12
+ .option('--inspect', 'Check isolation and print a token-free inventory without starting an AI request')
13
+ .option('--login', 'Sign in to the agent provider inside the isolated profile')
14
+ .action(async (options) => {
15
+ try {
16
+ if ((0, environment_1.getEnvironment)() !== 'staging')
17
+ throw new Error('Use gooseworks --env staging launch; use your normal agent command for production');
18
+ const launch = (0, staging_1.stagingLaunch)(options.project, options.agent);
19
+ const skills = options.agent === 'codex' ? await (0, staging_1.inspectCodexSkills)(launch) : await (0, staging_1.inspectClaudeSkills)(launch);
20
+ if (options.inspect) {
21
+ console.log(JSON.stringify({ environment: 'staging', project: launch.cwd, agent: launch.command, version: launch.manifest.version, skills, mcp: 'gooseworks-staging' }, null, 2));
22
+ return;
23
+ }
24
+ console.log(`Starting ${launch.command} with staging GooseWorks only. This profile has its own agent-provider login.`);
25
+ const args = options.login ? (options.agent === 'codex' ? ['login'] : ['auth', 'login']) : launch.args;
26
+ const child = (0, node_child_process_1.spawn)(launch.command, args, { cwd: launch.cwd, env: launch.env, stdio: 'inherit' });
27
+ child.on('error', () => { console.error(`Could not start ${launch.command}. Install that agent CLI first.`); process.exitCode = 1; });
28
+ child.on('exit', (code, signal) => { process.exitCode = code ?? (signal ? 1 : 0); });
29
+ }
30
+ catch (error) {
31
+ console.error(error instanceof Error ? error.message : 'Staging launch failed');
32
+ process.exitCode = 1;
33
+ }
34
+ });
35
+ //# sourceMappingURL=launch.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"launch.js","sourceRoot":"","sources":["../../src/commands/launch.ts"],"names":[],"mappings":";;;AAAA,yCAAoC;AACpC,2DAA2C;AAC3C,gDAAgD;AAChD,+CAA2F;AAE9E,QAAA,aAAa,GAAG,IAAI,mBAAO,CAAC,QAAQ,CAAC;KAC/C,WAAW,CAAC,kFAAkF,CAAC;KAC/F,cAAc,CAAC,oBAAoB,EAAE,6BAA6B,CAAC;KACnE,cAAc,CAAC,gBAAgB,EAAE,iBAAiB,CAAC;KACnD,MAAM,CAAC,WAAW,EAAE,iFAAiF,CAAC;KACtG,MAAM,CAAC,SAAS,EAAE,2DAA2D,CAAC;KAC9E,MAAM,CAAC,KAAK,EAAE,OAA+E,EAAE,EAAE;IAChG,IAAI,CAAC;QACH,IAAI,IAAA,4BAAc,GAAE,KAAK,SAAS;YAAE,MAAM,IAAI,KAAK,CAAC,mFAAmF,CAAC,CAAC;QACzI,MAAM,MAAM,GAAG,IAAA,uBAAa,EAAC,OAAO,CAAC,OAAO,EAAE,OAAO,CAAC,KAAK,CAAC,CAAC;QAC7D,MAAM,MAAM,GAAG,OAAO,CAAC,KAAK,KAAK,OAAO,CAAC,CAAC,CAAC,MAAM,IAAA,4BAAkB,EAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,IAAA,6BAAmB,EAAC,MAAM,CAAC,CAAC;QAChH,IAAI,OAAO,CAAC,OAAO,EAAE,CAAC;YACpB,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE,WAAW,EAAE,SAAS,EAAE,OAAO,EAAE,MAAM,CAAC,GAAG,EAAE,KAAK,EAAE,MAAM,CAAC,OAAO,EAAE,OAAO,EAAE,MAAM,CAAC,QAAQ,CAAC,OAAO,EAAE,MAAM,EAAE,GAAG,EAAE,oBAAoB,EAAE,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC;YAClL,OAAO;QACT,CAAC;QACD,OAAO,CAAC,GAAG,CAAC,YAAY,MAAM,CAAC,OAAO,+EAA+E,CAAC,CAAC;QACvH,MAAM,IAAI,GAAG,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,KAAK,KAAK,OAAO,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC;QACvG,MAAM,KAAK,GAAG,IAAA,0BAAK,EAAC,MAAM,CAAC,OAAO,EAAE,IAAI,EAAE,EAAE,GAAG,EAAE,MAAM,CAAC,GAAG,EAAE,GAAG,EAAE,MAAM,CAAC,GAAG,EAAE,KAAK,EAAE,SAAS,EAAE,CAAC,CAAC;QAClG,KAAK,CAAC,EAAE,CAAC,OAAO,EAAE,GAAG,EAAE,GAAG,OAAO,CAAC,KAAK,CAAC,mBAAmB,MAAM,CAAC,OAAO,iCAAiC,CAAC,CAAC,CAAC,OAAO,CAAC,QAAQ,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QACtI,KAAK,CAAC,EAAE,CAAC,MAAM,EAAE,CAAC,IAAI,EAAE,MAAM,EAAE,EAAE,GAAG,OAAO,CAAC,QAAQ,GAAG,IAAI,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IACvF,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QAAC,OAAO,CAAC,KAAK,CAAC,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,uBAAuB,CAAC,CAAC;QAAC,OAAO,CAAC,QAAQ,GAAG,CAAC,CAAC;IAAC,CAAC;AAC5H,CAAC,CAAC,CAAC"}
@@ -1,7 +1,27 @@
1
1
  import { Command } from 'commander';
2
+ import { type OAuthResult } from '../auth/oauth-server';
3
+ export interface SignInFlags {
4
+ device?: boolean;
5
+ browser?: boolean;
6
+ /** false with `--no-wait`: print the device link and return without waiting. */
7
+ wait?: boolean;
8
+ }
9
+ export type SignInOutcome = {
10
+ status: 'done';
11
+ result: OAuthResult;
12
+ } | {
13
+ status: 'pending';
14
+ };
15
+ /**
16
+ * Signs in with the browser (localhost callback) or device (code + link) flow,
17
+ * picked by `chooseLoginMode`. An auto-chosen device sign-in falls back to the
18
+ * browser when the server predates it; an explicit `--device` does not.
19
+ */
20
+ export declare function signIn(apiBase: string, ref: string | undefined, flags?: SignInFlags): Promise<SignInOutcome>;
21
+ export declare function createLoginCommand(): Command;
2
22
  export declare const loginCommand: Command;
3
23
  /**
4
- * Ensures the user is logged in, running OAuth if needed.
24
+ * Ensures the user is logged in, signing in (browser or device) if needed.
5
25
  * Returns credentials or exits the process.
6
26
  */
7
27
  export declare function ensureLoggedIn(apiBase?: string, ref?: string): Promise<import("../auth/credentials").Credentials>;
@@ -1 +1 @@
1
- {"version":3,"file":"login.d.ts","sourceRoot":"","sources":["../../src/commands/login.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAmDpC,eAAO,MAAM,YAAY,SA2BrB,CAAC;AAEL;;;GAGG;AACH,wBAAsB,cAAc,CAAC,OAAO,GAAE,MAAiB,EAAE,GAAG,CAAC,EAAE,MAAM,sDAe5E"}
1
+ {"version":3,"file":"login.d.ts","sourceRoot":"","sources":["../../src/commands/login.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAEpC,OAAO,EAAgB,KAAK,WAAW,EAAE,MAAM,sBAAsB,CAAC;AA8DtE,MAAM,WAAW,WAAW;IAC1B,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,gFAAgF;IAChF,IAAI,CAAC,EAAE,OAAO,CAAC;CAChB;AAED,MAAM,MAAM,aAAa,GAAG;IAAE,MAAM,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,WAAW,CAAA;CAAE,GAAG;IAAE,MAAM,EAAE,SAAS,CAAA;CAAE,CAAC;AAE5F;;;;GAIG;AACH,wBAAsB,MAAM,CAAC,OAAO,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,GAAG,SAAS,EAAE,KAAK,GAAE,WAAgB,GAAG,OAAO,CAAC,aAAa,CAAC,CAqBtH;AAUD,wBAAgB,kBAAkB,IAAI,OAAO,CAmD5C;AAED,eAAO,MAAM,YAAY,SAAuB,CAAC;AAEjD;;;GAGG;AACH,wBAAsB,cAAc,CAAC,OAAO,GAAE,MAAiB,EAAE,GAAG,CAAC,EAAE,MAAM,sDAkB5E"}
@@ -34,10 +34,15 @@ var __importStar = (this && this.__importStar) || (function () {
34
34
  })();
35
35
  Object.defineProperty(exports, "__esModule", { value: true });
36
36
  exports.loginCommand = void 0;
37
+ exports.signIn = signIn;
38
+ exports.createLoginCommand = createLoginCommand;
37
39
  exports.ensureLoggedIn = ensureLoggedIn;
38
40
  const commander_1 = require("commander");
39
41
  const credentials_1 = require("../auth/credentials");
40
42
  const oauth_server_1 = require("../auth/oauth-server");
43
+ const device_flow_1 = require("../auth/device-flow");
44
+ const login_mode_1 = require("../auth/login-mode");
45
+ const paste_login_1 = require("../auth/paste-login");
41
46
  const installer_1 = require("../skills/installer");
42
47
  const master_skill_1 = require("../skills/master-skill");
43
48
  const claude_1 = require("../agents/claude");
@@ -46,6 +51,8 @@ const detect_1 = require("../agents/detect");
46
51
  const logger = __importStar(require("../utils/logger"));
47
52
  const config_1 = require("../config");
48
53
  const attribution_1 = require("../auth/attribution");
54
+ const skills_1 = require("./skills");
55
+ const environment_1 = require("../environment");
49
56
  /**
50
57
  * Refresh vendored entry skills on login for users who have already set up
51
58
  * (`gooseworks` skill present). This is the "update skills on login": it picks up
@@ -53,9 +60,15 @@ const attribution_1 = require("../auth/attribution");
53
60
  * rewriting unchanged ones, then re-symlinks Claude so the new skill is visible.
54
61
  * Bootstrapping a first-time install stays the job of `gooseworks install`.
55
62
  */
56
- function refreshEntrySkillsOnLogin() {
63
+ async function refreshEntrySkillsOnLogin() {
64
+ if ((0, environment_1.getEnvironment)() === 'staging')
65
+ return;
57
66
  if (!(0, installer_1.getInstalledSkills)().includes('gooseworks'))
58
67
  return;
68
+ const freshness = await (0, skills_1.readEntryFreshnessReport)();
69
+ await (0, skills_1.reportEntrySkillFreshness)(freshness);
70
+ if (freshness.cli === 'outdated')
71
+ return;
59
72
  const changed = (0, installer_1.installManagedEntrySkills)((0, master_skill_1.getEntrySkills)())
60
73
  .filter((r) => r.action === 'installed')
61
74
  .map((r) => r.name);
@@ -74,6 +87,12 @@ function refreshEntrySkillsOnLogin() {
74
87
  * call, while `doctor` (creds-only) still passes — a confusing trap.
75
88
  */
76
89
  function syncMcpRegistration() {
90
+ if ((0, environment_1.getEnvironment)() === 'staging')
91
+ return;
92
+ // Only re-point a Claude Code that is here. Without it (a cloud agent's
93
+ // sandbox, GOOSE-3937) this would create ~/.claude.json holding the key.
94
+ if (!(0, detect_1.isAgentInstalled)('claude'))
95
+ return;
77
96
  if ((0, claude_mcp_1.configureClaudeMcp)()) {
78
97
  const creds = (0, credentials_1.getCredentials)();
79
98
  logger.info(`Synced the gooseworks MCP → ${creds?.mcp_server_url ?? 'the configured server'}`);
@@ -85,45 +104,108 @@ function showNextSteps() {
85
104
  logger.example('Set up GooseWorks for https://yourcompany.com');
86
105
  logger.info('The agent preserves that request while it completes any missing company setup.');
87
106
  }
88
- exports.loginCommand = new commander_1.Command('login')
89
- .description('Sign in to GooseWorks with Google')
90
- .option('--api-base <url>', 'API base URL', config_1.API_BASE)
91
- .option('--ref <code>', 'Referral or marketing campaign code for attribution')
92
- .action(async (opts) => {
93
- const existing = (0, credentials_1.getCredentials)();
94
- if (existing) {
95
- logger.success(`Already logged in as ${existing.email}`);
96
- await (0, attribution_1.recordAttributionRef)(existing.api_base || opts.apiBase, opts.ref, existing.api_key);
97
- refreshEntrySkillsOnLogin();
98
- syncMcpRegistration();
99
- logger.info('Run "gooseworks logout" first to switch accounts.');
100
- return;
101
- }
102
- try {
103
- const result = await (0, oauth_server_1.runOAuthFlow)(opts.apiBase, opts.ref);
104
- await (0, attribution_1.recordAttributionRef)(opts.apiBase, opts.ref, result.api_key);
105
- logger.success(`Logged in as ${result.email}`);
106
- refreshEntrySkillsOnLogin();
107
- syncMcpRegistration();
108
- showNextSteps();
109
- }
110
- catch (err) {
111
- const message = err instanceof Error ? err.message : 'Login failed';
112
- logger.error(message);
113
- process.exit(1);
107
+ /**
108
+ * Signs in with the browser (localhost callback) or device (code + link) flow,
109
+ * picked by `chooseLoginMode`. An auto-chosen device sign-in falls back to the
110
+ * browser when the server predates it; an explicit `--device` does not.
111
+ */
112
+ async function signIn(apiBase, ref, flags = {}) {
113
+ const noWait = flags.wait === false;
114
+ const { mode } = (0, login_mode_1.chooseLoginMode)({
115
+ device: flags.device,
116
+ browser: flags.browser,
117
+ noWait,
118
+ pendingLogin: (0, device_flow_1.readPendingDeviceLogin)(apiBase) !== null,
119
+ });
120
+ if (mode === 'device') {
121
+ try {
122
+ const outcome = await (0, device_flow_1.runDeviceFlow)(apiBase, { ref, wait: !noWait });
123
+ return outcome.status === 'done' ? outcome : { status: 'pending' };
124
+ }
125
+ catch (err) {
126
+ if (!(err instanceof device_flow_1.DeviceFlowUnavailableError))
127
+ throw err;
128
+ if (flags.device || noWait) {
129
+ throw new Error("Device sign-in isn't available on this server yet. Run gooseworks login --browser instead.");
130
+ }
131
+ logger.warn("Device sign-in isn't available on this server yet; using browser sign-in.");
132
+ }
114
133
  }
115
- });
134
+ return { status: 'done', result: await (0, oauth_server_1.runOAuthFlow)(apiBase, ref) };
135
+ }
136
+ async function finishLogin(apiBase, ref, result) {
137
+ await (0, attribution_1.recordAttributionRef)(apiBase, ref, result.api_key);
138
+ logger.success(`Logged in as ${result.email}`);
139
+ await refreshEntrySkillsOnLogin();
140
+ syncMcpRegistration();
141
+ showNextSteps();
142
+ }
143
+ function createLoginCommand() {
144
+ return new commander_1.Command('login')
145
+ .description('Sign in to GooseWorks with Google')
146
+ .option('--api-base <url>', 'API base URL', config_1.API_BASE)
147
+ .option('--ref <code>', 'Referral or marketing campaign code for attribution')
148
+ .option('--device', 'Sign in from any device with a code (for cloud agents, SSH)')
149
+ .option('--browser', 'Sign in with a browser on this computer')
150
+ .option('--no-wait', 'With --device: print the link and exit; run the command again to finish')
151
+ .option('--paste [value]', 'Finish sign-in from the address your browser showed, or a GooseWorks key')
152
+ .action(async (opts) => {
153
+ (0, environment_1.assertConnection)(opts.apiBase, 'api');
154
+ if (opts.browser && (opts.device || opts.wait === false)) {
155
+ logger.error('--browser signs in on this computer; it cannot be combined with --device or --no-wait.');
156
+ process.exit(1);
157
+ return;
158
+ }
159
+ if (opts.paste !== undefined) {
160
+ try {
161
+ const result = await (0, paste_login_1.pasteLogin)(typeof opts.paste === 'string' ? opts.paste : undefined, opts.apiBase);
162
+ await finishLogin(opts.apiBase, opts.ref, result);
163
+ }
164
+ catch (err) {
165
+ logger.error(err instanceof Error ? err.message : 'Login failed');
166
+ process.exit(1);
167
+ }
168
+ return;
169
+ }
170
+ const existing = (0, credentials_1.getCredentials)();
171
+ if (existing) {
172
+ logger.success(`Already logged in as ${existing.email}`);
173
+ await (0, attribution_1.recordAttributionRef)(existing.api_base || opts.apiBase, opts.ref, existing.api_key);
174
+ await refreshEntrySkillsOnLogin();
175
+ syncMcpRegistration();
176
+ logger.info('Run "gooseworks logout" first to switch accounts.');
177
+ return;
178
+ }
179
+ try {
180
+ const outcome = await signIn(opts.apiBase, opts.ref, { device: opts.device, browser: opts.browser, wait: opts.wait });
181
+ if (outcome.status === 'pending') {
182
+ logger.info('After you approve, run this command again (without --no-wait) to finish.');
183
+ return;
184
+ }
185
+ await finishLogin(opts.apiBase, opts.ref, outcome.result);
186
+ }
187
+ catch (err) {
188
+ const message = err instanceof Error ? err.message : 'Login failed';
189
+ logger.error(message);
190
+ process.exit(1);
191
+ }
192
+ });
193
+ }
194
+ exports.loginCommand = createLoginCommand();
116
195
  /**
117
- * Ensures the user is logged in, running OAuth if needed.
196
+ * Ensures the user is logged in, signing in (browser or device) if needed.
118
197
  * Returns credentials or exits the process.
119
198
  */
120
199
  async function ensureLoggedIn(apiBase = config_1.API_BASE, ref) {
200
+ (0, environment_1.assertConnection)(apiBase, 'api');
121
201
  const existing = (0, credentials_1.getCredentials)();
122
202
  if (existing) {
123
203
  await (0, attribution_1.recordAttributionRef)(existing.api_base || apiBase, ref, existing.api_key);
124
204
  return existing;
125
205
  }
126
- const result = await (0, oauth_server_1.runOAuthFlow)(apiBase, ref);
206
+ // No flags: a pending `login --device --no-wait` is resumed here, which is
207
+ // how `install --skills-only` finishes what that command started.
208
+ await signIn(apiBase, ref);
127
209
  const creds = (0, credentials_1.getCredentials)();
128
210
  if (!creds) {
129
211
  logger.error('Failed to save credentials after login');
@@ -1 +1 @@
1
- {"version":3,"file":"login.js","sourceRoot":"","sources":["../../src/commands/login.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"login.js","sourceRoot":"","sources":["../../src/commands/login.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AA8EA,wBAqBC;AAUD,gDAmDC;AAQD,wCAkBC;AA1LD,yCAAoC;AACpC,qDAAqD;AACrD,uDAAsE;AACtE,qDAAwG;AACxG,mDAAqD;AACrD,qDAAiD;AACjD,mDAAoF;AACpF,yDAAwD;AACxD,6CAAmD;AACnD,qDAA0D;AAC1D,6CAAoD;AACpD,wDAA0C;AAC1C,sCAAqC;AACrC,qDAA2D;AAC3D,qCAA+E;AAC/E,gDAAkE;AAElE;;;;;;GAMG;AACH,KAAK,UAAU,yBAAyB;IACtC,IAAI,IAAA,4BAAc,GAAE,KAAK,SAAS;QAAE,OAAO;IAC3C,IAAI,CAAC,IAAA,8BAAkB,GAAE,CAAC,QAAQ,CAAC,YAAY,CAAC;QAAE,OAAO;IACzD,MAAM,SAAS,GAAG,MAAM,IAAA,iCAAwB,GAAE,CAAC;IACnD,MAAM,IAAA,kCAAyB,EAAC,SAAS,CAAC,CAAC;IAC3C,IAAI,SAAS,CAAC,GAAG,KAAK,UAAU;QAAE,OAAO;IACzC,MAAM,OAAO,GAAG,IAAA,qCAAyB,EAAC,IAAA,6BAAc,GAAE,CAAC;SACxD,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,KAAK,WAAW,CAAC;SACvC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;IACtB,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO;IACjC,MAAM,CAAC,OAAO,CAAC,qBAAqB,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IAC1D,IAAI,IAAA,yBAAgB,EAAC,QAAQ,CAAC;QAAE,IAAA,wBAAe,GAAE,CAAC;AACpD,CAAC;AAED;;;;;;;GAOG;AACH,SAAS,mBAAmB;IAC1B,IAAI,IAAA,4BAAc,GAAE,KAAK,SAAS;QAAE,OAAO;IAC3C,wEAAwE;IACxE,yEAAyE;IACzE,IAAI,CAAC,IAAA,yBAAgB,EAAC,QAAQ,CAAC;QAAE,OAAO;IACxC,IAAI,IAAA,+BAAkB,GAAE,EAAE,CAAC;QACzB,MAAM,KAAK,GAAG,IAAA,4BAAc,GAAE,CAAC;QAC/B,MAAM,CAAC,IAAI,CAAC,+BAA+B,KAAK,EAAE,cAAc,IAAI,uBAAuB,EAAE,CAAC,CAAC;IACjG,CAAC;AACH,CAAC;AAED,qGAAqG;AACrG,SAAS,aAAa;IACpB,MAAM,CAAC,IAAI,CAAC,2FAA2F,CAAC,CAAC;IACzG,MAAM,CAAC,OAAO,CAAC,+CAA+C,CAAC,CAAC;IAChE,MAAM,CAAC,IAAI,CAAC,gFAAgF,CAAC,CAAC;AAChG,CAAC;AAWD;;;;GAIG;AACI,KAAK,UAAU,MAAM,CAAC,OAAe,EAAE,GAAuB,EAAE,QAAqB,EAAE;IAC5F,MAAM,MAAM,GAAG,KAAK,CAAC,IAAI,KAAK,KAAK,CAAC;IACpC,MAAM,EAAE,IAAI,EAAE,GAAG,IAAA,4BAAe,EAAC;QAC/B,MAAM,EAAE,KAAK,CAAC,MAAM;QACpB,OAAO,EAAE,KAAK,CAAC,OAAO;QACtB,MAAM;QACN,YAAY,EAAE,IAAA,oCAAsB,EAAC,OAAO,CAAC,KAAK,IAAI;KACvD,CAAC,CAAC;IACH,IAAI,IAAI,KAAK,QAAQ,EAAE,CAAC;QACtB,IAAI,CAAC;YACH,MAAM,OAAO,GAAG,MAAM,IAAA,2BAAa,EAAC,OAAO,EAAE,EAAE,GAAG,EAAE,IAAI,EAAE,CAAC,MAAM,EAAE,CAAC,CAAC;YACrE,OAAO,OAAO,CAAC,MAAM,KAAK,MAAM,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,SAAS,EAAE,CAAC;QACrE,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,IAAI,CAAC,CAAC,GAAG,YAAY,wCAA0B,CAAC;gBAAE,MAAM,GAAG,CAAC;YAC5D,IAAI,KAAK,CAAC,MAAM,IAAI,MAAM,EAAE,CAAC;gBAC3B,MAAM,IAAI,KAAK,CAAC,4FAA4F,CAAC,CAAC;YAChH,CAAC;YACD,MAAM,CAAC,IAAI,CAAC,2EAA2E,CAAC,CAAC;QAC3F,CAAC;IACH,CAAC;IACD,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,IAAA,2BAAY,EAAC,OAAO,EAAE,GAAG,CAAC,EAAE,CAAC;AACtE,CAAC;AAED,KAAK,UAAU,WAAW,CAAC,OAAe,EAAE,GAAuB,EAAE,MAAmB;IACtF,MAAM,IAAA,kCAAoB,EAAC,OAAO,EAAE,GAAG,EAAE,MAAM,CAAC,OAAO,CAAC,CAAC;IACzD,MAAM,CAAC,OAAO,CAAC,gBAAgB,MAAM,CAAC,KAAK,EAAE,CAAC,CAAC;IAC/C,MAAM,yBAAyB,EAAE,CAAC;IAClC,mBAAmB,EAAE,CAAC;IACtB,aAAa,EAAE,CAAC;AAClB,CAAC;AAED,SAAgB,kBAAkB;IAChC,OAAO,IAAI,mBAAO,CAAC,OAAO,CAAC;SAC1B,WAAW,CAAC,mCAAmC,CAAC;SAChD,MAAM,CAAC,kBAAkB,EAAE,cAAc,EAAE,iBAAQ,CAAC;SACpD,MAAM,CAAC,cAAc,EAAE,qDAAqD,CAAC;SAC7E,MAAM,CAAC,UAAU,EAAE,6DAA6D,CAAC;SACjF,MAAM,CAAC,WAAW,EAAE,yCAAyC,CAAC;SAC9D,MAAM,CAAC,WAAW,EAAE,yEAAyE,CAAC;SAC9F,MAAM,CAAC,iBAAiB,EAAE,0EAA0E,CAAC;SACrG,MAAM,CAAC,KAAK,EAAE,IAAI,EAAE,EAAE;QACrB,IAAA,8BAAgB,EAAC,IAAI,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC;QACtC,IAAI,IAAI,CAAC,OAAO,IAAI,CAAC,IAAI,CAAC,MAAM,IAAI,IAAI,CAAC,IAAI,KAAK,KAAK,CAAC,EAAE,CAAC;YACzD,MAAM,CAAC,KAAK,CAAC,wFAAwF,CAAC,CAAC;YACvG,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;YAChB,OAAO;QACT,CAAC;QAED,IAAI,IAAI,CAAC,KAAK,KAAK,SAAS,EAAE,CAAC;YAC7B,IAAI,CAAC;gBACH,MAAM,MAAM,GAAG,MAAM,IAAA,wBAAU,EAAC,OAAO,IAAI,CAAC,KAAK,KAAK,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,SAAS,EAAE,IAAI,CAAC,OAAO,CAAC,CAAC;gBACvG,MAAM,WAAW,CAAC,IAAI,CAAC,OAAO,EAAE,IAAI,CAAC,GAAG,EAAE,MAAM,CAAC,CAAC;YACpD,CAAC;YAAC,OAAO,GAAY,EAAE,CAAC;gBACtB,MAAM,CAAC,KAAK,CAAC,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,cAAc,CAAC,CAAC;gBAClE,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;YAClB,CAAC;YACD,OAAO;QACT,CAAC;QAED,MAAM,QAAQ,GAAG,IAAA,4BAAc,GAAE,CAAC;QAClC,IAAI,QAAQ,EAAE,CAAC;YACb,MAAM,CAAC,OAAO,CAAC,wBAAwB,QAAQ,CAAC,KAAK,EAAE,CAAC,CAAC;YACzD,MAAM,IAAA,kCAAoB,EAAC,QAAQ,CAAC,QAAQ,IAAI,IAAI,CAAC,OAAO,EAAE,IAAI,CAAC,GAAG,EAAE,QAAQ,CAAC,OAAO,CAAC,CAAC;YAC1F,MAAM,yBAAyB,EAAE,CAAC;YAClC,mBAAmB,EAAE,CAAC;YACtB,MAAM,CAAC,IAAI,CAAC,mDAAmD,CAAC,CAAC;YACjE,OAAO;QACT,CAAC;QAED,IAAI,CAAC;YACH,MAAM,OAAO,GAAG,MAAM,MAAM,CAAC,IAAI,CAAC,OAAO,EAAE,IAAI,CAAC,GAAG,EAAE,EAAE,MAAM,EAAE,IAAI,CAAC,MAAM,EAAE,OAAO,EAAE,IAAI,CAAC,OAAO,EAAE,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC;YACtH,IAAI,OAAO,CAAC,MAAM,KAAK,SAAS,EAAE,CAAC;gBACjC,MAAM,CAAC,IAAI,CAAC,0EAA0E,CAAC,CAAC;gBACxF,OAAO;YACT,CAAC;YACD,MAAM,WAAW,CAAC,IAAI,CAAC,OAAO,EAAE,IAAI,CAAC,GAAG,EAAE,OAAO,CAAC,MAAM,CAAC,CAAC;QAC5D,CAAC;QAAC,OAAO,GAAY,EAAE,CAAC;YACtB,MAAM,OAAO,GAAG,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,cAAc,CAAC;YACpE,MAAM,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;YACtB,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAClB,CAAC;IACH,CAAC,CAAC,CAAC;AACL,CAAC;AAEY,QAAA,YAAY,GAAG,kBAAkB,EAAE,CAAC;AAEjD;;;GAGG;AACI,KAAK,UAAU,cAAc,CAAC,UAAkB,iBAAQ,EAAE,GAAY;IAC3E,IAAA,8BAAgB,EAAC,OAAO,EAAE,KAAK,CAAC,CAAC;IACjC,MAAM,QAAQ,GAAG,IAAA,4BAAc,GAAE,CAAC;IAClC,IAAI,QAAQ,EAAE,CAAC;QACb,MAAM,IAAA,kCAAoB,EAAC,QAAQ,CAAC,QAAQ,IAAI,OAAO,EAAE,GAAG,EAAE,QAAQ,CAAC,OAAO,CAAC,CAAC;QAChF,OAAO,QAAQ,CAAC;IAClB,CAAC;IAED,2EAA2E;IAC3E,kEAAkE;IAClE,MAAM,MAAM,CAAC,OAAO,EAAE,GAAG,CAAC,CAAC;IAC3B,MAAM,KAAK,GAAG,IAAA,4BAAc,GAAE,CAAC;IAC/B,IAAI,CAAC,KAAK,EAAE,CAAC;QACX,MAAM,CAAC,KAAK,CAAC,wCAAwC,CAAC,CAAC;QACvD,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;IACD,MAAM,IAAA,kCAAoB,EAAC,OAAO,EAAE,GAAG,EAAE,KAAK,CAAC,OAAO,CAAC,CAAC;IACxD,OAAO,KAAK,CAAC;AACf,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"logout.d.ts","sourceRoot":"","sources":["../../src/commands/logout.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAKpC,eAAO,MAAM,aAAa,SAgBtB,CAAC"}
1
+ {"version":3,"file":"logout.d.ts","sourceRoot":"","sources":["../../src/commands/logout.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAOpC,eAAO,MAAM,aAAa,SAmBtB,CAAC"}
@@ -36,11 +36,16 @@ Object.defineProperty(exports, "__esModule", { value: true });
36
36
  exports.logoutCommand = void 0;
37
37
  const commander_1 = require("commander");
38
38
  const credentials_1 = require("../auth/credentials");
39
+ const device_flow_1 = require("../auth/device-flow");
39
40
  const claude_mcp_1 = require("../agents/claude-mcp");
40
41
  const logger = __importStar(require("../utils/logger"));
42
+ const environment_1 = require("../environment");
41
43
  exports.logoutCommand = new commander_1.Command('logout')
42
44
  .description('Sign out and clear saved credentials')
43
45
  .action(async () => {
46
+ // An unfinished device sign-in (`login --device --no-wait`) is dropped too,
47
+ // even when no account is signed in yet.
48
+ (0, device_flow_1.clearPendingDeviceLogin)();
44
49
  const existing = (0, credentials_1.getCredentials)();
45
50
  if (!existing) {
46
51
  logger.info('Not currently logged in.');
@@ -51,7 +56,8 @@ exports.logoutCommand = new commander_1.Command('logout')
51
56
  // it lingers pointing at the logged-out backend with a now-dead token — the
52
57
  // classic "project not found" / wrong-org trap when you later log into a
53
58
  // different backend (e.g. local dev) without re-registering.
54
- (0, claude_mcp_1.removeClaudeMcp)();
59
+ if ((0, environment_1.getEnvironment)() === 'production')
60
+ (0, claude_mcp_1.removeClaudeMcp)();
55
61
  logger.success(`Logged out (was ${existing.email}) — cleared credentials + MCP registration`);
56
62
  });
57
63
  //# sourceMappingURL=logout.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"logout.js","sourceRoot":"","sources":["../../src/commands/logout.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,yCAAoC;AACpC,qDAAuE;AACvE,qDAAuD;AACvD,wDAA0C;AAE7B,QAAA,aAAa,GAAG,IAAI,mBAAO,CAAC,QAAQ,CAAC;KAC/C,WAAW,CAAC,sCAAsC,CAAC;KACnD,MAAM,CAAC,KAAK,IAAI,EAAE;IACjB,MAAM,QAAQ,GAAG,IAAA,4BAAc,GAAE,CAAC;IAClC,IAAI,CAAC,QAAQ,EAAE,CAAC;QACd,MAAM,CAAC,IAAI,CAAC,0BAA0B,CAAC,CAAC;QACxC,OAAO;IACT,CAAC;IAED,IAAA,8BAAgB,GAAE,CAAC;IACnB,6EAA6E;IAC7E,4EAA4E;IAC5E,yEAAyE;IACzE,6DAA6D;IAC7D,IAAA,4BAAe,GAAE,CAAC;IAClB,MAAM,CAAC,OAAO,CAAC,mBAAmB,QAAQ,CAAC,KAAK,4CAA4C,CAAC,CAAC;AAChG,CAAC,CAAC,CAAC"}
1
+ {"version":3,"file":"logout.js","sourceRoot":"","sources":["../../src/commands/logout.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,yCAAoC;AACpC,qDAAuE;AACvE,qDAA8D;AAC9D,qDAAuD;AACvD,wDAA0C;AAC1C,gDAAgD;AAEnC,QAAA,aAAa,GAAG,IAAI,mBAAO,CAAC,QAAQ,CAAC;KAC/C,WAAW,CAAC,sCAAsC,CAAC;KACnD,MAAM,CAAC,KAAK,IAAI,EAAE;IACjB,4EAA4E;IAC5E,yCAAyC;IACzC,IAAA,qCAAuB,GAAE,CAAC;IAC1B,MAAM,QAAQ,GAAG,IAAA,4BAAc,GAAE,CAAC;IAClC,IAAI,CAAC,QAAQ,EAAE,CAAC;QACd,MAAM,CAAC,IAAI,CAAC,0BAA0B,CAAC,CAAC;QACxC,OAAO;IACT,CAAC;IAED,IAAA,8BAAgB,GAAE,CAAC;IACnB,6EAA6E;IAC7E,4EAA4E;IAC5E,yEAAyE;IACzE,6DAA6D;IAC7D,IAAI,IAAA,4BAAc,GAAE,KAAK,YAAY;QAAE,IAAA,4BAAe,GAAE,CAAC;IACzD,MAAM,CAAC,OAAO,CAAC,mBAAmB,QAAQ,CAAC,KAAK,4CAA4C,CAAC,CAAC;AAChG,CAAC,CAAC,CAAC"}