@sheetxl/mcp 0.8.0-beta.18 → 0.8.0-beta.20

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 (207) hide show
  1. package/assets/{o9G5KuG1VkSazTvI.js → -qQT-DFFz0CqGx5C.js} +373 -373
  2. package/assets/{CNE-erNKNIT7bUb1.js → 4Qlx8FuxoYbVTgNW.js} +27 -27
  3. package/assets/{yBFl0kPv-nwFtG4Z.js → 4Za9gEGCvms62R7k.js} +1 -1
  4. package/assets/{D0-I0aLr6w8IvxFD.js → 8FzS1bgbz4U1QE_m.js} +1 -1
  5. package/assets/{10d0ZbYF23zeF8_1.js → 93ksqLKL1o40anfw.js} +1 -1
  6. package/assets/{BV11qLZKVWxFwVGV.js → B-7inN76S1zUWSAt.js} +1 -1
  7. package/assets/{DjoFujVwGRAxviCF.js → B4ii9PGvnlYkSX2q.js} +2 -2
  8. package/assets/{Bi8ct8GYvMDKHCE3.js → B5UmlawoCVwHHM_e.js} +5 -5
  9. package/assets/{D5nleqRNvTcmN5_9.js → B5yaBbFj2Np9Eh8b.js} +1 -1
  10. package/assets/{F0HGXXl9AizCAcFy.js → B6J8XN1FRN00a_ps.js} +1 -1
  11. package/assets/{DY1x1ZN7ZyE4OR1-.js → BBm3Xjnehvx2fYj8.js} +8 -8
  12. package/assets/{CiKd3BnRjhac2Hik.js → BEq2PSZQN7VV19RQ.js} +1 -1
  13. package/assets/{wZ-GQhOhikv-_3iQ.js → BGQ1GrnQ-X16GU8k.js} +2 -2
  14. package/assets/{BrwNVveK5LvYkoGk.js → BGlx7_eRiv47Hu9C.js} +1 -1
  15. package/assets/{BEtUOCupmeICfGE1.js → BHiZ3GtGCWUWwHqY.js} +3 -3
  16. package/assets/{BOdkvYo03yZ96iZt.js → BItblzoSm0lN3bTV.js} +1 -1
  17. package/assets/{pg7E7B7ouG2qdZve.js → BJYl-kvBtcnMVP8W.js} +1 -1
  18. package/assets/{hvCnPO_Fu7Nqz0rs.js → BKc7zTK6ZIhcD_Wu.js} +1 -1
  19. package/assets/{DmCRCUmmkoRNCS9J.js → BMH_wtFTiRj43c69.js} +2 -2
  20. package/assets/{CL4BYdfIXgFQA8nY.js → BVdH9-49M3APSiPy.js} +1 -1
  21. package/assets/{BsYVa-oRhTLH6wnH.js → BYYbglFmasE5PrS2.js} +1 -1
  22. package/assets/{BgGFX6QJ30T3seyX.js → Bg8EN9R3hbeNfFyU.js} +103 -103
  23. package/assets/{BRQd_GNkeaBTl3Zr.js → BghxJxTwaebNVcIS.js} +1 -1
  24. package/assets/{CnLLwj7OCz4U71wa.js → BieAybaOdneMdvBS.js} +1 -1
  25. package/assets/{Ct8BhGWuqN5yOpUF.js → BkhWR4P1Evw_VP5z.js} +1 -1
  26. package/assets/BmmIukrNOivfENgD.js +199 -0
  27. package/assets/{DbwDQlhCuGoasVUz.js → Bndiqwoh132Upow1.js} +2 -2
  28. package/assets/{CLBxNjtPjuGX1KnU.js → Bp9zuG6P6r9GEb6G.js} +1 -1
  29. package/assets/{Bz5ioWvl-Xl3xspC.js → C0MAjW1vgsw6o0fx.js} +1 -1
  30. package/assets/{CcB4xmoUFWBbSISF.js → C3BZQ5NFwAU_ZdeQ.js} +1 -1
  31. package/assets/{hLMlKg3lU36xZ6G6.js → C46dyA4YSP1-iTSN.js} +1 -1
  32. package/assets/{CkO0JR629W2kcDMd.js → C7oUg84aGjYrJUc6.js} +2 -2
  33. package/assets/{DmUCKxOYIBM6DX64.js → C9JUgNS6CrdgIcW3.js} +1 -1
  34. package/assets/{CGGpkGg85FZsnYHc.js → C9aV1SF8uCWIB4zU.js} +15 -15
  35. package/assets/{B2C5njsdPylyQOCM.js → C9eaFlFi_4GmymzP.js} +40 -40
  36. package/assets/{VcmpHRbBIrw6av3U.js → C9w-KoMwxvouC73F.js} +148 -148
  37. package/assets/{Bi4pI6e3AwTjn-lQ.js → C9wXzrhl0dwqZgJ6.js} +1 -1
  38. package/assets/CCl8x9s8Bujsew7W.js +14 -0
  39. package/assets/{nnqtgWxMIc_Nc-IP.js → CDmri0gcZxpVZfWn.js} +446 -445
  40. package/assets/{CPkGFumcwSKh5zea.js → CDvP9QyhDwdm3MZn.js} +2 -2
  41. package/assets/{Byd5zSRU6LWfL2No.js → CLFe9HgUi_83dE3d.js} +1 -1
  42. package/assets/{CzoexWLhnn08u05j.js → CTGfmocA1WgM0_e0.js} +718 -721
  43. package/assets/{CYUerpa6WB0Hc3fs.js → CUJiePMri5kkpdA7.js} +1 -1
  44. package/assets/{BxizypreLEtLqpIc.js → CW2Ca6tsd0aLTz88.js} +1 -1
  45. package/assets/{EDEUvF-L72a6fMCK.js → CaI562iJKKOoMw8p.js} +1 -1
  46. package/assets/{D2sRTakzE5POMnhF.js → CaOEaghQqXiA1ZzO.js} +122 -122
  47. package/assets/{CPa4og3WQ7BgHrsO.js → CbTKUrroY9PQ6eTu.js} +28 -28
  48. package/assets/{DP-FzazhSKAvylUa.js → CgIHqG1qp9n1Gwm7.js} +285 -285
  49. package/assets/{VL-vwx7Pyw1zqIx9.js → Cheq-qaVWm7EaIlQ.js} +1 -1
  50. package/assets/{D49iRcrfnODORRNC.js → Cirpx81bWi4G2foA.js} +11 -11
  51. package/assets/{B74Ls4nlmyBxWanf.js → Cm2WENwEZ0KMyF--.js} +2 -2
  52. package/assets/{Cv8UXBL7O7h1uMR8.js → CoOIn2wx6je_rMDO.js} +34 -34
  53. package/assets/{CT6kRDlkfvKq8XGZ.js → Co_ZOyp4mKmSfh0A.js} +1 -1
  54. package/assets/{Rpi4k7hMH8wPAIcB.js → CpLTCQemd_cJ4yFu.js} +1663 -1663
  55. package/assets/{Iv_Zbm3pMLOK2uxf.js → CpfpXfCqzZumY4pf.js} +1 -1
  56. package/assets/{r9WSFw3a-_a5hlPm.js → CrRJqUPbvvhnp4p4.js} +3 -7
  57. package/assets/{DI_SAQ7hesioI9TW.js → CrULZhDt8uE-MR2s.js} +1 -1
  58. package/assets/{CDqOifqA400y7KQY.js → CyOyY32LLW-Pj_L7.js} +1 -1
  59. package/assets/{gAg9rL3U8fWUDeEb.js → CyYbUk6pGr3NIBsy.js} +51 -51
  60. package/assets/{Dh2iae-q0IngEeyH.js → D--emvI048MvLsXl.js} +1 -1
  61. package/assets/{DMnhlFBJ2AlVx2_t.js → D4lMEKXi13vhDJbE.js} +1 -1
  62. package/assets/{B-6CmVJvxPNZB9bE.js → DALP-GkmzCJdFIV9.js} +1 -1
  63. package/assets/{DCHjwIx59QhiV2Zx.js → DAVN6N3srI1WMHCN.js} +2 -2
  64. package/assets/{8hZAYFV_v2KmJ_NL.js → DBfBV-tvRxCLgdvs.js} +4 -4
  65. package/assets/{BhHneZZ7gq4dRaEJ.js → DIntlX_ha_wRdxYj.js} +1 -1
  66. package/assets/{XDQBri0_cS5paHej.js → DMDx0fX8tHKH0DdL.js} +2 -2
  67. package/assets/{9rJMq-cyOmajlBEQ.js → DMMw2v0iTuBnUjMI.js} +1 -1
  68. package/assets/{BCeSyFXflYgNP_ES.js → DNwyEanz3LqtOorY.js} +1 -1
  69. package/assets/{BFGVZsstQm2MWi7Y.js → DPUXpIzEs1t-jBiv.js} +1 -1
  70. package/assets/{DKnwIboAj_Sg9aVP.js → DSy6cpdU-KNWsbSj.js} +2 -2
  71. package/assets/{DN4zv4AjDxTsLFsA.js → DTXRsv2Ww7WbIwCb.js} +9352 -9281
  72. package/assets/{Du9_Ajy9KvnwHApK.js → DV_nCOON8Fgq5RBt.js} +2 -2
  73. package/assets/{BFcxaubQp1WMeknL.js → DYRis8fOyk2uIZ-1.js} +4 -4
  74. package/assets/{BQzUK7KiJeJpu-rK.js → DZ2Njh8YgfXcv7EM.js} +1 -1
  75. package/assets/{CMXukie7sxP12H2E.js → Dc2LiflUYpt0nVVk.js} +4 -4
  76. package/assets/{BQ76ntZm9YFicjXj.js → DcwqgbgqPyzQxSsQ.js} +1 -1
  77. package/assets/{DSDlxGN059KmkCxT.js → DjH6ckvISyssOSit.js} +1 -1
  78. package/assets/{NZeFs1MV5h-uMZqJ.js → Dlbgs8csKymbxu7r.js} +1 -1
  79. package/assets/{BwQM6Q6HHQTXznpy.js → DnDTldUjKy0O586y.js} +2 -2
  80. package/assets/{CLsD7YwSKAsliRZy.js → DndzARNYtmumqGnG.js} +1 -1
  81. package/assets/{nPoObUd0MvWI-j0F.js → Drmg3-gF0VJs4Yx3.js} +1 -1
  82. package/assets/{DwOPJ5TXttTx69oF.js → DsSlUklPSAsh9DhW.js} +330 -330
  83. package/assets/{rIReGgfQ90pzLAbU.js → DsWJ-YRyuwDUuSge.js} +1 -1
  84. package/assets/{BQeb2zXfAs5lRoGt.js → Dsjx528shW3GcGpD.js} +3 -3
  85. package/assets/{C_UAskmm-u2Iw9Nl.js → Dv9ZDmKuxn2tQDGb.js} +1 -1
  86. package/assets/{Bqq5Sl5E9ytcPJ3J.js → DvRH46hupHUjkc7a.js} +1 -1
  87. package/assets/{D5wI7O_L6QVNXj5I.js → DwsoGIyPuoQij_vi.js} +1 -1
  88. package/assets/{SCOKwiDu6SYiQrQ0.js → Dx_IFz5FEPKw-HC1.js} +1 -1
  89. package/assets/{CmlxzZYM5hOAAcx5.js → DzLrAy24em5k5en0.js} +3 -3
  90. package/assets/{D1pD8u8nRprUvn-u.js → I7LAF1nLmYqQwt9i.js} +1 -1
  91. package/assets/{CJoWPN_DsFbaGAiE.js → IDq3QQa5uRqjVJx_.js} +1 -1
  92. package/assets/{BSvHkSY0R0EU0gC4.js → LugZP3XHNnoiiTJO.js} +1 -1
  93. package/assets/{CoQFpWEh4CUgcdwe.js → MpvZt7VpFWEINIT6.js} +1 -1
  94. package/assets/{DMGq2icilGiyfBTM.js → NiD8iNE47sjggYTx.js} +1 -1
  95. package/assets/{vXZw1AmMzswOZMiP.js → PMBjuoD2MpG87dao.js} +1 -1
  96. package/assets/{CvkibaXI8SOD22pw.js → TdK2ciXA5BAlGjbR.js} +1 -1
  97. package/assets/{DWK-OKV0MErx-IrU.js → Ti7kMsQ-Eo3lkfIh.js} +6 -6
  98. package/assets/{D2IMjoGcj5oz1Kr7.js → Xkr_4WLwk0ZPaYH2.js} +1 -1
  99. package/assets/{DcjJ_zTfdh6RqmVZ.js → YG5hEr6CzWNmNJQ2.js} +1 -1
  100. package/assets/{MfkAFluI0ZyU0UDV.js → YGYD-116vlZfzPn1.js} +13 -13
  101. package/assets/{BhJ1mH7pUONJScU7.js → Z1zwOeCe-JTLgkxf.js} +47 -47
  102. package/assets/{Dhg0yeTmVfmRV5rK.js → _LMcVYWJksPfGVxz.js} +1 -1
  103. package/assets/{DzEJwSC-_aavYiFd.js → eV0oowKJe44NBnWj.js} +1 -1
  104. package/assets/{DH7Rur7rNOYzv35r.js → eWHWPRWHX6YU8bJU.js} +1 -1
  105. package/assets/{DL3ms6Hf2uEGaMgH.js → hcXZqO-0tG873E-L.js} +2 -2
  106. package/assets/{BM-ax5N1GzF9KkI4.js → klKXcdZmbQmsK2rt.js} +1 -1
  107. package/assets/{CQBFUsemb94zMBo6.js → ltqqdJxoPnLCjhBV.js} +3 -3
  108. package/assets/{BQsLqKWy17wy3znE.js → mYZ9Z5AKCn7zltHw.js} +2 -2
  109. package/assets/{BatIfPAYElNTXVzb.js → nV0eE4R3npcOHLbx.js} +1 -1
  110. package/assets/{BedBCvJP064ZYuO8.js → ndBoGVVjmy3vkff8.js} +2 -2
  111. package/assets/{ARPN5UhoadZC1yqE.js → noAnElnMhF05bfJN.js} +1 -1
  112. package/assets/{CYcb-DojX92VNGzd.js → q57cDvIPcIvWlh5T.js} +3 -3
  113. package/assets/{CWuPUrDsnBxboJ02.js → rtUwIBgECTX9UO_B.js} +108 -108
  114. package/assets/{DafqFM-FGeZJ_fzg.js → swG-DVTsez1uNW8c.js} +1 -1
  115. package/assets/{BDNqot_JWBuVW_pC.js → tCavNu-Tru6yRbec.js} +1 -1
  116. package/assets/{B7GE-6NROw0onnLD.js → u-pSumbU-rgT6eLF.js} +224 -224
  117. package/assets/{BMc-Hsrp_iifxzG_.js → uMoGfJGab8mZX6eN.js} +1 -1
  118. package/assets/{C3PZVWI_SEXYrzVk.js → uoUKT9hTrwZ2INHN.js} +3 -3
  119. package/assets/{CnCtLKkz0bdXIxn2.js → wYvkLI8IeHaWTtAx.js} +92 -92
  120. package/assets/{DlWRvc1pLGPCRMwi.js → yDh_W6M1rvuDhFv1.js} +1 -1
  121. package/index.js +224 -224
  122. package/lib.js +1 -1
  123. package/licenses/dependencies.txt +35 -35
  124. package/package.json +2 -2
  125. package/screenshot-page/assets/{Di8Yn8O-rD9idC2h.js → 1yHlU53ypZZelMPx.js} +1 -1
  126. package/screenshot-page/assets/{Btgo0VFTT0JxuaP3.js → B-8IMo2f1yGNXOyz.js} +86 -90
  127. package/screenshot-page/assets/{NDzpWLUA0pbyI-Rd.js → B9kA0vdaFJi9iRGo.js} +4 -4
  128. package/screenshot-page/assets/{iAWaCU0XkY0ktnNk.js → BLPyKyNun9-SHQBZ.js} +1 -1
  129. package/screenshot-page/assets/BMKiUDjoabO4aG1U.js +1 -0
  130. package/screenshot-page/assets/{C1lrvl0Ad1-NjWKG.js → BOjOE9CEMSzcij2W.js} +2 -2
  131. package/screenshot-page/assets/{DjtXY9uxB3QP6hU3.js → BQ5BNe1adYfpa2OH.js} +1 -1
  132. package/screenshot-page/assets/{B7u12-Sf0HF7g4wI.js → BUO6zT3gqK0uOOa-.js} +1 -1
  133. package/screenshot-page/assets/{5TxlmdZxlCDkawVW.js → BWtLNVUXjY6EBdEt.js} +1 -1
  134. package/screenshot-page/assets/BZpFWPd0PR1kPT-A.js +1 -0
  135. package/screenshot-page/assets/BaCs7lUeZ7NidSkP.js +1 -0
  136. package/screenshot-page/assets/Bf9AN5sYHaxae0vV.js +586 -0
  137. package/screenshot-page/assets/Bh2PQ0zsoGtMKWp1.js +39 -0
  138. package/screenshot-page/assets/BkhZQsVlVHOiKGTJ.js +1 -0
  139. package/screenshot-page/assets/BnPHZ_1rjv6kQgsL.js +1 -0
  140. package/screenshot-page/assets/{DNoZea7QMO9zB6D5.js → BuzI4z8RJGOw8BZD.js} +1 -1
  141. package/screenshot-page/assets/Bzf_upccQ2ho6mX0.js +13 -0
  142. package/screenshot-page/assets/{CM9cBiCjJIY64PWg.js → C0AbuMHcIS9oy4XL.js} +1 -1
  143. package/screenshot-page/assets/{Csjis_Fk8q4mSqdp.js → C4v6Ljs6kwQJu06t.js} +2 -2
  144. package/screenshot-page/assets/C7YRL2bVWHPIwzn_.js +1 -0
  145. package/screenshot-page/assets/{DqXO_Zw1Cp7rAQ04.js → C7mXat-6esc1AmRD.js} +2 -2
  146. package/screenshot-page/assets/{D6WTzLygjgK85siu.js → CFl15-2FAF9f3V7L.js} +2 -2
  147. package/screenshot-page/assets/CImp91jfSuqX0Wz-.js +1 -0
  148. package/screenshot-page/assets/{BMf827t1Ul65MHd5.js → CQukCzhuewMuFOlO.js} +1 -1
  149. package/screenshot-page/assets/{CaiPDssAQqXac5AG.js → CXmrXx6MZ5ApF3co.js} +1 -1
  150. package/screenshot-page/assets/CZq2dMHs2MHHyyBl.js +1 -0
  151. package/screenshot-page/assets/Cv-YUArreXqhafcU.js +2 -0
  152. package/screenshot-page/assets/{DgtqX4DiBgkepVZZ.js → Cx1kZ2u_8JFV2Q8D.js} +1 -1
  153. package/screenshot-page/assets/D23_69pojBfIh4nV.js +5 -0
  154. package/screenshot-page/assets/D2q4M3I5Jmxm85P2.js +1 -0
  155. package/screenshot-page/assets/{BYQZ8o8k3-MDoNat.js → D6Yv5cc1JE7DGd6j.js} +1 -1
  156. package/screenshot-page/assets/D8QsCbSaWCLAYYso.js +1 -0
  157. package/screenshot-page/assets/{F6yLCIlSWZ1lAUEp.js → DC_Hdwa9KL7xKU8u.js} +2 -2
  158. package/screenshot-page/assets/DHtL9Iawmr2Uo5VV.js +2 -0
  159. package/screenshot-page/assets/{Cfs_rQCXBMVhJgat.js → DKWRl8rs3K9jBYtr.js} +1 -1
  160. package/screenshot-page/assets/DMhOGCTy8V0N14gY.js +1 -0
  161. package/screenshot-page/assets/{C6vseMcEu3To1U6k.js → DNYWB6WNZTquqQ9v.js} +3 -3
  162. package/screenshot-page/assets/{Bwk0ScujWaYYqx5G.js → DegZKTNqt1LRnSxY.js} +1 -1
  163. package/screenshot-page/assets/{tPEJNcr51GaPfk3O.js → Dhh1xqujbhLa8WFd.js} +1 -1
  164. package/screenshot-page/assets/{CNFMt4XhKy4tlsUn.js → Dkr-6Z1RJsAp9Xrv.js} +1 -1
  165. package/screenshot-page/assets/DllI8kZZZ5LG0Mjd.js +2 -0
  166. package/screenshot-page/assets/{t4FRkJl27a0itCt6.js → DrcpGT9FLbDzeLeG.js} +2 -2
  167. package/screenshot-page/assets/{D1TqM0Bt65K6svMS.js → FjOiReLnknWbsRRr.js} +19 -19
  168. package/screenshot-page/assets/{C3KvRJ_eXd6xnmlO.js → H_hWDMWfWmjTui7V.js} +1 -1
  169. package/screenshot-page/assets/LCjlxIt1dn3smVjX.js +1 -0
  170. package/screenshot-page/assets/{DGB9wBuDWt0bzTNE.js → RutPv2GFWmeBiWvn.js} +1 -1
  171. package/screenshot-page/assets/{DeyRZ5rprDbRbuf4.js → Tj3B5At0OAN3tDza.js} +1 -1
  172. package/screenshot-page/assets/{CpZHZoz3xpJMDWI0.js → TwKKik-YQENv52LX.js} +1 -1
  173. package/screenshot-page/assets/XiUItCqTNNEApgfa.js +2 -0
  174. package/screenshot-page/assets/XrFpPrRqQNE9AAwH.js +1 -0
  175. package/screenshot-page/assets/mBuOPJeUPXlKwfPZ.js +48 -0
  176. package/screenshot-page/assets/qFyplGXRu7IepHio.js +1 -0
  177. package/screenshot-page/assets/zSnM7GhGzLu1MM_u.js +3 -0
  178. package/screenshot-page/assets/{DtihumgXQ7ETaN0A.js → zvxBjll3jnL0-vNn.js} +2 -2
  179. package/screenshot-page/index.html +11 -11
  180. package/types/scripting-api.json +9329 -9329
  181. package/types/scripting.d.ts +24 -18
  182. package/assets/Del35nO_1HyjItI0.js +0 -199
  183. package/assets/LLdkCOYvtc1-vOsy.js +0 -14
  184. package/screenshot-page/assets/2XWoSsrRz2kognCK.js +0 -1
  185. package/screenshot-page/assets/BCOjWc-VhkuVoCVf.js +0 -1
  186. package/screenshot-page/assets/BqQ2A9WL6mcRxbSt.js +0 -2
  187. package/screenshot-page/assets/Bw4kRw8JKyNRlLE2.js +0 -1
  188. package/screenshot-page/assets/BwF-LAYFu91KqvJ8.js +0 -2
  189. package/screenshot-page/assets/ByehV0cOs5aIySS-.js +0 -13
  190. package/screenshot-page/assets/C0F9BL11dkgzjp7Y.js +0 -1
  191. package/screenshot-page/assets/C3QIYFX-vF_1DVmi.js +0 -586
  192. package/screenshot-page/assets/CafJ2T5GCjkumgLh.js +0 -1
  193. package/screenshot-page/assets/CijzqW2bsxOQdDxl.js +0 -2
  194. package/screenshot-page/assets/D5kEl0N4l6MzdmTG.js +0 -1
  195. package/screenshot-page/assets/D6CzedWHXTesD55R.js +0 -1
  196. package/screenshot-page/assets/D7e00cCBTtcIRmjV.js +0 -1
  197. package/screenshot-page/assets/DTrnAtpccj55fGg5.js +0 -1
  198. package/screenshot-page/assets/DZ2zDgzt-mnhg3Kd.js +0 -1
  199. package/screenshot-page/assets/DaVBDkeZxbXnuyGz.js +0 -42
  200. package/screenshot-page/assets/DgNbqKuVd-Q170VZ.js +0 -2
  201. package/screenshot-page/assets/Dv-4mfeFKIoD5jaY.js +0 -3
  202. package/screenshot-page/assets/HZAIE0lHXXFqlb2v.js +0 -1
  203. package/screenshot-page/assets/Lr2MYBmoCKMLBl_6.js +0 -5
  204. package/screenshot-page/assets/O-S3tcMip6iXUjQF.js +0 -1
  205. package/screenshot-page/assets/eV_6j-vFozPgfcjz.js +0 -1
  206. package/screenshot-page/assets/it1wnIFQtbJ4Dm8N.js +0 -1
  207. package/screenshot-page/assets/mCyh2440vZi8s1uY.js +0 -39
@@ -1,11 +1,11 @@
1
1
  /**
2
- * @license @sheetxl/mcp - MCP server exposing SheetXL spreadsheet operations as tools and resources. - v0.8.0-beta.18
2
+ * @license @sheetxl/mcp - MCP server exposing SheetXL spreadsheet operations as tools and resources. - v0.8.0-beta.20
3
3
  *
4
4
  * (C) 2026-present SheetXL Inc. & Michael T. Ford
5
5
  * License: SheetXL EULA — https://www.sheetxl.com/eula
6
6
  */
7
- import { y as e } from "./DwOPJ5TXttTx69oF.js";
8
- import { n as t } from "./DMGq2icilGiyfBTM.js";
7
+ import { P as e } from "./DsSlUklPSAsh9DhW.js";
8
+ import { n as t } from "./NiD8iNE47sjggYTx.js";
9
9
  var r = async (r, n) => {
10
10
  let o = r;
11
11
  (function(e) {
@@ -1,12 +1,12 @@
1
1
  /**
2
- * @license @sheetxl/mcp - MCP server exposing SheetXL spreadsheet operations as tools and resources. - v0.8.0-beta.18
2
+ * @license @sheetxl/mcp - MCP server exposing SheetXL spreadsheet operations as tools and resources. - v0.8.0-beta.20
3
3
  *
4
4
  * (C) 2026-present SheetXL Inc. & Michael T. Ford
5
5
  * License: SheetXL EULA — https://www.sheetxl.com/eula
6
6
  */
7
- import { ht as e } from "./CDqOifqA400y7KQY.js";
8
- import { c as t, i as n, p as a } from "./r9WSFw3a-_a5hlPm.js";
9
- import { c as r, s as i } from "./DWK-OKV0MErx-IrU.js";
7
+ import { ht as e } from "./CyOyY32LLW-Pj_L7.js";
8
+ import { c as t, f as n, i as a } from "./CrRJqUPbvvhnp4p4.js";
9
+ import { c as r, s as i } from "./Ti7kMsQ-Eo3lkfIh.js";
10
10
  var o = /* @__PURE__ */ new Map([["IReferenceRange", "p"], ["IRange", "r"]]), s = new Set(Object.values(t).filter((e) => e !== t.Omitted)), l = /* @__PURE__ */ new Map([
11
11
  ["IWorkbook", "workbook"],
12
12
  ["IWorksheet", "sheet"],
@@ -20,9 +20,9 @@ var o = /* @__PURE__ */ new Map([["IReferenceRange", "p"], ["IRange", "r"]]), s
20
20
  }, m = /* @__PURE__ */ new Map([
21
21
  ["Scalar", "*"],
22
22
  ["Lambda", "l"],
23
- ["FormulaError.Known", a.Error],
24
- ["Date", n.Date],
25
- ["IRichData", n.RichData]
23
+ ["FormulaError.Known", n.Error],
24
+ ["Date", a.Date],
25
+ ["IRichData", a.RichData]
26
26
  ]), c = /* @__PURE__ */ new Map([["Repeating", "repeating"]]), p = /* @__PURE__ */ new Set(["Flatten", "SheetXL.Flatten"]), g = /* @__PURE__ */ new Set(["AcceptError"]), y = /* @__PURE__ */ new Set(["Omittable"]), f = /* @__PURE__ */ new Set(["NoLift"]), h = /* @__PURE__ */ new Set(["NoFilter"]), v = /* @__PURE__ */ new Set(["Lazy"]), $ = /* @__PURE__ */ new Set(["ReportType"]), b = /^[a-zA-Z_-￿][a-zA-Z0-9_.-￿]*$/, T = /^([a-z]{1,3})([0-9]+)$/i, w = /^r[0-9]*c[0-9]*$/i, x = "SheetXL", S = (e) => {
27
27
  const t = e.typeName.getText();
28
28
  return t.startsWith(`${x}.`) ? t.slice(8) : t;
@@ -62,7 +62,7 @@ var k = /* @__PURE__ */ new Map([["Volatile", () => ({ volatile: !0 })], [`${x}.
62
62
  }
63
63
  return t.replace(/\r\n?/g, "\n").split(/\n[^\S\n]*\n\s*/).map((e) => e.split("\n").map((e) => e.trim()).filter(Boolean).join(" ")).filter(Boolean).join("\n").trim();
64
64
  };
65
- function I(t, n, u, I) {
65
+ function I(t, a, u, I) {
66
66
  const E = I?.builtInNames?.length ? new Set(I.builtInNames.map((e) => e.toUpperCase())) : null, F = [], D = /* @__PURE__ */ new Map(), M = [];
67
67
  let C = null;
68
68
  const P = (e, t, n, a) => {
@@ -114,7 +114,7 @@ function I(t, n, u, I) {
114
114
  Q(o[0], e, r, !1, { count: 0 }), s = e.scalar ?? "*";
115
115
  }
116
116
  return a.lambda = s, !0;
117
- }, G = /* @__PURE__ */ new Map(), B = /* @__PURE__ */ new Map(), _ = /* @__PURE__ */ new Map(), J = /* @__PURE__ */ new Set(), q = /* @__PURE__ */ new WeakSet(), W = (e) => void 0 !== e && e.getSourceFile() === n, X = (t, n = !1) => t.getJsDocTags(u).find((e) => "name" === e.name)?.text?.map((e) => e.text).join("").trim() || (n ? e.camelToPrettyCase(t.name) : t.name), Z = (e) => {
117
+ }, G = /* @__PURE__ */ new Map(), B = /* @__PURE__ */ new Map(), _ = /* @__PURE__ */ new Map(), J = /* @__PURE__ */ new Set(), q = /* @__PURE__ */ new WeakSet(), W = (e) => void 0 !== e && e.getSourceFile() === a, X = (t, n = !1) => t.getJsDocTags(u).find((e) => "name" === e.name)?.text?.map((e) => e.text).join("").trim() || (n ? e.camelToPrettyCase(t.name) : t.name), Z = (e) => {
118
118
  const t = e.getJsDocTags(u).find((e) => "deprecated" === e.name);
119
119
  if (t) return t.text?.map((e) => e.text).join("").trim() || !0;
120
120
  }, H = (e, i) => {
@@ -122,11 +122,11 @@ function I(t, n, u, I) {
122
122
  if (o) {
123
123
  if (l && l.flags & t.SymbolFlags.Alias) return void U(e, r.EnumNotLocal, `'${o.getText()}' is imported, so its declaration cannot be read: '${i}'. An enum must be declared in the module that uses it.`);
124
124
  if (!(l && l.flags & t.SymbolFlags.Type)) {
125
- const a = o.getText();
126
- return (l ? 0 !== (l.flags & t.SymbolFlags.Variable) : n.statements.some((e) => t.isVariableStatement(e) && e.declarationList.declarations.some((e) => t.isIdentifier(e.name) && e.name.text === a))) ? void U(e, r.EnumMissingAlias, `'${a}' is a value, not a type: '${i}'. Pair the object with a same-name type — 'type ${a} = typeof ${a}[keyof typeof ${a}];' — or declare it as 'enum ${a} { … }'.`) : null;
125
+ const n = o.getText();
126
+ return (l ? 0 !== (l.flags & t.SymbolFlags.Variable) : a.statements.some((e) => t.isVariableStatement(e) && e.declarationList.declarations.some((e) => t.isIdentifier(e.name) && e.name.text === n))) ? void U(e, r.EnumMissingAlias, `'${n}' is a value, not a type: '${i}'. Pair the object with a same-name type — 'type ${n} = typeof ${n}[keyof typeof ${n}];' — or declare it as 'enum ${n} { … }'.`) : null;
127
127
  }
128
- const a = G.get(l);
129
- if (void 0 !== a) return a;
128
+ const n = G.get(l);
129
+ if (void 0 !== n) return n;
130
130
  if (J.has(l)) return;
131
131
  }
132
132
  const d = [];
@@ -200,7 +200,7 @@ function I(t, n, u, I) {
200
200
  }
201
201
  const y = {
202
202
  id: p,
203
- type: c ? a.Number : a.String,
203
+ type: c ? n.Number : n.String,
204
204
  members: d.map(([e, t, , , n]) => n ? [
205
205
  e,
206
206
  t,
@@ -215,100 +215,100 @@ function I(t, n, u, I) {
215
215
  f && (e.summary = f), Object.keys(h).length > 0 && (e.members = h), _.set(y, e);
216
216
  }
217
217
  return y;
218
- }, Q = (e, n, i, s, u, b = !1, T = !1, w = !1) => {
218
+ }, Q = (e, a, i, s, u, b = !1, T = !1, w = !1) => {
219
219
  if (e) {
220
- if (e.kind === t.SyntaxKind.ParenthesizedType) return Q(e.type, n, i, s, u, b, T, w);
220
+ if (e.kind === t.SyntaxKind.ParenthesizedType) return Q(e.type, a, i, s, u, b, T, w);
221
221
  if (e.kind === t.SyntaxKind.UnionType) {
222
- const a = (e) => e.kind === t.SyntaxKind.UndefinedKeyword || e.kind === t.SyntaxKind.VoidKeyword || e.kind === t.SyntaxKind.NullKeyword || e.kind === t.SyntaxKind.LiteralType && e.literal?.kind === t.SyntaxKind.NullKeyword, l = e.types.filter((e) => !a(e));
223
- if (1 === l.length) return Q(l[0], n, i, s, u, b, T, w);
224
- const d = H(e, n.name ?? z(e));
222
+ const n = (e) => e.kind === t.SyntaxKind.UndefinedKeyword || e.kind === t.SyntaxKind.VoidKeyword || e.kind === t.SyntaxKind.NullKeyword || e.kind === t.SyntaxKind.LiteralType && e.literal?.kind === t.SyntaxKind.NullKeyword, l = e.types.filter((e) => !n(e));
223
+ if (1 === l.length) return Q(l[0], a, i, s, u, b, T, w);
224
+ const d = H(e, a.name ?? z(e));
225
225
  if (void 0 === d) return;
226
- if (null !== d) return n.scalar = d.type, void (s && (n.enum = d));
227
- if (!s) return void (n.scalar = "*");
226
+ if (null !== d) return a.scalar = d.type, void (s && (a.enum = d));
227
+ if (!s) return void (a.scalar = "*");
228
228
  if (2 === l.length) {
229
- const e = (e) => e.kind === t.SyntaxKind.TypeReference && t.isTypeReferenceNode(e) && "Lambda" === S(e), a = l.findIndex(e);
230
- if (a >= 0 && !e(l[1 - a])) return Q(l[1 - a], n, i, s, u, b, T, w), void V(l[a], S(l[a]), n, i, s);
229
+ const e = (e) => e.kind === t.SyntaxKind.TypeReference && t.isTypeReferenceNode(e) && "Lambda" === S(e), n = l.findIndex(e);
230
+ if (n >= 0 && !e(l[1 - n])) return Q(l[1 - n], a, i, s, u, b, T, w), void V(l[n], S(l[n]), a, i, s);
231
231
  }
232
232
  if (s && 2 === l.length) {
233
233
  const e = (e) => {
234
234
  if (e.kind === t.SyntaxKind.TypeReference && !e.typeArguments?.length) return o.get(S(e));
235
- }, a = l.findIndex((t) => void 0 !== e(t));
236
- if (a >= 0 && void 0 === e(l[1 - a])) {
235
+ }, n = l.findIndex((t) => void 0 !== e(t));
236
+ if (n >= 0 && void 0 === e(l[1 - n])) {
237
237
  const t = {}, r = u.count;
238
- if (Q(l[1 - a], t, i, s, u, b, !1), t.scalar && !t.range && null == t.lambda && u.count === r) {
239
- n.range = e(l[a]), n.scalar = t.scalar, n.valueOrRange = !0;
238
+ if (Q(l[1 - n], t, i, s, u, b, !1), t.scalar && !t.range && null == t.lambda && u.count === r) {
239
+ a.range = e(l[n]), a.scalar = t.scalar, a.valueOrRange = !0;
240
240
  const r = t.enum;
241
- r && (n.enum = r);
241
+ r && (a.enum = r);
242
242
  return;
243
243
  }
244
244
  }
245
245
  }
246
246
  if (s && 2 === l.length) {
247
- const a = (e) => e.kind === t.SyntaxKind.TypeReference && !e.typeArguments?.length && "Scalar" === S(e), r = l.findIndex(a);
248
- if (r >= 0 && !a(l[1 - r])) {
249
- const t = H(l[1 - r], n.name ?? z(e));
247
+ const n = (e) => e.kind === t.SyntaxKind.TypeReference && !e.typeArguments?.length && "Scalar" === S(e), r = l.findIndex(n);
248
+ if (r >= 0 && !n(l[1 - r])) {
249
+ const t = H(l[1 - r], a.name ?? z(e));
250
250
  if (void 0 === t) return;
251
- if (null !== t) return n.scalar = "*", void (n.enum = t);
251
+ if (null !== t) return a.scalar = "*", void (a.enum = t);
252
252
  }
253
253
  }
254
254
  U(e, r.InvalidParamType, `Union parameter types are not supported: '${z(e)}'. Use a single type, optionally with '| null' or '| undefined', 'T | Lambda<…>' for a value-or-lambda slot, 'IRange | Scalar' for a value-or-range slot, or 'E | Scalar' for an uncoerced slot whose values an enum documents.`);
255
255
  return;
256
256
  }
257
- if (e.kind === t.SyntaxKind.NumberKeyword) n.scalar = a.Number;
258
- else if (e.kind === t.SyntaxKind.StringKeyword) n.scalar = a.String;
259
- else if (e.kind === t.SyntaxKind.BooleanKeyword) n.scalar = a.Boolean;
257
+ if (e.kind === t.SyntaxKind.NumberKeyword) a.scalar = n.Number;
258
+ else if (e.kind === t.SyntaxKind.StringKeyword) a.scalar = n.String;
259
+ else if (e.kind === t.SyntaxKind.BooleanKeyword) a.scalar = n.Boolean;
260
260
  else if (e.kind === t.SyntaxKind.UndefinedKeyword || e.kind === t.SyntaxKind.NullKeyword || e.kind === t.SyntaxKind.VoidKeyword) {
261
261
  if (s) return void U(e, r.UndefinedInput, `'undefined' is not a valid type for input: '${z(e)}'.`);
262
- n.scalar = a.Null;
263
- } else if (e.kind === t.SyntaxKind.BigIntKeyword) n.scalar = a.Number;
264
- else if (e.kind === t.SyntaxKind.AnyKeyword) s && (n.range = "*");
262
+ a.scalar = n.Null;
263
+ } else if (e.kind === t.SyntaxKind.BigIntKeyword) a.scalar = n.Number;
264
+ else if (e.kind === t.SyntaxKind.AnyKeyword) s && (a.range = "*");
265
265
  else if (e.kind === t.SyntaxKind.ArrayType) {
266
266
  const t = e.elementType;
267
267
  if (!t) return void U(e, r.UntypedArray, `'Array' must be typed: '${z(e)}'.`);
268
268
  if (s && T) {
269
- const a = n, r = a.name ?? z(e) ?? "parameter", o = a.acceptError;
270
- delete a.acceptError;
269
+ const n = a, r = n.name ?? z(e) ?? "parameter", o = n.acceptError;
270
+ delete n.acceptError;
271
271
  const s = { name: r };
272
- j(t, s, i, !0), o && !s.acceptError && (s.acceptError = !0), a.repeating = [s];
272
+ j(t, s, i, !0), o && !s.acceptError && (s.acceptError = !0), n.repeating = [s];
273
273
  return;
274
274
  }
275
- u.count++, Q(t, n, i, s, u);
275
+ u.count++, Q(t, a, i, s, u);
276
276
  } else if (e.kind !== t.SyntaxKind.TupleType) if (e.kind === t.SyntaxKind.TypeReference) {
277
- const a = S(e);
278
- if (g.has(a)) {
277
+ const n = S(e);
278
+ if (g.has(n)) {
279
279
  const t = z(e);
280
- if (!s) return void U(e, r.InvalidReturnType, `'${a}' is not a valid return type: '${t}'. It describes how an ARGUMENT is received.`);
281
- const o = n;
280
+ if (!s) return void U(e, r.InvalidReturnType, `'${n}' is not a valid return type: '${t}'. It describes how an ARGUMENT is received.`);
281
+ const o = a;
282
282
  if (o.acceptError) return void U(e, r.InvalidParamType, `'${t}' declares 'AcceptError' more than once.`);
283
283
  const l = e.typeArguments;
284
- return l && 1 === l.length ? (o.acceptError = !0, Q(l[0], n, i, s, u, b, T, w)) : void U(e, r.GenericArity, `'${a}' must be typed with exactly 1 type: '${t}'.`);
284
+ return l && 1 === l.length ? (o.acceptError = !0, Q(l[0], a, i, s, u, b, T, w)) : void U(e, r.GenericArity, `'${n}' must be typed with exactly 1 type: '${t}'.`);
285
285
  }
286
- if ($.has(a)) {
287
- const t = n.name ?? z(e);
286
+ if ($.has(n)) {
287
+ const t = a.name ?? z(e);
288
288
  if (!s) return void U(e, r.InvalidReturnType, `'ReportType' is not a valid return type: '${t}'. It describes how an ARGUMENT is received.`);
289
289
  const o = e.typeArguments;
290
- return o && 1 === o.length ? (n.reportType = !0, Q(o[0], n, i, s, u, b, T, w)) : void U(e, r.GenericArity, `'${a}' must be typed with exactly 1 type: '${t}'.`);
290
+ return o && 1 === o.length ? (a.reportType = !0, Q(o[0], a, i, s, u, b, T, w)) : void U(e, r.GenericArity, `'${n}' must be typed with exactly 1 type: '${t}'.`);
291
291
  }
292
- if (f.has(a)) {
293
- const t = n.name ?? z(e);
292
+ if (f.has(n)) {
293
+ const t = a.name ?? z(e);
294
294
  if (!s) return void U(e, r.InvalidReturnType, `'NoLift' is not a valid return type: '${t}'. It describes how an ARGUMENT is received.`);
295
295
  const o = e.typeArguments;
296
- if (!o || 1 !== o.length) return void U(e, r.GenericArity, `'${a}' must be typed with exactly 1 type: '${t}'.`);
297
- const l = n;
296
+ if (!o || 1 !== o.length) return void U(e, r.GenericArity, `'${n}' must be typed with exactly 1 type: '${t}'.`);
297
+ const l = a;
298
298
  l.noLift = !0;
299
299
  const d = u.count;
300
- Q(o[0], n, i, s, u, b, T, w), (l.range || null != l.lambda || l.repeating || u.count !== d) && U(e, r.InvalidParamType, `'${t}': 'NoLift' applies to a SCALAR parameter only - a range, list, repeating or lambda slot never lifts.`);
300
+ Q(o[0], a, i, s, u, b, T, w), (l.range || null != l.lambda || l.repeating || u.count !== d) && U(e, r.InvalidParamType, `'${t}': 'NoLift' applies to a SCALAR parameter only - a range, list, repeating or lambda slot never lifts.`);
301
301
  return;
302
302
  }
303
- if (h.has(a)) {
304
- const t = n.name ?? z(e);
303
+ if (h.has(n)) {
304
+ const t = a.name ?? z(e);
305
305
  if (!s) return void U(e, r.InvalidReturnType, `'NoFilter' is not a valid return type: '${t}'. It describes how an ARGUMENT is received.`);
306
306
  const o = e.typeArguments;
307
- if (!o || 1 !== o.length) return void U(e, r.GenericArity, `'${a}' must be typed with exactly 1 type: '${t}'.`);
308
- const l = n;
307
+ if (!o || 1 !== o.length) return void U(e, r.GenericArity, `'${n}' must be typed with exactly 1 type: '${t}'.`);
308
+ const l = a;
309
309
  l.noFilter = !0;
310
310
  const d = u.count;
311
- if (Q(o[0], n, i, s, u, b, T, w), l.range || null != l.lambda || u.count !== d) return void U(e, r.InvalidParamType, `'${t}': 'NoFilter' applies to a SCALAR slot only - a range, list or lambda slot has no members to coerce.`);
311
+ if (Q(o[0], a, i, s, u, b, T, w), l.range || null != l.lambda || u.count !== d) return void U(e, r.InvalidParamType, `'${t}': 'NoFilter' applies to a SCALAR slot only - a range, list or lambda slot has no members to coerce.`);
312
312
  const m = l.repeating;
313
313
  if (m) {
314
314
  if (delete l.noFilter, 1 !== m.length) return void U(e, r.InvalidParamType, `'${t}': 'NoFilter' over a repeating group applies to a period-1 group only - write it on the slot that takes the members.`);
@@ -316,54 +316,54 @@ function I(t, n, u, I) {
316
316
  } else T && U(e, r.InvalidParamType, `'${t}': 'NoFilter' applies to a REPEATING slot only - a single scalar argument has no members to coerce.`);
317
317
  return;
318
318
  }
319
- if (y.has(a)) {
320
- const o = n.name ?? z(e);
319
+ if (y.has(n)) {
320
+ const o = a.name ?? z(e);
321
321
  if (!s) return void U(e, r.InvalidReturnType, `'Omittable' is not a valid return type: '${o}'. It describes how an ARGUMENT is received.`);
322
322
  const l = e.typeArguments;
323
- if (!l || l.length < 1 || l.length > 2) return void U(e, r.GenericArity, `'${a}' must be typed with 1 or 2 types: '${o}'.`);
324
- const d = n;
323
+ if (!l || l.length < 1 || l.length > 2) return void U(e, r.GenericArity, `'${n}' must be typed with 1 or 2 types: '${o}'.`);
324
+ const d = a;
325
325
  if (d.omittable = !0, 2 === l.length) {
326
- const n = K(t, l[1]);
327
- if (void 0 === n) return void U(e, r.InvalidParamType, `'${o}' declares '${a}' with a second type that is not a literal value. Use a number, string, boolean or null - the engine substitutes it for an omitted argument.`);
328
- d.omittedValue = n;
326
+ const a = K(t, l[1]);
327
+ if (void 0 === a) return void U(e, r.InvalidParamType, `'${o}' declares '${n}' with a second type that is not a literal value. Use a number, string, boolean or null - the engine substitutes it for an omitted argument.`);
328
+ d.omittedValue = a;
329
329
  }
330
- const m = Q(l[0], n, i, s, u, b, T, w), c = d.omittedValue;
330
+ const m = Q(l[0], a, i, s, u, b, T, w), c = d.omittedValue;
331
331
  return d.enum && null != c && !d.enum.members.some(([, e]) => e === c) && U(l[1], r.EnumOmittedValue, `'${o}': ${JSON.stringify(c)} is not a member of '${d.enum.id}'. An omitted argument must mean a member (${d.enum.members.map(([, e]) => JSON.stringify(e)).join(", ")}) or null.`), m;
332
332
  }
333
- if (v.has(a)) {
334
- const o = n.name ?? z(e);
333
+ if (v.has(n)) {
334
+ const o = a.name ?? z(e);
335
335
  if (!s) return void U(e, r.InvalidReturnType, `'Lazy' is not a valid return type: '${o}'. It describes how an ARGUMENT is received.`);
336
- const l = n;
336
+ const l = a;
337
337
  if (l.lazy) return void U(e, r.InvalidParamType, `'${o}' declares 'Lazy' more than once.`);
338
338
  const d = e.typeArguments;
339
- if (!d || d.length < 1 || d.length > 2) return void U(e, r.GenericArity, `'${a}' must be typed with 1 or 2 types: '${o}'.`);
339
+ if (!d || d.length < 1 || d.length > 2) return void U(e, r.GenericArity, `'${n}' must be typed with 1 or 2 types: '${o}'.`);
340
340
  if (l.lazy = !0, 2 === d.length) {
341
- const n = K(t, d[1]);
342
- if (void 0 === n) return void U(e, r.InvalidParamType, `'${o}' declares '${a}' with a second type that is not a literal value. Use a number, string, boolean or null - the engine substitutes it for an absent argument.`);
343
- l.optional = !0, l.defaultValue = n;
341
+ const a = K(t, d[1]);
342
+ if (void 0 === a) return void U(e, r.InvalidParamType, `'${o}' declares '${n}' with a second type that is not a literal value. Use a number, string, boolean or null - the engine substitutes it for an absent argument.`);
343
+ l.optional = !0, l.defaultValue = a;
344
344
  }
345
- Q(d[0], n, i, s, u, b, T, w), l.enum ? (U(e, r.EnumPosition, `'${o}': 'Lazy' cannot hold the enum '${l.enum.id}'. The argument may never be evaluated, so there is no point at which it could be checked against the members.`), delete l.enum) : null != l.lambda ? U(e, r.InvalidParamType, `'${o}': 'Lazy' cannot be combined with a Lambda parameter - a callable slot is already the body's to call, or not.`) : l.repeating && U(e, r.InvalidParamType, `'${o}': 'Lazy' applies to a VALUE, not to a repeating group - mark the group's slots instead.`);
345
+ Q(d[0], a, i, s, u, b, T, w), l.enum ? (U(e, r.EnumPosition, `'${o}': 'Lazy' cannot hold the enum '${l.enum.id}'. The argument may never be evaluated, so there is no point at which it could be checked against the members.`), delete l.enum) : null != l.lambda ? U(e, r.InvalidParamType, `'${o}': 'Lazy' cannot be combined with a Lambda parameter - a callable slot is already the body's to call, or not.`) : l.repeating && U(e, r.InvalidParamType, `'${o}': 'Lazy' applies to a VALUE, not to a repeating group - mark the group's slots instead.`);
346
346
  return;
347
347
  }
348
- if (p.has(a)) {
349
- const t = n.name ?? z(e);
348
+ if (p.has(n)) {
349
+ const t = a.name ?? z(e);
350
350
  if (!s) return void U(e, r.InvalidReturnType, `'Flatten' is not a valid return type: '${t}'. It describes how an ARGUMENT is received.`);
351
351
  const o = e.typeArguments;
352
- return o && 1 === o.length ? (u.count++, Q(o[0], n, i, s, u, b)) : void U(e, r.GenericArity, `'${a}' must be typed with exactly 1 type: '${t}'.`);
352
+ return o && 1 === o.length ? (u.count++, Q(o[0], a, i, s, u, b)) : void U(e, r.GenericArity, `'${n}' must be typed with exactly 1 type: '${t}'.`);
353
353
  }
354
- if ("repeating" === c.get(a)) {
355
- const o = n.name ?? z(e);
354
+ if ("repeating" === c.get(n)) {
355
+ const o = a.name ?? z(e);
356
356
  if (!s) return void U(e, r.RepeatingPosition, `'Repeating' is not a valid return type: '${o}'.`);
357
357
  if (0 !== u.count) return void U(e, r.RepeatingPosition, `'Repeating' cannot be nested inside another type: '${o}'.`);
358
- const l = n, d = e.typeArguments;
359
- if (!d || d.length < 1 || d.length > 2) return void U(e, r.GenericArity, `'${a}' must be typed with 1 type, optionally followed by a maximum argument count: '${o}'.`);
358
+ const l = a, d = e.typeArguments;
359
+ if (!d || d.length < 1 || d.length > 2) return void U(e, r.GenericArity, `'${n}' must be typed with 1 type, optionally followed by a maximum argument count: '${o}'.`);
360
360
  let m;
361
361
  if (2 === d.length) {
362
- const e = d[1], n = e.kind === t.SyntaxKind.LiteralType ? e.literal : null, s = n && n.kind === t.SyntaxKind.NumericLiteral ? Number(n.text) : NaN;
363
- if (!Number.isInteger(s) || s < 1 || s > 255) return void U(e, r.RepeatingMax, `'${o}': '${a}'’s maximum must be a whole number between 1 and 255.`);
362
+ const e = d[1], a = e.kind === t.SyntaxKind.LiteralType ? e.literal : null, s = a && a.kind === t.SyntaxKind.NumericLiteral ? Number(a.text) : NaN;
363
+ if (!Number.isInteger(s) || s < 1 || s > 255) return void U(e, r.RepeatingMax, `'${o}': '${n}'’s maximum must be a whole number between 1 and 255.`);
364
364
  m = s, i.maxArguments = s;
365
365
  }
366
- if (w) return void 0 === m ? void U(e, r.RepeatingPosition, `'${o}' is a rest parameter and a repeating group. A group already repeats — drop the '...', or give the group a maximum ('Repeating<T, 254>') if the ceiling is all you meant.`) : Q(d[0], n, i, s, u, b, T);
366
+ if (w) return void 0 === m ? void U(e, r.RepeatingPosition, `'${o}' is a rest parameter and a repeating group. A group already repeats — drop the '...', or give the group a maximum ('Repeating<T, 254>') if the ceiling is all you meant.`) : Q(d[0], a, i, s, u, b, T);
367
367
  const c = l.acceptError;
368
368
  delete l.acceptError;
369
369
  const p = ((e, n, a, i) => {
@@ -387,39 +387,39 @@ function I(t, n, u, I) {
387
387
  p && (l.repeating = p);
388
388
  return;
389
389
  }
390
- const R = o.get(a);
390
+ const R = o.get(n);
391
391
  let L = !1;
392
- R && (n.range = R, L = !0);
393
- const I = m.get(a);
394
- if (I && (n.scalar = I), void 0 !== I && (L = !0), V(e, a, n, i, s)) return;
392
+ R && (a.range = R, L = !0);
393
+ const I = m.get(n);
394
+ if (I && (a.scalar = I), void 0 !== I && (L = !0), V(e, n, a, i, s)) return;
395
395
  if (s) {
396
- if ("Volatile" === a || a === `${x}.Volatile`) return void U(e, r.InvalidParamType, `'Volatile' is not a valid parameter type: '${z(e)}'. It describes the function's RESULT, so it belongs on the return type.`);
397
- if (N.has(a)) return A;
398
- const t = l.get(a);
396
+ if ("Volatile" === n || n === `${x}.Volatile`) return void U(e, r.InvalidParamType, `'Volatile' is not a valid parameter type: '${z(e)}'. It describes the function's RESULT, so it belongs on the return type.`);
397
+ if (N.has(n)) return A;
398
+ const t = l.get(n);
399
399
  if (t) return t;
400
- } else if ("Promise" === a) O = e, L = !0;
400
+ } else if ("Promise" === n) O = e, L = !0;
401
401
  else {
402
- const e = k.get(a);
403
- e && (Object.assign(n, e()), L = !0);
402
+ const e = k.get(n);
403
+ e && (Object.assign(a, e()), L = !0);
404
404
  }
405
405
  if (!L) {
406
- const t = H(e, n.name ?? z(e));
406
+ const t = H(e, a.name ?? z(e));
407
407
  if (void 0 === t) return;
408
- if (null !== t) return n.scalar = t.type, void (s && (n.enum = t));
408
+ if (null !== t) return a.scalar = t.type, void (s && (a.enum = t));
409
409
  }
410
410
  if (!L) {
411
- const t = "number, string, boolean, Scalar, Lambda, Date, FormulaError.Known, IRichData, IRange, IReferenceRange (and arrays of these; optionally wrapped in AcceptError<T>, or grouped with Repeating<T>)", n = "number, string, boolean, Scalar, Date, FormulaError.Known, IRichData, IRange, Volatile<T> (and arrays of these)";
411
+ const t = "number, string, boolean, Scalar, Lambda, Date, FormulaError.Known, IRichData, IRange, IReferenceRange (and arrays of these; optionally wrapped in AcceptError<T>, or grouped with Repeating<T>)", a = "number, string, boolean, Scalar, Date, FormulaError.Known, IRichData, IRange, Volatile<T> (and arrays of these)";
412
412
  let i;
413
- i = s ? b ? `'${a}' is not a valid first parameter: '${z(e)}'. The first parameter is EITHER a macro target (making this a macro) OR a calculation input (making this a calculation function). Allowed: ${d.join(", ")} (macro target); ${t} (calculation input).` : `'${a}' is not a valid parameter type: '${z(e)}'. Allowed: ${t}.` : `'${a}' is not a valid return type: '${z(e)}'. Allowed: ${n}.`, U(e, s ? r.InvalidParamType : r.InvalidReturnType, i);
413
+ i = s ? b ? `'${n}' is not a valid first parameter: '${z(e)}'. The first parameter is EITHER a macro target (making this a macro) OR a calculation input (making this a calculation function). Allowed: ${d.join(", ")} (macro target); ${t} (calculation input).` : `'${n}' is not a valid parameter type: '${z(e)}'. Allowed: ${t}.` : `'${n}' is not a valid return type: '${z(e)}'. Allowed: ${a}.`, U(e, s ? r.InvalidParamType : r.InvalidReturnType, i);
414
414
  return;
415
415
  }
416
416
  const E = e.typeArguments;
417
417
  if (E) {
418
- if (1 !== E.length) return void U(e, r.GenericArity, `'${a}' must be typed with exactly 1 type: '${z(e)}'.`);
419
- const o = E[0], l = s && t.isTypeReferenceNode(o) && $.has(S(o)), d = n.reportType;
420
- l && q.add(n), j(o, n, i, s), l && void 0 === d && delete n.reportType;
421
- const u = n.enum;
422
- u && !l && (U(E[0], r.EnumPosition, `'${a}' cannot hold the enum '${u.id}': '${z(e)}'. The members of a range reach the body as they are, so nothing checks them against the enum. Take the enum as a value, or type the range by its scalar ('${a}<${u.type}>').`), delete n.enum);
418
+ if (1 !== E.length) return void U(e, r.GenericArity, `'${n}' must be typed with exactly 1 type: '${z(e)}'.`);
419
+ const o = E[0], l = s && t.isTypeReferenceNode(o) && $.has(S(o)), d = a.reportType;
420
+ l && q.add(a), j(o, a, i, s), l && void 0 === d && delete a.reportType;
421
+ const u = a.enum;
422
+ u && !l && (U(E[0], r.EnumPosition, `'${n}' cannot hold the enum '${u.id}': '${z(e)}'. The members of a range reach the body as they are, so nothing checks them against the enum. Take the enum as a value, or type the range by its scalar ('${n}<${u.type}>').`), delete a.enum);
423
423
  }
424
424
  } else e.kind === t.SyntaxKind.FunctionType && ((e, n, a, i) => {
425
425
  if (!i) return void U(e, r.FunctionReturn, `Function type is not a valid return type: '${z(e)}'. Declare a 'Lambda' return instead.`);
@@ -428,11 +428,11 @@ function I(t, n, u, I) {
428
428
  o && (o.kind === t.SyntaxKind.AnyKeyword ? l = "raw" : (Q(o, s, a, !1, { count: 0 }), l = s.scalar ?? "*"));
429
429
  const d = e.parameters;
430
430
  d && !d.some((e) => e.dotDotDotToken) && (n.lambdaArity = d.length), n.lambda = l;
431
- })(e, n, i, s);
432
- } else U(e, r.MissingType, `Type is not defined for '${n?.name ?? "return"}'.`);
431
+ })(e, a, i, s);
432
+ } else U(e, r.MissingType, `Type is not defined for '${a?.name ?? "return"}'.`);
433
433
  };
434
434
  try {
435
- t.forEachChild(n, (e) => {
435
+ t.forEachChild(a, (e) => {
436
436
  if (a = e, 0 !== (t.getCombinedModifierFlags(a) & t.ModifierFlags.Export) && t.isFunctionDeclaration(e)) {
437
437
  const a = e?.name?.getText();
438
438
  if (!e.body) return void U(e, r.NoBody, `'${a}': function has no body.`);
@@ -1,5 +1,5 @@
1
1
  /**
2
- * @license @sheetxl/mcp - MCP server exposing SheetXL spreadsheet operations as tools and resources. - v0.8.0-beta.18
2
+ * @license @sheetxl/mcp - MCP server exposing SheetXL spreadsheet operations as tools and resources. - v0.8.0-beta.20
3
3
  *
4
4
  * (C) 2026-present SheetXL Inc. & Michael T. Ford
5
5
  * License: SheetXL EULA — https://www.sheetxl.com/eula
@@ -1,5 +1,5 @@
1
1
  /**
2
- * @license @sheetxl/mcp - MCP server exposing SheetXL spreadsheet operations as tools and resources. - v0.8.0-beta.18
2
+ * @license @sheetxl/mcp - MCP server exposing SheetXL spreadsheet operations as tools and resources. - v0.8.0-beta.20
3
3
  *
4
4
  * (C) 2026-present SheetXL Inc. & Michael T. Ford
5
5
  * License: SheetXL EULA — https://www.sheetxl.com/eula