@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,257 @@
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
+ // =============================================================================
13
+ // Input Schemas
14
+ // =============================================================================
15
+ export const ListDriveItemsInput = z.strictObject({
16
+ folder_id: z.number().int().positive().optional().describe('Folder ID from a previous list_drive_items call. Omit to list root.'),
17
+ });
18
+ export const SearchDriveItemsInput = z.strictObject({
19
+ query: z.string().min(1).describe('Search query string'),
20
+ limit: z.number().int().positive().optional().describe('Maximum results to return (default 25)'),
21
+ });
22
+ export const GetDriveItemInput = z.strictObject({
23
+ item_id: z.number().int().positive().describe('Drive item ID from list_drive_items or search_drive_items'),
24
+ });
25
+ export const DownloadFileInput = z.strictObject({
26
+ item_id: z.number().int().positive().describe('Drive item ID from list_drive_items or search_drive_items'),
27
+ output_path: z.string().min(1).describe('Absolute file path where the file should be saved'),
28
+ });
29
+ export const PrepareUploadFileInput = z.strictObject({
30
+ parent_path: z.string().min(1).describe('Parent folder path in OneDrive (e.g., "Documents/Reports")'),
31
+ file_name: z.string().min(1).describe('Name for the file in OneDrive'),
32
+ local_file_path: z.string().min(1).describe('Absolute path to the local file to upload'),
33
+ });
34
+ export const ConfirmUploadFileInput = z.strictObject({
35
+ approval_token: z.string().describe('Approval token from prepare_upload_file'),
36
+ });
37
+ export const ListRecentFilesInput = z.strictObject({});
38
+ export const ListSharedWithMeInput = z.strictObject({});
39
+ export const CreateSharingLinkInput = z.strictObject({
40
+ item_id: z.number().int().positive().describe('Drive item ID from list_drive_items or search_drive_items'),
41
+ type: z.enum(['view', 'edit']).describe('Permission type: view (read-only) or edit (read-write)'),
42
+ scope: z.enum(['anonymous', 'organization']).describe('Link scope: anonymous (anyone with link) or organization (org members only)'),
43
+ });
44
+ export const PrepareDeleteDriveItemInput = z.strictObject({
45
+ item_id: z.number().int().positive().describe('Drive item ID from list_drive_items or search_drive_items'),
46
+ });
47
+ export const ConfirmDeleteDriveItemInput = z.strictObject({
48
+ approval_token: z.string().describe('Approval token from prepare_delete_drive_item'),
49
+ });
50
+ // =============================================================================
51
+ // OneDrive Tools
52
+ // =============================================================================
53
+ /**
54
+ * OneDrive personal file tools with two-phase approval for upload and delete.
55
+ */
56
+ export class OneDriveTools {
57
+ repo;
58
+ tokenManager;
59
+ constructor(repo, tokenManager) {
60
+ this.repo = repo;
61
+ this.tokenManager = tokenManager;
62
+ }
63
+ async listDriveItems(params) {
64
+ const items = await this.repo.listDriveItemsAsync(params.folder_id);
65
+ return {
66
+ content: [{
67
+ type: 'text',
68
+ text: JSON.stringify({ items }, null, 2),
69
+ }],
70
+ };
71
+ }
72
+ async searchDriveItems(params) {
73
+ const items = await this.repo.searchDriveItemsAsync(params.query, params.limit);
74
+ return {
75
+ content: [{
76
+ type: 'text',
77
+ text: JSON.stringify({ items }, null, 2),
78
+ }],
79
+ };
80
+ }
81
+ async getDriveItem(params) {
82
+ const item = await this.repo.getDriveItemAsync(params.item_id);
83
+ return {
84
+ content: [{
85
+ type: 'text',
86
+ text: JSON.stringify({ item }, null, 2),
87
+ }],
88
+ };
89
+ }
90
+ async downloadFile(params) {
91
+ const result = await this.repo.downloadFileAsync(params.item_id, params.output_path);
92
+ return {
93
+ content: [{
94
+ type: 'text',
95
+ text: JSON.stringify({ success: true, ...result }, null, 2),
96
+ }],
97
+ };
98
+ }
99
+ prepareUploadFile(params) {
100
+ const token = this.tokenManager.generateToken({
101
+ operation: 'upload_file',
102
+ targetType: 'drive_item',
103
+ targetId: 0,
104
+ targetHash: `${params.parent_path}/${params.file_name}`,
105
+ metadata: {
106
+ parent_path: params.parent_path,
107
+ file_name: params.file_name,
108
+ local_file_path: params.local_file_path,
109
+ },
110
+ });
111
+ return {
112
+ content: [{
113
+ type: 'text',
114
+ text: JSON.stringify({
115
+ approval_token: token.tokenId,
116
+ expires_at: new Date(token.expiresAt).toISOString(),
117
+ parent_path: params.parent_path,
118
+ file_name: params.file_name,
119
+ local_file_path: params.local_file_path,
120
+ action: `To confirm uploading "${params.file_name}" to "${params.parent_path}", call confirm_upload_file with the approval_token.`,
121
+ }, null, 2),
122
+ }],
123
+ };
124
+ }
125
+ async confirmUploadFile(params) {
126
+ const token = this.tokenManager.lookupToken(params.approval_token);
127
+ if (token == null) {
128
+ return {
129
+ content: [{
130
+ type: 'text',
131
+ text: JSON.stringify({
132
+ success: false,
133
+ error: 'Token not found or already used',
134
+ }, null, 2),
135
+ }],
136
+ };
137
+ }
138
+ const result = this.tokenManager.consumeToken(params.approval_token, 'upload_file', token.targetId);
139
+ if (!result.valid) {
140
+ const errorMessages = {
141
+ NOT_FOUND: 'Token not found or already used',
142
+ EXPIRED: 'Token has expired. Please call prepare_upload_file again.',
143
+ OPERATION_MISMATCH: 'Token was not generated for upload_file',
144
+ TARGET_MISMATCH: 'Token was generated for a different upload',
145
+ ALREADY_CONSUMED: 'Token has already been used',
146
+ };
147
+ return {
148
+ content: [{
149
+ type: 'text',
150
+ text: JSON.stringify({
151
+ success: false,
152
+ error: errorMessages[result.error ?? ''] ?? 'Invalid token',
153
+ }, null, 2),
154
+ }],
155
+ };
156
+ }
157
+ const metadata = result.token.metadata;
158
+ const itemId = await this.repo.uploadFileAsync(metadata.parent_path, metadata.file_name, metadata.local_file_path);
159
+ return {
160
+ content: [{
161
+ type: 'text',
162
+ text: JSON.stringify({
163
+ success: true,
164
+ item_id: itemId,
165
+ message: `File "${metadata.file_name}" uploaded to "${metadata.parent_path}"`,
166
+ }, null, 2),
167
+ }],
168
+ };
169
+ }
170
+ async listRecentFiles() {
171
+ const items = await this.repo.listRecentFilesAsync();
172
+ return {
173
+ content: [{
174
+ type: 'text',
175
+ text: JSON.stringify({ items }, null, 2),
176
+ }],
177
+ };
178
+ }
179
+ async listSharedWithMe() {
180
+ const items = await this.repo.listSharedWithMeAsync();
181
+ return {
182
+ content: [{
183
+ type: 'text',
184
+ text: JSON.stringify({ items }, null, 2),
185
+ }],
186
+ };
187
+ }
188
+ async createSharingLink(params) {
189
+ const link = await this.repo.createSharingLinkAsync(params.item_id, params.type, params.scope);
190
+ return {
191
+ content: [{
192
+ type: 'text',
193
+ text: JSON.stringify({ success: true, link }, null, 2),
194
+ }],
195
+ };
196
+ }
197
+ prepareDeleteDriveItem(params) {
198
+ const token = this.tokenManager.generateToken({
199
+ operation: 'delete_drive_item',
200
+ targetType: 'drive_item',
201
+ targetId: params.item_id,
202
+ targetHash: String(params.item_id),
203
+ });
204
+ return {
205
+ content: [{
206
+ type: 'text',
207
+ text: JSON.stringify({
208
+ approval_token: token.tokenId,
209
+ expires_at: new Date(token.expiresAt).toISOString(),
210
+ item_id: params.item_id,
211
+ action: `To confirm deleting drive item ${params.item_id}, call confirm_delete_drive_item with the approval_token.`,
212
+ }, null, 2),
213
+ }],
214
+ };
215
+ }
216
+ async confirmDeleteDriveItem(params) {
217
+ const token = this.tokenManager.lookupToken(params.approval_token);
218
+ if (token == null) {
219
+ return {
220
+ content: [{
221
+ type: 'text',
222
+ text: JSON.stringify({
223
+ success: false,
224
+ error: 'Token not found or already used',
225
+ }, null, 2),
226
+ }],
227
+ };
228
+ }
229
+ const result = this.tokenManager.consumeToken(params.approval_token, 'delete_drive_item', token.targetId);
230
+ if (!result.valid) {
231
+ const errorMessages = {
232
+ NOT_FOUND: 'Token not found or already used',
233
+ EXPIRED: 'Token has expired. Please call prepare_delete_drive_item again.',
234
+ OPERATION_MISMATCH: 'Token was not generated for delete_drive_item',
235
+ TARGET_MISMATCH: 'Token was generated for a different drive item',
236
+ ALREADY_CONSUMED: 'Token has already been used',
237
+ };
238
+ return {
239
+ content: [{
240
+ type: 'text',
241
+ text: JSON.stringify({
242
+ success: false,
243
+ error: errorMessages[result.error ?? ''] ?? 'Invalid token',
244
+ }, null, 2),
245
+ }],
246
+ };
247
+ }
248
+ await this.repo.deleteDriveItemAsync(result.token.targetId);
249
+ return {
250
+ content: [{
251
+ type: 'text',
252
+ text: JSON.stringify({ success: true, message: 'Drive item deleted' }, null, 2),
253
+ }],
254
+ };
255
+ }
256
+ }
257
+ //# sourceMappingURL=onedrive.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"onedrive.js","sourceRoot":"","sources":["../../src/tools/onedrive.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH;;;;;GAKG;AAEH,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAGxB,gFAAgF;AAChF,gBAAgB;AAChB,gFAAgF;AAEhF,MAAM,CAAC,MAAM,mBAAmB,GAAG,CAAC,CAAC,YAAY,CAAC;IAChD,SAAS,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,qEAAqE,CAAC;CAClI,CAAC,CAAC;AAEH,MAAM,CAAC,MAAM,qBAAqB,GAAG,CAAC,CAAC,YAAY,CAAC;IAClD,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,qBAAqB,CAAC;IACxD,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,wCAAwC,CAAC;CACjG,CAAC,CAAC;AAEH,MAAM,CAAC,MAAM,iBAAiB,GAAG,CAAC,CAAC,YAAY,CAAC;IAC9C,OAAO,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,2DAA2D,CAAC;CAC3G,CAAC,CAAC;AAEH,MAAM,CAAC,MAAM,iBAAiB,GAAG,CAAC,CAAC,YAAY,CAAC;IAC9C,OAAO,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,2DAA2D,CAAC;IAC1G,WAAW,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,mDAAmD,CAAC;CAC7F,CAAC,CAAC;AAEH,MAAM,CAAC,MAAM,sBAAsB,GAAG,CAAC,CAAC,YAAY,CAAC;IACnD,WAAW,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,4DAA4D,CAAC;IACrG,SAAS,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,+BAA+B,CAAC;IACtE,eAAe,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,2CAA2C,CAAC;CACzF,CAAC,CAAC;AAEH,MAAM,CAAC,MAAM,sBAAsB,GAAG,CAAC,CAAC,YAAY,CAAC;IACnD,cAAc,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,yCAAyC,CAAC;CAC/E,CAAC,CAAC;AAEH,MAAM,CAAC,MAAM,oBAAoB,GAAG,CAAC,CAAC,YAAY,CAAC,EAAE,CAAC,CAAC;AAEvD,MAAM,CAAC,MAAM,qBAAqB,GAAG,CAAC,CAAC,YAAY,CAAC,EAAE,CAAC,CAAC;AAExD,MAAM,CAAC,MAAM,sBAAsB,GAAG,CAAC,CAAC,YAAY,CAAC;IACnD,OAAO,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,2DAA2D,CAAC;IAC1G,IAAI,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CAAC,QAAQ,CAAC,wDAAwD,CAAC;IACjG,KAAK,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,WAAW,EAAE,cAAc,CAAC,CAAC,CAAC,QAAQ,CAAC,6EAA6E,CAAC;CACrI,CAAC,CAAC;AAEH,MAAM,CAAC,MAAM,2BAA2B,GAAG,CAAC,CAAC,YAAY,CAAC;IACxD,OAAO,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,2DAA2D,CAAC;CAC3G,CAAC,CAAC;AAEH,MAAM,CAAC,MAAM,2BAA2B,GAAG,CAAC,CAAC,YAAY,CAAC;IACxD,cAAc,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,+CAA+C,CAAC;CACrF,CAAC,CAAC;AAmDH,gFAAgF;AAChF,iBAAiB;AACjB,gFAAgF;AAEhF;;GAEG;AACH,MAAM,OAAO,aAAa;IAEL;IACA;IAFnB,YACmB,IAAyB,EACzB,YAAkC;QADlC,SAAI,GAAJ,IAAI,CAAqB;QACzB,iBAAY,GAAZ,YAAY,CAAsB;IAClD,CAAC;IAEJ,KAAK,CAAC,cAAc,CAAC,MAA4B;QAG/C,MAAM,KAAK,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC,mBAAmB,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC;QACpE,OAAO;YACL,OAAO,EAAE,CAAC;oBACR,IAAI,EAAE,MAAe;oBACrB,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,EAAE,KAAK,EAAE,EAAE,IAAI,EAAE,CAAC,CAAC;iBACzC,CAAC;SACH,CAAC;IACJ,CAAC;IAED,KAAK,CAAC,gBAAgB,CAAC,MAA8B;QAGnD,MAAM,KAAK,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC,qBAAqB,CAAC,MAAM,CAAC,KAAK,EAAE,MAAM,CAAC,KAAK,CAAC,CAAC;QAChF,OAAO;YACL,OAAO,EAAE,CAAC;oBACR,IAAI,EAAE,MAAe;oBACrB,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,EAAE,KAAK,EAAE,EAAE,IAAI,EAAE,CAAC,CAAC;iBACzC,CAAC;SACH,CAAC;IACJ,CAAC;IAED,KAAK,CAAC,YAAY,CAAC,MAA0B;QAG3C,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC,iBAAiB,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;QAC/D,OAAO;YACL,OAAO,EAAE,CAAC;oBACR,IAAI,EAAE,MAAe;oBACrB,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,EAAE,IAAI,EAAE,EAAE,IAAI,EAAE,CAAC,CAAC;iBACxC,CAAC;SACH,CAAC;IACJ,CAAC;IAED,KAAK,CAAC,YAAY,CAAC,MAA0B;QAG3C,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC,iBAAiB,CAAC,MAAM,CAAC,OAAO,EAAE,MAAM,CAAC,WAAW,CAAC,CAAC;QACrF,OAAO;YACL,OAAO,EAAE,CAAC;oBACR,IAAI,EAAE,MAAe;oBACrB,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,EAAE,OAAO,EAAE,IAAI,EAAE,GAAG,MAAM,EAAE,EAAE,IAAI,EAAE,CAAC,CAAC;iBAC5D,CAAC;SACH,CAAC;IACJ,CAAC;IAED,iBAAiB,CAAC,MAA+B;QAG/C,MAAM,KAAK,GAAG,IAAI,CAAC,YAAY,CAAC,aAAa,CAAC;YAC5C,SAAS,EAAE,aAAa;YACxB,UAAU,EAAE,YAAY;YACxB,QAAQ,EAAE,CAAC;YACX,UAAU,EAAE,GAAG,MAAM,CAAC,WAAW,IAAI,MAAM,CAAC,SAAS,EAAE;YACvD,QAAQ,EAAE;gBACR,WAAW,EAAE,MAAM,CAAC,WAAW;gBAC/B,SAAS,EAAE,MAAM,CAAC,SAAS;gBAC3B,eAAe,EAAE,MAAM,CAAC,eAAe;aACxC;SACF,CAAC,CAAC;QAEH,OAAO;YACL,OAAO,EAAE,CAAC;oBACR,IAAI,EAAE,MAAe;oBACrB,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC;wBACnB,cAAc,EAAE,KAAK,CAAC,OAAO;wBAC7B,UAAU,EAAE,IAAI,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC,WAAW,EAAE;wBACnD,WAAW,EAAE,MAAM,CAAC,WAAW;wBAC/B,SAAS,EAAE,MAAM,CAAC,SAAS;wBAC3B,eAAe,EAAE,MAAM,CAAC,eAAe;wBACvC,MAAM,EAAE,yBAAyB,MAAM,CAAC,SAAS,SAAS,MAAM,CAAC,WAAW,sDAAsD;qBACnI,EAAE,IAAI,EAAE,CAAC,CAAC;iBACZ,CAAC;SACH,CAAC;IACJ,CAAC;IAED,KAAK,CAAC,iBAAiB,CAAC,MAA+B;QAGrD,MAAM,KAAK,GAAG,IAAI,CAAC,YAAY,CAAC,WAAW,CAAC,MAAM,CAAC,cAAc,CAAC,CAAC;QACnE,IAAI,KAAK,IAAI,IAAI,EAAE,CAAC;YAClB,OAAO;gBACL,OAAO,EAAE,CAAC;wBACR,IAAI,EAAE,MAAe;wBACrB,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC;4BACnB,OAAO,EAAE,KAAK;4BACd,KAAK,EAAE,iCAAiC;yBACzC,EAAE,IAAI,EAAE,CAAC,CAAC;qBACZ,CAAC;aACH,CAAC;QACJ,CAAC;QAED,MAAM,MAAM,GAAG,IAAI,CAAC,YAAY,CAAC,YAAY,CAAC,MAAM,CAAC,cAAc,EAAE,aAAa,EAAE,KAAK,CAAC,QAAQ,CAAC,CAAC;QACpG,IAAI,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC;YAClB,MAAM,aAAa,GAA2B;gBAC5C,SAAS,EAAE,iCAAiC;gBAC5C,OAAO,EAAE,2DAA2D;gBACpE,kBAAkB,EAAE,yCAAyC;gBAC7D,eAAe,EAAE,4CAA4C;gBAC7D,gBAAgB,EAAE,6BAA6B;aAChD,CAAC;YACF,OAAO;gBACL,OAAO,EAAE,CAAC;wBACR,IAAI,EAAE,MAAe;wBACrB,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC;4BACnB,OAAO,EAAE,KAAK;4BACd,KAAK,EAAE,aAAa,CAAC,MAAM,CAAC,KAAK,IAAI,EAAE,CAAC,IAAI,eAAe;yBAC5D,EAAE,IAAI,EAAE,CAAC,CAAC;qBACZ,CAAC;aACH,CAAC;QACJ,CAAC;QAED,MAAM,QAAQ,GAAG,MAAM,CAAC,KAAM,CAAC,QAA+E,CAAC;QAC/G,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC,eAAe,CAAC,QAAQ,CAAC,WAAW,EAAE,QAAQ,CAAC,SAAS,EAAE,QAAQ,CAAC,eAAe,CAAC,CAAC;QACnH,OAAO;YACL,OAAO,EAAE,CAAC;oBACR,IAAI,EAAE,MAAe;oBACrB,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC;wBACnB,OAAO,EAAE,IAAI;wBACb,OAAO,EAAE,MAAM;wBACf,OAAO,EAAE,SAAS,QAAQ,CAAC,SAAS,kBAAkB,QAAQ,CAAC,WAAW,GAAG;qBAC9E,EAAE,IAAI,EAAE,CAAC,CAAC;iBACZ,CAAC;SACH,CAAC;IACJ,CAAC;IAED,KAAK,CAAC,eAAe;QAGnB,MAAM,KAAK,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC,oBAAoB,EAAE,CAAC;QACrD,OAAO;YACL,OAAO,EAAE,CAAC;oBACR,IAAI,EAAE,MAAe;oBACrB,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,EAAE,KAAK,EAAE,EAAE,IAAI,EAAE,CAAC,CAAC;iBACzC,CAAC;SACH,CAAC;IACJ,CAAC;IAED,KAAK,CAAC,gBAAgB;QAGpB,MAAM,KAAK,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC,qBAAqB,EAAE,CAAC;QACtD,OAAO;YACL,OAAO,EAAE,CAAC;oBACR,IAAI,EAAE,MAAe;oBACrB,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,EAAE,KAAK,EAAE,EAAE,IAAI,EAAE,CAAC,CAAC;iBACzC,CAAC;SACH,CAAC;IACJ,CAAC;IAED,KAAK,CAAC,iBAAiB,CAAC,MAA+B;QAGrD,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC,sBAAsB,CAAC,MAAM,CAAC,OAAO,EAAE,MAAM,CAAC,IAAI,EAAE,MAAM,CAAC,KAAK,CAAC,CAAC;QAC/F,OAAO;YACL,OAAO,EAAE,CAAC;oBACR,IAAI,EAAE,MAAe;oBACrB,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,EAAE,OAAO,EAAE,IAAI,EAAE,IAAI,EAAE,EAAE,IAAI,EAAE,CAAC,CAAC;iBACvD,CAAC;SACH,CAAC;IACJ,CAAC;IAED,sBAAsB,CAAC,MAAoC;QAGzD,MAAM,KAAK,GAAG,IAAI,CAAC,YAAY,CAAC,aAAa,CAAC;YAC5C,SAAS,EAAE,mBAAmB;YAC9B,UAAU,EAAE,YAAY;YACxB,QAAQ,EAAE,MAAM,CAAC,OAAO;YACxB,UAAU,EAAE,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC;SACnC,CAAC,CAAC;QAEH,OAAO;YACL,OAAO,EAAE,CAAC;oBACR,IAAI,EAAE,MAAe;oBACrB,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC;wBACnB,cAAc,EAAE,KAAK,CAAC,OAAO;wBAC7B,UAAU,EAAE,IAAI,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC,WAAW,EAAE;wBACnD,OAAO,EAAE,MAAM,CAAC,OAAO;wBACvB,MAAM,EAAE,kCAAkC,MAAM,CAAC,OAAO,2DAA2D;qBACpH,EAAE,IAAI,EAAE,CAAC,CAAC;iBACZ,CAAC;SACH,CAAC;IACJ,CAAC;IAED,KAAK,CAAC,sBAAsB,CAAC,MAAoC;QAG/D,MAAM,KAAK,GAAG,IAAI,CAAC,YAAY,CAAC,WAAW,CAAC,MAAM,CAAC,cAAc,CAAC,CAAC;QACnE,IAAI,KAAK,IAAI,IAAI,EAAE,CAAC;YAClB,OAAO;gBACL,OAAO,EAAE,CAAC;wBACR,IAAI,EAAE,MAAe;wBACrB,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC;4BACnB,OAAO,EAAE,KAAK;4BACd,KAAK,EAAE,iCAAiC;yBACzC,EAAE,IAAI,EAAE,CAAC,CAAC;qBACZ,CAAC;aACH,CAAC;QACJ,CAAC;QAED,MAAM,MAAM,GAAG,IAAI,CAAC,YAAY,CAAC,YAAY,CAAC,MAAM,CAAC,cAAc,EAAE,mBAAmB,EAAE,KAAK,CAAC,QAAQ,CAAC,CAAC;QAC1G,IAAI,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC;YAClB,MAAM,aAAa,GAA2B;gBAC5C,SAAS,EAAE,iCAAiC;gBAC5C,OAAO,EAAE,iEAAiE;gBAC1E,kBAAkB,EAAE,+CAA+C;gBACnE,eAAe,EAAE,gDAAgD;gBACjE,gBAAgB,EAAE,6BAA6B;aAChD,CAAC;YACF,OAAO;gBACL,OAAO,EAAE,CAAC;wBACR,IAAI,EAAE,MAAe;wBACrB,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC;4BACnB,OAAO,EAAE,KAAK;4BACd,KAAK,EAAE,aAAa,CAAC,MAAM,CAAC,KAAK,IAAI,EAAE,CAAC,IAAI,eAAe;yBAC5D,EAAE,IAAI,EAAE,CAAC,CAAC;qBACZ,CAAC;aACH,CAAC;QACJ,CAAC;QAED,MAAM,IAAI,CAAC,IAAI,CAAC,oBAAoB,CAAC,MAAM,CAAC,KAAM,CAAC,QAAQ,CAAC,CAAC;QAC7D,OAAO;YACL,OAAO,EAAE,CAAC;oBACR,IAAI,EAAE,MAAe;oBACrB,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,EAAE,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,oBAAoB,EAAE,EAAE,IAAI,EAAE,CAAC,CAAC;iBAChF,CAAC;SACH,CAAC;IACJ,CAAC;CACF"}
@@ -0,0 +1,129 @@
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 People API MCP tools.
7
+ *
8
+ * Provides tools for discovering relevant people, searching by name/email,
9
+ * viewing org chart (manager/direct reports), user profiles, photos, and presence.
10
+ */
11
+ import { z } from 'zod';
12
+ export declare const ListRelevantPeopleInput: z.ZodObject<{
13
+ limit: z.ZodOptional<z.ZodNumber>;
14
+ }, z.core.$strict>;
15
+ export declare const SearchPeopleInput: z.ZodObject<{
16
+ query: z.ZodString;
17
+ limit: z.ZodOptional<z.ZodNumber>;
18
+ }, z.core.$strict>;
19
+ export declare const GetManagerInput: z.ZodObject<{}, z.core.$strict>;
20
+ export declare const GetDirectReportsInput: z.ZodObject<{}, z.core.$strict>;
21
+ export declare const GetUserProfileInput: z.ZodObject<{
22
+ identifier: z.ZodString;
23
+ }, z.core.$strict>;
24
+ export declare const GetUserPhotoInput: z.ZodObject<{
25
+ identifier: z.ZodString;
26
+ save_path: z.ZodOptional<z.ZodString>;
27
+ }, z.core.$strict>;
28
+ export declare const GetUserPresenceInput: z.ZodObject<{
29
+ identifier: z.ZodString;
30
+ }, z.core.$strict>;
31
+ export declare const GetUsersPresenceInput: z.ZodObject<{
32
+ user_ids: z.ZodArray<z.ZodString>;
33
+ }, z.core.$strict>;
34
+ export type ListRelevantPeopleParams = z.infer<typeof ListRelevantPeopleInput>;
35
+ export type SearchPeopleParams = z.infer<typeof SearchPeopleInput>;
36
+ export type GetManagerParams = z.infer<typeof GetManagerInput>;
37
+ export type GetDirectReportsParams = z.infer<typeof GetDirectReportsInput>;
38
+ export type GetUserProfileParams = z.infer<typeof GetUserProfileInput>;
39
+ export type GetUserPhotoParams = z.infer<typeof GetUserPhotoInput>;
40
+ export type GetUserPresenceParams = z.infer<typeof GetUserPresenceInput>;
41
+ export type GetUsersPresenceParams = z.infer<typeof GetUsersPresenceInput>;
42
+ export interface IPeopleClient {
43
+ listRelevantPeople(top?: number): Promise<Array<{
44
+ displayName?: string | null;
45
+ givenName?: string | null;
46
+ surname?: string | null;
47
+ scoredEmailAddresses?: Array<{
48
+ address?: string | null;
49
+ }> | null;
50
+ jobTitle?: string | null;
51
+ department?: string | null;
52
+ officeLocation?: string | null;
53
+ }>>;
54
+ searchPeople(query: string, top?: number): Promise<Array<{
55
+ displayName?: string | null;
56
+ givenName?: string | null;
57
+ surname?: string | null;
58
+ scoredEmailAddresses?: Array<{
59
+ address?: string | null;
60
+ }> | null;
61
+ jobTitle?: string | null;
62
+ department?: string | null;
63
+ officeLocation?: string | null;
64
+ }>>;
65
+ getManager(): Promise<{
66
+ id?: string | null;
67
+ displayName?: string | null;
68
+ mail?: string | null;
69
+ jobTitle?: string | null;
70
+ department?: string | null;
71
+ officeLocation?: string | null;
72
+ }>;
73
+ getDirectReports(): Promise<Array<{
74
+ id?: string | null;
75
+ displayName?: string | null;
76
+ mail?: string | null;
77
+ jobTitle?: string | null;
78
+ department?: string | null;
79
+ officeLocation?: string | null;
80
+ }>>;
81
+ getUserProfile(identifier: string): Promise<{
82
+ id?: string | null;
83
+ displayName?: string | null;
84
+ mail?: string | null;
85
+ jobTitle?: string | null;
86
+ department?: string | null;
87
+ officeLocation?: string | null;
88
+ mobilePhone?: string | null;
89
+ businessPhones?: string[] | null;
90
+ }>;
91
+ getUserPhoto(identifier: string): Promise<ArrayBuffer>;
92
+ getUserPresence(identifier: string): Promise<{
93
+ availability?: string | null;
94
+ activity?: string | null;
95
+ statusMessage?: {
96
+ message?: {
97
+ content?: string | null;
98
+ } | null;
99
+ } | null;
100
+ }>;
101
+ getUsersPresence(userIds: string[]): Promise<Array<{
102
+ id?: string | null;
103
+ availability?: string | null;
104
+ activity?: string | null;
105
+ }>>;
106
+ }
107
+ type ToolResult = {
108
+ content: Array<{
109
+ type: 'text';
110
+ text: string;
111
+ }>;
112
+ };
113
+ /**
114
+ * Microsoft People API tools for discovering and querying user information.
115
+ */
116
+ export declare class PeopleTools {
117
+ private readonly client;
118
+ constructor(client: IPeopleClient);
119
+ listRelevantPeople(params: ListRelevantPeopleParams): Promise<ToolResult>;
120
+ searchPeople(params: SearchPeopleParams): Promise<ToolResult>;
121
+ getManager(): Promise<ToolResult>;
122
+ getDirectReports(): Promise<ToolResult>;
123
+ getUserProfile(params: GetUserProfileParams): Promise<ToolResult>;
124
+ getUserPhoto(params: GetUserPhotoParams): Promise<ToolResult>;
125
+ getUserPresence(params: GetUserPresenceParams): Promise<ToolResult>;
126
+ getUsersPresence(params: GetUsersPresenceParams): Promise<ToolResult>;
127
+ }
128
+ export {};
129
+ //# sourceMappingURL=people.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"people.d.ts","sourceRoot":"","sources":["../../src/tools/people.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,195 @@
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 People API MCP tools.
7
+ *
8
+ * Provides tools for discovering relevant people, searching by name/email,
9
+ * viewing org chart (manager/direct reports), user profiles, photos, and presence.
10
+ */
11
+ import { z } from 'zod';
12
+ import * as fs from 'fs';
13
+ import * as path from 'path';
14
+ import * as os from 'os';
15
+ // =============================================================================
16
+ // Input Schemas
17
+ // =============================================================================
18
+ export const ListRelevantPeopleInput = z.strictObject({
19
+ limit: z.number().int().min(1).max(100).optional().describe('Max people to return (default 25, max 100)'),
20
+ });
21
+ export const SearchPeopleInput = z.strictObject({
22
+ query: z.string().min(1).describe('Search query (name or email)'),
23
+ limit: z.number().int().min(1).max(100).optional().describe('Max results to return (default 25, max 100)'),
24
+ });
25
+ export const GetManagerInput = z.strictObject({});
26
+ export const GetDirectReportsInput = z.strictObject({});
27
+ export const GetUserProfileInput = z.strictObject({
28
+ identifier: z.string().min(1).describe('User email address or user ID'),
29
+ });
30
+ export const GetUserPhotoInput = z.strictObject({
31
+ identifier: z.string().min(1).describe('User email address or user ID'),
32
+ save_path: z.string().optional().describe('File path to save the photo (defaults to ~/Downloads/{identifier}_photo.jpg)'),
33
+ });
34
+ export const GetUserPresenceInput = z.strictObject({
35
+ identifier: z.string().min(1).describe('User email address or user ID'),
36
+ });
37
+ export const GetUsersPresenceInput = z.strictObject({
38
+ user_ids: z.array(z.string().min(1)).min(1).max(650).describe('Array of user IDs (max 650)'),
39
+ });
40
+ // =============================================================================
41
+ // Helper Functions
42
+ // =============================================================================
43
+ function mapPerson(person) {
44
+ return {
45
+ displayName: person.displayName ?? null,
46
+ givenName: person.givenName ?? null,
47
+ surname: person.surname ?? null,
48
+ emailAddresses: (person.scoredEmailAddresses ?? [])
49
+ .map((e) => e.address)
50
+ .filter((a) => a != null),
51
+ jobTitle: person.jobTitle ?? null,
52
+ department: person.department ?? null,
53
+ officeLocation: person.officeLocation ?? null,
54
+ };
55
+ }
56
+ function mapDirectoryObject(obj) {
57
+ return {
58
+ id: obj.id ?? null,
59
+ displayName: obj.displayName ?? null,
60
+ mail: obj.mail ?? null,
61
+ jobTitle: obj.jobTitle ?? null,
62
+ department: obj.department ?? null,
63
+ officeLocation: obj.officeLocation ?? null,
64
+ };
65
+ }
66
+ // =============================================================================
67
+ // People Tools
68
+ // =============================================================================
69
+ /**
70
+ * Microsoft People API tools for discovering and querying user information.
71
+ */
72
+ export class PeopleTools {
73
+ client;
74
+ constructor(client) {
75
+ this.client = client;
76
+ }
77
+ async listRelevantPeople(params) {
78
+ const limit = params.limit ?? 25;
79
+ const people = await this.client.listRelevantPeople(limit);
80
+ const mapped = people.map(mapPerson);
81
+ return {
82
+ content: [{
83
+ type: 'text',
84
+ text: JSON.stringify({ people: mapped }, null, 2),
85
+ }],
86
+ };
87
+ }
88
+ async searchPeople(params) {
89
+ const limit = params.limit ?? 25;
90
+ const people = await this.client.searchPeople(params.query, limit);
91
+ const mapped = people.map(mapPerson);
92
+ return {
93
+ content: [{
94
+ type: 'text',
95
+ text: JSON.stringify({ people: mapped }, null, 2),
96
+ }],
97
+ };
98
+ }
99
+ async getManager() {
100
+ const manager = await this.client.getManager();
101
+ const mapped = mapDirectoryObject(manager);
102
+ return {
103
+ content: [{
104
+ type: 'text',
105
+ text: JSON.stringify({ manager: mapped }, null, 2),
106
+ }],
107
+ };
108
+ }
109
+ async getDirectReports() {
110
+ const reports = await this.client.getDirectReports();
111
+ const mapped = reports.map(mapDirectoryObject);
112
+ return {
113
+ content: [{
114
+ type: 'text',
115
+ text: JSON.stringify({ direct_reports: mapped }, null, 2),
116
+ }],
117
+ };
118
+ }
119
+ async getUserProfile(params) {
120
+ const user = await this.client.getUserProfile(params.identifier);
121
+ const mapped = {
122
+ id: user.id ?? null,
123
+ displayName: user.displayName ?? null,
124
+ mail: user.mail ?? null,
125
+ jobTitle: user.jobTitle ?? null,
126
+ department: user.department ?? null,
127
+ officeLocation: user.officeLocation ?? null,
128
+ mobilePhone: user.mobilePhone ?? null,
129
+ businessPhones: user.businessPhones ?? [],
130
+ };
131
+ return {
132
+ content: [{
133
+ type: 'text',
134
+ text: JSON.stringify({ user: mapped }, null, 2),
135
+ }],
136
+ };
137
+ }
138
+ async getUserPhoto(params) {
139
+ const savePath = params.save_path ?? path.join(os.homedir(), 'Downloads', `${params.identifier}_photo.jpg`);
140
+ try {
141
+ const photoData = await this.client.getUserPhoto(params.identifier);
142
+ const buffer = Buffer.from(photoData);
143
+ // Ensure directory exists
144
+ const dir = path.dirname(savePath);
145
+ if (!fs.existsSync(dir)) {
146
+ fs.mkdirSync(dir, { recursive: true });
147
+ }
148
+ fs.writeFileSync(savePath, buffer);
149
+ return {
150
+ content: [{
151
+ type: 'text',
152
+ text: JSON.stringify({ saved_to: savePath, size: buffer.length }, null, 2),
153
+ }],
154
+ };
155
+ }
156
+ catch (error) {
157
+ const message = error instanceof Error ? error.message : 'Failed to get user photo';
158
+ return {
159
+ content: [{
160
+ type: 'text',
161
+ text: JSON.stringify({ error: message }, null, 2),
162
+ }],
163
+ };
164
+ }
165
+ }
166
+ async getUserPresence(params) {
167
+ const presence = await this.client.getUserPresence(params.identifier);
168
+ const mapped = {
169
+ availability: presence.availability ?? null,
170
+ activity: presence.activity ?? null,
171
+ statusMessage: presence.statusMessage?.message?.content ?? null,
172
+ };
173
+ return {
174
+ content: [{
175
+ type: 'text',
176
+ text: JSON.stringify({ presence: mapped }, null, 2),
177
+ }],
178
+ };
179
+ }
180
+ async getUsersPresence(params) {
181
+ const presences = await this.client.getUsersPresence(params.user_ids);
182
+ const mapped = presences.map((p) => ({
183
+ id: p.id ?? null,
184
+ availability: p.availability ?? null,
185
+ activity: p.activity ?? null,
186
+ }));
187
+ return {
188
+ content: [{
189
+ type: 'text',
190
+ text: JSON.stringify({ presences: mapped }, null, 2),
191
+ }],
192
+ };
193
+ }
194
+ }
195
+ //# sourceMappingURL=people.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"people.js","sourceRoot":"","sources":["../../src/tools/people.ts"],"names":[],"mappings":"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"}