@jbctechsolutions/mcp-office365 2.5.1

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 (339) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +667 -0
  3. package/dist/applescript/account-repository.d.ts +30 -0
  4. package/dist/applescript/account-repository.d.ts.map +1 -0
  5. package/dist/applescript/account-repository.js +38 -0
  6. package/dist/applescript/account-repository.js.map +1 -0
  7. package/dist/applescript/account-scripts.d.ts +21 -0
  8. package/dist/applescript/account-scripts.d.ts.map +1 -0
  9. package/dist/applescript/account-scripts.js +180 -0
  10. package/dist/applescript/account-scripts.js.map +1 -0
  11. package/dist/applescript/calendar-manager.d.ts +44 -0
  12. package/dist/applescript/calendar-manager.d.ts.map +1 -0
  13. package/dist/applescript/calendar-manager.js +92 -0
  14. package/dist/applescript/calendar-manager.js.map +1 -0
  15. package/dist/applescript/calendar-writer.d.ts +36 -0
  16. package/dist/applescript/calendar-writer.d.ts.map +1 -0
  17. package/dist/applescript/calendar-writer.js +94 -0
  18. package/dist/applescript/calendar-writer.js.map +1 -0
  19. package/dist/applescript/content-readers.d.ts +114 -0
  20. package/dist/applescript/content-readers.d.ts.map +1 -0
  21. package/dist/applescript/content-readers.js +328 -0
  22. package/dist/applescript/content-readers.js.map +1 -0
  23. package/dist/applescript/executor.d.ts +60 -0
  24. package/dist/applescript/executor.d.ts.map +1 -0
  25. package/dist/applescript/executor.js +173 -0
  26. package/dist/applescript/executor.js.map +1 -0
  27. package/dist/applescript/index.d.ts +20 -0
  28. package/dist/applescript/index.d.ts.map +1 -0
  29. package/dist/applescript/index.js +29 -0
  30. package/dist/applescript/index.js.map +1 -0
  31. package/dist/applescript/mail-sender.d.ts +38 -0
  32. package/dist/applescript/mail-sender.d.ts.map +1 -0
  33. package/dist/applescript/mail-sender.js +67 -0
  34. package/dist/applescript/mail-sender.js.map +1 -0
  35. package/dist/applescript/parser.d.ts +235 -0
  36. package/dist/applescript/parser.d.ts.map +1 -0
  37. package/dist/applescript/parser.js +496 -0
  38. package/dist/applescript/parser.js.map +1 -0
  39. package/dist/applescript/repository.d.ts +64 -0
  40. package/dist/applescript/repository.d.ts.map +1 -0
  41. package/dist/applescript/repository.js +444 -0
  42. package/dist/applescript/repository.js.map +1 -0
  43. package/dist/applescript/scripts.d.ts +265 -0
  44. package/dist/applescript/scripts.d.ts.map +1 -0
  45. package/dist/applescript/scripts.js +1483 -0
  46. package/dist/applescript/scripts.js.map +1 -0
  47. package/dist/approval/hash.d.ts +87 -0
  48. package/dist/approval/hash.d.ts.map +1 -0
  49. package/dist/approval/hash.js +102 -0
  50. package/dist/approval/hash.js.map +1 -0
  51. package/dist/approval/index.d.ts +13 -0
  52. package/dist/approval/index.d.ts.map +1 -0
  53. package/dist/approval/index.js +7 -0
  54. package/dist/approval/index.js.map +1 -0
  55. package/dist/approval/token-manager.d.ts +51 -0
  56. package/dist/approval/token-manager.d.ts.map +1 -0
  57. package/dist/approval/token-manager.js +111 -0
  58. package/dist/approval/token-manager.js.map +1 -0
  59. package/dist/approval/types.d.ts +44 -0
  60. package/dist/approval/types.d.ts.map +1 -0
  61. package/dist/approval/types.js +6 -0
  62. package/dist/approval/types.js.map +1 -0
  63. package/dist/cli.d.ts +30 -0
  64. package/dist/cli.d.ts.map +1 -0
  65. package/dist/cli.js +143 -0
  66. package/dist/cli.js.map +1 -0
  67. package/dist/config.d.ts +27 -0
  68. package/dist/config.d.ts.map +1 -0
  69. package/dist/config.js +42 -0
  70. package/dist/config.js.map +1 -0
  71. package/dist/database/connection.d.ts +77 -0
  72. package/dist/database/connection.d.ts.map +1 -0
  73. package/dist/database/connection.js +130 -0
  74. package/dist/database/connection.js.map +1 -0
  75. package/dist/database/index.d.ts +11 -0
  76. package/dist/database/index.d.ts.map +1 -0
  77. package/dist/database/index.js +11 -0
  78. package/dist/database/index.js.map +1 -0
  79. package/dist/database/queries.d.ts +93 -0
  80. package/dist/database/queries.d.ts.map +1 -0
  81. package/dist/database/queries.js +430 -0
  82. package/dist/database/queries.js.map +1 -0
  83. package/dist/database/repository.d.ts +198 -0
  84. package/dist/database/repository.d.ts.map +1 -0
  85. package/dist/database/repository.js +199 -0
  86. package/dist/database/repository.js.map +1 -0
  87. package/dist/graph/attachments.d.ts +72 -0
  88. package/dist/graph/attachments.d.ts.map +1 -0
  89. package/dist/graph/attachments.js +207 -0
  90. package/dist/graph/attachments.js.map +1 -0
  91. package/dist/graph/auth/config.d.ts +34 -0
  92. package/dist/graph/auth/config.d.ts.map +1 -0
  93. package/dist/graph/auth/config.js +78 -0
  94. package/dist/graph/auth/config.js.map +1 -0
  95. package/dist/graph/auth/device-code-flow.d.ts +55 -0
  96. package/dist/graph/auth/device-code-flow.d.ts.map +1 -0
  97. package/dist/graph/auth/device-code-flow.js +180 -0
  98. package/dist/graph/auth/device-code-flow.js.map +1 -0
  99. package/dist/graph/auth/index.d.ts +13 -0
  100. package/dist/graph/auth/index.d.ts.map +1 -0
  101. package/dist/graph/auth/index.js +13 -0
  102. package/dist/graph/auth/index.js.map +1 -0
  103. package/dist/graph/auth/token-cache.d.ts +41 -0
  104. package/dist/graph/auth/token-cache.d.ts.map +1 -0
  105. package/dist/graph/auth/token-cache.js +105 -0
  106. package/dist/graph/auth/token-cache.js.map +1 -0
  107. package/dist/graph/client/batch.d.ts +38 -0
  108. package/dist/graph/client/batch.d.ts.map +1 -0
  109. package/dist/graph/client/batch.js +33 -0
  110. package/dist/graph/client/batch.js.map +1 -0
  111. package/dist/graph/client/cache.d.ts +64 -0
  112. package/dist/graph/client/cache.d.ts.map +1 -0
  113. package/dist/graph/client/cache.js +108 -0
  114. package/dist/graph/client/cache.js.map +1 -0
  115. package/dist/graph/client/graph-client.d.ts +630 -0
  116. package/dist/graph/client/graph-client.d.ts.map +1 -0
  117. package/dist/graph/client/graph-client.js +1771 -0
  118. package/dist/graph/client/graph-client.js.map +1 -0
  119. package/dist/graph/client/index.d.ts +12 -0
  120. package/dist/graph/client/index.d.ts.map +1 -0
  121. package/dist/graph/client/index.js +12 -0
  122. package/dist/graph/client/index.js.map +1 -0
  123. package/dist/graph/content-readers.d.ts +106 -0
  124. package/dist/graph/content-readers.d.ts.map +1 -0
  125. package/dist/graph/content-readers.js +321 -0
  126. package/dist/graph/content-readers.js.map +1 -0
  127. package/dist/graph/index.d.ts +18 -0
  128. package/dist/graph/index.d.ts.map +1 -0
  129. package/dist/graph/index.js +23 -0
  130. package/dist/graph/index.js.map +1 -0
  131. package/dist/graph/mailbox-adapter.d.ts +30 -0
  132. package/dist/graph/mailbox-adapter.d.ts.map +1 -0
  133. package/dist/graph/mailbox-adapter.js +59 -0
  134. package/dist/graph/mailbox-adapter.js.map +1 -0
  135. package/dist/graph/mappers/contact-mapper.d.ts +14 -0
  136. package/dist/graph/mappers/contact-mapper.d.ts.map +1 -0
  137. package/dist/graph/mappers/contact-mapper.js +20 -0
  138. package/dist/graph/mappers/contact-mapper.js.map +1 -0
  139. package/dist/graph/mappers/email-mapper.d.ts +14 -0
  140. package/dist/graph/mappers/email-mapper.d.ts.map +1 -0
  141. package/dist/graph/mappers/email-mapper.js +44 -0
  142. package/dist/graph/mappers/email-mapper.js.map +1 -0
  143. package/dist/graph/mappers/event-mapper.d.ts +14 -0
  144. package/dist/graph/mappers/event-mapper.d.ts.map +1 -0
  145. package/dist/graph/mappers/event-mapper.js +31 -0
  146. package/dist/graph/mappers/event-mapper.js.map +1 -0
  147. package/dist/graph/mappers/folder-mapper.d.ts +22 -0
  148. package/dist/graph/mappers/folder-mapper.d.ts.map +1 -0
  149. package/dist/graph/mappers/folder-mapper.js +51 -0
  150. package/dist/graph/mappers/folder-mapper.js.map +1 -0
  151. package/dist/graph/mappers/index.d.ts +16 -0
  152. package/dist/graph/mappers/index.d.ts.map +1 -0
  153. package/dist/graph/mappers/index.js +16 -0
  154. package/dist/graph/mappers/index.js.map +1 -0
  155. package/dist/graph/mappers/task-mapper.d.ts +20 -0
  156. package/dist/graph/mappers/task-mapper.d.ts.map +1 -0
  157. package/dist/graph/mappers/task-mapper.js +27 -0
  158. package/dist/graph/mappers/task-mapper.js.map +1 -0
  159. package/dist/graph/mappers/utils.d.ts +97 -0
  160. package/dist/graph/mappers/utils.d.ts.map +1 -0
  161. package/dist/graph/mappers/utils.js +186 -0
  162. package/dist/graph/mappers/utils.js.map +1 -0
  163. package/dist/graph/repository.d.ts +1104 -0
  164. package/dist/graph/repository.d.ts.map +1 -0
  165. package/dist/graph/repository.js +2999 -0
  166. package/dist/graph/repository.js.map +1 -0
  167. package/dist/index.d.ts +21 -0
  168. package/dist/index.d.ts.map +1 -0
  169. package/dist/index.js +6052 -0
  170. package/dist/index.js.map +1 -0
  171. package/dist/parsers/html-stripper.d.ts +41 -0
  172. package/dist/parsers/html-stripper.d.ts.map +1 -0
  173. package/dist/parsers/html-stripper.js +179 -0
  174. package/dist/parsers/html-stripper.js.map +1 -0
  175. package/dist/parsers/index.d.ts +12 -0
  176. package/dist/parsers/index.d.ts.map +1 -0
  177. package/dist/parsers/index.js +12 -0
  178. package/dist/parsers/index.js.map +1 -0
  179. package/dist/parsers/olk15.d.ts +87 -0
  180. package/dist/parsers/olk15.d.ts.map +1 -0
  181. package/dist/parsers/olk15.js +368 -0
  182. package/dist/parsers/olk15.js.map +1 -0
  183. package/dist/signature.d.ts +22 -0
  184. package/dist/signature.d.ts.map +1 -0
  185. package/dist/signature.js +89 -0
  186. package/dist/signature.js.map +1 -0
  187. package/dist/tools/calendar-permissions.d.ts +79 -0
  188. package/dist/tools/calendar-permissions.d.ts.map +1 -0
  189. package/dist/tools/calendar-permissions.js +121 -0
  190. package/dist/tools/calendar-permissions.js.map +1 -0
  191. package/dist/tools/calendar.d.ts +208 -0
  192. package/dist/tools/calendar.d.ts.map +1 -0
  193. package/dist/tools/calendar.js +247 -0
  194. package/dist/tools/calendar.js.map +1 -0
  195. package/dist/tools/categories.d.ts +94 -0
  196. package/dist/tools/categories.d.ts.map +1 -0
  197. package/dist/tools/categories.js +117 -0
  198. package/dist/tools/categories.js.map +1 -0
  199. package/dist/tools/checklist-items.d.ts +89 -0
  200. package/dist/tools/checklist-items.d.ts.map +1 -0
  201. package/dist/tools/checklist-items.js +140 -0
  202. package/dist/tools/checklist-items.js.map +1 -0
  203. package/dist/tools/contacts.d.ts +94 -0
  204. package/dist/tools/contacts.d.ts.map +1 -0
  205. package/dist/tools/contacts.js +134 -0
  206. package/dist/tools/contacts.js.map +1 -0
  207. package/dist/tools/excel.d.ts +96 -0
  208. package/dist/tools/excel.d.ts.map +1 -0
  209. package/dist/tools/excel.js +165 -0
  210. package/dist/tools/excel.js.map +1 -0
  211. package/dist/tools/focused-overrides.d.ts +70 -0
  212. package/dist/tools/focused-overrides.d.ts.map +1 -0
  213. package/dist/tools/focused-overrides.js +117 -0
  214. package/dist/tools/focused-overrides.js.map +1 -0
  215. package/dist/tools/index.d.ts +22 -0
  216. package/dist/tools/index.d.ts.map +1 -0
  217. package/dist/tools/index.js +34 -0
  218. package/dist/tools/index.js.map +1 -0
  219. package/dist/tools/linked-resources.d.ts +74 -0
  220. package/dist/tools/linked-resources.d.ts.map +1 -0
  221. package/dist/tools/linked-resources.js +122 -0
  222. package/dist/tools/linked-resources.js.map +1 -0
  223. package/dist/tools/mail-rules.d.ts +98 -0
  224. package/dist/tools/mail-rules.d.ts.map +1 -0
  225. package/dist/tools/mail-rules.js +169 -0
  226. package/dist/tools/mail-rules.js.map +1 -0
  227. package/dist/tools/mail-send.d.ts +314 -0
  228. package/dist/tools/mail-send.d.ts.map +1 -0
  229. package/dist/tools/mail-send.js +555 -0
  230. package/dist/tools/mail-send.js.map +1 -0
  231. package/dist/tools/mail.d.ts +127 -0
  232. package/dist/tools/mail.d.ts.map +1 -0
  233. package/dist/tools/mail.js +311 -0
  234. package/dist/tools/mail.js.map +1 -0
  235. package/dist/tools/mailbox-organization.d.ts +301 -0
  236. package/dist/tools/mailbox-organization.d.ts.map +1 -0
  237. package/dist/tools/mailbox-organization.js +541 -0
  238. package/dist/tools/mailbox-organization.js.map +1 -0
  239. package/dist/tools/meetings.d.ts +114 -0
  240. package/dist/tools/meetings.d.ts.map +1 -0
  241. package/dist/tools/meetings.js +110 -0
  242. package/dist/tools/meetings.js.map +1 -0
  243. package/dist/tools/notes.d.ts +74 -0
  244. package/dist/tools/notes.d.ts.map +1 -0
  245. package/dist/tools/notes.js +136 -0
  246. package/dist/tools/notes.js.map +1 -0
  247. package/dist/tools/onedrive.d.ts +194 -0
  248. package/dist/tools/onedrive.d.ts.map +1 -0
  249. package/dist/tools/onedrive.js +257 -0
  250. package/dist/tools/onedrive.js.map +1 -0
  251. package/dist/tools/people.d.ts +129 -0
  252. package/dist/tools/people.d.ts.map +1 -0
  253. package/dist/tools/people.js +195 -0
  254. package/dist/tools/people.js.map +1 -0
  255. package/dist/tools/planner-visualization.d.ts +91 -0
  256. package/dist/tools/planner-visualization.d.ts.map +1 -0
  257. package/dist/tools/planner-visualization.js +192 -0
  258. package/dist/tools/planner-visualization.js.map +1 -0
  259. package/dist/tools/planner.d.ts +288 -0
  260. package/dist/tools/planner.d.ts.map +1 -0
  261. package/dist/tools/planner.js +368 -0
  262. package/dist/tools/planner.js.map +1 -0
  263. package/dist/tools/scheduling.d.ts +49 -0
  264. package/dist/tools/scheduling.d.ts.map +1 -0
  265. package/dist/tools/scheduling.js +115 -0
  266. package/dist/tools/scheduling.js.map +1 -0
  267. package/dist/tools/sharepoint.d.ts +115 -0
  268. package/dist/tools/sharepoint.d.ts.map +1 -0
  269. package/dist/tools/sharepoint.js +99 -0
  270. package/dist/tools/sharepoint.js.map +1 -0
  271. package/dist/tools/task-attachments.d.ts +74 -0
  272. package/dist/tools/task-attachments.d.ts.map +1 -0
  273. package/dist/tools/task-attachments.js +122 -0
  274. package/dist/tools/task-attachments.js.map +1 -0
  275. package/dist/tools/tasks.d.ts +74 -0
  276. package/dist/tools/tasks.d.ts.map +1 -0
  277. package/dist/tools/tasks.js +126 -0
  278. package/dist/tools/tasks.js.map +1 -0
  279. package/dist/tools/teams.d.ts +389 -0
  280. package/dist/tools/teams.d.ts.map +1 -0
  281. package/dist/tools/teams.js +546 -0
  282. package/dist/tools/teams.js.map +1 -0
  283. package/dist/types/calendar.d.ts +60 -0
  284. package/dist/types/calendar.d.ts.map +1 -0
  285. package/dist/types/calendar.js +15 -0
  286. package/dist/types/calendar.js.map +1 -0
  287. package/dist/types/contacts.d.ts +96 -0
  288. package/dist/types/contacts.d.ts.map +1 -0
  289. package/dist/types/contacts.js +41 -0
  290. package/dist/types/contacts.js.map +1 -0
  291. package/dist/types/index.d.ts +15 -0
  292. package/dist/types/index.d.ts.map +1 -0
  293. package/dist/types/index.js +16 -0
  294. package/dist/types/index.js.map +1 -0
  295. package/dist/types/mail.d.ts +108 -0
  296. package/dist/types/mail.d.ts.map +1 -0
  297. package/dist/types/mail.js +40 -0
  298. package/dist/types/mail.js.map +1 -0
  299. package/dist/types/notes.d.ts +26 -0
  300. package/dist/types/notes.d.ts.map +1 -0
  301. package/dist/types/notes.js +6 -0
  302. package/dist/types/notes.js.map +1 -0
  303. package/dist/types/tasks.d.ts +31 -0
  304. package/dist/types/tasks.d.ts.map +1 -0
  305. package/dist/types/tasks.js +6 -0
  306. package/dist/types/tasks.js.map +1 -0
  307. package/dist/utils/dates.d.ts +66 -0
  308. package/dist/utils/dates.d.ts.map +1 -0
  309. package/dist/utils/dates.js +94 -0
  310. package/dist/utils/dates.js.map +1 -0
  311. package/dist/utils/errors.d.ts +218 -0
  312. package/dist/utils/errors.d.ts.map +1 -0
  313. package/dist/utils/errors.js +306 -0
  314. package/dist/utils/errors.js.map +1 -0
  315. package/dist/utils/index.d.ts +10 -0
  316. package/dist/utils/index.d.ts.map +1 -0
  317. package/dist/utils/index.js +10 -0
  318. package/dist/utils/index.js.map +1 -0
  319. package/dist/visualization/html.d.ts +26 -0
  320. package/dist/visualization/html.d.ts.map +1 -0
  321. package/dist/visualization/html.js +306 -0
  322. package/dist/visualization/html.js.map +1 -0
  323. package/dist/visualization/markdown.d.ts +25 -0
  324. package/dist/visualization/markdown.d.ts.map +1 -0
  325. package/dist/visualization/markdown.js +186 -0
  326. package/dist/visualization/markdown.js.map +1 -0
  327. package/dist/visualization/mermaid.d.ts +25 -0
  328. package/dist/visualization/mermaid.d.ts.map +1 -0
  329. package/dist/visualization/mermaid.js +158 -0
  330. package/dist/visualization/mermaid.js.map +1 -0
  331. package/dist/visualization/svg.d.ts +25 -0
  332. package/dist/visualization/svg.d.ts.map +1 -0
  333. package/dist/visualization/svg.js +282 -0
  334. package/dist/visualization/svg.js.map +1 -0
  335. package/dist/visualization/types.d.ts +43 -0
  336. package/dist/visualization/types.d.ts.map +1 -0
  337. package/dist/visualization/types.js +34 -0
  338. package/dist/visualization/types.js.map +1 -0
  339. package/package.json +88 -0
@@ -0,0 +1,114 @@
1
+ /**
2
+ * Copyright (c) 2026 JBC Tech Solutions, LLC
3
+ * Licensed under the MIT License. See LICENSE file in the project root.
4
+ */
5
+ /**
6
+ * Microsoft Teams Online Meetings MCP tools.
7
+ *
8
+ * Provides tools for accessing meeting recordings and transcripts.
9
+ * All operations are read-only except for downloading recordings
10
+ * to the local filesystem.
11
+ */
12
+ import { z } from 'zod';
13
+ export declare const ListOnlineMeetingsInput: z.ZodObject<{
14
+ limit: z.ZodOptional<z.ZodNumber>;
15
+ }, z.core.$strict>;
16
+ export declare const GetOnlineMeetingInput: z.ZodObject<{
17
+ meeting_id: z.ZodNumber;
18
+ }, z.core.$strict>;
19
+ export declare const ListMeetingRecordingsInput: z.ZodObject<{
20
+ meeting_id: z.ZodNumber;
21
+ }, z.core.$strict>;
22
+ export declare const DownloadMeetingRecordingInput: z.ZodObject<{
23
+ recording_id: z.ZodNumber;
24
+ output_path: z.ZodString;
25
+ }, z.core.$strict>;
26
+ export declare const ListMeetingTranscriptsInput: z.ZodObject<{
27
+ meeting_id: z.ZodNumber;
28
+ }, z.core.$strict>;
29
+ export declare const GetMeetingTranscriptContentInput: z.ZodObject<{
30
+ transcript_id: z.ZodNumber;
31
+ format: z.ZodOptional<z.ZodEnum<{
32
+ "text/vtt": "text/vtt";
33
+ "text/plain": "text/plain";
34
+ }>>;
35
+ }, z.core.$strict>;
36
+ export type ListOnlineMeetingsParams = z.infer<typeof ListOnlineMeetingsInput>;
37
+ export type GetOnlineMeetingParams = z.infer<typeof GetOnlineMeetingInput>;
38
+ export type ListMeetingRecordingsParams = z.infer<typeof ListMeetingRecordingsInput>;
39
+ export type DownloadMeetingRecordingParams = z.infer<typeof DownloadMeetingRecordingInput>;
40
+ export type ListMeetingTranscriptsParams = z.infer<typeof ListMeetingTranscriptsInput>;
41
+ export type GetMeetingTranscriptContentParams = z.infer<typeof GetMeetingTranscriptContentInput>;
42
+ export interface IMeetingsRepository {
43
+ listOnlineMeetingsAsync(limit?: number): Promise<Array<{
44
+ id: number;
45
+ subject: string;
46
+ startDateTime: string;
47
+ endDateTime: string;
48
+ joinUrl: string;
49
+ }>>;
50
+ getOnlineMeetingAsync(meetingId: number): Promise<{
51
+ id: number;
52
+ subject: string;
53
+ startDateTime: string;
54
+ endDateTime: string;
55
+ joinUrl: string;
56
+ participants: unknown;
57
+ } | undefined>;
58
+ listMeetingRecordingsAsync(meetingId: number): Promise<Array<{
59
+ id: number;
60
+ createdDateTime: string;
61
+ recordingContentUrl: string;
62
+ }>>;
63
+ downloadMeetingRecordingAsync(recordingId: number, outputPath: string): Promise<string>;
64
+ listMeetingTranscriptsAsync(meetingId: number): Promise<Array<{
65
+ id: number;
66
+ createdDateTime: string;
67
+ contentUrl: string;
68
+ }>>;
69
+ getMeetingTranscriptContentAsync(transcriptId: number, format?: string): Promise<string>;
70
+ }
71
+ /**
72
+ * Microsoft Teams Online Meetings tools for recordings and transcripts.
73
+ */
74
+ export declare class MeetingsTools {
75
+ private readonly repo;
76
+ constructor(repo: IMeetingsRepository);
77
+ listOnlineMeetings(params: ListOnlineMeetingsParams): Promise<{
78
+ content: Array<{
79
+ type: 'text';
80
+ text: string;
81
+ }>;
82
+ }>;
83
+ getOnlineMeeting(params: GetOnlineMeetingParams): Promise<{
84
+ content: Array<{
85
+ type: 'text';
86
+ text: string;
87
+ }>;
88
+ }>;
89
+ listMeetingRecordings(params: ListMeetingRecordingsParams): Promise<{
90
+ content: Array<{
91
+ type: 'text';
92
+ text: string;
93
+ }>;
94
+ }>;
95
+ downloadMeetingRecording(params: DownloadMeetingRecordingParams): Promise<{
96
+ content: Array<{
97
+ type: 'text';
98
+ text: string;
99
+ }>;
100
+ }>;
101
+ listMeetingTranscripts(params: ListMeetingTranscriptsParams): Promise<{
102
+ content: Array<{
103
+ type: 'text';
104
+ text: string;
105
+ }>;
106
+ }>;
107
+ getMeetingTranscriptContent(params: GetMeetingTranscriptContentParams): Promise<{
108
+ content: Array<{
109
+ type: 'text';
110
+ text: string;
111
+ }>;
112
+ }>;
113
+ }
114
+ //# sourceMappingURL=meetings.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"meetings.d.ts","sourceRoot":"","sources":["../../src/tools/meetings.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,110 @@
1
+ /**
2
+ * Copyright (c) 2026 JBC Tech Solutions, LLC
3
+ * Licensed under the MIT License. See LICENSE file in the project root.
4
+ */
5
+ /**
6
+ * Microsoft Teams Online Meetings MCP tools.
7
+ *
8
+ * Provides tools for accessing meeting recordings and transcripts.
9
+ * All operations are read-only except for downloading recordings
10
+ * to the local filesystem.
11
+ */
12
+ import { z } from 'zod';
13
+ // =============================================================================
14
+ // Input Schemas
15
+ // =============================================================================
16
+ export const ListOnlineMeetingsInput = z.strictObject({
17
+ limit: z.number().int().positive().max(100).optional().describe('Maximum number of meetings to return (default 20)'),
18
+ });
19
+ export const GetOnlineMeetingInput = z.strictObject({
20
+ meeting_id: z.number().int().positive().describe('Meeting ID from list_online_meetings'),
21
+ });
22
+ export const ListMeetingRecordingsInput = z.strictObject({
23
+ meeting_id: z.number().int().positive().describe('Meeting ID from list_online_meetings'),
24
+ });
25
+ export const DownloadMeetingRecordingInput = z.strictObject({
26
+ recording_id: z.number().int().positive().describe('Recording ID from list_meeting_recordings'),
27
+ output_path: z.string().min(1).describe('Local file path to save the recording'),
28
+ });
29
+ export const ListMeetingTranscriptsInput = z.strictObject({
30
+ meeting_id: z.number().int().positive().describe('Meeting ID from list_online_meetings'),
31
+ });
32
+ export const GetMeetingTranscriptContentInput = z.strictObject({
33
+ transcript_id: z.number().int().positive().describe('Transcript ID from list_meeting_transcripts'),
34
+ format: z.enum(['text/vtt', 'text/plain']).optional().describe('Transcript format (default text/vtt)'),
35
+ });
36
+ // =============================================================================
37
+ // Meetings Tools
38
+ // =============================================================================
39
+ /**
40
+ * Microsoft Teams Online Meetings tools for recordings and transcripts.
41
+ */
42
+ export class MeetingsTools {
43
+ repo;
44
+ constructor(repo) {
45
+ this.repo = repo;
46
+ }
47
+ async listOnlineMeetings(params) {
48
+ const meetings = await this.repo.listOnlineMeetingsAsync(params.limit);
49
+ return {
50
+ content: [{
51
+ type: 'text',
52
+ text: JSON.stringify({ meetings }, null, 2),
53
+ }],
54
+ };
55
+ }
56
+ async getOnlineMeeting(params) {
57
+ const meeting = await this.repo.getOnlineMeetingAsync(params.meeting_id);
58
+ if (meeting == null) {
59
+ return {
60
+ content: [{
61
+ type: 'text',
62
+ text: JSON.stringify({ error: 'Meeting not found' }, null, 2),
63
+ }],
64
+ };
65
+ }
66
+ return {
67
+ content: [{
68
+ type: 'text',
69
+ text: JSON.stringify({ meeting }, null, 2),
70
+ }],
71
+ };
72
+ }
73
+ async listMeetingRecordings(params) {
74
+ const recordings = await this.repo.listMeetingRecordingsAsync(params.meeting_id);
75
+ return {
76
+ content: [{
77
+ type: 'text',
78
+ text: JSON.stringify({ recordings }, null, 2),
79
+ }],
80
+ };
81
+ }
82
+ async downloadMeetingRecording(params) {
83
+ const filePath = await this.repo.downloadMeetingRecordingAsync(params.recording_id, params.output_path);
84
+ return {
85
+ content: [{
86
+ type: 'text',
87
+ text: JSON.stringify({ success: true, file_path: filePath, message: 'Recording downloaded' }, null, 2),
88
+ }],
89
+ };
90
+ }
91
+ async listMeetingTranscripts(params) {
92
+ const transcripts = await this.repo.listMeetingTranscriptsAsync(params.meeting_id);
93
+ return {
94
+ content: [{
95
+ type: 'text',
96
+ text: JSON.stringify({ transcripts }, null, 2),
97
+ }],
98
+ };
99
+ }
100
+ async getMeetingTranscriptContent(params) {
101
+ const transcriptContent = await this.repo.getMeetingTranscriptContentAsync(params.transcript_id, params.format);
102
+ return {
103
+ content: [{
104
+ type: 'text',
105
+ text: JSON.stringify({ transcript: transcriptContent }, null, 2),
106
+ }],
107
+ };
108
+ }
109
+ }
110
+ //# sourceMappingURL=meetings.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"meetings.js","sourceRoot":"","sources":["../../src/tools/meetings.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,74 @@
1
+ /**
2
+ * Copyright (c) 2026 JBC Tech Solutions, LLC
3
+ * Licensed under the MIT License. See LICENSE file in the project root.
4
+ */
5
+ /**
6
+ * Notes-related MCP tools.
7
+ *
8
+ * Provides tools for listing, searching, and getting notes.
9
+ */
10
+ import { z } from 'zod';
11
+ import type { IRepository } from '../database/repository.js';
12
+ import type { NoteSummary, Note } from '../types/index.js';
13
+ export declare const ListNotesInput: z.ZodObject<{
14
+ limit: z.ZodDefault<z.ZodNumber>;
15
+ offset: z.ZodDefault<z.ZodNumber>;
16
+ }, z.core.$strict>;
17
+ export declare const GetNoteInput: z.ZodObject<{
18
+ note_id: z.ZodNumber;
19
+ }, z.core.$strict>;
20
+ export declare const SearchNotesInput: z.ZodObject<{
21
+ query: z.ZodString;
22
+ limit: z.ZodDefault<z.ZodNumber>;
23
+ }, z.core.$strict>;
24
+ export type ListNotesParams = z.infer<typeof ListNotesInput>;
25
+ export type GetNoteParams = z.infer<typeof GetNoteInput>;
26
+ export type SearchNotesParams = z.infer<typeof SearchNotesInput>;
27
+ /**
28
+ * Interface for reading note content from data files.
29
+ */
30
+ export interface INoteContentReader {
31
+ /**
32
+ * Reads note details from the given data file path.
33
+ */
34
+ readNoteDetails(dataFilePath: string | null): NoteDetails | null;
35
+ }
36
+ /**
37
+ * Note details from content file.
38
+ */
39
+ export interface NoteDetails {
40
+ readonly title: string | null;
41
+ readonly body: string | null;
42
+ readonly preview: string | null;
43
+ readonly createdDate: string | null;
44
+ readonly categories: readonly string[];
45
+ }
46
+ /**
47
+ * Default note content reader that returns null.
48
+ */
49
+ export declare const nullNoteContentReader: INoteContentReader;
50
+ /**
51
+ * Notes tools implementation with dependency injection.
52
+ */
53
+ export declare class NotesTools {
54
+ private readonly repository;
55
+ private readonly contentReader;
56
+ constructor(repository: IRepository, contentReader?: INoteContentReader);
57
+ /**
58
+ * Lists notes with pagination.
59
+ */
60
+ listNotes(params: ListNotesParams): NoteSummary[];
61
+ /**
62
+ * Gets a single note by ID.
63
+ */
64
+ getNote(params: GetNoteParams): Note | null;
65
+ /**
66
+ * Searches notes by content (requires content reader).
67
+ */
68
+ searchNotes(params: SearchNotesParams): NoteSummary[];
69
+ }
70
+ /**
71
+ * Creates notes tools with the given repository.
72
+ */
73
+ export declare function createNotesTools(repository: IRepository, contentReader?: INoteContentReader): NotesTools;
74
+ //# sourceMappingURL=notes.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"notes.d.ts","sourceRoot":"","sources":["../../src/tools/notes.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH;;;;GAIG;AAEH,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,KAAK,EAAE,WAAW,EAAW,MAAM,2BAA2B,CAAC;AACtE,OAAO,KAAK,EAAE,WAAW,EAAE,IAAI,EAAE,MAAM,mBAAmB,CAAC;AAO3D,eAAO,MAAM,cAAc;;;kBASzB,CAAC;AAEH,eAAO,MAAM,YAAY;;kBAEvB,CAAC;AAEH,eAAO,MAAM,gBAAgB;;;kBAS3B,CAAC;AAMH,MAAM,MAAM,eAAe,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,cAAc,CAAC,CAAC;AAC7D,MAAM,MAAM,aAAa,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,YAAY,CAAC,CAAC;AACzD,MAAM,MAAM,iBAAiB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,gBAAgB,CAAC,CAAC;AAMjE;;GAEG;AACH,MAAM,WAAW,kBAAkB;IACjC;;OAEG;IACH,eAAe,CAAC,YAAY,EAAE,MAAM,GAAG,IAAI,GAAG,WAAW,GAAG,IAAI,CAAC;CAClE;AAED;;GAEG;AACH,MAAM,WAAW,WAAW;IAC1B,QAAQ,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;IAC9B,QAAQ,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI,CAAC;IAC7B,QAAQ,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI,CAAC;IAChC,QAAQ,CAAC,WAAW,EAAE,MAAM,GAAG,IAAI,CAAC;IACpC,QAAQ,CAAC,UAAU,EAAE,SAAS,MAAM,EAAE,CAAC;CACxC;AAED;;GAEG;AACH,eAAO,MAAM,qBAAqB,EAAE,kBAEnC,CAAC;AAqCF;;GAEG;AACH,qBAAa,UAAU;IAEnB,OAAO,CAAC,QAAQ,CAAC,UAAU;IAC3B,OAAO,CAAC,QAAQ,CAAC,aAAa;gBADb,UAAU,EAAE,WAAW,EACvB,aAAa,GAAE,kBAA0C;IAG5E;;OAEG;IACH,SAAS,CAAC,MAAM,EAAE,eAAe,GAAG,WAAW,EAAE;IASjD;;OAEG;IACH,OAAO,CAAC,MAAM,EAAE,aAAa,GAAG,IAAI,GAAG,IAAI;IAY3C;;OAEG;IACH,WAAW,CAAC,MAAM,EAAE,iBAAiB,GAAG,WAAW,EAAE;CAuBtD;AAED;;GAEG;AACH,wBAAgB,gBAAgB,CAC9B,UAAU,EAAE,WAAW,EACvB,aAAa,GAAE,kBAA0C,GACxD,UAAU,CAEZ"}
@@ -0,0 +1,136 @@
1
+ /**
2
+ * Copyright (c) 2026 JBC Tech Solutions, LLC
3
+ * Licensed under the MIT License. See LICENSE file in the project root.
4
+ */
5
+ /**
6
+ * Notes-related MCP tools.
7
+ *
8
+ * Provides tools for listing, searching, and getting notes.
9
+ */
10
+ import { z } from 'zod';
11
+ import { appleTimestampToIso } from '../utils/dates.js';
12
+ // =============================================================================
13
+ // Input Schemas
14
+ // =============================================================================
15
+ export const ListNotesInput = z.strictObject({
16
+ limit: z
17
+ .number()
18
+ .int()
19
+ .min(1)
20
+ .max(100)
21
+ .default(50)
22
+ .describe('Maximum number of notes to return (1-100)'),
23
+ offset: z.number().int().min(0).default(0).describe('Number of notes to skip'),
24
+ });
25
+ export const GetNoteInput = z.strictObject({
26
+ note_id: z.number().int().positive().describe('The note ID to retrieve'),
27
+ });
28
+ export const SearchNotesInput = z.strictObject({
29
+ query: z.string().min(1).describe('Search query for note content'),
30
+ limit: z
31
+ .number()
32
+ .int()
33
+ .min(1)
34
+ .max(100)
35
+ .default(50)
36
+ .describe('Maximum number of notes to return (1-100)'),
37
+ });
38
+ /**
39
+ * Default note content reader that returns null.
40
+ */
41
+ export const nullNoteContentReader = {
42
+ readNoteDetails: () => null,
43
+ };
44
+ // =============================================================================
45
+ // Transformers
46
+ // =============================================================================
47
+ /**
48
+ * Transforms a database note row to NoteSummary.
49
+ */
50
+ function transformNoteSummary(row, details) {
51
+ return {
52
+ id: row.id,
53
+ folderId: row.folderId,
54
+ title: details?.title ?? null,
55
+ preview: details?.preview ?? null,
56
+ modifiedDate: appleTimestampToIso(row.modifiedDate),
57
+ };
58
+ }
59
+ /**
60
+ * Transforms a database note row to full Note.
61
+ */
62
+ function transformNote(row, details) {
63
+ const summary = transformNoteSummary(row, details);
64
+ return {
65
+ ...summary,
66
+ body: details?.body ?? null,
67
+ createdDate: details?.createdDate ?? null,
68
+ categories: details?.categories ?? [],
69
+ };
70
+ }
71
+ // =============================================================================
72
+ // Notes Tools Class
73
+ // =============================================================================
74
+ /**
75
+ * Notes tools implementation with dependency injection.
76
+ */
77
+ export class NotesTools {
78
+ repository;
79
+ contentReader;
80
+ constructor(repository, contentReader = nullNoteContentReader) {
81
+ this.repository = repository;
82
+ this.contentReader = contentReader;
83
+ }
84
+ /**
85
+ * Lists notes with pagination.
86
+ */
87
+ listNotes(params) {
88
+ const { limit, offset } = params;
89
+ const rows = this.repository.listNotes(limit, offset);
90
+ return rows.map((row) => {
91
+ const details = this.contentReader.readNoteDetails(row.dataFilePath);
92
+ return transformNoteSummary(row, details);
93
+ });
94
+ }
95
+ /**
96
+ * Gets a single note by ID.
97
+ */
98
+ getNote(params) {
99
+ const { note_id } = params;
100
+ const row = this.repository.getNote(note_id);
101
+ if (row == null) {
102
+ return null;
103
+ }
104
+ const details = this.contentReader.readNoteDetails(row.dataFilePath);
105
+ return transformNote(row, details);
106
+ }
107
+ /**
108
+ * Searches notes by content (requires content reader).
109
+ */
110
+ searchNotes(params) {
111
+ const { query, limit } = params;
112
+ const queryLower = query.toLowerCase();
113
+ // Get all notes and filter by content (from content reader)
114
+ const rows = this.repository.listNotes(limit * 2, 0); // Fetch more to filter
115
+ const results = [];
116
+ for (const row of rows) {
117
+ if (results.length >= limit)
118
+ break;
119
+ const details = this.contentReader.readNoteDetails(row.dataFilePath);
120
+ const searchText = [details?.title ?? '', details?.body ?? '', details?.preview ?? '']
121
+ .join(' ')
122
+ .toLowerCase();
123
+ if (searchText.includes(queryLower)) {
124
+ results.push(transformNoteSummary(row, details));
125
+ }
126
+ }
127
+ return results;
128
+ }
129
+ }
130
+ /**
131
+ * Creates notes tools with the given repository.
132
+ */
133
+ export function createNotesTools(repository, contentReader = nullNoteContentReader) {
134
+ return new NotesTools(repository, contentReader);
135
+ }
136
+ //# sourceMappingURL=notes.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"notes.js","sourceRoot":"","sources":["../../src/tools/notes.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,194 @@
1
+ /**
2
+ * Copyright (c) 2026 JBC Tech Solutions, LLC
3
+ * Licensed under the MIT License. See LICENSE file in the project root.
4
+ */
5
+ /**
6
+ * OneDrive personal file MCP tools.
7
+ *
8
+ * Provides tools for managing OneDrive files and folders with two-phase
9
+ * approval for destructive upload and delete operations.
10
+ */
11
+ import { z } from 'zod';
12
+ import type { ApprovalTokenManager } from '../approval/index.js';
13
+ export declare const ListDriveItemsInput: z.ZodObject<{
14
+ folder_id: z.ZodOptional<z.ZodNumber>;
15
+ }, z.core.$strict>;
16
+ export declare const SearchDriveItemsInput: z.ZodObject<{
17
+ query: z.ZodString;
18
+ limit: z.ZodOptional<z.ZodNumber>;
19
+ }, z.core.$strict>;
20
+ export declare const GetDriveItemInput: z.ZodObject<{
21
+ item_id: z.ZodNumber;
22
+ }, z.core.$strict>;
23
+ export declare const DownloadFileInput: z.ZodObject<{
24
+ item_id: z.ZodNumber;
25
+ output_path: z.ZodString;
26
+ }, z.core.$strict>;
27
+ export declare const PrepareUploadFileInput: z.ZodObject<{
28
+ parent_path: z.ZodString;
29
+ file_name: z.ZodString;
30
+ local_file_path: z.ZodString;
31
+ }, z.core.$strict>;
32
+ export declare const ConfirmUploadFileInput: z.ZodObject<{
33
+ approval_token: z.ZodString;
34
+ }, z.core.$strict>;
35
+ export declare const ListRecentFilesInput: z.ZodObject<{}, z.core.$strict>;
36
+ export declare const ListSharedWithMeInput: z.ZodObject<{}, z.core.$strict>;
37
+ export declare const CreateSharingLinkInput: z.ZodObject<{
38
+ item_id: z.ZodNumber;
39
+ type: z.ZodEnum<{
40
+ view: "view";
41
+ edit: "edit";
42
+ }>;
43
+ scope: z.ZodEnum<{
44
+ anonymous: "anonymous";
45
+ organization: "organization";
46
+ }>;
47
+ }, z.core.$strict>;
48
+ export declare const PrepareDeleteDriveItemInput: z.ZodObject<{
49
+ item_id: z.ZodNumber;
50
+ }, z.core.$strict>;
51
+ export declare const ConfirmDeleteDriveItemInput: z.ZodObject<{
52
+ approval_token: z.ZodString;
53
+ }, z.core.$strict>;
54
+ export type ListDriveItemsParams = z.infer<typeof ListDriveItemsInput>;
55
+ export type SearchDriveItemsParams = z.infer<typeof SearchDriveItemsInput>;
56
+ export type GetDriveItemParams = z.infer<typeof GetDriveItemInput>;
57
+ export type DownloadFileParams = z.infer<typeof DownloadFileInput>;
58
+ export type PrepareUploadFileParams = z.infer<typeof PrepareUploadFileInput>;
59
+ export type ConfirmUploadFileParams = z.infer<typeof ConfirmUploadFileInput>;
60
+ export type ListRecentFilesParams = z.infer<typeof ListRecentFilesInput>;
61
+ export type ListSharedWithMeParams = z.infer<typeof ListSharedWithMeInput>;
62
+ export type CreateSharingLinkParams = z.infer<typeof CreateSharingLinkInput>;
63
+ export type PrepareDeleteDriveItemParams = z.infer<typeof PrepareDeleteDriveItemInput>;
64
+ export type ConfirmDeleteDriveItemParams = z.infer<typeof ConfirmDeleteDriveItemInput>;
65
+ export interface IOneDriveRepository {
66
+ listDriveItemsAsync(folderId?: number): Promise<Array<{
67
+ id: number;
68
+ name: string;
69
+ size: number;
70
+ lastModified: string;
71
+ isFolder: boolean;
72
+ webUrl: string;
73
+ }>>;
74
+ searchDriveItemsAsync(query: string, limit?: number): Promise<Array<{
75
+ id: number;
76
+ name: string;
77
+ size: number;
78
+ lastModified: string;
79
+ isFolder: boolean;
80
+ webUrl: string;
81
+ }>>;
82
+ getDriveItemAsync(itemId: number): Promise<{
83
+ id: number;
84
+ name: string;
85
+ size: number;
86
+ lastModified: string;
87
+ isFolder: boolean;
88
+ webUrl: string;
89
+ mimeType: string;
90
+ createdBy: string;
91
+ }>;
92
+ downloadFileAsync(itemId: number, outputPath: string): Promise<{
93
+ savedPath: string;
94
+ size: number;
95
+ }>;
96
+ uploadFileAsync(parentPath: string, fileName: string, localFilePath: string): Promise<number>;
97
+ listRecentFilesAsync(): Promise<Array<{
98
+ id: number;
99
+ name: string;
100
+ size: number;
101
+ lastModified: string;
102
+ isFolder: boolean;
103
+ webUrl: string;
104
+ }>>;
105
+ listSharedWithMeAsync(): Promise<Array<{
106
+ id: number;
107
+ name: string;
108
+ size: number;
109
+ lastModified: string;
110
+ isFolder: boolean;
111
+ webUrl: string;
112
+ }>>;
113
+ createSharingLinkAsync(itemId: number, type: string, scope: string): Promise<{
114
+ webUrl: string;
115
+ type: string;
116
+ scope: string;
117
+ }>;
118
+ deleteDriveItemAsync(itemId: number): Promise<void>;
119
+ }
120
+ /**
121
+ * OneDrive personal file tools with two-phase approval for upload and delete.
122
+ */
123
+ export declare class OneDriveTools {
124
+ private readonly repo;
125
+ private readonly tokenManager;
126
+ constructor(repo: IOneDriveRepository, tokenManager: ApprovalTokenManager);
127
+ listDriveItems(params: ListDriveItemsParams): Promise<{
128
+ content: Array<{
129
+ type: 'text';
130
+ text: string;
131
+ }>;
132
+ }>;
133
+ searchDriveItems(params: SearchDriveItemsParams): Promise<{
134
+ content: Array<{
135
+ type: 'text';
136
+ text: string;
137
+ }>;
138
+ }>;
139
+ getDriveItem(params: GetDriveItemParams): Promise<{
140
+ content: Array<{
141
+ type: 'text';
142
+ text: string;
143
+ }>;
144
+ }>;
145
+ downloadFile(params: DownloadFileParams): Promise<{
146
+ content: Array<{
147
+ type: 'text';
148
+ text: string;
149
+ }>;
150
+ }>;
151
+ prepareUploadFile(params: PrepareUploadFileParams): {
152
+ content: Array<{
153
+ type: 'text';
154
+ text: string;
155
+ }>;
156
+ };
157
+ confirmUploadFile(params: ConfirmUploadFileParams): Promise<{
158
+ content: Array<{
159
+ type: 'text';
160
+ text: string;
161
+ }>;
162
+ }>;
163
+ listRecentFiles(): Promise<{
164
+ content: Array<{
165
+ type: 'text';
166
+ text: string;
167
+ }>;
168
+ }>;
169
+ listSharedWithMe(): Promise<{
170
+ content: Array<{
171
+ type: 'text';
172
+ text: string;
173
+ }>;
174
+ }>;
175
+ createSharingLink(params: CreateSharingLinkParams): Promise<{
176
+ content: Array<{
177
+ type: 'text';
178
+ text: string;
179
+ }>;
180
+ }>;
181
+ prepareDeleteDriveItem(params: PrepareDeleteDriveItemParams): {
182
+ content: Array<{
183
+ type: 'text';
184
+ text: string;
185
+ }>;
186
+ };
187
+ confirmDeleteDriveItem(params: ConfirmDeleteDriveItemParams): Promise<{
188
+ content: Array<{
189
+ type: 'text';
190
+ text: string;
191
+ }>;
192
+ }>;
193
+ }
194
+ //# sourceMappingURL=onedrive.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"onedrive.d.ts","sourceRoot":"","sources":["../../src/tools/onedrive.ts"],"names":[],"mappings":"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"}