@cplace/mcp-server 1.9.0 → 1.10.5

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 (235) hide show
  1. package/README.md +12 -13
  2. package/dist/index.js +4 -0
  3. package/dist/index.js.map +1 -1
  4. package/dist/plugins/app-catalog.js +1 -1
  5. package/dist/plugins/app-catalog.js.map +1 -1
  6. package/dist/plugins/application-settings.d.ts.map +1 -1
  7. package/dist/plugins/application-settings.js +6 -3
  8. package/dist/plugins/application-settings.js.map +1 -1
  9. package/dist/plugins/core/widget-specifications/cf.cplace.platform.tableWidget/columns.md +6 -0
  10. package/dist/plugins/core.d.ts.map +1 -1
  11. package/dist/plugins/core.js +25 -13
  12. package/dist/plugins/core.js.map +1 -1
  13. package/dist/plugins/forms-wizard.js +2 -2
  14. package/dist/plugins/forms-wizard.js.map +1 -1
  15. package/dist/plugins/history.d.ts.map +1 -1
  16. package/dist/plugins/history.js +6 -3
  17. package/dist/plugins/history.js.map +1 -1
  18. package/dist/plugins/jobs.js +2 -2
  19. package/dist/plugins/jobs.js.map +1 -1
  20. package/dist/plugins/layouts.d.ts.map +1 -1
  21. package/dist/plugins/layouts.js +17 -8
  22. package/dist/plugins/layouts.js.map +1 -1
  23. package/dist/plugins/low-code.d.ts.map +1 -1
  24. package/dist/plugins/low-code.js +48 -15
  25. package/dist/plugins/low-code.js.map +1 -1
  26. package/dist/plugins/project-planning.d.ts.map +1 -1
  27. package/dist/plugins/project-planning.js +6 -3
  28. package/dist/plugins/project-planning.js.map +1 -1
  29. package/dist/plugins/resource-management.d.ts.map +1 -1
  30. package/dist/plugins/resource-management.js +6 -3
  31. package/dist/plugins/resource-management.js.map +1 -1
  32. package/dist/plugins/solution-management.d.ts.map +1 -1
  33. package/dist/plugins/solution-management.js +6 -3
  34. package/dist/plugins/solution-management.js.map +1 -1
  35. package/dist/plugins/types-write.d.ts.map +1 -1
  36. package/dist/plugins/types-write.js +6 -3
  37. package/dist/plugins/types-write.js.map +1 -1
  38. package/dist/plugins/widget-specifications.d.ts.map +1 -1
  39. package/dist/plugins/widget-specifications.js +2 -2
  40. package/dist/plugins/widget-specifications.js.map +1 -1
  41. package/dist/plugins/workspace-admin.d.ts.map +1 -1
  42. package/dist/plugins/workspace-admin.js +6 -3
  43. package/dist/plugins/workspace-admin.js.map +1 -1
  44. package/dist/str-replace-utils.js +1 -1
  45. package/dist/str-replace-utils.js.map +1 -1
  46. package/dist/tools/apps-catalog.d.ts +1 -1
  47. package/dist/tools/apps-catalog.d.ts.map +1 -1
  48. package/dist/tools/apps-catalog.js +16 -12
  49. package/dist/tools/apps-catalog.js.map +1 -1
  50. package/dist/tools/board-widget.d.ts +2 -2
  51. package/dist/tools/board-widget.d.ts.map +1 -1
  52. package/dist/tools/board-widget.js +354 -201
  53. package/dist/tools/board-widget.js.map +1 -1
  54. package/dist/tools/change-listeners.d.ts +2 -2
  55. package/dist/tools/change-listeners.d.ts.map +1 -1
  56. package/dist/tools/change-listeners.js +125 -57
  57. package/dist/tools/change-listeners.js.map +1 -1
  58. package/dist/tools/common-schemas.d.ts +1 -1
  59. package/dist/tools/common-schemas.d.ts.map +1 -1
  60. package/dist/tools/common-schemas.js +5 -3
  61. package/dist/tools/common-schemas.js.map +1 -1
  62. package/dist/tools/csv-export.d.ts +2 -2
  63. package/dist/tools/csv-export.d.ts.map +1 -1
  64. package/dist/tools/csv-export.js +29 -24
  65. package/dist/tools/csv-export.js.map +1 -1
  66. package/dist/tools/documents.d.ts +2 -2
  67. package/dist/tools/documents.d.ts.map +1 -1
  68. package/dist/tools/documents.js +34 -14
  69. package/dist/tools/documents.js.map +1 -1
  70. package/dist/tools/expert-settings.d.ts +3 -3
  71. package/dist/tools/expert-settings.d.ts.map +1 -1
  72. package/dist/tools/expert-settings.js +97 -38
  73. package/dist/tools/expert-settings.js.map +1 -1
  74. package/dist/tools/get-operations.d.ts +2 -2
  75. package/dist/tools/get-operations.d.ts.map +1 -1
  76. package/dist/tools/get-operations.js +29 -21
  77. package/dist/tools/get-operations.js.map +1 -1
  78. package/dist/tools/job-schedule-trigger.d.ts +2 -2
  79. package/dist/tools/job-schedule-trigger.d.ts.map +1 -1
  80. package/dist/tools/job-schedule-trigger.js +19 -10
  81. package/dist/tools/job-schedule-trigger.js.map +1 -1
  82. package/dist/tools/job-scripts.d.ts +2 -2
  83. package/dist/tools/job-scripts.d.ts.map +1 -1
  84. package/dist/tools/job-scripts.js +119 -55
  85. package/dist/tools/job-scripts.js.map +1 -1
  86. package/dist/tools/jobs.d.ts +2 -2
  87. package/dist/tools/jobs.d.ts.map +1 -1
  88. package/dist/tools/jobs.js +68 -38
  89. package/dist/tools/jobs.js.map +1 -1
  90. package/dist/tools/layout-richstring-shared.d.ts +24 -1
  91. package/dist/tools/layout-richstring-shared.d.ts.map +1 -1
  92. package/dist/tools/layout-richstring-shared.js +99 -1
  93. package/dist/tools/layout-richstring-shared.js.map +1 -1
  94. package/dist/tools/layout-richstring-widgets.d.ts +94 -2
  95. package/dist/tools/layout-richstring-widgets.d.ts.map +1 -1
  96. package/dist/tools/layout-richstring-widgets.js +247 -25
  97. package/dist/tools/layout-richstring-widgets.js.map +1 -1
  98. package/dist/tools/layout.d.ts +5 -4
  99. package/dist/tools/layout.d.ts.map +1 -1
  100. package/dist/tools/layout.js +235 -124
  101. package/dist/tools/layout.js.map +1 -1
  102. package/dist/tools/linting.d.ts +2 -2
  103. package/dist/tools/linting.d.ts.map +1 -1
  104. package/dist/tools/linting.js +5 -5
  105. package/dist/tools/linting.js.map +1 -1
  106. package/dist/tools/page-action-simulation.d.ts +18 -0
  107. package/dist/tools/page-action-simulation.d.ts.map +1 -0
  108. package/dist/tools/page-action-simulation.js +88 -0
  109. package/dist/tools/page-action-simulation.js.map +1 -0
  110. package/dist/tools/page-actions.d.ts +60 -0
  111. package/dist/tools/page-actions.d.ts.map +1 -0
  112. package/dist/tools/page-actions.js +284 -0
  113. package/dist/tools/page-actions.js.map +1 -0
  114. package/dist/tools/pages.d.ts +3 -3
  115. package/dist/tools/pages.d.ts.map +1 -1
  116. package/dist/tools/pages.js +237 -112
  117. package/dist/tools/pages.js.map +1 -1
  118. package/dist/tools/ppt-export-schemas.d.ts +1 -1
  119. package/dist/tools/ppt-export-schemas.d.ts.map +1 -1
  120. package/dist/tools/ppt-export-schemas.js +269 -122
  121. package/dist/tools/ppt-export-schemas.js.map +1 -1
  122. package/dist/tools/ppt-export.d.ts +2 -2
  123. package/dist/tools/ppt-export.d.ts.map +1 -1
  124. package/dist/tools/ppt-export.js +82 -43
  125. package/dist/tools/ppt-export.js.map +1 -1
  126. package/dist/tools/profile-management.d.ts +2 -2
  127. package/dist/tools/profile-management.d.ts.map +1 -1
  128. package/dist/tools/profile-management.js +109 -82
  129. package/dist/tools/profile-management.js.map +1 -1
  130. package/dist/tools/references.d.ts +2 -2
  131. package/dist/tools/references.d.ts.map +1 -1
  132. package/dist/tools/references.js +36 -24
  133. package/dist/tools/references.js.map +1 -1
  134. package/dist/tools/resource-planner-widget.d.ts +2 -2
  135. package/dist/tools/resource-planner-widget.d.ts.map +1 -1
  136. package/dist/tools/resource-planner-widget.js +334 -138
  137. package/dist/tools/resource-planner-widget.js.map +1 -1
  138. package/dist/tools/richstring-marker-resolver.d.ts +16 -0
  139. package/dist/tools/richstring-marker-resolver.d.ts.map +1 -0
  140. package/dist/tools/richstring-marker-resolver.js +47 -0
  141. package/dist/tools/richstring-marker-resolver.js.map +1 -0
  142. package/dist/tools/richstring-widgets.d.ts +6 -16
  143. package/dist/tools/richstring-widgets.d.ts.map +1 -1
  144. package/dist/tools/richstring-widgets.js +184 -129
  145. package/dist/tools/richstring-widgets.js.map +1 -1
  146. package/dist/tools/schedule.d.ts +2 -2
  147. package/dist/tools/schedule.d.ts.map +1 -1
  148. package/dist/tools/schedule.js +23 -14
  149. package/dist/tools/schedule.js.map +1 -1
  150. package/dist/tools/script-logs.d.ts +2 -2
  151. package/dist/tools/script-logs.d.ts.map +1 -1
  152. package/dist/tools/script-logs.js +71 -32
  153. package/dist/tools/script-logs.js.map +1 -1
  154. package/dist/tools/script.d.ts +2 -2
  155. package/dist/tools/script.d.ts.map +1 -1
  156. package/dist/tools/script.js +44 -26
  157. package/dist/tools/script.js.map +1 -1
  158. package/dist/tools/search.d.ts +2 -2
  159. package/dist/tools/search.d.ts.map +1 -1
  160. package/dist/tools/search.js +139 -102
  161. package/dist/tools/search.js.map +1 -1
  162. package/dist/tools/solution-packages.d.ts +2 -2
  163. package/dist/tools/solution-packages.d.ts.map +1 -1
  164. package/dist/tools/solution-packages.js +149 -61
  165. package/dist/tools/solution-packages.js.map +1 -1
  166. package/dist/tools/system.d.ts +2 -2
  167. package/dist/tools/system.d.ts.map +1 -1
  168. package/dist/tools/system.js +43 -21
  169. package/dist/tools/system.js.map +1 -1
  170. package/dist/tools/type-layouts.d.ts +2 -2
  171. package/dist/tools/type-layouts.d.ts.map +1 -1
  172. package/dist/tools/type-layouts.js +67 -31
  173. package/dist/tools/type-layouts.js.map +1 -1
  174. package/dist/tools/type-management.d.ts +86 -70
  175. package/dist/tools/type-management.d.ts.map +1 -1
  176. package/dist/tools/type-management.js +410 -138
  177. package/dist/tools/type-management.js.map +1 -1
  178. package/dist/tools/url-resolution.d.ts +2 -2
  179. package/dist/tools/url-resolution.d.ts.map +1 -1
  180. package/dist/tools/url-resolution.js +16 -12
  181. package/dist/tools/url-resolution.js.map +1 -1
  182. package/dist/tools/users.d.ts +2 -2
  183. package/dist/tools/users.d.ts.map +1 -1
  184. package/dist/tools/users.js +24 -14
  185. package/dist/tools/users.js.map +1 -1
  186. package/dist/tools/validators.d.ts +2 -2
  187. package/dist/tools/validators.d.ts.map +1 -1
  188. package/dist/tools/validators.js +68 -35
  189. package/dist/tools/validators.js.map +1 -1
  190. package/dist/tools/version-check.d.ts +2 -2
  191. package/dist/tools/version-check.d.ts.map +1 -1
  192. package/dist/tools/version-check.js +36 -30
  193. package/dist/tools/version-check.js.map +1 -1
  194. package/dist/tools/version-history.d.ts +2 -2
  195. package/dist/tools/version-history.d.ts.map +1 -1
  196. package/dist/tools/version-history.js +72 -41
  197. package/dist/tools/version-history.js.map +1 -1
  198. package/dist/tools/widget-simulation.d.ts +18 -0
  199. package/dist/tools/widget-simulation.d.ts.map +1 -0
  200. package/dist/tools/widget-simulation.js +94 -0
  201. package/dist/tools/widget-simulation.js.map +1 -0
  202. package/dist/tools/widget-tool-helpers.d.ts +17 -1
  203. package/dist/tools/widget-tool-helpers.d.ts.map +1 -1
  204. package/dist/tools/widget-tool-helpers.js +41 -6
  205. package/dist/tools/widget-tool-helpers.js.map +1 -1
  206. package/dist/tools/widgets.d.ts +2 -2
  207. package/dist/tools/widgets.d.ts.map +1 -1
  208. package/dist/tools/widgets.js +62 -43
  209. package/dist/tools/widgets.js.map +1 -1
  210. package/dist/tools/wizards.d.ts +2 -2
  211. package/dist/tools/wizards.d.ts.map +1 -1
  212. package/dist/tools/wizards.js +378 -182
  213. package/dist/tools/wizards.js.map +1 -1
  214. package/dist/tools/workflow-execution.d.ts +2 -2
  215. package/dist/tools/workflow-execution.d.ts.map +1 -1
  216. package/dist/tools/workflow-execution.js +27 -19
  217. package/dist/tools/workflow-execution.js.map +1 -1
  218. package/dist/tools/workflow-scripts.d.ts +2 -2
  219. package/dist/tools/workflow-scripts.d.ts.map +1 -1
  220. package/dist/tools/workflow-scripts.js +168 -81
  221. package/dist/tools/workflow-scripts.js.map +1 -1
  222. package/dist/tools/workflow.d.ts +2 -2
  223. package/dist/tools/workflow.d.ts.map +1 -1
  224. package/dist/tools/workflow.js +185 -74
  225. package/dist/tools/workflow.js.map +1 -1
  226. package/dist/tools/workspace-admin.d.ts +2 -2
  227. package/dist/tools/workspace-admin.d.ts.map +1 -1
  228. package/dist/tools/workspace-admin.js +82 -40
  229. package/dist/tools/workspace-admin.js.map +1 -1
  230. package/dist/tools/workspace-core.d.ts +2 -2
  231. package/dist/tools/workspace-core.d.ts.map +1 -1
  232. package/dist/tools/workspace-core.js +93 -53
  233. package/dist/tools/workspace-core.js.map +1 -1
  234. package/dist/utils/dateValidation.js.map +1 -1
  235. package/package.json +9 -4
@@ -1,20 +1,144 @@
1
- import { z } from "zod";
2
- import { debugLogWithTag } from "../logger.js";
1
+ import { z } from 'zod';
2
+ import { debugLogWithTag } from '../logger.js';
3
3
  import { LayoutContextSchema } from './layout.js';
4
- import { findWidgetById, determineApiEndpoint, buildRequestParams } from './widget-tool-helpers.js';
5
- import { richstringExtractWidgets, buildContentMap } from './richstring-widgets.js';
6
- import { RICHSTRING_WIDGET_TYPES, extractStringConfigValue } from './layout-richstring-shared.js';
4
+ import { findWidgetById, determineApiEndpoint, buildRequestParams, buildStaleIdErrorResponse, buildStaleIdErrorText, } from './widget-tool-helpers.js';
5
+ import { RICHSTRING_WIDGET_TYPES, extractStringConfigValue, parseScriptEnvelope, parseDecodedRichStringContent, reassembleDecodedContent, } from './layout-richstring-shared.js';
6
+ import { applyStrReplace } from '../str-replace-utils.js';
7
7
  const TOOL_LAYOUT_RICHSTRING_EXTRACT_WIDGETS = 'cplace_layout_richstring_extract_widgets';
8
+ const TOOL_RICHSTRING_SET_WIDGET_SCRIPT = 'cplace_richstring_set_widget_script';
9
+ const TOOL_RICHSTRING_EDIT_WIDGET_SCRIPT = 'cplace_richstring_edit_widget_script';
10
+ const SET_WIDGET_SCRIPT_DESCRIPTION = `Replace the entire script body of a script-typed attribute on an embedded widget inside a layout-resident rich-string container. Reads the layout, modifies the target attribute, and writes back via a single layout.updateWidget call — atomic.
11
+
12
+ Why this tool exists. When a rich-string widget (cf.platform.richString, cf.cplace.demoWidgets.demoRichString) is placed in a page or type layout via cplace_execute_layout_script, embedded widgets travel inline as <decoded-widget> tags. Authoring a script attribute inline forces it through four nested encoding layers (HTML → JSON → JS string literal → MCP wire). Use this tool instead: the script arrives as a plain string in a structured tool argument.
13
+
14
+ Workflow.
15
+ 1. Place the rich-string container with embedded children via cplace_execute_layout_script, initializing each script attribute to a minimal placeholder body (e.g. return '';).
16
+ 2. Run cplace_layout_richstring_extract_widgets to discover embedded widget IDs.
17
+ 3. For each embedded widget, call this tool with the real script body.
18
+
19
+ Known script-bearing embedded widget types and their attribute keys:
20
+ - cf.cplace.lowCodeWidgets.lowCodeText → cf.cplace.lowCodeWidgets.lowCodeTextWidget.script
21
+ - cf.cplace.lowCodeWidgets.lowCodeButton → cf.cplace.lowCodeWidgets.lowCodeButtonWidget.script
22
+ - cf.cplace.visualizations.scriptingHighcharts → cf.cplace.visualization.script
23
+ - cf.cplace.visualizations.scriptingLineChart → cf.cplace.visualization.script
24
+ - cf.cplace.dynamicCodeBlockWidget.dynamicCodeBlockWidget → cf.cplace.dynamicCodeBlockWidget.script
25
+
26
+ Passing a non-script attribute key writes the value as a string into that attribute (no guard) — verify the attribute key matches a script-typed attribute on the target widget type.`;
27
+ const EDIT_WIDGET_SCRIPT_DESCRIPTION = `Apply a string-replacement edit to the script body of a script-typed attribute on an embedded widget inside a layout-resident rich-string container. oldString must match the current raw script body exactly once unless replaceAll is true. Atomic via a single layout.updateWidget call.
28
+
29
+ Use this tool for iterative refinement of an already-set script body — small, focused diffs over the wire instead of resending the full script. Mirrors the contract of the file Edit tool: matches against the raw script body (the stored CplaceJsScript envelope is unwrapped server-side before matching), fails fast on zero or duplicate matches.
30
+
31
+ Same target shape and constraints as cplace_richstring_set_widget_script — see that tool's description for the placeholder workflow, the list of script-bearing widget types, and the addressing model.`;
8
32
  export const LAYOUT_RICHSTRING_WIDGET_TOOL_DEFINITIONS = {
9
33
  [TOOL_LAYOUT_RICHSTRING_EXTRACT_WIDGETS]: {
10
34
  description: "Extract all embedded widgets from a layout widget's richstring config. Returns structured inventory (IDs, types, properties) and a positional content map without loading the full layout script into context. Use this to discover widget IDs and positions before editing via cplace_edit_layout str_replace on decoded embedded-widget tags.\n\nSupported layout widget types: cf.platform.richString, cf.cplace.demoWidgets.demoRichString",
11
35
  inputSchema: {
12
36
  context: LayoutContextSchema,
13
- widgetId: z.string().describe("The ID of the layout widget containing the richstring config (e.g., '_kpi1_open_cases')")
37
+ widgetId: z
38
+ .string()
39
+ .describe("The ID of the layout widget containing the richstring config (e.g., '_kpi1_open_cases')"),
14
40
  },
15
- annotations: { title: "Extract Embedded Widgets from Layout Widget RichString" }
16
- }
41
+ annotations: { title: 'Extract Embedded Widgets from Layout Widget RichString' },
42
+ },
43
+ [TOOL_RICHSTRING_SET_WIDGET_SCRIPT]: {
44
+ description: SET_WIDGET_SCRIPT_DESCRIPTION,
45
+ inputSchema: {
46
+ context: LayoutContextSchema,
47
+ containerWidgetId: z
48
+ .string()
49
+ .describe('ID of the layout widget that holds the rich-string. Must be cf.platform.richString or cf.cplace.demoWidgets.demoRichString.'),
50
+ embeddedWidgetId: z
51
+ .string()
52
+ .describe('ID of the embedded widget inside the rich-string whose script attribute will be replaced. Discover via cplace_layout_richstring_extract_widgets.'),
53
+ attributeKey: z
54
+ .string()
55
+ .describe('Fully-qualified attribute name of the script-typed attribute on the embedded widget (e.g. cf.cplace.lowCodeWidgets.lowCodeTextWidget.script).'),
56
+ script: z
57
+ .string()
58
+ .describe('New script body as plain JavaScript text. Delivered to the backend as a raw string; backend wraps it in the canonical CplaceJsScript envelope at the latest version.'),
59
+ },
60
+ annotations: { title: 'Set Embedded Widget Script in Layout RichString' },
61
+ },
62
+ [TOOL_RICHSTRING_EDIT_WIDGET_SCRIPT]: {
63
+ description: EDIT_WIDGET_SCRIPT_DESCRIPTION,
64
+ inputSchema: {
65
+ context: LayoutContextSchema,
66
+ containerWidgetId: z.string().describe('ID of the rich-string layout widget.'),
67
+ embeddedWidgetId: z
68
+ .string()
69
+ .describe('ID of the embedded widget whose script attribute will be edited.'),
70
+ attributeKey: z.string().describe('Fully-qualified script attribute name.'),
71
+ oldString: z
72
+ .string()
73
+ .describe('Exact substring to find in the current raw script body. Must match exactly once unless replaceAll is true.'),
74
+ newString: z
75
+ .string()
76
+ .describe('Replacement substring. Use empty string to delete oldString.'),
77
+ replaceAll: z
78
+ .boolean()
79
+ .optional()
80
+ .default(false)
81
+ .describe('If true, replace all occurrences. If false, require exactly one match — fails on zero or multiple.'),
82
+ },
83
+ annotations: { title: 'Edit Embedded Widget Script in Layout RichString' },
84
+ },
17
85
  };
86
+ async function loadScriptMutationContext(client, context, containerWidgetId, embeddedWidgetId) {
87
+ const endpoint = determineApiEndpoint(context);
88
+ const layoutResult = await client.makeApiRequest(endpoint, 'GET', buildRequestParams(context));
89
+ const containerWidget = findWidgetById(layoutResult.rows, containerWidgetId);
90
+ if (!containerWidget) {
91
+ return { ok: false, error: buildStaleIdErrorText(containerWidgetId, context.type) };
92
+ }
93
+ if (!RICHSTRING_WIDGET_TYPES.includes(containerWidget.widgetType)) {
94
+ return {
95
+ ok: false,
96
+ error: `Container widget '${containerWidgetId}' is type '${containerWidget.widgetType}'; expected one of: ${RICHSTRING_WIDGET_TYPES.join(', ')}`,
97
+ };
98
+ }
99
+ const rawContent = extractStringConfigValue(containerWidget.configuration, 'content');
100
+ const parsed = parseDecodedRichStringContent(rawContent);
101
+ const widgetsById = new Map();
102
+ for (const w of parsed.embeddedWidgets) {
103
+ widgetsById.set(w.widgetId, {
104
+ widgetId: w.widgetId,
105
+ widgetType: w.widgetType,
106
+ properties: { ...w.properties },
107
+ });
108
+ }
109
+ const contentMap = parsed.contentMap;
110
+ const targetWidget = widgetsById.get(embeddedWidgetId);
111
+ if (!targetWidget) {
112
+ return {
113
+ ok: false,
114
+ error: `Embedded widget '${embeddedWidgetId}' not found inside container '${containerWidgetId}'. Widget IDs are regenerated after every layout save — call cplace_get_layout_overview to get current IDs.`,
115
+ };
116
+ }
117
+ return { ok: true, ctx: { containerWidget, rawContent, contentMap, widgetsById, targetWidget } };
118
+ }
119
+ async function commitScriptMutation(client, context, containerWidgetId, ctx) {
120
+ const newContent = reassembleDecodedContent(ctx.contentMap, ctx.widgetsById);
121
+ const script = `layout.updateWidget(${JSON.stringify(containerWidgetId)}, { content: ${JSON.stringify(newContent)} });`;
122
+ const endpoint = context.type === 'page' ? 'json/page/layoutScript' : 'json/type/layoutScript';
123
+ const body = context.type === 'page'
124
+ ? { pageUID: context.pageUID, script }
125
+ : {
126
+ workspaceId: context.workspaceId,
127
+ typeInternalName: context.typeInternalName,
128
+ ...(context.alternativeLayoutName && {
129
+ alternativeLayoutName: context.alternativeLayoutName,
130
+ }),
131
+ script,
132
+ };
133
+ const raw = await client.makeRawApiRequest(endpoint, 'POST', undefined, body);
134
+ if (raw.success !== true) {
135
+ const detail = raw.errors
136
+ ? JSON.stringify(raw.errors)
137
+ : (raw.errorMessage ?? 'Unknown error');
138
+ return { ok: false, error: detail };
139
+ }
140
+ return { ok: true, status: raw.status };
141
+ }
18
142
  export function registerLayoutRichStringWidgetTools(server, client) {
19
143
  server.registerTool(TOOL_LAYOUT_RICHSTRING_EXTRACT_WIDGETS, LAYOUT_RICHSTRING_WIDGET_TOOL_DEFINITIONS[TOOL_LAYOUT_RICHSTRING_EXTRACT_WIDGETS], async ({ context, widgetId }) => {
20
144
  debugLogWithTag('LAYOUT_RICHSTRING', `Extracting widgets from layout widget ${widgetId}, config content`);
@@ -23,37 +147,135 @@ export function registerLayoutRichStringWidgetTools(server, client) {
23
147
  const layoutResult = await client.makeApiRequest(endpoint, 'GET', buildRequestParams(context));
24
148
  const widget = findWidgetById(layoutResult.rows, widgetId);
25
149
  if (!widget) {
26
- return {
27
- content: [{ type: "text", text: `Widget '${widgetId}' not found in layout` }],
28
- isError: true
29
- };
150
+ return buildStaleIdErrorResponse(widgetId, context.type);
30
151
  }
31
152
  if (!RICHSTRING_WIDGET_TYPES.includes(widget.widgetType)) {
32
153
  return {
33
- content: [{ type: "text", text: `Widget '${widgetId}' is type '${widget.widgetType}', but layout richstring operations only support: ${RICHSTRING_WIDGET_TYPES.join(', ')}` }],
34
- isError: true
154
+ content: [
155
+ {
156
+ type: 'text',
157
+ text: `Widget '${widgetId}' is type '${widget.widgetType}', but layout richstring operations only support: ${RICHSTRING_WIDGET_TYPES.join(', ')}`,
158
+ },
159
+ ],
160
+ isError: true,
35
161
  };
36
162
  }
37
163
  const content = extractStringConfigValue(widget.configuration, 'content');
38
- const result = await richstringExtractWidgets(client, content);
39
- const contentMap = buildContentMap(content, result);
40
- const response = { ...result };
41
- if (contentMap) {
42
- response.contentMap = contentMap;
43
- }
44
- debugLogWithTag('LAYOUT_RICHSTRING', `Successfully extracted ${result.totalCount || 0} widgets`);
164
+ const parsed = parseDecodedRichStringContent(content);
165
+ const response = {
166
+ embeddedWidgets: parsed.embeddedWidgets,
167
+ totalCount: parsed.embeddedWidgets.length,
168
+ contentMap: parsed.contentMap,
169
+ };
170
+ debugLogWithTag('LAYOUT_RICHSTRING', `Successfully extracted ${response.totalCount} widgets`);
45
171
  return {
46
- content: [{ type: "text", text: JSON.stringify(response, null, 2) }]
172
+ content: [{ type: 'text', text: JSON.stringify(response, null, 2) }],
47
173
  };
48
174
  }
49
175
  catch (error) {
50
176
  debugLogWithTag('LAYOUT_RICHSTRING', `Error extracting widgets: ${error instanceof Error ? error.message : String(error)}`);
51
177
  return {
52
- content: [{ type: "text", text: `Error extracting widgets from layout widget: ${error instanceof Error ? error.message : String(error)}` }],
53
- isError: true
178
+ content: [
179
+ {
180
+ type: 'text',
181
+ text: `Error extracting widgets from layout widget: ${error instanceof Error ? error.message : String(error)}`,
182
+ },
183
+ ],
184
+ isError: true,
185
+ };
186
+ }
187
+ });
188
+ server.registerTool(TOOL_RICHSTRING_SET_WIDGET_SCRIPT, LAYOUT_RICHSTRING_WIDGET_TOOL_DEFINITIONS[TOOL_RICHSTRING_SET_WIDGET_SCRIPT], async ({ context, containerWidgetId, embeddedWidgetId, attributeKey, script }) => {
189
+ debugLogWithTag('LAYOUT_RICHSTRING', `set_widget_script container=${containerWidgetId} embedded=${embeddedWidgetId} attr=${attributeKey}`);
190
+ try {
191
+ const loaded = await loadScriptMutationContext(client, context, containerWidgetId, embeddedWidgetId);
192
+ if (!loaded.ok) {
193
+ return { content: [{ type: 'text', text: loaded.error }], isError: true };
194
+ }
195
+ loaded.ctx.targetWidget.properties[attributeKey] = script;
196
+ const committed = await commitScriptMutation(client, context, containerWidgetId, loaded.ctx);
197
+ if (!committed.ok) {
198
+ return {
199
+ content: [{ type: 'text', text: `Error writing layout: ${committed.error}` }],
200
+ isError: true,
201
+ };
202
+ }
203
+ return {
204
+ content: [
205
+ {
206
+ type: 'text',
207
+ text: JSON.stringify({
208
+ operation: 'SET_WIDGET_SCRIPT',
209
+ containerWidgetId,
210
+ embeddedWidgetId,
211
+ attributeKey,
212
+ status: committed.status,
213
+ scriptLength: script.length,
214
+ }, null, 2),
215
+ },
216
+ ],
217
+ };
218
+ }
219
+ catch (e) {
220
+ return {
221
+ content: [
222
+ {
223
+ type: 'text',
224
+ text: `Error setting widget script: ${e instanceof Error ? e.message : String(e)}`,
225
+ },
226
+ ],
227
+ isError: true,
228
+ };
229
+ }
230
+ });
231
+ server.registerTool(TOOL_RICHSTRING_EDIT_WIDGET_SCRIPT, LAYOUT_RICHSTRING_WIDGET_TOOL_DEFINITIONS[TOOL_RICHSTRING_EDIT_WIDGET_SCRIPT], async ({ context, containerWidgetId, embeddedWidgetId, attributeKey, oldString, newString, replaceAll = false, }) => {
232
+ debugLogWithTag('LAYOUT_RICHSTRING', `edit_widget_script container=${containerWidgetId} embedded=${embeddedWidgetId} attr=${attributeKey}`);
233
+ try {
234
+ const loaded = await loadScriptMutationContext(client, context, containerWidgetId, embeddedWidgetId);
235
+ if (!loaded.ok) {
236
+ return { content: [{ type: 'text', text: loaded.error }], isError: true };
237
+ }
238
+ const currentRaw = parseScriptEnvelope(loaded.ctx.targetWidget.properties[attributeKey]);
239
+ const replaced = applyStrReplace(currentRaw, oldString, newString, replaceAll);
240
+ if (!replaced.success) {
241
+ return { content: [{ type: 'text', text: `Error: ${replaced.error}` }], isError: true };
242
+ }
243
+ loaded.ctx.targetWidget.properties[attributeKey] = replaced.newContent;
244
+ const committed = await commitScriptMutation(client, context, containerWidgetId, loaded.ctx);
245
+ if (!committed.ok) {
246
+ return {
247
+ content: [{ type: 'text', text: `Error writing layout: ${committed.error}` }],
248
+ isError: true,
249
+ };
250
+ }
251
+ return {
252
+ content: [
253
+ {
254
+ type: 'text',
255
+ text: JSON.stringify({
256
+ operation: 'EDIT_WIDGET_SCRIPT',
257
+ containerWidgetId,
258
+ embeddedWidgetId,
259
+ attributeKey,
260
+ status: committed.status,
261
+ replacementCount: replaced.replacementCount,
262
+ }, null, 2),
263
+ },
264
+ ],
265
+ };
266
+ }
267
+ catch (e) {
268
+ return {
269
+ content: [
270
+ {
271
+ type: 'text',
272
+ text: `Error editing widget script: ${e instanceof Error ? e.message : String(e)}`,
273
+ },
274
+ ],
275
+ isError: true,
54
276
  };
55
277
  }
56
278
  });
57
- debugLogWithTag('LAYOUT_RICHSTRING', 'Registered 1 layout richstring widget tool');
279
+ debugLogWithTag('LAYOUT_RICHSTRING', 'Registered 3 layout richstring widget tools');
58
280
  }
59
281
  //# sourceMappingURL=layout-richstring-widgets.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"layout-richstring-widgets.js","sourceRoot":"","sources":["../../src/tools/layout-richstring-widgets.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"layout-richstring-widgets.js","sourceRoot":"","sources":["../../src/tools/layout-richstring-widgets.ts"],"names":[],"mappings":"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"}
@@ -1,5 +1,5 @@
1
- import { McpServer } from "@modelcontextprotocol/sdk/server/mcp.js";
2
- import { z } from "zod";
1
+ import { McpServer } from '@modelcontextprotocol/sdk/server/mcp.js';
2
+ import { z } from 'zod';
3
3
  import { CplaceApiClient } from '../api.js';
4
4
  export declare const LayoutContextSchema: z.ZodEffects<z.ZodUnion<[z.ZodObject<{
5
5
  type: z.ZodLiteral<"page">;
@@ -34,9 +34,10 @@ export declare const LayoutContextSchema: z.ZodEffects<z.ZodUnion<[z.ZodObject<{
34
34
  typeInternalName: string;
35
35
  alternativeLayoutName?: string | undefined;
36
36
  }, unknown>;
37
+ export type LayoutContext = z.infer<typeof LayoutContextSchema>;
37
38
  export declare const LAYOUT_TOOL_DEFINITIONS: {
38
39
  readonly cplace_execute_layout_script: {
39
- readonly description: "Execute a layout script — either a full layout.define() replacement or per-widget edit verbs.\n\nTWO MODES (determined by script content):\n\nMODE 1 — FULL REPLACE (layout.define):\n- Script calls layout.define() exactly once to declare the complete layout structure\n- Replaces the entire layout atomically\n- Same behavior as before\n\nMODE 2 — EDIT VERBS (per-widget):\n- Script calls one or more edit methods: layout.updateWidget(), layout.addWidget(), layout.removeWidget(), layout.moveWidget(), layout.addRow(), layout.compact()\n- Each call collects an operation; all operations commit atomically or fail together\n- Cannot mix layout.define() with edit verbs in the same script\n\nEDIT VERBS:\n layout.updateWidget(\"widgetId\", { \"cf.cplace.x\": newValue }) — partial config merge (only specified keys change)\n layout.addWidget({ widgetType: \"cf.platform.wiki\", position: { rowIndex: 0, columnIndex: 0, widgetIndex: 0 }, configuration: { ... } })\n layout.removeWidget(\"widgetId\")\n layout.moveWidget(\"widgetId\", { rowIndex: 1, columnIndex: 0, widgetIndex: 0 })\n layout.addRow(rowIndex, [6, 6]) — column proportions must sum to 12\n layout.compact() — remove empty rows\n\nWORKFLOW for per-widget edit:\n1. Read: cplace_get_layout_script with widgetIds to get layout.updateWidget() fragments\n2. Edit: modify the config values in the fragment\n3. Execute: post the modified script via this tool\n\nKEY BEHAVIORS (for layout.define mode):\n- The script must call layout.define() exactly once\n- The entire layout is atomically replaced — previous layout is fully overwritten\n- Script timeout: 30 seconds\n- Widget IDs: MUST be omitted from layout.define. Ids are assigned by the server and returned in the response. Use the returned id in subsequent layout.updateWidget() calls.\n\nRESPONSE OUTCOMES:\n- VALID_COMPLETE: Layout saved, all widgets fully configured\n- VALID_INCOMPLETE: Layout saved, but some widgets have missing optional configuration (warnings returned)\n- Validation errors: Layout NOT saved — structural or widget errors returned with details\n- Generic errors: Entity not found, permission denied, script errors\n\nVALIDATION FEEDBACK:\n- Structural errors: invalid column proportions (must be 3-12 each, sum to 12 per row)\n- Widget errors: unknown widget types, invalid configurations\n- Warnings: widgets saved but missing optional configuration (e.g., search filter not set)\n\nTIP: After a VALID_INCOMPLETE response, re-run layout.define() with corrected widget configuration to resolve warnings.\n\nCOMMON WIDGET TYPES (platform, always available):\ncf.platform.attributes, cf.cplace.platform.attributesGroup,\ncf.platform.wiki, cf.platform.richString, cf.cplace.demoWidgets.demoRichString,\ncf.platform.embeddedSearchAsTable, cf.cplace.platform.tableWidget,\ncf.platform.connectedBarChart, cf.platform.connectedPieChart,\ncf.platform.connectedMatrix, cf.platform.connectedTableFilter,\ncf.platform.incomingReferences, cf.platform.comments, cf.platform.files,\ncf.cplace.visualizations.scriptingHighcharts\n\nFor app-dependent widgets not in this list, call cplace_list_widget_definitions with embeddingContext \"AS_WIDGET\".\n\nRICHSTRING WIDGETS AND EMBEDDED WIDGETS (decoded form):\nRichString widgets (cf.platform.richString, cf.cplace.demoWidgets.demoRichString)\nhold HTML in their 'content' config. Embedded widgets inside that HTML are\nexpressed in decoded form:\n <decoded-widget id=\"id_w1\" type=\"cf.platform.singleAttribute\">{\"properties\":{\"attribute\":\"name\"}}</decoded-widget>\n\nSemantics when submitting a script:\n • Tag with an existing id + same type → update (properties replace current)\n • Tag without id → insert new embedded widget (backend assigns id)\n • Existing id omitted from new content → delete\n • Unknown id, duplicate id, or type change for same id → error\n\nRaw base64 <embeddedwidget>BASE64</embeddedwidget> tags are REJECTED on writes.\nFetch current decoded form via cplace_get_layout_script.\n\nIMPORTANT: Decoded <decoded-widget> tags must appear directly inline in a content: value.\nDo NOT build the tag in a variable and pass it — the parser rejects tags outside content: literals.\n ✅ layout.updateWidget(\"id\", { content: '<decoded-widget type=\"...\">...</decoded-widget>' });\n ❌ var tag = '<decoded-widget ...>...</decoded-widget>'; layout.updateWidget(\"id\", { content: tag });\n\nFor atomic single-embedded-widget edits without rewriting the full script,\nsee cplace_layout_richstring_* tools.";
40
+ readonly description: "Execute a layout script — either a full layout.define() replacement or per-widget edit verbs.\n\nTWO MODES (determined by script content):\n\nMODE 1 — FULL REPLACE (layout.define):\n- Script calls layout.define() exactly once to declare the complete layout structure\n- Replaces the entire layout atomically\n- Same behavior as before\n\nMODE 2 — EDIT VERBS (per-widget):\n- Script calls one or more edit methods: layout.updateWidget(), layout.addWidget(), layout.removeWidget(), layout.moveWidget(), layout.addRow(), layout.compact()\n- Each call collects an operation; all operations commit atomically or fail together\n- Cannot mix layout.define() with edit verbs in the same script\n\nEDIT VERBS:\n layout.updateWidget(\"widgetId\", { \"cf.cplace.x\": newValue }) — partial config merge (only specified keys change)\n layout.addWidget({ widgetType: \"cf.platform.wiki\", position: { rowIndex: 0, columnIndex: 0, widgetIndex: 0 }, configuration: { ... } })\n layout.removeWidget(\"widgetId\")\n layout.moveWidget(\"widgetId\", { rowIndex: 1, columnIndex: 0, widgetIndex: 0 })\n layout.addRow(rowIndex, [6, 6]) — column proportions must sum to 12\n layout.compact() — remove empty rows\n\nWORKFLOW for per-widget edit:\n1. Read: cplace_get_layout_script with widgetIds to get layout.updateWidget() fragments\n2. Edit: modify the config values in the fragment\n3. Execute: post the modified script via this tool\n\nKEY BEHAVIORS (for layout.define mode):\n- The script must call layout.define() exactly once\n- The entire layout is atomically replaced — previous layout is fully overwritten\n- Script timeout: 30 seconds\n- Widget IDs: MUST be omitted from layout.define. Ids are assigned by the server and returned in the response. Use the returned id in subsequent layout.updateWidget() calls.\n\nRESPONSE OUTCOMES:\n- VALID_COMPLETE: Layout saved, all widgets fully configured\n- VALID_INCOMPLETE: Layout saved, but some widgets have missing optional configuration (warnings returned)\n- Validation errors: Layout NOT saved — structural or widget errors returned with details\n- Generic errors: Entity not found, permission denied, script errors\n\nVALIDATION FEEDBACK:\n- Structural errors: invalid column proportions (must be 3-12 each, sum to 12 per row)\n- Widget errors: unknown widget types, invalid configurations\n- Warnings: widgets saved but missing optional configuration (e.g., search filter not set)\n\nTIP: After a VALID_INCOMPLETE response, re-run layout.define() with corrected widget configuration to resolve warnings.\n\nCOMMON WIDGET TYPES (platform, always available):\ncf.platform.attributes, cf.cplace.platform.attributesGroup,\ncf.platform.wiki, cf.platform.richString, cf.cplace.demoWidgets.demoRichString,\ncf.platform.embeddedSearchAsTable, cf.cplace.platform.tableWidget,\ncf.platform.connectedBarChart, cf.platform.connectedPieChart,\ncf.platform.connectedMatrix, cf.platform.connectedTableFilter,\ncf.platform.incomingReferences, cf.platform.comments, cf.platform.files,\ncf.cplace.visualizations.scriptingHighcharts\n\nFor app-dependent widgets not in this list, call cplace_list_widget_definitions with embeddingContext \"AS_WIDGET\".\n\nRICHSTRING WIDGETS AND EMBEDDED WIDGETS (decoded form):\nRichString widgets (cf.platform.richString, cf.cplace.demoWidgets.demoRichString)\nhold HTML in their 'content' config. Embedded widgets inside that HTML are\nexpressed in decoded form:\n <decoded-widget id=\"id_w1\" type=\"cf.platform.singleAttribute\">{\"properties\":{\"attribute\":\"name\"}}</decoded-widget>\n\nSemantics when submitting a script:\n • Tag with an existing id + same type → update (properties replace current)\n • Tag without id → insert new embedded widget (backend assigns id)\n • Existing id omitted from new content → delete\n • Unknown id, duplicate id, or type change for same id → error\n\nRaw base64 <embeddedwidget>BASE64</embeddedwidget> tags are REJECTED on writes.\nFetch current decoded form via cplace_get_layout_script.\n\nIMPORTANT: Decoded <decoded-widget> tags must appear directly inline in a content: value.\nDo NOT build the tag in a variable and pass it — the parser rejects tags outside content: literals.\n ✅ layout.updateWidget(\"id\", { content: '<decoded-widget type=\"...\">...</decoded-widget>' });\n ❌ var tag = '<decoded-widget ...>...</decoded-widget>'; layout.updateWidget(\"id\", { content: tag });\n\nEMBEDDED WIDGET SCRIPT ATTRIBUTES — PLACEHOLDER WORKFLOW (REQUIRED):\nFor script-typed attributes on embedded widgets (e.g. cf.cplace.lowCodeWidgets.lowCodeTextWidget.script),\ninitialize the value to a minimal placeholder body inside the inline <decoded-widget> JSON, then fill the\nreal script body afterward via cplace_richstring_set_widget_script (full replace) or\ncplace_richstring_edit_widget_script (str-replace diff). Authoring a non-trivial script body inline\nforces it through four nested encoding layers (HTML → JSON → JS string literal → MCP wire) and is a\ndocumented source of escape-bug churn — the dedicated tools take the script as a plain string in a\nstructured argument and avoid all four layers.\n\nSafe placeholder for cf.cplace.lowCodeWidgets.lowCodeText: return '';\nOther script-bearing widget types: pick any runtime-valid placeholder for that widget.\n\nNon-script attributes (strings, numbers, references, lists) do NOT have this problem and are authored\ninline as normal JSON properties on the <decoded-widget> tag.\n\nFor atomic single-embedded-widget edits without rewriting the full script,\nsee cplace_layout_richstring_* and cplace_richstring_*_widget_script tools.";
40
41
  readonly inputSchema: {
41
42
  readonly context: z.ZodEffects<z.ZodUnion<[z.ZodObject<{
42
43
  type: z.ZodLiteral<"page">;
@@ -203,7 +204,7 @@ export declare const LAYOUT_TOOL_DEFINITIONS: {
203
204
  };
204
205
  };
205
206
  readonly cplace_edit_layout: {
206
- readonly description: "Edit a layout using str_replace — find an exact text match and replace it. Reads the current layout.define() definition, applies the replacement, and writes back. Use this instead of cplace_execute_layout_script when making small changes to large layouts to avoid reproducing the entire definition.\n\nRichString widget content is in decoded form. `old_str` must match the decoded form exactly as returned by cplace_get_layout_script. Raw base64 <embeddedwidget> tags are rejected in both `old_str` and `new_str`.";
207
+ readonly description: "Edit a layout using str_replace — find an exact text match and replace it. Reads the current layout.define() definition, applies the replacement, and writes back. Use this instead of cplace_execute_layout_script when making small changes to large layouts to avoid reproducing the entire definition.\n\nRichString widget content is in decoded form. `old_str` must match the decoded form exactly as returned by cplace_get_layout_script. Raw base64 <embeddedwidget> tags are rejected in both `old_str` and `new_str`.\n\nIMPORTANT: cplace normalizes HTML/CSS on every save (CSS properties are alphabetized, hex colors become rgb(), whitespace is regularized). After this tool completes, the stored content may differ from what was submitted. The response includes the current stored form — use it (not your original input) when constructing the next old_str.";
207
208
  readonly inputSchema: {
208
209
  readonly context: z.ZodEffects<z.ZodUnion<[z.ZodObject<{
209
210
  type: z.ZodLiteral<"page">;
@@ -1 +1 @@
1
- {"version":3,"file":"layout.d.ts","sourceRoot":"","sources":["../../src/tools/layout.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;AAQ5C,eAAO,MAAM,mBAAmB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;WAWgD,CAAC;AAajF,eAAO,MAAM,uBAAuB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAqO1B,CAAC;AAYX,wBAAgB,mBAAmB,CAAC,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,eAAe,QA8V7E"}
1
+ {"version":3,"file":"layout.d.ts","sourceRoot":"","sources":["../../src/tools/layout.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;AAe5C,eAAO,MAAM,mBAAmB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;WAe/B,CAAC;AAGF,MAAM,MAAM,aAAa,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,mBAAmB,CAAC,CAAC;AAUhE,eAAO,MAAM,uBAAuB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAgR1B,CAAC;AAYX,wBAAgB,mBAAmB,CAAC,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,eAAe,QAgf7E"}