@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
@@ -0,0 +1,183 @@
1
+ /**
2
+ * Copyright (c) 2026 JBC Tech Solutions, LLC
3
+ * Licensed under the MIT License. See LICENSE file in the project root.
4
+ */
5
+ import { mintSelfEncoded } from '../ids/token.js';
6
+ /** How far forward/back the initial calendar-view window spans (baked into the cursor). */
7
+ const CALENDAR_WINDOW_PAST_MS = 1 * 24 * 60 * 60 * 1000;
8
+ const CALENDAR_WINDOW_FUTURE_MS = 90 * 24 * 60 * 60 * 1000;
9
+ /**
10
+ * The calendar cursor bakes an absolute time window that cannot advance, so it
11
+ * is force-refreshed (re-baselined with a fresh window) once it is this old —
12
+ * bounding how far the tracked window can drift from "now".
13
+ */
14
+ const CALENDAR_CURSOR_MAX_AGE_MS = 7 * 24 * 60 * 60 * 1000;
15
+ /** Reads `@removed` (and its reason) regardless of the concrete Graph type. */
16
+ function removal(item) {
17
+ const marker = item['@removed'];
18
+ if (marker == null)
19
+ return { removed: false, reason: '' };
20
+ return { removed: true, reason: marker.reason ?? 'deleted' };
21
+ }
22
+ const MAIL_RESOURCE = {
23
+ key: 'mail',
24
+ storageKey: 'mail:inbox',
25
+ entityType: 'message',
26
+ async fetch(client, deltaLink) {
27
+ const { messages, deltaLink: next } = await client.getMessagesDelta('inbox', deltaLink);
28
+ const items = [];
29
+ for (const m of messages) {
30
+ const graphId = m.id ?? '';
31
+ if (graphId.length === 0)
32
+ continue;
33
+ const { removed, reason } = removal(m);
34
+ items.push({
35
+ graphId,
36
+ removed,
37
+ removedReason: reason,
38
+ summary: m.subject ?? '(no subject)',
39
+ snapshot: {
40
+ from: m.from?.emailAddress?.address ?? '',
41
+ receivedDateTime: m.receivedDateTime ?? '',
42
+ isRead: m.isRead ?? null,
43
+ },
44
+ });
45
+ }
46
+ return { items, deltaLink: next };
47
+ },
48
+ };
49
+ const CALENDAR_RESOURCE = {
50
+ key: 'calendar',
51
+ storageKey: 'calendar:primary',
52
+ entityType: 'event',
53
+ maxCursorAgeMs: CALENDAR_CURSOR_MAX_AGE_MS,
54
+ async fetch(client, deltaLink, now) {
55
+ const start = new Date(now - CALENDAR_WINDOW_PAST_MS).toISOString();
56
+ const end = new Date(now + CALENDAR_WINDOW_FUTURE_MS).toISOString();
57
+ const { events, deltaLink: next } = await client.getCalendarViewDelta(start, end, deltaLink);
58
+ const items = [];
59
+ for (const e of events) {
60
+ const graphId = e.id ?? '';
61
+ if (graphId.length === 0)
62
+ continue;
63
+ const { removed, reason } = removal(e);
64
+ items.push({
65
+ graphId,
66
+ removed,
67
+ removedReason: reason,
68
+ summary: e.subject ?? '(no subject)',
69
+ snapshot: {
70
+ start: e.start?.dateTime ?? '',
71
+ end: e.end?.dateTime ?? '',
72
+ organizer: e.organizer?.emailAddress?.address ?? '',
73
+ },
74
+ });
75
+ }
76
+ return { items, deltaLink: next };
77
+ },
78
+ };
79
+ const RESOURCES = {
80
+ mail: MAIL_RESOURCE,
81
+ calendar: CALENDAR_RESOURCE,
82
+ };
83
+ /** All resource keys, in a stable order. */
84
+ export const ALL_RESOURCES = ['mail', 'calendar'];
85
+ /**
86
+ * Orchestrates delta sync + change classification against a {@link StateStore}
87
+ * mirror. Stateless beyond its dependencies; safe to construct per call.
88
+ */
89
+ export class DeltaMirror {
90
+ client;
91
+ store;
92
+ accountId;
93
+ now;
94
+ constructor(client, store, accountId, now = () => Date.now()) {
95
+ this.client = client;
96
+ this.store = store;
97
+ this.accountId = accountId;
98
+ this.now = now;
99
+ }
100
+ /** Syncs the given resources (all by default) and returns the change report. */
101
+ async sync(resources = ALL_RESOURCES) {
102
+ const syncedAt = this.now();
103
+ const out = [];
104
+ for (const key of resources) {
105
+ out.push(await this.syncResource(RESOURCES[key], syncedAt));
106
+ }
107
+ return { syncedAt, resources: out };
108
+ }
109
+ /** Clears tracking for the given resources (all by default) — local only. */
110
+ reset(resources = ALL_RESOURCES) {
111
+ const accountId = this.accountId();
112
+ for (const key of resources) {
113
+ this.store.delta.reset(accountId, RESOURCES[key].storageKey);
114
+ }
115
+ }
116
+ async syncResource(desc, syncedAt) {
117
+ const accountId = this.accountId();
118
+ const cursor = this.store.delta.getCursor(accountId, desc.storageKey);
119
+ // A stale calendar-style cursor (fixed window that can no longer advance) is
120
+ // treated as absent so this round re-baselines with a fresh window.
121
+ const stale = cursor != null &&
122
+ desc.maxCursorAgeMs != null &&
123
+ syncedAt - cursor.syncedAt > desc.maxCursorAgeMs;
124
+ const prevLink = stale ? undefined : (cursor?.deltaLink ?? undefined);
125
+ const baseline = prevLink == null;
126
+ const { items, deltaLink } = await desc.fetch(this.client, prevLink, syncedAt);
127
+ // Collapse duplicate ids within one response (last entry wins, per Graph
128
+ // ordering) so a created-then-deleted or repeated id can't be double-counted
129
+ // or leave the report inconsistent with the committed mirror.
130
+ const latest = new Map();
131
+ for (const item of items)
132
+ latest.set(item.graphId, item);
133
+ const seen = baseline ? new Set() : this.store.delta.getSeenIds(accountId, desc.storageKey);
134
+ const upserts = [];
135
+ const deletes = [];
136
+ const created = [];
137
+ const updated = [];
138
+ const deleted = [];
139
+ for (const item of latest.values()) {
140
+ const token = mintSelfEncoded(desc.entityType, item.graphId);
141
+ if (item.removed) {
142
+ // Drop from the mirror either way, but only report an actual deletion
143
+ // ('deleted'). 'changed' means the item merely left our view (moved
144
+ // folder / rescheduled out of window) — reporting it as deleted lies.
145
+ deletes.push(item.graphId);
146
+ if (!baseline && item.removedReason === 'deleted' && seen.has(item.graphId)) {
147
+ const known = this.store.delta.getItem(accountId, desc.storageKey, item.graphId);
148
+ deleted.push({ token, graphId: item.graphId, summary: known?.summary ?? '', changeType: 'deleted' });
149
+ }
150
+ continue;
151
+ }
152
+ upserts.push({ graphId: item.graphId, token, summary: item.summary, snapshot: JSON.stringify(item.snapshot) });
153
+ if (!baseline) {
154
+ const changeType = seen.has(item.graphId) ? 'updated' : 'created';
155
+ const entry = { token, graphId: item.graphId, summary: item.summary, changeType, detail: item.snapshot };
156
+ (changeType === 'updated' ? updated : created).push(entry);
157
+ }
158
+ }
159
+ this.store.delta.commit({
160
+ accountId,
161
+ resource: desc.storageKey,
162
+ deltaLink,
163
+ syncedAt,
164
+ upserts,
165
+ deletes,
166
+ replaceMirror: baseline,
167
+ });
168
+ const result = {
169
+ resource: desc.key,
170
+ baseline,
171
+ trackedCount: this.store.delta.countItems(accountId, desc.storageKey),
172
+ created,
173
+ updated,
174
+ deleted,
175
+ };
176
+ if (deltaLink.length === 0) {
177
+ result.note =
178
+ 'Graph returned no delta cursor (large initial page); tracking will re-baseline on the next call.';
179
+ }
180
+ return result;
181
+ }
182
+ }
183
+ //# sourceMappingURL=mirror.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"mirror.js","sourceRoot":"","sources":["../../src/delta/mirror.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAoBH,OAAO,EAAE,eAAe,EAAmB,MAAM,iBAAiB,CAAC;AAKnE,2FAA2F;AAC3F,MAAM,uBAAuB,GAAG,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,IAAI,CAAC;AACxD,MAAM,yBAAyB,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,IAAI,CAAC;AAC3D;;;;GAIG;AACH,MAAM,0BAA0B,GAAG,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,IAAI,CAAC;AAuD3D,+EAA+E;AAC/E,SAAS,OAAO,CAAC,IAAa;IAC5B,MAAM,MAAM,GAAI,IAAgC,CAAC,UAAU,CAA2C,CAAC;IACvG,IAAI,MAAM,IAAI,IAAI;QAAE,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,MAAM,EAAE,EAAE,EAAE,CAAC;IAC1D,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE,MAAM,CAAC,MAAM,IAAI,SAAS,EAAE,CAAC;AAC/D,CAAC;AAED,MAAM,aAAa,GAAuB;IACxC,GAAG,EAAE,MAAM;IACX,UAAU,EAAE,YAAY;IACxB,UAAU,EAAE,SAAS;IACrB,KAAK,CAAC,KAAK,CAAC,MAAM,EAAE,SAAS;QAC3B,MAAM,EAAE,QAAQ,EAAE,SAAS,EAAE,IAAI,EAAE,GAAG,MAAM,MAAM,CAAC,gBAAgB,CAAC,OAAO,EAAE,SAAS,CAAC,CAAC;QACxF,MAAM,KAAK,GAAe,EAAE,CAAC;QAC7B,KAAK,MAAM,CAAC,IAAI,QAAQ,EAAE,CAAC;YACzB,MAAM,OAAO,GAAG,CAAC,CAAC,EAAE,IAAI,EAAE,CAAC;YAC3B,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC;gBAAE,SAAS;YACnC,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,CAAC,CAAC,CAAC;YACvC,KAAK,CAAC,IAAI,CAAC;gBACT,OAAO;gBACP,OAAO;gBACP,aAAa,EAAE,MAAM;gBACrB,OAAO,EAAE,CAAC,CAAC,OAAO,IAAI,cAAc;gBACpC,QAAQ,EAAE;oBACR,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE,YAAY,EAAE,OAAO,IAAI,EAAE;oBACzC,gBAAgB,EAAE,CAAC,CAAC,gBAAgB,IAAI,EAAE;oBAC1C,MAAM,EAAE,CAAC,CAAC,MAAM,IAAI,IAAI;iBACzB;aACF,CAAC,CAAC;QACL,CAAC;QACD,OAAO,EAAE,KAAK,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC;IACpC,CAAC;CACF,CAAC;AAEF,MAAM,iBAAiB,GAAuB;IAC5C,GAAG,EAAE,UAAU;IACf,UAAU,EAAE,kBAAkB;IAC9B,UAAU,EAAE,OAAO;IACnB,cAAc,EAAE,0BAA0B;IAC1C,KAAK,CAAC,KAAK,CAAC,MAAM,EAAE,SAAS,EAAE,GAAG;QAChC,MAAM,KAAK,GAAG,IAAI,IAAI,CAAC,GAAG,GAAG,uBAAuB,CAAC,CAAC,WAAW,EAAE,CAAC;QACpE,MAAM,GAAG,GAAG,IAAI,IAAI,CAAC,GAAG,GAAG,yBAAyB,CAAC,CAAC,WAAW,EAAE,CAAC;QACpE,MAAM,EAAE,MAAM,EAAE,SAAS,EAAE,IAAI,EAAE,GAAG,MAAM,MAAM,CAAC,oBAAoB,CAAC,KAAK,EAAE,GAAG,EAAE,SAAS,CAAC,CAAC;QAC7F,MAAM,KAAK,GAAe,EAAE,CAAC;QAC7B,KAAK,MAAM,CAAC,IAAI,MAAM,EAAE,CAAC;YACvB,MAAM,OAAO,GAAG,CAAC,CAAC,EAAE,IAAI,EAAE,CAAC;YAC3B,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC;gBAAE,SAAS;YACnC,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,CAAC,CAAC,CAAC;YACvC,KAAK,CAAC,IAAI,CAAC;gBACT,OAAO;gBACP,OAAO;gBACP,aAAa,EAAE,MAAM;gBACrB,OAAO,EAAE,CAAC,CAAC,OAAO,IAAI,cAAc;gBACpC,QAAQ,EAAE;oBACR,KAAK,EAAE,CAAC,CAAC,KAAK,EAAE,QAAQ,IAAI,EAAE;oBAC9B,GAAG,EAAE,CAAC,CAAC,GAAG,EAAE,QAAQ,IAAI,EAAE;oBAC1B,SAAS,EAAE,CAAC,CAAC,SAAS,EAAE,YAAY,EAAE,OAAO,IAAI,EAAE;iBACpD;aACF,CAAC,CAAC;QACL,CAAC;QACD,OAAO,EAAE,KAAK,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC;IACpC,CAAC;CACF,CAAC;AAEF,MAAM,SAAS,GAA4C;IACzD,IAAI,EAAE,aAAa;IACnB,QAAQ,EAAE,iBAAiB;CAC5B,CAAC;AAEF,4CAA4C;AAC5C,MAAM,CAAC,MAAM,aAAa,GAA2B,CAAC,MAAM,EAAE,UAAU,CAAC,CAAC;AAE1E;;;GAGG;AACH,MAAM,OAAO,WAAW;IAEH;IACA;IACA;IACA;IAJnB,YACmB,MAAmB,EACnB,KAAiB,EACjB,SAAuB,EACvB,MAAoB,GAAG,EAAE,CAAC,IAAI,CAAC,GAAG,EAAE;QAHpC,WAAM,GAAN,MAAM,CAAa;QACnB,UAAK,GAAL,KAAK,CAAY;QACjB,cAAS,GAAT,SAAS,CAAc;QACvB,QAAG,GAAH,GAAG,CAAiC;IACpD,CAAC;IAEJ,gFAAgF;IAChF,KAAK,CAAC,IAAI,CAAC,YAAoC,aAAa;QAC1D,MAAM,QAAQ,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;QAC5B,MAAM,GAAG,GAAwB,EAAE,CAAC;QACpC,KAAK,MAAM,GAAG,IAAI,SAAS,EAAE,CAAC;YAC5B,GAAG,CAAC,IAAI,CAAC,MAAM,IAAI,CAAC,YAAY,CAAC,SAAS,CAAC,GAAG,CAAC,EAAE,QAAQ,CAAC,CAAC,CAAC;QAC9D,CAAC;QACD,OAAO,EAAE,QAAQ,EAAE,SAAS,EAAE,GAAG,EAAE,CAAC;IACtC,CAAC;IAED,6EAA6E;IAC7E,KAAK,CAAC,YAAoC,aAAa;QACrD,MAAM,SAAS,GAAG,IAAI,CAAC,SAAS,EAAE,CAAC;QACnC,KAAK,MAAM,GAAG,IAAI,SAAS,EAAE,CAAC;YAC5B,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,SAAS,EAAE,SAAS,CAAC,GAAG,CAAC,CAAC,UAAU,CAAC,CAAC;QAC/D,CAAC;IACH,CAAC;IAEO,KAAK,CAAC,YAAY,CAAC,IAAwB,EAAE,QAAgB;QACnE,MAAM,SAAS,GAAG,IAAI,CAAC,SAAS,EAAE,CAAC;QACnC,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,SAAS,CAAC,SAAS,EAAE,IAAI,CAAC,UAAU,CAAC,CAAC;QAEtE,6EAA6E;QAC7E,oEAAoE;QACpE,MAAM,KAAK,GACT,MAAM,IAAI,IAAI;YACd,IAAI,CAAC,cAAc,IAAI,IAAI;YAC3B,QAAQ,GAAG,MAAM,CAAC,QAAQ,GAAG,IAAI,CAAC,cAAc,CAAC;QACnD,MAAM,QAAQ,GAAG,KAAK,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,MAAM,EAAE,SAAS,IAAI,SAAS,CAAC,CAAC;QACtE,MAAM,QAAQ,GAAG,QAAQ,IAAI,IAAI,CAAC;QAElC,MAAM,EAAE,KAAK,EAAE,SAAS,EAAE,GAAG,MAAM,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,EAAE,QAAQ,EAAE,QAAQ,CAAC,CAAC;QAC/E,yEAAyE;QACzE,6EAA6E;QAC7E,8DAA8D;QAC9D,MAAM,MAAM,GAAG,IAAI,GAAG,EAAoB,CAAC;QAC3C,KAAK,MAAM,IAAI,IAAI,KAAK;YAAE,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC;QAEzD,MAAM,IAAI,GAAG,QAAQ,CAAC,CAAC,CAAC,IAAI,GAAG,EAAU,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,UAAU,CAAC,SAAS,EAAE,IAAI,CAAC,UAAU,CAAC,CAAC;QAEpG,MAAM,OAAO,GAAiB,EAAE,CAAC;QACjC,MAAM,OAAO,GAAa,EAAE,CAAC;QAC7B,MAAM,OAAO,GAAkB,EAAE,CAAC;QAClC,MAAM,OAAO,GAAkB,EAAE,CAAC;QAClC,MAAM,OAAO,GAAkB,EAAE,CAAC;QAElC,KAAK,MAAM,IAAI,IAAI,MAAM,CAAC,MAAM,EAAE,EAAE,CAAC;YACnC,MAAM,KAAK,GAAG,eAAe,CAAC,IAAI,CAAC,UAAU,EAAE,IAAI,CAAC,OAAO,CAAC,CAAC;YAC7D,IAAI,IAAI,CAAC,OAAO,EAAE,CAAC;gBACjB,sEAAsE;gBACtE,oEAAoE;gBACpE,sEAAsE;gBACtE,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;gBAC3B,IAAI,CAAC,QAAQ,IAAI,IAAI,CAAC,aAAa,KAAK,SAAS,IAAI,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC;oBAC5E,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,OAAO,CAAC,SAAS,EAAE,IAAI,CAAC,UAAU,EAAE,IAAI,CAAC,OAAO,CAAC,CAAC;oBACjF,OAAO,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,OAAO,EAAE,IAAI,CAAC,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,OAAO,IAAI,EAAE,EAAE,UAAU,EAAE,SAAS,EAAE,CAAC,CAAC;gBACvG,CAAC;gBACD,SAAS;YACX,CAAC;YAED,OAAO,CAAC,IAAI,CAAC,EAAE,OAAO,EAAE,IAAI,CAAC,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE,IAAI,CAAC,OAAO,EAAE,QAAQ,EAAE,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC;YAC/G,IAAI,CAAC,QAAQ,EAAE,CAAC;gBACd,MAAM,UAAU,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC;gBAClE,MAAM,KAAK,GAAgB,EAAE,KAAK,EAAE,OAAO,EAAE,IAAI,CAAC,OAAO,EAAE,OAAO,EAAE,IAAI,CAAC,OAAO,EAAE,UAAU,EAAE,MAAM,EAAE,IAAI,CAAC,QAAQ,EAAE,CAAC;gBACtH,CAAC,UAAU,KAAK,SAAS,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;YAC7D,CAAC;QACH,CAAC;QAED,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,MAAM,CAAC;YACtB,SAAS;YACT,QAAQ,EAAE,IAAI,CAAC,UAAU;YACzB,SAAS;YACT,QAAQ;YACR,OAAO;YACP,OAAO;YACP,aAAa,EAAE,QAAQ;SACxB,CAAC,CAAC;QAEH,MAAM,MAAM,GAAsB;YAChC,QAAQ,EAAE,IAAI,CAAC,GAAG;YAClB,QAAQ;YACR,YAAY,EAAE,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,UAAU,CAAC,SAAS,EAAE,IAAI,CAAC,UAAU,CAAC;YACrE,OAAO;YACP,OAAO;YACP,OAAO;SACR,CAAC;QACF,IAAI,SAAS,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YAC3B,MAAM,CAAC,IAAI;gBACT,kGAAkG,CAAC;QACvG,CAAC;QACD,OAAO,MAAM,CAAC;IAChB,CAAC;CACF"}
@@ -0,0 +1,19 @@
1
+ /**
2
+ * Copyright (c) 2026 JBC Tech Solutions, LLC
3
+ * Licensed under the MIT License. See LICENSE file in the project root.
4
+ */
5
+ /** Scope key used before sign-in (or when the account can't be determined). */
6
+ export declare const DEFAULT_ACCOUNT_ID = "default";
7
+ /**
8
+ * Resolves the signed-in account's stable id from MSAL, memoizing the first real
9
+ * value. Returns {@link DEFAULT_ACCOUNT_ID} (uncached) when unauthenticated.
10
+ */
11
+ export declare function resolveAccountId(): Promise<string>;
12
+ /**
13
+ * The last resolved account id without touching the MSAL cache. Returns
14
+ * {@link DEFAULT_ACCOUNT_ID} until {@link resolveAccountId} has populated it.
15
+ */
16
+ export declare function currentAccountId(): string;
17
+ /** Clears the memo so a sign-out / account switch re-resolves the identity. */
18
+ export declare function resetAccountId(): void;
19
+ //# sourceMappingURL=account-id.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"account-id.d.ts","sourceRoot":"","sources":["../../../src/graph/auth/account-id.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAwBH,+EAA+E;AAC/E,eAAO,MAAM,kBAAkB,YAAY,CAAC;AAI5C;;;GAGG;AACH,wBAAsB,gBAAgB,IAAI,OAAO,CAAC,MAAM,CAAC,CAWxD;AAED;;;GAGG;AACH,wBAAgB,gBAAgB,IAAI,MAAM,CAEzC;AAED,+EAA+E;AAC/E,wBAAgB,cAAc,IAAI,IAAI,CAErC"}
@@ -0,0 +1,55 @@
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
+ * Signed-in account identity (U5 / D7). Durable state — approval tokens (D8) and
7
+ * the durable-ID alias table (D3) — is scoped per account so a token minted
8
+ * while signed in as one user can never be redeemed as another. MSAL's
9
+ * `homeAccountId` (`<oid>.<tid>`) is the stable per-account key.
10
+ *
11
+ * `getAccount()` is async (it reads the MSAL cache), but the token manager and
12
+ * resolver need a scope key synchronously at call time. So the resolved id is
13
+ * memoized after sign-in and read back via {@link currentAccountId}. Only a real
14
+ * id is memoized — an unauthenticated lookup returns the `'default'` fallback
15
+ * WITHOUT caching, so the real id is still picked up once sign-in completes. The
16
+ * caller retries {@link resolveAccountId} on each tool call while still on the
17
+ * fallback (see index.ts), so a transient miss at init can't pin the fallback.
18
+ *
19
+ * Single-account assumption (v3): `getAccount()` returns the first MSAL cache
20
+ * account, matching how the access token is acquired, so scope and auth identity
21
+ * agree within a process. A multi-account cache is out of scope for v3 — pinning
22
+ * the active account across the whole auth layer is a separate change.
23
+ */
24
+ import { getAccount } from './device-code-flow.js';
25
+ /** Scope key used before sign-in (or when the account can't be determined). */
26
+ export const DEFAULT_ACCOUNT_ID = 'default';
27
+ let cachedAccountId = null;
28
+ /**
29
+ * Resolves the signed-in account's stable id from MSAL, memoizing the first real
30
+ * value. Returns {@link DEFAULT_ACCOUNT_ID} (uncached) when unauthenticated.
31
+ */
32
+ export async function resolveAccountId() {
33
+ if (cachedAccountId !== null) {
34
+ return cachedAccountId;
35
+ }
36
+ const account = await getAccount();
37
+ const homeAccountId = account?.homeAccountId;
38
+ if (homeAccountId != null && homeAccountId.length > 0) {
39
+ cachedAccountId = homeAccountId;
40
+ return cachedAccountId;
41
+ }
42
+ return DEFAULT_ACCOUNT_ID;
43
+ }
44
+ /**
45
+ * The last resolved account id without touching the MSAL cache. Returns
46
+ * {@link DEFAULT_ACCOUNT_ID} until {@link resolveAccountId} has populated it.
47
+ */
48
+ export function currentAccountId() {
49
+ return cachedAccountId ?? DEFAULT_ACCOUNT_ID;
50
+ }
51
+ /** Clears the memo so a sign-out / account switch re-resolves the identity. */
52
+ export function resetAccountId() {
53
+ cachedAccountId = null;
54
+ }
55
+ //# sourceMappingURL=account-id.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"account-id.js","sourceRoot":"","sources":["../../../src/graph/auth/account-id.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH;;;;;;;;;;;;;;;;;;GAkBG;AAEH,OAAO,EAAE,UAAU,EAAE,MAAM,uBAAuB,CAAC;AAEnD,+EAA+E;AAC/E,MAAM,CAAC,MAAM,kBAAkB,GAAG,SAAS,CAAC;AAE5C,IAAI,eAAe,GAAkB,IAAI,CAAC;AAE1C;;;GAGG;AACH,MAAM,CAAC,KAAK,UAAU,gBAAgB;IACpC,IAAI,eAAe,KAAK,IAAI,EAAE,CAAC;QAC7B,OAAO,eAAe,CAAC;IACzB,CAAC;IACD,MAAM,OAAO,GAAG,MAAM,UAAU,EAAE,CAAC;IACnC,MAAM,aAAa,GAAG,OAAO,EAAE,aAAa,CAAC;IAC7C,IAAI,aAAa,IAAI,IAAI,IAAI,aAAa,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACtD,eAAe,GAAG,aAAa,CAAC;QAChC,OAAO,eAAe,CAAC;IACzB,CAAC;IACD,OAAO,kBAAkB,CAAC;AAC5B,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,gBAAgB;IAC9B,OAAO,eAAe,IAAI,kBAAkB,CAAC;AAC/C,CAAC;AAED,+EAA+E;AAC/E,MAAM,UAAU,cAAc;IAC5B,eAAe,GAAG,IAAI,CAAC;AACzB,CAAC"}
@@ -8,7 +8,7 @@
8
8
  * Includes read/write permissions for mail and calendars to support
9
9
  * future implementation of email sending and event management features.
10
10
  */
11
- export declare const GRAPH_SCOPES: readonly ["Mail.ReadWrite", "Calendars.ReadWrite", "Contacts.ReadWrite", "Tasks.ReadWrite", "User.Read", "offline_access", "ChannelMessage.Read.All", "ChannelMessage.Send", "Channel.ReadBasic.All", "Team.ReadBasic.All", "Chat.ReadWrite", "ChatMessage.Send", "People.Read", "User.ReadBasic.All", "Presence.Read.All", "Group.Read.All"];
11
+ export declare const GRAPH_SCOPES: readonly ["Mail.ReadWrite", "Calendars.ReadWrite", "Contacts.ReadWrite", "Tasks.ReadWrite", "User.Read", "offline_access", "Mail.Read.Shared", "Calendars.Read.Shared", "Files.Read.All", "ChannelMessage.Read.All", "ChannelMessage.Send", "Channel.ReadBasic.All", "Team.ReadBasic.All", "Chat.ReadWrite", "ChatMessage.Send", "People.Read", "User.ReadBasic.All", "Presence.Read.All", "Group.Read.All", "Files.ReadWrite", "Sites.Read.All", "Notes.ReadWrite"];
12
12
  /**
13
13
  * Microsoft Graph API configuration.
14
14
  */
@@ -1 +1 @@
1
- {"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../../../src/graph/auth/config.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAuBH;;;;;GAKG;AACH,eAAO,MAAM,YAAY,+UAqBf,CAAC;AAEX;;GAEG;AACH,MAAM,WAAW,eAAe;IAC9B,uCAAuC;IACvC,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,8DAA8D;IAC9D,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,+BAA+B;IAC/B,QAAQ,CAAC,MAAM,EAAE,SAAS,MAAM,EAAE,CAAC;CACpC;AAED;;;;;GAKG;AACH,wBAAgB,eAAe,IAAI,eAAe,CAiBjD;AAED;;GAEG;AACH,wBAAgB,eAAe,CAAC,MAAM,EAAE,eAAe,GAAG,MAAM,CAE/D"}
1
+ {"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../../../src/graph/auth/config.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAuBH;;;;;GAKG;AACH,eAAO,MAAM,YAAY,scAiCf,CAAC;AAEX;;GAEG;AACH,MAAM,WAAW,eAAe;IAC9B,uCAAuC;IACvC,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,8DAA8D;IAC9D,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,+BAA+B;IAC/B,QAAQ,CAAC,MAAM,EAAE,SAAS,MAAM,EAAE,CAAC;CACpC;AAED;;;;;GAKG;AACH,wBAAgB,eAAe,IAAI,eAAe,CAiBjD;AAED;;GAEG;AACH,wBAAgB,eAAe,CAAC,MAAM,EAAE,eAAe,GAAG,MAAM,CAE/D"}
@@ -20,7 +20,7 @@
20
20
  *
21
21
  * For setup instructions: https://github.com/jbctechsolutions/mcp-office365#custom-azure-ad-setup
22
22
  */
23
- const DEFAULT_CLIENT_ID = '681fbb29-5afa-47b1-9c16-0cd2be01754d';
23
+ const DEFAULT_CLIENT_ID = '8fdcd9d3-8823-48f5-bd59-c3a779053b77';
24
24
  /**
25
25
  * Microsoft Graph API scopes required for Outlook access.
26
26
  *
@@ -35,6 +35,12 @@ export const GRAPH_SCOPES = [
35
35
  'Tasks.ReadWrite',
36
36
  'User.Read',
37
37
  'offline_access',
38
+ // Shared mailboxes / delegate access (#40) — read another user's mailbox,
39
+ // calendar, and OneDrive via /users/{upn}/... where the signed-in user has
40
+ // shared/delegate access.
41
+ 'Mail.Read.Shared',
42
+ 'Calendars.Read.Shared',
43
+ 'Files.Read.All',
38
44
  // Teams
39
45
  'ChannelMessage.Read.All',
40
46
  'ChannelMessage.Send',
@@ -48,6 +54,12 @@ export const GRAPH_SCOPES = [
48
54
  'Presence.Read.All',
49
55
  // Planner
50
56
  'Group.Read.All',
57
+ // OneDrive
58
+ 'Files.ReadWrite',
59
+ // SharePoint
60
+ 'Sites.Read.All',
61
+ // OneNote (read/search pages + create pages)
62
+ 'Notes.ReadWrite',
51
63
  ];
52
64
  /**
53
65
  * Loads the Graph API configuration.
@@ -1 +1 @@
1
- {"version":3,"file":"config.js","sourceRoot":"","sources":["../../../src/graph/auth/config.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH;;;;;GAKG;AAEH;;;;;;;;;;;GAWG;AACH,MAAM,iBAAiB,GAAG,sCAAsC,CAAC;AAEjE;;;;;GAKG;AACH,MAAM,CAAC,MAAM,YAAY,GAAG;IAC1B,UAAU;IACV,gBAAgB;IAChB,qBAAqB;IACrB,oBAAoB;IACpB,iBAAiB;IACjB,WAAW;IACX,gBAAgB;IAChB,QAAQ;IACR,yBAAyB;IACzB,qBAAqB;IACrB,uBAAuB;IACvB,oBAAoB;IACpB,gBAAgB;IAChB,kBAAkB;IAClB,oBAAoB;IACpB,aAAa;IACb,oBAAoB;IACpB,mBAAmB;IACnB,UAAU;IACV,gBAAgB;CACR,CAAC;AAcX;;;;;GAKG;AACH,MAAM,UAAU,eAAe;IAC7B,MAAM,QAAQ,GAAG,OAAO,CAAC,GAAG,CAAC,uBAAuB,CAAC,IAAI,iBAAiB,CAAC;IAC3E,MAAM,QAAQ,GAAG,OAAO,CAAC,GAAG,CAAC,uBAAuB,CAAC,IAAI,QAAQ,CAAC;IAElE,IAAI,QAAQ,KAAK,0BAA0B,EAAE,CAAC;QAC5C,MAAM,IAAI,KAAK,CACb,wCAAwC;YACtC,yDAAyD;YACzD,qEAAqE,CACxE,CAAC;IACJ,CAAC;IAED,OAAO;QACL,QAAQ;QACR,QAAQ;QACR,MAAM,EAAE,CAAC,GAAG,YAAY,CAAC;KAC1B,CAAC;AACJ,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,eAAe,CAAC,MAAuB;IACrD,OAAO,qCAAqC,MAAM,CAAC,QAAQ,EAAE,CAAC;AAChE,CAAC"}
1
+ {"version":3,"file":"config.js","sourceRoot":"","sources":["../../../src/graph/auth/config.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH;;;;;GAKG;AAEH;;;;;;;;;;;GAWG;AACH,MAAM,iBAAiB,GAAG,sCAAsC,CAAC;AAEjE;;;;;GAKG;AACH,MAAM,CAAC,MAAM,YAAY,GAAG;IAC1B,UAAU;IACV,gBAAgB;IAChB,qBAAqB;IACrB,oBAAoB;IACpB,iBAAiB;IACjB,WAAW;IACX,gBAAgB;IAChB,0EAA0E;IAC1E,2EAA2E;IAC3E,0BAA0B;IAC1B,kBAAkB;IAClB,uBAAuB;IACvB,gBAAgB;IAChB,QAAQ;IACR,yBAAyB;IACzB,qBAAqB;IACrB,uBAAuB;IACvB,oBAAoB;IACpB,gBAAgB;IAChB,kBAAkB;IAClB,oBAAoB;IACpB,aAAa;IACb,oBAAoB;IACpB,mBAAmB;IACnB,UAAU;IACV,gBAAgB;IAChB,WAAW;IACX,iBAAiB;IACjB,aAAa;IACb,gBAAgB;IAChB,6CAA6C;IAC7C,iBAAiB;CACT,CAAC;AAcX;;;;;GAKG;AACH,MAAM,UAAU,eAAe;IAC7B,MAAM,QAAQ,GAAG,OAAO,CAAC,GAAG,CAAC,uBAAuB,CAAC,IAAI,iBAAiB,CAAC;IAC3E,MAAM,QAAQ,GAAG,OAAO,CAAC,GAAG,CAAC,uBAAuB,CAAC,IAAI,QAAQ,CAAC;IAElE,IAAI,QAAQ,KAAK,0BAA0B,EAAE,CAAC;QAC5C,MAAM,IAAI,KAAK,CACb,wCAAwC;YACtC,yDAAyD;YACzD,qEAAqE,CACxE,CAAC;IACJ,CAAC;IAED,OAAO;QACL,QAAQ;QACR,QAAQ;QACR,MAAM,EAAE,CAAC,GAAG,YAAY,CAAC;KAC1B,CAAC;AACJ,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,eAAe,CAAC,MAAuB;IACrD,OAAO,qCAAqC,MAAM,CAAC,QAAQ,EAAE,CAAC;AAChE,CAAC"}
@@ -35,7 +35,9 @@ export declare function acquireTokenSilent(): Promise<AuthenticationResult | nul
35
35
  * 1. First tries to get a cached/refreshed token silently
36
36
  * 2. If that fails, prompts for device code authentication
37
37
  */
38
- export declare function getAccessToken(deviceCodeCallback?: DeviceCodeCallback): Promise<string>;
38
+ export declare function getAccessToken(deviceCodeCallback?: DeviceCodeCallback, options?: {
39
+ interactiveOnExpired?: boolean;
40
+ }): Promise<string>;
39
41
  /**
40
42
  * Checks if the user is authenticated (has cached tokens).
41
43
  */
@@ -1 +1 @@
1
- {"version":3,"file":"device-code-flow.d.ts","sourceRoot":"","sources":["../../../src/graph/auth/device-code-flow.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH;;;;;;;;GAQG;AAEH,OAAO,EAEL,KAAK,oBAAoB,EAEzB,KAAK,WAAW,EACjB,MAAM,kBAAkB,CAAC;AA8C1B;;GAEG;AACH,MAAM,MAAM,kBAAkB,GAAG,CAAC,QAAQ,EAAE,MAAM,EAAE,eAAe,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,KAAK,IAAI,CAAC;AAiBtG;;;;GAIG;AACH,wBAAsB,uBAAuB,CAC3C,kBAAkB,GAAE,kBAA8C,GACjE,OAAO,CAAC,oBAAoB,CAAC,CAgB/B;AAED;;;;GAIG;AACH,wBAAsB,kBAAkB,IAAI,OAAO,CAAC,oBAAoB,GAAG,IAAI,CAAC,CAsB/E;AAED;;;;;;GAMG;AACH,wBAAsB,cAAc,CAClC,kBAAkB,GAAE,kBAA8C,GACjE,OAAO,CAAC,MAAM,CAAC,CAUjB;AAED;;GAEG;AACH,wBAAsB,eAAe,IAAI,OAAO,CAAC,OAAO,CAAC,CAYxD;AAED;;GAEG;AACH,wBAAsB,UAAU,IAAI,OAAO,CAAC,WAAW,GAAG,IAAI,CAAC,CAS9D;AAED;;GAEG;AACH,wBAAsB,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC,CAW7C;AAED;;GAEG;AACH,wBAAgB,iBAAiB,IAAI,IAAI,CAGxC"}
1
+ {"version":3,"file":"device-code-flow.d.ts","sourceRoot":"","sources":["../../../src/graph/auth/device-code-flow.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH;;;;;;;;GAQG;AAEH,OAAO,EAGL,KAAK,oBAAoB,EAEzB,KAAK,WAAW,EACjB,MAAM,kBAAkB,CAAC;AA+C1B;;GAEG;AACH,MAAM,MAAM,kBAAkB,GAAG,CAAC,QAAQ,EAAE,MAAM,EAAE,eAAe,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,KAAK,IAAI,CAAC;AAiBtG;;;;GAIG;AACH,wBAAsB,uBAAuB,CAC3C,kBAAkB,GAAE,kBAA8C,GACjE,OAAO,CAAC,oBAAoB,CAAC,CAgB/B;AAED;;;;GAIG;AACH,wBAAsB,kBAAkB,IAAI,OAAO,CAAC,oBAAoB,GAAG,IAAI,CAAC,CAS/E;AA2CD;;;;;;GAMG;AACH,wBAAsB,cAAc,CAClC,kBAAkB,GAAE,kBAA8C,EAClE,OAAO,GAAE;IAAE,oBAAoB,CAAC,EAAE,OAAO,CAAA;CAAO,GAC/C,OAAO,CAAC,MAAM,CAAC,CAoBjB;AAED;;GAEG;AACH,wBAAsB,eAAe,IAAI,OAAO,CAAC,OAAO,CAAC,CAYxD;AAED;;GAEG;AACH,wBAAsB,UAAU,IAAI,OAAO,CAAC,WAAW,GAAG,IAAI,CAAC,CAS9D;AAED;;GAEG;AACH,wBAAsB,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC,CAW7C;AAED;;GAEG;AACH,wBAAgB,iBAAiB,IAAI,IAAI,CAGxC"}
@@ -11,9 +11,10 @@
11
11
  * 3. User authenticates with Microsoft
12
12
  * 4. Application receives tokens
13
13
  */
14
- import { PublicClientApplication, } from '@azure/msal-node';
14
+ import { PublicClientApplication, InteractionRequiredAuthError, } from '@azure/msal-node';
15
15
  import { loadGraphConfig, getAuthorityUrl } from './config.js';
16
16
  import { createTokenCachePlugin, hasTokenCache } from './token-cache.js';
17
+ import { GraphAuthRequiredError } from '../../utils/errors.js';
17
18
  /**
18
19
  * Singleton MSAL application instance.
19
20
  */
@@ -89,24 +90,41 @@ export async function acquireTokenInteractive(deviceCodeCallback = defaultDevice
89
90
  * Returns null if no cached token is available or if refresh fails.
90
91
  */
91
92
  export async function acquireTokenSilent() {
93
+ try {
94
+ const outcome = await acquireTokenSilentDetailed();
95
+ return outcome.status === 'ok' ? outcome.result : null;
96
+ }
97
+ catch {
98
+ // Preserve this wrapper's "null on any failure" contract even for the
99
+ // transient errors acquireTokenSilentDetailed now rethrows.
100
+ return null;
101
+ }
102
+ }
103
+ async function acquireTokenSilentDetailed() {
92
104
  const msal = getMsalInstance();
93
105
  const config = getConfig();
94
- // Get accounts from cache
95
106
  const accounts = await msal.getTokenCache().getAllAccounts();
96
- // Use the first account (most common case)
97
107
  const account = accounts[0];
98
108
  if (account == null) {
99
- return null;
109
+ return { status: 'no_account' };
100
110
  }
101
111
  try {
102
- return await msal.acquireTokenSilent({
112
+ const result = await msal.acquireTokenSilent({
103
113
  account,
104
114
  scopes: [...config.scopes],
105
115
  });
116
+ return { status: 'ok', result };
106
117
  }
107
- catch {
108
- // Token refresh failed, will need interactive auth
109
- return null;
118
+ catch (cause) {
119
+ // Only an interaction-required failure (expired/revoked refresh token,
120
+ // invalid_grant) means a re-auth is needed. Transient failures (network,
121
+ // throttling, server errors) are NOT auth problems — rethrow so the caller
122
+ // surfaces them as retriable errors rather than a misleading AUTH_EXPIRED or
123
+ // an unnecessary device-code prompt.
124
+ if (cause instanceof InteractionRequiredAuthError) {
125
+ return { status: 'refresh_failed', cause };
126
+ }
127
+ throw cause;
110
128
  }
111
129
  }
112
130
  /**
@@ -116,13 +134,23 @@ export async function acquireTokenSilent() {
116
134
  * 1. First tries to get a cached/refreshed token silently
117
135
  * 2. If that fails, prompts for device code authentication
118
136
  */
119
- export async function getAccessToken(deviceCodeCallback = defaultDeviceCodeCallback) {
120
- // Try silent first
121
- let result = await acquireTokenSilent();
122
- // If silent fails, do interactive
123
- if (result == null) {
124
- result = await acquireTokenInteractive(deviceCodeCallback);
137
+ export async function getAccessToken(deviceCodeCallback = defaultDeviceCodeCallback, options = {}) {
138
+ const silent = await acquireTokenSilentDetailed();
139
+ if (silent.status === 'ok') {
140
+ return silent.result.accessToken;
141
+ }
142
+ // A cached session that failed to refresh (expired/revoked, `invalid_grant`):
143
+ // in the MCP server (default) we must NOT fall into a fresh interactive
144
+ // device-code flow — it prints to an unwatched stderr and the call hangs until
145
+ // the code expires — so surface a typed AUTH_EXPIRED with the re-auth hint (U9).
146
+ // The CLI `auth` command sets interactiveOnExpired so a user at a terminal can
147
+ // actually recover by re-authenticating (otherwise the hint would be circular).
148
+ if (silent.status === 'refresh_failed' && options.interactiveOnExpired !== true) {
149
+ throw new GraphAuthRequiredError('session_expired');
125
150
  }
151
+ // No cached account (genuine first-time), or an interactive-capable caller on
152
+ // an expired session: the device code is appropriate.
153
+ const result = await acquireTokenInteractive(deviceCodeCallback);
126
154
  return result.accessToken;
127
155
  }
128
156
  /**
@@ -1 +1 @@
1
- {"version":3,"file":"device-code-flow.js","sourceRoot":"","sources":["../../../src/graph/auth/device-code-flow.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"device-code-flow.js","sourceRoot":"","sources":["../../../src/graph/auth/device-code-flow.ts"],"names":[],"mappings":"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"}
@@ -10,4 +10,5 @@
10
10
  export { loadGraphConfig, getAuthorityUrl, GRAPH_SCOPES, type GraphAuthConfig } from './config.js';
11
11
  export { createTokenCachePlugin, hasTokenCache, clearTokenCache, getTokenCacheDir, getTokenCacheFile, } from './token-cache.js';
12
12
  export { acquireTokenInteractive, acquireTokenSilent, getAccessToken, isAuthenticated, getAccount, signOut, resetMsalInstance, type DeviceCodeCallback, } from './device-code-flow.js';
13
+ export { DEFAULT_ACCOUNT_ID, resolveAccountId, currentAccountId, resetAccountId, } from './account-id.js';
13
14
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/graph/auth/index.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH;;;;GAIG;AAEH,OAAO,EAAE,eAAe,EAAE,eAAe,EAAE,YAAY,EAAE,KAAK,eAAe,EAAE,MAAM,aAAa,CAAC;AAEnG,OAAO,EACL,sBAAsB,EACtB,aAAa,EACb,eAAe,EACf,gBAAgB,EAChB,iBAAiB,GAClB,MAAM,kBAAkB,CAAC;AAE1B,OAAO,EACL,uBAAuB,EACvB,kBAAkB,EAClB,cAAc,EACd,eAAe,EACf,UAAU,EACV,OAAO,EACP,iBAAiB,EACjB,KAAK,kBAAkB,GACxB,MAAM,uBAAuB,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/graph/auth/index.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH;;;;GAIG;AAEH,OAAO,EAAE,eAAe,EAAE,eAAe,EAAE,YAAY,EAAE,KAAK,eAAe,EAAE,MAAM,aAAa,CAAC;AAEnG,OAAO,EACL,sBAAsB,EACtB,aAAa,EACb,eAAe,EACf,gBAAgB,EAChB,iBAAiB,GAClB,MAAM,kBAAkB,CAAC;AAE1B,OAAO,EACL,uBAAuB,EACvB,kBAAkB,EAClB,cAAc,EACd,eAAe,EACf,UAAU,EACV,OAAO,EACP,iBAAiB,EACjB,KAAK,kBAAkB,GACxB,MAAM,uBAAuB,CAAC;AAE/B,OAAO,EACL,kBAAkB,EAClB,gBAAgB,EAChB,gBAAgB,EAChB,cAAc,GACf,MAAM,iBAAiB,CAAC"}
@@ -10,4 +10,5 @@
10
10
  export { loadGraphConfig, getAuthorityUrl, GRAPH_SCOPES } from './config.js';
11
11
  export { createTokenCachePlugin, hasTokenCache, clearTokenCache, getTokenCacheDir, getTokenCacheFile, } from './token-cache.js';
12
12
  export { acquireTokenInteractive, acquireTokenSilent, getAccessToken, isAuthenticated, getAccount, signOut, resetMsalInstance, } from './device-code-flow.js';
13
+ export { DEFAULT_ACCOUNT_ID, resolveAccountId, currentAccountId, resetAccountId, } from './account-id.js';
13
14
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/graph/auth/index.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH;;;;GAIG;AAEH,OAAO,EAAE,eAAe,EAAE,eAAe,EAAE,YAAY,EAAwB,MAAM,aAAa,CAAC;AAEnG,OAAO,EACL,sBAAsB,EACtB,aAAa,EACb,eAAe,EACf,gBAAgB,EAChB,iBAAiB,GAClB,MAAM,kBAAkB,CAAC;AAE1B,OAAO,EACL,uBAAuB,EACvB,kBAAkB,EAClB,cAAc,EACd,eAAe,EACf,UAAU,EACV,OAAO,EACP,iBAAiB,GAElB,MAAM,uBAAuB,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/graph/auth/index.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH;;;;GAIG;AAEH,OAAO,EAAE,eAAe,EAAE,eAAe,EAAE,YAAY,EAAwB,MAAM,aAAa,CAAC;AAEnG,OAAO,EACL,sBAAsB,EACtB,aAAa,EACb,eAAe,EACf,gBAAgB,EAChB,iBAAiB,GAClB,MAAM,kBAAkB,CAAC;AAE1B,OAAO,EACL,uBAAuB,EACvB,kBAAkB,EAClB,cAAc,EACd,eAAe,EACf,UAAU,EACV,OAAO,EACP,iBAAiB,GAElB,MAAM,uBAAuB,CAAC;AAE/B,OAAO,EACL,kBAAkB,EAClB,gBAAgB,EAChB,gBAAgB,EAChB,cAAc,GACf,MAAM,iBAAiB,CAAC"}
@@ -5,7 +5,7 @@
5
5
  /**
6
6
  * MSAL token cache plugin for persistent token storage.
7
7
  *
8
- * Stores tokens in ~/.outlook-mcp/tokens.json for persistence
8
+ * Stores tokens in ~/.mcp-office365/tokens.json for persistence
9
9
  * across application restarts.
10
10
  */
11
11
  import { existsSync, mkdirSync, readFileSync, writeFileSync } from 'node:fs';
@@ -14,7 +14,7 @@ import { join } from 'node:path';
14
14
  /**
15
15
  * Directory where tokens are stored.
16
16
  */
17
- const TOKEN_CACHE_DIR = join(homedir(), '.outlook-mcp');
17
+ const TOKEN_CACHE_DIR = join(homedir(), '.mcp-office365');
18
18
  /**
19
19
  * Path to the token cache file.
20
20
  */
@@ -1 +1 @@
1
- {"version":3,"file":"token-cache.js","sourceRoot":"","sources":["../../../src/graph/auth/token-cache.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH;;;;;GAKG;AAEH,OAAO,EAAE,UAAU,EAAE,SAAS,EAAE,YAAY,EAAE,aAAa,EAAE,MAAM,SAAS,CAAC;AAC7E,OAAO,EAAE,OAAO,EAAE,MAAM,SAAS,CAAC;AAClC,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AAGjC;;GAEG;AACH,MAAM,eAAe,GAAG,IAAI,CAAC,OAAO,EAAE,EAAE,cAAc,CAAC,CAAC;AAExD;;GAEG;AACH,MAAM,gBAAgB,GAAG,IAAI,CAAC,eAAe,EAAE,aAAa,CAAC,CAAC;AAE9D;;GAEG;AACH,SAAS,cAAc;IACrB,IAAI,CAAC,UAAU,CAAC,eAAe,CAAC,EAAE,CAAC;QACjC,SAAS,CAAC,eAAe,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC,CAAC;IAC/D,CAAC;AACH,CAAC;AAED;;GAEG;AACH,MAAM,OAAO,oBAAoB;IAC/B;;;OAGG;IACH,4DAA4D;IAC5D,KAAK,CAAC,iBAAiB,CAAC,OAA0B;QAChD,IAAI,CAAC;YACH,IAAI,UAAU,CAAC,gBAAgB,CAAC,EAAE,CAAC;gBACjC,MAAM,IAAI,GAAG,YAAY,CAAC,gBAAgB,EAAE,OAAO,CAAC,CAAC;gBACrD,OAAO,CAAC,UAAU,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC;YACvC,CAAC;QACH,CAAC;QAAC,MAAM,CAAC;YACP,0CAA0C;QAC5C,CAAC;IACH,CAAC;IAED;;;OAGG;IACH,4DAA4D;IAC5D,KAAK,CAAC,gBAAgB,CAAC,OAA0B;QAC/C,IAAI,OAAO,CAAC,eAAe,EAAE,CAAC;YAC5B,IAAI,CAAC;gBACH,cAAc,EAAE,CAAC;gBACjB,MAAM,IAAI,GAAG,OAAO,CAAC,UAAU,CAAC,SAAS,EAAE,CAAC;gBAC5C,aAAa,CAAC,gBAAgB,EAAE,IAAI,EAAE,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC,CAAC;YACzD,CAAC;YAAC,MAAM,CAAC;gBACP,sEAAsE;YACxE,CAAC;QACH,CAAC;IACH,CAAC;CACF;AAED;;GAEG;AACH,MAAM,UAAU,sBAAsB;IACpC,OAAO,IAAI,oBAAoB,EAAE,CAAC;AACpC,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,aAAa;IAC3B,OAAO,UAAU,CAAC,gBAAgB,CAAC,CAAC;AACtC,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,eAAe;IAC7B,IAAI,CAAC;QACH,IAAI,UAAU,CAAC,gBAAgB,CAAC,EAAE,CAAC;YACjC,aAAa,CAAC,gBAAgB,EAAE,IAAI,EAAE,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC,CAAC;QACzD,CAAC;IACH,CAAC;IAAC,MAAM,CAAC;QACP,gBAAgB;IAClB,CAAC;AACH,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,gBAAgB;IAC9B,OAAO,eAAe,CAAC;AACzB,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,iBAAiB;IAC/B,OAAO,gBAAgB,CAAC;AAC1B,CAAC"}
1
+ {"version":3,"file":"token-cache.js","sourceRoot":"","sources":["../../../src/graph/auth/token-cache.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH;;;;;GAKG;AAEH,OAAO,EAAE,UAAU,EAAE,SAAS,EAAE,YAAY,EAAE,aAAa,EAAE,MAAM,SAAS,CAAC;AAC7E,OAAO,EAAE,OAAO,EAAE,MAAM,SAAS,CAAC;AAClC,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AAGjC;;GAEG;AACH,MAAM,eAAe,GAAG,IAAI,CAAC,OAAO,EAAE,EAAE,gBAAgB,CAAC,CAAC;AAE1D;;GAEG;AACH,MAAM,gBAAgB,GAAG,IAAI,CAAC,eAAe,EAAE,aAAa,CAAC,CAAC;AAE9D;;GAEG;AACH,SAAS,cAAc;IACrB,IAAI,CAAC,UAAU,CAAC,eAAe,CAAC,EAAE,CAAC;QACjC,SAAS,CAAC,eAAe,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC,CAAC;IAC/D,CAAC;AACH,CAAC;AAED;;GAEG;AACH,MAAM,OAAO,oBAAoB;IAC/B;;;OAGG;IACH,4DAA4D;IAC5D,KAAK,CAAC,iBAAiB,CAAC,OAA0B;QAChD,IAAI,CAAC;YACH,IAAI,UAAU,CAAC,gBAAgB,CAAC,EAAE,CAAC;gBACjC,MAAM,IAAI,GAAG,YAAY,CAAC,gBAAgB,EAAE,OAAO,CAAC,CAAC;gBACrD,OAAO,CAAC,UAAU,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC;YACvC,CAAC;QACH,CAAC;QAAC,MAAM,CAAC;YACP,0CAA0C;QAC5C,CAAC;IACH,CAAC;IAED;;;OAGG;IACH,4DAA4D;IAC5D,KAAK,CAAC,gBAAgB,CAAC,OAA0B;QAC/C,IAAI,OAAO,CAAC,eAAe,EAAE,CAAC;YAC5B,IAAI,CAAC;gBACH,cAAc,EAAE,CAAC;gBACjB,MAAM,IAAI,GAAG,OAAO,CAAC,UAAU,CAAC,SAAS,EAAE,CAAC;gBAC5C,aAAa,CAAC,gBAAgB,EAAE,IAAI,EAAE,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC,CAAC;YACzD,CAAC;YAAC,MAAM,CAAC;gBACP,sEAAsE;YACxE,CAAC;QACH,CAAC;IACH,CAAC;CACF;AAED;;GAEG;AACH,MAAM,UAAU,sBAAsB;IACpC,OAAO,IAAI,oBAAoB,EAAE,CAAC;AACpC,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,aAAa;IAC3B,OAAO,UAAU,CAAC,gBAAgB,CAAC,CAAC;AACtC,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,eAAe;IAC7B,IAAI,CAAC;QACH,IAAI,UAAU,CAAC,gBAAgB,CAAC,EAAE,CAAC;YACjC,aAAa,CAAC,gBAAgB,EAAE,IAAI,EAAE,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC,CAAC;QACzD,CAAC;IACH,CAAC;IAAC,MAAM,CAAC;QACP,gBAAgB;IAClB,CAAC;AACH,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,gBAAgB;IAC9B,OAAO,eAAe,CAAC;AACzB,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,iBAAiB;IAC/B,OAAO,gBAAgB,CAAC;AAC1B,CAAC"}