@wootsup/mcp 0.1.0-rc.9 → 0.3.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 +148 -83
- package/README.md +36 -32
- 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/cli-hint.d.ts +22 -0
- package/dist/cli-hint.js +55 -0
- package/dist/cli-hint.js.map +1 -0
- package/dist/index.d.ts +19 -0
- package/dist/index.js +163 -22
- package/dist/index.js.map +1 -1
- package/dist/install-skill.js +1 -1
- package/dist/modules/apimapper/cache.d.ts +2 -2
- package/dist/modules/apimapper/cache.js +119 -29
- package/dist/modules/apimapper/cache.js.map +1 -1
- package/dist/modules/apimapper/client.d.ts +102 -1
- package/dist/modules/apimapper/client.js +631 -297
- package/dist/modules/apimapper/client.js.map +1 -1
- package/dist/modules/apimapper/connections-format.d.ts +51 -0
- package/dist/modules/apimapper/connections-format.js +261 -0
- package/dist/modules/apimapper/connections-format.js.map +1 -0
- package/dist/modules/apimapper/connections-trim.d.ts +82 -0
- package/dist/modules/apimapper/connections-trim.js +224 -0
- package/dist/modules/apimapper/connections-trim.js.map +1 -0
- package/dist/modules/apimapper/connections.d.ts +14 -2
- package/dist/modules/apimapper/connections.js +612 -153
- 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-format.d.ts +21 -0
- package/dist/modules/apimapper/credentials-format.js +145 -0
- package/dist/modules/apimapper/credentials-format.js.map +1 -0
- package/dist/modules/apimapper/credentials.d.ts +12 -2
- package/dist/modules/apimapper/credentials.js +226 -73
- package/dist/modules/apimapper/credentials.js.map +1 -1
- package/dist/modules/apimapper/diagnose.d.ts +54 -2
- package/dist/modules/apimapper/diagnose.js +213 -12
- package/dist/modules/apimapper/diagnose.js.map +1 -1
- package/dist/modules/apimapper/elicitation.d.ts +54 -0
- package/dist/modules/apimapper/elicitation.js +90 -0
- package/dist/modules/apimapper/elicitation.js.map +1 -0
- package/dist/modules/apimapper/flows-format.d.ts +50 -0
- package/dist/modules/apimapper/flows-format.js +318 -0
- package/dist/modules/apimapper/flows-format.js.map +1 -0
- package/dist/modules/apimapper/flows.d.ts +13 -2
- package/dist/modules/apimapper/flows.js +312 -122
- package/dist/modules/apimapper/flows.js.map +1 -1
- package/dist/modules/apimapper/gateway/advanced-tool.d.ts +9 -0
- package/dist/modules/apimapper/gateway/advanced-tool.js +265 -0
- package/dist/modules/apimapper/gateway/advanced-tool.js.map +1 -0
- package/dist/modules/apimapper/gateway/capturing-server.d.ts +81 -0
- package/dist/modules/apimapper/gateway/capturing-server.js +87 -0
- package/dist/modules/apimapper/gateway/capturing-server.js.map +1 -0
- package/dist/modules/apimapper/gateway/essentials.d.ts +4 -0
- package/dist/modules/apimapper/gateway/essentials.js +35 -0
- package/dist/modules/apimapper/gateway/essentials.js.map +1 -0
- package/dist/modules/apimapper/gateway/test-support.d.ts +17 -0
- package/dist/modules/apimapper/gateway/test-support.js +43 -0
- package/dist/modules/apimapper/gateway/test-support.js.map +1 -0
- package/dist/modules/apimapper/get-skill.d.ts +3 -3
- package/dist/modules/apimapper/get-skill.js +47 -7
- package/dist/modules/apimapper/get-skill.js.map +1 -1
- package/dist/modules/apimapper/graph-builder.js +1 -1
- package/dist/modules/apimapper/graph-builder.js.map +1 -1
- package/dist/modules/apimapper/graph.d.ts +2 -2
- package/dist/modules/apimapper/graph.js +170 -35
- package/dist/modules/apimapper/graph.js.map +1 -1
- package/dist/modules/apimapper/index.d.ts +17 -1
- package/dist/modules/apimapper/index.js +68 -17
- package/dist/modules/apimapper/index.js.map +1 -1
- package/dist/modules/apimapper/inspect.d.ts +3 -2
- package/dist/modules/apimapper/inspect.js +97 -13
- package/dist/modules/apimapper/inspect.js.map +1 -1
- package/dist/modules/apimapper/library.d.ts +2 -2
- package/dist/modules/apimapper/library.js +665 -80
- package/dist/modules/apimapper/library.js.map +1 -1
- package/dist/modules/apimapper/license-format.d.ts +22 -0
- package/dist/modules/apimapper/license-format.js +149 -0
- package/dist/modules/apimapper/license-format.js.map +1 -0
- package/dist/modules/apimapper/license.d.ts +16 -2
- package/dist/modules/apimapper/license.js +62 -38
- package/dist/modules/apimapper/license.js.map +1 -1
- package/dist/modules/apimapper/local-sources.d.ts +2 -2
- package/dist/modules/apimapper/local-sources.js +44 -30
- package/dist/modules/apimapper/local-sources.js.map +1 -1
- package/dist/modules/apimapper/misc.d.ts +30 -2
- package/dist/modules/apimapper/misc.js +114 -49
- package/dist/modules/apimapper/misc.js.map +1 -1
- package/dist/modules/apimapper/node-schema.d.ts +52 -0
- package/dist/modules/apimapper/node-schema.js +70 -2
- package/dist/modules/apimapper/node-schema.js.map +1 -1
- package/dist/modules/apimapper/normalizers.d.ts +1 -0
- package/dist/modules/apimapper/normalizers.js +51 -0
- package/dist/modules/apimapper/normalizers.js.map +1 -1
- package/dist/modules/apimapper/onboarding.d.ts +78 -3
- package/dist/modules/apimapper/onboarding.js +428 -26
- package/dist/modules/apimapper/onboarding.js.map +1 -1
- package/dist/modules/apimapper/read-cache.d.ts +31 -2
- package/dist/modules/apimapper/read-cache.js +20 -6
- package/dist/modules/apimapper/read-cache.js.map +1 -1
- package/dist/modules/apimapper/render/_shared.d.ts +24 -0
- package/dist/modules/apimapper/render/_shared.js +84 -0
- package/dist/modules/apimapper/render/_shared.js.map +1 -0
- package/dist/modules/apimapper/render/dag.d.ts +18 -0
- package/dist/modules/apimapper/render/dag.js +70 -0
- package/dist/modules/apimapper/render/dag.js.map +1 -0
- package/dist/modules/apimapper/render/index.d.ts +2 -0
- package/dist/modules/apimapper/render/index.js +112 -0
- package/dist/modules/apimapper/render/index.js.map +1 -0
- package/dist/modules/apimapper/render/renderers/chart-bar.d.ts +2 -0
- package/dist/modules/apimapper/render/renderers/chart-bar.js +70 -0
- package/dist/modules/apimapper/render/renderers/chart-bar.js.map +1 -0
- package/dist/modules/apimapper/render/renderers/chart-line.d.ts +2 -0
- package/dist/modules/apimapper/render/renderers/chart-line.js +71 -0
- package/dist/modules/apimapper/render/renderers/chart-line.js.map +1 -0
- package/dist/modules/apimapper/render/renderers/diff.d.ts +2 -0
- package/dist/modules/apimapper/render/renderers/diff.js +154 -0
- package/dist/modules/apimapper/render/renderers/diff.js.map +1 -0
- package/dist/modules/apimapper/render/renderers/flow-diagram.d.ts +1 -0
- package/dist/modules/apimapper/render/renderers/flow-diagram.js +180 -0
- package/dist/modules/apimapper/render/renderers/flow-diagram.js.map +1 -0
- package/dist/modules/apimapper/render/renderers/json-tree.d.ts +2 -0
- package/dist/modules/apimapper/render/renderers/json-tree.js +87 -0
- package/dist/modules/apimapper/render/renderers/json-tree.js.map +1 -0
- package/dist/modules/apimapper/render/renderers/schema-diagram.d.ts +2 -0
- package/dist/modules/apimapper/render/renderers/schema-diagram.js +83 -0
- package/dist/modules/apimapper/render/renderers/schema-diagram.js.map +1 -0
- package/dist/modules/apimapper/render/renderers/table.d.ts +2 -0
- package/dist/modules/apimapper/render/renderers/table.js +75 -0
- package/dist/modules/apimapper/render/renderers/table.js.map +1 -0
- package/dist/modules/apimapper/render/schemas.d.ts +23 -0
- package/dist/modules/apimapper/render/schemas.js +56 -0
- package/dist/modules/apimapper/render/schemas.js.map +1 -0
- package/dist/modules/apimapper/render/secret-masking.d.ts +5 -0
- package/dist/modules/apimapper/render/secret-masking.js +51 -0
- package/dist/modules/apimapper/render/secret-masking.js.map +1 -0
- package/dist/modules/apimapper/render/sidecar.d.ts +21 -0
- package/dist/modules/apimapper/render/sidecar.js +66 -0
- package/dist/modules/apimapper/render/sidecar.js.map +1 -0
- package/dist/modules/apimapper/render/token-cap.d.ts +21 -0
- package/dist/modules/apimapper/render/token-cap.js +57 -0
- package/dist/modules/apimapper/render/token-cap.js.map +1 -0
- package/dist/modules/apimapper/schema.d.ts +2 -2
- package/dist/modules/apimapper/schema.js +92 -33
- package/dist/modules/apimapper/schema.js.map +1 -1
- package/dist/modules/apimapper/settings-format.d.ts +23 -0
- package/dist/modules/apimapper/settings-format.js +135 -0
- package/dist/modules/apimapper/settings-format.js.map +1 -0
- package/dist/modules/apimapper/settings.d.ts +2 -2
- package/dist/modules/apimapper/settings.js +100 -42
- 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/skill-resources.d.ts +2 -2
- package/dist/modules/apimapper/skill-resources.js.map +1 -1
- package/dist/modules/apimapper/token-baseline.harness.d.ts +91 -0
- package/dist/modules/apimapper/token-baseline.harness.js +291 -0
- package/dist/modules/apimapper/token-baseline.harness.js.map +1 -0
- package/dist/modules/apimapper/tool-result.d.ts +46 -0
- package/dist/modules/apimapper/tool-result.js +63 -0
- package/dist/modules/apimapper/tool-result.js.map +1 -0
- package/dist/modules/apimapper/toolslist-size.d.ts +56 -0
- package/dist/modules/apimapper/toolslist-size.js +192 -0
- package/dist/modules/apimapper/toolslist-size.js.map +1 -0
- package/dist/modules/apimapper/types.d.ts +44 -8
- package/dist/modules/apimapper/types.js +26 -1
- package/dist/modules/apimapper/types.js.map +1 -1
- package/dist/modules/apimapper/use-profile.d.ts +21 -0
- package/dist/modules/apimapper/use-profile.js +56 -2
- package/dist/modules/apimapper/use-profile.js.map +1 -1
- package/dist/modules/apimapper/whitelist-drift.d.ts +85 -0
- package/dist/modules/apimapper/whitelist-drift.js +360 -0
- package/dist/modules/apimapper/whitelist-drift.js.map +1 -0
- package/dist/modules/apimapper/workflows.d.ts +2 -2
- package/dist/modules/apimapper/workflows.js +202 -20
- 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 +186 -0
- package/dist/modules/apimapper/yootheme-binding.js.map +1 -0
- package/dist/platform/index.d.ts +56 -0
- package/dist/platform/index.js +195 -7
- package/dist/platform/index.js.map +1 -1
- 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-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 +60 -0
- package/dist/setup-cli.js +155 -5
- package/dist/setup-cli.js.map +1 -1
- package/dist/sites/loader.d.ts +41 -0
- package/dist/sites/loader.js +119 -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 +1 -1
- package/dist/skill-instructions.js +5 -0
- 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 +22 -22
- package/docs/customgraph-internal-migration.md +4 -4
- package/docs/security.md +2 -21
- package/docs/tools.md +40 -12
- package/manifest.json +77 -70
- package/package.json +68 -60
- package/skills/apimapper/SKILL.md +53 -7
- package/skills/apimapper/reference/conditional-style-multi-items.md +114 -0
- package/skills/apimapper/reference/jmespath-pitfalls.md +108 -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 +99 -0
- package/skills/apimapper/reference/render.md +132 -0
- package/skills/apimapper/reference/troubleshooting.md +21 -1
- package/skills/apimapper/reference/yootheme.md +1 -1
- 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
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"detect-clients.js","sourceRoot":"","sources":["../../src/setup/detect-clients.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"detect-clients.js","sourceRoot":"","sources":["../../src/setup/detect-clients.ts"],"names":[],"mappings":"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"}
|
|
@@ -33,7 +33,12 @@ async function runHandshake(proc, timeoutMs) {
|
|
|
33
33
|
const pending = new Map();
|
|
34
34
|
let nextId = 1;
|
|
35
35
|
let buf = "";
|
|
36
|
-
|
|
36
|
+
// DEF-LOW-3 (Wave-B audit, 2026-06-03): keep a reference to the data listener
|
|
37
|
+
// + the deadline timer so the deadline branch can detach the listener, clear
|
|
38
|
+
// the timer, and reject every still-pending resolver. Without this, a timeout
|
|
39
|
+
// left the stdout "data" listener attached and the pending Promises' resolvers
|
|
40
|
+
// dangling until proc.kill() (in the caller's finally) tore the stream down.
|
|
41
|
+
const onData = (chunk) => {
|
|
37
42
|
buf += chunk.toString("utf8");
|
|
38
43
|
// Process newline-delimited JSON.
|
|
39
44
|
// (MCP stdio transport uses newline-delimited JSONRPC.)
|
|
@@ -64,7 +69,25 @@ async function runHandshake(proc, timeoutMs) {
|
|
|
64
69
|
}
|
|
65
70
|
}
|
|
66
71
|
}
|
|
67
|
-
}
|
|
72
|
+
};
|
|
73
|
+
proc.stdout.on("data", onData);
|
|
74
|
+
let deadlineTimer;
|
|
75
|
+
// Cleanup is idempotent: detach the stdout listener, clear the deadline timer,
|
|
76
|
+
// and reject any resolver still in the pending map so no Promise is left
|
|
77
|
+
// hanging. Called from both the success and the deadline/error paths.
|
|
78
|
+
const cleanup = (rejectPendingWith) => {
|
|
79
|
+
proc.stdout.off("data", onData);
|
|
80
|
+
if (deadlineTimer !== undefined) {
|
|
81
|
+
clearTimeout(deadlineTimer);
|
|
82
|
+
deadlineTimer = undefined;
|
|
83
|
+
}
|
|
84
|
+
if (rejectPendingWith) {
|
|
85
|
+
for (const [id, p] of pending) {
|
|
86
|
+
pending.delete(id);
|
|
87
|
+
p.reject(rejectPendingWith);
|
|
88
|
+
}
|
|
89
|
+
}
|
|
90
|
+
};
|
|
68
91
|
function send(method, params) {
|
|
69
92
|
const id = nextId++;
|
|
70
93
|
const message = { jsonrpc: "2.0", id, method, params };
|
|
@@ -73,11 +96,16 @@ async function runHandshake(proc, timeoutMs) {
|
|
|
73
96
|
proc.stdin.write(`${JSON.stringify(message)}\n`);
|
|
74
97
|
});
|
|
75
98
|
}
|
|
76
|
-
// Wrap the whole handshake in a deadline.
|
|
99
|
+
// Wrap the whole handshake in a deadline. On fire, the cleanup detaches the
|
|
100
|
+
// listener, clears the timer, and rejects every pending request.
|
|
77
101
|
const deadline = new Promise((_, reject) => {
|
|
78
|
-
setTimeout(() =>
|
|
102
|
+
deadlineTimer = setTimeout(() => {
|
|
103
|
+
const err = new Error("Handshake timed out");
|
|
104
|
+
cleanup(err);
|
|
105
|
+
reject(err);
|
|
106
|
+
}, timeoutMs);
|
|
79
107
|
});
|
|
80
|
-
|
|
108
|
+
try {
|
|
81
109
|
// 1. initialize
|
|
82
110
|
await Promise.race([
|
|
83
111
|
send("initialize", {
|
|
@@ -99,8 +127,13 @@ async function runHandshake(proc, timeoutMs) {
|
|
|
99
127
|
.map((t) => (typeof t?.name === "string" ? t.name : null))
|
|
100
128
|
.filter((n) => n !== null);
|
|
101
129
|
return names;
|
|
102
|
-
}
|
|
103
|
-
|
|
130
|
+
}
|
|
131
|
+
finally {
|
|
132
|
+
// Success or thrown error (other than the deadline, which already cleaned
|
|
133
|
+
// up): detach the listener + clear the timer. Pending resolvers from the
|
|
134
|
+
// deadline path are already rejected; on the happy path the map is empty.
|
|
135
|
+
cleanup();
|
|
136
|
+
}
|
|
104
137
|
}
|
|
105
138
|
export async function probeHandshake(opts) {
|
|
106
139
|
const spawnFn = opts.spawn ?? defaultSpawn;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"probe-handshake.js","sourceRoot":"","sources":["../../src/setup/probe-handshake.ts"],"names":[],"mappings":"AAAA,4CAA4C;AAC5C,EAAE;AACF,oEAAoE;AACpE,uEAAuE;AACvE,2EAA2E;AAC3E,sEAAsE;AACtE,yCAAyC;AACzC,EAAE;AACF,uEAAuE;AACvE,sEAAsE;AACtE,0CAA0C;AAE1C,OAAO,EAAE,KAAK,IAAI,SAAS,EAAE,MAAM,oBAAoB,CAAC;AAGxD,MAAM,gBAAgB,GAAG,YAAY,CAAC;AACtC,MAAM,WAAW,GAAG,kBAAkB,CAAC;AACvC,MAAM,kBAAkB,GAAG,MAAM,CAAC;AA6BlC,SAAS,YAAY,CACnB,OAAe,EACf,IAAc,EACd,GAA2B;IAE3B,MAAM,KAAK,GAAG,SAAS,CAAC,OAAO,EAAE,IAAI,EAAE;QACrC,GAAG,EAAE,EAAE,GAAG,OAAO,CAAC,GAAG,EAAE,GAAG,GAAG,EAAE;QAC/B,KAAK,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC;KAChC,CAAC,CAAC;IACH,OAAO;QACL,KAAK,EAAE,KAAK,CAAC,KAAK;QAClB,MAAM,EAAE,KAAK,CAAC,MAAM;QACpB,IAAI,EAAE,CAAC,MAAuB,EAAE,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC;QACrD,EAAE,EAAE,CAAC,KAAK,EAAE,EAAE,EAAE,EAAE,CAAC,KAAK,CAAC,EAAE,CAAC,KAAK,EAAE,EAAW,CAAC;KAChD,CAAC;AACJ,CAAC;AAOD;;;GAGG;AACH,KAAK,UAAU,YAAY,CACzB,IAAsB,EACtB,SAAiB;IAEjB,MAAM,OAAO,GAAG,IAAI,GAAG,EAA0B,CAAC;IAClD,IAAI,MAAM,GAAG,CAAC,CAAC;IACf,IAAI,GAAG,GAAG,EAAE,CAAC;IAEb,
|
|
1
|
+
{"version":3,"file":"probe-handshake.js","sourceRoot":"","sources":["../../src/setup/probe-handshake.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
export interface RemoveConfigResult {
|
|
2
|
+
/** True iff at least one matching entry/table was deleted. */
|
|
3
|
+
removed: boolean;
|
|
4
|
+
/** The keys actually removed (subset of the requested keys). */
|
|
5
|
+
removedKeys: string[];
|
|
6
|
+
}
|
|
7
|
+
export declare function removeJsonConfig(path: string, keys: string[]): Promise<RemoveConfigResult>;
|
|
8
|
+
export declare function removeTomlConfig(path: string, keys: string[]): Promise<RemoveConfigResult>;
|
|
@@ -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":"AAAA,gEAAgE;AAChE,EAAE;AACF,4EAA4E;AAC5E,oEAAoE;AACpE,wEAAwE;AACxE,2EAA2E;AAC3E,mEAAmE;AACnE,EAAE;AACF,sEAAsE;AACtE,uEAAuE;AAEvE,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,WAAW,EAAE,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAE,IAAI,EAAE,MAAM,gBAAgB,CAAC;AAE5F,OAAO,EACL,sBAAsB,IAAI,6BAA6B,GAExD,MAAM,qBAAqB,CAAC;AAC7B,OAAO,EACL,gBAAgB,IAAI,uBAAuB,EAC3C,gBAAgB,IAAI,uBAAuB,GAE5C,MAAM,oBAAoB,CAAC;AAC5B,OAAO,EACL,cAAc,IAAI,qBAAqB,EACvC,gBAAgB,IAAI,uBAAuB,GAE5C,MAAM,uBAAuB,CAAC;AAqC/B,6EAA6E;AAE7E,KAAK,UAAU,mBAAmB,CAAC,KAIlC;IACC,KAAK,CAAC,6BAA6B,CAAC,CAAC;IAErC,IAAI,KAAK,CAAC,SAAS,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QAC/B,IAAI,CACF,KAAK,CAAC,SAAS;aACZ,GAAG,CACF,CAAC,CAAC,EAAE,EAAE,CACJ,GAAG,CAAC,CAAC,KAAK,KAAK,CAAC,CAAC,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,UAAU,GAAG,CAC/D;aACA,IAAI,CAAC,IAAI,CAAC,EACb,oCAAoC,CACrC,CAAC;IACJ,CAAC;IAED,IAAI,iBAAiB,GAAa,EAAE,CAAC;IACrC,IAAI,KAAK,CAAC,SAAS,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QAC/B,MAAM,SAAS,GAAG,MAAM,WAAW,CAAC;YAClC,OAAO,EAAE,2DAA2D;YACpE,OAAO,EAAE,KAAK,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;gBACnC,KAAK,EAAE,CAAC,CAAC,EAAE;gBACX,KAAK,EAAE,GAAG,CAAC,CAAC,KAAK,KAAK,CAAC,CAAC,UAAU,GAAG;aACtC,CAAC,CAAC;YACH,oDAAoD;YACpD,aAAa,EAAE,KAAK,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;YAC/C,QAAQ,EAAE,KAAK;SAChB,CAAC,CAAC;QACH,IAAI,QAAQ,CAAC,SAAS,CAAC,EAAE,CAAC;YACxB,MAAM,CAAC,2CAA2C,CAAC,CAAC;YACpD,OAAO,IAAI,CAAC;QACd,CAAC;QACD,iBAAiB,GAAG,SAAqB,CAAC;IAC5C,CAAC;IAED,IAAI,WAAW,GAAG,KAAK,CAAC;IACxB,IAAI,KAAK,CAAC,cAAc,EAAE,CAAC;QACzB,MAAM,QAAQ,GAAG,MAAM,OAAO,CAAC;YAC7B,OAAO,EACL,6FAA6F;YAC/F,YAAY,EAAE,IAAI;SACnB,CAAC,CAAC;QACH,IAAI,QAAQ,CAAC,QAAQ,CAAC,EAAE,CAAC;YACvB,MAAM,CAAC,2CAA2C,CAAC,CAAC;YACpD,OAAO,IAAI,CAAC;QACd,CAAC;QACD,WAAW,GAAG,QAAQ,CAAC;IACzB,CAAC;IAED,IACE,CAAC,KAAK,CAAC,WAAW;QAClB,CAAC,iBAAiB,CAAC,MAAM,GAAG,CAAC,IAAI,WAAW,CAAC,EAC7C,CAAC;QACD,MAAM,OAAO,GAAG,MAAM,OAAO,CAAC;YAC5B,OAAO,EAAE,eAAe,iBAAiB,CAAC,MAAM,aAAa,WAAW,CAAC,CAAC,CAAC,cAAc,CAAC,CAAC,CAAC,EAAE,GAAG;YACjG,YAAY,EAAE,IAAI;SACnB,CAAC,CAAC;QACH,IAAI,QAAQ,CAAC,OAAO,CAAC,IAAI,OAAO,KAAK,KAAK,EAAE,CAAC;YAC3C,MAAM,CAAC,2CAA2C,CAAC,CAAC;YACpD,OAAO,IAAI,CAAC;QACd,CAAC;IACH,CAAC;IAED,OAAO,EAAE,iBAAiB,EAAE,WAAW,EAAE,CAAC;AAC5C,CAAC;AAED,MAAM,YAAY,GAAkB;IAClC,sBAAsB,EAAE,GAAG,EAAE,CAAC,6BAA6B,EAAE;IAC7D,gBAAgB,EAAE,GAAG,EAAE,CAAC,uBAAuB,EAAE;IACjD,gBAAgB,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,uBAAuB,CAAC,CAAC,EAAE,CAAC,CAAC;IACzD,gBAAgB,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,uBAAuB,CAAC,CAAC,EAAE,CAAC,CAAC;IACzD,cAAc,EAAE,GAAG,EAAE,CAAC,qBAAqB,EAAE;IAC7C,MAAM,EAAE,mBAAmB;CAC5B,CAAC;AAEF,8EAA8E;AAE9E,MAAM,CAAC,KAAK,UAAU,YAAY,CAChC,UAA4B,EAAE,EAC9B,OAAsB,YAAY;IAElC,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,IAAI,CAAC,CAAC,IAAY,EAAE,EAAE,CAAC,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,IAAI,IAAI,CAAC,CAAC,CAAC;IAE9E,MAAM,SAAS,GAAG,MAAM,IAAI,CAAC,sBAAsB,EAAE,CAAC;IACtD,MAAM,cAAc,GAAG,IAAI,CAAC,gBAAgB,EAAE,CAAC;IAE/C,IAAI,SAAS,CAAC,MAAM,KAAK,CAAC,IAAI,CAAC,cAAc,EAAE,CAAC;QAC9C,GAAG,CAAC,iEAAiE,CAAC,CAAC;QACvE,OAAO,CAAC,CAAC;IACX,CAAC;IAED,4DAA4D;IAC5D,IAAI,SAAoC,CAAC;IACzC,IAAI,OAAO,CAAC,GAAG,EAAE,CAAC;QAChB,SAAS,GAAG;YACV,iBAAiB,EAAE,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;YAC7C,WAAW,EAAE,cAAc;SAC5B,CAAC;IACJ,CAAC;SAAM,CAAC;QACN,SAAS,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC;YAC5B,SAAS;YACT,cAAc;YACd,WAAW,EAAE,OAAO,CAAC,OAAO,CAAC,GAAG,CAAC;SAClC,CAAC,CAAC;QACH,IAAI,CAAC,SAAS;YAAE,OAAO,GAAG,CAAC,CAAC,iBAAiB;IAC/C,CAAC;IAED,MAAM,WAAW,GAAG,IAAI,GAAG,CAAC,SAAS,CAAC,iBAAiB,CAAC,CAAC;IACzD,IAAI,UAAU,GAAG,KAAK,CAAC;IACvB,KAAK,MAAM,MAAM,IAAI,SAAS,EAAE,CAAC;QAC/B,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC;YAAE,SAAS;QAC1C,IAAI,CAAC;YACH,MAAM,OAAO,GACX,MAAM,CAAC,MAAM,KAAK,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,gBAAgB,CAAC,CAAC,CAAC,IAAI,CAAC,gBAAgB,CAAC;YAC3E,MAAM,GAAG,GAAG,MAAM,OAAO,CAAC,MAAM,CAAC,UAAU,EAAE,MAAM,CAAC,WAAW,CAAC,CAAC;YACjE,IAAI,GAAG,CAAC,OAAO,EAAE,CAAC;gBAChB,UAAU,GAAG,IAAI,CAAC;gBAClB,GAAG,CACD,KAAK,MAAM,CAAC,KAAK,aAAa,GAAG,CAAC,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,MAAM,CAAC,UAAU,EAAE,CACrF,CAAC;YACJ,CAAC;iBAAM,CAAC;gBACN,GAAG,CAAC,KAAK,MAAM,CAAC,KAAK,4CAA4C,CAAC,CAAC;YACrE,CAAC;QACH,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,GAAG,CACD,KAAK,MAAM,CAAC,KAAK,qBAAqB,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,CACzF,CAAC;QACJ,CAAC;IACH,CAAC;IAED,IAAI,gBAAgB,GAAG,aAAa,CAAC;IACrC,IAAI,SAAS,CAAC,WAAW,IAAI,cAAc,EAAE,CAAC;QAC5C,IAAI,CAAC;YACH,MAAM,GAAG,GAAG,MAAM,IAAI,CAAC,cAAc,EAAE,CAAC;YACxC,UAAU,GAAG,UAAU,IAAI,GAAG,CAAC,YAAY,IAAI,GAAG,CAAC,aAAa,CAAC;YACjE,gBAAgB,GAAG,GAAG,CAAC,YAAY;gBACjC,CAAC,CAAC,8CAA8C;gBAChD,CAAC,CAAC,GAAG,CAAC,aAAa;oBACjB,CAAC,CAAC,8CAA8C;oBAChD,CAAC,CAAC,0BAA0B,CAAC;QACnC,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,gBAAgB,GAAG,0BAA0B,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,CAAC;QAClG,CAAC;IACH,CAAC;IACD,GAAG,CAAC,gBAAgB,CAAC,CAAC;IAEtB,MAAM,OAAO,GAAG,UAAU;QACxB,CAAC,CAAC,kEAAkE;QACpE,CAAC,CAAC,gEAAgE,CAAC;IACrE,0EAA0E;IAC1E,0EAA0E;IAC1E,uDAAuD;IACvD,GAAG,CAAC,OAAO,CAAC,CAAC;IACb,IAAI,CAAC,OAAO,CAAC,GAAG;QAAE,KAAK,CAAC,OAAO,CAAC,CAAC;IACjC,OAAO,CAAC,CAAC;AACX,CAAC"}
|
package/dist/setup-cli.d.ts
CHANGED
|
@@ -4,6 +4,7 @@ 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 UninstallOptions } from "./setup/uninstall.js";
|
|
7
8
|
export interface IdentityResponse {
|
|
8
9
|
platform: "wordpress" | "joomla" | "unknown";
|
|
9
10
|
siteurl: string;
|
|
@@ -43,7 +44,66 @@ export interface WizardDeps {
|
|
|
43
44
|
interface RunCliDeps {
|
|
44
45
|
installSkill: typeof defaultInstallSkill;
|
|
45
46
|
runWizard: () => Promise<number>;
|
|
47
|
+
runUninstall: (options: UninstallOptions) => Promise<number>;
|
|
46
48
|
}
|
|
49
|
+
export declare function inferDistTag(token: string, options?: {
|
|
50
|
+
override?: string;
|
|
51
|
+
}): string;
|
|
52
|
+
/**
|
|
53
|
+
* Heuristic: are ALL given errors "HTTP 404" probe failures?
|
|
54
|
+
*
|
|
55
|
+
* Used by {@link probeIdentity} to distinguish the customer-friendly
|
|
56
|
+
* "plugin not installed" case (every leg of the parallel probe got a 404)
|
|
57
|
+
* from the generic "probe failed" case (mixed statuses, 5xx, network
|
|
58
|
+
* errors, etc.). A 404 from both the WordPress and Joomla identity
|
|
59
|
+
* endpoints is the canonical signature of "plugin not installed at the
|
|
60
|
+
* target site" — every other failure shape should retain the existing
|
|
61
|
+
* generic error path so support gets the full status detail.
|
|
62
|
+
*
|
|
63
|
+
* Guards against the empty-array edge case explicitly: an empty input
|
|
64
|
+
* returns `false`, even though `Array.prototype.every` returns `true`
|
|
65
|
+
* for an empty array by spec. An empty `AggregateError.errors` means
|
|
66
|
+
* "no failures observed" — that is structurally NOT the "all 404"
|
|
67
|
+
* scenario and must not trigger the plugin-not-installed branch.
|
|
68
|
+
*
|
|
69
|
+
* @param errors The error array (typically `AggregateError.errors`).
|
|
70
|
+
* @returns `true` iff `errors` is non-empty AND every entry's message
|
|
71
|
+
* matches `/\bHTTP 404\b/` (word-boundary anchored to avoid
|
|
72
|
+
* false-positives on substrings like `"HTTP 4040"`).
|
|
73
|
+
*/
|
|
74
|
+
export declare function isAllHttp404(errors: unknown[]): boolean;
|
|
75
|
+
/**
|
|
76
|
+
* Probe both WP and Joomla identity endpoints. Throws on any failure —
|
|
77
|
+
* see error-shape contract below.
|
|
78
|
+
*
|
|
79
|
+
* Error-shape contract (two distinct cases, both surface as `Error`):
|
|
80
|
+
*
|
|
81
|
+
* 1. **Plugin not installed** — when BOTH the WordPress and Joomla
|
|
82
|
+
* identity probes return HTTP 404. The thrown error's message
|
|
83
|
+
* starts with `"API Mapper plugin is not installed at <siteUrl>"`
|
|
84
|
+
* and includes remediation guidance (WP/Joomla install paths).
|
|
85
|
+
* This is the typical customer scenario — they pasted a valid
|
|
86
|
+
* key but haven't installed the plugin yet.
|
|
87
|
+
*
|
|
88
|
+
* 2. **Generic probe failure** — every other failure mode (mixed
|
|
89
|
+
* statuses, 5xx, 401/403, network errors, timeouts). The thrown
|
|
90
|
+
* error's message starts with `"Identity probe failed"` and
|
|
91
|
+
* includes the per-leg failure messages so support can triage.
|
|
92
|
+
*
|
|
93
|
+
* Non-`AggregateError` exceptions thrown during the probe (e.g. an
|
|
94
|
+
* `AbortError` after the {@link PROBE_TIMEOUT_MS} deadline) propagate
|
|
95
|
+
* unchanged.
|
|
96
|
+
*
|
|
97
|
+
* @param siteUrl Customer's site URL (trailing slashes are trimmed).
|
|
98
|
+
* @returns The first successful identity response (WP or Joomla).
|
|
99
|
+
* @throws {Error} See the two error-shape cases above.
|
|
100
|
+
*/
|
|
101
|
+
export declare function probeIdentity(siteUrl: string): Promise<IdentityResponse>;
|
|
47
102
|
export declare function runWizard(deps?: WizardDeps): Promise<number>;
|
|
103
|
+
/**
|
|
104
|
+
* Parse the `uninstall` flag tail. Recognises `--all`, `--yes`, and `-y`.
|
|
105
|
+
* Unknown flags are ignored (forward-compatible). Order-independent.
|
|
106
|
+
*/
|
|
107
|
+
export declare function parseUninstallFlags(args: string[]): UninstallOptions;
|
|
48
108
|
export declare function runCli(argv: string[], deps?: Partial<RunCliDeps>): Promise<number>;
|
|
49
109
|
export {};
|