@jbctechsolutions/mcp-office365 3.0.0 → 4.0.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/README.md +42 -65
- package/dist/approval/hash.d.ts +8 -8
- package/dist/approval/token-manager.d.ts +12 -6
- package/dist/approval/token-manager.d.ts.map +1 -1
- package/dist/approval/token-manager.js +11 -3
- package/dist/approval/token-manager.js.map +1 -1
- package/dist/approval/types.d.ts +7 -3
- package/dist/approval/types.d.ts.map +1 -1
- package/dist/cli.d.ts +4 -0
- package/dist/cli.d.ts.map +1 -1
- package/dist/cli.js +18 -3
- package/dist/cli.js.map +1 -1
- package/dist/database/repository.d.ts +48 -48
- package/dist/database/repository.d.ts.map +1 -1
- package/dist/database/repository.js.map +1 -1
- package/dist/delta/mirror.d.ts +67 -0
- package/dist/delta/mirror.d.ts.map +1 -0
- package/dist/delta/mirror.js +183 -0
- package/dist/delta/mirror.js.map +1 -0
- package/dist/graph/auth/account-id.d.ts +19 -0
- package/dist/graph/auth/account-id.d.ts.map +1 -0
- package/dist/graph/auth/account-id.js +55 -0
- package/dist/graph/auth/account-id.js.map +1 -0
- package/dist/graph/auth/config.d.ts +1 -1
- package/dist/graph/auth/config.d.ts.map +1 -1
- package/dist/graph/auth/config.js +8 -0
- package/dist/graph/auth/config.js.map +1 -1
- package/dist/graph/auth/index.d.ts +1 -0
- package/dist/graph/auth/index.d.ts.map +1 -1
- package/dist/graph/auth/index.js +1 -0
- package/dist/graph/auth/index.js.map +1 -1
- package/dist/graph/client/graph-client.d.ts +105 -0
- package/dist/graph/client/graph-client.d.ts.map +1 -1
- package/dist/graph/client/graph-client.js +414 -18
- package/dist/graph/client/graph-client.js.map +1 -1
- package/dist/graph/client/immutable-id-middleware.d.ts +50 -0
- package/dist/graph/client/immutable-id-middleware.d.ts.map +1 -0
- package/dist/graph/client/immutable-id-middleware.js +137 -0
- package/dist/graph/client/immutable-id-middleware.js.map +1 -0
- package/dist/graph/content-readers.d.ts +0 -12
- package/dist/graph/content-readers.d.ts.map +1 -1
- package/dist/graph/content-readers.js +0 -21
- package/dist/graph/content-readers.js.map +1 -1
- package/dist/graph/index.d.ts +5 -6
- package/dist/graph/index.d.ts.map +1 -1
- package/dist/graph/index.js +5 -6
- package/dist/graph/index.js.map +1 -1
- package/dist/graph/mailbox-adapter.d.ts +15 -15
- package/dist/graph/mappers/contact-mapper.d.ts +4 -1
- package/dist/graph/mappers/contact-mapper.d.ts.map +1 -1
- package/dist/graph/mappers/contact-mapper.js +7 -3
- package/dist/graph/mappers/contact-mapper.js.map +1 -1
- package/dist/graph/mappers/email-mapper.d.ts.map +1 -1
- package/dist/graph/mappers/email-mapper.js +7 -4
- package/dist/graph/mappers/email-mapper.js.map +1 -1
- package/dist/graph/mappers/event-mapper.d.ts.map +1 -1
- package/dist/graph/mappers/event-mapper.js +6 -3
- package/dist/graph/mappers/event-mapper.js.map +1 -1
- package/dist/graph/mappers/folder-mapper.d.ts +0 -4
- package/dist/graph/mappers/folder-mapper.d.ts.map +1 -1
- package/dist/graph/mappers/folder-mapper.js +9 -19
- package/dist/graph/mappers/folder-mapper.js.map +1 -1
- package/dist/graph/mappers/index.d.ts +2 -2
- package/dist/graph/mappers/index.d.ts.map +1 -1
- package/dist/graph/mappers/index.js +2 -2
- package/dist/graph/mappers/index.js.map +1 -1
- package/dist/graph/mappers/task-mapper.d.ts +4 -2
- package/dist/graph/mappers/task-mapper.d.ts.map +1 -1
- package/dist/graph/mappers/task-mapper.js +7 -5
- package/dist/graph/mappers/task-mapper.js.map +1 -1
- package/dist/graph/mappers/utils.d.ts +0 -10
- package/dist/graph/mappers/utils.d.ts.map +1 -1
- package/dist/graph/mappers/utils.js +0 -19
- package/dist/graph/mappers/utils.js.map +1 -1
- package/dist/graph/repository.d.ts +400 -270
- package/dist/graph/repository.d.ts.map +1 -1
- package/dist/graph/repository.js +739 -1046
- package/dist/graph/repository.js.map +1 -1
- package/dist/ids/next-action.d.ts +29 -0
- package/dist/ids/next-action.d.ts.map +1 -0
- package/dist/ids/next-action.js +58 -0
- package/dist/ids/next-action.js.map +1 -0
- package/dist/ids/resolver.d.ts +2 -1
- package/dist/ids/resolver.d.ts.map +1 -1
- package/dist/ids/resolver.js +19 -4
- package/dist/ids/resolver.js.map +1 -1
- package/dist/ids/schema.d.ts +91 -0
- package/dist/ids/schema.d.ts.map +1 -0
- package/dist/ids/schema.js +131 -0
- package/dist/ids/schema.js.map +1 -0
- package/dist/ids/token.d.ts +7 -1
- package/dist/ids/token.d.ts.map +1 -1
- package/dist/ids/token.js +46 -7
- package/dist/ids/token.js.map +1 -1
- package/dist/index.d.ts +4 -6
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +63 -100
- package/dist/index.js.map +1 -1
- package/dist/parsers/index.d.ts +0 -1
- package/dist/parsers/index.d.ts.map +1 -1
- package/dist/parsers/index.js +0 -1
- package/dist/parsers/index.js.map +1 -1
- package/dist/registry/all-tools.d.ts.map +1 -1
- package/dist/registry/all-tools.js +8 -4
- package/dist/registry/all-tools.js.map +1 -1
- package/dist/registry/context.d.ts +1 -7
- package/dist/registry/context.d.ts.map +1 -1
- package/dist/registry/context.js +0 -11
- package/dist/registry/context.js.map +1 -1
- package/dist/registry/elicit-links.d.ts +35 -0
- package/dist/registry/elicit-links.d.ts.map +1 -0
- package/dist/registry/elicit-links.js +102 -0
- package/dist/registry/elicit-links.js.map +1 -0
- package/dist/registry/elicitor.d.ts +24 -0
- package/dist/registry/elicitor.d.ts.map +1 -0
- package/dist/registry/elicitor.js +51 -0
- package/dist/registry/elicitor.js.map +1 -0
- package/dist/registry/index.d.ts +2 -2
- package/dist/registry/index.d.ts.map +1 -1
- package/dist/registry/index.js +1 -1
- package/dist/registry/index.js.map +1 -1
- package/dist/registry/registry.d.ts +11 -0
- package/dist/registry/registry.d.ts.map +1 -1
- package/dist/registry/registry.js +87 -0
- package/dist/registry/registry.js.map +1 -1
- package/dist/registry/types.d.ts +61 -13
- package/dist/registry/types.d.ts.map +1 -1
- package/dist/state/delta-store.d.ts +85 -0
- package/dist/state/delta-store.d.ts.map +1 -0
- package/dist/state/delta-store.js +124 -0
- package/dist/state/delta-store.js.map +1 -0
- package/dist/state/schema.d.ts +2 -3
- package/dist/state/schema.d.ts.map +1 -1
- package/dist/state/schema.js +26 -3
- package/dist/state/schema.js.map +1 -1
- package/dist/state/store.d.ts +3 -0
- package/dist/state/store.d.ts.map +1 -1
- package/dist/state/store.js +4 -0
- package/dist/state/store.js.map +1 -1
- package/dist/tools/calendar-graph.d.ts.map +1 -1
- package/dist/tools/calendar-graph.js +10 -9
- package/dist/tools/calendar-graph.js.map +1 -1
- package/dist/tools/calendar-permissions.d.ts +7 -7
- package/dist/tools/calendar-permissions.d.ts.map +1 -1
- package/dist/tools/calendar-permissions.js +7 -4
- package/dist/tools/calendar-permissions.js.map +1 -1
- package/dist/tools/calendar.d.ts +14 -114
- package/dist/tools/calendar.d.ts.map +1 -1
- package/dist/tools/calendar.js +41 -202
- package/dist/tools/calendar.js.map +1 -1
- package/dist/tools/categories.d.ts +4 -4
- package/dist/tools/categories.d.ts.map +1 -1
- package/dist/tools/categories.js +5 -2
- package/dist/tools/categories.js.map +1 -1
- package/dist/tools/checklist-items.d.ts +9 -9
- package/dist/tools/checklist-items.d.ts.map +1 -1
- package/dist/tools/checklist-items.js +8 -5
- package/dist/tools/checklist-items.js.map +1 -1
- package/dist/tools/contact-folders.d.ts +2 -2
- package/dist/tools/contact-folders.d.ts.map +1 -1
- package/dist/tools/contact-folders.js +5 -2
- package/dist/tools/contact-folders.js.map +1 -1
- package/dist/tools/contacts-graph.d.ts +1 -1
- package/dist/tools/contacts-graph.d.ts.map +1 -1
- package/dist/tools/contacts-graph.js +8 -6
- package/dist/tools/contacts-graph.js.map +1 -1
- package/dist/tools/contacts.d.ts +9 -44
- package/dist/tools/contacts.d.ts.map +1 -1
- package/dist/tools/contacts.js +23 -131
- package/dist/tools/contacts.js.map +1 -1
- package/dist/tools/excel.d.ts +10 -10
- package/dist/tools/excel.d.ts.map +1 -1
- package/dist/tools/excel.js +9 -6
- package/dist/tools/excel.js.map +1 -1
- package/dist/tools/focused-overrides.d.ts +4 -4
- package/dist/tools/focused-overrides.d.ts.map +1 -1
- package/dist/tools/focused-overrides.js +5 -2
- package/dist/tools/focused-overrides.js.map +1 -1
- package/dist/tools/index.d.ts +4 -5
- package/dist/tools/index.d.ts.map +1 -1
- package/dist/tools/index.js +4 -6
- package/dist/tools/index.js.map +1 -1
- package/dist/tools/linked-resources.d.ts +7 -7
- package/dist/tools/linked-resources.d.ts.map +1 -1
- package/dist/tools/linked-resources.js +7 -4
- package/dist/tools/linked-resources.js.map +1 -1
- package/dist/tools/mail-graph.d.ts.map +1 -1
- package/dist/tools/mail-graph.js +21 -12
- package/dist/tools/mail-graph.js.map +1 -1
- package/dist/tools/mail-rules.d.ts +8 -8
- package/dist/tools/mail-rules.d.ts.map +1 -1
- package/dist/tools/mail-rules.js +7 -7
- package/dist/tools/mail-rules.js.map +1 -1
- package/dist/tools/mail-send.d.ts +27 -27
- package/dist/tools/mail-send.d.ts.map +1 -1
- package/dist/tools/mail-send.js +30 -19
- package/dist/tools/mail-send.js.map +1 -1
- package/dist/tools/mail.d.ts +22 -79
- package/dist/tools/mail.d.ts.map +1 -1
- package/dist/tools/mail.js +45 -293
- package/dist/tools/mail.js.map +1 -1
- package/dist/tools/mailbox-organization.d.ts +34 -37
- package/dist/tools/mailbox-organization.d.ts.map +1 -1
- package/dist/tools/mailbox-organization.js +72 -64
- package/dist/tools/mailbox-organization.js.map +1 -1
- package/dist/tools/meetings.d.ts +14 -14
- package/dist/tools/meetings.d.ts.map +1 -1
- package/dist/tools/meetings.js +8 -6
- package/dist/tools/meetings.js.map +1 -1
- package/dist/tools/onedrive.d.ts +16 -16
- package/dist/tools/onedrive.d.ts.map +1 -1
- package/dist/tools/onedrive.js +16 -11
- package/dist/tools/onedrive.js.map +1 -1
- package/dist/tools/onenote.d.ts +63 -0
- package/dist/tools/onenote.d.ts.map +1 -0
- package/dist/tools/onenote.js +221 -0
- package/dist/tools/onenote.js.map +1 -0
- package/dist/tools/planner-visualization.d.ts +5 -5
- package/dist/tools/planner-visualization.d.ts.map +1 -1
- package/dist/tools/planner-visualization.js +5 -4
- package/dist/tools/planner-visualization.js.map +1 -1
- package/dist/tools/planner.d.ts +59 -39
- package/dist/tools/planner.d.ts.map +1 -1
- package/dist/tools/planner.js +48 -23
- package/dist/tools/planner.js.map +1 -1
- package/dist/tools/shared-mailbox.d.ts +164 -0
- package/dist/tools/shared-mailbox.d.ts.map +1 -0
- package/dist/tools/shared-mailbox.js +318 -0
- package/dist/tools/shared-mailbox.js.map +1 -0
- package/dist/tools/sharepoint-lists.d.ts +131 -0
- package/dist/tools/sharepoint-lists.d.ts.map +1 -0
- package/dist/tools/sharepoint-lists.js +246 -0
- package/dist/tools/sharepoint-lists.js.map +1 -0
- package/dist/tools/sharepoint.d.ts +14 -14
- package/dist/tools/sharepoint.d.ts.map +1 -1
- package/dist/tools/sharepoint.js +11 -9
- package/dist/tools/sharepoint.js.map +1 -1
- package/dist/tools/task-attachments.d.ts +7 -7
- package/dist/tools/task-attachments.d.ts.map +1 -1
- package/dist/tools/task-attachments.js +7 -4
- package/dist/tools/task-attachments.js.map +1 -1
- package/dist/tools/task-lists.d.ts +3 -3
- package/dist/tools/task-lists.d.ts.map +1 -1
- package/dist/tools/task-lists.js +10 -6
- package/dist/tools/task-lists.js.map +1 -1
- package/dist/tools/tasks-graph.d.ts +2 -2
- package/dist/tools/tasks-graph.d.ts.map +1 -1
- package/dist/tools/tasks-graph.js +6 -4
- package/dist/tools/tasks-graph.js.map +1 -1
- package/dist/tools/tasks.d.ts +8 -43
- package/dist/tools/tasks.d.ts.map +1 -1
- package/dist/tools/tasks.js +19 -122
- package/dist/tools/tasks.js.map +1 -1
- package/dist/tools/teams.d.ts +46 -46
- package/dist/tools/teams.d.ts.map +1 -1
- package/dist/tools/teams.js +34 -26
- package/dist/tools/teams.js.map +1 -1
- package/dist/tools/what-changed.d.ts +48 -0
- package/dist/tools/what-changed.d.ts.map +1 -0
- package/dist/tools/what-changed.js +149 -0
- package/dist/tools/what-changed.js.map +1 -0
- package/dist/types/calendar.d.ts +1 -1
- package/dist/types/calendar.d.ts.map +1 -1
- package/dist/types/calendar.js.map +1 -1
- package/dist/types/contacts.d.ts +1 -1
- package/dist/types/contacts.d.ts.map +1 -1
- package/dist/types/contacts.js.map +1 -1
- package/dist/types/mail.d.ts +1 -1
- package/dist/types/mail.d.ts.map +1 -1
- package/dist/types/mail.js.map +1 -1
- package/dist/utils/errors.d.ts +15 -34
- package/dist/utils/errors.d.ts.map +1 -1
- package/dist/utils/errors.js +13 -49
- package/dist/utils/errors.js.map +1 -1
- package/dist/visualization/types.d.ts +4 -4
- package/package.json +3 -4
- package/dist/applescript/account-repository.d.ts +0 -30
- package/dist/applescript/account-repository.d.ts.map +0 -1
- package/dist/applescript/account-repository.js +0 -38
- package/dist/applescript/account-repository.js.map +0 -1
- package/dist/applescript/account-scripts.d.ts +0 -21
- package/dist/applescript/account-scripts.d.ts.map +0 -1
- package/dist/applescript/account-scripts.js +0 -180
- package/dist/applescript/account-scripts.js.map +0 -1
- package/dist/applescript/calendar-manager.d.ts +0 -44
- package/dist/applescript/calendar-manager.d.ts.map +0 -1
- package/dist/applescript/calendar-manager.js +0 -92
- package/dist/applescript/calendar-manager.js.map +0 -1
- package/dist/applescript/calendar-writer.d.ts +0 -36
- package/dist/applescript/calendar-writer.d.ts.map +0 -1
- package/dist/applescript/calendar-writer.js +0 -94
- package/dist/applescript/calendar-writer.js.map +0 -1
- package/dist/applescript/content-readers.d.ts +0 -114
- package/dist/applescript/content-readers.d.ts.map +0 -1
- package/dist/applescript/content-readers.js +0 -328
- package/dist/applescript/content-readers.js.map +0 -1
- package/dist/applescript/executor.d.ts +0 -60
- package/dist/applescript/executor.d.ts.map +0 -1
- package/dist/applescript/executor.js +0 -173
- package/dist/applescript/executor.js.map +0 -1
- package/dist/applescript/index.d.ts +0 -20
- package/dist/applescript/index.d.ts.map +0 -1
- package/dist/applescript/index.js +0 -29
- package/dist/applescript/index.js.map +0 -1
- package/dist/applescript/mail-sender.d.ts +0 -38
- package/dist/applescript/mail-sender.d.ts.map +0 -1
- package/dist/applescript/mail-sender.js +0 -67
- package/dist/applescript/mail-sender.js.map +0 -1
- package/dist/applescript/parser.d.ts +0 -235
- package/dist/applescript/parser.d.ts.map +0 -1
- package/dist/applescript/parser.js +0 -496
- package/dist/applescript/parser.js.map +0 -1
- package/dist/applescript/repository.d.ts +0 -64
- package/dist/applescript/repository.d.ts.map +0 -1
- package/dist/applescript/repository.js +0 -444
- package/dist/applescript/repository.js.map +0 -1
- package/dist/applescript/scripts.d.ts +0 -265
- package/dist/applescript/scripts.d.ts.map +0 -1
- package/dist/applescript/scripts.js +0 -1483
- package/dist/applescript/scripts.js.map +0 -1
- package/dist/parsers/olk15.d.ts +0 -87
- package/dist/parsers/olk15.d.ts.map +0 -1
- package/dist/parsers/olk15.js +0 -368
- package/dist/parsers/olk15.js.map +0 -1
- package/dist/tools/accounts.d.ts +0 -37
- package/dist/tools/accounts.d.ts.map +0 -1
- package/dist/tools/accounts.js +0 -68
- package/dist/tools/accounts.js.map +0 -1
- package/dist/tools/calendar-apple.d.ts +0 -39
- package/dist/tools/calendar-apple.d.ts.map +0 -1
- package/dist/tools/calendar-apple.js +0 -159
- package/dist/tools/calendar-apple.js.map +0 -1
- package/dist/tools/mail-apple.d.ts +0 -40
- package/dist/tools/mail-apple.d.ts.map +0 -1
- package/dist/tools/mail-apple.js +0 -146
- package/dist/tools/mail-apple.js.map +0 -1
- package/dist/tools/notes.d.ts +0 -86
- package/dist/tools/notes.d.ts.map +0 -1
- package/dist/tools/notes.js +0 -202
- package/dist/tools/notes.js.map +0 -1
|
@@ -9,9 +9,9 @@
|
|
|
9
9
|
*/
|
|
10
10
|
import type { IConnection } from './connection.js';
|
|
11
11
|
export interface FolderRow {
|
|
12
|
-
readonly id:
|
|
12
|
+
readonly id: string;
|
|
13
13
|
readonly name: string | null;
|
|
14
|
-
readonly parentId:
|
|
14
|
+
readonly parentId: string | null;
|
|
15
15
|
readonly specialType: number;
|
|
16
16
|
readonly folderType: number;
|
|
17
17
|
readonly accountId: number;
|
|
@@ -19,8 +19,8 @@ export interface FolderRow {
|
|
|
19
19
|
readonly unreadCount: number;
|
|
20
20
|
}
|
|
21
21
|
export interface EmailRow {
|
|
22
|
-
readonly id:
|
|
23
|
-
readonly folderId:
|
|
22
|
+
readonly id: string;
|
|
23
|
+
readonly folderId: string;
|
|
24
24
|
readonly subject: string | null;
|
|
25
25
|
readonly sender: string | null;
|
|
26
26
|
readonly senderAddress: string | null;
|
|
@@ -38,12 +38,12 @@ export interface EmailRow {
|
|
|
38
38
|
readonly flagStatus: number;
|
|
39
39
|
readonly categories: Buffer | null;
|
|
40
40
|
readonly messageId: string | null;
|
|
41
|
-
readonly conversationId:
|
|
41
|
+
readonly conversationId: string | null;
|
|
42
42
|
readonly dataFilePath: string | null;
|
|
43
43
|
}
|
|
44
44
|
export interface EventRow {
|
|
45
|
-
readonly id:
|
|
46
|
-
readonly folderId:
|
|
45
|
+
readonly id: string;
|
|
46
|
+
readonly folderId: string;
|
|
47
47
|
readonly subject: string | null;
|
|
48
48
|
readonly startDate: number | null;
|
|
49
49
|
readonly endDate: number | null;
|
|
@@ -57,7 +57,7 @@ export interface EventRow {
|
|
|
57
57
|
readonly onlineMeetingUrl: string | null;
|
|
58
58
|
}
|
|
59
59
|
export interface ContactRow {
|
|
60
|
-
readonly id:
|
|
60
|
+
readonly id: string;
|
|
61
61
|
readonly folderId: number;
|
|
62
62
|
readonly displayName: string | null;
|
|
63
63
|
readonly sortName: string | null;
|
|
@@ -65,8 +65,8 @@ export interface ContactRow {
|
|
|
65
65
|
readonly dataFilePath: string | null;
|
|
66
66
|
}
|
|
67
67
|
export interface TaskRow {
|
|
68
|
-
readonly id:
|
|
69
|
-
readonly folderId:
|
|
68
|
+
readonly id: string;
|
|
69
|
+
readonly folderId: string;
|
|
70
70
|
readonly name: string | null;
|
|
71
71
|
readonly isCompleted: number;
|
|
72
72
|
readonly dueDate: number | null;
|
|
@@ -89,12 +89,12 @@ export interface CountRow {
|
|
|
89
89
|
*/
|
|
90
90
|
export interface IRepository {
|
|
91
91
|
listFolders(): FolderRow[];
|
|
92
|
-
getFolder(id:
|
|
92
|
+
getFolder(id: string): FolderRow | undefined;
|
|
93
93
|
listEmails(folderId: number, limit: number, offset: number): EmailRow[];
|
|
94
94
|
listUnreadEmails(folderId: number, limit: number, offset: number): EmailRow[];
|
|
95
95
|
searchEmails(query: string, limit: number): EmailRow[];
|
|
96
96
|
searchEmailsInFolder(folderId: number, query: string, limit: number): EmailRow[];
|
|
97
|
-
getEmail(id:
|
|
97
|
+
getEmail(id: string): EmailRow | undefined;
|
|
98
98
|
getUnreadCount(): number;
|
|
99
99
|
getUnreadCountByFolder(folderId: number): number;
|
|
100
100
|
listCalendars(): FolderRow[];
|
|
@@ -102,14 +102,14 @@ export interface IRepository {
|
|
|
102
102
|
listEventsByFolder(folderId: number, limit: number): EventRow[];
|
|
103
103
|
listEventsByDateRange(startDate: number, endDate: number, limit: number): EventRow[];
|
|
104
104
|
searchEvents(query: string | null, startDate: string | null, endDate: string | null, limit: number): EventRow[];
|
|
105
|
-
getEvent(id:
|
|
105
|
+
getEvent(id: string): EventRow | undefined;
|
|
106
106
|
listContacts(limit: number, offset: number): ContactRow[];
|
|
107
107
|
searchContacts(query: string, limit: number): ContactRow[];
|
|
108
|
-
getContact(id:
|
|
108
|
+
getContact(id: string): ContactRow | undefined;
|
|
109
109
|
listTasks(limit: number, offset: number): TaskRow[];
|
|
110
110
|
listIncompleteTasks(limit: number, offset: number): TaskRow[];
|
|
111
111
|
searchTasks(query: string, limit: number): TaskRow[];
|
|
112
|
-
getTask(id:
|
|
112
|
+
getTask(id: string): TaskRow | undefined;
|
|
113
113
|
listNotes(limit: number, offset: number): NoteRow[];
|
|
114
114
|
getNote(id: number): NoteRow | undefined;
|
|
115
115
|
}
|
|
@@ -118,19 +118,19 @@ export interface IRepository {
|
|
|
118
118
|
* Extends IRepository with mutation methods for mailbox organization.
|
|
119
119
|
*/
|
|
120
120
|
export interface IWriteableRepository extends IRepository {
|
|
121
|
-
moveEmail(emailId:
|
|
122
|
-
deleteEmail(emailId:
|
|
123
|
-
archiveEmail(emailId:
|
|
124
|
-
junkEmail(emailId:
|
|
125
|
-
markEmailRead(emailId:
|
|
126
|
-
setEmailFlag(emailId:
|
|
127
|
-
setEmailCategories(emailId:
|
|
128
|
-
setEmailImportance(emailId:
|
|
129
|
-
createFolder(name: string, parentFolderId?:
|
|
130
|
-
deleteFolder(folderId:
|
|
131
|
-
renameFolder(folderId:
|
|
132
|
-
moveFolder(folderId:
|
|
133
|
-
emptyFolder(folderId:
|
|
121
|
+
moveEmail(emailId: string, destinationFolderId: string): void;
|
|
122
|
+
deleteEmail(emailId: string): void;
|
|
123
|
+
archiveEmail(emailId: string): void;
|
|
124
|
+
junkEmail(emailId: string): void;
|
|
125
|
+
markEmailRead(emailId: string, isRead: boolean): void;
|
|
126
|
+
setEmailFlag(emailId: string, flagStatus: number): void;
|
|
127
|
+
setEmailCategories(emailId: string, categories: string[]): void;
|
|
128
|
+
setEmailImportance(emailId: string, importance: string): void;
|
|
129
|
+
createFolder(name: string, parentFolderId?: string): FolderRow;
|
|
130
|
+
deleteFolder(folderId: string): void;
|
|
131
|
+
renameFolder(folderId: string, newName: string): void;
|
|
132
|
+
moveFolder(folderId: string, destinationParentId: string): void;
|
|
133
|
+
emptyFolder(folderId: string): void;
|
|
134
134
|
}
|
|
135
135
|
/**
|
|
136
136
|
* A value that may be synchronous or wrapped in a Promise.
|
|
@@ -144,21 +144,21 @@ export type MaybePromise<T> = T | Promise<T>;
|
|
|
144
144
|
* Promises. MailboxOrganizationTools awaits all calls uniformly.
|
|
145
145
|
*/
|
|
146
146
|
export interface IMailboxRepository {
|
|
147
|
-
getEmail(id:
|
|
148
|
-
getFolder(id:
|
|
149
|
-
moveEmail(emailId:
|
|
150
|
-
deleteEmail(emailId:
|
|
151
|
-
archiveEmail(emailId:
|
|
152
|
-
junkEmail(emailId:
|
|
153
|
-
markEmailRead(emailId:
|
|
154
|
-
setEmailFlag(emailId:
|
|
155
|
-
setEmailCategories(emailId:
|
|
156
|
-
setEmailImportance(emailId:
|
|
157
|
-
createFolder(name: string, parentFolderId?:
|
|
158
|
-
deleteFolder(folderId:
|
|
159
|
-
renameFolder(folderId:
|
|
160
|
-
moveFolder(folderId:
|
|
161
|
-
emptyFolder(folderId:
|
|
147
|
+
getEmail(id: string): MaybePromise<EmailRow | undefined>;
|
|
148
|
+
getFolder(id: string): MaybePromise<FolderRow | undefined>;
|
|
149
|
+
moveEmail(emailId: string, destinationFolderId: string): MaybePromise<void>;
|
|
150
|
+
deleteEmail(emailId: string): MaybePromise<void>;
|
|
151
|
+
archiveEmail(emailId: string): MaybePromise<void>;
|
|
152
|
+
junkEmail(emailId: string): MaybePromise<void>;
|
|
153
|
+
markEmailRead(emailId: string, isRead: boolean): MaybePromise<void>;
|
|
154
|
+
setEmailFlag(emailId: string, flagStatus: number): MaybePromise<void>;
|
|
155
|
+
setEmailCategories(emailId: string, categories: string[]): MaybePromise<void>;
|
|
156
|
+
setEmailImportance(emailId: string, importance: string): MaybePromise<void>;
|
|
157
|
+
createFolder(name: string, parentFolderId?: string): MaybePromise<FolderRow>;
|
|
158
|
+
deleteFolder(folderId: string): MaybePromise<void>;
|
|
159
|
+
renameFolder(folderId: string, newName: string): MaybePromise<void>;
|
|
160
|
+
moveFolder(folderId: string, destinationParentId: string): MaybePromise<void>;
|
|
161
|
+
emptyFolder(folderId: string): MaybePromise<void>;
|
|
162
162
|
}
|
|
163
163
|
/**
|
|
164
164
|
* Repository implementation using better-sqlite3.
|
|
@@ -167,12 +167,12 @@ export declare class OutlookRepository implements IRepository {
|
|
|
167
167
|
private readonly connection;
|
|
168
168
|
constructor(connection: IConnection);
|
|
169
169
|
listFolders(): FolderRow[];
|
|
170
|
-
getFolder(id:
|
|
170
|
+
getFolder(id: string): FolderRow | undefined;
|
|
171
171
|
listEmails(folderId: number, limit: number, offset: number): EmailRow[];
|
|
172
172
|
listUnreadEmails(folderId: number, limit: number, offset: number): EmailRow[];
|
|
173
173
|
searchEmails(query: string, limit: number): EmailRow[];
|
|
174
174
|
searchEmailsInFolder(folderId: number, query: string, limit: number): EmailRow[];
|
|
175
|
-
getEmail(id:
|
|
175
|
+
getEmail(id: string): EmailRow | undefined;
|
|
176
176
|
getUnreadCount(): number;
|
|
177
177
|
getUnreadCountByFolder(folderId: number): number;
|
|
178
178
|
listCalendars(): FolderRow[];
|
|
@@ -180,14 +180,14 @@ export declare class OutlookRepository implements IRepository {
|
|
|
180
180
|
listEventsByFolder(folderId: number, limit: number): EventRow[];
|
|
181
181
|
listEventsByDateRange(startDate: number, endDate: number, limit: number): EventRow[];
|
|
182
182
|
searchEvents(query: string | null, startDate: string | null, endDate: string | null, limit: number): EventRow[];
|
|
183
|
-
getEvent(id:
|
|
183
|
+
getEvent(id: string): EventRow | undefined;
|
|
184
184
|
listContacts(limit: number, offset: number): ContactRow[];
|
|
185
185
|
searchContacts(query: string, limit: number): ContactRow[];
|
|
186
|
-
getContact(id:
|
|
186
|
+
getContact(id: string): ContactRow | undefined;
|
|
187
187
|
listTasks(limit: number, offset: number): TaskRow[];
|
|
188
188
|
listIncompleteTasks(limit: number, offset: number): TaskRow[];
|
|
189
189
|
searchTasks(query: string, limit: number): TaskRow[];
|
|
190
|
-
getTask(id:
|
|
190
|
+
getTask(id: string): TaskRow | undefined;
|
|
191
191
|
listNotes(limit: number, offset: number): NoteRow[];
|
|
192
192
|
getNote(id: number): NoteRow | undefined;
|
|
193
193
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"repository.d.ts","sourceRoot":"","sources":["../../src/database/repository.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH;;;;GAIG;AAEH,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,iBAAiB,CAAC;AAQnD,MAAM,WAAW,SAAS;
|
|
1
|
+
{"version":3,"file":"repository.d.ts","sourceRoot":"","sources":["../../src/database/repository.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"repository.js","sourceRoot":"","sources":["../../src/database/repository.ts"],"names":[],"mappings":"AAAA;;;GAGG;AASH,OAAO,KAAK,OAAO,MAAM,cAAc,CAAC;AACxC,OAAO,EAAE,mBAAmB,EAAE,MAAM,mBAAmB,CAAC;
|
|
1
|
+
{"version":3,"file":"repository.js","sourceRoot":"","sources":["../../src/database/repository.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,67 @@
|
|
|
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
|
+
* Delta-sync mirror orchestration (U12).
|
|
7
|
+
*
|
|
8
|
+
* Drives Microsoft Graph delta queries for a small set of resources (inbox
|
|
9
|
+
* mail, calendar events), maintains a local mirror of seen items via
|
|
10
|
+
* {@link DeltaStore}, and computes a change set (added / updated / deleted)
|
|
11
|
+
* since the previous sync. Ids it surfaces are minted as durable self-encoding
|
|
12
|
+
* tokens (`em_` for mail, `ev_` for events) so a caller can address them with
|
|
13
|
+
* the same handles every other tool returns.
|
|
14
|
+
*
|
|
15
|
+
* The first sync of a resource is a *baseline*: it records the current state
|
|
16
|
+
* without reporting every existing item as "created", so `what_changed` only
|
|
17
|
+
* reports real deltas from the second call onward.
|
|
18
|
+
*/
|
|
19
|
+
import type { GraphClient } from '../graph/client/index.js';
|
|
20
|
+
import type { StateStore } from '../state/store.js';
|
|
21
|
+
/** Resources the mirror can track. */
|
|
22
|
+
export type ResourceKey = 'mail' | 'calendar';
|
|
23
|
+
/** A single change surfaced to the caller. */
|
|
24
|
+
export interface ChangeEntry {
|
|
25
|
+
token: string;
|
|
26
|
+
graphId: string;
|
|
27
|
+
summary: string;
|
|
28
|
+
changeType: 'created' | 'updated' | 'deleted';
|
|
29
|
+
detail?: Record<string, unknown>;
|
|
30
|
+
}
|
|
31
|
+
/** The change set for one resource in a sync round. */
|
|
32
|
+
export interface ResourceChangeSet {
|
|
33
|
+
resource: ResourceKey;
|
|
34
|
+
/** True when this call established the baseline (no per-item changes reported). */
|
|
35
|
+
baseline: boolean;
|
|
36
|
+
/** Total items now mirrored for the resource. */
|
|
37
|
+
trackedCount: number;
|
|
38
|
+
created: ChangeEntry[];
|
|
39
|
+
updated: ChangeEntry[];
|
|
40
|
+
deleted: ChangeEntry[];
|
|
41
|
+
/** Optional operator note (e.g. cursor unavailable). */
|
|
42
|
+
note?: string;
|
|
43
|
+
}
|
|
44
|
+
/** The full report from a {@link DeltaMirror.sync} call. */
|
|
45
|
+
export interface ChangeReport {
|
|
46
|
+
syncedAt: number;
|
|
47
|
+
resources: ResourceChangeSet[];
|
|
48
|
+
}
|
|
49
|
+
/** All resource keys, in a stable order. */
|
|
50
|
+
export declare const ALL_RESOURCES: readonly ResourceKey[];
|
|
51
|
+
/**
|
|
52
|
+
* Orchestrates delta sync + change classification against a {@link StateStore}
|
|
53
|
+
* mirror. Stateless beyond its dependencies; safe to construct per call.
|
|
54
|
+
*/
|
|
55
|
+
export declare class DeltaMirror {
|
|
56
|
+
private readonly client;
|
|
57
|
+
private readonly store;
|
|
58
|
+
private readonly accountId;
|
|
59
|
+
private readonly now;
|
|
60
|
+
constructor(client: GraphClient, store: StateStore, accountId: () => string, now?: () => number);
|
|
61
|
+
/** Syncs the given resources (all by default) and returns the change report. */
|
|
62
|
+
sync(resources?: readonly ResourceKey[]): Promise<ChangeReport>;
|
|
63
|
+
/** Clears tracking for the given resources (all by default) — local only. */
|
|
64
|
+
reset(resources?: readonly ResourceKey[]): void;
|
|
65
|
+
private syncResource;
|
|
66
|
+
}
|
|
67
|
+
//# sourceMappingURL=mirror.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"mirror.d.ts","sourceRoot":"","sources":["../../src/delta/mirror.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH;;;;;;;;;;;;;GAaG;AAEH,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,0BAA0B,CAAC;AAC5D,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC;AAIpD,sCAAsC;AACtC,MAAM,MAAM,WAAW,GAAG,MAAM,GAAG,UAAU,CAAC;AAY9C,8CAA8C;AAC9C,MAAM,WAAW,WAAW;IAC1B,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,EAAE,MAAM,CAAC;IAChB,OAAO,EAAE,MAAM,CAAC;IAChB,UAAU,EAAE,SAAS,GAAG,SAAS,GAAG,SAAS,CAAC;IAC9C,MAAM,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CAClC;AAED,uDAAuD;AACvD,MAAM,WAAW,iBAAiB;IAChC,QAAQ,EAAE,WAAW,CAAC;IACtB,mFAAmF;IACnF,QAAQ,EAAE,OAAO,CAAC;IAClB,iDAAiD;IACjD,YAAY,EAAE,MAAM,CAAC;IACrB,OAAO,EAAE,WAAW,EAAE,CAAC;IACvB,OAAO,EAAE,WAAW,EAAE,CAAC;IACvB,OAAO,EAAE,WAAW,EAAE,CAAC;IACvB,wDAAwD;IACxD,IAAI,CAAC,EAAE,MAAM,CAAC;CACf;AAED,4DAA4D;AAC5D,MAAM,WAAW,YAAY;IAC3B,QAAQ,EAAE,MAAM,CAAC;IACjB,SAAS,EAAE,iBAAiB,EAAE,CAAC;CAChC;AA+FD,4CAA4C;AAC5C,eAAO,MAAM,aAAa,EAAE,SAAS,WAAW,EAAyB,CAAC;AAE1E;;;GAGG;AACH,qBAAa,WAAW;IAEpB,OAAO,CAAC,QAAQ,CAAC,MAAM;IACvB,OAAO,CAAC,QAAQ,CAAC,KAAK;IACtB,OAAO,CAAC,QAAQ,CAAC,SAAS;IAC1B,OAAO,CAAC,QAAQ,CAAC,GAAG;gBAHH,MAAM,EAAE,WAAW,EACnB,KAAK,EAAE,UAAU,EACjB,SAAS,EAAE,MAAM,MAAM,EACvB,GAAG,GAAE,MAAM,MAAyB;IAGvD,gFAAgF;IAC1E,IAAI,CAAC,SAAS,GAAE,SAAS,WAAW,EAAkB,GAAG,OAAO,CAAC,YAAY,CAAC;IASpF,6EAA6E;IAC7E,KAAK,CAAC,SAAS,GAAE,SAAS,WAAW,EAAkB,GAAG,IAAI;YAOhD,YAAY;CA0E3B"}
|
|
@@ -0,0 +1,183 @@
|
|
|
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 { mintSelfEncoded } from '../ids/token.js';
|
|
6
|
+
/** How far forward/back the initial calendar-view window spans (baked into the cursor). */
|
|
7
|
+
const CALENDAR_WINDOW_PAST_MS = 1 * 24 * 60 * 60 * 1000;
|
|
8
|
+
const CALENDAR_WINDOW_FUTURE_MS = 90 * 24 * 60 * 60 * 1000;
|
|
9
|
+
/**
|
|
10
|
+
* The calendar cursor bakes an absolute time window that cannot advance, so it
|
|
11
|
+
* is force-refreshed (re-baselined with a fresh window) once it is this old —
|
|
12
|
+
* bounding how far the tracked window can drift from "now".
|
|
13
|
+
*/
|
|
14
|
+
const CALENDAR_CURSOR_MAX_AGE_MS = 7 * 24 * 60 * 60 * 1000;
|
|
15
|
+
/** Reads `@removed` (and its reason) regardless of the concrete Graph type. */
|
|
16
|
+
function removal(item) {
|
|
17
|
+
const marker = item['@removed'];
|
|
18
|
+
if (marker == null)
|
|
19
|
+
return { removed: false, reason: '' };
|
|
20
|
+
return { removed: true, reason: marker.reason ?? 'deleted' };
|
|
21
|
+
}
|
|
22
|
+
const MAIL_RESOURCE = {
|
|
23
|
+
key: 'mail',
|
|
24
|
+
storageKey: 'mail:inbox',
|
|
25
|
+
entityType: 'message',
|
|
26
|
+
async fetch(client, deltaLink) {
|
|
27
|
+
const { messages, deltaLink: next } = await client.getMessagesDelta('inbox', deltaLink);
|
|
28
|
+
const items = [];
|
|
29
|
+
for (const m of messages) {
|
|
30
|
+
const graphId = m.id ?? '';
|
|
31
|
+
if (graphId.length === 0)
|
|
32
|
+
continue;
|
|
33
|
+
const { removed, reason } = removal(m);
|
|
34
|
+
items.push({
|
|
35
|
+
graphId,
|
|
36
|
+
removed,
|
|
37
|
+
removedReason: reason,
|
|
38
|
+
summary: m.subject ?? '(no subject)',
|
|
39
|
+
snapshot: {
|
|
40
|
+
from: m.from?.emailAddress?.address ?? '',
|
|
41
|
+
receivedDateTime: m.receivedDateTime ?? '',
|
|
42
|
+
isRead: m.isRead ?? null,
|
|
43
|
+
},
|
|
44
|
+
});
|
|
45
|
+
}
|
|
46
|
+
return { items, deltaLink: next };
|
|
47
|
+
},
|
|
48
|
+
};
|
|
49
|
+
const CALENDAR_RESOURCE = {
|
|
50
|
+
key: 'calendar',
|
|
51
|
+
storageKey: 'calendar:primary',
|
|
52
|
+
entityType: 'event',
|
|
53
|
+
maxCursorAgeMs: CALENDAR_CURSOR_MAX_AGE_MS,
|
|
54
|
+
async fetch(client, deltaLink, now) {
|
|
55
|
+
const start = new Date(now - CALENDAR_WINDOW_PAST_MS).toISOString();
|
|
56
|
+
const end = new Date(now + CALENDAR_WINDOW_FUTURE_MS).toISOString();
|
|
57
|
+
const { events, deltaLink: next } = await client.getCalendarViewDelta(start, end, deltaLink);
|
|
58
|
+
const items = [];
|
|
59
|
+
for (const e of events) {
|
|
60
|
+
const graphId = e.id ?? '';
|
|
61
|
+
if (graphId.length === 0)
|
|
62
|
+
continue;
|
|
63
|
+
const { removed, reason } = removal(e);
|
|
64
|
+
items.push({
|
|
65
|
+
graphId,
|
|
66
|
+
removed,
|
|
67
|
+
removedReason: reason,
|
|
68
|
+
summary: e.subject ?? '(no subject)',
|
|
69
|
+
snapshot: {
|
|
70
|
+
start: e.start?.dateTime ?? '',
|
|
71
|
+
end: e.end?.dateTime ?? '',
|
|
72
|
+
organizer: e.organizer?.emailAddress?.address ?? '',
|
|
73
|
+
},
|
|
74
|
+
});
|
|
75
|
+
}
|
|
76
|
+
return { items, deltaLink: next };
|
|
77
|
+
},
|
|
78
|
+
};
|
|
79
|
+
const RESOURCES = {
|
|
80
|
+
mail: MAIL_RESOURCE,
|
|
81
|
+
calendar: CALENDAR_RESOURCE,
|
|
82
|
+
};
|
|
83
|
+
/** All resource keys, in a stable order. */
|
|
84
|
+
export const ALL_RESOURCES = ['mail', 'calendar'];
|
|
85
|
+
/**
|
|
86
|
+
* Orchestrates delta sync + change classification against a {@link StateStore}
|
|
87
|
+
* mirror. Stateless beyond its dependencies; safe to construct per call.
|
|
88
|
+
*/
|
|
89
|
+
export class DeltaMirror {
|
|
90
|
+
client;
|
|
91
|
+
store;
|
|
92
|
+
accountId;
|
|
93
|
+
now;
|
|
94
|
+
constructor(client, store, accountId, now = () => Date.now()) {
|
|
95
|
+
this.client = client;
|
|
96
|
+
this.store = store;
|
|
97
|
+
this.accountId = accountId;
|
|
98
|
+
this.now = now;
|
|
99
|
+
}
|
|
100
|
+
/** Syncs the given resources (all by default) and returns the change report. */
|
|
101
|
+
async sync(resources = ALL_RESOURCES) {
|
|
102
|
+
const syncedAt = this.now();
|
|
103
|
+
const out = [];
|
|
104
|
+
for (const key of resources) {
|
|
105
|
+
out.push(await this.syncResource(RESOURCES[key], syncedAt));
|
|
106
|
+
}
|
|
107
|
+
return { syncedAt, resources: out };
|
|
108
|
+
}
|
|
109
|
+
/** Clears tracking for the given resources (all by default) — local only. */
|
|
110
|
+
reset(resources = ALL_RESOURCES) {
|
|
111
|
+
const accountId = this.accountId();
|
|
112
|
+
for (const key of resources) {
|
|
113
|
+
this.store.delta.reset(accountId, RESOURCES[key].storageKey);
|
|
114
|
+
}
|
|
115
|
+
}
|
|
116
|
+
async syncResource(desc, syncedAt) {
|
|
117
|
+
const accountId = this.accountId();
|
|
118
|
+
const cursor = this.store.delta.getCursor(accountId, desc.storageKey);
|
|
119
|
+
// A stale calendar-style cursor (fixed window that can no longer advance) is
|
|
120
|
+
// treated as absent so this round re-baselines with a fresh window.
|
|
121
|
+
const stale = cursor != null &&
|
|
122
|
+
desc.maxCursorAgeMs != null &&
|
|
123
|
+
syncedAt - cursor.syncedAt > desc.maxCursorAgeMs;
|
|
124
|
+
const prevLink = stale ? undefined : (cursor?.deltaLink ?? undefined);
|
|
125
|
+
const baseline = prevLink == null;
|
|
126
|
+
const { items, deltaLink } = await desc.fetch(this.client, prevLink, syncedAt);
|
|
127
|
+
// Collapse duplicate ids within one response (last entry wins, per Graph
|
|
128
|
+
// ordering) so a created-then-deleted or repeated id can't be double-counted
|
|
129
|
+
// or leave the report inconsistent with the committed mirror.
|
|
130
|
+
const latest = new Map();
|
|
131
|
+
for (const item of items)
|
|
132
|
+
latest.set(item.graphId, item);
|
|
133
|
+
const seen = baseline ? new Set() : this.store.delta.getSeenIds(accountId, desc.storageKey);
|
|
134
|
+
const upserts = [];
|
|
135
|
+
const deletes = [];
|
|
136
|
+
const created = [];
|
|
137
|
+
const updated = [];
|
|
138
|
+
const deleted = [];
|
|
139
|
+
for (const item of latest.values()) {
|
|
140
|
+
const token = mintSelfEncoded(desc.entityType, item.graphId);
|
|
141
|
+
if (item.removed) {
|
|
142
|
+
// Drop from the mirror either way, but only report an actual deletion
|
|
143
|
+
// ('deleted'). 'changed' means the item merely left our view (moved
|
|
144
|
+
// folder / rescheduled out of window) — reporting it as deleted lies.
|
|
145
|
+
deletes.push(item.graphId);
|
|
146
|
+
if (!baseline && item.removedReason === 'deleted' && seen.has(item.graphId)) {
|
|
147
|
+
const known = this.store.delta.getItem(accountId, desc.storageKey, item.graphId);
|
|
148
|
+
deleted.push({ token, graphId: item.graphId, summary: known?.summary ?? '', changeType: 'deleted' });
|
|
149
|
+
}
|
|
150
|
+
continue;
|
|
151
|
+
}
|
|
152
|
+
upserts.push({ graphId: item.graphId, token, summary: item.summary, snapshot: JSON.stringify(item.snapshot) });
|
|
153
|
+
if (!baseline) {
|
|
154
|
+
const changeType = seen.has(item.graphId) ? 'updated' : 'created';
|
|
155
|
+
const entry = { token, graphId: item.graphId, summary: item.summary, changeType, detail: item.snapshot };
|
|
156
|
+
(changeType === 'updated' ? updated : created).push(entry);
|
|
157
|
+
}
|
|
158
|
+
}
|
|
159
|
+
this.store.delta.commit({
|
|
160
|
+
accountId,
|
|
161
|
+
resource: desc.storageKey,
|
|
162
|
+
deltaLink,
|
|
163
|
+
syncedAt,
|
|
164
|
+
upserts,
|
|
165
|
+
deletes,
|
|
166
|
+
replaceMirror: baseline,
|
|
167
|
+
});
|
|
168
|
+
const result = {
|
|
169
|
+
resource: desc.key,
|
|
170
|
+
baseline,
|
|
171
|
+
trackedCount: this.store.delta.countItems(accountId, desc.storageKey),
|
|
172
|
+
created,
|
|
173
|
+
updated,
|
|
174
|
+
deleted,
|
|
175
|
+
};
|
|
176
|
+
if (deltaLink.length === 0) {
|
|
177
|
+
result.note =
|
|
178
|
+
'Graph returned no delta cursor (large initial page); tracking will re-baseline on the next call.';
|
|
179
|
+
}
|
|
180
|
+
return result;
|
|
181
|
+
}
|
|
182
|
+
}
|
|
183
|
+
//# sourceMappingURL=mirror.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"mirror.js","sourceRoot":"","sources":["../../src/delta/mirror.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Copyright (c) 2026 JBC Tech Solutions, LLC
|
|
3
|
+
* Licensed under the MIT License. See LICENSE file in the project root.
|
|
4
|
+
*/
|
|
5
|
+
/** Scope key used before sign-in (or when the account can't be determined). */
|
|
6
|
+
export declare const DEFAULT_ACCOUNT_ID = "default";
|
|
7
|
+
/**
|
|
8
|
+
* Resolves the signed-in account's stable id from MSAL, memoizing the first real
|
|
9
|
+
* value. Returns {@link DEFAULT_ACCOUNT_ID} (uncached) when unauthenticated.
|
|
10
|
+
*/
|
|
11
|
+
export declare function resolveAccountId(): Promise<string>;
|
|
12
|
+
/**
|
|
13
|
+
* The last resolved account id without touching the MSAL cache. Returns
|
|
14
|
+
* {@link DEFAULT_ACCOUNT_ID} until {@link resolveAccountId} has populated it.
|
|
15
|
+
*/
|
|
16
|
+
export declare function currentAccountId(): string;
|
|
17
|
+
/** Clears the memo so a sign-out / account switch re-resolves the identity. */
|
|
18
|
+
export declare function resetAccountId(): void;
|
|
19
|
+
//# sourceMappingURL=account-id.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"account-id.d.ts","sourceRoot":"","sources":["../../../src/graph/auth/account-id.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAwBH,+EAA+E;AAC/E,eAAO,MAAM,kBAAkB,YAAY,CAAC;AAI5C;;;GAGG;AACH,wBAAsB,gBAAgB,IAAI,OAAO,CAAC,MAAM,CAAC,CAWxD;AAED;;;GAGG;AACH,wBAAgB,gBAAgB,IAAI,MAAM,CAEzC;AAED,+EAA+E;AAC/E,wBAAgB,cAAc,IAAI,IAAI,CAErC"}
|
|
@@ -0,0 +1,55 @@
|
|
|
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
|
+
* Signed-in account identity (U5 / D7). Durable state — approval tokens (D8) and
|
|
7
|
+
* the durable-ID alias table (D3) — is scoped per account so a token minted
|
|
8
|
+
* while signed in as one user can never be redeemed as another. MSAL's
|
|
9
|
+
* `homeAccountId` (`<oid>.<tid>`) is the stable per-account key.
|
|
10
|
+
*
|
|
11
|
+
* `getAccount()` is async (it reads the MSAL cache), but the token manager and
|
|
12
|
+
* resolver need a scope key synchronously at call time. So the resolved id is
|
|
13
|
+
* memoized after sign-in and read back via {@link currentAccountId}. Only a real
|
|
14
|
+
* id is memoized — an unauthenticated lookup returns the `'default'` fallback
|
|
15
|
+
* WITHOUT caching, so the real id is still picked up once sign-in completes. The
|
|
16
|
+
* caller retries {@link resolveAccountId} on each tool call while still on the
|
|
17
|
+
* fallback (see index.ts), so a transient miss at init can't pin the fallback.
|
|
18
|
+
*
|
|
19
|
+
* Single-account assumption (v3): `getAccount()` returns the first MSAL cache
|
|
20
|
+
* account, matching how the access token is acquired, so scope and auth identity
|
|
21
|
+
* agree within a process. A multi-account cache is out of scope for v3 — pinning
|
|
22
|
+
* the active account across the whole auth layer is a separate change.
|
|
23
|
+
*/
|
|
24
|
+
import { getAccount } from './device-code-flow.js';
|
|
25
|
+
/** Scope key used before sign-in (or when the account can't be determined). */
|
|
26
|
+
export const DEFAULT_ACCOUNT_ID = 'default';
|
|
27
|
+
let cachedAccountId = null;
|
|
28
|
+
/**
|
|
29
|
+
* Resolves the signed-in account's stable id from MSAL, memoizing the first real
|
|
30
|
+
* value. Returns {@link DEFAULT_ACCOUNT_ID} (uncached) when unauthenticated.
|
|
31
|
+
*/
|
|
32
|
+
export async function resolveAccountId() {
|
|
33
|
+
if (cachedAccountId !== null) {
|
|
34
|
+
return cachedAccountId;
|
|
35
|
+
}
|
|
36
|
+
const account = await getAccount();
|
|
37
|
+
const homeAccountId = account?.homeAccountId;
|
|
38
|
+
if (homeAccountId != null && homeAccountId.length > 0) {
|
|
39
|
+
cachedAccountId = homeAccountId;
|
|
40
|
+
return cachedAccountId;
|
|
41
|
+
}
|
|
42
|
+
return DEFAULT_ACCOUNT_ID;
|
|
43
|
+
}
|
|
44
|
+
/**
|
|
45
|
+
* The last resolved account id without touching the MSAL cache. Returns
|
|
46
|
+
* {@link DEFAULT_ACCOUNT_ID} until {@link resolveAccountId} has populated it.
|
|
47
|
+
*/
|
|
48
|
+
export function currentAccountId() {
|
|
49
|
+
return cachedAccountId ?? DEFAULT_ACCOUNT_ID;
|
|
50
|
+
}
|
|
51
|
+
/** Clears the memo so a sign-out / account switch re-resolves the identity. */
|
|
52
|
+
export function resetAccountId() {
|
|
53
|
+
cachedAccountId = null;
|
|
54
|
+
}
|
|
55
|
+
//# sourceMappingURL=account-id.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"account-id.js","sourceRoot":"","sources":["../../../src/graph/auth/account-id.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH;;;;;;;;;;;;;;;;;;GAkBG;AAEH,OAAO,EAAE,UAAU,EAAE,MAAM,uBAAuB,CAAC;AAEnD,+EAA+E;AAC/E,MAAM,CAAC,MAAM,kBAAkB,GAAG,SAAS,CAAC;AAE5C,IAAI,eAAe,GAAkB,IAAI,CAAC;AAE1C;;;GAGG;AACH,MAAM,CAAC,KAAK,UAAU,gBAAgB;IACpC,IAAI,eAAe,KAAK,IAAI,EAAE,CAAC;QAC7B,OAAO,eAAe,CAAC;IACzB,CAAC;IACD,MAAM,OAAO,GAAG,MAAM,UAAU,EAAE,CAAC;IACnC,MAAM,aAAa,GAAG,OAAO,EAAE,aAAa,CAAC;IAC7C,IAAI,aAAa,IAAI,IAAI,IAAI,aAAa,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACtD,eAAe,GAAG,aAAa,CAAC;QAChC,OAAO,eAAe,CAAC;IACzB,CAAC;IACD,OAAO,kBAAkB,CAAC;AAC5B,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,gBAAgB;IAC9B,OAAO,eAAe,IAAI,kBAAkB,CAAC;AAC/C,CAAC;AAED,+EAA+E;AAC/E,MAAM,UAAU,cAAc;IAC5B,eAAe,GAAG,IAAI,CAAC;AACzB,CAAC"}
|
|
@@ -8,7 +8,7 @@
|
|
|
8
8
|
* Includes read/write permissions for mail and calendars to support
|
|
9
9
|
* future implementation of email sending and event management features.
|
|
10
10
|
*/
|
|
11
|
-
export declare const GRAPH_SCOPES: readonly ["Mail.ReadWrite", "Calendars.ReadWrite", "Contacts.ReadWrite", "Tasks.ReadWrite", "User.Read", "offline_access", "ChannelMessage.Read.All", "ChannelMessage.Send", "Channel.ReadBasic.All", "Team.ReadBasic.All", "Chat.ReadWrite", "ChatMessage.Send", "People.Read", "User.ReadBasic.All", "Presence.Read.All", "Group.Read.All", "Files.ReadWrite", "Sites.Read.All"];
|
|
11
|
+
export declare const GRAPH_SCOPES: readonly ["Mail.ReadWrite", "Calendars.ReadWrite", "Contacts.ReadWrite", "Tasks.ReadWrite", "User.Read", "offline_access", "Mail.Read.Shared", "Calendars.Read.Shared", "Files.Read.All", "ChannelMessage.Read.All", "ChannelMessage.Send", "Channel.ReadBasic.All", "Team.ReadBasic.All", "Chat.ReadWrite", "ChatMessage.Send", "People.Read", "User.ReadBasic.All", "Presence.Read.All", "Group.Read.All", "Files.ReadWrite", "Sites.Read.All", "Notes.ReadWrite"];
|
|
12
12
|
/**
|
|
13
13
|
* Microsoft Graph API configuration.
|
|
14
14
|
*/
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../../../src/graph/auth/config.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAuBH;;;;;GAKG;AACH,eAAO,MAAM,YAAY,
|
|
1
|
+
{"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../../../src/graph/auth/config.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAuBH;;;;;GAKG;AACH,eAAO,MAAM,YAAY,scAiCf,CAAC;AAEX;;GAEG;AACH,MAAM,WAAW,eAAe;IAC9B,uCAAuC;IACvC,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,8DAA8D;IAC9D,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,+BAA+B;IAC/B,QAAQ,CAAC,MAAM,EAAE,SAAS,MAAM,EAAE,CAAC;CACpC;AAED;;;;;GAKG;AACH,wBAAgB,eAAe,IAAI,eAAe,CAiBjD;AAED;;GAEG;AACH,wBAAgB,eAAe,CAAC,MAAM,EAAE,eAAe,GAAG,MAAM,CAE/D"}
|