@cmssy/mcp-server 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 ADDED
@@ -0,0 +1,102 @@
1
+ # @cmssy/mcp-server
2
+
3
+ MCP server for [Cmssy CMS](https://cmssy.com) — enables AI-driven page creation and management with i18n support.
4
+
5
+ ## Setup
6
+
7
+ ### Prerequisites
8
+
9
+ 1. Your Cmssy backend API URL (e.g. `https://api.your-cmssy.com`)
10
+ 2. An API token (create in Dashboard > API Tokens, starts with `cs_`)
11
+ 3. Your workspace ID
12
+
13
+ ### Add to Claude Code
14
+
15
+ Add to `.mcp.json` in your project root:
16
+
17
+ ```json
18
+ {
19
+ "mcpServers": {
20
+ "cmssy": {
21
+ "type": "stdio",
22
+ "command": "npx",
23
+ "args": [
24
+ "-y",
25
+ "@cmssy/mcp-server",
26
+ "--token",
27
+ "cs_YOUR_TOKEN",
28
+ "--workspace-id",
29
+ "YOUR_WORKSPACE_ID",
30
+ "--api-url",
31
+ "https://api.your-cmssy.com"
32
+ ]
33
+ }
34
+ }
35
+ }
36
+ ```
37
+
38
+ ### Environment Variables
39
+
40
+ Instead of CLI args, you can set:
41
+
42
+ - `CMSSY_API_TOKEN` — API token (`cs_xxx`)
43
+ - `CMSSY_WORKSPACE_ID` — Workspace ID
44
+ - `CMSSY_API_URL` — API URL (required, e.g. `https://api.your-cmssy.com`)
45
+
46
+ ## Available Tools
47
+
48
+ ### Read Tools
49
+
50
+ | Tool | Description |
51
+ | -------------------- | ------------------------------------------------------ |
52
+ | `list_pages` | Page tree with hierarchy |
53
+ | `get_page` | Full page with blocks and i18n content (by slug or id) |
54
+ | `list_block_types` | All available blocks with schemas and defaults |
55
+ | `get_block_schema` | Detailed schema for one block type |
56
+ | `get_site_config` | Languages, navigation, site name |
57
+ | `get_workspace_info` | Workspace name, plan, limits |
58
+ | `list_media` | Media library listing |
59
+
60
+ ### Write Tools
61
+
62
+ | Tool | Description |
63
+ | ---------------------- | ------------------------------- |
64
+ | `create_page` | Create a new page |
65
+ | `update_page_blocks` | Set full blocks array on a page |
66
+ | `update_page_settings` | Update page metadata and SEO |
67
+ | `publish_page` | Publish a page |
68
+ | `unpublish_page` | Unpublish a page |
69
+ | `delete_page` | Delete a page |
70
+
71
+ ### Block Helper Tools
72
+
73
+ | Tool | Description |
74
+ | ------------------------ | --------------------------------------------------------------- |
75
+ | `add_block_to_page` | Insert a block at position (auto-generates UUID + translations) |
76
+ | `update_block_content` | Merge content into an existing block |
77
+ | `remove_block_from_page` | Remove a block by ID |
78
+
79
+ ## Resources
80
+
81
+ | URI | Description |
82
+ | ------------------- | ---------------------------- |
83
+ | `cmssy://sitemap` | Full page tree as JSON |
84
+ | `cmssy://blocks` | All block types with schemas |
85
+ | `cmssy://workspace` | Workspace info + site config |
86
+
87
+ ## Example Workflow
88
+
89
+ ```
90
+ > List all pages in my workspace
91
+ > Show me the available block types
92
+ > Create a new "Features" page with content in English and Polish
93
+ > Add a hero block to the Features page
94
+ > Publish the Features page
95
+ ```
96
+
97
+ ## Development
98
+
99
+ ```bash
100
+ pnpm install
101
+ pnpm dev -- --token cs_xxx --workspace-id xxx --api-url http://localhost:4000
102
+ ```
@@ -0,0 +1,14 @@
1
+ export declare class CmssyClient {
2
+ private apiUrl;
3
+ private token;
4
+ private workspaceId;
5
+ private selectionCache;
6
+ constructor(apiUrl: string, token: string, workspaceId: string);
7
+ query<T>(query: string, variables?: Record<string, unknown>): Promise<T>;
8
+ /**
9
+ * Introspect a GraphQL type and build a selection set string dynamically.
10
+ * Recurses into OBJECT fields up to `depth` levels. Results are cached.
11
+ */
12
+ buildSelectionSet(typeName: string, depth?: number): Promise<string>;
13
+ }
14
+ //# sourceMappingURL=graphql-client.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"graphql-client.d.ts","sourceRoot":"","sources":["../src/graphql-client.ts"],"names":[],"mappings":"AAoCA,qBAAa,WAAW;IAIpB,OAAO,CAAC,MAAM;IACd,OAAO,CAAC,KAAK;IACb,OAAO,CAAC,WAAW;IALrB,OAAO,CAAC,cAAc,CAA6B;gBAGzC,MAAM,EAAE,MAAM,EACd,KAAK,EAAE,MAAM,EACb,WAAW,EAAE,MAAM;IAGvB,KAAK,CAAC,CAAC,EACX,KAAK,EAAE,MAAM,EACb,SAAS,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAClC,OAAO,CAAC,CAAC,CAAC;IA+Bb;;;OAGG;IACG,iBAAiB,CAAC,QAAQ,EAAE,MAAM,EAAE,KAAK,SAAI,GAAG,OAAO,CAAC,MAAM,CAAC;CA8BtE"}
@@ -0,0 +1,88 @@
1
+ const INTROSPECT_TYPE_QUERY = `
2
+ query IntrospectType($name: String!) {
3
+ __type(name: $name) {
4
+ name
5
+ fields {
6
+ name
7
+ type {
8
+ name kind
9
+ ofType { name kind ofType { name kind ofType { name kind } } }
10
+ }
11
+ }
12
+ }
13
+ }
14
+ `;
15
+ function unwrapType(type) {
16
+ let current = type;
17
+ while (current && (current.kind === "NON_NULL" || current.kind === "LIST")) {
18
+ current = current.ofType;
19
+ }
20
+ return current
21
+ ? { name: current.name, kind: current.kind }
22
+ : { name: null, kind: "SCALAR" };
23
+ }
24
+ export class CmssyClient {
25
+ apiUrl;
26
+ token;
27
+ workspaceId;
28
+ selectionCache = new Map();
29
+ constructor(apiUrl, token, workspaceId) {
30
+ this.apiUrl = apiUrl;
31
+ this.token = token;
32
+ this.workspaceId = workspaceId;
33
+ }
34
+ async query(query, variables) {
35
+ const res = await fetch(`${this.apiUrl}/graphql`, {
36
+ method: "POST",
37
+ headers: {
38
+ "Content-Type": "application/json",
39
+ Authorization: `Bearer ${this.token}`,
40
+ "x-workspace-id": this.workspaceId,
41
+ },
42
+ body: JSON.stringify({ query, variables }),
43
+ });
44
+ if (!res.ok) {
45
+ throw new Error(`HTTP ${res.status}: ${res.statusText}`);
46
+ }
47
+ const json = (await res.json());
48
+ if (json.errors?.length) {
49
+ throw new Error(json.errors.map((e) => e.message).join("; "));
50
+ }
51
+ if (!json.data) {
52
+ throw new Error("No data returned from GraphQL");
53
+ }
54
+ return json.data;
55
+ }
56
+ /**
57
+ * Introspect a GraphQL type and build a selection set string dynamically.
58
+ * Recurses into OBJECT fields up to `depth` levels. Results are cached.
59
+ */
60
+ async buildSelectionSet(typeName, depth = 3) {
61
+ if (depth <= 0)
62
+ return "";
63
+ const cached = this.selectionCache.get(typeName);
64
+ if (cached !== undefined)
65
+ return cached;
66
+ const data = await this.query(INTROSPECT_TYPE_QUERY, { name: typeName });
67
+ if (!data.__type?.fields) {
68
+ this.selectionCache.set(typeName, "");
69
+ return "";
70
+ }
71
+ const parts = [];
72
+ for (const field of data.__type.fields) {
73
+ const resolved = unwrapType(field.type);
74
+ if (resolved.kind === "SCALAR" || resolved.kind === "ENUM") {
75
+ parts.push(field.name);
76
+ }
77
+ else if (resolved.kind === "OBJECT" && resolved.name) {
78
+ const sub = await this.buildSelectionSet(resolved.name, depth - 1);
79
+ if (sub)
80
+ parts.push(`${field.name} { ${sub} }`);
81
+ }
82
+ }
83
+ const result = parts.join(" ");
84
+ this.selectionCache.set(typeName, result);
85
+ return result;
86
+ }
87
+ }
88
+ //# sourceMappingURL=graphql-client.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"graphql-client.js","sourceRoot":"","sources":["../src/graphql-client.ts"],"names":[],"mappings":"AAWA,MAAM,qBAAqB,GAAG;;;;;;;;;;;;;CAa7B,CAAC;AAEF,SAAS,UAAU,CAAC,IAAa;IAC/B,IAAI,OAAO,GAA+B,IAAI,CAAC;IAC/C,OAAO,OAAO,IAAI,CAAC,OAAO,CAAC,IAAI,KAAK,UAAU,IAAI,OAAO,CAAC,IAAI,KAAK,MAAM,CAAC,EAAE,CAAC;QAC3E,OAAO,GAAG,OAAO,CAAC,MAAM,CAAC;IAC3B,CAAC;IACD,OAAO,OAAO;QACZ,CAAC,CAAC,EAAE,IAAI,EAAE,OAAO,CAAC,IAAI,EAAE,IAAI,EAAE,OAAO,CAAC,IAAI,EAAE;QAC5C,CAAC,CAAC,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,QAAQ,EAAE,CAAC;AACrC,CAAC;AAED,MAAM,OAAO,WAAW;IAIZ;IACA;IACA;IALF,cAAc,GAAG,IAAI,GAAG,EAAkB,CAAC;IAEnD,YACU,MAAc,EACd,KAAa,EACb,WAAmB;QAFnB,WAAM,GAAN,MAAM,CAAQ;QACd,UAAK,GAAL,KAAK,CAAQ;QACb,gBAAW,GAAX,WAAW,CAAQ;IAC1B,CAAC;IAEJ,KAAK,CAAC,KAAK,CACT,KAAa,EACb,SAAmC;QAEnC,MAAM,GAAG,GAAG,MAAM,KAAK,CAAC,GAAG,IAAI,CAAC,MAAM,UAAU,EAAE;YAChD,MAAM,EAAE,MAAM;YACd,OAAO,EAAE;gBACP,cAAc,EAAE,kBAAkB;gBAClC,aAAa,EAAE,UAAU,IAAI,CAAC,KAAK,EAAE;gBACrC,gBAAgB,EAAE,IAAI,CAAC,WAAW;aACnC;YACD,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,EAAE,KAAK,EAAE,SAAS,EAAE,CAAC;SAC3C,CAAC,CAAC;QAEH,IAAI,CAAC,GAAG,CAAC,EAAE,EAAE,CAAC;YACZ,MAAM,IAAI,KAAK,CAAC,QAAQ,GAAG,CAAC,MAAM,KAAK,GAAG,CAAC,UAAU,EAAE,CAAC,CAAC;QAC3D,CAAC;QAED,MAAM,IAAI,GAAG,CAAC,MAAM,GAAG,CAAC,IAAI,EAAE,CAG7B,CAAC;QAEF,IAAI,IAAI,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC;YACxB,MAAM,IAAI,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;QAChE,CAAC;QAED,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC;YACf,MAAM,IAAI,KAAK,CAAC,+BAA+B,CAAC,CAAC;QACnD,CAAC;QAED,OAAO,IAAI,CAAC,IAAI,CAAC;IACnB,CAAC;IAED;;;OAGG;IACH,KAAK,CAAC,iBAAiB,CAAC,QAAgB,EAAE,KAAK,GAAG,CAAC;QACjD,IAAI,KAAK,IAAI,CAAC;YAAE,OAAO,EAAE,CAAC;QAE1B,MAAM,MAAM,GAAG,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;QACjD,IAAI,MAAM,KAAK,SAAS;YAAE,OAAO,MAAM,CAAC;QAExC,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,KAAK,CAE1B,qBAAqB,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,CAAC,CAAC;QAE9C,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC;YACzB,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,QAAQ,EAAE,EAAE,CAAC,CAAC;YACtC,OAAO,EAAE,CAAC;QACZ,CAAC;QAED,MAAM,KAAK,GAAa,EAAE,CAAC;QAC3B,KAAK,MAAM,KAAK,IAAI,IAAI,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC;YACvC,MAAM,QAAQ,GAAG,UAAU,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;YACxC,IAAI,QAAQ,CAAC,IAAI,KAAK,QAAQ,IAAI,QAAQ,CAAC,IAAI,KAAK,MAAM,EAAE,CAAC;gBAC3D,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;YACzB,CAAC;iBAAM,IAAI,QAAQ,CAAC,IAAI,KAAK,QAAQ,IAAI,QAAQ,CAAC,IAAI,EAAE,CAAC;gBACvD,MAAM,GAAG,GAAG,MAAM,IAAI,CAAC,iBAAiB,CAAC,QAAQ,CAAC,IAAI,EAAE,KAAK,GAAG,CAAC,CAAC,CAAC;gBACnE,IAAI,GAAG;oBAAE,KAAK,CAAC,IAAI,CAAC,GAAG,KAAK,CAAC,IAAI,MAAM,GAAG,IAAI,CAAC,CAAC;YAClD,CAAC;QACH,CAAC;QAED,MAAM,MAAM,GAAG,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QAC/B,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC;QAC1C,OAAO,MAAM,CAAC;IAChB,CAAC;CACF"}
@@ -0,0 +1,3 @@
1
+ #!/usr/bin/env node
2
+ export {};
3
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":""}
package/dist/index.js ADDED
@@ -0,0 +1,51 @@
1
+ #!/usr/bin/env node
2
+ import { StdioServerTransport } from "@modelcontextprotocol/sdk/server/stdio.js";
3
+ import { CmssyClient } from "./graphql-client.js";
4
+ import { createServer } from "./server.js";
5
+ function parseArgs(args) {
6
+ let token = process.env.CMSSY_API_TOKEN ?? "";
7
+ let workspaceId = process.env.CMSSY_WORKSPACE_ID ?? "";
8
+ let apiUrl = process.env.CMSSY_API_URL ?? "";
9
+ for (let i = 0; i < args.length; i++) {
10
+ const arg = args[i];
11
+ const next = args[i + 1];
12
+ if (arg === "--token" && next) {
13
+ token = next;
14
+ i++;
15
+ }
16
+ else if (arg === "--workspace-id" && next) {
17
+ workspaceId = next;
18
+ i++;
19
+ }
20
+ else if (arg === "--api-url" && next) {
21
+ apiUrl = next;
22
+ i++;
23
+ }
24
+ }
25
+ if (!token) {
26
+ console.error("Error: API token required. Use --token <cs_xxx> or set CMSSY_API_TOKEN env var.");
27
+ process.exit(1);
28
+ }
29
+ if (!workspaceId) {
30
+ console.error("Error: Workspace ID required. Use --workspace-id <id> or set CMSSY_WORKSPACE_ID env var.");
31
+ process.exit(1);
32
+ }
33
+ if (!apiUrl) {
34
+ console.error("Error: API URL required. Use --api-url <url> or set CMSSY_API_URL env var.");
35
+ process.exit(1);
36
+ }
37
+ return { token, workspaceId, apiUrl };
38
+ }
39
+ async function main() {
40
+ const { token, workspaceId, apiUrl } = parseArgs(process.argv.slice(2));
41
+ const client = new CmssyClient(apiUrl, token, workspaceId);
42
+ const server = createServer(client);
43
+ const transport = new StdioServerTransport();
44
+ await server.connect(transport);
45
+ console.error(`Cmssy MCP server running (API: ${apiUrl})`);
46
+ }
47
+ main().catch((err) => {
48
+ console.error("Fatal error:", err);
49
+ process.exit(1);
50
+ });
51
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";AAEA,OAAO,EAAE,oBAAoB,EAAE,MAAM,2CAA2C,CAAC;AACjF,OAAO,EAAE,WAAW,EAAE,MAAM,qBAAqB,CAAC;AAClD,OAAO,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAE3C,SAAS,SAAS,CAAC,IAAc;IAK/B,IAAI,KAAK,GAAG,OAAO,CAAC,GAAG,CAAC,eAAe,IAAI,EAAE,CAAC;IAC9C,IAAI,WAAW,GAAG,OAAO,CAAC,GAAG,CAAC,kBAAkB,IAAI,EAAE,CAAC;IACvD,IAAI,MAAM,GAAG,OAAO,CAAC,GAAG,CAAC,aAAa,IAAI,EAAE,CAAC;IAE7C,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;QACrC,MAAM,GAAG,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC;QACpB,MAAM,IAAI,GAAG,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;QAEzB,IAAI,GAAG,KAAK,SAAS,IAAI,IAAI,EAAE,CAAC;YAC9B,KAAK,GAAG,IAAI,CAAC;YACb,CAAC,EAAE,CAAC;QACN,CAAC;aAAM,IAAI,GAAG,KAAK,gBAAgB,IAAI,IAAI,EAAE,CAAC;YAC5C,WAAW,GAAG,IAAI,CAAC;YACnB,CAAC,EAAE,CAAC;QACN,CAAC;aAAM,IAAI,GAAG,KAAK,WAAW,IAAI,IAAI,EAAE,CAAC;YACvC,MAAM,GAAG,IAAI,CAAC;YACd,CAAC,EAAE,CAAC;QACN,CAAC;IACH,CAAC;IAED,IAAI,CAAC,KAAK,EAAE,CAAC;QACX,OAAO,CAAC,KAAK,CACX,iFAAiF,CAClF,CAAC;QACF,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;IAED,IAAI,CAAC,WAAW,EAAE,CAAC;QACjB,OAAO,CAAC,KAAK,CACX,0FAA0F,CAC3F,CAAC;QACF,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;IAED,IAAI,CAAC,MAAM,EAAE,CAAC;QACZ,OAAO,CAAC,KAAK,CACX,4EAA4E,CAC7E,CAAC;QACF,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;IAED,OAAO,EAAE,KAAK,EAAE,WAAW,EAAE,MAAM,EAAE,CAAC;AACxC,CAAC;AAED,KAAK,UAAU,IAAI;IACjB,MAAM,EAAE,KAAK,EAAE,WAAW,EAAE,MAAM,EAAE,GAAG,SAAS,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;IAExE,MAAM,MAAM,GAAG,IAAI,WAAW,CAAC,MAAM,EAAE,KAAK,EAAE,WAAW,CAAC,CAAC;IAC3D,MAAM,MAAM,GAAG,YAAY,CAAC,MAAM,CAAC,CAAC;IAEpC,MAAM,SAAS,GAAG,IAAI,oBAAoB,EAAE,CAAC;IAC7C,MAAM,MAAM,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC;IAEhC,OAAO,CAAC,KAAK,CAAC,kCAAkC,MAAM,GAAG,CAAC,CAAC;AAC7D,CAAC;AAED,IAAI,EAAE,CAAC,KAAK,CAAC,CAAC,GAAG,EAAE,EAAE;IACnB,OAAO,CAAC,KAAK,CAAC,cAAc,EAAE,GAAG,CAAC,CAAC;IACnC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AAClB,CAAC,CAAC,CAAC"}
@@ -0,0 +1,15 @@
1
+ export declare const PAGES_QUERY = "\n query Pages {\n pages {\n id\n name\n slug\n description\n displayName\n published\n publishedAt\n hasUnpublishedChanges\n pageType\n parentId\n order\n createdAt\n updatedAt\n }\n }\n";
2
+ export declare const PAGE_BY_ID_QUERY = "\n query PageById($id: ID!) {\n pageById(id: $id) {\n id\n name\n slug\n description\n displayName\n seoTitle\n seoDescription\n seoKeywords\n published\n publishedAt\n hasUnpublishedChanges\n pageType\n parentId\n order\n blocks {\n id\n type\n content\n settings\n style\n advanced\n translations\n defaultLanguage\n metadata {\n createdAt\n updatedAt\n createdBy\n version\n }\n blockVersion\n }\n publishedBlocks {\n id\n type\n content\n settings\n style\n advanced\n translations\n defaultLanguage\n metadata {\n createdAt\n updatedAt\n createdBy\n version\n }\n blockVersion\n }\n layoutBlocks {\n id type position order isActive\n content settings style advanced\n translations defaultLanguage\n metadata { createdAt updatedAt createdBy version }\n blockVersion\n }\n publishedLayoutBlocks {\n id type position order isActive\n content settings style advanced\n translations defaultLanguage\n metadata { createdAt updatedAt createdBy version }\n blockVersion\n }\n layoutOverrides { position action blockId }\n inheritsLayout\n createdAt\n updatedAt\n }\n }\n";
3
+ export declare const PAGE_BY_SLUG_QUERY = "\n query Page($slug: String!) {\n page(slug: $slug) {\n id\n name\n slug\n description\n displayName\n seoTitle\n seoDescription\n seoKeywords\n published\n publishedAt\n hasUnpublishedChanges\n pageType\n parentId\n order\n blocks {\n id\n type\n content\n settings\n style\n advanced\n translations\n defaultLanguage\n metadata {\n createdAt\n updatedAt\n createdBy\n version\n }\n blockVersion\n }\n publishedBlocks {\n id\n type\n content\n settings\n style\n advanced\n translations\n defaultLanguage\n metadata {\n createdAt\n updatedAt\n createdBy\n version\n }\n blockVersion\n }\n layoutBlocks {\n id type position order isActive\n content settings style advanced\n translations defaultLanguage\n metadata { createdAt updatedAt createdBy version }\n blockVersion\n }\n publishedLayoutBlocks {\n id type position order isActive\n content settings style advanced\n translations defaultLanguage\n metadata { createdAt updatedAt createdBy version }\n blockVersion\n }\n layoutOverrides { position action blockId }\n inheritsLayout\n createdAt\n updatedAt\n }\n }\n";
4
+ export declare const WORKSPACE_BLOCKS_QUERY = "\n query WorkspaceBlocks {\n workspaceBlocks {\n id\n blockType\n name\n description\n icon\n category\n layoutPosition\n interactive\n schemaFields {\n key\n type\n label\n defaultValue\n placeholder\n required\n helperText\n options\n group\n itemSchema\n }\n defaultContent\n version\n }\n }\n";
5
+ export declare const WORKSPACE_BLOCK_BY_TYPE_QUERY = "\n query WorkspaceBlockByType($blockType: String!) {\n workspaceBlockByType(blockType: $blockType) {\n id\n blockType\n name\n description\n icon\n category\n layoutPosition\n interactive\n schemaFields {\n key\n type\n label\n defaultValue\n placeholder\n required\n helperText\n options\n group\n itemSchema\n }\n defaultContent\n version\n }\n }\n";
6
+ export declare const SITE_CONFIG_QUERY = "\n query SiteConfig {\n siteConfig {\n id\n defaultLanguage\n enabledLanguages\n siteName\n enabledFeatures\n }\n }\n";
7
+ export declare const CURRENT_WORKSPACE_QUERY = "\n query CurrentWorkspace {\n currentWorkspace {\n id\n name\n slug\n plan\n limits {\n maxPages\n maxUsers\n maxStorageMb\n maxAiTokensMonth\n maxWorkspacesOwned\n canUseCustomDomain\n canRemoveBranding\n canUseCustomScripts\n maxCustomBlocks\n maxCustomBlocksStorageMb\n }\n }\n }\n";
8
+ export declare const MEDIA_ASSETS_QUERY = "\n query MediaAssets($limit: Int, $offset: Int) {\n mediaAssets(limit: $limit, offset: $offset) {\n items {\n id\n url\n filename\n type\n mimeType\n size\n width\n height\n alt\n tags\n }\n total\n hasMore\n }\n }\n";
9
+ export declare const SAVE_PAGE_MUTATION = "\n mutation SavePage($input: SavePageInput!) {\n savePage(input: $input) {\n id\n name\n slug\n description\n displayName\n seoTitle\n seoDescription\n seoKeywords\n published\n hasUnpublishedChanges\n pageType\n parentId\n blocks {\n id\n type\n content\n settings\n style\n advanced\n translations\n defaultLanguage\n metadata {\n createdAt\n updatedAt\n createdBy\n version\n }\n blockVersion\n }\n createdAt\n updatedAt\n }\n }\n";
10
+ export declare const UPDATE_PAGE_SETTINGS_MUTATION = "\n mutation UpdatePageSettings($input: UpdatePageSettingsInput!) {\n updatePageSettings(input: $input) {\n id\n name\n slug\n description\n displayName\n seoTitle\n seoDescription\n seoKeywords\n pageType\n parentId\n updatedAt\n }\n }\n";
11
+ export declare const TOGGLE_PUBLISH_MUTATION = "\n mutation TogglePublish($id: ID!) {\n togglePublish(id: $id) {\n id\n published\n publishedAt\n hasUnpublishedChanges\n }\n }\n";
12
+ export declare const PUBLISH_PAGE_MUTATION = "\n mutation PublishPage($id: ID!, $blocks: [BlockDataInput!]!) {\n publishPage(id: $id, blocks: $blocks) {\n id\n published\n publishedAt\n hasUnpublishedChanges\n blocks {\n id\n type\n content\n settings\n style\n advanced\n translations\n defaultLanguage\n metadata {\n createdAt\n updatedAt\n createdBy\n version\n }\n blockVersion\n }\n }\n }\n";
13
+ export declare const REMOVE_PAGE_MUTATION = "\n mutation RemovePage($id: ID!) {\n removePage(id: $id)\n }\n";
14
+ export declare const UPDATE_PAGE_LAYOUT_MUTATION = "\n mutation UpdatePageLayout($input: UpdatePageLayoutInput!) {\n updatePageLayout(input: $input) {\n id\n layoutBlocks {\n id type position order isActive\n content settings style advanced\n translations defaultLanguage\n metadata { createdAt updatedAt createdBy version }\n blockVersion\n }\n layoutOverrides { position action blockId }\n inheritsLayout\n }\n }\n";
15
+ //# sourceMappingURL=queries.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"queries.d.ts","sourceRoot":"","sources":["../src/queries.ts"],"names":[],"mappings":"AAEA,eAAO,MAAM,WAAW,yQAkBvB,CAAC;AAEF,eAAO,MAAM,gBAAgB,k+CAuE5B,CAAC;AAEF,eAAO,MAAM,kBAAkB,o+CAuE9B,CAAC;AAIF,eAAO,MAAM,sBAAsB,ubA2BlC,CAAC;AAEF,eAAO,MAAM,6BAA6B,6eA2BzC,CAAC;AAIF,eAAO,MAAM,iBAAiB,2JAU7B,CAAC;AAIF,eAAO,MAAM,uBAAuB,6YAqBnC,CAAC;AAIF,eAAO,MAAM,kBAAkB,+TAmB9B,CAAC;AAIF,eAAO,MAAM,kBAAkB,+nBAoC9B,CAAC;AAEF,eAAO,MAAM,6BAA6B,iTAgBzC,CAAC;AAEF,eAAO,MAAM,uBAAuB,kKASnC,CAAC;AAEF,eAAO,MAAM,qBAAqB,yfA0BjC,CAAC;AAEF,eAAO,MAAM,oBAAoB,wEAIhC,CAAC;AAEF,eAAO,MAAM,2BAA2B,qbAevC,CAAC"}