@jbctechsolutions/mcp-outlook-mac 1.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.
- package/LICENSE +21 -0
- package/README.md +358 -0
- package/dist/applescript/account-repository.d.ts +29 -0
- package/dist/applescript/account-repository.d.ts.map +1 -0
- package/dist/applescript/account-repository.js +34 -0
- package/dist/applescript/account-repository.js.map +1 -0
- package/dist/applescript/account-scripts.d.ts +22 -0
- package/dist/applescript/account-scripts.d.ts.map +1 -0
- package/dist/applescript/account-scripts.js +176 -0
- package/dist/applescript/account-scripts.js.map +1 -0
- package/dist/applescript/calendar-manager.d.ts +45 -0
- package/dist/applescript/calendar-manager.d.ts.map +1 -0
- package/dist/applescript/calendar-manager.js +88 -0
- package/dist/applescript/calendar-manager.js.map +1 -0
- package/dist/applescript/calendar-writer.d.ts +38 -0
- package/dist/applescript/calendar-writer.d.ts.map +1 -0
- package/dist/applescript/calendar-writer.js +90 -0
- package/dist/applescript/calendar-writer.js.map +1 -0
- package/dist/applescript/content-readers.d.ts +93 -0
- package/dist/applescript/content-readers.d.ts.map +1 -0
- package/dist/applescript/content-readers.js +299 -0
- package/dist/applescript/content-readers.js.map +1 -0
- package/dist/applescript/executor.d.ts +62 -0
- package/dist/applescript/executor.d.ts.map +1 -0
- package/dist/applescript/executor.js +164 -0
- package/dist/applescript/executor.js.map +1 -0
- package/dist/applescript/index.d.ts +16 -0
- package/dist/applescript/index.d.ts.map +1 -0
- package/dist/applescript/index.js +25 -0
- package/dist/applescript/index.js.map +1 -0
- package/dist/applescript/mail-sender.d.ts +30 -0
- package/dist/applescript/mail-sender.d.ts.map +1 -0
- package/dist/applescript/mail-sender.js +53 -0
- package/dist/applescript/mail-sender.js.map +1 -0
- package/dist/applescript/parser.d.ts +215 -0
- package/dist/applescript/parser.d.ts.map +1 -0
- package/dist/applescript/parser.js +431 -0
- package/dist/applescript/parser.js.map +1 -0
- package/dist/applescript/repository.d.ts +58 -0
- package/dist/applescript/repository.d.ts.map +1 -0
- package/dist/applescript/repository.js +417 -0
- package/dist/applescript/repository.js.map +1 -0
- package/dist/applescript/scripts.d.ts +242 -0
- package/dist/applescript/scripts.d.ts.map +1 -0
- package/dist/applescript/scripts.js +1300 -0
- package/dist/applescript/scripts.js.map +1 -0
- package/dist/approval/hash.d.ts +26 -0
- package/dist/approval/hash.d.ts.map +1 -0
- package/dist/approval/hash.js +28 -0
- package/dist/approval/hash.js.map +1 -0
- package/dist/approval/index.d.ts +9 -0
- package/dist/approval/index.d.ts.map +1 -0
- package/dist/approval/index.js +8 -0
- package/dist/approval/index.js.map +1 -0
- package/dist/approval/token-manager.d.ts +48 -0
- package/dist/approval/token-manager.d.ts.map +1 -0
- package/dist/approval/token-manager.js +100 -0
- package/dist/approval/token-manager.js.map +1 -0
- package/dist/approval/types.d.ts +40 -0
- package/dist/approval/types.d.ts.map +1 -0
- package/dist/approval/types.js +8 -0
- package/dist/approval/types.js.map +1 -0
- package/dist/config.d.ts +23 -0
- package/dist/config.d.ts.map +1 -0
- package/dist/config.js +38 -0
- package/dist/config.js.map +1 -0
- package/dist/database/connection.d.ts +73 -0
- package/dist/database/connection.d.ts.map +1 -0
- package/dist/database/connection.js +126 -0
- package/dist/database/connection.js.map +1 -0
- package/dist/database/index.d.ts +7 -0
- package/dist/database/index.d.ts.map +1 -0
- package/dist/database/index.js +7 -0
- package/dist/database/index.js.map +1 -0
- package/dist/database/queries.d.ts +89 -0
- package/dist/database/queries.d.ts.map +1 -0
- package/dist/database/queries.js +422 -0
- package/dist/database/queries.js.map +1 -0
- package/dist/database/repository.d.ts +188 -0
- package/dist/database/repository.d.ts.map +1 -0
- package/dist/database/repository.js +187 -0
- package/dist/database/repository.js.map +1 -0
- package/dist/graph/auth/config.d.ts +33 -0
- package/dist/graph/auth/config.d.ts.map +1 -0
- package/dist/graph/auth/config.js +53 -0
- package/dist/graph/auth/config.js.map +1 -0
- package/dist/graph/auth/device-code-flow.d.ts +51 -0
- package/dist/graph/auth/device-code-flow.d.ts.map +1 -0
- package/dist/graph/auth/device-code-flow.js +176 -0
- package/dist/graph/auth/device-code-flow.js.map +1 -0
- package/dist/graph/auth/index.d.ts +9 -0
- package/dist/graph/auth/index.d.ts.map +1 -0
- package/dist/graph/auth/index.js +9 -0
- package/dist/graph/auth/index.js.map +1 -0
- package/dist/graph/auth/token-cache.d.ts +43 -0
- package/dist/graph/auth/token-cache.d.ts.map +1 -0
- package/dist/graph/auth/token-cache.js +99 -0
- package/dist/graph/auth/token-cache.js.map +1 -0
- package/dist/graph/client/cache.d.ts +65 -0
- package/dist/graph/client/cache.d.ts.map +1 -0
- package/dist/graph/client/cache.js +109 -0
- package/dist/graph/client/cache.js.map +1 -0
- package/dist/graph/client/graph-client.d.ts +150 -0
- package/dist/graph/client/graph-client.d.ts.map +1 -0
- package/dist/graph/client/graph-client.js +538 -0
- package/dist/graph/client/graph-client.js.map +1 -0
- package/dist/graph/client/index.d.ts +8 -0
- package/dist/graph/client/index.d.ts.map +1 -0
- package/dist/graph/client/index.js +8 -0
- package/dist/graph/client/index.js.map +1 -0
- package/dist/graph/content-readers.d.ts +102 -0
- package/dist/graph/content-readers.d.ts.map +1 -0
- package/dist/graph/content-readers.js +327 -0
- package/dist/graph/content-readers.js.map +1 -0
- package/dist/graph/index.d.ts +14 -0
- package/dist/graph/index.d.ts.map +1 -0
- package/dist/graph/index.js +19 -0
- package/dist/graph/index.js.map +1 -0
- package/dist/graph/mailbox-adapter.d.ts +25 -0
- package/dist/graph/mailbox-adapter.d.ts.map +1 -0
- package/dist/graph/mailbox-adapter.js +56 -0
- package/dist/graph/mailbox-adapter.js.map +1 -0
- package/dist/graph/mappers/contact-mapper.d.ts +10 -0
- package/dist/graph/mappers/contact-mapper.d.ts.map +1 -0
- package/dist/graph/mappers/contact-mapper.js +19 -0
- package/dist/graph/mappers/contact-mapper.js.map +1 -0
- package/dist/graph/mappers/email-mapper.d.ts +10 -0
- package/dist/graph/mappers/email-mapper.d.ts.map +1 -0
- package/dist/graph/mappers/email-mapper.js +43 -0
- package/dist/graph/mappers/email-mapper.js.map +1 -0
- package/dist/graph/mappers/event-mapper.d.ts +10 -0
- package/dist/graph/mappers/event-mapper.d.ts.map +1 -0
- package/dist/graph/mappers/event-mapper.js +28 -0
- package/dist/graph/mappers/event-mapper.js.map +1 -0
- package/dist/graph/mappers/folder-mapper.d.ts +18 -0
- package/dist/graph/mappers/folder-mapper.d.ts.map +1 -0
- package/dist/graph/mappers/folder-mapper.js +50 -0
- package/dist/graph/mappers/folder-mapper.js.map +1 -0
- package/dist/graph/mappers/index.d.ts +12 -0
- package/dist/graph/mappers/index.d.ts.map +1 -0
- package/dist/graph/mappers/index.js +12 -0
- package/dist/graph/mappers/index.js.map +1 -0
- package/dist/graph/mappers/task-mapper.d.ts +16 -0
- package/dist/graph/mappers/task-mapper.d.ts.map +1 -0
- package/dist/graph/mappers/task-mapper.js +26 -0
- package/dist/graph/mappers/task-mapper.js.map +1 -0
- package/dist/graph/mappers/utils.d.ts +75 -0
- package/dist/graph/mappers/utils.d.ts.map +1 -0
- package/dist/graph/mappers/utils.js +130 -0
- package/dist/graph/mappers/utils.js.map +1 -0
- package/dist/graph/repository.d.ts +112 -0
- package/dist/graph/repository.d.ts.map +1 -0
- package/dist/graph/repository.js +549 -0
- package/dist/graph/repository.js.map +1 -0
- package/dist/index.d.ts +17 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +1821 -0
- package/dist/index.js.map +1 -0
- package/dist/parsers/html-stripper.d.ts +43 -0
- package/dist/parsers/html-stripper.d.ts.map +1 -0
- package/dist/parsers/html-stripper.js +175 -0
- package/dist/parsers/html-stripper.js.map +1 -0
- package/dist/parsers/index.d.ts +8 -0
- package/dist/parsers/index.d.ts.map +1 -0
- package/dist/parsers/index.js +8 -0
- package/dist/parsers/index.js.map +1 -0
- package/dist/parsers/olk15.d.ts +99 -0
- package/dist/parsers/olk15.d.ts.map +1 -0
- package/dist/parsers/olk15.js +364 -0
- package/dist/parsers/olk15.js.map +1 -0
- package/dist/tools/calendar.d.ts +203 -0
- package/dist/tools/calendar.d.ts.map +1 -0
- package/dist/tools/calendar.js +251 -0
- package/dist/tools/calendar.js.map +1 -0
- package/dist/tools/contacts.d.ts +89 -0
- package/dist/tools/contacts.d.ts.map +1 -0
- package/dist/tools/contacts.js +129 -0
- package/dist/tools/contacts.js.map +1 -0
- package/dist/tools/index.d.ts +12 -0
- package/dist/tools/index.d.ts.map +1 -0
- package/dist/tools/index.js +18 -0
- package/dist/tools/index.js.map +1 -0
- package/dist/tools/mail.d.ts +83 -0
- package/dist/tools/mail.d.ts.map +1 -0
- package/dist/tools/mail.js +217 -0
- package/dist/tools/mail.js.map +1 -0
- package/dist/tools/mailbox-organization.d.ts +337 -0
- package/dist/tools/mailbox-organization.d.ts.map +1 -0
- package/dist/tools/mailbox-organization.js +525 -0
- package/dist/tools/mailbox-organization.js.map +1 -0
- package/dist/tools/notes.d.ts +70 -0
- package/dist/tools/notes.d.ts.map +1 -0
- package/dist/tools/notes.js +132 -0
- package/dist/tools/notes.js.map +1 -0
- package/dist/tools/tasks.d.ts +70 -0
- package/dist/tools/tasks.d.ts.map +1 -0
- package/dist/tools/tasks.js +122 -0
- package/dist/tools/tasks.js.map +1 -0
- package/dist/types/calendar.d.ts +56 -0
- package/dist/types/calendar.d.ts.map +1 -0
- package/dist/types/calendar.js +14 -0
- package/dist/types/calendar.js.map +1 -0
- package/dist/types/contacts.d.ts +92 -0
- package/dist/types/contacts.d.ts.map +1 -0
- package/dist/types/contacts.js +37 -0
- package/dist/types/contacts.js.map +1 -0
- package/dist/types/index.d.ts +11 -0
- package/dist/types/index.d.ts.map +1 -0
- package/dist/types/index.js +12 -0
- package/dist/types/index.js.map +1 -0
- package/dist/types/mail.d.ts +87 -0
- package/dist/types/mail.d.ts.map +1 -0
- package/dist/types/mail.js +32 -0
- package/dist/types/mail.js.map +1 -0
- package/dist/types/notes.d.ts +22 -0
- package/dist/types/notes.d.ts.map +1 -0
- package/dist/types/notes.js +5 -0
- package/dist/types/notes.js.map +1 -0
- package/dist/types/tasks.d.ts +27 -0
- package/dist/types/tasks.d.ts.map +1 -0
- package/dist/types/tasks.js +5 -0
- package/dist/types/tasks.js.map +1 -0
- package/dist/utils/dates.d.ts +62 -0
- package/dist/utils/dates.d.ts.map +1 -0
- package/dist/utils/dates.js +90 -0
- package/dist/utils/dates.js.map +1 -0
- package/dist/utils/errors.d.ts +198 -0
- package/dist/utils/errors.d.ts.map +1 -0
- package/dist/utils/errors.js +281 -0
- package/dist/utils/errors.js.map +1 -0
- package/dist/utils/index.d.ts +6 -0
- package/dist/utils/index.d.ts.map +1 -0
- package/dist/utils/index.js +6 -0
- package/dist/utils/index.js.map +1 -0
- package/package.json +75 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"scripts.js","sourceRoot":"","sources":["../../src/applescript/scripts.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Target hashing for approval tokens.
|
|
3
|
+
*
|
|
4
|
+
* Generates hashes of critical properties to detect if a target
|
|
5
|
+
* (email or folder) has been modified between prepare and confirm.
|
|
6
|
+
*/
|
|
7
|
+
/**
|
|
8
|
+
* Creates a hash of an email's critical properties.
|
|
9
|
+
* Used to detect if the email changed between prepare and confirm.
|
|
10
|
+
*/
|
|
11
|
+
export declare function hashEmailForApproval(email: {
|
|
12
|
+
id: number;
|
|
13
|
+
subject: string | null;
|
|
14
|
+
folderId: number;
|
|
15
|
+
timeReceived: number | null;
|
|
16
|
+
}): string;
|
|
17
|
+
/**
|
|
18
|
+
* Creates a hash of a folder's critical properties.
|
|
19
|
+
* Used to detect if the folder changed between prepare and confirm.
|
|
20
|
+
*/
|
|
21
|
+
export declare function hashFolderForApproval(folder: {
|
|
22
|
+
id: number;
|
|
23
|
+
name: string | null;
|
|
24
|
+
messageCount: number;
|
|
25
|
+
}): string;
|
|
26
|
+
//# sourceMappingURL=hash.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"hash.d.ts","sourceRoot":"","sources":["../../src/approval/hash.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAIH;;;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"}
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Target hashing for approval tokens.
|
|
3
|
+
*
|
|
4
|
+
* Generates hashes of critical properties to detect if a target
|
|
5
|
+
* (email or folder) has been modified between prepare and confirm.
|
|
6
|
+
*/
|
|
7
|
+
import { createHash } from 'node:crypto';
|
|
8
|
+
/**
|
|
9
|
+
* Creates a hash of an email's critical properties.
|
|
10
|
+
* Used to detect if the email changed between prepare and confirm.
|
|
11
|
+
*/
|
|
12
|
+
export function hashEmailForApproval(email) {
|
|
13
|
+
return createHash('sha256')
|
|
14
|
+
.update(`${email.id}:${email.subject ?? ''}:${email.folderId}:${email.timeReceived ?? 0}`)
|
|
15
|
+
.digest('hex')
|
|
16
|
+
.slice(0, 16);
|
|
17
|
+
}
|
|
18
|
+
/**
|
|
19
|
+
* Creates a hash of a folder's critical properties.
|
|
20
|
+
* Used to detect if the folder changed between prepare and confirm.
|
|
21
|
+
*/
|
|
22
|
+
export function hashFolderForApproval(folder) {
|
|
23
|
+
return createHash('sha256')
|
|
24
|
+
.update(`${folder.id}:${folder.name ?? ''}:${folder.messageCount}`)
|
|
25
|
+
.digest('hex')
|
|
26
|
+
.slice(0, 16);
|
|
27
|
+
}
|
|
28
|
+
//# sourceMappingURL=hash.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"hash.js","sourceRoot":"","sources":["../../src/approval/hash.ts"],"names":[],"mappings":"AAAA;;;;;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"}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Approval token system for safe destructive operations.
|
|
3
|
+
*
|
|
4
|
+
* Re-exports all approval types, hashing, and token management.
|
|
5
|
+
*/
|
|
6
|
+
export { type OperationType, type TargetType, type ApprovalToken, type ValidationErrorReason, type ValidationResult, } from './types.js';
|
|
7
|
+
export { hashEmailForApproval, hashFolderForApproval } from './hash.js';
|
|
8
|
+
export { ApprovalTokenManager } from './token-manager.js';
|
|
9
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/approval/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EACL,KAAK,aAAa,EAClB,KAAK,UAAU,EACf,KAAK,aAAa,EAClB,KAAK,qBAAqB,EAC1B,KAAK,gBAAgB,GACtB,MAAM,YAAY,CAAC;AAEpB,OAAO,EAAE,oBAAoB,EAAE,qBAAqB,EAAE,MAAM,WAAW,CAAC;AAExE,OAAO,EAAE,oBAAoB,EAAE,MAAM,oBAAoB,CAAC"}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Approval token system for safe destructive operations.
|
|
3
|
+
*
|
|
4
|
+
* Re-exports all approval types, hashing, and token management.
|
|
5
|
+
*/
|
|
6
|
+
export { hashEmailForApproval, hashFolderForApproval } from './hash.js';
|
|
7
|
+
export { ApprovalTokenManager } from './token-manager.js';
|
|
8
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/approval/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAUH,OAAO,EAAE,oBAAoB,EAAE,qBAAqB,EAAE,MAAM,WAAW,CAAC;AAExE,OAAO,EAAE,oBAAoB,EAAE,MAAM,oBAAoB,CAAC"}
|
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Approval token manager.
|
|
3
|
+
*
|
|
4
|
+
* Manages the lifecycle of approval tokens: generation, validation,
|
|
5
|
+
* consumption (one-time use), and expiry cleanup.
|
|
6
|
+
*/
|
|
7
|
+
import type { OperationType, TargetType, ApprovalToken, ValidationResult } from './types.js';
|
|
8
|
+
/**
|
|
9
|
+
* Manages approval tokens for destructive operations.
|
|
10
|
+
*
|
|
11
|
+
* Tokens are stored in memory and are single-use. They expire
|
|
12
|
+
* after a configurable TTL (default 5 minutes).
|
|
13
|
+
*/
|
|
14
|
+
export declare class ApprovalTokenManager {
|
|
15
|
+
private readonly tokens;
|
|
16
|
+
private readonly ttlMs;
|
|
17
|
+
constructor(ttlMs?: number);
|
|
18
|
+
/**
|
|
19
|
+
* Generates a new approval token for a destructive operation.
|
|
20
|
+
*/
|
|
21
|
+
generateToken(params: {
|
|
22
|
+
operation: OperationType;
|
|
23
|
+
targetType: TargetType;
|
|
24
|
+
targetId: number;
|
|
25
|
+
targetHash: string;
|
|
26
|
+
metadata?: Record<string, unknown>;
|
|
27
|
+
}): ApprovalToken;
|
|
28
|
+
/**
|
|
29
|
+
* Validates a token without consuming it or modifying state.
|
|
30
|
+
* Checks existence, expiry, operation match, and target match.
|
|
31
|
+
*/
|
|
32
|
+
validateToken(tokenId: string, operation: OperationType, targetId: number): ValidationResult;
|
|
33
|
+
/**
|
|
34
|
+
* Validates and consumes a token (one-time use).
|
|
35
|
+
* On success, the token is removed from the store.
|
|
36
|
+
*/
|
|
37
|
+
consumeToken(tokenId: string, operation: OperationType, targetId: number): ValidationResult;
|
|
38
|
+
/**
|
|
39
|
+
* Removes all expired tokens from the store.
|
|
40
|
+
*/
|
|
41
|
+
cleanupExpiredTokens(): void;
|
|
42
|
+
/**
|
|
43
|
+
* Returns the number of active (non-expired) tokens.
|
|
44
|
+
* Useful for testing and monitoring.
|
|
45
|
+
*/
|
|
46
|
+
get size(): number;
|
|
47
|
+
}
|
|
48
|
+
//# sourceMappingURL=token-manager.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"token-manager.d.ts","sourceRoot":"","sources":["../../src/approval/token-manager.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAGH,OAAO,KAAK,EAAE,aAAa,EAAE,UAAU,EAAE,aAAa,EAAE,gBAAgB,EAAE,MAAM,YAAY,CAAC;AAa7F;;;;;GAKG;AACH,qBAAa,oBAAoB;IAC/B,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAoC;IAC3D,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAS;gBAEnB,KAAK,GAAE,MAAuB;IAI1C;;OAEG;IACH,aAAa,CAAC,MAAM,EAAE;QACpB,SAAS,EAAE,aAAa,CAAC;QACzB,UAAU,EAAE,UAAU,CAAC;QACvB,QAAQ,EAAE,MAAM,CAAC;QACjB,UAAU,EAAE,MAAM,CAAC;QACnB,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;KACpC,GAAG,aAAa;IAsBjB;;;OAGG;IACH,aAAa,CACX,OAAO,EAAE,MAAM,EACf,SAAS,EAAE,aAAa,EACxB,QAAQ,EAAE,MAAM,GACf,gBAAgB;IAsBnB;;;OAGG;IACH,YAAY,CACV,OAAO,EAAE,MAAM,EACf,SAAS,EAAE,aAAa,EACxB,QAAQ,EAAE,MAAM,GACf,gBAAgB;IAUnB;;OAEG;IACH,oBAAoB,IAAI,IAAI;IAS5B;;;OAGG;IACH,IAAI,IAAI,IAAI,MAAM,CAEjB;CACF"}
|
|
@@ -0,0 +1,100 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Approval token manager.
|
|
3
|
+
*
|
|
4
|
+
* Manages the lifecycle of approval tokens: generation, validation,
|
|
5
|
+
* consumption (one-time use), and expiry cleanup.
|
|
6
|
+
*/
|
|
7
|
+
import { randomUUID } from 'node:crypto';
|
|
8
|
+
// =============================================================================
|
|
9
|
+
// Constants
|
|
10
|
+
// =============================================================================
|
|
11
|
+
const DEFAULT_TTL_MS = 5 * 60 * 1000; // 5 minutes
|
|
12
|
+
const CLEANUP_THRESHOLD = 100;
|
|
13
|
+
// =============================================================================
|
|
14
|
+
// Token Manager
|
|
15
|
+
// =============================================================================
|
|
16
|
+
/**
|
|
17
|
+
* Manages approval tokens for destructive operations.
|
|
18
|
+
*
|
|
19
|
+
* Tokens are stored in memory and are single-use. They expire
|
|
20
|
+
* after a configurable TTL (default 5 minutes).
|
|
21
|
+
*/
|
|
22
|
+
export class ApprovalTokenManager {
|
|
23
|
+
tokens = new Map();
|
|
24
|
+
ttlMs;
|
|
25
|
+
constructor(ttlMs = DEFAULT_TTL_MS) {
|
|
26
|
+
this.ttlMs = ttlMs;
|
|
27
|
+
}
|
|
28
|
+
/**
|
|
29
|
+
* Generates a new approval token for a destructive operation.
|
|
30
|
+
*/
|
|
31
|
+
generateToken(params) {
|
|
32
|
+
// Clean up expired tokens if the map is getting large
|
|
33
|
+
if (this.tokens.size > CLEANUP_THRESHOLD) {
|
|
34
|
+
this.cleanupExpiredTokens();
|
|
35
|
+
}
|
|
36
|
+
const now = Date.now();
|
|
37
|
+
const token = {
|
|
38
|
+
tokenId: randomUUID(),
|
|
39
|
+
operation: params.operation,
|
|
40
|
+
targetType: params.targetType,
|
|
41
|
+
targetId: params.targetId,
|
|
42
|
+
targetHash: params.targetHash,
|
|
43
|
+
createdAt: now,
|
|
44
|
+
expiresAt: now + this.ttlMs,
|
|
45
|
+
metadata: Object.freeze({ ...params.metadata }),
|
|
46
|
+
};
|
|
47
|
+
this.tokens.set(token.tokenId, token);
|
|
48
|
+
return token;
|
|
49
|
+
}
|
|
50
|
+
/**
|
|
51
|
+
* Validates a token without consuming it or modifying state.
|
|
52
|
+
* Checks existence, expiry, operation match, and target match.
|
|
53
|
+
*/
|
|
54
|
+
validateToken(tokenId, operation, targetId) {
|
|
55
|
+
const token = this.tokens.get(tokenId);
|
|
56
|
+
if (token == null) {
|
|
57
|
+
return { valid: false, error: 'NOT_FOUND' };
|
|
58
|
+
}
|
|
59
|
+
if (Date.now() > token.expiresAt) {
|
|
60
|
+
return { valid: false, error: 'EXPIRED' };
|
|
61
|
+
}
|
|
62
|
+
if (token.operation !== operation) {
|
|
63
|
+
return { valid: false, error: 'OPERATION_MISMATCH' };
|
|
64
|
+
}
|
|
65
|
+
if (token.targetId !== targetId) {
|
|
66
|
+
return { valid: false, error: 'TARGET_MISMATCH' };
|
|
67
|
+
}
|
|
68
|
+
return { valid: true, token };
|
|
69
|
+
}
|
|
70
|
+
/**
|
|
71
|
+
* Validates and consumes a token (one-time use).
|
|
72
|
+
* On success, the token is removed from the store.
|
|
73
|
+
*/
|
|
74
|
+
consumeToken(tokenId, operation, targetId) {
|
|
75
|
+
const result = this.validateToken(tokenId, operation, targetId);
|
|
76
|
+
if (result.valid) {
|
|
77
|
+
this.tokens.delete(tokenId);
|
|
78
|
+
}
|
|
79
|
+
return result;
|
|
80
|
+
}
|
|
81
|
+
/**
|
|
82
|
+
* Removes all expired tokens from the store.
|
|
83
|
+
*/
|
|
84
|
+
cleanupExpiredTokens() {
|
|
85
|
+
const now = Date.now();
|
|
86
|
+
for (const [tokenId, token] of this.tokens) {
|
|
87
|
+
if (now > token.expiresAt) {
|
|
88
|
+
this.tokens.delete(tokenId);
|
|
89
|
+
}
|
|
90
|
+
}
|
|
91
|
+
}
|
|
92
|
+
/**
|
|
93
|
+
* Returns the number of active (non-expired) tokens.
|
|
94
|
+
* Useful for testing and monitoring.
|
|
95
|
+
*/
|
|
96
|
+
get size() {
|
|
97
|
+
return this.tokens.size;
|
|
98
|
+
}
|
|
99
|
+
}
|
|
100
|
+
//# sourceMappingURL=token-manager.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"token-manager.js","sourceRoot":"","sources":["../../src/approval/token-manager.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Types for the approval token system.
|
|
3
|
+
*
|
|
4
|
+
* Provides safety for destructive mailbox operations by requiring
|
|
5
|
+
* explicit user approval per object via time-limited tokens.
|
|
6
|
+
*/
|
|
7
|
+
/**
|
|
8
|
+
* Operations that require approval tokens.
|
|
9
|
+
*/
|
|
10
|
+
export type OperationType = 'delete_email' | 'move_email' | 'archive_email' | 'junk_email' | 'delete_folder' | 'empty_folder' | 'batch_delete_emails' | 'batch_move_emails';
|
|
11
|
+
/**
|
|
12
|
+
* Target resource types.
|
|
13
|
+
*/
|
|
14
|
+
export type TargetType = 'email' | 'folder';
|
|
15
|
+
/**
|
|
16
|
+
* An approval token authorizing a single destructive operation.
|
|
17
|
+
*/
|
|
18
|
+
export interface ApprovalToken {
|
|
19
|
+
readonly tokenId: string;
|
|
20
|
+
readonly operation: OperationType;
|
|
21
|
+
readonly targetType: TargetType;
|
|
22
|
+
readonly targetId: number;
|
|
23
|
+
readonly targetHash: string;
|
|
24
|
+
readonly createdAt: number;
|
|
25
|
+
readonly expiresAt: number;
|
|
26
|
+
readonly metadata: Readonly<Record<string, unknown>>;
|
|
27
|
+
}
|
|
28
|
+
/**
|
|
29
|
+
* Reasons a token validation can fail.
|
|
30
|
+
*/
|
|
31
|
+
export type ValidationErrorReason = 'EXPIRED' | 'NOT_FOUND' | 'OPERATION_MISMATCH' | 'TARGET_MISMATCH' | 'TARGET_CHANGED' | 'ALREADY_CONSUMED';
|
|
32
|
+
/**
|
|
33
|
+
* Result of token validation.
|
|
34
|
+
*/
|
|
35
|
+
export interface ValidationResult {
|
|
36
|
+
readonly valid: boolean;
|
|
37
|
+
readonly error?: ValidationErrorReason;
|
|
38
|
+
readonly token?: ApprovalToken;
|
|
39
|
+
}
|
|
40
|
+
//# sourceMappingURL=types.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/approval/types.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAMH;;GAEG;AACH,MAAM,MAAM,aAAa,GACrB,cAAc,GACd,YAAY,GACZ,eAAe,GACf,YAAY,GACZ,eAAe,GACf,cAAc,GACd,qBAAqB,GACrB,mBAAmB,CAAC;AAExB;;GAEG;AACH,MAAM,MAAM,UAAU,GAAG,OAAO,GAAG,QAAQ,CAAC;AAM5C;;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 @@
|
|
|
1
|
+
{"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/approval/types.ts"],"names":[],"mappings":"AAAA;;;;;GAKG"}
|
package/dist/config.d.ts
ADDED
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Configuration for the Outlook MCP server.
|
|
3
|
+
*/
|
|
4
|
+
export interface OutlookConfig {
|
|
5
|
+
/** Name of the Outlook profile to use */
|
|
6
|
+
readonly profileName: string;
|
|
7
|
+
/** Base path for Outlook data */
|
|
8
|
+
readonly outlookBasePath: string;
|
|
9
|
+
/** Full path to the SQLite database */
|
|
10
|
+
readonly databasePath: string;
|
|
11
|
+
/** Path to the data directory containing olk15 files */
|
|
12
|
+
readonly dataPath: string;
|
|
13
|
+
}
|
|
14
|
+
/**
|
|
15
|
+
* Creates the configuration from environment variables.
|
|
16
|
+
*/
|
|
17
|
+
export declare function createConfig(): OutlookConfig;
|
|
18
|
+
/**
|
|
19
|
+
* Validates that the required paths exist.
|
|
20
|
+
* Throws if the database cannot be found.
|
|
21
|
+
*/
|
|
22
|
+
export declare function validateConfig(config: OutlookConfig): void;
|
|
23
|
+
//# sourceMappingURL=config.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"AAGA;;GAEG;AACH,MAAM,WAAW,aAAa;IAC5B,yCAAyC;IACzC,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;IAC7B,iCAAiC;IACjC,QAAQ,CAAC,eAAe,EAAE,MAAM,CAAC;IACjC,uCAAuC;IACvC,QAAQ,CAAC,YAAY,EAAE,MAAM,CAAC;IAC9B,wDAAwD;IACxD,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;CAC3B;AAmBD;;GAEG;AACH,wBAAgB,YAAY,IAAI,aAAa,CAe5C;AAED;;;GAGG;AACH,wBAAgB,cAAc,CAAC,MAAM,EAAE,aAAa,GAAG,IAAI,CAM1D"}
|
package/dist/config.js
ADDED
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
import { homedir } from 'node:os';
|
|
2
|
+
import { join } from 'node:path';
|
|
3
|
+
/**
|
|
4
|
+
* Default Outlook data path on macOS.
|
|
5
|
+
*/
|
|
6
|
+
const DEFAULT_OUTLOOK_BASE_PATH = join(homedir(), 'Library', 'Group Containers', 'UBF8T346G9.Office', 'Outlook', 'Outlook 15 Profiles');
|
|
7
|
+
/**
|
|
8
|
+
* Default profile name.
|
|
9
|
+
*/
|
|
10
|
+
const DEFAULT_PROFILE_NAME = 'Main Profile';
|
|
11
|
+
/**
|
|
12
|
+
* Creates the configuration from environment variables.
|
|
13
|
+
*/
|
|
14
|
+
export function createConfig() {
|
|
15
|
+
const profileName = process.env['OUTLOOK_PROFILE'] ?? DEFAULT_PROFILE_NAME;
|
|
16
|
+
const outlookBasePath = process.env['OUTLOOK_BASE_PATH'] ?? DEFAULT_OUTLOOK_BASE_PATH;
|
|
17
|
+
const profilePath = join(outlookBasePath, profileName);
|
|
18
|
+
const dataPath = join(profilePath, 'Data');
|
|
19
|
+
const databasePath = join(dataPath, 'Outlook.sqlite');
|
|
20
|
+
return {
|
|
21
|
+
profileName,
|
|
22
|
+
outlookBasePath,
|
|
23
|
+
databasePath,
|
|
24
|
+
dataPath,
|
|
25
|
+
};
|
|
26
|
+
}
|
|
27
|
+
/**
|
|
28
|
+
* Validates that the required paths exist.
|
|
29
|
+
* Throws if the database cannot be found.
|
|
30
|
+
*/
|
|
31
|
+
export function validateConfig(config) {
|
|
32
|
+
// Validation will be performed by the database connection
|
|
33
|
+
// This is a placeholder for any additional config validation
|
|
34
|
+
if (config.profileName.trim() === '') {
|
|
35
|
+
throw new Error('Profile name cannot be empty');
|
|
36
|
+
}
|
|
37
|
+
}
|
|
38
|
+
//# sourceMappingURL=config.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"config.js","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,SAAS,CAAC;AAClC,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AAgBjC;;GAEG;AACH,MAAM,yBAAyB,GAAG,IAAI,CACpC,OAAO,EAAE,EACT,SAAS,EACT,kBAAkB,EAClB,mBAAmB,EACnB,SAAS,EACT,qBAAqB,CACtB,CAAC;AAEF;;GAEG;AACH,MAAM,oBAAoB,GAAG,cAAc,CAAC;AAE5C;;GAEG;AACH,MAAM,UAAU,YAAY;IAC1B,MAAM,WAAW,GAAG,OAAO,CAAC,GAAG,CAAC,iBAAiB,CAAC,IAAI,oBAAoB,CAAC;IAC3E,MAAM,eAAe,GACnB,OAAO,CAAC,GAAG,CAAC,mBAAmB,CAAC,IAAI,yBAAyB,CAAC;IAEhE,MAAM,WAAW,GAAG,IAAI,CAAC,eAAe,EAAE,WAAW,CAAC,CAAC;IACvD,MAAM,QAAQ,GAAG,IAAI,CAAC,WAAW,EAAE,MAAM,CAAC,CAAC;IAC3C,MAAM,YAAY,GAAG,IAAI,CAAC,QAAQ,EAAE,gBAAgB,CAAC,CAAC;IAEtD,OAAO;QACL,WAAW;QACX,eAAe;QACf,YAAY;QACZ,QAAQ;KACT,CAAC;AACJ,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,cAAc,CAAC,MAAqB;IAClD,0DAA0D;IAC1D,6DAA6D;IAC7D,IAAI,MAAM,CAAC,WAAW,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE,CAAC;QACrC,MAAM,IAAI,KAAK,CAAC,8BAA8B,CAAC,CAAC;IAClD,CAAC;AACH,CAAC"}
|
|
@@ -0,0 +1,73 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* SQLite database connection manager for Outlook database.
|
|
3
|
+
*
|
|
4
|
+
* Provides read-only access with retry logic for handling locked database.
|
|
5
|
+
*/
|
|
6
|
+
import { type Database as DatabaseType } from 'better-sqlite3';
|
|
7
|
+
/**
|
|
8
|
+
* Options for database connection.
|
|
9
|
+
*/
|
|
10
|
+
export interface ConnectionOptions {
|
|
11
|
+
/** Maximum number of retry attempts for locked database */
|
|
12
|
+
readonly maxRetries: number;
|
|
13
|
+
/** Initial delay in milliseconds between retries */
|
|
14
|
+
readonly retryDelayMs: number;
|
|
15
|
+
/** Busy timeout in milliseconds */
|
|
16
|
+
readonly busyTimeoutMs: number;
|
|
17
|
+
}
|
|
18
|
+
/**
|
|
19
|
+
* Default connection options.
|
|
20
|
+
*/
|
|
21
|
+
export declare const DEFAULT_CONNECTION_OPTIONS: ConnectionOptions;
|
|
22
|
+
/**
|
|
23
|
+
* Interface for database connection (for dependency injection).
|
|
24
|
+
*/
|
|
25
|
+
export interface IConnection {
|
|
26
|
+
/**
|
|
27
|
+
* Executes a function with a database connection.
|
|
28
|
+
* Handles connection lifecycle and error handling.
|
|
29
|
+
*/
|
|
30
|
+
execute<T>(fn: (db: DatabaseType) => T): T;
|
|
31
|
+
/**
|
|
32
|
+
* Closes any open connections.
|
|
33
|
+
*/
|
|
34
|
+
close(): void;
|
|
35
|
+
}
|
|
36
|
+
/**
|
|
37
|
+
* Manages read-only connections to the Outlook SQLite database.
|
|
38
|
+
*/
|
|
39
|
+
export declare class OutlookConnection implements IConnection {
|
|
40
|
+
private readonly dbPath;
|
|
41
|
+
private db;
|
|
42
|
+
private readonly options;
|
|
43
|
+
constructor(dbPath: string, options?: Partial<ConnectionOptions>);
|
|
44
|
+
/**
|
|
45
|
+
* Validates that the database file exists.
|
|
46
|
+
*/
|
|
47
|
+
private validateDatabase;
|
|
48
|
+
/**
|
|
49
|
+
* Opens a connection to the database.
|
|
50
|
+
*/
|
|
51
|
+
private open;
|
|
52
|
+
/**
|
|
53
|
+
* Handles database errors, converting them to appropriate error types.
|
|
54
|
+
*/
|
|
55
|
+
private handleError;
|
|
56
|
+
/**
|
|
57
|
+
* Sleeps for the specified duration.
|
|
58
|
+
*/
|
|
59
|
+
private sleep;
|
|
60
|
+
/**
|
|
61
|
+
* Executes a function with a database connection, with retry logic.
|
|
62
|
+
*/
|
|
63
|
+
execute<T>(fn: (db: DatabaseType) => T): T;
|
|
64
|
+
/**
|
|
65
|
+
* Closes the database connection.
|
|
66
|
+
*/
|
|
67
|
+
close(): void;
|
|
68
|
+
}
|
|
69
|
+
/**
|
|
70
|
+
* Creates a connection to the Outlook database.
|
|
71
|
+
*/
|
|
72
|
+
export declare function createConnection(dbPath: string, options?: Partial<ConnectionOptions>): IConnection;
|
|
73
|
+
//# sourceMappingURL=connection.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"connection.d.ts","sourceRoot":"","sources":["../../src/database/connection.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAiB,EAAE,KAAK,QAAQ,IAAI,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAQzE;;GAEG;AACH,MAAM,WAAW,iBAAiB;IAChC,2DAA2D;IAC3D,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;IAC5B,oDAAoD;IACpD,QAAQ,CAAC,YAAY,EAAE,MAAM,CAAC;IAC9B,mCAAmC;IACnC,QAAQ,CAAC,aAAa,EAAE,MAAM,CAAC;CAChC;AAED;;GAEG;AACH,eAAO,MAAM,0BAA0B,EAAE,iBAIxC,CAAC;AAEF;;GAEG;AACH,MAAM,WAAW,WAAW;IAC1B;;;OAGG;IACH,OAAO,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,YAAY,KAAK,CAAC,GAAG,CAAC,CAAC;IAE3C;;OAEG;IACH,KAAK,IAAI,IAAI,CAAC;CACf;AAED;;GAEG;AACH,qBAAa,iBAAkB,YAAW,WAAW;IAKjD,OAAO,CAAC,QAAQ,CAAC,MAAM;IAJzB,OAAO,CAAC,EAAE,CAA6B;IACvC,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAoB;gBAGzB,MAAM,EAAE,MAAM,EAC/B,OAAO,GAAE,OAAO,CAAC,iBAAiB,CAAM;IAK1C;;OAEG;IACH,OAAO,CAAC,gBAAgB;IAMxB;;OAEG;IACH,OAAO,CAAC,IAAI;IAsBZ;;OAEG;IACH,OAAO,CAAC,WAAW;IAqBnB;;OAEG;IACH,OAAO,CAAC,KAAK;IAIb;;OAEG;IACH,OAAO,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,YAAY,KAAK,CAAC,GAAG,CAAC;IA+B1C;;OAEG;IACH,KAAK,IAAI,IAAI;CAMd;AAKD;;GAEG;AACH,wBAAgB,gBAAgB,CAC9B,MAAM,EAAE,MAAM,EACd,OAAO,CAAC,EAAE,OAAO,CAAC,iBAAiB,CAAC,GACnC,WAAW,CAEb"}
|
|
@@ -0,0 +1,126 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* SQLite database connection manager for Outlook database.
|
|
3
|
+
*
|
|
4
|
+
* Provides read-only access with retry logic for handling locked database.
|
|
5
|
+
*/
|
|
6
|
+
import Database from 'better-sqlite3';
|
|
7
|
+
import { existsSync } from 'node:fs';
|
|
8
|
+
import { DatabaseNotFoundError, DatabaseLockedError, DatabaseError, } from '../utils/errors.js';
|
|
9
|
+
/**
|
|
10
|
+
* Default connection options.
|
|
11
|
+
*/
|
|
12
|
+
export const DEFAULT_CONNECTION_OPTIONS = {
|
|
13
|
+
maxRetries: 3,
|
|
14
|
+
retryDelayMs: 500,
|
|
15
|
+
busyTimeoutMs: 5000,
|
|
16
|
+
};
|
|
17
|
+
/**
|
|
18
|
+
* Manages read-only connections to the Outlook SQLite database.
|
|
19
|
+
*/
|
|
20
|
+
export class OutlookConnection {
|
|
21
|
+
dbPath;
|
|
22
|
+
db = null;
|
|
23
|
+
options;
|
|
24
|
+
constructor(dbPath, options = {}) {
|
|
25
|
+
this.dbPath = dbPath;
|
|
26
|
+
this.options = { ...DEFAULT_CONNECTION_OPTIONS, ...options };
|
|
27
|
+
}
|
|
28
|
+
/**
|
|
29
|
+
* Validates that the database file exists.
|
|
30
|
+
*/
|
|
31
|
+
validateDatabase() {
|
|
32
|
+
if (!existsSync(this.dbPath)) {
|
|
33
|
+
throw new DatabaseNotFoundError(this.dbPath);
|
|
34
|
+
}
|
|
35
|
+
}
|
|
36
|
+
/**
|
|
37
|
+
* Opens a connection to the database.
|
|
38
|
+
*/
|
|
39
|
+
open() {
|
|
40
|
+
if (this.db !== null) {
|
|
41
|
+
return this.db;
|
|
42
|
+
}
|
|
43
|
+
this.validateDatabase();
|
|
44
|
+
try {
|
|
45
|
+
this.db = new Database(this.dbPath, {
|
|
46
|
+
readonly: true,
|
|
47
|
+
fileMustExist: true,
|
|
48
|
+
});
|
|
49
|
+
// Set pragmas for safe read-only access
|
|
50
|
+
this.db.pragma(`busy_timeout = ${this.options.busyTimeoutMs}`);
|
|
51
|
+
return this.db;
|
|
52
|
+
}
|
|
53
|
+
catch (error) {
|
|
54
|
+
throw this.handleError(error);
|
|
55
|
+
}
|
|
56
|
+
}
|
|
57
|
+
/**
|
|
58
|
+
* Handles database errors, converting them to appropriate error types.
|
|
59
|
+
*/
|
|
60
|
+
handleError(error) {
|
|
61
|
+
if (error instanceof Error) {
|
|
62
|
+
const message = error.message.toLowerCase();
|
|
63
|
+
if (message.includes('database is locked')) {
|
|
64
|
+
return new DatabaseLockedError();
|
|
65
|
+
}
|
|
66
|
+
if (message.includes('no such file') ||
|
|
67
|
+
message.includes('unable to open')) {
|
|
68
|
+
return new DatabaseNotFoundError(this.dbPath);
|
|
69
|
+
}
|
|
70
|
+
return new DatabaseError(error.message, error);
|
|
71
|
+
}
|
|
72
|
+
return new DatabaseError('Unknown database error');
|
|
73
|
+
}
|
|
74
|
+
/**
|
|
75
|
+
* Sleeps for the specified duration.
|
|
76
|
+
*/
|
|
77
|
+
sleep(ms) {
|
|
78
|
+
return new Promise((resolve) => setTimeout(resolve, ms));
|
|
79
|
+
}
|
|
80
|
+
/**
|
|
81
|
+
* Executes a function with a database connection, with retry logic.
|
|
82
|
+
*/
|
|
83
|
+
execute(fn) {
|
|
84
|
+
let lastError = null;
|
|
85
|
+
for (let attempt = 0; attempt < this.options.maxRetries; attempt++) {
|
|
86
|
+
try {
|
|
87
|
+
const db = this.open();
|
|
88
|
+
return fn(db);
|
|
89
|
+
}
|
|
90
|
+
catch (error) {
|
|
91
|
+
lastError = error instanceof Error ? error : new Error(String(error));
|
|
92
|
+
// Only retry on locked database
|
|
93
|
+
if (!(error instanceof DatabaseLockedError)) {
|
|
94
|
+
throw error;
|
|
95
|
+
}
|
|
96
|
+
// Don't sleep on last attempt
|
|
97
|
+
if (attempt < this.options.maxRetries - 1) {
|
|
98
|
+
// Synchronous sleep using busy-wait for simplicity
|
|
99
|
+
// In production, you might want to make execute async
|
|
100
|
+
const delay = this.options.retryDelayMs * Math.pow(2, attempt);
|
|
101
|
+
const end = Date.now() + delay;
|
|
102
|
+
while (Date.now() < end) {
|
|
103
|
+
// Busy wait
|
|
104
|
+
}
|
|
105
|
+
}
|
|
106
|
+
}
|
|
107
|
+
}
|
|
108
|
+
throw lastError ?? new DatabaseLockedError();
|
|
109
|
+
}
|
|
110
|
+
/**
|
|
111
|
+
* Closes the database connection.
|
|
112
|
+
*/
|
|
113
|
+
close() {
|
|
114
|
+
if (this.db !== null) {
|
|
115
|
+
this.db.close();
|
|
116
|
+
this.db = null;
|
|
117
|
+
}
|
|
118
|
+
}
|
|
119
|
+
}
|
|
120
|
+
/**
|
|
121
|
+
* Creates a connection to the Outlook database.
|
|
122
|
+
*/
|
|
123
|
+
export function createConnection(dbPath, options) {
|
|
124
|
+
return new OutlookConnection(dbPath, options);
|
|
125
|
+
}
|
|
126
|
+
//# sourceMappingURL=connection.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"connection.js","sourceRoot":"","sources":["../../src/database/connection.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Database module for Outlook MCP server.
|
|
3
|
+
*/
|
|
4
|
+
export { type IConnection, type ConnectionOptions, DEFAULT_CONNECTION_OPTIONS, OutlookConnection, createConnection, } from './connection.js';
|
|
5
|
+
export * as queries from './queries.js';
|
|
6
|
+
export { type IRepository, type IWriteableRepository, type IMailboxRepository, type MaybePromise, type FolderRow, type EmailRow, type EventRow, type ContactRow, type TaskRow, type NoteRow, OutlookRepository, createRepository, } from './repository.js';
|
|
7
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/database/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EACL,KAAK,WAAW,EAChB,KAAK,iBAAiB,EACtB,0BAA0B,EAC1B,iBAAiB,EACjB,gBAAgB,GACjB,MAAM,iBAAiB,CAAC;AAEzB,OAAO,KAAK,OAAO,MAAM,cAAc,CAAC;AAExC,OAAO,EACL,KAAK,WAAW,EAChB,KAAK,oBAAoB,EACzB,KAAK,kBAAkB,EACvB,KAAK,YAAY,EACjB,KAAK,SAAS,EACd,KAAK,QAAQ,EACb,KAAK,QAAQ,EACb,KAAK,UAAU,EACf,KAAK,OAAO,EACZ,KAAK,OAAO,EACZ,iBAAiB,EACjB,gBAAgB,GACjB,MAAM,iBAAiB,CAAC"}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Database module for Outlook MCP server.
|
|
3
|
+
*/
|
|
4
|
+
export { DEFAULT_CONNECTION_OPTIONS, OutlookConnection, createConnection, } from './connection.js';
|
|
5
|
+
export * as queries from './queries.js';
|
|
6
|
+
export { OutlookRepository, createRepository, } from './repository.js';
|
|
7
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/database/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAGL,0BAA0B,EAC1B,iBAAiB,EACjB,gBAAgB,GACjB,MAAM,iBAAiB,CAAC;AAEzB,OAAO,KAAK,OAAO,MAAM,cAAc,CAAC;AAExC,OAAO,EAWL,iBAAiB,EACjB,gBAAgB,GACjB,MAAM,iBAAiB,CAAC"}
|