godot-cli 0.23.0 → 0.25.0
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.
- package/CHANGELOG.md +10 -0
- package/README.md +11 -5
- package/dist/commands/setup-mcp.js +21 -2
- package/dist/commands/setup-mcp.js.map +1 -1
- package/dist/lib/setup-mcp.d.ts +12 -0
- package/dist/lib/setup-mcp.js +153 -41
- package/dist/lib/setup-mcp.js.map +1 -1
- package/dist/lib/types.d.ts +43 -0
- package/dist/lib.d.ts +1 -1
- package/dist/utils/addon-deps.js +1 -1
- package/dist/utils/agents.d.ts +46 -2
- package/dist/utils/agents.js +172 -20
- package/dist/utils/agents.js.map +1 -1
- package/dist/utils/project-marker.js +19 -17
- package/dist/utils/project-marker.js.map +1 -1
- package/dist/utils/server-source.d.ts +1 -1
- package/dist/utils/server-source.js +1 -1
- package/package.json +2 -2
package/CHANGELOG.md
CHANGED
|
@@ -4,6 +4,16 @@ All notable changes to `godot-cli` are documented in this file.
|
|
|
4
4
|
|
|
5
5
|
## Unreleased
|
|
6
6
|
|
|
7
|
+
- **Antigravity: two config file locations.** Antigravity reads its global MCP config from
|
|
8
|
+
`~/.gemini/config/mcp_config.json` *or* `~/.gemini/antigravity/mcp_config.json` (which one differs per
|
|
9
|
+
install), so `setup-mcp antigravity` now writes the entry into **both** (creating missing files,
|
|
10
|
+
preserving every other entry), prints both paths, and fails naming the path it could not write.
|
|
11
|
+
The library result gains `configPaths`.
|
|
12
|
+
- **`setup-mcp <agent> --regenerate-key` no longer breaks the project's other agent configs.** Before
|
|
13
|
+
revoking the previous key it rewrites every other agent config whose `ai-game-developer` entry still
|
|
14
|
+
carries it (pinned or `--no-pin` URL); if any cannot be rewritten — or still holds the key anywhere
|
|
15
|
+
else — the previous key is NOT revoked and the configs are named in a warning. The library result gains `rewrittenConfigPaths`.
|
|
16
|
+
|
|
7
17
|
- **Unified machine auth (unified-machine-auth f2).** The CLI adopts
|
|
8
18
|
`@baizor/gamedev-cli-core@0.4.0`'s shared machine-auth stack; the CLI-local machine-credential
|
|
9
19
|
store copy (`src/utils/machine-credentials.ts`) is **deleted** — cli-core is the only TS store
|
package/README.md
CHANGED
|
@@ -90,7 +90,7 @@ npx godot-cli install-plugin /path/to/godot/project
|
|
|
90
90
|
| `status [path]` | Detect a running Godot editor for the project and probe MCP-server health. |
|
|
91
91
|
| `wait-for-ready [path]` | Poll the MCP server until it answers `ping`. |
|
|
92
92
|
| `login [path]` | Authenticate with the ai-game.dev cloud via the OAuth 2.1 device-authorization flow (RFC 8628) — opens a browser, then saves a cloud credential to the shared machine store (`~/.ai-game-dev/credentials.json`) the editor plugin auto-adopts. See the `login` section below for its `--project` / `--base-url` / `--force` / `--tools-only` / `--yes` flags. |
|
|
93
|
-
| `setup-mcp <agent> [path]` | Write the agent's MCP-client config pointing at the project-pinned `<host>/mcp/p/<pin>` URL (so the agent routes to *this* project's editor). Add `--no-pin` for the bare `<host>/mcp` URL. |
|
|
93
|
+
| `setup-mcp <agent> [path]` | Write the agent's MCP-client config pointing at the project-pinned `<host>/mcp/p/<pin>` URL (so the agent routes to *this* project's editor). In Cloud mode the config carries this project's key (`Authorization: Bearer agd_pk_…`). Add `--no-pin` for the bare `<host>/mcp` URL, `--oauth` for a URL-only config, `--regenerate-key` to replace the key. |
|
|
94
94
|
| `setup-skills <agent> [path]` | Generate Godot-MCP skill files (a `SKILL.md`-per-tool-family) under the agent's skills path. `--list` shows each agent's skills support. |
|
|
95
95
|
| `configure [path]` | List / enable / disable tools, prompts, and resources in the project-local `.godot-mcp/features.json`. |
|
|
96
96
|
| `close [path]` | Gracefully stop the Godot editor running for a project (`--force` to hard-kill). |
|
|
@@ -331,12 +331,18 @@ generate its skill files). Use `--list` on either command to see every supported
|
|
|
331
331
|
godot-cli setup-mcp --list # list every supported agent id
|
|
332
332
|
godot-cli setup-mcp claude-code ./MyGame # write the agent's MCP client config (pinned to this project)
|
|
333
333
|
godot-cli setup-mcp claude-code ./MyGame --no-pin # write the bare, unpinned <host>/mcp URL instead
|
|
334
|
+
godot-cli setup-mcp claude-code ./MyGame --oauth # URL-only: the agent signs in with its own OAuth
|
|
335
|
+
godot-cli setup-mcp claude-code ./MyGame --regenerate-key # new project key; the old one is revoked
|
|
334
336
|
```
|
|
335
337
|
|
|
336
|
-
|
|
337
|
-
|
|
338
|
-
|
|
339
|
-
|
|
338
|
+
In Cloud mode `setup-mcp` writes a **project key** into the agent config for every agent:
|
|
339
|
+
`Authorization: Bearer agd_pk_…` (Codex: `http_headers`). A project key never expires, is bound to this
|
|
340
|
+
project's pin (it cannot reach any other project on your account), and is created once per project with
|
|
341
|
+
your machine sign-in (`godot-cli login`), then reused from `~/.ai-game-dev/project-keys.json`.
|
|
342
|
+
`--regenerate-key` replaces it and revokes the old one. Without a machine sign-in (or while the server cannot
|
|
343
|
+
issue keys) the config is URL-only and the agent authenticates with its own OAuth; `--oauth` asks for that
|
|
344
|
+
URL-only config explicitly. An explicit `--token` always wins. A local server config (`--url
|
|
345
|
+
http://localhost:…`) never carries a project key.
|
|
340
346
|
|
|
341
347
|
> For the full Godot-MCP project documentation, see the
|
|
342
348
|
> [main README](https://github.com/IvanMurzak/Godot-MCP/blob/main/README.md). Backed by
|
|
@@ -3,6 +3,17 @@ import * as ui from '../utils/ui.js';
|
|
|
3
3
|
import { verbose } from '../utils/ui.js';
|
|
4
4
|
import { getAgentById, getAgentIds, listAgentTable, MCP_SERVER_NAME } from '../utils/agents.js';
|
|
5
5
|
import { setupMcp } from '../lib/setup-mcp.js';
|
|
6
|
+
/** Human description of the credential a written config carries. */
|
|
7
|
+
function describeCredential(result) {
|
|
8
|
+
switch (result.credential) {
|
|
9
|
+
case 'project-key':
|
|
10
|
+
return `project key (${result.projectKeySource === 'minted' ? 'newly created' : 'reused'})`;
|
|
11
|
+
case 'token':
|
|
12
|
+
return 'access token (--token)';
|
|
13
|
+
default:
|
|
14
|
+
return 'none (URL-only; the agent signs in with its own OAuth)';
|
|
15
|
+
}
|
|
16
|
+
}
|
|
6
17
|
function listAgents() {
|
|
7
18
|
listAgentTable('Available AI Agents', 'Config Path', (a) => a.configPathDisplay);
|
|
8
19
|
}
|
|
@@ -13,6 +24,8 @@ export const setupMcpCommand = new Command('setup-mcp')
|
|
|
13
24
|
.option('--url <url>', 'MCP server host override (the <host>/mcp client URL is derived from it)')
|
|
14
25
|
.option('--token <token>', 'Auth token override (defaults to GODOT_MCP_TOKEN)')
|
|
15
26
|
.option('--no-pin', 'Write an unpinned <host>/mcp URL (default pins /p/<pin> to route to this project)')
|
|
27
|
+
.option('--oauth', 'Cloud: write a URL-only config (the agent signs in with its own OAuth) instead of the project key')
|
|
28
|
+
.option('--regenerate-key', "Cloud: mint a new project key for this project, rewrite the config, then revoke the old key")
|
|
16
29
|
.option('--list', 'List all available agent IDs')
|
|
17
30
|
.action(async (agentId, positionalPath, options) => {
|
|
18
31
|
if (options.list) {
|
|
@@ -37,6 +50,8 @@ export const setupMcpCommand = new Command('setup-mcp')
|
|
|
37
50
|
url: options.url,
|
|
38
51
|
token: options.token,
|
|
39
52
|
noPin: options.pin === false,
|
|
53
|
+
oauth: options.oauth === true,
|
|
54
|
+
regenerateKey: options.regenerateKey === true,
|
|
40
55
|
});
|
|
41
56
|
if (result.kind === 'failure') {
|
|
42
57
|
spinner.error('Failed to write config');
|
|
@@ -46,13 +61,17 @@ export const setupMcpCommand = new Command('setup-mcp')
|
|
|
46
61
|
if (positionalPath) {
|
|
47
62
|
verbose(`Project path: ${positionalPath}`);
|
|
48
63
|
}
|
|
49
|
-
verbose(`Config file: ${result.
|
|
64
|
+
verbose(`Config file(s): ${result.configPaths.join(', ')}`);
|
|
50
65
|
spinner.success(`${agent.name} configured successfully`);
|
|
51
66
|
console.log('');
|
|
52
|
-
|
|
67
|
+
for (const configPath of result.configPaths)
|
|
68
|
+
ui.label('Config file', configPath);
|
|
69
|
+
for (const configPath of result.rewrittenConfigPaths)
|
|
70
|
+
ui.label('New key also written to', configPath);
|
|
53
71
|
ui.label('Server URL', result.serverUrl);
|
|
54
72
|
ui.label('Server name', MCP_SERVER_NAME);
|
|
55
73
|
ui.label('Routing', result.pinned ? 'pinned to this project (/p/<pin>)' : 'unpinned (--no-pin)');
|
|
74
|
+
ui.label('Credential', describeCredential(result));
|
|
56
75
|
for (const warning of result.warnings) {
|
|
57
76
|
console.log('');
|
|
58
77
|
ui.warn(warning);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"setup-mcp.js","sourceRoot":"","sources":["../../src/commands/setup-mcp.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,KAAK,EAAE,MAAM,gBAAgB,CAAC;AACrC,OAAO,EAAE,OAAO,EAAE,MAAM,gBAAgB,CAAC;AACzC,OAAO,EAAE,YAAY,EAAE,WAAW,EAAE,cAAc,EAAE,eAAe,EAAE,MAAM,oBAAoB,CAAC;AAChG,OAAO,EAAE,QAAQ,EAAE,MAAM,qBAAqB,CAAC;
|
|
1
|
+
{"version":3,"file":"setup-mcp.js","sourceRoot":"","sources":["../../src/commands/setup-mcp.ts"],"names":[],"mappings":"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"}
|
package/dist/lib/setup-mcp.d.ts
CHANGED
|
@@ -33,6 +33,18 @@ export declare function shouldWriteAuthHeader(input: {
|
|
|
33
33
|
* server. Library-safe: no stdout noise, no process.exit, no throws past the
|
|
34
34
|
* public boundary.
|
|
35
35
|
*
|
|
36
|
+
* **Credential policy (project-keys contract §7, owner rulings 2026-09-23)** — mirrors cli-core's
|
|
37
|
+
* `setupMcp`:
|
|
38
|
+
* - an explicit `token` always wins (the Flow C PAT opt-in, see `shouldWriteAuthHeader`);
|
|
39
|
+
* - otherwise a **Cloud** config (a non-loopback hub URL) carries `Authorization: Bearer agd_pk_…` —
|
|
40
|
+
* a non-expiring project key strictly bound to this project's pin, reused from
|
|
41
|
+
* `~/.ai-game-dev/project-keys.json` or minted with the machine credential — for EVERY agent,
|
|
42
|
+
* through each agent's own static-header key (`headers`, Codex `http_headers`);
|
|
43
|
+
* - `oauth` opts out (URL-only, any previous header removed);
|
|
44
|
+
* - `regenerateKey` mints a fresh key, rewrites the config, then revokes the previous key;
|
|
45
|
+
* - no machine login / a failed mint ⇒ URL-only with a warning (the write itself never fails);
|
|
46
|
+
* - a local-server (loopback) config is unchanged.
|
|
47
|
+
*
|
|
36
48
|
* Writes an HTTP server entry pointing at the resolved MCP-client URL. The
|
|
37
49
|
* Godot config body shape mirrors the addon's `AgentConfigJson` / `AgentConfigPaths`
|
|
38
50
|
* conventions (`.mcp.json` under `mcpServers` for Claude Code, `.vscode/mcp.json`
|
package/dist/lib/setup-mcp.js
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import * as path from 'path';
|
|
2
|
-
import { pinUrl } from '@baizor/gamedev-cli-core';
|
|
2
|
+
import { createProjectKeyResolver, godotAdapter, ProjectKeyStore, isCloudUrl, pinUrl, toAuthServerRoot, } from '@baizor/gamedev-cli-core';
|
|
3
3
|
import { CLOUD_MCP_URL, ENV_HOST, ENV_TOKEN, MCP_HUB_PATH, } from '../utils/connection.js';
|
|
4
|
-
import { getAgentById, getAgentIds, writeJsonAgentConfig, writeTomlAgentConfig, MCP_SERVER_NAME, } from '../utils/agents.js';
|
|
4
|
+
import { getAgentById, getAgentConfigPaths, getAgentIds, httpHeadersKeyOf, rewriteProjectKeyInAgentConfigs, writeJsonAgentConfig, writeTomlAgentConfig, MCP_SERVER_NAME, } from '../utils/agents.js';
|
|
5
5
|
import { derivePinV2 } from '../utils/project-identity.js';
|
|
6
6
|
import { emitProgress } from './progress.js';
|
|
7
7
|
import { requireExistingPath } from './validation.js';
|
|
@@ -65,16 +65,23 @@ export function shouldWriteAuthHeader(input) {
|
|
|
65
65
|
return true;
|
|
66
66
|
return input.explicitToken;
|
|
67
67
|
}
|
|
68
|
-
/** True when `configPath` resolves inside `projectPath` (a project-scoped, likely VCS-tracked file). */
|
|
69
|
-
function isInsideProject(projectPath, configPath) {
|
|
70
|
-
const rel = path.relative(projectPath, configPath);
|
|
71
|
-
return rel.length > 0 && !rel.startsWith('..') && !path.isAbsolute(rel);
|
|
72
|
-
}
|
|
73
68
|
/**
|
|
74
69
|
* Write MCP configuration for the given AI agent so it can talk to a Godot-MCP
|
|
75
70
|
* server. Library-safe: no stdout noise, no process.exit, no throws past the
|
|
76
71
|
* public boundary.
|
|
77
72
|
*
|
|
73
|
+
* **Credential policy (project-keys contract §7, owner rulings 2026-09-23)** — mirrors cli-core's
|
|
74
|
+
* `setupMcp`:
|
|
75
|
+
* - an explicit `token` always wins (the Flow C PAT opt-in, see `shouldWriteAuthHeader`);
|
|
76
|
+
* - otherwise a **Cloud** config (a non-loopback hub URL) carries `Authorization: Bearer agd_pk_…` —
|
|
77
|
+
* a non-expiring project key strictly bound to this project's pin, reused from
|
|
78
|
+
* `~/.ai-game-dev/project-keys.json` or minted with the machine credential — for EVERY agent,
|
|
79
|
+
* through each agent's own static-header key (`headers`, Codex `http_headers`);
|
|
80
|
+
* - `oauth` opts out (URL-only, any previous header removed);
|
|
81
|
+
* - `regenerateKey` mints a fresh key, rewrites the config, then revokes the previous key;
|
|
82
|
+
* - no machine login / a failed mint ⇒ URL-only with a warning (the write itself never fails);
|
|
83
|
+
* - a local-server (loopback) config is unchanged.
|
|
84
|
+
*
|
|
78
85
|
* Writes an HTTP server entry pointing at the resolved MCP-client URL. The
|
|
79
86
|
* Godot config body shape mirrors the addon's `AgentConfigJson` / `AgentConfigPaths`
|
|
80
87
|
* conventions (`.mcp.json` under `mcpServers` for Claude Code, `.vscode/mcp.json`
|
|
@@ -126,55 +133,160 @@ export async function setupMcp(opts) {
|
|
|
126
133
|
// — decision M8).
|
|
127
134
|
const baseClientUrl = resolveMcpClientUrl(opts.url);
|
|
128
135
|
const pinned = opts.noPin !== true;
|
|
129
|
-
const
|
|
136
|
+
const pin = derivePinV2(projectPath);
|
|
137
|
+
const serverUrl = pinned ? pinUrl(baseClientUrl, pin) : baseClientUrl;
|
|
130
138
|
// A token supplied EXPLICITLY by the caller (`--token` / the library `token`
|
|
131
139
|
// arg) is a deliberate Flow C PAT opt-in; a token that is only present in the
|
|
132
140
|
// ambient `GODOT_MCP_TOKEN` env (e.g. one a prior `login` set) is NOT.
|
|
133
141
|
const explicitToken = typeof opts.token === 'string' && opts.token.length > 0;
|
|
134
|
-
const
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
}
|
|
144
|
-
|
|
142
|
+
const cloud = isCloudUrl(baseClientUrl);
|
|
143
|
+
if (opts.regenerateKey && (opts.oauth || explicitToken || !cloud)) {
|
|
144
|
+
return {
|
|
145
|
+
kind: 'failure',
|
|
146
|
+
success: false,
|
|
147
|
+
warnings,
|
|
148
|
+
error: new Error('--regenerate-key applies only to a Cloud config without --oauth / --token ' +
|
|
149
|
+
'(project keys are not used for a local server).'),
|
|
150
|
+
};
|
|
151
|
+
}
|
|
152
|
+
// Cloud default (contract §7): resolve the project key unless the caller opted out.
|
|
153
|
+
let key;
|
|
154
|
+
// Regenerate: the key being replaced, read BEFORE the resolver overwrites the cache entry, so the
|
|
155
|
+
// project's other agent configs still holding it can be carried over to the new key (see below).
|
|
156
|
+
let previousKey;
|
|
157
|
+
if (cloud && !explicitToken && !opts.oauth) {
|
|
158
|
+
const issuer = toAuthServerRoot(baseClientUrl);
|
|
159
|
+
if (opts.regenerateKey) {
|
|
160
|
+
const lookup = opts.previousProjectKey ?? ((i, p) => new ProjectKeyStore().get(i, p)?.key);
|
|
161
|
+
previousKey = lookup(issuer, pin);
|
|
162
|
+
}
|
|
163
|
+
const resolver = opts.projectKeyResolver ?? createProjectKeyResolver(godotAdapter);
|
|
164
|
+
const outcome = await resolver({
|
|
165
|
+
issuer,
|
|
166
|
+
pin,
|
|
167
|
+
engine: 'godot',
|
|
168
|
+
label: projectPath,
|
|
169
|
+
machineName: opts.machineName,
|
|
170
|
+
regenerate: opts.regenerateKey === true,
|
|
171
|
+
});
|
|
172
|
+
if (outcome.kind === 'ok') {
|
|
173
|
+
key = outcome;
|
|
174
|
+
warnings.push(...outcome.warnings);
|
|
175
|
+
}
|
|
176
|
+
else if (opts.regenerateKey) {
|
|
177
|
+
return {
|
|
178
|
+
kind: 'failure',
|
|
179
|
+
success: false,
|
|
180
|
+
warnings,
|
|
181
|
+
error: new Error(`Could not regenerate the project key: ${outcome.reason}`),
|
|
182
|
+
};
|
|
183
|
+
}
|
|
184
|
+
else {
|
|
185
|
+
warnings.push(`No project key written (${outcome.reason}) — the config is URL-only and the agent must sign in with its own OAuth. ` +
|
|
186
|
+
'Sign in on this machine (`godot-cli login`) and run setup-mcp again to write a project key.');
|
|
187
|
+
}
|
|
188
|
+
}
|
|
189
|
+
// OAuth-aware header gate (design D11 / auth Flow A & C): without a project key, OAuth-capable
|
|
190
|
+
// clients get a credential-free, URL-only config so their native RFC 9728 OAuth runs; a static
|
|
191
|
+
// Authorization header is written only for a non-OAuth client or an explicit PAT opt-in. A
|
|
192
|
+
// project key is written for every agent.
|
|
193
|
+
const token = key?.key ?? opts.token ?? normalizeEnv(process.env[ENV_TOKEN]) ?? '';
|
|
194
|
+
const authRequired = key !== undefined ||
|
|
195
|
+
shouldWriteAuthHeader({
|
|
196
|
+
hasToken: token.length > 0,
|
|
197
|
+
explicitToken,
|
|
198
|
+
supportsOAuth: agent.supportsOAuth,
|
|
199
|
+
});
|
|
200
|
+
const configPaths = getAgentConfigPaths(agent, projectPath);
|
|
145
201
|
const props = agent.getHttpProps(serverUrl, token, authRequired);
|
|
146
|
-
//
|
|
147
|
-
//
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
//
|
|
152
|
-
//
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
|
|
202
|
+
// Gate on whether a static header was ACTUALLY emitted into `props` (an agent whose format lacks
|
|
203
|
+
// one writes none).
|
|
204
|
+
const headersKey = httpHeadersKeyOf(agent);
|
|
205
|
+
const wroteAuthHeader = Boolean(props[headersKey]);
|
|
206
|
+
const credential = !wroteAuthHeader ? 'none' : key ? 'project-key' : 'token';
|
|
207
|
+
// A config written without a header must not keep a stale one: in Cloud (--oauth, no login, failed
|
|
208
|
+
// mint) it would suppress the client's native OAuth, and re-pointing an entry at a local server must
|
|
209
|
+
// not carry the Cloud project key along.
|
|
210
|
+
const removeKeys = wroteAuthHeader ? agent.httpRemoveKeys : [...agent.httpRemoveKeys, headersKey];
|
|
211
|
+
// Write EVERY config file of the agent (Antigravity has two). One failing must not pass silently,
|
|
212
|
+
// and must not stop the others: each is attempted, then the failures are reported by path.
|
|
213
|
+
const write = agent.configFormat === 'toml' ? writeTomlAgentConfig : writeJsonAgentConfig;
|
|
214
|
+
const written = [];
|
|
215
|
+
const failedWrites = [];
|
|
216
|
+
for (const configPath of configPaths) {
|
|
217
|
+
try {
|
|
218
|
+
write(configPath, agent.bodyPath, MCP_SERVER_NAME, props, removeKeys);
|
|
219
|
+
written.push(configPath);
|
|
220
|
+
emitProgress(opts.onProgress, {
|
|
221
|
+
phase: 'manifest-patched',
|
|
222
|
+
message: `Wrote ${configPath}`,
|
|
223
|
+
manifestPath: configPath,
|
|
224
|
+
});
|
|
225
|
+
}
|
|
226
|
+
catch (err) {
|
|
227
|
+
failedWrites.push(`${configPath} (${err instanceof Error ? err.message : String(err)})`);
|
|
228
|
+
}
|
|
158
229
|
}
|
|
159
|
-
if (
|
|
160
|
-
|
|
230
|
+
if (failedWrites.length > 0) {
|
|
231
|
+
// The previous key (on a regenerate) is NOT revoked: a config still holds it.
|
|
232
|
+
return {
|
|
233
|
+
kind: 'failure',
|
|
234
|
+
success: false,
|
|
235
|
+
warnings,
|
|
236
|
+
error: new Error(`Could not write ${agent.name} config: ${failedWrites.join('; ')}.` +
|
|
237
|
+
(written.length > 0 ? ` Written: ${written.join(', ')}.` : '') +
|
|
238
|
+
// The new key is already cached, so a later --regenerate-key replaces IT, never this one.
|
|
239
|
+
(key?.revokePrevious
|
|
240
|
+
? ' The previous project key was NOT revoked; once the config is fixed, re-run setup-mcp ' +
|
|
241
|
+
'without --regenerate-key and revoke the previous key from your account page.'
|
|
242
|
+
: '')),
|
|
243
|
+
};
|
|
161
244
|
}
|
|
162
|
-
|
|
163
|
-
|
|
245
|
+
// Regenerate: the other agent configs that still carry the previous key (pinned or `--no-pin` URL —
|
|
246
|
+
// the key is this project's, whatever URL it sits next to) would break the moment it is revoked (only
|
|
247
|
+
// a regenerate that replaced this account's cached key revokes — `revokePrevious`) — carry the new key into them first. Revoke
|
|
248
|
+
// only when every one of them was rewritten; otherwise keep the old key alive and say which failed.
|
|
249
|
+
const rewrite = key?.revokePrevious && previousKey && previousKey !== key.key
|
|
250
|
+
? rewriteProjectKeyInAgentConfigs({
|
|
251
|
+
projectPath,
|
|
252
|
+
oldKey: previousKey,
|
|
253
|
+
newKey: key.key,
|
|
254
|
+
skipPaths: written,
|
|
255
|
+
})
|
|
256
|
+
: undefined;
|
|
257
|
+
const revokeBlocked = (rewrite?.failed.length ?? 0) > 0;
|
|
258
|
+
if (rewrite && revokeBlocked) {
|
|
259
|
+
// Not "run --regenerate-key again": the new key is already cached, so a second regenerate would
|
|
260
|
+
// treat IT as the previous key and never revoke (or rewrite configs still holding) this one.
|
|
261
|
+
warnings.push('These agent configs may still carry the previous project key and could not be rewritten, so the previous key ' +
|
|
262
|
+
'was NOT revoked (fix them, re-run setup-mcp for their agent to write the new key, then revoke the ' +
|
|
263
|
+
`previous key from your account page): ${rewrite.failed.map((f) => `${f.path} (${f.reason})`).join('; ')}.`);
|
|
264
|
+
}
|
|
265
|
+
// Regenerate (§7): only once the new key is cached AND the configs rewritten, revoke the old one.
|
|
266
|
+
// A revoke failure is reported, never fatal.
|
|
267
|
+
if (key?.revokePrevious && !revokeBlocked) {
|
|
268
|
+
try {
|
|
269
|
+
const revokeWarning = await key.revokePrevious();
|
|
270
|
+
if (revokeWarning)
|
|
271
|
+
warnings.push(revokeWarning);
|
|
272
|
+
}
|
|
273
|
+
catch (err) {
|
|
274
|
+
warnings.push(`Revoking the previous project key failed (${err instanceof Error ? err.message : String(err)}).`);
|
|
275
|
+
}
|
|
164
276
|
}
|
|
165
|
-
emitProgress(opts.onProgress, {
|
|
166
|
-
phase: 'manifest-patched',
|
|
167
|
-
message: `Wrote ${configPath}`,
|
|
168
|
-
manifestPath: configPath,
|
|
169
|
-
});
|
|
170
277
|
emitProgress(opts.onProgress, { phase: 'done', message: `${agent.name} configured successfully.` });
|
|
171
278
|
return {
|
|
172
279
|
kind: 'success',
|
|
173
280
|
success: true,
|
|
174
281
|
agentId: agent.id,
|
|
175
|
-
configPath,
|
|
282
|
+
configPath: written[0],
|
|
283
|
+
configPaths: written,
|
|
284
|
+
rewrittenConfigPaths: rewrite?.rewritten ?? [],
|
|
176
285
|
serverUrl,
|
|
177
286
|
pinned,
|
|
287
|
+
credential,
|
|
288
|
+
projectKeyId: key?.keyId,
|
|
289
|
+
projectKeySource: key?.source,
|
|
178
290
|
warnings,
|
|
179
291
|
};
|
|
180
292
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"setup-mcp.js","sourceRoot":"","sources":["../../src/lib/setup-mcp.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,IAAI,MAAM,MAAM,CAAC;AAC7B,OAAO,
|
|
1
|
+
{"version":3,"file":"setup-mcp.js","sourceRoot":"","sources":["../../src/lib/setup-mcp.ts"],"names":[],"mappings":"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"}
|
package/dist/lib/types.d.ts
CHANGED
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import type { ProjectKeyResolver } from '@baizor/gamedev-cli-core';
|
|
1
2
|
import type { ExtensionDescriptor } from '../utils/extensions-catalog.js';
|
|
2
3
|
/**
|
|
3
4
|
* Discriminated union describing every progress event the library can emit to
|
|
@@ -106,17 +107,59 @@ export interface SetupMcpOptions {
|
|
|
106
107
|
* this project's engine instance. Set `true` to write the unpinned `<base>/mcp` URL instead.
|
|
107
108
|
*/
|
|
108
109
|
noPin?: boolean;
|
|
110
|
+
/**
|
|
111
|
+
* `--oauth`: write a URL-only Cloud config (the client authorizes natively, RFC 9728) instead of the
|
|
112
|
+
* default project-key header, removing any previously written `Authorization` header.
|
|
113
|
+
*/
|
|
114
|
+
oauth?: boolean;
|
|
115
|
+
/**
|
|
116
|
+
* `--regenerate-key`: mint a fresh project key for this project (overwriting the cached one),
|
|
117
|
+
* rewrite the config, then revoke the previous key. Cloud http configs only; fails with `oauth` /
|
|
118
|
+
* an explicit `token` / a local-server URL.
|
|
119
|
+
*/
|
|
120
|
+
regenerateKey?: boolean;
|
|
121
|
+
/** Display machine name recorded on a minted project key; defaults to `os.hostname()`. */
|
|
122
|
+
machineName?: string;
|
|
123
|
+
/**
|
|
124
|
+
* Resolves the Cloud project key. Defaults to cli-core's `createProjectKeyResolver(godotAdapter)`
|
|
125
|
+
* over the machine credential store; injectable for tests and for callers that own a credential
|
|
126
|
+
* provider already.
|
|
127
|
+
*/
|
|
128
|
+
projectKeyResolver?: ProjectKeyResolver;
|
|
129
|
+
/**
|
|
130
|
+
* `--regenerate-key` only: returns the cached project key being replaced for `(issuer, pin)`, read
|
|
131
|
+
* before the resolver overwrites it, so the project's other agent configs still holding it are
|
|
132
|
+
* rewritten to the new key before it is revoked. Defaults to cli-core's `ProjectKeyStore` (the
|
|
133
|
+
* `~/.ai-game-dev/project-keys.json` cache the default resolver writes); injectable for tests.
|
|
134
|
+
*/
|
|
135
|
+
previousProjectKey?: (issuer: string, pin: string) => string | undefined;
|
|
109
136
|
onProgress?: ProgressCallback;
|
|
110
137
|
}
|
|
138
|
+
/** The credential a written config carries: an explicit PAT, a Cloud project key, or none (URL-only). */
|
|
139
|
+
export type SetupMcpCredential = 'token' | 'project-key' | 'none';
|
|
111
140
|
export interface SetupMcpSuccess {
|
|
112
141
|
kind: 'success';
|
|
113
142
|
success: true;
|
|
114
143
|
agentId: string;
|
|
144
|
+
/** The (primary) config file written — `configPaths[0]`. */
|
|
115
145
|
configPath: string;
|
|
146
|
+
/** Every config file written (Antigravity writes two: `~/.gemini/config/` and `~/.gemini/antigravity/`). */
|
|
147
|
+
configPaths: string[];
|
|
148
|
+
/**
|
|
149
|
+
* `--regenerate-key` only: the OTHER agent configs of this project that carried the previous key and
|
|
150
|
+
* now carry the new one (rewritten before the previous key is revoked). Empty otherwise.
|
|
151
|
+
*/
|
|
152
|
+
rewrittenConfigPaths: string[];
|
|
116
153
|
/** The MCP-client URL written to the config — pinned (`…/mcp/p/<pin-v2>`) unless `noPin`. */
|
|
117
154
|
serverUrl: string;
|
|
118
155
|
/** True when the URL carries the `/p/<pin-v2>` routing segment (the default; false with `--no-pin`). */
|
|
119
156
|
pinned: boolean;
|
|
157
|
+
/** Which credential the written config carries. */
|
|
158
|
+
credential: SetupMcpCredential;
|
|
159
|
+
/** The server-side id of the project key written (credential `project-key` only). */
|
|
160
|
+
projectKeyId?: string;
|
|
161
|
+
/** Whether the project key was reused from the local cache or freshly minted. */
|
|
162
|
+
projectKeySource?: 'reused' | 'minted';
|
|
120
163
|
warnings: string[];
|
|
121
164
|
}
|
|
122
165
|
export interface SetupMcpFailure {
|
package/dist/lib.d.ts
CHANGED
|
@@ -11,4 +11,4 @@ export { enrollPlugin } from './lib/enroll.js';
|
|
|
11
11
|
export { configureAgentViaServer } from './lib/configure-agent.js';
|
|
12
12
|
export { EXTENSIONS_CATALOG, findExtension, hasVersion } from './utils/extensions-catalog.js';
|
|
13
13
|
export type { ExtensionDescriptor, ExtensionTool } from './utils/extensions-catalog.js';
|
|
14
|
-
export type { ProgressEvent, ProgressCallback, ResultKind, OpenProjectOptions, OpenProjectResult, OpenProjectSuccess, OpenProjectFailure, OpenProjectAuthOption, OpenProjectConnectionMode, BuildProjectOptions, BuildProjectResult, BuildProjectSuccess, BuildProjectFailure, BuildSkipReason, CreateProjectOptions, CreateProjectResult, CreateProjectSuccess, CreateProjectFailure, RunToolOptions, RunToolResult, RunToolSuccess, RunToolFailure, RunToolFailureReason, RunSystemToolOptions, RunSystemToolResult, RunSystemToolSuccess, RunSystemToolFailure, SetupMcpOptions, SetupMcpResult, SetupMcpSuccess, SetupMcpFailure, SetupSkillsOptions, SetupSkillsResult, SetupSkillsSuccess, SetupSkillsFailure, InstallPluginOptions, InstallPluginResult, InstallPluginSuccess, InstallPluginFailure, AddonMaterializeOutcome, CsprojPatchOutcome, RemovePluginOptions, RemovePluginResult, RemovePluginSuccess, RemovePluginFailure, InstallExtensionOptions, InstallExtensionResult, InstallExtensionSuccess, InstallExtensionFailure, ExtensionInstallOutcome, InstallServerOptions, InstallServerResult, InstallServerSuccess, InstallServerFailure, EnrollPluginOptions, EnrollPluginResult, EnrollPluginSuccess, EnrollPluginFailure, ConfigureAgentOptions, ConfigureAgentResult, ConfigureAgentSuccess, ConfigureAgentFailure, } from './lib/types.js';
|
|
14
|
+
export type { ProgressEvent, ProgressCallback, ResultKind, OpenProjectOptions, OpenProjectResult, OpenProjectSuccess, OpenProjectFailure, OpenProjectAuthOption, OpenProjectConnectionMode, BuildProjectOptions, BuildProjectResult, BuildProjectSuccess, BuildProjectFailure, BuildSkipReason, CreateProjectOptions, CreateProjectResult, CreateProjectSuccess, CreateProjectFailure, RunToolOptions, RunToolResult, RunToolSuccess, RunToolFailure, RunToolFailureReason, RunSystemToolOptions, RunSystemToolResult, RunSystemToolSuccess, RunSystemToolFailure, SetupMcpOptions, SetupMcpResult, SetupMcpCredential, SetupMcpSuccess, SetupMcpFailure, SetupSkillsOptions, SetupSkillsResult, SetupSkillsSuccess, SetupSkillsFailure, InstallPluginOptions, InstallPluginResult, InstallPluginSuccess, InstallPluginFailure, AddonMaterializeOutcome, CsprojPatchOutcome, RemovePluginOptions, RemovePluginResult, RemovePluginSuccess, RemovePluginFailure, InstallExtensionOptions, InstallExtensionResult, InstallExtensionSuccess, InstallExtensionFailure, ExtensionInstallOutcome, InstallServerOptions, InstallServerResult, InstallServerSuccess, InstallServerFailure, EnrollPluginOptions, EnrollPluginResult, EnrollPluginSuccess, EnrollPluginFailure, ConfigureAgentOptions, ConfigureAgentResult, ConfigureAgentSuccess, ConfigureAgentFailure, } from './lib/types.js';
|
package/dist/utils/addon-deps.js
CHANGED
|
@@ -20,7 +20,7 @@
|
|
|
20
20
|
*/
|
|
21
21
|
export const ADDON_PACKAGE_REFERENCES = [
|
|
22
22
|
{ id: 'com.IvanMurzak.ReflectorNet', version: '5.4.1' },
|
|
23
|
-
{ id: 'com.IvanMurzak.McpPlugin', version: '8.
|
|
23
|
+
{ id: 'com.IvanMurzak.McpPlugin', version: '8.6.0' },
|
|
24
24
|
];
|
|
25
25
|
/**
|
|
26
26
|
* The exact `<EmbeddedResource>`s the consumer's project `.csproj` needs, single-sourced
|
package/dist/utils/agents.d.ts
CHANGED
|
@@ -42,13 +42,28 @@ export interface AgentDefinition {
|
|
|
42
42
|
* token against a required-auth (typically self-hosted) endpoint (Flow C).
|
|
43
43
|
*/
|
|
44
44
|
supportsOAuth: boolean;
|
|
45
|
-
/** Resolve the absolute config-file path for a given project root. */
|
|
45
|
+
/** Resolve the absolute (primary) config-file path for a given project root. */
|
|
46
46
|
getConfigPath(projectPath: string): string;
|
|
47
|
+
/**
|
|
48
|
+
* Every config file the entry lives in, when the agent has more than one (Antigravity reads either
|
|
49
|
+
* `~/.gemini/config/mcp_config.json` or `~/.gemini/antigravity/mcp_config.json`, unpredictably per
|
|
50
|
+
* install, so both are written). Absent ⇒ just {@link getConfigPath}. Use {@link getAgentConfigPaths}.
|
|
51
|
+
*/
|
|
52
|
+
getConfigPaths?(projectPath: string): string[];
|
|
47
53
|
/** Build the HTTP server entry written under `bodyPath[MCP_SERVER_NAME]`. */
|
|
48
54
|
getHttpProps(url: string, token: string, authRequired: boolean): Record<string, unknown>;
|
|
49
55
|
/** Keys to delete from a pre-existing entry before merging new props. */
|
|
50
56
|
httpRemoveKeys: string[];
|
|
57
|
+
/**
|
|
58
|
+
* The entry key holding static http headers, when it is not `headers` (Codex: `http_headers`). Used to
|
|
59
|
+
* detect a written `Authorization` header and to clear a stale one from a URL-only Cloud config.
|
|
60
|
+
*/
|
|
61
|
+
httpHeadersKey?: string;
|
|
51
62
|
}
|
|
63
|
+
/** Every config file `agent`'s entry is written to / read from / removed from, primary first. */
|
|
64
|
+
export declare function getAgentConfigPaths(agent: AgentDefinition, projectPath: string): string[];
|
|
65
|
+
/** The entry key an agent's static http headers live under (`headers` unless the agent overrides it). */
|
|
66
|
+
export declare function httpHeadersKeyOf(agent: AgentDefinition): string;
|
|
52
67
|
declare const MCP_SERVER_NAME = "ai-game-developer";
|
|
53
68
|
/**
|
|
54
69
|
* Note on the Unity-only `unity-ai` agent: the Unity CLI registry includes a
|
|
@@ -67,8 +82,37 @@ export declare function writeJsonAgentConfig(configPath: string, bodyPath: strin
|
|
|
67
82
|
* headers are preserved; the target section is replaced wholesale (so a re-run
|
|
68
83
|
* is idempotent and stale keys are dropped). Keys in `removeKeys` are never
|
|
69
84
|
* written. This is a deliberately minimal TOML emitter — Codex's config schema
|
|
70
|
-
* here is flat (string/number/bool/array scalars
|
|
85
|
+
* here is flat (string/number/bool/array scalars plus the `http_headers` inline table), so a full TOML library
|
|
71
86
|
* dependency is unwarranted.
|
|
72
87
|
*/
|
|
73
88
|
export declare function writeTomlAgentConfig(configPath: string, bodyPath: string, serverName: string, props: Record<string, unknown>, removeKeys: string[]): void;
|
|
89
|
+
/** The outcome of {@link rewriteProjectKeyInAgentConfigs}. */
|
|
90
|
+
export interface ProjectKeyRewriteReport {
|
|
91
|
+
/** Configs whose `Authorization: Bearer <old key>` now carries the new key. */
|
|
92
|
+
rewritten: string[];
|
|
93
|
+
/** Configs that carry (or may carry) the old key but could not be rewritten, with the reason. */
|
|
94
|
+
failed: {
|
|
95
|
+
path: string;
|
|
96
|
+
reason: string;
|
|
97
|
+
}[];
|
|
98
|
+
}
|
|
99
|
+
/**
|
|
100
|
+
* `setup-mcp <agent> --regenerate-key` rewrites ONE agent's config and then revokes the previous key —
|
|
101
|
+
* which would break every OTHER agent config of this project still holding it. This carries the new key
|
|
102
|
+
* into each of them first: every EXISTING config of every registered agent (all of an agent's
|
|
103
|
+
* {@link getAgentConfigPaths}) whose `ai-game-developer` entry carries a static `Authorization` header of
|
|
104
|
+
* exactly `Bearer <oldKey>` gets that header value replaced — whatever URL the entry points at (pinned, or
|
|
105
|
+
* unpinned via `--no-pin`): the key is this project's secret, so any entry holding it breaks on revoke.
|
|
106
|
+
* The other entries and fields are kept (a JSON file is re-serialized with 2-space indentation).
|
|
107
|
+
* `skipPaths` (the configs the regenerate just wrote) are left alone. A config that holds the old key but
|
|
108
|
+
* cannot be read, parsed or written — or still holds it outside that header (another entry, a renamed
|
|
109
|
+
* entry, a hand-written TOML sub-table) — is reported in `failed`, so the caller can keep the old key
|
|
110
|
+
* alive instead of revoking it. Never throws.
|
|
111
|
+
*/
|
|
112
|
+
export declare function rewriteProjectKeyInAgentConfigs(opts: {
|
|
113
|
+
projectPath: string;
|
|
114
|
+
oldKey: string;
|
|
115
|
+
newKey: string;
|
|
116
|
+
skipPaths: readonly string[];
|
|
117
|
+
}): ProjectKeyRewriteReport;
|
|
74
118
|
export { MCP_SERVER_NAME };
|
package/dist/utils/agents.js
CHANGED
|
@@ -2,6 +2,14 @@ import chalk from 'chalk';
|
|
|
2
2
|
import * as fs from 'fs';
|
|
3
3
|
import * as os from 'os';
|
|
4
4
|
import * as path from 'path';
|
|
5
|
+
/** Every config file `agent`'s entry is written to / read from / removed from, primary first. */
|
|
6
|
+
export function getAgentConfigPaths(agent, projectPath) {
|
|
7
|
+
return agent.getConfigPaths?.(projectPath) ?? [agent.getConfigPath(projectPath)];
|
|
8
|
+
}
|
|
9
|
+
/** The entry key an agent's static http headers live under (`headers` unless the agent overrides it). */
|
|
10
|
+
export function httpHeadersKeyOf(agent) {
|
|
11
|
+
return agent.httpHeadersKey ?? 'headers';
|
|
12
|
+
}
|
|
5
13
|
// ---------------------------------------------------------------------------
|
|
6
14
|
// Platform helpers
|
|
7
15
|
// ---------------------------------------------------------------------------
|
|
@@ -17,6 +25,16 @@ function isWindows() {
|
|
|
17
25
|
function isMac() {
|
|
18
26
|
return process.platform === 'darwin';
|
|
19
27
|
}
|
|
28
|
+
/**
|
|
29
|
+
* Antigravity's global MCP config lives in ONE of two places and which one is not predictable (it
|
|
30
|
+
* differs per machine/install, not per OS), so the entry is written to both. Primary first.
|
|
31
|
+
*/
|
|
32
|
+
function antigravityConfigPaths() {
|
|
33
|
+
return [
|
|
34
|
+
path.join(home(), '.gemini', 'config', 'mcp_config.json'),
|
|
35
|
+
path.join(home(), '.gemini', 'antigravity', 'mcp_config.json'),
|
|
36
|
+
];
|
|
37
|
+
}
|
|
20
38
|
/**
|
|
21
39
|
* Build the optional `headers` object for an HTTP server entry. Emits a Bearer
|
|
22
40
|
* `Authorization` header ONLY when `authRequired` is set AND a non-empty token is
|
|
@@ -33,6 +51,11 @@ function authHeaders(token, authRequired) {
|
|
|
33
51
|
}
|
|
34
52
|
return undefined;
|
|
35
53
|
}
|
|
54
|
+
/** `{ [key]: <Bearer header> }` when {@link authHeaders} emits one, else `{}` — for spreading into props. */
|
|
55
|
+
function headersProp(key, token, authRequired) {
|
|
56
|
+
const headers = authHeaders(token, authRequired);
|
|
57
|
+
return headers ? { [key]: headers } : {};
|
|
58
|
+
}
|
|
36
59
|
// ---------------------------------------------------------------------------
|
|
37
60
|
// Agent Registry
|
|
38
61
|
// ---------------------------------------------------------------------------
|
|
@@ -57,7 +80,7 @@ export const agentRegistry = [
|
|
|
57
80
|
getHttpProps: (url, token, authRequired) => ({
|
|
58
81
|
type: 'http',
|
|
59
82
|
url,
|
|
60
|
-
...(
|
|
83
|
+
...headersProp('headers', token, authRequired),
|
|
61
84
|
}),
|
|
62
85
|
httpRemoveKeys: ['command', 'args'],
|
|
63
86
|
},
|
|
@@ -82,7 +105,7 @@ export const agentRegistry = [
|
|
|
82
105
|
getHttpProps: (url, token, authRequired) => ({
|
|
83
106
|
type: 'http',
|
|
84
107
|
url,
|
|
85
|
-
...(
|
|
108
|
+
...headersProp('headers', token, authRequired),
|
|
86
109
|
}),
|
|
87
110
|
httpRemoveKeys: ['command', 'args'],
|
|
88
111
|
},
|
|
@@ -99,7 +122,7 @@ export const agentRegistry = [
|
|
|
99
122
|
getHttpProps: (url, token, authRequired) => ({
|
|
100
123
|
type: 'http',
|
|
101
124
|
url,
|
|
102
|
-
...(
|
|
125
|
+
...headersProp('headers', token, authRequired),
|
|
103
126
|
}),
|
|
104
127
|
httpRemoveKeys: ['command', 'args'],
|
|
105
128
|
},
|
|
@@ -116,7 +139,7 @@ export const agentRegistry = [
|
|
|
116
139
|
getHttpProps: (url, token, authRequired) => ({
|
|
117
140
|
type: 'http',
|
|
118
141
|
url,
|
|
119
|
-
...(
|
|
142
|
+
...headersProp('headers', token, authRequired),
|
|
120
143
|
}),
|
|
121
144
|
httpRemoveKeys: ['command', 'args'],
|
|
122
145
|
},
|
|
@@ -133,7 +156,7 @@ export const agentRegistry = [
|
|
|
133
156
|
getHttpProps: (url, token, authRequired) => ({
|
|
134
157
|
type: 'http',
|
|
135
158
|
url,
|
|
136
|
-
...(
|
|
159
|
+
...headersProp('headers', token, authRequired),
|
|
137
160
|
}),
|
|
138
161
|
httpRemoveKeys: ['command', 'args'],
|
|
139
162
|
},
|
|
@@ -151,7 +174,7 @@ export const agentRegistry = [
|
|
|
151
174
|
enabled: true,
|
|
152
175
|
type: 'http',
|
|
153
176
|
url,
|
|
154
|
-
...(
|
|
177
|
+
...headersProp('headers', token, authRequired),
|
|
155
178
|
}),
|
|
156
179
|
httpRemoveKeys: ['disabled', 'command', 'args'],
|
|
157
180
|
},
|
|
@@ -169,7 +192,7 @@ export const agentRegistry = [
|
|
|
169
192
|
type: 'http',
|
|
170
193
|
url,
|
|
171
194
|
tools: ['*'],
|
|
172
|
-
...(
|
|
195
|
+
...headersProp('headers', token, authRequired),
|
|
173
196
|
}),
|
|
174
197
|
httpRemoveKeys: ['command', 'args'],
|
|
175
198
|
},
|
|
@@ -186,7 +209,7 @@ export const agentRegistry = [
|
|
|
186
209
|
getHttpProps: (url, token, authRequired) => ({
|
|
187
210
|
type: 'http',
|
|
188
211
|
url,
|
|
189
|
-
...(
|
|
212
|
+
...headersProp('headers', token, authRequired),
|
|
190
213
|
}),
|
|
191
214
|
httpRemoveKeys: ['command', 'args'],
|
|
192
215
|
},
|
|
@@ -196,14 +219,16 @@ export const agentRegistry = [
|
|
|
196
219
|
name: 'Antigravity',
|
|
197
220
|
supportsOAuth: true,
|
|
198
221
|
skillsPath: '.agent/skills',
|
|
199
|
-
configPathDisplay: '~/.gemini/config/mcp_config.json',
|
|
222
|
+
configPathDisplay: '~/.gemini/config/mcp_config.json + ~/.gemini/antigravity/mcp_config.json',
|
|
200
223
|
configFormat: 'json',
|
|
201
224
|
bodyPath: 'mcpServers',
|
|
202
|
-
getConfigPath: () =>
|
|
203
|
-
|
|
204
|
-
|
|
225
|
+
getConfigPath: () => antigravityConfigPaths()[0],
|
|
226
|
+
getConfigPaths: () => antigravityConfigPaths(),
|
|
227
|
+
// Antigravity uses a `serverUrl` key (not `url`), a `disabled` flag, and static `headers`.
|
|
228
|
+
getHttpProps: (url, token, authRequired) => ({
|
|
205
229
|
disabled: false,
|
|
206
230
|
serverUrl: url,
|
|
231
|
+
...headersProp('headers', token, authRequired),
|
|
207
232
|
}),
|
|
208
233
|
httpRemoveKeys: ['command', 'args', 'url', 'type'],
|
|
209
234
|
},
|
|
@@ -228,7 +253,7 @@ export const agentRegistry = [
|
|
|
228
253
|
getHttpProps: (url, token, authRequired) => ({
|
|
229
254
|
type: 'streamableHttp',
|
|
230
255
|
url,
|
|
231
|
-
...(
|
|
256
|
+
...headersProp('headers', token, authRequired),
|
|
232
257
|
}),
|
|
233
258
|
httpRemoveKeys: ['command', 'args'],
|
|
234
259
|
},
|
|
@@ -246,7 +271,7 @@ export const agentRegistry = [
|
|
|
246
271
|
type: 'remote',
|
|
247
272
|
enabled: true,
|
|
248
273
|
url,
|
|
249
|
-
...(
|
|
274
|
+
...headersProp('headers', token, authRequired),
|
|
250
275
|
}),
|
|
251
276
|
httpRemoveKeys: ['command', 'args'],
|
|
252
277
|
},
|
|
@@ -260,13 +285,17 @@ export const agentRegistry = [
|
|
|
260
285
|
configFormat: 'toml',
|
|
261
286
|
bodyPath: 'mcp_servers',
|
|
262
287
|
getConfigPath: (p) => path.join(p, '.codex', 'config.toml'),
|
|
263
|
-
|
|
288
|
+
// Codex takes static http headers from the `http_headers` inline table (project-keys contract §7);
|
|
289
|
+
// the section is rewritten wholesale, so a legacy `bearer_token_env_var` never coexists with it.
|
|
290
|
+
getHttpProps: (url, token, authRequired) => ({
|
|
264
291
|
enabled: true,
|
|
265
292
|
url,
|
|
266
293
|
tool_timeout_sec: 300,
|
|
267
294
|
startup_timeout_sec: 30,
|
|
295
|
+
...headersProp('http_headers', token, authRequired),
|
|
268
296
|
}),
|
|
269
297
|
httpRemoveKeys: ['command', 'args', 'type'],
|
|
298
|
+
httpHeadersKey: 'http_headers',
|
|
270
299
|
},
|
|
271
300
|
// ── Kilo Code ───────────────────────────────────────────────
|
|
272
301
|
{
|
|
@@ -282,7 +311,7 @@ export const agentRegistry = [
|
|
|
282
311
|
type: 'streamable-http',
|
|
283
312
|
disabled: false,
|
|
284
313
|
url,
|
|
285
|
-
...(
|
|
314
|
+
...headersProp('headers', token, authRequired),
|
|
286
315
|
}),
|
|
287
316
|
httpRemoveKeys: ['command', 'args'],
|
|
288
317
|
},
|
|
@@ -299,7 +328,7 @@ export const agentRegistry = [
|
|
|
299
328
|
getHttpProps: (url, token, authRequired) => ({
|
|
300
329
|
type: 'http',
|
|
301
330
|
url,
|
|
302
|
-
...(
|
|
331
|
+
...headersProp('headers', token, authRequired),
|
|
303
332
|
}),
|
|
304
333
|
httpRemoveKeys: ['command', 'args'],
|
|
305
334
|
},
|
|
@@ -390,7 +419,7 @@ export function writeJsonAgentConfig(configPath, bodyPath, serverName, props, re
|
|
|
390
419
|
* headers are preserved; the target section is replaced wholesale (so a re-run
|
|
391
420
|
* is idempotent and stale keys are dropped). Keys in `removeKeys` are never
|
|
392
421
|
* written. This is a deliberately minimal TOML emitter — Codex's config schema
|
|
393
|
-
* here is flat (string/number/bool/array scalars
|
|
422
|
+
* here is flat (string/number/bool/array scalars plus the `http_headers` inline table), so a full TOML library
|
|
394
423
|
* dependency is unwarranted.
|
|
395
424
|
*/
|
|
396
425
|
export function writeTomlAgentConfig(configPath, bodyPath, serverName, props, removeKeys) {
|
|
@@ -404,6 +433,11 @@ export function writeTomlAgentConfig(configPath, bodyPath, serverName, props, re
|
|
|
404
433
|
lines = fs.readFileSync(configPath, 'utf-8').split('\n');
|
|
405
434
|
}
|
|
406
435
|
const sectionHeader = `[${bodyPath}.${serverName}]`;
|
|
436
|
+
// The entry is owned wholesale, so drop its sub-tables too (e.g. a hand-written
|
|
437
|
+
// `[mcp_servers.<name>.http_headers]`): leaving one beside the inline
|
|
438
|
+
// `http_headers = {…}` is a duplicate key (invalid TOML), and on a URL-only
|
|
439
|
+
// write it would keep a stale Authorization header.
|
|
440
|
+
lines = removeTomlSubTables(lines, `[${bodyPath}.${serverName}.`);
|
|
407
441
|
// Find existing section boundaries
|
|
408
442
|
const sectionIdx = lines.findIndex((l) => l.trim() === sectionHeader);
|
|
409
443
|
// Build TOML key-value pairs for the section
|
|
@@ -433,6 +467,23 @@ export function writeTomlAgentConfig(configPath, bodyPath, serverName, props, re
|
|
|
433
467
|
}
|
|
434
468
|
fs.writeFileSync(configPath, lines.join('\n') + '\n');
|
|
435
469
|
}
|
|
470
|
+
/** Remove every `[<prefix>…]` table (header line through the line before the next header). */
|
|
471
|
+
function removeTomlSubTables(lines, headerPrefix) {
|
|
472
|
+
const out = [];
|
|
473
|
+
let skipping = false;
|
|
474
|
+
for (const line of lines) {
|
|
475
|
+
const trimmed = line.trim();
|
|
476
|
+
if (trimmed.startsWith('['))
|
|
477
|
+
skipping = trimmed.startsWith(headerPrefix);
|
|
478
|
+
if (!skipping)
|
|
479
|
+
out.push(line);
|
|
480
|
+
}
|
|
481
|
+
return out;
|
|
482
|
+
}
|
|
483
|
+
/** A TOML key: bare when it is a valid bare key, else a quoted string. */
|
|
484
|
+
function tomlKey(k) {
|
|
485
|
+
return /^[A-Za-z0-9_-]+$/.test(k) ? k : tomlValue(k);
|
|
486
|
+
}
|
|
436
487
|
function tomlValue(v) {
|
|
437
488
|
if (typeof v === 'string')
|
|
438
489
|
return `"${v.replace(/\\/g, '\\\\').replace(/"/g, '\\"')}"`;
|
|
@@ -451,10 +502,111 @@ function tomlValue(v) {
|
|
|
451
502
|
if (Array.isArray(v)) {
|
|
452
503
|
return `[${v.map(tomlValue).join(', ')}]`;
|
|
453
504
|
}
|
|
454
|
-
|
|
505
|
+
if (v && typeof v === 'object') {
|
|
506
|
+
// An inline table of string values (Codex `http_headers`).
|
|
507
|
+
const pairs = Object.entries(v).map(([k, val]) => `${tomlKey(k)} = ${tomlValue(val)}`);
|
|
508
|
+
return `{ ${pairs.join(', ')} }`;
|
|
509
|
+
}
|
|
510
|
+
// null/undefined have no valid TOML scalar form here; emit a quoted
|
|
455
511
|
// string so we never produce an invalid bare token (the Codex schema only
|
|
456
|
-
// feeds string/number/bool/array scalars, so this is a defensive fallback).
|
|
512
|
+
// feeds string/number/bool/array scalars and string tables, so this is a defensive fallback).
|
|
457
513
|
return `"${String(v).replace(/\\/g, '\\\\').replace(/"/g, '\\"')}"`;
|
|
458
514
|
}
|
|
515
|
+
/**
|
|
516
|
+
* `setup-mcp <agent> --regenerate-key` rewrites ONE agent's config and then revokes the previous key —
|
|
517
|
+
* which would break every OTHER agent config of this project still holding it. This carries the new key
|
|
518
|
+
* into each of them first: every EXISTING config of every registered agent (all of an agent's
|
|
519
|
+
* {@link getAgentConfigPaths}) whose `ai-game-developer` entry carries a static `Authorization` header of
|
|
520
|
+
* exactly `Bearer <oldKey>` gets that header value replaced — whatever URL the entry points at (pinned, or
|
|
521
|
+
* unpinned via `--no-pin`): the key is this project's secret, so any entry holding it breaks on revoke.
|
|
522
|
+
* The other entries and fields are kept (a JSON file is re-serialized with 2-space indentation).
|
|
523
|
+
* `skipPaths` (the configs the regenerate just wrote) are left alone. A config that holds the old key but
|
|
524
|
+
* cannot be read, parsed or written — or still holds it outside that header (another entry, a renamed
|
|
525
|
+
* entry, a hand-written TOML sub-table) — is reported in `failed`, so the caller can keep the old key
|
|
526
|
+
* alive instead of revoking it. Never throws.
|
|
527
|
+
*/
|
|
528
|
+
export function rewriteProjectKeyInAgentConfigs(opts) {
|
|
529
|
+
const report = { rewritten: [], failed: [] };
|
|
530
|
+
const seen = new Set(opts.skipPaths.map((p) => path.resolve(p)));
|
|
531
|
+
for (const agent of agentRegistry) {
|
|
532
|
+
let paths;
|
|
533
|
+
try {
|
|
534
|
+
paths = getAgentConfigPaths(agent, opts.projectPath);
|
|
535
|
+
}
|
|
536
|
+
catch {
|
|
537
|
+
continue;
|
|
538
|
+
}
|
|
539
|
+
for (const configPath of paths) {
|
|
540
|
+
const resolved = path.resolve(configPath);
|
|
541
|
+
if (seen.has(resolved))
|
|
542
|
+
continue;
|
|
543
|
+
seen.add(resolved);
|
|
544
|
+
try {
|
|
545
|
+
let text;
|
|
546
|
+
try {
|
|
547
|
+
text = fs.readFileSync(resolved, 'utf-8');
|
|
548
|
+
}
|
|
549
|
+
catch (err) {
|
|
550
|
+
if (err.code === 'ENOENT')
|
|
551
|
+
continue;
|
|
552
|
+
throw err;
|
|
553
|
+
}
|
|
554
|
+
if (!text.includes(opts.oldKey))
|
|
555
|
+
continue;
|
|
556
|
+
const next = agent.configFormat === 'toml'
|
|
557
|
+
? rewriteKeyInToml(text, agent.bodyPath, opts)
|
|
558
|
+
: rewriteKeyInJson(text, agent.bodyPath, opts);
|
|
559
|
+
if (next !== null) {
|
|
560
|
+
fs.writeFileSync(resolved, next);
|
|
561
|
+
report.rewritten.push(resolved);
|
|
562
|
+
}
|
|
563
|
+
// The old key is still in the file outside the rewritten header — revoking it would break that use.
|
|
564
|
+
if ((next ?? text).includes(opts.oldKey)) {
|
|
565
|
+
report.failed.push({ path: resolved, reason: `holds the previous key outside its ${MCP_SERVER_NAME} Authorization header` });
|
|
566
|
+
}
|
|
567
|
+
}
|
|
568
|
+
catch (err) {
|
|
569
|
+
report.failed.push({ path: resolved, reason: err instanceof Error ? err.message : String(err) });
|
|
570
|
+
}
|
|
571
|
+
}
|
|
572
|
+
}
|
|
573
|
+
return report;
|
|
574
|
+
}
|
|
575
|
+
/** The rewritten JSON text, or null when the entry does not carry the old key in its header. Throws on bad JSON. */
|
|
576
|
+
function rewriteKeyInJson(text, bodyPath, opts) {
|
|
577
|
+
// A UTF-8 BOM (Visual Studio writes one into `.vs/mcp.json`) is not JSON — strip it before parsing.
|
|
578
|
+
const root = JSON.parse(text.replace(/^\uFEFF/, ''));
|
|
579
|
+
const entry = asRecord(asRecord(root)?.[bodyPath])?.[MCP_SERVER_NAME];
|
|
580
|
+
const record = asRecord(entry);
|
|
581
|
+
if (!record)
|
|
582
|
+
return null;
|
|
583
|
+
// JSON agents all keep static headers under `headers` (only the TOML Codex entry uses `http_headers`).
|
|
584
|
+
const headers = asRecord(record['headers']);
|
|
585
|
+
if (!headers || headers['Authorization'] !== `Bearer ${opts.oldKey}`)
|
|
586
|
+
return null;
|
|
587
|
+
headers['Authorization'] = `Bearer ${opts.newKey}`;
|
|
588
|
+
return JSON.stringify(root, null, 2) + '\n';
|
|
589
|
+
}
|
|
590
|
+
/** The rewritten Codex TOML text, or null when the section does not carry the old key in its header. */
|
|
591
|
+
function rewriteKeyInToml(text, bodyPath, opts) {
|
|
592
|
+
const lines = text.split('\n');
|
|
593
|
+
const start = lines.findIndex((l) => l.trim() === `[${bodyPath}.${MCP_SERVER_NAME}]`);
|
|
594
|
+
if (start < 0)
|
|
595
|
+
return null;
|
|
596
|
+
let end = start + 1;
|
|
597
|
+
while (end < lines.length && !lines[end].trim().startsWith('['))
|
|
598
|
+
end++;
|
|
599
|
+
const section = lines.slice(start + 1, end);
|
|
600
|
+
const oldValue = `"Bearer ${opts.oldKey}"`;
|
|
601
|
+
const headerIdx = section.findIndex((l) => /^\s*http_headers\s*=/.test(l) && l.includes(oldValue));
|
|
602
|
+
if (headerIdx < 0)
|
|
603
|
+
return null;
|
|
604
|
+
// A replacer FUNCTION, not a string: a replacement string would expand `$&`/`$'`/`$$` inside the key.
|
|
605
|
+
lines[start + 1 + headerIdx] = section[headerIdx].replace(oldValue, () => `"Bearer ${opts.newKey}"`);
|
|
606
|
+
return lines.join('\n');
|
|
607
|
+
}
|
|
608
|
+
function asRecord(value) {
|
|
609
|
+
return value && typeof value === 'object' && !Array.isArray(value) ? value : undefined;
|
|
610
|
+
}
|
|
459
611
|
export { MCP_SERVER_NAME };
|
|
460
612
|
//# sourceMappingURL=agents.js.map
|
package/dist/utils/agents.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"agents.js","sourceRoot":"","sources":["../../src/utils/agents.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"agents.js","sourceRoot":"","sources":["../../src/utils/agents.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,KAAK,EAAE,MAAM,IAAI,CAAC;AACzB,OAAO,KAAK,EAAE,MAAM,IAAI,CAAC;AACzB,OAAO,KAAK,IAAI,MAAM,MAAM,CAAC;AAqE7B,iGAAiG;AACjG,MAAM,UAAU,mBAAmB,CAAC,KAAsB,EAAE,WAAmB;IAC7E,OAAO,KAAK,CAAC,cAAc,EAAE,CAAC,WAAW,CAAC,IAAI,CAAC,KAAK,CAAC,aAAa,CAAC,WAAW,CAAC,CAAC,CAAC;AACnF,CAAC;AAED,yGAAyG;AACzG,MAAM,UAAU,gBAAgB,CAAC,KAAsB;IACrD,OAAO,KAAK,CAAC,cAAc,IAAI,SAAS,CAAC;AAC3C,CAAC;AAED,8EAA8E;AAC9E,mBAAmB;AACnB,8EAA8E;AAE9E,SAAS,OAAO;IACd,OAAO,OAAO,CAAC,GAAG,CAAC,SAAS,CAAC,IAAI,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,OAAO,EAAE,EAAE,SAAS,EAAE,SAAS,CAAC,CAAC;AACjF,CAAC;AAED,SAAS,IAAI;IACX,OAAO,EAAE,CAAC,OAAO,EAAE,CAAC;AACtB,CAAC;AAED,SAAS,SAAS;IAChB,OAAO,OAAO,CAAC,QAAQ,KAAK,OAAO,CAAC;AACtC,CAAC;AAED,SAAS,KAAK;IACZ,OAAO,OAAO,CAAC,QAAQ,KAAK,QAAQ,CAAC;AACvC,CAAC;AAED;;;GAGG;AACH,SAAS,sBAAsB;IAC7B,OAAO;QACL,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,EAAE,SAAS,EAAE,QAAQ,EAAE,iBAAiB,CAAC;QACzD,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,EAAE,SAAS,EAAE,aAAa,EAAE,iBAAiB,CAAC;KAC/D,CAAC;AACJ,CAAC;AAED;;;;;;;;;GASG;AACH,SAAS,WAAW,CAAC,KAAa,EAAE,YAAqB;IACvD,IAAI,YAAY,IAAI,KAAK,EAAE,CAAC;QAC1B,OAAO,EAAE,aAAa,EAAE,UAAU,KAAK,EAAE,EAAE,CAAC;IAC9C,CAAC;IACD,OAAO,SAAS,CAAC;AACnB,CAAC;AAED,6GAA6G;AAC7G,SAAS,WAAW,CAAC,GAAW,EAAE,KAAa,EAAE,YAAqB;IACpE,MAAM,OAAO,GAAG,WAAW,CAAC,KAAK,EAAE,YAAY,CAAC,CAAC;IACjD,OAAO,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,OAAO,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;AAC3C,CAAC;AAED,8EAA8E;AAC9E,iBAAiB;AACjB,8EAA8E;AAE9E,MAAM,eAAe,GAAG,mBAAmB,CAAC;AAE5C;;;;;GAKG;AACH,MAAM,CAAC,MAAM,aAAa,GAA+B;IACvD,gEAAgE;IAChE;QACE,EAAE,EAAE,aAAa;QACjB,IAAI,EAAE,aAAa;QACnB,aAAa,EAAE,IAAI;QACnB,UAAU,EAAE,gBAAgB;QAC5B,iBAAiB,EAAE,WAAW;QAC9B,YAAY,EAAE,MAAM;QACpB,QAAQ,EAAE,YAAY;QACtB,aAAa,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,EAAE,WAAW,CAAC;QAC/C,YAAY,EAAE,CAAC,GAAG,EAAE,KAAK,EAAE,YAAY,EAAE,EAAE,CAAC,CAAC;YAC3C,IAAI,EAAE,MAAM;YACZ,GAAG;YACH,GAAG,WAAW,CAAC,SAAS,EAAE,KAAK,EAAE,YAAY,CAAC;SAC/C,CAAC;QACF,cAAc,EAAE,CAAC,SAAS,EAAE,MAAM,CAAC;KACpC;IAED,gEAAgE;IAChE;QACE,EAAE,EAAE,gBAAgB;QACpB,IAAI,EAAE,gBAAgB;QACtB,aAAa,EAAE,IAAI;QACnB,UAAU,EAAE,IAAI;QAChB,iBAAiB,EAAE,qCAAqC;QACxD,YAAY,EAAE,MAAM;QACpB,QAAQ,EAAE,YAAY;QACtB,aAAa,EAAE,GAAG,EAAE;YAClB,IAAI,SAAS,EAAE,EAAE,CAAC;gBAChB,OAAO,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,EAAE,QAAQ,EAAE,4BAA4B,CAAC,CAAC;YACtE,CAAC;YACD,IAAI,KAAK,EAAE,EAAE,CAAC;gBACZ,OAAO,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,EAAE,SAAS,EAAE,qBAAqB,EAAE,QAAQ,EAAE,4BAA4B,CAAC,CAAC;YACrG,CAAC;YACD,OAAO,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,EAAE,SAAS,EAAE,QAAQ,EAAE,4BAA4B,CAAC,CAAC;QAC9E,CAAC;QACD,YAAY,EAAE,CAAC,GAAG,EAAE,KAAK,EAAE,YAAY,EAAE,EAAE,CAAC,CAAC;YAC3C,IAAI,EAAE,MAAM;YACZ,GAAG;YACH,GAAG,WAAW,CAAC,SAAS,EAAE,KAAK,EAAE,YAAY,CAAC;SAC/C,CAAC;QACF,cAAc,EAAE,CAAC,SAAS,EAAE,MAAM,CAAC;KACpC;IAED,gEAAgE;IAChE;QACE,EAAE,EAAE,QAAQ;QACZ,IAAI,EAAE,QAAQ;QACd,aAAa,EAAE,IAAI;QACnB,UAAU,EAAE,gBAAgB;QAC5B,iBAAiB,EAAE,kBAAkB;QACrC,YAAY,EAAE,MAAM;QACpB,QAAQ,EAAE,YAAY;QACtB,aAAa,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,EAAE,SAAS,EAAE,UAAU,CAAC;QACzD,YAAY,EAAE,CAAC,GAAG,EAAE,KAAK,EAAE,YAAY,EAAE,EAAE,CAAC,CAAC;YAC3C,IAAI,EAAE,MAAM;YACZ,GAAG;YACH,GAAG,WAAW,CAAC,SAAS,EAAE,KAAK,EAAE,YAAY,CAAC;SAC/C,CAAC;QACF,cAAc,EAAE,CAAC,SAAS,EAAE,MAAM,CAAC;KACpC;IAED,gEAAgE;IAChE;QACE,EAAE,EAAE,gBAAgB;QACpB,IAAI,EAAE,8BAA8B;QACpC,aAAa,EAAE,IAAI;QACnB,UAAU,EAAE,gBAAgB;QAC5B,iBAAiB,EAAE,kBAAkB;QACrC,YAAY,EAAE,MAAM;QACpB,QAAQ,EAAE,SAAS;QACnB,aAAa,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,EAAE,SAAS,EAAE,UAAU,CAAC;QACzD,YAAY,EAAE,CAAC,GAAG,EAAE,KAAK,EAAE,YAAY,EAAE,EAAE,CAAC,CAAC;YAC3C,IAAI,EAAE,MAAM;YACZ,GAAG;YACH,GAAG,WAAW,CAAC,SAAS,EAAE,KAAK,EAAE,YAAY,CAAC;SAC/C,CAAC;QACF,cAAc,EAAE,CAAC,SAAS,EAAE,MAAM,CAAC;KACpC;IAED,gEAAgE;IAChE;QACE,EAAE,EAAE,YAAY;QAChB,IAAI,EAAE,yBAAyB;QAC/B,aAAa,EAAE,IAAI;QACnB,UAAU,EAAE,gBAAgB;QAC5B,iBAAiB,EAAE,cAAc;QACjC,YAAY,EAAE,MAAM;QACpB,QAAQ,EAAE,SAAS;QACnB,aAAa,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,EAAE,KAAK,EAAE,UAAU,CAAC;QACrD,YAAY,EAAE,CAAC,GAAG,EAAE,KAAK,EAAE,YAAY,EAAE,EAAE,CAAC,CAAC;YAC3C,IAAI,EAAE,MAAM;YACZ,GAAG;YACH,GAAG,WAAW,CAAC,SAAS,EAAE,KAAK,EAAE,YAAY,CAAC;SAC/C,CAAC;QACF,cAAc,EAAE,CAAC,SAAS,EAAE,MAAM,CAAC;KACpC;IAED,+DAA+D;IAC/D;QACE,EAAE,EAAE,aAAa;QACjB,IAAI,EAAE,eAAe;QACrB,aAAa,EAAE,IAAI;QACnB,UAAU,EAAE,eAAe;QAC3B,iBAAiB,EAAE,qBAAqB;QACxC,YAAY,EAAE,MAAM;QACpB,QAAQ,EAAE,YAAY;QACtB,aAAa,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,EAAE,QAAQ,EAAE,KAAK,EAAE,UAAU,CAAC;QAC/D,YAAY,EAAE,CAAC,GAAG,EAAE,KAAK,EAAE,YAAY,EAAE,EAAE,CAAC,CAAC;YAC3C,OAAO,EAAE,IAAI;YACb,IAAI,EAAE,MAAM;YACZ,GAAG;YACH,GAAG,WAAW,CAAC,SAAS,EAAE,KAAK,EAAE,YAAY,CAAC;SAC/C,CAAC;QACF,cAAc,EAAE,CAAC,UAAU,EAAE,SAAS,EAAE,MAAM,CAAC;KAChD;IAED,+DAA+D;IAC/D;QACE,EAAE,EAAE,oBAAoB;QACxB,IAAI,EAAE,oBAAoB;QAC1B,aAAa,EAAE,IAAI;QACnB,UAAU,EAAE,gBAAgB;QAC5B,iBAAiB,EAAE,4BAA4B;QAC/C,YAAY,EAAE,MAAM;QACpB,QAAQ,EAAE,YAAY;QACtB,aAAa,EAAE,GAAG,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,EAAE,UAAU,EAAE,iBAAiB,CAAC;QACrE,YAAY,EAAE,CAAC,GAAG,EAAE,KAAK,EAAE,YAAY,EAAE,EAAE,CAAC,CAAC;YAC3C,IAAI,EAAE,MAAM;YACZ,GAAG;YACH,KAAK,EAAE,CAAC,GAAG,CAAC;YACZ,GAAG,WAAW,CAAC,SAAS,EAAE,KAAK,EAAE,YAAY,CAAC;SAC/C,CAAC;QACF,cAAc,EAAE,CAAC,SAAS,EAAE,MAAM,CAAC;KACpC;IAED,+DAA+D;IAC/D;QACE,EAAE,EAAE,QAAQ;QACZ,IAAI,EAAE,QAAQ;QACd,aAAa,EAAE,IAAI;QACnB,UAAU,EAAE,gBAAgB;QAC5B,iBAAiB,EAAE,uBAAuB;QAC1C,YAAY,EAAE,MAAM;QACpB,QAAQ,EAAE,YAAY;QACtB,aAAa,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,EAAE,SAAS,EAAE,eAAe,CAAC;QAC9D,YAAY,EAAE,CAAC,GAAG,EAAE,KAAK,EAAE,YAAY,EAAE,EAAE,CAAC,CAAC;YAC3C,IAAI,EAAE,MAAM;YACZ,GAAG;YACH,GAAG,WAAW,CAAC,SAAS,EAAE,KAAK,EAAE,YAAY,CAAC;SAC/C,CAAC;QACF,cAAc,EAAE,CAAC,SAAS,EAAE,MAAM,CAAC;KACpC;IAED,+DAA+D;IAC/D;QACE,EAAE,EAAE,aAAa;QACjB,IAAI,EAAE,aAAa;QACnB,aAAa,EAAE,IAAI;QACnB,UAAU,EAAE,eAAe;QAC3B,iBAAiB,EAAE,0EAA0E;QAC7F,YAAY,EAAE,MAAM;QACpB,QAAQ,EAAE,YAAY;QACtB,aAAa,EAAE,GAAG,EAAE,CAAC,sBAAsB,EAAE,CAAC,CAAC,CAAC;QAChD,cAAc,EAAE,GAAG,EAAE,CAAC,sBAAsB,EAAE;QAC9C,2FAA2F;QAC3F,YAAY,EAAE,CAAC,GAAG,EAAE,KAAK,EAAE,YAAY,EAAE,EAAE,CAAC,CAAC;YAC3C,QAAQ,EAAE,KAAK;YACf,SAAS,EAAE,GAAG;YACd,GAAG,WAAW,CAAC,SAAS,EAAE,KAAK,EAAE,YAAY,CAAC;SAC/C,CAAC;QACF,cAAc,EAAE,CAAC,SAAS,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,CAAC;KACnD;IAED,+DAA+D;IAC/D;QACE,EAAE,EAAE,OAAO;QACX,IAAI,EAAE,OAAO;QACb,aAAa,EAAE,IAAI;QACnB,UAAU,EAAE,eAAe;QAC3B,iBAAiB,EAAE,kDAAkD;QACrE,YAAY,EAAE,MAAM;QACpB,QAAQ,EAAE,YAAY;QACtB,aAAa,EAAE,GAAG,EAAE;YAClB,IAAI,SAAS,EAAE,EAAE,CAAC;gBAChB,OAAO,IAAI,CAAC,IAAI,CACd,OAAO,EAAE,EACT,MAAM,EACN,MAAM,EACN,eAAe,EACf,wBAAwB,EACxB,UAAU,EACV,yBAAyB,CAC1B,CAAC;YACJ,CAAC;YACD,MAAM,IAAI,GAAG,KAAK,EAAE;gBAClB,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,EAAE,SAAS,EAAE,qBAAqB,EAAE,MAAM,EAAE,MAAM,EAAE,eAAe,CAAC;gBACtF,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,EAAE,SAAS,EAAE,MAAM,EAAE,MAAM,EAAE,eAAe,CAAC,CAAC;YAClE,OAAO,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,wBAAwB,EAAE,UAAU,EAAE,yBAAyB,CAAC,CAAC;QAC1F,CAAC;QACD,YAAY,EAAE,CAAC,GAAG,EAAE,KAAK,EAAE,YAAY,EAAE,EAAE,CAAC,CAAC;YAC3C,IAAI,EAAE,gBAAgB;YACtB,GAAG;YACH,GAAG,WAAW,CAAC,SAAS,EAAE,KAAK,EAAE,YAAY,CAAC;SAC/C,CAAC;QACF,cAAc,EAAE,CAAC,SAAS,EAAE,MAAM,CAAC;KACpC;IAED,+DAA+D;IAC/D;QACE,EAAE,EAAE,WAAW;QACf,IAAI,EAAE,WAAW;QACjB,aAAa,EAAE,IAAI;QACnB,UAAU,EAAE,kBAAkB;QAC9B,iBAAiB,EAAE,eAAe;QAClC,YAAY,EAAE,MAAM;QACpB,QAAQ,EAAE,KAAK;QACf,aAAa,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,EAAE,eAAe,CAAC;QACnD,YAAY,EAAE,CAAC,GAAG,EAAE,KAAK,EAAE,YAAY,EAAE,EAAE,CAAC,CAAC;YAC3C,IAAI,EAAE,QAAQ;YACd,OAAO,EAAE,IAAI;YACb,GAAG;YACH,GAAG,WAAW,CAAC,SAAS,EAAE,KAAK,EAAE,YAAY,CAAC;SAC/C,CAAC;QACF,cAAc,EAAE,CAAC,SAAS,EAAE,MAAM,CAAC;KACpC;IAED,+DAA+D;IAC/D;QACE,EAAE,EAAE,OAAO;QACX,IAAI,EAAE,OAAO;QACb,aAAa,EAAE,IAAI;QACnB,UAAU,EAAE,gBAAgB;QAC5B,iBAAiB,EAAE,oBAAoB;QACvC,YAAY,EAAE,MAAM;QACpB,QAAQ,EAAE,aAAa;QACvB,aAAa,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,EAAE,QAAQ,EAAE,aAAa,CAAC;QAC3D,mGAAmG;QACnG,iGAAiG;QACjG,YAAY,EAAE,CAAC,GAAG,EAAE,KAAK,EAAE,YAAY,EAAE,EAAE,CAAC,CAAC;YAC3C,OAAO,EAAE,IAAI;YACb,GAAG;YACH,gBAAgB,EAAE,GAAG;YACrB,mBAAmB,EAAE,EAAE;YACvB,GAAG,WAAW,CAAC,cAAc,EAAE,KAAK,EAAE,YAAY,CAAC;SACpD,CAAC;QACF,cAAc,EAAE,CAAC,SAAS,EAAE,MAAM,EAAE,MAAM,CAAC;QAC3C,cAAc,EAAE,cAAc;KAC/B;IAED,+DAA+D;IAC/D;QACE,EAAE,EAAE,WAAW;QACf,IAAI,EAAE,WAAW;QACjB,aAAa,EAAE,IAAI;QACnB,UAAU,EAAE,kBAAkB;QAC9B,iBAAiB,EAAE,oBAAoB;QACvC,YAAY,EAAE,MAAM;QACpB,QAAQ,EAAE,YAAY;QACtB,aAAa,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,EAAE,WAAW,EAAE,UAAU,CAAC;QAC3D,YAAY,EAAE,CAAC,GAAG,EAAE,KAAK,EAAE,YAAY,EAAE,EAAE,CAAC,CAAC;YAC3C,IAAI,EAAE,iBAAiB;YACvB,QAAQ,EAAE,KAAK;YACf,GAAG;YACH,GAAG,WAAW,CAAC,SAAS,EAAE,KAAK,EAAE,YAAY,CAAC;SAC/C,CAAC;QACF,cAAc,EAAE,CAAC,SAAS,EAAE,MAAM,CAAC;KACpC;IAED,kEAAkE;IAClE;QACE,EAAE,EAAE,QAAQ;QACZ,IAAI,EAAE,6BAA6B;QACnC,aAAa,EAAE,IAAI;QACnB,UAAU,EAAE,IAAI;QAChB,iBAAiB,EAAE,UAAU;QAC7B,YAAY,EAAE,MAAM;QACpB,QAAQ,EAAE,YAAY;QACtB,aAAa,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,EAAE,UAAU,CAAC;QAC9C,YAAY,EAAE,CAAC,GAAG,EAAE,KAAK,EAAE,YAAY,EAAE,EAAE,CAAC,CAAC;YAC3C,IAAI,EAAE,MAAM;YACZ,GAAG;YACH,GAAG,WAAW,CAAC,SAAS,EAAE,KAAK,EAAE,YAAY,CAAC;SAC/C,CAAC;QACF,cAAc,EAAE,CAAC,SAAS,EAAE,MAAM,CAAC;KACpC;CACO,CAAC;AAEX,8EAA8E;AAC9E,iBAAiB;AACjB,8EAA8E;AAE9E,MAAM,UAAU,YAAY,CAAC,EAAU;IACrC,OAAO,aAAa,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC;AAChD,CAAC;AAED,MAAM,UAAU,WAAW;IACzB,OAAO,aAAa,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;AACxC,CAAC;AAED,MAAM,UAAU,cAAc,CAC5B,OAAe,EACf,aAAqB,EACrB,UAA8C;IAE9C,MAAM,MAAM,GAAG,CAAC,GAAG,aAAa,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,aAAa,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;IAE3E,MAAM,KAAK,GAAG,IAAI,CAAC;IACnB,MAAM,MAAM,GAAG,aAAa,CAAC;IAE7B,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,MAAM,EAAE,GAAG,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC;IACtE,MAAM,IAAI,GAAG,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,MAAM,EAAE,GAAG,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC;IAEjF,MAAM,GAAG,GAAG,KAAK,CAAC,GAAG,CAAC;IACtB,MAAM,IAAI,GAAG,CAAC,CAAS,EAAE,EAAE,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;IAE1C,OAAO,CAAC,GAAG,CAAC,KAAK,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;IAE/C,SAAS;IACT,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,MAAM,CAAC,GAAG,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,GAAG,GAAG,CAAC,KAAK,CAAC,GAAG,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,GAAG,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC;IACrF,OAAO,CAAC,GAAG,CACT,GAAG,CAAC,MAAM,CAAC,GAAG,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,GAAG,GAAG,CAAC,KAAK,CAAC,GAAG,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,GAAG,GAAG,CAAC,IAAI,CAAC,CACnH,CAAC;IACF,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,MAAM,CAAC,GAAG,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,GAAG,GAAG,CAAC,KAAK,CAAC,GAAG,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,GAAG,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC;IAErF,OAAO;IACP,KAAK,MAAM,KAAK,IAAI,MAAM,EAAE,CAAC;QAC3B,MAAM,GAAG,GAAG,UAAU,CAAC,KAAK,CAAC,CAAC;QAC9B,OAAO,CAAC,GAAG,CACT,GAAG,CAAC,MAAM,CAAC,GAAG,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,GAAG,GAAG,CAAC,KAAK,CAAC,GAAG,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,GAAG,GAAG,CAAC,IAAI,CAAC,CAC1G,CAAC;IACJ,CAAC;IAED,SAAS;IACT,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,MAAM,CAAC,GAAG,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,GAAG,GAAG,CAAC,KAAK,CAAC,GAAG,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,GAAG,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC;IACrF,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;AAClB,CAAC;AAED,8EAA8E;AAC9E,6BAA6B;AAC7B,8EAA8E;AAE9E,MAAM,UAAU,oBAAoB,CAClC,UAAkB,EAClB,QAAgB,EAChB,UAAkB,EAClB,KAA8B,EAC9B,UAAoB;IAEpB,MAAM,GAAG,GAAG,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC;IACrC,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE,CAAC;QACxB,EAAE,CAAC,SAAS,CAAC,GAAG,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;IACzC,CAAC;IAED,IAAI,IAAI,GAA4B,EAAE,CAAC;IACvC,IAAI,EAAE,CAAC,UAAU,CAAC,UAAU,CAAC,EAAE,CAAC;QAC9B,IAAI,CAAC;YACH,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,YAAY,CAAC,UAAU,EAAE,OAAO,CAAC,CAA4B,CAAC;QACrF,CAAC;QAAC,MAAM,CAAC;YACP,wCAAwC;YACxC,IAAI,GAAG,EAAE,CAAC;QACZ,CAAC;QACD,IAAI,CAAC,IAAI,IAAI,OAAO,IAAI,KAAK,QAAQ,IAAI,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC;YAC7D,IAAI,GAAG,EAAE,CAAC;QACZ,CAAC;IACH,CAAC;IAED,2BAA2B;IAC3B,IAAI,IAAI,GAAG,IAAI,CAAC,QAAQ,CAAwC,CAAC;IACjE,IAAI,CAAC,IAAI,IAAI,OAAO,IAAI,KAAK,QAAQ,IAAI,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC;QAC7D,IAAI,GAAG,EAAE,CAAC;QACV,IAAI,CAAC,QAAQ,CAAC,GAAG,IAAI,CAAC;IACxB,CAAC;IAED,wCAAwC;IACxC,OAAO,IAAI,CAAC,WAAW,CAAC,CAAC;IAEzB,iCAAiC;IACjC,IAAI,KAAK,GAAG,IAAI,CAAC,UAAU,CAAwC,CAAC;IACpE,IAAI,CAAC,KAAK,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC;QAChE,KAAK,GAAG,EAAE,CAAC;IACb,CAAC;IAED,oBAAoB;IACpB,KAAK,MAAM,GAAG,IAAI,UAAU,EAAE,CAAC;QAC7B,OAAO,KAAK,CAAC,GAAG,CAAC,CAAC;IACpB,CAAC;IAED,uBAAuB;IACvB,KAAK,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC;QACjD,KAAK,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC;IACrB,CAAC;IAED,IAAI,CAAC,UAAU,CAAC,GAAG,KAAK,CAAC;IACzB,IAAI,CAAC,QAAQ,CAAC,GAAG,IAAI,CAAC;IAEtB,EAAE,CAAC,aAAa,CAAC,UAAU,EAAE,IAAI,CAAC,SAAS,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC;AACrE,CAAC;AAED,8EAA8E;AAC9E,0CAA0C;AAC1C,8EAA8E;AAE9E;;;;;;;;GAQG;AACH,MAAM,UAAU,oBAAoB,CAClC,UAAkB,EAClB,QAAgB,EAChB,UAAkB,EAClB,KAA8B,EAC9B,UAAoB;IAEpB,MAAM,GAAG,GAAG,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC;IACrC,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE,CAAC;QACxB,EAAE,CAAC,SAAS,CAAC,GAAG,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;IACzC,CAAC;IAED,uCAAuC;IACvC,IAAI,KAAK,GAAa,EAAE,CAAC;IACzB,IAAI,EAAE,CAAC,UAAU,CAAC,UAAU,CAAC,EAAE,CAAC;QAC9B,KAAK,GAAG,EAAE,CAAC,YAAY,CAAC,UAAU,EAAE,OAAO,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;IAC3D,CAAC;IAED,MAAM,aAAa,GAAG,IAAI,QAAQ,IAAI,UAAU,GAAG,CAAC;IACpD,gFAAgF;IAChF,sEAAsE;IACtE,4EAA4E;IAC5E,oDAAoD;IACpD,KAAK,GAAG,mBAAmB,CAAC,KAAK,EAAE,IAAI,QAAQ,IAAI,UAAU,GAAG,CAAC,CAAC;IAElE,mCAAmC;IACnC,MAAM,UAAU,GAAG,KAAK,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,EAAE,KAAK,aAAa,CAAC,CAAC;IAEtE,6CAA6C;IAC7C,MAAM,SAAS,GAAG,CAAC,aAAa,CAAC,CAAC;IAClC,KAAK,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC;QACjD,IAAI,UAAU,CAAC,QAAQ,CAAC,GAAG,CAAC;YAAE,SAAS;QACvC,SAAS,CAAC,IAAI,CAAC,GAAG,GAAG,MAAM,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;IACjD,CAAC;IAED,IAAI,UAAU,IAAI,CAAC,EAAE,CAAC;QACpB,0EAA0E;QAC1E,4EAA4E;QAC5E,wEAAwE;QACxE,IAAI,MAAM,GAAG,UAAU,GAAG,CAAC,CAAC;QAC5B,OAAO,MAAM,GAAG,KAAK,CAAC,MAAM,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,IAAI,EAAE,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE,CAAC;YACtE,MAAM,EAAE,CAAC;QACX,CAAC;QACD,kBAAkB;QAClB,KAAK,CAAC,MAAM,CAAC,UAAU,EAAE,MAAM,GAAG,UAAU,EAAE,GAAG,SAAS,CAAC,CAAC;IAC9D,CAAC;SAAM,CAAC;QACN,iBAAiB;QACjB,IAAI,KAAK,CAAC,MAAM,GAAG,CAAC,IAAI,KAAK,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE,CAAC;YAC9D,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QACjB,CAAC;QACD,KAAK,CAAC,IAAI,CAAC,GAAG,SAAS,CAAC,CAAC;IAC3B,CAAC;IAED,EAAE,CAAC,aAAa,CAAC,UAAU,EAAE,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC,CAAC;AACxD,CAAC;AAED,8FAA8F;AAC9F,SAAS,mBAAmB,CAAC,KAAe,EAAE,YAAoB;IAChE,MAAM,GAAG,GAAa,EAAE,CAAC;IACzB,IAAI,QAAQ,GAAG,KAAK,CAAC;IACrB,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;QACzB,MAAM,OAAO,GAAG,IAAI,CAAC,IAAI,EAAE,CAAC;QAC5B,IAAI,OAAO,CAAC,UAAU,CAAC,GAAG,CAAC;YAAE,QAAQ,GAAG,OAAO,CAAC,UAAU,CAAC,YAAY,CAAC,CAAC;QACzE,IAAI,CAAC,QAAQ;YAAE,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAChC,CAAC;IACD,OAAO,GAAG,CAAC;AACb,CAAC;AAED,0EAA0E;AAC1E,SAAS,OAAO,CAAC,CAAS;IACxB,OAAO,kBAAkB,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC;AACvD,CAAC;AAED,SAAS,SAAS,CAAC,CAAU;IAC3B,IAAI,OAAO,CAAC,KAAK,QAAQ;QAAE,OAAO,IAAI,CAAC,CAAC,OAAO,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC,OAAO,CAAC,IAAI,EAAE,KAAK,CAAC,GAAG,CAAC;IACvF,IAAI,OAAO,CAAC,KAAK,SAAS;QAAE,OAAO,MAAM,CAAC,CAAC,CAAC,CAAC;IAC7C,IAAI,OAAO,CAAC,KAAK,QAAQ,EAAE,CAAC;QAC1B,+EAA+E;QAC/E,IAAI,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC;YAAE,OAAO,KAAK,CAAC;QAClC,IAAI,CAAC,KAAK,QAAQ;YAAE,OAAO,KAAK,CAAC;QACjC,IAAI,CAAC,KAAK,CAAC,QAAQ;YAAE,OAAO,MAAM,CAAC;QACnC,OAAO,MAAM,CAAC,CAAC,CAAC,CAAC;IACnB,CAAC;IACD,IAAI,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC;QACrB,OAAO,IAAI,CAAC,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC;IAC5C,CAAC;IACD,IAAI,CAAC,IAAI,OAAO,CAAC,KAAK,QAAQ,EAAE,CAAC;QAC/B,2DAA2D;QAC3D,MAAM,KAAK,GAAG,MAAM,CAAC,OAAO,CAAC,CAA4B,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,GAAG,CAAC,EAAE,EAAE,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC,MAAM,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;QAClH,OAAO,KAAK,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC;IACnC,CAAC;IACD,oEAAoE;IACpE,0EAA0E;IAC1E,8FAA8F;IAC9F,OAAO,IAAI,MAAM,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC,OAAO,CAAC,IAAI,EAAE,KAAK,CAAC,GAAG,CAAC;AACtE,CAAC;AAcD;;;;;;;;;;;;GAYG;AACH,MAAM,UAAU,+BAA+B,CAAC,IAK/C;IACC,MAAM,MAAM,GAA4B,EAAE,SAAS,EAAE,EAAE,EAAE,MAAM,EAAE,EAAE,EAAE,CAAC;IACtE,MAAM,IAAI,GAAG,IAAI,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IACjE,KAAK,MAAM,KAAK,IAAI,aAAa,EAAE,CAAC;QAClC,IAAI,KAAe,CAAC;QACpB,IAAI,CAAC;YACH,KAAK,GAAG,mBAAmB,CAAC,KAAK,EAAE,IAAI,CAAC,WAAW,CAAC,CAAC;QACvD,CAAC;QAAC,MAAM,CAAC;YACP,SAAS;QACX,CAAC;QACD,KAAK,MAAM,UAAU,IAAI,KAAK,EAAE,CAAC;YAC/B,MAAM,QAAQ,GAAG,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC;YAC1C,IAAI,IAAI,CAAC,GAAG,CAAC,QAAQ,CAAC;gBAAE,SAAS;YACjC,IAAI,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;YACnB,IAAI,CAAC;gBACH,IAAI,IAAY,CAAC;gBACjB,IAAI,CAAC;oBACH,IAAI,GAAG,EAAE,CAAC,YAAY,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC;gBAC5C,CAAC;gBAAC,OAAO,GAAG,EAAE,CAAC;oBACb,IAAK,GAA6B,CAAC,IAAI,KAAK,QAAQ;wBAAE,SAAS;oBAC/D,MAAM,GAAG,CAAC;gBACZ,CAAC;gBACD,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,MAAM,CAAC;oBAAE,SAAS;gBAC1C,MAAM,IAAI,GACR,KAAK,CAAC,YAAY,KAAK,MAAM;oBAC3B,CAAC,CAAC,gBAAgB,CAAC,IAAI,EAAE,KAAK,CAAC,QAAQ,EAAE,IAAI,CAAC;oBAC9C,CAAC,CAAC,gBAAgB,CAAC,IAAI,EAAE,KAAK,CAAC,QAAQ,EAAE,IAAI,CAAC,CAAC;gBACnD,IAAI,IAAI,KAAK,IAAI,EAAE,CAAC;oBAClB,EAAE,CAAC,aAAa,CAAC,QAAQ,EAAE,IAAI,CAAC,CAAC;oBACjC,MAAM,CAAC,SAAS,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;gBAClC,CAAC;gBACD,oGAAoG;gBACpG,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC;oBACzC,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,QAAQ,EAAE,MAAM,EAAE,sCAAsC,eAAe,uBAAuB,EAAE,CAAC,CAAC;gBAC/H,CAAC;YACH,CAAC;YAAC,OAAO,GAAG,EAAE,CAAC;gBACb,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,QAAQ,EAAE,MAAM,EAAE,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;YACnG,CAAC;QACH,CAAC;IACH,CAAC;IACD,OAAO,MAAM,CAAC;AAChB,CAAC;AAED,oHAAoH;AACpH,SAAS,gBAAgB,CACvB,IAAY,EACZ,QAAgB,EAChB,IAAwC;IAExC,oGAAoG;IACpG,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,SAAS,EAAE,EAAE,CAAC,CAA4B,CAAC;IAChF,MAAM,KAAK,GAAG,QAAQ,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC,QAAQ,CAAC,CAAC,EAAE,CAAC,eAAe,CAAC,CAAC;IACtE,MAAM,MAAM,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAC;IAC/B,IAAI,CAAC,MAAM;QAAE,OAAO,IAAI,CAAC;IACzB,uGAAuG;IACvG,MAAM,OAAO,GAAG,QAAQ,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC,CAAC;IAC5C,IAAI,CAAC,OAAO,IAAI,OAAO,CAAC,eAAe,CAAC,KAAK,UAAU,IAAI,CAAC,MAAM,EAAE;QAAE,OAAO,IAAI,CAAC;IAClF,OAAO,CAAC,eAAe,CAAC,GAAG,UAAU,IAAI,CAAC,MAAM,EAAE,CAAC;IACnD,OAAO,IAAI,CAAC,SAAS,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,GAAG,IAAI,CAAC;AAC9C,CAAC;AAED,wGAAwG;AACxG,SAAS,gBAAgB,CACvB,IAAY,EACZ,QAAgB,EAChB,IAAwC;IAExC,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;IAC/B,MAAM,KAAK,GAAG,KAAK,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,EAAE,KAAK,IAAI,QAAQ,IAAI,eAAe,GAAG,CAAC,CAAC;IACtF,IAAI,KAAK,GAAG,CAAC;QAAE,OAAO,IAAI,CAAC;IAC3B,IAAI,GAAG,GAAG,KAAK,GAAG,CAAC,CAAC;IACpB,OAAO,GAAG,GAAG,KAAK,CAAC,MAAM,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,CAAC,UAAU,CAAC,GAAG,CAAC;QAAE,GAAG,EAAE,CAAC;IACvE,MAAM,OAAO,GAAG,KAAK,CAAC,KAAK,CAAC,KAAK,GAAG,CAAC,EAAE,GAAG,CAAC,CAAC;IAC5C,MAAM,QAAQ,GAAG,WAAW,IAAI,CAAC,MAAM,GAAG,CAAC;IAC3C,MAAM,SAAS,GAAG,OAAO,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,sBAAsB,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC,CAAC;IACnG,IAAI,SAAS,GAAG,CAAC;QAAE,OAAO,IAAI,CAAC;IAC/B,sGAAsG;IACtG,KAAK,CAAC,KAAK,GAAG,CAAC,GAAG,SAAS,CAAC,GAAG,OAAO,CAAC,SAAS,CAAC,CAAC,OAAO,CAAC,QAAQ,EAAE,GAAG,EAAE,CAAC,WAAW,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC;IACrG,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAC1B,CAAC;AAED,SAAS,QAAQ,CAAC,KAAc;IAC9B,OAAO,KAAK,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,CAAE,KAAiC,CAAC,CAAC,CAAC,SAAS,CAAC;AACtH,CAAC;AAED,OAAO,EAAE,eAAe,EAAE,CAAC"}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import * as fs from 'fs';
|
|
2
2
|
import * as path from 'path';
|
|
3
3
|
import { PIN_LENGTH } from './project-identity.js';
|
|
4
|
-
import { agentRegistry, MCP_SERVER_NAME } from './agents.js';
|
|
4
|
+
import { agentRegistry, getAgentConfigPaths, MCP_SERVER_NAME } from './agents.js';
|
|
5
5
|
/**
|
|
6
6
|
* The tool-neutral, committable **project marker** `<project>/.ai-game-dev/project.json`
|
|
7
7
|
* (design 06 / D15). It is NON-secret — credentials NEVER go here — and records:
|
|
@@ -116,30 +116,32 @@ function isProjectLocalConfig(configPath, projectPath) {
|
|
|
116
116
|
export function upsertPinIntoAgentConfigs(projectPath, pin) {
|
|
117
117
|
const updated = [];
|
|
118
118
|
for (const agent of agentRegistry) {
|
|
119
|
-
let
|
|
119
|
+
let configPaths;
|
|
120
120
|
try {
|
|
121
|
-
|
|
121
|
+
configPaths = getAgentConfigPaths(agent, projectPath);
|
|
122
122
|
}
|
|
123
123
|
catch {
|
|
124
124
|
continue;
|
|
125
125
|
}
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
if (
|
|
133
|
-
|
|
126
|
+
for (const configPath of configPaths) {
|
|
127
|
+
if (!isProjectLocalConfig(configPath, projectPath))
|
|
128
|
+
continue;
|
|
129
|
+
if (!fs.existsSync(configPath))
|
|
130
|
+
continue;
|
|
131
|
+
try {
|
|
132
|
+
if (agent.configFormat === 'toml') {
|
|
133
|
+
if (upsertPinInTomlConfig(configPath, pin))
|
|
134
|
+
updated.push(configPath);
|
|
135
|
+
}
|
|
136
|
+
else {
|
|
137
|
+
if (upsertPinInJsonConfig(configPath, agent.bodyPath, pin))
|
|
138
|
+
updated.push(configPath);
|
|
139
|
+
}
|
|
134
140
|
}
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
updated.push(configPath);
|
|
141
|
+
catch {
|
|
142
|
+
// Best-effort: a single unreadable/malformed config never fails enrollment.
|
|
138
143
|
}
|
|
139
144
|
}
|
|
140
|
-
catch {
|
|
141
|
-
// Best-effort: a single unreadable/malformed config never fails enrollment.
|
|
142
|
-
}
|
|
143
145
|
}
|
|
144
146
|
return updated;
|
|
145
147
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"project-marker.js","sourceRoot":"","sources":["../../src/utils/project-marker.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,IAAI,CAAC;AACzB,OAAO,KAAK,IAAI,MAAM,MAAM,CAAC;AAC7B,OAAO,EAAE,UAAU,EAAE,MAAM,uBAAuB,CAAC;AACnD,OAAO,EAAE,aAAa,EAAE,eAAe,EAAE,MAAM,aAAa,CAAC;
|
|
1
|
+
{"version":3,"file":"project-marker.js","sourceRoot":"","sources":["../../src/utils/project-marker.ts"],"names":[],"mappings":"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"}
|
|
@@ -5,7 +5,7 @@
|
|
|
5
5
|
* download entirely (offline / CI). Bumping the addon's server pin requires
|
|
6
6
|
* bumping this in the same PR or the parity test goes red.
|
|
7
7
|
*/
|
|
8
|
-
export declare const DEFAULT_SERVER_VERSION = "9.2.
|
|
8
|
+
export declare const DEFAULT_SERVER_VERSION = "9.2.9";
|
|
9
9
|
/** GitHub-release host the server zip + manifest are downloaded from. NOTHING else is trusted. */
|
|
10
10
|
export declare const TRUSTED_DOWNLOAD_HOST = "github.com";
|
|
11
11
|
/** The `owner/repo` the shared server releases live under. */
|
|
@@ -18,7 +18,7 @@ import { createHash } from 'crypto';
|
|
|
18
18
|
* download entirely (offline / CI). Bumping the addon's server pin requires
|
|
19
19
|
* bumping this in the same PR or the parity test goes red.
|
|
20
20
|
*/
|
|
21
|
-
export const DEFAULT_SERVER_VERSION = '9.2.
|
|
21
|
+
export const DEFAULT_SERVER_VERSION = '9.2.9';
|
|
22
22
|
/** GitHub-release host the server zip + manifest are downloaded from. NOTHING else is trusted. */
|
|
23
23
|
export const TRUSTED_DOWNLOAD_HOST = 'github.com';
|
|
24
24
|
/** The `owner/repo` the shared server releases live under. */
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "godot-cli",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.25.0",
|
|
4
4
|
"description": "Cross-platform CLI tool for Godot-MCP (Skills & MCP). Resolves and launches the Godot editor with MCP connection env vars, runs MCP/system tools over HTTP, probes server health, configures AI agents (Claude Code, Cursor, VS Code, …), and enables/disables the godot_mcp addon. Works with Claude Code, Cursor, Copilot, and any MCP client.",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"main": "dist/lib.js",
|
|
@@ -62,7 +62,7 @@
|
|
|
62
62
|
"node": "^20.19.0 || >=22.12.0"
|
|
63
63
|
},
|
|
64
64
|
"dependencies": {
|
|
65
|
-
"@baizor/gamedev-cli-core": "^0.
|
|
65
|
+
"@baizor/gamedev-cli-core": "^0.6.0",
|
|
66
66
|
"chalk": "^5.6.2",
|
|
67
67
|
"commander": "^13.1.0",
|
|
68
68
|
"yocto-spinner": "^1.1.0"
|