@cplace/test-mcp-server 0.1.9 ā 0.1.10
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 +23 -1
- package/dist/api.d.ts +2 -2
- package/dist/api.d.ts.map +1 -1
- package/dist/api.js +4 -1
- package/dist/api.js.map +1 -1
- package/dist/index.js +18 -1130
- package/dist/index.js.map +1 -1
- package/dist/tools/common-schemas.d.ts +228 -0
- package/dist/tools/common-schemas.d.ts.map +1 -0
- package/dist/tools/common-schemas.js +68 -0
- package/dist/tools/common-schemas.js.map +1 -0
- package/dist/tools/pages.d.ts +4 -0
- package/dist/tools/pages.d.ts.map +1 -0
- package/dist/tools/pages.js +198 -0
- package/dist/tools/pages.js.map +1 -0
- package/dist/tools/references.d.ts +4 -0
- package/dist/tools/references.d.ts.map +1 -0
- package/dist/tools/references.js +57 -0
- package/dist/tools/references.js.map +1 -0
- package/dist/tools/search.d.ts +4 -0
- package/dist/tools/search.d.ts.map +1 -0
- package/dist/tools/search.js +304 -0
- package/dist/tools/search.js.map +1 -0
- package/dist/tools/system.d.ts +3 -0
- package/dist/tools/system.d.ts.map +1 -0
- package/dist/tools/system.js +22 -0
- package/dist/tools/system.js.map +1 -0
- package/dist/tools/type-layouts.d.ts +4 -0
- package/dist/tools/type-layouts.d.ts.map +1 -0
- package/dist/tools/type-layouts.js +56 -0
- package/dist/tools/type-layouts.js.map +1 -0
- package/dist/tools/users.d.ts +4 -0
- package/dist/tools/users.d.ts.map +1 -0
- package/dist/tools/users.js +62 -0
- package/dist/tools/users.js.map +1 -0
- package/dist/tools/version-history.d.ts +4 -0
- package/dist/tools/version-history.d.ts.map +1 -0
- package/dist/tools/version-history.js +142 -0
- package/dist/tools/version-history.js.map +1 -0
- package/dist/tools/widgets.d.ts +4 -0
- package/dist/tools/widgets.d.ts.map +1 -0
- package/dist/tools/widgets.js +516 -0
- package/dist/tools/widgets.js.map +1 -0
- package/dist/tools/workspace.d.ts +4 -0
- package/dist/tools/workspace.d.ts.map +1 -0
- package/dist/tools/workspace.js +118 -0
- package/dist/tools/workspace.js.map +1 -0
- package/dist/types.d.ts +2 -22
- package/dist/types.d.ts.map +1 -1
- package/dist/types.js +2 -9
- package/dist/types.js.map +1 -1
- package/dist/utils.d.ts +14 -2
- package/dist/utils.d.ts.map +1 -1
- package/dist/utils.js +66 -12
- package/dist/utils.js.map +1 -1
- package/package.json +1 -1
|
@@ -0,0 +1,516 @@
|
|
|
1
|
+
import { z } from "zod";
|
|
2
|
+
import { debugLogWithTag } from "../logger.js";
|
|
3
|
+
import { transformMultiplicityToBoolean } from '../utils.js';
|
|
4
|
+
import { PositionSchema, WIDGET_CONFIG_DESCRIPTION } from './common-schemas.js';
|
|
5
|
+
export function registerWidgetTools(server, client) {
|
|
6
|
+
server.registerTool("cplace_list_widget_definitions", {
|
|
7
|
+
description: "Get a list of all available widget definitions in the system that support the specified embedding context, with their basic metadata including names, descriptions, and apps",
|
|
8
|
+
inputSchema: {
|
|
9
|
+
embeddingContext: z.enum(["AS_WIDGET", "INSIDE_RICHSTRING", "INSIDE_WIDGET"]).default("AS_WIDGET").describe(`Filter widgets by embedding context support:
|
|
10
|
+
- AS_WIDGET (default): Widgets that support full widget embedding with frame and title
|
|
11
|
+
- INSIDE_RICHSTRING: Widgets that can be embedded in rich text content without frame
|
|
12
|
+
- INSIDE_WIDGET: Widgets that can be embedded inside other widgets without frame`)
|
|
13
|
+
},
|
|
14
|
+
annotations: { title: "List Widget Definitions" }
|
|
15
|
+
}, async ({ embeddingContext = "AS_WIDGET" }) => {
|
|
16
|
+
debugLogWithTag('WIDGETS', `Starting widget definitions list request with embeddingContext: ${embeddingContext}`);
|
|
17
|
+
try {
|
|
18
|
+
const result = await client.makeApiRequest('json/widget-definitions', 'GET', { embeddingContext });
|
|
19
|
+
debugLogWithTag('WIDGETS', `Retrieved widget definitions for context: ${embeddingContext}`);
|
|
20
|
+
return {
|
|
21
|
+
content: [{ type: "text", text: JSON.stringify(result, null, 2) }]
|
|
22
|
+
};
|
|
23
|
+
}
|
|
24
|
+
catch (error) {
|
|
25
|
+
return {
|
|
26
|
+
content: [{ type: "text", text: `Error retrieving widget definitions: ${error instanceof Error ? error.message : String(error)}` }]
|
|
27
|
+
};
|
|
28
|
+
}
|
|
29
|
+
});
|
|
30
|
+
const WIDGET_ATTRIBUTE_ENHANCEMENTS = {
|
|
31
|
+
'cf.cplace.platform.attributesGroup': {
|
|
32
|
+
'cf.cplace.platform.attributesGroup.pageSelection': {
|
|
33
|
+
validValues: {
|
|
34
|
+
'embedding': 'Use the current embedding page (the page containing this widget)',
|
|
35
|
+
'parent': 'Use the parent page of the embedding page',
|
|
36
|
+
'absolute': 'Use an absolute page reference (requires cf.cplace.platform.attributesGroup.absoluteSelection)',
|
|
37
|
+
'relative': 'Use a relative reference through an attribute (requires cf.cplace.platform.attributesGroup.relativeSelection)'
|
|
38
|
+
},
|
|
39
|
+
defaultValue: 'embedding',
|
|
40
|
+
note: 'This attribute determines which page\'s attributes are displayed in the widget'
|
|
41
|
+
}
|
|
42
|
+
},
|
|
43
|
+
};
|
|
44
|
+
server.registerTool("cplace_get_widget_definition", {
|
|
45
|
+
description: "Get detailed widget configuration schema.\n\nš ALWAYS USE BEFORE ADDING/CONFIGURING WIDGETS to understand:\n- Required vs optional attributes\n- Correct attribute names (often not intuitive!)\n- Expected data types and formats\n- Available enumeration values\n\nCOMMON GOTCHAS:\n- Bar charts use 'attributeName' not 'attribute'\n- Connected charts need 'tableWidgetId' to link to tables\n- Attribute names often need single quotes: \"'cf.cplace.myAttribute'\"\n- LocalizedString format: {\"en\": \"English\", \"de\": \"German\"}\n\nWidget kinds: 'cf.platform.connectedBarChart', 'cf.platform.wiki', etc.",
|
|
46
|
+
inputSchema: {
|
|
47
|
+
widgetKind: z.string().describe("The widget kind identifier (e.g., 'cf.cplace.platform.table', 'cf.platform.wiki')")
|
|
48
|
+
},
|
|
49
|
+
annotations: { title: "Get Widget Definition Details" }
|
|
50
|
+
}, async ({ widgetKind }) => {
|
|
51
|
+
debugLogWithTag('WIDGETS', `Starting widget definition request for: ${widgetKind}`);
|
|
52
|
+
try {
|
|
53
|
+
const result = await client.makeApiRequest('json/widget-definition', 'GET', { widgetKind });
|
|
54
|
+
if (result && result.configurationSchema && result.configurationSchema.attributes) {
|
|
55
|
+
result.configurationSchema.attributes = transformMultiplicityToBoolean(result.configurationSchema.attributes);
|
|
56
|
+
const widgetEnhancements = WIDGET_ATTRIBUTE_ENHANCEMENTS[widgetKind];
|
|
57
|
+
if (widgetEnhancements) {
|
|
58
|
+
result.configurationSchema.attributes = result.configurationSchema.attributes.map((attr) => {
|
|
59
|
+
const enhancement = widgetEnhancements[attr.name];
|
|
60
|
+
if (enhancement) {
|
|
61
|
+
attr.hiddenKnowledge = enhancement;
|
|
62
|
+
debugLogWithTag('WIDGETS', `Enhanced attribute ${attr.name} with hidden knowledge`);
|
|
63
|
+
}
|
|
64
|
+
return attr;
|
|
65
|
+
});
|
|
66
|
+
}
|
|
67
|
+
}
|
|
68
|
+
debugLogWithTag('WIDGETS', `Retrieved widget definition for: ${widgetKind}`);
|
|
69
|
+
return {
|
|
70
|
+
content: [{ type: "text", text: JSON.stringify(result, null, 2) }]
|
|
71
|
+
};
|
|
72
|
+
}
|
|
73
|
+
catch (error) {
|
|
74
|
+
return {
|
|
75
|
+
content: [{ type: "text", text: `Error retrieving widget definition for ${widgetKind}: ${error instanceof Error ? error.message : String(error)}` }]
|
|
76
|
+
};
|
|
77
|
+
}
|
|
78
|
+
});
|
|
79
|
+
server.registerTool("cplace_get_page_layout_overview", {
|
|
80
|
+
description: "Get the high-level layout structure of a page including rows, columns, and widget summaries. Provides an overview of the page layout grid without detailed widget configurations.",
|
|
81
|
+
inputSchema: {
|
|
82
|
+
pageUID: z.string().describe("The unique identifier (UID) of the page to get layout for, e.g. 'page/kkt8ol745jqur4581kelm5ply'")
|
|
83
|
+
},
|
|
84
|
+
annotations: { title: "Get Page Layout Overview" }
|
|
85
|
+
}, async ({ pageUID }) => {
|
|
86
|
+
debugLogWithTag('LAYOUT', `Starting page layout overview request for: ${pageUID}`);
|
|
87
|
+
try {
|
|
88
|
+
const result = await client.makeApiRequest('json/pageLayout', 'GET', { pageUID });
|
|
89
|
+
const overview = {
|
|
90
|
+
rows: result.rows?.map((row, rowIndex) => ({
|
|
91
|
+
rowIndex,
|
|
92
|
+
columns: row.columns?.map((column, colIndex) => ({
|
|
93
|
+
columnIndex: colIndex,
|
|
94
|
+
proportion: column.proportion,
|
|
95
|
+
widgets: column.widgets?.map((widget) => ({
|
|
96
|
+
id: widget.id,
|
|
97
|
+
widgetType: widget.widgetType,
|
|
98
|
+
configurationCount: widget.configuration?.length || 0
|
|
99
|
+
})) || []
|
|
100
|
+
})) || []
|
|
101
|
+
})) || []
|
|
102
|
+
};
|
|
103
|
+
debugLogWithTag('LAYOUT', `Retrieved page layout overview for: ${pageUID}`);
|
|
104
|
+
return {
|
|
105
|
+
content: [{ type: "text", text: JSON.stringify(overview, null, 2) }]
|
|
106
|
+
};
|
|
107
|
+
}
|
|
108
|
+
catch (error) {
|
|
109
|
+
return {
|
|
110
|
+
content: [{ type: "text", text: `Error retrieving page layout overview for ${pageUID}: ${error instanceof Error ? error.message : String(error)}` }]
|
|
111
|
+
};
|
|
112
|
+
}
|
|
113
|
+
});
|
|
114
|
+
server.registerTool("cplace_get_widget_details", {
|
|
115
|
+
description: "Get detailed configuration for a specific widget within a page layout. Use this after cplace_get_page_layout_overview to examine specific widget configurations.",
|
|
116
|
+
inputSchema: {
|
|
117
|
+
pageUID: z.string().describe("The unique identifier (UID) of the page containing the widget"),
|
|
118
|
+
widgetId: z.string().describe("The unique widget identifier from the layout (e.g., 'id_123', 'id_456')")
|
|
119
|
+
},
|
|
120
|
+
annotations: { title: "Get Widget Details" }
|
|
121
|
+
}, async ({ pageUID, widgetId }) => {
|
|
122
|
+
debugLogWithTag('LAYOUT', `Starting widget details request for widget ${widgetId} in page ${pageUID}`);
|
|
123
|
+
try {
|
|
124
|
+
const result = await client.makeApiRequest('json/pageLayout', 'GET', { pageUID });
|
|
125
|
+
let foundWidget = null;
|
|
126
|
+
const findWidget = (rows) => {
|
|
127
|
+
for (const row of rows || []) {
|
|
128
|
+
for (const column of row.columns || []) {
|
|
129
|
+
for (const widget of column.widgets || []) {
|
|
130
|
+
if (widget.id === widgetId) {
|
|
131
|
+
return widget;
|
|
132
|
+
}
|
|
133
|
+
if (widget.widgetsLayout?.rows) {
|
|
134
|
+
const nestedWidget = findWidget(widget.widgetsLayout.rows);
|
|
135
|
+
if (nestedWidget)
|
|
136
|
+
return nestedWidget;
|
|
137
|
+
}
|
|
138
|
+
}
|
|
139
|
+
}
|
|
140
|
+
}
|
|
141
|
+
return null;
|
|
142
|
+
};
|
|
143
|
+
foundWidget = findWidget(result.rows);
|
|
144
|
+
if (!foundWidget) {
|
|
145
|
+
return {
|
|
146
|
+
content: [{ type: "text", text: `Widget with ID ${widgetId} not found in page ${pageUID}` }]
|
|
147
|
+
};
|
|
148
|
+
}
|
|
149
|
+
debugLogWithTag('LAYOUT', `Retrieved widget details for: ${widgetId} in page`);
|
|
150
|
+
return {
|
|
151
|
+
content: [{ type: "text", text: JSON.stringify(foundWidget, null, 2) }]
|
|
152
|
+
};
|
|
153
|
+
}
|
|
154
|
+
catch (error) {
|
|
155
|
+
return {
|
|
156
|
+
content: [{ type: "text", text: `Error retrieving widget details for ${widgetId} in page ${pageUID}: ${error instanceof Error ? error.message : String(error)}` }]
|
|
157
|
+
};
|
|
158
|
+
}
|
|
159
|
+
});
|
|
160
|
+
server.registerTool("cplace_add_widget_to_layout", {
|
|
161
|
+
description: "Add a new widget to a page layout at a specific position.\n\nā ļø REQUIRED BEFORE USE:\n- ALWAYS call cplace_get_widget_definition FIRST to understand required fields\n- Many widgets have non-obvious required attributes that will cause validation errors\n- Widget configurations must match the schema exactly\n\nCRITICAL BEHAVIOR:\n- Row creation: ā NOT automatic - use cplace_add_row_to_page_layout to create rows first\n- Column creation: ā NOT automatic - columnIndex only references existing columns\n- Invalid columnIndex: Falls back to last existing column (no error)\n\nTO CREATE SIDE-BY-SIDE LAYOUTS:\n1. First use cplace_add_row_to_page_layout to create multi-column structure\n2. Then add widgets to the created columns\n\nEXAMPLES:\n- Add to new row 0: Creates single-column row, widget goes to column 0\n- Add to column 1 when only column 0 exists: Widget goes to column 0 (fallback)\n- Add to pre-created 6/6 row: Works correctly if columns exist\n\nTIP: Always check current layout with cplace_get_page_layout_overview before adding widgets.\n\nSupports both page-level layouts (default) and embedded layouts within container widgets like AttributesGroup.",
|
|
162
|
+
inputSchema: {
|
|
163
|
+
pageUID: z.string().describe("The unique identifier (UID) of the page to add the widget to"),
|
|
164
|
+
widgetType: z.string().describe("The widget type identifier (e.g., 'cf.cplace.platform.table', 'cf.platform.wiki', 'cf.platform.singleAttribute')"),
|
|
165
|
+
configuration: z.record(z.any()).optional().describe(`${WIDGET_CONFIG_DESCRIPTION}
|
|
166
|
+
|
|
167
|
+
WIDGET-SPECIFIC PATTERNS:
|
|
168
|
+
- Connected widgets (bar/pie charts): Use 'tableWidgetId' to connect to existing table widget
|
|
169
|
+
Example: {'tableWidgetId': 'id_abc123', 'title': {'en': 'Chart Title'}}
|
|
170
|
+
- Attribute widgets: Use 'cf.platform.quotedAttributeName' with single quotes
|
|
171
|
+
Example: {'cf.platform.quotedAttributeName': "'cf.cplace.myAttribute'", 'cf.platform.withLabel': true}
|
|
172
|
+
- Search widgets: Use 'search' with JSON search string
|
|
173
|
+
Example: {'search': '{"filters":[{"types":["test.project"]}]}', 'title': {'en': 'Results'}}
|
|
174
|
+
|
|
175
|
+
For embedded attribute widgets: {'cf.platform.quotedAttributeName': "'cf.cplace.myAttribute'", 'cf.platform.withLabel': true}`),
|
|
176
|
+
position: PositionSchema.extend({}).describe("Grid position where the widget should be added"),
|
|
177
|
+
layoutContext: z.enum(["page", "widget"]).default("page").describe("Layout context: 'page' for page-level layout (default), 'widget' for embedded layout within a container widget"),
|
|
178
|
+
containerWidgetId: z.string().optional().describe("Required when layoutContext is 'widget'. The unique identifier of the container widget (e.g., AttributesGroup widget) that contains the embedded layout to modify"),
|
|
179
|
+
layoutAttributeName: z.string().optional().describe("Optional layout attribute name for embedded layouts. If not provided, it will be auto-detected based on the container widget type")
|
|
180
|
+
},
|
|
181
|
+
annotations: { title: "Add Widget to Layout" }
|
|
182
|
+
}, async ({ pageUID, widgetType, configuration, position, layoutContext = "page", containerWidgetId, layoutAttributeName }) => {
|
|
183
|
+
debugLogWithTag('LAYOUT_MODIFY', `Starting add widget operation: ${widgetType} to ${layoutContext === "widget" ? "embedded layout in container " + containerWidgetId : "page layout"} ${pageUID} at position ${JSON.stringify(position)}`);
|
|
184
|
+
try {
|
|
185
|
+
if (layoutContext === "widget") {
|
|
186
|
+
if (!containerWidgetId) {
|
|
187
|
+
return {
|
|
188
|
+
content: [{ type: "text", text: "containerWidgetId is required when layoutContext is 'widget'" }]
|
|
189
|
+
};
|
|
190
|
+
}
|
|
191
|
+
debugLogWithTag('LAYOUT_MODIFY', `Adding to embedded layout in container widget: ${containerWidgetId}`);
|
|
192
|
+
}
|
|
193
|
+
const operation = {
|
|
194
|
+
type: "ADD",
|
|
195
|
+
widgetType,
|
|
196
|
+
position: {
|
|
197
|
+
rowIndex: position.rowIndex,
|
|
198
|
+
columnIndex: position.columnIndex,
|
|
199
|
+
widgetIndex: position.widgetIndex
|
|
200
|
+
}
|
|
201
|
+
};
|
|
202
|
+
if (configuration && Object.keys(configuration).length > 0) {
|
|
203
|
+
operation.configuration = configuration;
|
|
204
|
+
debugLogWithTag('LAYOUT_MODIFY', `Including configuration: ${JSON.stringify(Object.keys(configuration))}`);
|
|
205
|
+
}
|
|
206
|
+
const requestBody = {
|
|
207
|
+
pageUID,
|
|
208
|
+
layoutContext,
|
|
209
|
+
operation
|
|
210
|
+
};
|
|
211
|
+
if (layoutContext === "widget") {
|
|
212
|
+
requestBody.containerWidgetId = containerWidgetId;
|
|
213
|
+
if (layoutAttributeName) {
|
|
214
|
+
requestBody.layoutAttributeName = layoutAttributeName;
|
|
215
|
+
}
|
|
216
|
+
}
|
|
217
|
+
debugLogWithTag('LAYOUT_MODIFY', `Request body: ${JSON.stringify(requestBody, null, 2)}`);
|
|
218
|
+
const result = await client.makeApiRequest('json/pageLayout', 'PATCH', undefined, requestBody);
|
|
219
|
+
debugLogWithTag('LAYOUT_MODIFY', `Successfully added widget ${widgetType} to page ${pageUID}`);
|
|
220
|
+
return {
|
|
221
|
+
content: [{ type: "text", text: JSON.stringify(result, null, 2) }]
|
|
222
|
+
};
|
|
223
|
+
}
|
|
224
|
+
catch (error) {
|
|
225
|
+
debugLogWithTag('LAYOUT_MODIFY', `Error adding widget: ${error instanceof Error ? error.message : String(error)}`);
|
|
226
|
+
return {
|
|
227
|
+
content: [{ type: "text", text: `Error adding widget to layout: ${error instanceof Error ? error.message : String(error)}` }]
|
|
228
|
+
};
|
|
229
|
+
}
|
|
230
|
+
});
|
|
231
|
+
server.registerTool("cplace_remove_widget_from_layout", {
|
|
232
|
+
description: "Remove an existing widget from a page layout",
|
|
233
|
+
inputSchema: {
|
|
234
|
+
pageUID: z.string().describe("The unique identifier (UID) of the page containing the widget"),
|
|
235
|
+
widgetId: z.string().describe("The unique identifier of the widget to remove")
|
|
236
|
+
},
|
|
237
|
+
annotations: { title: "Remove Widget from Layout" }
|
|
238
|
+
}, async ({ pageUID, widgetId }) => {
|
|
239
|
+
debugLogWithTag('LAYOUT_MODIFY', `Starting remove widget operation: ${widgetId} from page ${pageUID}`);
|
|
240
|
+
try {
|
|
241
|
+
const requestBody = {
|
|
242
|
+
pageUID,
|
|
243
|
+
operation: {
|
|
244
|
+
type: "REMOVE",
|
|
245
|
+
widgetId
|
|
246
|
+
}
|
|
247
|
+
};
|
|
248
|
+
debugLogWithTag('LAYOUT_MODIFY', `Request body: ${JSON.stringify(requestBody, null, 2)}`);
|
|
249
|
+
const result = await client.makeApiRequest('json/pageLayout', 'PATCH', undefined, requestBody);
|
|
250
|
+
debugLogWithTag('LAYOUT_MODIFY', `Successfully removed widget ${widgetId} from page ${pageUID}`);
|
|
251
|
+
return {
|
|
252
|
+
content: [{ type: "text", text: JSON.stringify(result, null, 2) }]
|
|
253
|
+
};
|
|
254
|
+
}
|
|
255
|
+
catch (error) {
|
|
256
|
+
debugLogWithTag('LAYOUT_MODIFY', `Error removing widget: ${error instanceof Error ? error.message : String(error)}`);
|
|
257
|
+
return {
|
|
258
|
+
content: [{ type: "text", text: `Error removing widget from layout: ${error instanceof Error ? error.message : String(error)}` }]
|
|
259
|
+
};
|
|
260
|
+
}
|
|
261
|
+
});
|
|
262
|
+
server.registerTool("cplace_update_widget_in_layout", {
|
|
263
|
+
description: "Modify widget configuration or display properties.\nUSE CASES:\n- Restore configuration after widget moves (configurations may be lost during moves)\n- Update widget connections (e.g., change tableWidgetId after layout modifications)\n- Modify display properties (titles, collapse state, etc.)\n\nTIP: Widget IDs may change after layout operations - always use current IDs from latest layout overview.",
|
|
264
|
+
inputSchema: {
|
|
265
|
+
pageUID: z.string().describe("The unique identifier (UID) of the page containing the widget"),
|
|
266
|
+
widgetId: z.string().describe("The unique identifier of the widget to update"),
|
|
267
|
+
newConfiguration: z.record(z.any()).optional().describe(`Updated widget configuration as key-value pairs (optional). ${WIDGET_CONFIG_DESCRIPTION}`),
|
|
268
|
+
collapsed: z.boolean().optional().describe("Widget collapse state (optional)")
|
|
269
|
+
},
|
|
270
|
+
annotations: { title: "Update Widget in Layout" }
|
|
271
|
+
}, async ({ pageUID, widgetId, newConfiguration, collapsed }) => {
|
|
272
|
+
debugLogWithTag('LAYOUT_MODIFY', `Starting update widget operation: ${widgetId} in page ${pageUID}`);
|
|
273
|
+
try {
|
|
274
|
+
const operation = {
|
|
275
|
+
type: "UPDATE",
|
|
276
|
+
widgetId
|
|
277
|
+
};
|
|
278
|
+
if (newConfiguration && Object.keys(newConfiguration).length > 0) {
|
|
279
|
+
operation.newConfiguration = newConfiguration;
|
|
280
|
+
debugLogWithTag('LAYOUT_MODIFY', `Including new configuration: ${JSON.stringify(Object.keys(newConfiguration))}`);
|
|
281
|
+
}
|
|
282
|
+
if (collapsed !== undefined) {
|
|
283
|
+
operation.collapsed = collapsed;
|
|
284
|
+
debugLogWithTag('LAYOUT_MODIFY', `Setting collapsed state to: ${collapsed}`);
|
|
285
|
+
}
|
|
286
|
+
if (!operation.newConfiguration && operation.collapsed === undefined) {
|
|
287
|
+
return {
|
|
288
|
+
content: [{ type: "text", text: "No updates specified. At least one of newConfiguration or collapsed must be provided." }]
|
|
289
|
+
};
|
|
290
|
+
}
|
|
291
|
+
const requestBody = {
|
|
292
|
+
pageUID,
|
|
293
|
+
operation
|
|
294
|
+
};
|
|
295
|
+
debugLogWithTag('LAYOUT_MODIFY', `Request body: ${JSON.stringify(requestBody, null, 2)}`);
|
|
296
|
+
const result = await client.makeApiRequest('json/pageLayout', 'PATCH', undefined, requestBody);
|
|
297
|
+
debugLogWithTag('LAYOUT_MODIFY', `Successfully updated widget ${widgetId} in page ${pageUID}`);
|
|
298
|
+
return {
|
|
299
|
+
content: [{ type: "text", text: JSON.stringify(result, null, 2) }]
|
|
300
|
+
};
|
|
301
|
+
}
|
|
302
|
+
catch (error) {
|
|
303
|
+
debugLogWithTag('LAYOUT_MODIFY', `Error updating widget: ${error instanceof Error ? error.message : String(error)}`);
|
|
304
|
+
return {
|
|
305
|
+
content: [{ type: "text", text: `Error updating widget in layout: ${error instanceof Error ? error.message : String(error)}` }]
|
|
306
|
+
};
|
|
307
|
+
}
|
|
308
|
+
});
|
|
309
|
+
server.registerTool("cplace_move_widget_in_layout", {
|
|
310
|
+
description: "Relocate a widget to a different position in the layout.\n\nMOVE BEHAVIOR:\n- ā
Can move between existing rows and columns\n- ā Cannot create new columns (only references existing ones)\n- Invalid columnIndex: Falls back to last column in target row\n\nCRITICAL WARNINGS:\n- Widget configurations may be LOST during moves\n- Widget IDs may CHANGE - always get new IDs from response\n- Connected widgets (charts) may lose their tableWidgetId references\n\nPOST-MOVE CHECKLIST:\n1. Get new widget ID from response\n2. Use cplace_get_widget_details to check if configuration was preserved\n3. If lost, use cplace_update_widget_in_layout to restore configuration\n4. Update any widgets that referenced the moved widget's old ID\n\nTIP: For complex layouts, consider removing and re-adding widgets instead of moving.",
|
|
311
|
+
inputSchema: {
|
|
312
|
+
pageUID: z.string().describe("The unique identifier (UID) of the page containing the widget"),
|
|
313
|
+
widgetId: z.string().describe("The unique identifier of the widget to move"),
|
|
314
|
+
newPosition: PositionSchema.extend({}).describe("Target grid position for the widget")
|
|
315
|
+
},
|
|
316
|
+
annotations: { title: "Move Widget in Layout" }
|
|
317
|
+
}, async ({ pageUID, widgetId, newPosition }) => {
|
|
318
|
+
debugLogWithTag('LAYOUT_MODIFY', `Starting move widget operation: ${widgetId} in page ${pageUID} to position ${JSON.stringify(newPosition)}`);
|
|
319
|
+
try {
|
|
320
|
+
const requestBody = {
|
|
321
|
+
pageUID,
|
|
322
|
+
operation: {
|
|
323
|
+
type: "MOVE",
|
|
324
|
+
widgetId,
|
|
325
|
+
newPosition: {
|
|
326
|
+
rowIndex: newPosition.rowIndex,
|
|
327
|
+
columnIndex: newPosition.columnIndex,
|
|
328
|
+
widgetIndex: newPosition.widgetIndex
|
|
329
|
+
}
|
|
330
|
+
}
|
|
331
|
+
};
|
|
332
|
+
debugLogWithTag('LAYOUT_MODIFY', `Request body: ${JSON.stringify(requestBody, null, 2)}`);
|
|
333
|
+
const result = await client.makeApiRequest('json/pageLayout', 'PATCH', undefined, requestBody);
|
|
334
|
+
debugLogWithTag('LAYOUT_MODIFY', `Successfully moved widget ${widgetId} in page ${pageUID}`);
|
|
335
|
+
return {
|
|
336
|
+
content: [{ type: "text", text: JSON.stringify(result, null, 2) }]
|
|
337
|
+
};
|
|
338
|
+
}
|
|
339
|
+
catch (error) {
|
|
340
|
+
debugLogWithTag('LAYOUT_MODIFY', `Error moving widget: ${error instanceof Error ? error.message : String(error)}`);
|
|
341
|
+
return {
|
|
342
|
+
content: [{ type: "text", text: `Error moving widget in layout: ${error instanceof Error ? error.message : String(error)}` }]
|
|
343
|
+
};
|
|
344
|
+
}
|
|
345
|
+
});
|
|
346
|
+
server.registerTool("cplace_get_embedded_layout", {
|
|
347
|
+
description: "Get the widget layout structure of an embedded widget within a container widget on a specific page. This endpoint accesses nested widget layouts embedded within other widgets, such as AttributesGroup widgets.",
|
|
348
|
+
inputSchema: {
|
|
349
|
+
pageUID: z.string().describe("The unique identifier (UID) of the page containing the container widget"),
|
|
350
|
+
containerWidgetId: z.string().describe("The ID of the container widget that contains the embedded layout"),
|
|
351
|
+
layoutAttributeName: z.string().describe("The name of the attribute that defines the embedded layout structure")
|
|
352
|
+
},
|
|
353
|
+
annotations: { title: "Get Embedded Layout" }
|
|
354
|
+
}, async ({ pageUID, containerWidgetId, layoutAttributeName }) => {
|
|
355
|
+
debugLogWithTag('EMBEDDED_LAYOUT', `Starting embedded widget layout request for container ${containerWidgetId} in page ${pageUID}`);
|
|
356
|
+
try {
|
|
357
|
+
const result = await client.makeApiRequest('json/page/embeddedWidgetLayout', 'GET', {
|
|
358
|
+
pageUID,
|
|
359
|
+
containerWidgetId,
|
|
360
|
+
layoutAttributeName
|
|
361
|
+
});
|
|
362
|
+
debugLogWithTag('EMBEDDED_LAYOUT', `Retrieved embedded widget layout for container: ${containerWidgetId}`);
|
|
363
|
+
return {
|
|
364
|
+
content: [{ type: "text", text: JSON.stringify(result, null, 2) }]
|
|
365
|
+
};
|
|
366
|
+
}
|
|
367
|
+
catch (error) {
|
|
368
|
+
return {
|
|
369
|
+
content: [{ type: "text", text: `Error retrieving embedded widget layout: ${error instanceof Error ? error.message : String(error)}` }]
|
|
370
|
+
};
|
|
371
|
+
}
|
|
372
|
+
});
|
|
373
|
+
server.registerTool("cplace_add_widget_to_embedded_layout", {
|
|
374
|
+
description: "Add a new widget to an embedded layout within a container widget. This enables adding widgets to nested layouts like those within AttributesGroup widgets.\n\nSAME LIMITATIONS AS PAGE LAYOUTS:\n- Column creation: ā Never happens via widget placement\n- Invalid columnIndex falls back to last existing column\n- Can only add widgets to existing column structures in embedded layouts",
|
|
375
|
+
inputSchema: {
|
|
376
|
+
pageUID: z.string().describe("The unique identifier (UID) of the page containing the container widget"),
|
|
377
|
+
containerWidgetId: z.string().describe("The ID of the container widget that contains the embedded layout to modify"),
|
|
378
|
+
layoutAttributeName: z.string().describe("The name of the attribute that defines the embedded layout structure"),
|
|
379
|
+
widgetType: z.string().describe("Widget type identifier (e.g., 'cf.cplace.platform.table', 'cf.platform.wiki')"),
|
|
380
|
+
position: PositionSchema.extend({}).describe("Position where the widget should be added in the embedded layout"),
|
|
381
|
+
configuration: z.record(z.any()).optional().describe(`Widget configuration as key-value pairs. ${WIDGET_CONFIG_DESCRIPTION}
|
|
382
|
+
|
|
383
|
+
Examples: {'title': {'en': 'Embedded Widget', 'de': 'Eingebettetes Widget'}, 'showHeader': true}`)
|
|
384
|
+
},
|
|
385
|
+
annotations: { title: "Add Widget to Embedded Layout" }
|
|
386
|
+
}, async ({ pageUID, containerWidgetId, layoutAttributeName, widgetType, position, configuration }) => {
|
|
387
|
+
debugLogWithTag('EMBEDDED_LAYOUT_ADD', `Starting add widget to embedded layout: ${widgetType} to container ${containerWidgetId} in page ${pageUID}`);
|
|
388
|
+
try {
|
|
389
|
+
const operation = {
|
|
390
|
+
type: "ADD",
|
|
391
|
+
widgetType,
|
|
392
|
+
position
|
|
393
|
+
};
|
|
394
|
+
if (configuration && Object.keys(configuration).length > 0) {
|
|
395
|
+
operation.configuration = configuration;
|
|
396
|
+
debugLogWithTag('EMBEDDED_LAYOUT_ADD', `Including configuration: ${JSON.stringify(Object.keys(configuration))}`);
|
|
397
|
+
}
|
|
398
|
+
const requestBody = {
|
|
399
|
+
pageUID,
|
|
400
|
+
containerWidgetId,
|
|
401
|
+
layoutAttributeName,
|
|
402
|
+
operation
|
|
403
|
+
};
|
|
404
|
+
debugLogWithTag('EMBEDDED_LAYOUT_ADD', `Request body: ${JSON.stringify(requestBody, null, 2)}`);
|
|
405
|
+
const result = await client.makeApiRequest('json/page/embeddedWidgetLayout', 'PATCH', undefined, requestBody);
|
|
406
|
+
debugLogWithTag('EMBEDDED_LAYOUT_ADD', `Successfully added widget ${widgetType} to embedded layout`);
|
|
407
|
+
return {
|
|
408
|
+
content: [{ type: "text", text: JSON.stringify(result, null, 2) }]
|
|
409
|
+
};
|
|
410
|
+
}
|
|
411
|
+
catch (error) {
|
|
412
|
+
debugLogWithTag('EMBEDDED_LAYOUT_ADD', `Error adding widget to embedded layout: ${error instanceof Error ? error.message : String(error)}`);
|
|
413
|
+
return {
|
|
414
|
+
content: [{ type: "text", text: `Error adding widget to embedded layout: ${error instanceof Error ? error.message : String(error)}` }]
|
|
415
|
+
};
|
|
416
|
+
}
|
|
417
|
+
});
|
|
418
|
+
server.registerTool("cplace_remove_widget_from_embedded_layout", {
|
|
419
|
+
description: "Remove an existing widget from an embedded layout within a container widget. This enables removing widgets from nested layouts like those within AttributesGroup widgets.",
|
|
420
|
+
inputSchema: {
|
|
421
|
+
pageUID: z.string().describe("The unique identifier (UID) of the page containing the container widget"),
|
|
422
|
+
containerWidgetId: z.string().describe("The ID of the container widget that contains the embedded layout to modify"),
|
|
423
|
+
layoutAttributeName: z.string().describe("The name of the attribute that defines the embedded layout structure"),
|
|
424
|
+
widgetId: z.string().describe("The ID of the existing widget to remove from the embedded layout")
|
|
425
|
+
},
|
|
426
|
+
annotations: { title: "Remove Widget from Embedded Layout" }
|
|
427
|
+
}, async ({ pageUID, containerWidgetId, layoutAttributeName, widgetId }) => {
|
|
428
|
+
debugLogWithTag('EMBEDDED_LAYOUT_REMOVE', `Starting remove widget from embedded layout: ${widgetId} from container ${containerWidgetId} in page ${pageUID}`);
|
|
429
|
+
try {
|
|
430
|
+
const requestBody = {
|
|
431
|
+
pageUID,
|
|
432
|
+
containerWidgetId,
|
|
433
|
+
layoutAttributeName,
|
|
434
|
+
operation: {
|
|
435
|
+
type: "REMOVE",
|
|
436
|
+
widgetId
|
|
437
|
+
}
|
|
438
|
+
};
|
|
439
|
+
debugLogWithTag('EMBEDDED_LAYOUT_REMOVE', `Request body: ${JSON.stringify(requestBody, null, 2)}`);
|
|
440
|
+
const result = await client.makeApiRequest('json/page/embeddedWidgetLayout', 'PATCH', undefined, requestBody);
|
|
441
|
+
debugLogWithTag('EMBEDDED_LAYOUT_REMOVE', `Successfully removed widget ${widgetId} from embedded layout`);
|
|
442
|
+
return {
|
|
443
|
+
content: [{ type: "text", text: JSON.stringify(result, null, 2) }]
|
|
444
|
+
};
|
|
445
|
+
}
|
|
446
|
+
catch (error) {
|
|
447
|
+
debugLogWithTag('EMBEDDED_LAYOUT_REMOVE', `Error removing widget from embedded layout: ${error instanceof Error ? error.message : String(error)}`);
|
|
448
|
+
return {
|
|
449
|
+
content: [{ type: "text", text: `Error removing widget from embedded layout: ${error instanceof Error ? error.message : String(error)}` }]
|
|
450
|
+
};
|
|
451
|
+
}
|
|
452
|
+
});
|
|
453
|
+
server.registerTool("cplace_compact_page_layout", {
|
|
454
|
+
description: "Remove all empty rows from a page layout, effectively compacting the layout by keeping only rows that contain widgets. This operation automatically identifies and removes rows where all columns have no widgets while preserving the order and content of non-empty rows and maintaining all widget configurations and positions.",
|
|
455
|
+
inputSchema: {
|
|
456
|
+
pageUID: z.string().describe("The unique identifier (UID) of the page to compact the layout for")
|
|
457
|
+
},
|
|
458
|
+
annotations: { title: "Compact Page Layout" }
|
|
459
|
+
}, async ({ pageUID }) => {
|
|
460
|
+
debugLogWithTag('LAYOUT_MODIFY', `Starting compact layout operation for page ${pageUID}`);
|
|
461
|
+
try {
|
|
462
|
+
const requestBody = {
|
|
463
|
+
pageUID,
|
|
464
|
+
operation: {
|
|
465
|
+
type: "COMPACT"
|
|
466
|
+
}
|
|
467
|
+
};
|
|
468
|
+
debugLogWithTag('LAYOUT_MODIFY', `Request body: ${JSON.stringify(requestBody, null, 2)}`);
|
|
469
|
+
const result = await client.makeApiRequest('json/pageLayout', 'PATCH', undefined, requestBody);
|
|
470
|
+
debugLogWithTag('LAYOUT_MODIFY', `Successfully compacted layout for page ${pageUID}`);
|
|
471
|
+
return {
|
|
472
|
+
content: [{ type: "text", text: JSON.stringify(result, null, 2) }]
|
|
473
|
+
};
|
|
474
|
+
}
|
|
475
|
+
catch (error) {
|
|
476
|
+
debugLogWithTag('LAYOUT_MODIFY', `Error compacting layout: ${error instanceof Error ? error.message : String(error)}`);
|
|
477
|
+
return {
|
|
478
|
+
content: [{ type: "text", text: `Error compacting page layout: ${error instanceof Error ? error.message : String(error)}` }]
|
|
479
|
+
};
|
|
480
|
+
}
|
|
481
|
+
});
|
|
482
|
+
server.registerTool("cplace_add_row_to_page_layout", {
|
|
483
|
+
description: "Create a new row with specific column layout in a page layout.\n\nā ESSENTIAL FOR MULTI-COLUMN LAYOUTS ā\nThis is the ONLY way to create multi-column structures. Widget placement alone cannot create columns.\n\nCOMMON WORKFLOW:\n1. Use this tool to create desired column structure (e.g., [6,6] for side-by-side)\n2. Use cplace_add_widget_to_layout to place widgets in the columns\n3. Use cplace_compact_page_layout to remove any empty rows\n\nROW INSERTION BEHAVIOR:\n- rowIndex < existing rows: Inserts and shifts others down\n- rowIndex >= existing rows: Appends at end\n\nCOLUMN PROPORTIONS (must sum to 12):\n- [12]: Single full-width column\n- [6, 6]: Two equal columns (most common for side-by-side)\n- [4, 4, 4]: Three equal columns\n- [3, 9]: Sidebar + main content\n- [2, 8, 2]: Content with sidebars",
|
|
484
|
+
inputSchema: {
|
|
485
|
+
pageUID: z.string().describe("The unique identifier (UID) of the page to add the row to"),
|
|
486
|
+
rowIndex: z.number().min(0).describe("Row index where to insert the new row (0-based). If rowIndex >= current row count, adds at the end. Otherwise, inserts at position and shifts existing rows down."),
|
|
487
|
+
columnProportions: z.array(z.number().min(1)).min(1).describe("Array of column width proportions that must sum to 12 (Bootstrap grid system). Examples: [12] (single column), [6,6] (two equal columns), [4,4,4] (three equal columns), [3,9] (sidebar + main)")
|
|
488
|
+
},
|
|
489
|
+
annotations: { title: "Add Row to Page Layout" }
|
|
490
|
+
}, async ({ pageUID, rowIndex, columnProportions }) => {
|
|
491
|
+
debugLogWithTag('LAYOUT_MODIFY', `Starting add row operation: row ${rowIndex} with proportions ${JSON.stringify(columnProportions)} to page ${pageUID}`);
|
|
492
|
+
try {
|
|
493
|
+
const requestBody = {
|
|
494
|
+
pageUID,
|
|
495
|
+
operation: {
|
|
496
|
+
type: "ADD_ROW",
|
|
497
|
+
rowIndex,
|
|
498
|
+
columnProportions
|
|
499
|
+
}
|
|
500
|
+
};
|
|
501
|
+
debugLogWithTag('LAYOUT_MODIFY', `Request body: ${JSON.stringify(requestBody, null, 2)}`);
|
|
502
|
+
const result = await client.makeApiRequest('json/pageLayout', 'PATCH', undefined, requestBody);
|
|
503
|
+
debugLogWithTag('LAYOUT_MODIFY', `Successfully added row ${rowIndex} with ${columnProportions.length} columns to page ${pageUID}`);
|
|
504
|
+
return {
|
|
505
|
+
content: [{ type: "text", text: JSON.stringify(result, null, 2) }]
|
|
506
|
+
};
|
|
507
|
+
}
|
|
508
|
+
catch (error) {
|
|
509
|
+
debugLogWithTag('LAYOUT_MODIFY', `Error adding row: ${error instanceof Error ? error.message : String(error)}`);
|
|
510
|
+
return {
|
|
511
|
+
content: [{ type: "text", text: `Error adding row to page layout: ${error instanceof Error ? error.message : String(error)}` }]
|
|
512
|
+
};
|
|
513
|
+
}
|
|
514
|
+
});
|
|
515
|
+
}
|
|
516
|
+
//# sourceMappingURL=widgets.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"widgets.js","sourceRoot":"","sources":["../../src/tools/widgets.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"workspace.d.ts","sourceRoot":"","sources":["../../src/tools/workspace.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AAEpE,OAAO,EAAE,eAAe,EAAqB,MAAM,WAAW,CAAC;AAI/D,wBAAgB,sBAAsB,CAAC,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,eAAe,QAoJhF"}
|