@wootsup/mcp 0.1.0-rc.8 → 0.1.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/README.md +7 -7
- package/dist/index.d.ts +19 -0
- package/dist/index.js +72 -6
- package/dist/index.js.map +1 -1
- package/dist/modules/apimapper/cache.d.ts +2 -2
- package/dist/modules/apimapper/cache.js +107 -25
- package/dist/modules/apimapper/cache.js.map +1 -1
- package/dist/modules/apimapper/client.d.ts +40 -0
- package/dist/modules/apimapper/client.js +82 -12
- 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 +447 -143
- package/dist/modules/apimapper/connections.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 +253 -72
- package/dist/modules/apimapper/credentials.js.map +1 -1
- package/dist/modules/apimapper/diagnose.d.ts +54 -2
- package/dist/modules/apimapper/diagnose.js +193 -11
- 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 +325 -118
- 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 +214 -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 +28 -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 +4 -2
- 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 +165 -34
- package/dist/modules/apimapper/graph.js.map +1 -1
- package/dist/modules/apimapper/index.d.ts +17 -1
- package/dist/modules/apimapper/index.js +66 -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 +303 -60
- 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 +85 -37
- 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 +58 -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 +129 -50
- 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 +48 -2
- package/dist/modules/apimapper/onboarding.js +324 -17
- 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 +100 -32
- 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 +101 -40
- package/dist/modules/apimapper/settings.js.map +1 -1
- 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/toolslist-size.d.ts +55 -0
- package/dist/modules/apimapper/toolslist-size.js +190 -0
- package/dist/modules/apimapper/toolslist-size.js.map +1 -0
- package/dist/modules/apimapper/types.d.ts +23 -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/workflows.d.ts +2 -2
- package/dist/modules/apimapper/workflows.js +143 -16
- package/dist/modules/apimapper/workflows.js.map +1 -1
- package/dist/platform/index.js +44 -5
- package/dist/platform/index.js.map +1 -1
- package/dist/setup-cli.d.ts +53 -0
- package/dist/setup-cli.js +135 -6
- package/dist/setup-cli.js.map +1 -1
- package/docs/architecture.md +1 -1
- package/docs/tools.md +1 -1
- package/manifest.json +12 -3
- package/package.json +9 -4
- package/skills/apimapper/SKILL.md +1 -1
- package/skills/apimapper/reference/render.md +132 -0
- package/skills/apimapper/reference/troubleshooting.md +1 -1
- package/skills/apimapper/reference/yootheme.md +1 -1
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
// src/modules/apimapper/get-skill.ts — Phase 7.4.
|
|
2
2
|
//
|
|
3
|
-
// apimapper_get_skill: returns the markdown content of one of the
|
|
3
|
+
// apimapper_get_skill: returns the markdown content of one of the 6 bundled
|
|
4
4
|
// skill docs. Sibling to skill://apimapper/<topic> resources (Phase 7.3) for
|
|
5
5
|
// clients that prefer tool-call discovery over resource discovery.
|
|
6
6
|
import { z } from "zod";
|
|
@@ -14,6 +14,7 @@ export const SKILL_TOPICS = [
|
|
|
14
14
|
"yootheme",
|
|
15
15
|
"joomla",
|
|
16
16
|
"troubleshooting",
|
|
17
|
+
"render",
|
|
17
18
|
];
|
|
18
19
|
const TOPIC_TO_FILE = {
|
|
19
20
|
"getting-started": "SKILL.md",
|
|
@@ -21,6 +22,7 @@ const TOPIC_TO_FILE = {
|
|
|
21
22
|
yootheme: "reference/yootheme.md",
|
|
22
23
|
joomla: "reference/joomla.md",
|
|
23
24
|
troubleshooting: "reference/troubleshooting.md",
|
|
25
|
+
render: "reference/render.md",
|
|
24
26
|
};
|
|
25
27
|
function defaultSkillsRoot() {
|
|
26
28
|
// <pkg-root>/src/modules/apimapper/get-skill.ts → up three.
|
|
@@ -39,7 +41,7 @@ export function registerGetSkillTool(server, rootDir) {
|
|
|
39
41
|
.enum(SKILL_TOPICS)
|
|
40
42
|
.describe(`Which doc to fetch — one of: ${SKILL_TOPICS.join(", ")}`),
|
|
41
43
|
},
|
|
42
|
-
annotations: readOnly(),
|
|
44
|
+
annotations: readOnly({ title: "Get Skill Resource", openWorld: false }),
|
|
43
45
|
}, async ({ topic }) => {
|
|
44
46
|
// Defensive runtime check — zod already validates at the MCP layer, but
|
|
45
47
|
// a direct unit-test invocation can bypass validation, and we want to
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"get-skill.js","sourceRoot":"","sources":["../../../src/modules/apimapper/get-skill.ts"],"names":[],"mappings":"AAAA,kDAAkD;AAClD,EAAE;AACF,4EAA4E;AAC5E,6EAA6E;AAC7E,mEAAmE;AAGnE,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AACvC,OAAO,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AACzC,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACnD,OAAO,EAAE,QAAQ,EAAE,MAAM,qBAAqB,CAAC;AAE/C,MAAM,CAAC,MAAM,YAAY,GAAG;IAC1B,iBAAiB;IACjB,OAAO;IACP,UAAU;IACV,QAAQ;IACR,iBAAiB;
|
|
1
|
+
{"version":3,"file":"get-skill.js","sourceRoot":"","sources":["../../../src/modules/apimapper/get-skill.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"graph-builder.js","sourceRoot":"","sources":["../../../src/modules/apimapper/graph-builder.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"graph-builder.js","sourceRoot":"","sources":["../../../src/modules/apimapper/graph-builder.ts"],"names":[],"mappings":"AAAA,6EAA6E;AAC7E,8EAA8E;AAC9E,EAAE;AACF,2EAA2E;AAC3E,2EAA2E;AAC3E,0CAA0C;AAG1C,OAAO,EAAE,sBAAsB,EAAE,MAAM,kBAAkB,CAAC;AAwC1D;;;;;;;;GAQG;AACH,MAAM,UAAU,cAAc,CAAC,KAA0B;IACvD,MAAM,EAAE,OAAO,EAAE,KAAK,EAAE,SAAS,EAAE,MAAM,EAAE,GAAG,KAAK,CAAC;IAEpD,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACzB,MAAM,IAAI,KAAK,CAAC,iDAAiD,CAAC,CAAC;IACrE,CAAC;IACD,IAAI,OAAO,CAAC,MAAM,IAAI,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC;QAClC,MAAM,IAAI,KAAK,CAAC,iEAAiE,CAAC,CAAC;IACrF,CAAC;IACD,IAAI,KAAK,IAAI,CAAC,KAAK,CAAC,QAAQ,KAAK,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,OAAO,EAAE,CAAC;QAC3D,MAAM,IAAI,KAAK,CAAC,6DAA6D,CAAC,CAAC;IACjF,CAAC;IAED,MAAM,KAAK,GAAe,EAAE,CAAC;IAC7B,MAAM,KAAK,GAAe,EAAE,CAAC;IAC7B,MAAM,KAAK,GAAG,GAAG,CAAC;IAClB,MAAM,QAAQ,GAAG,GAAG,CAAC;IACrB,MAAM,SAAS,GAAG,GAAG,CAAC;IAEtB,iBAAiB;IACjB,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE;QACvB,KAAK,CAAC,IAAI,CAAC;YACT,EAAE,EAAE,UAAU,CAAC,GAAG,CAAC,EAAE;YACrB,IAAI,EAAE,QAAQ;YACd,QAAQ,EAAE,EAAE,CAAC,EAAE,KAAK,EAAE,CAAC,EAAE,GAAG,GAAG,CAAC,GAAG,SAAS,EAAE;YAC9C,IAAI,EAAE;gBACJ,KAAK,EAAE,CAAC,CAAC,KAAK,IAAI,UAAU,CAAC,GAAG,CAAC,EAAE;gBACnC,YAAY,EAAE,CAAC,CAAC,UAAU;gBAC1B,UAAU,EAAE,CAAC,CAAC,QAAQ;gBACtB,cAAc,EAAE,CAAC,CAAC,eAAe,IAAI,EAAE;gBACvC,SAAS,EAAE,CAAC,CAAC,UAAU;aACxB;SACF,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;IAEH,IAAI,UAAU,GAAG,OAAO,CAAC,MAAM,KAAK,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,EAAE,CAAC;IAExD,+BAA+B;IAC/B,IAAI,KAAK,EAAE,CAAC;QACV,MAAM,QAAQ,GAAG,sBAAsB,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC;QACxD,MAAM,OAAO,GAAG,SAAS,CAAC;QAC1B,KAAK,CAAC,IAAI,CAAC;YACT,EAAE,EAAE,OAAO;YACX,IAAI,EAAE,OAAO;YACb,QAAQ,EAAE;gBACR,CAAC,EAAE,KAAK,GAAG,QAAQ;gBACnB,CAAC,EAAE,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,OAAO,CAAC,MAAM,GAAG,CAAC,CAAC,GAAG,SAAS,GAAG,EAAE;aAC1D;YACD,IAAI,EAAE;gBACJ,KAAK,EAAE,UAAU,QAAQ,KAAK,QAAQ,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,EAAE;gBAC5D,QAAQ;gBACR,OAAO,EAAE,KAAK,CAAC,OAAO,IAAI,EAAE;gBAC5B,YAAY,EAAE,KAAK,CAAC,YAAY;gBAChC,QAAQ,EAAE,KAAK,CAAC,QAAQ;aACzB;SACF,CAAC,CAAC;QACH,OAAO,CAAC,OAAO,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,EAAE;YACxB,KAAK,CAAC,IAAI,CAAC;gBACT,EAAE,EAAE,WAAW,CAAC,GAAG,CAAC,QAAQ;gBAC5B,MAAM,EAAE,UAAU,CAAC,GAAG,CAAC,EAAE;gBACzB,MAAM,EAAE,OAAO;gBACf,YAAY,EAAE,SAAS,CAAC,EAAE;aAC3B,CAAC,CAAC;QACL,CAAC,CAAC,CAAC;QACH,UAAU,GAAG,OAAO,CAAC;IACvB,CAAC;IAED,mBAAmB;IACnB,IAAI,SAAS,EAAE,CAAC;QACd,MAAM,WAAW,GAAG,aAAa,CAAC;QAClC,KAAK,CAAC,IAAI,CAAC;YACT,EAAE,EAAE,WAAW;YACf,IAAI,EAAE,WAAW;YACjB,QAAQ,EAAE,EAAE,CAAC,EAAE,KAAK,GAAG,CAAC,GAAG,QAAQ,EAAE,CAAC,EAAE,GAAG,EAAE;YAC7C,IAAI,EAAE;gBACJ,KAAK,EAAE,WAAW;gBAClB,UAAU,EAAE,SAAS,CAAC,UAAU,IAAI,KAAK;aAC1C;SACF,CAAC,CAAC;QACH,KAAK,CAAC,IAAI,CAAC;YACT,EAAE,EAAE,KAAK,UAAU,YAAY;YAC/B,MAAM,EAAE,UAAU;YAClB,MAAM,EAAE,WAAW;SACpB,CAAC,CAAC;QACH,UAAU,GAAG,WAAW,CAAC;IAC3B,CAAC;IAED,gBAAgB;IAChB,MAAM,QAAQ,GAAG,UAAU,CAAC;IAC5B,MAAM,UAAU,GAAG,MAAM,CAAC,IAAI,KAAK,WAAW,CAAC,CAAC,CAAC,kBAAkB,CAAC,CAAC,CAAC,iBAAiB,CAAC;IACxF,KAAK,CAAC,IAAI,CAAC;QACT,EAAE,EAAE,QAAQ;QACZ,IAAI,EAAE,UAAU;QAChB,QAAQ,EAAE,EAAE,CAAC,EAAE,KAAK,GAAG,CAAC,GAAG,QAAQ,EAAE,CAAC,EAAE,GAAG,EAAE;QAC7C,IAAI,EAAE;YACJ,KAAK,EAAE,MAAM,CAAC,IAAI;YAClB,IAAI,EAAE,MAAM,CAAC,IAAI;YACjB,IAAI,EAAE,MAAM,CAAC,IAAI;SAClB;KACF,CAAC,CAAC;IACH,KAAK,CAAC,IAAI,CAAC;QACT,EAAE,EAAE,KAAK,UAAU,SAAS;QAC5B,MAAM,EAAE,UAAU;QAClB,MAAM,EAAE,QAAQ;KACjB,CAAC,CAAC;IAEH,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,QAAQ,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,IAAI,EAAE,CAAC,EAAE,EAAE,CAAC;AAC7D,CAAC"}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import type {
|
|
2
|
-
export declare function registerGraphTools(server:
|
|
1
|
+
import type { ToolRegistrar } from "./gateway/capturing-server.js";
|
|
2
|
+
export declare function registerGraphTools(server: ToolRegistrar): void;
|
|
@@ -1,24 +1,69 @@
|
|
|
1
1
|
import { z } from "zod";
|
|
2
|
-
import { formatResult, readOnly } from "@getimo/mcp-toolkit";
|
|
2
|
+
import { formatResult, errorResult, readOnly } from "@getimo/mcp-toolkit";
|
|
3
3
|
import { request, hintFor } from "./client.js";
|
|
4
|
-
import { nodeSchema } from "./node-schema.js";
|
|
4
|
+
import { nodeSchema, edgeSchema } from "./node-schema.js";
|
|
5
|
+
import { buildFlowVisualization, SIDECAR_RESPONSE_MAX_CHARS, } from "./render/sidecar.js";
|
|
6
|
+
/**
|
|
7
|
+
* L-7 (W3F-5): hydrate `{nodes, edges}` from a saved flow when the
|
|
8
|
+
* caller passed `flow_id` instead of inline arrays. Returns the
|
|
9
|
+
* hydrated tuple on success, or a `{error, status, errorCode}` shape
|
|
10
|
+
* to surface upstream. Conservative: any failure aborts hydration so
|
|
11
|
+
* the caller can decide whether to surface the error or fall back to
|
|
12
|
+
* the inline-required path.
|
|
13
|
+
*/
|
|
14
|
+
async function hydrateGraphFromFlowId(flowId) {
|
|
15
|
+
const r = await request(`/flows/${encodeURIComponent(flowId)}`);
|
|
16
|
+
if (!r.success) {
|
|
17
|
+
return {
|
|
18
|
+
error: r.error ?? `flow ${flowId} not found`,
|
|
19
|
+
status: r.status,
|
|
20
|
+
errorCode: r.errorCode,
|
|
21
|
+
};
|
|
22
|
+
}
|
|
23
|
+
const flow = r.data?.flow;
|
|
24
|
+
const nodes = Array.isArray(flow?.nodes) ? flow.nodes : [];
|
|
25
|
+
const edges = Array.isArray(flow?.edges) ? flow.edges : [];
|
|
26
|
+
if (nodes.length === 0) {
|
|
27
|
+
return {
|
|
28
|
+
error: `flow ${flowId} has no nodes`,
|
|
29
|
+
errorCode: "empty_flow",
|
|
30
|
+
};
|
|
31
|
+
}
|
|
32
|
+
return { nodes, edges };
|
|
33
|
+
}
|
|
5
34
|
export function registerGraphTools(server) {
|
|
6
35
|
// ── apimapper_graph_preview ────────────────────────────────────────
|
|
7
36
|
server.registerTool("apimapper_graph_preview", {
|
|
8
37
|
title: "Graph Preview (Execute Pipeline)",
|
|
9
38
|
description: "Execute an ad-hoc graph (nodes + edges) and return rendered items at the target node. " +
|
|
10
|
-
"Used by the Admin-UI preview panel — does NOT require a saved Flow
|
|
39
|
+
"Used by the Admin-UI preview panel — does NOT require a saved Flow.\n\n" +
|
|
40
|
+
"**Idempotent + cached (60s):** identical {nodes, edges, targetNodeId} returns the cached " +
|
|
41
|
+
"result without re-executing the pipeline. Use `forceRefresh: true` only after a " +
|
|
42
|
+
"Connection/Credential mutation or when upstream API data is known to have changed. " +
|
|
43
|
+
"Do NOT call repeatedly to 're-render' or 'double-check' the same graph — the second " +
|
|
44
|
+
"call returns the same payload as the first." +
|
|
11
45
|
"\n\nExample:\n apimapper_graph_preview({ nodes: [{ id: 'src1', type: 'source' }], edges: [], target_node_id: 'src1' })",
|
|
12
46
|
inputSchema: {
|
|
47
|
+
// L-7 (W3F-5): `flow_id` shortcut hydrates {nodes, edges} from
|
|
48
|
+
// the saved flow server-side so the caller does not have to
|
|
49
|
+
// round-trip via apimapper_flow_get. When both `flow_id` and
|
|
50
|
+
// inline {nodes, edges} are passed, the inline arrays win.
|
|
51
|
+
flow_id: z
|
|
52
|
+
.string()
|
|
53
|
+
.optional()
|
|
54
|
+
.describe("Saved flow ID. When set, {nodes, edges} are loaded from the flow before preview. " +
|
|
55
|
+
"Inline {nodes, edges} (if also provided) override the loaded values."),
|
|
13
56
|
nodes: z
|
|
14
57
|
.array(nodeSchema)
|
|
15
|
-
.
|
|
58
|
+
.optional()
|
|
16
59
|
.describe('Node array. Each: {id, type, position:{x,y}, data:{...}}. ' +
|
|
17
60
|
'Discriminator `type` ∈ source | local-source | filter | transform | merge | output | output-yootheme | output-shortcode. ' +
|
|
18
|
-
'See apimapper_flow_create for full shape.'),
|
|
61
|
+
'Required when `flow_id` is not provided. See apimapper_flow_create for full shape.'),
|
|
19
62
|
edges: z
|
|
20
|
-
.array(
|
|
21
|
-
.
|
|
63
|
+
.array(edgeSchema)
|
|
64
|
+
.optional()
|
|
65
|
+
.describe('Edge array. Each: {id?, source, target, sourceHandle?, targetHandle?}. ' +
|
|
66
|
+
'Required when `flow_id` is not provided. See apimapper_flow_create.'),
|
|
22
67
|
targetNodeId: z
|
|
23
68
|
.string()
|
|
24
69
|
.optional()
|
|
@@ -28,22 +73,52 @@ export function registerGraphTools(server) {
|
|
|
28
73
|
.default(false)
|
|
29
74
|
.describe("Skip snapshot/cache; always live-fetch from upstream"),
|
|
30
75
|
},
|
|
31
|
-
annotations: readOnly(),
|
|
32
|
-
}, async ({ nodes, edges, targetNodeId, forceRefresh }) => {
|
|
76
|
+
annotations: readOnly({ title: "Preview Graph", openWorld: true }),
|
|
77
|
+
}, async ({ flow_id, nodes, edges, targetNodeId, forceRefresh }) => {
|
|
78
|
+
// L-7 (W3F-5): hydrate from flow_id when inline arrays are absent.
|
|
79
|
+
let resolvedNodes = nodes;
|
|
80
|
+
let resolvedEdges = edges;
|
|
81
|
+
if (typeof flow_id === "string" &&
|
|
82
|
+
flow_id !== "" &&
|
|
83
|
+
(!Array.isArray(resolvedNodes) || resolvedNodes.length === 0)) {
|
|
84
|
+
const h = await hydrateGraphFromFlowId(flow_id);
|
|
85
|
+
if ("error" in h) {
|
|
86
|
+
return errorResult({
|
|
87
|
+
message: h.error,
|
|
88
|
+
code: h.errorCode ?? (h.status ? String(h.status) : undefined),
|
|
89
|
+
suggestion: hintFor("not_found"),
|
|
90
|
+
details: { flow_id },
|
|
91
|
+
});
|
|
92
|
+
}
|
|
93
|
+
resolvedNodes = h.nodes;
|
|
94
|
+
resolvedEdges = h.edges;
|
|
95
|
+
}
|
|
96
|
+
if (!Array.isArray(resolvedNodes) || resolvedNodes.length === 0) {
|
|
97
|
+
return errorResult({
|
|
98
|
+
message: "Pass either `flow_id` or a non-empty `nodes` array.",
|
|
99
|
+
code: "bad_request",
|
|
100
|
+
suggestion: "Use apimapper_flow_list to find a flow_id, or build the graph inline.",
|
|
101
|
+
details: {},
|
|
102
|
+
});
|
|
103
|
+
}
|
|
104
|
+
if (!Array.isArray(resolvedEdges)) {
|
|
105
|
+
resolvedEdges = [];
|
|
106
|
+
}
|
|
107
|
+
const localNodes = resolvedNodes;
|
|
108
|
+
const localEdges = resolvedEdges;
|
|
33
109
|
// PHP success body: {preview, outputCount, executedNodes, nodeOutputCounts,
|
|
34
110
|
// nodeOutputs}. There's no `trace` key. Audit: F-A2-11.
|
|
35
111
|
const r = await request("/graph/preview", {
|
|
36
112
|
method: "POST",
|
|
37
|
-
body: JSON.stringify({ nodes, edges, targetNodeId, forceRefresh }),
|
|
113
|
+
body: JSON.stringify({ nodes: localNodes, edges: localEdges, targetNodeId, forceRefresh }),
|
|
38
114
|
});
|
|
39
115
|
if (!r.success) {
|
|
40
|
-
return
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
}, true);
|
|
116
|
+
return errorResult({
|
|
117
|
+
message: r.error ?? "graph preview failed",
|
|
118
|
+
code: r.errorCode ?? (r.status ? String(r.status) : undefined),
|
|
119
|
+
suggestion: hintFor(r.errorCode),
|
|
120
|
+
details: { node_count: localNodes.length, edge_count: localEdges.length, targetNodeId, forceRefresh },
|
|
121
|
+
});
|
|
47
122
|
}
|
|
48
123
|
const items = Array.isArray(r.data?.preview) ? r.data.preview : [];
|
|
49
124
|
const itemCount = items.length;
|
|
@@ -55,6 +130,7 @@ export function registerGraphTools(server) {
|
|
|
55
130
|
node_output_counts: r.data?.nodeOutputCounts,
|
|
56
131
|
target_node: targetNodeId || "(terminal)",
|
|
57
132
|
force_refresh: forceRefresh,
|
|
133
|
+
...(typeof flow_id === "string" && flow_id !== "" ? { flow_id } : {}),
|
|
58
134
|
items: items.slice(0, 50),
|
|
59
135
|
note: itemCount > 50 ? `Showing first 50 of ${itemCount} items.` : undefined,
|
|
60
136
|
}, false, { maxChars: 6000 });
|
|
@@ -66,47 +142,102 @@ export function registerGraphTools(server) {
|
|
|
66
142
|
"WITHOUT executing the pipeline. Fast — no upstream fetches." +
|
|
67
143
|
"\n\nExample:\n apimapper_graph_validate({ nodes: [{ id: 'src1', type: 'source' }, { id: 'out1', type: 'output' }], edges: [{ source: 'src1', target: 'out1' }] })",
|
|
68
144
|
inputSchema: {
|
|
145
|
+
// L-7 (W3F-5): symmetric with apimapper_graph_preview — pass
|
|
146
|
+
// `flow_id` to validate a saved flow without re-sending the
|
|
147
|
+
// inline graph.
|
|
148
|
+
flow_id: z
|
|
149
|
+
.string()
|
|
150
|
+
.optional()
|
|
151
|
+
.describe("Saved flow ID. When set, {nodes, edges} are loaded from the flow before validation."),
|
|
69
152
|
nodes: z
|
|
70
153
|
.array(nodeSchema)
|
|
71
|
-
.
|
|
154
|
+
.optional()
|
|
155
|
+
.describe("Node array. Discriminator `type` ∈ source | local-source | filter | transform | merge | output | output-yootheme | output-shortcode. Required when `flow_id` is not provided. See apimapper_flow_create."),
|
|
72
156
|
edges: z
|
|
73
|
-
.array(
|
|
74
|
-
.
|
|
157
|
+
.array(edgeSchema)
|
|
158
|
+
.optional()
|
|
159
|
+
.describe("Edge array — see apimapper_flow_create for shape. Required when `flow_id` is not provided."),
|
|
75
160
|
},
|
|
76
|
-
annotations: readOnly(),
|
|
77
|
-
}, async ({ nodes, edges }) => {
|
|
161
|
+
annotations: readOnly({ title: "Validate Graph", openWorld: true }),
|
|
162
|
+
}, async ({ flow_id, nodes, edges }) => {
|
|
163
|
+
// L-7 (W3F-5): hydrate from flow_id when inline arrays absent.
|
|
164
|
+
let resolvedNodes = nodes;
|
|
165
|
+
let resolvedEdges = edges;
|
|
166
|
+
if (typeof flow_id === "string" &&
|
|
167
|
+
flow_id !== "" &&
|
|
168
|
+
(!Array.isArray(resolvedNodes) || resolvedNodes.length === 0)) {
|
|
169
|
+
const h = await hydrateGraphFromFlowId(flow_id);
|
|
170
|
+
if ("error" in h) {
|
|
171
|
+
return errorResult({
|
|
172
|
+
message: h.error,
|
|
173
|
+
code: h.errorCode ?? (h.status ? String(h.status) : undefined),
|
|
174
|
+
suggestion: hintFor("not_found"),
|
|
175
|
+
details: { flow_id },
|
|
176
|
+
});
|
|
177
|
+
}
|
|
178
|
+
resolvedNodes = h.nodes;
|
|
179
|
+
resolvedEdges = h.edges;
|
|
180
|
+
}
|
|
181
|
+
if (!Array.isArray(resolvedNodes)) {
|
|
182
|
+
return errorResult({
|
|
183
|
+
message: "Pass either `flow_id` or `nodes` (with `edges`).",
|
|
184
|
+
code: "bad_request",
|
|
185
|
+
suggestion: "Use apimapper_flow_list to find a flow_id, or build the graph inline.",
|
|
186
|
+
details: {},
|
|
187
|
+
});
|
|
188
|
+
}
|
|
189
|
+
if (!Array.isArray(resolvedEdges)) {
|
|
190
|
+
resolvedEdges = [];
|
|
191
|
+
}
|
|
192
|
+
const localNodes = resolvedNodes;
|
|
193
|
+
const localEdges = resolvedEdges;
|
|
78
194
|
// PHP success body: {valid:true, warnings:[], nodeCount, edgeCount}. On
|
|
79
195
|
// invalid the errors are squashed to a single string via
|
|
80
196
|
// HandlerResult::error() and surface as `r.error` here. Wave 1C may emit
|
|
81
197
|
// structured `errors[]`; surface them defensively. Audit: F-A2-12.
|
|
82
198
|
const r = await request("/graph/validate", {
|
|
83
199
|
method: "POST",
|
|
84
|
-
body: JSON.stringify({ nodes, edges }),
|
|
200
|
+
body: JSON.stringify({ nodes: localNodes, edges: localEdges }),
|
|
85
201
|
});
|
|
86
202
|
if (!r.success) {
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
203
|
+
const structuredErrors = Array.isArray(r.errors)
|
|
204
|
+
? r.errors
|
|
205
|
+
: undefined;
|
|
206
|
+
return errorResult({
|
|
207
|
+
message: r.error ?? "graph validate failed",
|
|
208
|
+
code: r.errorCode ?? (r.status ? String(r.status) : undefined),
|
|
209
|
+
suggestion: hintFor(r.errorCode),
|
|
210
|
+
details: {
|
|
211
|
+
node_count: localNodes.length,
|
|
212
|
+
edge_count: localEdges.length,
|
|
213
|
+
...(structuredErrors ? { errors: structuredErrors } : {}),
|
|
214
|
+
},
|
|
215
|
+
});
|
|
97
216
|
}
|
|
98
217
|
const valid = r.data?.valid ?? true;
|
|
99
218
|
const warns = r.data?.warnings || [];
|
|
219
|
+
// Sidecar: graph_validate always has input.nodes + input.edges
|
|
220
|
+
// (Zod-validated), so the visualization always renders unless
|
|
221
|
+
// APIMAPPER_AUTO_VISUALIZE_FLOWS="false". Additive + defensive.
|
|
222
|
+
const viz = buildFlowVisualization({
|
|
223
|
+
nodes: localNodes,
|
|
224
|
+
edges: localEdges,
|
|
225
|
+
id: flow_id ?? "validated",
|
|
226
|
+
name: typeof flow_id === "string" && flow_id !== "" ? `Flow ${flow_id}` : "Validated Graph",
|
|
227
|
+
});
|
|
100
228
|
return formatResult({
|
|
101
229
|
valid,
|
|
102
230
|
node_count: r.data?.nodeCount,
|
|
103
231
|
edge_count: r.data?.edgeCount,
|
|
104
232
|
warning_count: Array.isArray(warns) ? warns.length : 0,
|
|
105
233
|
warnings: warns,
|
|
234
|
+
...(viz && { _visualization: viz }),
|
|
106
235
|
},
|
|
107
236
|
// Surface validation failure as isError=true so the agent halts
|
|
108
237
|
// instead of proceeding past a broken graph.
|
|
109
|
-
!valid,
|
|
238
|
+
!valid,
|
|
239
|
+
// Headroom for the sidecar — see SIDECAR_RESPONSE_MAX_CHARS.
|
|
240
|
+
{ maxChars: SIDECAR_RESPONSE_MAX_CHARS });
|
|
110
241
|
});
|
|
111
242
|
}
|
|
112
243
|
//# sourceMappingURL=graph.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"graph.js","sourceRoot":"","sources":["../../../src/modules/apimapper/graph.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"graph.js","sourceRoot":"","sources":["../../../src/modules/apimapper/graph.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,2 +1,18 @@
|
|
|
1
1
|
import type { ModuleDefinition } from "@getimo/mcp-toolkit";
|
|
2
|
-
|
|
2
|
+
import { type AdvancedToolEntry } from "./gateway/capturing-server.js";
|
|
3
|
+
/**
|
|
4
|
+
* The API Mapper REST module, extended with the W3.4 Gateway-Hub.
|
|
5
|
+
*
|
|
6
|
+
* Cursor caps MCP servers at ~40 tools. The 12 `registerXTools` calls below
|
|
7
|
+
* are routed through a `CapturingServer`: essential tools (see
|
|
8
|
+
* gateway/essentials.ts) stay first-class on the real McpServer, every other
|
|
9
|
+
* tool is captured into an advanced registry and reached through the single
|
|
10
|
+
* `apimapper_advanced` gateway tool — keeping `tools/list` well under the cap.
|
|
11
|
+
*
|
|
12
|
+
* `getAdvancedRegistry()` exposes the registry captured by the most recent
|
|
13
|
+
* `register()` call (used by the gateway surface tests).
|
|
14
|
+
*/
|
|
15
|
+
export interface ApimapperRestModule extends ModuleDefinition {
|
|
16
|
+
getAdvancedRegistry(): Map<string, AdvancedToolEntry> | undefined;
|
|
17
|
+
}
|
|
18
|
+
export declare const apimapperRestModule: ApimapperRestModule;
|
|
@@ -15,24 +15,67 @@ import { registerGetSkillTool } from "./get-skill.js";
|
|
|
15
15
|
import { registerOnboardingTool } from "./onboarding.js";
|
|
16
16
|
import { registerInspectTokenTool } from "./inspect.js";
|
|
17
17
|
import { registerDiagnoseTool } from "./diagnose.js";
|
|
18
|
+
import { registerRenderTool } from "./render/index.js";
|
|
19
|
+
import { CapturingServer } from "./gateway/capturing-server.js";
|
|
20
|
+
import { registerAdvancedTool } from "./gateway/advanced-tool.js";
|
|
21
|
+
import { toElicitationCapability } from "./elicitation.js";
|
|
22
|
+
/**
|
|
23
|
+
* Module-level cache of the advanced-tool registry captured during the most
|
|
24
|
+
* recent `register()` call. Accessed via `apimapperRestModule.getAdvancedRegistry()`.
|
|
25
|
+
*
|
|
26
|
+
* INVARIANT — single-server-per-process. The MCP adapter is designed to run
|
|
27
|
+
* as one `McpServer` instance per process (stdio transport bound to a single
|
|
28
|
+
* client). `register()` is invoked exactly once during process bootstrap; the
|
|
29
|
+
* captured registry then stays stable for the lifetime of the server. The
|
|
30
|
+
* gateway surface tests rely on this single-server invariant.
|
|
31
|
+
*
|
|
32
|
+
* INVARIANT — last-write-wins. If a future caller ever invokes `register()`
|
|
33
|
+
* a second time on a fresh `McpServer` (e.g. test wiring that re-binds the
|
|
34
|
+
* module to a new server), `lastAdvancedRegistry` is overwritten by the most
|
|
35
|
+
* recent capture. This is intentional for the W3.4 gateway design — only the
|
|
36
|
+
* latest server's tool set is reachable through the module-level accessor.
|
|
37
|
+
*
|
|
38
|
+
* NOT SUPPORTED — concurrent registrations on different `McpServer` instances
|
|
39
|
+
* would race on this cell. The adapter is not designed for that topology;
|
|
40
|
+
* running multiple servers in one process would also break stdio multiplexing
|
|
41
|
+
* higher up the stack. F-1.4 (Pass-1 consolidation) makes that invariant
|
|
42
|
+
* explicit so reviewers do not mistake the module-level mutable state for a
|
|
43
|
+
* latent thread-safety bug.
|
|
44
|
+
*/
|
|
45
|
+
let lastAdvancedRegistry;
|
|
18
46
|
export const apimapperRestModule = {
|
|
19
47
|
name: "apimapper-rest",
|
|
20
48
|
description: "API Mapper REST coverage — Full coverage of /wp-json/api-mapper/v1/* (connections, credentials, " +
|
|
21
49
|
"flows, graph, local-sources, schema, library, cache, settings, license, releases, " +
|
|
22
50
|
"brandfetch, feedback) plus composite workflows.",
|
|
23
51
|
register: (server) => {
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
52
|
+
// Route every tool registration through the CapturingServer: essentials
|
|
53
|
+
// forward to the real server, the rest are captured for the gateway.
|
|
54
|
+
const capturing = new CapturingServer(server);
|
|
55
|
+
// W3.6 — targeted elicitation. The 3 modules below have a disambiguation
|
|
56
|
+
// site that can prompt the user via the MCP elicitation channel. The
|
|
57
|
+
// toolkit's `elicitChoice` needs a `{ server: { elicitInput } }` whose
|
|
58
|
+
// `elicitInput` is typed with the toolkit's loose `ElicitInputParams`;
|
|
59
|
+
// the SDK's `McpServer.server.elicitInput` is the stricter discriminated
|
|
60
|
+
// form/url union, so `toElicitationCapability` is the typed adapter that
|
|
61
|
+
// bridges the two (single documented cast — see elicitation.ts). The
|
|
62
|
+
// capability is passed as the optional 2nd argument to ONLY these 3
|
|
63
|
+
// modules — the other 15 are untouched. When the argument is absent
|
|
64
|
+
// (host wiring without elicitation), each tool falls back to a structured
|
|
65
|
+
// `errorResult` on genuine ambiguity instead of prompting.
|
|
66
|
+
const elicitation = toElicitationCapability(server);
|
|
67
|
+
registerConnectionTools(capturing, elicitation);
|
|
68
|
+
registerCredentialTools(capturing, elicitation);
|
|
69
|
+
registerFlowTools(capturing, elicitation);
|
|
70
|
+
registerGraphTools(capturing);
|
|
71
|
+
registerLocalSourceTools(capturing);
|
|
72
|
+
registerSchemaTools(capturing);
|
|
73
|
+
registerLibraryTools(capturing);
|
|
74
|
+
registerCacheTools(capturing);
|
|
75
|
+
registerSettingsTools(capturing);
|
|
76
|
+
registerLicenseTools(capturing);
|
|
77
|
+
registerMiscTools(capturing);
|
|
78
|
+
registerWorkflowTools(capturing);
|
|
36
79
|
// Skill resources are an MCP-spec protocol concept but Claude Desktop
|
|
37
80
|
// (2026-05-19 rc-period) does not yet honour the `audience: ["assistant"]`
|
|
38
81
|
// annotation that would hide them from the user-facing resource picker.
|
|
@@ -44,12 +87,18 @@ export const apimapperRestModule = {
|
|
|
44
87
|
//
|
|
45
88
|
// When Claude Desktop ships audience-filtering, flip the default to ON.
|
|
46
89
|
if (process.env.APIMAPPER_EXPOSE_SKILL_RESOURCES === "1") {
|
|
47
|
-
registerSkillResources(
|
|
90
|
+
registerSkillResources(capturing);
|
|
48
91
|
}
|
|
49
|
-
registerGetSkillTool(
|
|
50
|
-
registerOnboardingTool(
|
|
51
|
-
registerInspectTokenTool(
|
|
52
|
-
registerDiagnoseTool(
|
|
92
|
+
registerGetSkillTool(capturing);
|
|
93
|
+
registerOnboardingTool(capturing);
|
|
94
|
+
registerInspectTokenTool(capturing);
|
|
95
|
+
registerDiagnoseTool(capturing);
|
|
96
|
+
registerRenderTool(capturing);
|
|
97
|
+
// Register the single gateway to every captured advanced tool.
|
|
98
|
+
const advancedRegistry = capturing.getAdvancedRegistry();
|
|
99
|
+
registerAdvancedTool(server, advancedRegistry);
|
|
100
|
+
lastAdvancedRegistry = advancedRegistry;
|
|
53
101
|
},
|
|
102
|
+
getAdvancedRegistry: () => lastAdvancedRegistry,
|
|
54
103
|
};
|
|
55
104
|
//# 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;
|