@jbctechsolutions/mcp-office365 2.5.1 → 4.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 (369) hide show
  1. package/README.md +66 -57
  2. package/dist/approval/hash.d.ts +8 -8
  3. package/dist/approval/token-manager.d.ts +37 -19
  4. package/dist/approval/token-manager.d.ts.map +1 -1
  5. package/dist/approval/token-manager.js +133 -37
  6. package/dist/approval/token-manager.js.map +1 -1
  7. package/dist/approval/types.d.ts +7 -3
  8. package/dist/approval/types.d.ts.map +1 -1
  9. package/dist/cli.d.ts +21 -0
  10. package/dist/cli.d.ts.map +1 -1
  11. package/dist/cli.js +100 -2
  12. package/dist/cli.js.map +1 -1
  13. package/dist/database/repository.d.ts +48 -48
  14. package/dist/database/repository.d.ts.map +1 -1
  15. package/dist/database/repository.js.map +1 -1
  16. package/dist/delta/mirror.d.ts +67 -0
  17. package/dist/delta/mirror.d.ts.map +1 -0
  18. package/dist/delta/mirror.js +183 -0
  19. package/dist/delta/mirror.js.map +1 -0
  20. package/dist/graph/auth/account-id.d.ts +19 -0
  21. package/dist/graph/auth/account-id.d.ts.map +1 -0
  22. package/dist/graph/auth/account-id.js +55 -0
  23. package/dist/graph/auth/account-id.js.map +1 -0
  24. package/dist/graph/auth/config.d.ts +1 -1
  25. package/dist/graph/auth/config.d.ts.map +1 -1
  26. package/dist/graph/auth/config.js +13 -1
  27. package/dist/graph/auth/config.js.map +1 -1
  28. package/dist/graph/auth/device-code-flow.d.ts +3 -1
  29. package/dist/graph/auth/device-code-flow.d.ts.map +1 -1
  30. package/dist/graph/auth/device-code-flow.js +42 -14
  31. package/dist/graph/auth/device-code-flow.js.map +1 -1
  32. package/dist/graph/auth/index.d.ts +1 -0
  33. package/dist/graph/auth/index.d.ts.map +1 -1
  34. package/dist/graph/auth/index.js +1 -0
  35. package/dist/graph/auth/index.js.map +1 -1
  36. package/dist/graph/auth/token-cache.js +2 -2
  37. package/dist/graph/auth/token-cache.js.map +1 -1
  38. package/dist/graph/client/graph-client.d.ts +141 -8
  39. package/dist/graph/client/graph-client.d.ts.map +1 -1
  40. package/dist/graph/client/graph-client.js +536 -48
  41. package/dist/graph/client/graph-client.js.map +1 -1
  42. package/dist/graph/client/immutable-id-middleware.d.ts +50 -0
  43. package/dist/graph/client/immutable-id-middleware.d.ts.map +1 -0
  44. package/dist/graph/client/immutable-id-middleware.js +137 -0
  45. package/dist/graph/client/immutable-id-middleware.js.map +1 -0
  46. package/dist/graph/content-readers.d.ts +0 -12
  47. package/dist/graph/content-readers.d.ts.map +1 -1
  48. package/dist/graph/content-readers.js +0 -21
  49. package/dist/graph/content-readers.js.map +1 -1
  50. package/dist/graph/index.d.ts +5 -6
  51. package/dist/graph/index.d.ts.map +1 -1
  52. package/dist/graph/index.js +5 -6
  53. package/dist/graph/index.js.map +1 -1
  54. package/dist/graph/mailbox-adapter.d.ts +15 -15
  55. package/dist/graph/mappers/contact-mapper.d.ts +4 -1
  56. package/dist/graph/mappers/contact-mapper.d.ts.map +1 -1
  57. package/dist/graph/mappers/contact-mapper.js +7 -3
  58. package/dist/graph/mappers/contact-mapper.js.map +1 -1
  59. package/dist/graph/mappers/email-mapper.d.ts.map +1 -1
  60. package/dist/graph/mappers/email-mapper.js +7 -4
  61. package/dist/graph/mappers/email-mapper.js.map +1 -1
  62. package/dist/graph/mappers/event-mapper.d.ts.map +1 -1
  63. package/dist/graph/mappers/event-mapper.js +6 -3
  64. package/dist/graph/mappers/event-mapper.js.map +1 -1
  65. package/dist/graph/mappers/folder-mapper.d.ts +0 -4
  66. package/dist/graph/mappers/folder-mapper.d.ts.map +1 -1
  67. package/dist/graph/mappers/folder-mapper.js +9 -19
  68. package/dist/graph/mappers/folder-mapper.js.map +1 -1
  69. package/dist/graph/mappers/index.d.ts +2 -2
  70. package/dist/graph/mappers/index.d.ts.map +1 -1
  71. package/dist/graph/mappers/index.js +2 -2
  72. package/dist/graph/mappers/index.js.map +1 -1
  73. package/dist/graph/mappers/task-mapper.d.ts +4 -2
  74. package/dist/graph/mappers/task-mapper.d.ts.map +1 -1
  75. package/dist/graph/mappers/task-mapper.js +7 -5
  76. package/dist/graph/mappers/task-mapper.js.map +1 -1
  77. package/dist/graph/mappers/utils.d.ts +0 -10
  78. package/dist/graph/mappers/utils.d.ts.map +1 -1
  79. package/dist/graph/mappers/utils.js +0 -19
  80. package/dist/graph/mappers/utils.js.map +1 -1
  81. package/dist/graph/repository.d.ts +409 -276
  82. package/dist/graph/repository.d.ts.map +1 -1
  83. package/dist/graph/repository.js +772 -1082
  84. package/dist/graph/repository.js.map +1 -1
  85. package/dist/ids/mint.d.ts +31 -0
  86. package/dist/ids/mint.d.ts.map +1 -0
  87. package/dist/ids/mint.js +36 -0
  88. package/dist/ids/mint.js.map +1 -0
  89. package/dist/ids/next-action.d.ts +29 -0
  90. package/dist/ids/next-action.d.ts.map +1 -0
  91. package/dist/ids/next-action.js +58 -0
  92. package/dist/ids/next-action.js.map +1 -0
  93. package/dist/ids/resolver.d.ts +31 -0
  94. package/dist/ids/resolver.d.ts.map +1 -0
  95. package/dist/ids/resolver.js +52 -0
  96. package/dist/ids/resolver.js.map +1 -0
  97. package/dist/ids/schema.d.ts +91 -0
  98. package/dist/ids/schema.d.ts.map +1 -0
  99. package/dist/ids/schema.js +131 -0
  100. package/dist/ids/schema.js.map +1 -0
  101. package/dist/ids/token.d.ts +62 -0
  102. package/dist/ids/token.d.ts.map +1 -0
  103. package/dist/ids/token.js +225 -0
  104. package/dist/ids/token.js.map +1 -0
  105. package/dist/index.d.ts +10 -6
  106. package/dist/index.d.ts.map +1 -1
  107. package/dist/index.js +255 -5925
  108. package/dist/index.js.map +1 -1
  109. package/dist/parsers/index.d.ts +0 -1
  110. package/dist/parsers/index.d.ts.map +1 -1
  111. package/dist/parsers/index.js +0 -1
  112. package/dist/parsers/index.js.map +1 -1
  113. package/dist/registry/all-tools.d.ts +14 -0
  114. package/dist/registry/all-tools.d.ts.map +1 -0
  115. package/dist/registry/all-tools.js +68 -0
  116. package/dist/registry/all-tools.js.map +1 -0
  117. package/dist/registry/context.d.ts +19 -0
  118. package/dist/registry/context.d.ts.map +1 -0
  119. package/dist/registry/context.js +20 -0
  120. package/dist/registry/context.js.map +1 -0
  121. package/dist/registry/define-tool.d.ts +15 -0
  122. package/dist/registry/define-tool.d.ts.map +1 -0
  123. package/dist/registry/define-tool.js +8 -0
  124. package/dist/registry/define-tool.js.map +1 -0
  125. package/dist/registry/elicit-links.d.ts +35 -0
  126. package/dist/registry/elicit-links.d.ts.map +1 -0
  127. package/dist/registry/elicit-links.js +102 -0
  128. package/dist/registry/elicit-links.js.map +1 -0
  129. package/dist/registry/elicitor.d.ts +24 -0
  130. package/dist/registry/elicitor.d.ts.map +1 -0
  131. package/dist/registry/elicitor.js +51 -0
  132. package/dist/registry/elicitor.js.map +1 -0
  133. package/dist/registry/index.d.ts +13 -0
  134. package/dist/registry/index.d.ts.map +1 -0
  135. package/dist/registry/index.js +8 -0
  136. package/dist/registry/index.js.map +1 -0
  137. package/dist/registry/registry.d.ts +73 -0
  138. package/dist/registry/registry.d.ts.map +1 -0
  139. package/dist/registry/registry.js +221 -0
  140. package/dist/registry/registry.js.map +1 -0
  141. package/dist/registry/types.d.ts +146 -0
  142. package/dist/registry/types.d.ts.map +1 -0
  143. package/dist/registry/types.js +6 -0
  144. package/dist/registry/types.js.map +1 -0
  145. package/dist/search/compiler.d.ts +49 -0
  146. package/dist/search/compiler.d.ts.map +1 -0
  147. package/dist/search/compiler.js +168 -0
  148. package/dist/search/compiler.js.map +1 -0
  149. package/dist/signature.js +2 -2
  150. package/dist/signature.js.map +1 -1
  151. package/dist/state/delta-store.d.ts +85 -0
  152. package/dist/state/delta-store.d.ts.map +1 -0
  153. package/dist/state/delta-store.js +124 -0
  154. package/dist/state/delta-store.js.map +1 -0
  155. package/dist/state/migrate.d.ts +23 -0
  156. package/dist/state/migrate.d.ts.map +1 -0
  157. package/dist/state/migrate.js +81 -0
  158. package/dist/state/migrate.js.map +1 -0
  159. package/dist/state/schema.d.ts +26 -0
  160. package/dist/state/schema.d.ts.map +1 -0
  161. package/dist/state/schema.js +77 -0
  162. package/dist/state/schema.js.map +1 -0
  163. package/dist/state/store.d.ts +155 -0
  164. package/dist/state/store.d.ts.map +1 -0
  165. package/dist/state/store.js +321 -0
  166. package/dist/state/store.js.map +1 -0
  167. package/dist/tools/calendar-graph.d.ts +41 -0
  168. package/dist/tools/calendar-graph.d.ts.map +1 -0
  169. package/dist/tools/calendar-graph.js +299 -0
  170. package/dist/tools/calendar-graph.js.map +1 -0
  171. package/dist/tools/calendar-permissions.d.ts +17 -7
  172. package/dist/tools/calendar-permissions.d.ts.map +1 -1
  173. package/dist/tools/calendar-permissions.js +60 -4
  174. package/dist/tools/calendar-permissions.js.map +1 -1
  175. package/dist/tools/calendar.d.ts +133 -82
  176. package/dist/tools/calendar.d.ts.map +1 -1
  177. package/dist/tools/calendar.js +249 -136
  178. package/dist/tools/calendar.js.map +1 -1
  179. package/dist/tools/categories.d.ts +14 -4
  180. package/dist/tools/categories.d.ts.map +1 -1
  181. package/dist/tools/categories.js +59 -2
  182. package/dist/tools/categories.js.map +1 -1
  183. package/dist/tools/checklist-items.d.ts +19 -9
  184. package/dist/tools/checklist-items.d.ts.map +1 -1
  185. package/dist/tools/checklist-items.js +71 -5
  186. package/dist/tools/checklist-items.js.map +1 -1
  187. package/dist/tools/contact-folders.d.ts +50 -0
  188. package/dist/tools/contact-folders.d.ts.map +1 -0
  189. package/dist/tools/contact-folders.js +136 -0
  190. package/dist/tools/contact-folders.js.map +1 -0
  191. package/dist/tools/contacts-graph.d.ts +45 -0
  192. package/dist/tools/contacts-graph.d.ts.map +1 -0
  193. package/dist/tools/contacts-graph.js +174 -0
  194. package/dist/tools/contacts-graph.js.map +1 -0
  195. package/dist/tools/contacts.d.ts +61 -30
  196. package/dist/tools/contacts.d.ts.map +1 -1
  197. package/dist/tools/contacts.js +150 -93
  198. package/dist/tools/contacts.js.map +1 -1
  199. package/dist/tools/excel.d.ts +20 -10
  200. package/dist/tools/excel.d.ts.map +1 -1
  201. package/dist/tools/excel.js +82 -6
  202. package/dist/tools/excel.js.map +1 -1
  203. package/dist/tools/focused-overrides.d.ts +14 -4
  204. package/dist/tools/focused-overrides.d.ts.map +1 -1
  205. package/dist/tools/focused-overrides.js +59 -2
  206. package/dist/tools/focused-overrides.js.map +1 -1
  207. package/dist/tools/index.d.ts +4 -5
  208. package/dist/tools/index.d.ts.map +1 -1
  209. package/dist/tools/index.js +4 -6
  210. package/dist/tools/index.js.map +1 -1
  211. package/dist/tools/linked-resources.d.ts +17 -7
  212. package/dist/tools/linked-resources.d.ts.map +1 -1
  213. package/dist/tools/linked-resources.js +60 -4
  214. package/dist/tools/linked-resources.js.map +1 -1
  215. package/dist/tools/mail-graph.d.ts +38 -0
  216. package/dist/tools/mail-graph.d.ts.map +1 -0
  217. package/dist/tools/mail-graph.js +187 -0
  218. package/dist/tools/mail-graph.js.map +1 -0
  219. package/dist/tools/mail-rules.d.ts +20 -8
  220. package/dist/tools/mail-rules.d.ts.map +1 -1
  221. package/dist/tools/mail-rules.js +63 -7
  222. package/dist/tools/mail-rules.js.map +1 -1
  223. package/dist/tools/mail-send.d.ts +39 -27
  224. package/dist/tools/mail-send.d.ts.map +1 -1
  225. package/dist/tools/mail-send.js +249 -24
  226. package/dist/tools/mail-send.js.map +1 -1
  227. package/dist/tools/mail.d.ts +91 -68
  228. package/dist/tools/mail.d.ts.map +1 -1
  229. package/dist/tools/mail.js +232 -243
  230. package/dist/tools/mail.js.map +1 -1
  231. package/dist/tools/mailbox-organization.d.ts +51 -34
  232. package/dist/tools/mailbox-organization.d.ts.map +1 -1
  233. package/dist/tools/mailbox-organization.js +318 -35
  234. package/dist/tools/mailbox-organization.js.map +1 -1
  235. package/dist/tools/mailbox-settings.d.ts +59 -0
  236. package/dist/tools/mailbox-settings.d.ts.map +1 -0
  237. package/dist/tools/mailbox-settings.js +136 -0
  238. package/dist/tools/mailbox-settings.js.map +1 -0
  239. package/dist/tools/meetings.d.ts +24 -14
  240. package/dist/tools/meetings.d.ts.map +1 -1
  241. package/dist/tools/meetings.js +82 -6
  242. package/dist/tools/meetings.js.map +1 -1
  243. package/dist/tools/onedrive.d.ts +26 -16
  244. package/dist/tools/onedrive.d.ts.map +1 -1
  245. package/dist/tools/onedrive.js +140 -11
  246. package/dist/tools/onedrive.js.map +1 -1
  247. package/dist/tools/onenote.d.ts +63 -0
  248. package/dist/tools/onenote.d.ts.map +1 -0
  249. package/dist/tools/onenote.js +221 -0
  250. package/dist/tools/onenote.js.map +1 -0
  251. package/dist/tools/people.d.ts +10 -0
  252. package/dist/tools/people.d.ts.map +1 -1
  253. package/dist/tools/people.js +94 -0
  254. package/dist/tools/people.js.map +1 -1
  255. package/dist/tools/planner-visualization.d.ts +15 -5
  256. package/dist/tools/planner-visualization.d.ts.map +1 -1
  257. package/dist/tools/planner-visualization.js +58 -4
  258. package/dist/tools/planner-visualization.js.map +1 -1
  259. package/dist/tools/planner.d.ts +69 -39
  260. package/dist/tools/planner.d.ts.map +1 -1
  261. package/dist/tools/planner.js +231 -23
  262. package/dist/tools/planner.js.map +1 -1
  263. package/dist/tools/scheduling.d.ts +12 -0
  264. package/dist/tools/scheduling.d.ts.map +1 -1
  265. package/dist/tools/scheduling.js +38 -0
  266. package/dist/tools/scheduling.js.map +1 -1
  267. package/dist/tools/shared-mailbox.d.ts +164 -0
  268. package/dist/tools/shared-mailbox.d.ts.map +1 -0
  269. package/dist/tools/shared-mailbox.js +318 -0
  270. package/dist/tools/shared-mailbox.js.map +1 -0
  271. package/dist/tools/sharepoint-lists.d.ts +131 -0
  272. package/dist/tools/sharepoint-lists.d.ts.map +1 -0
  273. package/dist/tools/sharepoint-lists.js +246 -0
  274. package/dist/tools/sharepoint-lists.js.map +1 -0
  275. package/dist/tools/sharepoint.d.ts +24 -14
  276. package/dist/tools/sharepoint.d.ts.map +1 -1
  277. package/dist/tools/sharepoint.js +85 -9
  278. package/dist/tools/sharepoint.js.map +1 -1
  279. package/dist/tools/task-attachments.d.ts +17 -7
  280. package/dist/tools/task-attachments.d.ts.map +1 -1
  281. package/dist/tools/task-attachments.js +60 -4
  282. package/dist/tools/task-attachments.js.map +1 -1
  283. package/dist/tools/task-lists.d.ts +56 -0
  284. package/dist/tools/task-lists.d.ts.map +1 -0
  285. package/dist/tools/task-lists.js +155 -0
  286. package/dist/tools/task-lists.js.map +1 -0
  287. package/dist/tools/tasks-graph.d.ts +49 -0
  288. package/dist/tools/tasks-graph.d.ts.map +1 -0
  289. package/dist/tools/tasks-graph.js +193 -0
  290. package/dist/tools/tasks-graph.js.map +1 -0
  291. package/dist/tools/tasks.d.ts +121 -29
  292. package/dist/tools/tasks.d.ts.map +1 -1
  293. package/dist/tools/tasks.js +136 -84
  294. package/dist/tools/tasks.js.map +1 -1
  295. package/dist/tools/teams.d.ts +57 -46
  296. package/dist/tools/teams.d.ts.map +1 -1
  297. package/dist/tools/teams.js +288 -26
  298. package/dist/tools/teams.js.map +1 -1
  299. package/dist/tools/what-changed.d.ts +48 -0
  300. package/dist/tools/what-changed.d.ts.map +1 -0
  301. package/dist/tools/what-changed.js +149 -0
  302. package/dist/tools/what-changed.js.map +1 -0
  303. package/dist/types/calendar.d.ts +1 -1
  304. package/dist/types/calendar.d.ts.map +1 -1
  305. package/dist/types/calendar.js.map +1 -1
  306. package/dist/types/contacts.d.ts +1 -1
  307. package/dist/types/contacts.d.ts.map +1 -1
  308. package/dist/types/contacts.js.map +1 -1
  309. package/dist/types/mail.d.ts +1 -1
  310. package/dist/types/mail.d.ts.map +1 -1
  311. package/dist/types/mail.js.map +1 -1
  312. package/dist/utils/errors.d.ts +110 -38
  313. package/dist/utils/errors.d.ts.map +1 -1
  314. package/dist/utils/errors.js +239 -56
  315. package/dist/utils/errors.js.map +1 -1
  316. package/dist/visualization/types.d.ts +4 -4
  317. package/package.json +2 -3
  318. package/dist/applescript/account-repository.d.ts +0 -30
  319. package/dist/applescript/account-repository.d.ts.map +0 -1
  320. package/dist/applescript/account-repository.js +0 -38
  321. package/dist/applescript/account-repository.js.map +0 -1
  322. package/dist/applescript/account-scripts.d.ts +0 -21
  323. package/dist/applescript/account-scripts.d.ts.map +0 -1
  324. package/dist/applescript/account-scripts.js +0 -180
  325. package/dist/applescript/account-scripts.js.map +0 -1
  326. package/dist/applescript/calendar-manager.d.ts +0 -44
  327. package/dist/applescript/calendar-manager.d.ts.map +0 -1
  328. package/dist/applescript/calendar-manager.js +0 -92
  329. package/dist/applescript/calendar-manager.js.map +0 -1
  330. package/dist/applescript/calendar-writer.d.ts +0 -36
  331. package/dist/applescript/calendar-writer.d.ts.map +0 -1
  332. package/dist/applescript/calendar-writer.js +0 -94
  333. package/dist/applescript/calendar-writer.js.map +0 -1
  334. package/dist/applescript/content-readers.d.ts +0 -114
  335. package/dist/applescript/content-readers.d.ts.map +0 -1
  336. package/dist/applescript/content-readers.js +0 -328
  337. package/dist/applescript/content-readers.js.map +0 -1
  338. package/dist/applescript/executor.d.ts +0 -60
  339. package/dist/applescript/executor.d.ts.map +0 -1
  340. package/dist/applescript/executor.js +0 -173
  341. package/dist/applescript/executor.js.map +0 -1
  342. package/dist/applescript/index.d.ts +0 -20
  343. package/dist/applescript/index.d.ts.map +0 -1
  344. package/dist/applescript/index.js +0 -29
  345. package/dist/applescript/index.js.map +0 -1
  346. package/dist/applescript/mail-sender.d.ts +0 -38
  347. package/dist/applescript/mail-sender.d.ts.map +0 -1
  348. package/dist/applescript/mail-sender.js +0 -67
  349. package/dist/applescript/mail-sender.js.map +0 -1
  350. package/dist/applescript/parser.d.ts +0 -235
  351. package/dist/applescript/parser.d.ts.map +0 -1
  352. package/dist/applescript/parser.js +0 -496
  353. package/dist/applescript/parser.js.map +0 -1
  354. package/dist/applescript/repository.d.ts +0 -64
  355. package/dist/applescript/repository.d.ts.map +0 -1
  356. package/dist/applescript/repository.js +0 -444
  357. package/dist/applescript/repository.js.map +0 -1
  358. package/dist/applescript/scripts.d.ts +0 -265
  359. package/dist/applescript/scripts.d.ts.map +0 -1
  360. package/dist/applescript/scripts.js +0 -1483
  361. package/dist/applescript/scripts.js.map +0 -1
  362. package/dist/parsers/olk15.d.ts +0 -87
  363. package/dist/parsers/olk15.d.ts.map +0 -1
  364. package/dist/parsers/olk15.js +0 -368
  365. package/dist/parsers/olk15.js.map +0 -1
  366. package/dist/tools/notes.d.ts +0 -74
  367. package/dist/tools/notes.d.ts.map +0 -1
  368. package/dist/tools/notes.js +0 -136
  369. package/dist/tools/notes.js.map +0 -1
@@ -7,19 +7,32 @@
7
7
  *
8
8
  * Provides tools for listing folders, emails, and searching.
9
9
  */
10
- import { existsSync } from 'fs';
11
- import { dirname } from 'path';
12
10
  import { z } from 'zod';
13
- import { MAX_ATTACHMENT_DOWNLOAD_SIZE } from '../types/mail.js';
14
- import { appleTimestampToIso } from '../utils/dates.js';
15
- import { extractPlainText } from '../parsers/html-stripper.js';
16
- import { NotFoundError, ValidationError, AttachmentTooLargeError, AttachmentSaveError } from '../utils/errors.js';
11
+ import { defineTool } from '../registry/define-tool.js';
12
+ import { requireGraphToolset } from '../registry/context.js';
13
+ import { Id } from '../ids/schema.js';
17
14
  // =============================================================================
18
15
  // Input Schemas
19
16
  // =============================================================================
17
+ /**
18
+ * Shared email/message id schema (U6): the canonical `em_` message-id schema.
19
+ * A raw Graph id is also accepted; a legacy numeric id is a validation error
20
+ * (numeric strings still route to resolveId → NUMERIC_ID_UNSUPPORTED).
21
+ */
22
+ const EmailIdSchema = Id.message;
20
23
  export const ListFoldersInput = z.strictObject({});
24
+ /**
25
+ * Canonical (advertised) input for the `list_folders` tool. The Graph backend
26
+ * ignores `account_id` and returns the default mailbox's folders.
27
+ */
28
+ export const ListFoldersToolInput = z.strictObject({
29
+ account_id: z
30
+ .union([z.number(), z.array(z.number()), z.literal('all')])
31
+ .optional()
32
+ .describe('Account filter: number (specific account), array (multiple accounts), "all" (all accounts), or omit for default account'),
33
+ });
21
34
  export const ListEmailsInput = z.strictObject({
22
- folder_id: z.number().int().positive().describe('The folder ID to list emails from'),
35
+ folder_id: Id.folder.describe('The folder to list emails from — a `fd_` token from list_folders.'),
23
36
  limit: z
24
37
  .number()
25
38
  .int()
@@ -32,12 +45,7 @@ export const ListEmailsInput = z.strictObject({
32
45
  });
33
46
  export const SearchEmailsInput = z.strictObject({
34
47
  query: z.string().min(1).describe('Search query (searches subject, sender, and preview)'),
35
- folder_id: z
36
- .number()
37
- .int()
38
- .positive()
39
- .optional()
40
- .describe('Optional folder ID to limit search to'),
48
+ folder_id: Id.folder.optional().describe('Optional folder to limit search to — a `fd_` token from list_folders.'),
41
49
  limit: z
42
50
  .number()
43
51
  .int()
@@ -46,266 +54,247 @@ export const SearchEmailsInput = z.strictObject({
46
54
  .default(50)
47
55
  .describe('Maximum number of emails to return (1-100)'),
48
56
  });
57
+ /**
58
+ * Structured email search (U7 / D9). Replaces raw KQL — the #1 failure class —
59
+ * with typed criteria compiled server-side to the correct Graph mechanism
60
+ * ($filter / quoted $search / /search/query), so operator syntax, quoting, and
61
+ * date formatting are handled for you. Provide at least one criterion.
62
+ */
49
63
  export const SearchEmailsAdvancedInput = z.strictObject({
50
- query: z.string().min(1).describe('KQL search query. Examples: from:alice, subject:"quarterly report", hasAttachments:true, received>=2024-01-01. Combine with AND/OR.'),
51
- folder_id: z.number().int().positive().optional().describe('Optional folder ID to search within'),
64
+ from: z.string().min(1).optional().describe('Sender email address (exact match)'),
65
+ to: z.string().min(1).optional().describe('Recipient email address (exact match)'),
66
+ subject_contains: z.string().min(1).optional().describe('Text the subject must contain'),
67
+ body_contains: z.string().min(1).optional().describe('Text the body must contain'),
68
+ text: z.string().min(1).optional().describe('Free-text search across the whole message'),
69
+ received_after: z.string().min(1).optional().describe('Received on/after this ISO date (YYYY-MM-DD) or datetime'),
70
+ received_before: z.string().min(1).optional().describe('Received on/before this ISO date (YYYY-MM-DD) or datetime'),
71
+ has_attachments: z.boolean().optional().describe('Only messages with attachments'),
72
+ is_unread: z.boolean().optional().describe('Only unread messages'),
73
+ importance: z.enum(['low', 'normal', 'high']).optional().describe('Importance level'),
52
74
  limit: z.number().int().min(1).max(100).default(50).describe('Maximum results (1-100)'),
53
75
  });
54
76
  export const GetEmailInput = z.strictObject({
55
- email_id: z.number().int().positive().describe('The email ID to retrieve'),
77
+ email_id: EmailIdSchema.describe('The email ID to retrieve'),
56
78
  include_body: z.boolean().default(true).describe('Include the email body in the response'),
57
79
  strip_html: z.boolean().default(true).describe('Strip HTML tags from the body'),
58
80
  });
59
81
  export const GetEmailsInput = z.strictObject({
60
- email_ids: z.array(z.number().int().positive()).min(1).max(25)
82
+ email_ids: z.array(EmailIdSchema).min(1).max(25)
61
83
  .describe('Array of email IDs to fetch (max 25)'),
62
84
  include_body: z.boolean().default(false).describe('Include full email body'),
63
85
  strip_html: z.boolean().default(false).describe('Strip HTML tags from body'),
64
86
  });
65
87
  export const ListConversationInput = z.strictObject({
66
- message_id: z.number().int().positive().describe('Any message ID from the conversation thread'),
88
+ message_id: EmailIdSchema.describe('Any message ID from the conversation thread'),
67
89
  limit: z.number().int().min(1).max(100).default(25).describe('Maximum messages to return'),
68
90
  });
69
91
  export const GetUnreadCountInput = z.strictObject({
70
92
  folder_id: z
71
- .number()
72
- .int()
73
- .positive()
93
+ .string()
94
+ .min(1)
74
95
  .optional()
75
96
  .describe('Optional folder ID to get unread count for'),
76
97
  });
77
98
  export const ListAttachmentsInput = z.strictObject({
78
- email_id: z.number().int().positive().describe('The email ID to list attachments for'),
99
+ email_id: EmailIdSchema.describe('The email ID to list attachments for'),
79
100
  });
80
101
  export const DownloadAttachmentInput = z.strictObject({
81
- email_id: z.number().int().positive().describe('The email ID containing the attachment'),
82
- attachment_index: z.number().int().positive().describe('The 1-based index of the attachment (from list_attachments)'),
102
+ email_id: EmailIdSchema.describe('The email ID containing the attachment'),
103
+ attachment_id: Id.attachment,
83
104
  save_path: z.string().min(1).describe('Absolute file path where the attachment should be saved'),
84
105
  });
85
106
  export const CheckNewEmailsInput = z.strictObject({
86
- folder_id: z.number().int().positive().describe('Folder ID to check for new emails'),
107
+ folder_id: Id.folder.describe('Folder to check for new emails — a `fd_` token from list_folders.'),
108
+ });
109
+ export const GetMessageHeadersInput = z.strictObject({
110
+ email_id: EmailIdSchema.describe('Email ID'),
111
+ });
112
+ export const GetMessageMimeInput = z.strictObject({
113
+ email_id: EmailIdSchema.describe('Email ID'),
114
+ });
115
+ export const GetMailTipsInput = z.strictObject({
116
+ email_addresses: z.array(z.string().email()).min(1).max(20).describe('Email addresses to check'),
87
117
  });
88
118
  // =============================================================================
89
- // Transformers
90
- // =============================================================================
91
- /**
92
- * Transforms a database folder row to domain Folder type.
93
- */
94
- function transformFolder(row) {
95
- return {
96
- id: row.id,
97
- name: row.name ?? 'Unnamed',
98
- parentId: row.parentId,
99
- specialType: row.specialType,
100
- folderType: row.folderType,
101
- accountId: row.accountId,
102
- messageCount: row.messageCount,
103
- unreadCount: row.unreadCount,
104
- };
105
- }
106
- /**
107
- * Transforms a database email row to domain EmailSummary type.
108
- */
109
- function transformEmailSummary(row) {
110
- return {
111
- id: row.id,
112
- folderId: row.folderId,
113
- subject: row.subject,
114
- sender: row.sender,
115
- senderAddress: row.senderAddress,
116
- preview: row.preview,
117
- isRead: row.isRead === 1,
118
- timeReceived: appleTimestampToIso(row.timeReceived),
119
- timeSent: appleTimestampToIso(row.timeSent),
120
- hasAttachment: row.hasAttachment === 1,
121
- priority: row.priority,
122
- flagStatus: row.flagStatus,
123
- categories: parseCategories(row.categories),
124
- };
125
- }
126
- /**
127
- * Parses categories from the database buffer.
128
- * Outlook stores categories as a null-delimited or comma-delimited buffer.
129
- */
130
- function parseCategories(buffer) {
131
- if (buffer == null || buffer.length === 0) {
132
- return [];
133
- }
134
- try {
135
- const text = buffer.toString('utf-8');
136
- // Categories may be stored as null-delimited or comma-delimited strings
137
- const categories = text.includes('\0')
138
- ? text.split('\0').filter(s => s.length > 0)
139
- : text.split(',').map(s => s.trim()).filter(s => s.length > 0);
140
- return categories;
141
- }
142
- catch {
143
- return [];
144
- }
145
- }
146
- /**
147
- * Transforms a database email row to domain Email type.
148
- */
149
- function transformEmail(row, body, stripHtml) {
150
- const summary = transformEmailSummary(row);
151
- // Process the body
152
- let processedBody = null;
153
- let htmlBody = null;
154
- if (body != null) {
155
- htmlBody = body;
156
- processedBody = stripHtml ? extractPlainText(body) : body;
157
- }
158
- return {
159
- ...summary,
160
- recipients: row.recipients,
161
- displayTo: row.displayTo,
162
- toAddresses: row.toAddresses,
163
- ccAddresses: row.ccAddresses,
164
- size: row.size,
165
- messageId: row.messageId ?? null,
166
- conversationId: row.conversationId ?? null,
167
- body: processedBody,
168
- htmlBody: stripHtml ? null : htmlBody,
169
- };
170
- }
171
- /**
172
- * Default content reader that returns null (body reading not implemented yet).
173
- * Will be replaced with OLK15 parser implementation.
174
- */
175
- export const nullContentReader = {
176
- readEmailBody: () => null,
177
- };
178
- // =============================================================================
179
- // Mail Tools Class
119
+ // Registry Definitions (v3 registry-driven architecture)
180
120
  // =============================================================================
181
121
  /**
182
- * Mail tools implementation with dependency injection.
122
+ * Registry tool definitions for the mail READ domain. Each handler delegates
123
+ * to GraphMailTools, which returns MCP content directly.
183
124
  */
184
- export class MailTools {
185
- repository;
186
- contentReader;
187
- attachmentReader;
188
- constructor(repository, contentReader = nullContentReader, attachmentReader) {
189
- this.repository = repository;
190
- this.contentReader = contentReader;
191
- this.attachmentReader = attachmentReader;
192
- }
193
- /**
194
- * Lists all mail folders with message and unread counts.
195
- */
196
- listFolders(_params) {
197
- const rows = this.repository.listFolders();
198
- return rows.map(transformFolder);
199
- }
200
- /**
201
- * Lists emails in a folder with pagination.
202
- */
203
- listEmails(params) {
204
- const { folder_id, limit, offset, unread_only } = params;
205
- const rows = unread_only
206
- ? this.repository.listUnreadEmails(folder_id, limit, offset)
207
- : this.repository.listEmails(folder_id, limit, offset);
208
- return rows.map(transformEmailSummary);
209
- }
210
- /**
211
- * Searches emails by subject, sender, or preview.
212
- */
213
- searchEmails(params) {
214
- const { query, folder_id, limit } = params;
215
- const rows = folder_id != null
216
- ? this.repository.searchEmailsInFolder(folder_id, query, limit)
217
- : this.repository.searchEmails(query, limit);
218
- return rows.map(transformEmailSummary);
219
- }
220
- /**
221
- * Gets a single email by ID with optional body content.
222
- */
223
- getEmail(params) {
224
- const { email_id, include_body, strip_html } = params;
225
- const row = this.repository.getEmail(email_id);
226
- if (row == null) {
227
- return null;
228
- }
229
- // Get body content if requested
230
- let body = null;
231
- if (include_body && row.dataFilePath != null) {
232
- body = this.contentReader.readEmailBody(row.dataFilePath);
233
- }
234
- // Get attachment metadata if available
235
- let attachments = [];
236
- if (this.attachmentReader != null && row.hasAttachment === 1) {
237
- attachments = this.attachmentReader.listAttachments(email_id);
238
- }
239
- return {
240
- ...transformEmail(row, body, strip_html),
241
- attachments,
242
- };
243
- }
244
- /**
245
- * Gets the unread email count.
246
- */
247
- getUnreadCount(params) {
248
- const { folder_id } = params;
249
- const count = folder_id != null
250
- ? this.repository.getUnreadCountByFolder(folder_id)
251
- : this.repository.getUnreadCount();
252
- return { count };
253
- }
254
- /**
255
- * Lists attachment metadata for an email.
256
- */
257
- listAttachments(params) {
258
- if (this.attachmentReader == null) {
259
- return [];
260
- }
261
- const { email_id } = params;
262
- const row = this.repository.getEmail(email_id);
263
- if (row == null) {
264
- throw new NotFoundError('Email', email_id);
265
- }
266
- return this.attachmentReader.listAttachments(email_id);
267
- }
268
- /**
269
- * Downloads/saves an attachment to disk.
270
- */
271
- downloadAttachment(params) {
272
- if (this.attachmentReader == null) {
273
- throw new ValidationError('Attachment reader not available');
274
- }
275
- const { email_id, attachment_index, save_path } = params;
276
- const row = this.repository.getEmail(email_id);
277
- if (row == null) {
278
- throw new NotFoundError('Email', email_id);
279
- }
280
- // Validate save path directory exists
281
- const dir = dirname(save_path);
282
- if (!existsSync(dir)) {
283
- throw new ValidationError(`Directory does not exist: ${dir}`);
284
- }
285
- // Get attachment list to validate index and check size
286
- const attachments = this.attachmentReader.listAttachments(email_id);
287
- const attachment = attachments.find(a => a.index === attachment_index);
288
- if (attachment == null) {
289
- throw new NotFoundError('Attachment', attachment_index);
290
- }
291
- if (attachment.size > MAX_ATTACHMENT_DOWNLOAD_SIZE) {
292
- throw new AttachmentTooLargeError(attachment.name, attachment.size, MAX_ATTACHMENT_DOWNLOAD_SIZE);
293
- }
294
- const result = this.attachmentReader.saveAttachment(email_id, attachment_index, save_path);
295
- if (!result.success) {
296
- throw new AttachmentSaveError(attachment.name, result.error ?? 'Unknown error');
297
- }
298
- return {
299
- name: result.name ?? attachment.name,
300
- savedTo: result.savedTo ?? save_path,
301
- size: result.fileSize ?? attachment.size,
302
- };
303
- }
304
- }
305
- /**
306
- * Creates mail tools with the given repository.
307
- */
308
- export function createMailTools(repository, contentReader = nullContentReader, attachmentReader) {
309
- return new MailTools(repository, contentReader, attachmentReader);
125
+ export const SendEmailInput = z.strictObject({
126
+ to: z.array(z.string()).min(1).describe('Recipient email addresses'),
127
+ subject: z.string().min(1).describe('Email subject'),
128
+ body: z.string().describe('Email body content'),
129
+ body_type: z.enum(['plain', 'html']).default('plain').describe('Body content type (default: plain)'),
130
+ cc: z.array(z.string()).optional().describe('CC recipients'),
131
+ bcc: z.array(z.string()).optional().describe('BCC recipients'),
132
+ reply_to: z.string().optional().describe('Reply-to address'),
133
+ attachments: z.array(z.strictObject({
134
+ path: z.string().describe('Absolute file path to attachment'),
135
+ name: z.string().optional().describe('Optional display name for the attachment'),
136
+ })).optional().describe('File attachments'),
137
+ inline_images: z.array(z.strictObject({
138
+ path: z.string().describe('Absolute file path to the inline image'),
139
+ content_id: z.string().describe('Content-ID referenced in the HTML body'),
140
+ })).optional().describe('Inline images referenced by the HTML body'),
141
+ account_id: z.number().int().positive().optional().describe('Optional account ID to send from'),
142
+ });
143
+ export function mailToolDefinitions() {
144
+ return [
145
+ defineTool({
146
+ name: 'send_email',
147
+ description: 'Send an email with optional CC, BCC, attachments, and HTML formatting. Returns the sent message ID and timestamp.',
148
+ input: SendEmailInput,
149
+ annotations: { readOnlyHint: false, destructiveHint: false, openWorldHint: true },
150
+ destructive: true,
151
+ presets: ['mail'],
152
+ backends: ['graph'],
153
+ // Direct send is not available on the Graph backend — clients use the
154
+ // two-phase prepare_send_email/confirm_send_email.
155
+ handler: () => ({ content: [{ type: 'text', text: 'Direct send_email is not available on the Graph backend; use prepare_send_email then confirm_send_email.' }], isError: true }),
156
+ }),
157
+ defineTool({
158
+ name: 'list_folders',
159
+ description: 'List all mail folders with message and unread counts. Can filter by account.',
160
+ input: ListFoldersToolInput,
161
+ annotations: { readOnlyHint: true },
162
+ destructive: false,
163
+ presets: ['mail'],
164
+ backends: ['graph'],
165
+ handler: (ctx, params) => requireGraphToolset(ctx, 'mailGraph').listFolders(params),
166
+ }),
167
+ defineTool({
168
+ name: 'list_emails',
169
+ description: 'List emails in a folder with pagination',
170
+ input: ListEmailsInput,
171
+ annotations: { readOnlyHint: true },
172
+ destructive: false,
173
+ presets: ['mail'],
174
+ backends: ['graph'],
175
+ handler: (ctx, params) => requireGraphToolset(ctx, 'mailGraph').listEmails(params),
176
+ }),
177
+ defineTool({
178
+ name: 'search_emails',
179
+ description: 'Search emails by subject, sender, or content',
180
+ input: SearchEmailsInput,
181
+ annotations: { readOnlyHint: true },
182
+ destructive: false,
183
+ presets: ['mail'],
184
+ backends: ['graph'],
185
+ handler: (ctx, params) => requireGraphToolset(ctx, 'mailGraph').searchEmails(params),
186
+ }),
187
+ defineTool({
188
+ name: 'get_email',
189
+ description: 'Get full email details including body',
190
+ input: GetEmailInput,
191
+ annotations: { readOnlyHint: true },
192
+ destructive: false,
193
+ presets: ['mail'],
194
+ backends: ['graph'],
195
+ handler: (ctx, params) => requireGraphToolset(ctx, 'mailGraph').getEmail(params),
196
+ }),
197
+ defineTool({
198
+ name: 'get_emails',
199
+ description: 'Get multiple emails by ID in a single call (max 25). Useful for batch operations or summarizing threads.',
200
+ input: GetEmailsInput,
201
+ annotations: { readOnlyHint: true },
202
+ destructive: false,
203
+ presets: ['mail'],
204
+ backends: ['graph'],
205
+ handler: (ctx, params) => requireGraphToolset(ctx, 'mailGraph').getEmails(params),
206
+ }),
207
+ defineTool({
208
+ name: 'get_unread_count',
209
+ description: 'Get unread email count',
210
+ input: GetUnreadCountInput,
211
+ annotations: { readOnlyHint: true },
212
+ destructive: false,
213
+ presets: ['mail'],
214
+ backends: ['graph'],
215
+ handler: (ctx, params) => requireGraphToolset(ctx, 'mailGraph').getUnreadCount(params),
216
+ }),
217
+ defineTool({
218
+ name: 'list_attachments',
219
+ description: 'List attachment metadata (name, size, type) for an email',
220
+ input: ListAttachmentsInput,
221
+ annotations: { readOnlyHint: true },
222
+ destructive: false,
223
+ presets: ['mail'],
224
+ backends: ['graph'],
225
+ handler: (ctx, params) => requireGraphToolset(ctx, 'mailGraph').listAttachments(params),
226
+ }),
227
+ defineTool({
228
+ name: 'download_attachment',
229
+ description: 'Download/save an email attachment to a file on disk. Returns the saved file path and size.',
230
+ input: DownloadAttachmentInput,
231
+ annotations: { readOnlyHint: false, destructiveHint: false, openWorldHint: true },
232
+ destructive: false,
233
+ presets: ['mail'],
234
+ backends: ['graph'],
235
+ handler: (ctx, params) => requireGraphToolset(ctx, 'mailGraph').downloadAttachment(params),
236
+ }),
237
+ // ---- Graph-only reads ----
238
+ defineTool({
239
+ name: 'search_emails_advanced',
240
+ description: 'Search emails with structured criteria (from, to, subject_contains, body_contains, text, received_after/before, has_attachments, is_unread, importance). Compiled server-side to the correct Graph query — no KQL syntax to get wrong. Dates are ISO (YYYY-MM-DD); mixed criteria use day-granular dates. Provide at least one criterion. (Graph API)',
241
+ input: SearchEmailsAdvancedInput,
242
+ annotations: { readOnlyHint: true },
243
+ destructive: false,
244
+ presets: ['mail'],
245
+ backends: ['graph'],
246
+ handler: (ctx, params) => requireGraphToolset(ctx, 'mailGraph').searchEmailsAdvanced(params),
247
+ }),
248
+ defineTool({
249
+ name: 'check_new_emails',
250
+ description: 'Check for new or changed emails since last check using delta sync. First call returns recent messages (initial sync). Subsequent calls return only new/changed messages.',
251
+ input: CheckNewEmailsInput,
252
+ annotations: { readOnlyHint: true },
253
+ destructive: false,
254
+ presets: ['mail'],
255
+ backends: ['graph'],
256
+ handler: (ctx, params) => requireGraphToolset(ctx, 'mailGraph').checkNewEmails(params),
257
+ }),
258
+ defineTool({
259
+ name: 'list_conversation',
260
+ description: 'List all messages in an email conversation/thread, ordered chronologically. Provide any message ID from the thread.',
261
+ input: ListConversationInput,
262
+ annotations: { readOnlyHint: true },
263
+ destructive: false,
264
+ presets: ['mail'],
265
+ backends: ['graph'],
266
+ handler: (ctx, params) => requireGraphToolset(ctx, 'mailGraph').listConversation(params),
267
+ }),
268
+ defineTool({
269
+ name: 'get_message_headers',
270
+ description: 'Get internet message headers (SPF, DKIM, routing, etc.) for an email (Graph API)',
271
+ input: GetMessageHeadersInput,
272
+ annotations: { readOnlyHint: true },
273
+ destructive: false,
274
+ presets: ['mail'],
275
+ backends: ['graph'],
276
+ handler: (ctx, params) => requireGraphToolset(ctx, 'mailGraph').getMessageHeaders(params),
277
+ }),
278
+ defineTool({
279
+ name: 'get_message_mime',
280
+ description: 'Download the full MIME content (.eml) of an email to a local file (Graph API)',
281
+ input: GetMessageMimeInput,
282
+ annotations: { readOnlyHint: true },
283
+ destructive: false,
284
+ presets: ['mail'],
285
+ backends: ['graph'],
286
+ handler: (ctx, params) => requireGraphToolset(ctx, 'mailGraph').getMessageMime(params),
287
+ }),
288
+ defineTool({
289
+ name: 'get_mail_tips',
290
+ description: 'Get mail tips (automatic replies, mailbox full, delivery restrictions, max message size) for email addresses (Graph API)',
291
+ input: GetMailTipsInput,
292
+ annotations: { readOnlyHint: true },
293
+ destructive: false,
294
+ presets: ['mail'],
295
+ backends: ['graph'],
296
+ handler: (ctx, params) => requireGraphToolset(ctx, 'mailGraph').getMailTips(params),
297
+ }),
298
+ ];
310
299
  }
311
300
  //# sourceMappingURL=mail.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"mail.js","sourceRoot":"","sources":["../../src/tools/mail.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH;;;;GAIG;AAEH,OAAO,EAAE,UAAU,EAAE,MAAM,IAAI,CAAC;AAChC,OAAO,EAAE,OAAO,EAAE,MAAM,MAAM,CAAC;AAC/B,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAGxB,OAAO,EAAE,4BAA4B,EAAE,MAAM,kBAAkB,CAAC;AAGhE,OAAO,EAAE,mBAAmB,EAAE,MAAM,mBAAmB,CAAC;AACxD,OAAO,EAAE,gBAAgB,EAAE,MAAM,6BAA6B,CAAC;AAC/D,OAAO,EAAE,aAAa,EAAE,eAAe,EAAE,uBAAuB,EAAE,mBAAmB,EAAE,MAAM,oBAAoB,CAAC;AAElH,gFAAgF;AAChF,gBAAgB;AAChB,gFAAgF;AAEhF,MAAM,CAAC,MAAM,gBAAgB,GAAG,CAAC,CAAC,YAAY,CAAC,EAAE,CAAC,CAAC;AAEnD,MAAM,CAAC,MAAM,eAAe,GAAG,CAAC,CAAC,YAAY,CAAC;IAC5C,SAAS,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,mCAAmC,CAAC;IACpF,KAAK,EAAE,CAAC;SACL,MAAM,EAAE;SACR,GAAG,EAAE;SACL,GAAG,CAAC,CAAC,CAAC;SACN,GAAG,CAAC,GAAG,CAAC;SACR,OAAO,CAAC,EAAE,CAAC;SACX,QAAQ,CAAC,4CAA4C,CAAC;IACzD,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,0BAA0B,CAAC;IAC/E,WAAW,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,QAAQ,CAAC,2BAA2B,CAAC;CAC9E,CAAC,CAAC;AAEH,MAAM,CAAC,MAAM,iBAAiB,GAAG,CAAC,CAAC,YAAY,CAAC;IAC9C,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,sDAAsD,CAAC;IACzF,SAAS,EAAE,CAAC;SACT,MAAM,EAAE;SACR,GAAG,EAAE;SACL,QAAQ,EAAE;SACV,QAAQ,EAAE;SACV,QAAQ,CAAC,uCAAuC,CAAC;IACpD,KAAK,EAAE,CAAC;SACL,MAAM,EAAE;SACR,GAAG,EAAE;SACL,GAAG,CAAC,CAAC,CAAC;SACN,GAAG,CAAC,GAAG,CAAC;SACR,OAAO,CAAC,EAAE,CAAC;SACX,QAAQ,CAAC,4CAA4C,CAAC;CAC1D,CAAC,CAAC;AAEH,MAAM,CAAC,MAAM,yBAAyB,GAAG,CAAC,CAAC,YAAY,CAAC;IACtD,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,QAAQ,CAC/B,qIAAqI,CACtI;IACD,SAAS,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,qCAAqC,CAAC;IACjG,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC,QAAQ,CAAC,yBAAyB,CAAC;CACxF,CAAC,CAAC;AAEH,MAAM,CAAC,MAAM,aAAa,GAAG,CAAC,CAAC,YAAY,CAAC;IAC1C,QAAQ,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,0BAA0B,CAAC;IAC1E,YAAY,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,QAAQ,CAAC,wCAAwC,CAAC;IAC1F,UAAU,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,QAAQ,CAAC,+BAA+B,CAAC;CAChF,CAAC,CAAC;AAEH,MAAM,CAAC,MAAM,cAAc,GAAG,CAAC,CAAC,YAAY,CAAC;IAC3C,SAAS,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,QAAQ,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC;SAC3D,QAAQ,CAAC,sCAAsC,CAAC;IACnD,YAAY,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,QAAQ,CAAC,yBAAyB,CAAC;IAC5E,UAAU,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,QAAQ,CAAC,2BAA2B,CAAC;CAC7E,CAAC,CAAC;AAEH,MAAM,CAAC,MAAM,qBAAqB,GAAG,CAAC,CAAC,YAAY,CAAC;IAClD,UAAU,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,6CAA6C,CAAC;IAC/F,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC,QAAQ,CAAC,4BAA4B,CAAC;CAC3F,CAAC,CAAC;AAEH,MAAM,CAAC,MAAM,mBAAmB,GAAG,CAAC,CAAC,YAAY,CAAC;IAChD,SAAS,EAAE,CAAC;SACT,MAAM,EAAE;SACR,GAAG,EAAE;SACL,QAAQ,EAAE;SACV,QAAQ,EAAE;SACV,QAAQ,CAAC,4CAA4C,CAAC;CAC1D,CAAC,CAAC;AAEH,MAAM,CAAC,MAAM,oBAAoB,GAAG,CAAC,CAAC,YAAY,CAAC;IACjD,QAAQ,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,sCAAsC,CAAC;CACvF,CAAC,CAAC;AAEH,MAAM,CAAC,MAAM,uBAAuB,GAAG,CAAC,CAAC,YAAY,CAAC;IACpD,QAAQ,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,wCAAwC,CAAC;IACxF,gBAAgB,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,6DAA6D,CAAC;IACrH,SAAS,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,yDAAyD,CAAC;CACjG,CAAC,CAAC;AAEH,MAAM,CAAC,MAAM,mBAAmB,GAAG,CAAC,CAAC,YAAY,CAAC;IAChD,SAAS,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,mCAAmC,CAAC;CACrF,CAAC,CAAC;AAgBH,gFAAgF;AAChF,eAAe;AACf,gFAAgF;AAEhF;;GAEG;AACH,SAAS,eAAe,CAAC,GAAc;IACrC,OAAO;QACL,EAAE,EAAE,GAAG,CAAC,EAAE;QACV,IAAI,EAAE,GAAG,CAAC,IAAI,IAAI,SAAS;QAC3B,QAAQ,EAAE,GAAG,CAAC,QAAQ;QACtB,WAAW,EAAE,GAAG,CAAC,WAAW;QAC5B,UAAU,EAAE,GAAG,CAAC,UAAU;QAC1B,SAAS,EAAE,GAAG,CAAC,SAAS;QACxB,YAAY,EAAE,GAAG,CAAC,YAAY;QAC9B,WAAW,EAAE,GAAG,CAAC,WAAW;KAC7B,CAAC;AACJ,CAAC;AAED;;GAEG;AACH,SAAS,qBAAqB,CAAC,GAAa;IAC1C,OAAO;QACL,EAAE,EAAE,GAAG,CAAC,EAAE;QACV,QAAQ,EAAE,GAAG,CAAC,QAAQ;QACtB,OAAO,EAAE,GAAG,CAAC,OAAO;QACpB,MAAM,EAAE,GAAG,CAAC,MAAM;QAClB,aAAa,EAAE,GAAG,CAAC,aAAa;QAChC,OAAO,EAAE,GAAG,CAAC,OAAO;QACpB,MAAM,EAAE,GAAG,CAAC,MAAM,KAAK,CAAC;QACxB,YAAY,EAAE,mBAAmB,CAAC,GAAG,CAAC,YAAY,CAAC;QACnD,QAAQ,EAAE,mBAAmB,CAAC,GAAG,CAAC,QAAQ,CAAC;QAC3C,aAAa,EAAE,GAAG,CAAC,aAAa,KAAK,CAAC;QACtC,QAAQ,EAAE,GAAG,CAAC,QAAyB;QACvC,UAAU,EAAE,GAAG,CAAC,UAA6B;QAC7C,UAAU,EAAE,eAAe,CAAC,GAAG,CAAC,UAAU,CAAC;KAC5C,CAAC;AACJ,CAAC;AAED;;;GAGG;AACH,SAAS,eAAe,CAAC,MAAqB;IAC5C,IAAI,MAAM,IAAI,IAAI,IAAI,MAAM,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QAC1C,OAAO,EAAE,CAAC;IACZ,CAAC;IAED,IAAI,CAAC;QACH,MAAM,IAAI,GAAG,MAAM,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC;QACtC,wEAAwE;QACxE,MAAM,UAAU,GAAG,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC;YACpC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC;YAC5C,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;QACjE,OAAO,UAAU,CAAC;IACpB,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,EAAE,CAAC;IACZ,CAAC;AACH,CAAC;AAED;;GAEG;AACH,SAAS,cAAc,CAAC,GAAa,EAAE,IAAmB,EAAE,SAAkB;IAC5E,MAAM,OAAO,GAAG,qBAAqB,CAAC,GAAG,CAAC,CAAC;IAE3C,mBAAmB;IACnB,IAAI,aAAa,GAAkB,IAAI,CAAC;IACxC,IAAI,QAAQ,GAAkB,IAAI,CAAC;IAEnC,IAAI,IAAI,IAAI,IAAI,EAAE,CAAC;QACjB,QAAQ,GAAG,IAAI,CAAC;QAChB,aAAa,GAAG,SAAS,CAAC,CAAC,CAAC,gBAAgB,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;IAC5D,CAAC;IAED,OAAO;QACL,GAAG,OAAO;QACV,UAAU,EAAE,GAAG,CAAC,UAAU;QAC1B,SAAS,EAAE,GAAG,CAAC,SAAS;QACxB,WAAW,EAAE,GAAG,CAAC,WAAW;QAC5B,WAAW,EAAE,GAAG,CAAC,WAAW;QAC5B,IAAI,EAAE,GAAG,CAAC,IAAI;QACd,SAAS,EAAE,GAAG,CAAC,SAAS,IAAI,IAAI;QAChC,cAAc,EAAE,GAAG,CAAC,cAAc,IAAI,IAAI;QAC1C,IAAI,EAAE,aAAa;QACnB,QAAQ,EAAE,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,QAAQ;KACtC,CAAC;AACJ,CAAC;AAiBD;;;GAGG;AACH,MAAM,CAAC,MAAM,iBAAiB,GAAmB;IAC/C,aAAa,EAAE,GAAkB,EAAE,CAAC,IAAI;CACzC,CAAC;AAEF,gFAAgF;AAChF,mBAAmB;AACnB,gFAAgF;AAEhF;;GAEG;AACH,MAAM,OAAO,SAAS;IAED;IACA;IACA;IAHnB,YACmB,UAAuB,EACvB,gBAAgC,iBAAiB,EACjD,gBAAoC;QAFpC,eAAU,GAAV,UAAU,CAAa;QACvB,kBAAa,GAAb,aAAa,CAAoC;QACjD,qBAAgB,GAAhB,gBAAgB,CAAoB;IACpD,CAAC;IAEJ;;OAEG;IACH,WAAW,CAAC,OAA0B;QACpC,MAAM,IAAI,GAAG,IAAI,CAAC,UAAU,CAAC,WAAW,EAAE,CAAC;QAC3C,OAAO,IAAI,CAAC,GAAG,CAAC,eAAe,CAAC,CAAC;IACnC,CAAC;IAED;;OAEG;IACH,UAAU,CAAC,MAAwB;QACjC,MAAM,EAAE,SAAS,EAAE,KAAK,EAAE,MAAM,EAAE,WAAW,EAAE,GAAG,MAAM,CAAC;QAEzD,MAAM,IAAI,GAAG,WAAW;YACtB,CAAC,CAAC,IAAI,CAAC,UAAU,CAAC,gBAAgB,CAAC,SAAS,EAAE,KAAK,EAAE,MAAM,CAAC;YAC5D,CAAC,CAAC,IAAI,CAAC,UAAU,CAAC,UAAU,CAAC,SAAS,EAAE,KAAK,EAAE,MAAM,CAAC,CAAC;QAEzD,OAAO,IAAI,CAAC,GAAG,CAAC,qBAAqB,CAAC,CAAC;IACzC,CAAC;IAED;;OAEG;IACH,YAAY,CAAC,MAA0B;QACrC,MAAM,EAAE,KAAK,EAAE,SAAS,EAAE,KAAK,EAAE,GAAG,MAAM,CAAC;QAE3C,MAAM,IAAI,GACR,SAAS,IAAI,IAAI;YACf,CAAC,CAAC,IAAI,CAAC,UAAU,CAAC,oBAAoB,CAAC,SAAS,EAAE,KAAK,EAAE,KAAK,CAAC;YAC/D,CAAC,CAAC,IAAI,CAAC,UAAU,CAAC,YAAY,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC;QAEjD,OAAO,IAAI,CAAC,GAAG,CAAC,qBAAqB,CAAC,CAAC;IACzC,CAAC;IAED;;OAEG;IACH,QAAQ,CAAC,MAAsB;QAC7B,MAAM,EAAE,QAAQ,EAAE,YAAY,EAAE,UAAU,EAAE,GAAG,MAAM,CAAC;QAEtD,MAAM,GAAG,GAAG,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC;QAC/C,IAAI,GAAG,IAAI,IAAI,EAAE,CAAC;YAChB,OAAO,IAAI,CAAC;QACd,CAAC;QAED,gCAAgC;QAChC,IAAI,IAAI,GAAkB,IAAI,CAAC;QAC/B,IAAI,YAAY,IAAI,GAAG,CAAC,YAAY,IAAI,IAAI,EAAE,CAAC;YAC7C,IAAI,GAAG,IAAI,CAAC,aAAa,CAAC,aAAa,CAAC,GAAG,CAAC,YAAY,CAAC,CAAC;QAC5D,CAAC;QAED,uCAAuC;QACvC,IAAI,WAAW,GAAqB,EAAE,CAAC;QACvC,IAAI,IAAI,CAAC,gBAAgB,IAAI,IAAI,IAAI,GAAG,CAAC,aAAa,KAAK,CAAC,EAAE,CAAC;YAC7D,WAAW,GAAG,IAAI,CAAC,gBAAgB,CAAC,eAAe,CAAC,QAAQ,CAAC,CAAC;QAChE,CAAC;QAED,OAAO;YACL,GAAG,cAAc,CAAC,GAAG,EAAE,IAAI,EAAE,UAAU,CAAC;YACxC,WAAW;SACZ,CAAC;IACJ,CAAC;IAED;;OAEG;IACH,cAAc,CAAC,MAA4B;QACzC,MAAM,EAAE,SAAS,EAAE,GAAG,MAAM,CAAC;QAE7B,MAAM,KAAK,GACT,SAAS,IAAI,IAAI;YACf,CAAC,CAAC,IAAI,CAAC,UAAU,CAAC,sBAAsB,CAAC,SAAS,CAAC;YACnD,CAAC,CAAC,IAAI,CAAC,UAAU,CAAC,cAAc,EAAE,CAAC;QAEvC,OAAO,EAAE,KAAK,EAAE,CAAC;IACnB,CAAC;IAED;;OAEG;IACH,eAAe,CAAC,MAA6B;QAC3C,IAAI,IAAI,CAAC,gBAAgB,IAAI,IAAI,EAAE,CAAC;YAClC,OAAO,EAAE,CAAC;QACZ,CAAC;QAED,MAAM,EAAE,QAAQ,EAAE,GAAG,MAAM,CAAC;QAE5B,MAAM,GAAG,GAAG,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC;QAC/C,IAAI,GAAG,IAAI,IAAI,EAAE,CAAC;YAChB,MAAM,IAAI,aAAa,CAAC,OAAO,EAAE,QAAQ,CAAC,CAAC;QAC7C,CAAC;QAED,OAAO,IAAI,CAAC,gBAAgB,CAAC,eAAe,CAAC,QAAQ,CAAC,CAAC;IACzD,CAAC;IAED;;OAEG;IACH,kBAAkB,CAAC,MAAgC;QAKjD,IAAI,IAAI,CAAC,gBAAgB,IAAI,IAAI,EAAE,CAAC;YAClC,MAAM,IAAI,eAAe,CAAC,iCAAiC,CAAC,CAAC;QAC/D,CAAC;QAED,MAAM,EAAE,QAAQ,EAAE,gBAAgB,EAAE,SAAS,EAAE,GAAG,MAAM,CAAC;QAEzD,MAAM,GAAG,GAAG,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC;QAC/C,IAAI,GAAG,IAAI,IAAI,EAAE,CAAC;YAChB,MAAM,IAAI,aAAa,CAAC,OAAO,EAAE,QAAQ,CAAC,CAAC;QAC7C,CAAC;QAED,sCAAsC;QACtC,MAAM,GAAG,GAAG,OAAO,CAAC,SAAS,CAAC,CAAC;QAC/B,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE,CAAC;YACrB,MAAM,IAAI,eAAe,CAAC,6BAA6B,GAAG,EAAE,CAAC,CAAC;QAChE,CAAC;QAED,uDAAuD;QACvD,MAAM,WAAW,GAAG,IAAI,CAAC,gBAAgB,CAAC,eAAe,CAAC,QAAQ,CAAC,CAAC;QACpE,MAAM,UAAU,GAAG,WAAW,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,KAAK,KAAK,gBAAgB,CAAC,CAAC;QAEvE,IAAI,UAAU,IAAI,IAAI,EAAE,CAAC;YACvB,MAAM,IAAI,aAAa,CAAC,YAAY,EAAE,gBAAgB,CAAC,CAAC;QAC1D,CAAC;QAED,IAAI,UAAU,CAAC,IAAI,GAAG,4BAA4B,EAAE,CAAC;YACnD,MAAM,IAAI,uBAAuB,CAC/B,UAAU,CAAC,IAAI,EACf,UAAU,CAAC,IAAI,EACf,4BAA4B,CAC7B,CAAC;QACJ,CAAC;QAED,MAAM,MAAM,GAAyB,IAAI,CAAC,gBAAgB,CAAC,cAAc,CACvE,QAAQ,EACR,gBAAgB,EAChB,SAAS,CACV,CAAC;QAEF,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC;YACpB,MAAM,IAAI,mBAAmB,CAC3B,UAAU,CAAC,IAAI,EACf,MAAM,CAAC,KAAK,IAAI,eAAe,CAChC,CAAC;QACJ,CAAC;QAED,OAAO;YACL,IAAI,EAAE,MAAM,CAAC,IAAI,IAAI,UAAU,CAAC,IAAI;YACpC,OAAO,EAAE,MAAM,CAAC,OAAO,IAAI,SAAS;YACpC,IAAI,EAAE,MAAM,CAAC,QAAQ,IAAI,UAAU,CAAC,IAAI;SACzC,CAAC;IACJ,CAAC;CACF;AAED;;GAEG;AACH,MAAM,UAAU,eAAe,CAC7B,UAAuB,EACvB,gBAAgC,iBAAiB,EACjD,gBAAoC;IAEpC,OAAO,IAAI,SAAS,CAAC,UAAU,EAAE,aAAa,EAAE,gBAAgB,CAAC,CAAC;AACpE,CAAC"}
1
+ {"version":3,"file":"mail.js","sourceRoot":"","sources":["../../src/tools/mail.ts"],"names":[],"mappings":"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"}