@wootsup/yt-builder-mcp 1.0.0 → 1.0.1
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/manifest.json +1 -1
- package/package.json +1 -1
- package/skills/{yootheme-builder → yt-builder-mcp}/SKILL.md +1 -1
- package/dist/auth.d.ts +0 -39
- package/dist/auth.d.ts.map +0 -1
- package/dist/auth.js +0 -93
- package/dist/auth.js.map +0 -1
- package/dist/client.d.ts +0 -84
- package/dist/client.d.ts.map +0 -1
- package/dist/client.js +0 -151
- package/dist/client.js.map +0 -1
- package/dist/clients/claude-code.d.ts +0 -18
- package/dist/clients/claude-code.d.ts.map +0 -1
- package/dist/clients/claude-code.js +0 -53
- package/dist/clients/claude-code.js.map +0 -1
- package/dist/clients/claude-desktop.d.ts +0 -19
- package/dist/clients/claude-desktop.d.ts.map +0 -1
- package/dist/clients/claude-desktop.js +0 -56
- package/dist/clients/claude-desktop.js.map +0 -1
- package/dist/clients/cline.d.ts +0 -26
- package/dist/clients/cline.d.ts.map +0 -1
- package/dist/clients/cline.js +0 -80
- package/dist/clients/cline.js.map +0 -1
- package/dist/clients/codex-cli.d.ts +0 -42
- package/dist/clients/codex-cli.d.ts.map +0 -1
- package/dist/clients/codex-cli.js +0 -194
- package/dist/clients/codex-cli.js.map +0 -1
- package/dist/clients/continue.d.ts +0 -13
- package/dist/clients/continue.d.ts.map +0 -1
- package/dist/clients/continue.js +0 -52
- package/dist/clients/continue.js.map +0 -1
- package/dist/clients/cursor.d.ts +0 -12
- package/dist/clients/cursor.d.ts.map +0 -1
- package/dist/clients/cursor.js +0 -38
- package/dist/clients/cursor.js.map +0 -1
- package/dist/clients/gemini-cli.d.ts +0 -18
- package/dist/clients/gemini-cli.d.ts.map +0 -1
- package/dist/clients/gemini-cli.js +0 -44
- package/dist/clients/gemini-cli.js.map +0 -1
- package/dist/clients/home.d.ts +0 -14
- package/dist/clients/home.d.ts.map +0 -1
- package/dist/clients/home.js +0 -20
- package/dist/clients/home.js.map +0 -1
- package/dist/clients/index.d.ts +0 -52
- package/dist/clients/index.d.ts.map +0 -1
- package/dist/clients/index.js +0 -72
- package/dist/clients/index.js.map +0 -1
- package/dist/clients/roo-code.d.ts +0 -23
- package/dist/clients/roo-code.d.ts.map +0 -1
- package/dist/clients/roo-code.js +0 -69
- package/dist/clients/roo-code.js.map +0 -1
- package/dist/clients/zed.d.ts +0 -12
- package/dist/clients/zed.d.ts.map +0 -1
- package/dist/clients/zed.js +0 -41
- package/dist/clients/zed.js.map +0 -1
- package/dist/errors/hints.d.ts +0 -51
- package/dist/errors/hints.d.ts.map +0 -1
- package/dist/errors/hints.js +0 -95
- package/dist/errors/hints.js.map +0 -1
- package/dist/errors/mask.d.ts +0 -35
- package/dist/errors/mask.d.ts.map +0 -1
- package/dist/errors/mask.js +0 -49
- package/dist/errors/mask.js.map +0 -1
- package/dist/errors/sanitize.d.ts +0 -31
- package/dist/errors/sanitize.d.ts.map +0 -1
- package/dist/errors/sanitize.js +0 -90
- package/dist/errors/sanitize.js.map +0 -1
- package/dist/errors.d.ts +0 -42
- package/dist/errors.d.ts.map +0 -1
- package/dist/errors.js +0 -61
- package/dist/errors.js.map +0 -1
- package/dist/gateway/advanced-tool/discovery.d.ts +0 -19
- package/dist/gateway/advanced-tool/discovery.d.ts.map +0 -1
- package/dist/gateway/advanced-tool/discovery.js +0 -53
- package/dist/gateway/advanced-tool/discovery.js.map +0 -1
- package/dist/gateway/advanced-tool/domains.d.ts +0 -47
- package/dist/gateway/advanced-tool/domains.d.ts.map +0 -1
- package/dist/gateway/advanced-tool/domains.js +0 -94
- package/dist/gateway/advanced-tool/domains.js.map +0 -1
- package/dist/gateway/advanced-tool/execute.d.ts +0 -29
- package/dist/gateway/advanced-tool/execute.d.ts.map +0 -1
- package/dist/gateway/advanced-tool/execute.js +0 -54
- package/dist/gateway/advanced-tool/execute.js.map +0 -1
- package/dist/gateway/advanced-tool/index.d.ts +0 -36
- package/dist/gateway/advanced-tool/index.d.ts.map +0 -1
- package/dist/gateway/advanced-tool/index.js +0 -39
- package/dist/gateway/advanced-tool/index.js.map +0 -1
- package/dist/gateway/advanced-tool/register.d.ts +0 -18
- package/dist/gateway/advanced-tool/register.d.ts.map +0 -1
- package/dist/gateway/advanced-tool/register.js +0 -69
- package/dist/gateway/advanced-tool/register.js.map +0 -1
- package/dist/gateway/advanced-tool.d.ts +0 -13
- package/dist/gateway/advanced-tool.d.ts.map +0 -1
- package/dist/gateway/advanced-tool.js +0 -13
- package/dist/gateway/advanced-tool.js.map +0 -1
- package/dist/gateway/capturing-server.d.ts +0 -117
- package/dist/gateway/capturing-server.d.ts.map +0 -1
- package/dist/gateway/capturing-server.js +0 -103
- package/dist/gateway/capturing-server.js.map +0 -1
- package/dist/gateway/essentials.d.ts +0 -49
- package/dist/gateway/essentials.d.ts.map +0 -1
- package/dist/gateway/essentials.js +0 -79
- package/dist/gateway/essentials.js.map +0 -1
- package/dist/gateway/test-support.d.ts +0 -41
- package/dist/gateway/test-support.d.ts.map +0 -1
- package/dist/gateway/test-support.js +0 -60
- package/dist/gateway/test-support.js.map +0 -1
- package/dist/index.d.ts +0 -25
- package/dist/index.d.ts.map +0 -1
- package/dist/index.js +0 -77
- package/dist/index.js.map +0 -1
- package/dist/install-skill.d.ts +0 -35
- package/dist/install-skill.d.ts.map +0 -1
- package/dist/install-skill.js +0 -107
- package/dist/install-skill.js.map +0 -1
- package/dist/platform/index.d.ts +0 -49
- package/dist/platform/index.d.ts.map +0 -1
- package/dist/platform/index.js +0 -38
- package/dist/platform/index.js.map +0 -1
- package/dist/server.d.ts +0 -50
- package/dist/server.d.ts.map +0 -1
- package/dist/server.js +0 -153
- package/dist/server.js.map +0 -1
- package/dist/setup-cli.d.ts +0 -100
- package/dist/setup-cli.d.ts.map +0 -1
- package/dist/setup-cli.js +0 -355
- package/dist/setup-cli.js.map +0 -1
- package/dist/setup-prompts.d.ts +0 -41
- package/dist/setup-prompts.d.ts.map +0 -1
- package/dist/setup-prompts.js +0 -142
- package/dist/setup-prompts.js.map +0 -1
- package/dist/setup-token.d.ts +0 -38
- package/dist/setup-token.d.ts.map +0 -1
- package/dist/setup-token.js +0 -106
- package/dist/setup-token.js.map +0 -1
- package/dist/setup-wizard-defaults.d.ts +0 -43
- package/dist/setup-wizard-defaults.d.ts.map +0 -1
- package/dist/setup-wizard-defaults.js +0 -160
- package/dist/setup-wizard-defaults.js.map +0 -1
- package/dist/setup-wizard-handshake.d.ts +0 -25
- package/dist/setup-wizard-handshake.d.ts.map +0 -1
- package/dist/setup-wizard-handshake.js +0 -103
- package/dist/setup-wizard-handshake.js.map +0 -1
- package/dist/setup-wizard-types.d.ts +0 -148
- package/dist/setup-wizard-types.d.ts.map +0 -1
- package/dist/setup-wizard-types.js +0 -11
- package/dist/setup-wizard-types.js.map +0 -1
- package/dist/setup-wizard.d.ts +0 -33
- package/dist/setup-wizard.d.ts.map +0 -1
- package/dist/setup-wizard.js +0 -166
- package/dist/setup-wizard.js.map +0 -1
- package/dist/setup.d.ts +0 -17
- package/dist/setup.d.ts.map +0 -1
- package/dist/setup.js +0 -33
- package/dist/setup.js.map +0 -1
- package/dist/skill-loader.d.ts +0 -51
- package/dist/skill-loader.d.ts.map +0 -1
- package/dist/skill-loader.js +0 -78
- package/dist/skill-loader.js.map +0 -1
- package/dist/tools/elements/builders.d.ts +0 -24
- package/dist/tools/elements/builders.d.ts.map +0 -1
- package/dist/tools/elements/builders.js +0 -177
- package/dist/tools/elements/builders.js.map +0 -1
- package/dist/tools/elements/handlers-write.d.ts +0 -49
- package/dist/tools/elements/handlers-write.d.ts.map +0 -1
- package/dist/tools/elements/handlers-write.js +0 -148
- package/dist/tools/elements/handlers-write.js.map +0 -1
- package/dist/tools/elements/handlers.d.ts +0 -61
- package/dist/tools/elements/handlers.d.ts.map +0 -1
- package/dist/tools/elements/handlers.js +0 -170
- package/dist/tools/elements/handlers.js.map +0 -1
- package/dist/tools/elements/index.d.ts +0 -28
- package/dist/tools/elements/index.d.ts.map +0 -1
- package/dist/tools/elements/index.js +0 -27
- package/dist/tools/elements/index.js.map +0 -1
- package/dist/tools/elements.d.ts +0 -13
- package/dist/tools/elements.d.ts.map +0 -1
- package/dist/tools/elements.js +0 -13
- package/dist/tools/elements.js.map +0 -1
- package/dist/tools/elicitation.d.ts +0 -87
- package/dist/tools/elicitation.d.ts.map +0 -1
- package/dist/tools/elicitation.js +0 -100
- package/dist/tools/elicitation.js.map +0 -1
- package/dist/tools/format/elements-format.d.ts +0 -40
- package/dist/tools/format/elements-format.d.ts.map +0 -1
- package/dist/tools/format/elements-format.js +0 -194
- package/dist/tools/format/elements-format.js.map +0 -1
- package/dist/tools/format/health-format.d.ts +0 -73
- package/dist/tools/format/health-format.d.ts.map +0 -1
- package/dist/tools/format/health-format.js +0 -178
- package/dist/tools/format/health-format.js.map +0 -1
- package/dist/tools/format/inspection-format.d.ts +0 -58
- package/dist/tools/format/inspection-format.d.ts.map +0 -1
- package/dist/tools/format/inspection-format.js +0 -164
- package/dist/tools/format/inspection-format.js.map +0 -1
- package/dist/tools/format/pages-format.d.ts +0 -42
- package/dist/tools/format/pages-format.d.ts.map +0 -1
- package/dist/tools/format/pages-format.js +0 -113
- package/dist/tools/format/pages-format.js.map +0 -1
- package/dist/tools/format/sources-format.d.ts +0 -25
- package/dist/tools/format/sources-format.d.ts.map +0 -1
- package/dist/tools/format/sources-format.js +0 -208
- package/dist/tools/format/sources-format.js.map +0 -1
- package/dist/tools/health.d.ts +0 -22
- package/dist/tools/health.d.ts.map +0 -1
- package/dist/tools/health.js +0 -147
- package/dist/tools/health.js.map +0 -1
- package/dist/tools/index.d.ts +0 -23
- package/dist/tools/index.d.ts.map +0 -1
- package/dist/tools/index.js +0 -25
- package/dist/tools/index.js.map +0 -1
- package/dist/tools/inspection.d.ts +0 -14
- package/dist/tools/inspection.d.ts.map +0 -1
- package/dist/tools/inspection.js +0 -125
- package/dist/tools/inspection.js.map +0 -1
- package/dist/tools/layout-flatten.d.ts +0 -75
- package/dist/tools/layout-flatten.d.ts.map +0 -1
- package/dist/tools/layout-flatten.js +0 -107
- package/dist/tools/layout-flatten.js.map +0 -1
- package/dist/tools/multi-items/builders.d.ts +0 -23
- package/dist/tools/multi-items/builders.d.ts.map +0 -1
- package/dist/tools/multi-items/builders.js +0 -56
- package/dist/tools/multi-items/builders.js.map +0 -1
- package/dist/tools/multi-items/clean-implode-handler.d.ts +0 -28
- package/dist/tools/multi-items/clean-implode-handler.d.ts.map +0 -1
- package/dist/tools/multi-items/clean-implode-handler.js +0 -40
- package/dist/tools/multi-items/clean-implode-handler.js.map +0 -1
- package/dist/tools/multi-items/index.d.ts +0 -18
- package/dist/tools/multi-items/index.d.ts.map +0 -1
- package/dist/tools/multi-items/index.js +0 -18
- package/dist/tools/multi-items/index.js.map +0 -1
- package/dist/tools/multi-items/inspect-handler.d.ts +0 -41
- package/dist/tools/multi-items/inspect-handler.d.ts.map +0 -1
- package/dist/tools/multi-items/inspect-handler.js +0 -50
- package/dist/tools/multi-items/inspect-handler.js.map +0 -1
- package/dist/tools/multi-items/item-container-map.d.ts +0 -41
- package/dist/tools/multi-items/item-container-map.d.ts.map +0 -1
- package/dist/tools/multi-items/item-container-map.js +0 -73
- package/dist/tools/multi-items/item-container-map.js.map +0 -1
- package/dist/tools/pages/builders.d.ts +0 -14
- package/dist/tools/pages/builders.d.ts.map +0 -1
- package/dist/tools/pages/builders.js +0 -115
- package/dist/tools/pages/builders.js.map +0 -1
- package/dist/tools/pages/handlers-read.d.ts +0 -33
- package/dist/tools/pages/handlers-read.d.ts.map +0 -1
- package/dist/tools/pages/handlers-read.js +0 -161
- package/dist/tools/pages/handlers-read.js.map +0 -1
- package/dist/tools/pages/handlers-write.d.ts +0 -21
- package/dist/tools/pages/handlers-write.d.ts.map +0 -1
- package/dist/tools/pages/handlers-write.js +0 -52
- package/dist/tools/pages/handlers-write.js.map +0 -1
- package/dist/tools/pages/index.d.ts +0 -17
- package/dist/tools/pages/index.d.ts.map +0 -1
- package/dist/tools/pages/index.js +0 -17
- package/dist/tools/pages/index.js.map +0 -1
- package/dist/tools/pages/schemas.d.ts +0 -30
- package/dist/tools/pages/schemas.d.ts.map +0 -1
- package/dist/tools/pages/schemas.js +0 -30
- package/dist/tools/pages/schemas.js.map +0 -1
- package/dist/tools/pages.d.ts +0 -13
- package/dist/tools/pages.d.ts.map +0 -1
- package/dist/tools/pages.js +0 -13
- package/dist/tools/pages.js.map +0 -1
- package/dist/tools/progress-phases.d.ts +0 -46
- package/dist/tools/progress-phases.d.ts.map +0 -1
- package/dist/tools/progress-phases.js +0 -48
- package/dist/tools/progress-phases.js.map +0 -1
- package/dist/tools/shared-schemas.d.ts +0 -15
- package/dist/tools/shared-schemas.d.ts.map +0 -1
- package/dist/tools/shared-schemas.js +0 -30
- package/dist/tools/shared-schemas.js.map +0 -1
- package/dist/tools/sources/builders.d.ts +0 -13
- package/dist/tools/sources/builders.d.ts.map +0 -1
- package/dist/tools/sources/builders.js +0 -103
- package/dist/tools/sources/builders.js.map +0 -1
- package/dist/tools/sources/handlers-bind.d.ts +0 -28
- package/dist/tools/sources/handlers-bind.d.ts.map +0 -1
- package/dist/tools/sources/handlers-bind.js +0 -129
- package/dist/tools/sources/handlers-bind.js.map +0 -1
- package/dist/tools/sources/handlers.d.ts +0 -45
- package/dist/tools/sources/handlers.d.ts.map +0 -1
- package/dist/tools/sources/handlers.js +0 -91
- package/dist/tools/sources/handlers.js.map +0 -1
- package/dist/tools/sources/index.d.ts +0 -19
- package/dist/tools/sources/index.d.ts.map +0 -1
- package/dist/tools/sources/index.js +0 -18
- package/dist/tools/sources/index.js.map +0 -1
- package/dist/tools/sources.d.ts +0 -14
- package/dist/tools/sources.d.ts.map +0 -1
- package/dist/tools/sources.js +0 -14
- package/dist/tools/sources.js.map +0 -1
- package/dist/tools/sparse-fields.d.ts +0 -80
- package/dist/tools/sparse-fields.d.ts.map +0 -1
- package/dist/tools/sparse-fields.js +0 -144
- package/dist/tools/sparse-fields.js.map +0 -1
- package/dist/tools/tool-builder/annotations.d.ts +0 -55
- package/dist/tools/tool-builder/annotations.d.ts.map +0 -1
- package/dist/tools/tool-builder/annotations.js +0 -86
- package/dist/tools/tool-builder/annotations.js.map +0 -1
- package/dist/tools/tool-builder/define.d.ts +0 -31
- package/dist/tools/tool-builder/define.d.ts.map +0 -1
- package/dist/tools/tool-builder/define.js +0 -31
- package/dist/tools/tool-builder/define.js.map +0 -1
- package/dist/tools/tool-builder/index.d.ts +0 -28
- package/dist/tools/tool-builder/index.d.ts.map +0 -1
- package/dist/tools/tool-builder/index.js +0 -27
- package/dist/tools/tool-builder/index.js.map +0 -1
- package/dist/tools/tool-builder/results.d.ts +0 -59
- package/dist/tools/tool-builder/results.d.ts.map +0 -1
- package/dist/tools/tool-builder/results.js +0 -125
- package/dist/tools/tool-builder/results.js.map +0 -1
- package/dist/tools/tool-builder/types.d.ts +0 -82
- package/dist/tools/tool-builder/types.d.ts.map +0 -1
- package/dist/tools/tool-builder/types.js +0 -9
- package/dist/tools/tool-builder/types.js.map +0 -1
- package/dist/tools/tool-builder.d.ts +0 -16
- package/dist/tools/tool-builder.d.ts.map +0 -1
- package/dist/tools/tool-builder.js +0 -16
- package/dist/tools/tool-builder.js.map +0 -1
package/dist/clients/index.js
DELETED
|
@@ -1,72 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Client-config-writers.
|
|
3
|
-
*
|
|
4
|
-
* Each supported AI client has its own module that knows
|
|
5
|
-
* - which config file to read/write
|
|
6
|
-
* - what JSON shape to inject under `mcpServers` (or equivalent)
|
|
7
|
-
*
|
|
8
|
-
* The setup wizard calls `detectAvailableClients()` to enumerate, then
|
|
9
|
-
* `writeClientConfig({client, server})` once the user picks one.
|
|
10
|
-
*
|
|
11
|
-
* @license MIT
|
|
12
|
-
*/
|
|
13
|
-
import { existsSync } from 'node:fs';
|
|
14
|
-
import { mkdir, readFile, writeFile } from 'node:fs/promises';
|
|
15
|
-
import { dirname } from 'node:path';
|
|
16
|
-
import { claudeCodeClient } from './claude-code.js';
|
|
17
|
-
import { claudeDesktopClient } from './claude-desktop.js';
|
|
18
|
-
import { clineClient } from './cline.js';
|
|
19
|
-
import { codexCliClient } from './codex-cli.js';
|
|
20
|
-
import { continueClient } from './continue.js';
|
|
21
|
-
import { cursorClient } from './cursor.js';
|
|
22
|
-
import { geminiCliClient } from './gemini-cli.js';
|
|
23
|
-
import { rooCodeClient } from './roo-code.js';
|
|
24
|
-
import { zedClient } from './zed.js';
|
|
25
|
-
export const ALL_CLIENTS = [
|
|
26
|
-
claudeDesktopClient,
|
|
27
|
-
claudeCodeClient,
|
|
28
|
-
cursorClient,
|
|
29
|
-
zedClient,
|
|
30
|
-
continueClient,
|
|
31
|
-
clineClient,
|
|
32
|
-
rooCodeClient,
|
|
33
|
-
codexCliClient,
|
|
34
|
-
geminiCliClient,
|
|
35
|
-
];
|
|
36
|
-
export function detectAvailableClients() {
|
|
37
|
-
return ALL_CLIENTS.map((c) => ({
|
|
38
|
-
id: c.id,
|
|
39
|
-
label: c.label,
|
|
40
|
-
configPath: c.configPath(),
|
|
41
|
-
detected: c.isDetected(),
|
|
42
|
-
}));
|
|
43
|
-
}
|
|
44
|
-
export function findClient(id) {
|
|
45
|
-
return ALL_CLIENTS.find((c) => c.id === id);
|
|
46
|
-
}
|
|
47
|
-
/**
|
|
48
|
-
* Shared helper: read a JSON file, mutate via callback, write back.
|
|
49
|
-
* Creates parent directories if missing.
|
|
50
|
-
*/
|
|
51
|
-
export async function patchJsonFile(path, mutator) {
|
|
52
|
-
let current = {};
|
|
53
|
-
if (existsSync(path)) {
|
|
54
|
-
try {
|
|
55
|
-
const raw = await readFile(path, 'utf-8');
|
|
56
|
-
const parsed = raw.trim() === '' ? {} : JSON.parse(raw);
|
|
57
|
-
if (parsed !== null && typeof parsed === 'object' && !Array.isArray(parsed)) {
|
|
58
|
-
current = parsed;
|
|
59
|
-
}
|
|
60
|
-
}
|
|
61
|
-
catch {
|
|
62
|
-
current = {};
|
|
63
|
-
}
|
|
64
|
-
}
|
|
65
|
-
else {
|
|
66
|
-
await mkdir(dirname(path), { recursive: true });
|
|
67
|
-
}
|
|
68
|
-
const next = mutator(current);
|
|
69
|
-
await writeFile(path, JSON.stringify(next, null, 2) + '\n', 'utf-8');
|
|
70
|
-
}
|
|
71
|
-
export { claudeCodeClient, claudeDesktopClient, clineClient, codexCliClient, continueClient, cursorClient, geminiCliClient, rooCodeClient, zedClient, };
|
|
72
|
-
//# sourceMappingURL=index.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/clients/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAEH,OAAO,EAAE,UAAU,EAAE,MAAM,SAAS,CAAC;AACrC,OAAO,EAAE,KAAK,EAAE,QAAQ,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AAC9D,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAEpC,OAAO,EAAE,gBAAgB,EAAE,MAAM,kBAAkB,CAAC;AACpD,OAAO,EAAE,mBAAmB,EAAE,MAAM,qBAAqB,CAAC;AAC1D,OAAO,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;AACzC,OAAO,EAAE,cAAc,EAAE,MAAM,gBAAgB,CAAC;AAChD,OAAO,EAAE,cAAc,EAAE,MAAM,eAAe,CAAC;AAC/C,OAAO,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAC3C,OAAO,EAAE,eAAe,EAAE,MAAM,iBAAiB,CAAC;AAClD,OAAO,EAAE,aAAa,EAAE,MAAM,eAAe,CAAC;AAC9C,OAAO,EAAE,SAAS,EAAE,MAAM,UAAU,CAAC;AAmBrC,MAAM,CAAC,MAAM,WAAW,GAA4B;IAChD,mBAAmB;IACnB,gBAAgB;IAChB,YAAY;IACZ,SAAS;IACT,cAAc;IACd,WAAW;IACX,aAAa;IACb,cAAc;IACd,eAAe;CAClB,CAAC;AASF,MAAM,UAAU,sBAAsB;IAClC,OAAO,WAAW,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;QAC3B,EAAE,EAAE,CAAC,CAAC,EAAE;QACR,KAAK,EAAE,CAAC,CAAC,KAAK;QACd,UAAU,EAAE,CAAC,CAAC,UAAU,EAAE;QAC1B,QAAQ,EAAE,CAAC,CAAC,UAAU,EAAE;KAC3B,CAAC,CAAC,CAAC;AACR,CAAC;AAED,MAAM,UAAU,UAAU,CAAC,EAAU;IACjC,OAAO,WAAW,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC;AAChD,CAAC;AAED;;;GAGG;AACH,MAAM,CAAC,KAAK,UAAU,aAAa,CAC/B,IAAY,EACZ,OAAsE;IAEtE,IAAI,OAAO,GAA4B,EAAE,CAAC;IAC1C,IAAI,UAAU,CAAC,IAAI,CAAC,EAAE,CAAC;QACnB,IAAI,CAAC;YACD,MAAM,GAAG,GAAG,MAAM,QAAQ,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;YAC1C,MAAM,MAAM,GAAG,GAAG,CAAC,IAAI,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAE,IAAI,CAAC,KAAK,CAAC,GAAG,CAAa,CAAC;YACrE,IAAI,MAAM,KAAK,IAAI,IAAI,OAAO,MAAM,KAAK,QAAQ,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,CAAC;gBAC1E,OAAO,GAAG,MAAiC,CAAC;YAChD,CAAC;QACL,CAAC;QAAC,MAAM,CAAC;YACL,OAAO,GAAG,EAAE,CAAC;QACjB,CAAC;IACL,CAAC;SAAM,CAAC;QACJ,MAAM,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;IACpD,CAAC;IAED,MAAM,IAAI,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC;IAC9B,MAAM,SAAS,CAAC,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,GAAG,IAAI,EAAE,OAAO,CAAC,CAAC;AACzE,CAAC;AAED,OAAO,EACH,gBAAgB,EAChB,mBAAmB,EACnB,WAAW,EACX,cAAc,EACd,cAAc,EACd,YAAY,EACZ,eAAe,EACf,aAAa,EACb,SAAS,GACZ,CAAC"}
|
|
@@ -1,23 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Roo Code MCP config writer.
|
|
3
|
-
*
|
|
4
|
-
* Roo Code (formerly Roo Cline) is the VS Code extension
|
|
5
|
-
* `rooveterinaryinc.roo-cline` — a fork of Cline. It follows the
|
|
6
|
-
* same VS Code globalStorage layout but its own settings file is
|
|
7
|
-
* named `mcp_settings.json` (without the legacy `cline_` prefix
|
|
8
|
-
* its parent uses).
|
|
9
|
-
*
|
|
10
|
-
* <vsCodeUserDir>/globalStorage/rooveterinaryinc.roo-cline/settings/mcp_settings.json
|
|
11
|
-
*
|
|
12
|
-
* VS Code's `<vsCodeUserDir>` is:
|
|
13
|
-
* macOS: ~/Library/Application Support/Code/User
|
|
14
|
-
* Linux: ~/.config/Code/User
|
|
15
|
-
* Windows: %APPDATA%\Code\User
|
|
16
|
-
*
|
|
17
|
-
* Schema mirrors Claude Desktop's `mcpServers` map.
|
|
18
|
-
*
|
|
19
|
-
* @license MIT
|
|
20
|
-
*/
|
|
21
|
-
import { type ClientWriter } from './index.js';
|
|
22
|
-
export declare const rooCodeClient: ClientWriter;
|
|
23
|
-
//# sourceMappingURL=roo-code.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"roo-code.d.ts","sourceRoot":"","sources":["../../src/clients/roo-code.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;GAmBG;AAOH,OAAO,EAAiB,KAAK,YAAY,EAAwB,MAAM,YAAY,CAAC;AAkCpF,eAAO,MAAM,aAAa,EAAE,YAqB3B,CAAC"}
|
package/dist/clients/roo-code.js
DELETED
|
@@ -1,69 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Roo Code MCP config writer.
|
|
3
|
-
*
|
|
4
|
-
* Roo Code (formerly Roo Cline) is the VS Code extension
|
|
5
|
-
* `rooveterinaryinc.roo-cline` — a fork of Cline. It follows the
|
|
6
|
-
* same VS Code globalStorage layout but its own settings file is
|
|
7
|
-
* named `mcp_settings.json` (without the legacy `cline_` prefix
|
|
8
|
-
* its parent uses).
|
|
9
|
-
*
|
|
10
|
-
* <vsCodeUserDir>/globalStorage/rooveterinaryinc.roo-cline/settings/mcp_settings.json
|
|
11
|
-
*
|
|
12
|
-
* VS Code's `<vsCodeUserDir>` is:
|
|
13
|
-
* macOS: ~/Library/Application Support/Code/User
|
|
14
|
-
* Linux: ~/.config/Code/User
|
|
15
|
-
* Windows: %APPDATA%\Code\User
|
|
16
|
-
*
|
|
17
|
-
* Schema mirrors Claude Desktop's `mcpServers` map.
|
|
18
|
-
*
|
|
19
|
-
* @license MIT
|
|
20
|
-
*/
|
|
21
|
-
import { existsSync } from 'node:fs';
|
|
22
|
-
import { platform } from 'node:os';
|
|
23
|
-
import { join } from 'node:path';
|
|
24
|
-
import { userHome } from './home.js';
|
|
25
|
-
import { patchJsonFile } from './index.js';
|
|
26
|
-
const EXTENSION_ID = 'rooveterinaryinc.roo-cline';
|
|
27
|
-
const SETTINGS_FILENAME = 'mcp_settings.json';
|
|
28
|
-
function vsCodeUserDir() {
|
|
29
|
-
const home = userHome();
|
|
30
|
-
switch (platform()) {
|
|
31
|
-
case 'darwin':
|
|
32
|
-
return join(home, 'Library', 'Application Support', 'Code', 'User');
|
|
33
|
-
case 'win32': {
|
|
34
|
-
const appData = process.env.APPDATA ?? join(home, 'AppData', 'Roaming');
|
|
35
|
-
return join(appData, 'Code', 'User');
|
|
36
|
-
}
|
|
37
|
-
default:
|
|
38
|
-
return join(home, '.config', 'Code', 'User');
|
|
39
|
-
}
|
|
40
|
-
}
|
|
41
|
-
function configPath() {
|
|
42
|
-
return join(vsCodeUserDir(), 'globalStorage', EXTENSION_ID, 'settings', SETTINGS_FILENAME);
|
|
43
|
-
}
|
|
44
|
-
function isDetected() {
|
|
45
|
-
const extDir = join(vsCodeUserDir(), 'globalStorage', EXTENSION_ID);
|
|
46
|
-
return existsSync(extDir) || existsSync(configPath());
|
|
47
|
-
}
|
|
48
|
-
export const rooCodeClient = {
|
|
49
|
-
id: 'roo-code',
|
|
50
|
-
label: 'Roo Code (VS Code)',
|
|
51
|
-
configPath,
|
|
52
|
-
isDetected,
|
|
53
|
-
apply: async (serverName, config) => {
|
|
54
|
-
await patchJsonFile(configPath(), (current) => {
|
|
55
|
-
const servers = current.mcpServers !== null &&
|
|
56
|
-
typeof current.mcpServers === 'object' &&
|
|
57
|
-
!Array.isArray(current.mcpServers)
|
|
58
|
-
? { ...current.mcpServers }
|
|
59
|
-
: {};
|
|
60
|
-
servers[serverName] = {
|
|
61
|
-
command: config.command,
|
|
62
|
-
args: config.args,
|
|
63
|
-
env: config.env,
|
|
64
|
-
};
|
|
65
|
-
return { ...current, mcpServers: servers };
|
|
66
|
-
});
|
|
67
|
-
},
|
|
68
|
-
};
|
|
69
|
-
//# sourceMappingURL=roo-code.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"roo-code.js","sourceRoot":"","sources":["../../src/clients/roo-code.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;GAmBG;AAEH,OAAO,EAAE,UAAU,EAAE,MAAM,SAAS,CAAC;AACrC,OAAO,EAAE,QAAQ,EAAE,MAAM,SAAS,CAAC;AACnC,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AAEjC,OAAO,EAAE,QAAQ,EAAE,MAAM,WAAW,CAAC;AACrC,OAAO,EAAE,aAAa,EAA2C,MAAM,YAAY,CAAC;AAEpF,MAAM,YAAY,GAAG,4BAA4B,CAAC;AAClD,MAAM,iBAAiB,GAAG,mBAAmB,CAAC;AAE9C,SAAS,aAAa;IAClB,MAAM,IAAI,GAAG,QAAQ,EAAE,CAAC;IACxB,QAAQ,QAAQ,EAAE,EAAE,CAAC;QACjB,KAAK,QAAQ;YACT,OAAO,IAAI,CAAC,IAAI,EAAE,SAAS,EAAE,qBAAqB,EAAE,MAAM,EAAE,MAAM,CAAC,CAAC;QACxE,KAAK,OAAO,CAAC,CAAC,CAAC;YACX,MAAM,OAAO,GAAG,OAAO,CAAC,GAAG,CAAC,OAAO,IAAI,IAAI,CAAC,IAAI,EAAE,SAAS,EAAE,SAAS,CAAC,CAAC;YACxE,OAAO,IAAI,CAAC,OAAO,EAAE,MAAM,EAAE,MAAM,CAAC,CAAC;QACzC,CAAC;QACD;YACI,OAAO,IAAI,CAAC,IAAI,EAAE,SAAS,EAAE,MAAM,EAAE,MAAM,CAAC,CAAC;IACrD,CAAC;AACL,CAAC;AAED,SAAS,UAAU;IACf,OAAO,IAAI,CACP,aAAa,EAAE,EACf,eAAe,EACf,YAAY,EACZ,UAAU,EACV,iBAAiB,CACpB,CAAC;AACN,CAAC;AAED,SAAS,UAAU;IACf,MAAM,MAAM,GAAG,IAAI,CAAC,aAAa,EAAE,EAAE,eAAe,EAAE,YAAY,CAAC,CAAC;IACpE,OAAO,UAAU,CAAC,MAAM,CAAC,IAAI,UAAU,CAAC,UAAU,EAAE,CAAC,CAAC;AAC1D,CAAC;AAED,MAAM,CAAC,MAAM,aAAa,GAAiB;IACvC,EAAE,EAAE,UAAU;IACd,KAAK,EAAE,oBAAoB;IAC3B,UAAU;IACV,UAAU;IACV,KAAK,EAAE,KAAK,EAAE,UAAkB,EAAE,MAAuB,EAAE,EAAE;QACzD,MAAM,aAAa,CAAC,UAAU,EAAE,EAAE,CAAC,OAAO,EAAE,EAAE;YAC1C,MAAM,OAAO,GACT,OAAO,CAAC,UAAU,KAAK,IAAI;gBAC3B,OAAO,OAAO,CAAC,UAAU,KAAK,QAAQ;gBACtC,CAAC,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC,UAAU,CAAC;gBAC9B,CAAC,CAAC,EAAE,GAAI,OAAO,CAAC,UAAsC,EAAE;gBACxD,CAAC,CAAC,EAAE,CAAC;YACb,OAAO,CAAC,UAAU,CAAC,GAAG;gBAClB,OAAO,EAAE,MAAM,CAAC,OAAO;gBACvB,IAAI,EAAE,MAAM,CAAC,IAAI;gBACjB,GAAG,EAAE,MAAM,CAAC,GAAG;aAClB,CAAC;YACF,OAAO,EAAE,GAAG,OAAO,EAAE,UAAU,EAAE,OAAO,EAAE,CAAC;QAC/C,CAAC,CAAC,CAAC;IACP,CAAC;CACJ,CAAC"}
|
package/dist/clients/zed.d.ts
DELETED
|
@@ -1,12 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Zed MCP config writer.
|
|
3
|
-
*
|
|
4
|
-
* Global: ~/.config/zed/settings.json (JSONC; we treat as JSON for write)
|
|
5
|
-
*
|
|
6
|
-
* Schema: `context_servers` map (Zed-specific naming).
|
|
7
|
-
*
|
|
8
|
-
* @license MIT
|
|
9
|
-
*/
|
|
10
|
-
import { type ClientWriter } from './index.js';
|
|
11
|
-
export declare const zedClient: ClientWriter;
|
|
12
|
-
//# sourceMappingURL=zed.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"zed.d.ts","sourceRoot":"","sources":["../../src/clients/zed.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAMH,OAAO,EAAiB,KAAK,YAAY,EAAwB,MAAM,YAAY,CAAC;AAMpF,eAAO,MAAM,SAAS,EAAE,YAwBvB,CAAC"}
|
package/dist/clients/zed.js
DELETED
|
@@ -1,41 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Zed MCP config writer.
|
|
3
|
-
*
|
|
4
|
-
* Global: ~/.config/zed/settings.json (JSONC; we treat as JSON for write)
|
|
5
|
-
*
|
|
6
|
-
* Schema: `context_servers` map (Zed-specific naming).
|
|
7
|
-
*
|
|
8
|
-
* @license MIT
|
|
9
|
-
*/
|
|
10
|
-
import { existsSync } from 'node:fs';
|
|
11
|
-
import { join } from 'node:path';
|
|
12
|
-
import { userHome } from './home.js';
|
|
13
|
-
import { patchJsonFile } from './index.js';
|
|
14
|
-
function configPath() {
|
|
15
|
-
return join(userHome(), '.config', 'zed', 'settings.json');
|
|
16
|
-
}
|
|
17
|
-
export const zedClient = {
|
|
18
|
-
id: 'zed',
|
|
19
|
-
label: 'Zed',
|
|
20
|
-
configPath,
|
|
21
|
-
isDetected: () => existsSync(join(userHome(), '.config', 'zed')),
|
|
22
|
-
apply: async (serverName, config) => {
|
|
23
|
-
await patchJsonFile(configPath(), (current) => {
|
|
24
|
-
const servers = current.context_servers !== null &&
|
|
25
|
-
typeof current.context_servers === 'object' &&
|
|
26
|
-
!Array.isArray(current.context_servers)
|
|
27
|
-
? { ...current.context_servers }
|
|
28
|
-
: {};
|
|
29
|
-
servers[serverName] = {
|
|
30
|
-
command: {
|
|
31
|
-
path: config.command,
|
|
32
|
-
args: config.args,
|
|
33
|
-
env: config.env,
|
|
34
|
-
},
|
|
35
|
-
settings: {},
|
|
36
|
-
};
|
|
37
|
-
return { ...current, context_servers: servers };
|
|
38
|
-
});
|
|
39
|
-
},
|
|
40
|
-
};
|
|
41
|
-
//# sourceMappingURL=zed.js.map
|
package/dist/clients/zed.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"zed.js","sourceRoot":"","sources":["../../src/clients/zed.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,EAAE,UAAU,EAAE,MAAM,SAAS,CAAC;AACrC,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AAEjC,OAAO,EAAE,QAAQ,EAAE,MAAM,WAAW,CAAC;AACrC,OAAO,EAAE,aAAa,EAA2C,MAAM,YAAY,CAAC;AAEpF,SAAS,UAAU;IACf,OAAO,IAAI,CAAC,QAAQ,EAAE,EAAE,SAAS,EAAE,KAAK,EAAE,eAAe,CAAC,CAAC;AAC/D,CAAC;AAED,MAAM,CAAC,MAAM,SAAS,GAAiB;IACnC,EAAE,EAAE,KAAK;IACT,KAAK,EAAE,KAAK;IACZ,UAAU;IACV,UAAU,EAAE,GAAG,EAAE,CAAC,UAAU,CAAC,IAAI,CAAC,QAAQ,EAAE,EAAE,SAAS,EAAE,KAAK,CAAC,CAAC;IAChE,KAAK,EAAE,KAAK,EAAE,UAAkB,EAAE,MAAuB,EAAE,EAAE;QACzD,MAAM,aAAa,CAAC,UAAU,EAAE,EAAE,CAAC,OAAO,EAAE,EAAE;YAC1C,MAAM,OAAO,GACT,OAAO,CAAC,eAAe,KAAK,IAAI;gBAChC,OAAO,OAAO,CAAC,eAAe,KAAK,QAAQ;gBAC3C,CAAC,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC,eAAe,CAAC;gBACnC,CAAC,CAAC,EAAE,GAAI,OAAO,CAAC,eAA2C,EAAE;gBAC7D,CAAC,CAAC,EAAE,CAAC;YACb,OAAO,CAAC,UAAU,CAAC,GAAG;gBAClB,OAAO,EAAE;oBACL,IAAI,EAAE,MAAM,CAAC,OAAO;oBACpB,IAAI,EAAE,MAAM,CAAC,IAAI;oBACjB,GAAG,EAAE,MAAM,CAAC,GAAG;iBAClB;gBACD,QAAQ,EAAE,EAAE;aACf,CAAC;YACF,OAAO,EAAE,GAAG,OAAO,EAAE,eAAe,EAAE,OAAO,EAAE,CAAC;QACpD,CAAC,CAAC,CAAC;IACP,CAAC;CACJ,CAAC"}
|
package/dist/errors/hints.d.ts
DELETED
|
@@ -1,51 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Error-code taxonomy + AI-friendly hint messages.
|
|
3
|
-
*
|
|
4
|
-
* `classify(status)` maps the HTTP status of a failed REST call into one
|
|
5
|
-
* of nine canonical `YtbErrorCode` values. `hintFor(code)` returns a
|
|
6
|
-
* recovery-oriented hint string the LLM can act on without re-reading the
|
|
7
|
-
* raw error message.
|
|
8
|
-
*
|
|
9
|
-
* Centralising the taxonomy means every tool's catch-block emits the
|
|
10
|
-
* same vocabulary, and the audit gate can pin the exact set of hints
|
|
11
|
-
* that ship.
|
|
12
|
-
*
|
|
13
|
-
* Reference: `apimapper-mcp/src/modules/apimapper/client.ts:hintFor`
|
|
14
|
-
* (Wave G.6.1 — same shape, ported for the YOOtheme Builder REST API).
|
|
15
|
-
*
|
|
16
|
-
* @license MIT
|
|
17
|
-
*/
|
|
18
|
-
/**
|
|
19
|
-
* Canonical YOOtheme-Builder-MCP error code union.
|
|
20
|
-
*
|
|
21
|
-
* Order is documentary only — `classify()` returns whichever applies.
|
|
22
|
-
*/
|
|
23
|
-
export type YtbErrorCode = 'auth_invalid' | 'auth_missing' | 'forbidden' | 'not_found' | 'conflict_etag' | 'validation_error' | 'rate_limit' | 'server_error' | 'network';
|
|
24
|
-
/** Options for `classify()` — second-tier signals (e.g. response headers). */
|
|
25
|
-
export interface ClassifyOptions {
|
|
26
|
-
/**
|
|
27
|
-
* Whether the response carried a `WWW-Authenticate` header. Used to
|
|
28
|
-
* distinguish `auth_missing` (no bearer sent → server didn't ask for one
|
|
29
|
-
* via WWW-Authenticate; misconfigured client) from `auth_invalid`
|
|
30
|
-
* (server rejected the bearer that WAS sent).
|
|
31
|
-
*/
|
|
32
|
-
readonly hasWwwAuthenticate?: boolean;
|
|
33
|
-
}
|
|
34
|
-
/**
|
|
35
|
-
* Map an HTTP status into a `YtbErrorCode`.
|
|
36
|
-
*
|
|
37
|
-
* Special-cases:
|
|
38
|
-
* - 401 with `hasWwwAuthenticate: false` → `auth_missing`
|
|
39
|
-
* - 401 with `hasWwwAuthenticate: true` → `auth_invalid` (default)
|
|
40
|
-
* - 412 (Precondition Failed) is treated as `conflict_etag` alongside 409.
|
|
41
|
-
* - Status 0 (no response) → `network`.
|
|
42
|
-
* - Anything we don't recognise (incl. 2xx) → `server_error` so the agent
|
|
43
|
-
* sees a non-empty hint rather than silently swallowing.
|
|
44
|
-
*/
|
|
45
|
-
export declare function classify(status: number, options?: ClassifyOptions): YtbErrorCode;
|
|
46
|
-
/**
|
|
47
|
-
* Return a focused hint describing how the agent (or the user) can
|
|
48
|
-
* recover from a given error code. Always non-empty.
|
|
49
|
-
*/
|
|
50
|
-
export declare function hintFor(code: YtbErrorCode): string;
|
|
51
|
-
//# sourceMappingURL=hints.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"hints.d.ts","sourceRoot":"","sources":["../../src/errors/hints.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;GAgBG;AAEH;;;;GAIG;AACH,MAAM,MAAM,YAAY,GAClB,cAAc,GACd,cAAc,GACd,WAAW,GACX,WAAW,GACX,eAAe,GACf,kBAAkB,GAClB,YAAY,GACZ,cAAc,GACd,SAAS,CAAC;AAEhB,8EAA8E;AAC9E,MAAM,WAAW,eAAe;IAC5B;;;;;OAKG;IACH,QAAQ,CAAC,kBAAkB,CAAC,EAAE,OAAO,CAAC;CACzC;AAED;;;;;;;;;;GAUG;AACH,wBAAgB,QAAQ,CAAC,MAAM,EAAE,MAAM,EAAE,OAAO,GAAE,eAAoB,GAAG,YAAY,CAYpF;AAED;;;GAGG;AACH,wBAAgB,OAAO,CAAC,IAAI,EAAE,YAAY,GAAG,MAAM,CA2DlD"}
|
package/dist/errors/hints.js
DELETED
|
@@ -1,95 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Error-code taxonomy + AI-friendly hint messages.
|
|
3
|
-
*
|
|
4
|
-
* `classify(status)` maps the HTTP status of a failed REST call into one
|
|
5
|
-
* of nine canonical `YtbErrorCode` values. `hintFor(code)` returns a
|
|
6
|
-
* recovery-oriented hint string the LLM can act on without re-reading the
|
|
7
|
-
* raw error message.
|
|
8
|
-
*
|
|
9
|
-
* Centralising the taxonomy means every tool's catch-block emits the
|
|
10
|
-
* same vocabulary, and the audit gate can pin the exact set of hints
|
|
11
|
-
* that ship.
|
|
12
|
-
*
|
|
13
|
-
* Reference: `apimapper-mcp/src/modules/apimapper/client.ts:hintFor`
|
|
14
|
-
* (Wave G.6.1 — same shape, ported for the YOOtheme Builder REST API).
|
|
15
|
-
*
|
|
16
|
-
* @license MIT
|
|
17
|
-
*/
|
|
18
|
-
/**
|
|
19
|
-
* Map an HTTP status into a `YtbErrorCode`.
|
|
20
|
-
*
|
|
21
|
-
* Special-cases:
|
|
22
|
-
* - 401 with `hasWwwAuthenticate: false` → `auth_missing`
|
|
23
|
-
* - 401 with `hasWwwAuthenticate: true` → `auth_invalid` (default)
|
|
24
|
-
* - 412 (Precondition Failed) is treated as `conflict_etag` alongside 409.
|
|
25
|
-
* - Status 0 (no response) → `network`.
|
|
26
|
-
* - Anything we don't recognise (incl. 2xx) → `server_error` so the agent
|
|
27
|
-
* sees a non-empty hint rather than silently swallowing.
|
|
28
|
-
*/
|
|
29
|
-
export function classify(status, options = {}) {
|
|
30
|
-
if (status === 0)
|
|
31
|
-
return 'network';
|
|
32
|
-
if (status === 401) {
|
|
33
|
-
return options.hasWwwAuthenticate === false ? 'auth_missing' : 'auth_invalid';
|
|
34
|
-
}
|
|
35
|
-
if (status === 403)
|
|
36
|
-
return 'forbidden';
|
|
37
|
-
if (status === 404)
|
|
38
|
-
return 'not_found';
|
|
39
|
-
if (status === 409 || status === 412)
|
|
40
|
-
return 'conflict_etag';
|
|
41
|
-
if (status === 422)
|
|
42
|
-
return 'validation_error';
|
|
43
|
-
if (status === 429)
|
|
44
|
-
return 'rate_limit';
|
|
45
|
-
if (status >= 500)
|
|
46
|
-
return 'server_error';
|
|
47
|
-
return 'server_error';
|
|
48
|
-
}
|
|
49
|
-
/**
|
|
50
|
-
* Return a focused hint describing how the agent (or the user) can
|
|
51
|
-
* recover from a given error code. Always non-empty.
|
|
52
|
-
*/
|
|
53
|
-
export function hintFor(code) {
|
|
54
|
-
switch (code) {
|
|
55
|
-
case 'auth_invalid':
|
|
56
|
-
return ('Bearer key rejected (HTTP 401, key signature invalid or revoked). ' +
|
|
57
|
-
'Open wp-admin → Tools → "YT Builder MCP" → Bearer Keys, regenerate the ' +
|
|
58
|
-
'key, and update YTB_MCP_BEARER_TOKEN in your AI-client config. ' +
|
|
59
|
-
'Then restart the client.');
|
|
60
|
-
case 'auth_missing':
|
|
61
|
-
return ('No Bearer credential sent (HTTP 401 without WWW-Authenticate echo). ' +
|
|
62
|
-
'Set the YTB_MCP_BEARER_TOKEN environment variable in your AI-client ' +
|
|
63
|
-
'MCP configuration to a key generated by the plugin Settings page.');
|
|
64
|
-
case 'forbidden':
|
|
65
|
-
return ('Permission denied (HTTP 403). Your Bearer key lacks the required ' +
|
|
66
|
-
'scope for this operation. Regenerate a key with the correct ' +
|
|
67
|
-
'scope (read / write / admin) in the plugin Settings page.');
|
|
68
|
-
case 'not_found':
|
|
69
|
-
return ('Resource not found (HTTP 404). Use the matching `*_list` tool ' +
|
|
70
|
-
'(yootheme_builder_pages_list, yootheme_builder_element_list, …) ' +
|
|
71
|
-
'to discover valid IDs / paths. IDs are case-sensitive.');
|
|
72
|
-
case 'conflict_etag':
|
|
73
|
-
return ('Optimistic-lock failed (HTTP 409/412). Another writer changed ' +
|
|
74
|
-
'the state since you fetched it. Call yootheme_builder_get_etag ' +
|
|
75
|
-
'again to get the fresh ETag, then retry your write with that ETag.');
|
|
76
|
-
case 'validation_error':
|
|
77
|
-
return ('Request body failed validation (HTTP 422). Re-check the tool\'s ' +
|
|
78
|
-
'inputSchema and the element-type schema via ' +
|
|
79
|
-
'yootheme_builder_element_type_get_schema for valid `props` keys.');
|
|
80
|
-
case 'rate_limit':
|
|
81
|
-
return ('Rate limit reached (HTTP 429). This is likely Cloudflare or ' +
|
|
82
|
-
'another WAF in front of WordPress, not the plugin itself. Wait ' +
|
|
83
|
-
'a few seconds and retry. If persistent, check the WAF rate-limit ' +
|
|
84
|
-
'rule in your Cloudflare dashboard.');
|
|
85
|
-
case 'server_error':
|
|
86
|
-
return ('Upstream server error (HTTP 5xx or unexpected status). Retry ' +
|
|
87
|
-
'after a short delay; if it persists, check the WordPress error ' +
|
|
88
|
-
'log (wp-content/debug.log) for the underlying PHP exception.');
|
|
89
|
-
case 'network':
|
|
90
|
-
return ('Network or timeout error reaching WordPress. Verify ' +
|
|
91
|
-
'YTB_MCP_WP_URL is correct and reachable from this host (try ' +
|
|
92
|
-
'`curl <YTB_MCP_WP_URL>/wp-json/yt-builder-mcp/v1/health`).');
|
|
93
|
-
}
|
|
94
|
-
}
|
|
95
|
-
//# sourceMappingURL=hints.js.map
|
package/dist/errors/hints.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"hints.js","sourceRoot":"","sources":["../../src/errors/hints.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;GAgBG;AA6BH;;;;;;;;;;GAUG;AACH,MAAM,UAAU,QAAQ,CAAC,MAAc,EAAE,UAA2B,EAAE;IAClE,IAAI,MAAM,KAAK,CAAC;QAAE,OAAO,SAAS,CAAC;IACnC,IAAI,MAAM,KAAK,GAAG,EAAE,CAAC;QACjB,OAAO,OAAO,CAAC,kBAAkB,KAAK,KAAK,CAAC,CAAC,CAAC,cAAc,CAAC,CAAC,CAAC,cAAc,CAAC;IAClF,CAAC;IACD,IAAI,MAAM,KAAK,GAAG;QAAE,OAAO,WAAW,CAAC;IACvC,IAAI,MAAM,KAAK,GAAG;QAAE,OAAO,WAAW,CAAC;IACvC,IAAI,MAAM,KAAK,GAAG,IAAI,MAAM,KAAK,GAAG;QAAE,OAAO,eAAe,CAAC;IAC7D,IAAI,MAAM,KAAK,GAAG;QAAE,OAAO,kBAAkB,CAAC;IAC9C,IAAI,MAAM,KAAK,GAAG;QAAE,OAAO,YAAY,CAAC;IACxC,IAAI,MAAM,IAAI,GAAG;QAAE,OAAO,cAAc,CAAC;IACzC,OAAO,cAAc,CAAC;AAC1B,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,OAAO,CAAC,IAAkB;IACtC,QAAQ,IAAI,EAAE,CAAC;QACX,KAAK,cAAc;YACf,OAAO,CACH,oEAAoE;gBACpE,yEAAyE;gBACzE,iEAAiE;gBACjE,0BAA0B,CAC7B,CAAC;QACN,KAAK,cAAc;YACf,OAAO,CACH,sEAAsE;gBACtE,sEAAsE;gBACtE,mEAAmE,CACtE,CAAC;QACN,KAAK,WAAW;YACZ,OAAO,CACH,mEAAmE;gBACnE,8DAA8D;gBAC9D,2DAA2D,CAC9D,CAAC;QACN,KAAK,WAAW;YACZ,OAAO,CACH,gEAAgE;gBAChE,kEAAkE;gBAClE,wDAAwD,CAC3D,CAAC;QACN,KAAK,eAAe;YAChB,OAAO,CACH,gEAAgE;gBAChE,iEAAiE;gBACjE,oEAAoE,CACvE,CAAC;QACN,KAAK,kBAAkB;YACnB,OAAO,CACH,kEAAkE;gBAClE,8CAA8C;gBAC9C,kEAAkE,CACrE,CAAC;QACN,KAAK,YAAY;YACb,OAAO,CACH,8DAA8D;gBAC9D,iEAAiE;gBACjE,mEAAmE;gBACnE,oCAAoC,CACvC,CAAC;QACN,KAAK,cAAc;YACf,OAAO,CACH,+DAA+D;gBAC/D,iEAAiE;gBACjE,8DAA8D,CACjE,CAAC;QACN,KAAK,SAAS;YACV,OAAO,CACH,sDAAsD;gBACtD,8DAA8D;gBAC9D,4DAA4D,CAC/D,CAAC;IACV,CAAC;AACL,CAAC"}
|
package/dist/errors/mask.d.ts
DELETED
|
@@ -1,35 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Secret-masking helpers — Wave G.6.2.
|
|
3
|
-
*
|
|
4
|
-
* `maskBearerToken` rewrites any `Bearer <token>` substring to
|
|
5
|
-
* `Bearer ***masked***`. `sanitizeForLogs` additionally truncates very
|
|
6
|
-
* long strings so a paste of a multi-MB stack trace can't blow the
|
|
7
|
-
* context budget.
|
|
8
|
-
*
|
|
9
|
-
* Defense-in-depth: this is the single choke-point for any string
|
|
10
|
-
* (error message, response body excerpt, log line) that crosses the
|
|
11
|
-
* MCP boundary into the LLM's view.
|
|
12
|
-
*
|
|
13
|
-
* @license MIT
|
|
14
|
-
*/
|
|
15
|
-
/** Maximum length for a sanitised log string. Anything longer is truncated. */
|
|
16
|
-
export declare const LOG_TRUNCATION_LIMIT = 2000;
|
|
17
|
-
/**
|
|
18
|
-
* Replace every `Bearer <opaque-token>` substring with `Bearer ***masked***`.
|
|
19
|
-
*
|
|
20
|
-
* Token-shape is intentionally permissive — we'd rather over-mask than
|
|
21
|
-
* leak. Any non-whitespace run following the literal `Bearer ` is treated
|
|
22
|
-
* as the token and replaced.
|
|
23
|
-
*/
|
|
24
|
-
export declare function maskBearerToken(input: string): string;
|
|
25
|
-
/**
|
|
26
|
-
* Sanitise a string before it joins the LLM-visible output:
|
|
27
|
-
* 1. mask any Bearer tokens
|
|
28
|
-
* 2. truncate to `LOG_TRUNCATION_LIMIT` chars with a clear suffix
|
|
29
|
-
*
|
|
30
|
-
* Non-string inputs (null / undefined) collapse to an empty string —
|
|
31
|
-
* caller code typically passes `error?.message` and `?? ''` is a common
|
|
32
|
-
* upstream pattern.
|
|
33
|
-
*/
|
|
34
|
-
export declare function sanitizeForLogs(input: string): string;
|
|
35
|
-
//# sourceMappingURL=mask.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"mask.d.ts","sourceRoot":"","sources":["../../src/errors/mask.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AAEH,+EAA+E;AAC/E,eAAO,MAAM,oBAAoB,OAAO,CAAC;AAEzC;;;;;;GAMG;AACH,wBAAgB,eAAe,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAIrD;AAED;;;;;;;;GAQG;AACH,wBAAgB,eAAe,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAMrD"}
|
package/dist/errors/mask.js
DELETED
|
@@ -1,49 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Secret-masking helpers — Wave G.6.2.
|
|
3
|
-
*
|
|
4
|
-
* `maskBearerToken` rewrites any `Bearer <token>` substring to
|
|
5
|
-
* `Bearer ***masked***`. `sanitizeForLogs` additionally truncates very
|
|
6
|
-
* long strings so a paste of a multi-MB stack trace can't blow the
|
|
7
|
-
* context budget.
|
|
8
|
-
*
|
|
9
|
-
* Defense-in-depth: this is the single choke-point for any string
|
|
10
|
-
* (error message, response body excerpt, log line) that crosses the
|
|
11
|
-
* MCP boundary into the LLM's view.
|
|
12
|
-
*
|
|
13
|
-
* @license MIT
|
|
14
|
-
*/
|
|
15
|
-
/** Maximum length for a sanitised log string. Anything longer is truncated. */
|
|
16
|
-
export const LOG_TRUNCATION_LIMIT = 2000;
|
|
17
|
-
/**
|
|
18
|
-
* Replace every `Bearer <opaque-token>` substring with `Bearer ***masked***`.
|
|
19
|
-
*
|
|
20
|
-
* Token-shape is intentionally permissive — we'd rather over-mask than
|
|
21
|
-
* leak. Any non-whitespace run following the literal `Bearer ` is treated
|
|
22
|
-
* as the token and replaced.
|
|
23
|
-
*/
|
|
24
|
-
export function maskBearerToken(input) {
|
|
25
|
-
if (input === '')
|
|
26
|
-
return '';
|
|
27
|
-
// The `g` flag handles repeated occurrences in one string.
|
|
28
|
-
return input.replace(/Bearer\s+\S+/g, 'Bearer ***masked***');
|
|
29
|
-
}
|
|
30
|
-
/**
|
|
31
|
-
* Sanitise a string before it joins the LLM-visible output:
|
|
32
|
-
* 1. mask any Bearer tokens
|
|
33
|
-
* 2. truncate to `LOG_TRUNCATION_LIMIT` chars with a clear suffix
|
|
34
|
-
*
|
|
35
|
-
* Non-string inputs (null / undefined) collapse to an empty string —
|
|
36
|
-
* caller code typically passes `error?.message` and `?? ''` is a common
|
|
37
|
-
* upstream pattern.
|
|
38
|
-
*/
|
|
39
|
-
export function sanitizeForLogs(input) {
|
|
40
|
-
if (input === null || input === undefined)
|
|
41
|
-
return '';
|
|
42
|
-
if (input === '')
|
|
43
|
-
return '';
|
|
44
|
-
const masked = maskBearerToken(input);
|
|
45
|
-
if (masked.length <= LOG_TRUNCATION_LIMIT)
|
|
46
|
-
return masked;
|
|
47
|
-
return masked.slice(0, LOG_TRUNCATION_LIMIT) + '... [truncated]';
|
|
48
|
-
}
|
|
49
|
-
//# sourceMappingURL=mask.js.map
|
package/dist/errors/mask.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"mask.js","sourceRoot":"","sources":["../../src/errors/mask.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AAEH,+EAA+E;AAC/E,MAAM,CAAC,MAAM,oBAAoB,GAAG,IAAI,CAAC;AAEzC;;;;;;GAMG;AACH,MAAM,UAAU,eAAe,CAAC,KAAa;IACzC,IAAI,KAAK,KAAK,EAAE;QAAE,OAAO,EAAE,CAAC;IAC5B,2DAA2D;IAC3D,OAAO,KAAK,CAAC,OAAO,CAAC,eAAe,EAAE,qBAAqB,CAAC,CAAC;AACjE,CAAC;AAED;;;;;;;;GAQG;AACH,MAAM,UAAU,eAAe,CAAC,KAAa;IACzC,IAAI,KAAK,KAAK,IAAI,IAAI,KAAK,KAAK,SAAS;QAAE,OAAO,EAAE,CAAC;IACrD,IAAI,KAAK,KAAK,EAAE;QAAE,OAAO,EAAE,CAAC;IAC5B,MAAM,MAAM,GAAG,eAAe,CAAC,KAAK,CAAC,CAAC;IACtC,IAAI,MAAM,CAAC,MAAM,IAAI,oBAAoB;QAAE,OAAO,MAAM,CAAC;IACzD,OAAO,MAAM,CAAC,KAAK,CAAC,CAAC,EAAE,oBAAoB,CAAC,GAAG,iBAAiB,CAAC;AACrE,CAAC"}
|
|
@@ -1,31 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* `sanitizeSecrets` — recursive value-walker that swaps any value at a
|
|
3
|
-
* known-secret key for the sentinel `[REDACTED]`.
|
|
4
|
-
*
|
|
5
|
-
* Wave G.6.4. Pattern ported verbatim from
|
|
6
|
-
* `apimapper-mcp/src/modules/apimapper/credential-sanitizer.ts` because
|
|
7
|
-
* it's the same defense-in-depth shape and the apimapper version is
|
|
8
|
-
* audit-hardened (A4 round 1 + 2).
|
|
9
|
-
*
|
|
10
|
-
* Used on both the error-path (RestError.body excerpts) AND the
|
|
11
|
-
* success-path (jsonResult / structuredResult payloads in
|
|
12
|
-
* `tool-builder.ts`) so a regressing REST handler — or a logging path —
|
|
13
|
-
* can never leak `oauth_refresh_token` / `auth_data` / `bearer` etc.
|
|
14
|
-
* into the LLM's context.
|
|
15
|
-
*
|
|
16
|
-
* Key-list intentionally mirrors apimapper-mcp; review both together
|
|
17
|
-
* when extending.
|
|
18
|
-
*
|
|
19
|
-
* @license MIT
|
|
20
|
-
*/
|
|
21
|
-
/**
|
|
22
|
-
* Recursively walk any JSON-serialisable value and redact any nested
|
|
23
|
-
* value whose key matches a known-secret name. Returns a fresh tree —
|
|
24
|
-
* the input is never mutated.
|
|
25
|
-
*
|
|
26
|
-
* Primitives (string / number / boolean / null / undefined) pass through
|
|
27
|
-
* unchanged. Arrays are mapped element-wise. Objects are reconstructed
|
|
28
|
-
* with `[REDACTED]` substituted at any secret key.
|
|
29
|
-
*/
|
|
30
|
-
export declare function sanitizeSecrets<T>(input: T): T;
|
|
31
|
-
//# sourceMappingURL=sanitize.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"sanitize.d.ts","sourceRoot":"","sources":["../../src/errors/sanitize.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;GAmBG;AA6CH;;;;;;;;GAQG;AACH,wBAAgB,eAAe,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,GAAG,CAAC,CAgB9C"}
|
package/dist/errors/sanitize.js
DELETED
|
@@ -1,90 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* `sanitizeSecrets` — recursive value-walker that swaps any value at a
|
|
3
|
-
* known-secret key for the sentinel `[REDACTED]`.
|
|
4
|
-
*
|
|
5
|
-
* Wave G.6.4. Pattern ported verbatim from
|
|
6
|
-
* `apimapper-mcp/src/modules/apimapper/credential-sanitizer.ts` because
|
|
7
|
-
* it's the same defense-in-depth shape and the apimapper version is
|
|
8
|
-
* audit-hardened (A4 round 1 + 2).
|
|
9
|
-
*
|
|
10
|
-
* Used on both the error-path (RestError.body excerpts) AND the
|
|
11
|
-
* success-path (jsonResult / structuredResult payloads in
|
|
12
|
-
* `tool-builder.ts`) so a regressing REST handler — or a logging path —
|
|
13
|
-
* can never leak `oauth_refresh_token` / `auth_data` / `bearer` etc.
|
|
14
|
-
* into the LLM's context.
|
|
15
|
-
*
|
|
16
|
-
* Key-list intentionally mirrors apimapper-mcp; review both together
|
|
17
|
-
* when extending.
|
|
18
|
-
*
|
|
19
|
-
* @license MIT
|
|
20
|
-
*/
|
|
21
|
-
const SECRET_KEYS = new Set([
|
|
22
|
-
// Generic auth tokens
|
|
23
|
-
'token',
|
|
24
|
-
'bearer',
|
|
25
|
-
'bearer_token',
|
|
26
|
-
'bearerToken',
|
|
27
|
-
// Plugin-internal auth blob
|
|
28
|
-
'auth_data',
|
|
29
|
-
'authData',
|
|
30
|
-
// OAuth flows
|
|
31
|
-
'oauth_refresh_token',
|
|
32
|
-
'oauthRefreshToken',
|
|
33
|
-
'refresh_token',
|
|
34
|
-
'refreshToken',
|
|
35
|
-
'access_token',
|
|
36
|
-
'accessToken',
|
|
37
|
-
// App-secret pairs
|
|
38
|
-
'client_secret',
|
|
39
|
-
'clientSecret',
|
|
40
|
-
'api_key',
|
|
41
|
-
'apiKey',
|
|
42
|
-
'password',
|
|
43
|
-
'secret',
|
|
44
|
-
'secrets',
|
|
45
|
-
'raw_secret',
|
|
46
|
-
'rawSecret',
|
|
47
|
-
// Defense-in-depth additions (cf. apimapper A4 audit round 2)
|
|
48
|
-
'private_key',
|
|
49
|
-
'privateKey',
|
|
50
|
-
'signing_key',
|
|
51
|
-
'signingKey',
|
|
52
|
-
'webhook_secret',
|
|
53
|
-
'webhookSecret',
|
|
54
|
-
'consumer_secret',
|
|
55
|
-
'consumerSecret',
|
|
56
|
-
'consumer_key',
|
|
57
|
-
'consumerKey',
|
|
58
|
-
'session_token',
|
|
59
|
-
'sessionToken',
|
|
60
|
-
'id_token',
|
|
61
|
-
'idToken',
|
|
62
|
-
]);
|
|
63
|
-
/**
|
|
64
|
-
* Recursively walk any JSON-serialisable value and redact any nested
|
|
65
|
-
* value whose key matches a known-secret name. Returns a fresh tree —
|
|
66
|
-
* the input is never mutated.
|
|
67
|
-
*
|
|
68
|
-
* Primitives (string / number / boolean / null / undefined) pass through
|
|
69
|
-
* unchanged. Arrays are mapped element-wise. Objects are reconstructed
|
|
70
|
-
* with `[REDACTED]` substituted at any secret key.
|
|
71
|
-
*/
|
|
72
|
-
export function sanitizeSecrets(input) {
|
|
73
|
-
if (Array.isArray(input)) {
|
|
74
|
-
return input.map((item) => sanitizeSecrets(item));
|
|
75
|
-
}
|
|
76
|
-
if (input !== null && typeof input === 'object') {
|
|
77
|
-
const out = {};
|
|
78
|
-
for (const [k, v] of Object.entries(input)) {
|
|
79
|
-
if (SECRET_KEYS.has(k)) {
|
|
80
|
-
out[k] = '[REDACTED]';
|
|
81
|
-
}
|
|
82
|
-
else {
|
|
83
|
-
out[k] = sanitizeSecrets(v);
|
|
84
|
-
}
|
|
85
|
-
}
|
|
86
|
-
return out;
|
|
87
|
-
}
|
|
88
|
-
return input;
|
|
89
|
-
}
|
|
90
|
-
//# sourceMappingURL=sanitize.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"sanitize.js","sourceRoot":"","sources":["../../src/errors/sanitize.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;GAmBG;AAEH,MAAM,WAAW,GAAG,IAAI,GAAG,CAAS;IAChC,sBAAsB;IACtB,OAAO;IACP,QAAQ;IACR,cAAc;IACd,aAAa;IACb,4BAA4B;IAC5B,WAAW;IACX,UAAU;IACV,cAAc;IACd,qBAAqB;IACrB,mBAAmB;IACnB,eAAe;IACf,cAAc;IACd,cAAc;IACd,aAAa;IACb,mBAAmB;IACnB,eAAe;IACf,cAAc;IACd,SAAS;IACT,QAAQ;IACR,UAAU;IACV,QAAQ;IACR,SAAS;IACT,YAAY;IACZ,WAAW;IACX,8DAA8D;IAC9D,aAAa;IACb,YAAY;IACZ,aAAa;IACb,YAAY;IACZ,gBAAgB;IAChB,eAAe;IACf,iBAAiB;IACjB,gBAAgB;IAChB,cAAc;IACd,aAAa;IACb,eAAe;IACf,cAAc;IACd,UAAU;IACV,SAAS;CACZ,CAAC,CAAC;AAEH;;;;;;;;GAQG;AACH,MAAM,UAAU,eAAe,CAAI,KAAQ;IACvC,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC;QACvB,OAAO,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,eAAe,CAAC,IAAI,CAAC,CAAiB,CAAC;IACtE,CAAC;IACD,IAAI,KAAK,KAAK,IAAI,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE,CAAC;QAC9C,MAAM,GAAG,GAA4B,EAAE,CAAC;QACxC,KAAK,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,KAAgC,CAAC,EAAE,CAAC;YACpE,IAAI,WAAW,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC;gBACrB,GAAG,CAAC,CAAC,CAAC,GAAG,YAAY,CAAC;YAC1B,CAAC;iBAAM,CAAC;gBACJ,GAAG,CAAC,CAAC,CAAC,GAAG,eAAe,CAAC,CAAC,CAAC,CAAC;YAChC,CAAC;QACL,CAAC;QACD,OAAO,GAAmB,CAAC;IAC/B,CAAC;IACD,OAAO,KAAK,CAAC;AACjB,CAAC"}
|