@mcp-z/mcp-gmail 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 (321) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +167 -0
  3. package/bin/server.js +5 -0
  4. package/dist/cjs/constants.d.cts +11 -0
  5. package/dist/cjs/constants.d.ts +11 -0
  6. package/dist/cjs/constants.js +39 -0
  7. package/dist/cjs/constants.js.map +1 -0
  8. package/dist/cjs/email/composition/rfc822-builder.d.cts +11 -0
  9. package/dist/cjs/email/composition/rfc822-builder.d.ts +11 -0
  10. package/dist/cjs/email/composition/rfc822-builder.js +24 -0
  11. package/dist/cjs/email/composition/rfc822-builder.js.map +1 -0
  12. package/dist/cjs/email/messages/fetch-message.d.cts +24 -0
  13. package/dist/cjs/email/messages/fetch-message.d.ts +24 -0
  14. package/dist/cjs/email/messages/fetch-message.js +367 -0
  15. package/dist/cjs/email/messages/fetch-message.js.map +1 -0
  16. package/dist/cjs/email/messages/messages.d.cts +7 -0
  17. package/dist/cjs/email/messages/messages.d.ts +7 -0
  18. package/dist/cjs/email/messages/messages.js +146 -0
  19. package/dist/cjs/email/messages/messages.js.map +1 -0
  20. package/dist/cjs/email/parsing/header-parsing.d.cts +1 -0
  21. package/dist/cjs/email/parsing/header-parsing.d.ts +1 -0
  22. package/dist/cjs/email/parsing/header-parsing.js +20 -0
  23. package/dist/cjs/email/parsing/header-parsing.js.map +1 -0
  24. package/dist/cjs/email/parsing/headers-utils.d.cts +5 -0
  25. package/dist/cjs/email/parsing/headers-utils.d.ts +5 -0
  26. package/dist/cjs/email/parsing/headers-utils.js +46 -0
  27. package/dist/cjs/email/parsing/headers-utils.js.map +1 -0
  28. package/dist/cjs/email/parsing/html-processing.d.cts +8 -0
  29. package/dist/cjs/email/parsing/html-processing.d.ts +8 -0
  30. package/dist/cjs/email/parsing/html-processing.js +72 -0
  31. package/dist/cjs/email/parsing/html-processing.js.map +1 -0
  32. package/dist/cjs/email/parsing/message-extraction.d.cts +2 -0
  33. package/dist/cjs/email/parsing/message-extraction.d.ts +2 -0
  34. package/dist/cjs/email/parsing/message-extraction.js +25 -0
  35. package/dist/cjs/email/parsing/message-extraction.js.map +1 -0
  36. package/dist/cjs/email/querying/execute-query.d.cts +17 -0
  37. package/dist/cjs/email/querying/execute-query.d.ts +17 -0
  38. package/dist/cjs/email/querying/execute-query.js +265 -0
  39. package/dist/cjs/email/querying/execute-query.js.map +1 -0
  40. package/dist/cjs/email/querying/pagination.d.cts +27 -0
  41. package/dist/cjs/email/querying/pagination.d.ts +27 -0
  42. package/dist/cjs/email/querying/pagination.js +533 -0
  43. package/dist/cjs/email/querying/pagination.js.map +1 -0
  44. package/dist/cjs/email/querying/query-builder.d.cts +47 -0
  45. package/dist/cjs/email/querying/query-builder.d.ts +47 -0
  46. package/dist/cjs/email/querying/query-builder.js +387 -0
  47. package/dist/cjs/email/querying/query-builder.js.map +1 -0
  48. package/dist/cjs/email/querying/search-execution.d.cts +29 -0
  49. package/dist/cjs/email/querying/search-execution.d.ts +29 -0
  50. package/dist/cjs/email/querying/search-execution.js +190 -0
  51. package/dist/cjs/email/querying/search-execution.js.map +1 -0
  52. package/dist/cjs/index.d.cts +8 -0
  53. package/dist/cjs/index.d.ts +8 -0
  54. package/dist/cjs/index.js +314 -0
  55. package/dist/cjs/index.js.map +1 -0
  56. package/dist/cjs/labels/gmail-labels.d.cts +2 -0
  57. package/dist/cjs/labels/gmail-labels.d.ts +2 -0
  58. package/dist/cjs/labels/gmail-labels.js +206 -0
  59. package/dist/cjs/labels/gmail-labels.js.map +1 -0
  60. package/dist/cjs/lib/base64-encoding.d.cts +2 -0
  61. package/dist/cjs/lib/base64-encoding.d.ts +2 -0
  62. package/dist/cjs/lib/base64-encoding.js +32 -0
  63. package/dist/cjs/lib/base64-encoding.js.map +1 -0
  64. package/dist/cjs/lib/create-store.d.cts +2 -0
  65. package/dist/cjs/lib/create-store.d.ts +2 -0
  66. package/dist/cjs/lib/create-store.js +166 -0
  67. package/dist/cjs/lib/create-store.js.map +1 -0
  68. package/dist/cjs/lib/date-conversion.d.cts +1 -0
  69. package/dist/cjs/lib/date-conversion.d.ts +1 -0
  70. package/dist/cjs/lib/date-conversion.js +16 -0
  71. package/dist/cjs/lib/date-conversion.js.map +1 -0
  72. package/dist/cjs/lib/messages-to-row.d.cts +61 -0
  73. package/dist/cjs/lib/messages-to-row.d.ts +61 -0
  74. package/dist/cjs/lib/messages-to-row.js +243 -0
  75. package/dist/cjs/lib/messages-to-row.js.map +1 -0
  76. package/dist/cjs/mcp/index.d.cts +3 -0
  77. package/dist/cjs/mcp/index.d.ts +3 -0
  78. package/dist/cjs/mcp/index.js +66 -0
  79. package/dist/cjs/mcp/index.js.map +1 -0
  80. package/dist/cjs/mcp/prompts/draft-email.d.cts +30 -0
  81. package/dist/cjs/mcp/prompts/draft-email.d.ts +30 -0
  82. package/dist/cjs/mcp/prompts/draft-email.js +184 -0
  83. package/dist/cjs/mcp/prompts/draft-email.js.map +1 -0
  84. package/dist/cjs/mcp/prompts/index.d.cts +2 -0
  85. package/dist/cjs/mcp/prompts/index.d.ts +2 -0
  86. package/dist/cjs/mcp/prompts/index.js +26 -0
  87. package/dist/cjs/mcp/prompts/index.js.map +1 -0
  88. package/dist/cjs/mcp/prompts/query-syntax.d.cts +19 -0
  89. package/dist/cjs/mcp/prompts/query-syntax.d.ts +19 -0
  90. package/dist/cjs/mcp/prompts/query-syntax.js +169 -0
  91. package/dist/cjs/mcp/prompts/query-syntax.js.map +1 -0
  92. package/dist/cjs/mcp/resources/email.d.cts +11 -0
  93. package/dist/cjs/mcp/resources/email.d.ts +11 -0
  94. package/dist/cjs/mcp/resources/email.js +256 -0
  95. package/dist/cjs/mcp/resources/email.js.map +1 -0
  96. package/dist/cjs/mcp/resources/index.d.cts +1 -0
  97. package/dist/cjs/mcp/resources/index.d.ts +1 -0
  98. package/dist/cjs/mcp/resources/index.js +17 -0
  99. package/dist/cjs/mcp/resources/index.js.map +1 -0
  100. package/dist/cjs/mcp/tools/categories-list.d.cts +58 -0
  101. package/dist/cjs/mcp/tools/categories-list.d.ts +58 -0
  102. package/dist/cjs/mcp/tools/categories-list.js +298 -0
  103. package/dist/cjs/mcp/tools/categories-list.js.map +1 -0
  104. package/dist/cjs/mcp/tools/index.d.cts +11 -0
  105. package/dist/cjs/mcp/tools/index.d.ts +11 -0
  106. package/dist/cjs/mcp/tools/index.js +62 -0
  107. package/dist/cjs/mcp/tools/index.js.map +1 -0
  108. package/dist/cjs/mcp/tools/label-add.d.cts +61 -0
  109. package/dist/cjs/mcp/tools/label-add.d.ts +61 -0
  110. package/dist/cjs/mcp/tools/label-add.js +280 -0
  111. package/dist/cjs/mcp/tools/label-add.js.map +1 -0
  112. package/dist/cjs/mcp/tools/label-delete.d.cts +71 -0
  113. package/dist/cjs/mcp/tools/label-delete.d.ts +71 -0
  114. package/dist/cjs/mcp/tools/label-delete.js +476 -0
  115. package/dist/cjs/mcp/tools/label-delete.js.map +1 -0
  116. package/dist/cjs/mcp/tools/labels-list.d.cts +75 -0
  117. package/dist/cjs/mcp/tools/labels-list.d.ts +75 -0
  118. package/dist/cjs/mcp/tools/labels-list.js +298 -0
  119. package/dist/cjs/mcp/tools/labels-list.js.map +1 -0
  120. package/dist/cjs/mcp/tools/message-get.d.cts +146 -0
  121. package/dist/cjs/mcp/tools/message-get.d.ts +146 -0
  122. package/dist/cjs/mcp/tools/message-get.js +317 -0
  123. package/dist/cjs/mcp/tools/message-get.js.map +1 -0
  124. package/dist/cjs/mcp/tools/message-mark-read.d.cts +50 -0
  125. package/dist/cjs/mcp/tools/message-mark-read.d.ts +50 -0
  126. package/dist/cjs/mcp/tools/message-mark-read.js +254 -0
  127. package/dist/cjs/mcp/tools/message-mark-read.js.map +1 -0
  128. package/dist/cjs/mcp/tools/message-move-to-trash.d.cts +71 -0
  129. package/dist/cjs/mcp/tools/message-move-to-trash.d.ts +71 -0
  130. package/dist/cjs/mcp/tools/message-move-to-trash.js +450 -0
  131. package/dist/cjs/mcp/tools/message-move-to-trash.js.map +1 -0
  132. package/dist/cjs/mcp/tools/message-respond.d.cts +60 -0
  133. package/dist/cjs/mcp/tools/message-respond.d.ts +60 -0
  134. package/dist/cjs/mcp/tools/message-respond.js +367 -0
  135. package/dist/cjs/mcp/tools/message-respond.js.map +1 -0
  136. package/dist/cjs/mcp/tools/message-search.d.cts +182 -0
  137. package/dist/cjs/mcp/tools/message-search.d.ts +182 -0
  138. package/dist/cjs/mcp/tools/message-search.js +405 -0
  139. package/dist/cjs/mcp/tools/message-search.js.map +1 -0
  140. package/dist/cjs/mcp/tools/message-send.d.cts +87 -0
  141. package/dist/cjs/mcp/tools/message-send.d.ts +87 -0
  142. package/dist/cjs/mcp/tools/message-send.js +288 -0
  143. package/dist/cjs/mcp/tools/message-send.js.map +1 -0
  144. package/dist/cjs/mcp/tools/messages-export-csv.d.cts +84 -0
  145. package/dist/cjs/mcp/tools/messages-export-csv.d.ts +84 -0
  146. package/dist/cjs/mcp/tools/messages-export-csv.js +530 -0
  147. package/dist/cjs/mcp/tools/messages-export-csv.js.map +1 -0
  148. package/dist/cjs/package.json +1 -0
  149. package/dist/cjs/schemas/gmail-query-schema.d.cts +36 -0
  150. package/dist/cjs/schemas/gmail-query-schema.d.ts +36 -0
  151. package/dist/cjs/schemas/gmail-query-schema.js +117 -0
  152. package/dist/cjs/schemas/gmail-query-schema.js.map +1 -0
  153. package/dist/cjs/schemas/index.d.cts +1 -0
  154. package/dist/cjs/schemas/index.d.ts +1 -0
  155. package/dist/cjs/schemas/index.js +19 -0
  156. package/dist/cjs/schemas/index.js.map +1 -0
  157. package/dist/cjs/setup/config.d.cts +48 -0
  158. package/dist/cjs/setup/config.d.ts +48 -0
  159. package/dist/cjs/setup/config.js +217 -0
  160. package/dist/cjs/setup/config.js.map +1 -0
  161. package/dist/cjs/setup/http.d.cts +8 -0
  162. package/dist/cjs/setup/http.d.ts +8 -0
  163. package/dist/cjs/setup/http.js +267 -0
  164. package/dist/cjs/setup/http.js.map +1 -0
  165. package/dist/cjs/setup/index.d.cts +5 -0
  166. package/dist/cjs/setup/index.d.ts +5 -0
  167. package/dist/cjs/setup/index.js +46 -0
  168. package/dist/cjs/setup/index.js.map +1 -0
  169. package/dist/cjs/setup/oauth-google.d.cts +54 -0
  170. package/dist/cjs/setup/oauth-google.d.ts +54 -0
  171. package/dist/cjs/setup/oauth-google.js +332 -0
  172. package/dist/cjs/setup/oauth-google.js.map +1 -0
  173. package/dist/cjs/setup/runtime.d.cts +12 -0
  174. package/dist/cjs/setup/runtime.d.ts +12 -0
  175. package/dist/cjs/setup/runtime.js +489 -0
  176. package/dist/cjs/setup/runtime.js.map +1 -0
  177. package/dist/cjs/setup/stdio.d.cts +7 -0
  178. package/dist/cjs/setup/stdio.d.ts +7 -0
  179. package/dist/cjs/setup/stdio.js +239 -0
  180. package/dist/cjs/setup/stdio.js.map +1 -0
  181. package/dist/cjs/types.d.cts +54 -0
  182. package/dist/cjs/types.d.ts +54 -0
  183. package/dist/cjs/types.js +5 -0
  184. package/dist/cjs/types.js.map +1 -0
  185. package/dist/esm/constants.d.ts +11 -0
  186. package/dist/esm/constants.js +14 -0
  187. package/dist/esm/constants.js.map +1 -0
  188. package/dist/esm/email/composition/rfc822-builder.d.ts +11 -0
  189. package/dist/esm/email/composition/rfc822-builder.js +13 -0
  190. package/dist/esm/email/composition/rfc822-builder.js.map +1 -0
  191. package/dist/esm/email/messages/fetch-message.d.ts +24 -0
  192. package/dist/esm/email/messages/fetch-message.js +123 -0
  193. package/dist/esm/email/messages/fetch-message.js.map +1 -0
  194. package/dist/esm/email/messages/messages.d.ts +7 -0
  195. package/dist/esm/email/messages/messages.js +91 -0
  196. package/dist/esm/email/messages/messages.js.map +1 -0
  197. package/dist/esm/email/parsing/header-parsing.d.ts +1 -0
  198. package/dist/esm/email/parsing/header-parsing.js +1 -0
  199. package/dist/esm/email/parsing/header-parsing.js.map +1 -0
  200. package/dist/esm/email/parsing/headers-utils.d.ts +5 -0
  201. package/dist/esm/email/parsing/headers-utils.js +25 -0
  202. package/dist/esm/email/parsing/headers-utils.js.map +1 -0
  203. package/dist/esm/email/parsing/html-processing.d.ts +8 -0
  204. package/dist/esm/email/parsing/html-processing.js +39 -0
  205. package/dist/esm/email/parsing/html-processing.js.map +1 -0
  206. package/dist/esm/email/parsing/message-extraction.d.ts +2 -0
  207. package/dist/esm/email/parsing/message-extraction.js +3 -0
  208. package/dist/esm/email/parsing/message-extraction.js.map +1 -0
  209. package/dist/esm/email/querying/execute-query.d.ts +17 -0
  210. package/dist/esm/email/querying/execute-query.js +45 -0
  211. package/dist/esm/email/querying/execute-query.js.map +1 -0
  212. package/dist/esm/email/querying/pagination.d.ts +27 -0
  213. package/dist/esm/email/querying/pagination.js +152 -0
  214. package/dist/esm/email/querying/pagination.js.map +1 -0
  215. package/dist/esm/email/querying/query-builder.d.ts +47 -0
  216. package/dist/esm/email/querying/query-builder.js +306 -0
  217. package/dist/esm/email/querying/query-builder.js.map +1 -0
  218. package/dist/esm/email/querying/search-execution.d.ts +29 -0
  219. package/dist/esm/email/querying/search-execution.js +35 -0
  220. package/dist/esm/email/querying/search-execution.js.map +1 -0
  221. package/dist/esm/index.d.ts +8 -0
  222. package/dist/esm/index.js +34 -0
  223. package/dist/esm/index.js.map +1 -0
  224. package/dist/esm/labels/gmail-labels.d.ts +2 -0
  225. package/dist/esm/labels/gmail-labels.js +43 -0
  226. package/dist/esm/labels/gmail-labels.js.map +1 -0
  227. package/dist/esm/lib/base64-encoding.d.ts +2 -0
  228. package/dist/esm/lib/base64-encoding.js +13 -0
  229. package/dist/esm/lib/base64-encoding.js.map +1 -0
  230. package/dist/esm/lib/create-store.d.ts +2 -0
  231. package/dist/esm/lib/create-store.js +6 -0
  232. package/dist/esm/lib/create-store.js.map +1 -0
  233. package/dist/esm/lib/date-conversion.d.ts +1 -0
  234. package/dist/esm/lib/date-conversion.js +5 -0
  235. package/dist/esm/lib/date-conversion.js.map +1 -0
  236. package/dist/esm/lib/messages-to-row.d.ts +61 -0
  237. package/dist/esm/lib/messages-to-row.js +188 -0
  238. package/dist/esm/lib/messages-to-row.js.map +1 -0
  239. package/dist/esm/mcp/index.d.ts +3 -0
  240. package/dist/esm/mcp/index.js +6 -0
  241. package/dist/esm/mcp/index.js.map +1 -0
  242. package/dist/esm/mcp/prompts/draft-email.d.ts +30 -0
  243. package/dist/esm/mcp/prompts/draft-email.js +37 -0
  244. package/dist/esm/mcp/prompts/draft-email.js.map +1 -0
  245. package/dist/esm/mcp/prompts/index.d.ts +2 -0
  246. package/dist/esm/mcp/prompts/index.js +2 -0
  247. package/dist/esm/mcp/prompts/index.js.map +1 -0
  248. package/dist/esm/mcp/prompts/query-syntax.d.ts +19 -0
  249. package/dist/esm/mcp/prompts/query-syntax.js +74 -0
  250. package/dist/esm/mcp/prompts/query-syntax.js.map +1 -0
  251. package/dist/esm/mcp/resources/email.d.ts +11 -0
  252. package/dist/esm/mcp/resources/email.js +92 -0
  253. package/dist/esm/mcp/resources/email.js.map +1 -0
  254. package/dist/esm/mcp/resources/index.d.ts +1 -0
  255. package/dist/esm/mcp/resources/index.js +1 -0
  256. package/dist/esm/mcp/resources/index.js.map +1 -0
  257. package/dist/esm/mcp/tools/categories-list.d.ts +58 -0
  258. package/dist/esm/mcp/tools/categories-list.js +124 -0
  259. package/dist/esm/mcp/tools/categories-list.js.map +1 -0
  260. package/dist/esm/mcp/tools/index.d.ts +11 -0
  261. package/dist/esm/mcp/tools/index.js +11 -0
  262. package/dist/esm/mcp/tools/index.js.map +1 -0
  263. package/dist/esm/mcp/tools/label-add.d.ts +61 -0
  264. package/dist/esm/mcp/tools/label-add.js +101 -0
  265. package/dist/esm/mcp/tools/label-add.js.map +1 -0
  266. package/dist/esm/mcp/tools/label-delete.d.ts +71 -0
  267. package/dist/esm/mcp/tools/label-delete.js +186 -0
  268. package/dist/esm/mcp/tools/label-delete.js.map +1 -0
  269. package/dist/esm/mcp/tools/labels-list.d.ts +75 -0
  270. package/dist/esm/mcp/tools/labels-list.js +122 -0
  271. package/dist/esm/mcp/tools/labels-list.js.map +1 -0
  272. package/dist/esm/mcp/tools/message-get.d.ts +146 -0
  273. package/dist/esm/mcp/tools/message-get.js +145 -0
  274. package/dist/esm/mcp/tools/message-get.js.map +1 -0
  275. package/dist/esm/mcp/tools/message-mark-read.d.ts +50 -0
  276. package/dist/esm/mcp/tools/message-mark-read.js +80 -0
  277. package/dist/esm/mcp/tools/message-mark-read.js.map +1 -0
  278. package/dist/esm/mcp/tools/message-move-to-trash.d.ts +71 -0
  279. package/dist/esm/mcp/tools/message-move-to-trash.js +167 -0
  280. package/dist/esm/mcp/tools/message-move-to-trash.js.map +1 -0
  281. package/dist/esm/mcp/tools/message-respond.d.ts +60 -0
  282. package/dist/esm/mcp/tools/message-respond.js +152 -0
  283. package/dist/esm/mcp/tools/message-respond.js.map +1 -0
  284. package/dist/esm/mcp/tools/message-search.d.ts +182 -0
  285. package/dist/esm/mcp/tools/message-search.js +180 -0
  286. package/dist/esm/mcp/tools/message-search.js.map +1 -0
  287. package/dist/esm/mcp/tools/message-send.d.ts +87 -0
  288. package/dist/esm/mcp/tools/message-send.js +115 -0
  289. package/dist/esm/mcp/tools/message-send.js.map +1 -0
  290. package/dist/esm/mcp/tools/messages-export-csv.d.ts +84 -0
  291. package/dist/esm/mcp/tools/messages-export-csv.js +261 -0
  292. package/dist/esm/mcp/tools/messages-export-csv.js.map +1 -0
  293. package/dist/esm/package.json +1 -0
  294. package/dist/esm/schemas/gmail-query-schema.d.ts +36 -0
  295. package/dist/esm/schemas/gmail-query-schema.js +72 -0
  296. package/dist/esm/schemas/gmail-query-schema.js.map +1 -0
  297. package/dist/esm/schemas/index.d.ts +1 -0
  298. package/dist/esm/schemas/index.js +1 -0
  299. package/dist/esm/schemas/index.js.map +1 -0
  300. package/dist/esm/setup/config.d.ts +48 -0
  301. package/dist/esm/setup/config.js +175 -0
  302. package/dist/esm/setup/config.js.map +1 -0
  303. package/dist/esm/setup/http.d.ts +8 -0
  304. package/dist/esm/setup/http.js +61 -0
  305. package/dist/esm/setup/http.js.map +1 -0
  306. package/dist/esm/setup/index.d.ts +5 -0
  307. package/dist/esm/setup/index.js +5 -0
  308. package/dist/esm/setup/index.js.map +1 -0
  309. package/dist/esm/setup/oauth-google.d.ts +54 -0
  310. package/dist/esm/setup/oauth-google.js +142 -0
  311. package/dist/esm/setup/oauth-google.js.map +1 -0
  312. package/dist/esm/setup/runtime.d.ts +12 -0
  313. package/dist/esm/setup/runtime.js +115 -0
  314. package/dist/esm/setup/runtime.js.map +1 -0
  315. package/dist/esm/setup/stdio.d.ts +7 -0
  316. package/dist/esm/setup/stdio.js +38 -0
  317. package/dist/esm/setup/stdio.js.map +1 -0
  318. package/dist/esm/types.d.ts +54 -0
  319. package/dist/esm/types.js +1 -0
  320. package/dist/esm/types.js.map +1 -0
  321. package/package.json +110 -0
@@ -0,0 +1,46 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", {
3
+ value: true
4
+ });
5
+ function _export(target, all) {
6
+ for(var name in all)Object.defineProperty(target, name, {
7
+ enumerable: true,
8
+ get: Object.getOwnPropertyDescriptor(all, name).get
9
+ });
10
+ }
11
+ _export(exports, {
12
+ get extractEmails () {
13
+ return extractEmails;
14
+ },
15
+ get extractFrom () {
16
+ return extractFrom;
17
+ }
18
+ });
19
+ function extractEmails(header) {
20
+ if (!header) return [];
21
+ var matches = header.match(/[A-Z0-9._%+-]+@[A-Z0-9.-]+\.[A-Z]{2,}/gi) || [];
22
+ return matches.map(function(s) {
23
+ return s.trim();
24
+ });
25
+ }
26
+ function extractFrom(header) {
27
+ if (!header) return undefined;
28
+ var m = header.match(/^(.*)<([^>]+)>/);
29
+ if (m) {
30
+ var rawName = m[1];
31
+ var name = rawName ? rawName.replace(/"/g, '').trim() : undefined;
32
+ var addr = m[2] ? m[2].trim() : undefined;
33
+ var result = {};
34
+ if (addr) result.address = addr;
35
+ if (name) result.name = name;
36
+ return result;
37
+ }
38
+ var emails = extractEmails(header);
39
+ if (emails[0]) return {
40
+ address: emails[0]
41
+ };
42
+ return {
43
+ address: header.trim()
44
+ };
45
+ }
46
+ /* 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-gmail/src/email/parsing/headers-utils.ts"],"sourcesContent":["export function extractEmails(header?: string): string[] {\n if (!header) return [];\n const matches = header.match(/[A-Z0-9._%+-]+@[A-Z0-9.-]+\\.[A-Z]{2,}/gi) || [];\n return matches.map((s: string) => s.trim());\n}\n\nexport function extractFrom(header?: string): { address?: string; name?: string } | undefined {\n if (!header) return undefined;\n const m = header.match(/^(.*)<([^>]+)>/);\n if (m) {\n const rawName = m[1];\n const name = rawName ? rawName.replace(/\"/g, '').trim() : undefined;\n const addr = m[2] ? m[2].trim() : undefined;\n const result: { address?: string; name?: string } = {};\n if (addr) result.address = addr;\n if (name) result.name = name;\n return result;\n }\n const emails = extractEmails(header);\n if (emails[0]) return { address: emails[0] };\n return { address: header.trim() };\n}\n"],"names":["extractEmails","extractFrom","header","matches","match","map","s","trim","undefined","m","rawName","name","replace","addr","result","address","emails"],"mappings":";;;;;;;;;;;QAAgBA;eAAAA;;QAMAC;eAAAA;;;AANT,SAASD,cAAcE,MAAe;IAC3C,IAAI,CAACA,QAAQ,OAAO,EAAE;IACtB,IAAMC,UAAUD,OAAOE,KAAK,CAAC,8CAA8C,EAAE;IAC7E,OAAOD,QAAQE,GAAG,CAAC,SAACC;eAAcA,EAAEC,IAAI;;AAC1C;AAEO,SAASN,YAAYC,MAAe;IACzC,IAAI,CAACA,QAAQ,OAAOM;IACpB,IAAMC,IAAIP,OAAOE,KAAK,CAAC;IACvB,IAAIK,GAAG;QACL,IAAMC,UAAUD,CAAC,CAAC,EAAE;QACpB,IAAME,OAAOD,UAAUA,QAAQE,OAAO,CAAC,MAAM,IAAIL,IAAI,KAAKC;QAC1D,IAAMK,OAAOJ,CAAC,CAAC,EAAE,GAAGA,CAAC,CAAC,EAAE,CAACF,IAAI,KAAKC;QAClC,IAAMM,SAA8C,CAAC;QACrD,IAAID,MAAMC,OAAOC,OAAO,GAAGF;QAC3B,IAAIF,MAAMG,OAAOH,IAAI,GAAGA;QACxB,OAAOG;IACT;IACA,IAAME,SAAShB,cAAcE;IAC7B,IAAIc,MAAM,CAAC,EAAE,EAAE,OAAO;QAAED,SAASC,MAAM,CAAC,EAAE;IAAC;IAC3C,OAAO;QAAED,SAASb,OAAOK,IAAI;IAAG;AAClC"}
@@ -0,0 +1,8 @@
1
+ import type { gmail_v1 } from 'googleapis';
2
+ export interface BodyExtractionOptions {
3
+ /** Format to return: 'text' extracts plain text, 'html' preserves HTML structure */
4
+ contentType?: 'text' | 'html';
5
+ /** When true, removes quoted thread history from HTML content */
6
+ excludeThreadHistory?: boolean;
7
+ }
8
+ export declare function extractBodyFromPayload(payload: gmail_v1.Schema$MessagePart, options?: BodyExtractionOptions): string;
@@ -0,0 +1,8 @@
1
+ import type { gmail_v1 } from 'googleapis';
2
+ export interface BodyExtractionOptions {
3
+ /** Format to return: 'text' extracts plain text, 'html' preserves HTML structure */
4
+ contentType?: 'text' | 'html';
5
+ /** When true, removes quoted thread history from HTML content */
6
+ excludeThreadHistory?: boolean;
7
+ }
8
+ export declare function extractBodyFromPayload(payload: gmail_v1.Schema$MessagePart, options?: BodyExtractionOptions): string;
@@ -0,0 +1,72 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", {
3
+ value: true
4
+ });
5
+ Object.defineProperty(exports, "extractBodyFromPayload", {
6
+ enumerable: true,
7
+ get: function() {
8
+ return extractBodyFromPayload;
9
+ }
10
+ });
11
+ var _email = require("@mcp-z/email");
12
+ var _nodehtmlparser = require("node-html-parser");
13
+ function _type_of(obj) {
14
+ "@swc/helpers - typeof";
15
+ return obj && typeof Symbol !== "undefined" && obj.constructor === Symbol ? "symbol" : typeof obj;
16
+ }
17
+ function extractBodyFromPayload(payload) {
18
+ var options = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : {};
19
+ var _payload_body;
20
+ var _options_contentType = options.contentType, contentType = _options_contentType === void 0 ? 'text' : _options_contentType, _options_excludeThreadHistory = options.excludeThreadHistory, excludeThreadHistory = _options_excludeThreadHistory === void 0 ? false : _options_excludeThreadHistory;
21
+ if (!payload) return '';
22
+ // If there's a direct body with data
23
+ if ((_payload_body = payload.body) === null || _payload_body === void 0 ? void 0 : _payload_body.data) {
24
+ return Buffer.from(payload.body.data, 'base64').toString('utf-8');
25
+ }
26
+ // If there are parts, look for text/plain or text/html
27
+ if (payload.parts && Array.isArray(payload.parts)) {
28
+ var _iteratorNormalCompletion = true, _didIteratorError = false, _iteratorError = undefined;
29
+ try {
30
+ for(var _iterator = payload.parts[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true){
31
+ var part = _step.value;
32
+ var _part_body, _part_body1;
33
+ if (part.mimeType === 'text/plain' && ((_part_body = part.body) === null || _part_body === void 0 ? void 0 : _part_body.data)) {
34
+ return Buffer.from(part.body.data, 'base64').toString('utf-8');
35
+ }
36
+ if (part.mimeType === 'text/html' && ((_part_body1 = part.body) === null || _part_body1 === void 0 ? void 0 : _part_body1.data)) {
37
+ var html = Buffer.from(part.body.data, 'base64').toString('utf-8');
38
+ // Remove thread history if requested
39
+ if (excludeThreadHistory) {
40
+ html = (0, _email.extractCurrentMessageFromHtml)(html);
41
+ }
42
+ // Return HTML directly if requested
43
+ if (contentType === 'html') {
44
+ return html;
45
+ }
46
+ // Otherwise extract plain text from HTML
47
+ var doc = (0, _nodehtmlparser.parse)(html);
48
+ var docUnknown = doc;
49
+ if (docUnknown && (typeof docUnknown === "undefined" ? "undefined" : _type_of(docUnknown)) === 'object' && 'text' in docUnknown) {
50
+ return docUnknown.text;
51
+ }
52
+ return '';
53
+ }
54
+ }
55
+ } catch (err) {
56
+ _didIteratorError = true;
57
+ _iteratorError = err;
58
+ } finally{
59
+ try {
60
+ if (!_iteratorNormalCompletion && _iterator.return != null) {
61
+ _iterator.return();
62
+ }
63
+ } finally{
64
+ if (_didIteratorError) {
65
+ throw _iteratorError;
66
+ }
67
+ }
68
+ }
69
+ }
70
+ return '';
71
+ }
72
+ /* 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-gmail/src/email/parsing/html-processing.ts"],"sourcesContent":["import { extractCurrentMessageFromHtml } from '@mcp-z/email';\nimport type { gmail_v1 } from 'googleapis';\nimport { parse } from 'node-html-parser';\n\nexport interface BodyExtractionOptions {\n /** Format to return: 'text' extracts plain text, 'html' preserves HTML structure */\n contentType?: 'text' | 'html';\n /** When true, removes quoted thread history from HTML content */\n excludeThreadHistory?: boolean;\n}\n\nexport function extractBodyFromPayload(payload: gmail_v1.Schema$MessagePart, options: BodyExtractionOptions = {}): string {\n const { contentType = 'text', excludeThreadHistory = false } = options;\n if (!payload) return '';\n\n // If there's a direct body with data\n if (payload.body?.data) {\n return Buffer.from(payload.body.data, 'base64').toString('utf-8');\n }\n\n // If there are parts, look for text/plain or text/html\n if (payload.parts && Array.isArray(payload.parts)) {\n for (const part of payload.parts) {\n if (part.mimeType === 'text/plain' && part.body?.data) {\n return Buffer.from(part.body.data, 'base64').toString('utf-8');\n }\n if (part.mimeType === 'text/html' && part.body?.data) {\n let html = Buffer.from(part.body.data, 'base64').toString('utf-8');\n\n // Remove thread history if requested\n if (excludeThreadHistory) {\n html = extractCurrentMessageFromHtml(html);\n }\n\n // Return HTML directly if requested\n if (contentType === 'html') {\n return html;\n }\n\n // Otherwise extract plain text from HTML\n const doc = parse(html);\n const docUnknown = doc as unknown;\n if (docUnknown && typeof docUnknown === 'object' && 'text' in docUnknown) {\n return docUnknown.text as string;\n }\n return '';\n }\n }\n }\n\n return '';\n}\n"],"names":["extractBodyFromPayload","payload","options","contentType","excludeThreadHistory","body","data","Buffer","from","toString","parts","Array","isArray","part","mimeType","html","extractCurrentMessageFromHtml","doc","parse","docUnknown","text"],"mappings":";;;;+BAWgBA;;;eAAAA;;;qBAX8B;8BAExB;;;;;AASf,SAASA,uBAAuBC,OAAoC;QAAEC,UAAAA,iEAAiC,CAAC;QAKzGD;IAJJ,2BAA+DC,QAAvDC,aAAAA,gDAAc,+DAAyCD,QAAjCE,sBAAAA,kEAAuB;IACrD,IAAI,CAACH,SAAS,OAAO;IAErB,qCAAqC;IACrC,KAAIA,gBAAAA,QAAQI,IAAI,cAAZJ,oCAAAA,cAAcK,IAAI,EAAE;QACtB,OAAOC,OAAOC,IAAI,CAACP,QAAQI,IAAI,CAACC,IAAI,EAAE,UAAUG,QAAQ,CAAC;IAC3D;IAEA,uDAAuD;IACvD,IAAIR,QAAQS,KAAK,IAAIC,MAAMC,OAAO,CAACX,QAAQS,KAAK,GAAG;YAC5C,kCAAA,2BAAA;;YAAL,QAAK,YAAcT,QAAQS,KAAK,qBAA3B,SAAA,6BAAA,QAAA,yBAAA,iCAA6B;gBAA7B,IAAMG,OAAN;oBACmCA,YAGDA;gBAHrC,IAAIA,KAAKC,QAAQ,KAAK,kBAAgBD,aAAAA,KAAKR,IAAI,cAATQ,iCAAAA,WAAWP,IAAI,GAAE;oBACrD,OAAOC,OAAOC,IAAI,CAACK,KAAKR,IAAI,CAACC,IAAI,EAAE,UAAUG,QAAQ,CAAC;gBACxD;gBACA,IAAII,KAAKC,QAAQ,KAAK,iBAAeD,cAAAA,KAAKR,IAAI,cAATQ,kCAAAA,YAAWP,IAAI,GAAE;oBACpD,IAAIS,OAAOR,OAAOC,IAAI,CAACK,KAAKR,IAAI,CAACC,IAAI,EAAE,UAAUG,QAAQ,CAAC;oBAE1D,qCAAqC;oBACrC,IAAIL,sBAAsB;wBACxBW,OAAOC,IAAAA,oCAA6B,EAACD;oBACvC;oBAEA,oCAAoC;oBACpC,IAAIZ,gBAAgB,QAAQ;wBAC1B,OAAOY;oBACT;oBAEA,yCAAyC;oBACzC,IAAME,MAAMC,IAAAA,qBAAK,EAACH;oBAClB,IAAMI,aAAaF;oBACnB,IAAIE,cAAc,CAAA,OAAOA,2CAAP,SAAOA,WAAS,MAAM,YAAY,UAAUA,YAAY;wBACxE,OAAOA,WAAWC,IAAI;oBACxB;oBACA,OAAO;gBACT;YACF;;YAzBK;YAAA;;;qBAAA,6BAAA;oBAAA;;;oBAAA;0BAAA;;;;IA0BP;IAEA,OAAO;AACT"}
@@ -0,0 +1,2 @@
1
+ export { extractEmails, extractFrom } from './headers-utils.js';
2
+ export { extractBodyFromPayload } from './html-processing.js';
@@ -0,0 +1,2 @@
1
+ export { extractEmails, extractFrom } from './headers-utils.js';
2
+ export { extractBodyFromPayload } from './html-processing.js';
@@ -0,0 +1,25 @@
1
+ // Unified message extraction functionality
2
+ "use strict";
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ function _export(target, all) {
7
+ for(var name in all)Object.defineProperty(target, name, {
8
+ enumerable: true,
9
+ get: Object.getOwnPropertyDescriptor(all, name).get
10
+ });
11
+ }
12
+ _export(exports, {
13
+ get extractBodyFromPayload () {
14
+ return _htmlprocessing.extractBodyFromPayload;
15
+ },
16
+ get extractEmails () {
17
+ return _headersutils.extractEmails;
18
+ },
19
+ get extractFrom () {
20
+ return _headersutils.extractFrom;
21
+ }
22
+ });
23
+ var _headersutils = require("./headers-utils.js");
24
+ var _htmlprocessing = require("./html-processing.js");
25
+ /* 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-gmail/src/email/parsing/message-extraction.ts"],"sourcesContent":["// Unified message extraction functionality\n\nexport { extractEmails, extractFrom } from './headers-utils.js';\nexport { extractBodyFromPayload } from './html-processing.js';\n"],"names":["extractBodyFromPayload","extractEmails","extractFrom"],"mappings":"AAAA,2CAA2C;;;;;;;;;;;;QAGlCA;eAAAA,sCAAsB;;QADtBC;eAAAA,2BAAa;;QAAEC;eAAAA,yBAAW;;;4BAAQ;8BACJ"}
@@ -0,0 +1,17 @@
1
+ import type { ExecutionResult } from '@mcp-z/email';
2
+ import type { gmail_v1 } from 'googleapis';
3
+ import type { GmailQuery as QueryNode } from '../../schemas/gmail-query-schema.js';
4
+ import type { Logger } from '../../types.js';
5
+ export interface ExecuteQueryOptions {
6
+ client: gmail_v1.Gmail;
7
+ logger: Logger;
8
+ pageSize?: number;
9
+ pageToken?: string;
10
+ includeBody?: boolean;
11
+ }
12
+ /**
13
+ * Execute a Gmail query with direct, single-attempt execution.
14
+ * No planning, no fallbacks, no retries.
15
+ * Provider errors are returned directly to the caller for actionable feedback.
16
+ */
17
+ export declare function executeQuery<T>(query: QueryNode | undefined, options: ExecuteQueryOptions, transform: (item: unknown) => T): Promise<ExecutionResult<T>>;
@@ -0,0 +1,17 @@
1
+ import type { ExecutionResult } from '@mcp-z/email';
2
+ import type { gmail_v1 } from 'googleapis';
3
+ import type { GmailQuery as QueryNode } from '../../schemas/gmail-query-schema.js';
4
+ import type { Logger } from '../../types.js';
5
+ export interface ExecuteQueryOptions {
6
+ client: gmail_v1.Gmail;
7
+ logger: Logger;
8
+ pageSize?: number;
9
+ pageToken?: string;
10
+ includeBody?: boolean;
11
+ }
12
+ /**
13
+ * Execute a Gmail query with direct, single-attempt execution.
14
+ * No planning, no fallbacks, no retries.
15
+ * Provider errors are returned directly to the caller for actionable feedback.
16
+ */
17
+ export declare function executeQuery<T>(query: QueryNode | undefined, options: ExecuteQueryOptions, transform: (item: unknown) => T): Promise<ExecutionResult<T>>;
@@ -0,0 +1,265 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", {
3
+ value: true
4
+ });
5
+ Object.defineProperty(exports, "executeQuery", {
6
+ enumerable: true,
7
+ get: function() {
8
+ return executeQuery;
9
+ }
10
+ });
11
+ var _constantsts = require("../../constants.js");
12
+ var _searchexecution = require("./search-execution.js");
13
+ function asyncGeneratorStep(gen, resolve, reject, _next, _throw, key, arg) {
14
+ try {
15
+ var info = gen[key](arg);
16
+ var value = info.value;
17
+ } catch (error) {
18
+ reject(error);
19
+ return;
20
+ }
21
+ if (info.done) {
22
+ resolve(value);
23
+ } else {
24
+ Promise.resolve(value).then(_next, _throw);
25
+ }
26
+ }
27
+ function _async_to_generator(fn) {
28
+ return function() {
29
+ var self = this, args = arguments;
30
+ return new Promise(function(resolve, reject) {
31
+ var gen = fn.apply(self, args);
32
+ function _next(value) {
33
+ asyncGeneratorStep(gen, resolve, reject, _next, _throw, "next", value);
34
+ }
35
+ function _throw(err) {
36
+ asyncGeneratorStep(gen, resolve, reject, _next, _throw, "throw", err);
37
+ }
38
+ _next(undefined);
39
+ });
40
+ };
41
+ }
42
+ function _define_property(obj, key, value) {
43
+ if (key in obj) {
44
+ Object.defineProperty(obj, key, {
45
+ value: value,
46
+ enumerable: true,
47
+ configurable: true,
48
+ writable: true
49
+ });
50
+ } else {
51
+ obj[key] = value;
52
+ }
53
+ return obj;
54
+ }
55
+ function _instanceof(left, right) {
56
+ if (right != null && typeof Symbol !== "undefined" && right[Symbol.hasInstance]) {
57
+ return !!right[Symbol.hasInstance](left);
58
+ } else {
59
+ return left instanceof right;
60
+ }
61
+ }
62
+ function _object_spread(target) {
63
+ for(var i = 1; i < arguments.length; i++){
64
+ var source = arguments[i] != null ? arguments[i] : {};
65
+ var ownKeys = Object.keys(source);
66
+ if (typeof Object.getOwnPropertySymbols === "function") {
67
+ ownKeys = ownKeys.concat(Object.getOwnPropertySymbols(source).filter(function(sym) {
68
+ return Object.getOwnPropertyDescriptor(source, sym).enumerable;
69
+ }));
70
+ }
71
+ ownKeys.forEach(function(key) {
72
+ _define_property(target, key, source[key]);
73
+ });
74
+ }
75
+ return target;
76
+ }
77
+ function ownKeys(object, enumerableOnly) {
78
+ var keys = Object.keys(object);
79
+ if (Object.getOwnPropertySymbols) {
80
+ var symbols = Object.getOwnPropertySymbols(object);
81
+ if (enumerableOnly) {
82
+ symbols = symbols.filter(function(sym) {
83
+ return Object.getOwnPropertyDescriptor(object, sym).enumerable;
84
+ });
85
+ }
86
+ keys.push.apply(keys, symbols);
87
+ }
88
+ return keys;
89
+ }
90
+ function _object_spread_props(target, source) {
91
+ source = source != null ? source : {};
92
+ if (Object.getOwnPropertyDescriptors) {
93
+ Object.defineProperties(target, Object.getOwnPropertyDescriptors(source));
94
+ } else {
95
+ ownKeys(Object(source)).forEach(function(key) {
96
+ Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key));
97
+ });
98
+ }
99
+ return target;
100
+ }
101
+ function _ts_generator(thisArg, body) {
102
+ var f, y, t, _ = {
103
+ label: 0,
104
+ sent: function() {
105
+ if (t[0] & 1) throw t[1];
106
+ return t[1];
107
+ },
108
+ trys: [],
109
+ ops: []
110
+ }, g = Object.create((typeof Iterator === "function" ? Iterator : Object).prototype), d = Object.defineProperty;
111
+ return d(g, "next", {
112
+ value: verb(0)
113
+ }), d(g, "throw", {
114
+ value: verb(1)
115
+ }), d(g, "return", {
116
+ value: verb(2)
117
+ }), typeof Symbol === "function" && d(g, Symbol.iterator, {
118
+ value: function() {
119
+ return this;
120
+ }
121
+ }), g;
122
+ function verb(n) {
123
+ return function(v) {
124
+ return step([
125
+ n,
126
+ v
127
+ ]);
128
+ };
129
+ }
130
+ function step(op) {
131
+ if (f) throw new TypeError("Generator is already executing.");
132
+ while(g && (g = 0, op[0] && (_ = 0)), _)try {
133
+ 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;
134
+ if (y = 0, t) op = [
135
+ op[0] & 2,
136
+ t.value
137
+ ];
138
+ switch(op[0]){
139
+ case 0:
140
+ case 1:
141
+ t = op;
142
+ break;
143
+ case 4:
144
+ _.label++;
145
+ return {
146
+ value: op[1],
147
+ done: false
148
+ };
149
+ case 5:
150
+ _.label++;
151
+ y = op[1];
152
+ op = [
153
+ 0
154
+ ];
155
+ continue;
156
+ case 7:
157
+ op = _.ops.pop();
158
+ _.trys.pop();
159
+ continue;
160
+ default:
161
+ if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) {
162
+ _ = 0;
163
+ continue;
164
+ }
165
+ if (op[0] === 3 && (!t || op[1] > t[0] && op[1] < t[3])) {
166
+ _.label = op[1];
167
+ break;
168
+ }
169
+ if (op[0] === 6 && _.label < t[1]) {
170
+ _.label = t[1];
171
+ t = op;
172
+ break;
173
+ }
174
+ if (t && _.label < t[2]) {
175
+ _.label = t[2];
176
+ _.ops.push(op);
177
+ break;
178
+ }
179
+ if (t[2]) _.ops.pop();
180
+ _.trys.pop();
181
+ continue;
182
+ }
183
+ op = body.call(thisArg, _);
184
+ } catch (e) {
185
+ op = [
186
+ 6,
187
+ e
188
+ ];
189
+ y = 0;
190
+ } finally{
191
+ f = t = 0;
192
+ }
193
+ if (op[0] & 5) throw op[1];
194
+ return {
195
+ value: op[0] ? op[1] : void 0,
196
+ done: true
197
+ };
198
+ }
199
+ }
200
+ function executeQuery(query, options, transform) {
201
+ return _async_to_generator(function() {
202
+ var client, logger, pageSize, pageToken, includeBody, result, transformedResults, error;
203
+ return _ts_generator(this, function(_state) {
204
+ switch(_state.label){
205
+ case 0:
206
+ client = options.client, logger = options.logger, pageSize = options.pageSize, pageToken = options.pageToken, includeBody = options.includeBody;
207
+ // Validate pagination parameters
208
+ if (pageSize !== undefined && (pageSize < 1 || pageSize > _constantsts.MAX_PAGE_SIZE)) {
209
+ throw new Error("pageSize must be between 1 and ".concat(_constantsts.MAX_PAGE_SIZE));
210
+ }
211
+ if (pageToken !== undefined && typeof pageToken === 'string' && pageToken.trim().length === 0) {
212
+ logger.info('Empty pageToken provided, ignoring');
213
+ }
214
+ // Single execution - direct query to Gmail API
215
+ logger.info('executeQuery: executing direct Gmail query');
216
+ _state.label = 1;
217
+ case 1:
218
+ _state.trys.push([
219
+ 1,
220
+ 3,
221
+ ,
222
+ 4
223
+ ]);
224
+ return [
225
+ 4,
226
+ (0, _searchexecution.searchMessages)(client, _object_spread_props(_object_spread({}, query !== undefined && {
227
+ query: query
228
+ }), {
229
+ pageSize: pageSize !== null && pageSize !== void 0 ? pageSize : 50,
230
+ pageToken: pageToken && pageToken.trim().length > 0 ? pageToken : undefined,
231
+ includeBody: includeBody !== null && includeBody !== void 0 ? includeBody : false,
232
+ logger: logger
233
+ }))
234
+ ];
235
+ case 2:
236
+ result = _state.sent();
237
+ // Transform results
238
+ transformedResults = result.messages.map(transform);
239
+ logger.info("executeQuery: succeeded with ".concat(transformedResults.length, " results"));
240
+ return [
241
+ 2,
242
+ {
243
+ success: true,
244
+ items: transformedResults,
245
+ metadata: {
246
+ nextPageToken: result.nextPageToken
247
+ }
248
+ }
249
+ ];
250
+ case 3:
251
+ error = _state.sent();
252
+ // Re-throw errors directly - no fallback logic
253
+ logger.error('executeQuery: failed', {
254
+ error: _instanceof(error, Error) ? error.message : String(error)
255
+ });
256
+ throw error;
257
+ case 4:
258
+ return [
259
+ 2
260
+ ];
261
+ }
262
+ });
263
+ })();
264
+ }
265
+ /* 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-gmail/src/email/querying/execute-query.ts"],"sourcesContent":["import type { ExecutionResult } from '@mcp-z/email';\nimport type { gmail_v1 } from 'googleapis';\nimport { MAX_PAGE_SIZE } from '../../constants.ts';\nimport type { GmailQuery as QueryNode } from '../../schemas/gmail-query-schema.js';\nimport type { Logger } from '../../types.js';\nimport { searchMessages } from './search-execution.js';\n\nexport interface ExecuteQueryOptions {\n client: gmail_v1.Gmail;\n logger: Logger;\n pageSize?: number;\n pageToken?: string;\n includeBody?: boolean;\n}\n\n/**\n * Execute a Gmail query with direct, single-attempt execution.\n * No planning, no fallbacks, no retries.\n * Provider errors are returned directly to the caller for actionable feedback.\n */\nexport async function executeQuery<T>(query: QueryNode | undefined, options: ExecuteQueryOptions, transform: (item: unknown) => T): Promise<ExecutionResult<T>> {\n const { client, logger, pageSize, pageToken, includeBody } = options;\n\n // Validate pagination parameters\n if (pageSize !== undefined && (pageSize < 1 || pageSize > MAX_PAGE_SIZE)) {\n throw new Error(`pageSize must be between 1 and ${MAX_PAGE_SIZE}`);\n }\n\n if (pageToken !== undefined && typeof pageToken === 'string' && pageToken.trim().length === 0) {\n logger.info('Empty pageToken provided, ignoring');\n }\n\n // Single execution - direct query to Gmail API\n logger.info('executeQuery: executing direct Gmail query');\n\n try {\n const result = await searchMessages(client, {\n ...(query !== undefined && { query }),\n pageSize: pageSize ?? 50,\n pageToken: pageToken && pageToken.trim().length > 0 ? pageToken : undefined,\n includeBody: includeBody ?? false,\n logger,\n });\n\n // Transform results\n const transformedResults = result.messages.map(transform);\n\n logger.info(`executeQuery: succeeded with ${transformedResults.length} results`);\n\n return {\n success: true,\n items: transformedResults,\n metadata: {\n nextPageToken: result.nextPageToken,\n },\n };\n } catch (error) {\n // Re-throw errors directly - no fallback logic\n logger.error('executeQuery: failed', { error: error instanceof Error ? error.message : String(error) });\n throw error;\n }\n}\n"],"names":["executeQuery","query","options","transform","client","logger","pageSize","pageToken","includeBody","result","transformedResults","error","undefined","MAX_PAGE_SIZE","Error","trim","length","info","searchMessages","messages","map","success","items","metadata","nextPageToken","message","String"],"mappings":";;;;+BAoBsBA;;;eAAAA;;;2BAlBQ;+BAGC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAexB,SAAeA,aAAgBC,KAA4B,EAAEC,OAA4B,EAAEC,SAA+B;;YACvHC,QAAQC,QAAQC,UAAUC,WAAWC,aAerCC,QASAC,oBAWCC;;;;oBAnCDP,SAAqDF,QAArDE,QAAQC,SAA6CH,QAA7CG,QAAQC,WAAqCJ,QAArCI,UAAUC,YAA2BL,QAA3BK,WAAWC,cAAgBN,QAAhBM;oBAE7C,iCAAiC;oBACjC,IAAIF,aAAaM,aAAcN,CAAAA,WAAW,KAAKA,WAAWO,0BAAa,AAAD,GAAI;wBACxE,MAAM,IAAIC,MAAM,AAAC,kCAA+C,OAAdD,0BAAa;oBACjE;oBAEA,IAAIN,cAAcK,aAAa,OAAOL,cAAc,YAAYA,UAAUQ,IAAI,GAAGC,MAAM,KAAK,GAAG;wBAC7FX,OAAOY,IAAI,CAAC;oBACd;oBAEA,+CAA+C;oBAC/CZ,OAAOY,IAAI,CAAC;;;;;;;;;oBAGK;;wBAAMC,IAAAA,+BAAc,EAACd,QAAQ,wCACtCH,UAAUW,aAAa;4BAAEX,OAAAA;wBAAM;4BACnCK,QAAQ,EAAEA,qBAAAA,sBAAAA,WAAY;4BACtBC,WAAWA,aAAaA,UAAUQ,IAAI,GAAGC,MAAM,GAAG,IAAIT,YAAYK;4BAClEJ,WAAW,EAAEA,wBAAAA,yBAAAA,cAAe;4BAC5BH,QAAAA;;;;oBALII,SAAS;oBAQf,oBAAoB;oBACdC,qBAAqBD,OAAOU,QAAQ,CAACC,GAAG,CAACjB;oBAE/CE,OAAOY,IAAI,CAAC,AAAC,gCAAyD,OAA1BP,mBAAmBM,MAAM,EAAC;oBAEtE;;wBAAO;4BACLK,SAAS;4BACTC,OAAOZ;4BACPa,UAAU;gCACRC,eAAef,OAAOe,aAAa;4BACrC;wBACF;;;oBACOb;oBACP,+CAA+C;oBAC/CN,OAAOM,KAAK,CAAC,wBAAwB;wBAAEA,OAAOA,AAAK,YAALA,OAAiBG,SAAQH,MAAMc,OAAO,GAAGC,OAAOf;oBAAO;oBACrG,MAAMA;;;;;;;IAEV"}
@@ -0,0 +1,27 @@
1
+ /** Gmail pagination helpers for single-page operations. */
2
+ import type { gmail_v1 } from 'googleapis';
3
+ import type { Logger } from '../../types.js';
4
+ export interface SinglePageResult {
5
+ readonly messages: gmail_v1.Schema$Message[];
6
+ readonly nextPageToken: string | undefined;
7
+ }
8
+ /**
9
+ * Fetch a single page of messages from Gmail
10
+ */
11
+ export interface FetchMessagesPageParams {
12
+ readonly gmailQ: string;
13
+ readonly pageSize?: number;
14
+ readonly pageToken: string | undefined;
15
+ readonly body?: boolean;
16
+ readonly logger: Logger;
17
+ readonly metadataHeaders?: readonly string[];
18
+ }
19
+ export declare function fetchMessagesPage(gmail: gmail_v1.Gmail, params: FetchMessagesPageParams): Promise<SinglePageResult>;
20
+ export interface FetchMessagesConcurrentlyParams {
21
+ readonly items: readonly string[];
22
+ readonly concurrency?: number;
23
+ readonly body?: boolean;
24
+ readonly logger: Logger;
25
+ readonly metadataHeaders?: readonly string[];
26
+ }
27
+ export declare function fetchMessagesConcurrently(gmail: gmail_v1.Gmail, params: FetchMessagesConcurrentlyParams): Promise<gmail_v1.Schema$Message[]>;
@@ -0,0 +1,27 @@
1
+ /** Gmail pagination helpers for single-page operations. */
2
+ import type { gmail_v1 } from 'googleapis';
3
+ import type { Logger } from '../../types.js';
4
+ export interface SinglePageResult {
5
+ readonly messages: gmail_v1.Schema$Message[];
6
+ readonly nextPageToken: string | undefined;
7
+ }
8
+ /**
9
+ * Fetch a single page of messages from Gmail
10
+ */
11
+ export interface FetchMessagesPageParams {
12
+ readonly gmailQ: string;
13
+ readonly pageSize?: number;
14
+ readonly pageToken: string | undefined;
15
+ readonly body?: boolean;
16
+ readonly logger: Logger;
17
+ readonly metadataHeaders?: readonly string[];
18
+ }
19
+ export declare function fetchMessagesPage(gmail: gmail_v1.Gmail, params: FetchMessagesPageParams): Promise<SinglePageResult>;
20
+ export interface FetchMessagesConcurrentlyParams {
21
+ readonly items: readonly string[];
22
+ readonly concurrency?: number;
23
+ readonly body?: boolean;
24
+ readonly logger: Logger;
25
+ readonly metadataHeaders?: readonly string[];
26
+ }
27
+ export declare function fetchMessagesConcurrently(gmail: gmail_v1.Gmail, params: FetchMessagesConcurrentlyParams): Promise<gmail_v1.Schema$Message[]>;