@progress/kendo-react-webmcp 15.0.0-develop.2

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 (340) hide show
  1. package/LICENSE.md +11 -0
  2. package/NOTICE.txt +383 -0
  3. package/README.md +72 -0
  4. package/WebMcpProvider.d.ts +49 -0
  5. package/WebMcpProvider.js +8 -0
  6. package/WebMcpProvider.mjs +138 -0
  7. package/adapters/aiprompt.d.ts +15 -0
  8. package/adapters/aiprompt.js +8 -0
  9. package/adapters/aiprompt.mjs +63 -0
  10. package/adapters/autocomplete.d.ts +18 -0
  11. package/adapters/autocomplete.js +8 -0
  12. package/adapters/autocomplete.mjs +69 -0
  13. package/adapters/button.d.ts +18 -0
  14. package/adapters/button.js +8 -0
  15. package/adapters/button.mjs +46 -0
  16. package/adapters/calendar.d.ts +16 -0
  17. package/adapters/calendar.js +8 -0
  18. package/adapters/calendar.mjs +61 -0
  19. package/adapters/chart.d.ts +29 -0
  20. package/adapters/chart.js +8 -0
  21. package/adapters/chart.mjs +95 -0
  22. package/adapters/chat.d.ts +16 -0
  23. package/adapters/chat.js +8 -0
  24. package/adapters/chat.mjs +66 -0
  25. package/adapters/colorpicker.d.ts +16 -0
  26. package/adapters/colorpicker.js +8 -0
  27. package/adapters/colorpicker.mjs +60 -0
  28. package/adapters/combobox.d.ts +20 -0
  29. package/adapters/combobox.js +8 -0
  30. package/adapters/combobox.mjs +87 -0
  31. package/adapters/dashboard.d.ts +18 -0
  32. package/adapters/dashboard.js +8 -0
  33. package/adapters/dashboard.mjs +41 -0
  34. package/adapters/datepicker.d.ts +17 -0
  35. package/adapters/datepicker.js +8 -0
  36. package/adapters/datepicker.mjs +59 -0
  37. package/adapters/daterangepicker.d.ts +19 -0
  38. package/adapters/daterangepicker.js +8 -0
  39. package/adapters/daterangepicker.mjs +70 -0
  40. package/adapters/datetimepicker.d.ts +16 -0
  41. package/adapters/datetimepicker.js +8 -0
  42. package/adapters/datetimepicker.mjs +59 -0
  43. package/adapters/dialog.d.ts +15 -0
  44. package/adapters/dialog.js +8 -0
  45. package/adapters/dialog.mjs +58 -0
  46. package/adapters/drawer.d.ts +33 -0
  47. package/adapters/drawer.js +8 -0
  48. package/adapters/drawer.mjs +86 -0
  49. package/adapters/dropdownlist.d.ts +19 -0
  50. package/adapters/dropdownlist.js +8 -0
  51. package/adapters/dropdownlist.mjs +74 -0
  52. package/adapters/dropdowntree.d.ts +22 -0
  53. package/adapters/dropdowntree.js +8 -0
  54. package/adapters/dropdowntree.mjs +108 -0
  55. package/adapters/editor.d.ts +30 -0
  56. package/adapters/editor.js +8 -0
  57. package/adapters/editor.mjs +109 -0
  58. package/adapters/form.d.ts +20 -0
  59. package/adapters/form.js +10 -0
  60. package/adapters/form.mjs +115 -0
  61. package/adapters/gantt.d.ts +65 -0
  62. package/adapters/gantt.js +8 -0
  63. package/adapters/gantt.mjs +370 -0
  64. package/adapters/grid.d.ts +102 -0
  65. package/adapters/grid.js +8 -0
  66. package/adapters/grid.mjs +692 -0
  67. package/adapters/listbox.d.ts +18 -0
  68. package/adapters/listbox.js +8 -0
  69. package/adapters/listbox.mjs +87 -0
  70. package/adapters/listview.d.ts +22 -0
  71. package/adapters/listview.js +8 -0
  72. package/adapters/listview.mjs +80 -0
  73. package/adapters/map.d.ts +32 -0
  74. package/adapters/map.js +8 -0
  75. package/adapters/map.mjs +88 -0
  76. package/adapters/maskedtextbox.d.ts +17 -0
  77. package/adapters/maskedtextbox.js +8 -0
  78. package/adapters/maskedtextbox.mjs +57 -0
  79. package/adapters/menu.d.ts +16 -0
  80. package/adapters/menu.js +8 -0
  81. package/adapters/menu.mjs +50 -0
  82. package/adapters/multiselect.d.ts +19 -0
  83. package/adapters/multiselect.js +8 -0
  84. package/adapters/multiselect.mjs +75 -0
  85. package/adapters/notification.d.ts +17 -0
  86. package/adapters/notification.js +8 -0
  87. package/adapters/notification.mjs +57 -0
  88. package/adapters/numerictextbox.d.ts +19 -0
  89. package/adapters/numerictextbox.js +8 -0
  90. package/adapters/numerictextbox.mjs +78 -0
  91. package/adapters/panelbar.d.ts +17 -0
  92. package/adapters/panelbar.js +8 -0
  93. package/adapters/panelbar.mjs +66 -0
  94. package/adapters/pivotgrid.d.ts +16 -0
  95. package/adapters/pivotgrid.js +8 -0
  96. package/adapters/pivotgrid.mjs +126 -0
  97. package/adapters/rangeslider.d.ts +21 -0
  98. package/adapters/rangeslider.js +8 -0
  99. package/adapters/rangeslider.mjs +55 -0
  100. package/adapters/rating.d.ts +16 -0
  101. package/adapters/rating.js +8 -0
  102. package/adapters/rating.mjs +60 -0
  103. package/adapters/scheduler.d.ts +45 -0
  104. package/adapters/scheduler.js +8 -0
  105. package/adapters/scheduler.mjs +165 -0
  106. package/adapters/scrollview.d.ts +21 -0
  107. package/adapters/scrollview.js +8 -0
  108. package/adapters/scrollview.mjs +74 -0
  109. package/adapters/signature.d.ts +16 -0
  110. package/adapters/signature.js +8 -0
  111. package/adapters/signature.mjs +47 -0
  112. package/adapters/slider.d.ts +19 -0
  113. package/adapters/slider.js +8 -0
  114. package/adapters/slider.mjs +47 -0
  115. package/adapters/sortable.d.ts +17 -0
  116. package/adapters/sortable.js +8 -0
  117. package/adapters/sortable.mjs +67 -0
  118. package/adapters/spreadsheet.d.ts +32 -0
  119. package/adapters/spreadsheet.js +8 -0
  120. package/adapters/spreadsheet.mjs +256 -0
  121. package/adapters/stepper.d.ts +23 -0
  122. package/adapters/stepper.js +8 -0
  123. package/adapters/stepper.mjs +47 -0
  124. package/adapters/switch.d.ts +17 -0
  125. package/adapters/switch.js +8 -0
  126. package/adapters/switch.mjs +48 -0
  127. package/adapters/tabstrip.d.ts +19 -0
  128. package/adapters/tabstrip.js +8 -0
  129. package/adapters/tabstrip.mjs +47 -0
  130. package/adapters/taskboard.d.ts +20 -0
  131. package/adapters/taskboard.js +8 -0
  132. package/adapters/taskboard.mjs +104 -0
  133. package/adapters/textarea.d.ts +16 -0
  134. package/adapters/textarea.js +8 -0
  135. package/adapters/textarea.mjs +57 -0
  136. package/adapters/textbox.d.ts +19 -0
  137. package/adapters/textbox.js +8 -0
  138. package/adapters/textbox.mjs +61 -0
  139. package/adapters/timepicker.d.ts +16 -0
  140. package/adapters/timepicker.js +8 -0
  141. package/adapters/timepicker.mjs +59 -0
  142. package/adapters/treelist.d.ts +81 -0
  143. package/adapters/treelist.js +8 -0
  144. package/adapters/treelist.mjs +403 -0
  145. package/adapters/treeview.d.ts +25 -0
  146. package/adapters/treeview.js +9 -0
  147. package/adapters/treeview.mjs +212 -0
  148. package/adapters/upload.d.ts +15 -0
  149. package/adapters/upload.js +8 -0
  150. package/adapters/upload.mjs +52 -0
  151. package/adapters/utils.d.ts +16 -0
  152. package/adapters/utils.js +8 -0
  153. package/adapters/utils.mjs +25 -0
  154. package/adapters/window.d.ts +17 -0
  155. package/adapters/window.js +8 -0
  156. package/adapters/window.mjs +99 -0
  157. package/commands/aiprompt.d.ts +30 -0
  158. package/commands/aiprompt.js +8 -0
  159. package/commands/aiprompt.mjs +54 -0
  160. package/commands/autocomplete.d.ts +26 -0
  161. package/commands/autocomplete.js +8 -0
  162. package/commands/autocomplete.mjs +36 -0
  163. package/commands/button.d.ts +19 -0
  164. package/commands/button.js +8 -0
  165. package/commands/button.mjs +21 -0
  166. package/commands/calendar.d.ts +29 -0
  167. package/commands/calendar.js +8 -0
  168. package/commands/calendar.mjs +52 -0
  169. package/commands/chart.d.ts +27 -0
  170. package/commands/chart.js +8 -0
  171. package/commands/chart.mjs +43 -0
  172. package/commands/chat.d.ts +22 -0
  173. package/commands/chat.js +8 -0
  174. package/commands/chat.mjs +30 -0
  175. package/commands/checkbox.d.ts +26 -0
  176. package/commands/checkbox.js +8 -0
  177. package/commands/checkbox.mjs +36 -0
  178. package/commands/colorpicker.d.ts +26 -0
  179. package/commands/colorpicker.js +8 -0
  180. package/commands/colorpicker.mjs +36 -0
  181. package/commands/combobox.d.ts +34 -0
  182. package/commands/combobox.js +8 -0
  183. package/commands/combobox.mjs +48 -0
  184. package/commands/dashboard.d.ts +19 -0
  185. package/commands/dashboard.js +8 -0
  186. package/commands/dashboard.mjs +21 -0
  187. package/commands/datepicker.d.ts +26 -0
  188. package/commands/datepicker.js +8 -0
  189. package/commands/datepicker.mjs +36 -0
  190. package/commands/daterangepicker.d.ts +27 -0
  191. package/commands/daterangepicker.js +8 -0
  192. package/commands/daterangepicker.mjs +37 -0
  193. package/commands/datetimepicker.d.ts +26 -0
  194. package/commands/datetimepicker.js +8 -0
  195. package/commands/datetimepicker.mjs +36 -0
  196. package/commands/dialog.d.ts +23 -0
  197. package/commands/dialog.js +8 -0
  198. package/commands/dialog.mjs +25 -0
  199. package/commands/drawer.d.ts +30 -0
  200. package/commands/drawer.js +8 -0
  201. package/commands/drawer.mjs +38 -0
  202. package/commands/dropdownlist.d.ts +30 -0
  203. package/commands/dropdownlist.js +8 -0
  204. package/commands/dropdownlist.mjs +42 -0
  205. package/commands/dropdowntree.d.ts +34 -0
  206. package/commands/dropdowntree.js +8 -0
  207. package/commands/dropdowntree.mjs +48 -0
  208. package/commands/editor.d.ts +26 -0
  209. package/commands/editor.js +8 -0
  210. package/commands/editor.mjs +36 -0
  211. package/commands/form.d.ts +34 -0
  212. package/commands/form.js +8 -0
  213. package/commands/form.mjs +54 -0
  214. package/commands/gantt.d.ts +119 -0
  215. package/commands/gantt.js +8 -0
  216. package/commands/gantt.mjs +156 -0
  217. package/commands/grid.d.ts +209 -0
  218. package/commands/grid.js +8 -0
  219. package/commands/grid.mjs +280 -0
  220. package/commands/index.d.ts +58 -0
  221. package/commands/listbox.d.ts +31 -0
  222. package/commands/listbox.js +8 -0
  223. package/commands/listbox.mjs +69 -0
  224. package/commands/listview.d.ts +22 -0
  225. package/commands/listview.js +8 -0
  226. package/commands/listview.mjs +29 -0
  227. package/commands/map.d.ts +43 -0
  228. package/commands/map.js +8 -0
  229. package/commands/map.mjs +77 -0
  230. package/commands/maskedtextbox.d.ts +26 -0
  231. package/commands/maskedtextbox.js +8 -0
  232. package/commands/maskedtextbox.mjs +36 -0
  233. package/commands/menu.d.ts +22 -0
  234. package/commands/menu.js +8 -0
  235. package/commands/menu.mjs +30 -0
  236. package/commands/multicolumncombobox.d.ts +34 -0
  237. package/commands/multicolumncombobox.js +8 -0
  238. package/commands/multicolumncombobox.mjs +48 -0
  239. package/commands/multiselect.d.ts +41 -0
  240. package/commands/multiselect.js +8 -0
  241. package/commands/multiselect.mjs +57 -0
  242. package/commands/notification.d.ts +27 -0
  243. package/commands/notification.js +8 -0
  244. package/commands/notification.mjs +46 -0
  245. package/commands/numerictextbox.d.ts +34 -0
  246. package/commands/numerictextbox.js +8 -0
  247. package/commands/numerictextbox.mjs +48 -0
  248. package/commands/panelbar.d.ts +29 -0
  249. package/commands/panelbar.js +8 -0
  250. package/commands/panelbar.mjs +43 -0
  251. package/commands/pivotgrid.d.ts +56 -0
  252. package/commands/pivotgrid.js +8 -0
  253. package/commands/pivotgrid.mjs +87 -0
  254. package/commands/rangeslider.d.ts +23 -0
  255. package/commands/rangeslider.js +8 -0
  256. package/commands/rangeslider.mjs +25 -0
  257. package/commands/rating.d.ts +26 -0
  258. package/commands/rating.js +8 -0
  259. package/commands/rating.mjs +36 -0
  260. package/commands/scheduler.d.ts +45 -0
  261. package/commands/scheduler.js +8 -0
  262. package/commands/scheduler.mjs +59 -0
  263. package/commands/scrollview.d.ts +30 -0
  264. package/commands/scrollview.js +8 -0
  265. package/commands/scrollview.mjs +46 -0
  266. package/commands/signature.d.ts +19 -0
  267. package/commands/signature.js +8 -0
  268. package/commands/signature.mjs +21 -0
  269. package/commands/slider.d.ts +22 -0
  270. package/commands/slider.js +8 -0
  271. package/commands/slider.mjs +24 -0
  272. package/commands/sortable.d.ts +23 -0
  273. package/commands/sortable.js +8 -0
  274. package/commands/sortable.mjs +32 -0
  275. package/commands/spreadsheet.d.ts +92 -0
  276. package/commands/spreadsheet.js +8 -0
  277. package/commands/spreadsheet.mjs +181 -0
  278. package/commands/stepper.d.ts +22 -0
  279. package/commands/stepper.js +8 -0
  280. package/commands/stepper.mjs +35 -0
  281. package/commands/switch.d.ts +26 -0
  282. package/commands/switch.js +8 -0
  283. package/commands/switch.mjs +36 -0
  284. package/commands/tabstrip.d.ts +23 -0
  285. package/commands/tabstrip.js +8 -0
  286. package/commands/tabstrip.mjs +30 -0
  287. package/commands/taskboard.d.ts +48 -0
  288. package/commands/taskboard.js +8 -0
  289. package/commands/taskboard.mjs +90 -0
  290. package/commands/textarea.d.ts +26 -0
  291. package/commands/textarea.js +8 -0
  292. package/commands/textarea.mjs +36 -0
  293. package/commands/textbox.d.ts +26 -0
  294. package/commands/textbox.js +8 -0
  295. package/commands/textbox.mjs +36 -0
  296. package/commands/timepicker.d.ts +26 -0
  297. package/commands/timepicker.js +8 -0
  298. package/commands/timepicker.mjs +36 -0
  299. package/commands/treelist.d.ts +135 -0
  300. package/commands/treelist.js +8 -0
  301. package/commands/treelist.mjs +177 -0
  302. package/commands/treeview.d.ts +44 -0
  303. package/commands/treeview.js +8 -0
  304. package/commands/treeview.mjs +84 -0
  305. package/commands/upload.d.ts +19 -0
  306. package/commands/upload.js +8 -0
  307. package/commands/upload.mjs +21 -0
  308. package/commands/window.d.ts +35 -0
  309. package/commands/window.js +8 -0
  310. package/commands/window.mjs +45 -0
  311. package/dist/cdn/js/kendo-react-webmcp.js +15 -0
  312. package/grid-mcp-tools.d.ts +26 -0
  313. package/grid-mcp-tools.js +8 -0
  314. package/grid-mcp-tools.mjs +75 -0
  315. package/index.d.mts +68 -0
  316. package/index.d.ts +68 -0
  317. package/index.js +8 -0
  318. package/index.mjs +308 -0
  319. package/mcp-types.d.ts +12 -0
  320. package/package.json +64 -0
  321. package/schemas/common.d.ts +27 -0
  322. package/schemas/common.js +8 -0
  323. package/schemas/common.mjs +113 -0
  324. package/schemas/gantt.d.ts +10 -0
  325. package/schemas/gantt.js +8 -0
  326. package/schemas/gantt.mjs +51 -0
  327. package/schemas/grid.d.ts +10 -0
  328. package/schemas/grid.js +8 -0
  329. package/schemas/grid.mjs +46 -0
  330. package/schemas/index.d.ts +13 -0
  331. package/schemas/input.d.ts +19 -0
  332. package/schemas/input.js +8 -0
  333. package/schemas/input.mjs +137 -0
  334. package/schemas/scheduler.d.ts +11 -0
  335. package/schemas/scheduler.js +8 -0
  336. package/schemas/scheduler.mjs +58 -0
  337. package/schemas/table.d.ts +12 -0
  338. package/schemas/table.js +8 -0
  339. package/schemas/table.mjs +87 -0
  340. package/types.d.ts +39 -0
@@ -0,0 +1,102 @@
1
+ /**
2
+ * @license
3
+ *-------------------------------------------------------------------------------------------
4
+ * Copyright © 2026 Progress Software Corporation. All rights reserved.
5
+ * Licensed under commercial license. See LICENSE.md in the package root for more information
6
+ *-------------------------------------------------------------------------------------------
7
+ */
8
+ import { ToolAdapter } from '../types';
9
+ /**
10
+ * Grid tool adapter for the Web MCP Provider.
11
+ *
12
+ * Reads Grid props (sortable, filterable, groupable, pageable, selectable, etc.)
13
+ * and GridHandle to register data manipulation, column operation, export, and CRUD tools.
14
+ *
15
+ * Imports the shared schema generators from `@progress/kendo-react-common` for rich
16
+ * input schemas with column field enums for better AI agent guidance.
17
+ *
18
+ * Delegates all mutations to public Grid callbacks (onSortChange, onFilterChange, etc.)
19
+ * following the React controlled-component pattern.
20
+ */
21
+ import * as React from 'react';
22
+ interface GridColumnState {
23
+ field?: string;
24
+ id?: string;
25
+ width?: number;
26
+ show?: boolean;
27
+ locked?: boolean;
28
+ orderIndex?: number;
29
+ [key: string]: unknown;
30
+ }
31
+ interface GridAdapterHandle {
32
+ exportAsPdf?: () => void;
33
+ saveAsCsv?: () => Promise<void>;
34
+ saveAsExcel?: () => void;
35
+ getTotal?: () => number;
36
+ getLeafDataItems?: () => unknown[];
37
+ columns?: Array<{
38
+ field?: string;
39
+ id?: string;
40
+ }>;
41
+ element?: HTMLDivElement | null;
42
+ props?: Record<string, unknown>;
43
+ setDetailExpand?: (expand: Record<string, boolean>) => void;
44
+ }
45
+ interface GridAdapterProps {
46
+ data?: unknown;
47
+ children?: React.ReactNode;
48
+ sortable?: boolean | Record<string, unknown>;
49
+ filterable?: boolean | Record<string, unknown>;
50
+ columnMenu?: boolean | React.ComponentType | Record<string, unknown>;
51
+ groupable?: boolean | Record<string, unknown>;
52
+ pageable?: boolean | Record<string, unknown>;
53
+ selectable?: boolean | Record<string, unknown>;
54
+ reorderable?: boolean;
55
+ resizable?: boolean;
56
+ pdf?: Record<string, unknown>;
57
+ excel?: Record<string, unknown>;
58
+ csv?: Record<string, unknown>;
59
+ detailExpand?: Record<string, boolean>;
60
+ dataItemKey?: string;
61
+ sort?: Array<{
62
+ field: string;
63
+ dir?: string;
64
+ }>;
65
+ filter?: {
66
+ logic: string;
67
+ filters: unknown[];
68
+ };
69
+ group?: Array<{
70
+ field: string;
71
+ dir?: string;
72
+ aggregates?: Array<{
73
+ field: string;
74
+ aggregate: string;
75
+ }>;
76
+ }>;
77
+ skip?: number;
78
+ take?: number;
79
+ onSortChange?: (event: Record<string, unknown>) => void;
80
+ onFilterChange?: (event: Record<string, unknown>) => void;
81
+ onGroupChange?: (event: Record<string, unknown>) => void;
82
+ onPageChange?: (event: Record<string, unknown>) => void;
83
+ onDataStateChange?: (event: Record<string, unknown>) => void;
84
+ onHighlightChange?: (event: Record<string, unknown>) => void;
85
+ onSelectionChange?: (event: Record<string, unknown>) => void;
86
+ onHeaderSelectionChange?: (event: Record<string, unknown>) => void;
87
+ onDetailExpandChange?: (event: Record<string, unknown>) => void;
88
+ onGroupExpandChange?: (event: Record<string, unknown>) => void;
89
+ groupExpand?: Array<{
90
+ field: string;
91
+ value: unknown;
92
+ expanded?: boolean;
93
+ }>;
94
+ columnsState?: GridColumnState[];
95
+ onColumnsStateChange?: (event: Record<string, unknown>) => void;
96
+ onItemChange?: (event: Record<string, unknown>) => void;
97
+ editable?: boolean | Record<string, unknown>;
98
+ webMcp?: unknown;
99
+ }
100
+ /** @hidden */
101
+ export declare const gridAdapter: ToolAdapter<GridAdapterHandle, GridAdapterProps>;
102
+ export {};
@@ -0,0 +1,8 @@
1
+ /**
2
+ * @license
3
+ *-------------------------------------------------------------------------------------------
4
+ * Copyright © 2026 Progress Software Corporation. All rights reserved.
5
+ * Licensed under commercial license. See LICENSE.md in the package root for more information
6
+ *-------------------------------------------------------------------------------------------
7
+ */
8
+ "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const Q=require("react"),Y=require("../commands/grid.js");function Z(r){const n=Object.create(null,{[Symbol.toStringTag]:{value:"Module"}});if(r){for(const e in r)if(e!=="default"){const t=Object.getOwnPropertyDescriptor(r,e);Object.defineProperty(n,e,t.get?t:{enumerable:!0,get:()=>r[e]})}}return n.default=r,Object.freeze(n)}const U=Z(Q);function C(r,n,e,t,a){const i=r.current;if(n)n({...e,target:a});else if(i.onDataStateChange){const o={filter:i.filter,sort:i.sort,skip:i.skip,take:i.take,group:i.group};i.onDataStateChange({dataState:{...o,...t},target:a})}}function V(r){const n=[];return U.Children.forEach(r,e=>{if(U.isValidElement(e)&&e.props.field){const t=e.props;n.push({field:t.field,id:t.id||t.field})}}),n}function R(r,n,e){if(!r.field)return{content:[{type:"text",text:"Missing required argument: field"}],isError:!0};const t=r.field,a=r.dir||"asc",i=[{field:t,dir:a}];return C(n,n.current.onSortChange,{sort:i},{sort:i},e),{content:[{type:"text",text:`Sorted by ${t} ${a}.`}]}}function ee(r,n,e,t){var l,s;if(!r.field||!r.operator)return{content:[{type:"text",text:"Missing required arguments: field, operator"}],isError:!0};const a=r.field,i=r.operator,o=r.value,u=n.current,c={logic:"and",filters:[...(s=t!=null?t:(l=u.filter)==null?void 0:l.filters)!=null?s:[],{field:a,operator:i,value:o}]};return C(n,u.onFilterChange,{filter:c},{filter:c,skip:0},e),{content:[{type:"text",text:`Filter applied: ${a} ${i} "${o}".`}]}}function te(r,n,e){var u;if(!r.field)return{content:[{type:"text",text:"Missing required argument: field"}],isError:!0};const t=r.field,a=r.dir||"asc",i=n.current,o=[...(u=i.group)!=null?u:[],{field:t,dir:a}];return C(n,i.onGroupChange,{group:o},{group:o},e),{content:[{type:"text",text:`Grouped by ${t} ${a}.`}]}}function re(r,n,e){var o;const t=Number(r.page);if(!t||t<1)return{content:[{type:"text",text:"Invalid page number."}],isError:!0};const a=(o=n.current.take)!=null?o:10,i=(t-1)*a;return C(n,n.current.onPageChange,{page:{skip:i,take:a}},{skip:i,take:a},e),{content:[{type:"text",text:`Navigated to page ${t}.`}]}}function ne(r,n,e){const t=Number(r.pageSize);return!t||t<1?{content:[{type:"text",text:"Invalid page size."}],isError:!0}:(C(n,n.current.onPageChange,{page:{skip:0,take:t}},{skip:0,take:t},e),{content:[{type:"text",text:`Page size set to ${t}.`}]})}function oe(r,n,e,t,a){const i=e.current;switch(r){case"GridSort":return R(n,e,t);case"GridClearSort":return C(e,i.onSortChange,{sort:[]},{sort:[]},t),{content:[{type:"text",text:"Sorting cleared."}]};case"GridFilter":return ee(n,e,t,a);case"GridClearFilter":{const o={logic:"and",filters:[]};return C(e,i.onFilterChange,{filter:o},{filter:o,skip:0},t),{content:[{type:"text",text:"All filters cleared."}]}}case"GridGroup":return te(n,e,t);case"GridClearGroup":return C(e,i.onGroupChange,{group:[]},{group:[]},t),{content:[{type:"text",text:"Grouping cleared."}]};case"GridPage":return re(n,e,t);case"GridPageSize":return ne(n,e,t);default:return null}}function $(r){return Array.isArray(r)?r:r&&typeof r=="object"&&Array.isArray(r.data)?r.data:[]}function ae(r,n,e){var c,l;if(!r.field||!r.operator)return{content:[{type:"text",text:"Missing required arguments: field, operator"}],isError:!0};const t=r.field,a=r.operator,i=r.value,o=n.current.dataItemKey;if(!o)return{content:[{type:"text",text:"dataItemKey prop is required for highlighting."}],isError:!0};const u=(l=(c=e==null?void 0:e.getLeafDataItems)==null?void 0:c.call(e))!=null?l:$(n.current.data),d={};for(const s of u){const p=s;if(_(p[t],a,i)){const g=N(p[o]);g!==null&&(d[g]=!0)}}return n.current.onHighlightChange&&n.current.onHighlightChange({highlight:d}),{content:[{type:"text",text:`Highlighted rows where ${t} ${a} "${JSON.stringify(i)}".`}]}}function ie(r,n,e){var c,l;if(!r.field||!r.operator)return{content:[{type:"text",text:"Missing required arguments: field, operator"}],isError:!0};const t=r.field,a=r.operator,i=r.value,o=n.current.dataItemKey;if(!o)return{content:[{type:"text",text:"dataItemKey prop is required for selection."}],isError:!0};const u=(l=(c=e==null?void 0:e.getLeafDataItems)==null?void 0:c.call(e))!=null?l:$(n.current.data),d={};for(const s of u){const p=s;if(_(p[t],a,i)){const g=N(p[o]);g!==null&&(d[g]=!0)}}return n.current.onSelectionChange&&n.current.onSelectionChange({select:d,dataItem:null,dataItems:u,startDataItem:null,endDataItem:null,target:e}),{content:[{type:"text",text:`Selected rows where ${t} ${a} "${JSON.stringify(i)}".`}]}}function ce(r,n,e,t,a){const i=n.id;if(!i)return{content:[{type:"text",text:"Missing required argument: id"}],isError:!0};const o=e.current;if(!o.onColumnsStateChange||!t)return{content:[{type:"text",text:"Column state changes not supported."}],isError:!0};const u=o.columnsState||t.columns||[],d=c=>c.id===i||c.field===i;switch(r){case"GridColumnReorder":{const c=Number(n.position);if(Number.isNaN(c))return{content:[{type:"text",text:"Missing required argument: position"}],isError:!0};const l=u.findIndex(d),s=u[l];if(s){const p=[...u];p.splice(l,1),p.splice(c,0,s),o.onColumnsStateChange({columnsState:p.map((g,G)=>({...g,orderIndex:G})),target:t})}return{content:[{type:"text",text:`Column ${i} moved to position ${c}.`}]}}case"GridColumnResize":{const c=Number.parseInt(n.size,10);if(Number.isNaN(c))return{content:[{type:"text",text:"Missing required argument: size"}],isError:!0};const l=u.map(s=>d(s)?{...s,width:c}:s);return o.onColumnsStateChange({columnsState:l,target:t}),{content:[{type:"text",text:`Column ${i} resized to ${c}px.`}]}}case"GridColumnShow":{const c=u.map(l=>d(l)?{...l,hidden:!1}:l);return o.onColumnsStateChange({columnsState:c,target:t}),{content:[{type:"text",text:`Column ${i} is now visible.`}]}}case"GridColumnHide":{const c=u.map(l=>d(l)?{...l,hidden:!0}:l);return o.onColumnsStateChange({columnsState:c,target:t}),{content:[{type:"text",text:`Column ${i} is now hidden.`}]}}case"GridColumnLock":{const c=u.map(l=>d(l)?{...l,locked:!0}:l);return o.onColumnsStateChange({columnsState:c,target:t}),{content:[{type:"text",text:`Column ${i} locked.`}]}}case"GridColumnUnlock":{const c=u.map(l=>d(l)?{...l,locked:!1}:l);return o.onColumnsStateChange({columnsState:c,target:t}),{content:[{type:"text",text:`Column ${i} unlocked.`}]}}default:return null}}function de(r,n,e,t){const a=e.current;if(!a.onItemChange)return null;switch(r){case"GridAdd":return a.onItemChange({dataItem:n,dataIndex:-1,field:void 0,value:void 0,target:t}),{content:[{type:"text",text:"Record added."}]};case"GridUpdate":return a.onItemChange({dataItem:n,dataIndex:-1,field:void 0,value:void 0,target:t}),{content:[{type:"text",text:"Record updated."}]};case"GridDelete":return a.onItemChange({dataItem:n,dataIndex:-1,field:"_deleted",value:!0,target:t}),{content:[{type:"text",text:"Record deleted."}]};default:return null}}function ue(r,n,e,t,a){switch(r){case"GridHighlight":return ae(n,e,t);case"GridClearHighlight":return e.current.onHighlightChange&&e.current.onHighlightChange({highlight:{}}),{content:[{type:"text",text:"Highlights cleared."}]};case"GridSelect":return ie(n,e,t);case"GridClearSelect":return e.current.onSelectionChange&&e.current.onSelectionChange({select:{},target:t}),{content:[{type:"text",text:"Selection cleared."}]};case"GridSelectAll":return le(e,t);case"GridDetailExpand":case"GridDetailCollapse":case"GridDetailExpandAll":case"GridDetailCollapseAll":return se(r,n,e,t);case"GridGroupExpand":case"GridGroupCollapse":case"GridGroupExpandAll":case"GridGroupCollapseAll":return fe(r,n,e,t);case"GridSetAggregates":return me(n,e,t);case"GridExportPDF":return t!=null&&t.exportAsPdf&&t.exportAsPdf(),{content:[{type:"text",text:"PDF export triggered."}]};case"GridExportCSV":return t!=null&&t.saveAsCsv?t.saveAsCsv().then(()=>({content:[{type:"text",text:"CSV export triggered."}]})):{content:[{type:"text",text:"CSV export not available."}],isError:!0};case"GridExportExcel":return t!=null&&t.saveAsExcel&&t.saveAsExcel(),{content:[{type:"text",text:"Excel export triggered."}]};case"GridColumnReorder":case"GridColumnResize":case"GridColumnShow":case"GridColumnHide":case"GridColumnLock":case"GridColumnUnlock":return ce(r,n,e,t);case"GridAdd":case"GridUpdate":case"GridDelete":return de(r,n,e,t);default:return null}}function N(r){return r==null?null:typeof r=="string"||typeof r=="number"?String(r):null}function I(r,n){const e={};for(const t of r){const a=N(t[n]);a!==null&&(e[a]=!0)}return e}function le(r,n){var i,o;const e=r.current;if(!e.onHeaderSelectionChange&&!e.onSelectionChange)return{content:[{type:"text",text:"Selection not enabled."}],isError:!0};const t=(o=(i=n==null?void 0:n.getLeafDataItems)==null?void 0:i.call(n))!=null?o:[],a=e.dataItemKey;if(e.onHeaderSelectionChange){const u=a?I(t,a):{};e.onHeaderSelectionChange({select:u,field:void 0,dataItems:t,target:n})}else if(e.onSelectionChange){if(!a)return{content:[{type:"text",text:"dataItemKey prop is required for select all."}],isError:!0};e.onSelectionChange({select:I(t,a),dataItems:t,target:n})}return{content:[{type:"text",text:"All rows selected."}]}}function se(r,n,e,t){var u,d;const a=e.current;if(!a.onDetailExpandChange)return{content:[{type:"text",text:"onDetailExpandChange callback not provided."}],isError:!0};const i=a.dataItemKey;if(!i)return{content:[{type:"text",text:"dataItemKey prop is required for detail expand."}],isError:!0};const o=(d=(u=t==null?void 0:t.getLeafDataItems)==null?void 0:u.call(t))!=null?d:[];switch(r){case"GridDetailExpandAll":return a.onDetailExpandChange({detailExpand:I(o,i),target:t}),{content:[{type:"text",text:"All detail rows expanded."}]};case"GridDetailCollapseAll":return a.onDetailExpandChange({detailExpand:{},target:t}),{content:[{type:"text",text:"All detail rows collapsed."}]};case"GridDetailExpand":case"GridDetailCollapse":return pe(r,n,a,t,i,o);default:return{content:[{type:"text",text:`Unknown expand command: ${r}`}],isError:!0}}}function pe(r,n,e,t,a,i){var g;if(!n.field||!n.operator)return{content:[{type:"text",text:"Missing required arguments: field, operator"}],isError:!0};const o=n.field,u=n.operator,d=n.value,c=r==="GridDetailExpand",s={...(g=e.detailExpand)!=null?g:{}};for(const G of i){const w=G[o];if(_(w,u,d)){const S=N(G[a]);S!==null&&(c?s[S]=!0:delete s[S])}}return e.onDetailExpandChange&&e.onDetailExpandChange({detailExpand:s,target:t}),{content:[{type:"text",text:`Detail rows ${c?"expanded":"collapsed"} where ${o} ${u} "${d}".`}]}}function _(r,n,e){switch(n){case"eq":return r===e||String(r)===String(e);case"neq":return r!==e&&String(r)!==String(e);case"contains":return typeof r=="string"&&typeof e=="string"&&r.toLowerCase().includes(e.toLowerCase());case"startswith":return typeof r=="string"&&typeof e=="string"&&r.toLowerCase().startsWith(e.toLowerCase());case"gt":return Number(r)>Number(e);case"gte":return Number(r)>=Number(e);case"lt":return Number(r)<Number(e);case"lte":return Number(r)<=Number(e);default:return!1}}function me(r,n,e){const t=n.current;if(!t.groupable)return{content:[{type:"text",text:"Grouping not enabled — aggregates require grouped data."}],isError:!0};if(!t.group||t.group.length===0)return{content:[{type:"text",text:"No active grouping — group the data first."}],isError:!0};if(!r.field||!r.aggregate)return{content:[{type:"text",text:"Missing required arguments: field, aggregate"}],isError:!0};const a=r.field,i=r.aggregate,o={field:a,aggregate:i},u=t.group.map(d=>{var s;const c=(s=d.aggregates)!=null?s:[];return c.some(p=>p.field===a&&p.aggregate===i)?d:{...d,aggregates:[...c,o]}});return C(n,t.onGroupChange,{group:u},{group:u},e),{content:[{type:"text",text:`Aggregate "${i}" added for column "${a}".`}]}}function ge(r,n){const e=[];for(const t of r){const a=new Set;for(const i of n){const o=i[t.field];a.has(o)||(a.add(o),e.push({field:t.field,value:o,expanded:!1}))}}return e}function xe(r,n,e){if(!r.field||r.value==null)return null;const t=r.field,a=r.value,i=typeof a=="string"||typeof a=="number"?String(a):JSON.stringify(a);return{updated:n.find(d=>d.field===t&&String(d.value)===i)?n.map(d=>d.field===t&&String(d.value)===i?{...d,expanded:e}:d):[...n,{field:t,value:a,expanded:e}],field:t,valueStr:i}}function fe(r,n,e,t){var i,o,u;const a=e.current;if(!a.groupable)return{content:[{type:"text",text:"Grouping not enabled."}],isError:!0};if(!a.onGroupExpandChange)return{content:[{type:"text",text:"onGroupExpandChange callback not provided."}],isError:!0};switch(r){case"GridGroupExpandAll":return a.onGroupExpandChange({groupExpand:[],target:t}),{content:[{type:"text",text:"All groups expanded."}]};case"GridGroupCollapseAll":{if(!a.group||a.group.length===0)return{content:[{type:"text",text:"No active grouping."}],isError:!0};const d=(o=(i=t==null?void 0:t.getLeafDataItems)==null?void 0:i.call(t))!=null?o:$(a.data),c=ge(a.group,d);return a.onGroupExpandChange({groupExpand:c,target:t}),{content:[{type:"text",text:"All groups collapsed."}]}}case"GridGroupExpand":case"GridGroupCollapse":{const d=r==="GridGroupExpand",c=xe(n,(u=a.groupExpand)!=null?u:[],d);if(!c)return{content:[{type:"text",text:"Missing required arguments: field, value"}],isError:!0};a.onGroupExpandChange({groupExpand:c.updated,target:t});const l=d?"expanded":"collapsed";return{content:[{type:"text",text:`Group "${c.field}=${c.valueStr}" ${l}.`}]}}default:return{content:[{type:"text",text:`Unknown group expand command: ${r}`}],isError:!0}}}const Ce={componentSuffix:"grid",createTools(r,n,e,t){const a=[],i=m=>`${e.groupName}_${m}`,o=n.current,u=V(o.children),d=!!o.onHighlightChange,c=!!o.selectable,l=c&&(!!o.onHeaderSelectionChange||!!o.dataItemKey),s=!!o.onDetailExpandChange,p=!!o.groupable&&!!o.onGroupExpandChange,g=!!o.pdf,G=!!o.excel,w=!!o.csv,S=!!o.reorderable,j=!!o.resizable,b=!!o.onColumnsStateChange,D=!!o.onItemChange||!!o.editable,k=[{name:"sort",description:`Sort the ${e.dataName} grid by a column`,commandType:"GridSort",enabled:!!(o.sortable||o.columnMenu)},{name:"clear_sort",description:`Remove all sorting from the ${e.dataName} grid`,commandType:"GridClearSort",enabled:!!(o.sortable||o.columnMenu)},{name:"filter",description:`Filter the ${e.dataName} grid on a column`,commandType:"GridFilter",enabled:!!(o.filterable||o.columnMenu)},{name:"clear_filters",description:`Remove all filters from the ${e.dataName} grid`,commandType:"GridClearFilter",enabled:!!(o.filterable||o.columnMenu)},{name:"group",description:`Group the ${e.dataName} grid rows by a column`,commandType:"GridGroup",enabled:!!(o.groupable||o.columnMenu)},{name:"clear_group",description:`Remove all grouping from the ${e.dataName} grid`,commandType:"GridClearGroup",enabled:!!(o.groupable||o.columnMenu)},{name:"page",description:`Navigate to a specific page in the ${e.dataName} grid`,commandType:"GridPage",enabled:!!o.pageable},{name:"set_page_size",description:`Change the number of items per page in the ${e.dataName} grid`,commandType:"GridPageSize",enabled:!!o.pageable},{name:"highlight",description:`Visually highlight rows in the ${e.dataName} grid`,commandType:"GridHighlight",enabled:d},{name:"clear_highlight",description:`Remove all row highlighting from the ${e.dataName} grid`,commandType:"GridClearHighlight",enabled:d},{name:"select",description:`Select rows in the ${e.dataName} grid`,commandType:"GridSelect",enabled:c},{name:"clear_select",description:`Clear all row selections in the ${e.dataName} grid`,commandType:"GridClearSelect",enabled:c},{name:"select_all",description:`Select all rows in the ${e.dataName} grid`,commandType:"GridSelectAll",enabled:l},{name:"detail_expand",description:`Expand detail rows matching a condition in the ${e.dataName} grid`,commandType:"GridDetailExpand",enabled:s},{name:"detail_collapse",description:`Collapse detail rows matching a condition in the ${e.dataName} grid`,commandType:"GridDetailCollapse",enabled:s},{name:"detail_expand_all",description:`Expand all detail rows in the ${e.dataName} grid`,commandType:"GridDetailExpandAll",enabled:s},{name:"detail_collapse_all",description:`Collapse all detail rows in the ${e.dataName} grid`,commandType:"GridDetailCollapseAll",enabled:s},{name:"group_expand",description:`Expand a specific group in the ${e.dataName} grid`,commandType:"GridGroupExpand",enabled:p},{name:"group_collapse",description:`Collapse a specific group in the ${e.dataName} grid`,commandType:"GridGroupCollapse",enabled:p},{name:"group_expand_all",description:`Expand all groups in the ${e.dataName} grid`,commandType:"GridGroupExpandAll",enabled:p},{name:"group_collapse_all",description:`Collapse all groups in the ${e.dataName} grid`,commandType:"GridGroupCollapseAll",enabled:p},{name:"set_aggregates",description:`Add an aggregate function (sum, average, count, min, max) to a column in the ${e.dataName} grid. Requires active grouping.`,commandType:"GridSetAggregates",enabled:!!o.groupable},{name:"export_pdf",description:`Export the ${e.dataName} grid to PDF`,commandType:"GridExportPDF",enabled:g},{name:"export_csv",description:`Export the ${e.dataName} grid to CSV`,commandType:"GridExportCSV",enabled:w},{name:"export_excel",description:`Export the ${e.dataName} grid to Excel`,commandType:"GridExportExcel",enabled:G},{name:"reorder_column",description:`Reorder a column in the ${e.dataName} grid`,commandType:"GridColumnReorder",enabled:S},{name:"resize_column",description:`Resize a column in the ${e.dataName} grid`,commandType:"GridColumnResize",enabled:j},{name:"show_column",description:`Show a hidden column in the ${e.dataName} grid`,commandType:"GridColumnShow",enabled:b},{name:"hide_column",description:`Hide a column in the ${e.dataName} grid`,commandType:"GridColumnHide",enabled:b},{name:"lock_column",description:`Lock a column in the ${e.dataName} grid`,commandType:"GridColumnLock",enabled:b},{name:"unlock_column",description:`Unlock a column in the ${e.dataName} grid`,commandType:"GridColumnUnlock",enabled:b},{name:"add",description:`Add a new record to the ${e.dataName} grid`,commandType:"GridAdd",enabled:D},{name:"update",description:`Update a record in the ${e.dataName} grid`,commandType:"GridUpdate",enabled:D},{name:"delete",description:`Delete a record from the ${e.dataName} grid`,commandType:"GridDelete",enabled:D},{name:"get_data",description:`Read the data currently visible in the ${e.dataName} grid as JSON`,commandType:"GridGetData",enabled:!0}],h=n.current.webMcp,T=typeof h=="object"&&h!==null&&typeof h.tools=="function"?h.tools:void 0,J={tname:i,columns:u,data:o.data},W=T?T(k,J):k;let x=null;const X=async(m,f)=>{var M,q,z,P,F,O,K;const v=(q=x==null?void 0:x.filters)!=null?q:(M=n.current.filter)==null?void 0:M.filters,E=oe(m,f,n,r,v);if(E)return m==="GridFilter"&&f.field&&f.operator?x={logic:"and",filters:[...(F=(P=x==null?void 0:x.filters)!=null?P:(z=n.current.filter)==null?void 0:z.filters)!=null?F:[],{field:f.field,operator:f.operator,value:f.value}]}:m==="GridClearFilter"&&(x={logic:"and",filters:[]}),E;const H=ue(m,f,n,r);if(H)return H;if(m==="GridGetData"){x&&await new Promise(B=>setTimeout(B,100));const A=1e3,y=(K=(O=r==null?void 0:r.getLeafDataItems)==null?void 0:O.call(r))!=null?K:$(n.current.data),L=Array.isArray(y)&&y.length>A?y.slice(0,A):y;return{content:[{type:"text",text:JSON.stringify(L!==y?{rows:L,truncated:!0,total:y.length}:y)}]}}return{content:[{type:"text",text:`Unknown command: ${m}`}],isError:!0}};for(const m of W){if(!m.enabled)continue;const f=Y.getGridToolSchema(m.commandType,u),v=m.commandType;try{a.push(t.registerTool({name:i(m.name),description:m.description,inputSchema:f,execute:async E=>X(v,E||{})}))}catch{}}return a}};exports.gridAdapter=Ce;