gooseworks 0.4.4 → 0.5.0-dev.3.8661ef81

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 (94) hide show
  1. package/README.md +27 -10
  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/oauth-server.d.ts.map +1 -1
  11. package/dist/auth/oauth-server.js +18 -2
  12. package/dist/auth/oauth-server.js.map +1 -1
  13. package/dist/commands/doctor.d.ts.map +1 -1
  14. package/dist/commands/doctor.js +11 -1
  15. package/dist/commands/doctor.js.map +1 -1
  16. package/dist/commands/formats.js +2 -2
  17. package/dist/commands/formats.js.map +1 -1
  18. package/dist/commands/graphics/publish-flow.js +1 -1
  19. package/dist/commands/graphics/publish-flow.js.map +1 -1
  20. package/dist/commands/install.d.ts.map +1 -1
  21. package/dist/commands/install.js +20 -0
  22. package/dist/commands/install.js.map +1 -1
  23. package/dist/commands/launch.d.ts +3 -0
  24. package/dist/commands/launch.d.ts.map +1 -0
  25. package/dist/commands/launch.js +35 -0
  26. package/dist/commands/launch.js.map +1 -0
  27. package/dist/commands/login.d.ts.map +1 -1
  28. package/dist/commands/login.js +7 -0
  29. package/dist/commands/login.js.map +1 -1
  30. package/dist/commands/logout.d.ts.map +1 -1
  31. package/dist/commands/logout.js +3 -1
  32. package/dist/commands/logout.js.map +1 -1
  33. package/dist/commands/skills.d.ts +16 -0
  34. package/dist/commands/skills.d.ts.map +1 -1
  35. package/dist/commands/skills.js +52 -1
  36. package/dist/commands/skills.js.map +1 -1
  37. package/dist/commands/styles.js +2 -2
  38. package/dist/commands/styles.js.map +1 -1
  39. package/dist/commands/update.d.ts.map +1 -1
  40. package/dist/commands/update.js +20 -0
  41. package/dist/commands/update.js.map +1 -1
  42. package/dist/commands/video-local.d.ts.map +1 -1
  43. package/dist/commands/video-local.js +2 -2
  44. package/dist/commands/video-local.js.map +1 -1
  45. package/dist/config.d.ts.map +1 -1
  46. package/dist/config.js +11 -3
  47. package/dist/config.js.map +1 -1
  48. package/dist/environment.d.ts +9 -0
  49. package/dist/environment.d.ts.map +1 -0
  50. package/dist/environment.js +103 -0
  51. package/dist/environment.js.map +1 -0
  52. package/dist/index.js +12 -45
  53. package/dist/index.js.map +1 -1
  54. package/dist/lib/graphics-cache.d.ts.map +1 -1
  55. package/dist/lib/graphics-cache.js +2 -2
  56. package/dist/lib/graphics-cache.js.map +1 -1
  57. package/dist/program.d.ts +2 -0
  58. package/dist/program.d.ts.map +1 -0
  59. package/dist/program.js +54 -0
  60. package/dist/program.js.map +1 -0
  61. package/dist/skills/custom-video-skill.d.ts +1 -1
  62. package/dist/skills/custom-video-skill.d.ts.map +1 -1
  63. package/dist/skills/custom-video-skill.js +1 -1
  64. package/dist/skills/custom-video-skill.js.map +1 -1
  65. package/dist/skills/installer.d.ts.map +1 -1
  66. package/dist/skills/installer.js +42 -24
  67. package/dist/skills/installer.js.map +1 -1
  68. package/dist/skills/master-skill.d.ts +12 -9
  69. package/dist/skills/master-skill.d.ts.map +1 -1
  70. package/dist/skills/master-skill.js +742 -340
  71. package/dist/skills/master-skill.js.map +1 -1
  72. package/dist/skills/releases.d.ts +1 -1
  73. package/dist/skills/releases.d.ts.map +1 -1
  74. package/dist/skills/releases.js +8 -5
  75. package/dist/skills/releases.js.map +1 -1
  76. package/dist/skills/routes.js +7 -7
  77. package/dist/skills/routes.js.map +1 -1
  78. package/dist/skills/staging-content.d.ts +3 -0
  79. package/dist/skills/staging-content.d.ts.map +1 -0
  80. package/dist/skills/staging-content.js +12 -0
  81. package/dist/skills/staging-content.js.map +1 -0
  82. package/package.json +12 -4
  83. package/skills/goose-ads/SKILL.md +363 -224
  84. package/skills/goose-product-photos/SKILL.md +84 -58
  85. package/skills/goose-video/SKILL.md +221 -12
  86. package/skills/goose-video-local/SKILL.md +194 -23
  87. package/skills/gooseworks/SKILL.md +106 -24
  88. package/skills/make-custom-video/SKILL.md +217 -10
  89. package/skills/manifest.json +7 -7
  90. package/skills/routes.json +7 -7
  91. package/dist/skills/fetcher.d.ts +0 -18
  92. package/dist/skills/fetcher.d.ts.map +0 -1
  93. package/dist/skills/fetcher.js +0 -118
  94. package/dist/skills/fetcher.js.map +0 -1
package/README.md CHANGED
@@ -4,27 +4,44 @@ Put your AI agent on the growth team. GooseWorks gives Claude Code, Cursor, and
4
4
 
5
5
  ## Install
6
6
 
7
- Pick your agent:
7
+ **Paste this into your agent** (Claude Code, Cursor, Codex, or a chat app like Claude or ChatGPT):
8
+
9
+ ```text
10
+ Install gooseworks: https://gooseworks.ai/install.md
11
+ ```
12
+
13
+ Your agent reads that page and follows it. The page is short and you can read it too. It makes the agent:
14
+
15
+ 1. **Ask you first.** It says exactly what it will install and waits for your OK. The install touches your agent's skills folder, its MCP config and `~/.gooseworks/credentials.json`, nothing else, and only ever runs `npx gooseworks@latest …`.
16
+ 2. **Install** the GooseWorks skills and register the `gooseworks` MCP server with the right flag for your agent (`--claude`, `--cursor`, `--codex`), always with `--mcp`.
17
+ 3. **Sign you in** with Google in your browser (the URL is always printed too).
18
+ 4. **Check the install** with `npx gooseworks@latest doctor` and tell you to restart the agent so the MCP tools load.
19
+ 5. **Set up your company** after the restart: it asks for your website and saves what it learns as a reusable **Company Brain** that improves every later research, creative, and growth task.
20
+
21
+ Want a specific skill too? Say so: `Install gooseworks: https://gooseworks.ai/install.md, including the goose-graphics skill.`
22
+
23
+ If your agent cannot run terminal commands (claude.ai, ChatGPT), the page tells it to give you the MCP connector address (`https://mcp.gooseworks.ai/mcp`) instead.
24
+
25
+ ### Run it yourself
26
+
27
+ Prefer the terminal? Pick your agent (keep `--mcp`; `--all` includes it):
8
28
 
9
29
  ```bash
10
30
  # Claude Code
11
- npx gooseworks install --claude --mcp
12
- npx gooseworks install --claude --mcp --with goose-graphics
31
+ npx gooseworks@latest install --claude --mcp
32
+ npx gooseworks@latest install --claude --mcp --with goose-graphics
13
33
 
14
34
  # Cursor
15
- npx gooseworks install --cursor --mcp
35
+ npx gooseworks@latest install --cursor --mcp
16
36
 
17
37
  # Codex
18
- npx gooseworks install --codex --mcp
38
+ npx gooseworks@latest install --codex --mcp
19
39
 
20
40
  # All detected agents
21
- npx gooseworks install --all
41
+ npx gooseworks@latest install --all
22
42
  ```
23
43
 
24
- This does three things:
25
- 1. Opens browser for Google sign-in
26
- 2. Installs the GooseWorks skill into your coding agent
27
- 3. You're ready — ask your agent to "scrape reddit", "find leads", "research competitors", or "create product photos"
44
+ Restart your coding agent afterwards (MCP servers are only read at startup), then ask it to "scrape reddit", "find leads", "research competitors", or "create product photos".
28
45
 
29
46
  You do not need a special onboarding command. Ask GooseWorks to do a normal task, or say:
30
47
 
@@ -0,0 +1,38 @@
1
+ export { stagingContent } from '../skills/staging-content';
2
+ export type StagingAgent = 'claude' | 'codex';
3
+ interface Manifest {
4
+ environment: 'staging';
5
+ project: string;
6
+ version: string;
7
+ sourceBranch: 'dev';
8
+ sourceRevision: string | null;
9
+ mcpEndpoint: string;
10
+ agents: StagingAgent[];
11
+ skills: Record<string, string>;
12
+ }
13
+ export declare function projectProfile(project: string): {
14
+ project: string;
15
+ root: string;
16
+ home: string;
17
+ manifest: string;
18
+ };
19
+ /** Project/parent customizations could reintroduce a production plugin or MCP. */
20
+ export declare function assertCleanProject(project: string): void;
21
+ export declare function installStagingProject(project: string, agents: string[]): Manifest;
22
+ export declare function stagingLaunch(project: string, agent: string): {
23
+ command: string;
24
+ args: string[];
25
+ cwd: string;
26
+ env: NodeJS.ProcessEnv;
27
+ home: string;
28
+ manifest: Manifest;
29
+ };
30
+ /** Read Claude's startup event and stop before a model request (no provider credential needed). */
31
+ export declare function inspectClaudeSkills(launch: ReturnType<typeof stagingLaunch>): Promise<string[]>;
32
+ /** Real, free Codex discovery. Refuse incompatible versions before starting a session. */
33
+ export declare function inspectCodexSkills(launch: ReturnType<typeof stagingLaunch>): Promise<Array<{
34
+ name: string;
35
+ path: string;
36
+ enabled: boolean;
37
+ }>>;
38
+ //# sourceMappingURL=staging.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"staging.d.ts","sourceRoot":"","sources":["../../src/agents/staging.ts"],"names":[],"mappings":"AASA,OAAO,EAAE,cAAc,EAAE,MAAM,2BAA2B,CAAC;AAE3D,MAAM,MAAM,YAAY,GAAG,QAAQ,GAAG,OAAO,CAAC;AAC9C,UAAU,QAAQ;IAAG,WAAW,EAAE,SAAS,CAAC;IAAC,OAAO,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,MAAM,CAAC;IAAC,YAAY,EAAE,KAAK,CAAC;IAAC,cAAc,EAAE,MAAM,GAAG,IAAI,CAAC;IAAC,WAAW,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,YAAY,EAAE,CAAC;IAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;CAAE;AAGjN,wBAAgB,cAAc,CAAC,OAAO,EAAE,MAAM,GAAG;IAAE,OAAO,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,CAAC;IAAC,QAAQ,EAAE,MAAM,CAAA;CAAE,CAMjH;AAED,kFAAkF;AAClF,wBAAgB,kBAAkB,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI,CAWxD;AAQD,wBAAgB,qBAAqB,CAAC,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,GAAG,QAAQ,CA+BjF;AAYD,wBAAgB,aAAa,CAAC,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG;IAAE,OAAO,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,EAAE,CAAC;IAAC,GAAG,EAAE,MAAM,CAAC;IAAC,GAAG,EAAE,MAAM,CAAC,UAAU,CAAC;IAAC,IAAI,EAAE,MAAM,CAAC;IAAC,QAAQ,EAAE,QAAQ,CAAA;CAAE,CA0BxK;AAiBD,mGAAmG;AACnG,wBAAgB,mBAAmB,CAAC,MAAM,EAAE,UAAU,CAAC,OAAO,aAAa,CAAC,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC,CA2B/F;AAED,0FAA0F;AAC1F,wBAAgB,kBAAkB,CAAC,MAAM,EAAE,UAAU,CAAC,OAAO,aAAa,CAAC,GAAG,OAAO,CAAC,KAAK,CAAC;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,OAAO,CAAA;CAAE,CAAC,CAAC,CA8C7I"}
@@ -0,0 +1,309 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
15
+ }) : function(o, v) {
16
+ o["default"] = v;
17
+ });
18
+ var __importStar = (this && this.__importStar) || (function () {
19
+ var ownKeys = function(o) {
20
+ ownKeys = Object.getOwnPropertyNames || function (o) {
21
+ var ar = [];
22
+ for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
23
+ return ar;
24
+ };
25
+ return ownKeys(o);
26
+ };
27
+ return function (mod) {
28
+ if (mod && mod.__esModule) return mod;
29
+ var result = {};
30
+ if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
31
+ __setModuleDefault(result, mod);
32
+ return result;
33
+ };
34
+ })();
35
+ Object.defineProperty(exports, "__esModule", { value: true });
36
+ exports.stagingContent = void 0;
37
+ exports.projectProfile = projectProfile;
38
+ exports.assertCleanProject = assertCleanProject;
39
+ exports.installStagingProject = installStagingProject;
40
+ exports.stagingLaunch = stagingLaunch;
41
+ exports.inspectClaudeSkills = inspectClaudeSkills;
42
+ exports.inspectCodexSkills = inspectCodexSkills;
43
+ const fs = __importStar(require("node:fs"));
44
+ const path = __importStar(require("node:path"));
45
+ const os = __importStar(require("node:os"));
46
+ const node_crypto_1 = require("node:crypto");
47
+ const node_child_process_1 = require("node:child_process");
48
+ const credentials_1 = require("../auth/credentials");
49
+ const environment_1 = require("../environment");
50
+ const installer_1 = require("../skills/installer");
51
+ const version_1 = require("../version");
52
+ var staging_content_1 = require("../skills/staging-content");
53
+ Object.defineProperty(exports, "stagingContent", { enumerable: true, get: function () { return staging_content_1.stagingContent; } });
54
+ const hash = (value) => (0, node_crypto_1.createHash)('sha256').update(value).digest('hex');
55
+ function projectProfile(project) {
56
+ if (!project)
57
+ throw new Error('Staging requires --project <folder>');
58
+ const resolved = fs.realpathSync(path.resolve(project));
59
+ if (!fs.statSync(resolved).isDirectory())
60
+ throw new Error('--project must be a directory');
61
+ const root = path.join((0, environment_1.profileRoot)(), 'projects', hash(resolved).slice(0, 20));
62
+ return { project: resolved, root, home: path.join(root, 'home'), manifest: path.join(root, 'manifest.json') };
63
+ }
64
+ /** Project/parent customizations could reintroduce a production plugin or MCP. */
65
+ function assertCleanProject(project) {
66
+ const userHome = fs.realpathSync(process.env.GOOSEWORKS_USER_HOME || os.homedir());
67
+ for (let dir = project;; dir = path.dirname(dir)) {
68
+ // User-global roots are excluded by the child home; they must stay installed.
69
+ if (dir !== userHome) {
70
+ for (const name of ['.claude', '.codex', '.agents', '.cursor', '.mcp.json']) {
71
+ if (fs.existsSync(path.join(dir, name)))
72
+ throw new Error(`Staging cannot safely load project customization ${path.join(dir, name)}. Use a clean test folder outside that project tree.`);
73
+ }
74
+ }
75
+ if (path.dirname(dir) === dir)
76
+ break;
77
+ }
78
+ }
79
+ function privateWrite(file, body, mode = 0o600) {
80
+ fs.mkdirSync(path.dirname(file), { recursive: true, mode: 0o700 });
81
+ if (fs.lstatSync(file, { throwIfNoEntry: false })?.isSymbolicLink())
82
+ throw new Error(`Refusing linked staging config: ${file}`);
83
+ fs.writeFileSync(file, body, { mode });
84
+ fs.chmodSync(file, mode);
85
+ }
86
+ function installStagingProject(project, agents) {
87
+ if ((0, environment_1.getEnvironment)() !== 'staging')
88
+ throw new Error('Project isolation is available with --env staging');
89
+ if (!agents.length || agents.some(agent => !['claude', 'codex'].includes(agent)))
90
+ throw new Error('Staging supports --claude and --codex. Cursor staging is refused until its skill isolation can be verified.');
91
+ const profile = projectProfile(project);
92
+ assertCleanProject(profile.project);
93
+ if (fs.existsSync(profile.manifest)) {
94
+ const previous = JSON.parse(fs.readFileSync(profile.manifest, 'utf8'));
95
+ for (const agent of previous.agents)
96
+ stagingLaunch(project, agent);
97
+ }
98
+ const credentials = (0, credentials_1.getCredentials)();
99
+ if (!credentials?.mcp_server_url)
100
+ throw new Error('Staging requires a staging GooseWorks login with an MCP connection. Run gooseworks --env staging login.');
101
+ const skills = {};
102
+ const source = (0, installer_1.getSkillsBasePath)();
103
+ for (const name of fs.readdirSync(source)) {
104
+ if (name.startsWith('.'))
105
+ continue;
106
+ const directory = path.join(source, name);
107
+ if (!fs.statSync(directory).isDirectory() || !fs.existsSync(path.join(directory, 'SKILL.md')))
108
+ continue;
109
+ if (fs.lstatSync(directory).isSymbolicLink())
110
+ throw new Error(`Linked staging package refused: ${name}`);
111
+ for (const agent of agents) {
112
+ const target = path.join(profile.home, `.${agent}`, 'skills', name);
113
+ // Refuse edits instead of silently destroying previously tested instructions.
114
+ if (fs.existsSync(target))
115
+ fs.rmSync(target, { recursive: true });
116
+ fs.cpSync(directory, target, { recursive: true, dereference: false });
117
+ }
118
+ skills[name] = treeHash(directory);
119
+ }
120
+ if (!skills.gooseworks)
121
+ throw new Error('Install the bundled staging entry skills first');
122
+ const pkg = JSON.parse(fs.readFileSync(path.resolve(__dirname, '..', '..', 'package.json'), 'utf8'));
123
+ const manifest = { environment: 'staging', project: profile.project, version: (0, version_1.getVersion)(), sourceBranch: 'dev', sourceRevision: pkg.gooseworksRelease?.commit || null, mcpEndpoint: credentials.mcp_server_url, agents: agents, skills };
124
+ privateWrite(profile.manifest, JSON.stringify(manifest, null, 2) + '\n');
125
+ writeConnections(profile.home, credentials);
126
+ return manifest;
127
+ }
128
+ function writeConnections(home, credentials) {
129
+ const endpoint = credentials.mcp_server_url.replace(/\/$/, '');
130
+ const url = endpoint.endsWith('/mcp') ? endpoint : `${endpoint}/mcp`;
131
+ privateWrite(path.join(home, 'mcp.json'), JSON.stringify({ mcpServers: { 'gooseworks-staging': { type: 'http', url, headers: { Authorization: `Bearer ${credentials.api_key}` } } } }));
132
+ // Codex shells can otherwise filter custom environment variables or reset PATH.
133
+ const pinned = { HOME: home, GOOSEWORKS_USER_HOME: process.env.GOOSEWORKS_USER_HOME || os.homedir(), GOOSEWORKS_SESSION_ENV: 'staging', GOOSEWORKS_API_BASE: credentials.api_base, PATH: `${path.join(home, 'bin')}${path.delimiter}${process.env.PATH || ''}` };
134
+ const shell = Object.entries(pinned).map(([key, value]) => `${key} = ${JSON.stringify(value)}`).join('\n');
135
+ privateWrite(path.join(home, '.codex', 'config.toml'), `allow_login_shell = false\n[shell_environment_policy]\ninherit = "all"\n[shell_environment_policy.set]\n${shell}\n[mcp_servers.gooseworks-staging]\nurl = ${JSON.stringify(url)}\n[mcp_servers.gooseworks-staging.http_headers]\nAuthorization = ${JSON.stringify(`Bearer ${credentials.api_key}`)}\n`);
136
+ }
137
+ function stagingLaunch(project, agent) {
138
+ if (!['claude', 'codex'].includes(agent))
139
+ throw new Error('Use --agent claude or --agent codex for an isolated staging session');
140
+ const profile = projectProfile(project);
141
+ assertCleanProject(profile.project);
142
+ const manifest = JSON.parse(fs.readFileSync(profile.manifest, 'utf8'));
143
+ if (manifest.environment !== 'staging' || manifest.project !== profile.project || !manifest.agents.includes(agent))
144
+ throw new Error('Project/environment mismatch. Install staging for this project and agent first.');
145
+ const root = path.join(profile.home, `.${agent}`, 'skills');
146
+ const actual = fs.readdirSync(root).filter(name => !name.startsWith('.'));
147
+ if (actual.length !== Object.keys(manifest.skills).length)
148
+ throw new Error('Unexpected skill in staging profile; reinstall into a fresh test folder');
149
+ for (const [name, expected] of Object.entries(manifest.skills)) {
150
+ const file = path.join(root, name, 'SKILL.md');
151
+ if (treeHash(path.dirname(file)) !== expected)
152
+ throw new Error(`Staging skill changed or linked: ${name}. Review it and install into a fresh test folder.`);
153
+ }
154
+ const credentials = (0, credentials_1.getCredentials)();
155
+ if (!credentials?.mcp_server_url)
156
+ throw new Error('Sign in to staging again before launching');
157
+ writeConnections(profile.home, credentials);
158
+ const env = { ...process.env };
159
+ // Do not carry production Goose tokens, custom provider homes, or daemon handles.
160
+ for (const key of Object.keys(env))
161
+ if (/^(GOOSEWORKS_|CODEX_|CLAUDE_|CLAUDECODE$|CURSOR_|XDG_)/.test(key))
162
+ delete env[key];
163
+ Object.assign(env, { HOME: profile.home, USERPROFILE: profile.home, XDG_CONFIG_HOME: path.join(profile.home, '.config'), XDG_DATA_HOME: path.join(profile.home, '.local', 'share'), CODEX_HOME: path.join(profile.home, '.codex'), CLAUDE_CONFIG_DIR: path.join(profile.home, '.claude'), GOOSEWORKS_USER_HOME: process.env.GOOSEWORKS_USER_HOME || os.homedir(), GOOSEWORKS_SESSION_ENV: 'staging', GOOSEWORKS_API_BASE: credentials.api_base });
164
+ // Use this exact CLI build inside the agent, even if its PATH has an older global CLI.
165
+ const bin = path.join(profile.home, 'bin');
166
+ if (process.platform === 'win32')
167
+ throw new Error('Isolated staging launch currently requires macOS or Linux');
168
+ const quote = (value) => `'${value.replaceAll("'", "'\\''")}'`;
169
+ privateWrite(path.join(bin, 'gooseworks'), `#!/bin/sh\nGOOSEWORKS_SESSION_ENV=staging\nexport GOOSEWORKS_SESSION_ENV\nexec ${quote(process.execPath)} ${quote(path.resolve(__dirname, '..', 'index.js'))} "$@"\n`, 0o700);
170
+ env.PATH = `${bin}${path.delimiter}${process.env.PATH || ''}`;
171
+ return { command: agent, cwd: profile.project, env, home: profile.home, manifest, args: agent === 'claude' ? ['--setting-sources', 'user', '--strict-mcp-config', '--mcp-config', path.join(profile.home, 'mcp.json')] : ['--cd', profile.project] };
172
+ }
173
+ function treeHash(directory) {
174
+ const digest = (0, node_crypto_1.createHash)('sha256');
175
+ function visit(dir) {
176
+ for (const name of fs.readdirSync(dir).sort()) {
177
+ const file = path.join(dir, name);
178
+ const stat = fs.lstatSync(file);
179
+ if (stat.isSymbolicLink())
180
+ throw new Error(`Linked staging package file refused: ${file}`);
181
+ digest.update(path.relative(directory, file) + '\0');
182
+ if (stat.isDirectory())
183
+ visit(file);
184
+ else if (stat.isFile())
185
+ digest.update(fs.readFileSync(file));
186
+ else
187
+ throw new Error(`Unsupported staging package file: ${file}`);
188
+ }
189
+ }
190
+ visit(directory);
191
+ return digest.digest('hex');
192
+ }
193
+ /** Read Claude's startup event and stop before a model request (no provider credential needed). */
194
+ function inspectClaudeSkills(launch) {
195
+ return new Promise((resolve, reject) => {
196
+ const env = { ...launch.env, ANTHROPIC_API_KEY: 'sk-ant-gooseworks-inventory-invalid-key' };
197
+ // Inventory must never use a real billable provider connection.
198
+ for (const key of Object.keys(env))
199
+ if (/^(ANTHROPIC_AUTH_TOKEN|ANTHROPIC_BASE_URL|CLAUDE_CODE_USE_|AWS_|GOOGLE_|AZURE_)/.test(key))
200
+ delete env[key];
201
+ const child = (0, node_child_process_1.spawn)('claude', [...launch.args, '-p', '--input-format', 'stream-json', '--output-format', 'stream-json', '--verbose'], { cwd: launch.cwd, env, stdio: ['pipe', 'pipe', 'pipe'] });
202
+ let finished = false;
203
+ let buffer = '';
204
+ const finish = (error, skills) => { if (finished)
205
+ return; finished = true; clearTimeout(timer); child.kill(); error ? reject(error) : resolve(skills); };
206
+ const timer = setTimeout(() => finish(new Error('Claude startup inventory timed out; update Claude and retry')), 30000);
207
+ child.on('error', error => finish(error));
208
+ child.on('exit', () => { if (!finished)
209
+ finish(new Error('Claude did not provide its skill inventory; update Claude')); });
210
+ child.stderr.on('data', () => undefined);
211
+ child.stdout.on('data', data => {
212
+ buffer += data;
213
+ if (buffer.length > 2 * 1024 * 1024)
214
+ return finish(new Error('Invalid Claude startup event'));
215
+ let end;
216
+ while ((end = buffer.indexOf('\n')) >= 0) {
217
+ let message;
218
+ try {
219
+ message = JSON.parse(buffer.slice(0, end));
220
+ }
221
+ catch {
222
+ buffer = buffer.slice(end + 1);
223
+ continue;
224
+ }
225
+ buffer = buffer.slice(end + 1);
226
+ if (message.type !== 'system' || message.subtype !== 'init')
227
+ continue;
228
+ if (!Array.isArray(message.skills) || !Array.isArray(message.plugins) || !Array.isArray(message.mcp_servers))
229
+ return finish(new Error('Incompatible Claude startup inventory'));
230
+ const expected = Object.keys(launch.manifest.skills);
231
+ if (expected.some(name => !message.skills.includes(name)) || message.skills.some((name) => /^(goose|make-custom-video)/.test(name) && !expected.includes(name)) || message.plugins.length || message.mcp_servers.some((server) => server.name !== 'gooseworks-staging'))
232
+ return finish(new Error('Claude loaded an unexpected skill, plugin, or MCP. Staging launch refused.'));
233
+ finish(undefined, message.skills);
234
+ }
235
+ });
236
+ child.stdin.write(JSON.stringify({ type: 'user', message: { role: 'user', content: '/skills' } }) + '\n');
237
+ });
238
+ }
239
+ /** Real, free Codex discovery. Refuse incompatible versions before starting a session. */
240
+ function inspectCodexSkills(launch) {
241
+ return new Promise((resolve, reject) => {
242
+ const child = (0, node_child_process_1.spawn)('codex', ['app-server'], { cwd: launch.cwd, env: launch.env, stdio: ['pipe', 'pipe', 'pipe'] });
243
+ let buffer = '';
244
+ let finished = false;
245
+ let inventory;
246
+ let configVerified = false;
247
+ const finish = (error, skills) => { if (finished)
248
+ return; finished = true; clearTimeout(timer); child.kill(); error ? reject(error) : resolve(skills); };
249
+ const timer = setTimeout(() => finish(new Error('Codex skill isolation check timed out; update Codex and retry')), 15000);
250
+ child.on('error', error => finish(error));
251
+ child.on('exit', () => { if (!finished)
252
+ finish(new Error('Codex does not support the staging inventory check; update Codex')); });
253
+ child.stderr.on('data', () => undefined);
254
+ child.stdout.on('data', data => {
255
+ buffer += data;
256
+ if (buffer.length > 2 * 1024 * 1024)
257
+ return finish(new Error('Invalid Codex inventory response'));
258
+ let end;
259
+ while ((end = buffer.indexOf('\n')) >= 0) {
260
+ const line = buffer.slice(0, end);
261
+ buffer = buffer.slice(end + 1);
262
+ let message;
263
+ try {
264
+ message = JSON.parse(line);
265
+ }
266
+ catch {
267
+ continue;
268
+ }
269
+ if (message.error)
270
+ return finish(new Error('Codex rejected the staging inventory check; update Codex'));
271
+ if (message.id === 1) {
272
+ child.stdin.write(JSON.stringify({ method: 'initialized' }) + '\n');
273
+ child.stdin.write(JSON.stringify({ id: 2, method: 'skills/list', params: { cwds: [launch.cwd], forceReload: true } }) + '\n');
274
+ child.stdin.write(JSON.stringify({ id: 3, method: 'config/read', params: { cwd: launch.cwd, includeLayers: false } }) + '\n');
275
+ }
276
+ if (message.id === 2) {
277
+ const rows = message.result?.data;
278
+ if (!Array.isArray(rows) || rows.some(row => row.errors?.length))
279
+ return finish(new Error('Could not read the complete Codex skill inventory'));
280
+ const skills = rows.flatMap(row => row.skills || []).filter(skill => skill.enabled);
281
+ const allowed = fs.realpathSync(launch.home) + path.sep;
282
+ if (skills.some(skill => !fs.realpathSync(skill.path).startsWith(allowed)))
283
+ return finish(new Error('Codex discovered skills outside the staging profile. Launch refused.'));
284
+ const names = new Set(skills.map(skill => skill.name));
285
+ if (Object.keys(launch.manifest.skills).some(name => !names.has(name)))
286
+ return finish(new Error('Codex did not load all staging skills. Launch refused.'));
287
+ inventory = skills.map(skill => ({ name: skill.name, path: skill.path, enabled: skill.enabled }));
288
+ if (configVerified)
289
+ finish(undefined, inventory);
290
+ }
291
+ if (message.id === 3) {
292
+ const servers = message.result?.config?.mcp_servers;
293
+ const endpoint = launch.manifest.mcpEndpoint.replace(/\/$/, '');
294
+ const expectedUrl = endpoint.endsWith('/mcp') ? endpoint : `${endpoint}/mcp`;
295
+ if (!servers || Object.keys(servers).length !== 1 || !servers['gooseworks-staging'] || servers['gooseworks-staging'].url !== expectedUrl)
296
+ return finish(new Error('Codex effective MCP configuration is not isolated to staging. Launch refused.'));
297
+ const plugins = message.result?.config?.plugins;
298
+ if (plugins && Object.values(plugins).some((plugin) => plugin?.enabled !== false))
299
+ return finish(new Error('Codex loaded unexpected plugin configuration. Launch refused.'));
300
+ configVerified = true;
301
+ if (inventory)
302
+ finish(undefined, inventory);
303
+ }
304
+ }
305
+ });
306
+ child.stdin.write(JSON.stringify({ id: 1, method: 'initialize', params: { clientInfo: { name: 'gooseworks-staging-check', version: (0, version_1.getVersion)() } } }) + '\n');
307
+ });
308
+ }
309
+ //# sourceMappingURL=staging.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"staging.js","sourceRoot":"","sources":["../../src/agents/staging.ts"],"names":[],"mappings":"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"}
@@ -11,6 +11,7 @@ export interface Credentials {
11
11
  /** Base URL for the GooseWorks MCP server (e.g. http://localhost:6200 in dev). */
12
12
  mcp_server_url?: string;
13
13
  }
14
+ export declare function validateCredentials(creds: Credentials): void;
14
15
  export declare function getCredentials(): Credentials | null;
15
16
  export declare function saveCredentials(creds: Credentials): void;
16
17
  export declare function clearCredentials(): void;
@@ -1 +1 @@
1
- {"version":3,"file":"credentials.d.ts","sourceRoot":"","sources":["../../src/auth/credentials.ts"],"names":[],"mappings":"AAKA,MAAM,WAAW,WAAW;IAC1B,OAAO,EAAE,MAAM,CAAC;IAChB,KAAK,EAAE,MAAM,CAAC;IACd,gGAAgG;IAChG,QAAQ,EAAE,MAAM,CAAC;IACjB,QAAQ,EAAE,MAAM,CAAC;IACjB,wDAAwD;IACxD,UAAU,CAAC,EAAE,OAAO,GAAG,MAAM,CAAC;IAC9B,oEAAoE;IACpE,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,kFAAkF;IAClF,cAAc,CAAC,EAAE,MAAM,CAAC;CACzB;AAKD,wBAAgB,cAAc,IAAI,WAAW,GAAG,IAAI,CAcnD;AAED,wBAAgB,eAAe,CAAC,KAAK,EAAE,WAAW,GAAG,IAAI,CASxD;AAED,wBAAgB,gBAAgB,IAAI,IAAI,CAQvC;AAED,wBAAgB,SAAS,IAAI,MAAM,GAAG,IAAI,CAGzC;AAED,wBAAgB,UAAU,IAAI,MAAM,CAGnC"}
1
+ {"version":3,"file":"credentials.d.ts","sourceRoot":"","sources":["../../src/auth/credentials.ts"],"names":[],"mappings":"AAMA,MAAM,WAAW,WAAW;IAC1B,OAAO,EAAE,MAAM,CAAC;IAChB,KAAK,EAAE,MAAM,CAAC;IACd,gGAAgG;IAChG,QAAQ,EAAE,MAAM,CAAC;IACjB,QAAQ,EAAE,MAAM,CAAC;IACjB,wDAAwD;IACxD,UAAU,CAAC,EAAE,OAAO,GAAG,MAAM,CAAC;IAC9B,oEAAoE;IACpE,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,kFAAkF;IAClF,cAAc,CAAC,EAAE,MAAM,CAAC;CACzB;AAKD,wBAAgB,mBAAmB,CAAC,KAAK,EAAE,WAAW,GAAG,IAAI,CAG5D;AAED,wBAAgB,cAAc,IAAI,WAAW,GAAG,IAAI,CAgBnD;AAED,wBAAgB,eAAe,CAAC,KAAK,EAAE,WAAW,GAAG,IAAI,CAcxD;AAED,wBAAgB,gBAAgB,IAAI,IAAI,CAUvC;AAED,wBAAgB,SAAS,IAAI,MAAM,GAAG,IAAI,CAGzC;AAED,wBAAgB,UAAU,IAAI,MAAM,CAGnC"}
@@ -33,6 +33,7 @@ var __importStar = (this && this.__importStar) || (function () {
33
33
  };
34
34
  })();
35
35
  Object.defineProperty(exports, "__esModule", { value: true });
36
+ exports.validateCredentials = validateCredentials;
36
37
  exports.getCredentials = getCredentials;
37
38
  exports.saveCredentials = saveCredentials;
38
39
  exports.clearCredentials = clearCredentials;
@@ -42,35 +43,52 @@ const fs = __importStar(require("fs"));
42
43
  const path = __importStar(require("path"));
43
44
  const os = __importStar(require("os"));
44
45
  const config_1 = require("../config");
45
- const CREDENTIALS_DIR = path.join(os.homedir(), '.gooseworks');
46
- const CREDENTIALS_FILE = path.join(CREDENTIALS_DIR, 'credentials.json');
46
+ const environment_1 = require("../environment");
47
+ function credentialsFile() { return path.join((0, environment_1.profileRoot)(), 'credentials.json'); }
48
+ const LEGACY_FILE = path.join(os.homedir(), '.gooseworks', 'credentials.json');
49
+ function validateCredentials(creds) {
50
+ (0, environment_1.assertConnection)(creds.api_base, 'api');
51
+ if (creds.mcp_server_url)
52
+ (0, environment_1.assertConnection)(creds.mcp_server_url, 'mcp');
53
+ }
47
54
  function getCredentials() {
55
+ let parsed;
48
56
  try {
49
- if (!fs.existsSync(CREDENTIALS_FILE)) {
57
+ const file = fs.existsSync(credentialsFile()) ? credentialsFile()
58
+ : (0, environment_1.getEnvironment)() === 'production' && fs.existsSync(LEGACY_FILE) ? LEGACY_FILE : null;
59
+ if (!file)
50
60
  return null;
51
- }
52
- const raw = fs.readFileSync(CREDENTIALS_FILE, 'utf-8');
53
- const parsed = JSON.parse(raw);
54
- if (!parsed.api_key || !parsed.email || !parsed.agent_id) {
61
+ parsed = JSON.parse(fs.readFileSync(file, 'utf-8'));
62
+ if (!parsed.api_key || !parsed.email || !parsed.agent_id || !parsed.api_base) {
55
63
  return null;
56
64
  }
57
- return parsed;
58
65
  }
59
66
  catch {
60
67
  return null;
61
68
  }
69
+ // A mismatched saved login is an error, never an excuse to use another profile.
70
+ validateCredentials(parsed);
71
+ return parsed;
62
72
  }
63
73
  function saveCredentials(creds) {
74
+ validateCredentials(creds);
75
+ const CREDENTIALS_DIR = (0, environment_1.profileRoot)();
76
+ const CREDENTIALS_FILE = credentialsFile();
64
77
  if (!fs.existsSync(CREDENTIALS_DIR)) {
65
78
  fs.mkdirSync(CREDENTIALS_DIR, { mode: 0o700, recursive: true });
66
79
  }
67
80
  fs.writeFileSync(CREDENTIALS_FILE, JSON.stringify(creds, null, 2) + '\n', { mode: 0o600 });
81
+ fs.chmodSync(CREDENTIALS_DIR, 0o700);
82
+ fs.chmodSync(CREDENTIALS_FILE, 0o600);
68
83
  }
69
84
  function clearCredentials() {
85
+ const CREDENTIALS_FILE = credentialsFile();
70
86
  try {
71
87
  if (fs.existsSync(CREDENTIALS_FILE)) {
72
88
  fs.unlinkSync(CREDENTIALS_FILE);
73
89
  }
90
+ if ((0, environment_1.getEnvironment)() === 'production' && fs.existsSync(LEGACY_FILE))
91
+ fs.unlinkSync(LEGACY_FILE);
74
92
  }
75
93
  catch {
76
94
  // Ignore errors during cleanup
@@ -1 +1 @@
1
- {"version":3,"file":"credentials.js","sourceRoot":"","sources":["../../src/auth/credentials.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAsBA,wCAcC;AAED,0CASC;AAED,4CAQC;AAED,8BAGC;AAED,gCAGC;AAnED,uCAAyB;AACzB,2CAA6B;AAC7B,uCAAyB;AACzB,sCAAqC;AAgBrC,MAAM,eAAe,GAAG,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,OAAO,EAAE,EAAE,aAAa,CAAC,CAAC;AAC/D,MAAM,gBAAgB,GAAG,IAAI,CAAC,IAAI,CAAC,eAAe,EAAE,kBAAkB,CAAC,CAAC;AAExE,SAAgB,cAAc;IAC5B,IAAI,CAAC;QACH,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,gBAAgB,CAAC,EAAE,CAAC;YACrC,OAAO,IAAI,CAAC;QACd,CAAC;QACD,MAAM,GAAG,GAAG,EAAE,CAAC,YAAY,CAAC,gBAAgB,EAAE,OAAO,CAAC,CAAC;QACvD,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;QAC/B,IAAI,CAAC,MAAM,CAAC,OAAO,IAAI,CAAC,MAAM,CAAC,KAAK,IAAI,CAAC,MAAM,CAAC,QAAQ,EAAE,CAAC;YACzD,OAAO,IAAI,CAAC;QACd,CAAC;QACD,OAAO,MAAqB,CAAC;IAC/B,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,IAAI,CAAC;IACd,CAAC;AACH,CAAC;AAED,SAAgB,eAAe,CAAC,KAAkB;IAChD,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,eAAe,CAAC,EAAE,CAAC;QACpC,EAAE,CAAC,SAAS,CAAC,eAAe,EAAE,EAAE,IAAI,EAAE,KAAK,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;IAClE,CAAC;IACD,EAAE,CAAC,aAAa,CACd,gBAAgB,EAChB,IAAI,CAAC,SAAS,CAAC,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC,GAAG,IAAI,EACrC,EAAE,IAAI,EAAE,KAAK,EAAE,CAChB,CAAC;AACJ,CAAC;AAED,SAAgB,gBAAgB;IAC9B,IAAI,CAAC;QACH,IAAI,EAAE,CAAC,UAAU,CAAC,gBAAgB,CAAC,EAAE,CAAC;YACpC,EAAE,CAAC,UAAU,CAAC,gBAAgB,CAAC,CAAC;QAClC,CAAC;IACH,CAAC;IAAC,MAAM,CAAC;QACP,+BAA+B;IACjC,CAAC;AACH,CAAC;AAED,SAAgB,SAAS;IACvB,MAAM,KAAK,GAAG,cAAc,EAAE,CAAC;IAC/B,OAAO,KAAK,EAAE,OAAO,IAAI,IAAI,CAAC;AAChC,CAAC;AAED,SAAgB,UAAU;IACxB,MAAM,KAAK,GAAG,cAAc,EAAE,CAAC;IAC/B,OAAO,KAAK,EAAE,QAAQ,IAAI,iBAAQ,CAAC;AACrC,CAAC"}
1
+ {"version":3,"file":"credentials.js","sourceRoot":"","sources":["../../src/auth/credentials.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"oauth-server.d.ts","sourceRoot":"","sources":["../../src/auth/oauth-server.ts"],"names":[],"mappings":"AAUA,UAAU,WAAW;IACnB,OAAO,EAAE,MAAM,CAAC;IAChB,KAAK,EAAE,MAAM,CAAC;IACd,QAAQ,EAAE,MAAM,CAAC;IACjB,UAAU,CAAC,EAAE,OAAO,GAAG,MAAM,CAAC;IAC9B,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,cAAc,CAAC,EAAE,MAAM,CAAC;CACzB;AAED;;;;;;GAMG;AACH,wBAAsB,YAAY,CAChC,OAAO,EAAE,MAAM,EACf,cAAc,CAAC,EAAE,MAAM,GACtB,OAAO,CAAC,WAAW,CAAC,CAkItB"}
1
+ {"version":3,"file":"oauth-server.d.ts","sourceRoot":"","sources":["../../src/auth/oauth-server.ts"],"names":[],"mappings":"AAWA,UAAU,WAAW;IACnB,OAAO,EAAE,MAAM,CAAC;IAChB,KAAK,EAAE,MAAM,CAAC;IACd,QAAQ,EAAE,MAAM,CAAC;IACjB,UAAU,CAAC,EAAE,OAAO,GAAG,MAAM,CAAC;IAC9B,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,cAAc,CAAC,EAAE,MAAM,CAAC;CACzB;AAED;;;;;;GAMG;AACH,wBAAsB,YAAY,CAChC,OAAO,EAAE,MAAM,EACf,cAAc,CAAC,EAAE,MAAM,GACtB,OAAO,CAAC,WAAW,CAAC,CA+ItB"}
@@ -43,6 +43,7 @@ const open_1 = __importDefault(require("open"));
43
43
  const credentials_1 = require("./credentials");
44
44
  const logger = __importStar(require("../utils/logger"));
45
45
  const config_1 = require("../config");
46
+ const environment_1 = require("../environment");
46
47
  const OAUTH_TIMEOUT_MS = 120_000;
47
48
  /**
48
49
  * @param attributionRef Referral or marketing code (from `--ref`). Forwarded to
@@ -66,6 +67,7 @@ async function runOAuthFlow(apiBase, attributionRef) {
66
67
  const scopeType = url.searchParams.get('scope_type');
67
68
  const defaultAgentId = url.searchParams.get('default_agent_id');
68
69
  const mcpServerUrl = url.searchParams.get('mcp_server_url');
70
+ const returnedApiBase = url.searchParams.get('api_base');
69
71
  const returnedState = url.searchParams.get('state');
70
72
  if (returnedState !== state) {
71
73
  res.writeHead(400, { 'Content-Type': 'text/html' });
@@ -81,12 +83,26 @@ async function runOAuthFlow(apiBase, attributionRef) {
81
83
  api_key: token,
82
84
  email,
83
85
  agent_id: agentId,
84
- api_base: apiBase,
86
+ api_base: returnedApiBase || apiBase,
85
87
  ...(scopeType ? { scope_type: scopeType } : {}),
86
88
  ...(defaultAgentId ? { default_agent_id: defaultAgentId } : {}),
87
89
  ...(mcpServerUrl ? { mcp_server_url: mcpServerUrl } : {}),
88
90
  };
89
- (0, credentials_1.saveCredentials)(creds);
91
+ try {
92
+ if ((0, environment_1.getEnvironment)() === 'staging' && (!returnedApiBase || new URL(returnedApiBase).origin !== new URL(apiBase).origin))
93
+ throw new Error('The login callback did not confirm the staging API');
94
+ (0, credentials_1.validateCredentials)(creds);
95
+ (0, credentials_1.saveCredentials)(creds);
96
+ }
97
+ catch (error) {
98
+ res.writeHead(400, { 'Content-Type': 'text/plain' });
99
+ res.end('Connection did not match the selected GooseWorks environment.');
100
+ setTimeout(cleanup, 100);
101
+ process.removeListener('SIGINT', cleanup);
102
+ process.removeListener('SIGTERM', cleanup);
103
+ reject(error);
104
+ return;
105
+ }
90
106
  clearTimeout(timeout);
91
107
  process.removeListener('SIGINT', cleanup);
92
108
  process.removeListener('SIGTERM', cleanup);
@@ -1 +1 @@
1
- {"version":3,"file":"oauth-server.js","sourceRoot":"","sources":["../../src/auth/oauth-server.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"oauth-server.js","sourceRoot":"","sources":["../../src/auth/oauth-server.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"doctor.d.ts","sourceRoot":"","sources":["../../src/commands/doctor.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AA2CpC,MAAM,WAAW,WAAW;IAC1B,EAAE,EAAE,OAAO,GAAG,KAAK,GAAG,MAAM,GAAG,QAAQ,GAAG,SAAS,GAAG,UAAU,CAAC;IACjE,KAAK,EAAE,MAAM,CAAC;IACd,EAAE,EAAE,OAAO,CAAC;IACZ,wCAAwC;IACxC,GAAG,EAAE,MAAM,CAAC;IACZ,+DAA+D;IAC/D,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,gEAAgE;IAChE,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,cAAc,CAAC,EAAE,MAAM,CAAC;CACzB;AAED;;;;;GAKG;AACH,wBAAgB,eAAe,CAAC,IAAI,GAAE;IAAE,WAAW,CAAC,EAAE,OAAO,CAAC;IAAC,cAAc,CAAC,EAAE,OAAO,CAAC;IAAC,cAAc,CAAC,EAAE,MAAM,CAAA;CAAO,GAAG,WAAW,EAAE,CAsCtI;AAED;;;GAGG;AACH,wBAAgB,mBAAmB,IAAI,OAAO,CAuC7C;AAED,eAAO,MAAM,aAAa,SAAwB,CAAC"}
1
+ {"version":3,"file":"doctor.d.ts","sourceRoot":"","sources":["../../src/commands/doctor.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AA6CpC,MAAM,WAAW,WAAW;IAC1B,EAAE,EAAE,OAAO,GAAG,KAAK,GAAG,MAAM,GAAG,QAAQ,GAAG,SAAS,GAAG,UAAU,CAAC;IACjE,KAAK,EAAE,MAAM,CAAC;IACd,EAAE,EAAE,OAAO,CAAC;IACZ,wCAAwC;IACxC,GAAG,EAAE,MAAM,CAAC;IACZ,+DAA+D;IAC/D,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,gEAAgE;IAChE,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,cAAc,CAAC,EAAE,MAAM,CAAC;CACzB;AAED;;;;;GAKG;AACH,wBAAgB,eAAe,CAAC,IAAI,GAAE;IAAE,WAAW,CAAC,EAAE,OAAO,CAAC;IAAC,cAAc,CAAC,EAAE,OAAO,CAAC;IAAC,cAAc,CAAC,EAAE,MAAM,CAAA;CAAO,GAAG,WAAW,EAAE,CAsCtI;AAED;;;GAGG;AACH,wBAAgB,mBAAmB,IAAI,OAAO,CA+C7C;AAED,eAAO,MAAM,aAAa,SAAwB,CAAC"}