@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
|
@@ -5,6 +5,7 @@ import { registerGraphTools } from "./graph.js";
|
|
|
5
5
|
import { registerLocalSourceTools } from "./local-sources.js";
|
|
6
6
|
import { registerSchemaTools } from "./schema.js";
|
|
7
7
|
import { registerLibraryTools } from "./library.js";
|
|
8
|
+
import { registerYoothemeBindingTools } from "./yootheme-binding.js";
|
|
8
9
|
import { registerCacheTools } from "./cache.js";
|
|
9
10
|
import { registerSettingsTools } from "./settings.js";
|
|
10
11
|
import { registerLicenseTools } from "./license.js";
|
|
@@ -15,24 +16,68 @@ import { registerGetSkillTool } from "./get-skill.js";
|
|
|
15
16
|
import { registerOnboardingTool } from "./onboarding.js";
|
|
16
17
|
import { registerInspectTokenTool } from "./inspect.js";
|
|
17
18
|
import { registerDiagnoseTool } from "./diagnose.js";
|
|
19
|
+
import { registerRenderTool } from "./render/index.js";
|
|
20
|
+
import { CapturingServer } from "./gateway/capturing-server.js";
|
|
21
|
+
import { registerAdvancedTool } from "./gateway/advanced-tool.js";
|
|
22
|
+
import { toElicitationCapability } from "./elicitation.js";
|
|
23
|
+
/**
|
|
24
|
+
* Module-level cache of the advanced-tool registry captured during the most
|
|
25
|
+
* recent `register()` call. Accessed via `apimapperRestModule.getAdvancedRegistry()`.
|
|
26
|
+
*
|
|
27
|
+
* INVARIANT — single-server-per-process. The MCP adapter is designed to run
|
|
28
|
+
* as one `McpServer` instance per process (stdio transport bound to a single
|
|
29
|
+
* client). `register()` is invoked exactly once during process bootstrap; the
|
|
30
|
+
* captured registry then stays stable for the lifetime of the server. The
|
|
31
|
+
* gateway surface tests rely on this single-server invariant.
|
|
32
|
+
*
|
|
33
|
+
* INVARIANT — last-write-wins. If a future caller ever invokes `register()`
|
|
34
|
+
* a second time on a fresh `McpServer` (e.g. test wiring that re-binds the
|
|
35
|
+
* module to a new server), `lastAdvancedRegistry` is overwritten by the most
|
|
36
|
+
* recent capture. This is intentional for the W3.4 gateway design — only the
|
|
37
|
+
* latest server's tool set is reachable through the module-level accessor.
|
|
38
|
+
*
|
|
39
|
+
* NOT SUPPORTED — concurrent registrations on different `McpServer` instances
|
|
40
|
+
* would race on this cell. The adapter is not designed for that topology;
|
|
41
|
+
* running multiple servers in one process would also break stdio multiplexing
|
|
42
|
+
* higher up the stack. F-1.4 (Pass-1 consolidation) makes that invariant
|
|
43
|
+
* explicit so reviewers do not mistake the module-level mutable state for a
|
|
44
|
+
* latent thread-safety bug.
|
|
45
|
+
*/
|
|
46
|
+
let lastAdvancedRegistry;
|
|
18
47
|
export const apimapperRestModule = {
|
|
19
48
|
name: "apimapper-rest",
|
|
20
49
|
description: "API Mapper REST coverage — Full coverage of /wp-json/api-mapper/v1/* (connections, credentials, " +
|
|
21
50
|
"flows, graph, local-sources, schema, library, cache, settings, license, releases, " +
|
|
22
51
|
"brandfetch, feedback) plus composite workflows.",
|
|
23
52
|
register: (server) => {
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
53
|
+
// Route every tool registration through the CapturingServer: essentials
|
|
54
|
+
// forward to the real server, the rest are captured for the gateway.
|
|
55
|
+
const capturing = new CapturingServer(server);
|
|
56
|
+
// W3.6 — targeted elicitation. The 3 modules below have a disambiguation
|
|
57
|
+
// site that can prompt the user via the MCP elicitation channel. The
|
|
58
|
+
// toolkit's `elicitChoice` needs a `{ server: { elicitInput } }` whose
|
|
59
|
+
// `elicitInput` is typed with the toolkit's loose `ElicitInputParams`;
|
|
60
|
+
// the SDK's `McpServer.server.elicitInput` is the stricter discriminated
|
|
61
|
+
// form/url union, so `toElicitationCapability` is the typed adapter that
|
|
62
|
+
// bridges the two (single documented cast — see elicitation.ts). The
|
|
63
|
+
// capability is passed as the optional 2nd argument to ONLY these 3
|
|
64
|
+
// modules — the other 15 are untouched. When the argument is absent
|
|
65
|
+
// (host wiring without elicitation), each tool falls back to a structured
|
|
66
|
+
// `errorResult` on genuine ambiguity instead of prompting.
|
|
67
|
+
const elicitation = toElicitationCapability(server);
|
|
68
|
+
registerConnectionTools(capturing, elicitation);
|
|
69
|
+
registerCredentialTools(capturing, elicitation);
|
|
70
|
+
registerFlowTools(capturing, elicitation);
|
|
71
|
+
registerGraphTools(capturing);
|
|
72
|
+
registerLocalSourceTools(capturing);
|
|
73
|
+
registerSchemaTools(capturing);
|
|
74
|
+
registerLibraryTools(capturing);
|
|
75
|
+
registerYoothemeBindingTools(capturing);
|
|
76
|
+
registerCacheTools(capturing);
|
|
77
|
+
registerSettingsTools(capturing);
|
|
78
|
+
registerLicenseTools(capturing);
|
|
79
|
+
registerMiscTools(capturing);
|
|
80
|
+
registerWorkflowTools(capturing);
|
|
36
81
|
// Skill resources are an MCP-spec protocol concept but Claude Desktop
|
|
37
82
|
// (2026-05-19 rc-period) does not yet honour the `audience: ["assistant"]`
|
|
38
83
|
// annotation that would hide them from the user-facing resource picker.
|
|
@@ -44,12 +89,18 @@ export const apimapperRestModule = {
|
|
|
44
89
|
//
|
|
45
90
|
// When Claude Desktop ships audience-filtering, flip the default to ON.
|
|
46
91
|
if (process.env.APIMAPPER_EXPOSE_SKILL_RESOURCES === "1") {
|
|
47
|
-
registerSkillResources(
|
|
92
|
+
registerSkillResources(capturing);
|
|
48
93
|
}
|
|
49
|
-
registerGetSkillTool(
|
|
50
|
-
registerOnboardingTool(
|
|
51
|
-
registerInspectTokenTool(
|
|
52
|
-
registerDiagnoseTool(
|
|
94
|
+
registerGetSkillTool(capturing);
|
|
95
|
+
registerOnboardingTool(capturing);
|
|
96
|
+
registerInspectTokenTool(capturing);
|
|
97
|
+
registerDiagnoseTool(capturing);
|
|
98
|
+
registerRenderTool(capturing);
|
|
99
|
+
// Register the single gateway to every captured advanced tool.
|
|
100
|
+
const advancedRegistry = capturing.getAdvancedRegistry();
|
|
101
|
+
registerAdvancedTool(server, advancedRegistry);
|
|
102
|
+
lastAdvancedRegistry = advancedRegistry;
|
|
53
103
|
},
|
|
104
|
+
getAdvancedRegistry: () => lastAdvancedRegistry,
|
|
54
105
|
};
|
|
55
106
|
//# sourceMappingURL=index.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/modules/apimapper/index.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,uBAAuB,EAAE,MAAM,kBAAkB,CAAC;AAC3D,OAAO,EAAE,uBAAuB,EAAE,MAAM,kBAAkB,CAAC;AAC3D,OAAO,EAAE,iBAAiB,EAAE,MAAM,YAAY,CAAC;AAC/C,OAAO,EAAE,kBAAkB,EAAE,MAAM,YAAY,CAAC;AAChD,OAAO,EAAE,wBAAwB,EAAE,MAAM,oBAAoB,CAAC;AAC9D,OAAO,EAAE,mBAAmB,EAAE,MAAM,aAAa,CAAC;AAClD,OAAO,EAAE,oBAAoB,EAAE,MAAM,cAAc,CAAC;AACpD,OAAO,EAAE,kBAAkB,EAAE,MAAM,YAAY,CAAC;AAChD,OAAO,EAAE,qBAAqB,EAAE,MAAM,eAAe,CAAC;AACtD,OAAO,EAAE,oBAAoB,EAAE,MAAM,cAAc,CAAC;AACpD,OAAO,EAAE,iBAAiB,EAAE,MAAM,WAAW,CAAC;AAC9C,OAAO,EAAE,qBAAqB,EAAE,MAAM,gBAAgB,CAAC;AACvD,OAAO,EAAE,sBAAsB,EAAE,MAAM,sBAAsB,CAAC;AAC9D,OAAO,EAAE,oBAAoB,EAAE,MAAM,gBAAgB,CAAC;AACtD,OAAO,EAAE,sBAAsB,EAAE,MAAM,iBAAiB,CAAC;AACzD,OAAO,EAAE,wBAAwB,EAAE,MAAM,cAAc,CAAC;AACxD,OAAO,EAAE,oBAAoB,EAAE,MAAM,eAAe,CAAC;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/modules/apimapper/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,10 +1,11 @@
|
|
|
1
|
-
import type {
|
|
1
|
+
import type { ToolRegistrar } from "./gateway/capturing-server.js";
|
|
2
2
|
import { type TokenPayload } from "../../auth/token.js";
|
|
3
3
|
export interface InspectTokenDerived {
|
|
4
4
|
age_seconds: number;
|
|
5
5
|
expires_in_seconds?: number;
|
|
6
6
|
expired: boolean;
|
|
7
7
|
env: "live" | "test";
|
|
8
|
+
is_current: boolean;
|
|
8
9
|
}
|
|
9
10
|
export interface InspectTokenResult {
|
|
10
11
|
valid: boolean;
|
|
@@ -17,4 +18,4 @@ export interface InspectTokenResult {
|
|
|
17
18
|
* never throws.
|
|
18
19
|
*/
|
|
19
20
|
export declare function inspectToken(token: string): InspectTokenResult;
|
|
20
|
-
export declare function registerInspectTokenTool(server:
|
|
21
|
+
export declare function registerInspectTokenTool(server: ToolRegistrar): void;
|
|
@@ -8,11 +8,22 @@
|
|
|
8
8
|
// - `expires_in_seconds` — only if the token carries `exp`.
|
|
9
9
|
// - `expired` — boolean. Tokens WITHOUT `exp` are treated as non-expiring
|
|
10
10
|
// (never expired), matching the server-side KeyService behaviour.
|
|
11
|
+
// - `is_current` — boolean. True when the inspected token equals
|
|
12
|
+
// `APIMAPPER_WP_APP_PASS` in this MCP process. Helps clients detect
|
|
13
|
+
// "user pasted the token that's already configured".
|
|
11
14
|
//
|
|
12
|
-
// No HTTP is performed.
|
|
13
|
-
//
|
|
15
|
+
// No HTTP is performed.
|
|
16
|
+
//
|
|
17
|
+
// rc.13 Welle 3 (2026-05-20) — the `apimapper_inspect_token` MCP tool
|
|
18
|
+
// migrated to the toolkit's detailResult builder. The decoded TokenPayload
|
|
19
|
+
// (iss/kid/sub/scope/iat/exp/name) carries NO secret material; the RAW token
|
|
20
|
+
// STRING the user pasted is the secret. detailResult serializes its payload
|
|
21
|
+
// into `_meta.ui.payload`, so the raw token must never reach the builder —
|
|
22
|
+
// the detail surfaces only a MASKED token prefix (`maskToken()`). The pure
|
|
23
|
+
// `inspectToken()` function is unchanged (it never held the raw token in its
|
|
24
|
+
// result — the raw string only ever lives in the input arg).
|
|
14
25
|
import { z } from "zod";
|
|
15
|
-
import {
|
|
26
|
+
import { detailResult, errorResult, readOnly } from "@getimo/mcp-toolkit";
|
|
16
27
|
import { decodeToken } from "../../auth/token.js";
|
|
17
28
|
// Token prefix re-extracted here (independent of token.ts internals) — we
|
|
18
29
|
// only need env classification, which is the second segment of `amk_<env>_*`.
|
|
@@ -42,10 +53,18 @@ export function inspectToken(token) {
|
|
|
42
53
|
}
|
|
43
54
|
const nowSec = Math.floor(Date.now() / 1000);
|
|
44
55
|
const age_seconds = nowSec - payload.iat;
|
|
56
|
+
// is_current: does the inspected token equal the token configured in this
|
|
57
|
+
// MCP process? Helps the AI client detect "user pasted the same token
|
|
58
|
+
// that's already wired up". Plain `===` is acceptable here — both tokens
|
|
59
|
+
// live in the same process memory, so a timing-attack model does not
|
|
60
|
+
// apply (no remote attacker observes the comparison).
|
|
61
|
+
const currentToken = process.env.APIMAPPER_WP_APP_PASS ?? "";
|
|
62
|
+
const isCurrent = currentToken.length > 0 && currentToken === token;
|
|
45
63
|
const derived = {
|
|
46
64
|
env,
|
|
47
65
|
age_seconds,
|
|
48
66
|
expired: false,
|
|
67
|
+
is_current: isCurrent,
|
|
49
68
|
};
|
|
50
69
|
if (typeof payload.exp === "number") {
|
|
51
70
|
const expires_in_seconds = payload.exp - nowSec;
|
|
@@ -55,13 +74,31 @@ export function inspectToken(token) {
|
|
|
55
74
|
return { valid: true, payload, derived };
|
|
56
75
|
}
|
|
57
76
|
// ── MCP tool registration ──────────────────────────────────────────────
|
|
77
|
+
/**
|
|
78
|
+
* Mask a token string for display. The raw token is the secret; this keeps
|
|
79
|
+
* ONLY the non-secret `amk_<env>_` prefix and replaces the payload+signature
|
|
80
|
+
* body with a fixed redaction marker + length bracket. The full token is
|
|
81
|
+
* NEVER returned. A non-token / short input yields a plain redaction marker.
|
|
82
|
+
*
|
|
83
|
+
* Example: "amk_live_eyJ2…BIGBODY….sig" → "amk_live_•••• (84 chars)"
|
|
84
|
+
*/
|
|
85
|
+
function maskToken(token) {
|
|
86
|
+
if (typeof token !== "string" || token.length === 0)
|
|
87
|
+
return "—";
|
|
88
|
+
const m = /^amk_(live|test)_/.exec(token);
|
|
89
|
+
if (!m)
|
|
90
|
+
return "•••• (redacted)";
|
|
91
|
+
return `amk_${m[1]}_•••• (${token.length} chars)`;
|
|
92
|
+
}
|
|
58
93
|
export function registerInspectTokenTool(server) {
|
|
59
94
|
server.registerTool("apimapper_inspect_token", {
|
|
60
95
|
title: "Inspect Token (Network-Free)",
|
|
61
96
|
description: "Decode an API Mapper token (amk_live_… or amk_test_…) WITHOUT calling the network. " +
|
|
62
97
|
"Returns the full payload (iss, kid, sub, scope, iat, exp, name) plus derived diagnostics " +
|
|
63
|
-
"(age_seconds, expires_in_seconds, expired, env).
|
|
64
|
-
"
|
|
98
|
+
"(age_seconds, expires_in_seconds, expired, env, is_current). `is_current` is true when the " +
|
|
99
|
+
"inspected token matches APIMAPPER_WP_APP_PASS in this MCP process — useful to detect if the " +
|
|
100
|
+
"user pasted the same token already configured. Signature is NOT verified — server validates " +
|
|
101
|
+
"on each request." +
|
|
65
102
|
"\n\nExample:\n apimapper_inspect_token({ token: 'amk_live_eyJ2IjoxLC...XYZ.abc123' })",
|
|
66
103
|
inputSchema: {
|
|
67
104
|
token: z
|
|
@@ -69,18 +106,65 @@ export function registerInspectTokenTool(server) {
|
|
|
69
106
|
.min(1)
|
|
70
107
|
.describe('Token string (e.g., "amk_live_eyJ2IjoxLC...XYZ.abc123"). Pasted by user.'),
|
|
71
108
|
},
|
|
72
|
-
annotations: readOnly(),
|
|
109
|
+
annotations: readOnly({ title: "Inspect Token", openWorld: false }),
|
|
73
110
|
}, async ({ token }) => {
|
|
74
111
|
const result = inspectToken(token);
|
|
75
112
|
if (!result.valid) {
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
113
|
+
// SECURITY: the error branch echoes ONLY the token length + a masked
|
|
114
|
+
// prefix — never the raw token string.
|
|
115
|
+
return errorResult({
|
|
116
|
+
message: result.error ?? "token decode failed",
|
|
117
|
+
code: "malformed-token",
|
|
118
|
+
suggestion: "Verify the token starts with 'amk_live_' or 'amk_test_' and was copied complete (no truncation).",
|
|
119
|
+
details: { token_length: token.length, token_masked: maskToken(token) },
|
|
120
|
+
});
|
|
121
|
+
}
|
|
122
|
+
// W3.1 — detailResult: the decoded payload + derived diagnostics render
|
|
123
|
+
// as a grouped key-value detail. SECURITY: the raw token string is the
|
|
124
|
+
// secret — only `maskToken()` output reaches a DetailEntry. The
|
|
125
|
+
// TokenPayload itself (iss/kid/sub/scope/iat/exp/name) carries no secret.
|
|
126
|
+
const p = result.payload;
|
|
127
|
+
const d = result.derived;
|
|
128
|
+
const payloadEntries = [
|
|
129
|
+
// SECURITY: masked — the raw token never reaches this entry.
|
|
130
|
+
{ key: "token", label: "Token", value: maskToken(token), format: "code" },
|
|
131
|
+
{ key: "iss", label: "Issuer", value: p.iss, format: "text" },
|
|
132
|
+
{ key: "kid", label: "Key ID", value: p.kid, format: "code", copyable: true },
|
|
133
|
+
{ key: "sub", label: "Subject", value: p.sub, format: "code" },
|
|
134
|
+
// scope is an array — detailResult groups are scalar-only, so flatten.
|
|
135
|
+
{ key: "scope", label: "Scope", value: p.scope.join(", ") },
|
|
136
|
+
{ key: "iat", label: "Issued at (unix)", value: p.iat },
|
|
137
|
+
];
|
|
138
|
+
if (typeof p.exp === "number") {
|
|
139
|
+
payloadEntries.push({ key: "exp", label: "Expires (unix)", value: p.exp });
|
|
140
|
+
}
|
|
141
|
+
if (typeof p.name === "string") {
|
|
142
|
+
payloadEntries.push({ key: "name", label: "Label", value: p.name, format: "text" });
|
|
143
|
+
}
|
|
144
|
+
const derivedEntries = [
|
|
145
|
+
{ key: "env", label: "Environment", value: d.env, format: "badge" },
|
|
146
|
+
{ key: "age_seconds", label: "Age (s)", value: d.age_seconds },
|
|
147
|
+
{ key: "expired", label: "Expired", value: d.expired, format: "boolean" },
|
|
148
|
+
{ key: "is_current", label: "Is current process token", value: d.is_current, format: "boolean" },
|
|
149
|
+
];
|
|
150
|
+
if (typeof d.expires_in_seconds === "number") {
|
|
151
|
+
derivedEntries.push({
|
|
152
|
+
key: "expires_in_seconds",
|
|
153
|
+
label: "Expires in (s)",
|
|
154
|
+
value: d.expires_in_seconds,
|
|
155
|
+
});
|
|
82
156
|
}
|
|
83
|
-
return
|
|
157
|
+
return detailResult({
|
|
158
|
+
title: p.name ? `Token: ${p.name}` : "Token inspection",
|
|
159
|
+
subtitle: `${d.env} · ${d.expired ? "expired" : "valid"}`,
|
|
160
|
+
badge: d.expired
|
|
161
|
+
? { text: "expired", variant: "destructive" }
|
|
162
|
+
: { text: d.env, variant: "info" },
|
|
163
|
+
groups: [
|
|
164
|
+
{ label: "Payload", entries: payloadEntries },
|
|
165
|
+
{ label: "Diagnostics", entries: derivedEntries },
|
|
166
|
+
],
|
|
167
|
+
});
|
|
84
168
|
});
|
|
85
169
|
}
|
|
86
170
|
//# sourceMappingURL=inspect.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"inspect.js","sourceRoot":"","sources":["../../../src/modules/apimapper/inspect.ts"],"names":[],"mappings":"AAAA,6EAA6E;AAC7E,EAAE;AACF,6EAA6E;AAC7E,2EAA2E;AAC3E,EAAE;AACF,4DAA4D;AAC5D,2CAA2C;AAC3C,8DAA8D;AAC9D,4EAA4E;AAC5E,sEAAsE;AACtE,
|
|
1
|
+
{"version":3,"file":"inspect.js","sourceRoot":"","sources":["../../../src/modules/apimapper/inspect.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import type {
|
|
2
|
-
export declare function registerLibraryTools(server:
|
|
1
|
+
import type { ToolRegistrar } from "./gateway/capturing-server.js";
|
|
2
|
+
export declare function registerLibraryTools(server: ToolRegistrar): void;
|