@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.
Files changed (208) hide show
  1. package/CHANGELOG.md +157 -83
  2. package/README.md +31 -27
  3. package/SECURITY.md +15 -6
  4. package/dist/auth/keychain.d.ts +27 -1
  5. package/dist/auth/keychain.js +48 -2
  6. package/dist/auth/keychain.js.map +1 -1
  7. package/dist/catalog/build-catalog.d.ts +31 -0
  8. package/dist/catalog/build-catalog.js +68 -0
  9. package/dist/catalog/build-catalog.js.map +1 -0
  10. package/dist/cli-hint.d.ts +22 -0
  11. package/dist/cli-hint.js +55 -0
  12. package/dist/cli-hint.js.map +1 -0
  13. package/dist/index.js +129 -22
  14. package/dist/index.js.map +1 -1
  15. package/dist/install-skill.js +1 -1
  16. package/dist/modules/apimapper/auto-layout.d.ts +21 -0
  17. package/dist/modules/apimapper/auto-layout.js +54 -0
  18. package/dist/modules/apimapper/auto-layout.js.map +1 -0
  19. package/dist/modules/apimapper/cache.js +25 -17
  20. package/dist/modules/apimapper/cache.js.map +1 -1
  21. package/dist/modules/apimapper/client.d.ts +115 -4
  22. package/dist/modules/apimapper/client.js +699 -304
  23. package/dist/modules/apimapper/client.js.map +1 -1
  24. package/dist/modules/apimapper/connections-format.d.ts +31 -1
  25. package/dist/modules/apimapper/connections-format.js +97 -5
  26. package/dist/modules/apimapper/connections-format.js.map +1 -1
  27. package/dist/modules/apimapper/connections.d.ts +9 -7
  28. package/dist/modules/apimapper/connections.js +449 -127
  29. package/dist/modules/apimapper/connections.js.map +1 -1
  30. package/dist/modules/apimapper/credential-sanitizer.d.ts +5 -0
  31. package/dist/modules/apimapper/credential-sanitizer.js +60 -1
  32. package/dist/modules/apimapper/credential-sanitizer.js.map +1 -1
  33. package/dist/modules/apimapper/credentials.js +105 -61
  34. package/dist/modules/apimapper/credentials.js.map +1 -1
  35. package/dist/modules/apimapper/diagnose.js +21 -2
  36. package/dist/modules/apimapper/diagnose.js.map +1 -1
  37. package/dist/modules/apimapper/elicitation.d.ts +29 -0
  38. package/dist/modules/apimapper/elicitation.js +62 -0
  39. package/dist/modules/apimapper/elicitation.js.map +1 -1
  40. package/dist/modules/apimapper/example-extract.d.ts +13 -0
  41. package/dist/modules/apimapper/example-extract.js +111 -0
  42. package/dist/modules/apimapper/example-extract.js.map +1 -0
  43. package/dist/modules/apimapper/filter-operators.d.ts +24 -0
  44. package/dist/modules/apimapper/filter-operators.js +103 -0
  45. package/dist/modules/apimapper/filter-operators.js.map +1 -0
  46. package/dist/modules/apimapper/flows-format.js +92 -22
  47. package/dist/modules/apimapper/flows-format.js.map +1 -1
  48. package/dist/modules/apimapper/flows.d.ts +8 -7
  49. package/dist/modules/apimapper/flows.js +275 -120
  50. package/dist/modules/apimapper/flows.js.map +1 -1
  51. package/dist/modules/apimapper/gateway/advanced-read-tool.d.ts +9 -0
  52. package/dist/modules/apimapper/gateway/advanced-read-tool.js +172 -0
  53. package/dist/modules/apimapper/gateway/advanced-read-tool.js.map +1 -0
  54. package/dist/modules/apimapper/gateway/advanced-tool.js +66 -106
  55. package/dist/modules/apimapper/gateway/advanced-tool.js.map +1 -1
  56. package/dist/modules/apimapper/gateway/collect-module-tools.d.ts +17 -0
  57. package/dist/modules/apimapper/gateway/collect-module-tools.js +44 -0
  58. package/dist/modules/apimapper/gateway/collect-module-tools.js.map +1 -0
  59. package/dist/modules/apimapper/gateway/essentials.d.ts +1 -1
  60. package/dist/modules/apimapper/gateway/essentials.js +21 -2
  61. package/dist/modules/apimapper/gateway/essentials.js.map +1 -1
  62. package/dist/modules/apimapper/gateway/gateway-shared.d.ts +21 -0
  63. package/dist/modules/apimapper/gateway/gateway-shared.js +124 -0
  64. package/dist/modules/apimapper/gateway/gateway-shared.js.map +1 -0
  65. package/dist/modules/apimapper/gateway/test-support.d.ts +1 -17
  66. package/dist/modules/apimapper/gateway/test-support.js +4 -33
  67. package/dist/modules/apimapper/gateway/test-support.js.map +1 -1
  68. package/dist/modules/apimapper/get-skill-cores.d.ts +4 -0
  69. package/dist/modules/apimapper/get-skill-cores.js +220 -0
  70. package/dist/modules/apimapper/get-skill-cores.js.map +1 -0
  71. package/dist/modules/apimapper/get-skill.d.ts +1 -1
  72. package/dist/modules/apimapper/get-skill.js +74 -9
  73. package/dist/modules/apimapper/get-skill.js.map +1 -1
  74. package/dist/modules/apimapper/graph-builder.d.ts +85 -2
  75. package/dist/modules/apimapper/graph-builder.js +151 -15
  76. package/dist/modules/apimapper/graph-builder.js.map +1 -1
  77. package/dist/modules/apimapper/graph.js +152 -48
  78. package/dist/modules/apimapper/graph.js.map +1 -1
  79. package/dist/modules/apimapper/index.js +27 -13
  80. package/dist/modules/apimapper/index.js.map +1 -1
  81. package/dist/modules/apimapper/jmespath-test.d.ts +4 -0
  82. package/dist/modules/apimapper/jmespath-test.js +152 -0
  83. package/dist/modules/apimapper/jmespath-test.js.map +1 -0
  84. package/dist/modules/apimapper/library.js +553 -88
  85. package/dist/modules/apimapper/library.js.map +1 -1
  86. package/dist/modules/apimapper/license.js +12 -36
  87. package/dist/modules/apimapper/license.js.map +1 -1
  88. package/dist/modules/apimapper/list-footer.d.ts +27 -0
  89. package/dist/modules/apimapper/list-footer.js +57 -0
  90. package/dist/modules/apimapper/list-footer.js.map +1 -0
  91. package/dist/modules/apimapper/local-sources.js +100 -57
  92. package/dist/modules/apimapper/local-sources.js.map +1 -1
  93. package/dist/modules/apimapper/mcp-client-identity.d.ts +32 -0
  94. package/dist/modules/apimapper/mcp-client-identity.js +70 -0
  95. package/dist/modules/apimapper/mcp-client-identity.js.map +1 -0
  96. package/dist/modules/apimapper/merge-constants.d.ts +6 -0
  97. package/dist/modules/apimapper/merge-constants.js +26 -0
  98. package/dist/modules/apimapper/merge-constants.js.map +1 -0
  99. package/dist/modules/apimapper/misc.js +13 -27
  100. package/dist/modules/apimapper/misc.js.map +1 -1
  101. package/dist/modules/apimapper/node-schema.d.ts +52 -2
  102. package/dist/modules/apimapper/node-schema.js +95 -4
  103. package/dist/modules/apimapper/node-schema.js.map +1 -1
  104. package/dist/modules/apimapper/onboarding.d.ts +59 -1
  105. package/dist/modules/apimapper/onboarding.js +231 -28
  106. package/dist/modules/apimapper/onboarding.js.map +1 -1
  107. package/dist/modules/apimapper/read-cache.d.ts +16 -3
  108. package/dist/modules/apimapper/read-cache.js +59 -4
  109. package/dist/modules/apimapper/read-cache.js.map +1 -1
  110. package/dist/modules/apimapper/render/index.js +26 -5
  111. package/dist/modules/apimapper/render/index.js.map +1 -1
  112. package/dist/modules/apimapper/resource-id.d.ts +13 -0
  113. package/dist/modules/apimapper/resource-id.js +69 -0
  114. package/dist/modules/apimapper/resource-id.js.map +1 -0
  115. package/dist/modules/apimapper/schema.js +9 -18
  116. package/dist/modules/apimapper/schema.js.map +1 -1
  117. package/dist/modules/apimapper/settings.js +49 -52
  118. package/dist/modules/apimapper/settings.js.map +1 -1
  119. package/dist/modules/apimapper/sites-tools.d.ts +29 -0
  120. package/dist/modules/apimapper/sites-tools.js +165 -0
  121. package/dist/modules/apimapper/sites-tools.js.map +1 -0
  122. package/dist/modules/apimapper/tool-result.d.ts +66 -0
  123. package/dist/modules/apimapper/tool-result.js +125 -0
  124. package/dist/modules/apimapper/tool-result.js.map +1 -0
  125. package/dist/modules/apimapper/toolslist-size.d.ts +12 -11
  126. package/dist/modules/apimapper/toolslist-size.js +34 -21
  127. package/dist/modules/apimapper/toolslist-size.js.map +1 -1
  128. package/dist/modules/apimapper/types.d.ts +34 -0
  129. package/dist/modules/apimapper/types.js +1 -1
  130. package/dist/modules/apimapper/types.js.map +1 -1
  131. package/dist/modules/apimapper/whitelist-drift.d.ts +85 -0
  132. package/dist/modules/apimapper/whitelist-drift.js +375 -0
  133. package/dist/modules/apimapper/whitelist-drift.js.map +1 -0
  134. package/dist/modules/apimapper/workflows.js +302 -58
  135. package/dist/modules/apimapper/workflows.js.map +1 -1
  136. package/dist/modules/apimapper/yootheme-binding.d.ts +35 -0
  137. package/dist/modules/apimapper/yootheme-binding.js +267 -0
  138. package/dist/modules/apimapper/yootheme-binding.js.map +1 -0
  139. package/dist/platform/index.d.ts +56 -0
  140. package/dist/platform/index.js +158 -2
  141. package/dist/platform/index.js.map +1 -1
  142. package/dist/proxy/bridge.d.ts +35 -0
  143. package/dist/proxy/bridge.js +129 -0
  144. package/dist/proxy/bridge.js.map +1 -0
  145. package/dist/proxy/mode.d.ts +9 -0
  146. package/dist/proxy/mode.js +20 -0
  147. package/dist/proxy/mode.js.map +1 -0
  148. package/dist/setup/detect-clients.d.ts +40 -1
  149. package/dist/setup/detect-clients.js +148 -1
  150. package/dist/setup/detect-clients.js.map +1 -1
  151. package/dist/setup/probe-auth.d.ts +51 -0
  152. package/dist/setup/probe-auth.js +141 -0
  153. package/dist/setup/probe-auth.js.map +1 -0
  154. package/dist/setup/probe-handshake.js +40 -7
  155. package/dist/setup/probe-handshake.js.map +1 -1
  156. package/dist/setup/remove-config.d.ts +8 -0
  157. package/dist/setup/remove-config.js +145 -0
  158. package/dist/setup/remove-config.js.map +1 -0
  159. package/dist/setup/uninstall.d.ts +34 -0
  160. package/dist/setup/uninstall.js +147 -0
  161. package/dist/setup/uninstall.js.map +1 -0
  162. package/dist/setup-cli.d.ts +16 -0
  163. package/dist/setup-cli.js +63 -1
  164. package/dist/setup-cli.js.map +1 -1
  165. package/dist/sites/loader.d.ts +48 -0
  166. package/dist/sites/loader.js +134 -0
  167. package/dist/sites/loader.js.map +1 -0
  168. package/dist/sites/schema.d.ts +69 -0
  169. package/dist/sites/schema.js +71 -0
  170. package/dist/sites/schema.js.map +1 -0
  171. package/dist/sites/secret-resolver.d.ts +47 -0
  172. package/dist/sites/secret-resolver.js +150 -0
  173. package/dist/sites/secret-resolver.js.map +1 -0
  174. package/dist/skill-instructions.d.ts +14 -1
  175. package/dist/skill-instructions.js +35 -6
  176. package/dist/skill-instructions.js.map +1 -1
  177. package/dist/transports/stdio.js +4 -4
  178. package/dist/transports/stdio.js.map +1 -1
  179. package/dist/uninstall-skill.d.ts +27 -0
  180. package/dist/uninstall-skill.js +89 -0
  181. package/dist/uninstall-skill.js.map +1 -0
  182. package/docs/architecture.md +21 -21
  183. package/docs/customgraph-internal-migration.md +4 -4
  184. package/docs/security.md +2 -21
  185. package/docs/tools.md +40 -12
  186. package/manifest.json +77 -79
  187. package/package.json +69 -65
  188. package/skills/apimapper/SKILL.md +128 -7
  189. package/skills/apimapper/reference/conditional-style-multi-items.md +114 -0
  190. package/skills/apimapper/reference/dynamize-existing-layout.md +158 -0
  191. package/skills/apimapper/reference/jmespath-cookbook.md +241 -0
  192. package/skills/apimapper/reference/jmespath-pitfalls.md +189 -0
  193. package/skills/apimapper/reference/joomla.md +1 -1
  194. package/skills/apimapper/reference/library-template-discovery.md +65 -0
  195. package/skills/apimapper/reference/merge-two-sources-on-key.md +204 -0
  196. package/skills/apimapper/reference/oauth.md +143 -52
  197. package/skills/apimapper/reference/troubleshooting.md +22 -2
  198. package/skills/apimapper/reference/yootheme-source-to-builder-handoff.md +348 -0
  199. package/skills/apimapper/reference/yootheme.md +75 -44
  200. package/dist/auth/oauth-provider.d.ts +0 -68
  201. package/dist/auth/oauth-provider.js +0 -232
  202. package/dist/auth/oauth-provider.js.map +0 -1
  203. package/dist/server-http.d.ts +0 -22
  204. package/dist/server-http.js +0 -159
  205. package/dist/server-http.js.map +0 -1
  206. package/dist/transports/http.d.ts +0 -29
  207. package/dist/transports/http.js +0 -267
  208. 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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"}
@@ -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 [subcommand] = argv;
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 {
@@ -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;