@jbctechsolutions/mcp-office365 2.5.1 → 3.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 (222) hide show
  1. package/README.md +32 -0
  2. package/dist/approval/token-manager.d.ts +28 -16
  3. package/dist/approval/token-manager.d.ts.map +1 -1
  4. package/dist/approval/token-manager.js +125 -37
  5. package/dist/approval/token-manager.js.map +1 -1
  6. package/dist/cli.d.ts +17 -0
  7. package/dist/cli.d.ts.map +1 -1
  8. package/dist/cli.js +85 -2
  9. package/dist/cli.js.map +1 -1
  10. package/dist/graph/auth/config.d.ts +1 -1
  11. package/dist/graph/auth/config.d.ts.map +1 -1
  12. package/dist/graph/auth/config.js +5 -1
  13. package/dist/graph/auth/config.js.map +1 -1
  14. package/dist/graph/auth/device-code-flow.d.ts +3 -1
  15. package/dist/graph/auth/device-code-flow.d.ts.map +1 -1
  16. package/dist/graph/auth/device-code-flow.js +42 -14
  17. package/dist/graph/auth/device-code-flow.js.map +1 -1
  18. package/dist/graph/auth/token-cache.js +2 -2
  19. package/dist/graph/auth/token-cache.js.map +1 -1
  20. package/dist/graph/client/graph-client.d.ts +36 -8
  21. package/dist/graph/client/graph-client.d.ts.map +1 -1
  22. package/dist/graph/client/graph-client.js +128 -36
  23. package/dist/graph/client/graph-client.js.map +1 -1
  24. package/dist/graph/repository.d.ts +9 -6
  25. package/dist/graph/repository.d.ts.map +1 -1
  26. package/dist/graph/repository.js +63 -66
  27. package/dist/graph/repository.js.map +1 -1
  28. package/dist/ids/mint.d.ts +31 -0
  29. package/dist/ids/mint.d.ts.map +1 -0
  30. package/dist/ids/mint.js +36 -0
  31. package/dist/ids/mint.js.map +1 -0
  32. package/dist/ids/resolver.d.ts +30 -0
  33. package/dist/ids/resolver.d.ts.map +1 -0
  34. package/dist/ids/resolver.js +37 -0
  35. package/dist/ids/resolver.js.map +1 -0
  36. package/dist/ids/token.d.ts +56 -0
  37. package/dist/ids/token.d.ts.map +1 -0
  38. package/dist/ids/token.js +186 -0
  39. package/dist/ids/token.js.map +1 -0
  40. package/dist/index.d.ts +7 -1
  41. package/dist/index.d.ts.map +1 -1
  42. package/dist/index.js +226 -5859
  43. package/dist/index.js.map +1 -1
  44. package/dist/registry/all-tools.d.ts +14 -0
  45. package/dist/registry/all-tools.d.ts.map +1 -0
  46. package/dist/registry/all-tools.js +64 -0
  47. package/dist/registry/all-tools.js.map +1 -0
  48. package/dist/registry/context.d.ts +25 -0
  49. package/dist/registry/context.d.ts.map +1 -0
  50. package/dist/registry/context.js +31 -0
  51. package/dist/registry/context.js.map +1 -0
  52. package/dist/registry/define-tool.d.ts +15 -0
  53. package/dist/registry/define-tool.d.ts.map +1 -0
  54. package/dist/registry/define-tool.js +8 -0
  55. package/dist/registry/define-tool.js.map +1 -0
  56. package/dist/registry/index.d.ts +13 -0
  57. package/dist/registry/index.d.ts.map +1 -0
  58. package/dist/registry/index.js +8 -0
  59. package/dist/registry/index.js.map +1 -0
  60. package/dist/registry/registry.d.ts +62 -0
  61. package/dist/registry/registry.d.ts.map +1 -0
  62. package/dist/registry/registry.js +134 -0
  63. package/dist/registry/registry.js.map +1 -0
  64. package/dist/registry/types.d.ts +98 -0
  65. package/dist/registry/types.d.ts.map +1 -0
  66. package/dist/registry/types.js +6 -0
  67. package/dist/registry/types.js.map +1 -0
  68. package/dist/search/compiler.d.ts +49 -0
  69. package/dist/search/compiler.d.ts.map +1 -0
  70. package/dist/search/compiler.js +168 -0
  71. package/dist/search/compiler.js.map +1 -0
  72. package/dist/signature.js +2 -2
  73. package/dist/signature.js.map +1 -1
  74. package/dist/state/migrate.d.ts +23 -0
  75. package/dist/state/migrate.d.ts.map +1 -0
  76. package/dist/state/migrate.js +81 -0
  77. package/dist/state/migrate.js.map +1 -0
  78. package/dist/state/schema.d.ts +27 -0
  79. package/dist/state/schema.d.ts.map +1 -0
  80. package/dist/state/schema.js +54 -0
  81. package/dist/state/schema.js.map +1 -0
  82. package/dist/state/store.d.ts +152 -0
  83. package/dist/state/store.d.ts.map +1 -0
  84. package/dist/state/store.js +317 -0
  85. package/dist/state/store.js.map +1 -0
  86. package/dist/tools/accounts.d.ts +37 -0
  87. package/dist/tools/accounts.d.ts.map +1 -0
  88. package/dist/tools/accounts.js +68 -0
  89. package/dist/tools/accounts.js.map +1 -0
  90. package/dist/tools/calendar-apple.d.ts +39 -0
  91. package/dist/tools/calendar-apple.d.ts.map +1 -0
  92. package/dist/tools/calendar-apple.js +159 -0
  93. package/dist/tools/calendar-apple.js.map +1 -0
  94. package/dist/tools/calendar-graph.d.ts +41 -0
  95. package/dist/tools/calendar-graph.d.ts.map +1 -0
  96. package/dist/tools/calendar-graph.js +298 -0
  97. package/dist/tools/calendar-graph.js.map +1 -0
  98. package/dist/tools/calendar-permissions.d.ts +10 -0
  99. package/dist/tools/calendar-permissions.d.ts.map +1 -1
  100. package/dist/tools/calendar-permissions.js +53 -0
  101. package/dist/tools/calendar-permissions.js.map +1 -1
  102. package/dist/tools/calendar.d.ts +151 -0
  103. package/dist/tools/calendar.d.ts.map +1 -1
  104. package/dist/tools/calendar.js +274 -0
  105. package/dist/tools/calendar.js.map +1 -1
  106. package/dist/tools/categories.d.ts +10 -0
  107. package/dist/tools/categories.d.ts.map +1 -1
  108. package/dist/tools/categories.js +54 -0
  109. package/dist/tools/categories.js.map +1 -1
  110. package/dist/tools/checklist-items.d.ts +10 -0
  111. package/dist/tools/checklist-items.d.ts.map +1 -1
  112. package/dist/tools/checklist-items.js +63 -0
  113. package/dist/tools/checklist-items.js.map +1 -1
  114. package/dist/tools/contact-folders.d.ts +50 -0
  115. package/dist/tools/contact-folders.d.ts.map +1 -0
  116. package/dist/tools/contact-folders.js +133 -0
  117. package/dist/tools/contact-folders.js.map +1 -0
  118. package/dist/tools/contacts-graph.d.ts +45 -0
  119. package/dist/tools/contacts-graph.d.ts.map +1 -0
  120. package/dist/tools/contacts-graph.js +172 -0
  121. package/dist/tools/contacts-graph.js.map +1 -0
  122. package/dist/tools/contacts.d.ts +66 -0
  123. package/dist/tools/contacts.d.ts.map +1 -1
  124. package/dist/tools/contacts.js +165 -0
  125. package/dist/tools/contacts.js.map +1 -1
  126. package/dist/tools/excel.d.ts +10 -0
  127. package/dist/tools/excel.d.ts.map +1 -1
  128. package/dist/tools/excel.js +73 -0
  129. package/dist/tools/excel.js.map +1 -1
  130. package/dist/tools/focused-overrides.d.ts +10 -0
  131. package/dist/tools/focused-overrides.d.ts.map +1 -1
  132. package/dist/tools/focused-overrides.js +54 -0
  133. package/dist/tools/focused-overrides.js.map +1 -1
  134. package/dist/tools/linked-resources.d.ts +10 -0
  135. package/dist/tools/linked-resources.d.ts.map +1 -1
  136. package/dist/tools/linked-resources.js +53 -0
  137. package/dist/tools/linked-resources.js.map +1 -1
  138. package/dist/tools/mail-apple.d.ts +40 -0
  139. package/dist/tools/mail-apple.d.ts.map +1 -0
  140. package/dist/tools/mail-apple.js +146 -0
  141. package/dist/tools/mail-apple.js.map +1 -0
  142. package/dist/tools/mail-graph.d.ts +38 -0
  143. package/dist/tools/mail-graph.d.ts.map +1 -0
  144. package/dist/tools/mail-graph.js +178 -0
  145. package/dist/tools/mail-graph.js.map +1 -0
  146. package/dist/tools/mail-rules.d.ts +12 -0
  147. package/dist/tools/mail-rules.d.ts.map +1 -1
  148. package/dist/tools/mail-rules.js +56 -0
  149. package/dist/tools/mail-rules.js.map +1 -1
  150. package/dist/tools/mail-send.d.ts +12 -0
  151. package/dist/tools/mail-send.d.ts.map +1 -1
  152. package/dist/tools/mail-send.js +219 -5
  153. package/dist/tools/mail-send.js.map +1 -1
  154. package/dist/tools/mail.d.ts +82 -2
  155. package/dist/tools/mail.d.ts.map +1 -1
  156. package/dist/tools/mail.js +239 -2
  157. package/dist/tools/mail.js.map +1 -1
  158. package/dist/tools/mailbox-organization.d.ts +20 -0
  159. package/dist/tools/mailbox-organization.d.ts.map +1 -1
  160. package/dist/tools/mailbox-organization.js +275 -0
  161. package/dist/tools/mailbox-organization.js.map +1 -1
  162. package/dist/tools/mailbox-settings.d.ts +59 -0
  163. package/dist/tools/mailbox-settings.d.ts.map +1 -0
  164. package/dist/tools/mailbox-settings.js +136 -0
  165. package/dist/tools/mailbox-settings.js.map +1 -0
  166. package/dist/tools/meetings.d.ts +10 -0
  167. package/dist/tools/meetings.d.ts.map +1 -1
  168. package/dist/tools/meetings.js +74 -0
  169. package/dist/tools/meetings.js.map +1 -1
  170. package/dist/tools/notes.d.ts +12 -0
  171. package/dist/tools/notes.d.ts.map +1 -1
  172. package/dist/tools/notes.js +66 -0
  173. package/dist/tools/notes.js.map +1 -1
  174. package/dist/tools/onedrive.d.ts +10 -0
  175. package/dist/tools/onedrive.d.ts.map +1 -1
  176. package/dist/tools/onedrive.js +124 -0
  177. package/dist/tools/onedrive.js.map +1 -1
  178. package/dist/tools/people.d.ts +10 -0
  179. package/dist/tools/people.d.ts.map +1 -1
  180. package/dist/tools/people.js +94 -0
  181. package/dist/tools/people.js.map +1 -1
  182. package/dist/tools/planner-visualization.d.ts +10 -0
  183. package/dist/tools/planner-visualization.d.ts.map +1 -1
  184. package/dist/tools/planner-visualization.js +53 -0
  185. package/dist/tools/planner-visualization.js.map +1 -1
  186. package/dist/tools/planner.d.ts +10 -0
  187. package/dist/tools/planner.d.ts.map +1 -1
  188. package/dist/tools/planner.js +183 -0
  189. package/dist/tools/planner.js.map +1 -1
  190. package/dist/tools/scheduling.d.ts +12 -0
  191. package/dist/tools/scheduling.d.ts.map +1 -1
  192. package/dist/tools/scheduling.js +38 -0
  193. package/dist/tools/scheduling.js.map +1 -1
  194. package/dist/tools/sharepoint.d.ts +10 -0
  195. package/dist/tools/sharepoint.d.ts.map +1 -1
  196. package/dist/tools/sharepoint.js +74 -0
  197. package/dist/tools/sharepoint.js.map +1 -1
  198. package/dist/tools/task-attachments.d.ts +10 -0
  199. package/dist/tools/task-attachments.d.ts.map +1 -1
  200. package/dist/tools/task-attachments.js +53 -0
  201. package/dist/tools/task-attachments.js.map +1 -1
  202. package/dist/tools/task-lists.d.ts +56 -0
  203. package/dist/tools/task-lists.d.ts.map +1 -0
  204. package/dist/tools/task-lists.js +151 -0
  205. package/dist/tools/task-lists.js.map +1 -0
  206. package/dist/tools/tasks-graph.d.ts +49 -0
  207. package/dist/tools/tasks-graph.d.ts.map +1 -0
  208. package/dist/tools/tasks-graph.js +191 -0
  209. package/dist/tools/tasks-graph.js.map +1 -0
  210. package/dist/tools/tasks.d.ts +127 -0
  211. package/dist/tools/tasks.d.ts.map +1 -1
  212. package/dist/tools/tasks.js +155 -0
  213. package/dist/tools/tasks.js.map +1 -1
  214. package/dist/tools/teams.d.ts +11 -0
  215. package/dist/tools/teams.d.ts.map +1 -1
  216. package/dist/tools/teams.js +254 -0
  217. package/dist/tools/teams.js.map +1 -1
  218. package/dist/utils/errors.d.ts +96 -5
  219. package/dist/utils/errors.d.ts.map +1 -1
  220. package/dist/utils/errors.js +227 -8
  221. package/dist/utils/errors.js.map +1 -1
  222. package/package.json +1 -1
@@ -0,0 +1 @@
1
+ {"version":3,"file":"compiler.js","sourceRoot":"","sources":["../../src/search/compiler.ts"],"names":[],"mappings":"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"}
package/dist/signature.js CHANGED
@@ -5,13 +5,13 @@
5
5
  /**
6
6
  * Email signature storage and auto-append logic.
7
7
  *
8
- * Signatures are stored as HTML at ~/.outlook-mcp/signature.html
8
+ * Signatures are stored as HTML at ~/.mcp-office365/signature.html
9
9
  * and auto-appended to email bodies when creating/sending emails.
10
10
  */
11
11
  import { existsSync, mkdirSync, readFileSync, writeFileSync } from 'node:fs';
12
12
  import { homedir } from 'node:os';
13
13
  import { join } from 'node:path';
14
- const SIGNATURE_DIR = join(homedir(), '.outlook-mcp');
14
+ const SIGNATURE_DIR = join(homedir(), '.mcp-office365');
15
15
  const SIGNATURE_FILE = join(SIGNATURE_DIR, 'signature.html');
16
16
  /**
17
17
  * Ensures the signature directory exists.
@@ -1 +1 @@
1
- {"version":3,"file":"signature.js","sourceRoot":"","sources":["../src/signature.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;AAEjC,MAAM,aAAa,GAAG,IAAI,CAAC,OAAO,EAAE,EAAE,cAAc,CAAC,CAAC;AACtD,MAAM,cAAc,GAAG,IAAI,CAAC,aAAa,EAAE,gBAAgB,CAAC,CAAC;AAE7D;;GAEG;AACH,SAAS,SAAS;IAChB,IAAI,CAAC,UAAU,CAAC,aAAa,CAAC,EAAE,CAAC;QAC/B,SAAS,CAAC,aAAa,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC,CAAC;IAC7D,CAAC;AACH,CAAC;AAED;;GAEG;AACH,SAAS,UAAU,CAAC,IAAY;IAC9B,OAAO,IAAI;SACR,OAAO,CAAC,IAAI,EAAE,OAAO,CAAC;SACtB,OAAO,CAAC,IAAI,EAAE,MAAM,CAAC;SACrB,OAAO,CAAC,IAAI,EAAE,MAAM,CAAC;SACrB,OAAO,CAAC,IAAI,EAAE,QAAQ,CAAC;SACvB,OAAO,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;AAC5B,CAAC;AAED;;GAEG;AACH,SAAS,SAAS,CAAC,IAAY;IAC7B,OAAO,IAAI;SACR,OAAO,CAAC,cAAc,EAAE,IAAI,CAAC;SAC7B,OAAO,CAAC,UAAU,EAAE,EAAE,CAAC,CAAC;AAC7B,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,aAAa;IAC3B,IAAI,CAAC,UAAU,CAAC,cAAc,CAAC;QAAE,OAAO,IAAI,CAAC;IAC7C,IAAI,CAAC;QACH,OAAO,YAAY,CAAC,cAAc,EAAE,OAAO,CAAC,CAAC;IAC/C,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,IAAI,CAAC;IACd,CAAC;AACH,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,cAAc,CAAC,OAAe,EAAE,cAA+B,MAAM;IACnF,SAAS,EAAE,CAAC;IACZ,MAAM,IAAI,GAAG,WAAW,KAAK,MAAM,CAAC,CAAC,CAAC,QAAQ,UAAU,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,CAAC,OAAO,CAAC;IACpF,IAAI,CAAC;QACH,aAAa,CAAC,cAAc,EAAE,IAAI,EAAE,EAAE,QAAQ,EAAE,OAAO,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC,CAAC;IAC1E,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,MAAM,OAAO,GAAG,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;QACjE,MAAM,IAAI,KAAK,CAAC,6BAA6B,OAAO,EAAE,CAAC,CAAC;IAC1D,CAAC;AACH,CAAC;AAED;;;;;;GAMG;AACH,MAAM,UAAU,eAAe,CAC7B,IAAY,EACZ,QAAyB,EACzB,gBAAyB;IAEzB,IAAI,CAAC,gBAAgB;QAAE,OAAO,IAAI,CAAC;IAEnC,MAAM,SAAS,GAAG,aAAa,EAAE,CAAC;IAClC,IAAI,SAAS,IAAI,IAAI;QAAE,OAAO,IAAI,CAAC;IAEnC,IAAI,QAAQ,KAAK,MAAM,EAAE,CAAC;QACxB,OAAO,GAAG,IAAI,WAAW,SAAS,EAAE,CAAC;IACvC,CAAC;IAED,OAAO,GAAG,IAAI,WAAW,SAAS,CAAC,SAAS,CAAC,EAAE,CAAC;AAClD,CAAC"}
1
+ {"version":3,"file":"signature.js","sourceRoot":"","sources":["../src/signature.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;AAEjC,MAAM,aAAa,GAAG,IAAI,CAAC,OAAO,EAAE,EAAE,gBAAgB,CAAC,CAAC;AACxD,MAAM,cAAc,GAAG,IAAI,CAAC,aAAa,EAAE,gBAAgB,CAAC,CAAC;AAE7D;;GAEG;AACH,SAAS,SAAS;IAChB,IAAI,CAAC,UAAU,CAAC,aAAa,CAAC,EAAE,CAAC;QAC/B,SAAS,CAAC,aAAa,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC,CAAC;IAC7D,CAAC;AACH,CAAC;AAED;;GAEG;AACH,SAAS,UAAU,CAAC,IAAY;IAC9B,OAAO,IAAI;SACR,OAAO,CAAC,IAAI,EAAE,OAAO,CAAC;SACtB,OAAO,CAAC,IAAI,EAAE,MAAM,CAAC;SACrB,OAAO,CAAC,IAAI,EAAE,MAAM,CAAC;SACrB,OAAO,CAAC,IAAI,EAAE,QAAQ,CAAC;SACvB,OAAO,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;AAC5B,CAAC;AAED;;GAEG;AACH,SAAS,SAAS,CAAC,IAAY;IAC7B,OAAO,IAAI;SACR,OAAO,CAAC,cAAc,EAAE,IAAI,CAAC;SAC7B,OAAO,CAAC,UAAU,EAAE,EAAE,CAAC,CAAC;AAC7B,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,aAAa;IAC3B,IAAI,CAAC,UAAU,CAAC,cAAc,CAAC;QAAE,OAAO,IAAI,CAAC;IAC7C,IAAI,CAAC;QACH,OAAO,YAAY,CAAC,cAAc,EAAE,OAAO,CAAC,CAAC;IAC/C,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,IAAI,CAAC;IACd,CAAC;AACH,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,cAAc,CAAC,OAAe,EAAE,cAA+B,MAAM;IACnF,SAAS,EAAE,CAAC;IACZ,MAAM,IAAI,GAAG,WAAW,KAAK,MAAM,CAAC,CAAC,CAAC,QAAQ,UAAU,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,CAAC,OAAO,CAAC;IACpF,IAAI,CAAC;QACH,aAAa,CAAC,cAAc,EAAE,IAAI,EAAE,EAAE,QAAQ,EAAE,OAAO,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC,CAAC;IAC1E,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,MAAM,OAAO,GAAG,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;QACjE,MAAM,IAAI,KAAK,CAAC,6BAA6B,OAAO,EAAE,CAAC,CAAC;IAC1D,CAAC;AACH,CAAC;AAED;;;;;;GAMG;AACH,MAAM,UAAU,eAAe,CAC7B,IAAY,EACZ,QAAyB,EACzB,gBAAyB;IAEzB,IAAI,CAAC,gBAAgB;QAAE,OAAO,IAAI,CAAC;IAEnC,MAAM,SAAS,GAAG,aAAa,EAAE,CAAC;IAClC,IAAI,SAAS,IAAI,IAAI;QAAE,OAAO,IAAI,CAAC;IAEnC,IAAI,QAAQ,KAAK,MAAM,EAAE,CAAC;QACxB,OAAO,GAAG,IAAI,WAAW,SAAS,EAAE,CAAC;IACvC,CAAC;IAED,OAAO,GAAG,IAAI,WAAW,SAAS,CAAC,SAAS,CAAC,EAAE,CAAC;AAClD,CAAC"}
@@ -0,0 +1,23 @@
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 type Database from 'better-sqlite3';
6
+ type DB = Database.Database;
7
+ /** Reads the applied schema version (0 when never migrated). */
8
+ export declare function getSchemaVersion(db: DB): number;
9
+ /**
10
+ * Applies pending schema migrations in order, each in its own transaction so a
11
+ * failure leaves the schema at the last good version. Running with no pending
12
+ * migrations is a no-op.
13
+ */
14
+ export declare function runMigrations(db: DB): void;
15
+ /**
16
+ * Copies a legacy `~/.outlook-mcp/tokens.json` into the new state dir exactly
17
+ * once (D15): only when the marker is unset AND the new dir has no tokens.json.
18
+ * The legacy dir is left untouched; the marker is set regardless so the check
19
+ * never repeats.
20
+ */
21
+ export declare function migrateLegacyTokens(db: DB, newDir: string, legacyDir: string): void;
22
+ export {};
23
+ //# sourceMappingURL=migrate.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"migrate.d.ts","sourceRoot":"","sources":["../../src/state/migrate.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAWH,OAAO,KAAK,QAAQ,MAAM,gBAAgB,CAAC;AAO3C,KAAK,EAAE,GAAG,QAAQ,CAAC,QAAQ,CAAC;AAoB5B,gEAAgE;AAChE,wBAAgB,gBAAgB,CAAC,EAAE,EAAE,EAAE,GAAG,MAAM,CAI/C;AAED;;;;GAIG;AACH,wBAAgB,aAAa,CAAC,EAAE,EAAE,EAAE,GAAG,IAAI,CAqB1C;AAED;;;;;GAKG;AACH,wBAAgB,mBAAmB,CACjC,EAAE,EAAE,EAAE,EACN,MAAM,EAAE,MAAM,EACd,SAAS,EAAE,MAAM,GAChB,IAAI,CAgBN"}
@@ -0,0 +1,81 @@
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
+ * Boot-time migrations for the durable state store (U4):
7
+ * - Schema migrations applied in order, tracked via the `meta` table (idempotent).
8
+ * - One-shot legacy token copy from `~/.outlook-mcp` (D15), never overwriting an
9
+ * existing token cache, gated by a `meta` marker so it runs at most once.
10
+ */
11
+ import { chmodSync, copyFileSync, existsSync } from 'node:fs';
12
+ import { join } from 'node:path';
13
+ import { MIGRATIONS, META_SCHEMA_VERSION, META_LEGACY_TOKENS_MIGRATED, } from './schema.js';
14
+ /** Creates the meta table if absent (needed before reading the schema version). */
15
+ function ensureMetaTable(db) {
16
+ db.exec('CREATE TABLE IF NOT EXISTS meta (key TEXT PRIMARY KEY, value TEXT NOT NULL);');
17
+ }
18
+ function getMeta(db, key) {
19
+ const row = db.prepare('SELECT value FROM meta WHERE key = ?').get(key);
20
+ return row?.value ?? null;
21
+ }
22
+ function setMeta(db, key, value) {
23
+ db.prepare('INSERT INTO meta (key, value) VALUES (?, ?) ON CONFLICT(key) DO UPDATE SET value = excluded.value').run(key, value);
24
+ }
25
+ /** Reads the applied schema version (0 when never migrated). */
26
+ export function getSchemaVersion(db) {
27
+ const raw = getMeta(db, META_SCHEMA_VERSION);
28
+ const parsed = raw != null ? Number.parseInt(raw, 10) : 0;
29
+ return Number.isFinite(parsed) ? parsed : 0;
30
+ }
31
+ /**
32
+ * Applies pending schema migrations in order, each in its own transaction so a
33
+ * failure leaves the schema at the last good version. Running with no pending
34
+ * migrations is a no-op.
35
+ */
36
+ export function runMigrations(db) {
37
+ ensureMetaTable(db);
38
+ let current = getSchemaVersion(db);
39
+ // Downgrade guard: a db migrated by a newer build (version beyond this build's
40
+ // migration count) must not be operated on blindly against an unknown schema.
41
+ // Throwing here routes the caller to its degraded in-memory fallback.
42
+ if (current > MIGRATIONS.length) {
43
+ throw new Error(`state.db schema version ${current} is newer than this build supports (${MIGRATIONS.length}).`);
44
+ }
45
+ while (current < MIGRATIONS.length) {
46
+ const sql = MIGRATIONS[current];
47
+ if (sql == null)
48
+ break;
49
+ const apply = db.transaction((migrationSql, next) => {
50
+ db.exec(migrationSql);
51
+ setMeta(db, META_SCHEMA_VERSION, String(next));
52
+ });
53
+ apply(sql, current + 1);
54
+ current += 1;
55
+ }
56
+ }
57
+ /**
58
+ * Copies a legacy `~/.outlook-mcp/tokens.json` into the new state dir exactly
59
+ * once (D15): only when the marker is unset AND the new dir has no tokens.json.
60
+ * The legacy dir is left untouched; the marker is set regardless so the check
61
+ * never repeats.
62
+ */
63
+ export function migrateLegacyTokens(db, newDir, legacyDir) {
64
+ if (getMeta(db, META_LEGACY_TOKENS_MIGRATED) === '1') {
65
+ return;
66
+ }
67
+ const newTokens = join(newDir, 'tokens.json');
68
+ const legacyTokens = join(legacyDir, 'tokens.json');
69
+ if (!existsSync(newTokens) && existsSync(legacyTokens)) {
70
+ copyFileSync(legacyTokens, newTokens);
71
+ // The copied cache holds OAuth material — restrict it like state.db (D18).
72
+ try {
73
+ chmodSync(newTokens, 0o600);
74
+ }
75
+ catch {
76
+ // Best-effort; non-POSIX filesystems ignore modes.
77
+ }
78
+ }
79
+ setMeta(db, META_LEGACY_TOKENS_MIGRATED, '1');
80
+ }
81
+ //# sourceMappingURL=migrate.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"migrate.js","sourceRoot":"","sources":["../../src/state/migrate.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,27 @@
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
+ * SQLite schema for the durable state store (U4). Each entry in {@link MIGRATIONS}
7
+ * moves the schema forward by one version; the applied version is tracked in the
8
+ * `meta` table so boot migration is idempotent and ordered.
9
+ *
10
+ * Tables (D3/D7/D8):
11
+ * - `aliases` — durable-ID token → Graph ID map (composite/mutable IDs).
12
+ * - `approval_tokens` — two-phase approval tokens + redemption receipts.
13
+ * - `meta` — schema version + one-shot migration markers.
14
+ *
15
+ * The `delta_links` table intentionally ships later with U12 (the delta mirror),
16
+ * keeping U4 free of Workstream-7-only schema per the slip rule.
17
+ */
18
+ /** Ordered forward migrations. Index i migrates schema version i → i+1. */
19
+ export declare const MIGRATIONS: readonly string[];
20
+ /** The schema version this build expects (equals the migration count). */
21
+ export declare const SCHEMA_VERSION: number;
22
+ /** meta keys. */
23
+ export declare const META_SCHEMA_VERSION = "schema_version";
24
+ export declare const META_LEGACY_TOKENS_MIGRATED = "legacy_tokens_migrated";
25
+ /** Retention window for redeemed/expired approval tokens (D8): 90 days. */
26
+ export declare const APPROVAL_RETENTION_MS: number;
27
+ //# sourceMappingURL=schema.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"schema.d.ts","sourceRoot":"","sources":["../../src/state/schema.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH;;;;;;;;;;;;GAYG;AAEH,2EAA2E;AAC3E,eAAO,MAAM,UAAU,EAAE,SAAS,MAAM,EA2BvC,CAAC;AAEF,0EAA0E;AAC1E,eAAO,MAAM,cAAc,QAAoB,CAAC;AAEhD,iBAAiB;AACjB,eAAO,MAAM,mBAAmB,mBAAmB,CAAC;AACpD,eAAO,MAAM,2BAA2B,2BAA2B,CAAC;AAEpE,2EAA2E;AAC3E,eAAO,MAAM,qBAAqB,QAA2B,CAAC"}
@@ -0,0 +1,54 @@
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
+ * SQLite schema for the durable state store (U4). Each entry in {@link MIGRATIONS}
7
+ * moves the schema forward by one version; the applied version is tracked in the
8
+ * `meta` table so boot migration is idempotent and ordered.
9
+ *
10
+ * Tables (D3/D7/D8):
11
+ * - `aliases` — durable-ID token → Graph ID map (composite/mutable IDs).
12
+ * - `approval_tokens` — two-phase approval tokens + redemption receipts.
13
+ * - `meta` — schema version + one-shot migration markers.
14
+ *
15
+ * The `delta_links` table intentionally ships later with U12 (the delta mirror),
16
+ * keeping U4 free of Workstream-7-only schema per the slip rule.
17
+ */
18
+ /** Ordered forward migrations. Index i migrates schema version i → i+1. */
19
+ export const MIGRATIONS = [
20
+ // v0 → v1: initial durable-state schema.
21
+ `
22
+ CREATE TABLE IF NOT EXISTS aliases (
23
+ token TEXT PRIMARY KEY,
24
+ graph_id TEXT NOT NULL,
25
+ entity_type TEXT NOT NULL,
26
+ account_id TEXT NOT NULL,
27
+ mutable INTEGER NOT NULL DEFAULT 0,
28
+ created_at INTEGER NOT NULL
29
+ );
30
+
31
+ CREATE TABLE IF NOT EXISTS approval_tokens (
32
+ token TEXT PRIMARY KEY,
33
+ operation_key TEXT UNIQUE,
34
+ action TEXT NOT NULL,
35
+ target_json TEXT NOT NULL,
36
+ content_hash TEXT,
37
+ account_id TEXT NOT NULL,
38
+ expires_at INTEGER NOT NULL,
39
+ redeemed_at INTEGER,
40
+ receipt_json TEXT,
41
+ created_at INTEGER NOT NULL
42
+ );
43
+
44
+ CREATE INDEX IF NOT EXISTS idx_approval_tokens_expires_at ON approval_tokens (expires_at);
45
+ `,
46
+ ];
47
+ /** The schema version this build expects (equals the migration count). */
48
+ export const SCHEMA_VERSION = MIGRATIONS.length;
49
+ /** meta keys. */
50
+ export const META_SCHEMA_VERSION = 'schema_version';
51
+ export const META_LEGACY_TOKENS_MIGRATED = 'legacy_tokens_migrated';
52
+ /** Retention window for redeemed/expired approval tokens (D8): 90 days. */
53
+ export const APPROVAL_RETENTION_MS = 90 * 24 * 60 * 60 * 1000;
54
+ //# sourceMappingURL=schema.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"schema.js","sourceRoot":"","sources":["../../src/state/schema.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH;;;;;;;;;;;;GAYG;AAEH,2EAA2E;AAC3E,MAAM,CAAC,MAAM,UAAU,GAAsB;IAC3C,yCAAyC;IACzC;;;;;;;;;;;;;;;;;;;;;;;;GAwBC;CACF,CAAC;AAEF,0EAA0E;AAC1E,MAAM,CAAC,MAAM,cAAc,GAAG,UAAU,CAAC,MAAM,CAAC;AAEhD,iBAAiB;AACjB,MAAM,CAAC,MAAM,mBAAmB,GAAG,gBAAgB,CAAC;AACpD,MAAM,CAAC,MAAM,2BAA2B,GAAG,wBAAwB,CAAC;AAEpE,2EAA2E;AAC3E,MAAM,CAAC,MAAM,qBAAqB,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,IAAI,CAAC"}
@@ -0,0 +1,152 @@
1
+ /**
2
+ * Copyright (c) 2026 JBC Tech Solutions, LLC
3
+ * Licensed under the MIT License. See LICENSE file in the project root.
4
+ */
5
+ /** A durable-ID alias row. */
6
+ export interface AliasRow {
7
+ token: string;
8
+ graphId: string;
9
+ entityType: string;
10
+ accountId: string;
11
+ mutable: boolean;
12
+ createdAt: number;
13
+ }
14
+ /** Input for minting an alias. */
15
+ export interface AliasInput {
16
+ token: string;
17
+ graphId: string;
18
+ entityType: string;
19
+ accountId: string;
20
+ mutable?: boolean;
21
+ createdAt?: number;
22
+ }
23
+ /** Input for staging a two-phase approval token. */
24
+ export interface ApprovalTokenInput {
25
+ token: string;
26
+ operationKey?: string | null;
27
+ action: string;
28
+ targetJson: string;
29
+ contentHash?: string | null;
30
+ accountId: string;
31
+ expiresAt: number;
32
+ createdAt?: number;
33
+ }
34
+ /** A stored approval-token row (read view). */
35
+ export interface ApprovalTokenRow {
36
+ token: string;
37
+ action: string;
38
+ targetJson: string;
39
+ contentHash: string | null;
40
+ expiresAt: number;
41
+ redeemedAt: number | null;
42
+ receiptJson: string | null;
43
+ createdAt: number;
44
+ }
45
+ /** Outcome of an atomic approval-token consume. */
46
+ export type ConsumeResult = {
47
+ status: 'consumed';
48
+ receiptJson: string | null;
49
+ } | {
50
+ status: 'already_redeemed';
51
+ receiptJson: string | null;
52
+ } | {
53
+ status: 'expired';
54
+ } | {
55
+ status: 'foreign_account';
56
+ } | {
57
+ status: 'not_found';
58
+ };
59
+ /** Options for {@link StateStore.open}. */
60
+ export interface StateStoreOptions {
61
+ /** Override the state directory (defaults to `~/.mcp-office365`). */
62
+ dir?: string;
63
+ /** Override the legacy directory to migrate tokens from. */
64
+ legacyDir?: string;
65
+ /** Clock, for deterministic tests. */
66
+ now?: () => number;
67
+ /** Warning sink (defaults to stderr). */
68
+ warn?: (message: string) => void;
69
+ }
70
+ export declare class StateStore {
71
+ /** True when running from an in-memory fallback (durability degraded). */
72
+ readonly degraded: boolean;
73
+ /** The db path, or ':memory:' when degraded. */
74
+ readonly path: string;
75
+ /** Effective `journal_mode` pragma (e.g. 'wal'). */
76
+ readonly journalMode: string;
77
+ /** Effective `busy_timeout` pragma in ms. */
78
+ readonly busyTimeout: number;
79
+ private readonly db;
80
+ private readonly now;
81
+ private constructor();
82
+ /**
83
+ * Opens (creating if needed) the durable store. On any failure to use the
84
+ * on-disk db (corrupt/locked file, unwritable dir) it degrades to an in-memory
85
+ * store, emits a stderr warning, and reports `degraded = true` — the server
86
+ * stays usable, only durability is lost for the run.
87
+ */
88
+ static open(options?: StateStoreOptions): StateStore;
89
+ /** Inserts or replaces a durable-ID alias. */
90
+ putAlias(input: AliasInput): void;
91
+ /**
92
+ * Resolves an alias token, scoped to `accountId` (D7 account stamping). The
93
+ * account is a mandatory, fail-closed argument: a row minted under a different
94
+ * account is invisible, so no caller can accidentally resolve a foreign
95
+ * account's durable ID into a live Graph ID by omitting the scope.
96
+ */
97
+ getAlias(token: string, accountId: string): AliasRow | null;
98
+ /**
99
+ * Atomically registers an alias with D1a collision enforcement, in a single
100
+ * IMMEDIATE transaction so the check-and-write is not a read-then-write race:
101
+ * two concurrent immutable registrations of the same token cannot both pass
102
+ * the check and then clobber each other. Returns `'collision'` when a
103
+ * *different* Graph ID already occupies the token for an immutable entity
104
+ * (neither the stored nor the new row is mutable); otherwise upserts and
105
+ * returns `'ok'`.
106
+ */
107
+ registerAlias(input: AliasInput): 'ok' | 'collision';
108
+ /**
109
+ * Returns an alias row regardless of account, or null. Reserved for two
110
+ * internal uses that must see across accounts: foreign-account disambiguation
111
+ * during resolution, and collision detection at mint time (D1a). It is NOT a
112
+ * resolution path — {@link getAlias} (account-scoped) is the only one of those.
113
+ */
114
+ getAliasUnscoped(token: string): AliasRow | null;
115
+ /**
116
+ * Returns the account a token was minted under (any account), or null when the
117
+ * token is unknown. Distinguishes "foreign account" from "unknown" during
118
+ * resolution so a foreign token yields a typed ID_FOREIGN_ACCOUNT.
119
+ */
120
+ getAliasAccount(token: string): string | null;
121
+ /**
122
+ * Reads an approval token scoped to `accountId` (or null). A read view for
123
+ * validation/preview; redemption still goes through {@link consumeApprovalToken}
124
+ * so the atomic guard is never bypassed.
125
+ */
126
+ getApprovalToken(token: string, accountId: string): ApprovalTokenRow | null;
127
+ /** Stages a two-phase approval token. */
128
+ putApprovalToken(input: ApprovalTokenInput): void;
129
+ /**
130
+ * Atomically consumes an approval token (D8). The guarded `UPDATE … WHERE
131
+ * redeemed_at IS NULL AND expires_at > now RETURNING` means only one caller —
132
+ * across processes sharing the db — can win the redemption; the loser sees
133
+ * `already_redeemed` and can return the stored receipt. Expiry is enforced
134
+ * here at the trust boundary (not left to callers): an expired token that
135
+ * still authorizes a send/delete would defeat the whole point of a time-boxed
136
+ * two-phase approval. Foreign-account tokens are refused.
137
+ */
138
+ consumeApprovalToken(args: {
139
+ token: string;
140
+ accountId: string;
141
+ receiptJson?: string | null;
142
+ now?: number;
143
+ }): ConsumeResult;
144
+ /**
145
+ * Deletes approval tokens whose expiry is older than the retention window
146
+ * (D8, 90 days). Recently-expired receipts linger so idempotent redemption
147
+ * still returns them. Returns the number of rows purged.
148
+ */
149
+ purgeExpired(now: number): number;
150
+ close(): void;
151
+ }
152
+ //# sourceMappingURL=store.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"store.d.ts","sourceRoot":"","sources":["../../src/state/store.ts"],"names":[],"mappings":"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"}