@wootsup/mcp 0.1.0 → 0.4.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 +157 -83
- package/README.md +31 -27
- package/SECURITY.md +15 -6
- package/dist/auth/keychain.d.ts +27 -1
- package/dist/auth/keychain.js +48 -2
- package/dist/auth/keychain.js.map +1 -1
- package/dist/catalog/build-catalog.d.ts +31 -0
- package/dist/catalog/build-catalog.js +68 -0
- package/dist/catalog/build-catalog.js.map +1 -0
- package/dist/cli-hint.d.ts +22 -0
- package/dist/cli-hint.js +55 -0
- package/dist/cli-hint.js.map +1 -0
- package/dist/index.js +129 -22
- package/dist/index.js.map +1 -1
- package/dist/install-skill.js +1 -1
- package/dist/modules/apimapper/auto-layout.d.ts +21 -0
- package/dist/modules/apimapper/auto-layout.js +54 -0
- package/dist/modules/apimapper/auto-layout.js.map +1 -0
- package/dist/modules/apimapper/cache.js +25 -17
- package/dist/modules/apimapper/cache.js.map +1 -1
- package/dist/modules/apimapper/client.d.ts +115 -4
- package/dist/modules/apimapper/client.js +699 -304
- package/dist/modules/apimapper/client.js.map +1 -1
- package/dist/modules/apimapper/connections-format.d.ts +31 -1
- package/dist/modules/apimapper/connections-format.js +97 -5
- package/dist/modules/apimapper/connections-format.js.map +1 -1
- package/dist/modules/apimapper/connections.d.ts +9 -7
- package/dist/modules/apimapper/connections.js +449 -127
- package/dist/modules/apimapper/connections.js.map +1 -1
- package/dist/modules/apimapper/credential-sanitizer.d.ts +5 -0
- package/dist/modules/apimapper/credential-sanitizer.js +60 -1
- package/dist/modules/apimapper/credential-sanitizer.js.map +1 -1
- package/dist/modules/apimapper/credentials.js +105 -61
- package/dist/modules/apimapper/credentials.js.map +1 -1
- package/dist/modules/apimapper/diagnose.js +21 -2
- package/dist/modules/apimapper/diagnose.js.map +1 -1
- package/dist/modules/apimapper/elicitation.d.ts +29 -0
- package/dist/modules/apimapper/elicitation.js +62 -0
- package/dist/modules/apimapper/elicitation.js.map +1 -1
- package/dist/modules/apimapper/example-extract.d.ts +13 -0
- package/dist/modules/apimapper/example-extract.js +111 -0
- package/dist/modules/apimapper/example-extract.js.map +1 -0
- package/dist/modules/apimapper/filter-operators.d.ts +24 -0
- package/dist/modules/apimapper/filter-operators.js +103 -0
- package/dist/modules/apimapper/filter-operators.js.map +1 -0
- package/dist/modules/apimapper/flows-format.js +92 -22
- package/dist/modules/apimapper/flows-format.js.map +1 -1
- package/dist/modules/apimapper/flows.d.ts +8 -7
- package/dist/modules/apimapper/flows.js +275 -120
- package/dist/modules/apimapper/flows.js.map +1 -1
- package/dist/modules/apimapper/gateway/advanced-read-tool.d.ts +9 -0
- package/dist/modules/apimapper/gateway/advanced-read-tool.js +172 -0
- package/dist/modules/apimapper/gateway/advanced-read-tool.js.map +1 -0
- package/dist/modules/apimapper/gateway/advanced-tool.js +66 -106
- package/dist/modules/apimapper/gateway/advanced-tool.js.map +1 -1
- package/dist/modules/apimapper/gateway/collect-module-tools.d.ts +17 -0
- package/dist/modules/apimapper/gateway/collect-module-tools.js +44 -0
- package/dist/modules/apimapper/gateway/collect-module-tools.js.map +1 -0
- package/dist/modules/apimapper/gateway/essentials.d.ts +1 -1
- package/dist/modules/apimapper/gateway/essentials.js +21 -2
- package/dist/modules/apimapper/gateway/essentials.js.map +1 -1
- package/dist/modules/apimapper/gateway/gateway-shared.d.ts +21 -0
- package/dist/modules/apimapper/gateway/gateway-shared.js +124 -0
- package/dist/modules/apimapper/gateway/gateway-shared.js.map +1 -0
- package/dist/modules/apimapper/gateway/test-support.d.ts +1 -17
- package/dist/modules/apimapper/gateway/test-support.js +4 -33
- package/dist/modules/apimapper/gateway/test-support.js.map +1 -1
- package/dist/modules/apimapper/get-skill-cores.d.ts +4 -0
- package/dist/modules/apimapper/get-skill-cores.js +220 -0
- package/dist/modules/apimapper/get-skill-cores.js.map +1 -0
- package/dist/modules/apimapper/get-skill.d.ts +1 -1
- package/dist/modules/apimapper/get-skill.js +74 -9
- package/dist/modules/apimapper/get-skill.js.map +1 -1
- package/dist/modules/apimapper/graph-builder.d.ts +85 -2
- package/dist/modules/apimapper/graph-builder.js +151 -15
- package/dist/modules/apimapper/graph-builder.js.map +1 -1
- package/dist/modules/apimapper/graph.js +152 -48
- package/dist/modules/apimapper/graph.js.map +1 -1
- package/dist/modules/apimapper/index.js +27 -13
- package/dist/modules/apimapper/index.js.map +1 -1
- package/dist/modules/apimapper/jmespath-test.d.ts +4 -0
- package/dist/modules/apimapper/jmespath-test.js +152 -0
- package/dist/modules/apimapper/jmespath-test.js.map +1 -0
- package/dist/modules/apimapper/library.js +553 -88
- package/dist/modules/apimapper/library.js.map +1 -1
- package/dist/modules/apimapper/license.js +12 -36
- package/dist/modules/apimapper/license.js.map +1 -1
- package/dist/modules/apimapper/list-footer.d.ts +27 -0
- package/dist/modules/apimapper/list-footer.js +57 -0
- package/dist/modules/apimapper/list-footer.js.map +1 -0
- package/dist/modules/apimapper/local-sources.js +100 -57
- package/dist/modules/apimapper/local-sources.js.map +1 -1
- package/dist/modules/apimapper/mcp-client-identity.d.ts +32 -0
- package/dist/modules/apimapper/mcp-client-identity.js +70 -0
- package/dist/modules/apimapper/mcp-client-identity.js.map +1 -0
- package/dist/modules/apimapper/merge-constants.d.ts +6 -0
- package/dist/modules/apimapper/merge-constants.js +26 -0
- package/dist/modules/apimapper/merge-constants.js.map +1 -0
- package/dist/modules/apimapper/misc.js +13 -27
- package/dist/modules/apimapper/misc.js.map +1 -1
- package/dist/modules/apimapper/node-schema.d.ts +52 -2
- package/dist/modules/apimapper/node-schema.js +95 -4
- package/dist/modules/apimapper/node-schema.js.map +1 -1
- package/dist/modules/apimapper/onboarding.d.ts +59 -1
- package/dist/modules/apimapper/onboarding.js +231 -28
- package/dist/modules/apimapper/onboarding.js.map +1 -1
- package/dist/modules/apimapper/read-cache.d.ts +16 -3
- package/dist/modules/apimapper/read-cache.js +59 -4
- package/dist/modules/apimapper/read-cache.js.map +1 -1
- package/dist/modules/apimapper/render/index.js +26 -5
- package/dist/modules/apimapper/render/index.js.map +1 -1
- package/dist/modules/apimapper/resource-id.d.ts +13 -0
- package/dist/modules/apimapper/resource-id.js +69 -0
- package/dist/modules/apimapper/resource-id.js.map +1 -0
- package/dist/modules/apimapper/schema.js +9 -18
- package/dist/modules/apimapper/schema.js.map +1 -1
- package/dist/modules/apimapper/settings.js +49 -52
- package/dist/modules/apimapper/settings.js.map +1 -1
- package/dist/modules/apimapper/sites-tools.d.ts +29 -0
- package/dist/modules/apimapper/sites-tools.js +165 -0
- package/dist/modules/apimapper/sites-tools.js.map +1 -0
- package/dist/modules/apimapper/tool-result.d.ts +66 -0
- package/dist/modules/apimapper/tool-result.js +125 -0
- package/dist/modules/apimapper/tool-result.js.map +1 -0
- package/dist/modules/apimapper/toolslist-size.d.ts +12 -11
- package/dist/modules/apimapper/toolslist-size.js +34 -21
- package/dist/modules/apimapper/toolslist-size.js.map +1 -1
- package/dist/modules/apimapper/types.d.ts +34 -0
- package/dist/modules/apimapper/types.js +1 -1
- package/dist/modules/apimapper/types.js.map +1 -1
- package/dist/modules/apimapper/whitelist-drift.d.ts +85 -0
- package/dist/modules/apimapper/whitelist-drift.js +375 -0
- package/dist/modules/apimapper/whitelist-drift.js.map +1 -0
- package/dist/modules/apimapper/workflows.js +302 -58
- package/dist/modules/apimapper/workflows.js.map +1 -1
- package/dist/modules/apimapper/yootheme-binding.d.ts +35 -0
- package/dist/modules/apimapper/yootheme-binding.js +267 -0
- package/dist/modules/apimapper/yootheme-binding.js.map +1 -0
- package/dist/platform/index.d.ts +56 -0
- package/dist/platform/index.js +158 -2
- package/dist/platform/index.js.map +1 -1
- package/dist/proxy/bridge.d.ts +35 -0
- package/dist/proxy/bridge.js +129 -0
- package/dist/proxy/bridge.js.map +1 -0
- package/dist/proxy/mode.d.ts +9 -0
- package/dist/proxy/mode.js +20 -0
- package/dist/proxy/mode.js.map +1 -0
- package/dist/setup/detect-clients.d.ts +40 -1
- package/dist/setup/detect-clients.js +148 -1
- package/dist/setup/detect-clients.js.map +1 -1
- package/dist/setup/probe-auth.d.ts +51 -0
- package/dist/setup/probe-auth.js +141 -0
- package/dist/setup/probe-auth.js.map +1 -0
- package/dist/setup/probe-handshake.js +40 -7
- package/dist/setup/probe-handshake.js.map +1 -1
- package/dist/setup/remove-config.d.ts +8 -0
- package/dist/setup/remove-config.js +145 -0
- package/dist/setup/remove-config.js.map +1 -0
- package/dist/setup/uninstall.d.ts +34 -0
- package/dist/setup/uninstall.js +147 -0
- package/dist/setup/uninstall.js.map +1 -0
- package/dist/setup-cli.d.ts +16 -0
- package/dist/setup-cli.js +63 -1
- package/dist/setup-cli.js.map +1 -1
- package/dist/sites/loader.d.ts +48 -0
- package/dist/sites/loader.js +134 -0
- package/dist/sites/loader.js.map +1 -0
- package/dist/sites/schema.d.ts +69 -0
- package/dist/sites/schema.js +71 -0
- package/dist/sites/schema.js.map +1 -0
- package/dist/sites/secret-resolver.d.ts +47 -0
- package/dist/sites/secret-resolver.js +150 -0
- package/dist/sites/secret-resolver.js.map +1 -0
- package/dist/skill-instructions.d.ts +14 -1
- package/dist/skill-instructions.js +35 -6
- package/dist/skill-instructions.js.map +1 -1
- package/dist/transports/stdio.js +4 -4
- package/dist/transports/stdio.js.map +1 -1
- package/dist/uninstall-skill.d.ts +27 -0
- package/dist/uninstall-skill.js +89 -0
- package/dist/uninstall-skill.js.map +1 -0
- package/docs/architecture.md +21 -21
- package/docs/customgraph-internal-migration.md +4 -4
- package/docs/security.md +2 -21
- package/docs/tools.md +40 -12
- package/manifest.json +77 -79
- package/package.json +69 -65
- package/skills/apimapper/SKILL.md +128 -7
- package/skills/apimapper/reference/conditional-style-multi-items.md +114 -0
- package/skills/apimapper/reference/dynamize-existing-layout.md +158 -0
- package/skills/apimapper/reference/jmespath-cookbook.md +241 -0
- package/skills/apimapper/reference/jmespath-pitfalls.md +189 -0
- package/skills/apimapper/reference/joomla.md +1 -1
- package/skills/apimapper/reference/library-template-discovery.md +65 -0
- package/skills/apimapper/reference/merge-two-sources-on-key.md +204 -0
- package/skills/apimapper/reference/oauth.md +143 -52
- package/skills/apimapper/reference/troubleshooting.md +22 -2
- package/skills/apimapper/reference/yootheme-source-to-builder-handoff.md +348 -0
- package/skills/apimapper/reference/yootheme.md +75 -44
- package/dist/auth/oauth-provider.d.ts +0 -68
- package/dist/auth/oauth-provider.js +0 -232
- package/dist/auth/oauth-provider.js.map +0 -1
- package/dist/server-http.d.ts +0 -22
- package/dist/server-http.js +0 -159
- package/dist/server-http.js.map +0 -1
- package/dist/transports/http.d.ts +0 -29
- package/dist/transports/http.js +0 -267
- package/dist/transports/http.js.map +0 -1
|
@@ -0,0 +1,145 @@
|
|
|
1
|
+
// src/setup/remove-config.ts — uninstall (reverse of write-config.ts).
|
|
2
|
+
//
|
|
3
|
+
// Idempotent JSON + TOML config removers. Each remover:
|
|
4
|
+
//
|
|
5
|
+
// • deletes ONLY the named `mcpServers.<key>` entries (JSON) or
|
|
6
|
+
// `[mcp_servers.<key>]` tables (TOML), including TOML `.env` sub-tables
|
|
7
|
+
// • PRESERVES every other server + unrelated top-level config
|
|
8
|
+
// • drops an emptied `mcpServers` object (JSON) so we don't leave a
|
|
9
|
+
// dangling `{}`
|
|
10
|
+
// • writes atomically via tmp-then-rename
|
|
11
|
+
// • is a no-op (removed=false) when the file is missing or no key matched
|
|
12
|
+
//
|
|
13
|
+
// We reuse the same hand-rolled TOML block scanner shape as write-config so
|
|
14
|
+
// the two stay in lockstep without a TOML parser dependency.
|
|
15
|
+
import { existsSync, mkdirSync, readFileSync, renameSync, unlinkSync, writeFileSync, } from "node:fs";
|
|
16
|
+
import { dirname } from "node:path";
|
|
17
|
+
// ── shared fs helpers (kept local to avoid cross-module coupling) ─────────
|
|
18
|
+
function ensureDir(path) {
|
|
19
|
+
const dir = dirname(path);
|
|
20
|
+
if (!existsSync(dir))
|
|
21
|
+
mkdirSync(dir, { recursive: true });
|
|
22
|
+
}
|
|
23
|
+
function atomicWrite(path, contents) {
|
|
24
|
+
ensureDir(path);
|
|
25
|
+
const tmp = `${path}.${process.pid}.tmp`;
|
|
26
|
+
try {
|
|
27
|
+
writeFileSync(tmp, contents, "utf8");
|
|
28
|
+
renameSync(tmp, path);
|
|
29
|
+
}
|
|
30
|
+
catch (err) {
|
|
31
|
+
try {
|
|
32
|
+
if (existsSync(tmp))
|
|
33
|
+
unlinkSync(tmp);
|
|
34
|
+
}
|
|
35
|
+
catch {
|
|
36
|
+
/* ignore */
|
|
37
|
+
}
|
|
38
|
+
throw err;
|
|
39
|
+
}
|
|
40
|
+
}
|
|
41
|
+
// ── JSON remover ──────────────────────────────────────────────────────────
|
|
42
|
+
export async function removeJsonConfig(path, keys) {
|
|
43
|
+
if (!existsSync(path))
|
|
44
|
+
return { removed: false, removedKeys: [] };
|
|
45
|
+
let parsed;
|
|
46
|
+
const before = readFileSync(path, "utf8");
|
|
47
|
+
try {
|
|
48
|
+
const raw = JSON.parse(before);
|
|
49
|
+
if (raw === null || typeof raw !== "object" || Array.isArray(raw)) {
|
|
50
|
+
return { removed: false, removedKeys: [] };
|
|
51
|
+
}
|
|
52
|
+
parsed = raw;
|
|
53
|
+
}
|
|
54
|
+
catch {
|
|
55
|
+
return { removed: false, removedKeys: [] };
|
|
56
|
+
}
|
|
57
|
+
const servers = parsed.mcpServers;
|
|
58
|
+
if (!servers || typeof servers !== "object" || Array.isArray(servers)) {
|
|
59
|
+
return { removed: false, removedKeys: [] };
|
|
60
|
+
}
|
|
61
|
+
const serverMap = servers;
|
|
62
|
+
const removedKeys = [];
|
|
63
|
+
for (const key of keys) {
|
|
64
|
+
if (key in serverMap) {
|
|
65
|
+
delete serverMap[key];
|
|
66
|
+
removedKeys.push(key);
|
|
67
|
+
}
|
|
68
|
+
}
|
|
69
|
+
if (removedKeys.length === 0)
|
|
70
|
+
return { removed: false, removedKeys: [] };
|
|
71
|
+
// Drop an emptied mcpServers object entirely.
|
|
72
|
+
if (Object.keys(serverMap).length === 0) {
|
|
73
|
+
delete parsed.mcpServers;
|
|
74
|
+
}
|
|
75
|
+
else {
|
|
76
|
+
parsed.mcpServers = serverMap;
|
|
77
|
+
}
|
|
78
|
+
atomicWrite(path, `${JSON.stringify(parsed, null, 2)}\n`);
|
|
79
|
+
return { removed: true, removedKeys };
|
|
80
|
+
}
|
|
81
|
+
// ── TOML remover ──────────────────────────────────────────────────────────
|
|
82
|
+
const TOML_MANAGED_COMMENT = "# @apimapper-managed";
|
|
83
|
+
/**
|
|
84
|
+
* Find the `[mcp_servers.<key>]` block span (incl. `.env` sub-tables and a
|
|
85
|
+
* directly-preceding managed marker comment). Trailing blank lines belonging
|
|
86
|
+
* to the block are folded into the span so removal does not leave a double
|
|
87
|
+
* blank gap.
|
|
88
|
+
*/
|
|
89
|
+
function findTomlBlock(lines, key) {
|
|
90
|
+
const headerExact = `[mcp_servers.${key}]`;
|
|
91
|
+
const subPrefix = `[mcp_servers.${key}.`;
|
|
92
|
+
let headerIdx = -1;
|
|
93
|
+
for (let i = 0; i < lines.length; i++) {
|
|
94
|
+
if (lines[i].trim() === headerExact) {
|
|
95
|
+
headerIdx = i;
|
|
96
|
+
break;
|
|
97
|
+
}
|
|
98
|
+
}
|
|
99
|
+
if (headerIdx === -1)
|
|
100
|
+
return null;
|
|
101
|
+
let endExclusive = lines.length;
|
|
102
|
+
for (let i = headerIdx + 1; i < lines.length; i++) {
|
|
103
|
+
const trimmed = lines[i].trim();
|
|
104
|
+
if (trimmed.startsWith("[") && trimmed.endsWith("]")) {
|
|
105
|
+
if (trimmed.startsWith(subPrefix))
|
|
106
|
+
continue;
|
|
107
|
+
endExclusive = i;
|
|
108
|
+
break;
|
|
109
|
+
}
|
|
110
|
+
}
|
|
111
|
+
let start = headerIdx;
|
|
112
|
+
if (headerIdx > 0 && lines[headerIdx - 1].trim() === TOML_MANAGED_COMMENT) {
|
|
113
|
+
start = headerIdx - 1;
|
|
114
|
+
}
|
|
115
|
+
while (endExclusive > start &&
|
|
116
|
+
lines[endExclusive - 1] !== undefined &&
|
|
117
|
+
lines[endExclusive - 1].trim() === "") {
|
|
118
|
+
endExclusive--;
|
|
119
|
+
}
|
|
120
|
+
return { start, endExclusive };
|
|
121
|
+
}
|
|
122
|
+
export async function removeTomlConfig(path, keys) {
|
|
123
|
+
if (!existsSync(path))
|
|
124
|
+
return { removed: false, removedKeys: [] };
|
|
125
|
+
const before = readFileSync(path, "utf8");
|
|
126
|
+
let lines = before.length === 0 ? [] : before.split("\n");
|
|
127
|
+
const removedKeys = [];
|
|
128
|
+
for (const key of keys) {
|
|
129
|
+
const span = findTomlBlock(lines, key);
|
|
130
|
+
if (!span)
|
|
131
|
+
continue;
|
|
132
|
+
lines = [...lines.slice(0, span.start), ...lines.slice(span.endExclusive)];
|
|
133
|
+
removedKeys.push(key);
|
|
134
|
+
}
|
|
135
|
+
if (removedKeys.length === 0)
|
|
136
|
+
return { removed: false, removedKeys: [] };
|
|
137
|
+
let nextText = lines.join("\n");
|
|
138
|
+
// Collapse any double-blank seam left where a block was excised.
|
|
139
|
+
nextText = nextText.replace(/\n{3,}/g, "\n\n");
|
|
140
|
+
if (nextText.length > 0 && !nextText.endsWith("\n"))
|
|
141
|
+
nextText += "\n";
|
|
142
|
+
atomicWrite(path, nextText);
|
|
143
|
+
return { removed: true, removedKeys };
|
|
144
|
+
}
|
|
145
|
+
//# sourceMappingURL=remove-config.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"remove-config.js","sourceRoot":"","sources":["../../src/setup/remove-config.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
import { type InstalledClient } from "./detect-clients.js";
|
|
2
|
+
import { type RemoveConfigResult } from "./remove-config.js";
|
|
3
|
+
import { type UninstallSkillResult } from "../uninstall-skill.js";
|
|
4
|
+
export interface UninstallOptions {
|
|
5
|
+
/** Non-interactive: remove from EVERY detected client + skill, no prompts. */
|
|
6
|
+
all?: boolean;
|
|
7
|
+
/** Skip the final confirm in interactive mode. */
|
|
8
|
+
yes?: boolean;
|
|
9
|
+
}
|
|
10
|
+
export interface UninstallSelection {
|
|
11
|
+
/** IDs of clients the user wants cleaned. */
|
|
12
|
+
selectedClientIds: string[];
|
|
13
|
+
/** Whether to also remove the installed skill. */
|
|
14
|
+
removeSkill: boolean;
|
|
15
|
+
}
|
|
16
|
+
export interface UninstallDeps {
|
|
17
|
+
detectInstalledClients: () => Promise<InstalledClient[]>;
|
|
18
|
+
skillIsInstalled: () => boolean;
|
|
19
|
+
removeJsonConfig: (path: string, keys: string[]) => Promise<RemoveConfigResult>;
|
|
20
|
+
removeTomlConfig: (path: string, keys: string[]) => Promise<RemoveConfigResult>;
|
|
21
|
+
uninstallSkill: () => Promise<UninstallSkillResult>;
|
|
22
|
+
/**
|
|
23
|
+
* Drive the selection prompts. Returns the user's choices, or `null` if
|
|
24
|
+
* they cancelled. The real impl uses @clack/prompts; tests inject a fake.
|
|
25
|
+
*/
|
|
26
|
+
prompt: (input: {
|
|
27
|
+
installed: InstalledClient[];
|
|
28
|
+
skillInstalled: boolean;
|
|
29
|
+
skipConfirm: boolean;
|
|
30
|
+
}) => Promise<UninstallSelection | null>;
|
|
31
|
+
/** Sink for human-facing status lines. Default writes to stderr. */
|
|
32
|
+
log?: (line: string) => void;
|
|
33
|
+
}
|
|
34
|
+
export declare function runUninstall(options?: UninstallOptions, deps?: UninstallDeps): Promise<number>;
|
|
@@ -0,0 +1,147 @@
|
|
|
1
|
+
// src/setup/uninstall.ts — interactive uninstall orchestration.
|
|
2
|
+
//
|
|
3
|
+
// runUninstall() is the reverse of runWizard(): it detects which AI clients
|
|
4
|
+
// still carry one of OUR MCP server entries (+ whether the skill is
|
|
5
|
+
// installed), lets the user pick what to remove via a clack multiselect
|
|
6
|
+
// (ALL pre-checked = complete uninstall) plus a skill-removal toggle, then
|
|
7
|
+
// atomically removes the matched entries + (optionally) the skill.
|
|
8
|
+
//
|
|
9
|
+
// The deps bag mirrors WizardDeps so unit tests drive a deterministic
|
|
10
|
+
// detect/select/remove sequence without touching real disk or prompts.
|
|
11
|
+
import { intro, outro, multiselect, confirm, cancel, isCancel, note } from "@clack/prompts";
|
|
12
|
+
import { detectInstalledClients as defaultDetectInstalledClients, } from "./detect-clients.js";
|
|
13
|
+
import { removeJsonConfig as defaultRemoveJsonConfig, removeTomlConfig as defaultRemoveTomlConfig, } from "./remove-config.js";
|
|
14
|
+
import { uninstallSkill as defaultUninstallSkill, isSkillInstalled as defaultIsSkillInstalled, } from "../uninstall-skill.js";
|
|
15
|
+
// ── default @clack/prompts driver ─────────────────────────────────────────
|
|
16
|
+
async function defaultPromptDriver(input) {
|
|
17
|
+
intro("🧹 API Mapper MCP uninstall");
|
|
18
|
+
if (input.installed.length > 0) {
|
|
19
|
+
note(input.installed
|
|
20
|
+
.map((c) => `${c.label}: ${c.matchedKeys.join(", ")} (${c.configPath})`)
|
|
21
|
+
.join("\n"), "Found these API Mapper MCP entries");
|
|
22
|
+
}
|
|
23
|
+
let selectedClientIds = [];
|
|
24
|
+
if (input.installed.length > 0) {
|
|
25
|
+
const clientAns = await multiselect({
|
|
26
|
+
message: "Which AI clients to remove the API Mapper MCP entry from?",
|
|
27
|
+
options: input.installed.map((c) => ({
|
|
28
|
+
value: c.id,
|
|
29
|
+
label: `${c.label} (${c.configPath})`,
|
|
30
|
+
})),
|
|
31
|
+
// ALL pre-selected = complete uninstall by default.
|
|
32
|
+
initialValues: input.installed.map((c) => c.id),
|
|
33
|
+
required: false,
|
|
34
|
+
});
|
|
35
|
+
if (isCancel(clientAns)) {
|
|
36
|
+
cancel("Uninstall cancelled. Nothing was removed.");
|
|
37
|
+
return null;
|
|
38
|
+
}
|
|
39
|
+
selectedClientIds = clientAns;
|
|
40
|
+
}
|
|
41
|
+
let removeSkill = false;
|
|
42
|
+
if (input.skillInstalled) {
|
|
43
|
+
const skillAns = await confirm({
|
|
44
|
+
message: "Also remove the installed skill (~/.claude/skills/apimapper/) + the AGENTS.md marker block?",
|
|
45
|
+
initialValue: true,
|
|
46
|
+
});
|
|
47
|
+
if (isCancel(skillAns)) {
|
|
48
|
+
cancel("Uninstall cancelled. Nothing was removed.");
|
|
49
|
+
return null;
|
|
50
|
+
}
|
|
51
|
+
removeSkill = skillAns;
|
|
52
|
+
}
|
|
53
|
+
if (!input.skipConfirm &&
|
|
54
|
+
(selectedClientIds.length > 0 || removeSkill)) {
|
|
55
|
+
const proceed = await confirm({
|
|
56
|
+
message: `Remove from ${selectedClientIds.length} client(s)${removeSkill ? " + the skill" : ""}?`,
|
|
57
|
+
initialValue: true,
|
|
58
|
+
});
|
|
59
|
+
if (isCancel(proceed) || proceed === false) {
|
|
60
|
+
cancel("Uninstall cancelled. Nothing was removed.");
|
|
61
|
+
return null;
|
|
62
|
+
}
|
|
63
|
+
}
|
|
64
|
+
return { selectedClientIds, removeSkill };
|
|
65
|
+
}
|
|
66
|
+
const DEFAULT_DEPS = {
|
|
67
|
+
detectInstalledClients: () => defaultDetectInstalledClients(),
|
|
68
|
+
skillIsInstalled: () => defaultIsSkillInstalled(),
|
|
69
|
+
removeJsonConfig: (p, k) => defaultRemoveJsonConfig(p, k),
|
|
70
|
+
removeTomlConfig: (p, k) => defaultRemoveTomlConfig(p, k),
|
|
71
|
+
uninstallSkill: () => defaultUninstallSkill(),
|
|
72
|
+
prompt: defaultPromptDriver,
|
|
73
|
+
};
|
|
74
|
+
// ── orchestration ──────────────────────────────────────────────────────────
|
|
75
|
+
export async function runUninstall(options = {}, deps = DEFAULT_DEPS) {
|
|
76
|
+
const log = deps.log ?? ((line) => process.stderr.write(`${line}\n`));
|
|
77
|
+
const installed = await deps.detectInstalledClients();
|
|
78
|
+
const skillInstalled = deps.skillIsInstalled();
|
|
79
|
+
if (installed.length === 0 && !skillInstalled) {
|
|
80
|
+
log("Nothing to uninstall. No API Mapper MCP entries or skill found.");
|
|
81
|
+
return 0;
|
|
82
|
+
}
|
|
83
|
+
// Decide the selection: --all bypasses the prompt entirely.
|
|
84
|
+
let selection;
|
|
85
|
+
if (options.all) {
|
|
86
|
+
selection = {
|
|
87
|
+
selectedClientIds: installed.map((c) => c.id),
|
|
88
|
+
removeSkill: skillInstalled,
|
|
89
|
+
};
|
|
90
|
+
}
|
|
91
|
+
else {
|
|
92
|
+
selection = await deps.prompt({
|
|
93
|
+
installed,
|
|
94
|
+
skillInstalled,
|
|
95
|
+
skipConfirm: Boolean(options.yes),
|
|
96
|
+
});
|
|
97
|
+
if (!selection)
|
|
98
|
+
return 130; // user cancelled
|
|
99
|
+
}
|
|
100
|
+
const selectedSet = new Set(selection.selectedClientIds);
|
|
101
|
+
let anyRemoved = false;
|
|
102
|
+
for (const client of installed) {
|
|
103
|
+
if (!selectedSet.has(client.id))
|
|
104
|
+
continue;
|
|
105
|
+
try {
|
|
106
|
+
const remover = client.format === "toml" ? deps.removeTomlConfig : deps.removeJsonConfig;
|
|
107
|
+
const res = await remover(client.configPath, client.matchedKeys);
|
|
108
|
+
if (res.removed) {
|
|
109
|
+
anyRemoved = true;
|
|
110
|
+
log(`✓ ${client.label}: removed ${res.removedKeys.join(", ")} from ${client.configPath}`);
|
|
111
|
+
}
|
|
112
|
+
else {
|
|
113
|
+
log(`! ${client.label}: no matching entry found (already clean).`);
|
|
114
|
+
}
|
|
115
|
+
}
|
|
116
|
+
catch (err) {
|
|
117
|
+
log(`✗ ${client.label}: removal failed: ${err instanceof Error ? err.message : String(err)}`);
|
|
118
|
+
}
|
|
119
|
+
}
|
|
120
|
+
let skillRemovedLine = "skill: kept";
|
|
121
|
+
if (selection.removeSkill && skillInstalled) {
|
|
122
|
+
try {
|
|
123
|
+
const res = await deps.uninstallSkill();
|
|
124
|
+
anyRemoved = anyRemoved || res.skillRemoved || res.markerRemoved;
|
|
125
|
+
skillRemovedLine = res.skillRemoved
|
|
126
|
+
? "skill: removed (~/.claude/skills/apimapper/)"
|
|
127
|
+
: res.markerRemoved
|
|
128
|
+
? "skill: marker removed (dir was already gone)"
|
|
129
|
+
: "skill: nothing to remove";
|
|
130
|
+
}
|
|
131
|
+
catch (err) {
|
|
132
|
+
skillRemovedLine = `skill: removal failed: ${err instanceof Error ? err.message : String(err)}`;
|
|
133
|
+
}
|
|
134
|
+
}
|
|
135
|
+
log(skillRemovedLine);
|
|
136
|
+
const summary = anyRemoved
|
|
137
|
+
? "✅ Uninstall complete. Restart your AI client to drop the server."
|
|
138
|
+
: "Nothing was removed (all selected entries were already clean).";
|
|
139
|
+
// Always log the summary (scripts / CI / tests read the log sink). In the
|
|
140
|
+
// interactive path, also render the clack outro chrome for a polished TTY
|
|
141
|
+
// close — but never in `--all` (non-interactive) mode.
|
|
142
|
+
log(summary);
|
|
143
|
+
if (!options.all)
|
|
144
|
+
outro(summary);
|
|
145
|
+
return 0;
|
|
146
|
+
}
|
|
147
|
+
//# sourceMappingURL=uninstall.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"uninstall.js","sourceRoot":"","sources":["../../src/setup/uninstall.ts"],"names":[],"mappings":"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"}
|
package/dist/setup-cli.d.ts
CHANGED
|
@@ -4,6 +4,8 @@ import { type TokenPayload } from "./auth/token.js";
|
|
|
4
4
|
import { type DetectedClient } from "./setup/detect-clients.js";
|
|
5
5
|
import { type McpEntry, type WriteConfigResult, type WriteConfigOptions } from "./setup/write-config.js";
|
|
6
6
|
import { type ProbeOptions, type ProbeResult } from "./setup/probe-handshake.js";
|
|
7
|
+
import { type ProbeAuthOptions, type ProbeAuthResult } from "./setup/probe-auth.js";
|
|
8
|
+
import { type UninstallOptions } from "./setup/uninstall.js";
|
|
7
9
|
export interface IdentityResponse {
|
|
8
10
|
platform: "wordpress" | "joomla" | "unknown";
|
|
9
11
|
siteurl: string;
|
|
@@ -34,6 +36,14 @@ export interface WizardDeps {
|
|
|
34
36
|
writeJsonConfig: (path: string, key: string, entry: McpEntry, options?: WriteConfigOptions) => Promise<WriteConfigResult>;
|
|
35
37
|
writeTomlConfig: (path: string, key: string, entry: McpEntry, options?: WriteConfigOptions) => Promise<WriteConfigResult>;
|
|
36
38
|
probeHandshake: (opts: ProbeOptions) => Promise<ProbeResult>;
|
|
39
|
+
/**
|
|
40
|
+
* F117 — authenticated probe. After the (key-blind) handshake, hit a
|
|
41
|
+
* bearer-required endpoint with the pasted key so a wrong / expired /
|
|
42
|
+
* wrong-site key fails the wizard HERE (with the MCP-key recovery hint +
|
|
43
|
+
* rollback) instead of silently succeeding and 401-ing on the first real
|
|
44
|
+
* tool-call.
|
|
45
|
+
*/
|
|
46
|
+
probeAuth: (opts: ProbeAuthOptions) => Promise<ProbeAuthResult>;
|
|
37
47
|
/**
|
|
38
48
|
* Sink for human-facing status lines. The default writes to stderr;
|
|
39
49
|
* tests can stub to a buffer.
|
|
@@ -43,6 +53,7 @@ export interface WizardDeps {
|
|
|
43
53
|
interface RunCliDeps {
|
|
44
54
|
installSkill: typeof defaultInstallSkill;
|
|
45
55
|
runWizard: () => Promise<number>;
|
|
56
|
+
runUninstall: (options: UninstallOptions) => Promise<number>;
|
|
46
57
|
}
|
|
47
58
|
export declare function inferDistTag(token: string, options?: {
|
|
48
59
|
override?: string;
|
|
@@ -98,5 +109,10 @@ export declare function isAllHttp404(errors: unknown[]): boolean;
|
|
|
98
109
|
*/
|
|
99
110
|
export declare function probeIdentity(siteUrl: string): Promise<IdentityResponse>;
|
|
100
111
|
export declare function runWizard(deps?: WizardDeps): Promise<number>;
|
|
112
|
+
/**
|
|
113
|
+
* Parse the `uninstall` flag tail. Recognises `--all`, `--yes`, and `-y`.
|
|
114
|
+
* Unknown flags are ignored (forward-compatible). Order-independent.
|
|
115
|
+
*/
|
|
116
|
+
export declare function parseUninstallFlags(args: string[]): UninstallOptions;
|
|
101
117
|
export declare function runCli(argv: string[], deps?: Partial<RunCliDeps>): Promise<number>;
|
|
102
118
|
export {};
|
package/dist/setup-cli.js
CHANGED
|
@@ -19,12 +19,19 @@ import { decodeToken } from "./auth/token.js";
|
|
|
19
19
|
import { detectClients as defaultDetectClients, } from "./setup/detect-clients.js";
|
|
20
20
|
import { writeJsonConfig as defaultWriteJsonConfig, writeTomlConfig as defaultWriteTomlConfig, } from "./setup/write-config.js";
|
|
21
21
|
import { probeHandshake as defaultProbeHandshake, rollbackAll, } from "./setup/probe-handshake.js";
|
|
22
|
+
import { probeAuth as defaultProbeAuth, SETUP_AUTH_RECOVERY_HINT, } from "./setup/probe-auth.js";
|
|
23
|
+
import { runUninstall as defaultRunUninstall, } from "./setup/uninstall.js";
|
|
22
24
|
const HELP_TEXT = `Usage: apimapper-mcp <command>
|
|
23
25
|
|
|
24
26
|
Commands:
|
|
25
27
|
setup Interactive first-run wizard (default if no command)
|
|
26
28
|
install-skill Copy the bundled apimapper skill to ~/.claude/skills/
|
|
27
29
|
and register it in ~/AGENTS.md.
|
|
30
|
+
uninstall Interactive removal (reverse of setup): pick which AI
|
|
31
|
+
clients to remove the API Mapper MCP entry from, plus the
|
|
32
|
+
installed skill. Aliases: remove.
|
|
33
|
+
Flags: --all (remove from every detected client + skill,
|
|
34
|
+
no prompts), --yes/-y (skip the final confirm).
|
|
28
35
|
help Show this message.
|
|
29
36
|
`;
|
|
30
37
|
/**
|
|
@@ -37,6 +44,13 @@ Commands:
|
|
|
37
44
|
* The second tuple element is typed `KnownDistTag` (not `string`) so a typo
|
|
38
45
|
* like `[/^amk_canary_/, "cnary"]` would fail compile.
|
|
39
46
|
*/
|
|
47
|
+
// Keep in sync with the admin-ui mirror `distTagForToken`
|
|
48
|
+
// (src/modules/admin-ui/src/components/settings/sections/buildClientConfig.ts).
|
|
49
|
+
// The admin UI bundles into the PHP plugin and has no dependency on the
|
|
50
|
+
// @wootsup/mcp npm package — separate build graphs make a shared import
|
|
51
|
+
// impossible, so the prefix→tag mapping is deliberately duplicated there.
|
|
52
|
+
// If you add or change a prefix here (e.g. `amk_beta_` → `beta`), update the
|
|
53
|
+
// admin-ui copy in lockstep.
|
|
40
54
|
const PREFIX_TAG_MAP = [
|
|
41
55
|
[/^amk_test_/, "rc"],
|
|
42
56
|
[/^amk_live_/, "latest"],
|
|
@@ -275,6 +289,7 @@ const DEFAULT_DEPS = {
|
|
|
275
289
|
writeJsonConfig: (p, k, e, o) => defaultWriteJsonConfig(p, k, e, o),
|
|
276
290
|
writeTomlConfig: (p, k, e, o) => defaultWriteTomlConfig(p, k, e, o),
|
|
277
291
|
probeHandshake: (o) => defaultProbeHandshake(o),
|
|
292
|
+
probeAuth: (o) => defaultProbeAuth(o),
|
|
278
293
|
};
|
|
279
294
|
export async function runWizard(deps = DEFAULT_DEPS) {
|
|
280
295
|
const log = deps.log ?? ((line) => process.stderr.write(`${line}\n`));
|
|
@@ -327,6 +342,7 @@ export async function runWizard(deps = DEFAULT_DEPS) {
|
|
|
327
342
|
APIMAPPER_TOKEN: answers.token,
|
|
328
343
|
APIMAPPER_SITE_URL: answers.siteUrl,
|
|
329
344
|
APIMAPPER_PROFILE: answers.profileName,
|
|
345
|
+
APIMAPPER_MODE: "proxy",
|
|
330
346
|
},
|
|
331
347
|
};
|
|
332
348
|
for (const client of detected) {
|
|
@@ -374,20 +390,66 @@ export async function runWizard(deps = DEFAULT_DEPS) {
|
|
|
374
390
|
await rollbackAll(undos);
|
|
375
391
|
return 5;
|
|
376
392
|
}
|
|
393
|
+
// 7. F117 — authenticated probe. The handshake above is key-blind (it only
|
|
394
|
+
// checks that apimapper_health is registered), and the earlier identity
|
|
395
|
+
// probe hit the PUBLIC /identity endpoint — both pass with ANY key. Hit a
|
|
396
|
+
// bearer-required endpoint ONCE with the pasted key so a typo / expired /
|
|
397
|
+
// wrong-site key fails the wizard here (auth recovery + rollback) instead
|
|
398
|
+
// of surfacing a 401 on the customer's first real tool-call.
|
|
399
|
+
const auth = await deps.probeAuth({
|
|
400
|
+
siteUrl: answers.siteUrl,
|
|
401
|
+
token: answers.token,
|
|
402
|
+
platform: identity.platform,
|
|
403
|
+
});
|
|
404
|
+
if (!auth.ok) {
|
|
405
|
+
if (auth.authFailed) {
|
|
406
|
+
// Wrong / revoked / expired key — surface the MCP-key recovery recipe.
|
|
407
|
+
log("Authenticated probe failed — the MCP key was rejected.");
|
|
408
|
+
log(SETUP_AUTH_RECOVERY_HINT);
|
|
409
|
+
}
|
|
410
|
+
else {
|
|
411
|
+
// Generic failure (5xx / network). Don't claim the key is bad.
|
|
412
|
+
log(`Authenticated probe failed: ${auth.error ?? "could not reach a bearer-required endpoint"}`);
|
|
413
|
+
}
|
|
414
|
+
await rollbackAll(undos);
|
|
415
|
+
return 6;
|
|
416
|
+
}
|
|
377
417
|
outro(`🎉 Setup complete (${undos.length} client${undos.length === 1 ? "" : "s"} wired). ` +
|
|
378
418
|
"Restart your AI client and try: \"What MCP tools do I have?\"");
|
|
379
419
|
return 0;
|
|
380
420
|
}
|
|
381
421
|
// ── CLI dispatcher ──────────────────────────────────────────────────────
|
|
422
|
+
/**
|
|
423
|
+
* Parse the `uninstall` flag tail. Recognises `--all`, `--yes`, and `-y`.
|
|
424
|
+
* Unknown flags are ignored (forward-compatible). Order-independent.
|
|
425
|
+
*/
|
|
426
|
+
export function parseUninstallFlags(args) {
|
|
427
|
+
return {
|
|
428
|
+
all: args.includes("--all"),
|
|
429
|
+
yes: args.includes("--yes") || args.includes("-y"),
|
|
430
|
+
};
|
|
431
|
+
}
|
|
382
432
|
export async function runCli(argv, deps) {
|
|
383
433
|
const installSkill = deps?.installSkill ?? defaultInstallSkill;
|
|
384
434
|
const wizard = deps?.runWizard ?? (() => runWizard());
|
|
385
|
-
const
|
|
435
|
+
const uninstall = deps?.runUninstall ?? ((o) => defaultRunUninstall(o));
|
|
436
|
+
const [subcommand, ...rest] = argv;
|
|
386
437
|
// Default subcommand (no args, or `setup`) runs the wizard.
|
|
387
438
|
if (!subcommand || subcommand === "setup") {
|
|
388
439
|
return wizard();
|
|
389
440
|
}
|
|
390
441
|
switch (subcommand) {
|
|
442
|
+
case "uninstall":
|
|
443
|
+
case "remove": {
|
|
444
|
+
try {
|
|
445
|
+
return await uninstall(parseUninstallFlags(rest));
|
|
446
|
+
}
|
|
447
|
+
catch (err) {
|
|
448
|
+
const msg = err instanceof Error ? err.message : String(err);
|
|
449
|
+
console.error(`apimapper-mcp: uninstall failed: ${msg}`);
|
|
450
|
+
return 2;
|
|
451
|
+
}
|
|
452
|
+
}
|
|
391
453
|
case "install-skill":
|
|
392
454
|
case "install": {
|
|
393
455
|
try {
|
package/dist/setup-cli.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"setup-cli.js","sourceRoot":"","sources":["../src/setup-cli.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"setup-cli.js","sourceRoot":"","sources":["../src/setup-cli.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
import { type SiteEntryT, type SitesFileT } from "./schema.js";
|
|
2
|
+
/** Base class for any sites-file IO / parse / validation failure. */
|
|
3
|
+
export declare class SitesFileError extends Error {
|
|
4
|
+
readonly cause?: unknown | undefined;
|
|
5
|
+
constructor(message: string, cause?: unknown | undefined);
|
|
6
|
+
}
|
|
7
|
+
/**
|
|
8
|
+
* Read-only registry around a parsed, non-empty sites file. Provides O(1)-ish
|
|
9
|
+
* lookups for the active-site resolution in client.ts. Never mutates the input.
|
|
10
|
+
*/
|
|
11
|
+
export declare class SitesRegistry {
|
|
12
|
+
private readonly file;
|
|
13
|
+
constructor(file: SitesFileT);
|
|
14
|
+
/** Entries in insertion order (stable for list-tool UX). */
|
|
15
|
+
list(): readonly SiteEntryT[];
|
|
16
|
+
/** Site_id list in insertion order. */
|
|
17
|
+
listIds(): readonly string[];
|
|
18
|
+
/** Raw entry for a site_id, or null when unknown. */
|
|
19
|
+
get(siteId: string): SiteEntryT | null;
|
|
20
|
+
/** True when the registry contains the given site_id. */
|
|
21
|
+
has(siteId: string): boolean;
|
|
22
|
+
/**
|
|
23
|
+
* The default site entry. Resolution order:
|
|
24
|
+
* 1. `default_site_id` (when it points at an existing entry).
|
|
25
|
+
* 2. The lone `is_default:true` entry (schema guarantees at most one).
|
|
26
|
+
* 3. The first entry (the file is guaranteed non-empty by the loader).
|
|
27
|
+
*/
|
|
28
|
+
getDefault(): SiteEntryT;
|
|
29
|
+
}
|
|
30
|
+
/**
|
|
31
|
+
* Load the sites file at `path` and return a {@link SitesRegistry}, or `null`
|
|
32
|
+
* when there is no usable multi-site config (so the caller falls through to the
|
|
33
|
+
* env / keychain single-site path).
|
|
34
|
+
*
|
|
35
|
+
* - `path` unset / empty / whitespace → null
|
|
36
|
+
* - file does not exist → null
|
|
37
|
+
* - file parses but has zero sites → null
|
|
38
|
+
* - malformed JSON / schema-invalid /
|
|
39
|
+
* unknown schema_version → throws {@link SitesFileError}
|
|
40
|
+
*/
|
|
41
|
+
/**
|
|
42
|
+
* F190 (2026-06-12): expand a leading `~` to the user's home directory.
|
|
43
|
+
* Node's fs does NOT do this — a `~/...` path typed into the Claude Desktop
|
|
44
|
+
* DXT settings silently failed (existsSync false → no sites). Only `~` and
|
|
45
|
+
* `~/...` are expanded; `~user/...` is left untouched (not supported).
|
|
46
|
+
*/
|
|
47
|
+
export declare function expandTilde(p: string): string;
|
|
48
|
+
export declare function loadSitesRegistry(path: string | undefined): SitesRegistry | null;
|