@jbctechsolutions/mcp-office365 2.5.1 → 3.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +32 -0
- package/dist/approval/token-manager.d.ts +28 -16
- package/dist/approval/token-manager.d.ts.map +1 -1
- package/dist/approval/token-manager.js +125 -37
- package/dist/approval/token-manager.js.map +1 -1
- package/dist/cli.d.ts +17 -0
- package/dist/cli.d.ts.map +1 -1
- package/dist/cli.js +85 -2
- package/dist/cli.js.map +1 -1
- 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 +5 -1
- package/dist/graph/auth/config.js.map +1 -1
- package/dist/graph/auth/device-code-flow.d.ts +3 -1
- package/dist/graph/auth/device-code-flow.d.ts.map +1 -1
- package/dist/graph/auth/device-code-flow.js +42 -14
- package/dist/graph/auth/device-code-flow.js.map +1 -1
- package/dist/graph/auth/token-cache.js +2 -2
- package/dist/graph/auth/token-cache.js.map +1 -1
- package/dist/graph/client/graph-client.d.ts +36 -8
- package/dist/graph/client/graph-client.d.ts.map +1 -1
- package/dist/graph/client/graph-client.js +128 -36
- package/dist/graph/client/graph-client.js.map +1 -1
- package/dist/graph/repository.d.ts +9 -6
- package/dist/graph/repository.d.ts.map +1 -1
- package/dist/graph/repository.js +63 -66
- package/dist/graph/repository.js.map +1 -1
- package/dist/ids/mint.d.ts +31 -0
- package/dist/ids/mint.d.ts.map +1 -0
- package/dist/ids/mint.js +36 -0
- package/dist/ids/mint.js.map +1 -0
- package/dist/ids/resolver.d.ts +30 -0
- package/dist/ids/resolver.d.ts.map +1 -0
- package/dist/ids/resolver.js +37 -0
- package/dist/ids/resolver.js.map +1 -0
- package/dist/ids/token.d.ts +56 -0
- package/dist/ids/token.d.ts.map +1 -0
- package/dist/ids/token.js +186 -0
- package/dist/ids/token.js.map +1 -0
- package/dist/index.d.ts +7 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +226 -5859
- package/dist/index.js.map +1 -1
- package/dist/registry/all-tools.d.ts +14 -0
- package/dist/registry/all-tools.d.ts.map +1 -0
- package/dist/registry/all-tools.js +64 -0
- package/dist/registry/all-tools.js.map +1 -0
- package/dist/registry/context.d.ts +25 -0
- package/dist/registry/context.d.ts.map +1 -0
- package/dist/registry/context.js +31 -0
- package/dist/registry/context.js.map +1 -0
- package/dist/registry/define-tool.d.ts +15 -0
- package/dist/registry/define-tool.d.ts.map +1 -0
- package/dist/registry/define-tool.js +8 -0
- package/dist/registry/define-tool.js.map +1 -0
- package/dist/registry/index.d.ts +13 -0
- package/dist/registry/index.d.ts.map +1 -0
- package/dist/registry/index.js +8 -0
- package/dist/registry/index.js.map +1 -0
- package/dist/registry/registry.d.ts +62 -0
- package/dist/registry/registry.d.ts.map +1 -0
- package/dist/registry/registry.js +134 -0
- package/dist/registry/registry.js.map +1 -0
- package/dist/registry/types.d.ts +98 -0
- package/dist/registry/types.d.ts.map +1 -0
- package/dist/registry/types.js +6 -0
- package/dist/registry/types.js.map +1 -0
- package/dist/search/compiler.d.ts +49 -0
- package/dist/search/compiler.d.ts.map +1 -0
- package/dist/search/compiler.js +168 -0
- package/dist/search/compiler.js.map +1 -0
- package/dist/signature.js +2 -2
- package/dist/signature.js.map +1 -1
- package/dist/state/migrate.d.ts +23 -0
- package/dist/state/migrate.d.ts.map +1 -0
- package/dist/state/migrate.js +81 -0
- package/dist/state/migrate.js.map +1 -0
- package/dist/state/schema.d.ts +27 -0
- package/dist/state/schema.d.ts.map +1 -0
- package/dist/state/schema.js +54 -0
- package/dist/state/schema.js.map +1 -0
- package/dist/state/store.d.ts +152 -0
- package/dist/state/store.d.ts.map +1 -0
- package/dist/state/store.js +317 -0
- package/dist/state/store.js.map +1 -0
- package/dist/tools/accounts.d.ts +37 -0
- package/dist/tools/accounts.d.ts.map +1 -0
- package/dist/tools/accounts.js +68 -0
- package/dist/tools/accounts.js.map +1 -0
- package/dist/tools/calendar-apple.d.ts +39 -0
- package/dist/tools/calendar-apple.d.ts.map +1 -0
- package/dist/tools/calendar-apple.js +159 -0
- package/dist/tools/calendar-apple.js.map +1 -0
- package/dist/tools/calendar-graph.d.ts +41 -0
- package/dist/tools/calendar-graph.d.ts.map +1 -0
- package/dist/tools/calendar-graph.js +298 -0
- package/dist/tools/calendar-graph.js.map +1 -0
- package/dist/tools/calendar-permissions.d.ts +10 -0
- package/dist/tools/calendar-permissions.d.ts.map +1 -1
- package/dist/tools/calendar-permissions.js +53 -0
- package/dist/tools/calendar-permissions.js.map +1 -1
- package/dist/tools/calendar.d.ts +151 -0
- package/dist/tools/calendar.d.ts.map +1 -1
- package/dist/tools/calendar.js +274 -0
- package/dist/tools/calendar.js.map +1 -1
- package/dist/tools/categories.d.ts +10 -0
- package/dist/tools/categories.d.ts.map +1 -1
- package/dist/tools/categories.js +54 -0
- package/dist/tools/categories.js.map +1 -1
- package/dist/tools/checklist-items.d.ts +10 -0
- package/dist/tools/checklist-items.d.ts.map +1 -1
- package/dist/tools/checklist-items.js +63 -0
- package/dist/tools/checklist-items.js.map +1 -1
- package/dist/tools/contact-folders.d.ts +50 -0
- package/dist/tools/contact-folders.d.ts.map +1 -0
- package/dist/tools/contact-folders.js +133 -0
- package/dist/tools/contact-folders.js.map +1 -0
- package/dist/tools/contacts-graph.d.ts +45 -0
- package/dist/tools/contacts-graph.d.ts.map +1 -0
- package/dist/tools/contacts-graph.js +172 -0
- package/dist/tools/contacts-graph.js.map +1 -0
- package/dist/tools/contacts.d.ts +66 -0
- package/dist/tools/contacts.d.ts.map +1 -1
- package/dist/tools/contacts.js +165 -0
- package/dist/tools/contacts.js.map +1 -1
- package/dist/tools/excel.d.ts +10 -0
- package/dist/tools/excel.d.ts.map +1 -1
- package/dist/tools/excel.js +73 -0
- package/dist/tools/excel.js.map +1 -1
- package/dist/tools/focused-overrides.d.ts +10 -0
- package/dist/tools/focused-overrides.d.ts.map +1 -1
- package/dist/tools/focused-overrides.js +54 -0
- package/dist/tools/focused-overrides.js.map +1 -1
- package/dist/tools/linked-resources.d.ts +10 -0
- package/dist/tools/linked-resources.d.ts.map +1 -1
- package/dist/tools/linked-resources.js +53 -0
- package/dist/tools/linked-resources.js.map +1 -1
- package/dist/tools/mail-apple.d.ts +40 -0
- package/dist/tools/mail-apple.d.ts.map +1 -0
- package/dist/tools/mail-apple.js +146 -0
- package/dist/tools/mail-apple.js.map +1 -0
- package/dist/tools/mail-graph.d.ts +38 -0
- package/dist/tools/mail-graph.d.ts.map +1 -0
- package/dist/tools/mail-graph.js +178 -0
- package/dist/tools/mail-graph.js.map +1 -0
- package/dist/tools/mail-rules.d.ts +12 -0
- package/dist/tools/mail-rules.d.ts.map +1 -1
- package/dist/tools/mail-rules.js +56 -0
- package/dist/tools/mail-rules.js.map +1 -1
- package/dist/tools/mail-send.d.ts +12 -0
- package/dist/tools/mail-send.d.ts.map +1 -1
- package/dist/tools/mail-send.js +219 -5
- package/dist/tools/mail-send.js.map +1 -1
- package/dist/tools/mail.d.ts +82 -2
- package/dist/tools/mail.d.ts.map +1 -1
- package/dist/tools/mail.js +239 -2
- package/dist/tools/mail.js.map +1 -1
- package/dist/tools/mailbox-organization.d.ts +20 -0
- package/dist/tools/mailbox-organization.d.ts.map +1 -1
- package/dist/tools/mailbox-organization.js +275 -0
- package/dist/tools/mailbox-organization.js.map +1 -1
- package/dist/tools/mailbox-settings.d.ts +59 -0
- package/dist/tools/mailbox-settings.d.ts.map +1 -0
- package/dist/tools/mailbox-settings.js +136 -0
- package/dist/tools/mailbox-settings.js.map +1 -0
- package/dist/tools/meetings.d.ts +10 -0
- package/dist/tools/meetings.d.ts.map +1 -1
- package/dist/tools/meetings.js +74 -0
- package/dist/tools/meetings.js.map +1 -1
- package/dist/tools/notes.d.ts +12 -0
- package/dist/tools/notes.d.ts.map +1 -1
- package/dist/tools/notes.js +66 -0
- package/dist/tools/notes.js.map +1 -1
- package/dist/tools/onedrive.d.ts +10 -0
- package/dist/tools/onedrive.d.ts.map +1 -1
- package/dist/tools/onedrive.js +124 -0
- package/dist/tools/onedrive.js.map +1 -1
- package/dist/tools/people.d.ts +10 -0
- package/dist/tools/people.d.ts.map +1 -1
- package/dist/tools/people.js +94 -0
- package/dist/tools/people.js.map +1 -1
- package/dist/tools/planner-visualization.d.ts +10 -0
- package/dist/tools/planner-visualization.d.ts.map +1 -1
- package/dist/tools/planner-visualization.js +53 -0
- package/dist/tools/planner-visualization.js.map +1 -1
- package/dist/tools/planner.d.ts +10 -0
- package/dist/tools/planner.d.ts.map +1 -1
- package/dist/tools/planner.js +183 -0
- package/dist/tools/planner.js.map +1 -1
- package/dist/tools/scheduling.d.ts +12 -0
- package/dist/tools/scheduling.d.ts.map +1 -1
- package/dist/tools/scheduling.js +38 -0
- package/dist/tools/scheduling.js.map +1 -1
- package/dist/tools/sharepoint.d.ts +10 -0
- package/dist/tools/sharepoint.d.ts.map +1 -1
- package/dist/tools/sharepoint.js +74 -0
- package/dist/tools/sharepoint.js.map +1 -1
- package/dist/tools/task-attachments.d.ts +10 -0
- package/dist/tools/task-attachments.d.ts.map +1 -1
- package/dist/tools/task-attachments.js +53 -0
- package/dist/tools/task-attachments.js.map +1 -1
- package/dist/tools/task-lists.d.ts +56 -0
- package/dist/tools/task-lists.d.ts.map +1 -0
- package/dist/tools/task-lists.js +151 -0
- package/dist/tools/task-lists.js.map +1 -0
- package/dist/tools/tasks-graph.d.ts +49 -0
- package/dist/tools/tasks-graph.d.ts.map +1 -0
- package/dist/tools/tasks-graph.js +191 -0
- package/dist/tools/tasks-graph.js.map +1 -0
- package/dist/tools/tasks.d.ts +127 -0
- package/dist/tools/tasks.d.ts.map +1 -1
- package/dist/tools/tasks.js +155 -0
- package/dist/tools/tasks.js.map +1 -1
- package/dist/tools/teams.d.ts +11 -0
- package/dist/tools/teams.d.ts.map +1 -1
- package/dist/tools/teams.js +254 -0
- package/dist/tools/teams.js.map +1 -1
- package/dist/utils/errors.d.ts +96 -5
- package/dist/utils/errors.d.ts.map +1 -1
- package/dist/utils/errors.js +227 -8
- package/dist/utils/errors.js.map +1 -1
- package/package.json +1 -1
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"compiler.js","sourceRoot":"","sources":["../../src/search/compiler.ts"],"names":[],"mappings":"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"}
|
package/dist/signature.js
CHANGED
|
@@ -5,13 +5,13 @@
|
|
|
5
5
|
/**
|
|
6
6
|
* Email signature storage and auto-append logic.
|
|
7
7
|
*
|
|
8
|
-
* Signatures are stored as HTML at ~/.
|
|
8
|
+
* Signatures are stored as HTML at ~/.mcp-office365/signature.html
|
|
9
9
|
* and auto-appended to email bodies when creating/sending emails.
|
|
10
10
|
*/
|
|
11
11
|
import { existsSync, mkdirSync, readFileSync, writeFileSync } from 'node:fs';
|
|
12
12
|
import { homedir } from 'node:os';
|
|
13
13
|
import { join } from 'node:path';
|
|
14
|
-
const SIGNATURE_DIR = join(homedir(), '.
|
|
14
|
+
const SIGNATURE_DIR = join(homedir(), '.mcp-office365');
|
|
15
15
|
const SIGNATURE_FILE = join(SIGNATURE_DIR, 'signature.html');
|
|
16
16
|
/**
|
|
17
17
|
* Ensures the signature directory exists.
|
package/dist/signature.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"signature.js","sourceRoot":"","sources":["../src/signature.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH;;;;;GAKG;AAEH,OAAO,EAAE,UAAU,EAAE,SAAS,EAAE,YAAY,EAAE,aAAa,EAAE,MAAM,SAAS,CAAC;AAC7E,OAAO,EAAE,OAAO,EAAE,MAAM,SAAS,CAAC;AAClC,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AAEjC,MAAM,aAAa,GAAG,IAAI,CAAC,OAAO,EAAE,EAAE,
|
|
1
|
+
{"version":3,"file":"signature.js","sourceRoot":"","sources":["../src/signature.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH;;;;;GAKG;AAEH,OAAO,EAAE,UAAU,EAAE,SAAS,EAAE,YAAY,EAAE,aAAa,EAAE,MAAM,SAAS,CAAC;AAC7E,OAAO,EAAE,OAAO,EAAE,MAAM,SAAS,CAAC;AAClC,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AAEjC,MAAM,aAAa,GAAG,IAAI,CAAC,OAAO,EAAE,EAAE,gBAAgB,CAAC,CAAC;AACxD,MAAM,cAAc,GAAG,IAAI,CAAC,aAAa,EAAE,gBAAgB,CAAC,CAAC;AAE7D;;GAEG;AACH,SAAS,SAAS;IAChB,IAAI,CAAC,UAAU,CAAC,aAAa,CAAC,EAAE,CAAC;QAC/B,SAAS,CAAC,aAAa,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC,CAAC;IAC7D,CAAC;AACH,CAAC;AAED;;GAEG;AACH,SAAS,UAAU,CAAC,IAAY;IAC9B,OAAO,IAAI;SACR,OAAO,CAAC,IAAI,EAAE,OAAO,CAAC;SACtB,OAAO,CAAC,IAAI,EAAE,MAAM,CAAC;SACrB,OAAO,CAAC,IAAI,EAAE,MAAM,CAAC;SACrB,OAAO,CAAC,IAAI,EAAE,QAAQ,CAAC;SACvB,OAAO,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;AAC5B,CAAC;AAED;;GAEG;AACH,SAAS,SAAS,CAAC,IAAY;IAC7B,OAAO,IAAI;SACR,OAAO,CAAC,cAAc,EAAE,IAAI,CAAC;SAC7B,OAAO,CAAC,UAAU,EAAE,EAAE,CAAC,CAAC;AAC7B,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,aAAa;IAC3B,IAAI,CAAC,UAAU,CAAC,cAAc,CAAC;QAAE,OAAO,IAAI,CAAC;IAC7C,IAAI,CAAC;QACH,OAAO,YAAY,CAAC,cAAc,EAAE,OAAO,CAAC,CAAC;IAC/C,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,IAAI,CAAC;IACd,CAAC;AACH,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,cAAc,CAAC,OAAe,EAAE,cAA+B,MAAM;IACnF,SAAS,EAAE,CAAC;IACZ,MAAM,IAAI,GAAG,WAAW,KAAK,MAAM,CAAC,CAAC,CAAC,QAAQ,UAAU,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,CAAC,OAAO,CAAC;IACpF,IAAI,CAAC;QACH,aAAa,CAAC,cAAc,EAAE,IAAI,EAAE,EAAE,QAAQ,EAAE,OAAO,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC,CAAC;IAC1E,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,MAAM,OAAO,GAAG,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;QACjE,MAAM,IAAI,KAAK,CAAC,6BAA6B,OAAO,EAAE,CAAC,CAAC;IAC1D,CAAC;AACH,CAAC;AAED;;;;;;GAMG;AACH,MAAM,UAAU,eAAe,CAC7B,IAAY,EACZ,QAAyB,EACzB,gBAAyB;IAEzB,IAAI,CAAC,gBAAgB;QAAE,OAAO,IAAI,CAAC;IAEnC,MAAM,SAAS,GAAG,aAAa,EAAE,CAAC;IAClC,IAAI,SAAS,IAAI,IAAI;QAAE,OAAO,IAAI,CAAC;IAEnC,IAAI,QAAQ,KAAK,MAAM,EAAE,CAAC;QACxB,OAAO,GAAG,IAAI,WAAW,SAAS,EAAE,CAAC;IACvC,CAAC;IAED,OAAO,GAAG,IAAI,WAAW,SAAS,CAAC,SAAS,CAAC,EAAE,CAAC;AAClD,CAAC"}
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Copyright (c) 2026 JBC Tech Solutions, LLC
|
|
3
|
+
* Licensed under the MIT License. See LICENSE file in the project root.
|
|
4
|
+
*/
|
|
5
|
+
import type Database from 'better-sqlite3';
|
|
6
|
+
type DB = Database.Database;
|
|
7
|
+
/** Reads the applied schema version (0 when never migrated). */
|
|
8
|
+
export declare function getSchemaVersion(db: DB): number;
|
|
9
|
+
/**
|
|
10
|
+
* Applies pending schema migrations in order, each in its own transaction so a
|
|
11
|
+
* failure leaves the schema at the last good version. Running with no pending
|
|
12
|
+
* migrations is a no-op.
|
|
13
|
+
*/
|
|
14
|
+
export declare function runMigrations(db: DB): void;
|
|
15
|
+
/**
|
|
16
|
+
* Copies a legacy `~/.outlook-mcp/tokens.json` into the new state dir exactly
|
|
17
|
+
* once (D15): only when the marker is unset AND the new dir has no tokens.json.
|
|
18
|
+
* The legacy dir is left untouched; the marker is set regardless so the check
|
|
19
|
+
* never repeats.
|
|
20
|
+
*/
|
|
21
|
+
export declare function migrateLegacyTokens(db: DB, newDir: string, legacyDir: string): void;
|
|
22
|
+
export {};
|
|
23
|
+
//# sourceMappingURL=migrate.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"migrate.d.ts","sourceRoot":"","sources":["../../src/state/migrate.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAWH,OAAO,KAAK,QAAQ,MAAM,gBAAgB,CAAC;AAO3C,KAAK,EAAE,GAAG,QAAQ,CAAC,QAAQ,CAAC;AAoB5B,gEAAgE;AAChE,wBAAgB,gBAAgB,CAAC,EAAE,EAAE,EAAE,GAAG,MAAM,CAI/C;AAED;;;;GAIG;AACH,wBAAgB,aAAa,CAAC,EAAE,EAAE,EAAE,GAAG,IAAI,CAqB1C;AAED;;;;;GAKG;AACH,wBAAgB,mBAAmB,CACjC,EAAE,EAAE,EAAE,EACN,MAAM,EAAE,MAAM,EACd,SAAS,EAAE,MAAM,GAChB,IAAI,CAgBN"}
|
|
@@ -0,0 +1,81 @@
|
|
|
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
|
+
* Boot-time migrations for the durable state store (U4):
|
|
7
|
+
* - Schema migrations applied in order, tracked via the `meta` table (idempotent).
|
|
8
|
+
* - One-shot legacy token copy from `~/.outlook-mcp` (D15), never overwriting an
|
|
9
|
+
* existing token cache, gated by a `meta` marker so it runs at most once.
|
|
10
|
+
*/
|
|
11
|
+
import { chmodSync, copyFileSync, existsSync } from 'node:fs';
|
|
12
|
+
import { join } from 'node:path';
|
|
13
|
+
import { MIGRATIONS, META_SCHEMA_VERSION, META_LEGACY_TOKENS_MIGRATED, } from './schema.js';
|
|
14
|
+
/** Creates the meta table if absent (needed before reading the schema version). */
|
|
15
|
+
function ensureMetaTable(db) {
|
|
16
|
+
db.exec('CREATE TABLE IF NOT EXISTS meta (key TEXT PRIMARY KEY, value TEXT NOT NULL);');
|
|
17
|
+
}
|
|
18
|
+
function getMeta(db, key) {
|
|
19
|
+
const row = db.prepare('SELECT value FROM meta WHERE key = ?').get(key);
|
|
20
|
+
return row?.value ?? null;
|
|
21
|
+
}
|
|
22
|
+
function setMeta(db, key, value) {
|
|
23
|
+
db.prepare('INSERT INTO meta (key, value) VALUES (?, ?) ON CONFLICT(key) DO UPDATE SET value = excluded.value').run(key, value);
|
|
24
|
+
}
|
|
25
|
+
/** Reads the applied schema version (0 when never migrated). */
|
|
26
|
+
export function getSchemaVersion(db) {
|
|
27
|
+
const raw = getMeta(db, META_SCHEMA_VERSION);
|
|
28
|
+
const parsed = raw != null ? Number.parseInt(raw, 10) : 0;
|
|
29
|
+
return Number.isFinite(parsed) ? parsed : 0;
|
|
30
|
+
}
|
|
31
|
+
/**
|
|
32
|
+
* Applies pending schema migrations in order, each in its own transaction so a
|
|
33
|
+
* failure leaves the schema at the last good version. Running with no pending
|
|
34
|
+
* migrations is a no-op.
|
|
35
|
+
*/
|
|
36
|
+
export function runMigrations(db) {
|
|
37
|
+
ensureMetaTable(db);
|
|
38
|
+
let current = getSchemaVersion(db);
|
|
39
|
+
// Downgrade guard: a db migrated by a newer build (version beyond this build's
|
|
40
|
+
// migration count) must not be operated on blindly against an unknown schema.
|
|
41
|
+
// Throwing here routes the caller to its degraded in-memory fallback.
|
|
42
|
+
if (current > MIGRATIONS.length) {
|
|
43
|
+
throw new Error(`state.db schema version ${current} is newer than this build supports (${MIGRATIONS.length}).`);
|
|
44
|
+
}
|
|
45
|
+
while (current < MIGRATIONS.length) {
|
|
46
|
+
const sql = MIGRATIONS[current];
|
|
47
|
+
if (sql == null)
|
|
48
|
+
break;
|
|
49
|
+
const apply = db.transaction((migrationSql, next) => {
|
|
50
|
+
db.exec(migrationSql);
|
|
51
|
+
setMeta(db, META_SCHEMA_VERSION, String(next));
|
|
52
|
+
});
|
|
53
|
+
apply(sql, current + 1);
|
|
54
|
+
current += 1;
|
|
55
|
+
}
|
|
56
|
+
}
|
|
57
|
+
/**
|
|
58
|
+
* Copies a legacy `~/.outlook-mcp/tokens.json` into the new state dir exactly
|
|
59
|
+
* once (D15): only when the marker is unset AND the new dir has no tokens.json.
|
|
60
|
+
* The legacy dir is left untouched; the marker is set regardless so the check
|
|
61
|
+
* never repeats.
|
|
62
|
+
*/
|
|
63
|
+
export function migrateLegacyTokens(db, newDir, legacyDir) {
|
|
64
|
+
if (getMeta(db, META_LEGACY_TOKENS_MIGRATED) === '1') {
|
|
65
|
+
return;
|
|
66
|
+
}
|
|
67
|
+
const newTokens = join(newDir, 'tokens.json');
|
|
68
|
+
const legacyTokens = join(legacyDir, 'tokens.json');
|
|
69
|
+
if (!existsSync(newTokens) && existsSync(legacyTokens)) {
|
|
70
|
+
copyFileSync(legacyTokens, newTokens);
|
|
71
|
+
// The copied cache holds OAuth material — restrict it like state.db (D18).
|
|
72
|
+
try {
|
|
73
|
+
chmodSync(newTokens, 0o600);
|
|
74
|
+
}
|
|
75
|
+
catch {
|
|
76
|
+
// Best-effort; non-POSIX filesystems ignore modes.
|
|
77
|
+
}
|
|
78
|
+
}
|
|
79
|
+
setMeta(db, META_LEGACY_TOKENS_MIGRATED, '1');
|
|
80
|
+
}
|
|
81
|
+
//# sourceMappingURL=migrate.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"migrate.js","sourceRoot":"","sources":["../../src/state/migrate.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,27 @@
|
|
|
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
|
+
* SQLite schema for the durable state store (U4). Each entry in {@link MIGRATIONS}
|
|
7
|
+
* moves the schema forward by one version; the applied version is tracked in the
|
|
8
|
+
* `meta` table so boot migration is idempotent and ordered.
|
|
9
|
+
*
|
|
10
|
+
* Tables (D3/D7/D8):
|
|
11
|
+
* - `aliases` — durable-ID token → Graph ID map (composite/mutable IDs).
|
|
12
|
+
* - `approval_tokens` — two-phase approval tokens + redemption receipts.
|
|
13
|
+
* - `meta` — schema version + one-shot migration markers.
|
|
14
|
+
*
|
|
15
|
+
* The `delta_links` table intentionally ships later with U12 (the delta mirror),
|
|
16
|
+
* keeping U4 free of Workstream-7-only schema per the slip rule.
|
|
17
|
+
*/
|
|
18
|
+
/** Ordered forward migrations. Index i migrates schema version i → i+1. */
|
|
19
|
+
export declare const MIGRATIONS: readonly string[];
|
|
20
|
+
/** The schema version this build expects (equals the migration count). */
|
|
21
|
+
export declare const SCHEMA_VERSION: number;
|
|
22
|
+
/** meta keys. */
|
|
23
|
+
export declare const META_SCHEMA_VERSION = "schema_version";
|
|
24
|
+
export declare const META_LEGACY_TOKENS_MIGRATED = "legacy_tokens_migrated";
|
|
25
|
+
/** Retention window for redeemed/expired approval tokens (D8): 90 days. */
|
|
26
|
+
export declare const APPROVAL_RETENTION_MS: number;
|
|
27
|
+
//# sourceMappingURL=schema.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"schema.d.ts","sourceRoot":"","sources":["../../src/state/schema.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH;;;;;;;;;;;;GAYG;AAEH,2EAA2E;AAC3E,eAAO,MAAM,UAAU,EAAE,SAAS,MAAM,EA2BvC,CAAC;AAEF,0EAA0E;AAC1E,eAAO,MAAM,cAAc,QAAoB,CAAC;AAEhD,iBAAiB;AACjB,eAAO,MAAM,mBAAmB,mBAAmB,CAAC;AACpD,eAAO,MAAM,2BAA2B,2BAA2B,CAAC;AAEpE,2EAA2E;AAC3E,eAAO,MAAM,qBAAqB,QAA2B,CAAC"}
|
|
@@ -0,0 +1,54 @@
|
|
|
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
|
+
* SQLite schema for the durable state store (U4). Each entry in {@link MIGRATIONS}
|
|
7
|
+
* moves the schema forward by one version; the applied version is tracked in the
|
|
8
|
+
* `meta` table so boot migration is idempotent and ordered.
|
|
9
|
+
*
|
|
10
|
+
* Tables (D3/D7/D8):
|
|
11
|
+
* - `aliases` — durable-ID token → Graph ID map (composite/mutable IDs).
|
|
12
|
+
* - `approval_tokens` — two-phase approval tokens + redemption receipts.
|
|
13
|
+
* - `meta` — schema version + one-shot migration markers.
|
|
14
|
+
*
|
|
15
|
+
* The `delta_links` table intentionally ships later with U12 (the delta mirror),
|
|
16
|
+
* keeping U4 free of Workstream-7-only schema per the slip rule.
|
|
17
|
+
*/
|
|
18
|
+
/** Ordered forward migrations. Index i migrates schema version i → i+1. */
|
|
19
|
+
export const MIGRATIONS = [
|
|
20
|
+
// v0 → v1: initial durable-state schema.
|
|
21
|
+
`
|
|
22
|
+
CREATE TABLE IF NOT EXISTS aliases (
|
|
23
|
+
token TEXT PRIMARY KEY,
|
|
24
|
+
graph_id TEXT NOT NULL,
|
|
25
|
+
entity_type TEXT NOT NULL,
|
|
26
|
+
account_id TEXT NOT NULL,
|
|
27
|
+
mutable INTEGER NOT NULL DEFAULT 0,
|
|
28
|
+
created_at INTEGER NOT NULL
|
|
29
|
+
);
|
|
30
|
+
|
|
31
|
+
CREATE TABLE IF NOT EXISTS approval_tokens (
|
|
32
|
+
token TEXT PRIMARY KEY,
|
|
33
|
+
operation_key TEXT UNIQUE,
|
|
34
|
+
action TEXT NOT NULL,
|
|
35
|
+
target_json TEXT NOT NULL,
|
|
36
|
+
content_hash TEXT,
|
|
37
|
+
account_id TEXT NOT NULL,
|
|
38
|
+
expires_at INTEGER NOT NULL,
|
|
39
|
+
redeemed_at INTEGER,
|
|
40
|
+
receipt_json TEXT,
|
|
41
|
+
created_at INTEGER NOT NULL
|
|
42
|
+
);
|
|
43
|
+
|
|
44
|
+
CREATE INDEX IF NOT EXISTS idx_approval_tokens_expires_at ON approval_tokens (expires_at);
|
|
45
|
+
`,
|
|
46
|
+
];
|
|
47
|
+
/** The schema version this build expects (equals the migration count). */
|
|
48
|
+
export const SCHEMA_VERSION = MIGRATIONS.length;
|
|
49
|
+
/** meta keys. */
|
|
50
|
+
export const META_SCHEMA_VERSION = 'schema_version';
|
|
51
|
+
export const META_LEGACY_TOKENS_MIGRATED = 'legacy_tokens_migrated';
|
|
52
|
+
/** Retention window for redeemed/expired approval tokens (D8): 90 days. */
|
|
53
|
+
export const APPROVAL_RETENTION_MS = 90 * 24 * 60 * 60 * 1000;
|
|
54
|
+
//# sourceMappingURL=schema.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"schema.js","sourceRoot":"","sources":["../../src/state/schema.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH;;;;;;;;;;;;GAYG;AAEH,2EAA2E;AAC3E,MAAM,CAAC,MAAM,UAAU,GAAsB;IAC3C,yCAAyC;IACzC;;;;;;;;;;;;;;;;;;;;;;;;GAwBC;CACF,CAAC;AAEF,0EAA0E;AAC1E,MAAM,CAAC,MAAM,cAAc,GAAG,UAAU,CAAC,MAAM,CAAC;AAEhD,iBAAiB;AACjB,MAAM,CAAC,MAAM,mBAAmB,GAAG,gBAAgB,CAAC;AACpD,MAAM,CAAC,MAAM,2BAA2B,GAAG,wBAAwB,CAAC;AAEpE,2EAA2E;AAC3E,MAAM,CAAC,MAAM,qBAAqB,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,IAAI,CAAC"}
|
|
@@ -0,0 +1,152 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Copyright (c) 2026 JBC Tech Solutions, LLC
|
|
3
|
+
* Licensed under the MIT License. See LICENSE file in the project root.
|
|
4
|
+
*/
|
|
5
|
+
/** A durable-ID alias row. */
|
|
6
|
+
export interface AliasRow {
|
|
7
|
+
token: string;
|
|
8
|
+
graphId: string;
|
|
9
|
+
entityType: string;
|
|
10
|
+
accountId: string;
|
|
11
|
+
mutable: boolean;
|
|
12
|
+
createdAt: number;
|
|
13
|
+
}
|
|
14
|
+
/** Input for minting an alias. */
|
|
15
|
+
export interface AliasInput {
|
|
16
|
+
token: string;
|
|
17
|
+
graphId: string;
|
|
18
|
+
entityType: string;
|
|
19
|
+
accountId: string;
|
|
20
|
+
mutable?: boolean;
|
|
21
|
+
createdAt?: number;
|
|
22
|
+
}
|
|
23
|
+
/** Input for staging a two-phase approval token. */
|
|
24
|
+
export interface ApprovalTokenInput {
|
|
25
|
+
token: string;
|
|
26
|
+
operationKey?: string | null;
|
|
27
|
+
action: string;
|
|
28
|
+
targetJson: string;
|
|
29
|
+
contentHash?: string | null;
|
|
30
|
+
accountId: string;
|
|
31
|
+
expiresAt: number;
|
|
32
|
+
createdAt?: number;
|
|
33
|
+
}
|
|
34
|
+
/** A stored approval-token row (read view). */
|
|
35
|
+
export interface ApprovalTokenRow {
|
|
36
|
+
token: string;
|
|
37
|
+
action: string;
|
|
38
|
+
targetJson: string;
|
|
39
|
+
contentHash: string | null;
|
|
40
|
+
expiresAt: number;
|
|
41
|
+
redeemedAt: number | null;
|
|
42
|
+
receiptJson: string | null;
|
|
43
|
+
createdAt: number;
|
|
44
|
+
}
|
|
45
|
+
/** Outcome of an atomic approval-token consume. */
|
|
46
|
+
export type ConsumeResult = {
|
|
47
|
+
status: 'consumed';
|
|
48
|
+
receiptJson: string | null;
|
|
49
|
+
} | {
|
|
50
|
+
status: 'already_redeemed';
|
|
51
|
+
receiptJson: string | null;
|
|
52
|
+
} | {
|
|
53
|
+
status: 'expired';
|
|
54
|
+
} | {
|
|
55
|
+
status: 'foreign_account';
|
|
56
|
+
} | {
|
|
57
|
+
status: 'not_found';
|
|
58
|
+
};
|
|
59
|
+
/** Options for {@link StateStore.open}. */
|
|
60
|
+
export interface StateStoreOptions {
|
|
61
|
+
/** Override the state directory (defaults to `~/.mcp-office365`). */
|
|
62
|
+
dir?: string;
|
|
63
|
+
/** Override the legacy directory to migrate tokens from. */
|
|
64
|
+
legacyDir?: string;
|
|
65
|
+
/** Clock, for deterministic tests. */
|
|
66
|
+
now?: () => number;
|
|
67
|
+
/** Warning sink (defaults to stderr). */
|
|
68
|
+
warn?: (message: string) => void;
|
|
69
|
+
}
|
|
70
|
+
export declare class StateStore {
|
|
71
|
+
/** True when running from an in-memory fallback (durability degraded). */
|
|
72
|
+
readonly degraded: boolean;
|
|
73
|
+
/** The db path, or ':memory:' when degraded. */
|
|
74
|
+
readonly path: string;
|
|
75
|
+
/** Effective `journal_mode` pragma (e.g. 'wal'). */
|
|
76
|
+
readonly journalMode: string;
|
|
77
|
+
/** Effective `busy_timeout` pragma in ms. */
|
|
78
|
+
readonly busyTimeout: number;
|
|
79
|
+
private readonly db;
|
|
80
|
+
private readonly now;
|
|
81
|
+
private constructor();
|
|
82
|
+
/**
|
|
83
|
+
* Opens (creating if needed) the durable store. On any failure to use the
|
|
84
|
+
* on-disk db (corrupt/locked file, unwritable dir) it degrades to an in-memory
|
|
85
|
+
* store, emits a stderr warning, and reports `degraded = true` — the server
|
|
86
|
+
* stays usable, only durability is lost for the run.
|
|
87
|
+
*/
|
|
88
|
+
static open(options?: StateStoreOptions): StateStore;
|
|
89
|
+
/** Inserts or replaces a durable-ID alias. */
|
|
90
|
+
putAlias(input: AliasInput): void;
|
|
91
|
+
/**
|
|
92
|
+
* Resolves an alias token, scoped to `accountId` (D7 account stamping). The
|
|
93
|
+
* account is a mandatory, fail-closed argument: a row minted under a different
|
|
94
|
+
* account is invisible, so no caller can accidentally resolve a foreign
|
|
95
|
+
* account's durable ID into a live Graph ID by omitting the scope.
|
|
96
|
+
*/
|
|
97
|
+
getAlias(token: string, accountId: string): AliasRow | null;
|
|
98
|
+
/**
|
|
99
|
+
* Atomically registers an alias with D1a collision enforcement, in a single
|
|
100
|
+
* IMMEDIATE transaction so the check-and-write is not a read-then-write race:
|
|
101
|
+
* two concurrent immutable registrations of the same token cannot both pass
|
|
102
|
+
* the check and then clobber each other. Returns `'collision'` when a
|
|
103
|
+
* *different* Graph ID already occupies the token for an immutable entity
|
|
104
|
+
* (neither the stored nor the new row is mutable); otherwise upserts and
|
|
105
|
+
* returns `'ok'`.
|
|
106
|
+
*/
|
|
107
|
+
registerAlias(input: AliasInput): 'ok' | 'collision';
|
|
108
|
+
/**
|
|
109
|
+
* Returns an alias row regardless of account, or null. Reserved for two
|
|
110
|
+
* internal uses that must see across accounts: foreign-account disambiguation
|
|
111
|
+
* during resolution, and collision detection at mint time (D1a). It is NOT a
|
|
112
|
+
* resolution path — {@link getAlias} (account-scoped) is the only one of those.
|
|
113
|
+
*/
|
|
114
|
+
getAliasUnscoped(token: string): AliasRow | null;
|
|
115
|
+
/**
|
|
116
|
+
* Returns the account a token was minted under (any account), or null when the
|
|
117
|
+
* token is unknown. Distinguishes "foreign account" from "unknown" during
|
|
118
|
+
* resolution so a foreign token yields a typed ID_FOREIGN_ACCOUNT.
|
|
119
|
+
*/
|
|
120
|
+
getAliasAccount(token: string): string | null;
|
|
121
|
+
/**
|
|
122
|
+
* Reads an approval token scoped to `accountId` (or null). A read view for
|
|
123
|
+
* validation/preview; redemption still goes through {@link consumeApprovalToken}
|
|
124
|
+
* so the atomic guard is never bypassed.
|
|
125
|
+
*/
|
|
126
|
+
getApprovalToken(token: string, accountId: string): ApprovalTokenRow | null;
|
|
127
|
+
/** Stages a two-phase approval token. */
|
|
128
|
+
putApprovalToken(input: ApprovalTokenInput): void;
|
|
129
|
+
/**
|
|
130
|
+
* Atomically consumes an approval token (D8). The guarded `UPDATE … WHERE
|
|
131
|
+
* redeemed_at IS NULL AND expires_at > now RETURNING` means only one caller —
|
|
132
|
+
* across processes sharing the db — can win the redemption; the loser sees
|
|
133
|
+
* `already_redeemed` and can return the stored receipt. Expiry is enforced
|
|
134
|
+
* here at the trust boundary (not left to callers): an expired token that
|
|
135
|
+
* still authorizes a send/delete would defeat the whole point of a time-boxed
|
|
136
|
+
* two-phase approval. Foreign-account tokens are refused.
|
|
137
|
+
*/
|
|
138
|
+
consumeApprovalToken(args: {
|
|
139
|
+
token: string;
|
|
140
|
+
accountId: string;
|
|
141
|
+
receiptJson?: string | null;
|
|
142
|
+
now?: number;
|
|
143
|
+
}): ConsumeResult;
|
|
144
|
+
/**
|
|
145
|
+
* Deletes approval tokens whose expiry is older than the retention window
|
|
146
|
+
* (D8, 90 days). Recently-expired receipts linger so idempotent redemption
|
|
147
|
+
* still returns them. Returns the number of rows purged.
|
|
148
|
+
*/
|
|
149
|
+
purgeExpired(now: number): number;
|
|
150
|
+
close(): void;
|
|
151
|
+
}
|
|
152
|
+
//# sourceMappingURL=store.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"store.d.ts","sourceRoot":"","sources":["../../src/state/store.ts"],"names":[],"mappings":"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"}
|