@jbctechsolutions/mcp-office365 2.5.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE +21 -0
- package/README.md +667 -0
- package/dist/applescript/account-repository.d.ts +30 -0
- package/dist/applescript/account-repository.d.ts.map +1 -0
- package/dist/applescript/account-repository.js +38 -0
- package/dist/applescript/account-repository.js.map +1 -0
- package/dist/applescript/account-scripts.d.ts +21 -0
- package/dist/applescript/account-scripts.d.ts.map +1 -0
- package/dist/applescript/account-scripts.js +180 -0
- package/dist/applescript/account-scripts.js.map +1 -0
- package/dist/applescript/calendar-manager.d.ts +44 -0
- package/dist/applescript/calendar-manager.d.ts.map +1 -0
- package/dist/applescript/calendar-manager.js +92 -0
- package/dist/applescript/calendar-manager.js.map +1 -0
- package/dist/applescript/calendar-writer.d.ts +36 -0
- package/dist/applescript/calendar-writer.d.ts.map +1 -0
- package/dist/applescript/calendar-writer.js +94 -0
- package/dist/applescript/calendar-writer.js.map +1 -0
- package/dist/applescript/content-readers.d.ts +114 -0
- package/dist/applescript/content-readers.d.ts.map +1 -0
- package/dist/applescript/content-readers.js +328 -0
- package/dist/applescript/content-readers.js.map +1 -0
- package/dist/applescript/executor.d.ts +60 -0
- package/dist/applescript/executor.d.ts.map +1 -0
- package/dist/applescript/executor.js +173 -0
- package/dist/applescript/executor.js.map +1 -0
- package/dist/applescript/index.d.ts +20 -0
- package/dist/applescript/index.d.ts.map +1 -0
- package/dist/applescript/index.js +29 -0
- package/dist/applescript/index.js.map +1 -0
- package/dist/applescript/mail-sender.d.ts +38 -0
- package/dist/applescript/mail-sender.d.ts.map +1 -0
- package/dist/applescript/mail-sender.js +67 -0
- package/dist/applescript/mail-sender.js.map +1 -0
- package/dist/applescript/parser.d.ts +235 -0
- package/dist/applescript/parser.d.ts.map +1 -0
- package/dist/applescript/parser.js +496 -0
- package/dist/applescript/parser.js.map +1 -0
- package/dist/applescript/repository.d.ts +64 -0
- package/dist/applescript/repository.d.ts.map +1 -0
- package/dist/applescript/repository.js +444 -0
- package/dist/applescript/repository.js.map +1 -0
- package/dist/applescript/scripts.d.ts +265 -0
- package/dist/applescript/scripts.d.ts.map +1 -0
- package/dist/applescript/scripts.js +1483 -0
- package/dist/applescript/scripts.js.map +1 -0
- package/dist/approval/hash.d.ts +87 -0
- package/dist/approval/hash.d.ts.map +1 -0
- package/dist/approval/hash.js +102 -0
- package/dist/approval/hash.js.map +1 -0
- package/dist/approval/index.d.ts +13 -0
- package/dist/approval/index.d.ts.map +1 -0
- package/dist/approval/index.js +7 -0
- package/dist/approval/index.js.map +1 -0
- package/dist/approval/token-manager.d.ts +51 -0
- package/dist/approval/token-manager.d.ts.map +1 -0
- package/dist/approval/token-manager.js +111 -0
- package/dist/approval/token-manager.js.map +1 -0
- package/dist/approval/types.d.ts +44 -0
- package/dist/approval/types.d.ts.map +1 -0
- package/dist/approval/types.js +6 -0
- package/dist/approval/types.js.map +1 -0
- package/dist/cli.d.ts +30 -0
- package/dist/cli.d.ts.map +1 -0
- package/dist/cli.js +143 -0
- package/dist/cli.js.map +1 -0
- package/dist/config.d.ts +27 -0
- package/dist/config.d.ts.map +1 -0
- package/dist/config.js +42 -0
- package/dist/config.js.map +1 -0
- package/dist/database/connection.d.ts +77 -0
- package/dist/database/connection.d.ts.map +1 -0
- package/dist/database/connection.js +130 -0
- package/dist/database/connection.js.map +1 -0
- package/dist/database/index.d.ts +11 -0
- package/dist/database/index.d.ts.map +1 -0
- package/dist/database/index.js +11 -0
- package/dist/database/index.js.map +1 -0
- package/dist/database/queries.d.ts +93 -0
- package/dist/database/queries.d.ts.map +1 -0
- package/dist/database/queries.js +430 -0
- package/dist/database/queries.js.map +1 -0
- package/dist/database/repository.d.ts +198 -0
- package/dist/database/repository.d.ts.map +1 -0
- package/dist/database/repository.js +199 -0
- package/dist/database/repository.js.map +1 -0
- package/dist/graph/attachments.d.ts +72 -0
- package/dist/graph/attachments.d.ts.map +1 -0
- package/dist/graph/attachments.js +207 -0
- package/dist/graph/attachments.js.map +1 -0
- package/dist/graph/auth/config.d.ts +34 -0
- package/dist/graph/auth/config.d.ts.map +1 -0
- package/dist/graph/auth/config.js +78 -0
- package/dist/graph/auth/config.js.map +1 -0
- package/dist/graph/auth/device-code-flow.d.ts +55 -0
- package/dist/graph/auth/device-code-flow.d.ts.map +1 -0
- package/dist/graph/auth/device-code-flow.js +180 -0
- package/dist/graph/auth/device-code-flow.js.map +1 -0
- package/dist/graph/auth/index.d.ts +13 -0
- package/dist/graph/auth/index.d.ts.map +1 -0
- package/dist/graph/auth/index.js +13 -0
- package/dist/graph/auth/index.js.map +1 -0
- package/dist/graph/auth/token-cache.d.ts +41 -0
- package/dist/graph/auth/token-cache.d.ts.map +1 -0
- package/dist/graph/auth/token-cache.js +105 -0
- package/dist/graph/auth/token-cache.js.map +1 -0
- package/dist/graph/client/batch.d.ts +38 -0
- package/dist/graph/client/batch.d.ts.map +1 -0
- package/dist/graph/client/batch.js +33 -0
- package/dist/graph/client/batch.js.map +1 -0
- package/dist/graph/client/cache.d.ts +64 -0
- package/dist/graph/client/cache.d.ts.map +1 -0
- package/dist/graph/client/cache.js +108 -0
- package/dist/graph/client/cache.js.map +1 -0
- package/dist/graph/client/graph-client.d.ts +630 -0
- package/dist/graph/client/graph-client.d.ts.map +1 -0
- package/dist/graph/client/graph-client.js +1771 -0
- package/dist/graph/client/graph-client.js.map +1 -0
- package/dist/graph/client/index.d.ts +12 -0
- package/dist/graph/client/index.d.ts.map +1 -0
- package/dist/graph/client/index.js +12 -0
- package/dist/graph/client/index.js.map +1 -0
- package/dist/graph/content-readers.d.ts +106 -0
- package/dist/graph/content-readers.d.ts.map +1 -0
- package/dist/graph/content-readers.js +321 -0
- package/dist/graph/content-readers.js.map +1 -0
- package/dist/graph/index.d.ts +18 -0
- package/dist/graph/index.d.ts.map +1 -0
- package/dist/graph/index.js +23 -0
- package/dist/graph/index.js.map +1 -0
- package/dist/graph/mailbox-adapter.d.ts +30 -0
- package/dist/graph/mailbox-adapter.d.ts.map +1 -0
- package/dist/graph/mailbox-adapter.js +59 -0
- package/dist/graph/mailbox-adapter.js.map +1 -0
- package/dist/graph/mappers/contact-mapper.d.ts +14 -0
- package/dist/graph/mappers/contact-mapper.d.ts.map +1 -0
- package/dist/graph/mappers/contact-mapper.js +20 -0
- package/dist/graph/mappers/contact-mapper.js.map +1 -0
- package/dist/graph/mappers/email-mapper.d.ts +14 -0
- package/dist/graph/mappers/email-mapper.d.ts.map +1 -0
- package/dist/graph/mappers/email-mapper.js +44 -0
- package/dist/graph/mappers/email-mapper.js.map +1 -0
- package/dist/graph/mappers/event-mapper.d.ts +14 -0
- package/dist/graph/mappers/event-mapper.d.ts.map +1 -0
- package/dist/graph/mappers/event-mapper.js +31 -0
- package/dist/graph/mappers/event-mapper.js.map +1 -0
- package/dist/graph/mappers/folder-mapper.d.ts +22 -0
- package/dist/graph/mappers/folder-mapper.d.ts.map +1 -0
- package/dist/graph/mappers/folder-mapper.js +51 -0
- package/dist/graph/mappers/folder-mapper.js.map +1 -0
- package/dist/graph/mappers/index.d.ts +16 -0
- package/dist/graph/mappers/index.d.ts.map +1 -0
- package/dist/graph/mappers/index.js +16 -0
- package/dist/graph/mappers/index.js.map +1 -0
- package/dist/graph/mappers/task-mapper.d.ts +20 -0
- package/dist/graph/mappers/task-mapper.d.ts.map +1 -0
- package/dist/graph/mappers/task-mapper.js +27 -0
- package/dist/graph/mappers/task-mapper.js.map +1 -0
- package/dist/graph/mappers/utils.d.ts +97 -0
- package/dist/graph/mappers/utils.d.ts.map +1 -0
- package/dist/graph/mappers/utils.js +186 -0
- package/dist/graph/mappers/utils.js.map +1 -0
- package/dist/graph/repository.d.ts +1104 -0
- package/dist/graph/repository.d.ts.map +1 -0
- package/dist/graph/repository.js +2999 -0
- package/dist/graph/repository.js.map +1 -0
- package/dist/index.d.ts +21 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +6052 -0
- package/dist/index.js.map +1 -0
- package/dist/parsers/html-stripper.d.ts +41 -0
- package/dist/parsers/html-stripper.d.ts.map +1 -0
- package/dist/parsers/html-stripper.js +179 -0
- package/dist/parsers/html-stripper.js.map +1 -0
- package/dist/parsers/index.d.ts +12 -0
- package/dist/parsers/index.d.ts.map +1 -0
- package/dist/parsers/index.js +12 -0
- package/dist/parsers/index.js.map +1 -0
- package/dist/parsers/olk15.d.ts +87 -0
- package/dist/parsers/olk15.d.ts.map +1 -0
- package/dist/parsers/olk15.js +368 -0
- package/dist/parsers/olk15.js.map +1 -0
- package/dist/signature.d.ts +22 -0
- package/dist/signature.d.ts.map +1 -0
- package/dist/signature.js +89 -0
- package/dist/signature.js.map +1 -0
- package/dist/tools/calendar-permissions.d.ts +79 -0
- package/dist/tools/calendar-permissions.d.ts.map +1 -0
- package/dist/tools/calendar-permissions.js +121 -0
- package/dist/tools/calendar-permissions.js.map +1 -0
- package/dist/tools/calendar.d.ts +208 -0
- package/dist/tools/calendar.d.ts.map +1 -0
- package/dist/tools/calendar.js +247 -0
- package/dist/tools/calendar.js.map +1 -0
- package/dist/tools/categories.d.ts +94 -0
- package/dist/tools/categories.d.ts.map +1 -0
- package/dist/tools/categories.js +117 -0
- package/dist/tools/categories.js.map +1 -0
- package/dist/tools/checklist-items.d.ts +89 -0
- package/dist/tools/checklist-items.d.ts.map +1 -0
- package/dist/tools/checklist-items.js +140 -0
- package/dist/tools/checklist-items.js.map +1 -0
- package/dist/tools/contacts.d.ts +94 -0
- package/dist/tools/contacts.d.ts.map +1 -0
- package/dist/tools/contacts.js +134 -0
- package/dist/tools/contacts.js.map +1 -0
- package/dist/tools/excel.d.ts +96 -0
- package/dist/tools/excel.d.ts.map +1 -0
- package/dist/tools/excel.js +165 -0
- package/dist/tools/excel.js.map +1 -0
- package/dist/tools/focused-overrides.d.ts +70 -0
- package/dist/tools/focused-overrides.d.ts.map +1 -0
- package/dist/tools/focused-overrides.js +117 -0
- package/dist/tools/focused-overrides.js.map +1 -0
- package/dist/tools/index.d.ts +22 -0
- package/dist/tools/index.d.ts.map +1 -0
- package/dist/tools/index.js +34 -0
- package/dist/tools/index.js.map +1 -0
- package/dist/tools/linked-resources.d.ts +74 -0
- package/dist/tools/linked-resources.d.ts.map +1 -0
- package/dist/tools/linked-resources.js +122 -0
- package/dist/tools/linked-resources.js.map +1 -0
- package/dist/tools/mail-rules.d.ts +98 -0
- package/dist/tools/mail-rules.d.ts.map +1 -0
- package/dist/tools/mail-rules.js +169 -0
- package/dist/tools/mail-rules.js.map +1 -0
- package/dist/tools/mail-send.d.ts +314 -0
- package/dist/tools/mail-send.d.ts.map +1 -0
- package/dist/tools/mail-send.js +555 -0
- package/dist/tools/mail-send.js.map +1 -0
- package/dist/tools/mail.d.ts +127 -0
- package/dist/tools/mail.d.ts.map +1 -0
- package/dist/tools/mail.js +311 -0
- package/dist/tools/mail.js.map +1 -0
- package/dist/tools/mailbox-organization.d.ts +301 -0
- package/dist/tools/mailbox-organization.d.ts.map +1 -0
- package/dist/tools/mailbox-organization.js +541 -0
- package/dist/tools/mailbox-organization.js.map +1 -0
- package/dist/tools/meetings.d.ts +114 -0
- package/dist/tools/meetings.d.ts.map +1 -0
- package/dist/tools/meetings.js +110 -0
- package/dist/tools/meetings.js.map +1 -0
- package/dist/tools/notes.d.ts +74 -0
- package/dist/tools/notes.d.ts.map +1 -0
- package/dist/tools/notes.js +136 -0
- package/dist/tools/notes.js.map +1 -0
- package/dist/tools/onedrive.d.ts +194 -0
- package/dist/tools/onedrive.d.ts.map +1 -0
- package/dist/tools/onedrive.js +257 -0
- package/dist/tools/onedrive.js.map +1 -0
- package/dist/tools/people.d.ts +129 -0
- package/dist/tools/people.d.ts.map +1 -0
- package/dist/tools/people.js +195 -0
- package/dist/tools/people.js.map +1 -0
- package/dist/tools/planner-visualization.d.ts +91 -0
- package/dist/tools/planner-visualization.d.ts.map +1 -0
- package/dist/tools/planner-visualization.js +192 -0
- package/dist/tools/planner-visualization.js.map +1 -0
- package/dist/tools/planner.d.ts +288 -0
- package/dist/tools/planner.d.ts.map +1 -0
- package/dist/tools/planner.js +368 -0
- package/dist/tools/planner.js.map +1 -0
- package/dist/tools/scheduling.d.ts +49 -0
- package/dist/tools/scheduling.d.ts.map +1 -0
- package/dist/tools/scheduling.js +115 -0
- package/dist/tools/scheduling.js.map +1 -0
- package/dist/tools/sharepoint.d.ts +115 -0
- package/dist/tools/sharepoint.d.ts.map +1 -0
- package/dist/tools/sharepoint.js +99 -0
- package/dist/tools/sharepoint.js.map +1 -0
- package/dist/tools/task-attachments.d.ts +74 -0
- package/dist/tools/task-attachments.d.ts.map +1 -0
- package/dist/tools/task-attachments.js +122 -0
- package/dist/tools/task-attachments.js.map +1 -0
- package/dist/tools/tasks.d.ts +74 -0
- package/dist/tools/tasks.d.ts.map +1 -0
- package/dist/tools/tasks.js +126 -0
- package/dist/tools/tasks.js.map +1 -0
- package/dist/tools/teams.d.ts +389 -0
- package/dist/tools/teams.d.ts.map +1 -0
- package/dist/tools/teams.js +546 -0
- package/dist/tools/teams.js.map +1 -0
- package/dist/types/calendar.d.ts +60 -0
- package/dist/types/calendar.d.ts.map +1 -0
- package/dist/types/calendar.js +15 -0
- package/dist/types/calendar.js.map +1 -0
- package/dist/types/contacts.d.ts +96 -0
- package/dist/types/contacts.d.ts.map +1 -0
- package/dist/types/contacts.js +41 -0
- package/dist/types/contacts.js.map +1 -0
- package/dist/types/index.d.ts +15 -0
- package/dist/types/index.d.ts.map +1 -0
- package/dist/types/index.js +16 -0
- package/dist/types/index.js.map +1 -0
- package/dist/types/mail.d.ts +108 -0
- package/dist/types/mail.d.ts.map +1 -0
- package/dist/types/mail.js +40 -0
- package/dist/types/mail.js.map +1 -0
- package/dist/types/notes.d.ts +26 -0
- package/dist/types/notes.d.ts.map +1 -0
- package/dist/types/notes.js +6 -0
- package/dist/types/notes.js.map +1 -0
- package/dist/types/tasks.d.ts +31 -0
- package/dist/types/tasks.d.ts.map +1 -0
- package/dist/types/tasks.js +6 -0
- package/dist/types/tasks.js.map +1 -0
- package/dist/utils/dates.d.ts +66 -0
- package/dist/utils/dates.d.ts.map +1 -0
- package/dist/utils/dates.js +94 -0
- package/dist/utils/dates.js.map +1 -0
- package/dist/utils/errors.d.ts +218 -0
- package/dist/utils/errors.d.ts.map +1 -0
- package/dist/utils/errors.js +306 -0
- package/dist/utils/errors.js.map +1 -0
- package/dist/utils/index.d.ts +10 -0
- package/dist/utils/index.d.ts.map +1 -0
- package/dist/utils/index.js +10 -0
- package/dist/utils/index.js.map +1 -0
- package/dist/visualization/html.d.ts +26 -0
- package/dist/visualization/html.d.ts.map +1 -0
- package/dist/visualization/html.js +306 -0
- package/dist/visualization/html.js.map +1 -0
- package/dist/visualization/markdown.d.ts +25 -0
- package/dist/visualization/markdown.d.ts.map +1 -0
- package/dist/visualization/markdown.js +186 -0
- package/dist/visualization/markdown.js.map +1 -0
- package/dist/visualization/mermaid.d.ts +25 -0
- package/dist/visualization/mermaid.d.ts.map +1 -0
- package/dist/visualization/mermaid.js +158 -0
- package/dist/visualization/mermaid.js.map +1 -0
- package/dist/visualization/svg.d.ts +25 -0
- package/dist/visualization/svg.d.ts.map +1 -0
- package/dist/visualization/svg.js +282 -0
- package/dist/visualization/svg.js.map +1 -0
- package/dist/visualization/types.d.ts +43 -0
- package/dist/visualization/types.d.ts.map +1 -0
- package/dist/visualization/types.js +34 -0
- package/dist/visualization/types.js.map +1 -0
- package/package.json +88 -0
|
@@ -0,0 +1,127 @@
|
|
|
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 { z } from 'zod';
|
|
6
|
+
import type { IRepository } from '../database/repository.js';
|
|
7
|
+
import type { Folder, EmailSummary, Email, AttachmentInfo } from '../types/index.js';
|
|
8
|
+
import type { IAttachmentReader } from '../applescript/content-readers.js';
|
|
9
|
+
export declare const ListFoldersInput: z.ZodObject<{}, z.core.$strict>;
|
|
10
|
+
export declare const ListEmailsInput: z.ZodObject<{
|
|
11
|
+
folder_id: z.ZodNumber;
|
|
12
|
+
limit: z.ZodDefault<z.ZodNumber>;
|
|
13
|
+
offset: z.ZodDefault<z.ZodNumber>;
|
|
14
|
+
unread_only: z.ZodDefault<z.ZodBoolean>;
|
|
15
|
+
}, z.core.$strict>;
|
|
16
|
+
export declare const SearchEmailsInput: z.ZodObject<{
|
|
17
|
+
query: z.ZodString;
|
|
18
|
+
folder_id: z.ZodOptional<z.ZodNumber>;
|
|
19
|
+
limit: z.ZodDefault<z.ZodNumber>;
|
|
20
|
+
}, z.core.$strict>;
|
|
21
|
+
export declare const SearchEmailsAdvancedInput: z.ZodObject<{
|
|
22
|
+
query: z.ZodString;
|
|
23
|
+
folder_id: z.ZodOptional<z.ZodNumber>;
|
|
24
|
+
limit: z.ZodDefault<z.ZodNumber>;
|
|
25
|
+
}, z.core.$strict>;
|
|
26
|
+
export declare const GetEmailInput: z.ZodObject<{
|
|
27
|
+
email_id: z.ZodNumber;
|
|
28
|
+
include_body: z.ZodDefault<z.ZodBoolean>;
|
|
29
|
+
strip_html: z.ZodDefault<z.ZodBoolean>;
|
|
30
|
+
}, z.core.$strict>;
|
|
31
|
+
export declare const GetEmailsInput: z.ZodObject<{
|
|
32
|
+
email_ids: z.ZodArray<z.ZodNumber>;
|
|
33
|
+
include_body: z.ZodDefault<z.ZodBoolean>;
|
|
34
|
+
strip_html: z.ZodDefault<z.ZodBoolean>;
|
|
35
|
+
}, z.core.$strict>;
|
|
36
|
+
export declare const ListConversationInput: z.ZodObject<{
|
|
37
|
+
message_id: z.ZodNumber;
|
|
38
|
+
limit: z.ZodDefault<z.ZodNumber>;
|
|
39
|
+
}, z.core.$strict>;
|
|
40
|
+
export declare const GetUnreadCountInput: z.ZodObject<{
|
|
41
|
+
folder_id: z.ZodOptional<z.ZodNumber>;
|
|
42
|
+
}, z.core.$strict>;
|
|
43
|
+
export declare const ListAttachmentsInput: z.ZodObject<{
|
|
44
|
+
email_id: z.ZodNumber;
|
|
45
|
+
}, z.core.$strict>;
|
|
46
|
+
export declare const DownloadAttachmentInput: z.ZodObject<{
|
|
47
|
+
email_id: z.ZodNumber;
|
|
48
|
+
attachment_index: z.ZodNumber;
|
|
49
|
+
save_path: z.ZodString;
|
|
50
|
+
}, z.core.$strict>;
|
|
51
|
+
export declare const CheckNewEmailsInput: z.ZodObject<{
|
|
52
|
+
folder_id: z.ZodNumber;
|
|
53
|
+
}, z.core.$strict>;
|
|
54
|
+
export type ListFoldersParams = z.infer<typeof ListFoldersInput>;
|
|
55
|
+
export type ListEmailsParams = z.infer<typeof ListEmailsInput>;
|
|
56
|
+
export type SearchEmailsParams = z.infer<typeof SearchEmailsInput>;
|
|
57
|
+
export type GetEmailParams = z.infer<typeof GetEmailInput>;
|
|
58
|
+
export type GetEmailsParams = z.infer<typeof GetEmailsInput>;
|
|
59
|
+
export type GetUnreadCountParams = z.infer<typeof GetUnreadCountInput>;
|
|
60
|
+
export type ListAttachmentsParams = z.infer<typeof ListAttachmentsInput>;
|
|
61
|
+
export type DownloadAttachmentParams = z.infer<typeof DownloadAttachmentInput>;
|
|
62
|
+
export type CheckNewEmailsParams = z.infer<typeof CheckNewEmailsInput>;
|
|
63
|
+
/**
|
|
64
|
+
* Interface for reading email body content from data files.
|
|
65
|
+
*/
|
|
66
|
+
export interface IContentReader {
|
|
67
|
+
/**
|
|
68
|
+
* Reads the body content from the given data file path.
|
|
69
|
+
* Returns null if the file cannot be read.
|
|
70
|
+
*/
|
|
71
|
+
readEmailBody(dataFilePath: string | null): string | null;
|
|
72
|
+
}
|
|
73
|
+
/**
|
|
74
|
+
* Default content reader that returns null (body reading not implemented yet).
|
|
75
|
+
* Will be replaced with OLK15 parser implementation.
|
|
76
|
+
*/
|
|
77
|
+
export declare const nullContentReader: IContentReader;
|
|
78
|
+
/**
|
|
79
|
+
* Mail tools implementation with dependency injection.
|
|
80
|
+
*/
|
|
81
|
+
export declare class MailTools {
|
|
82
|
+
private readonly repository;
|
|
83
|
+
private readonly contentReader;
|
|
84
|
+
private readonly attachmentReader?;
|
|
85
|
+
constructor(repository: IRepository, contentReader?: IContentReader, attachmentReader?: IAttachmentReader | undefined);
|
|
86
|
+
/**
|
|
87
|
+
* Lists all mail folders with message and unread counts.
|
|
88
|
+
*/
|
|
89
|
+
listFolders(_params: ListFoldersParams): Folder[];
|
|
90
|
+
/**
|
|
91
|
+
* Lists emails in a folder with pagination.
|
|
92
|
+
*/
|
|
93
|
+
listEmails(params: ListEmailsParams): EmailSummary[];
|
|
94
|
+
/**
|
|
95
|
+
* Searches emails by subject, sender, or preview.
|
|
96
|
+
*/
|
|
97
|
+
searchEmails(params: SearchEmailsParams): EmailSummary[];
|
|
98
|
+
/**
|
|
99
|
+
* Gets a single email by ID with optional body content.
|
|
100
|
+
*/
|
|
101
|
+
getEmail(params: GetEmailParams): (Email & {
|
|
102
|
+
attachments: AttachmentInfo[];
|
|
103
|
+
}) | null;
|
|
104
|
+
/**
|
|
105
|
+
* Gets the unread email count.
|
|
106
|
+
*/
|
|
107
|
+
getUnreadCount(params: GetUnreadCountParams): {
|
|
108
|
+
count: number;
|
|
109
|
+
};
|
|
110
|
+
/**
|
|
111
|
+
* Lists attachment metadata for an email.
|
|
112
|
+
*/
|
|
113
|
+
listAttachments(params: ListAttachmentsParams): AttachmentInfo[];
|
|
114
|
+
/**
|
|
115
|
+
* Downloads/saves an attachment to disk.
|
|
116
|
+
*/
|
|
117
|
+
downloadAttachment(params: DownloadAttachmentParams): {
|
|
118
|
+
name: string;
|
|
119
|
+
savedTo: string;
|
|
120
|
+
size: number;
|
|
121
|
+
};
|
|
122
|
+
}
|
|
123
|
+
/**
|
|
124
|
+
* Creates mail tools with the given repository.
|
|
125
|
+
*/
|
|
126
|
+
export declare function createMailTools(repository: IRepository, contentReader?: IContentReader, attachmentReader?: IAttachmentReader): MailTools;
|
|
127
|
+
//# sourceMappingURL=mail.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"mail.d.ts","sourceRoot":"","sources":["../../src/tools/mail.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,311 @@
|
|
|
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
|
+
* Mail-related MCP tools.
|
|
7
|
+
*
|
|
8
|
+
* Provides tools for listing folders, emails, and searching.
|
|
9
|
+
*/
|
|
10
|
+
import { existsSync } from 'fs';
|
|
11
|
+
import { dirname } from 'path';
|
|
12
|
+
import { z } from 'zod';
|
|
13
|
+
import { MAX_ATTACHMENT_DOWNLOAD_SIZE } from '../types/mail.js';
|
|
14
|
+
import { appleTimestampToIso } from '../utils/dates.js';
|
|
15
|
+
import { extractPlainText } from '../parsers/html-stripper.js';
|
|
16
|
+
import { NotFoundError, ValidationError, AttachmentTooLargeError, AttachmentSaveError } from '../utils/errors.js';
|
|
17
|
+
// =============================================================================
|
|
18
|
+
// Input Schemas
|
|
19
|
+
// =============================================================================
|
|
20
|
+
export const ListFoldersInput = z.strictObject({});
|
|
21
|
+
export const ListEmailsInput = z.strictObject({
|
|
22
|
+
folder_id: z.number().int().positive().describe('The folder ID to list emails from'),
|
|
23
|
+
limit: z
|
|
24
|
+
.number()
|
|
25
|
+
.int()
|
|
26
|
+
.min(1)
|
|
27
|
+
.max(100)
|
|
28
|
+
.default(50)
|
|
29
|
+
.describe('Maximum number of emails to return (1-100)'),
|
|
30
|
+
offset: z.number().int().min(0).default(0).describe('Number of emails to skip'),
|
|
31
|
+
unread_only: z.boolean().default(false).describe('Only return unread emails'),
|
|
32
|
+
});
|
|
33
|
+
export const SearchEmailsInput = z.strictObject({
|
|
34
|
+
query: z.string().min(1).describe('Search query (searches subject, sender, and preview)'),
|
|
35
|
+
folder_id: z
|
|
36
|
+
.number()
|
|
37
|
+
.int()
|
|
38
|
+
.positive()
|
|
39
|
+
.optional()
|
|
40
|
+
.describe('Optional folder ID to limit search to'),
|
|
41
|
+
limit: z
|
|
42
|
+
.number()
|
|
43
|
+
.int()
|
|
44
|
+
.min(1)
|
|
45
|
+
.max(100)
|
|
46
|
+
.default(50)
|
|
47
|
+
.describe('Maximum number of emails to return (1-100)'),
|
|
48
|
+
});
|
|
49
|
+
export const SearchEmailsAdvancedInput = z.strictObject({
|
|
50
|
+
query: z.string().min(1).describe('KQL search query. Examples: from:alice, subject:"quarterly report", hasAttachments:true, received>=2024-01-01. Combine with AND/OR.'),
|
|
51
|
+
folder_id: z.number().int().positive().optional().describe('Optional folder ID to search within'),
|
|
52
|
+
limit: z.number().int().min(1).max(100).default(50).describe('Maximum results (1-100)'),
|
|
53
|
+
});
|
|
54
|
+
export const GetEmailInput = z.strictObject({
|
|
55
|
+
email_id: z.number().int().positive().describe('The email ID to retrieve'),
|
|
56
|
+
include_body: z.boolean().default(true).describe('Include the email body in the response'),
|
|
57
|
+
strip_html: z.boolean().default(true).describe('Strip HTML tags from the body'),
|
|
58
|
+
});
|
|
59
|
+
export const GetEmailsInput = z.strictObject({
|
|
60
|
+
email_ids: z.array(z.number().int().positive()).min(1).max(25)
|
|
61
|
+
.describe('Array of email IDs to fetch (max 25)'),
|
|
62
|
+
include_body: z.boolean().default(false).describe('Include full email body'),
|
|
63
|
+
strip_html: z.boolean().default(false).describe('Strip HTML tags from body'),
|
|
64
|
+
});
|
|
65
|
+
export const ListConversationInput = z.strictObject({
|
|
66
|
+
message_id: z.number().int().positive().describe('Any message ID from the conversation thread'),
|
|
67
|
+
limit: z.number().int().min(1).max(100).default(25).describe('Maximum messages to return'),
|
|
68
|
+
});
|
|
69
|
+
export const GetUnreadCountInput = z.strictObject({
|
|
70
|
+
folder_id: z
|
|
71
|
+
.number()
|
|
72
|
+
.int()
|
|
73
|
+
.positive()
|
|
74
|
+
.optional()
|
|
75
|
+
.describe('Optional folder ID to get unread count for'),
|
|
76
|
+
});
|
|
77
|
+
export const ListAttachmentsInput = z.strictObject({
|
|
78
|
+
email_id: z.number().int().positive().describe('The email ID to list attachments for'),
|
|
79
|
+
});
|
|
80
|
+
export const DownloadAttachmentInput = z.strictObject({
|
|
81
|
+
email_id: z.number().int().positive().describe('The email ID containing the attachment'),
|
|
82
|
+
attachment_index: z.number().int().positive().describe('The 1-based index of the attachment (from list_attachments)'),
|
|
83
|
+
save_path: z.string().min(1).describe('Absolute file path where the attachment should be saved'),
|
|
84
|
+
});
|
|
85
|
+
export const CheckNewEmailsInput = z.strictObject({
|
|
86
|
+
folder_id: z.number().int().positive().describe('Folder ID to check for new emails'),
|
|
87
|
+
});
|
|
88
|
+
// =============================================================================
|
|
89
|
+
// Transformers
|
|
90
|
+
// =============================================================================
|
|
91
|
+
/**
|
|
92
|
+
* Transforms a database folder row to domain Folder type.
|
|
93
|
+
*/
|
|
94
|
+
function transformFolder(row) {
|
|
95
|
+
return {
|
|
96
|
+
id: row.id,
|
|
97
|
+
name: row.name ?? 'Unnamed',
|
|
98
|
+
parentId: row.parentId,
|
|
99
|
+
specialType: row.specialType,
|
|
100
|
+
folderType: row.folderType,
|
|
101
|
+
accountId: row.accountId,
|
|
102
|
+
messageCount: row.messageCount,
|
|
103
|
+
unreadCount: row.unreadCount,
|
|
104
|
+
};
|
|
105
|
+
}
|
|
106
|
+
/**
|
|
107
|
+
* Transforms a database email row to domain EmailSummary type.
|
|
108
|
+
*/
|
|
109
|
+
function transformEmailSummary(row) {
|
|
110
|
+
return {
|
|
111
|
+
id: row.id,
|
|
112
|
+
folderId: row.folderId,
|
|
113
|
+
subject: row.subject,
|
|
114
|
+
sender: row.sender,
|
|
115
|
+
senderAddress: row.senderAddress,
|
|
116
|
+
preview: row.preview,
|
|
117
|
+
isRead: row.isRead === 1,
|
|
118
|
+
timeReceived: appleTimestampToIso(row.timeReceived),
|
|
119
|
+
timeSent: appleTimestampToIso(row.timeSent),
|
|
120
|
+
hasAttachment: row.hasAttachment === 1,
|
|
121
|
+
priority: row.priority,
|
|
122
|
+
flagStatus: row.flagStatus,
|
|
123
|
+
categories: parseCategories(row.categories),
|
|
124
|
+
};
|
|
125
|
+
}
|
|
126
|
+
/**
|
|
127
|
+
* Parses categories from the database buffer.
|
|
128
|
+
* Outlook stores categories as a null-delimited or comma-delimited buffer.
|
|
129
|
+
*/
|
|
130
|
+
function parseCategories(buffer) {
|
|
131
|
+
if (buffer == null || buffer.length === 0) {
|
|
132
|
+
return [];
|
|
133
|
+
}
|
|
134
|
+
try {
|
|
135
|
+
const text = buffer.toString('utf-8');
|
|
136
|
+
// Categories may be stored as null-delimited or comma-delimited strings
|
|
137
|
+
const categories = text.includes('\0')
|
|
138
|
+
? text.split('\0').filter(s => s.length > 0)
|
|
139
|
+
: text.split(',').map(s => s.trim()).filter(s => s.length > 0);
|
|
140
|
+
return categories;
|
|
141
|
+
}
|
|
142
|
+
catch {
|
|
143
|
+
return [];
|
|
144
|
+
}
|
|
145
|
+
}
|
|
146
|
+
/**
|
|
147
|
+
* Transforms a database email row to domain Email type.
|
|
148
|
+
*/
|
|
149
|
+
function transformEmail(row, body, stripHtml) {
|
|
150
|
+
const summary = transformEmailSummary(row);
|
|
151
|
+
// Process the body
|
|
152
|
+
let processedBody = null;
|
|
153
|
+
let htmlBody = null;
|
|
154
|
+
if (body != null) {
|
|
155
|
+
htmlBody = body;
|
|
156
|
+
processedBody = stripHtml ? extractPlainText(body) : body;
|
|
157
|
+
}
|
|
158
|
+
return {
|
|
159
|
+
...summary,
|
|
160
|
+
recipients: row.recipients,
|
|
161
|
+
displayTo: row.displayTo,
|
|
162
|
+
toAddresses: row.toAddresses,
|
|
163
|
+
ccAddresses: row.ccAddresses,
|
|
164
|
+
size: row.size,
|
|
165
|
+
messageId: row.messageId ?? null,
|
|
166
|
+
conversationId: row.conversationId ?? null,
|
|
167
|
+
body: processedBody,
|
|
168
|
+
htmlBody: stripHtml ? null : htmlBody,
|
|
169
|
+
};
|
|
170
|
+
}
|
|
171
|
+
/**
|
|
172
|
+
* Default content reader that returns null (body reading not implemented yet).
|
|
173
|
+
* Will be replaced with OLK15 parser implementation.
|
|
174
|
+
*/
|
|
175
|
+
export const nullContentReader = {
|
|
176
|
+
readEmailBody: () => null,
|
|
177
|
+
};
|
|
178
|
+
// =============================================================================
|
|
179
|
+
// Mail Tools Class
|
|
180
|
+
// =============================================================================
|
|
181
|
+
/**
|
|
182
|
+
* Mail tools implementation with dependency injection.
|
|
183
|
+
*/
|
|
184
|
+
export class MailTools {
|
|
185
|
+
repository;
|
|
186
|
+
contentReader;
|
|
187
|
+
attachmentReader;
|
|
188
|
+
constructor(repository, contentReader = nullContentReader, attachmentReader) {
|
|
189
|
+
this.repository = repository;
|
|
190
|
+
this.contentReader = contentReader;
|
|
191
|
+
this.attachmentReader = attachmentReader;
|
|
192
|
+
}
|
|
193
|
+
/**
|
|
194
|
+
* Lists all mail folders with message and unread counts.
|
|
195
|
+
*/
|
|
196
|
+
listFolders(_params) {
|
|
197
|
+
const rows = this.repository.listFolders();
|
|
198
|
+
return rows.map(transformFolder);
|
|
199
|
+
}
|
|
200
|
+
/**
|
|
201
|
+
* Lists emails in a folder with pagination.
|
|
202
|
+
*/
|
|
203
|
+
listEmails(params) {
|
|
204
|
+
const { folder_id, limit, offset, unread_only } = params;
|
|
205
|
+
const rows = unread_only
|
|
206
|
+
? this.repository.listUnreadEmails(folder_id, limit, offset)
|
|
207
|
+
: this.repository.listEmails(folder_id, limit, offset);
|
|
208
|
+
return rows.map(transformEmailSummary);
|
|
209
|
+
}
|
|
210
|
+
/**
|
|
211
|
+
* Searches emails by subject, sender, or preview.
|
|
212
|
+
*/
|
|
213
|
+
searchEmails(params) {
|
|
214
|
+
const { query, folder_id, limit } = params;
|
|
215
|
+
const rows = folder_id != null
|
|
216
|
+
? this.repository.searchEmailsInFolder(folder_id, query, limit)
|
|
217
|
+
: this.repository.searchEmails(query, limit);
|
|
218
|
+
return rows.map(transformEmailSummary);
|
|
219
|
+
}
|
|
220
|
+
/**
|
|
221
|
+
* Gets a single email by ID with optional body content.
|
|
222
|
+
*/
|
|
223
|
+
getEmail(params) {
|
|
224
|
+
const { email_id, include_body, strip_html } = params;
|
|
225
|
+
const row = this.repository.getEmail(email_id);
|
|
226
|
+
if (row == null) {
|
|
227
|
+
return null;
|
|
228
|
+
}
|
|
229
|
+
// Get body content if requested
|
|
230
|
+
let body = null;
|
|
231
|
+
if (include_body && row.dataFilePath != null) {
|
|
232
|
+
body = this.contentReader.readEmailBody(row.dataFilePath);
|
|
233
|
+
}
|
|
234
|
+
// Get attachment metadata if available
|
|
235
|
+
let attachments = [];
|
|
236
|
+
if (this.attachmentReader != null && row.hasAttachment === 1) {
|
|
237
|
+
attachments = this.attachmentReader.listAttachments(email_id);
|
|
238
|
+
}
|
|
239
|
+
return {
|
|
240
|
+
...transformEmail(row, body, strip_html),
|
|
241
|
+
attachments,
|
|
242
|
+
};
|
|
243
|
+
}
|
|
244
|
+
/**
|
|
245
|
+
* Gets the unread email count.
|
|
246
|
+
*/
|
|
247
|
+
getUnreadCount(params) {
|
|
248
|
+
const { folder_id } = params;
|
|
249
|
+
const count = folder_id != null
|
|
250
|
+
? this.repository.getUnreadCountByFolder(folder_id)
|
|
251
|
+
: this.repository.getUnreadCount();
|
|
252
|
+
return { count };
|
|
253
|
+
}
|
|
254
|
+
/**
|
|
255
|
+
* Lists attachment metadata for an email.
|
|
256
|
+
*/
|
|
257
|
+
listAttachments(params) {
|
|
258
|
+
if (this.attachmentReader == null) {
|
|
259
|
+
return [];
|
|
260
|
+
}
|
|
261
|
+
const { email_id } = params;
|
|
262
|
+
const row = this.repository.getEmail(email_id);
|
|
263
|
+
if (row == null) {
|
|
264
|
+
throw new NotFoundError('Email', email_id);
|
|
265
|
+
}
|
|
266
|
+
return this.attachmentReader.listAttachments(email_id);
|
|
267
|
+
}
|
|
268
|
+
/**
|
|
269
|
+
* Downloads/saves an attachment to disk.
|
|
270
|
+
*/
|
|
271
|
+
downloadAttachment(params) {
|
|
272
|
+
if (this.attachmentReader == null) {
|
|
273
|
+
throw new ValidationError('Attachment reader not available');
|
|
274
|
+
}
|
|
275
|
+
const { email_id, attachment_index, save_path } = params;
|
|
276
|
+
const row = this.repository.getEmail(email_id);
|
|
277
|
+
if (row == null) {
|
|
278
|
+
throw new NotFoundError('Email', email_id);
|
|
279
|
+
}
|
|
280
|
+
// Validate save path directory exists
|
|
281
|
+
const dir = dirname(save_path);
|
|
282
|
+
if (!existsSync(dir)) {
|
|
283
|
+
throw new ValidationError(`Directory does not exist: ${dir}`);
|
|
284
|
+
}
|
|
285
|
+
// Get attachment list to validate index and check size
|
|
286
|
+
const attachments = this.attachmentReader.listAttachments(email_id);
|
|
287
|
+
const attachment = attachments.find(a => a.index === attachment_index);
|
|
288
|
+
if (attachment == null) {
|
|
289
|
+
throw new NotFoundError('Attachment', attachment_index);
|
|
290
|
+
}
|
|
291
|
+
if (attachment.size > MAX_ATTACHMENT_DOWNLOAD_SIZE) {
|
|
292
|
+
throw new AttachmentTooLargeError(attachment.name, attachment.size, MAX_ATTACHMENT_DOWNLOAD_SIZE);
|
|
293
|
+
}
|
|
294
|
+
const result = this.attachmentReader.saveAttachment(email_id, attachment_index, save_path);
|
|
295
|
+
if (!result.success) {
|
|
296
|
+
throw new AttachmentSaveError(attachment.name, result.error ?? 'Unknown error');
|
|
297
|
+
}
|
|
298
|
+
return {
|
|
299
|
+
name: result.name ?? attachment.name,
|
|
300
|
+
savedTo: result.savedTo ?? save_path,
|
|
301
|
+
size: result.fileSize ?? attachment.size,
|
|
302
|
+
};
|
|
303
|
+
}
|
|
304
|
+
}
|
|
305
|
+
/**
|
|
306
|
+
* Creates mail tools with the given repository.
|
|
307
|
+
*/
|
|
308
|
+
export function createMailTools(repository, contentReader = nullContentReader, attachmentReader) {
|
|
309
|
+
return new MailTools(repository, contentReader, attachmentReader);
|
|
310
|
+
}
|
|
311
|
+
//# sourceMappingURL=mail.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"mail.js","sourceRoot":"","sources":["../../src/tools/mail.ts"],"names":[],"mappings":"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"}
|