@cplace/test-mcp-server 1.3.12 → 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.
package/dist/api.js CHANGED
@@ -39,7 +39,7 @@ export class CplaceApiClient {
39
39
  response = await axios.patch(url, data, { headers });
40
40
  }
41
41
  else if (method === 'DELETE') {
42
- response = await axios.delete(url, { headers, params });
42
+ response = await axios.delete(url, { headers, params, data });
43
43
  }
44
44
  else {
45
45
  throw new Error(`Unsupported HTTP method: ${method}`);
@@ -115,7 +115,7 @@ export class CplaceApiClient {
115
115
  response = await axios.patch(url, data, { headers });
116
116
  }
117
117
  else if (method === 'DELETE') {
118
- response = await axios.delete(url, { headers, params });
118
+ response = await axios.delete(url, { headers, params, data });
119
119
  }
120
120
  else {
121
121
  throw new Error(`Unsupported HTTP method: ${method}`);
package/dist/api.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"api.js","sourceRoot":"","sources":["../src/api.ts"],"names":[],"mappings":"AAAA,OAAO,KAAwB,MAAM,OAAO,CAAC;AAE7C,OAAO,EAAE,eAAe,EAAE,MAAM,aAAa,CAAC;AA2M9C,MAAM,OAAO,eAAe;IAClB,MAAM,CAAe;IAE7B,YAAY,MAAoB;QAC9B,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;IACvB,CAAC;IAkBD,KAAK,CAAC,cAAc,CAClB,QAAgB,EAChB,SAA8C,KAAK,EACnD,MAA4B,EAC5B,IAAU;QAEV,eAAe,CAAC,YAAY,EAAE,UAAU,MAAM,yBAAyB,QAAQ,EAAE,CAAC,CAAC;QACnF,eAAe,CAAC,YAAY,EAAE,WAAW,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;QACnE,eAAe,CAAC,YAAY,EAAE,SAAS,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QAE/D,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,GAAG,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,QAAQ,EAAE,CAAC;YAC9C,MAAM,IAAI,KAAK,CAAC,6DAA6D,CAAC,CAAC;QACjF,CAAC;QACD,IAAI,CAAC;YACH,MAAM,OAAO,GAA2B;gBACtC,oBAAoB,EAAE,IAAI,CAAC,MAAM,CAAC,QAAQ;gBAC1C,cAAc,EAAE,kBAAkB;gBAClC,QAAQ,EAAE,kBAAkB;aAC7B,CAAC;YAGF,IAAI,MAAM,KAAK,MAAM,IAAI,MAAM,KAAK,OAAO,IAAI,MAAM,KAAK,QAAQ,EAAE,CAAC;gBACnE,OAAO,CAAC,kBAAkB,CAAC,GAAG,gBAAgB,CAAC;gBAC/C,OAAO,CAAC,cAAc,CAAC,GAAG,OAAO,CAAC;YACpC,CAAC;YAED,MAAM,GAAG,GAAG,IAAI,GAAG,CAAC,sCAAsC,QAAQ,EAAE,EAAE,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,QAAQ,EAAE,CAAC;YAClG,eAAe,CAAC,YAAY,EAAE,aAAa,GAAG,EAAE,CAAC,CAAC;YAClD,eAAe,CAAC,YAAY,EAAE,YAAY,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;YAErE,IAAI,QAAuC,CAAC;YAE5C,eAAe,CAAC,YAAY,EAAE,iBAAiB,MAAM,UAAU,CAAC,CAAC;YAEjE,IAAI,MAAM,KAAK,KAAK,EAAE,CAAC;gBACrB,QAAQ,GAAG,MAAM,KAAK,CAAC,GAAG,CAAC,GAAG,EAAE,EAAE,OAAO,EAAE,MAAM,EAAE,CAAC,CAAC;YACvD,CAAC;iBAAM,IAAI,MAAM,KAAK,MAAM,EAAE,CAAC;gBAC7B,eAAe,CAAC,YAAY,EAAE,sBAAsB,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;gBAC5E,QAAQ,GAAG,MAAM,KAAK,CAAC,IAAI,CAAC,GAAG,EAAE,IAAI,EAAE,EAAE,OAAO,EAAE,CAAC,CAAC;YACtD,CAAC;iBAAM,IAAI,MAAM,KAAK,OAAO,EAAE,CAAC;gBAC9B,eAAe,CAAC,YAAY,EAAE,uBAAuB,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;gBAC7E,QAAQ,GAAG,MAAM,KAAK,CAAC,KAAK,CAAC,GAAG,EAAE,IAAI,EAAE,EAAE,OAAO,EAAE,CAAC,CAAC;YACvD,CAAC;iBAAM,IAAI,MAAM,KAAK,QAAQ,EAAE,CAAC;gBAC/B,QAAQ,GAAG,MAAM,KAAK,CAAC,MAAM,CAAC,GAAG,EAAE,EAAE,OAAO,EAAE,MAAM,EAAE,CAAC,CAAC;YAC1D,CAAC;iBAAM,CAAC;gBACN,MAAM,IAAI,KAAK,CAAC,4BAA4B,MAAM,EAAE,CAAC,CAAC;YACxD,CAAC;YAED,eAAe,CAAC,YAAY,EAAE,oBAAoB,QAAQ,CAAC,MAAM,EAAE,CAAC,CAAC;YAErE,MAAM,YAAY,GAAG,QAAQ,CAAC,IAAI,CAAC;YAEnC,IAAI,YAAY,CAAC,MAAM,KAAK,SAAS,EAAE,CAAC;gBACtC,MAAM,MAAM,GAAG,YAAY,CAAC,MAAM,CAAC;gBAGnC,IAAI,OAAO,MAAM,KAAK,QAAQ,IAAI,MAAM,KAAK,IAAI,IAAI,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC,UAAU,CAAC,GAAG,CAAC,IAAI,MAAM,CAAC,IAAI,EAAE,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC;oBACtH,IAAI,CAAC;wBACH,OAAO,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;oBAC5B,CAAC;oBAAC,OAAO,KAAK,EAAE,CAAC;wBAEf,OAAO,MAAM,CAAC;oBAChB,CAAC;gBACH,CAAC;qBAAM,CAAC;oBAEN,OAAO,MAAM,CAAC;gBAChB,CAAC;YACH,CAAC;iBAAM,CAAC;gBACN,eAAe,CAAC,YAAY,EAAE,gCAAgC,IAAI,CAAC,SAAS,CAAC,YAAY,CAAC,EAAE,CAAC,CAAC;gBAG9F,IAAI,YAAoB,CAAC;gBACzB,IAAI,OAAO,YAAY,CAAC,KAAK,KAAK,QAAQ,IAAI,YAAY,CAAC,KAAK,KAAK,IAAI,EAAE,CAAC;oBAC1E,YAAY,GAAG,IAAI,CAAC,SAAS,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC;gBACpD,CAAC;qBAAM,CAAC;oBACN,YAAY,GAAG,YAAY,CAAC,KAAK,IAAI,YAAY,CAAC,YAAY,IAAI,eAAe,CAAC;gBACpF,CAAC;gBACD,MAAM,IAAI,KAAK,CAAC,cAAc,YAAY,aAAa,QAAQ,CAAC,MAAM,GAAG,CAAC,CAAC;YAC7E,CAAC;QACH,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,IAAI,KAAK,CAAC,YAAY,CAAC,KAAK,CAAC,EAAE,CAAC;gBAC9B,eAAe,CAAC,YAAY,EAAE,eAAe,KAAK,CAAC,QAAQ,EAAE,MAAM,MAAM,KAAK,CAAC,QAAQ,EAAE,UAAU,EAAE,CAAC,CAAC;gBACvG,eAAe,CAAC,YAAY,EAAE,kBAAkB,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,QAAQ,EAAE,IAAI,CAAC,EAAE,CAAC,CAAC;gBACxF,eAAe,CAAC,YAAY,EAAE,eAAe,KAAK,CAAC,OAAO,EAAE,CAAC,CAAC;gBAC9D,MAAM,IAAI,KAAK,CAAC,mBAAmB,KAAK,CAAC,OAAO,aAAa,KAAK,CAAC,QAAQ,EAAE,MAAM,GAAG,CAAC,CAAC;YAC1F,CAAC;iBAAM,CAAC;gBACN,eAAe,CAAC,YAAY,EAAE,mBAAmB,KAAK,EAAE,CAAC,CAAC;gBAC1D,MAAM,KAAK,CAAC;YACd,CAAC;QACH,CAAC;IACH,CAAC;IAOD,KAAK,CAAC,iBAAiB,CACrB,QAAgB,EAChB,SAA8C,KAAK,EACnD,MAA4B,EAC5B,IAAU;QAEV,eAAe,CAAC,YAAY,EAAE,cAAc,MAAM,yBAAyB,QAAQ,EAAE,CAAC,CAAC;QACvF,eAAe,CAAC,YAAY,EAAE,WAAW,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;QACnE,eAAe,CAAC,YAAY,EAAE,SAAS,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QAE/D,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,GAAG,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,QAAQ,EAAE,CAAC;YAC9C,MAAM,IAAI,KAAK,CAAC,6DAA6D,CAAC,CAAC;QACjF,CAAC;QACD,IAAI,CAAC;YACH,MAAM,OAAO,GAA2B;gBACtC,oBAAoB,EAAE,IAAI,CAAC,MAAM,CAAC,QAAQ;gBAC1C,cAAc,EAAE,kBAAkB;gBAClC,QAAQ,EAAE,kBAAkB;aAC7B,CAAC;YAGF,IAAI,MAAM,KAAK,MAAM,IAAI,MAAM,KAAK,OAAO,IAAI,MAAM,KAAK,QAAQ,EAAE,CAAC;gBACnE,OAAO,CAAC,kBAAkB,CAAC,GAAG,gBAAgB,CAAC;gBAC/C,OAAO,CAAC,cAAc,CAAC,GAAG,OAAO,CAAC;YACpC,CAAC;YAED,MAAM,GAAG,GAAG,IAAI,GAAG,CAAC,sCAAsC,QAAQ,EAAE,EAAE,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,QAAQ,EAAE,CAAC;YAClG,eAAe,CAAC,YAAY,EAAE,aAAa,GAAG,EAAE,CAAC,CAAC;YAElD,IAAI,QAAuB,CAAC;YAE5B,IAAI,MAAM,KAAK,KAAK,EAAE,CAAC;gBACrB,QAAQ,GAAG,MAAM,KAAK,CAAC,GAAG,CAAC,GAAG,EAAE,EAAE,OAAO,EAAE,MAAM,EAAE,CAAC,CAAC;YACvD,CAAC;iBAAM,IAAI,MAAM,KAAK,MAAM,EAAE,CAAC;gBAC7B,QAAQ,GAAG,MAAM,KAAK,CAAC,IAAI,CAAC,GAAG,EAAE,IAAI,EAAE,EAAE,OAAO,EAAE,CAAC,CAAC;YACtD,CAAC;iBAAM,IAAI,MAAM,KAAK,OAAO,EAAE,CAAC;gBAC9B,QAAQ,GAAG,MAAM,KAAK,CAAC,KAAK,CAAC,GAAG,EAAE,IAAI,EAAE,EAAE,OAAO,EAAE,CAAC,CAAC;YACvD,CAAC;iBAAM,IAAI,MAAM,KAAK,QAAQ,EAAE,CAAC;gBAC/B,QAAQ,GAAG,MAAM,KAAK,CAAC,MAAM,CAAC,GAAG,EAAE,EAAE,OAAO,EAAE,MAAM,EAAE,CAAC,CAAC;YAC1D,CAAC;iBAAM,CAAC;gBACN,MAAM,IAAI,KAAK,CAAC,4BAA4B,MAAM,EAAE,CAAC,CAAC;YACxD,CAAC;YAED,eAAe,CAAC,YAAY,EAAE,oBAAoB,QAAQ,CAAC,MAAM,EAAE,CAAC,CAAC;YAGrE,OAAO,QAAQ,CAAC,IAAI,CAAC;QACvB,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,IAAI,KAAK,CAAC,YAAY,CAAC,KAAK,CAAC,EAAE,CAAC;gBAC9B,eAAe,CAAC,YAAY,EAAE,eAAe,KAAK,CAAC,QAAQ,EAAE,MAAM,MAAM,KAAK,CAAC,QAAQ,EAAE,UAAU,EAAE,CAAC,CAAC;gBACvG,eAAe,CAAC,YAAY,EAAE,kBAAkB,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,QAAQ,EAAE,IAAI,CAAC,EAAE,CAAC,CAAC;gBACxF,MAAM,IAAI,KAAK,CAAC,mBAAmB,KAAK,CAAC,OAAO,aAAa,KAAK,CAAC,QAAQ,EAAE,MAAM,GAAG,CAAC,CAAC;YAC1F,CAAC;iBAAM,CAAC;gBACN,eAAe,CAAC,YAAY,EAAE,mBAAmB,KAAK,EAAE,CAAC,CAAC;gBAC1D,MAAM,KAAK,CAAC;YACd,CAAC;QACH,CAAC;IACH,CAAC;CACF"}
1
+ {"version":3,"file":"api.js","sourceRoot":"","sources":["../src/api.ts"],"names":[],"mappings":"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"}
@@ -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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"}
@@ -24,16 +24,16 @@ Each widget should have these files following the three-level architecture:
24
24
 
25
25
  | Metric | Count | Percentage |
26
26
  |--------|-------|------------|
27
- | **Total widgets in cplace** | 108 | 100% |
28
- | **Widgets with specifications** | 108 | 100% |
27
+ | **Total widgets in cplace** | 109 | 100% |
28
+ | **Widgets with specifications** | 109 | 100% |
29
29
  | **Widgets without any specs** | 0 | 0% |
30
30
 
31
- ### Documentation Completeness (of 108 documented widgets)
31
+ ### Documentation Completeness (of 109 documented widgets)
32
32
 
33
33
  | Status | Count | Percentage |
34
34
  |--------|-------|------------|
35
35
  | **Complete** | 10 | 9% |
36
- | **Partial** | 98 | 91% |
36
+ | **Partial** | 99 | 91% |
37
37
  | **Minimal (meta only)** | 0 | 0% |
38
38
 
39
39
  ---
@@ -94,6 +94,7 @@ Each widget should have these files following the three-level architecture:
94
94
  | cf.projektplanung.scheduleTreeTable | ✓ | ✓ | ✓ | ✗ | 0 | implementation |
95
95
  | cf.projektplanung.singleGanttLink | ✓ | ✓ | ✓ | ✗ | 0 | implementation |
96
96
  | cf.cplace.lowCodeWidgets.lowCodeButton | ✓ | ✓ | ✓ | ✗ | 0 | implementation |
97
+ | cf.cplace.lowCodeWidgets.lowCodeText | ✓ | ✓ | ✓ | ✗ | 0 | implementation |
97
98
  | cf.cplace.pageViewHeadline.widget | ✓ | ✓ | ✓ | ✗ | 0 | implementation |
98
99
  | cf.cplace.pdfPreview.widget | ✓ | ✓ | ✓ | ✗ | 0 | implementation |
99
100
  | cf.cplace.simpleForm.widget | ✓ | ✓ | ✓ | ✗ | 0 | implementation |
@@ -169,19 +170,19 @@ All widgets now have specification directories.
169
170
 
170
171
  ### Widgets Missing `_meta.json` (Level 1)
171
172
 
172
- All 108 documented widgets have `_meta.json` files.
173
+ All 109 documented widgets have `_meta.json` files.
173
174
 
174
175
  ### Widgets Missing `_summary.md` (Level 1)
175
176
 
176
- All 108 documented widgets now have `_summary.md` files.
177
+ All 109 documented widgets now have `_summary.md` files.
177
178
 
178
179
  ### Widgets Missing `_overview.md` (Level 2)
179
180
 
180
- All 108 documented widgets now have `_overview.md` files.
181
+ All 109 documented widgets now have `_overview.md` files.
181
182
 
182
183
  ### Widgets Missing `_implementation.md` (Level 3)
183
184
 
184
- 98 widgets need implementation guidance added:
185
+ 99 widgets need implementation guidance added:
185
186
 
186
187
  **Partial widgets:**
187
188
  - `cf.cplace.breadcrumbs.breadcrumbsWidget`
@@ -205,6 +206,7 @@ All 108 documented widgets now have `_overview.md` files.
205
206
  - `cf.cplace.landingPageFromPage.quickOverview`
206
207
  - `cf.cplace.landingPageFromPage.sessionUserNameWidget`
207
208
  - `cf.cplace.lowCodeWidgets.lowCodeButton`
209
+ - `cf.cplace.lowCodeWidgets.lowCodeText`
208
210
  - `cf.cplace.pageViewHeadline.widget`
209
211
  - `cf.cplace.pdfPreview.widget`
210
212
  - `cf.cplace.platform.tableWidget`
@@ -353,6 +355,7 @@ All widgets now have specification directories. No undocumented widgets remain.
353
355
  - `de.2lforge.curves.widget` (from undocumented)
354
356
  - `de.2lforge.toolbar.dropDownWidget` (from undocumented)
355
357
  - `cf.cplace.lowCodeWidgets.lowCodeButton`
358
+ - `cf.cplace.lowCodeWidgets.lowCodeText`
356
359
  - `cf.cplace.pageViewHeadline.widget`
357
360
  - `cf.cplace.pdfPreview.widget`
358
361
  - `cf.cplace.simpleForm.widget`
@@ -393,18 +396,18 @@ All widgets now have specification directories. No undocumented widgets remain.
393
396
  - `cf.projektplanung.ganttTaskDemo` (new - from undocumented)
394
397
  - `de.2lforge.toolbar.datePickerWidget` (new - from undocumented)
395
398
 
396
- All 108 documented widgets now have Level 1 (_meta.json, _summary.md) and Level 2 (_overview.md) documentation. 10 of these are fully Complete with Level 3 documentation.
399
+ All 109 documented widgets now have Level 1 (_meta.json, _summary.md) and Level 2 (_overview.md) documentation. 10 of these are fully Complete with Level 3 documentation.
397
400
 
398
401
  ---
399
402
 
400
403
  ## Files Missing by Type
401
404
 
402
- | File Type | Count Missing | Percentage (of 108 documented) |
405
+ | File Type | Count Missing | Percentage (of 109 documented) |
403
406
  |-----------|---------------|------------|
404
407
  | `_meta.json` | 0 | 0% |
405
408
  | `_summary.md` | 0 | 0% |
406
409
  | `_overview.md` | 0 | 0% |
407
- | `_implementation.md` | 98 | 91% |
410
+ | `_implementation.md` | 99 | 91% |
408
411
 
409
412
  ---
410
413
 
@@ -154,6 +154,7 @@ This document defines a multi-dimensional tagging system for cplace widgets. Tag
154
154
  | Widget ID | Widget Name | Tags |
155
155
  |-----------|-------------|------|
156
156
  | `cf.cplace.lowCodeWidgets.lowCodeButton` | Low-Code Button | `low-code`, `inline-edit` |
157
+ | `cf.cplace.lowCodeWidgets.lowCodeText` | Low-Code Text | `low-code`, `rich-text`, `connected`, `searchable`, `read-only`, `dashboard` |
157
158
  | `cf.cplace.simpleForm.widget` | Creation Form | `form`, `attributes`, `inline-edit` |
158
159
  | `cf.cplace.dynamicCodeBlockWidget.dynamicCodeBlockWidget` | Dynamic Code Block | `low-code`, `rich-text` |
159
160
  | `cf.cplace.tuplesWidget.widget` | Tuple | `attributes`, `table`, `time-series`, `inline-edit` |
@@ -0,0 +1,176 @@
1
+ # Low-Code Text Widget Research
2
+
3
+ ## Widget Overview
4
+
5
+ **Widget ID:** `cf.cplace.lowCodeWidgets.lowCodeText`
6
+ **Widget Name:** Low-Code Text
7
+ **Repository:** `cplace-paw`
8
+ **Definition Class:** `cf.cplace.lowCodeWidgets.script.LowCodeTextWidgetDefinition`
9
+
10
+ ### Purpose (1-2 Sentence Description)
11
+
12
+ The Low-Code Text widget executes a cplaceJS script and renders the returned string (which may contain HTML) as inline content within a rich string widget. It reactively re-evaluates its script when connected table data or selections change, enabling dynamic computed text that updates without page reload.
13
+
14
+ ---
15
+
16
+ ## Conceptual Documentation
17
+
18
+ ### Core Functionality
19
+
20
+ The Low-Code Text widget allows administrators and low-code developers to embed dynamic, script-computed content directly within rich string widgets. When the page loads, the widget evaluates a JavaScript script that has access to contextual data (pages from search, connected tables, or explicit selections) and renders the returned value as HTML text. Unlike the Low-Code Button (which executes on click), the Low-Code Text widget evaluates automatically and updates reactively when its data sources change.
21
+
22
+ ### Use Cases
23
+
24
+ #### 1. **Dynamic Computed Values in Rich Text**
25
+ Display calculated or derived information inline within formatted page content:
26
+ - Show aggregated metrics (sums, averages, counts) based on search results
27
+ - Display conditional text based on page attributes or states
28
+ - Render formatted summaries from multiple data sources
29
+
30
+ #### 2. **Reactive Dashboards with Connected Tables**
31
+ Create text content that updates when users interact with connected table widgets:
32
+ - Show details about selected table rows
33
+ - Display summary statistics that update as the table's data changes
34
+ - Render context-specific information based on table selection
35
+
36
+ #### 3. **Internationalized Dynamic Content**
37
+ Generate localized content using the `messages` binding:
38
+ - Display status messages in the user's language
39
+ - Show dynamically computed text with proper localization
40
+ - Combine static rich text layout with dynamic localized values
41
+
42
+ #### 4. **Data-Driven HTML Rendering**
43
+ Generate custom HTML markup based on page data:
44
+ - Create visual indicators (colored badges, progress bars) based on attribute values
45
+ - Render mini-tables or formatted lists from search results
46
+ - Display formatted dates, numbers, or computed expressions
47
+
48
+ ---
49
+
50
+ ## Configuration Concepts
51
+
52
+ ### Script Structure
53
+
54
+ The widget requires a cplaceJS script that returns a value to display. Unlike the Low-Code Button, the script does not need to return an object with methods -- it simply returns the text/HTML to render.
55
+
56
+ Supported return types:
57
+ - **String**: Rendered directly as HTML (sanitized via `RichStringUtilities.clean()`)
58
+ - **Number**: Converted to string
59
+ - **Boolean**: Converted to string
60
+ - **Date**: Converted to string representation
61
+ - **Localized object**: Object with language keys (e.g., `{en: "Hello", de: "Hallo"}`) -- resolved to user's language
62
+
63
+ ### Script Bindings
64
+
65
+ The script has access to the following bindings:
66
+
67
+ | Binding | Type | Description |
68
+ |---------|------|-------------|
69
+ | `pages` | `Iterable<WrappedPage>` | Pages from the configured data source (search, selection, or connected table) |
70
+ | `searchResults` | `Iterable<WrappedCustomEntity<?>>` | All search results (if "Include All Search Results" is enabled) |
71
+ | `embeddingPage` | `WrappedPage` | The page on which the widget is embedded |
72
+ | `messages` | `CplaceJSTypeMessageProvider` | Access to internationalized messages defined in the embedding page's type definition |
73
+
74
+ ### Main Configuration Options
75
+
76
+ #### 1. **Script Configuration**
77
+ - **Script**: The cplaceJS script that produces the text to display. **Required.**
78
+
79
+ #### 2. **Data Source Options**
80
+ Multiple ways to provide data to the script (same as Low-Code Button):
81
+
82
+ - **Search**: Define a search query whose results are available as the `pages` binding, with optional sort column and order
83
+ - **Connected Table**: Connect to a table widget on the same page
84
+ - **Selection Only**: Only selected rows from the table are available
85
+ - Supports nested connected tables (connected table's own connected table)
86
+ - **Selection**: Manually select specific pages to provide as the `pages` binding
87
+ - **Include All Search Results**: Provides raw search results (not just pages) in the `searchResults` binding
88
+
89
+ ### Reactive Behavior
90
+
91
+ The widget re-evaluates its script in response to connected table events:
92
+
93
+ 1. **Table data refresh**: When the connected table's data changes, the text widget re-evaluates (unless in "selection only" mode)
94
+ 2. **Row selection change**: When the user's row selection changes in the connected table (in "selection only" mode)
95
+ 3. **Nested table selection**: When a connected table's own connected table fires a selection event
96
+
97
+ Re-evaluation is performed via an AJAX POST to `EvaluateTextHandler`, which re-runs the script server-side and returns the new HTML text.
98
+
99
+ ### Embedding Constraint
100
+
101
+ This widget can **only** be embedded inside rich string widgets (`WidgetEmbedding.INSIDE_RICHSTRING`). It cannot be placed directly on a page layout. It renders without a frame and without padding, making it blend seamlessly into the surrounding rich text content.
102
+
103
+ ### Permissions and Access Control
104
+
105
+ - **Embedding Permission**: Only users with "Low-Code permission" (`GlobalPermissions.mayEditLowCode()`) can embed this widget
106
+ - **Script Editing**: The script attribute is only visible/editable to users with Low-Code permission
107
+
108
+ ### Integration with Other Widgets
109
+
110
+ The Low-Code Text widget is:
111
+ - **Embedded in**: Rich String widgets (`cf.platform.richString`) or Rich String Without Frame (`cf.cplace.demoWidgets.demoRichString`)
112
+ - **Connected to**: Embedded Search as Table widgets (to react to data/selection changes)
113
+ - **Nested**: Can work with connected tables that are themselves connected to other tables
114
+
115
+ ---
116
+
117
+ ## Related Concepts
118
+
119
+ ### Comparison with Low-Code Button Widget
120
+
121
+ The Low-Code Text is part of a family of Low-Code widgets:
122
+
123
+ | Aspect | Low-Code Text | Low-Code Button |
124
+ |--------|---------------|-----------------|
125
+ | **Purpose** | Display computed text/HTML | Execute actions on click |
126
+ | **Script return** | String, number, date, or localized object | Object with `checkAccess()` and `call()` methods |
127
+ | **Execution** | Automatic on page load + reactive | User-triggered on click |
128
+ | **Execution mode** | Always synchronous | Async (default) or synchronous |
129
+ | **Embedding** | Rich string only | Anywhere, including attribute groups |
130
+ | **Frame** | Never (frameless, no padding) | Configurable |
131
+ | **Data source** | Identical 3-mode grouping | Identical 3-mode grouping |
132
+
133
+ ### Low-Code Script Engine
134
+
135
+ The widget uses the cplace Low-Code script engine with:
136
+ - **Sandboxed execution**: Scripts run in a controlled environment
137
+ - **Type safety**: Access to typed wrappers for cplace entities
138
+ - **Search/Filter access**: Scripts can use `Search` and `Filters` classes
139
+ - **HTML sanitization**: Output is cleaned via `RichStringUtilities.clean()`
140
+
141
+ ---
142
+
143
+ ## Technical Details
144
+
145
+ ### Key Classes
146
+
147
+ - **Definition**: `cf.cplace.lowCodeWidgets.script.LowCodeTextWidgetDefinition` (cf.cplace.lowCodeWidgets/src/main/java/cf/cplace/lowCodeWidgets/script/LowCodeTextWidgetDefinition.java:35)
148
+ - **Evaluation**: `cf.cplace.lowCodeWidgets.utils.LowCodeTextWidgetUtils` (cf.cplace.lowCodeWidgets/src/main/java/cf/cplace/lowCodeWidgets/utils/LowCodeTextWidgetUtils.java:52)
149
+ - **Handler**: `EvaluateTextHandler` (cf.cplace.lowCodeWidgets/src/main/java/cf/cplace/lowCodeWidgets/handler/EvaluateTextHandler.java:27)
150
+ - **Configuration Type**: `LowCodeWidgetsWidgetTypes.LOW_CODE_TEXT_WIDGET` (cf.cplace.lowCodeWidgets/src/main/java/cf/cplace/lowCodeWidgets/LowCodeWidgetsWidgetTypes.java:37)
151
+
152
+ ### Frontend Components
153
+
154
+ - **Controller**: `LowCodeTextWidgetCtrl` (cf.cplace.lowCodeWidgets/assets/ts/controllers/LowCodeTextWidgetCtrl.ts:11)
155
+ - **Directive**: `lowCodeTextWidgetDirective` (cf.cplace.lowCodeWidgets/assets/ts/directives/lowCodeTextWidgetDirective.ts:4)
156
+ - **Template**: `lowCodeTextWidgetDefinition.htm` (cf.cplace.lowCodeWidgets/src/main/resources/cf/cplace/lowCodeWidgets/script/lowCodeTextWidgetDefinition.htm)
157
+
158
+ ### Configuration Attributes
159
+
160
+ | Attribute | Type | Required | Purpose |
161
+ |-----------|------|----------|---------|
162
+ | `SCRIPT` | SingleString (script) | Yes | The cplaceJS script to execute |
163
+ | `SEARCH` | SingleString (search) | No | Search definition for finding pages |
164
+ | `SORT_COLUMN` | SingleString | No | Column to sort search results by |
165
+ | `SORT_ORDER` | SingleString | No | Sort direction |
166
+ | `CONNECTED_TABLE` | SingleString | No | Widget ID of connected table |
167
+ | `CONNECTED_TABLE_SELECTION_ONLY` | SingleBoolean | No | Use only selected rows |
168
+ | `SELECTION` | MultiPageReference | No | Explicit page references |
169
+ | `DATA_SOURCE` | AttributeGrouping | Yes | Switches between search/connected-table/selection modes |
170
+ | `INCLUDE_ALL_SEARCH_RESULTS` | SingleBoolean | No | Also provide searchResults binding |
171
+
172
+ ---
173
+
174
+ ## Summary
175
+
176
+ The Low-Code Text widget is the declarative counterpart to the Low-Code Button widget. While the button executes user-triggered actions, the text widget automatically evaluates a script and renders the result as HTML content within a rich string widget. Its reactive behavior with connected tables makes it suitable for building dynamic, data-driven page content that updates in response to user interactions elsewhere on the page.
@@ -2,7 +2,7 @@
2
2
 
3
3
  **Generated:** 2026-01-16
4
4
  **Phase:** 0 - Discovery
5
- **Total Widgets in Target List:** 97
5
+ **Total Widgets in Target List:** 98
6
6
 
7
7
  ---
8
8
 
@@ -10,14 +10,14 @@
10
10
 
11
11
  | Status | Count |
12
12
  |--------|-------|
13
- | Found | 97 |
13
+ | Found | 98 |
14
14
  | Not Found | 0 |
15
15
 
16
- All 97 target widgets have been mapped to their definition classes.
16
+ All 98 target widgets have been mapped to their definition classes.
17
17
 
18
18
  ---
19
19
 
20
- ## Widgets with Existing Specs (49)
20
+ ## Widgets with Existing Specs (50)
21
21
 
22
22
  | Widget ID | Repository | Definition Class Path | Status |
23
23
  |-----------|------------|----------------------|--------|
@@ -31,6 +31,7 @@ All 97 target widgets have been mapped to their definition classes.
31
31
  | cf.cplace.formsWizard.startWizardWidget | cplace-forms-wizard | cf.cplace.formsWizard/src/main/java/cf/cplace/formsWizard/script/StartWizardWidgetDefinition.java | found |
32
32
  | cf.cplace.layoutTabsWidget.widget | cplace-paw | cf.cplace.layoutTabsWidget/src/main/java/cf/cplace/layoutTabsWidget/script/LayoutTabsWidgetWidgetDefinition.java | found |
33
33
  | cf.cplace.lowCodeWidgets.lowCodeButton | cplace-paw | cf.cplace.lowCodeWidgets/src/main/java/cf/cplace/lowCodeWidgets/script/LowCodeButtonWidgetDefinition.java | found |
34
+ | cf.cplace.lowCodeWidgets.lowCodeText | cplace-paw | cf.cplace.lowCodeWidgets/src/main/java/cf/cplace/lowCodeWidgets/script/LowCodeTextWidgetDefinition.java | found |
34
35
  | cf.cplace.pageViewHeadline.widget | cplace-paw | cf.cplace.pageViewHeadline/src/main/java/cf/cplace/pageViewHeadline/widget/PageViewHeadlineWidgetDefinition.java | found |
35
36
  | cf.cplace.pdfPreview.widget | cplace-paw | cf.cplace.pdfPreview/src/main/java/cf/cplace/pdfPreview/script/PdfPreviewWidgetDefinition.java | found |
36
37
  | cf.cplace.platform.attributesGroup | main | cf.cplace.platform/src/main/java/cf/cplace/platform/frontend/widgets/AttributesGroupWidgetDefinition.java | found |
@@ -139,7 +140,7 @@ All 97 target widgets have been mapped to their definition classes.
139
140
  | Repository | Widget Count | Base Path |
140
141
  |------------|--------------|-----------|
141
142
  | main | 24 | /Users/thomasbuechner/dev/repos/main/cf.cplace.platform |
142
- | cplace-paw | 22 | /Users/thomasbuechner/dev/repos/cplace-paw |
143
+ | cplace-paw | 23 | /Users/thomasbuechner/dev/repos/cplace-paw |
143
144
  | cplace-project-planning | 12 | /Users/thomasbuechner/dev/repos/cplace-project-planning |
144
145
  | cplace-forms-wizard | 9 | /Users/thomasbuechner/dev/repos/cplace-forms-wizard |
145
146
  | cplace-ecf | 6 | /Users/thomasbuechner/dev/repos/cplace-ecf |
@@ -12,6 +12,7 @@ cf.cplace.dynamicCodeBlockWidget.dynamicCodeBlockWidget cplace-utility-widgets c
12
12
  cf.cplace.formsWizard.startWizardWidget cplace-forms-wizard cf.cplace.formsWizard/src/main/java/cf/cplace/formsWizard/script/StartWizardWidgetDefinition.java
13
13
  cf.cplace.layoutTabsWidget.widget cplace-paw cf.cplace.layoutTabsWidget/src/main/java/cf/cplace/layoutTabsWidget/script/LayoutTabsWidgetWidgetDefinition.java
14
14
  cf.cplace.lowCodeWidgets.lowCodeButton cplace-paw cf.cplace.lowCodeWidgets/src/main/java/cf/cplace/lowCodeWidgets/script/LowCodeButtonWidgetDefinition.java
15
+ cf.cplace.lowCodeWidgets.lowCodeText cplace-paw cf.cplace.lowCodeWidgets/src/main/java/cf/cplace/lowCodeWidgets/script/LowCodeTextWidgetDefinition.java
15
16
  cf.cplace.pageViewHeadline.widget cplace-paw cf.cplace.pageViewHeadline/src/main/java/cf/cplace/pageViewHeadline/widget/PageViewHeadlineWidgetDefinition.java
16
17
  cf.cplace.pdfPreview.widget cplace-paw cf.cplace.pdfPreview/src/main/java/cf/cplace/pdfPreview/script/PdfPreviewWidgetDefinition.java
17
18
  cf.cplace.platform.attributesGroup main cf.cplace.platform/src/main/java/cf/cplace/platform/frontend/widgets/AttributesGroupWidgetDefinition.java
@@ -117,6 +117,18 @@ The Low-Code Button widget can be:
117
117
  - **Missing data source**: Scripts expecting the `pages` binding will fail if no data source is configured.
118
118
  - **Log output ignored**: In synchronous mode, `log.logText()` and `log.logHtml()` output is not displayed to users.
119
119
 
120
+ ## Testing Before Embedding
121
+
122
+ Before embedding a Low-Code Button widget into a rich string attribute, test your cplaceJS script independently to verify it works correctly.
123
+
124
+ **Recommended workflow:**
125
+ 1. Write your cplaceJS script (with `checkAccess()` and `call()` methods)
126
+ 2. Test the `call()` logic using `cplace_execute_script` with a representative page as the context page
127
+ 3. Verify the script executes without errors and produces the expected result
128
+ 4. Only then embed the widget via `cplace_richstring_insert_widget` with the tested script in the properties
129
+
130
+ **Why this matters:** A script with errors will produce a broken button once embedded. Debugging scripts inside embedded widgets is significantly harder than debugging them standalone, because the embedded widget rendering does not surface script errors clearly.
131
+
120
132
  ## Permissions and Access Control
121
133
 
122
134
  - **Embedding Permission**: Only users with "Low-Code permission" (`GlobalPermissions.mayEditLowCode()`) can embed this widget
@@ -0,0 +1,12 @@
1
+ {
2
+ "Widget": "cf.cplace.lowCodeWidgets.lowCodeText",
3
+ "Description": "{\"en\":\"This widget executes a Low-Code script and renders the result as text/HTML within a rich string widget.\",\"de\":\"Dieses Widget f\\u00fchrt ein Low-Code-Skript aus und gibt das Ergebnis als Text/HTML innerhalb eines Rich-String-Widgets aus.\"}",
4
+ "Localized Name": "{\"en\":\"Low-Code Text\",\"de\":\"Low-Code Text\"}",
5
+ "Icon": "fa-code",
6
+ "Plugin": "cf.cplace.lowCodeWidgets",
7
+ "App": "cf.cplace.platform",
8
+ "Localized App Name": "{\"en\":\"cplace Basis\",\"de\":\"cplace Basis\"}",
9
+ "Repository": "cplace-paw",
10
+ "* Details DE": null,
11
+ "* Details EN": null
12
+ }
@@ -0,0 +1,11 @@
1
+ {
2
+ "tags": [
3
+ "low-code",
4
+ "rich-text",
5
+ "connected",
6
+ "searchable",
7
+ "read-only",
8
+ "dashboard"
9
+ ],
10
+ "requiredApp": null
11
+ }
@@ -0,0 +1,94 @@
1
+ ## Overview
2
+
3
+ This widget executes a cplaceJS script and renders the result as inline HTML content within a rich string widget.
4
+
5
+ The Low-Code Text widget enables dynamic, script-computed content to be embedded directly within rich text layouts. On page load, the widget evaluates a JavaScript script with access to contextual data (pages from search, connected tables, or explicit selections) and renders the returned value as HTML. When connected to a table widget, it reactively re-evaluates whenever the table's data or user selection changes, enabling live-updating computed content without page reload.
6
+
7
+ ## Use Cases
8
+
9
+ ### Dynamic Computed Values in Rich Text
10
+ Display calculated or derived information inline within formatted page content:
11
+ - Aggregated metrics (sums, averages, counts) from search results
12
+ - Conditional text based on page attributes or states
13
+ - Formatted summaries combining data from multiple sources
14
+
15
+ ### Reactive Content Linked to Tables
16
+ Create text that updates when users interact with connected table widgets:
17
+ - Details about selected table rows
18
+ - Summary statistics that update as the table data changes
19
+ - Context-specific information based on the current table selection
20
+
21
+ ### Data-Driven HTML Rendering
22
+ Generate custom HTML markup based on page data:
23
+ - Visual indicators (colored badges, progress bars) based on attribute values
24
+ - Mini-tables or formatted lists from search results
25
+ - Formatted dates, numbers, or computed expressions
26
+
27
+ ### Internationalized Dynamic Content
28
+ Generate localized content using the `messages` binding to display status messages, computed text, or dynamic values in the user's language.
29
+
30
+ ## Script Return Values
31
+
32
+ The script simply returns a value to display (no object structure required, unlike the Low-Code Button):
33
+ - **String**: Rendered as HTML (sanitized)
34
+ - **Number/Boolean/Date**: Converted to string
35
+ - **Localized object**: `{en: "Hello", de: "Hallo"}` -- resolved to user's language
36
+
37
+ ## Data Source Options
38
+
39
+ The widget supports three data source modes (identical to the Low-Code Button):
40
+
41
+ **Search**: Define a search query whose results are passed as the `pages` binding. Most common mode.
42
+
43
+ **Connected Table**: Connect to a table widget on the same page. The widget re-evaluates when the table's data changes or when the user's selection changes (if "selection only" is enabled). Supports chained connected tables.
44
+
45
+ **Selection**: Manually select specific pages to provide as the `pages` binding.
46
+
47
+ Additionally, **Include All Search Results** can be enabled to provide raw search results (including non-page entities) via the `searchResults` binding.
48
+
49
+ ## Embedding Constraint
50
+
51
+ This widget can **only** be embedded inside rich string widgets. It cannot be placed directly on a page layout. It renders without a frame and without padding, blending seamlessly into surrounding rich text content.
52
+
53
+ ## Design Considerations
54
+
55
+ ### When to Use This Widget
56
+ - You need dynamic, script-computed content within a rich text layout
57
+ - The content should update reactively based on connected table interactions
58
+ - You want inline computed values (metrics, status text, formatted data) mixed with static rich text
59
+
60
+ ### When NOT to Use This Widget
61
+ - For user-triggered actions -- use the **Low-Code Button** instead
62
+ - For standalone chart visualizations -- use **cplaceJS Highcharts** or **cplaceJS Line Chart**
63
+ - For simple static text -- use the **Rich String** widget directly
64
+
65
+ ### Script Execution Considerations
66
+ - Scripts execute synchronously during page rendering and on every re-evaluation
67
+ - Keep scripts performant to avoid slow page loads
68
+ - Output HTML is sanitized via `RichStringUtilities.clean()` for security
69
+
70
+ ## Testing Before Embedding
71
+
72
+ Before embedding a Low-Code Text widget into a rich string attribute, test your cplaceJS script independently to verify it produces the expected output.
73
+
74
+ **Recommended workflow:**
75
+ 1. Write your cplaceJS script
76
+ 2. Run it using `cplace_execute_script` with a representative page as the context page
77
+ 3. Verify the returned HTML/text is correct
78
+ 4. Only then embed the widget via `cplace_richstring_insert_widget` with the tested script in the properties
79
+
80
+ **Why this matters:** A script with errors or unexpected output will produce a broken or empty widget once embedded. Debugging scripts inside embedded widgets is significantly harder than debugging them standalone, because the embedded widget rendering does not surface script errors clearly.
81
+
82
+ ## Related Widgets
83
+
84
+ ### Low-Code Button (`cf.cplace.lowCodeWidgets.lowCodeButton`)
85
+ The imperative counterpart: executes user-triggered actions on click. Shares the same data source configuration and script bindings but uses a different script structure (`checkAccess()`/`call()` methods).
86
+
87
+ ### Rich String (`cf.platform.richString`)
88
+ The typical host widget for Low-Code Text. The rich string provides the static layout structure; embedded Low-Code Text widgets provide dynamic content within it.
89
+
90
+ ### Text without Widget Frame (`cf.cplace.demoWidgets.demoRichString`)
91
+ An alternative host widget -- a frameless rich string variant also capable of embedding Low-Code Text widgets.
92
+
93
+ ### Embedded Search as Table (`cf.platform.embeddedSearchAsTable`)
94
+ Often used as the connected data source. The table widget provides data or selection events that trigger the Low-Code Text to re-evaluate.
@@ -0,0 +1 @@
1
+ Executes a cplaceJS script and renders the returned text or HTML inline within a rich string widget. Reactively re-evaluates when connected table data or selections change.
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@cplace/test-mcp-server",
3
- "version": "1.3.12",
3
+ "version": "1.3.13",
4
4
  "description": "MCP server that provides Claude Desktop with tools to interact with cplace APIs",
5
5
  "main": "dist/index.js",
6
6
  "types": "dist/index.d.ts",