@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
@@ -9,6 +9,8 @@
9
9
  * approval pattern for destructive delete operations.
10
10
  */
11
11
  import { z } from 'zod';
12
+ import { defineTool } from '../registry/define-tool.js';
13
+ import { requireGraphToolset } from '../registry/context.js';
12
14
  // =============================================================================
13
15
  // Input Schemas
14
16
  // =============================================================================
@@ -119,4 +121,55 @@ export class LinkedResourcesTools {
119
121
  };
120
122
  }
121
123
  }
124
+ // =============================================================================
125
+ // Registry Definitions (v3 registry-driven architecture, U2)
126
+ // =============================================================================
127
+ /**
128
+ * Registry tool definitions for the linked-resources domain.
129
+ */
130
+ export function linkedResourcesToolDefinitions() {
131
+ const tools = (ctx) => requireGraphToolset(ctx, 'linkedResources');
132
+ return [
133
+ defineTool({
134
+ name: 'list_linked_resources',
135
+ description: 'List linked resources on a To Do task (Graph API)',
136
+ input: ListLinkedResourcesInput,
137
+ annotations: { readOnlyHint: true, openWorldHint: true },
138
+ destructive: false,
139
+ presets: ['tasks'],
140
+ backends: ['graph'],
141
+ handler: (ctx, params) => tools(ctx).listLinkedResources(params),
142
+ }),
143
+ defineTool({
144
+ name: 'create_linked_resource',
145
+ description: 'Create a linked resource on a To Do task (Graph API)',
146
+ input: CreateLinkedResourceInput,
147
+ annotations: { readOnlyHint: false, destructiveHint: false, openWorldHint: true },
148
+ destructive: false,
149
+ presets: ['tasks'],
150
+ backends: ['graph'],
151
+ handler: (ctx, params) => tools(ctx).createLinkedResource(params),
152
+ }),
153
+ defineTool({
154
+ name: 'prepare_delete_linked_resource',
155
+ description: 'Prepare to delete a linked resource. Returns an approval token. Call confirm_delete_linked_resource to execute. (Graph API)',
156
+ input: PrepareDeleteLinkedResourceInput,
157
+ annotations: { readOnlyHint: false, destructiveHint: false, openWorldHint: true },
158
+ destructive: true,
159
+ presets: ['tasks'],
160
+ backends: ['graph'],
161
+ handler: (ctx, params) => tools(ctx).prepareDeleteLinkedResource(params),
162
+ }),
163
+ defineTool({
164
+ name: 'confirm_delete_linked_resource',
165
+ description: 'Confirm deletion of a linked resource with approval token (Graph API)',
166
+ input: ConfirmDeleteLinkedResourceInput,
167
+ annotations: { readOnlyHint: false, destructiveHint: true, openWorldHint: true },
168
+ destructive: true,
169
+ presets: ['tasks'],
170
+ backends: ['graph'],
171
+ handler: (ctx, params) => tools(ctx).confirmDeleteLinkedResource(params),
172
+ }),
173
+ ];
174
+ }
122
175
  //# sourceMappingURL=linked-resources.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"linked-resources.js","sourceRoot":"","sources":["../../src/tools/linked-resources.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"linked-resources.js","sourceRoot":"","sources":["../../src/tools/linked-resources.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,40 @@
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
+ * AppleScript-backend mail tools (v3 registry-driven architecture, U2 — dual
7
+ * backend). Holds the mail READ logic that previously lived inline in the
8
+ * `handleAppleScriptToolCall` switch, so the registry handlers stay thin and
9
+ * branch on `ctx.backend`.
10
+ *
11
+ * The advertised (canonical) schemas are Graph-shaped (Graph is the default
12
+ * backend). This backend receives the superset params and maps only the fields
13
+ * it supports, exactly as the pre-registry dispatch did.
14
+ */
15
+ import type { MailTools } from './mail.js';
16
+ import type { ListFoldersToolParams, ListEmailsParams, SearchEmailsParams, GetEmailParams, GetEmailsParams, GetUnreadCountParams, ListAttachmentsParams, DownloadAttachmentParams } from './mail.js';
17
+ import type { IAccountRepository, IMailSender } from '../applescript/index.js';
18
+ import type { ToolResult } from '../registry/types.js';
19
+ import type { SendEmailParams } from './mail.js';
20
+ /**
21
+ * AppleScript mail tools. Each method mirrors the extracted inline AppleScript
22
+ * case body and returns an MCP `ToolResult`.
23
+ */
24
+ export declare class AppleMailTools {
25
+ private readonly mailTools;
26
+ private readonly accountRepository;
27
+ private readonly mailSender;
28
+ constructor(mailTools: MailTools, accountRepository: IAccountRepository, mailSender: IMailSender | null);
29
+ /** Single-shot send via the AppleScript mail sender (Graph uses two-phase). */
30
+ sendEmail(params: SendEmailParams): ToolResult;
31
+ listFolders(params: ListFoldersToolParams): ToolResult;
32
+ listEmails(params: ListEmailsParams): ToolResult;
33
+ searchEmails(params: SearchEmailsParams): ToolResult;
34
+ getEmail(params: GetEmailParams): ToolResult;
35
+ getEmails(params: GetEmailsParams): ToolResult;
36
+ getUnreadCount(params: GetUnreadCountParams): ToolResult;
37
+ listAttachments(params: ListAttachmentsParams): ToolResult;
38
+ downloadAttachment(params: DownloadAttachmentParams): ToolResult;
39
+ }
40
+ //# sourceMappingURL=mail-apple.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"mail-apple.d.ts","sourceRoot":"","sources":["../../src/tools/mail-apple.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH;;;;;;;;;GASG;AAEH,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,WAAW,CAAC;AAC3C,OAAO,KAAK,EACV,qBAAqB,EACrB,gBAAgB,EAChB,kBAAkB,EAClB,cAAc,EACd,eAAe,EACf,oBAAoB,EACpB,qBAAqB,EACrB,wBAAwB,EACzB,MAAM,WAAW,CAAC;AACnB,OAAO,KAAK,EAAE,kBAAkB,EAAE,WAAW,EAA6B,MAAM,yBAAyB,CAAC;AAC1G,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,sBAAsB,CAAC;AACvD,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,WAAW,CAAC;AA0CjD;;;GAGG;AACH,qBAAa,cAAc;IAEvB,OAAO,CAAC,QAAQ,CAAC,SAAS;IAC1B,OAAO,CAAC,QAAQ,CAAC,iBAAiB;IAClC,OAAO,CAAC,QAAQ,CAAC,UAAU;gBAFV,SAAS,EAAE,SAAS,EACpB,iBAAiB,EAAE,kBAAkB,EACrC,UAAU,EAAE,WAAW,GAAG,IAAI;IAGjD,+EAA+E;IAC/E,SAAS,CAAC,MAAM,EAAE,eAAe,GAAG,UAAU;IAiC9C,WAAW,CAAC,MAAM,EAAE,qBAAqB,GAAG,UAAU;IAmCtD,UAAU,CAAC,MAAM,EAAE,gBAAgB,GAAG,UAAU;IAIhD,YAAY,CAAC,MAAM,EAAE,kBAAkB,GAAG,UAAU;IAIpD,QAAQ,CAAC,MAAM,EAAE,cAAc,GAAG,UAAU;IAQ5C,SAAS,CAAC,MAAM,EAAE,eAAe,GAAG,UAAU;IAS9C,cAAc,CAAC,MAAM,EAAE,oBAAoB,GAAG,UAAU;IAIxD,eAAe,CAAC,MAAM,EAAE,qBAAqB,GAAG,UAAU;IAI1D,kBAAkB,CAAC,MAAM,EAAE,wBAAwB,GAAG,UAAU;CAGjE"}
@@ -0,0 +1,146 @@
1
+ /**
2
+ * Copyright (c) 2026 JBC Tech Solutions, LLC
3
+ * Licensed under the MIT License. See LICENSE file in the project root.
4
+ */
5
+ function jsonResult(data) {
6
+ return { content: [{ type: 'text', text: JSON.stringify(data, null, 2) }] };
7
+ }
8
+ /**
9
+ * Resolves an account_id parameter to an array of account IDs. Self-contained
10
+ * copy of the legacy dispatch helper (the original stays in index.ts, where it
11
+ * is still used by the account tools).
12
+ *
13
+ * - undefined → [defaultAccountId]
14
+ * - "all" → all account IDs
15
+ * - number → [number]
16
+ * - number[] → number[]
17
+ */
18
+ function resolveAccountIds(accountId, accountRepository) {
19
+ if (accountId === undefined) {
20
+ const defaultId = accountRepository.getDefaultAccountId();
21
+ return defaultId !== null ? [defaultId] : [];
22
+ }
23
+ if (accountId === 'all') {
24
+ const accounts = accountRepository.listAccounts();
25
+ return accounts.map(acc => acc.id);
26
+ }
27
+ if (typeof accountId === 'number') {
28
+ return [accountId];
29
+ }
30
+ if (Array.isArray(accountId)) {
31
+ return accountId;
32
+ }
33
+ const defaultId = accountRepository.getDefaultAccountId();
34
+ return defaultId !== null ? [defaultId] : [];
35
+ }
36
+ /**
37
+ * AppleScript mail tools. Each method mirrors the extracted inline AppleScript
38
+ * case body and returns an MCP `ToolResult`.
39
+ */
40
+ export class AppleMailTools {
41
+ mailTools;
42
+ accountRepository;
43
+ mailSender;
44
+ constructor(mailTools, accountRepository, mailSender) {
45
+ this.mailTools = mailTools;
46
+ this.accountRepository = accountRepository;
47
+ this.mailSender = mailSender;
48
+ }
49
+ /** Single-shot send via the AppleScript mail sender (Graph uses two-phase). */
50
+ sendEmail(params) {
51
+ if (this.mailSender == null) {
52
+ return { content: [{ type: 'text', text: 'Email sending is not available' }], isError: true };
53
+ }
54
+ let sendParams = {
55
+ to: params.to,
56
+ subject: params.subject,
57
+ body: params.body,
58
+ bodyType: params.body_type ?? 'plain',
59
+ };
60
+ if (params.cc != null)
61
+ sendParams = { ...sendParams, cc: params.cc };
62
+ if (params.bcc != null)
63
+ sendParams = { ...sendParams, bcc: params.bcc };
64
+ if (params.reply_to != null)
65
+ sendParams = { ...sendParams, replyTo: params.reply_to };
66
+ if (params.attachments != null) {
67
+ sendParams = {
68
+ ...sendParams,
69
+ attachments: params.attachments.map((a) => (a.name != null ? { path: a.path, name: a.name } : { path: a.path })),
70
+ };
71
+ }
72
+ if (params.inline_images != null) {
73
+ sendParams = {
74
+ ...sendParams,
75
+ inlineImages: params.inline_images.map((img) => ({ path: img.path, contentId: img.content_id })),
76
+ };
77
+ }
78
+ if (params.account_id != null)
79
+ sendParams = { ...sendParams, accountId: params.account_id };
80
+ const sent = this.mailSender.sendEmail(sendParams);
81
+ return {
82
+ content: [{ type: 'text', text: JSON.stringify({ message_id: sent.messageId, sent_at: sent.sentAt, status: 'sent' }, null, 2) }],
83
+ };
84
+ }
85
+ listFolders(params) {
86
+ const accountIds = resolveAccountIds(params.account_id, this.accountRepository);
87
+ // If querying multiple accounts, use grouped format
88
+ if (accountIds.length > 1 || params.account_id === 'all') {
89
+ const foldersWithAccount = this.accountRepository.listMailFoldersByAccounts(accountIds);
90
+ const accounts = this.accountRepository.listAccounts();
91
+ // Group folders by account
92
+ const groupedByAccount = accountIds.map(accountId => {
93
+ const account = accounts.find(a => a.id === accountId);
94
+ const folders = foldersWithAccount
95
+ .filter(f => f.accountId === accountId)
96
+ .map(f => ({
97
+ id: f.id,
98
+ name: f.name,
99
+ unreadCount: f.unreadCount,
100
+ messageCount: f.messageCount,
101
+ }));
102
+ return {
103
+ account_id: accountId,
104
+ account_name: account?.name ?? null,
105
+ account_email: account?.email ?? null,
106
+ folders,
107
+ };
108
+ });
109
+ return jsonResult({ accounts: groupedByAccount });
110
+ }
111
+ // Single account - use existing format for backward compatibility
112
+ return jsonResult(this.mailTools.listFolders({}));
113
+ }
114
+ listEmails(params) {
115
+ return jsonResult(this.mailTools.listEmails(params));
116
+ }
117
+ searchEmails(params) {
118
+ return jsonResult(this.mailTools.searchEmails(params));
119
+ }
120
+ getEmail(params) {
121
+ const result = this.mailTools.getEmail(params);
122
+ if (result == null) {
123
+ return { content: [{ type: 'text', text: 'Email not found' }], isError: true };
124
+ }
125
+ return jsonResult(result);
126
+ }
127
+ getEmails(params) {
128
+ const results = params.email_ids.map((id) => {
129
+ const email = this.mailTools.getEmail({ email_id: id, include_body: params.include_body, strip_html: params.strip_html });
130
+ if (email == null)
131
+ return { id, error: 'Not found' };
132
+ return email;
133
+ });
134
+ return jsonResult({ emails: results });
135
+ }
136
+ getUnreadCount(params) {
137
+ return jsonResult(this.mailTools.getUnreadCount(params));
138
+ }
139
+ listAttachments(params) {
140
+ return jsonResult(this.mailTools.listAttachments(params));
141
+ }
142
+ downloadAttachment(params) {
143
+ return jsonResult(this.mailTools.downloadAttachment(params));
144
+ }
145
+ }
146
+ //# sourceMappingURL=mail-apple.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"mail-apple.js","sourceRoot":"","sources":["../../src/tools/mail-apple.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,38 @@
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
+ * Graph-backend mail tools (v3 registry-driven architecture, U2 — dual
7
+ * backend). Holds the mail READ logic that previously lived inline in the
8
+ * `handleGraphToolCall` switch, so the registry handlers stay thin and branch
9
+ * on `ctx.backend`.
10
+ */
11
+ import type { GraphRepository } from '../graph/repository.js';
12
+ import type { GraphContentReaders } from '../graph/content-readers.js';
13
+ import type { ToolResult } from '../registry/types.js';
14
+ import type { ListFoldersToolParams, ListEmailsParams, SearchEmailsParams, GetEmailParams, GetEmailsParams, GetUnreadCountParams, ListAttachmentsParams, DownloadAttachmentParams, SearchEmailsAdvancedParams, CheckNewEmailsParams, ListConversationParams, GetMessageHeadersParams, GetMessageMimeParams, GetMailTipsParams } from './mail.js';
15
+ /**
16
+ * Graph mail tools. Each method mirrors the extracted inline graph case body
17
+ * and returns an MCP `ToolResult`.
18
+ */
19
+ export declare class GraphMailTools {
20
+ private readonly repository;
21
+ private readonly contentReaders;
22
+ constructor(repository: GraphRepository, contentReaders: GraphContentReaders);
23
+ listFolders(_params: ListFoldersToolParams): Promise<ToolResult>;
24
+ listEmails(params: ListEmailsParams): Promise<ToolResult>;
25
+ searchEmails(params: SearchEmailsParams): Promise<ToolResult>;
26
+ getEmail(params: GetEmailParams): Promise<ToolResult>;
27
+ getEmails(params: GetEmailsParams): Promise<ToolResult>;
28
+ getUnreadCount(params: GetUnreadCountParams): Promise<ToolResult>;
29
+ listAttachments(params: ListAttachmentsParams): Promise<ToolResult>;
30
+ downloadAttachment(params: DownloadAttachmentParams): Promise<ToolResult>;
31
+ searchEmailsAdvanced(params: SearchEmailsAdvancedParams): Promise<ToolResult>;
32
+ checkNewEmails(params: CheckNewEmailsParams): Promise<ToolResult>;
33
+ listConversation(params: ListConversationParams): Promise<ToolResult>;
34
+ getMessageHeaders(params: GetMessageHeadersParams): Promise<ToolResult>;
35
+ getMessageMime(params: GetMessageMimeParams): Promise<ToolResult>;
36
+ getMailTips(params: GetMailTipsParams): Promise<ToolResult>;
37
+ }
38
+ //# sourceMappingURL=mail-graph.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"mail-graph.d.ts","sourceRoot":"","sources":["../../src/tools/mail-graph.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH;;;;;GAKG;AAEH,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAC;AAC9D,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,6BAA6B,CAAC;AAIvE,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,sBAAsB,CAAC;AACvD,OAAO,KAAK,EACV,qBAAqB,EACrB,gBAAgB,EAChB,kBAAkB,EAClB,cAAc,EACd,eAAe,EACf,oBAAoB,EACpB,qBAAqB,EACrB,wBAAwB,EACxB,0BAA0B,EAC1B,oBAAoB,EACpB,sBAAsB,EACtB,uBAAuB,EACvB,oBAAoB,EACpB,iBAAiB,EAClB,MAAM,WAAW,CAAC;AAgGnB;;;GAGG;AACH,qBAAa,cAAc;IAEvB,OAAO,CAAC,QAAQ,CAAC,UAAU;IAC3B,OAAO,CAAC,QAAQ,CAAC,cAAc;gBADd,UAAU,EAAE,eAAe,EAC3B,cAAc,EAAE,mBAAmB;IAGhD,WAAW,CAAC,OAAO,EAAE,qBAAqB,GAAG,OAAO,CAAC,UAAU,CAAC;IAKhE,UAAU,CAAC,MAAM,EAAE,gBAAgB,GAAG,OAAO,CAAC,UAAU,CAAC;IAOzD,YAAY,CAAC,MAAM,EAAE,kBAAkB,GAAG,OAAO,CAAC,UAAU,CAAC;IAO7D,QAAQ,CAAC,MAAM,EAAE,cAAc,GAAG,OAAO,CAAC,UAAU,CAAC;IAiBrD,SAAS,CAAC,MAAM,EAAE,eAAe,GAAG,OAAO,CAAC,UAAU,CAAC;IAgBvD,cAAc,CAAC,MAAM,EAAE,oBAAoB,GAAG,OAAO,CAAC,UAAU,CAAC;IAOjE,eAAe,CAAC,MAAM,EAAE,qBAAqB,GAAG,OAAO,CAAC,UAAU,CAAC;IAKnE,kBAAkB,CAAC,MAAM,EAAE,wBAAwB,GAAG,OAAO,CAAC,UAAU,CAAC;IAKzE,oBAAoB,CAAC,MAAM,EAAE,0BAA0B,GAAG,OAAO,CAAC,UAAU,CAAC;IAS7E,cAAc,CAAC,MAAM,EAAE,oBAAoB,GAAG,OAAO,CAAC,UAAU,CAAC;IASjE,gBAAgB,CAAC,MAAM,EAAE,sBAAsB,GAAG,OAAO,CAAC,UAAU,CAAC;IAKrE,iBAAiB,CAAC,MAAM,EAAE,uBAAuB,GAAG,OAAO,CAAC,UAAU,CAAC;IAKvE,cAAc,CAAC,MAAM,EAAE,oBAAoB,GAAG,OAAO,CAAC,UAAU,CAAC;IAKjE,WAAW,CAAC,MAAM,EAAE,iBAAiB,GAAG,OAAO,CAAC,UAAU,CAAC;CAIlE"}
@@ -0,0 +1,178 @@
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 { unixTimestampToLocalIso } from '../graph/mappers/utils.js';
6
+ import { compileEmailSearch } from '../search/compiler.js';
7
+ function jsonResult(data) {
8
+ return { content: [{ type: 'text', text: JSON.stringify(data, null, 2) }] };
9
+ }
10
+ /**
11
+ * Transforms a folder row into the shape returned by the graph backend's
12
+ * `list_folders` tool. Self-contained copy of the legacy graph-mode transform.
13
+ */
14
+ function transformFolderRow(row) {
15
+ return {
16
+ id: row.id,
17
+ name: row.name ?? 'Unnamed',
18
+ parentId: row.parentId,
19
+ specialType: row.specialType,
20
+ folderType: row.folderType,
21
+ accountId: row.accountId,
22
+ messageCount: row.messageCount,
23
+ unreadCount: row.unreadCount,
24
+ };
25
+ }
26
+ /**
27
+ * Transforms an email row into the shape returned by the graph backend's mail
28
+ * READ tools. Uses Unix timestamps (not Apple epoch). Self-contained copy of
29
+ * the legacy graph-mode transform.
30
+ */
31
+ function transformEmailRow(row) {
32
+ return {
33
+ id: row.id,
34
+ folderId: row.folderId,
35
+ subject: row.subject,
36
+ sender: row.sender,
37
+ senderAddress: row.senderAddress,
38
+ preview: row.preview,
39
+ isRead: row.isRead === 1,
40
+ timeReceived: unixTimestampToLocalIso(row.timeReceived),
41
+ timeSent: unixTimestampToLocalIso(row.timeSent),
42
+ hasAttachment: row.hasAttachment === 1,
43
+ priority: row.priority,
44
+ flagStatus: row.flagStatus,
45
+ categories: parseEmailCategories(row.categories),
46
+ };
47
+ }
48
+ function parseEmailCategories(buffer) {
49
+ if (buffer == null || buffer.length === 0)
50
+ return [];
51
+ try {
52
+ const text = buffer.toString('utf-8');
53
+ return text.includes('\0')
54
+ ? text.split('\0').filter(s => s.length > 0)
55
+ : text.split(',').map(s => s.trim()).filter(s => s.length > 0);
56
+ }
57
+ catch {
58
+ return [];
59
+ }
60
+ }
61
+ function stripHtml(html) {
62
+ return html
63
+ .replace(/<style[^>]*>[\s\S]*?<\/style>/gi, '')
64
+ .replace(/<script[^>]*>[\s\S]*?<\/script>/gi, '')
65
+ .replace(/<[^>]+>/g, ' ')
66
+ .replace(/&nbsp;/g, ' ')
67
+ .replace(/&amp;/g, '&')
68
+ .replace(/&lt;/g, '<')
69
+ .replace(/&gt;/g, '>')
70
+ .replace(/&quot;/g, '"')
71
+ .replace(/&#39;/g, "'")
72
+ .replace(/\s+/g, ' ')
73
+ .trim();
74
+ }
75
+ /**
76
+ * Graph mail tools. Each method mirrors the extracted inline graph case body
77
+ * and returns an MCP `ToolResult`.
78
+ */
79
+ export class GraphMailTools {
80
+ repository;
81
+ contentReaders;
82
+ constructor(repository, contentReaders) {
83
+ this.repository = repository;
84
+ this.contentReaders = contentReaders;
85
+ }
86
+ async listFolders(_params) {
87
+ const folders = await this.repository.listFoldersAsync();
88
+ return jsonResult({ folders: folders.map(transformFolderRow) });
89
+ }
90
+ async listEmails(params) {
91
+ const emails = params.unread_only
92
+ ? await this.repository.listUnreadEmailsAsync(params.folder_id, params.limit, params.offset)
93
+ : await this.repository.listEmailsAsync(params.folder_id, params.limit, params.offset);
94
+ return jsonResult({ emails: emails.map(transformEmailRow) });
95
+ }
96
+ async searchEmails(params) {
97
+ const emails = params.folder_id != null
98
+ ? await this.repository.searchEmailsInFolderAsync(params.folder_id, params.query, params.limit)
99
+ : await this.repository.searchEmailsAsync(params.query, params.limit);
100
+ return jsonResult({ emails: emails.map(transformEmailRow) });
101
+ }
102
+ async getEmail(params) {
103
+ const email = await this.repository.getEmailAsync(params.email_id);
104
+ if (email == null) {
105
+ return { content: [{ type: 'text', text: 'Email not found' }], isError: true };
106
+ }
107
+ let body = null;
108
+ if (params.include_body) {
109
+ body = await this.contentReaders.email.readEmailBodyAsync(email.dataFilePath);
110
+ if (params.strip_html && body != null) {
111
+ body = stripHtml(body);
112
+ }
113
+ }
114
+ return jsonResult({ ...transformEmailRow(email), body });
115
+ }
116
+ async getEmails(params) {
117
+ const results = await Promise.all(params.email_ids.map(async (id) => {
118
+ const email = await this.repository.getEmailAsync(id);
119
+ if (email == null)
120
+ return { id, error: 'Not found' };
121
+ let body = null;
122
+ if (params.include_body) {
123
+ body = await this.contentReaders.email.readEmailBodyAsync(email.dataFilePath);
124
+ if (params.strip_html && body != null)
125
+ body = stripHtml(body);
126
+ }
127
+ return { ...transformEmailRow(email), body };
128
+ }));
129
+ return jsonResult({ emails: results });
130
+ }
131
+ async getUnreadCount(params) {
132
+ const count = params.folder_id != null
133
+ ? await this.repository.getUnreadCountByFolderAsync(params.folder_id)
134
+ : await this.repository.getUnreadCountAsync();
135
+ return jsonResult({ total: count });
136
+ }
137
+ async listAttachments(params) {
138
+ const attachments = await this.repository.listAttachmentsAsync(params.email_id);
139
+ return jsonResult({ attachments });
140
+ }
141
+ async downloadAttachment(params) {
142
+ const result = await this.repository.downloadAttachmentAsync(params.attachment_index);
143
+ return jsonResult(result);
144
+ }
145
+ async searchEmailsAdvanced(params) {
146
+ const { limit, ...criteria } = params;
147
+ // Compile structured criteria to the correct Graph mechanism (U7/D9). An
148
+ // empty or malformed-date query throws a typed VALIDATION error → envelope.
149
+ const compiled = compileEmailSearch(criteria);
150
+ const emails = await this.repository.searchEmailsStructuredAsync(compiled, limit);
151
+ return jsonResult({ emails: emails.map(transformEmailRow) });
152
+ }
153
+ async checkNewEmails(params) {
154
+ const deltaResult = await this.repository.checkNewEmailsAsync(params.folder_id);
155
+ return jsonResult({
156
+ emails: deltaResult.emails.map(transformEmailRow),
157
+ is_initial_sync: deltaResult.isInitialSync,
158
+ count: deltaResult.emails.length,
159
+ });
160
+ }
161
+ async listConversation(params) {
162
+ const emails = await this.repository.listConversationAsync(params.message_id, params.limit);
163
+ return jsonResult({ emails: emails.map(transformEmailRow) });
164
+ }
165
+ async getMessageHeaders(params) {
166
+ const headers = await this.repository.getMessageHeadersAsync(params.email_id);
167
+ return jsonResult({ headers });
168
+ }
169
+ async getMessageMime(params) {
170
+ const result = await this.repository.getMessageMimeAsync(params.email_id);
171
+ return jsonResult({ success: true, file_path: result.filePath });
172
+ }
173
+ async getMailTips(params) {
174
+ const tips = await this.repository.getMailTipsAsync(params.email_addresses);
175
+ return jsonResult({ mail_tips: tips });
176
+ }
177
+ }
178
+ //# sourceMappingURL=mail-graph.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"mail-graph.js","sourceRoot":"","sources":["../../src/tools/mail-graph.ts"],"names":[],"mappings":"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"}
@@ -10,6 +10,12 @@
10
10
  */
11
11
  import { z } from 'zod';
12
12
  import type { ApprovalTokenManager } from '../approval/index.js';
13
+ import type { ToolDefinition } from '../registry/types.js';
14
+ declare module '../registry/types.js' {
15
+ interface GraphToolsets {
16
+ rules: MailRulesTools;
17
+ }
18
+ }
13
19
  export declare const CreateMailRuleInput: z.ZodObject<{
14
20
  display_name: z.ZodString;
15
21
  sequence: z.ZodOptional<z.ZodNumber>;
@@ -95,4 +101,10 @@ export declare class MailRulesTools {
95
101
  }>;
96
102
  }>;
97
103
  }
104
+ /**
105
+ * Registry tool definitions for the mail-rules domain. Handlers close over the
106
+ * live MailRulesTools instance resolved from the runtime context after the
107
+ * Graph backend is initialized.
108
+ */
109
+ export declare function mailRulesToolDefinitions(): ToolDefinition[];
98
110
  //# sourceMappingURL=mail-rules.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"mail-rules.d.ts","sourceRoot":"","sources":["../../src/tools/mail-rules.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH;;;;;GAKG;AAEH,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,sBAAsB,CAAC;AAMjE,eAAO,MAAM,mBAAmB;;;;;;;;;;;;;;;;;;;;;;;;;;;;kBAoB9B,CAAC;AAEH,eAAO,MAAM,0BAA0B;;kBAErC,CAAC;AAEH,eAAO,MAAM,0BAA0B;;;kBAGrC,CAAC;AAMH,MAAM,MAAM,oBAAoB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,mBAAmB,CAAC,CAAC;AACvE,MAAM,MAAM,2BAA2B,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,0BAA0B,CAAC,CAAC;AACrF,MAAM,MAAM,2BAA2B,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,0BAA0B,CAAC,CAAC;AAMrF,MAAM,WAAW,oBAAoB;IACnC,kBAAkB,IAAI,OAAO,CAAC,KAAK,CAAC;QAAE,EAAE,EAAE,MAAM,CAAC;QAAC,WAAW,EAAE,MAAM,CAAC;QAAC,QAAQ,EAAE,MAAM,CAAC;QAAC,SAAS,EAAE,OAAO,CAAC;QAAC,UAAU,EAAE,OAAO,CAAC;QAAC,OAAO,EAAE,OAAO,CAAA;KAAE,CAAC,CAAC,CAAC;IACvJ,mBAAmB,CAAC,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC;IACpE,mBAAmB,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IACnD,oFAAoF;IACpF,gBAAgB,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS,CAAC;CACxD;AAMD;;GAEG;AACH,qBAAa,cAAc;IAEvB,OAAO,CAAC,QAAQ,CAAC,IAAI;IACrB,OAAO,CAAC,QAAQ,CAAC,YAAY;gBADZ,IAAI,EAAE,oBAAoB,EAC1B,YAAY,EAAE,oBAAoB;IAG/C,aAAa,IAAI,OAAO,CAAC;QAC7B,OAAO,EAAE,KAAK,CAAC;YAAE,IAAI,EAAE,MAAM,CAAC;YAAC,IAAI,EAAE,MAAM,CAAA;SAAE,CAAC,CAAC;KAChD,CAAC;IAUI,cAAc,CAAC,MAAM,EAAE,oBAAoB,GAAG,OAAO,CAAC;QAC1D,OAAO,EAAE,KAAK,CAAC;YAAE,IAAI,EAAE,MAAM,CAAC;YAAC,IAAI,EAAE,MAAM,CAAA;SAAE,CAAC,CAAC;KAChD,CAAC;IAiDF,qBAAqB,CAAC,MAAM,EAAE,2BAA2B,GAAG;QAC1D,OAAO,EAAE,KAAK,CAAC;YAAE,IAAI,EAAE,MAAM,CAAC;YAAC,IAAI,EAAE,MAAM,CAAA;SAAE,CAAC,CAAC;KAChD;IAqBK,qBAAqB,CAAC,MAAM,EAAE,2BAA2B,GAAG,OAAO,CAAC;QACxE,OAAO,EAAE,KAAK,CAAC;YAAE,IAAI,EAAE,MAAM,CAAC;YAAC,IAAI,EAAE,MAAM,CAAA;SAAE,CAAC,CAAC;KAChD,CAAC;CA6BH"}
1
+ {"version":3,"file":"mail-rules.d.ts","sourceRoot":"","sources":["../../src/tools/mail-rules.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH;;;;;GAKG;AAEH,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,sBAAsB,CAAC;AAGjE,OAAO,KAAK,EAAe,cAAc,EAAE,MAAM,sBAAsB,CAAC;AAIxE,OAAO,QAAQ,sBAAsB,CAAC;IACpC,UAAU,aAAa;QACrB,KAAK,EAAE,cAAc,CAAC;KACvB;CACF;AAMD,eAAO,MAAM,mBAAmB;;;;;;;;;;;;;;;;;;;;;;;;;;;;kBAoB9B,CAAC;AAEH,eAAO,MAAM,0BAA0B;;kBAErC,CAAC;AAEH,eAAO,MAAM,0BAA0B;;;kBAGrC,CAAC;AAMH,MAAM,MAAM,oBAAoB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,mBAAmB,CAAC,CAAC;AACvE,MAAM,MAAM,2BAA2B,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,0BAA0B,CAAC,CAAC;AACrF,MAAM,MAAM,2BAA2B,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,0BAA0B,CAAC,CAAC;AAMrF,MAAM,WAAW,oBAAoB;IACnC,kBAAkB,IAAI,OAAO,CAAC,KAAK,CAAC;QAAE,EAAE,EAAE,MAAM,CAAC;QAAC,WAAW,EAAE,MAAM,CAAC;QAAC,QAAQ,EAAE,MAAM,CAAC;QAAC,SAAS,EAAE,OAAO,CAAC;QAAC,UAAU,EAAE,OAAO,CAAC;QAAC,OAAO,EAAE,OAAO,CAAA;KAAE,CAAC,CAAC,CAAC;IACvJ,mBAAmB,CAAC,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC;IACpE,mBAAmB,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IACnD,oFAAoF;IACpF,gBAAgB,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS,CAAC;CACxD;AAMD;;GAEG;AACH,qBAAa,cAAc;IAEvB,OAAO,CAAC,QAAQ,CAAC,IAAI;IACrB,OAAO,CAAC,QAAQ,CAAC,YAAY;gBADZ,IAAI,EAAE,oBAAoB,EAC1B,YAAY,EAAE,oBAAoB;IAG/C,aAAa,IAAI,OAAO,CAAC;QAC7B,OAAO,EAAE,KAAK,CAAC;YAAE,IAAI,EAAE,MAAM,CAAC;YAAC,IAAI,EAAE,MAAM,CAAA;SAAE,CAAC,CAAC;KAChD,CAAC;IAUI,cAAc,CAAC,MAAM,EAAE,oBAAoB,GAAG,OAAO,CAAC;QAC1D,OAAO,EAAE,KAAK,CAAC;YAAE,IAAI,EAAE,MAAM,CAAC;YAAC,IAAI,EAAE,MAAM,CAAA;SAAE,CAAC,CAAC;KAChD,CAAC;IAiDF,qBAAqB,CAAC,MAAM,EAAE,2BAA2B,GAAG;QAC1D,OAAO,EAAE,KAAK,CAAC;YAAE,IAAI,EAAE,MAAM,CAAC;YAAC,IAAI,EAAE,MAAM,CAAA;SAAE,CAAC,CAAC;KAChD;IAqBK,qBAAqB,CAAC,MAAM,EAAE,2BAA2B,GAAG,OAAO,CAAC;QACxE,OAAO,EAAE,KAAK,CAAC;YAAE,IAAI,EAAE,MAAM,CAAC;YAAC,IAAI,EAAE,MAAM,CAAA;SAAE,CAAC,CAAC;KAChD,CAAC;CA6BH;AAQD;;;;GAIG;AACH,wBAAgB,wBAAwB,IAAI,cAAc,EAAE,CA6C3D"}
@@ -9,6 +9,8 @@
9
9
  * approval pattern for destructive delete operations.
10
10
  */
11
11
  import { z } from 'zod';
12
+ import { defineTool } from '../registry/define-tool.js';
13
+ import { requireGraphToolset } from '../registry/context.js';
12
14
  // =============================================================================
13
15
  // Input Schemas
14
16
  // =============================================================================
@@ -166,4 +168,58 @@ export class MailRulesTools {
166
168
  };
167
169
  }
168
170
  }
171
+ // =============================================================================
172
+ // Registry Definitions (v3 registry-driven architecture, U1 pilot)
173
+ // =============================================================================
174
+ const NoInput = z.strictObject({});
175
+ /**
176
+ * Registry tool definitions for the mail-rules domain. Handlers close over the
177
+ * live MailRulesTools instance resolved from the runtime context after the
178
+ * Graph backend is initialized.
179
+ */
180
+ export function mailRulesToolDefinitions() {
181
+ const tools = (ctx) => requireGraphToolset(ctx, 'rules');
182
+ return [
183
+ defineTool({
184
+ name: 'list_mail_rules',
185
+ description: 'List all inbox mail rules (Graph API)',
186
+ input: NoInput,
187
+ annotations: { readOnlyHint: true, openWorldHint: true },
188
+ destructive: false,
189
+ presets: ['mail'],
190
+ backends: ['graph'],
191
+ handler: (ctx) => tools(ctx).listMailRules(),
192
+ }),
193
+ defineTool({
194
+ name: 'create_mail_rule',
195
+ description: 'Create an inbox mail rule with conditions and actions (Graph API)',
196
+ input: CreateMailRuleInput,
197
+ annotations: { readOnlyHint: false, destructiveHint: false, openWorldHint: true },
198
+ destructive: false,
199
+ presets: ['mail'],
200
+ backends: ['graph'],
201
+ handler: (ctx, params) => tools(ctx).createMailRule(params),
202
+ }),
203
+ defineTool({
204
+ name: 'prepare_delete_mail_rule',
205
+ description: 'Prepare to delete a mail rule. Returns a preview and approval token. Call confirm_delete_mail_rule to execute. (Graph API)',
206
+ input: PrepareDeleteMailRuleInput,
207
+ annotations: { readOnlyHint: false, destructiveHint: false, openWorldHint: true },
208
+ destructive: true,
209
+ presets: ['mail'],
210
+ backends: ['graph'],
211
+ handler: (ctx, params) => tools(ctx).prepareDeleteMailRule(params),
212
+ }),
213
+ defineTool({
214
+ name: 'confirm_delete_mail_rule',
215
+ description: 'Confirm mail rule deletion with approval token (Graph API)',
216
+ input: ConfirmDeleteMailRuleInput,
217
+ annotations: { readOnlyHint: false, destructiveHint: true, openWorldHint: true },
218
+ destructive: true,
219
+ presets: ['mail'],
220
+ backends: ['graph'],
221
+ handler: (ctx, params) => tools(ctx).confirmDeleteMailRule(params),
222
+ }),
223
+ ];
224
+ }
169
225
  //# sourceMappingURL=mail-rules.js.map