@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
package/README.md
CHANGED
|
@@ -6,7 +6,7 @@
|
|
|
6
6
|
|
|
7
7
|
MCP server for Microsoft 365 -- mail, calendar, contacts, tasks, teams, people, and planner.
|
|
8
8
|
|
|
9
|
-
A [Model Context Protocol (MCP)](https://modelcontextprotocol.io/) server that provides **
|
|
9
|
+
A [Model Context Protocol (MCP)](https://modelcontextprotocol.io/) server that provides **229 tools** for full read/write access to Microsoft 365 via the Microsoft Graph API. Manage your emails, calendar events, contacts, tasks, OneNote notes, Teams channels and chats, people directory, and Planner boards directly through MCP.
|
|
10
10
|
|
|
11
11
|
## Features Overview
|
|
12
12
|
|
|
@@ -31,15 +31,15 @@ A [Model Context Protocol (MCP)](https://modelcontextprotocol.io/) server that p
|
|
|
31
31
|
| Checklist Items | 5 | Subtasks on To Do tasks |
|
|
32
32
|
| Linked Resources | 4 | Linked resources on To Do tasks |
|
|
33
33
|
| Task Attachments | 4 | File attachments on To Do tasks |
|
|
34
|
-
|
|
|
34
|
+
| OneNote | 6 | Browse notebooks/sections/pages, search, and create pages |
|
|
35
35
|
| Scheduling | 2 | Free/busy availability, meeting time suggestions |
|
|
36
36
|
| Teams -- Channels | 8 | Channel CRUD, team members |
|
|
37
37
|
| Teams -- Channel Messages | 6 | Read and send channel messages with replies |
|
|
38
38
|
| Teams -- Chats | 6 | 1:1 and group chats, send messages |
|
|
39
39
|
| People & Presence | 8 | People search, org chart, presence status |
|
|
40
|
-
| Planner |
|
|
41
|
-
|
|
|
42
|
-
| **Total** | **
|
|
40
|
+
| Planner | 18 | Plans, buckets, tasks, task details with ETag |
|
|
41
|
+
| Shared Mailbox | 8 | Read another user's mailbox, calendar, and OneDrive via delegate/shared access |
|
|
42
|
+
| **Total** | **229** | |
|
|
43
43
|
|
|
44
44
|
## Quick Start
|
|
45
45
|
|
|
@@ -49,13 +49,7 @@ A [Model Context Protocol (MCP)](https://modelcontextprotocol.io/) server that p
|
|
|
49
49
|
npx -y @jbctechsolutions/mcp-office365
|
|
50
50
|
```
|
|
51
51
|
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
To use the **AppleScript backend** (classic Outlook for Mac only, limited features), set the environment variable:
|
|
55
|
-
|
|
56
|
-
```bash
|
|
57
|
-
USE_APPLESCRIPT=1
|
|
58
|
-
```
|
|
52
|
+
The server connects to Microsoft 365 via the **Microsoft Graph API** (cross-platform, full read/write access).
|
|
59
53
|
|
|
60
54
|
### Pre-authenticate (optional)
|
|
61
55
|
|
|
@@ -74,9 +68,10 @@ tool surface:
|
|
|
74
68
|
| --- | --- |
|
|
75
69
|
| `--preset <names>` | Expose only the listed domains (comma-separated). Repeatable. Default (or `all`) exposes the full surface. |
|
|
76
70
|
| `--read-only` | Expose only read tools (`readOnlyHint: true`). All writes, `prepare_*`/`confirm_*`, and destructive tools are hidden; calling one returns a `READ_ONLY_MODE` error. Note: `download_*` and `get_*_photo` tools are excluded too — they write fetched bytes to local disk and so are not read-only. |
|
|
71
|
+
| `--confirm <mode>` | How a destructive `prepare_*` seeks confirmation. `token` (default) returns an approval token to pass to the matching `confirm_*` tool. `elicit` asks the user inline (MCP elicitation, ~60s) and, on approval, executes immediately; if the client can't elicit, the user cancels, or it times out, it falls back to the token flow. An explicit decline cancels and invalidates the token. |
|
|
77
72
|
|
|
78
73
|
Valid presets: `mail`, `calendar`, `contacts`, `tasks`, `notes`, `teams`,
|
|
79
|
-
`planner`, `files`, `sharepoint`, `excel`, `people`, `meetings` (plus `all`).
|
|
74
|
+
`planner`, `files`, `sharepoint`, `excel`, `people`, `meetings`, `shared` (plus `all`).
|
|
80
75
|
An unknown preset name fails startup with the valid list.
|
|
81
76
|
|
|
82
77
|
```bash
|
|
@@ -101,7 +96,6 @@ In a client config, add them to `args`:
|
|
|
101
96
|
|
|
102
97
|
Add to `~/Library/Application Support/Claude/claude_desktop_config.json`:
|
|
103
98
|
|
|
104
|
-
**Graph API backend (default):**
|
|
105
99
|
```json
|
|
106
100
|
{
|
|
107
101
|
"mcpServers": {
|
|
@@ -113,21 +107,6 @@ Add to `~/Library/Application Support/Claude/claude_desktop_config.json`:
|
|
|
113
107
|
}
|
|
114
108
|
```
|
|
115
109
|
|
|
116
|
-
**AppleScript backend** (macOS + classic Outlook only):
|
|
117
|
-
```json
|
|
118
|
-
{
|
|
119
|
-
"mcpServers": {
|
|
120
|
-
"office365": {
|
|
121
|
-
"command": "npx",
|
|
122
|
-
"args": ["-y", "@jbctechsolutions/mcp-office365"],
|
|
123
|
-
"env": {
|
|
124
|
-
"USE_APPLESCRIPT": "1"
|
|
125
|
-
}
|
|
126
|
-
}
|
|
127
|
-
}
|
|
128
|
-
}
|
|
129
|
-
```
|
|
130
|
-
|
|
131
110
|
### Claude Code configuration
|
|
132
111
|
|
|
133
112
|
**Option 1: Plugin (recommended)** -- add to `~/.claude/settings.json`:
|
|
@@ -203,16 +182,7 @@ For production, work accounts with conditional access, or full control over the
|
|
|
203
182
|
|
|
204
183
|
## Tool Reference
|
|
205
184
|
|
|
206
|
-
All
|
|
207
|
-
|
|
208
|
-
<details>
|
|
209
|
-
<summary><strong>Accounts (1)</strong></summary>
|
|
210
|
-
|
|
211
|
-
| Tool | Description |
|
|
212
|
-
|------|-------------|
|
|
213
|
-
| `list_accounts` | List all Exchange accounts configured in Outlook |
|
|
214
|
-
|
|
215
|
-
</details>
|
|
185
|
+
All 229 tools listed below.
|
|
216
186
|
|
|
217
187
|
<details>
|
|
218
188
|
<summary><strong>Mail -- Reading (9)</strong></summary>
|
|
@@ -487,15 +457,16 @@ All 181 tools listed below. Tools marked *(Graph API)* require `USE_GRAPH_API=1`
|
|
|
487
457
|
</details>
|
|
488
458
|
|
|
489
459
|
<details>
|
|
490
|
-
<summary><strong>
|
|
460
|
+
<summary><strong>OneNote (6)</strong> <em>(Graph API)</em></summary>
|
|
491
461
|
|
|
492
462
|
| Tool | Description |
|
|
493
463
|
|------|-------------|
|
|
494
|
-
| `
|
|
495
|
-
| `
|
|
496
|
-
| `
|
|
497
|
-
|
|
498
|
-
|
|
464
|
+
| `list_notebooks` | List OneNote notebooks for the current user |
|
|
465
|
+
| `list_note_sections` | List OneNote sections, optionally scoped to a notebook |
|
|
466
|
+
| `list_note_pages` | List OneNote pages, optionally scoped to a section |
|
|
467
|
+
| `get_note_page` | Get a OneNote page's metadata and HTML content |
|
|
468
|
+
| `search_note_pages` | Search OneNote pages by keyword |
|
|
469
|
+
| `create_note_page` | Create a new OneNote page in a section |
|
|
499
470
|
|
|
500
471
|
</details>
|
|
501
472
|
|
|
@@ -580,7 +551,7 @@ All 181 tools listed below. Tools marked *(Graph API)* require `USE_GRAPH_API=1`
|
|
|
580
551
|
</details>
|
|
581
552
|
|
|
582
553
|
<details>
|
|
583
|
-
<summary><strong>Planner (
|
|
554
|
+
<summary><strong>Planner (18)</strong> <em>(Graph API)</em></summary>
|
|
584
555
|
|
|
585
556
|
| Tool | Description |
|
|
586
557
|
|------|-------------|
|
|
@@ -594,6 +565,7 @@ All 181 tools listed below. Tools marked *(Graph API)* require `USE_GRAPH_API=1`
|
|
|
594
565
|
| `prepare_delete_bucket` | Prepare to delete a Planner bucket (two-phase) |
|
|
595
566
|
| `confirm_delete_bucket` | Confirm Planner bucket deletion |
|
|
596
567
|
| `list_planner_tasks` | List all tasks in a Planner plan |
|
|
568
|
+
| `list_my_planner_tasks` | List all Planner tasks assigned to the signed-in user across every plan |
|
|
597
569
|
| `get_planner_task` | Get details for a specific Planner task |
|
|
598
570
|
| `create_planner_task` | Create a new task in a Planner plan |
|
|
599
571
|
| `update_planner_task` | Update a Planner task |
|
|
@@ -604,14 +576,27 @@ All 181 tools listed below. Tools marked *(Graph API)* require `USE_GRAPH_API=1`
|
|
|
604
576
|
|
|
605
577
|
</details>
|
|
606
578
|
|
|
607
|
-
|
|
579
|
+
<details>
|
|
580
|
+
<summary><strong>Shared Mailbox (8)</strong> <em>(Graph API)</em></summary>
|
|
608
581
|
|
|
609
|
-
|
|
582
|
+
Read another user's mailbox, calendar, or OneDrive via `/users/{upn}/...`, relying on the signed-in user having delegate/shared access (`Mail.Read.Shared` / `Calendars.Read.Shared` / `Files.Read.All`). Read-only. These return **raw Graph ids** (not durable tokens, which are scoped to your own `/me` mailbox); pass the `mailbox` plus the raw id back to the matching `get_*` tool.
|
|
610
583
|
|
|
611
|
-
|
|
584
|
+
| Tool | Description |
|
|
585
|
+
| --- | --- |
|
|
586
|
+
| `list_shared_mailbox_folders` | List mail folders in a shared/delegated mailbox |
|
|
587
|
+
| `list_shared_mailbox_emails` | List emails in a shared/delegated mailbox (optionally by folder) |
|
|
588
|
+
| `get_shared_mailbox_email` | Get a single email from a shared/delegated mailbox by raw Graph id |
|
|
589
|
+
| `search_shared_mailbox_emails` | Full-text search a shared/delegated mailbox |
|
|
590
|
+
| `list_shared_calendar_events` | List events from another user's calendar (optionally within a window) |
|
|
591
|
+
| `get_shared_calendar_event` | Get a single event from another user's calendar by raw Graph id |
|
|
592
|
+
| `list_shared_user_drive_items` | List items in another user's OneDrive (root or a folder) |
|
|
593
|
+
| `search_shared_user_drive_items` | Search another user's OneDrive |
|
|
612
594
|
|
|
613
|
-
|
|
614
|
-
|
|
595
|
+
</details>
|
|
596
|
+
|
|
597
|
+
## Architecture
|
|
598
|
+
|
|
599
|
+
The server connects to Microsoft 365 cloud services via the **Microsoft Graph API**. Full read/write access across all 229 tools. No Outlook installation required. Works on macOS, Windows, and Linux.
|
|
615
600
|
|
|
616
601
|
### Two-Phase Approval
|
|
617
602
|
|
|
@@ -619,7 +604,7 @@ Destructive operations (delete, send, move, forward, etc.) use a prepare/confirm
|
|
|
619
604
|
|
|
620
605
|
### ID Caching
|
|
621
606
|
|
|
622
|
-
The server maintains an internal ID mapping layer
|
|
607
|
+
The server maintains an internal ID mapping layer that assigns stable, durable identifier tokens for Graph API resources so tool callers do not need to track raw Graph object IDs.
|
|
623
608
|
|
|
624
609
|
### ETag Caching
|
|
625
610
|
|
|
@@ -629,8 +614,7 @@ Planner resources use ETag-based concurrency control. The server caches ETags fr
|
|
|
629
614
|
|
|
630
615
|
```
|
|
631
616
|
src/
|
|
632
|
-
|
|
633
|
-
graph/ Microsoft Graph API integration (default)
|
|
617
|
+
graph/ Microsoft Graph API integration
|
|
634
618
|
auth/ MSAL authentication, device code flow, token cache
|
|
635
619
|
client/ Graph client wrapper with response caching
|
|
636
620
|
mappers/ Graph-to-internal type mappers
|
|
@@ -641,7 +625,7 @@ src/
|
|
|
641
625
|
|
|
642
626
|
## Required Graph API Permissions
|
|
643
627
|
|
|
644
|
-
These delegated permissions are requested
|
|
628
|
+
These delegated permissions are requested via Microsoft Graph:
|
|
645
629
|
|
|
646
630
|
| Permission | Purpose |
|
|
647
631
|
|------------|---------|
|
|
@@ -661,24 +645,17 @@ These delegated permissions are requested when using the Graph API backend:
|
|
|
661
645
|
| `User.ReadBasic.All` | Read basic user profiles and photos |
|
|
662
646
|
| `Presence.Read.All` | Read user presence/availability |
|
|
663
647
|
| `Group.Read.All` | Read Microsoft 365 groups (for Planner) |
|
|
648
|
+
| `Mail.Read.Shared` | Read mail in shared/delegated mailboxes |
|
|
649
|
+
| `Calendars.Read.Shared` | Read shared/delegated calendars |
|
|
650
|
+
| `Files.Read.All` | Read another user's OneDrive files (shared/delegate access) |
|
|
664
651
|
|
|
665
652
|
## Environment Variables
|
|
666
653
|
|
|
667
654
|
| Variable | Description | Default |
|
|
668
655
|
|----------|-------------|---------|
|
|
669
|
-
| `USE_APPLESCRIPT` | Set to `1` or `true` for legacy AppleScript backend | (unset -- uses Graph API) |
|
|
670
656
|
| `OUTLOOK_MCP_CLIENT_ID` | Override the embedded Azure AD client ID | (embedded) |
|
|
671
657
|
| `OUTLOOK_MCP_TENANT_ID` | Azure AD tenant ID | `common` |
|
|
672
658
|
|
|
673
|
-
## Known Limitations
|
|
674
|
-
|
|
675
|
-
**AppleScript backend:**
|
|
676
|
-
- Google accounts in Outlook are not accessible (macOS/Outlook limitation). Use IMAP configuration or the Graph API backend instead.
|
|
677
|
-
- Write operations limited to calendar events and email sending. All other writes require Graph API.
|
|
678
|
-
|
|
679
|
-
**Graph API backend:**
|
|
680
|
-
- Outlook Notes are not available (Graph API does not expose them). Use AppleScript backend for notes.
|
|
681
|
-
|
|
682
659
|
## Contributing
|
|
683
660
|
|
|
684
661
|
We welcome contributions. Please see our [Contributing Guide](CONTRIBUTING.md) for details.
|
package/dist/approval/hash.d.ts
CHANGED
|
@@ -7,9 +7,9 @@
|
|
|
7
7
|
* Used to detect if the email changed between prepare and confirm.
|
|
8
8
|
*/
|
|
9
9
|
export declare function hashEmailForApproval(email: {
|
|
10
|
-
id:
|
|
10
|
+
id: string;
|
|
11
11
|
subject: string | null;
|
|
12
|
-
folderId:
|
|
12
|
+
folderId: string;
|
|
13
13
|
timeReceived: number | null;
|
|
14
14
|
}): string;
|
|
15
15
|
/**
|
|
@@ -17,7 +17,7 @@ export declare function hashEmailForApproval(email: {
|
|
|
17
17
|
* Used to detect if the folder changed between prepare and confirm.
|
|
18
18
|
*/
|
|
19
19
|
export declare function hashFolderForApproval(folder: {
|
|
20
|
-
id:
|
|
20
|
+
id: string;
|
|
21
21
|
name: string | null;
|
|
22
22
|
messageCount: number;
|
|
23
23
|
}): string;
|
|
@@ -26,7 +26,7 @@ export declare function hashFolderForApproval(folder: {
|
|
|
26
26
|
* Used to detect if the draft changed between prepare and confirm.
|
|
27
27
|
*/
|
|
28
28
|
export declare function hashDraftForSend(draft: {
|
|
29
|
-
id:
|
|
29
|
+
id: string;
|
|
30
30
|
subject: string | null;
|
|
31
31
|
recipientCount: number;
|
|
32
32
|
}): string;
|
|
@@ -45,7 +45,7 @@ export declare function hashDirectSendForApproval(params: {
|
|
|
45
45
|
* Captures the original message ID, comment length, and reply-all flag.
|
|
46
46
|
*/
|
|
47
47
|
export declare function hashReplyForApproval(params: {
|
|
48
|
-
originalId:
|
|
48
|
+
originalId: string;
|
|
49
49
|
commentLength: number;
|
|
50
50
|
replyAll: boolean;
|
|
51
51
|
}): string;
|
|
@@ -54,7 +54,7 @@ export declare function hashReplyForApproval(params: {
|
|
|
54
54
|
* Captures the original message ID and the number of forward recipients.
|
|
55
55
|
*/
|
|
56
56
|
export declare function hashForwardForApproval(params: {
|
|
57
|
-
originalId:
|
|
57
|
+
originalId: string;
|
|
58
58
|
recipientCount: number;
|
|
59
59
|
}): string;
|
|
60
60
|
/**
|
|
@@ -62,7 +62,7 @@ export declare function hashForwardForApproval(params: {
|
|
|
62
62
|
* Used to detect if the event changed between prepare and confirm.
|
|
63
63
|
*/
|
|
64
64
|
export declare function hashEventForApproval(event: {
|
|
65
|
-
id:
|
|
65
|
+
id: string;
|
|
66
66
|
subject: string | null;
|
|
67
67
|
startDateTime: string | null;
|
|
68
68
|
}): string;
|
|
@@ -71,7 +71,7 @@ export declare function hashEventForApproval(event: {
|
|
|
71
71
|
* Used to detect if the contact changed between prepare and confirm.
|
|
72
72
|
*/
|
|
73
73
|
export declare function hashContactForApproval(contact: {
|
|
74
|
-
id:
|
|
74
|
+
id: string;
|
|
75
75
|
displayName: string | null;
|
|
76
76
|
emailAddress: string | null;
|
|
77
77
|
}): string;
|
|
@@ -10,8 +10,12 @@ export interface ApprovalTokenManagerOptions {
|
|
|
10
10
|
ttlMs?: number;
|
|
11
11
|
/** Durable store; omit for in-memory (tests / degraded mode). */
|
|
12
12
|
store?: StateStore;
|
|
13
|
-
/**
|
|
14
|
-
|
|
13
|
+
/**
|
|
14
|
+
* Account stamp for stored tokens (D7). May be a function, since the signed-in
|
|
15
|
+
* account (MSAL `homeAccountId`) is only known after auth — later than when
|
|
16
|
+
* this manager is constructed — and is resolved lazily at each token op.
|
|
17
|
+
*/
|
|
18
|
+
accountId?: string | (() => string);
|
|
15
19
|
/** Clock, for deterministic tests. */
|
|
16
20
|
now?: () => number;
|
|
17
21
|
}
|
|
@@ -19,16 +23,18 @@ export declare class ApprovalTokenManager {
|
|
|
19
23
|
private readonly tokens;
|
|
20
24
|
private readonly ttlMs;
|
|
21
25
|
private readonly store;
|
|
22
|
-
private readonly
|
|
26
|
+
private readonly resolveAccountId;
|
|
23
27
|
private readonly now;
|
|
24
28
|
constructor(options?: ApprovalTokenManagerOptions | number);
|
|
29
|
+
/** The account scope for store ops, resolved fresh each call (D7). */
|
|
30
|
+
private get accountId();
|
|
25
31
|
/**
|
|
26
32
|
* Generates a new approval token for a destructive operation.
|
|
27
33
|
*/
|
|
28
34
|
generateToken(params: {
|
|
29
35
|
operation: OperationType;
|
|
30
36
|
targetType: TargetType;
|
|
31
|
-
targetId:
|
|
37
|
+
targetId: string;
|
|
32
38
|
targetHash: string;
|
|
33
39
|
metadata?: Record<string, unknown>;
|
|
34
40
|
}): ApprovalToken;
|
|
@@ -41,14 +47,14 @@ export declare class ApprovalTokenManager {
|
|
|
41
47
|
* Validates a token without consuming it. Checks existence, prior redemption,
|
|
42
48
|
* expiry, operation match, and target match.
|
|
43
49
|
*/
|
|
44
|
-
validateToken(tokenId: string, operation: OperationType, targetId:
|
|
50
|
+
validateToken(tokenId: string, operation: OperationType, targetId: string): ValidationResult;
|
|
45
51
|
private check;
|
|
46
52
|
/**
|
|
47
53
|
* Validates and consumes a token (one-time use). Durable stores use an atomic
|
|
48
54
|
* guarded consume so only one caller — across processes sharing the db — can
|
|
49
55
|
* redeem it; a losing/repeat caller gets `ALREADY_CONSUMED` (D8).
|
|
50
56
|
*/
|
|
51
|
-
consumeToken(tokenId: string, operation: OperationType, targetId:
|
|
57
|
+
consumeToken(tokenId: string, operation: OperationType, targetId: string): ValidationResult;
|
|
52
58
|
/**
|
|
53
59
|
* Removes expired tokens from the in-memory store. Durable stores purge on
|
|
54
60
|
* boot (90-day retention), so this is a no-op there.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"token-manager.d.ts","sourceRoot":"","sources":["../../src/approval/token-manager.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAeH,OAAO,KAAK,EAAE,UAAU,EAAoB,MAAM,mBAAmB,CAAC;AACtE,OAAO,KAAK,EAAE,aAAa,EAAE,UAAU,EAAE,aAAa,EAAE,gBAAgB,EAAE,MAAM,YAAY,CAAC;AAa7F,gDAAgD;AAChD,MAAM,WAAW,2BAA2B;IAC1C,oCAAoC;IACpC,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,iEAAiE;IACjE,KAAK,CAAC,EAAE,UAAU,CAAC;IACnB
|
|
1
|
+
{"version":3,"file":"token-manager.d.ts","sourceRoot":"","sources":["../../src/approval/token-manager.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAeH,OAAO,KAAK,EAAE,UAAU,EAAoB,MAAM,mBAAmB,CAAC;AACtE,OAAO,KAAK,EAAE,aAAa,EAAE,UAAU,EAAE,aAAa,EAAE,gBAAgB,EAAE,MAAM,YAAY,CAAC;AAa7F,gDAAgD;AAChD,MAAM,WAAW,2BAA2B;IAC1C,oCAAoC;IACpC,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,iEAAiE;IACjE,KAAK,CAAC,EAAE,UAAU,CAAC;IACnB;;;;OAIG;IACH,SAAS,CAAC,EAAE,MAAM,GAAG,CAAC,MAAM,MAAM,CAAC,CAAC;IACpC,sCAAsC;IACtC,GAAG,CAAC,EAAE,MAAM,MAAM,CAAC;CACpB;AAED,qBAAa,oBAAoB;IAC/B,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAoC;IAC3D,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAS;IAC/B,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAyB;IAC/C,OAAO,CAAC,QAAQ,CAAC,gBAAgB,CAAe;IAChD,OAAO,CAAC,QAAQ,CAAC,GAAG,CAAe;gBAEvB,OAAO,GAAE,2BAA2B,GAAG,MAAW;IAU9D,sEAAsE;IACtE,OAAO,KAAK,SAAS,GAEpB;IAED;;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;IAsCjB;;;OAGG;IACH,WAAW,CAAC,OAAO,EAAE,MAAM,GAAG,aAAa,GAAG,SAAS;IAQvD;;;OAGG;IACH,aAAa,CAAC,OAAO,EAAE,MAAM,EAAE,SAAS,EAAE,aAAa,EAAE,QAAQ,EAAE,MAAM,GAAG,gBAAgB;IAyB5F,OAAO,CAAC,KAAK;IAeb;;;;OAIG;IACH,YAAY,CAAC,OAAO,EAAE,MAAM,EAAE,SAAS,EAAE,aAAa,EAAE,QAAQ,EAAE,MAAM,GAAG,gBAAgB;IA4B3F;;;OAGG;IACH,oBAAoB,IAAI,IAAI;IAY5B;;;OAGG;IACH,IAAI,IAAI,IAAI,MAAM,CAEjB;CACF"}
|
|
@@ -20,16 +20,21 @@ export class ApprovalTokenManager {
|
|
|
20
20
|
tokens = new Map();
|
|
21
21
|
ttlMs;
|
|
22
22
|
store;
|
|
23
|
-
|
|
23
|
+
resolveAccountId;
|
|
24
24
|
now;
|
|
25
25
|
constructor(options = {}) {
|
|
26
26
|
// Back-compat: some call sites/tests pass a bare ttlMs number.
|
|
27
27
|
const opts = typeof options === 'number' ? { ttlMs: options } : options;
|
|
28
28
|
this.ttlMs = opts.ttlMs ?? DEFAULT_TTL_MS;
|
|
29
29
|
this.store = opts.store;
|
|
30
|
-
|
|
30
|
+
const account = opts.accountId ?? 'default';
|
|
31
|
+
this.resolveAccountId = typeof account === 'function' ? account : (() => account);
|
|
31
32
|
this.now = opts.now ?? (() => Date.now());
|
|
32
33
|
}
|
|
34
|
+
/** The account scope for store ops, resolved fresh each call (D7). */
|
|
35
|
+
get accountId() {
|
|
36
|
+
return this.resolveAccountId();
|
|
37
|
+
}
|
|
33
38
|
/**
|
|
34
39
|
* Generates a new approval token for a destructive operation.
|
|
35
40
|
*/
|
|
@@ -189,7 +194,10 @@ function rowToToken(row) {
|
|
|
189
194
|
tokenId: row.token,
|
|
190
195
|
operation: row.action,
|
|
191
196
|
targetType: target.targetType,
|
|
192
|
-
|
|
197
|
+
// Coerce to string: a token persisted by a pre-v4 build may carry a numeric
|
|
198
|
+
// targetId (e.g. the send_email/upload_file sentinel `0`), which would else
|
|
199
|
+
// fail the strict `!==` target check against v4's string ids within the TTL.
|
|
200
|
+
targetId: String(target.targetId),
|
|
193
201
|
targetHash: target.targetHash ?? row.contentHash ?? '',
|
|
194
202
|
createdAt: row.createdAt,
|
|
195
203
|
expiresAt: row.expiresAt,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"token-manager.js","sourceRoot":"","sources":["../../src/approval/token-manager.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH;;;;;;;;;;GAUG;AAEH,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AAIzC,MAAM,cAAc,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,IAAI,CAAC,CAAC,8BAA8B;AAC1E,MAAM,iBAAiB,GAAG,GAAG,CAAC;
|
|
1
|
+
{"version":3,"file":"token-manager.js","sourceRoot":"","sources":["../../src/approval/token-manager.ts"],"names":[],"mappings":"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"}
|
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' | 'send_draft' | 'send_email' | 'reply_email' | 'forward_email' | 'delete_event' | 'delete_contact' | 'delete_task' | 'delete_mail_rule' | 'delete_task_list' | 'delete_contact_folder' | 'delete_category' | 'delete_focused_override' | 'delete_calendar_permission' | 'delete_channel' | 'send_channel_message' | 'reply_channel_message' | 'send_chat_message' | 'delete_checklist_item' | 'delete_linked_resource' | 'delete_task_attachment' | 'delete_bucket' | 'delete_planner_task' | 'add_message_reaction' | 'update_excel_range' | 'upload_file' | 'delete_drive_item';
|
|
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' | 'delete_mail_rule' | 'delete_task_list' | 'delete_contact_folder' | 'delete_category' | 'delete_focused_override' | 'delete_calendar_permission' | 'delete_channel' | 'send_channel_message' | 'reply_channel_message' | 'send_chat_message' | 'delete_checklist_item' | 'delete_linked_resource' | 'delete_task_attachment' | 'delete_bucket' | 'delete_planner_task' | 'add_message_reaction' | 'update_excel_range' | 'upload_file' | 'delete_drive_item' | 'delete_list_item';
|
|
15
15
|
/**
|
|
16
16
|
* Target resource types.
|
|
17
17
|
*/
|
|
18
|
-
export type TargetType = 'email' | 'folder' | 'event' | 'contact' | 'task' | 'task_list' | 'rule' | 'contact_folder' | 'category' | 'focused_override' | 'calendar_permission' | 'channel' | 'channel_message' | 'chat_message' | 'checklist_item' | 'linked_resource' | 'task_attachment' | 'bucket' | 'planner_task' | 'message_reaction' | 'excel_range' | 'drive_item';
|
|
18
|
+
export type TargetType = 'email' | 'folder' | 'event' | 'contact' | 'task' | 'task_list' | 'rule' | 'contact_folder' | 'category' | 'focused_override' | 'calendar_permission' | 'channel' | 'channel_message' | 'chat_message' | 'checklist_item' | 'linked_resource' | 'task_attachment' | 'bucket' | 'planner_task' | 'message_reaction' | 'excel_range' | 'drive_item' | 'list_item';
|
|
19
19
|
/**
|
|
20
20
|
* An approval token authorizing a single destructive operation.
|
|
21
21
|
*/
|
|
@@ -23,7 +23,11 @@ export interface ApprovalToken {
|
|
|
23
23
|
readonly tokenId: string;
|
|
24
24
|
readonly operation: OperationType;
|
|
25
25
|
readonly targetType: TargetType;
|
|
26
|
-
|
|
26
|
+
/**
|
|
27
|
+
* Seal identifying the target. Numeric for legacy/AppleScript ids; a durable
|
|
28
|
+
* string token (e.g. `ct_…`) for Graph entities migrated to durable IDs (U5).
|
|
29
|
+
*/
|
|
30
|
+
readonly targetId: string;
|
|
27
31
|
readonly targetHash: string;
|
|
28
32
|
readonly createdAt: number;
|
|
29
33
|
readonly expiresAt: number;
|
|
@@ -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,GACnB,YAAY,GACZ,YAAY,GACZ,aAAa,GACb,eAAe,GACf,cAAc,GACd,gBAAgB,GAChB,aAAa,GACb,kBAAkB,GAClB,kBAAkB,GAClB,uBAAuB,GACvB,iBAAiB,GACjB,yBAAyB,GACzB,4BAA4B,GAC5B,gBAAgB,GAChB,sBAAsB,GACtB,uBAAuB,GACvB,mBAAmB,GACnB,uBAAuB,GACvB,wBAAwB,GACxB,wBAAwB,GACxB,eAAe,GACf,qBAAqB,GACrB,sBAAsB,GACtB,oBAAoB,GACpB,aAAa,GACb,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,GACb,kBAAkB,GAClB,kBAAkB,GAClB,uBAAuB,GACvB,iBAAiB,GACjB,yBAAyB,GACzB,4BAA4B,GAC5B,gBAAgB,GAChB,sBAAsB,GACtB,uBAAuB,GACvB,mBAAmB,GACnB,uBAAuB,GACvB,wBAAwB,GACxB,wBAAwB,GACxB,eAAe,GACf,qBAAqB,GACrB,sBAAsB,GACtB,oBAAoB,GACpB,aAAa,GACb,mBAAmB,GACnB,kBAAkB,CAAC;AAEvB;;GAEG;AACH,MAAM,MAAM,UAAU,GAAG,OAAO,GAAG,QAAQ,GAAG,OAAO,GAAG,SAAS,GAAG,MAAM,GAAG,WAAW,GAAG,MAAM,GAAG,gBAAgB,GAAG,UAAU,GAAG,kBAAkB,GAAG,qBAAqB,GAAG,SAAS,GAAG,iBAAiB,GAAG,cAAc,GAAG,gBAAgB,GAAG,iBAAiB,GAAG,iBAAiB,GAAG,QAAQ,GAAG,cAAc,GAAG,kBAAkB,GAAG,aAAa,GAAG,YAAY,GAAG,WAAW,CAAC;AAMzX;;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;;;OAGG;IACH,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"}
|
package/dist/cli.d.ts
CHANGED
|
@@ -9,12 +9,16 @@ export interface CliCommand {
|
|
|
9
9
|
}
|
|
10
10
|
/** Valid `--preset` names, mirroring the domain modules. */
|
|
11
11
|
export declare const VALID_PRESETS: readonly Preset[];
|
|
12
|
+
/** How a destructive prepare confirms (U11): two-phase token, or inline elicit. */
|
|
13
|
+
export type ConfirmMode = 'token' | 'elicit';
|
|
12
14
|
/** Server-mode CLI options parsed from argv (U10). */
|
|
13
15
|
export interface ServerCliOptions {
|
|
14
16
|
/** Presets to include; omitted means the full surface (`all`). */
|
|
15
17
|
readonly presets?: readonly Preset[];
|
|
16
18
|
/** When true, only non-destructive tools are exposed. */
|
|
17
19
|
readonly readOnly: boolean;
|
|
20
|
+
/** Confirmation mode for destructive prepares (default 'token'). */
|
|
21
|
+
readonly confirmMode: ConfirmMode;
|
|
18
22
|
}
|
|
19
23
|
/**
|
|
20
24
|
* Parses server-mode flags (`--preset <names>`, `--read-only`) from argv.
|
package/dist/cli.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cli.d.ts","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAmBH,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,qBAAqB,CAAC;AAElD,MAAM,WAAW,UAAU;IACzB,OAAO,EAAE,MAAM,CAAC;IAChB,KAAK,EAAE,MAAM,EAAE,CAAC;CACjB;AAED,4DAA4D;AAC5D,eAAO,MAAM,aAAa,EAAE,SAAS,MAAM,EAa1C,CAAC;AAEF,sDAAsD;AACtD,MAAM,WAAW,gBAAgB;IAC/B,kEAAkE;IAClE,QAAQ,CAAC,OAAO,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;IACrC,yDAAyD;IACzD,QAAQ,CAAC,QAAQ,EAAE,OAAO,CAAC;
|
|
1
|
+
{"version":3,"file":"cli.d.ts","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAmBH,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,qBAAqB,CAAC;AAElD,MAAM,WAAW,UAAU;IACzB,OAAO,EAAE,MAAM,CAAC;IAChB,KAAK,EAAE,MAAM,EAAE,CAAC;CACjB;AAED,4DAA4D;AAC5D,eAAO,MAAM,aAAa,EAAE,SAAS,MAAM,EAa1C,CAAC;AAEF,mFAAmF;AACnF,MAAM,MAAM,WAAW,GAAG,OAAO,GAAG,QAAQ,CAAC;AAE7C,sDAAsD;AACtD,MAAM,WAAW,gBAAgB;IAC/B,kEAAkE;IAClE,QAAQ,CAAC,OAAO,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;IACrC,yDAAyD;IACzD,QAAQ,CAAC,QAAQ,EAAE,OAAO,CAAC;IAC3B,oEAAoE;IACpE,QAAQ,CAAC,WAAW,EAAE,WAAW,CAAC;CACnC;AAED;;;;;GAKG;AACH,wBAAgB,kBAAkB,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,gBAAgB,CAoDnE;AAgCD;;;GAGG;AACH,wBAAgB,eAAe,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,UAAU,GAAG,IAAI,CASjE;AAED,KAAK,OAAO,GAAG,CAAC,OAAO,EAAE,MAAM,KAAK,IAAI,CAAC;AAEzC;;;;;;GAMG;AACH,wBAAsB,iBAAiB,CACrC,KAAK,GAAE,MAAM,EAAO,EACpB,KAAK,GAAE,OAAqB,GAC3B,OAAO,CAAC,MAAM,CAAC,CAcjB;AA2FD;;;;GAIG;AACH,wBAAgB,eAAe,CAAC,CAAC,EAAE,EAAE,EAAE,MAAM,OAAO,CAAC,CAAC,CAAC,GAAG,MAAM,OAAO,CAAC,CAAC,CAAC,CAczE"}
|
package/dist/cli.js
CHANGED
|
@@ -36,6 +36,7 @@ export const VALID_PRESETS = [
|
|
|
36
36
|
export function parseServerOptions(args) {
|
|
37
37
|
const presetNames = [];
|
|
38
38
|
let readOnly = false;
|
|
39
|
+
let confirmMode = 'token';
|
|
39
40
|
for (let i = 0; i < args.length; i++) {
|
|
40
41
|
const arg = args[i];
|
|
41
42
|
if (arg == null)
|
|
@@ -43,6 +44,13 @@ export function parseServerOptions(args) {
|
|
|
43
44
|
if (arg === '--read-only') {
|
|
44
45
|
readOnly = true;
|
|
45
46
|
}
|
|
47
|
+
else if (arg === '--confirm') {
|
|
48
|
+
confirmMode = requireConfirmMode(args[i + 1]);
|
|
49
|
+
i++;
|
|
50
|
+
}
|
|
51
|
+
else if (arg.startsWith('--confirm=')) {
|
|
52
|
+
confirmMode = requireConfirmMode(arg.slice('--confirm='.length));
|
|
53
|
+
}
|
|
46
54
|
else if (arg === '--preset') {
|
|
47
55
|
const value = args[i + 1];
|
|
48
56
|
if (value == null || value.startsWith('--')) {
|
|
@@ -58,7 +66,7 @@ export function parseServerOptions(args) {
|
|
|
58
66
|
}
|
|
59
67
|
// No --preset flag at all → full surface.
|
|
60
68
|
if (presetNames.length === 0) {
|
|
61
|
-
return { readOnly };
|
|
69
|
+
return { readOnly, confirmMode };
|
|
62
70
|
}
|
|
63
71
|
// Validate every name (the `all` keyword excepted) BEFORE honoring `all`, so a
|
|
64
72
|
// typo mixed with `all` (e.g. `--preset all,mial`) fails loudly rather than
|
|
@@ -70,13 +78,20 @@ export function parseServerOptions(args) {
|
|
|
70
78
|
}
|
|
71
79
|
// `all` (alone or mixed with valid names) exposes the full surface.
|
|
72
80
|
if (presetNames.includes('all')) {
|
|
73
|
-
return { readOnly };
|
|
81
|
+
return { readOnly, confirmMode };
|
|
74
82
|
}
|
|
75
|
-
return { readOnly, presets: presetNames };
|
|
83
|
+
return { readOnly, confirmMode, presets: presetNames };
|
|
76
84
|
}
|
|
77
85
|
function missingPresetValue() {
|
|
78
86
|
return new Error('--preset requires a comma-separated list of preset names.');
|
|
79
87
|
}
|
|
88
|
+
/** Validates the `--confirm` value, failing loudly on anything but token|elicit. */
|
|
89
|
+
function requireConfirmMode(value) {
|
|
90
|
+
if (value === 'token' || value === 'elicit') {
|
|
91
|
+
return value;
|
|
92
|
+
}
|
|
93
|
+
throw new Error(`--confirm requires one of: token, elicit. Got: ${value ?? '(missing)'}.`);
|
|
94
|
+
}
|
|
80
95
|
/** Splits a preset value and rejects an empty/whitespace-only list. */
|
|
81
96
|
function requirePresetNames(value) {
|
|
82
97
|
const names = splitPresetList(value);
|
package/dist/cli.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH;;;;;;;;GAQG;AAEH,OAAO,EACL,cAAc,EACd,eAAe,EACf,UAAU,EACV,OAAO,EACP,iBAAiB,GAClB,MAAM,kBAAkB,CAAC;AAQ1B,4DAA4D;AAC5D,MAAM,CAAC,MAAM,aAAa,GAAsB;IAC9C,MAAM;IACN,UAAU;IACV,UAAU;IACV,OAAO;IACP,OAAO;IACP,OAAO;IACP,SAAS;IACT,OAAO;IACP,YAAY;IACZ,OAAO;IACP,QAAQ;IACR,UAAU;CACX,CAAC;
|
|
1
|
+
{"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":"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"}
|