@cplace/test-mcp-server 1.3.11 → 1.3.13

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.
Files changed (37) hide show
  1. package/dist/api.js +2 -2
  2. package/dist/api.js.map +1 -1
  3. package/dist/str-replace-utils.d.ts +10 -0
  4. package/dist/str-replace-utils.d.ts.map +1 -0
  5. package/dist/str-replace-utils.js +42 -0
  6. package/dist/str-replace-utils.js.map +1 -0
  7. package/dist/tools/change-listeners.d.ts +14 -0
  8. package/dist/tools/change-listeners.d.ts.map +1 -1
  9. package/dist/tools/change-listeners.js +64 -0
  10. package/dist/tools/change-listeners.js.map +1 -1
  11. package/dist/tools/layout-script.d.ts +36 -0
  12. package/dist/tools/layout-script.d.ts.map +1 -1
  13. package/dist/tools/layout-script.js +78 -0
  14. package/dist/tools/layout-script.js.map +1 -1
  15. package/dist/tools/pages.d.ts +12 -0
  16. package/dist/tools/pages.d.ts.map +1 -1
  17. package/dist/tools/pages.js +47 -0
  18. package/dist/tools/pages.js.map +1 -1
  19. package/dist/tools/richstring-widgets.d.ts +16 -8
  20. package/dist/tools/richstring-widgets.d.ts.map +1 -1
  21. package/dist/tools/richstring-widgets.js +141 -57
  22. package/dist/tools/richstring-widgets.js.map +1 -1
  23. package/dist/tools/workflow-scripts.d.ts +19 -0
  24. package/dist/tools/workflow-scripts.d.ts.map +1 -1
  25. package/dist/tools/workflow-scripts.js +88 -0
  26. package/dist/tools/workflow-scripts.js.map +1 -1
  27. package/dist/widget-specifications/DOCUMENTATION-STATUS.md +14 -11
  28. package/dist/widget-specifications/WIDGET-TAGGING-SCHEME.md +1 -0
  29. package/dist/widget-specifications/_research_from_ga_products/cf-cplace-lowCodeWidgets-lowCodeText/research.md +176 -0
  30. package/dist/widget-specifications/_research_from_ga_products/widget-definition-mapping.md +6 -5
  31. package/dist/widget-specifications/_research_from_ga_products/widget-research-generation/widgets.txt +1 -0
  32. package/dist/widget-specifications/cf.cplace.lowCodeWidgets.lowCodeButton/_overview.md +12 -0
  33. package/dist/widget-specifications/cf.cplace.lowCodeWidgets.lowCodeText/_catalog-data.json +12 -0
  34. package/dist/widget-specifications/cf.cplace.lowCodeWidgets.lowCodeText/_meta.json +11 -0
  35. package/dist/widget-specifications/cf.cplace.lowCodeWidgets.lowCodeText/_overview.md +94 -0
  36. package/dist/widget-specifications/cf.cplace.lowCodeWidgets.lowCodeText/_summary.md +1 -0
  37. package/package.json +1 -1
@@ -3,19 +3,23 @@ import { z } from "zod";
3
3
  import { CplaceApiClient } from '../api.js';
4
4
  export declare const RICHSTRING_WIDGET_TOOL_DEFINITIONS: {
5
5
  readonly cplace_richstring_extract_widgets: {
6
- readonly description: "Extract all embedded widgets from richstring HTML content. Parses the content and returns structured information about each widget including ID, type, properties, and position. Use this to discover widget IDs before updating or deleting them.";
6
+ readonly description: "Extract all embedded widgets from a page's richstring attribute. Reads the page internally and returns structured information about each widget including ID, type, properties, and position. Use this to discover widget IDs before updating or deleting them.";
7
7
  readonly inputSchema: {
8
- readonly content: z.ZodString;
8
+ readonly pageUID: z.ZodString;
9
+ readonly attributeName: z.ZodOptional<z.ZodString>;
10
+ readonly isWikiContent: z.ZodOptional<z.ZodBoolean>;
9
11
  };
10
12
  readonly annotations: {
11
13
  readonly title: "Extract Embedded Widgets from RichString";
12
14
  };
13
15
  };
14
16
  readonly cplace_richstring_insert_widget: {
15
- readonly description: "Insert a new embedded widget into richstring content at a specified position or at the end. Returns the modified content which must be saved back to the page. Supports position validation with expectedBefore/expectedAfter parameters for safe concurrent updates.";
17
+ readonly description: "Insert a new embedded widget into a page's richstring attribute at a specified position or at the end. Reads the page, inserts the widget via the backend API, and writes the modified content back all in one call. Returns the inserted widget ID and the full widget inventory. The page content never appears in the LLM context.\n\nIMPORTANT: For low-code widgets that execute cplaceJS scripts (e.g., lowCodeText, lowCodeButton, scriptingHighcharts, scriptingLineChart, dynamicCodeBlockWidget), always test your script first using cplace_execute_script to verify it works correctly before embedding the widget.";
16
18
  readonly inputSchema: {
19
+ readonly pageUID: z.ZodString;
20
+ readonly attributeName: z.ZodOptional<z.ZodString>;
21
+ readonly isWikiContent: z.ZodOptional<z.ZodBoolean>;
17
22
  readonly widgetType: z.ZodString;
18
- readonly content: z.ZodOptional<z.ZodString>;
19
23
  readonly position: z.ZodOptional<z.ZodNumber>;
20
24
  readonly expectedBefore: z.ZodOptional<z.ZodString>;
21
25
  readonly expectedAfter: z.ZodOptional<z.ZodString>;
@@ -26,10 +30,12 @@ export declare const RICHSTRING_WIDGET_TOOL_DEFINITIONS: {
26
30
  };
27
31
  };
28
32
  readonly cplace_richstring_update_widget: {
29
- readonly description: "Update an existing embedded widget's properties by its ID. Properties are completely replaced (not merged). Returns the modified content which must be saved back to the page. The widget's position and type remain unchanged.";
33
+ readonly description: "Update an existing embedded widget's properties in a page's richstring attribute. Reads the page, updates the widget via the backend API, and writes back — all in one call. Properties are completely replaced (not merged). Returns the updated widget ID and the full widget inventory.";
30
34
  readonly inputSchema: {
35
+ readonly pageUID: z.ZodString;
36
+ readonly attributeName: z.ZodOptional<z.ZodString>;
37
+ readonly isWikiContent: z.ZodOptional<z.ZodBoolean>;
31
38
  readonly widgetId: z.ZodString;
32
- readonly content: z.ZodString;
33
39
  readonly properties: z.ZodRecord<z.ZodString, z.ZodAny>;
34
40
  };
35
41
  readonly annotations: {
@@ -37,10 +43,12 @@ export declare const RICHSTRING_WIDGET_TOOL_DEFINITIONS: {
37
43
  };
38
44
  };
39
45
  readonly cplace_richstring_delete_widget: {
40
- readonly description: "Remove an embedded widget from richstring content by its ID. Returns the modified content which must be saved back to the page. The surrounding HTML structure is preserved. Consider extracting widget details before deletion if needed for backup.";
46
+ readonly description: "Remove an embedded widget from a page's richstring attribute. Reads the page, deletes the widget via the backend API, and writes back all in one call. Returns the deleted widget ID and the remaining widget inventory.";
41
47
  readonly inputSchema: {
48
+ readonly pageUID: z.ZodString;
49
+ readonly attributeName: z.ZodOptional<z.ZodString>;
50
+ readonly isWikiContent: z.ZodOptional<z.ZodBoolean>;
42
51
  readonly widgetId: z.ZodString;
43
- readonly content: z.ZodString;
44
52
  };
45
53
  readonly annotations: {
46
54
  readonly title: "Delete Embedded Widget from RichString";
@@ -1 +1 @@
1
- {"version":3,"file":"richstring-widgets.d.ts","sourceRoot":"","sources":["../../src/tools/richstring-widgets.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AACpE,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAE,eAAe,EAAE,MAAM,WAAW,CAAC;AA4B5C,eAAO,MAAM,kCAAkC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAiDrC,CAAC;AAEX,wBAAgB,6BAA6B,CAAC,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,eAAe,QAkLvF"}
1
+ {"version":3,"file":"richstring-widgets.d.ts","sourceRoot":"","sources":["../../src/tools/richstring-widgets.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AACpE,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAE,eAAe,EAAE,MAAM,WAAW,CAAC;AA4B5C,eAAO,MAAM,kCAAkC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAyDrC,CAAC;AAuGX,wBAAgB,6BAA6B,CAAC,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,eAAe,QAkMvF"}
@@ -6,20 +6,24 @@ const TOOL_RICHSTRING_UPDATE_WIDGET = 'cplace_richstring_update_widget';
6
6
  const TOOL_RICHSTRING_DELETE_WIDGET = 'cplace_richstring_delete_widget';
7
7
  export const RICHSTRING_WIDGET_TOOL_DEFINITIONS = {
8
8
  [TOOL_RICHSTRING_EXTRACT_WIDGETS]: {
9
- description: "Extract all embedded widgets from richstring HTML content. Parses the content and returns structured information about each widget including ID, type, properties, and position. Use this to discover widget IDs before updating or deleting them.",
9
+ description: "Extract all embedded widgets from a page's richstring attribute. Reads the page internally and returns structured information about each widget including ID, type, properties, and position. Use this to discover widget IDs before updating or deleting them.",
10
10
  inputSchema: {
11
- content: z.string().describe("The richstring HTML content to parse (may include <embeddedwidget> tags)")
11
+ pageUID: z.string().describe("The UID of the page containing the richstring attribute (e.g., 'hy46f7txqo4kgdh0yuol1fxvx')"),
12
+ attributeName: z.string().optional().describe("The internal name of the richstring attribute to read (e.g., 'my.app.description'). Required unless isWikiContent is true."),
13
+ isWikiContent: z.boolean().optional().describe("Set to true to operate on the page's builtin wiki content instead of a custom attribute. When true, attributeName is not needed.")
12
14
  },
13
15
  annotations: { title: "Extract Embedded Widgets from RichString" }
14
16
  },
15
17
  [TOOL_RICHSTRING_INSERT_WIDGET]: {
16
- description: "Insert a new embedded widget into richstring content at a specified position or at the end. Returns the modified content which must be saved back to the page. Supports position validation with expectedBefore/expectedAfter parameters for safe concurrent updates.",
18
+ description: "Insert a new embedded widget into a page's richstring attribute at a specified position or at the end. Reads the page, inserts the widget via the backend API, and writes the modified content back all in one call. Returns the inserted widget ID and the full widget inventory. The page content never appears in the LLM context.\n\nIMPORTANT: For low-code widgets that execute cplaceJS scripts (e.g., lowCodeText, lowCodeButton, scriptingHighcharts, scriptingLineChart, dynamicCodeBlockWidget), always test your script first using cplace_execute_script to verify it works correctly before embedding the widget.",
17
19
  inputSchema: {
18
- widgetType: z.string().describe("Widget type to insert (e.g., 'cf.platform.wiki', 'cf.platform.embeddedSearchAsTable'). Use cplace_get_widget_definition to verify it supports INSIDE_RICHSTRING embedding."),
19
- content: z.string().optional().describe("Current richstring content to insert into (default: empty string)"),
20
+ pageUID: z.string().describe("The UID of the page containing the richstring attribute"),
21
+ attributeName: z.string().optional().describe("The internal name of the richstring attribute to modify. Required unless isWikiContent is true."),
22
+ isWikiContent: z.boolean().optional().describe("Set to true to operate on the page's builtin wiki content instead of a custom attribute. When true, attributeName is not needed."),
23
+ widgetType: z.string().describe("Widget type to insert (e.g., 'cf.cplace.lowCodeWidgets.lowCodeText'). Use cplace_get_widget_definition to verify it supports INSIDE_RICHSTRING embedding."),
20
24
  position: z.number().optional().describe("Zero-based character position to insert at (default: end of content). Must be between 0 and content length."),
21
- expectedBefore: z.string().optional().describe("Optional: Expected content immediately before insertion position for validation. Use for safe concurrent updates."),
22
- expectedAfter: z.string().optional().describe("Optional: Expected content immediately after insertion position for validation. Use for safe concurrent updates."),
25
+ expectedBefore: z.string().optional().describe("Optional: Expected content immediately before insertion position for validation."),
26
+ expectedAfter: z.string().optional().describe("Optional: Expected content immediately after insertion position for validation."),
23
27
  properties: z.record(z.any()).optional().describe(`Optional: Widget configuration properties as key-value pairs. Values should be arrays. Examples:
24
28
  - String array: {"title": ["My Widget"]}
25
29
  - Number: {"height": [800]}
@@ -31,10 +35,12 @@ Use cplace_get_widget_definition to understand required properties and data type
31
35
  annotations: { title: "Insert Embedded Widget into RichString" }
32
36
  },
33
37
  [TOOL_RICHSTRING_UPDATE_WIDGET]: {
34
- description: "Update an existing embedded widget's properties by its ID. Properties are completely replaced (not merged). Returns the modified content which must be saved back to the page. The widget's position and type remain unchanged.",
38
+ description: "Update an existing embedded widget's properties in a page's richstring attribute. Reads the page, updates the widget via the backend API, and writes back — all in one call. Properties are completely replaced (not merged). Returns the updated widget ID and the full widget inventory.",
35
39
  inputSchema: {
40
+ pageUID: z.string().describe("The UID of the page containing the richstring attribute"),
41
+ attributeName: z.string().optional().describe("The internal name of the richstring attribute to modify. Required unless isWikiContent is true."),
42
+ isWikiContent: z.boolean().optional().describe("Set to true to operate on the page's builtin wiki content instead of a custom attribute. When true, attributeName is not needed."),
36
43
  widgetId: z.string().describe("The unique ID of the widget to update (obtain via cplace_richstring_extract_widgets)"),
37
- content: z.string().describe("The complete richstring content containing the widget to update"),
38
44
  properties: z.record(z.any()).describe(`New widget properties to set (completely replaces existing properties). Values should be arrays. Examples:
39
45
  - String array: {"title": ["Updated Widget"]}
40
46
  - Number: {"height": [900]}
@@ -46,18 +52,73 @@ Use cplace_get_widget_definition to understand required properties and data type
46
52
  annotations: { title: "Update Embedded Widget in RichString" }
47
53
  },
48
54
  [TOOL_RICHSTRING_DELETE_WIDGET]: {
49
- description: "Remove an embedded widget from richstring content by its ID. Returns the modified content which must be saved back to the page. The surrounding HTML structure is preserved. Consider extracting widget details before deletion if needed for backup.",
55
+ description: "Remove an embedded widget from a page's richstring attribute. Reads the page, deletes the widget via the backend API, and writes back all in one call. Returns the deleted widget ID and the remaining widget inventory.",
50
56
  inputSchema: {
51
- widgetId: z.string().describe("The unique ID of the widget to delete (obtain via cplace_richstring_extract_widgets)"),
52
- content: z.string().describe("The complete richstring content containing the widget to delete")
57
+ pageUID: z.string().describe("The UID of the page containing the richstring attribute"),
58
+ attributeName: z.string().optional().describe("The internal name of the richstring attribute to modify. Required unless isWikiContent is true."),
59
+ isWikiContent: z.boolean().optional().describe("Set to true to operate on the page's builtin wiki content instead of a custom attribute. When true, attributeName is not needed."),
60
+ widgetId: z.string().describe("The unique ID of the widget to delete (obtain via cplace_richstring_extract_widgets)")
53
61
  },
54
62
  annotations: { title: "Delete Embedded Widget from RichString" }
55
63
  }
56
64
  };
65
+ function validateAttributeTarget(attributeName, isWikiContent) {
66
+ if (!isWikiContent && !attributeName) {
67
+ return "Either 'attributeName' must be provided or 'isWikiContent' must be true.";
68
+ }
69
+ return null;
70
+ }
71
+ async function readAttributeFromPage(client, pageUID, attributeName, isWikiContent) {
72
+ const page = await client.makeApiRequest('json/page', 'GET', { pageUID });
73
+ if (isWikiContent) {
74
+ const content = page.wikiMarkup;
75
+ if (content === undefined || content === null) {
76
+ throw new Error(`Page ${pageUID} has no wiki content or it is empty.`);
77
+ }
78
+ if (typeof content !== 'string') {
79
+ throw new Error(`Wiki content on page ${pageUID} is not a string (got ${typeof content}).`);
80
+ }
81
+ return content;
82
+ }
83
+ const content = page.attributes?.[attributeName];
84
+ if (content === undefined || content === null) {
85
+ throw new Error(`Page ${pageUID} has no attribute '${attributeName}' or it is empty.`);
86
+ }
87
+ if (typeof content !== 'string') {
88
+ throw new Error(`Attribute '${attributeName}' on page ${pageUID} is not a string (got ${typeof content}).`);
89
+ }
90
+ return content;
91
+ }
92
+ async function writeAttributeToPage(client, pageUID, attributeName, isWikiContent, content) {
93
+ if (isWikiContent) {
94
+ await client.makeApiRequest('json/page', 'PATCH', undefined, {
95
+ pageUID,
96
+ content
97
+ });
98
+ }
99
+ else {
100
+ await client.makeApiRequest('json/page', 'PATCH', undefined, {
101
+ pageUID,
102
+ attributes: { [attributeName]: content }
103
+ });
104
+ }
105
+ }
106
+ async function withPageAttribute(client, pageUID, attributeName, isWikiContent, transformFn) {
107
+ const content = await readAttributeFromPage(client, pageUID, attributeName, isWikiContent);
108
+ const { result, modifiedContent } = await transformFn(content);
109
+ await writeAttributeToPage(client, pageUID, attributeName, isWikiContent, modifiedContent);
110
+ const inventory = await client.makeApiRequest('json/richstring-embedded-widget/extract', 'GET', { content: modifiedContent });
111
+ return { result, inventory };
112
+ }
57
113
  export function registerRichStringWidgetTools(server, client) {
58
- server.registerTool(TOOL_RICHSTRING_EXTRACT_WIDGETS, RICHSTRING_WIDGET_TOOL_DEFINITIONS[TOOL_RICHSTRING_EXTRACT_WIDGETS], async ({ content }) => {
59
- debugLogWithTag('RICHSTRING_WIDGETS', `Starting widget extraction from content (${content.length} chars)`);
114
+ server.registerTool(TOOL_RICHSTRING_EXTRACT_WIDGETS, RICHSTRING_WIDGET_TOOL_DEFINITIONS[TOOL_RICHSTRING_EXTRACT_WIDGETS], async ({ pageUID, attributeName, isWikiContent }) => {
115
+ const validationError = validateAttributeTarget(attributeName, isWikiContent);
116
+ if (validationError) {
117
+ return { content: [{ type: "text", text: validationError }], isError: true };
118
+ }
119
+ debugLogWithTag('RICHSTRING_WIDGETS', `Extracting widgets from page ${pageUID}, attribute ${attributeName ?? 'wiki content'}`);
60
120
  try {
121
+ const content = await readAttributeFromPage(client, pageUID, attributeName, isWikiContent);
61
122
  const result = await client.makeApiRequest('json/richstring-embedded-widget/extract', 'GET', { content });
62
123
  debugLogWithTag('RICHSTRING_WIDGETS', `Successfully extracted ${result.totalCount || 0} widgets`);
63
124
  return {
@@ -75,35 +136,40 @@ export function registerRichStringWidgetTools(server, client) {
75
136
  };
76
137
  }
77
138
  });
78
- server.registerTool(TOOL_RICHSTRING_INSERT_WIDGET, RICHSTRING_WIDGET_TOOL_DEFINITIONS[TOOL_RICHSTRING_INSERT_WIDGET], async ({ widgetType, content, position, expectedBefore, expectedAfter, properties }) => {
79
- debugLogWithTag('RICHSTRING_WIDGETS', `Starting widget insertion: ${widgetType}`);
139
+ server.registerTool(TOOL_RICHSTRING_INSERT_WIDGET, RICHSTRING_WIDGET_TOOL_DEFINITIONS[TOOL_RICHSTRING_INSERT_WIDGET], async ({ pageUID, attributeName, isWikiContent, widgetType, position, expectedBefore, expectedAfter, properties }) => {
140
+ const validationError = validateAttributeTarget(attributeName, isWikiContent);
141
+ if (validationError) {
142
+ return { content: [{ type: "text", text: validationError }], isError: true };
143
+ }
144
+ debugLogWithTag('RICHSTRING_WIDGETS', `Inserting widget ${widgetType} into page ${pageUID}, attribute ${attributeName ?? 'wiki content'}`);
80
145
  try {
81
- const requestBody = {
82
- widgetType
146
+ const { result, inventory } = await withPageAttribute(client, pageUID, attributeName, isWikiContent, async (content) => {
147
+ const requestBody = { widgetType, content };
148
+ if (position !== undefined)
149
+ requestBody.position = position;
150
+ if (expectedBefore !== undefined)
151
+ requestBody.expectedBefore = expectedBefore;
152
+ if (expectedAfter !== undefined)
153
+ requestBody.expectedAfter = expectedAfter;
154
+ if (properties && Object.keys(properties).length > 0)
155
+ requestBody.properties = properties;
156
+ const apiResult = await client.makeApiRequest('json/richstring-embedded-widget/insert', 'POST', undefined, requestBody);
157
+ return {
158
+ result: {
159
+ insertedWidgetId: apiResult.insertedWidgetId,
160
+ insertedAtPosition: apiResult.insertedAtPosition
161
+ },
162
+ modifiedContent: apiResult.modifiedContent
163
+ };
164
+ });
165
+ const response = {
166
+ ...result,
167
+ embeddedWidgets: inventory.embeddedWidgets,
168
+ totalWidgetCount: inventory.totalCount
83
169
  };
84
- if (content !== undefined) {
85
- requestBody.content = content;
86
- debugLogWithTag('RICHSTRING_WIDGETS', `Including content (${content.length} chars)`);
87
- }
88
- if (position !== undefined) {
89
- requestBody.position = position;
90
- debugLogWithTag('RICHSTRING_WIDGETS', `Inserting at position: ${position}`);
91
- }
92
- if (expectedBefore !== undefined) {
93
- requestBody.expectedBefore = expectedBefore;
94
- }
95
- if (expectedAfter !== undefined) {
96
- requestBody.expectedAfter = expectedAfter;
97
- }
98
- if (properties && Object.keys(properties).length > 0) {
99
- requestBody.properties = properties;
100
- debugLogWithTag('RICHSTRING_WIDGETS', `Including properties: ${JSON.stringify(Object.keys(properties))}`);
101
- }
102
- debugLogWithTag('RICHSTRING_WIDGETS', `Request body: ${JSON.stringify(requestBody, null, 2)}`);
103
- const result = await client.makeApiRequest('json/richstring-embedded-widget/insert', 'POST', undefined, requestBody);
104
170
  debugLogWithTag('RICHSTRING_WIDGETS', `Successfully inserted widget: ${result.insertedWidgetId}`);
105
171
  return {
106
- content: [{ type: "text", text: JSON.stringify(result, null, 2) }]
172
+ content: [{ type: "text", text: JSON.stringify(response, null, 2) }]
107
173
  };
108
174
  }
109
175
  catch (error) {
@@ -117,20 +183,28 @@ export function registerRichStringWidgetTools(server, client) {
117
183
  };
118
184
  }
119
185
  });
120
- server.registerTool(TOOL_RICHSTRING_UPDATE_WIDGET, RICHSTRING_WIDGET_TOOL_DEFINITIONS[TOOL_RICHSTRING_UPDATE_WIDGET], async ({ widgetId, content, properties }) => {
121
- debugLogWithTag('RICHSTRING_WIDGETS', `Starting widget update: ${widgetId}`);
186
+ server.registerTool(TOOL_RICHSTRING_UPDATE_WIDGET, RICHSTRING_WIDGET_TOOL_DEFINITIONS[TOOL_RICHSTRING_UPDATE_WIDGET], async ({ pageUID, attributeName, isWikiContent, widgetId, properties }) => {
187
+ const validationError = validateAttributeTarget(attributeName, isWikiContent);
188
+ if (validationError) {
189
+ return { content: [{ type: "text", text: validationError }], isError: true };
190
+ }
191
+ debugLogWithTag('RICHSTRING_WIDGETS', `Updating widget ${widgetId} in page ${pageUID}, attribute ${attributeName ?? 'wiki content'}`);
122
192
  try {
123
- const requestBody = {
124
- widgetId,
125
- content,
126
- properties
193
+ const { result, inventory } = await withPageAttribute(client, pageUID, attributeName, isWikiContent, async (content) => {
194
+ const apiResult = await client.makeApiRequest('json/richstring-embedded-widget/update', 'PATCH', undefined, { widgetId, content, properties });
195
+ return {
196
+ result: { updatedWidgetId: widgetId },
197
+ modifiedContent: apiResult.modifiedContent
198
+ };
199
+ });
200
+ const response = {
201
+ ...result,
202
+ embeddedWidgets: inventory.embeddedWidgets,
203
+ totalWidgetCount: inventory.totalCount
127
204
  };
128
- debugLogWithTag('RICHSTRING_WIDGETS', `Updating widget with properties: ${JSON.stringify(Object.keys(properties))}`);
129
- debugLogWithTag('RICHSTRING_WIDGETS', `Request body: ${JSON.stringify(requestBody, null, 2)}`);
130
- const result = await client.makeApiRequest('json/richstring-embedded-widget/update', 'PATCH', undefined, requestBody);
131
205
  debugLogWithTag('RICHSTRING_WIDGETS', `Successfully updated widget: ${widgetId}`);
132
206
  return {
133
- content: [{ type: "text", text: JSON.stringify(result, null, 2) }]
207
+ content: [{ type: "text", text: JSON.stringify(response, null, 2) }]
134
208
  };
135
209
  }
136
210
  catch (error) {
@@ -144,18 +218,28 @@ export function registerRichStringWidgetTools(server, client) {
144
218
  };
145
219
  }
146
220
  });
147
- server.registerTool(TOOL_RICHSTRING_DELETE_WIDGET, RICHSTRING_WIDGET_TOOL_DEFINITIONS[TOOL_RICHSTRING_DELETE_WIDGET], async ({ widgetId, content }) => {
148
- debugLogWithTag('RICHSTRING_WIDGETS', `Starting widget deletion: ${widgetId}`);
221
+ server.registerTool(TOOL_RICHSTRING_DELETE_WIDGET, RICHSTRING_WIDGET_TOOL_DEFINITIONS[TOOL_RICHSTRING_DELETE_WIDGET], async ({ pageUID, attributeName, isWikiContent, widgetId }) => {
222
+ const validationError = validateAttributeTarget(attributeName, isWikiContent);
223
+ if (validationError) {
224
+ return { content: [{ type: "text", text: validationError }], isError: true };
225
+ }
226
+ debugLogWithTag('RICHSTRING_WIDGETS', `Deleting widget ${widgetId} from page ${pageUID}, attribute ${attributeName ?? 'wiki content'}`);
149
227
  try {
150
- const requestBody = {
151
- widgetId,
152
- content
228
+ const { result, inventory } = await withPageAttribute(client, pageUID, attributeName, isWikiContent, async (content) => {
229
+ const apiResult = await client.makeApiRequest('json/richstring-embedded-widget/delete', 'DELETE', undefined, { widgetId, content });
230
+ return {
231
+ result: { deletedWidgetId: widgetId },
232
+ modifiedContent: apiResult.modifiedContent
233
+ };
234
+ });
235
+ const response = {
236
+ ...result,
237
+ embeddedWidgets: inventory.embeddedWidgets,
238
+ totalWidgetCount: inventory.totalCount
153
239
  };
154
- debugLogWithTag('RICHSTRING_WIDGETS', `Request body: ${JSON.stringify(requestBody, null, 2)}`);
155
- const result = await client.makeApiRequest('json/richstring-embedded-widget/delete', 'DELETE', undefined, requestBody);
156
240
  debugLogWithTag('RICHSTRING_WIDGETS', `Successfully deleted widget: ${widgetId}`);
157
241
  return {
158
- content: [{ type: "text", text: JSON.stringify(result, null, 2) }]
242
+ content: [{ type: "text", text: JSON.stringify(response, null, 2) }]
159
243
  };
160
244
  }
161
245
  catch (error) {
@@ -1 +1 @@
1
- {"version":3,"file":"richstring-widgets.js","sourceRoot":"","sources":["../../src/tools/richstring-widgets.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"richstring-widgets.js","sourceRoot":"","sources":["../../src/tools/richstring-widgets.ts"],"names":[],"mappings":"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"}
@@ -35,6 +35,25 @@ export declare const WORKFLOW_SCRIPT_TOOL_DEFINITIONS: {
35
35
  readonly title: "Manage Workflow Script";
36
36
  };
37
37
  };
38
+ readonly cplace_edit_workflow_script: {
39
+ readonly description: "Edit a workflow script using str_replace — find an exact text match and replace it. Reads the current script, applies the replacement, and writes back. Use this instead of cplace_manage_workflow_script when making small changes to avoid reproducing the entire script.";
40
+ readonly inputSchema: {
41
+ old_str: z.ZodString;
42
+ new_str: z.ZodString;
43
+ replace_all: z.ZodDefault<z.ZodOptional<z.ZodBoolean>>;
44
+ type: z.ZodEnum<["state", "transition"]>;
45
+ stateName: z.ZodOptional<z.ZodString>;
46
+ previousState: z.ZodOptional<z.ZodString>;
47
+ nextState: z.ZodOptional<z.ZodString>;
48
+ scriptType: z.ZodOptional<z.ZodEnum<["action", "condition", "confirmationCondition"]>>;
49
+ workspaceId: z.ZodString;
50
+ typeInternalName: z.ZodString;
51
+ attributeName: z.ZodString;
52
+ };
53
+ readonly annotations: {
54
+ readonly title: "Edit Workflow Script";
55
+ };
56
+ };
38
57
  };
39
58
  export declare function registerWorkflowScriptTools(server: McpServer, client: CplaceApiClient): void;
40
59
  //# sourceMappingURL=workflow-scripts.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"workflow-scripts.d.ts","sourceRoot":"","sources":["../../src/tools/workflow-scripts.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AACpE,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAE,eAAe,EAAE,MAAM,WAAW,CAAC;AAoD5C,eAAO,MAAM,gCAAgC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAWnC,CAAC;AAMX,wBAAgB,2BAA2B,CAAC,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,eAAe,QAmLrF"}
1
+ {"version":3,"file":"workflow-scripts.d.ts","sourceRoot":"","sources":["../../src/tools/workflow-scripts.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AACpE,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAE,eAAe,EAAE,MAAM,WAAW,CAAC;AA6D5C,eAAO,MAAM,gCAAgC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAgBnC,CAAC;AAMX,wBAAgB,2BAA2B,CAAC,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,eAAe,QA8QrF"}
@@ -1,5 +1,6 @@
1
1
  import { z } from "zod";
2
2
  import { debugLogWithTag } from "../logger.js";
3
+ import { applyStrReplace } from '../str-replace-utils.js';
3
4
  const workflowScriptBaseSchema = {
4
5
  workspaceId: z.string().describe("UID of the workspace containing the type (e.g., 'workspace/abc123')"),
5
6
  typeInternalName: z.string().describe("Internal name of the type definition (e.g., 'cf.example.Task')"),
@@ -19,8 +20,15 @@ const manageWorkflowScriptSchema = {
19
20
  script: z.string().optional().nullable().describe("⚠️ Script content in cplacejs. Review cplace Low-Code documentation before writing scripts. " +
20
21
  "Set to null or empty string to delete the script.")
21
22
  };
23
+ const editWorkflowScriptSchema = {
24
+ ...getWorkflowScriptSchema,
25
+ old_str: z.string().describe("The exact text to find in the workflow script (must match exactly, including whitespace and line breaks)"),
26
+ new_str: z.string().describe("The replacement text. Use empty string to delete the matched text."),
27
+ replace_all: z.boolean().optional().default(false).describe("If true, replace all occurrences of old_str. If false (default), fails when old_str matches more than once.")
28
+ };
22
29
  const TOOL_GET_WORKFLOW_SCRIPT = 'cplace_get_workflow_script';
23
30
  const TOOL_MANAGE_WORKFLOW_SCRIPT = 'cplace_manage_workflow_script';
31
+ const TOOL_EDIT_WORKFLOW_SCRIPT = 'cplace_edit_workflow_script';
24
32
  export const WORKFLOW_SCRIPT_TOOL_DEFINITIONS = {
25
33
  [TOOL_GET_WORKFLOW_SCRIPT]: {
26
34
  description: "Retrieves workflow script content (state entry action or transition scripts). Supports action scripts (executed when entering state or after transition), condition scripts (control button visibility), and confirmation condition scripts (control confirmation dialog).",
@@ -31,6 +39,11 @@ export const WORKFLOW_SCRIPT_TOOL_DEFINITIONS = {
31
39
  description: "Creates, updates, or deletes workflow scripts (state or transition). Provide non-empty script to create/update. Provide null or empty string to delete the script. Scripts are written in cplacejs and have access to page context.",
32
40
  inputSchema: manageWorkflowScriptSchema,
33
41
  annotations: { title: "Manage Workflow Script" }
42
+ },
43
+ [TOOL_EDIT_WORKFLOW_SCRIPT]: {
44
+ description: "Edit a workflow script using str_replace — find an exact text match and replace it. Reads the current script, applies the replacement, and writes back. Use this instead of cplace_manage_workflow_script when making small changes to avoid reproducing the entire script.",
45
+ inputSchema: editWorkflowScriptSchema,
46
+ annotations: { title: "Edit Workflow Script" }
34
47
  }
35
48
  };
36
49
  export function registerWorkflowScriptTools(server, client) {
@@ -182,5 +195,80 @@ export function registerWorkflowScriptTools(server, client) {
182
195
  }
183
196
  }
184
197
  });
198
+ server.registerTool(TOOL_EDIT_WORKFLOW_SCRIPT, WORKFLOW_SCRIPT_TOOL_DEFINITIONS[TOOL_EDIT_WORKFLOW_SCRIPT], async (params) => {
199
+ if (params.type === "state") {
200
+ if (!params.stateName) {
201
+ return {
202
+ content: [{ type: "text", text: "Error: stateName is required when type='state'" }],
203
+ isError: true
204
+ };
205
+ }
206
+ }
207
+ else if (params.type === "transition") {
208
+ if (!params.scriptType) {
209
+ return {
210
+ content: [{ type: "text", text: "Error: scriptType is required when type='transition'" }],
211
+ isError: true
212
+ };
213
+ }
214
+ if (!params.previousState || !params.nextState) {
215
+ return {
216
+ content: [{ type: "text", text: "Error: previousState and nextState are required when type='transition'" }],
217
+ isError: true
218
+ };
219
+ }
220
+ }
221
+ const scriptLabel = params.type === "state"
222
+ ? `state '${params.stateName}'`
223
+ : `transition '${params.previousState}' -> '${params.nextState}'`;
224
+ debugLogWithTag('EDIT_WORKFLOW_SCRIPT', `Editing script for ${scriptLabel} on ${params.typeInternalName}.${params.attributeName}`);
225
+ try {
226
+ const endpoint = params.type === "state"
227
+ ? 'json/workflow-state-script'
228
+ : 'json/workflow-transition-script';
229
+ const getParams = {
230
+ workspaceId: params.workspaceId,
231
+ typeInternalName: params.typeInternalName,
232
+ attributeName: params.attributeName
233
+ };
234
+ if (params.type === "state") {
235
+ getParams.stateName = params.stateName;
236
+ getParams.scriptType = params.scriptType || "action";
237
+ }
238
+ else {
239
+ getParams.previousState = params.previousState;
240
+ getParams.nextState = params.nextState;
241
+ getParams.scriptType = params.scriptType;
242
+ }
243
+ const currentData = await client.makeApiRequest(endpoint, 'GET', getParams);
244
+ const currentScript = currentData.script;
245
+ if (currentScript === undefined || currentScript === null || currentScript === '') {
246
+ return {
247
+ content: [{ type: "text", text: `Error: No script found for ${scriptLabel}. Use cplace_manage_workflow_script to create a new script.` }],
248
+ isError: true
249
+ };
250
+ }
251
+ const result = applyStrReplace(currentScript, params.old_str, params.new_str, params.replace_all ?? false);
252
+ if (!result.success) {
253
+ return {
254
+ content: [{ type: "text", text: `Error: ${result.error}` }],
255
+ isError: true
256
+ };
257
+ }
258
+ const writeBody = { ...getParams, script: result.newContent };
259
+ await client.makeApiRequest(endpoint, 'PATCH', undefined, writeBody);
260
+ debugLogWithTag('EDIT_WORKFLOW_SCRIPT', `Successfully edited script for ${scriptLabel} (${result.replacementCount} replacement(s))`);
261
+ return {
262
+ content: [{ type: "text", text: `Successfully edited workflow script for ${scriptLabel}. Replaced ${result.replacementCount} occurrence(s).` }]
263
+ };
264
+ }
265
+ catch (error) {
266
+ debugLogWithTag('EDIT_WORKFLOW_SCRIPT', `Error: ${error instanceof Error ? error.message : String(error)}`);
267
+ return {
268
+ content: [{ type: "text", text: `Error editing workflow script: ${error instanceof Error ? error.message : String(error)}` }],
269
+ isError: true
270
+ };
271
+ }
272
+ });
185
273
  }
186
274
  //# sourceMappingURL=workflow-scripts.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"workflow-scripts.js","sourceRoot":"","sources":["../../src/tools/workflow-scripts.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"workflow-scripts.js","sourceRoot":"","sources":["../../src/tools/workflow-scripts.ts"],"names":[],"mappings":"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"}