@mcp-z/mcp-sheets 1.0.0

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 (363) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +181 -0
  3. package/bin/server.js +5 -0
  4. package/dist/cjs/constants.d.cts +7 -0
  5. package/dist/cjs/constants.d.ts +7 -0
  6. package/dist/cjs/constants.js +18 -0
  7. package/dist/cjs/constants.js.map +1 -0
  8. package/dist/cjs/index.d.cts +8 -0
  9. package/dist/cjs/index.d.ts +8 -0
  10. package/dist/cjs/index.js +314 -0
  11. package/dist/cjs/index.js.map +1 -0
  12. package/dist/cjs/lib/create-store.d.cts +2 -0
  13. package/dist/cjs/lib/create-store.d.ts +2 -0
  14. package/dist/cjs/lib/create-store.js +166 -0
  15. package/dist/cjs/lib/create-store.js.map +1 -0
  16. package/dist/cjs/mcp/index.d.cts +3 -0
  17. package/dist/cjs/mcp/index.d.ts +3 -0
  18. package/dist/cjs/mcp/index.js +66 -0
  19. package/dist/cjs/mcp/index.js.map +1 -0
  20. package/dist/cjs/mcp/prompts/a1-notation.d.cts +19 -0
  21. package/dist/cjs/mcp/prompts/a1-notation.d.ts +19 -0
  22. package/dist/cjs/mcp/prompts/a1-notation.js +169 -0
  23. package/dist/cjs/mcp/prompts/a1-notation.js.map +1 -0
  24. package/dist/cjs/mcp/prompts/index.d.cts +1 -0
  25. package/dist/cjs/mcp/prompts/index.d.ts +1 -0
  26. package/dist/cjs/mcp/prompts/index.js +17 -0
  27. package/dist/cjs/mcp/prompts/index.js.map +1 -0
  28. package/dist/cjs/mcp/resources/index.d.cts +1 -0
  29. package/dist/cjs/mcp/resources/index.d.ts +1 -0
  30. package/dist/cjs/mcp/resources/index.js +17 -0
  31. package/dist/cjs/mcp/resources/index.js.map +1 -0
  32. package/dist/cjs/mcp/resources/spreadsheet.d.cts +2 -0
  33. package/dist/cjs/mcp/resources/spreadsheet.d.ts +2 -0
  34. package/dist/cjs/mcp/resources/spreadsheet.js +258 -0
  35. package/dist/cjs/mcp/resources/spreadsheet.js.map +1 -0
  36. package/dist/cjs/mcp/tools/cells-format.d.cts +144 -0
  37. package/dist/cjs/mcp/tools/cells-format.d.ts +144 -0
  38. package/dist/cjs/mcp/tools/cells-format.js +484 -0
  39. package/dist/cjs/mcp/tools/cells-format.js.map +1 -0
  40. package/dist/cjs/mcp/tools/chart-create.d.cts +94 -0
  41. package/dist/cjs/mcp/tools/chart-create.d.ts +94 -0
  42. package/dist/cjs/mcp/tools/chart-create.js +575 -0
  43. package/dist/cjs/mcp/tools/chart-create.js.map +1 -0
  44. package/dist/cjs/mcp/tools/columns-get.d.cts +55 -0
  45. package/dist/cjs/mcp/tools/columns-get.d.ts +55 -0
  46. package/dist/cjs/mcp/tools/columns-get.js +289 -0
  47. package/dist/cjs/mcp/tools/columns-get.js.map +1 -0
  48. package/dist/cjs/mcp/tools/columns-update.d.cts +86 -0
  49. package/dist/cjs/mcp/tools/columns-update.d.ts +86 -0
  50. package/dist/cjs/mcp/tools/columns-update.js +482 -0
  51. package/dist/cjs/mcp/tools/columns-update.js.map +1 -0
  52. package/dist/cjs/mcp/tools/csv-get-columns.d.cts +43 -0
  53. package/dist/cjs/mcp/tools/csv-get-columns.d.ts +43 -0
  54. package/dist/cjs/mcp/tools/csv-get-columns.js +386 -0
  55. package/dist/cjs/mcp/tools/csv-get-columns.js.map +1 -0
  56. package/dist/cjs/mcp/tools/dimensions-batch-update.d.cts +118 -0
  57. package/dist/cjs/mcp/tools/dimensions-batch-update.d.ts +118 -0
  58. package/dist/cjs/mcp/tools/dimensions-batch-update.js +504 -0
  59. package/dist/cjs/mcp/tools/dimensions-batch-update.js.map +1 -0
  60. package/dist/cjs/mcp/tools/dimensions-move.d.cts +86 -0
  61. package/dist/cjs/mcp/tools/dimensions-move.d.ts +86 -0
  62. package/dist/cjs/mcp/tools/dimensions-move.js +359 -0
  63. package/dist/cjs/mcp/tools/dimensions-move.js.map +1 -0
  64. package/dist/cjs/mcp/tools/index.d.cts +26 -0
  65. package/dist/cjs/mcp/tools/index.d.ts +26 -0
  66. package/dist/cjs/mcp/tools/index.js +122 -0
  67. package/dist/cjs/mcp/tools/index.js.map +1 -0
  68. package/dist/cjs/mcp/tools/lib/dimension-operations.d.cts +48 -0
  69. package/dist/cjs/mcp/tools/lib/dimension-operations.d.ts +48 -0
  70. package/dist/cjs/mcp/tools/lib/dimension-operations.js +177 -0
  71. package/dist/cjs/mcp/tools/lib/dimension-operations.js.map +1 -0
  72. package/dist/cjs/mcp/tools/rows-append.d.cts +58 -0
  73. package/dist/cjs/mcp/tools/rows-append.d.ts +58 -0
  74. package/dist/cjs/mcp/tools/rows-append.js +335 -0
  75. package/dist/cjs/mcp/tools/rows-append.js.map +1 -0
  76. package/dist/cjs/mcp/tools/rows-csv-append.d.cts +67 -0
  77. package/dist/cjs/mcp/tools/rows-csv-append.d.ts +67 -0
  78. package/dist/cjs/mcp/tools/rows-csv-append.js +859 -0
  79. package/dist/cjs/mcp/tools/rows-csv-append.js.map +1 -0
  80. package/dist/cjs/mcp/tools/rows-get.d.cts +56 -0
  81. package/dist/cjs/mcp/tools/rows-get.d.ts +56 -0
  82. package/dist/cjs/mcp/tools/rows-get.js +292 -0
  83. package/dist/cjs/mcp/tools/rows-get.js.map +1 -0
  84. package/dist/cjs/mcp/tools/sheet-copy-to.d.cts +68 -0
  85. package/dist/cjs/mcp/tools/sheet-copy-to.d.ts +68 -0
  86. package/dist/cjs/mcp/tools/sheet-copy-to.js +341 -0
  87. package/dist/cjs/mcp/tools/sheet-copy-to.js.map +1 -0
  88. package/dist/cjs/mcp/tools/sheet-copy.d.cts +80 -0
  89. package/dist/cjs/mcp/tools/sheet-copy.d.ts +80 -0
  90. package/dist/cjs/mcp/tools/sheet-copy.js +394 -0
  91. package/dist/cjs/mcp/tools/sheet-copy.js.map +1 -0
  92. package/dist/cjs/mcp/tools/sheet-create.d.cts +56 -0
  93. package/dist/cjs/mcp/tools/sheet-create.d.ts +56 -0
  94. package/dist/cjs/mcp/tools/sheet-create.js +283 -0
  95. package/dist/cjs/mcp/tools/sheet-create.js.map +1 -0
  96. package/dist/cjs/mcp/tools/sheet-delete.d.cts +62 -0
  97. package/dist/cjs/mcp/tools/sheet-delete.d.ts +62 -0
  98. package/dist/cjs/mcp/tools/sheet-delete.js +341 -0
  99. package/dist/cjs/mcp/tools/sheet-delete.js.map +1 -0
  100. package/dist/cjs/mcp/tools/sheet-find.d.cts +48 -0
  101. package/dist/cjs/mcp/tools/sheet-find.d.ts +48 -0
  102. package/dist/cjs/mcp/tools/sheet-find.js +261 -0
  103. package/dist/cjs/mcp/tools/sheet-find.js.map +1 -0
  104. package/dist/cjs/mcp/tools/sheet-rename.d.cts +60 -0
  105. package/dist/cjs/mcp/tools/sheet-rename.d.ts +60 -0
  106. package/dist/cjs/mcp/tools/sheet-rename.js +305 -0
  107. package/dist/cjs/mcp/tools/sheet-rename.js.map +1 -0
  108. package/dist/cjs/mcp/tools/spreadsheet-copy.d.cts +58 -0
  109. package/dist/cjs/mcp/tools/spreadsheet-copy.d.ts +58 -0
  110. package/dist/cjs/mcp/tools/spreadsheet-copy.js +319 -0
  111. package/dist/cjs/mcp/tools/spreadsheet-copy.js.map +1 -0
  112. package/dist/cjs/mcp/tools/spreadsheet-create.d.cts +52 -0
  113. package/dist/cjs/mcp/tools/spreadsheet-create.d.ts +52 -0
  114. package/dist/cjs/mcp/tools/spreadsheet-create.js +270 -0
  115. package/dist/cjs/mcp/tools/spreadsheet-create.js.map +1 -0
  116. package/dist/cjs/mcp/tools/spreadsheet-find.d.cts +58 -0
  117. package/dist/cjs/mcp/tools/spreadsheet-find.d.ts +58 -0
  118. package/dist/cjs/mcp/tools/spreadsheet-find.js +334 -0
  119. package/dist/cjs/mcp/tools/spreadsheet-find.js.map +1 -0
  120. package/dist/cjs/mcp/tools/spreadsheet-rename.d.cts +56 -0
  121. package/dist/cjs/mcp/tools/spreadsheet-rename.d.ts +56 -0
  122. package/dist/cjs/mcp/tools/spreadsheet-rename.js +289 -0
  123. package/dist/cjs/mcp/tools/spreadsheet-rename.js.map +1 -0
  124. package/dist/cjs/mcp/tools/validation-set.d.cts +144 -0
  125. package/dist/cjs/mcp/tools/validation-set.d.ts +144 -0
  126. package/dist/cjs/mcp/tools/validation-set.js +564 -0
  127. package/dist/cjs/mcp/tools/validation-set.js.map +1 -0
  128. package/dist/cjs/mcp/tools/values-batch-update.d.cts +102 -0
  129. package/dist/cjs/mcp/tools/values-batch-update.d.ts +102 -0
  130. package/dist/cjs/mcp/tools/values-batch-update.js +409 -0
  131. package/dist/cjs/mcp/tools/values-batch-update.js.map +1 -0
  132. package/dist/cjs/mcp/tools/values-clear.d.cts +56 -0
  133. package/dist/cjs/mcp/tools/values-clear.d.ts +56 -0
  134. package/dist/cjs/mcp/tools/values-clear.js +308 -0
  135. package/dist/cjs/mcp/tools/values-clear.js.map +1 -0
  136. package/dist/cjs/mcp/tools/values-csv-update.d.cts +75 -0
  137. package/dist/cjs/mcp/tools/values-csv-update.d.ts +75 -0
  138. package/dist/cjs/mcp/tools/values-csv-update.js +500 -0
  139. package/dist/cjs/mcp/tools/values-csv-update.js.map +1 -0
  140. package/dist/cjs/mcp/tools/values-replace.d.cts +68 -0
  141. package/dist/cjs/mcp/tools/values-replace.d.ts +68 -0
  142. package/dist/cjs/mcp/tools/values-replace.js +378 -0
  143. package/dist/cjs/mcp/tools/values-replace.js.map +1 -0
  144. package/dist/cjs/mcp/tools/values-search.d.cts +74 -0
  145. package/dist/cjs/mcp/tools/values-search.d.ts +74 -0
  146. package/dist/cjs/mcp/tools/values-search.js +470 -0
  147. package/dist/cjs/mcp/tools/values-search.js.map +1 -0
  148. package/dist/cjs/package.json +1 -0
  149. package/dist/cjs/schemas/index.d.cts +14 -0
  150. package/dist/cjs/schemas/index.d.ts +14 -0
  151. package/dist/cjs/schemas/index.js +64 -0
  152. package/dist/cjs/schemas/index.js.map +1 -0
  153. package/dist/cjs/setup/config.d.cts +44 -0
  154. package/dist/cjs/setup/config.d.ts +44 -0
  155. package/dist/cjs/setup/config.js +201 -0
  156. package/dist/cjs/setup/config.js.map +1 -0
  157. package/dist/cjs/setup/http.d.cts +8 -0
  158. package/dist/cjs/setup/http.d.ts +8 -0
  159. package/dist/cjs/setup/http.js +260 -0
  160. package/dist/cjs/setup/http.js.map +1 -0
  161. package/dist/cjs/setup/index.d.cts +5 -0
  162. package/dist/cjs/setup/index.d.ts +5 -0
  163. package/dist/cjs/setup/index.js +46 -0
  164. package/dist/cjs/setup/index.js.map +1 -0
  165. package/dist/cjs/setup/oauth-google.d.cts +54 -0
  166. package/dist/cjs/setup/oauth-google.d.ts +54 -0
  167. package/dist/cjs/setup/oauth-google.js +332 -0
  168. package/dist/cjs/setup/oauth-google.js.map +1 -0
  169. package/dist/cjs/setup/runtime.d.cts +10 -0
  170. package/dist/cjs/setup/runtime.d.ts +10 -0
  171. package/dist/cjs/setup/runtime.js +353 -0
  172. package/dist/cjs/setup/runtime.js.map +1 -0
  173. package/dist/cjs/setup/stdio.d.cts +7 -0
  174. package/dist/cjs/setup/stdio.d.ts +7 -0
  175. package/dist/cjs/setup/stdio.js +239 -0
  176. package/dist/cjs/setup/stdio.js.map +1 -0
  177. package/dist/cjs/spreadsheet/column-utilities.d.cts +1 -0
  178. package/dist/cjs/spreadsheet/column-utilities.d.ts +1 -0
  179. package/dist/cjs/spreadsheet/column-utilities.js +21 -0
  180. package/dist/cjs/spreadsheet/column-utilities.js.map +1 -0
  181. package/dist/cjs/spreadsheet/csv-streaming.d.cts +19 -0
  182. package/dist/cjs/spreadsheet/csv-streaming.d.ts +19 -0
  183. package/dist/cjs/spreadsheet/csv-streaming.js +188 -0
  184. package/dist/cjs/spreadsheet/csv-streaming.js.map +1 -0
  185. package/dist/cjs/spreadsheet/data-operations.d.cts +115 -0
  186. package/dist/cjs/spreadsheet/data-operations.d.ts +115 -0
  187. package/dist/cjs/spreadsheet/data-operations.js +1515 -0
  188. package/dist/cjs/spreadsheet/data-operations.js.map +1 -0
  189. package/dist/cjs/spreadsheet/deduplication-utils.d.cts +31 -0
  190. package/dist/cjs/spreadsheet/deduplication-utils.d.ts +31 -0
  191. package/dist/cjs/spreadsheet/deduplication-utils.js +65 -0
  192. package/dist/cjs/spreadsheet/deduplication-utils.js.map +1 -0
  193. package/dist/cjs/spreadsheet/range-operations.d.cts +184 -0
  194. package/dist/cjs/spreadsheet/range-operations.d.ts +184 -0
  195. package/dist/cjs/spreadsheet/range-operations.js +672 -0
  196. package/dist/cjs/spreadsheet/range-operations.js.map +1 -0
  197. package/dist/cjs/spreadsheet/sheet-operations.d.cts +30 -0
  198. package/dist/cjs/spreadsheet/sheet-operations.d.ts +30 -0
  199. package/dist/cjs/spreadsheet/sheet-operations.js +811 -0
  200. package/dist/cjs/spreadsheet/sheet-operations.js.map +1 -0
  201. package/dist/cjs/spreadsheet/spreadsheet-management.d.cts +21 -0
  202. package/dist/cjs/spreadsheet/spreadsheet-management.d.ts +21 -0
  203. package/dist/cjs/spreadsheet/spreadsheet-management.js +310 -0
  204. package/dist/cjs/spreadsheet/spreadsheet-management.js.map +1 -0
  205. package/dist/cjs/types.d.cts +53 -0
  206. package/dist/cjs/types.d.ts +53 -0
  207. package/dist/cjs/types.js +5 -0
  208. package/dist/cjs/types.js.map +1 -0
  209. package/dist/esm/constants.d.ts +7 -0
  210. package/dist/esm/constants.js +7 -0
  211. package/dist/esm/constants.js.map +1 -0
  212. package/dist/esm/index.d.ts +8 -0
  213. package/dist/esm/index.js +34 -0
  214. package/dist/esm/index.js.map +1 -0
  215. package/dist/esm/lib/create-store.d.ts +2 -0
  216. package/dist/esm/lib/create-store.js +6 -0
  217. package/dist/esm/lib/create-store.js.map +1 -0
  218. package/dist/esm/mcp/index.d.ts +3 -0
  219. package/dist/esm/mcp/index.js +6 -0
  220. package/dist/esm/mcp/index.js.map +1 -0
  221. package/dist/esm/mcp/prompts/a1-notation.d.ts +19 -0
  222. package/dist/esm/mcp/prompts/a1-notation.js +49 -0
  223. package/dist/esm/mcp/prompts/a1-notation.js.map +1 -0
  224. package/dist/esm/mcp/prompts/index.d.ts +1 -0
  225. package/dist/esm/mcp/prompts/index.js +1 -0
  226. package/dist/esm/mcp/prompts/index.js.map +1 -0
  227. package/dist/esm/mcp/resources/index.d.ts +1 -0
  228. package/dist/esm/mcp/resources/index.js +1 -0
  229. package/dist/esm/mcp/resources/index.js.map +1 -0
  230. package/dist/esm/mcp/resources/spreadsheet.d.ts +2 -0
  231. package/dist/esm/mcp/resources/spreadsheet.js +88 -0
  232. package/dist/esm/mcp/resources/spreadsheet.js.map +1 -0
  233. package/dist/esm/mcp/tools/cells-format.d.ts +144 -0
  234. package/dist/esm/mcp/tools/cells-format.js +288 -0
  235. package/dist/esm/mcp/tools/cells-format.js.map +1 -0
  236. package/dist/esm/mcp/tools/chart-create.d.ts +94 -0
  237. package/dist/esm/mcp/tools/chart-create.js +408 -0
  238. package/dist/esm/mcp/tools/chart-create.js.map +1 -0
  239. package/dist/esm/mcp/tools/columns-get.d.ts +55 -0
  240. package/dist/esm/mcp/tools/columns-get.js +113 -0
  241. package/dist/esm/mcp/tools/columns-get.js.map +1 -0
  242. package/dist/esm/mcp/tools/columns-update.d.ts +86 -0
  243. package/dist/esm/mcp/tools/columns-update.js +296 -0
  244. package/dist/esm/mcp/tools/columns-update.js.map +1 -0
  245. package/dist/esm/mcp/tools/csv-get-columns.d.ts +43 -0
  246. package/dist/esm/mcp/tools/csv-get-columns.js +95 -0
  247. package/dist/esm/mcp/tools/csv-get-columns.js.map +1 -0
  248. package/dist/esm/mcp/tools/dimensions-batch-update.d.ts +118 -0
  249. package/dist/esm/mcp/tools/dimensions-batch-update.js +321 -0
  250. package/dist/esm/mcp/tools/dimensions-batch-update.js.map +1 -0
  251. package/dist/esm/mcp/tools/dimensions-move.d.ts +86 -0
  252. package/dist/esm/mcp/tools/dimensions-move.js +183 -0
  253. package/dist/esm/mcp/tools/dimensions-move.js.map +1 -0
  254. package/dist/esm/mcp/tools/index.d.ts +26 -0
  255. package/dist/esm/mcp/tools/index.js +26 -0
  256. package/dist/esm/mcp/tools/index.js.map +1 -0
  257. package/dist/esm/mcp/tools/lib/dimension-operations.d.ts +48 -0
  258. package/dist/esm/mcp/tools/lib/dimension-operations.js +93 -0
  259. package/dist/esm/mcp/tools/lib/dimension-operations.js.map +1 -0
  260. package/dist/esm/mcp/tools/rows-append.d.ts +58 -0
  261. package/dist/esm/mcp/tools/rows-append.js +151 -0
  262. package/dist/esm/mcp/tools/rows-append.js.map +1 -0
  263. package/dist/esm/mcp/tools/rows-csv-append.d.ts +67 -0
  264. package/dist/esm/mcp/tools/rows-csv-append.js +342 -0
  265. package/dist/esm/mcp/tools/rows-csv-append.js.map +1 -0
  266. package/dist/esm/mcp/tools/rows-get.d.ts +56 -0
  267. package/dist/esm/mcp/tools/rows-get.js +116 -0
  268. package/dist/esm/mcp/tools/rows-get.js.map +1 -0
  269. package/dist/esm/mcp/tools/sheet-copy-to.d.ts +68 -0
  270. package/dist/esm/mcp/tools/sheet-copy-to.js +156 -0
  271. package/dist/esm/mcp/tools/sheet-copy-to.js.map +1 -0
  272. package/dist/esm/mcp/tools/sheet-copy.d.ts +80 -0
  273. package/dist/esm/mcp/tools/sheet-copy.js +177 -0
  274. package/dist/esm/mcp/tools/sheet-copy.js.map +1 -0
  275. package/dist/esm/mcp/tools/sheet-create.d.ts +56 -0
  276. package/dist/esm/mcp/tools/sheet-create.js +110 -0
  277. package/dist/esm/mcp/tools/sheet-create.js.map +1 -0
  278. package/dist/esm/mcp/tools/sheet-delete.d.ts +62 -0
  279. package/dist/esm/mcp/tools/sheet-delete.js +125 -0
  280. package/dist/esm/mcp/tools/sheet-delete.js.map +1 -0
  281. package/dist/esm/mcp/tools/sheet-find.d.ts +48 -0
  282. package/dist/esm/mcp/tools/sheet-find.js +90 -0
  283. package/dist/esm/mcp/tools/sheet-find.js.map +1 -0
  284. package/dist/esm/mcp/tools/sheet-rename.d.ts +60 -0
  285. package/dist/esm/mcp/tools/sheet-rename.js +128 -0
  286. package/dist/esm/mcp/tools/sheet-rename.js.map +1 -0
  287. package/dist/esm/mcp/tools/spreadsheet-copy.d.ts +58 -0
  288. package/dist/esm/mcp/tools/spreadsheet-copy.js +117 -0
  289. package/dist/esm/mcp/tools/spreadsheet-copy.js.map +1 -0
  290. package/dist/esm/mcp/tools/spreadsheet-create.d.ts +52 -0
  291. package/dist/esm/mcp/tools/spreadsheet-create.js +97 -0
  292. package/dist/esm/mcp/tools/spreadsheet-create.js.map +1 -0
  293. package/dist/esm/mcp/tools/spreadsheet-find.d.ts +58 -0
  294. package/dist/esm/mcp/tools/spreadsheet-find.js +113 -0
  295. package/dist/esm/mcp/tools/spreadsheet-find.js.map +1 -0
  296. package/dist/esm/mcp/tools/spreadsheet-rename.d.ts +56 -0
  297. package/dist/esm/mcp/tools/spreadsheet-rename.js +112 -0
  298. package/dist/esm/mcp/tools/spreadsheet-rename.js.map +1 -0
  299. package/dist/esm/mcp/tools/validation-set.d.ts +144 -0
  300. package/dist/esm/mcp/tools/validation-set.js +366 -0
  301. package/dist/esm/mcp/tools/validation-set.js.map +1 -0
  302. package/dist/esm/mcp/tools/values-batch-update.d.ts +102 -0
  303. package/dist/esm/mcp/tools/values-batch-update.js +224 -0
  304. package/dist/esm/mcp/tools/values-batch-update.js.map +1 -0
  305. package/dist/esm/mcp/tools/values-clear.d.ts +56 -0
  306. package/dist/esm/mcp/tools/values-clear.js +131 -0
  307. package/dist/esm/mcp/tools/values-clear.js.map +1 -0
  308. package/dist/esm/mcp/tools/values-csv-update.d.ts +75 -0
  309. package/dist/esm/mcp/tools/values-csv-update.js +202 -0
  310. package/dist/esm/mcp/tools/values-csv-update.js.map +1 -0
  311. package/dist/esm/mcp/tools/values-replace.d.ts +68 -0
  312. package/dist/esm/mcp/tools/values-replace.js +171 -0
  313. package/dist/esm/mcp/tools/values-replace.js.map +1 -0
  314. package/dist/esm/mcp/tools/values-search.d.ts +74 -0
  315. package/dist/esm/mcp/tools/values-search.js +229 -0
  316. package/dist/esm/mcp/tools/values-search.js.map +1 -0
  317. package/dist/esm/package.json +1 -0
  318. package/dist/esm/schemas/index.d.ts +14 -0
  319. package/dist/esm/schemas/index.js +35 -0
  320. package/dist/esm/schemas/index.js.map +1 -0
  321. package/dist/esm/setup/config.d.ts +44 -0
  322. package/dist/esm/setup/config.js +151 -0
  323. package/dist/esm/setup/config.js.map +1 -0
  324. package/dist/esm/setup/http.d.ts +8 -0
  325. package/dist/esm/setup/http.js +54 -0
  326. package/dist/esm/setup/http.js.map +1 -0
  327. package/dist/esm/setup/index.d.ts +5 -0
  328. package/dist/esm/setup/index.js +5 -0
  329. package/dist/esm/setup/index.js.map +1 -0
  330. package/dist/esm/setup/oauth-google.d.ts +54 -0
  331. package/dist/esm/setup/oauth-google.js +142 -0
  332. package/dist/esm/setup/oauth-google.js.map +1 -0
  333. package/dist/esm/setup/runtime.d.ts +10 -0
  334. package/dist/esm/setup/runtime.js +84 -0
  335. package/dist/esm/setup/runtime.js.map +1 -0
  336. package/dist/esm/setup/stdio.d.ts +7 -0
  337. package/dist/esm/setup/stdio.js +38 -0
  338. package/dist/esm/setup/stdio.js.map +1 -0
  339. package/dist/esm/spreadsheet/column-utilities.d.ts +1 -0
  340. package/dist/esm/spreadsheet/column-utilities.js +10 -0
  341. package/dist/esm/spreadsheet/column-utilities.js.map +1 -0
  342. package/dist/esm/spreadsheet/csv-streaming.d.ts +19 -0
  343. package/dist/esm/spreadsheet/csv-streaming.js +43 -0
  344. package/dist/esm/spreadsheet/csv-streaming.js.map +1 -0
  345. package/dist/esm/spreadsheet/data-operations.d.ts +115 -0
  346. package/dist/esm/spreadsheet/data-operations.js +712 -0
  347. package/dist/esm/spreadsheet/data-operations.js.map +1 -0
  348. package/dist/esm/spreadsheet/deduplication-utils.d.ts +31 -0
  349. package/dist/esm/spreadsheet/deduplication-utils.js +54 -0
  350. package/dist/esm/spreadsheet/deduplication-utils.js.map +1 -0
  351. package/dist/esm/spreadsheet/range-operations.d.ts +184 -0
  352. package/dist/esm/spreadsheet/range-operations.js +591 -0
  353. package/dist/esm/spreadsheet/range-operations.js.map +1 -0
  354. package/dist/esm/spreadsheet/sheet-operations.d.ts +30 -0
  355. package/dist/esm/spreadsheet/sheet-operations.js +359 -0
  356. package/dist/esm/spreadsheet/sheet-operations.js.map +1 -0
  357. package/dist/esm/spreadsheet/spreadsheet-management.d.ts +21 -0
  358. package/dist/esm/spreadsheet/spreadsheet-management.js +73 -0
  359. package/dist/esm/spreadsheet/spreadsheet-management.js.map +1 -0
  360. package/dist/esm/types.d.ts +53 -0
  361. package/dist/esm/types.js +1 -0
  362. package/dist/esm/types.js.map +1 -0
  363. package/package.json +108 -0
@@ -0,0 +1,504 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", {
3
+ value: true
4
+ });
5
+ Object.defineProperty(exports, "default", {
6
+ enumerable: true,
7
+ get: function() {
8
+ return createTool;
9
+ }
10
+ });
11
+ var _oauthgoogle = require("@mcp-z/oauth-google");
12
+ var _types = require("@modelcontextprotocol/sdk/types.js");
13
+ var _googleapis = require("googleapis");
14
+ var _zod = require("zod");
15
+ var _index = require("../../schemas/index.js");
16
+ var _dimensionoperations = require("./lib/dimension-operations.js");
17
+ function asyncGeneratorStep(gen, resolve, reject, _next, _throw, key, arg) {
18
+ try {
19
+ var info = gen[key](arg);
20
+ var value = info.value;
21
+ } catch (error) {
22
+ reject(error);
23
+ return;
24
+ }
25
+ if (info.done) {
26
+ resolve(value);
27
+ } else {
28
+ Promise.resolve(value).then(_next, _throw);
29
+ }
30
+ }
31
+ function _async_to_generator(fn) {
32
+ return function() {
33
+ var self = this, args = arguments;
34
+ return new Promise(function(resolve, reject) {
35
+ var gen = fn.apply(self, args);
36
+ function _next(value) {
37
+ asyncGeneratorStep(gen, resolve, reject, _next, _throw, "next", value);
38
+ }
39
+ function _throw(err) {
40
+ asyncGeneratorStep(gen, resolve, reject, _next, _throw, "throw", err);
41
+ }
42
+ _next(undefined);
43
+ });
44
+ };
45
+ }
46
+ function _instanceof(left, right) {
47
+ if (right != null && typeof Symbol !== "undefined" && right[Symbol.hasInstance]) {
48
+ return !!right[Symbol.hasInstance](left);
49
+ } else {
50
+ return left instanceof right;
51
+ }
52
+ }
53
+ function _ts_generator(thisArg, body) {
54
+ var f, y, t, _ = {
55
+ label: 0,
56
+ sent: function() {
57
+ if (t[0] & 1) throw t[1];
58
+ return t[1];
59
+ },
60
+ trys: [],
61
+ ops: []
62
+ }, g = Object.create((typeof Iterator === "function" ? Iterator : Object).prototype), d = Object.defineProperty;
63
+ return d(g, "next", {
64
+ value: verb(0)
65
+ }), d(g, "throw", {
66
+ value: verb(1)
67
+ }), d(g, "return", {
68
+ value: verb(2)
69
+ }), typeof Symbol === "function" && d(g, Symbol.iterator, {
70
+ value: function() {
71
+ return this;
72
+ }
73
+ }), g;
74
+ function verb(n) {
75
+ return function(v) {
76
+ return step([
77
+ n,
78
+ v
79
+ ]);
80
+ };
81
+ }
82
+ function step(op) {
83
+ if (f) throw new TypeError("Generator is already executing.");
84
+ while(g && (g = 0, op[0] && (_ = 0)), _)try {
85
+ if (f = 1, y && (t = op[0] & 2 ? y["return"] : op[0] ? y["throw"] || ((t = y["return"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;
86
+ if (y = 0, t) op = [
87
+ op[0] & 2,
88
+ t.value
89
+ ];
90
+ switch(op[0]){
91
+ case 0:
92
+ case 1:
93
+ t = op;
94
+ break;
95
+ case 4:
96
+ _.label++;
97
+ return {
98
+ value: op[1],
99
+ done: false
100
+ };
101
+ case 5:
102
+ _.label++;
103
+ y = op[1];
104
+ op = [
105
+ 0
106
+ ];
107
+ continue;
108
+ case 7:
109
+ op = _.ops.pop();
110
+ _.trys.pop();
111
+ continue;
112
+ default:
113
+ if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) {
114
+ _ = 0;
115
+ continue;
116
+ }
117
+ if (op[0] === 3 && (!t || op[1] > t[0] && op[1] < t[3])) {
118
+ _.label = op[1];
119
+ break;
120
+ }
121
+ if (op[0] === 6 && _.label < t[1]) {
122
+ _.label = t[1];
123
+ t = op;
124
+ break;
125
+ }
126
+ if (t && _.label < t[2]) {
127
+ _.label = t[2];
128
+ _.ops.push(op);
129
+ break;
130
+ }
131
+ if (t[2]) _.ops.pop();
132
+ _.trys.pop();
133
+ continue;
134
+ }
135
+ op = body.call(thisArg, _);
136
+ } catch (e) {
137
+ op = [
138
+ 6,
139
+ e
140
+ ];
141
+ y = 0;
142
+ } finally{
143
+ f = t = 0;
144
+ }
145
+ if (op[0] & 5) throw op[1];
146
+ return {
147
+ value: op[0] ? op[1] : void 0,
148
+ done: true
149
+ };
150
+ }
151
+ }
152
+ var AuthRequiredBranchSchema = _oauthgoogle.schemas.AuthRequiredBranchSchema;
153
+ // Input schema for dimension batch update requests
154
+ var DimensionRequestSchema = _zod.z.object({
155
+ operation: _zod.z.enum([
156
+ 'insertDimension',
157
+ 'deleteDimension',
158
+ 'appendDimension'
159
+ ]).describe('Type of dimension operation to perform'),
160
+ dimension: _zod.z.enum([
161
+ 'ROWS',
162
+ 'COLUMNS'
163
+ ]).describe('Whether to operate on rows or columns'),
164
+ startIndex: _zod.z.number().int().nonnegative().describe('Starting index for the operation (0-based)'),
165
+ endIndex: _zod.z.number().int().nonnegative().optional().describe('Ending index for the operation (0-based, exclusive). Optional - if omitted, the range is unbounded (extends to the end of the sheet)'),
166
+ inheritFromBefore: _zod.z.boolean().optional().describe('For insertDimension: whether new rows/columns inherit properties from the row/column before the insertion point')
167
+ });
168
+ var inputSchema = _zod.z.object({
169
+ id: _index.SpreadsheetIdSchema,
170
+ gid: _index.SheetGidSchema,
171
+ requests: _zod.z.array(DimensionRequestSchema).min(1).describe('Array of dimension update requests')
172
+ });
173
+ // Success branch schema
174
+ var successBranchSchema = _zod.z.object({
175
+ type: _zod.z.literal('success'),
176
+ id: _index.SpreadsheetIdOutput,
177
+ gid: _index.SheetGidOutput,
178
+ spreadsheetTitle: _zod.z.string().describe('Title of the updated spreadsheet'),
179
+ spreadsheetUrl: _zod.z.string().describe('URL of the updated spreadsheet'),
180
+ sheetTitle: _zod.z.string().describe('Title of the updated sheet'),
181
+ sheetUrl: _zod.z.string().describe('URL of the updated sheet'),
182
+ totalOperations: _zod.z.number().int().nonnegative().describe('Total number of dimension operations performed'),
183
+ operationResults: _zod.z.array(_zod.z.object({
184
+ operation: _zod.z.enum([
185
+ 'insertDimension',
186
+ 'deleteDimension',
187
+ 'appendDimension'
188
+ ]).describe('Type of operation that was performed'),
189
+ dimension: _zod.z.enum([
190
+ 'ROWS',
191
+ 'COLUMNS'
192
+ ]).describe('Dimension that was operated on'),
193
+ startIndex: _zod.z.number().int().nonnegative().describe('Starting index of the operation'),
194
+ endIndex: _zod.z.number().int().nonnegative().optional().describe('Ending index of the operation (for insert/delete)'),
195
+ affectedCount: _zod.z.number().int().nonnegative().describe('Number of rows/columns affected by this operation')
196
+ })).describe('Detailed results for each dimension operation'),
197
+ updatedDimensions: _zod.z.object({
198
+ rows: _zod.z.number().int().nonnegative().describe('Total number of rows in the sheet after all operations'),
199
+ columns: _zod.z.number().int().nonnegative().describe('Total number of columns in the sheet after all operations')
200
+ }).describe('Final dimensions of the sheet after all operations')
201
+ });
202
+ var outputSchema = _zod.z.discriminatedUnion('type', [
203
+ successBranchSchema,
204
+ AuthRequiredBranchSchema
205
+ ]);
206
+ var config = {
207
+ description: 'Batch update sheet dimensions by inserting, deleting, or appending rows/columns. Operations are atomic (all succeed or all fail) and execute in optimal order automatically.',
208
+ inputSchema: inputSchema,
209
+ outputSchema: _zod.z.object({
210
+ result: outputSchema
211
+ })
212
+ };
213
+ function handler(_0, _1) {
214
+ return _async_to_generator(function(param, extra) {
215
+ var id, gid, requests, _logger_debug, logger, _ref, _spreadsheetData_spreadsheetUrl, _sheet_properties_title, _ref1, _ref2, _spreadsheetData_properties, _spreadsheetData_sheets, _sheet_properties_gridProperties, _sheet_properties_gridProperties1, _logger_debug1, _logger_debug2, sheets, spreadsheetResponse, spreadsheetData, spreadsheetTitle, spreadsheetUrl, sheet, _logger_warn, sheetTitle, sheetId, _logger_error, sheetUrl, currentRowCount, currentColumnCount, sortedRequests, batchRequests, batchUpdateResponse, updateResult, _logger_error1, replies, expectedCount, actualCount, _logger_error2, i, reply, request, _logger_error3, _logger_error4, finalRowCount, finalColumnCount, operationResults, _logger_warn1, _logger_warn2, result, error, _logger_error5, message;
216
+ return _ts_generator(this, function(_state) {
217
+ switch(_state.label){
218
+ case 0:
219
+ id = param.id, gid = param.gid, requests = param.requests;
220
+ logger = extra.logger;
221
+ (_logger_debug = logger.debug) === null || _logger_debug === void 0 ? void 0 : _logger_debug.call(logger, 'sheets.dimensions.batchUpdate called', {
222
+ id: id,
223
+ gid: gid,
224
+ requestCount: requests.length,
225
+ operations: requests.map(function(r) {
226
+ return {
227
+ operation: r.operation,
228
+ dimension: r.dimension,
229
+ startIndex: r.startIndex,
230
+ endIndex: r.endIndex
231
+ };
232
+ })
233
+ });
234
+ _state.label = 1;
235
+ case 1:
236
+ _state.trys.push([
237
+ 1,
238
+ 4,
239
+ ,
240
+ 5
241
+ ]);
242
+ sheets = _googleapis.google.sheets({
243
+ version: 'v4',
244
+ auth: extra.authContext.auth
245
+ });
246
+ return [
247
+ 4,
248
+ sheets.spreadsheets.get({
249
+ spreadsheetId: id,
250
+ fields: 'properties.title,spreadsheetUrl,sheets.properties.sheetId,sheets.properties.title,sheets.properties.gridProperties'
251
+ })
252
+ ];
253
+ case 2:
254
+ spreadsheetResponse = _state.sent();
255
+ spreadsheetData = spreadsheetResponse.data;
256
+ spreadsheetTitle = (_ref = (_spreadsheetData_properties = spreadsheetData.properties) === null || _spreadsheetData_properties === void 0 ? void 0 : _spreadsheetData_properties.title) !== null && _ref !== void 0 ? _ref : '';
257
+ spreadsheetUrl = (_spreadsheetData_spreadsheetUrl = spreadsheetData.spreadsheetUrl) !== null && _spreadsheetData_spreadsheetUrl !== void 0 ? _spreadsheetData_spreadsheetUrl : '';
258
+ // Find sheet by gid
259
+ sheet = (_spreadsheetData_sheets = spreadsheetData.sheets) === null || _spreadsheetData_sheets === void 0 ? void 0 : _spreadsheetData_sheets.find(function(s) {
260
+ var _s_properties;
261
+ return String((_s_properties = s.properties) === null || _s_properties === void 0 ? void 0 : _s_properties.sheetId) === gid;
262
+ });
263
+ if (!(sheet === null || sheet === void 0 ? void 0 : sheet.properties)) {
264
+ ;
265
+ (_logger_warn = logger.warn) === null || _logger_warn === void 0 ? void 0 : _logger_warn.call(logger, 'Sheet not found for dimensions batch update', {
266
+ id: id,
267
+ gid: gid,
268
+ requestCount: requests.length
269
+ });
270
+ throw new _types.McpError(_types.ErrorCode.InvalidParams, "Sheet not found: ".concat(gid));
271
+ }
272
+ sheetTitle = (_sheet_properties_title = sheet.properties.title) !== null && _sheet_properties_title !== void 0 ? _sheet_properties_title : gid;
273
+ sheetId = sheet.properties.sheetId;
274
+ if (sheetId === undefined || sheetId === null) {
275
+ ;
276
+ (_logger_error = logger.error) === null || _logger_error === void 0 ? void 0 : _logger_error.call(logger, 'Sheet ID not available for dimensions batch update', {
277
+ id: id,
278
+ gid: gid,
279
+ sheetTitle: sheetTitle
280
+ });
281
+ throw new _types.McpError(_types.ErrorCode.InternalError, "Sheet ID not available for ".concat(gid, ". Cannot perform dimension operations without valid sheet ID."));
282
+ }
283
+ sheetUrl = "https://docs.google.com/spreadsheets/d/".concat(id, "/edit#gid=").concat(sheetId);
284
+ // Get current sheet dimensions for response calculation
285
+ // Note: Google Sheets API may not always provide gridProperties for older sheets
286
+ // Fall back to Google's documented defaults for new sheets
287
+ currentRowCount = (_ref1 = (_sheet_properties_gridProperties = sheet.properties.gridProperties) === null || _sheet_properties_gridProperties === void 0 ? void 0 : _sheet_properties_gridProperties.rowCount) !== null && _ref1 !== void 0 ? _ref1 : _dimensionoperations.DEFAULT_ROW_COUNT;
288
+ currentColumnCount = (_ref2 = (_sheet_properties_gridProperties1 = sheet.properties.gridProperties) === null || _sheet_properties_gridProperties1 === void 0 ? void 0 : _sheet_properties_gridProperties1.columnCount) !== null && _ref2 !== void 0 ? _ref2 : _dimensionoperations.DEFAULT_COLUMN_COUNT;
289
+ // Sort operations for optimal execution order to prevent index conflicts
290
+ // Delete operations are processed first (high to low index) to avoid shifting issues
291
+ // Insert/append operations are processed after (low to high index)
292
+ sortedRequests = (0, _dimensionoperations.sortOperations)(requests);
293
+ // Build Google Sheets API batch update requests
294
+ batchRequests = sortedRequests.map(function(operation) {
295
+ return (0, _dimensionoperations.buildDimensionRequest)(operation, sheetId);
296
+ });
297
+ (_logger_debug1 = logger.debug) === null || _logger_debug1 === void 0 ? void 0 : _logger_debug1.call(logger, 'sheets.dimensions.batchUpdate executing batch request', {
298
+ spreadsheetId: id,
299
+ sheetTitle: sheetTitle,
300
+ sheetId: sheetId,
301
+ totalOperations: batchRequests.length,
302
+ operationTypes: sortedRequests.map(function(r) {
303
+ return r.operation;
304
+ }),
305
+ operationDetails: sortedRequests.map(function(r, i) {
306
+ return {
307
+ index: i,
308
+ operation: r.operation,
309
+ dimension: r.dimension,
310
+ startIndex: r.startIndex,
311
+ endIndex: r.endIndex,
312
+ affectedCount: (0, _dimensionoperations.calculateAffectedCount)(r)
313
+ };
314
+ }),
315
+ currentDimensions: {
316
+ rows: currentRowCount,
317
+ columns: currentColumnCount
318
+ }
319
+ });
320
+ return [
321
+ 4,
322
+ sheets.spreadsheets.batchUpdate({
323
+ spreadsheetId: id,
324
+ requestBody: {
325
+ requests: batchRequests,
326
+ includeSpreadsheetInResponse: false
327
+ }
328
+ })
329
+ ];
330
+ case 3:
331
+ batchUpdateResponse = _state.sent();
332
+ updateResult = batchUpdateResponse.data;
333
+ // Comprehensive validation of batch update results
334
+ if (!updateResult) {
335
+ ;
336
+ (_logger_error1 = logger.error) === null || _logger_error1 === void 0 ? void 0 : _logger_error1.call(logger, 'Dimensions batch update failed - no response data', {
337
+ spreadsheetId: id,
338
+ sheetTitle: sheetTitle,
339
+ requestCount: requests.length
340
+ });
341
+ throw new _types.McpError(_types.ErrorCode.InternalError, 'Batch update failed: no response data received from Google Sheets API');
342
+ }
343
+ replies = updateResult.replies || [];
344
+ expectedCount = requests.length;
345
+ actualCount = replies.length;
346
+ // Validate operation count matches expectations
347
+ if (actualCount !== expectedCount) {
348
+ ;
349
+ (_logger_error2 = logger.error) === null || _logger_error2 === void 0 ? void 0 : _logger_error2.call(logger, 'Dimensions batch update failed - operation count mismatch', {
350
+ expectedOperations: expectedCount,
351
+ actualReplies: actualCount,
352
+ spreadsheetId: id,
353
+ sheetTitle: sheetTitle,
354
+ receivedReplies: replies.map(function(reply, index) {
355
+ return {
356
+ index: index,
357
+ replyType: Object.keys(reply || {})[0] || 'empty'
358
+ };
359
+ })
360
+ });
361
+ throw new _types.McpError(_types.ErrorCode.InternalError, "Batch operation failed: expected ".concat(expectedCount, " operations, received ").concat(actualCount, " replies. This may indicate a partial failure or Google API issue."));
362
+ }
363
+ // Validate each reply exists - Google Sheets API may return empty objects for successful operations
364
+ for(i = 0; i < replies.length; i++){
365
+ reply = replies[i];
366
+ request = sortedRequests[i];
367
+ if (!request) {
368
+ ;
369
+ (_logger_error3 = logger.error) === null || _logger_error3 === void 0 ? void 0 : _logger_error3.call(logger, 'Dimensions batch update failed - missing request', {
370
+ replyIndex: i,
371
+ hasReply: !!reply,
372
+ hasRequest: !!request,
373
+ spreadsheetId: id,
374
+ sheetTitle: sheetTitle
375
+ });
376
+ throw new _types.McpError(_types.ErrorCode.InternalError, "Operation ".concat(i, " failed: missing request data"));
377
+ }
378
+ // Note: Google Sheets API often returns empty objects {} for successful dimension operations
379
+ // This is normal behavior and indicates success, not failure
380
+ // We validate that the reply exists (even if empty) rather than checking specific keys
381
+ if (reply === null || reply === undefined) {
382
+ ;
383
+ (_logger_error4 = logger.error) === null || _logger_error4 === void 0 ? void 0 : _logger_error4.call(logger, 'Dimensions batch update failed - null reply', {
384
+ operationIndex: i,
385
+ expectedOperation: request.operation,
386
+ spreadsheetId: id,
387
+ sheetTitle: sheetTitle
388
+ });
389
+ throw new _types.McpError(_types.ErrorCode.InternalError, "Operation ".concat(i, " (").concat(request.operation, ") failed: null reply from Google Sheets API"));
390
+ }
391
+ }
392
+ // Calculate final dimensions and operation results
393
+ // Note: We calculate based on the operations we performed, but actual dimensions
394
+ // may vary slightly due to Google Sheets internal behavior (e.g., minimum dimensions)
395
+ finalRowCount = currentRowCount;
396
+ finalColumnCount = currentColumnCount;
397
+ operationResults = sortedRequests.map(function(operation, _index) {
398
+ var affectedCount = (0, _dimensionoperations.calculateAffectedCount)(operation);
399
+ // Update dimension counts based on operation
400
+ // Operations are applied in sorted order, so this should match actual result
401
+ if (operation.dimension === 'ROWS') {
402
+ if (operation.operation === 'insertDimension') {
403
+ finalRowCount += affectedCount;
404
+ } else if (operation.operation === 'appendDimension') {
405
+ finalRowCount += affectedCount;
406
+ } else if (operation.operation === 'deleteDimension') {
407
+ finalRowCount = Math.max(1, finalRowCount - affectedCount); // Google Sheets minimum 1 row
408
+ }
409
+ } else if (operation.dimension === 'COLUMNS') {
410
+ if (operation.operation === 'insertDimension') {
411
+ finalColumnCount += affectedCount;
412
+ } else if (operation.operation === 'appendDimension') {
413
+ finalColumnCount += affectedCount;
414
+ } else if (operation.operation === 'deleteDimension') {
415
+ finalColumnCount = Math.max(1, finalColumnCount - affectedCount); // Google Sheets minimum 1 column
416
+ }
417
+ }
418
+ return {
419
+ operation: operation.operation,
420
+ dimension: operation.dimension,
421
+ startIndex: operation.startIndex,
422
+ endIndex: operation.endIndex,
423
+ affectedCount: affectedCount
424
+ };
425
+ });
426
+ // Validate final dimensions are within Google Sheets limits
427
+ if (finalRowCount > _dimensionoperations.MAX_ROW_COUNT) {
428
+ ;
429
+ (_logger_warn1 = logger.warn) === null || _logger_warn1 === void 0 ? void 0 : _logger_warn1.call(logger, 'Final row count exceeds Google Sheets maximum', {
430
+ finalRowCount: finalRowCount,
431
+ maxRowCount: _dimensionoperations.MAX_ROW_COUNT,
432
+ spreadsheetId: id,
433
+ sheetTitle: sheetTitle
434
+ });
435
+ }
436
+ if (finalColumnCount > _dimensionoperations.MAX_COLUMN_COUNT) {
437
+ ;
438
+ (_logger_warn2 = logger.warn) === null || _logger_warn2 === void 0 ? void 0 : _logger_warn2.call(logger, 'Final column count exceeds Google Sheets maximum', {
439
+ finalColumnCount: finalColumnCount,
440
+ maxColumnCount: _dimensionoperations.MAX_COLUMN_COUNT,
441
+ spreadsheetId: id,
442
+ sheetTitle: sheetTitle
443
+ });
444
+ }
445
+ (_logger_debug2 = logger.debug) === null || _logger_debug2 === void 0 ? void 0 : _logger_debug2.call(logger, 'sheets.dimensions.batchUpdate completed successfully', {
446
+ totalOperations: requests.length,
447
+ finalRowCount: finalRowCount,
448
+ finalColumnCount: finalColumnCount,
449
+ operationResults: operationResults.length
450
+ });
451
+ result = {
452
+ type: 'success',
453
+ id: id,
454
+ gid: String(sheetId),
455
+ spreadsheetTitle: spreadsheetTitle || '',
456
+ spreadsheetUrl: spreadsheetUrl || '',
457
+ sheetTitle: sheetTitle,
458
+ sheetUrl: sheetUrl,
459
+ totalOperations: requests.length,
460
+ operationResults: operationResults,
461
+ updatedDimensions: {
462
+ rows: finalRowCount,
463
+ columns: finalColumnCount
464
+ }
465
+ };
466
+ return [
467
+ 2,
468
+ {
469
+ content: [
470
+ {
471
+ type: 'text',
472
+ text: JSON.stringify(result)
473
+ }
474
+ ],
475
+ structuredContent: {
476
+ result: result
477
+ }
478
+ }
479
+ ];
480
+ case 4:
481
+ error = _state.sent();
482
+ message = _instanceof(error, Error) ? error.message : String(error);
483
+ (_logger_error5 = logger.error) === null || _logger_error5 === void 0 ? void 0 : _logger_error5.call(logger, 'sheets.dimensions.batchUpdate error', {
484
+ error: message
485
+ });
486
+ throw new _types.McpError(_types.ErrorCode.InternalError, "Error batch updating dimensions: ".concat(message), {
487
+ stack: _instanceof(error, Error) ? error.stack : undefined
488
+ });
489
+ case 5:
490
+ return [
491
+ 2
492
+ ];
493
+ }
494
+ });
495
+ }).apply(this, arguments);
496
+ }
497
+ function createTool() {
498
+ return {
499
+ name: 'dimensions-batch-update',
500
+ config: config,
501
+ handler: handler
502
+ };
503
+ }
504
+ /* CJS INTEROP */ if (exports.__esModule && exports.default) { try { Object.defineProperty(exports.default, '__esModule', { value: true }); for (var key in exports) { exports.default[key] = exports[key]; } } catch (_) {}; module.exports = exports.default; }
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["/Users/kevin/Dev/Projects/ai/mcp-z/servers/mcp-sheets/src/mcp/tools/dimensions-batch-update.ts"],"sourcesContent":["import type { EnrichedExtra } from '@mcp-z/oauth-google';\nimport { schemas } from '@mcp-z/oauth-google';\n\nconst { AuthRequiredBranchSchema } = schemas;\n\nimport type { ToolModule } from '@mcp-z/server';\nimport type { CallToolResult } from '@modelcontextprotocol/sdk/types.js';\nimport { ErrorCode, McpError } from '@modelcontextprotocol/sdk/types.js';\nimport { google } from 'googleapis';\nimport { z } from 'zod';\nimport { SheetGidOutput, SheetGidSchema, SpreadsheetIdOutput, SpreadsheetIdSchema } from '../../schemas/index.js';\nimport { buildDimensionRequest, calculateAffectedCount, DEFAULT_COLUMN_COUNT, DEFAULT_ROW_COUNT, type DimensionRequest, MAX_COLUMN_COUNT, MAX_ROW_COUNT, sortOperations } from './lib/dimension-operations.js';\n\n// Input schema for dimension batch update requests\nconst DimensionRequestSchema = z.object({\n operation: z.enum(['insertDimension', 'deleteDimension', 'appendDimension']).describe('Type of dimension operation to perform'),\n dimension: z.enum(['ROWS', 'COLUMNS']).describe('Whether to operate on rows or columns'),\n startIndex: z.number().int().nonnegative().describe('Starting index for the operation (0-based)'),\n endIndex: z.number().int().nonnegative().optional().describe('Ending index for the operation (0-based, exclusive). Optional - if omitted, the range is unbounded (extends to the end of the sheet)'),\n inheritFromBefore: z.boolean().optional().describe('For insertDimension: whether new rows/columns inherit properties from the row/column before the insertion point'),\n});\n\nconst inputSchema = z.object({\n id: SpreadsheetIdSchema,\n gid: SheetGidSchema,\n requests: z.array(DimensionRequestSchema).min(1).describe('Array of dimension update requests'),\n});\n\n// Success branch schema\nconst successBranchSchema = z.object({\n type: z.literal('success'),\n id: SpreadsheetIdOutput,\n gid: SheetGidOutput,\n spreadsheetTitle: z.string().describe('Title of the updated spreadsheet'),\n spreadsheetUrl: z.string().describe('URL of the updated spreadsheet'),\n sheetTitle: z.string().describe('Title of the updated sheet'),\n sheetUrl: z.string().describe('URL of the updated sheet'),\n totalOperations: z.number().int().nonnegative().describe('Total number of dimension operations performed'),\n operationResults: z\n .array(\n z.object({\n operation: z.enum(['insertDimension', 'deleteDimension', 'appendDimension']).describe('Type of operation that was performed'),\n dimension: z.enum(['ROWS', 'COLUMNS']).describe('Dimension that was operated on'),\n startIndex: z.number().int().nonnegative().describe('Starting index of the operation'),\n endIndex: z.number().int().nonnegative().optional().describe('Ending index of the operation (for insert/delete)'),\n affectedCount: z.number().int().nonnegative().describe('Number of rows/columns affected by this operation'),\n })\n )\n .describe('Detailed results for each dimension operation'),\n updatedDimensions: z\n .object({\n rows: z.number().int().nonnegative().describe('Total number of rows in the sheet after all operations'),\n columns: z.number().int().nonnegative().describe('Total number of columns in the sheet after all operations'),\n })\n .describe('Final dimensions of the sheet after all operations'),\n});\n\nconst outputSchema = z.discriminatedUnion('type', [successBranchSchema, AuthRequiredBranchSchema]);\n\nconst config = {\n description: 'Batch update sheet dimensions by inserting, deleting, or appending rows/columns. Operations are atomic (all succeed or all fail) and execute in optimal order automatically.',\n inputSchema,\n outputSchema: z.object({\n result: outputSchema,\n }),\n} as const;\n\nexport type Input = z.infer<typeof inputSchema>;\nexport type Output = z.infer<typeof outputSchema>;\n\nasync function handler({ id, gid, requests }: Input, extra: EnrichedExtra): Promise<CallToolResult> {\n const logger = extra.logger;\n logger.debug?.('sheets.dimensions.batchUpdate called', {\n id,\n gid,\n requestCount: requests.length,\n operations: requests.map((r) => ({ operation: r.operation, dimension: r.dimension, startIndex: r.startIndex, endIndex: r.endIndex })),\n });\n\n try {\n const sheets = google.sheets({ version: 'v4', auth: extra.authContext.auth });\n\n // Get spreadsheet and sheet info in single API call\n const spreadsheetResponse = await sheets.spreadsheets.get({\n spreadsheetId: id,\n fields: 'properties.title,spreadsheetUrl,sheets.properties.sheetId,sheets.properties.title,sheets.properties.gridProperties',\n });\n\n const spreadsheetData = spreadsheetResponse.data;\n const spreadsheetTitle = spreadsheetData.properties?.title ?? '';\n const spreadsheetUrl = spreadsheetData.spreadsheetUrl ?? '';\n\n // Find sheet by gid\n const sheet = spreadsheetData.sheets?.find((s) => String(s.properties?.sheetId) === gid);\n if (!sheet?.properties) {\n logger.warn?.('Sheet not found for dimensions batch update', { id, gid, requestCount: requests.length });\n throw new McpError(ErrorCode.InvalidParams, `Sheet not found: ${gid}`);\n }\n\n const sheetTitle = sheet.properties.title ?? gid;\n const sheetId = sheet.properties.sheetId;\n\n if (sheetId === undefined || sheetId === null) {\n logger.error?.('Sheet ID not available for dimensions batch update', { id, gid, sheetTitle });\n throw new McpError(ErrorCode.InternalError, `Sheet ID not available for ${gid}. Cannot perform dimension operations without valid sheet ID.`);\n }\n\n const sheetUrl = `https://docs.google.com/spreadsheets/d/${id}/edit#gid=${sheetId}`;\n\n // Get current sheet dimensions for response calculation\n // Note: Google Sheets API may not always provide gridProperties for older sheets\n // Fall back to Google's documented defaults for new sheets\n const currentRowCount = sheet.properties.gridProperties?.rowCount ?? DEFAULT_ROW_COUNT;\n const currentColumnCount = sheet.properties.gridProperties?.columnCount ?? DEFAULT_COLUMN_COUNT;\n\n // Sort operations for optimal execution order to prevent index conflicts\n // Delete operations are processed first (high to low index) to avoid shifting issues\n // Insert/append operations are processed after (low to high index)\n const sortedRequests = sortOperations(requests as DimensionRequest[]);\n\n // Build Google Sheets API batch update requests\n const batchRequests = sortedRequests.map((operation) => buildDimensionRequest(operation, sheetId));\n\n logger.debug?.('sheets.dimensions.batchUpdate executing batch request', {\n spreadsheetId: id,\n sheetTitle,\n sheetId,\n totalOperations: batchRequests.length,\n operationTypes: sortedRequests.map((r) => r.operation),\n operationDetails: sortedRequests.map((r, i) => ({\n index: i,\n operation: r.operation,\n dimension: r.dimension,\n startIndex: r.startIndex,\n endIndex: r.endIndex,\n affectedCount: calculateAffectedCount(r),\n })),\n currentDimensions: { rows: currentRowCount, columns: currentColumnCount },\n });\n\n // Execute the atomic batch update\n const batchUpdateResponse = await sheets.spreadsheets.batchUpdate({\n spreadsheetId: id,\n requestBody: {\n requests: batchRequests,\n includeSpreadsheetInResponse: false, // We don't need the full spreadsheet data back\n },\n });\n\n const updateResult = batchUpdateResponse.data;\n\n // Comprehensive validation of batch update results\n if (!updateResult) {\n logger.error?.('Dimensions batch update failed - no response data', {\n spreadsheetId: id,\n sheetTitle,\n requestCount: requests.length,\n });\n throw new McpError(ErrorCode.InternalError, 'Batch update failed: no response data received from Google Sheets API');\n }\n\n const replies = updateResult.replies || [];\n const expectedCount = requests.length;\n const actualCount = replies.length;\n\n // Validate operation count matches expectations\n if (actualCount !== expectedCount) {\n logger.error?.('Dimensions batch update failed - operation count mismatch', {\n expectedOperations: expectedCount,\n actualReplies: actualCount,\n spreadsheetId: id,\n sheetTitle,\n receivedReplies: replies.map((reply, index) => ({\n index,\n replyType: Object.keys(reply || {})[0] || 'empty',\n })),\n });\n\n throw new McpError(ErrorCode.InternalError, `Batch operation failed: expected ${expectedCount} operations, received ${actualCount} replies. This may indicate a partial failure or Google API issue.`);\n }\n\n // Validate each reply exists - Google Sheets API may return empty objects for successful operations\n for (let i = 0; i < replies.length; i++) {\n const reply = replies[i];\n const request = sortedRequests[i];\n\n if (!request) {\n logger.error?.('Dimensions batch update failed - missing request', {\n replyIndex: i,\n hasReply: !!reply,\n hasRequest: !!request,\n spreadsheetId: id,\n sheetTitle,\n });\n throw new McpError(ErrorCode.InternalError, `Operation ${i} failed: missing request data`);\n }\n\n // Note: Google Sheets API often returns empty objects {} for successful dimension operations\n // This is normal behavior and indicates success, not failure\n // We validate that the reply exists (even if empty) rather than checking specific keys\n if (reply === null || reply === undefined) {\n logger.error?.('Dimensions batch update failed - null reply', {\n operationIndex: i,\n expectedOperation: request.operation,\n spreadsheetId: id,\n sheetTitle,\n });\n throw new McpError(ErrorCode.InternalError, `Operation ${i} (${request.operation}) failed: null reply from Google Sheets API`);\n }\n }\n\n // Calculate final dimensions and operation results\n // Note: We calculate based on the operations we performed, but actual dimensions\n // may vary slightly due to Google Sheets internal behavior (e.g., minimum dimensions)\n let finalRowCount = currentRowCount;\n let finalColumnCount = currentColumnCount;\n\n const operationResults = sortedRequests.map((operation, _index) => {\n const affectedCount = calculateAffectedCount(operation);\n\n // Update dimension counts based on operation\n // Operations are applied in sorted order, so this should match actual result\n if (operation.dimension === 'ROWS') {\n if (operation.operation === 'insertDimension') {\n finalRowCount += affectedCount;\n } else if (operation.operation === 'appendDimension') {\n finalRowCount += affectedCount;\n } else if (operation.operation === 'deleteDimension') {\n finalRowCount = Math.max(1, finalRowCount - affectedCount); // Google Sheets minimum 1 row\n }\n } else if (operation.dimension === 'COLUMNS') {\n if (operation.operation === 'insertDimension') {\n finalColumnCount += affectedCount;\n } else if (operation.operation === 'appendDimension') {\n finalColumnCount += affectedCount;\n } else if (operation.operation === 'deleteDimension') {\n finalColumnCount = Math.max(1, finalColumnCount - affectedCount); // Google Sheets minimum 1 column\n }\n }\n\n return {\n operation: operation.operation,\n dimension: operation.dimension,\n startIndex: operation.startIndex,\n endIndex: operation.endIndex,\n affectedCount,\n };\n });\n\n // Validate final dimensions are within Google Sheets limits\n if (finalRowCount > MAX_ROW_COUNT) {\n logger.warn?.('Final row count exceeds Google Sheets maximum', {\n finalRowCount,\n maxRowCount: MAX_ROW_COUNT,\n spreadsheetId: id,\n sheetTitle,\n });\n }\n if (finalColumnCount > MAX_COLUMN_COUNT) {\n logger.warn?.('Final column count exceeds Google Sheets maximum', {\n finalColumnCount,\n maxColumnCount: MAX_COLUMN_COUNT,\n spreadsheetId: id,\n sheetTitle,\n });\n }\n\n logger.debug?.('sheets.dimensions.batchUpdate completed successfully', {\n totalOperations: requests.length,\n finalRowCount,\n finalColumnCount,\n operationResults: operationResults.length,\n });\n\n const result: Output = {\n type: 'success' as const,\n id,\n gid: String(sheetId),\n spreadsheetTitle: spreadsheetTitle || '',\n spreadsheetUrl: spreadsheetUrl || '',\n sheetTitle,\n sheetUrl,\n totalOperations: requests.length,\n operationResults,\n updatedDimensions: {\n rows: finalRowCount,\n columns: finalColumnCount,\n },\n };\n\n return {\n content: [{ type: 'text' as const, text: JSON.stringify(result) }],\n structuredContent: { result },\n };\n } catch (error) {\n const message = error instanceof Error ? error.message : String(error);\n logger.error?.('sheets.dimensions.batchUpdate error', { error: message });\n throw new McpError(ErrorCode.InternalError, `Error batch updating dimensions: ${message}`, {\n stack: error instanceof Error ? error.stack : undefined,\n });\n }\n}\n\nexport default function createTool() {\n return {\n name: 'dimensions-batch-update',\n config,\n handler,\n } satisfies ToolModule;\n}\n"],"names":["createTool","AuthRequiredBranchSchema","schemas","DimensionRequestSchema","z","object","operation","enum","describe","dimension","startIndex","number","int","nonnegative","endIndex","optional","inheritFromBefore","boolean","inputSchema","id","SpreadsheetIdSchema","gid","SheetGidSchema","requests","array","min","successBranchSchema","type","literal","SpreadsheetIdOutput","SheetGidOutput","spreadsheetTitle","string","spreadsheetUrl","sheetTitle","sheetUrl","totalOperations","operationResults","affectedCount","updatedDimensions","rows","columns","outputSchema","discriminatedUnion","config","description","result","handler","extra","logger","spreadsheetData","sheet","sheets","spreadsheetResponse","sheetId","currentRowCount","currentColumnCount","sortedRequests","batchRequests","batchUpdateResponse","updateResult","replies","expectedCount","actualCount","i","reply","request","finalRowCount","finalColumnCount","error","message","debug","requestCount","length","operations","map","r","google","version","auth","authContext","spreadsheets","get","spreadsheetId","fields","data","properties","title","find","s","String","warn","McpError","ErrorCode","InvalidParams","undefined","InternalError","gridProperties","rowCount","DEFAULT_ROW_COUNT","columnCount","DEFAULT_COLUMN_COUNT","sortOperations","buildDimensionRequest","operationTypes","operationDetails","index","calculateAffectedCount","currentDimensions","batchUpdate","requestBody","includeSpreadsheetInResponse","expectedOperations","actualReplies","receivedReplies","replyType","Object","keys","replyIndex","hasReply","hasRequest","operationIndex","expectedOperation","_index","Math","max","MAX_ROW_COUNT","maxRowCount","MAX_COLUMN_COUNT","maxColumnCount","content","text","JSON","stringify","structuredContent","Error","stack","name"],"mappings":"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"}
@@ -0,0 +1,86 @@
1
+ import type { EnrichedExtra } from '@mcp-z/oauth-google';
2
+ import type { CallToolResult } from '@modelcontextprotocol/sdk/types.js';
3
+ import { z } from 'zod';
4
+ declare const inputSchema: z.ZodObject<{
5
+ id: z.ZodString;
6
+ gid: z.ZodCoercedString<unknown>;
7
+ dimension: z.ZodEnum<{
8
+ ROWS: "ROWS";
9
+ COLUMNS: "COLUMNS";
10
+ }>;
11
+ startIndex: z.ZodNumber;
12
+ endIndex: z.ZodNumber;
13
+ destinationIndex: z.ZodNumber;
14
+ }, z.core.$strip>;
15
+ declare const outputSchema: z.ZodDiscriminatedUnion<[z.ZodObject<{
16
+ type: z.ZodLiteral<"success">;
17
+ id: z.ZodString;
18
+ gid: z.ZodString;
19
+ spreadsheetTitle: z.ZodString;
20
+ spreadsheetUrl: z.ZodString;
21
+ sheetTitle: z.ZodString;
22
+ sheetUrl: z.ZodString;
23
+ dimension: z.ZodEnum<{
24
+ ROWS: "ROWS";
25
+ COLUMNS: "COLUMNS";
26
+ }>;
27
+ sourceRange: z.ZodObject<{
28
+ startIndex: z.ZodNumber;
29
+ endIndex: z.ZodNumber;
30
+ }, z.core.$strip>;
31
+ destinationIndex: z.ZodNumber;
32
+ movedCount: z.ZodNumber;
33
+ }, z.core.$strip>, z.ZodObject<{
34
+ type: z.ZodLiteral<"auth_required">;
35
+ provider: z.ZodString;
36
+ message: z.ZodString;
37
+ url: z.ZodOptional<z.ZodString>;
38
+ }, z.core.$strip>], "type">;
39
+ export type Input = z.infer<typeof inputSchema>;
40
+ export type Output = z.infer<typeof outputSchema>;
41
+ declare function handler({ id, gid, dimension, startIndex, endIndex, destinationIndex }: Input, extra: EnrichedExtra): Promise<CallToolResult>;
42
+ export default function createTool(): {
43
+ name: string;
44
+ config: {
45
+ readonly description: "Move rows or columns within a sheet to a new position. Use 0-based indices. The destinationIndex is where the rows/columns will be moved TO.";
46
+ readonly inputSchema: z.ZodObject<{
47
+ id: z.ZodString;
48
+ gid: z.ZodCoercedString<unknown>;
49
+ dimension: z.ZodEnum<{
50
+ ROWS: "ROWS";
51
+ COLUMNS: "COLUMNS";
52
+ }>;
53
+ startIndex: z.ZodNumber;
54
+ endIndex: z.ZodNumber;
55
+ destinationIndex: z.ZodNumber;
56
+ }, z.core.$strip>;
57
+ readonly outputSchema: z.ZodObject<{
58
+ result: z.ZodDiscriminatedUnion<[z.ZodObject<{
59
+ type: z.ZodLiteral<"success">;
60
+ id: z.ZodString;
61
+ gid: z.ZodString;
62
+ spreadsheetTitle: z.ZodString;
63
+ spreadsheetUrl: z.ZodString;
64
+ sheetTitle: z.ZodString;
65
+ sheetUrl: z.ZodString;
66
+ dimension: z.ZodEnum<{
67
+ ROWS: "ROWS";
68
+ COLUMNS: "COLUMNS";
69
+ }>;
70
+ sourceRange: z.ZodObject<{
71
+ startIndex: z.ZodNumber;
72
+ endIndex: z.ZodNumber;
73
+ }, z.core.$strip>;
74
+ destinationIndex: z.ZodNumber;
75
+ movedCount: z.ZodNumber;
76
+ }, z.core.$strip>, z.ZodObject<{
77
+ type: z.ZodLiteral<"auth_required">;
78
+ provider: z.ZodString;
79
+ message: z.ZodString;
80
+ url: z.ZodOptional<z.ZodString>;
81
+ }, z.core.$strip>], "type">;
82
+ }, z.core.$strip>;
83
+ };
84
+ handler: typeof handler;
85
+ };
86
+ export {};