@jbctechsolutions/mcp-office365 3.0.0 → 4.0.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 (340) hide show
  1. package/README.md +42 -65
  2. package/dist/approval/hash.d.ts +8 -8
  3. package/dist/approval/token-manager.d.ts +12 -6
  4. package/dist/approval/token-manager.d.ts.map +1 -1
  5. package/dist/approval/token-manager.js +11 -3
  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 +4 -0
  10. package/dist/cli.d.ts.map +1 -1
  11. package/dist/cli.js +18 -3
  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 +8 -0
  27. package/dist/graph/auth/config.js.map +1 -1
  28. package/dist/graph/auth/index.d.ts +1 -0
  29. package/dist/graph/auth/index.d.ts.map +1 -1
  30. package/dist/graph/auth/index.js +1 -0
  31. package/dist/graph/auth/index.js.map +1 -1
  32. package/dist/graph/client/graph-client.d.ts +105 -0
  33. package/dist/graph/client/graph-client.d.ts.map +1 -1
  34. package/dist/graph/client/graph-client.js +414 -18
  35. package/dist/graph/client/graph-client.js.map +1 -1
  36. package/dist/graph/client/immutable-id-middleware.d.ts +50 -0
  37. package/dist/graph/client/immutable-id-middleware.d.ts.map +1 -0
  38. package/dist/graph/client/immutable-id-middleware.js +137 -0
  39. package/dist/graph/client/immutable-id-middleware.js.map +1 -0
  40. package/dist/graph/content-readers.d.ts +0 -12
  41. package/dist/graph/content-readers.d.ts.map +1 -1
  42. package/dist/graph/content-readers.js +0 -21
  43. package/dist/graph/content-readers.js.map +1 -1
  44. package/dist/graph/index.d.ts +5 -6
  45. package/dist/graph/index.d.ts.map +1 -1
  46. package/dist/graph/index.js +5 -6
  47. package/dist/graph/index.js.map +1 -1
  48. package/dist/graph/mailbox-adapter.d.ts +15 -15
  49. package/dist/graph/mappers/contact-mapper.d.ts +4 -1
  50. package/dist/graph/mappers/contact-mapper.d.ts.map +1 -1
  51. package/dist/graph/mappers/contact-mapper.js +7 -3
  52. package/dist/graph/mappers/contact-mapper.js.map +1 -1
  53. package/dist/graph/mappers/email-mapper.d.ts.map +1 -1
  54. package/dist/graph/mappers/email-mapper.js +7 -4
  55. package/dist/graph/mappers/email-mapper.js.map +1 -1
  56. package/dist/graph/mappers/event-mapper.d.ts.map +1 -1
  57. package/dist/graph/mappers/event-mapper.js +6 -3
  58. package/dist/graph/mappers/event-mapper.js.map +1 -1
  59. package/dist/graph/mappers/folder-mapper.d.ts +0 -4
  60. package/dist/graph/mappers/folder-mapper.d.ts.map +1 -1
  61. package/dist/graph/mappers/folder-mapper.js +9 -19
  62. package/dist/graph/mappers/folder-mapper.js.map +1 -1
  63. package/dist/graph/mappers/index.d.ts +2 -2
  64. package/dist/graph/mappers/index.d.ts.map +1 -1
  65. package/dist/graph/mappers/index.js +2 -2
  66. package/dist/graph/mappers/index.js.map +1 -1
  67. package/dist/graph/mappers/task-mapper.d.ts +4 -2
  68. package/dist/graph/mappers/task-mapper.d.ts.map +1 -1
  69. package/dist/graph/mappers/task-mapper.js +7 -5
  70. package/dist/graph/mappers/task-mapper.js.map +1 -1
  71. package/dist/graph/mappers/utils.d.ts +0 -10
  72. package/dist/graph/mappers/utils.d.ts.map +1 -1
  73. package/dist/graph/mappers/utils.js +0 -19
  74. package/dist/graph/mappers/utils.js.map +1 -1
  75. package/dist/graph/repository.d.ts +400 -270
  76. package/dist/graph/repository.d.ts.map +1 -1
  77. package/dist/graph/repository.js +739 -1046
  78. package/dist/graph/repository.js.map +1 -1
  79. package/dist/ids/next-action.d.ts +29 -0
  80. package/dist/ids/next-action.d.ts.map +1 -0
  81. package/dist/ids/next-action.js +58 -0
  82. package/dist/ids/next-action.js.map +1 -0
  83. package/dist/ids/resolver.d.ts +2 -1
  84. package/dist/ids/resolver.d.ts.map +1 -1
  85. package/dist/ids/resolver.js +19 -4
  86. package/dist/ids/resolver.js.map +1 -1
  87. package/dist/ids/schema.d.ts +91 -0
  88. package/dist/ids/schema.d.ts.map +1 -0
  89. package/dist/ids/schema.js +131 -0
  90. package/dist/ids/schema.js.map +1 -0
  91. package/dist/ids/token.d.ts +7 -1
  92. package/dist/ids/token.d.ts.map +1 -1
  93. package/dist/ids/token.js +46 -7
  94. package/dist/ids/token.js.map +1 -1
  95. package/dist/index.d.ts +4 -6
  96. package/dist/index.d.ts.map +1 -1
  97. package/dist/index.js +63 -100
  98. package/dist/index.js.map +1 -1
  99. package/dist/parsers/index.d.ts +0 -1
  100. package/dist/parsers/index.d.ts.map +1 -1
  101. package/dist/parsers/index.js +0 -1
  102. package/dist/parsers/index.js.map +1 -1
  103. package/dist/registry/all-tools.d.ts.map +1 -1
  104. package/dist/registry/all-tools.js +8 -4
  105. package/dist/registry/all-tools.js.map +1 -1
  106. package/dist/registry/context.d.ts +1 -7
  107. package/dist/registry/context.d.ts.map +1 -1
  108. package/dist/registry/context.js +0 -11
  109. package/dist/registry/context.js.map +1 -1
  110. package/dist/registry/elicit-links.d.ts +35 -0
  111. package/dist/registry/elicit-links.d.ts.map +1 -0
  112. package/dist/registry/elicit-links.js +102 -0
  113. package/dist/registry/elicit-links.js.map +1 -0
  114. package/dist/registry/elicitor.d.ts +24 -0
  115. package/dist/registry/elicitor.d.ts.map +1 -0
  116. package/dist/registry/elicitor.js +51 -0
  117. package/dist/registry/elicitor.js.map +1 -0
  118. package/dist/registry/index.d.ts +2 -2
  119. package/dist/registry/index.d.ts.map +1 -1
  120. package/dist/registry/index.js +1 -1
  121. package/dist/registry/index.js.map +1 -1
  122. package/dist/registry/registry.d.ts +11 -0
  123. package/dist/registry/registry.d.ts.map +1 -1
  124. package/dist/registry/registry.js +87 -0
  125. package/dist/registry/registry.js.map +1 -1
  126. package/dist/registry/types.d.ts +61 -13
  127. package/dist/registry/types.d.ts.map +1 -1
  128. package/dist/state/delta-store.d.ts +85 -0
  129. package/dist/state/delta-store.d.ts.map +1 -0
  130. package/dist/state/delta-store.js +124 -0
  131. package/dist/state/delta-store.js.map +1 -0
  132. package/dist/state/schema.d.ts +2 -3
  133. package/dist/state/schema.d.ts.map +1 -1
  134. package/dist/state/schema.js +26 -3
  135. package/dist/state/schema.js.map +1 -1
  136. package/dist/state/store.d.ts +3 -0
  137. package/dist/state/store.d.ts.map +1 -1
  138. package/dist/state/store.js +4 -0
  139. package/dist/state/store.js.map +1 -1
  140. package/dist/tools/calendar-graph.d.ts.map +1 -1
  141. package/dist/tools/calendar-graph.js +10 -9
  142. package/dist/tools/calendar-graph.js.map +1 -1
  143. package/dist/tools/calendar-permissions.d.ts +7 -7
  144. package/dist/tools/calendar-permissions.d.ts.map +1 -1
  145. package/dist/tools/calendar-permissions.js +7 -4
  146. package/dist/tools/calendar-permissions.js.map +1 -1
  147. package/dist/tools/calendar.d.ts +14 -114
  148. package/dist/tools/calendar.d.ts.map +1 -1
  149. package/dist/tools/calendar.js +41 -202
  150. package/dist/tools/calendar.js.map +1 -1
  151. package/dist/tools/categories.d.ts +4 -4
  152. package/dist/tools/categories.d.ts.map +1 -1
  153. package/dist/tools/categories.js +5 -2
  154. package/dist/tools/categories.js.map +1 -1
  155. package/dist/tools/checklist-items.d.ts +9 -9
  156. package/dist/tools/checklist-items.d.ts.map +1 -1
  157. package/dist/tools/checklist-items.js +8 -5
  158. package/dist/tools/checklist-items.js.map +1 -1
  159. package/dist/tools/contact-folders.d.ts +2 -2
  160. package/dist/tools/contact-folders.d.ts.map +1 -1
  161. package/dist/tools/contact-folders.js +5 -2
  162. package/dist/tools/contact-folders.js.map +1 -1
  163. package/dist/tools/contacts-graph.d.ts +1 -1
  164. package/dist/tools/contacts-graph.d.ts.map +1 -1
  165. package/dist/tools/contacts-graph.js +8 -6
  166. package/dist/tools/contacts-graph.js.map +1 -1
  167. package/dist/tools/contacts.d.ts +9 -44
  168. package/dist/tools/contacts.d.ts.map +1 -1
  169. package/dist/tools/contacts.js +23 -131
  170. package/dist/tools/contacts.js.map +1 -1
  171. package/dist/tools/excel.d.ts +10 -10
  172. package/dist/tools/excel.d.ts.map +1 -1
  173. package/dist/tools/excel.js +9 -6
  174. package/dist/tools/excel.js.map +1 -1
  175. package/dist/tools/focused-overrides.d.ts +4 -4
  176. package/dist/tools/focused-overrides.d.ts.map +1 -1
  177. package/dist/tools/focused-overrides.js +5 -2
  178. package/dist/tools/focused-overrides.js.map +1 -1
  179. package/dist/tools/index.d.ts +4 -5
  180. package/dist/tools/index.d.ts.map +1 -1
  181. package/dist/tools/index.js +4 -6
  182. package/dist/tools/index.js.map +1 -1
  183. package/dist/tools/linked-resources.d.ts +7 -7
  184. package/dist/tools/linked-resources.d.ts.map +1 -1
  185. package/dist/tools/linked-resources.js +7 -4
  186. package/dist/tools/linked-resources.js.map +1 -1
  187. package/dist/tools/mail-graph.d.ts.map +1 -1
  188. package/dist/tools/mail-graph.js +21 -12
  189. package/dist/tools/mail-graph.js.map +1 -1
  190. package/dist/tools/mail-rules.d.ts +8 -8
  191. package/dist/tools/mail-rules.d.ts.map +1 -1
  192. package/dist/tools/mail-rules.js +7 -7
  193. package/dist/tools/mail-rules.js.map +1 -1
  194. package/dist/tools/mail-send.d.ts +27 -27
  195. package/dist/tools/mail-send.d.ts.map +1 -1
  196. package/dist/tools/mail-send.js +30 -19
  197. package/dist/tools/mail-send.js.map +1 -1
  198. package/dist/tools/mail.d.ts +22 -79
  199. package/dist/tools/mail.d.ts.map +1 -1
  200. package/dist/tools/mail.js +45 -293
  201. package/dist/tools/mail.js.map +1 -1
  202. package/dist/tools/mailbox-organization.d.ts +34 -37
  203. package/dist/tools/mailbox-organization.d.ts.map +1 -1
  204. package/dist/tools/mailbox-organization.js +72 -64
  205. package/dist/tools/mailbox-organization.js.map +1 -1
  206. package/dist/tools/meetings.d.ts +14 -14
  207. package/dist/tools/meetings.d.ts.map +1 -1
  208. package/dist/tools/meetings.js +8 -6
  209. package/dist/tools/meetings.js.map +1 -1
  210. package/dist/tools/onedrive.d.ts +16 -16
  211. package/dist/tools/onedrive.d.ts.map +1 -1
  212. package/dist/tools/onedrive.js +16 -11
  213. package/dist/tools/onedrive.js.map +1 -1
  214. package/dist/tools/onenote.d.ts +63 -0
  215. package/dist/tools/onenote.d.ts.map +1 -0
  216. package/dist/tools/onenote.js +221 -0
  217. package/dist/tools/onenote.js.map +1 -0
  218. package/dist/tools/planner-visualization.d.ts +5 -5
  219. package/dist/tools/planner-visualization.d.ts.map +1 -1
  220. package/dist/tools/planner-visualization.js +5 -4
  221. package/dist/tools/planner-visualization.js.map +1 -1
  222. package/dist/tools/planner.d.ts +59 -39
  223. package/dist/tools/planner.d.ts.map +1 -1
  224. package/dist/tools/planner.js +48 -23
  225. package/dist/tools/planner.js.map +1 -1
  226. package/dist/tools/shared-mailbox.d.ts +164 -0
  227. package/dist/tools/shared-mailbox.d.ts.map +1 -0
  228. package/dist/tools/shared-mailbox.js +318 -0
  229. package/dist/tools/shared-mailbox.js.map +1 -0
  230. package/dist/tools/sharepoint-lists.d.ts +131 -0
  231. package/dist/tools/sharepoint-lists.d.ts.map +1 -0
  232. package/dist/tools/sharepoint-lists.js +246 -0
  233. package/dist/tools/sharepoint-lists.js.map +1 -0
  234. package/dist/tools/sharepoint.d.ts +14 -14
  235. package/dist/tools/sharepoint.d.ts.map +1 -1
  236. package/dist/tools/sharepoint.js +11 -9
  237. package/dist/tools/sharepoint.js.map +1 -1
  238. package/dist/tools/task-attachments.d.ts +7 -7
  239. package/dist/tools/task-attachments.d.ts.map +1 -1
  240. package/dist/tools/task-attachments.js +7 -4
  241. package/dist/tools/task-attachments.js.map +1 -1
  242. package/dist/tools/task-lists.d.ts +3 -3
  243. package/dist/tools/task-lists.d.ts.map +1 -1
  244. package/dist/tools/task-lists.js +10 -6
  245. package/dist/tools/task-lists.js.map +1 -1
  246. package/dist/tools/tasks-graph.d.ts +2 -2
  247. package/dist/tools/tasks-graph.d.ts.map +1 -1
  248. package/dist/tools/tasks-graph.js +6 -4
  249. package/dist/tools/tasks-graph.js.map +1 -1
  250. package/dist/tools/tasks.d.ts +8 -43
  251. package/dist/tools/tasks.d.ts.map +1 -1
  252. package/dist/tools/tasks.js +19 -122
  253. package/dist/tools/tasks.js.map +1 -1
  254. package/dist/tools/teams.d.ts +46 -46
  255. package/dist/tools/teams.d.ts.map +1 -1
  256. package/dist/tools/teams.js +34 -26
  257. package/dist/tools/teams.js.map +1 -1
  258. package/dist/tools/what-changed.d.ts +48 -0
  259. package/dist/tools/what-changed.d.ts.map +1 -0
  260. package/dist/tools/what-changed.js +149 -0
  261. package/dist/tools/what-changed.js.map +1 -0
  262. package/dist/types/calendar.d.ts +1 -1
  263. package/dist/types/calendar.d.ts.map +1 -1
  264. package/dist/types/calendar.js.map +1 -1
  265. package/dist/types/contacts.d.ts +1 -1
  266. package/dist/types/contacts.d.ts.map +1 -1
  267. package/dist/types/contacts.js.map +1 -1
  268. package/dist/types/mail.d.ts +1 -1
  269. package/dist/types/mail.d.ts.map +1 -1
  270. package/dist/types/mail.js.map +1 -1
  271. package/dist/utils/errors.d.ts +15 -34
  272. package/dist/utils/errors.d.ts.map +1 -1
  273. package/dist/utils/errors.js +13 -49
  274. package/dist/utils/errors.js.map +1 -1
  275. package/dist/visualization/types.d.ts +4 -4
  276. package/package.json +3 -4
  277. package/dist/applescript/account-repository.d.ts +0 -30
  278. package/dist/applescript/account-repository.d.ts.map +0 -1
  279. package/dist/applescript/account-repository.js +0 -38
  280. package/dist/applescript/account-repository.js.map +0 -1
  281. package/dist/applescript/account-scripts.d.ts +0 -21
  282. package/dist/applescript/account-scripts.d.ts.map +0 -1
  283. package/dist/applescript/account-scripts.js +0 -180
  284. package/dist/applescript/account-scripts.js.map +0 -1
  285. package/dist/applescript/calendar-manager.d.ts +0 -44
  286. package/dist/applescript/calendar-manager.d.ts.map +0 -1
  287. package/dist/applescript/calendar-manager.js +0 -92
  288. package/dist/applescript/calendar-manager.js.map +0 -1
  289. package/dist/applescript/calendar-writer.d.ts +0 -36
  290. package/dist/applescript/calendar-writer.d.ts.map +0 -1
  291. package/dist/applescript/calendar-writer.js +0 -94
  292. package/dist/applescript/calendar-writer.js.map +0 -1
  293. package/dist/applescript/content-readers.d.ts +0 -114
  294. package/dist/applescript/content-readers.d.ts.map +0 -1
  295. package/dist/applescript/content-readers.js +0 -328
  296. package/dist/applescript/content-readers.js.map +0 -1
  297. package/dist/applescript/executor.d.ts +0 -60
  298. package/dist/applescript/executor.d.ts.map +0 -1
  299. package/dist/applescript/executor.js +0 -173
  300. package/dist/applescript/executor.js.map +0 -1
  301. package/dist/applescript/index.d.ts +0 -20
  302. package/dist/applescript/index.d.ts.map +0 -1
  303. package/dist/applescript/index.js +0 -29
  304. package/dist/applescript/index.js.map +0 -1
  305. package/dist/applescript/mail-sender.d.ts +0 -38
  306. package/dist/applescript/mail-sender.d.ts.map +0 -1
  307. package/dist/applescript/mail-sender.js +0 -67
  308. package/dist/applescript/mail-sender.js.map +0 -1
  309. package/dist/applescript/parser.d.ts +0 -235
  310. package/dist/applescript/parser.d.ts.map +0 -1
  311. package/dist/applescript/parser.js +0 -496
  312. package/dist/applescript/parser.js.map +0 -1
  313. package/dist/applescript/repository.d.ts +0 -64
  314. package/dist/applescript/repository.d.ts.map +0 -1
  315. package/dist/applescript/repository.js +0 -444
  316. package/dist/applescript/repository.js.map +0 -1
  317. package/dist/applescript/scripts.d.ts +0 -265
  318. package/dist/applescript/scripts.d.ts.map +0 -1
  319. package/dist/applescript/scripts.js +0 -1483
  320. package/dist/applescript/scripts.js.map +0 -1
  321. package/dist/parsers/olk15.d.ts +0 -87
  322. package/dist/parsers/olk15.d.ts.map +0 -1
  323. package/dist/parsers/olk15.js +0 -368
  324. package/dist/parsers/olk15.js.map +0 -1
  325. package/dist/tools/accounts.d.ts +0 -37
  326. package/dist/tools/accounts.d.ts.map +0 -1
  327. package/dist/tools/accounts.js +0 -68
  328. package/dist/tools/accounts.js.map +0 -1
  329. package/dist/tools/calendar-apple.d.ts +0 -39
  330. package/dist/tools/calendar-apple.d.ts.map +0 -1
  331. package/dist/tools/calendar-apple.js +0 -159
  332. package/dist/tools/calendar-apple.js.map +0 -1
  333. package/dist/tools/mail-apple.d.ts +0 -40
  334. package/dist/tools/mail-apple.d.ts.map +0 -1
  335. package/dist/tools/mail-apple.js +0 -146
  336. package/dist/tools/mail-apple.js.map +0 -1
  337. package/dist/tools/notes.d.ts +0 -86
  338. package/dist/tools/notes.d.ts.map +0 -1
  339. package/dist/tools/notes.js +0 -202
  340. package/dist/tools/notes.js.map +0 -1
@@ -2,14 +2,18 @@
2
2
  * Copyright (c) 2026 JBC Tech Solutions, LLC
3
3
  * Licensed under the MIT License. See LICENSE file in the project root.
4
4
  */
5
- import { IdForeignAccountError, IdUnknownError, NumericIdUnsupportedError, } from '../utils/errors.js';
5
+ import { IdForeignAccountError, IdUnknownError, IdEntityMismatchError, NumericIdUnsupportedError, } from '../utils/errors.js';
6
6
  import { parseToken } from './token.js';
7
7
  /**
8
8
  * Resolves an ID parameter to a Graph ID for the given signed-in account.
9
9
  * Throws a typed {@link import('../utils/errors.js').OutlookMcpError} on failure.
10
10
  */
11
- export function resolveId(id, accountId, store) {
12
- if (typeof id === 'number') {
11
+ export function resolveId(id, accountId, store, expectedEntityType) {
12
+ // A bare all-digits string is a legacy v2 hash id (Graph ids and durable
13
+ // tokens are never purely numeric), so surface the same actionable
14
+ // NUMERIC_ID_UNSUPPORTED rather than passing it through to Graph as an opaque
15
+ // id that only 404s. Covers callers whose schema is string-only (U6).
16
+ if (/^\d+$/.test(id)) {
13
17
  throw new NumericIdUnsupportedError(id);
14
18
  }
15
19
  const parsed = parseToken(id);
@@ -17,10 +21,21 @@ export function resolveId(id, accountId, store) {
17
21
  // Not a known token — treat as an opaque Graph ID the caller supplied.
18
22
  return { graphId: id, mutable: false };
19
23
  }
24
+ // A durable token for the wrong entity kind (e.g. a folder token passed as a
25
+ // contact id) must not resolve — otherwise it decodes to a foreign Graph id
26
+ // and the safety rests only on Graph 404-ing the mismatched collection.
27
+ if (expectedEntityType != null && parsed.entityType !== expectedEntityType) {
28
+ throw new IdEntityMismatchError(id, expectedEntityType, parsed.entityType);
29
+ }
20
30
  if (parsed.kind === 'self') {
21
- // graphId is always present for a self-encoding parse.
31
+ // graphId is always present for a self-encoding parse. Self-encoding tokens
32
+ // decode with zero storage, so no store is required to resolve them.
22
33
  return { graphId: parsed.graphId, mutable: false };
23
34
  }
35
+ // Alias-backed tokens need the store. Without one they can't be resolved.
36
+ if (store == null) {
37
+ throw new IdUnknownError(id);
38
+ }
24
39
  // Alias-backed: resolve against the store, scoped to the account.
25
40
  const row = store.getAlias(id, accountId);
26
41
  if (row !== null) {
@@ -1 +1 @@
1
- {"version":3,"file":"resolver.js","sourceRoot":"","sources":["../../src/ids/resolver.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAiBH,OAAO,EACL,qBAAqB,EACrB,cAAc,EACd,yBAAyB,GAC1B,MAAM,oBAAoB,CAAC;AAC5B,OAAO,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AASxC;;;GAGG;AACH,MAAM,UAAU,SAAS,CACvB,EAAmB,EACnB,SAAiB,EACjB,KAAiB;IAEjB,IAAI,OAAO,EAAE,KAAK,QAAQ,EAAE,CAAC;QAC3B,MAAM,IAAI,yBAAyB,CAAC,EAAE,CAAC,CAAC;IAC1C,CAAC;IAED,MAAM,MAAM,GAAG,UAAU,CAAC,EAAE,CAAC,CAAC;IAC9B,IAAI,MAAM,KAAK,IAAI,EAAE,CAAC;QACpB,uEAAuE;QACvE,OAAO,EAAE,OAAO,EAAE,EAAE,EAAE,OAAO,EAAE,KAAK,EAAE,CAAC;IACzC,CAAC;IAED,IAAI,MAAM,CAAC,IAAI,KAAK,MAAM,EAAE,CAAC;QAC3B,uDAAuD;QACvD,OAAO,EAAE,OAAO,EAAE,MAAM,CAAC,OAAiB,EAAE,OAAO,EAAE,KAAK,EAAE,CAAC;IAC/D,CAAC;IAED,kEAAkE;IAClE,MAAM,GAAG,GAAG,KAAK,CAAC,QAAQ,CAAC,EAAE,EAAE,SAAS,CAAC,CAAC;IAC1C,IAAI,GAAG,KAAK,IAAI,EAAE,CAAC;QACjB,OAAO,EAAE,OAAO,EAAE,GAAG,CAAC,OAAO,EAAE,OAAO,EAAE,GAAG,CAAC,OAAO,EAAE,CAAC;IACxD,CAAC;IAED,6EAA6E;IAC7E,6CAA6C;IAC7C,MAAM,KAAK,GAAG,KAAK,CAAC,eAAe,CAAC,EAAE,CAAC,CAAC;IACxC,IAAI,KAAK,KAAK,IAAI,IAAI,KAAK,KAAK,SAAS,EAAE,CAAC;QAC1C,MAAM,IAAI,qBAAqB,CAAC,EAAE,CAAC,CAAC;IACtC,CAAC;IACD,MAAM,IAAI,cAAc,CAAC,EAAE,CAAC,CAAC;AAC/B,CAAC"}
1
+ {"version":3,"file":"resolver.js","sourceRoot":"","sources":["../../src/ids/resolver.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAiBH,OAAO,EACL,qBAAqB,EACrB,cAAc,EACd,qBAAqB,EACrB,yBAAyB,GAC1B,MAAM,oBAAoB,CAAC;AAC5B,OAAO,EAAE,UAAU,EAAmB,MAAM,YAAY,CAAC;AASzD;;;GAGG;AACH,MAAM,UAAU,SAAS,CACvB,EAAU,EACV,SAAiB,EACjB,KAA6B,EAC7B,kBAA+B;IAE/B,yEAAyE;IACzE,mEAAmE;IACnE,8EAA8E;IAC9E,sEAAsE;IACtE,IAAI,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,CAAC;QACrB,MAAM,IAAI,yBAAyB,CAAC,EAAE,CAAC,CAAC;IAC1C,CAAC;IAED,MAAM,MAAM,GAAG,UAAU,CAAC,EAAE,CAAC,CAAC;IAC9B,IAAI,MAAM,KAAK,IAAI,EAAE,CAAC;QACpB,uEAAuE;QACvE,OAAO,EAAE,OAAO,EAAE,EAAE,EAAE,OAAO,EAAE,KAAK,EAAE,CAAC;IACzC,CAAC;IAED,6EAA6E;IAC7E,4EAA4E;IAC5E,wEAAwE;IACxE,IAAI,kBAAkB,IAAI,IAAI,IAAI,MAAM,CAAC,UAAU,KAAK,kBAAkB,EAAE,CAAC;QAC3E,MAAM,IAAI,qBAAqB,CAAC,EAAE,EAAE,kBAAkB,EAAE,MAAM,CAAC,UAAU,CAAC,CAAC;IAC7E,CAAC;IAED,IAAI,MAAM,CAAC,IAAI,KAAK,MAAM,EAAE,CAAC;QAC3B,4EAA4E;QAC5E,qEAAqE;QACrE,OAAO,EAAE,OAAO,EAAE,MAAM,CAAC,OAAiB,EAAE,OAAO,EAAE,KAAK,EAAE,CAAC;IAC/D,CAAC;IAED,0EAA0E;IAC1E,IAAI,KAAK,IAAI,IAAI,EAAE,CAAC;QAClB,MAAM,IAAI,cAAc,CAAC,EAAE,CAAC,CAAC;IAC/B,CAAC;IAED,kEAAkE;IAClE,MAAM,GAAG,GAAG,KAAK,CAAC,QAAQ,CAAC,EAAE,EAAE,SAAS,CAAC,CAAC;IAC1C,IAAI,GAAG,KAAK,IAAI,EAAE,CAAC;QACjB,OAAO,EAAE,OAAO,EAAE,GAAG,CAAC,OAAO,EAAE,OAAO,EAAE,GAAG,CAAC,OAAO,EAAE,CAAC;IACxD,CAAC;IAED,6EAA6E;IAC7E,6CAA6C;IAC7C,MAAM,KAAK,GAAG,KAAK,CAAC,eAAe,CAAC,EAAE,CAAC,CAAC;IACxC,IAAI,KAAK,KAAK,IAAI,IAAI,KAAK,KAAK,SAAS,EAAE,CAAC;QAC1C,MAAM,IAAI,qBAAqB,CAAC,EAAE,CAAC,CAAC;IACtC,CAAC;IACD,MAAM,IAAI,cAAc,CAAC,EAAE,CAAC,CAAC;AAC/B,CAAC"}
@@ -0,0 +1,91 @@
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
+ * Canonical per-entity Zod id schemas (U6).
7
+ *
8
+ * Every tool that accepts a durable-ID param should reference the shared schema
9
+ * for its entity (`Id.task`, `Id.plan`, …) instead of an ad-hoc
10
+ * `z.string().min(1).describe(...)`. This gives one place to define:
11
+ *
12
+ * - **normalization** — `.trim()` so a copy/pasted id with stray whitespace
13
+ * still resolves; `.min(1)` so an empty/whitespace-only id fails fast.
14
+ * - **a consistent, prefix-named description** — derived from the token tables
15
+ * (`prefixForEntity`), so the param doc always names the token shape (e.g.
16
+ * "a `td_` token") and where to get it.
17
+ *
18
+ * Deliberately NOT here: classification of the id (numeric-vs-token, wrong
19
+ * entity, alias store lookup). That stays in {@link resolveId} at execution
20
+ * time, which is the single source of truth and emits the specific typed codes
21
+ * (`NUMERIC_ID_UNSUPPORTED`, `ID_ENTITY_MISMATCH`, `ID_UNKNOWN`) agents key on.
22
+ * The schema is string-only (a JSON-number legacy id is a type error); a numeric
23
+ * *string* still passes and reaches `resolveId` for the specific message.
24
+ */
25
+ import { z } from 'zod';
26
+ import { type EntityType } from './token.js';
27
+ /** Human label + the tools that mint an entity's id, for the description. */
28
+ interface EntityMeta {
29
+ readonly label: string;
30
+ readonly from: string;
31
+ }
32
+ /**
33
+ * Per-entity description metadata. Only entities actually exposed as tool id
34
+ * params need an entry; others fall back to a generic description. Exported so a
35
+ * contract test can cross-check every `from` tool name against the registry,
36
+ * catching drift when a tool is renamed.
37
+ */
38
+ export declare const ENTITY_META: Partial<Record<EntityType, EntityMeta>>;
39
+ /** Builds the canonical, prefix-named description for an entity id. */
40
+ export declare function describeId(entityType: EntityType): string;
41
+ /**
42
+ * The canonical required id schema for an entity: a trimmed, non-empty string
43
+ * with a prefix-named description. Classification stays in `resolveId`.
44
+ */
45
+ export declare function idSchema(entityType: EntityType): z.ZodString;
46
+ /** The canonical optional id schema for an entity. */
47
+ export declare function optionalIdSchema(entityType: EntityType): z.ZodOptional<z.ZodString>;
48
+ /**
49
+ * Canonical required id schemas keyed by entity. Tools reference these directly
50
+ * (`Id.task`, `Id.plan`, …). A per-call `.describe()` may override the default
51
+ * description where a param needs extra context.
52
+ */
53
+ export declare const Id: {
54
+ readonly message: z.ZodString;
55
+ readonly event: z.ZodString;
56
+ readonly contact: z.ZodString;
57
+ readonly folder: z.ZodString;
58
+ readonly driveItem: z.ZodString;
59
+ readonly task: z.ZodString;
60
+ readonly taskList: z.ZodString;
61
+ readonly plan: z.ZodString;
62
+ readonly plannerBucket: z.ZodString;
63
+ readonly plannerTask: z.ZodString;
64
+ readonly attachment: z.ZodString;
65
+ readonly checklistItem: z.ZodString;
66
+ readonly linkedResource: z.ZodString;
67
+ readonly taskAttachment: z.ZodString;
68
+ readonly chat: z.ZodString;
69
+ readonly team: z.ZodString;
70
+ readonly channel: z.ZodString;
71
+ readonly chatMessage: z.ZodString;
72
+ readonly channelMessage: z.ZodString;
73
+ readonly contactFolder: z.ZodString;
74
+ readonly mailRule: z.ZodString;
75
+ readonly category: z.ZodString;
76
+ readonly focusedOverride: z.ZodString;
77
+ readonly calendarPermission: z.ZodString;
78
+ readonly onlineMeeting: z.ZodString;
79
+ readonly recording: z.ZodString;
80
+ readonly transcript: z.ZodString;
81
+ readonly site: z.ZodString;
82
+ readonly documentLibrary: z.ZodString;
83
+ readonly libraryDriveItem: z.ZodString;
84
+ readonly sharePointList: z.ZodString;
85
+ readonly sharePointListItem: z.ZodString;
86
+ readonly noteNotebook: z.ZodString;
87
+ readonly noteSection: z.ZodString;
88
+ readonly notePage: z.ZodString;
89
+ };
90
+ export {};
91
+ //# sourceMappingURL=schema.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"schema.d.ts","sourceRoot":"","sources":["../../src/ids/schema.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH;;;;;;;;;;;;;;;;;;;GAmBG;AAEH,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAmB,KAAK,UAAU,EAAE,MAAM,YAAY,CAAC;AAE9D,6EAA6E;AAC7E,UAAU,UAAU;IAClB,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;CACvB;AAED;;;;;GAKG;AACH,eAAO,MAAM,WAAW,EAAE,OAAO,CAAC,MAAM,CAAC,UAAU,EAAE,UAAU,CAAC,CAoC/D,CAAC;AAEF,uEAAuE;AACvE,wBAAgB,UAAU,CAAC,UAAU,EAAE,UAAU,GAAG,MAAM,CAMzD;AAED;;;GAGG;AACH,wBAAgB,QAAQ,CAAC,UAAU,EAAE,UAAU,GAAG,CAAC,CAAC,SAAS,CAE5D;AAED,sDAAsD;AACtD,wBAAgB,gBAAgB,CAAC,UAAU,EAAE,UAAU,GAAG,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,SAAS,CAAC,CAEnF;AAED;;;;GAIG;AACH,eAAO,MAAM,EAAE;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAoCiC,CAAC"}
@@ -0,0 +1,131 @@
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
+ * Canonical per-entity Zod id schemas (U6).
7
+ *
8
+ * Every tool that accepts a durable-ID param should reference the shared schema
9
+ * for its entity (`Id.task`, `Id.plan`, …) instead of an ad-hoc
10
+ * `z.string().min(1).describe(...)`. This gives one place to define:
11
+ *
12
+ * - **normalization** — `.trim()` so a copy/pasted id with stray whitespace
13
+ * still resolves; `.min(1)` so an empty/whitespace-only id fails fast.
14
+ * - **a consistent, prefix-named description** — derived from the token tables
15
+ * (`prefixForEntity`), so the param doc always names the token shape (e.g.
16
+ * "a `td_` token") and where to get it.
17
+ *
18
+ * Deliberately NOT here: classification of the id (numeric-vs-token, wrong
19
+ * entity, alias store lookup). That stays in {@link resolveId} at execution
20
+ * time, which is the single source of truth and emits the specific typed codes
21
+ * (`NUMERIC_ID_UNSUPPORTED`, `ID_ENTITY_MISMATCH`, `ID_UNKNOWN`) agents key on.
22
+ * The schema is string-only (a JSON-number legacy id is a type error); a numeric
23
+ * *string* still passes and reaches `resolveId` for the specific message.
24
+ */
25
+ import { z } from 'zod';
26
+ import { prefixForEntity } from './token.js';
27
+ /**
28
+ * Per-entity description metadata. Only entities actually exposed as tool id
29
+ * params need an entry; others fall back to a generic description. Exported so a
30
+ * contract test can cross-check every `from` tool name against the registry,
31
+ * catching drift when a tool is renamed.
32
+ */
33
+ export const ENTITY_META = {
34
+ message: { label: 'email message', from: 'list_emails / search_emails' },
35
+ event: { label: 'calendar event', from: 'list_events / search_events' },
36
+ contact: { label: 'contact', from: 'list_contacts / search_contacts' },
37
+ folder: { label: 'mail folder', from: 'list_folders' },
38
+ driveItem: { label: 'OneDrive item', from: 'list_drive_items / search_drive_items' },
39
+ task: { label: 'To Do task', from: 'list_tasks / search_tasks' },
40
+ taskList: { label: 'To Do task list', from: 'list_task_lists' },
41
+ plan: { label: 'Planner plan', from: 'list_plans' },
42
+ plannerBucket: { label: 'Planner bucket', from: 'list_buckets' },
43
+ plannerTask: { label: 'Planner task', from: 'list_planner_tasks' },
44
+ attachment: { label: 'email attachment', from: 'list_attachments' },
45
+ checklistItem: { label: 'task checklist item', from: 'list_checklist_items' },
46
+ linkedResource: { label: 'task linked resource', from: 'list_linked_resources' },
47
+ taskAttachment: { label: 'task attachment', from: 'list_task_attachments' },
48
+ chat: { label: 'Teams chat', from: 'list_chats' },
49
+ team: { label: 'team', from: 'list_teams' },
50
+ channel: { label: 'Teams channel', from: 'list_channels' },
51
+ chatMessage: { label: 'chat message', from: 'list_chat_messages' },
52
+ channelMessage: { label: 'channel message', from: 'list_channel_messages' },
53
+ contactFolder: { label: 'contact folder', from: 'list_contact_folders' },
54
+ mailRule: { label: 'inbox rule', from: 'list_mail_rules' },
55
+ category: { label: 'master category', from: 'list_categories' },
56
+ focusedOverride: { label: 'focused-inbox override', from: 'list_focused_overrides' },
57
+ calendarPermission: { label: 'calendar permission', from: 'list_calendar_permissions' },
58
+ onlineMeeting: { label: 'online meeting', from: 'list_online_meetings' },
59
+ recording: { label: 'meeting recording', from: 'list_meeting_recordings' },
60
+ transcript: { label: 'meeting transcript', from: 'list_meeting_transcripts' },
61
+ site: { label: 'SharePoint site', from: 'list_sites / search_sites' },
62
+ documentLibrary: { label: 'document library', from: 'list_document_libraries' },
63
+ libraryDriveItem: { label: 'library item', from: 'list_library_items' },
64
+ sharePointList: { label: 'SharePoint list', from: 'list_lists' },
65
+ sharePointListItem: { label: 'SharePoint list item', from: 'list_list_items' },
66
+ noteNotebook: { label: 'OneNote notebook', from: 'list_notebooks' },
67
+ noteSection: { label: 'OneNote section', from: 'list_note_sections' },
68
+ notePage: { label: 'OneNote page', from: 'list_note_pages / search_note_pages' },
69
+ };
70
+ /** Builds the canonical, prefix-named description for an entity id. */
71
+ export function describeId(entityType) {
72
+ const prefix = prefixForEntity(entityType);
73
+ const meta = ENTITY_META[entityType];
74
+ const label = meta?.label ?? entityType;
75
+ const source = meta != null ? ` from ${meta.from}` : '';
76
+ return `Durable ${label} ID — a \`${prefix}_\` token${source}. A raw Graph id is also accepted.`;
77
+ }
78
+ /**
79
+ * The canonical required id schema for an entity: a trimmed, non-empty string
80
+ * with a prefix-named description. Classification stays in `resolveId`.
81
+ */
82
+ export function idSchema(entityType) {
83
+ return z.string().trim().min(1).describe(describeId(entityType));
84
+ }
85
+ /** The canonical optional id schema for an entity. */
86
+ export function optionalIdSchema(entityType) {
87
+ return idSchema(entityType).optional();
88
+ }
89
+ /**
90
+ * Canonical required id schemas keyed by entity. Tools reference these directly
91
+ * (`Id.task`, `Id.plan`, …). A per-call `.describe()` may override the default
92
+ * description where a param needs extra context.
93
+ */
94
+ export const Id = {
95
+ message: idSchema('message'),
96
+ event: idSchema('event'),
97
+ contact: idSchema('contact'),
98
+ folder: idSchema('folder'),
99
+ driveItem: idSchema('driveItem'),
100
+ task: idSchema('task'),
101
+ taskList: idSchema('taskList'),
102
+ plan: idSchema('plan'),
103
+ plannerBucket: idSchema('plannerBucket'),
104
+ plannerTask: idSchema('plannerTask'),
105
+ attachment: idSchema('attachment'),
106
+ checklistItem: idSchema('checklistItem'),
107
+ linkedResource: idSchema('linkedResource'),
108
+ taskAttachment: idSchema('taskAttachment'),
109
+ chat: idSchema('chat'),
110
+ team: idSchema('team'),
111
+ channel: idSchema('channel'),
112
+ chatMessage: idSchema('chatMessage'),
113
+ channelMessage: idSchema('channelMessage'),
114
+ contactFolder: idSchema('contactFolder'),
115
+ mailRule: idSchema('mailRule'),
116
+ category: idSchema('category'),
117
+ focusedOverride: idSchema('focusedOverride'),
118
+ calendarPermission: idSchema('calendarPermission'),
119
+ onlineMeeting: idSchema('onlineMeeting'),
120
+ recording: idSchema('recording'),
121
+ transcript: idSchema('transcript'),
122
+ site: idSchema('site'),
123
+ documentLibrary: idSchema('documentLibrary'),
124
+ libraryDriveItem: idSchema('libraryDriveItem'),
125
+ sharePointList: idSchema('sharePointList'),
126
+ sharePointListItem: idSchema('sharePointListItem'),
127
+ noteNotebook: idSchema('noteNotebook'),
128
+ noteSection: idSchema('noteSection'),
129
+ notePage: idSchema('notePage'),
130
+ };
131
+ //# sourceMappingURL=schema.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"schema.js","sourceRoot":"","sources":["../../src/ids/schema.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH;;;;;;;;;;;;;;;;;;;GAmBG;AAEH,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAE,eAAe,EAAmB,MAAM,YAAY,CAAC;AAQ9D;;;;;GAKG;AACH,MAAM,CAAC,MAAM,WAAW,GAA4C;IAClE,OAAO,EAAE,EAAE,KAAK,EAAE,eAAe,EAAE,IAAI,EAAE,6BAA6B,EAAE;IACxE,KAAK,EAAE,EAAE,KAAK,EAAE,gBAAgB,EAAE,IAAI,EAAE,6BAA6B,EAAE;IACvE,OAAO,EAAE,EAAE,KAAK,EAAE,SAAS,EAAE,IAAI,EAAE,iCAAiC,EAAE;IACtE,MAAM,EAAE,EAAE,KAAK,EAAE,aAAa,EAAE,IAAI,EAAE,cAAc,EAAE;IACtD,SAAS,EAAE,EAAE,KAAK,EAAE,eAAe,EAAE,IAAI,EAAE,uCAAuC,EAAE;IACpF,IAAI,EAAE,EAAE,KAAK,EAAE,YAAY,EAAE,IAAI,EAAE,2BAA2B,EAAE;IAChE,QAAQ,EAAE,EAAE,KAAK,EAAE,iBAAiB,EAAE,IAAI,EAAE,iBAAiB,EAAE;IAC/D,IAAI,EAAE,EAAE,KAAK,EAAE,cAAc,EAAE,IAAI,EAAE,YAAY,EAAE;IACnD,aAAa,EAAE,EAAE,KAAK,EAAE,gBAAgB,EAAE,IAAI,EAAE,cAAc,EAAE;IAChE,WAAW,EAAE,EAAE,KAAK,EAAE,cAAc,EAAE,IAAI,EAAE,oBAAoB,EAAE;IAClE,UAAU,EAAE,EAAE,KAAK,EAAE,kBAAkB,EAAE,IAAI,EAAE,kBAAkB,EAAE;IACnE,aAAa,EAAE,EAAE,KAAK,EAAE,qBAAqB,EAAE,IAAI,EAAE,sBAAsB,EAAE;IAC7E,cAAc,EAAE,EAAE,KAAK,EAAE,sBAAsB,EAAE,IAAI,EAAE,uBAAuB,EAAE;IAChF,cAAc,EAAE,EAAE,KAAK,EAAE,iBAAiB,EAAE,IAAI,EAAE,uBAAuB,EAAE;IAC3E,IAAI,EAAE,EAAE,KAAK,EAAE,YAAY,EAAE,IAAI,EAAE,YAAY,EAAE;IACjD,IAAI,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE,YAAY,EAAE;IAC3C,OAAO,EAAE,EAAE,KAAK,EAAE,eAAe,EAAE,IAAI,EAAE,eAAe,EAAE;IAC1D,WAAW,EAAE,EAAE,KAAK,EAAE,cAAc,EAAE,IAAI,EAAE,oBAAoB,EAAE;IAClE,cAAc,EAAE,EAAE,KAAK,EAAE,iBAAiB,EAAE,IAAI,EAAE,uBAAuB,EAAE;IAC3E,aAAa,EAAE,EAAE,KAAK,EAAE,gBAAgB,EAAE,IAAI,EAAE,sBAAsB,EAAE;IACxE,QAAQ,EAAE,EAAE,KAAK,EAAE,YAAY,EAAE,IAAI,EAAE,iBAAiB,EAAE;IAC1D,QAAQ,EAAE,EAAE,KAAK,EAAE,iBAAiB,EAAE,IAAI,EAAE,iBAAiB,EAAE;IAC/D,eAAe,EAAE,EAAE,KAAK,EAAE,wBAAwB,EAAE,IAAI,EAAE,wBAAwB,EAAE;IACpF,kBAAkB,EAAE,EAAE,KAAK,EAAE,qBAAqB,EAAE,IAAI,EAAE,2BAA2B,EAAE;IACvF,aAAa,EAAE,EAAE,KAAK,EAAE,gBAAgB,EAAE,IAAI,EAAE,sBAAsB,EAAE;IACxE,SAAS,EAAE,EAAE,KAAK,EAAE,mBAAmB,EAAE,IAAI,EAAE,yBAAyB,EAAE;IAC1E,UAAU,EAAE,EAAE,KAAK,EAAE,oBAAoB,EAAE,IAAI,EAAE,0BAA0B,EAAE;IAC7E,IAAI,EAAE,EAAE,KAAK,EAAE,iBAAiB,EAAE,IAAI,EAAE,2BAA2B,EAAE;IACrE,eAAe,EAAE,EAAE,KAAK,EAAE,kBAAkB,EAAE,IAAI,EAAE,yBAAyB,EAAE;IAC/E,gBAAgB,EAAE,EAAE,KAAK,EAAE,cAAc,EAAE,IAAI,EAAE,oBAAoB,EAAE;IACvE,cAAc,EAAE,EAAE,KAAK,EAAE,iBAAiB,EAAE,IAAI,EAAE,YAAY,EAAE;IAChE,kBAAkB,EAAE,EAAE,KAAK,EAAE,sBAAsB,EAAE,IAAI,EAAE,iBAAiB,EAAE;IAC9E,YAAY,EAAE,EAAE,KAAK,EAAE,kBAAkB,EAAE,IAAI,EAAE,gBAAgB,EAAE;IACnE,WAAW,EAAE,EAAE,KAAK,EAAE,iBAAiB,EAAE,IAAI,EAAE,oBAAoB,EAAE;IACrE,QAAQ,EAAE,EAAE,KAAK,EAAE,cAAc,EAAE,IAAI,EAAE,qCAAqC,EAAE;CACjF,CAAC;AAEF,uEAAuE;AACvE,MAAM,UAAU,UAAU,CAAC,UAAsB;IAC/C,MAAM,MAAM,GAAG,eAAe,CAAC,UAAU,CAAC,CAAC;IAC3C,MAAM,IAAI,GAAG,WAAW,CAAC,UAAU,CAAC,CAAC;IACrC,MAAM,KAAK,GAAG,IAAI,EAAE,KAAK,IAAI,UAAU,CAAC;IACxC,MAAM,MAAM,GAAG,IAAI,IAAI,IAAI,CAAC,CAAC,CAAC,SAAS,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;IACxD,OAAO,WAAW,KAAK,aAAa,MAAM,YAAY,MAAM,oCAAoC,CAAC;AACnG,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,QAAQ,CAAC,UAAsB;IAC7C,OAAO,CAAC,CAAC,MAAM,EAAE,CAAC,IAAI,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,UAAU,CAAC,UAAU,CAAC,CAAC,CAAC;AACnE,CAAC;AAED,sDAAsD;AACtD,MAAM,UAAU,gBAAgB,CAAC,UAAsB;IACrD,OAAO,QAAQ,CAAC,UAAU,CAAC,CAAC,QAAQ,EAAE,CAAC;AACzC,CAAC;AAED;;;;GAIG;AACH,MAAM,CAAC,MAAM,EAAE,GAAG;IAChB,OAAO,EAAE,QAAQ,CAAC,SAAS,CAAC;IAC5B,KAAK,EAAE,QAAQ,CAAC,OAAO,CAAC;IACxB,OAAO,EAAE,QAAQ,CAAC,SAAS,CAAC;IAC5B,MAAM,EAAE,QAAQ,CAAC,QAAQ,CAAC;IAC1B,SAAS,EAAE,QAAQ,CAAC,WAAW,CAAC;IAChC,IAAI,EAAE,QAAQ,CAAC,MAAM,CAAC;IACtB,QAAQ,EAAE,QAAQ,CAAC,UAAU,CAAC;IAC9B,IAAI,EAAE,QAAQ,CAAC,MAAM,CAAC;IACtB,aAAa,EAAE,QAAQ,CAAC,eAAe,CAAC;IACxC,WAAW,EAAE,QAAQ,CAAC,aAAa,CAAC;IACpC,UAAU,EAAE,QAAQ,CAAC,YAAY,CAAC;IAClC,aAAa,EAAE,QAAQ,CAAC,eAAe,CAAC;IACxC,cAAc,EAAE,QAAQ,CAAC,gBAAgB,CAAC;IAC1C,cAAc,EAAE,QAAQ,CAAC,gBAAgB,CAAC;IAC1C,IAAI,EAAE,QAAQ,CAAC,MAAM,CAAC;IACtB,IAAI,EAAE,QAAQ,CAAC,MAAM,CAAC;IACtB,OAAO,EAAE,QAAQ,CAAC,SAAS,CAAC;IAC5B,WAAW,EAAE,QAAQ,CAAC,aAAa,CAAC;IACpC,cAAc,EAAE,QAAQ,CAAC,gBAAgB,CAAC;IAC1C,aAAa,EAAE,QAAQ,CAAC,eAAe,CAAC;IACxC,QAAQ,EAAE,QAAQ,CAAC,UAAU,CAAC;IAC9B,QAAQ,EAAE,QAAQ,CAAC,UAAU,CAAC;IAC9B,eAAe,EAAE,QAAQ,CAAC,iBAAiB,CAAC;IAC5C,kBAAkB,EAAE,QAAQ,CAAC,oBAAoB,CAAC;IAClD,aAAa,EAAE,QAAQ,CAAC,eAAe,CAAC;IACxC,SAAS,EAAE,QAAQ,CAAC,WAAW,CAAC;IAChC,UAAU,EAAE,QAAQ,CAAC,YAAY,CAAC;IAClC,IAAI,EAAE,QAAQ,CAAC,MAAM,CAAC;IACtB,eAAe,EAAE,QAAQ,CAAC,iBAAiB,CAAC;IAC5C,gBAAgB,EAAE,QAAQ,CAAC,kBAAkB,CAAC;IAC9C,cAAc,EAAE,QAAQ,CAAC,gBAAgB,CAAC;IAC1C,kBAAkB,EAAE,QAAQ,CAAC,oBAAoB,CAAC;IAClD,YAAY,EAAE,QAAQ,CAAC,cAAc,CAAC;IACtC,WAAW,EAAE,QAAQ,CAAC,aAAa,CAAC;IACpC,QAAQ,EAAE,QAAQ,CAAC,UAAU,CAAC;CACgB,CAAC"}
@@ -3,7 +3,7 @@
3
3
  * Licensed under the MIT License. See LICENSE file in the project root.
4
4
  */
5
5
  /** Entity kinds addressable by a durable-ID token. */
6
- export type EntityType = 'message' | 'event' | 'contact' | 'folder' | 'driveItem' | 'task' | 'plan' | 'plannerTask' | 'chat' | 'team' | 'attachment' | 'channel' | 'chatMessage' | 'checklistItem';
6
+ export type EntityType = 'message' | 'event' | 'contact' | 'folder' | 'driveItem' | 'task' | 'taskList' | 'plan' | 'plannerBucket' | 'plannerTask' | 'chat' | 'team' | 'attachment' | 'channel' | 'chatMessage' | 'channelMessage' | 'checklistItem' | 'linkedResource' | 'taskAttachment' | 'noteNotebook' | 'noteSection' | 'notePage' | 'mailRule' | 'contactFolder' | 'category' | 'focusedOverride' | 'calendarPermission' | 'onlineMeeting' | 'recording' | 'transcript' | 'site' | 'documentLibrary' | 'libraryDriveItem' | 'sharePointList' | 'sharePointListItem';
7
7
  /** How a token encodes its target. */
8
8
  export type TokenKind = 'self' | 'alias';
9
9
  /**
@@ -27,6 +27,12 @@ export interface ParsedToken {
27
27
  }
28
28
  /** True when a prefix is a known self-encoding or alias prefix. */
29
29
  export declare function isKnownPrefix(prefix: string): boolean;
30
+ /**
31
+ * The 2-char token prefix for an entity type (e.g. `task` → `td`). Lets callers
32
+ * (canonical id schemas, next-action hints) name the token shape without
33
+ * duplicating the prefix tables. Throws for an entity with no allocated prefix.
34
+ */
35
+ export declare function prefixForEntity(entityType: EntityType): string;
30
36
  /**
31
37
  * Mints a self-encoding token carrying the immutable Graph ID (D1). Determin­istic.
32
38
  */
@@ -1 +1 @@
1
- {"version":3,"file":"token.d.ts","sourceRoot":"","sources":["../../src/ids/token.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAqBH,sDAAsD;AACtD,MAAM,MAAM,UAAU,GAClB,SAAS,GACT,OAAO,GACP,SAAS,GACT,QAAQ,GACR,WAAW,GACX,MAAM,GACN,MAAM,GACN,aAAa,GACb,MAAM,GACN,MAAM,GACN,YAAY,GACZ,SAAS,GACT,aAAa,GACb,eAAe,CAAC;AAEpB,sCAAsC;AACtC,MAAM,MAAM,SAAS,GAAG,MAAM,GAAG,OAAO,CAAC;AAEzC;;;;;;GAMG;AAEH,6EAA6E;AAC7E,eAAO,MAAM,sBAAsB,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,UAAU,CAAC,CAUvE,CAAC;AAEF,oFAAoF;AACpF,eAAO,MAAM,cAAc,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,UAAU,CAAC,CAY/D,CAAC;AAoBF,iCAAiC;AACjC,MAAM,WAAW,WAAW;IAC1B,MAAM,EAAE,MAAM,CAAC;IACf,IAAI,EAAE,SAAS,CAAC;IAChB,UAAU,EAAE,UAAU,CAAC;IACvB,+EAA+E;IAC/E,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAED,mEAAmE;AACnE,wBAAgB,aAAa,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAErD;AAED;;GAEG;AACH,wBAAgB,eAAe,CAAC,UAAU,EAAE,UAAU,EAAE,OAAO,EAAE,MAAM,GAAG,MAAM,CAW/E;AAED;;;GAGG;AACH,wBAAgB,aAAa,CAAC,UAAU,EAAE,UAAU,EAAE,YAAY,EAAE,MAAM,GAAG,MAAM,CAMlF;AAED;;;;;;;GAOG;AACH,wBAAgB,YAAY,CAAC,UAAU,EAAE,UAAU,EAAE,KAAK,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,GAAG,MAAM,CAMpG;AAED;;;;GAIG;AACH,wBAAgB,UAAU,CAAC,KAAK,EAAE,MAAM,GAAG,WAAW,GAAG,IAAI,CA0B5D;AAED,iFAAiF;AACjF,wBAAgB,OAAO,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAE9C"}
1
+ {"version":3,"file":"token.d.ts","sourceRoot":"","sources":["../../src/ids/token.ts"],"names":[],"mappings":"AAAA;;;GAGG;AA2BH,sDAAsD;AACtD,MAAM,MAAM,UAAU,GAClB,SAAS,GACT,OAAO,GACP,SAAS,GACT,QAAQ,GACR,WAAW,GACX,MAAM,GACN,UAAU,GACV,MAAM,GACN,eAAe,GACf,aAAa,GACb,MAAM,GACN,MAAM,GACN,YAAY,GACZ,SAAS,GACT,aAAa,GACb,gBAAgB,GAChB,eAAe,GACf,gBAAgB,GAChB,gBAAgB,GAChB,cAAc,GACd,aAAa,GACb,UAAU,GACV,UAAU,GACV,eAAe,GACf,UAAU,GACV,iBAAiB,GACjB,oBAAoB,GACpB,eAAe,GACf,WAAW,GACX,YAAY,GACZ,MAAM,GACN,iBAAiB,GACjB,kBAAkB,GAClB,gBAAgB,GAChB,oBAAoB,CAAC;AAEzB,sCAAsC;AACtC,MAAM,MAAM,SAAS,GAAG,MAAM,GAAG,OAAO,CAAC;AAEzC;;;;;;GAMG;AAEH,6EAA6E;AAC7E,eAAO,MAAM,sBAAsB,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,UAAU,CAAC,CAYvE,CAAC;AAEF,oFAAoF;AACpF,eAAO,MAAM,cAAc,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,UAAU,CAAC,CA+B/D,CAAC;AAoBF,iCAAiC;AACjC,MAAM,WAAW,WAAW;IAC1B,MAAM,EAAE,MAAM,CAAC;IACf,IAAI,EAAE,SAAS,CAAC;IAChB,UAAU,EAAE,UAAU,CAAC;IACvB,+EAA+E;IAC/E,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAED,mEAAmE;AACnE,wBAAgB,aAAa,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAErD;AAED;;;;GAIG;AACH,wBAAgB,eAAe,CAAC,UAAU,EAAE,UAAU,GAAG,MAAM,CAM9D;AAED;;GAEG;AACH,wBAAgB,eAAe,CAAC,UAAU,EAAE,UAAU,EAAE,OAAO,EAAE,MAAM,GAAG,MAAM,CAW/E;AAED;;;GAGG;AACH,wBAAgB,aAAa,CAAC,UAAU,EAAE,UAAU,EAAE,YAAY,EAAE,MAAM,GAAG,MAAM,CAMlF;AAED;;;;;;;GAOG;AACH,wBAAgB,YAAY,CAAC,UAAU,EAAE,UAAU,EAAE,KAAK,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,GAAG,MAAM,CAMpG;AAED;;;;GAIG;AACH,wBAAgB,UAAU,CAAC,KAAK,EAAE,MAAM,GAAG,WAAW,GAAG,IAAI,CA0B5D;AAED,iFAAiF;AACjF,wBAAgB,OAAO,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAE9C"}
package/dist/ids/token.js CHANGED
@@ -5,15 +5,21 @@
5
5
  /**
6
6
  * Durable-ID tokens (U5 / D1). Two shapes:
7
7
  *
8
- * - **Self-encoding** (`em_`, `ev_`, `ct_`, `fd_`, `dr_`, `td_`): the token
9
- * carries the immutable Graph ID directly — `<prefix>_<base64url(graphId)>`.
8
+ * - **Self-encoding** (`em_`, `ev_`, `ct_`, `fd_`, `dr_`, `nb_`, `ns_`,
9
+ * `np_`): the token carries the immutable Graph ID directly —
10
+ * `<prefix>_<base64url(graphId)>`.
10
11
  * Resolution is a decode with zero storage, so it survives a cold/lost
11
12
  * `state.db` and resolves on any machine (the core cold-state fix).
12
13
  *
13
- * - **Alias-backed** (`pl_`, `pt_`, `ch_`, `tm_`, `at_`, composite tuples): the
14
- * token is a short deterministic digest of the entity's canonical key —
15
- * `<prefix>_<base32(sha256(canonicalKey))[0..13]>` (70 bits) — backed by the
16
- * alias table (D3). These are machine-scoped: a cold store yields `ID_UNKNOWN`.
14
+ * - **Alias-backed** (`pl_`, `pb_`, `pt_`, `ch_`, `tm_`, `at_`, `td_`, `tl_`, `mr_`,
15
+ * `cf_`, `cg_`, `fo_`, `cp_`, `om_`, `rc_`, `tr_`, `si_`, `dl_`, `li_`, `sl_`, `sn_`, composite tuples): the token is a short deterministic digest of the
16
+ * entity's canonical key — `<prefix>_<base32(sha256(canonicalKey))[0..13]>`
17
+ * (70 bits) — backed by the alias table (D3). These are machine-scoped: a
18
+ * cold store yields `ID_UNKNOWN`.
19
+ *
20
+ * Calendar groups are an **orphan** entity: minted for display but never
21
+ * resolved back (no Graph URL takes a calendar-group id as a path segment),
22
+ * so they are returned as the raw Graph id string rather than a token.
17
23
  *
18
24
  * Determinism is a hard requirement: the same Graph ID / canonical key always
19
25
  * mints a byte-identical token.
@@ -33,18 +39,39 @@ export const SELF_ENCODING_PREFIXES = Object.assign(Object.create(null), {
33
39
  ct: 'contact',
34
40
  fd: 'folder',
35
41
  dr: 'driveItem',
36
- td: 'task',
42
+ nb: 'noteNotebook',
43
+ ns: 'noteSection',
44
+ np: 'notePage',
37
45
  });
38
46
  /** Alias-backed prefixes → entity type (the token is a digest; needs the store). */
39
47
  export const ALIAS_PREFIXES = Object.assign(Object.create(null), {
40
48
  pl: 'plan',
49
+ pb: 'plannerBucket',
41
50
  pt: 'plannerTask',
42
51
  ch: 'chat',
43
52
  tm: 'team',
44
53
  at: 'attachment',
45
54
  cn: 'channel',
46
55
  cm: 'chatMessage',
56
+ xm: 'channelMessage',
47
57
  ci: 'checklistItem',
58
+ lr: 'linkedResource',
59
+ ta: 'taskAttachment',
60
+ td: 'task',
61
+ tl: 'taskList',
62
+ mr: 'mailRule',
63
+ cf: 'contactFolder',
64
+ cg: 'category',
65
+ fo: 'focusedOverride',
66
+ cp: 'calendarPermission',
67
+ om: 'onlineMeeting',
68
+ rc: 'recording',
69
+ tr: 'transcript',
70
+ si: 'site',
71
+ dl: 'documentLibrary',
72
+ li: 'libraryDriveItem',
73
+ sl: 'sharePointList',
74
+ sn: 'sharePointListItem',
48
75
  });
49
76
  const ENTITY_TO_PREFIX = buildReverse();
50
77
  function buildReverse() {
@@ -65,6 +92,18 @@ const COMPOSITE_DIGEST_CHARS = 14;
65
92
  export function isKnownPrefix(prefix) {
66
93
  return prefix in SELF_ENCODING_PREFIXES || prefix in ALIAS_PREFIXES;
67
94
  }
95
+ /**
96
+ * The 2-char token prefix for an entity type (e.g. `task` → `td`). Lets callers
97
+ * (canonical id schemas, next-action hints) name the token shape without
98
+ * duplicating the prefix tables. Throws for an entity with no allocated prefix.
99
+ */
100
+ export function prefixForEntity(entityType) {
101
+ const prefix = ENTITY_TO_PREFIX[entityType];
102
+ if (prefix == null) {
103
+ throw new Error(`Entity type "${entityType}" has no allocated token prefix.`);
104
+ }
105
+ return prefix;
106
+ }
68
107
  /**
69
108
  * Mints a self-encoding token carrying the immutable Graph ID (D1). Determin­istic.
70
109
  */
@@ -1 +1 @@
1
- {"version":3,"file":"token.js","sourceRoot":"","sources":["../../src/ids/token.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"token.js","sourceRoot":"","sources":["../../src/ids/token.ts"],"names":[],"mappings":"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"}
package/dist/index.d.ts CHANGED
@@ -7,14 +7,10 @@
7
7
  * Office 365 MCP Server
8
8
  *
9
9
  * A Model Context Protocol server that provides full read/write access to
10
- * Microsoft 365 via Microsoft Graph API or legacy AppleScript.
11
- *
12
- * Backend selection:
13
- * - Graph API is the default (full-featured, cross-platform)
14
- * - Set USE_APPLESCRIPT=1 to use legacy AppleScript backend (macOS + classic Outlook only)
10
+ * Microsoft 365 via the Microsoft Graph API.
15
11
  */
16
12
  import { Server } from '@modelcontextprotocol/sdk/server/index.js';
17
- import type { SurfaceOptions } from './registry/index.js';
13
+ import type { SurfaceOptions, ConfirmMode } from './registry/index.js';
18
14
  /**
19
15
  * Creates and configures the MCP server.
20
16
  */
@@ -22,6 +18,8 @@ import type { SurfaceOptions } from './registry/index.js';
22
18
  export interface ServerOptions {
23
19
  readonly presets?: SurfaceOptions['presets'];
24
20
  readonly readOnly?: boolean;
21
+ /** Destructive-confirm mode (U11): 'token' (default) or 'elicit'. */
22
+ readonly confirmMode?: ConfirmMode;
25
23
  }
26
24
  export declare function createServer(options?: ServerOptions): Server;
27
25
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";AACA;;;GAGG;AACH;;;;;;;;;GASG;AAEH,OAAO,EAAE,MAAM,EAAE,MAAM,2CAA2C,CAAC;AAgCnE,OAAO,KAAK,EAAe,cAAc,EAAE,MAAM,qBAAqB,CAAC;AA0FvE;;GAEG;AACH,iFAAiF;AACjF,MAAM,WAAW,aAAa;IAC5B,QAAQ,CAAC,OAAO,CAAC,EAAE,cAAc,CAAC,SAAS,CAAC,CAAC;IAC7C,QAAQ,CAAC,QAAQ,CAAC,EAAE,OAAO,CAAC;CAC7B;AAED,wBAAgB,YAAY,CAAC,OAAO,GAAE,aAAkB,GAAG,MAAM,CA+ShE"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";AACA;;;GAGG;AACH;;;;;GAKG;AAEH,OAAO,EAAE,MAAM,EAAE,MAAM,2CAA2C,CAAC;AAsBnE,OAAO,KAAK,EAAe,cAAc,EAAE,WAAW,EAAY,MAAM,qBAAqB,CAAC;AAoE9F;;GAEG;AACH,iFAAiF;AACjF,MAAM,WAAW,aAAa;IAC5B,QAAQ,CAAC,OAAO,CAAC,EAAE,cAAc,CAAC,SAAS,CAAC,CAAC;IAC7C,QAAQ,CAAC,QAAQ,CAAC,EAAE,OAAO,CAAC;IAC5B,qEAAqE;IACrE,QAAQ,CAAC,WAAW,CAAC,EAAE,WAAW,CAAC;CACpC;AAED,wBAAgB,YAAY,CAAC,OAAO,GAAE,aAAkB,GAAG,MAAM,CA8RhE"}