@cmssy/mcp-server 0.72.0 → 0.73.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/dist/__tests__/binder-tool-marker.test.d.ts +2 -0
- package/dist/__tests__/binder-tool-marker.test.d.ts.map +1 -0
- package/dist/__tests__/binder-tool-marker.test.js +29 -0
- package/dist/__tests__/binder-tool-marker.test.js.map +1 -0
- package/dist/__tests__/client-marker.test.d.ts +2 -0
- package/dist/__tests__/client-marker.test.d.ts.map +1 -0
- package/dist/__tests__/client-marker.test.js +71 -0
- package/dist/__tests__/client-marker.test.js.map +1 -0
- package/dist/ai-tools-binder.d.ts.map +1 -1
- package/dist/ai-tools-binder.js +2 -1
- package/dist/ai-tools-binder.js.map +1 -1
- package/dist/client-marker.d.ts +6 -0
- package/dist/client-marker.d.ts.map +1 -0
- package/dist/client-marker.js +20 -0
- package/dist/client-marker.js.map +1 -0
- package/dist/graphql-client.d.ts.map +1 -1
- package/dist/graphql-client.js +3 -0
- package/dist/graphql-client.js.map +1 -1
- package/dist/package-version.d.ts +2 -0
- package/dist/package-version.d.ts.map +1 -0
- package/dist/package-version.js +14 -0
- package/dist/package-version.js.map +1 -0
- package/dist/server.d.ts.map +1 -1
- package/dist/server.js +1 -16
- package/dist/server.js.map +1 -1
- package/package.json +1 -1
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"binder-tool-marker.test.d.ts","sourceRoot":"","sources":["../../src/__tests__/binder-tool-marker.test.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
import { describe, expect, it } from "vitest";
|
|
2
|
+
import { z } from "zod";
|
|
3
|
+
import { bindSharedTool } from "../ai-tools-binder.js";
|
|
4
|
+
import { TOOL_HEADER, clientHeaders } from "../client-marker.js";
|
|
5
|
+
describe("a bound tool runs inside its own tool call (CMS-1865)", () => {
|
|
6
|
+
it("lets the client name the tool while the tool executes", async () => {
|
|
7
|
+
let handler;
|
|
8
|
+
const server = {
|
|
9
|
+
tool: (_n, _d, _s, fn) => {
|
|
10
|
+
handler = fn;
|
|
11
|
+
},
|
|
12
|
+
};
|
|
13
|
+
let seen;
|
|
14
|
+
const tool = {
|
|
15
|
+
name: "list_pages",
|
|
16
|
+
description: "",
|
|
17
|
+
inputSchema: z.object({}),
|
|
18
|
+
execute: async () => {
|
|
19
|
+
seen = clientHeaders("0.0.0");
|
|
20
|
+
return { ok: true };
|
|
21
|
+
},
|
|
22
|
+
};
|
|
23
|
+
bindSharedTool(server, tool, {});
|
|
24
|
+
await handler?.({});
|
|
25
|
+
expect(seen?.[TOOL_HEADER]).toBe("list_pages");
|
|
26
|
+
expect(clientHeaders("0.0.0")).not.toHaveProperty(TOOL_HEADER);
|
|
27
|
+
});
|
|
28
|
+
});
|
|
29
|
+
//# sourceMappingURL=binder-tool-marker.test.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"binder-tool-marker.test.js","sourceRoot":"","sources":["../../src/__tests__/binder-tool-marker.test.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,QAAQ,CAAC;AAC9C,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAGxB,OAAO,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AACvD,OAAO,EAAE,WAAW,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AAEjE,QAAQ,CAAC,uDAAuD,EAAE,GAAG,EAAE;IACrE,EAAE,CAAC,uDAAuD,EAAE,KAAK,IAAI,EAAE;QACrE,IAAI,OAA2D,CAAC;QAChE,MAAM,MAAM,GAAG;YACb,IAAI,EAAE,CAAC,EAAU,EAAE,EAAU,EAAE,EAAW,EAAE,EAAkB,EAAE,EAAE;gBAChE,OAAO,GAAG,EAAE,CAAC;YACf,CAAC;SACsB,CAAC;QAC1B,IAAI,IAAwC,CAAC;QAC7C,MAAM,IAAI,GAAG;YACX,IAAI,EAAE,YAAY;YAClB,WAAW,EAAE,EAAE;YACf,WAAW,EAAE,CAAC,CAAC,MAAM,CAAC,EAAE,CAAC;YACzB,OAAO,EAAE,KAAK,IAAI,EAAE;gBAClB,IAAI,GAAG,aAAa,CAAC,OAAO,CAAC,CAAC;gBAC9B,OAAO,EAAE,EAAE,EAAE,IAAI,EAAE,CAAC;YACtB,CAAC;SACmB,CAAC;QAEvB,cAAc,CAAC,MAAM,EAAE,IAAI,EAAE,EAAkB,CAAC,CAAC;QACjD,MAAM,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;QAEpB,MAAM,CAAC,IAAI,EAAE,CAAC,WAAW,CAAC,CAAC,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;QAC/C,MAAM,CAAC,aAAa,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,CAAC,cAAc,CAAC,WAAW,CAAC,CAAC;IACjE,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"client-marker.test.d.ts","sourceRoot":"","sources":["../../src/__tests__/client-marker.test.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,71 @@
|
|
|
1
|
+
import { readFileSync } from "node:fs";
|
|
2
|
+
import { dirname, resolve } from "node:path";
|
|
3
|
+
import { fileURLToPath } from "node:url";
|
|
4
|
+
import { afterEach, describe, expect, it, vi } from "vitest";
|
|
5
|
+
import { CmssyClient } from "../graphql-client.js";
|
|
6
|
+
import { CLIENT_HEADER, TOOL_HEADER, clientHeaders, runAsTool, } from "../client-marker.js";
|
|
7
|
+
import { PACKAGE_VERSION } from "../package-version.js";
|
|
8
|
+
function fetchRecordingHeaders() {
|
|
9
|
+
const seen = [];
|
|
10
|
+
const fetch = vi.fn(async (_url, init) => {
|
|
11
|
+
seen.push(init.headers);
|
|
12
|
+
return {
|
|
13
|
+
ok: true,
|
|
14
|
+
json: async () => ({ data: { ok: true } }),
|
|
15
|
+
};
|
|
16
|
+
});
|
|
17
|
+
return { fetch, seen };
|
|
18
|
+
}
|
|
19
|
+
afterEach(() => {
|
|
20
|
+
vi.unstubAllGlobals();
|
|
21
|
+
});
|
|
22
|
+
describe("the client marker the backend reads (CMS-1865)", () => {
|
|
23
|
+
it("names the server and its version on every request", () => {
|
|
24
|
+
expect(clientHeaders("1.2.3")).toEqual({
|
|
25
|
+
[CLIENT_HEADER]: "mcp-server/1.2.3",
|
|
26
|
+
});
|
|
27
|
+
});
|
|
28
|
+
it("names the tool on the first request of a tool call and stays quiet on the rest", async () => {
|
|
29
|
+
const inside = await runAsTool("list_pages", async () => [
|
|
30
|
+
clientHeaders("1.2.3"),
|
|
31
|
+
clientHeaders("1.2.3"),
|
|
32
|
+
]);
|
|
33
|
+
expect(inside[0][TOOL_HEADER]).toBe("list_pages");
|
|
34
|
+
expect(inside[1]).not.toHaveProperty(TOOL_HEADER);
|
|
35
|
+
});
|
|
36
|
+
it("keeps two overlapping tool calls apart", async () => {
|
|
37
|
+
const [a, b] = await Promise.all([
|
|
38
|
+
runAsTool("list_pages", async () => {
|
|
39
|
+
await new Promise((r) => setTimeout(r, 5));
|
|
40
|
+
return clientHeaders("1.2.3");
|
|
41
|
+
}),
|
|
42
|
+
runAsTool("get_page", async () => clientHeaders("1.2.3")),
|
|
43
|
+
]);
|
|
44
|
+
expect(a[TOOL_HEADER]).toBe("list_pages");
|
|
45
|
+
expect(b[TOOL_HEADER]).toBe("get_page");
|
|
46
|
+
});
|
|
47
|
+
it("sends the marker with the GraphQL request, next to the token and workspace", async () => {
|
|
48
|
+
const { fetch, seen } = fetchRecordingHeaders();
|
|
49
|
+
vi.stubGlobal("fetch", fetch);
|
|
50
|
+
const client = new CmssyClient("https://api.example", "cs_x", "ws-1");
|
|
51
|
+
await runAsTool("get_page", () => client.query("{ ok }"));
|
|
52
|
+
await client.query("{ ok }");
|
|
53
|
+
expect(seen[0]).toMatchObject({
|
|
54
|
+
Authorization: "Bearer cs_x",
|
|
55
|
+
"x-workspace-id": "ws-1",
|
|
56
|
+
[CLIENT_HEADER]: `mcp-server/${PACKAGE_VERSION}`,
|
|
57
|
+
[TOOL_HEADER]: "get_page",
|
|
58
|
+
});
|
|
59
|
+
expect(seen[1]).toMatchObject({
|
|
60
|
+
[CLIENT_HEADER]: `mcp-server/${PACKAGE_VERSION}`,
|
|
61
|
+
});
|
|
62
|
+
expect(seen[1]).not.toHaveProperty(TOOL_HEADER);
|
|
63
|
+
});
|
|
64
|
+
it("reads the version the package actually ships, not the fallback", () => {
|
|
65
|
+
const here = dirname(fileURLToPath(import.meta.url));
|
|
66
|
+
const shipped = JSON.parse(readFileSync(resolve(here, "../../package.json"), "utf8")).version;
|
|
67
|
+
expect(PACKAGE_VERSION).toBe(shipped);
|
|
68
|
+
expect(PACKAGE_VERSION).not.toBe("0.0.0");
|
|
69
|
+
});
|
|
70
|
+
});
|
|
71
|
+
//# sourceMappingURL=client-marker.test.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"client-marker.test.js","sourceRoot":"","sources":["../../src/__tests__/client-marker.test.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ai-tools-binder.d.ts","sourceRoot":"","sources":["../src/ai-tools-binder.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AAEzE,OAAO,KAAK,EAAE,MAAM,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC;
|
|
1
|
+
{"version":3,"file":"ai-tools-binder.d.ts","sourceRoot":"","sources":["../src/ai-tools-binder.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AAEzE,OAAO,KAAK,EAAE,MAAM,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC;AAe5D,wBAAgB,iBAAiB,CAAC,MAAM,EAAE,SAAS,GAAG,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,CAExE;AAED,wBAAgB,cAAc,CAC5B,MAAM,EAAE,SAAS,EACjB,IAAI,EAAE,MAAM,EACZ,GAAG,EAAE,YAAY,GAChB,IAAI,CAkCN"}
|
package/dist/ai-tools-binder.js
CHANGED
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import { z } from "zod";
|
|
2
|
+
import { runAsTool } from "./client-marker.js";
|
|
2
3
|
const jsonPreprocess = (val) => {
|
|
3
4
|
if (typeof val !== "string")
|
|
4
5
|
return val;
|
|
@@ -26,7 +27,7 @@ export function bindSharedTool(server, tool, ops) {
|
|
|
26
27
|
]));
|
|
27
28
|
server.tool(tool.name, tool.description, mcpShape, async (input) => {
|
|
28
29
|
try {
|
|
29
|
-
const result = await tool.execute(input, ops);
|
|
30
|
+
const result = await runAsTool(tool.name, () => tool.execute(input, ops));
|
|
30
31
|
return {
|
|
31
32
|
content: [
|
|
32
33
|
{ type: "text", text: JSON.stringify(result, null, 2) },
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ai-tools-binder.js","sourceRoot":"","sources":["../src/ai-tools-binder.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;
|
|
1
|
+
{"version":3,"file":"ai-tools-binder.js","sourceRoot":"","sources":["../src/ai-tools-binder.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,OAAO,EAAE,SAAS,EAAE,MAAM,oBAAoB,CAAC;AAE/C,MAAM,cAAc,GAAG,CAAC,GAAY,EAAE,EAAE;IACtC,IAAI,OAAO,GAAG,KAAK,QAAQ;QAAE,OAAO,GAAG,CAAC;IACxC,IAAI,CAAC;QACH,MAAM,MAAM,GAAY,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;QACxC,OAAO,MAAM,KAAK,IAAI,IAAI,OAAO,MAAM,KAAK,QAAQ,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,GAAG,CAAC;IACtE,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,GAAG,CAAC;IACb,CAAC;AACH,CAAC,CAAC;AAEF,MAAM,YAAY,GAAG,IAAI,OAAO,EAAkC,CAAC;AAEnE,MAAM,UAAU,iBAAiB,CAAC,MAAiB;IACjD,OAAO,YAAY,CAAC,GAAG,CAAC,MAAM,CAAC,IAAI,IAAI,GAAG,EAAE,CAAC;AAC/C,CAAC;AAED,MAAM,UAAU,cAAc,CAC5B,MAAiB,EACjB,IAAY,EACZ,GAAiB;IAEjB,MAAM,QAAQ,GAAG,YAAY,CAAC,GAAG,CAAC,MAAM,CAAC,IAAI,IAAI,GAAG,EAAkB,CAAC;IACvE,QAAQ,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;IAC9B,YAAY,CAAC,GAAG,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAC;IAEnC,MAAM,KAAK,GAAI,IAAI,CAAC,WAAqD;SACtE,KAAK,CAAC;IACT,MAAM,QAAQ,GAAkB,MAAM,CAAC,WAAW,CAChD,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,EAAE,MAAM,CAAC,EAAE,EAAE,CAAC;QAC3C,GAAG;QACH,CAAC,CAAC,UAAU,CAAC,cAAc,EAAE,MAAsB,CAAC;KACrD,CAAC,CACH,CAAC;IAEF,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,WAAW,EAAE,QAAQ,EAAE,KAAK,EAAE,KAAc,EAAE,EAAE;QAC1E,IAAI,CAAC;YACH,MAAM,MAAM,GAAG,MAAM,SAAS,CAAC,IAAI,CAAC,IAAI,EAAE,GAAG,EAAE,CAAC,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC,CAAC;YAC1E,OAAO;gBACL,OAAO,EAAE;oBACP,EAAE,IAAI,EAAE,MAAe,EAAE,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC,EAAE;iBACjE;aACF,CAAC;QACJ,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,OAAO;gBACL,OAAO,EAAE;oBACP;wBACE,IAAI,EAAE,MAAe;wBACrB,IAAI,EAAE,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC;qBACvD;iBACF;gBACD,OAAO,EAAE,IAAI;aACd,CAAC;QACJ,CAAC;IACH,CAAC,CAAC,CAAC;AACL,CAAC"}
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
export declare const CLIENT_HEADER = "x-cmssy-client";
|
|
2
|
+
export declare const TOOL_HEADER = "x-cmssy-mcp-tool";
|
|
3
|
+
export declare const CLIENT_NAME = "mcp-server";
|
|
4
|
+
export declare function runAsTool<T>(tool: string, run: () => Promise<T>): Promise<T>;
|
|
5
|
+
export declare function clientHeaders(version: string): Record<string, string>;
|
|
6
|
+
//# sourceMappingURL=client-marker.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"client-marker.d.ts","sourceRoot":"","sources":["../src/client-marker.ts"],"names":[],"mappings":"AAEA,eAAO,MAAM,aAAa,mBAAmB,CAAC;AAC9C,eAAO,MAAM,WAAW,qBAAqB,CAAC;AAC9C,eAAO,MAAM,WAAW,eAAe,CAAC;AASxC,wBAAgB,SAAS,CAAC,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,OAAO,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC,CAE5E;AAED,wBAAgB,aAAa,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAUrE"}
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
import { AsyncLocalStorage } from "node:async_hooks";
|
|
2
|
+
export const CLIENT_HEADER = "x-cmssy-client";
|
|
3
|
+
export const TOOL_HEADER = "x-cmssy-mcp-tool";
|
|
4
|
+
export const CLIENT_NAME = "mcp-server";
|
|
5
|
+
const calls = new AsyncLocalStorage();
|
|
6
|
+
export function runAsTool(tool, run) {
|
|
7
|
+
return calls.run({ tool, announced: false }, run);
|
|
8
|
+
}
|
|
9
|
+
export function clientHeaders(version) {
|
|
10
|
+
const headers = {
|
|
11
|
+
[CLIENT_HEADER]: `${CLIENT_NAME}/${version}`,
|
|
12
|
+
};
|
|
13
|
+
const call = calls.getStore();
|
|
14
|
+
if (call && !call.announced) {
|
|
15
|
+
call.announced = true;
|
|
16
|
+
headers[TOOL_HEADER] = call.tool;
|
|
17
|
+
}
|
|
18
|
+
return headers;
|
|
19
|
+
}
|
|
20
|
+
//# sourceMappingURL=client-marker.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"client-marker.js","sourceRoot":"","sources":["../src/client-marker.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,iBAAiB,EAAE,MAAM,kBAAkB,CAAC;AAErD,MAAM,CAAC,MAAM,aAAa,GAAG,gBAAgB,CAAC;AAC9C,MAAM,CAAC,MAAM,WAAW,GAAG,kBAAkB,CAAC;AAC9C,MAAM,CAAC,MAAM,WAAW,GAAG,YAAY,CAAC;AAOxC,MAAM,KAAK,GAAG,IAAI,iBAAiB,EAAY,CAAC;AAEhD,MAAM,UAAU,SAAS,CAAI,IAAY,EAAE,GAAqB;IAC9D,OAAO,KAAK,CAAC,GAAG,CAAC,EAAE,IAAI,EAAE,SAAS,EAAE,KAAK,EAAE,EAAE,GAAG,CAAC,CAAC;AACpD,CAAC;AAED,MAAM,UAAU,aAAa,CAAC,OAAe;IAC3C,MAAM,OAAO,GAA2B;QACtC,CAAC,aAAa,CAAC,EAAE,GAAG,WAAW,IAAI,OAAO,EAAE;KAC7C,CAAC;IACF,MAAM,IAAI,GAAG,KAAK,CAAC,QAAQ,EAAE,CAAC;IAC9B,IAAI,IAAI,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,CAAC;QAC5B,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC;QACtB,OAAO,CAAC,WAAW,CAAC,GAAG,IAAI,CAAC,IAAI,CAAC;IACnC,CAAC;IACD,OAAO,OAAO,CAAC;AACjB,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"graphql-client.d.ts","sourceRoot":"","sources":["../src/graphql-client.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"graphql-client.d.ts","sourceRoot":"","sources":["../src/graphql-client.ts"],"names":[],"mappings":"AAuCA,qBAAa,WAAW;IAIpB,OAAO,CAAC,MAAM;IACd,OAAO,CAAC,KAAK;aACG,WAAW,EAAE,MAAM;IALrC,OAAO,CAAC,cAAc,CAA6B;gBAGzC,MAAM,EAAE,MAAM,EACd,KAAK,EAAE,MAAM,EACL,WAAW,EAAE,MAAM;IAG/B,KAAK,CAAC,CAAC,EACX,KAAK,EAAE,MAAM,EACb,SAAS,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAClC,OAAO,CAAC,CAAC,CAAC;IAgCb;;;OAGG;IACG,iBAAiB,CAAC,QAAQ,EAAE,MAAM,EAAE,KAAK,SAAI,GAAG,OAAO,CAAC,MAAM,CAAC;CA8BtE"}
|
package/dist/graphql-client.js
CHANGED
|
@@ -1,3 +1,5 @@
|
|
|
1
|
+
import { clientHeaders } from "./client-marker.js";
|
|
2
|
+
import { PACKAGE_VERSION } from "./package-version.js";
|
|
1
3
|
const INTROSPECT_TYPE_QUERY = `
|
|
2
4
|
query IntrospectType($name: String!) {
|
|
3
5
|
__type(name: $name) {
|
|
@@ -38,6 +40,7 @@ export class CmssyClient {
|
|
|
38
40
|
"Content-Type": "application/json",
|
|
39
41
|
Authorization: `Bearer ${this.token}`,
|
|
40
42
|
"x-workspace-id": this.workspaceId,
|
|
43
|
+
...clientHeaders(PACKAGE_VERSION),
|
|
41
44
|
},
|
|
42
45
|
body: JSON.stringify({ query, variables }),
|
|
43
46
|
});
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"graphql-client.js","sourceRoot":"","sources":["../src/graphql-client.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"graphql-client.js","sourceRoot":"","sources":["../src/graphql-client.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"package-version.d.ts","sourceRoot":"","sources":["../src/package-version.ts"],"names":[],"mappings":"AAIA,eAAO,MAAM,eAAe,KAUxB,CAAC"}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import { readFileSync } from "node:fs";
|
|
2
|
+
import { dirname, resolve } from "node:path";
|
|
3
|
+
import { fileURLToPath } from "node:url";
|
|
4
|
+
export const PACKAGE_VERSION = (() => {
|
|
5
|
+
try {
|
|
6
|
+
const here = dirname(fileURLToPath(import.meta.url));
|
|
7
|
+
const pkg = JSON.parse(readFileSync(resolve(here, "../package.json"), "utf8"));
|
|
8
|
+
return typeof pkg.version === "string" ? pkg.version : "0.0.0";
|
|
9
|
+
}
|
|
10
|
+
catch {
|
|
11
|
+
return "0.0.0";
|
|
12
|
+
}
|
|
13
|
+
})();
|
|
14
|
+
//# sourceMappingURL=package-version.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"package-version.js","sourceRoot":"","sources":["../src/package-version.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AACvC,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAC7C,OAAO,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AAEzC,MAAM,CAAC,MAAM,eAAe,GAAG,CAAC,GAAG,EAAE;IACnC,IAAI,CAAC;QACH,MAAM,IAAI,GAAG,OAAO,CAAC,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC;QACrD,MAAM,GAAG,GAAG,IAAI,CAAC,KAAK,CACpB,YAAY,CAAC,OAAO,CAAC,IAAI,EAAE,iBAAiB,CAAC,EAAE,MAAM,CAAC,CACvD,CAAC;QACF,OAAO,OAAO,GAAG,CAAC,OAAO,KAAK,QAAQ,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,OAAO,CAAC;IACjE,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,OAAO,CAAC;IACjB,CAAC;AACH,CAAC,CAAC,EAAE,CAAC"}
|
package/dist/server.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"server.d.ts","sourceRoot":"","sources":["../src/server.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;
|
|
1
|
+
{"version":3,"file":"server.d.ts","sourceRoot":"","sources":["../src/server.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AACpE,OAAO,EAAE,WAAW,EAAE,MAAM,qBAAqB,CAAC;AAoGlD,wBAAgB,YAAY,CAAC,MAAM,EAAE,WAAW,aA2L/C"}
|
package/dist/server.js
CHANGED
|
@@ -1,25 +1,10 @@
|
|
|
1
1
|
import { McpServer } from "@modelcontextprotocol/sdk/server/mcp.js";
|
|
2
|
-
import {
|
|
3
|
-
import { dirname, resolve } from "node:path";
|
|
4
|
-
import { fileURLToPath } from "node:url";
|
|
2
|
+
import { PACKAGE_VERSION } from "./package-version.js";
|
|
5
3
|
import { listPagesTool, getPageTool, getSiteConfigTool, listBlockTypesTool, listBlockUsageTool, getWorkspaceInfoTool, listMediaTool, uploadMediaTool, listMediaFoldersTool, createMediaFolderTool, updateMediaFolderTool, deleteMediaFolderTool, moveMediaTool, createPageTool, updatePageBlocksTool, promoteDevDraftTool, updatePageSettingsTool, listPageTypesTool, createPageTypeTool, getPageTypeTool, updatePageTypeTool, deletePageTypeTool, publishPageTool, unpublishPageTool, takeOverPageLockTool, revertToPublishedTool, deletePageTool, updatePageLayoutTool, addBlockToPageTool, updateBlockContentTool, patchBlockContentTool, removeBlockFromPageTool, listFormsTool, getFormTool, createFormTool, updateFormTool, deleteFormTool, listFormSubmissionsTool, getFormSubmissionTool, updateFormSubmissionStatusTool, deleteFormSubmissionTool, listModelsTool, getModelTool, createModelTool, updateModelTool, deleteModelTool, listRecordsTool, getRecordTool, createRecordTool, updateRecordTool, deleteRecordTool, importRecordsTool, listOrdersTool, getOrderTool, getOrderPipelineTool, createManualOrderTool, editOrderTool, updateOrderDetailsTool, markOrderPaidTool, recordOrderPaymentTool, refundOrderTool, cancelOrderTool, transitionOrderFulfillmentTool, setOrderPipelineStageTool, recordOrderInvoiceTool, listCartsTool, listDiscountsTool, getDiscountTool, createDiscountTool, updateDiscountTool, setDiscountEnabledTool, listProductsTool, bulkUpdateProductsTool, bulkDeleteProductsTool, setProductTiersTool, updateCartConfigTool, clearCartConfigTool, listWebhooksTool, listWebhookDeliveriesTool, listWebhookEventTypesTool, createWebhookTool, updateWebhookTool, rotateWebhookSecretTool, deleteWebhookTool, listMembersTool, listRolesTool, } from "@cmssy/ai-tools";
|
|
6
4
|
import { createMcpWorkspaceOps } from "./ai-tools-ops.js";
|
|
7
5
|
import { bindSharedTool } from "./ai-tools-binder.js";
|
|
8
6
|
import { createUpdateRegionSettingsTool } from "./region-settings.js";
|
|
9
7
|
import { PAGES_QUERY, SITE_CONFIG_QUERY, CURRENT_WORKSPACE_QUERY, } from "./queries.js";
|
|
10
|
-
// Read our own version from package.json so the MCP handshake
|
|
11
|
-
// advertises what the user actually installed, instead of drifting
|
|
12
|
-
// whenever we bump the package.
|
|
13
|
-
const PACKAGE_VERSION = (() => {
|
|
14
|
-
try {
|
|
15
|
-
const here = dirname(fileURLToPath(import.meta.url));
|
|
16
|
-
const pkg = JSON.parse(readFileSync(resolve(here, "../package.json"), "utf8"));
|
|
17
|
-
return typeof pkg.version === "string" ? pkg.version : "0.0.0";
|
|
18
|
-
}
|
|
19
|
-
catch {
|
|
20
|
-
return "0.0.0";
|
|
21
|
-
}
|
|
22
|
-
})();
|
|
23
8
|
export function createServer(client) {
|
|
24
9
|
const server = new McpServer({
|
|
25
10
|
name: "cmssy",
|
package/dist/server.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"server.js","sourceRoot":"","sources":["../src/server.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;
|
|
1
|
+
{"version":3,"file":"server.js","sourceRoot":"","sources":["../src/server.ts"],"names":[],"mappings":"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"}
|