@jbctechsolutions/mcp-outlook-mac 1.1.7 → 1.2.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.
- package/dist/approval/hash.d.ts +63 -0
- package/dist/approval/hash.d.ts.map +1 -1
- package/dist/approval/hash.js +71 -1
- package/dist/approval/hash.js.map +1 -1
- package/dist/approval/index.d.ts +1 -1
- package/dist/approval/index.d.ts.map +1 -1
- package/dist/approval/index.js +1 -1
- package/dist/approval/index.js.map +1 -1
- package/dist/approval/types.d.ts +2 -2
- package/dist/approval/types.d.ts.map +1 -1
- package/dist/graph/attachments.d.ts +57 -0
- package/dist/graph/attachments.d.ts.map +1 -0
- package/dist/graph/attachments.js +165 -0
- package/dist/graph/attachments.js.map +1 -0
- package/dist/graph/client/graph-client.d.ts +99 -0
- package/dist/graph/client/graph-client.d.ts.map +1 -1
- package/dist/graph/client/graph-client.js +246 -0
- package/dist/graph/client/graph-client.js.map +1 -1
- package/dist/graph/mappers/utils.d.ts +4 -0
- package/dist/graph/mappers/utils.d.ts.map +1 -1
- package/dist/graph/mappers/utils.js +17 -3
- package/dist/graph/mappers/utils.js.map +1 -1
- package/dist/graph/repository.d.ts +234 -0
- package/dist/graph/repository.d.ts.map +1 -1
- package/dist/graph/repository.js +427 -0
- package/dist/graph/repository.js.map +1 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +1100 -15
- package/dist/index.js.map +1 -1
- package/dist/tools/index.d.ts +1 -0
- package/dist/tools/index.d.ts.map +1 -1
- package/dist/tools/index.js +2 -0
- package/dist/tools/index.js.map +1 -1
- package/dist/tools/mail-send.d.ts +239 -0
- package/dist/tools/mail-send.d.ts.map +1 -0
- package/dist/tools/mail-send.js +414 -0
- package/dist/tools/mail-send.js.map +1 -0
- package/package.json +1 -1
package/dist/approval/hash.d.ts
CHANGED
|
@@ -21,4 +21,67 @@ export declare function hashFolderForApproval(folder: {
|
|
|
21
21
|
name: string | null;
|
|
22
22
|
messageCount: number;
|
|
23
23
|
}): string;
|
|
24
|
+
/**
|
|
25
|
+
* Creates a hash of a draft's critical properties for send approval.
|
|
26
|
+
* Used to detect if the draft changed between prepare and confirm.
|
|
27
|
+
*/
|
|
28
|
+
export declare function hashDraftForSend(draft: {
|
|
29
|
+
id: number;
|
|
30
|
+
subject: string | null;
|
|
31
|
+
recipientCount: number;
|
|
32
|
+
}): string;
|
|
33
|
+
/**
|
|
34
|
+
* Creates a hash for a direct send (compose-and-send) approval.
|
|
35
|
+
* Captures the recipient counts that define the send scope.
|
|
36
|
+
*/
|
|
37
|
+
export declare function hashDirectSendForApproval(params: {
|
|
38
|
+
subject: string;
|
|
39
|
+
toCount: number;
|
|
40
|
+
ccCount: number;
|
|
41
|
+
bccCount: number;
|
|
42
|
+
}): string;
|
|
43
|
+
/**
|
|
44
|
+
* Creates a hash for a reply approval.
|
|
45
|
+
* Captures the original message ID, comment length, and reply-all flag.
|
|
46
|
+
*/
|
|
47
|
+
export declare function hashReplyForApproval(params: {
|
|
48
|
+
originalId: number;
|
|
49
|
+
commentLength: number;
|
|
50
|
+
replyAll: boolean;
|
|
51
|
+
}): string;
|
|
52
|
+
/**
|
|
53
|
+
* Creates a hash for a forward approval.
|
|
54
|
+
* Captures the original message ID and the number of forward recipients.
|
|
55
|
+
*/
|
|
56
|
+
export declare function hashForwardForApproval(params: {
|
|
57
|
+
originalId: number;
|
|
58
|
+
recipientCount: number;
|
|
59
|
+
}): string;
|
|
60
|
+
/**
|
|
61
|
+
* Creates a hash of a calendar event's critical properties.
|
|
62
|
+
* Used to detect if the event changed between prepare and confirm.
|
|
63
|
+
*/
|
|
64
|
+
export declare function hashEventForApproval(event: {
|
|
65
|
+
id: number;
|
|
66
|
+
subject: string | null;
|
|
67
|
+
startDateTime: string | null;
|
|
68
|
+
}): string;
|
|
69
|
+
/**
|
|
70
|
+
* Creates a hash of a contact's critical properties.
|
|
71
|
+
* Used to detect if the contact changed between prepare and confirm.
|
|
72
|
+
*/
|
|
73
|
+
export declare function hashContactForApproval(contact: {
|
|
74
|
+
id: number;
|
|
75
|
+
displayName: string | null;
|
|
76
|
+
emailAddress: string | null;
|
|
77
|
+
}): string;
|
|
78
|
+
/**
|
|
79
|
+
* Creates a hash of a task's critical properties.
|
|
80
|
+
* Used to detect if the task changed between prepare and confirm.
|
|
81
|
+
*/
|
|
82
|
+
export declare function hashTaskForApproval(task: {
|
|
83
|
+
taskId: string;
|
|
84
|
+
title: string | null;
|
|
85
|
+
listId: string;
|
|
86
|
+
}): string;
|
|
24
87
|
//# sourceMappingURL=hash.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"hash.d.ts","sourceRoot":"","sources":["../../src/approval/hash.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAWH;;;GAGG;AACH,wBAAgB,oBAAoB,CAAC,KAAK,EAAE;IAC1C,EAAE,EAAE,MAAM,CAAC;IACX,OAAO,EAAE,MAAM,GAAG,IAAI,CAAC;IACvB,QAAQ,EAAE,MAAM,CAAC;IACjB,YAAY,EAAE,MAAM,GAAG,IAAI,CAAC;CAC7B,GAAG,MAAM,CAKT;AAED;;;GAGG;AACH,wBAAgB,qBAAqB,CAAC,MAAM,EAAE;IAC5C,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,GAAG,IAAI,CAAC;IACpB,YAAY,EAAE,MAAM,CAAC;CACtB,GAAG,MAAM,CAKT"}
|
|
1
|
+
{"version":3,"file":"hash.d.ts","sourceRoot":"","sources":["../../src/approval/hash.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAWH;;;GAGG;AACH,wBAAgB,oBAAoB,CAAC,KAAK,EAAE;IAC1C,EAAE,EAAE,MAAM,CAAC;IACX,OAAO,EAAE,MAAM,GAAG,IAAI,CAAC;IACvB,QAAQ,EAAE,MAAM,CAAC;IACjB,YAAY,EAAE,MAAM,GAAG,IAAI,CAAC;CAC7B,GAAG,MAAM,CAKT;AAED;;;GAGG;AACH,wBAAgB,qBAAqB,CAAC,MAAM,EAAE;IAC5C,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,GAAG,IAAI,CAAC;IACpB,YAAY,EAAE,MAAM,CAAC;CACtB,GAAG,MAAM,CAKT;AAED;;;GAGG;AACH,wBAAgB,gBAAgB,CAAC,KAAK,EAAE;IACtC,EAAE,EAAE,MAAM,CAAC;IACX,OAAO,EAAE,MAAM,GAAG,IAAI,CAAC;IACvB,cAAc,EAAE,MAAM,CAAC;CACxB,GAAG,MAAM,CAKT;AAED;;;GAGG;AACH,wBAAgB,yBAAyB,CAAC,MAAM,EAAE;IAChD,OAAO,EAAE,MAAM,CAAC;IAChB,OAAO,EAAE,MAAM,CAAC;IAChB,OAAO,EAAE,MAAM,CAAC;IAChB,QAAQ,EAAE,MAAM,CAAC;CAClB,GAAG,MAAM,CAKT;AAED;;;GAGG;AACH,wBAAgB,oBAAoB,CAAC,MAAM,EAAE;IAC3C,UAAU,EAAE,MAAM,CAAC;IACnB,aAAa,EAAE,MAAM,CAAC;IACtB,QAAQ,EAAE,OAAO,CAAC;CACnB,GAAG,MAAM,CAKT;AAED;;;GAGG;AACH,wBAAgB,sBAAsB,CAAC,MAAM,EAAE;IAC7C,UAAU,EAAE,MAAM,CAAC;IACnB,cAAc,EAAE,MAAM,CAAC;CACxB,GAAG,MAAM,CAKT;AAED;;;GAGG;AACH,wBAAgB,oBAAoB,CAAC,KAAK,EAAE;IAC1C,EAAE,EAAE,MAAM,CAAC;IACX,OAAO,EAAE,MAAM,GAAG,IAAI,CAAC;IACvB,aAAa,EAAE,MAAM,GAAG,IAAI,CAAC;CAC9B,GAAG,MAAM,CAKT;AAED;;;GAGG;AACH,wBAAgB,sBAAsB,CAAC,OAAO,EAAE;IAC9C,EAAE,EAAE,MAAM,CAAC;IACX,WAAW,EAAE,MAAM,GAAG,IAAI,CAAC;IAC3B,YAAY,EAAE,MAAM,GAAG,IAAI,CAAC;CAC7B,GAAG,MAAM,CAKT;AAED;;;GAGG;AACH,wBAAgB,mBAAmB,CAAC,IAAI,EAAE;IACxC,MAAM,EAAE,MAAM,CAAC;IACf,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;IACrB,MAAM,EAAE,MAAM,CAAC;CAChB,GAAG,MAAM,CAKT"}
|
package/dist/approval/hash.js
CHANGED
|
@@ -6,7 +6,7 @@
|
|
|
6
6
|
* Target hashing for approval tokens.
|
|
7
7
|
*
|
|
8
8
|
* Generates hashes of critical properties to detect if a target
|
|
9
|
-
*
|
|
9
|
+
* has been modified between prepare and confirm.
|
|
10
10
|
*/
|
|
11
11
|
import { createHash } from 'node:crypto';
|
|
12
12
|
/**
|
|
@@ -29,4 +29,74 @@ export function hashFolderForApproval(folder) {
|
|
|
29
29
|
.digest('hex')
|
|
30
30
|
.slice(0, 16);
|
|
31
31
|
}
|
|
32
|
+
/**
|
|
33
|
+
* Creates a hash of a draft's critical properties for send approval.
|
|
34
|
+
* Used to detect if the draft changed between prepare and confirm.
|
|
35
|
+
*/
|
|
36
|
+
export function hashDraftForSend(draft) {
|
|
37
|
+
return createHash('sha256')
|
|
38
|
+
.update(`${draft.id}:${draft.subject ?? ''}:${draft.recipientCount}`)
|
|
39
|
+
.digest('hex')
|
|
40
|
+
.slice(0, 16);
|
|
41
|
+
}
|
|
42
|
+
/**
|
|
43
|
+
* Creates a hash for a direct send (compose-and-send) approval.
|
|
44
|
+
* Captures the recipient counts that define the send scope.
|
|
45
|
+
*/
|
|
46
|
+
export function hashDirectSendForApproval(params) {
|
|
47
|
+
return createHash('sha256')
|
|
48
|
+
.update(`${params.subject}:${params.toCount}:${params.ccCount}:${params.bccCount}`)
|
|
49
|
+
.digest('hex')
|
|
50
|
+
.slice(0, 16);
|
|
51
|
+
}
|
|
52
|
+
/**
|
|
53
|
+
* Creates a hash for a reply approval.
|
|
54
|
+
* Captures the original message ID, comment length, and reply-all flag.
|
|
55
|
+
*/
|
|
56
|
+
export function hashReplyForApproval(params) {
|
|
57
|
+
return createHash('sha256')
|
|
58
|
+
.update(`${params.originalId}:${params.commentLength}:${params.replyAll}`)
|
|
59
|
+
.digest('hex')
|
|
60
|
+
.slice(0, 16);
|
|
61
|
+
}
|
|
62
|
+
/**
|
|
63
|
+
* Creates a hash for a forward approval.
|
|
64
|
+
* Captures the original message ID and the number of forward recipients.
|
|
65
|
+
*/
|
|
66
|
+
export function hashForwardForApproval(params) {
|
|
67
|
+
return createHash('sha256')
|
|
68
|
+
.update(`${params.originalId}:${params.recipientCount}`)
|
|
69
|
+
.digest('hex')
|
|
70
|
+
.slice(0, 16);
|
|
71
|
+
}
|
|
72
|
+
/**
|
|
73
|
+
* Creates a hash of a calendar event's critical properties.
|
|
74
|
+
* Used to detect if the event changed between prepare and confirm.
|
|
75
|
+
*/
|
|
76
|
+
export function hashEventForApproval(event) {
|
|
77
|
+
return createHash('sha256')
|
|
78
|
+
.update(`${event.id}:${event.subject ?? ''}:${event.startDateTime ?? ''}`)
|
|
79
|
+
.digest('hex')
|
|
80
|
+
.slice(0, 16);
|
|
81
|
+
}
|
|
82
|
+
/**
|
|
83
|
+
* Creates a hash of a contact's critical properties.
|
|
84
|
+
* Used to detect if the contact changed between prepare and confirm.
|
|
85
|
+
*/
|
|
86
|
+
export function hashContactForApproval(contact) {
|
|
87
|
+
return createHash('sha256')
|
|
88
|
+
.update(`${contact.id}:${contact.displayName ?? ''}:${contact.emailAddress ?? ''}`)
|
|
89
|
+
.digest('hex')
|
|
90
|
+
.slice(0, 16);
|
|
91
|
+
}
|
|
92
|
+
/**
|
|
93
|
+
* Creates a hash of a task's critical properties.
|
|
94
|
+
* Used to detect if the task changed between prepare and confirm.
|
|
95
|
+
*/
|
|
96
|
+
export function hashTaskForApproval(task) {
|
|
97
|
+
return createHash('sha256')
|
|
98
|
+
.update(`${task.taskId}:${task.title ?? ''}:${task.listId}`)
|
|
99
|
+
.digest('hex')
|
|
100
|
+
.slice(0, 16);
|
|
101
|
+
}
|
|
32
102
|
//# sourceMappingURL=hash.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"hash.js","sourceRoot":"","sources":["../../src/approval/hash.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH;;;;;GAKG;AAEH,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AAEzC;;;GAGG;AACH,MAAM,UAAU,oBAAoB,CAAC,KAKpC;IACC,OAAO,UAAU,CAAC,QAAQ,CAAC;SACxB,MAAM,CAAC,GAAG,KAAK,CAAC,EAAE,IAAI,KAAK,CAAC,OAAO,IAAI,EAAE,IAAI,KAAK,CAAC,QAAQ,IAAI,KAAK,CAAC,YAAY,IAAI,CAAC,EAAE,CAAC;SACzF,MAAM,CAAC,KAAK,CAAC;SACb,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;AAClB,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,qBAAqB,CAAC,MAIrC;IACC,OAAO,UAAU,CAAC,QAAQ,CAAC;SACxB,MAAM,CAAC,GAAG,MAAM,CAAC,EAAE,IAAI,MAAM,CAAC,IAAI,IAAI,EAAE,IAAI,MAAM,CAAC,YAAY,EAAE,CAAC;SAClE,MAAM,CAAC,KAAK,CAAC;SACb,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;AAClB,CAAC"}
|
|
1
|
+
{"version":3,"file":"hash.js","sourceRoot":"","sources":["../../src/approval/hash.ts"],"names":[],"mappings":"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"}
|
package/dist/approval/index.d.ts
CHANGED
|
@@ -8,6 +8,6 @@
|
|
|
8
8
|
* Re-exports all approval types, hashing, and token management.
|
|
9
9
|
*/
|
|
10
10
|
export { type OperationType, type TargetType, type ApprovalToken, type ValidationErrorReason, type ValidationResult, } from './types.js';
|
|
11
|
-
export { hashEmailForApproval, hashFolderForApproval } from './hash.js';
|
|
11
|
+
export { hashEmailForApproval, hashFolderForApproval, hashDraftForSend, hashDirectSendForApproval, hashReplyForApproval, hashForwardForApproval, hashEventForApproval, hashContactForApproval, hashTaskForApproval, } from './hash.js';
|
|
12
12
|
export { ApprovalTokenManager } from './token-manager.js';
|
|
13
13
|
//# sourceMappingURL=index.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/approval/index.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH;;;;GAIG;AAEH,OAAO,EACL,KAAK,aAAa,EAClB,KAAK,UAAU,EACf,KAAK,aAAa,EAClB,KAAK,qBAAqB,EAC1B,KAAK,gBAAgB,GACtB,MAAM,YAAY,CAAC;AAEpB,OAAO,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/approval/index.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH;;;;GAIG;AAEH,OAAO,EACL,KAAK,aAAa,EAClB,KAAK,UAAU,EACf,KAAK,aAAa,EAClB,KAAK,qBAAqB,EAC1B,KAAK,gBAAgB,GACtB,MAAM,YAAY,CAAC;AAEpB,OAAO,EACL,oBAAoB,EACpB,qBAAqB,EACrB,gBAAgB,EAChB,yBAAyB,EACzB,oBAAoB,EACpB,sBAAsB,EACtB,oBAAoB,EACpB,sBAAsB,EACtB,mBAAmB,GACpB,MAAM,WAAW,CAAC;AAEnB,OAAO,EAAE,oBAAoB,EAAE,MAAM,oBAAoB,CAAC"}
|
package/dist/approval/index.js
CHANGED
|
@@ -2,6 +2,6 @@
|
|
|
2
2
|
* Copyright (c) 2026 JBC Tech Solutions, LLC
|
|
3
3
|
* Licensed under the MIT License. See LICENSE file in the project root.
|
|
4
4
|
*/
|
|
5
|
-
export { hashEmailForApproval, hashFolderForApproval } from './hash.js';
|
|
5
|
+
export { hashEmailForApproval, hashFolderForApproval, hashDraftForSend, hashDirectSendForApproval, hashReplyForApproval, hashForwardForApproval, hashEventForApproval, hashContactForApproval, hashTaskForApproval, } from './hash.js';
|
|
6
6
|
export { ApprovalTokenManager } from './token-manager.js';
|
|
7
7
|
//# sourceMappingURL=index.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/approval/index.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAgBH,OAAO,
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/approval/index.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAgBH,OAAO,EACL,oBAAoB,EACpB,qBAAqB,EACrB,gBAAgB,EAChB,yBAAyB,EACzB,oBAAoB,EACpB,sBAAsB,EACtB,oBAAoB,EACpB,sBAAsB,EACtB,mBAAmB,GACpB,MAAM,WAAW,CAAC;AAEnB,OAAO,EAAE,oBAAoB,EAAE,MAAM,oBAAoB,CAAC"}
|
package/dist/approval/types.d.ts
CHANGED
|
@@ -11,11 +11,11 @@
|
|
|
11
11
|
/**
|
|
12
12
|
* Operations that require approval tokens.
|
|
13
13
|
*/
|
|
14
|
-
export type OperationType = 'delete_email' | 'move_email' | 'archive_email' | 'junk_email' | 'delete_folder' | 'empty_folder' | 'batch_delete_emails' | 'batch_move_emails';
|
|
14
|
+
export type OperationType = 'delete_email' | 'move_email' | 'archive_email' | 'junk_email' | 'delete_folder' | 'empty_folder' | 'batch_delete_emails' | 'batch_move_emails' | 'send_draft' | 'send_email' | 'reply_email' | 'forward_email' | 'delete_event' | 'delete_contact' | 'delete_task';
|
|
15
15
|
/**
|
|
16
16
|
* Target resource types.
|
|
17
17
|
*/
|
|
18
|
-
export type TargetType = 'email' | 'folder';
|
|
18
|
+
export type TargetType = 'email' | 'folder' | 'event' | 'contact' | 'task';
|
|
19
19
|
/**
|
|
20
20
|
* An approval token authorizing a single destructive operation.
|
|
21
21
|
*/
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/approval/types.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH;;;;;GAKG;AAMH;;GAEG;AACH,MAAM,MAAM,aAAa,GACrB,cAAc,GACd,YAAY,GACZ,eAAe,GACf,YAAY,GACZ,eAAe,GACf,cAAc,GACd,qBAAqB,GACrB,mBAAmB,CAAC;
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/approval/types.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH;;;;;GAKG;AAMH;;GAEG;AACH,MAAM,MAAM,aAAa,GACrB,cAAc,GACd,YAAY,GACZ,eAAe,GACf,YAAY,GACZ,eAAe,GACf,cAAc,GACd,qBAAqB,GACrB,mBAAmB,GACnB,YAAY,GACZ,YAAY,GACZ,aAAa,GACb,eAAe,GACf,cAAc,GACd,gBAAgB,GAChB,aAAa,CAAC;AAElB;;GAEG;AACH,MAAM,MAAM,UAAU,GAAG,OAAO,GAAG,QAAQ,GAAG,OAAO,GAAG,SAAS,GAAG,MAAM,CAAC;AAM3E;;GAEG;AACH,MAAM,WAAW,aAAa;IAC5B,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,SAAS,EAAE,aAAa,CAAC;IAClC,QAAQ,CAAC,UAAU,EAAE,UAAU,CAAC;IAChC,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;IAC5B,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAC3B,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAC3B,QAAQ,CAAC,QAAQ,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,CAAC;CACtD;AAED;;GAEG;AACH,MAAM,MAAM,qBAAqB,GAC7B,SAAS,GACT,WAAW,GACX,oBAAoB,GACpB,iBAAiB,GACjB,gBAAgB,GAChB,kBAAkB,CAAC;AAEvB;;GAEG;AACH,MAAM,WAAW,gBAAgB;IAC/B,QAAQ,CAAC,KAAK,EAAE,OAAO,CAAC;IACxB,QAAQ,CAAC,KAAK,CAAC,EAAE,qBAAqB,CAAC;IACvC,QAAQ,CAAC,KAAK,CAAC,EAAE,aAAa,CAAC;CAChC"}
|
|
@@ -0,0 +1,57 @@
|
|
|
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 { GraphClient } from './client/index.js';
|
|
6
|
+
/**
|
|
7
|
+
* Returns the download directory for attachments.
|
|
8
|
+
*
|
|
9
|
+
* Reads `MCP_OUTLOOK_DOWNLOAD_DIR` env var, falls back to `os.tmpdir()`.
|
|
10
|
+
* Creates a subdirectory `mcp-outlook-attachments` inside it.
|
|
11
|
+
*/
|
|
12
|
+
export declare function getDownloadDir(): string;
|
|
13
|
+
/**
|
|
14
|
+
* Sanitizes a filename to prevent path traversal attacks.
|
|
15
|
+
*
|
|
16
|
+
* Strips directory separators (`/`, `\`), strips `..` segments,
|
|
17
|
+
* and trims whitespace. Falls back to `'attachment'` if result is empty.
|
|
18
|
+
*/
|
|
19
|
+
export declare function sanitizeFilename(name: string): string;
|
|
20
|
+
/**
|
|
21
|
+
* Generates a unique file path in the given directory.
|
|
22
|
+
*
|
|
23
|
+
* Sanitizes the filename, then checks if it already exists.
|
|
24
|
+
* If it does, appends a numeric suffix (e.g., `file(1).txt`, `file(2).txt`).
|
|
25
|
+
*/
|
|
26
|
+
export declare function resolveFilePath(downloadDir: string, filename: string): string;
|
|
27
|
+
/**
|
|
28
|
+
* Uploads a file as an attachment to a message.
|
|
29
|
+
*
|
|
30
|
+
* Routes based on file size:
|
|
31
|
+
* - <= 3MB: Inline base64 upload via `client.addAttachment`
|
|
32
|
+
* - > 3MB: Chunked upload session via `client.createUploadSession` + raw fetch
|
|
33
|
+
*
|
|
34
|
+
* @param client - The Graph API client
|
|
35
|
+
* @param messageId - The message to attach the file to
|
|
36
|
+
* @param filePath - Local path to the file to upload
|
|
37
|
+
* @param name - Optional display name (defaults to basename of filePath)
|
|
38
|
+
* @param contentType - Optional MIME type (defaults to 'application/octet-stream')
|
|
39
|
+
*/
|
|
40
|
+
export declare function uploadAttachment(client: GraphClient, messageId: string, filePath: string, name?: string, contentType?: string): Promise<void>;
|
|
41
|
+
/**
|
|
42
|
+
* Downloads an attachment from a message and saves it to disk.
|
|
43
|
+
*
|
|
44
|
+
* Decodes `contentBytes` from base64 and writes the file to the download directory.
|
|
45
|
+
*
|
|
46
|
+
* @param client - The Graph API client
|
|
47
|
+
* @param messageId - The message containing the attachment
|
|
48
|
+
* @param attachmentId - The attachment to download
|
|
49
|
+
* @returns Metadata about the downloaded file including its local path
|
|
50
|
+
*/
|
|
51
|
+
export declare function downloadAttachment(client: GraphClient, messageId: string, attachmentId: string): Promise<{
|
|
52
|
+
filePath: string;
|
|
53
|
+
name: string;
|
|
54
|
+
size: number;
|
|
55
|
+
contentType: string;
|
|
56
|
+
}>;
|
|
57
|
+
//# sourceMappingURL=attachments.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"attachments.d.ts","sourceRoot":"","sources":["../../src/graph/attachments.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAgBH,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAQrD;;;;;GAKG;AACH,wBAAgB,cAAc,IAAI,MAAM,CAKvC;AAED;;;;;GAKG;AACH,wBAAgB,gBAAgB,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAcrD;AAED;;;;;GAKG;AACH,wBAAgB,eAAe,CAAC,WAAW,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,MAAM,CAmB7E;AAED;;;;;;;;;;;;GAYG;AACH,wBAAsB,gBAAgB,CACpC,MAAM,EAAE,WAAW,EACnB,SAAS,EAAE,MAAM,EACjB,QAAQ,EAAE,MAAM,EAChB,IAAI,CAAC,EAAE,MAAM,EACb,WAAW,CAAC,EAAE,MAAM,GACnB,OAAO,CAAC,IAAI,CAAC,CAsDf;AAED;;;;;;;;;GASG;AACH,wBAAsB,kBAAkB,CACtC,MAAM,EAAE,WAAW,EACnB,SAAS,EAAE,MAAM,EACjB,YAAY,EAAE,MAAM,GACnB,OAAO,CAAC;IAAE,QAAQ,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,CAAC;IAAC,WAAW,EAAE,MAAM,CAAA;CAAE,CAAC,CAqBhF"}
|
|
@@ -0,0 +1,165 @@
|
|
|
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
|
+
* Attachment upload and download helpers for Microsoft Graph API.
|
|
7
|
+
*
|
|
8
|
+
* Handles:
|
|
9
|
+
* - File I/O for reading/writing attachments
|
|
10
|
+
* - Size-based routing (inline vs chunked upload)
|
|
11
|
+
* - Chunked upload sessions for large files (> 3MB)
|
|
12
|
+
* - Safe filename resolution with path traversal prevention
|
|
13
|
+
*/
|
|
14
|
+
import * as fs from 'fs';
|
|
15
|
+
import * as os from 'os';
|
|
16
|
+
import * as path from 'path';
|
|
17
|
+
/** 3MB threshold for inline vs chunked upload. */
|
|
18
|
+
const INLINE_MAX_BYTES = 3 * 1024 * 1024;
|
|
19
|
+
/** Microsoft's recommended chunk size (~3.75MB). */
|
|
20
|
+
const CHUNK_SIZE = 3932160;
|
|
21
|
+
/**
|
|
22
|
+
* Returns the download directory for attachments.
|
|
23
|
+
*
|
|
24
|
+
* Reads `MCP_OUTLOOK_DOWNLOAD_DIR` env var, falls back to `os.tmpdir()`.
|
|
25
|
+
* Creates a subdirectory `mcp-outlook-attachments` inside it.
|
|
26
|
+
*/
|
|
27
|
+
export function getDownloadDir() {
|
|
28
|
+
const base = process.env['MCP_OUTLOOK_DOWNLOAD_DIR'] ?? os.tmpdir();
|
|
29
|
+
const dir = path.join(base, 'mcp-outlook-attachments');
|
|
30
|
+
fs.mkdirSync(dir, { recursive: true });
|
|
31
|
+
return dir;
|
|
32
|
+
}
|
|
33
|
+
/**
|
|
34
|
+
* Sanitizes a filename to prevent path traversal attacks.
|
|
35
|
+
*
|
|
36
|
+
* Strips directory separators (`/`, `\`), strips `..` segments,
|
|
37
|
+
* and trims whitespace. Falls back to `'attachment'` if result is empty.
|
|
38
|
+
*/
|
|
39
|
+
export function sanitizeFilename(name) {
|
|
40
|
+
// Strip .. segments
|
|
41
|
+
let sanitized = name.replace(/\.\./g, '');
|
|
42
|
+
// Take only the last component after any path separator
|
|
43
|
+
const forwardSlashIdx = sanitized.lastIndexOf('/');
|
|
44
|
+
if (forwardSlashIdx >= 0) {
|
|
45
|
+
sanitized = sanitized.substring(forwardSlashIdx + 1);
|
|
46
|
+
}
|
|
47
|
+
const backslashIdx = sanitized.lastIndexOf('\\');
|
|
48
|
+
if (backslashIdx >= 0) {
|
|
49
|
+
sanitized = sanitized.substring(backslashIdx + 1);
|
|
50
|
+
}
|
|
51
|
+
sanitized = sanitized.trim();
|
|
52
|
+
return sanitized.length > 0 ? sanitized : 'attachment';
|
|
53
|
+
}
|
|
54
|
+
/**
|
|
55
|
+
* Generates a unique file path in the given directory.
|
|
56
|
+
*
|
|
57
|
+
* Sanitizes the filename, then checks if it already exists.
|
|
58
|
+
* If it does, appends a numeric suffix (e.g., `file(1).txt`, `file(2).txt`).
|
|
59
|
+
*/
|
|
60
|
+
export function resolveFilePath(downloadDir, filename) {
|
|
61
|
+
const safeName = sanitizeFilename(filename);
|
|
62
|
+
let candidate = path.join(downloadDir, safeName);
|
|
63
|
+
if (!fs.existsSync(candidate)) {
|
|
64
|
+
return candidate;
|
|
65
|
+
}
|
|
66
|
+
const ext = path.extname(safeName);
|
|
67
|
+
const base = safeName.substring(0, safeName.length - ext.length);
|
|
68
|
+
let counter = 1;
|
|
69
|
+
for (;;) { // eslint-disable-line no-constant-condition
|
|
70
|
+
candidate = path.join(downloadDir, `${base}(${counter})${ext}`);
|
|
71
|
+
if (!fs.existsSync(candidate)) {
|
|
72
|
+
return candidate;
|
|
73
|
+
}
|
|
74
|
+
counter++;
|
|
75
|
+
}
|
|
76
|
+
}
|
|
77
|
+
/**
|
|
78
|
+
* Uploads a file as an attachment to a message.
|
|
79
|
+
*
|
|
80
|
+
* Routes based on file size:
|
|
81
|
+
* - <= 3MB: Inline base64 upload via `client.addAttachment`
|
|
82
|
+
* - > 3MB: Chunked upload session via `client.createUploadSession` + raw fetch
|
|
83
|
+
*
|
|
84
|
+
* @param client - The Graph API client
|
|
85
|
+
* @param messageId - The message to attach the file to
|
|
86
|
+
* @param filePath - Local path to the file to upload
|
|
87
|
+
* @param name - Optional display name (defaults to basename of filePath)
|
|
88
|
+
* @param contentType - Optional MIME type (defaults to 'application/octet-stream')
|
|
89
|
+
*/
|
|
90
|
+
export async function uploadAttachment(client, messageId, filePath, name, contentType) {
|
|
91
|
+
const fileName = name ?? path.basename(filePath);
|
|
92
|
+
const mimeType = contentType ?? 'application/octet-stream';
|
|
93
|
+
const stat = fs.statSync(filePath);
|
|
94
|
+
const fileSize = stat.size;
|
|
95
|
+
if (fileSize <= INLINE_MAX_BYTES) {
|
|
96
|
+
// Inline upload: read file, base64 encode, POST as attachment
|
|
97
|
+
const fileContent = fs.readFileSync(filePath);
|
|
98
|
+
const base64 = fileContent.toString('base64');
|
|
99
|
+
await client.addAttachment(messageId, {
|
|
100
|
+
'@odata.type': '#microsoft.graph.fileAttachment',
|
|
101
|
+
name: fileName,
|
|
102
|
+
contentBytes: base64,
|
|
103
|
+
contentType: mimeType,
|
|
104
|
+
});
|
|
105
|
+
}
|
|
106
|
+
else {
|
|
107
|
+
// Chunked upload session for large files
|
|
108
|
+
const session = await client.createUploadSession(messageId, {
|
|
109
|
+
AttachmentItem: {
|
|
110
|
+
attachmentType: 'file',
|
|
111
|
+
name: fileName,
|
|
112
|
+
size: fileSize,
|
|
113
|
+
},
|
|
114
|
+
});
|
|
115
|
+
const uploadUrl = session.uploadUrl;
|
|
116
|
+
const fileContent = fs.readFileSync(filePath);
|
|
117
|
+
let offset = 0;
|
|
118
|
+
while (offset < fileSize) {
|
|
119
|
+
const end = Math.min(offset + CHUNK_SIZE, fileSize);
|
|
120
|
+
const chunk = fileContent.subarray(offset, end);
|
|
121
|
+
const contentRange = `bytes ${offset}-${end - 1}/${fileSize}`;
|
|
122
|
+
const response = await fetch(uploadUrl, {
|
|
123
|
+
method: 'PUT',
|
|
124
|
+
headers: {
|
|
125
|
+
'Content-Range': contentRange,
|
|
126
|
+
'Content-Length': String(chunk.length),
|
|
127
|
+
},
|
|
128
|
+
body: chunk,
|
|
129
|
+
});
|
|
130
|
+
if (!response.ok) {
|
|
131
|
+
throw new Error(`Upload chunk failed: ${response.status} ${response.statusText}`);
|
|
132
|
+
}
|
|
133
|
+
offset = end;
|
|
134
|
+
}
|
|
135
|
+
}
|
|
136
|
+
}
|
|
137
|
+
/**
|
|
138
|
+
* Downloads an attachment from a message and saves it to disk.
|
|
139
|
+
*
|
|
140
|
+
* Decodes `contentBytes` from base64 and writes the file to the download directory.
|
|
141
|
+
*
|
|
142
|
+
* @param client - The Graph API client
|
|
143
|
+
* @param messageId - The message containing the attachment
|
|
144
|
+
* @param attachmentId - The attachment to download
|
|
145
|
+
* @returns Metadata about the downloaded file including its local path
|
|
146
|
+
*/
|
|
147
|
+
export async function downloadAttachment(client, messageId, attachmentId) {
|
|
148
|
+
const attachment = await client.getAttachment(messageId, attachmentId);
|
|
149
|
+
const rawName = attachment.name ?? '';
|
|
150
|
+
const safeName = sanitizeFilename(rawName);
|
|
151
|
+
const size = attachment.size ?? 0;
|
|
152
|
+
const attachmentContentType = attachment.contentType ?? 'application/octet-stream';
|
|
153
|
+
const downloadDir = getDownloadDir();
|
|
154
|
+
const filePath = resolveFilePath(downloadDir, safeName);
|
|
155
|
+
const contentBytes = attachment.contentBytes ?? '';
|
|
156
|
+
const buffer = Buffer.from(contentBytes, 'base64');
|
|
157
|
+
fs.writeFileSync(filePath, buffer);
|
|
158
|
+
return {
|
|
159
|
+
filePath,
|
|
160
|
+
name: safeName,
|
|
161
|
+
size,
|
|
162
|
+
contentType: attachmentContentType,
|
|
163
|
+
};
|
|
164
|
+
}
|
|
165
|
+
//# sourceMappingURL=attachments.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"attachments.js","sourceRoot":"","sources":["../../src/graph/attachments.ts"],"names":[],"mappings":"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"}
|
|
@@ -70,6 +70,22 @@ export declare class GraphClient {
|
|
|
70
70
|
* Gets a specific event.
|
|
71
71
|
*/
|
|
72
72
|
getEvent(eventId: string): Promise<MicrosoftGraph.Event | null>;
|
|
73
|
+
/**
|
|
74
|
+
* Creates a new calendar event.
|
|
75
|
+
*/
|
|
76
|
+
createEvent(event: Record<string, unknown>, calendarId?: string): Promise<MicrosoftGraph.Event>;
|
|
77
|
+
/**
|
|
78
|
+
* Updates an existing calendar event.
|
|
79
|
+
*/
|
|
80
|
+
updateEvent(eventId: string, updates: Record<string, unknown>): Promise<void>;
|
|
81
|
+
/**
|
|
82
|
+
* Deletes a calendar event.
|
|
83
|
+
*/
|
|
84
|
+
deleteEvent(eventId: string): Promise<void>;
|
|
85
|
+
/**
|
|
86
|
+
* Responds to a calendar event invitation.
|
|
87
|
+
*/
|
|
88
|
+
respondToEvent(eventId: string, response: 'accept' | 'decline' | 'tentative', sendResponse: boolean, comment?: string): Promise<void>;
|
|
73
89
|
/**
|
|
74
90
|
* Lists contacts with pagination.
|
|
75
91
|
*/
|
|
@@ -82,6 +98,18 @@ export declare class GraphClient {
|
|
|
82
98
|
* Gets a specific contact.
|
|
83
99
|
*/
|
|
84
100
|
getContact(contactId: string): Promise<MicrosoftGraph.Contact | null>;
|
|
101
|
+
/**
|
|
102
|
+
* Creates a new contact.
|
|
103
|
+
*/
|
|
104
|
+
createContact(contact: Record<string, unknown>): Promise<MicrosoftGraph.Contact>;
|
|
105
|
+
/**
|
|
106
|
+
* Updates an existing contact.
|
|
107
|
+
*/
|
|
108
|
+
updateContact(contactId: string, updates: Record<string, unknown>): Promise<void>;
|
|
109
|
+
/**
|
|
110
|
+
* Deletes a contact.
|
|
111
|
+
*/
|
|
112
|
+
deleteContact(contactId: string): Promise<void>;
|
|
85
113
|
/**
|
|
86
114
|
* Lists task lists.
|
|
87
115
|
*/
|
|
@@ -140,12 +168,83 @@ export declare class GraphClient {
|
|
|
140
168
|
* Deletes all messages in a folder.
|
|
141
169
|
*/
|
|
142
170
|
emptyMailFolder(folderId: string): Promise<void>;
|
|
171
|
+
/**
|
|
172
|
+
* Creates a new draft message.
|
|
173
|
+
*/
|
|
174
|
+
createDraft(message: {
|
|
175
|
+
subject: string;
|
|
176
|
+
body: MicrosoftGraph.ItemBody;
|
|
177
|
+
toRecipients?: MicrosoftGraph.Recipient[];
|
|
178
|
+
ccRecipients?: MicrosoftGraph.Recipient[];
|
|
179
|
+
bccRecipients?: MicrosoftGraph.Recipient[];
|
|
180
|
+
isDraft?: boolean;
|
|
181
|
+
}): Promise<MicrosoftGraph.Message>;
|
|
182
|
+
/**
|
|
183
|
+
* Updates an existing draft message.
|
|
184
|
+
*/
|
|
185
|
+
updateDraft(messageId: string, updates: Record<string, unknown>): Promise<MicrosoftGraph.Message>;
|
|
186
|
+
/**
|
|
187
|
+
* Sends an existing draft message.
|
|
188
|
+
*/
|
|
189
|
+
sendDraft(messageId: string): Promise<void>;
|
|
190
|
+
/**
|
|
191
|
+
* Sends a new email directly without creating a draft.
|
|
192
|
+
*/
|
|
193
|
+
sendMail(message: {
|
|
194
|
+
subject: string;
|
|
195
|
+
body: MicrosoftGraph.ItemBody;
|
|
196
|
+
toRecipients: MicrosoftGraph.Recipient[];
|
|
197
|
+
ccRecipients?: MicrosoftGraph.Recipient[];
|
|
198
|
+
bccRecipients?: MicrosoftGraph.Recipient[];
|
|
199
|
+
}): Promise<void>;
|
|
200
|
+
/**
|
|
201
|
+
* Replies to a message, or replies to all recipients.
|
|
202
|
+
*/
|
|
203
|
+
replyMessage(messageId: string, comment: string, replyAll: boolean): Promise<void>;
|
|
204
|
+
/**
|
|
205
|
+
* Forwards a message to specified recipients.
|
|
206
|
+
*/
|
|
207
|
+
forwardMessage(messageId: string, toRecipients: MicrosoftGraph.Recipient[], comment?: string): Promise<void>;
|
|
208
|
+
/**
|
|
209
|
+
* Lists attachments on a message.
|
|
210
|
+
*/
|
|
211
|
+
listAttachments(messageId: string): Promise<MicrosoftGraph.Attachment[]>;
|
|
212
|
+
/**
|
|
213
|
+
* Gets a specific attachment with full content (including contentBytes).
|
|
214
|
+
*/
|
|
215
|
+
getAttachment(messageId: string, attachmentId: string): Promise<MicrosoftGraph.FileAttachment>;
|
|
216
|
+
/**
|
|
217
|
+
* Adds an inline base64 attachment to a message (<= 3MB).
|
|
218
|
+
*/
|
|
219
|
+
addAttachment(messageId: string, attachment: Record<string, unknown>): Promise<MicrosoftGraph.Attachment>;
|
|
220
|
+
/**
|
|
221
|
+
* Creates an upload session for large file attachments (> 3MB).
|
|
222
|
+
*/
|
|
223
|
+
createUploadSession(messageId: string, body: Record<string, unknown>): Promise<{
|
|
224
|
+
uploadUrl: string;
|
|
225
|
+
}>;
|
|
143
226
|
/**
|
|
144
227
|
* Searches tasks by title.
|
|
145
228
|
*/
|
|
146
229
|
searchTasks(query: string, limit?: number): Promise<Array<MicrosoftGraph.TodoTask & {
|
|
147
230
|
taskListId: string;
|
|
148
231
|
}>>;
|
|
232
|
+
/**
|
|
233
|
+
* Creates a new task in a task list.
|
|
234
|
+
*/
|
|
235
|
+
createTask(taskListId: string, task: Record<string, unknown>): Promise<MicrosoftGraph.TodoTask>;
|
|
236
|
+
/**
|
|
237
|
+
* Updates an existing task.
|
|
238
|
+
*/
|
|
239
|
+
updateTask(taskListId: string, taskId: string, updates: Record<string, unknown>): Promise<MicrosoftGraph.TodoTask>;
|
|
240
|
+
/**
|
|
241
|
+
* Deletes a task.
|
|
242
|
+
*/
|
|
243
|
+
deleteTask(taskListId: string, taskId: string): Promise<void>;
|
|
244
|
+
/**
|
|
245
|
+
* Creates a new task list.
|
|
246
|
+
*/
|
|
247
|
+
createTaskList(displayName: string): Promise<MicrosoftGraph.TodoTaskList>;
|
|
149
248
|
}
|
|
150
249
|
/**
|
|
151
250
|
* Creates a new Graph client instance.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"graph-client.d.ts","sourceRoot":"","sources":["../../../src/graph/client/graph-client.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"graph-client.d.ts","sourceRoot":"","sources":["../../../src/graph/client/graph-client.ts"],"names":[],"mappings":"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"}
|