@mcp-z/mcp-outlook 1.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE +21 -0
- package/README.md +165 -0
- package/bin/server.js +5 -0
- package/dist/cjs/constants.d.cts +10 -0
- package/dist/cjs/constants.d.ts +10 -0
- package/dist/cjs/constants.js +35 -0
- package/dist/cjs/constants.js.map +1 -0
- package/dist/cjs/email/composition/outlook-message-builder.d.cts +36 -0
- package/dist/cjs/email/composition/outlook-message-builder.d.ts +36 -0
- package/dist/cjs/email/composition/outlook-message-builder.js +56 -0
- package/dist/cjs/email/composition/outlook-message-builder.js.map +1 -0
- package/dist/cjs/email/messages/messages.d.cts +7 -0
- package/dist/cjs/email/messages/messages.d.ts +7 -0
- package/dist/cjs/email/messages/messages.js +61 -0
- package/dist/cjs/email/messages/messages.js.map +1 -0
- package/dist/cjs/email/parsing/header-parsing.d.cts +18 -0
- package/dist/cjs/email/parsing/header-parsing.d.ts +18 -0
- package/dist/cjs/email/parsing/header-parsing.js +42 -0
- package/dist/cjs/email/parsing/header-parsing.js.map +1 -0
- package/dist/cjs/email/parsing/message-extraction.d.cts +4 -0
- package/dist/cjs/email/parsing/message-extraction.d.ts +4 -0
- package/dist/cjs/email/parsing/message-extraction.js +192 -0
- package/dist/cjs/email/parsing/message-extraction.js.map +1 -0
- package/dist/cjs/email/parsing/message-mapping.d.cts +21 -0
- package/dist/cjs/email/parsing/message-mapping.d.ts +21 -0
- package/dist/cjs/email/parsing/message-mapping.js +47 -0
- package/dist/cjs/email/parsing/message-mapping.js.map +1 -0
- package/dist/cjs/email/querying/execute-query.d.cts +20 -0
- package/dist/cjs/email/querying/execute-query.d.ts +20 -0
- package/dist/cjs/email/querying/execute-query.js +268 -0
- package/dist/cjs/email/querying/execute-query.js.map +1 -0
- package/dist/cjs/email/querying/query-builder.d.cts +32 -0
- package/dist/cjs/email/querying/query-builder.d.ts +32 -0
- package/dist/cjs/email/querying/query-builder.js +528 -0
- package/dist/cjs/email/querying/query-builder.js.map +1 -0
- package/dist/cjs/email/querying/search-execution.d.cts +24 -0
- package/dist/cjs/email/querying/search-execution.d.ts +24 -0
- package/dist/cjs/email/querying/search-execution.js +261 -0
- package/dist/cjs/email/querying/search-execution.js.map +1 -0
- package/dist/cjs/index.d.cts +8 -0
- package/dist/cjs/index.d.ts +8 -0
- package/dist/cjs/index.js +314 -0
- package/dist/cjs/index.js.map +1 -0
- package/dist/cjs/lib/create-store.d.cts +2 -0
- package/dist/cjs/lib/create-store.d.ts +2 -0
- package/dist/cjs/lib/create-store.js +166 -0
- package/dist/cjs/lib/create-store.js.map +1 -0
- package/dist/cjs/lib/messages-to-row.d.cts +39 -0
- package/dist/cjs/lib/messages-to-row.d.ts +39 -0
- package/dist/cjs/lib/messages-to-row.js +177 -0
- package/dist/cjs/lib/messages-to-row.js.map +1 -0
- package/dist/cjs/lib/outlook/index.d.cts +7 -0
- package/dist/cjs/lib/outlook/index.d.ts +7 -0
- package/dist/cjs/lib/outlook/index.js +56 -0
- package/dist/cjs/lib/outlook/index.js.map +1 -0
- package/dist/cjs/lib/outlook/types.d.cts +22 -0
- package/dist/cjs/lib/outlook/types.d.ts +22 -0
- package/dist/cjs/lib/outlook/types.js +6 -0
- package/dist/cjs/lib/outlook/types.js.map +1 -0
- package/dist/cjs/mcp/index.d.cts +3 -0
- package/dist/cjs/mcp/index.d.ts +3 -0
- package/dist/cjs/mcp/index.js +66 -0
- package/dist/cjs/mcp/index.js.map +1 -0
- package/dist/cjs/mcp/prompts/draft-email.d.cts +30 -0
- package/dist/cjs/mcp/prompts/draft-email.d.ts +30 -0
- package/dist/cjs/mcp/prompts/draft-email.js +184 -0
- package/dist/cjs/mcp/prompts/draft-email.js.map +1 -0
- package/dist/cjs/mcp/prompts/index.d.cts +2 -0
- package/dist/cjs/mcp/prompts/index.d.ts +2 -0
- package/dist/cjs/mcp/prompts/index.js +26 -0
- package/dist/cjs/mcp/prompts/index.js.map +1 -0
- package/dist/cjs/mcp/prompts/query-syntax.d.cts +19 -0
- package/dist/cjs/mcp/prompts/query-syntax.d.ts +19 -0
- package/dist/cjs/mcp/prompts/query-syntax.js +169 -0
- package/dist/cjs/mcp/prompts/query-syntax.js.map +1 -0
- package/dist/cjs/mcp/resources/email.d.cts +11 -0
- package/dist/cjs/mcp/resources/email.d.ts +11 -0
- package/dist/cjs/mcp/resources/email.js +233 -0
- package/dist/cjs/mcp/resources/email.js.map +1 -0
- package/dist/cjs/mcp/resources/index.d.cts +1 -0
- package/dist/cjs/mcp/resources/index.d.ts +1 -0
- package/dist/cjs/mcp/resources/index.js +17 -0
- package/dist/cjs/mcp/resources/index.js.map +1 -0
- package/dist/cjs/mcp/tools/categories-list.d.cts +96 -0
- package/dist/cjs/mcp/tools/categories-list.d.ts +96 -0
- package/dist/cjs/mcp/tools/categories-list.js +252 -0
- package/dist/cjs/mcp/tools/categories-list.js.map +1 -0
- package/dist/cjs/mcp/tools/index.d.cts +11 -0
- package/dist/cjs/mcp/tools/index.d.ts +11 -0
- package/dist/cjs/mcp/tools/index.js +62 -0
- package/dist/cjs/mcp/tools/index.js.map +1 -0
- package/dist/cjs/mcp/tools/label-add.d.cts +44 -0
- package/dist/cjs/mcp/tools/label-add.d.ts +44 -0
- package/dist/cjs/mcp/tools/label-add.js +249 -0
- package/dist/cjs/mcp/tools/label-add.js.map +1 -0
- package/dist/cjs/mcp/tools/label-delete.d.cts +54 -0
- package/dist/cjs/mcp/tools/label-delete.d.ts +54 -0
- package/dist/cjs/mcp/tools/label-delete.js +497 -0
- package/dist/cjs/mcp/tools/label-delete.js.map +1 -0
- package/dist/cjs/mcp/tools/labels-list.d.cts +96 -0
- package/dist/cjs/mcp/tools/labels-list.d.ts +96 -0
- package/dist/cjs/mcp/tools/labels-list.js +252 -0
- package/dist/cjs/mcp/tools/labels-list.js.map +1 -0
- package/dist/cjs/mcp/tools/message-get.d.cts +110 -0
- package/dist/cjs/mcp/tools/message-get.d.ts +110 -0
- package/dist/cjs/mcp/tools/message-get.js +289 -0
- package/dist/cjs/mcp/tools/message-get.js.map +1 -0
- package/dist/cjs/mcp/tools/message-mark-read.d.cts +42 -0
- package/dist/cjs/mcp/tools/message-mark-read.d.ts +42 -0
- package/dist/cjs/mcp/tools/message-mark-read.js +254 -0
- package/dist/cjs/mcp/tools/message-mark-read.js.map +1 -0
- package/dist/cjs/mcp/tools/message-move-to-trash.d.cts +54 -0
- package/dist/cjs/mcp/tools/message-move-to-trash.d.ts +54 -0
- package/dist/cjs/mcp/tools/message-move-to-trash.js +460 -0
- package/dist/cjs/mcp/tools/message-move-to-trash.js.map +1 -0
- package/dist/cjs/mcp/tools/message-respond.d.cts +52 -0
- package/dist/cjs/mcp/tools/message-respond.d.ts +52 -0
- package/dist/cjs/mcp/tools/message-respond.js +263 -0
- package/dist/cjs/mcp/tools/message-respond.js.map +1 -0
- package/dist/cjs/mcp/tools/message-search.d.cts +138 -0
- package/dist/cjs/mcp/tools/message-search.d.ts +138 -0
- package/dist/cjs/mcp/tools/message-search.js +408 -0
- package/dist/cjs/mcp/tools/message-search.js.map +1 -0
- package/dist/cjs/mcp/tools/message-send.d.cts +66 -0
- package/dist/cjs/mcp/tools/message-send.d.ts +66 -0
- package/dist/cjs/mcp/tools/message-send.js +298 -0
- package/dist/cjs/mcp/tools/message-send.js.map +1 -0
- package/dist/cjs/mcp/tools/messages-export-csv.d.cts +72 -0
- package/dist/cjs/mcp/tools/messages-export-csv.d.ts +72 -0
- package/dist/cjs/mcp/tools/messages-export-csv.js +540 -0
- package/dist/cjs/mcp/tools/messages-export-csv.js.map +1 -0
- package/dist/cjs/package.json +1 -0
- package/dist/cjs/schemas/index.d.cts +2 -0
- package/dist/cjs/schemas/index.d.ts +2 -0
- package/dist/cjs/schemas/index.js +20 -0
- package/dist/cjs/schemas/index.js.map +1 -0
- package/dist/cjs/schemas/outlook-query-schema.d.cts +53 -0
- package/dist/cjs/schemas/outlook-query-schema.d.ts +53 -0
- package/dist/cjs/schemas/outlook-query-schema.js +115 -0
- package/dist/cjs/schemas/outlook-query-schema.js.map +1 -0
- package/dist/cjs/schemas/outlook-validation.d.cts +428 -0
- package/dist/cjs/schemas/outlook-validation.d.ts +428 -0
- package/dist/cjs/schemas/outlook-validation.js +420 -0
- package/dist/cjs/schemas/outlook-validation.js.map +1 -0
- package/dist/cjs/setup/config.d.cts +50 -0
- package/dist/cjs/setup/config.d.ts +50 -0
- package/dist/cjs/setup/config.js +217 -0
- package/dist/cjs/setup/config.js.map +1 -0
- package/dist/cjs/setup/http.d.cts +8 -0
- package/dist/cjs/setup/http.d.ts +8 -0
- package/dist/cjs/setup/http.js +267 -0
- package/dist/cjs/setup/http.js.map +1 -0
- package/dist/cjs/setup/index.d.cts +5 -0
- package/dist/cjs/setup/index.d.ts +5 -0
- package/dist/cjs/setup/index.js +46 -0
- package/dist/cjs/setup/index.js.map +1 -0
- package/dist/cjs/setup/oauth-microsoft.d.cts +43 -0
- package/dist/cjs/setup/oauth-microsoft.d.ts +43 -0
- package/dist/cjs/setup/oauth-microsoft.js +366 -0
- package/dist/cjs/setup/oauth-microsoft.js.map +1 -0
- package/dist/cjs/setup/runtime.d.cts +11 -0
- package/dist/cjs/setup/runtime.d.ts +11 -0
- package/dist/cjs/setup/runtime.js +489 -0
- package/dist/cjs/setup/runtime.js.map +1 -0
- package/dist/cjs/setup/stdio.d.cts +7 -0
- package/dist/cjs/setup/stdio.d.ts +7 -0
- package/dist/cjs/setup/stdio.js +239 -0
- package/dist/cjs/setup/stdio.js.map +1 -0
- package/dist/cjs/types.d.cts +54 -0
- package/dist/cjs/types.d.ts +54 -0
- package/dist/cjs/types.js +5 -0
- package/dist/cjs/types.js.map +1 -0
- package/dist/esm/constants.d.ts +10 -0
- package/dist/esm/constants.js +13 -0
- package/dist/esm/constants.js.map +1 -0
- package/dist/esm/email/composition/outlook-message-builder.d.ts +36 -0
- package/dist/esm/email/composition/outlook-message-builder.js +46 -0
- package/dist/esm/email/composition/outlook-message-builder.js.map +1 -0
- package/dist/esm/email/messages/messages.d.ts +7 -0
- package/dist/esm/email/messages/messages.js +42 -0
- package/dist/esm/email/messages/messages.js.map +1 -0
- package/dist/esm/email/parsing/header-parsing.d.ts +18 -0
- package/dist/esm/email/parsing/header-parsing.js +18 -0
- package/dist/esm/email/parsing/header-parsing.js.map +1 -0
- package/dist/esm/email/parsing/message-extraction.d.ts +4 -0
- package/dist/esm/email/parsing/message-extraction.js +26 -0
- package/dist/esm/email/parsing/message-extraction.js.map +1 -0
- package/dist/esm/email/parsing/message-mapping.d.ts +21 -0
- package/dist/esm/email/parsing/message-mapping.js +35 -0
- package/dist/esm/email/parsing/message-mapping.js.map +1 -0
- package/dist/esm/email/querying/execute-query.d.ts +20 -0
- package/dist/esm/email/querying/execute-query.js +48 -0
- package/dist/esm/email/querying/execute-query.js.map +1 -0
- package/dist/esm/email/querying/query-builder.d.ts +32 -0
- package/dist/esm/email/querying/query-builder.js +424 -0
- package/dist/esm/email/querying/query-builder.js.map +1 -0
- package/dist/esm/email/querying/search-execution.d.ts +24 -0
- package/dist/esm/email/querying/search-execution.js +96 -0
- package/dist/esm/email/querying/search-execution.js.map +1 -0
- package/dist/esm/index.d.ts +8 -0
- package/dist/esm/index.js +34 -0
- package/dist/esm/index.js.map +1 -0
- package/dist/esm/lib/create-store.d.ts +2 -0
- package/dist/esm/lib/create-store.js +6 -0
- package/dist/esm/lib/create-store.js.map +1 -0
- package/dist/esm/lib/messages-to-row.d.ts +39 -0
- package/dist/esm/lib/messages-to-row.js +141 -0
- package/dist/esm/lib/messages-to-row.js.map +1 -0
- package/dist/esm/lib/outlook/index.d.ts +7 -0
- package/dist/esm/lib/outlook/index.js +7 -0
- package/dist/esm/lib/outlook/index.js.map +1 -0
- package/dist/esm/lib/outlook/types.d.ts +22 -0
- package/dist/esm/lib/outlook/types.js +2 -0
- package/dist/esm/lib/outlook/types.js.map +1 -0
- package/dist/esm/mcp/index.d.ts +3 -0
- package/dist/esm/mcp/index.js +6 -0
- package/dist/esm/mcp/index.js.map +1 -0
- package/dist/esm/mcp/prompts/draft-email.d.ts +30 -0
- package/dist/esm/mcp/prompts/draft-email.js +37 -0
- package/dist/esm/mcp/prompts/draft-email.js.map +1 -0
- package/dist/esm/mcp/prompts/index.d.ts +2 -0
- package/dist/esm/mcp/prompts/index.js +2 -0
- package/dist/esm/mcp/prompts/index.js.map +1 -0
- package/dist/esm/mcp/prompts/query-syntax.d.ts +19 -0
- package/dist/esm/mcp/prompts/query-syntax.js +75 -0
- package/dist/esm/mcp/prompts/query-syntax.js.map +1 -0
- package/dist/esm/mcp/resources/email.d.ts +11 -0
- package/dist/esm/mcp/resources/email.js +69 -0
- package/dist/esm/mcp/resources/email.js.map +1 -0
- package/dist/esm/mcp/resources/index.d.ts +1 -0
- package/dist/esm/mcp/resources/index.js +1 -0
- package/dist/esm/mcp/resources/index.js.map +1 -0
- package/dist/esm/mcp/tools/categories-list.d.ts +96 -0
- package/dist/esm/mcp/tools/categories-list.js +78 -0
- package/dist/esm/mcp/tools/categories-list.js.map +1 -0
- package/dist/esm/mcp/tools/index.d.ts +11 -0
- package/dist/esm/mcp/tools/index.js +11 -0
- package/dist/esm/mcp/tools/index.js.map +1 -0
- package/dist/esm/mcp/tools/label-add.d.ts +44 -0
- package/dist/esm/mcp/tools/label-add.js +75 -0
- package/dist/esm/mcp/tools/label-add.js.map +1 -0
- package/dist/esm/mcp/tools/label-delete.d.ts +54 -0
- package/dist/esm/mcp/tools/label-delete.js +166 -0
- package/dist/esm/mcp/tools/label-delete.js.map +1 -0
- package/dist/esm/mcp/tools/labels-list.d.ts +96 -0
- package/dist/esm/mcp/tools/labels-list.js +78 -0
- package/dist/esm/mcp/tools/labels-list.js.map +1 -0
- package/dist/esm/mcp/tools/message-get.d.ts +110 -0
- package/dist/esm/mcp/tools/message-get.js +117 -0
- package/dist/esm/mcp/tools/message-get.js.map +1 -0
- package/dist/esm/mcp/tools/message-mark-read.d.ts +42 -0
- package/dist/esm/mcp/tools/message-mark-read.js +80 -0
- package/dist/esm/mcp/tools/message-mark-read.js.map +1 -0
- package/dist/esm/mcp/tools/message-move-to-trash.d.ts +54 -0
- package/dist/esm/mcp/tools/message-move-to-trash.js +177 -0
- package/dist/esm/mcp/tools/message-move-to-trash.js.map +1 -0
- package/dist/esm/mcp/tools/message-respond.d.ts +52 -0
- package/dist/esm/mcp/tools/message-respond.js +89 -0
- package/dist/esm/mcp/tools/message-respond.js.map +1 -0
- package/dist/esm/mcp/tools/message-search.d.ts +138 -0
- package/dist/esm/mcp/tools/message-search.js +184 -0
- package/dist/esm/mcp/tools/message-search.js.map +1 -0
- package/dist/esm/mcp/tools/message-send.d.ts +66 -0
- package/dist/esm/mcp/tools/message-send.js +111 -0
- package/dist/esm/mcp/tools/message-send.js.map +1 -0
- package/dist/esm/mcp/tools/messages-export-csv.d.ts +72 -0
- package/dist/esm/mcp/tools/messages-export-csv.js +273 -0
- package/dist/esm/mcp/tools/messages-export-csv.js.map +1 -0
- package/dist/esm/package.json +1 -0
- package/dist/esm/schemas/index.d.ts +2 -0
- package/dist/esm/schemas/index.js +2 -0
- package/dist/esm/schemas/index.js.map +1 -0
- package/dist/esm/schemas/outlook-query-schema.d.ts +53 -0
- package/dist/esm/schemas/outlook-query-schema.js +63 -0
- package/dist/esm/schemas/outlook-query-schema.js.map +1 -0
- package/dist/esm/schemas/outlook-validation.d.ts +428 -0
- package/dist/esm/schemas/outlook-validation.js +388 -0
- package/dist/esm/schemas/outlook-validation.js.map +1 -0
- package/dist/esm/setup/config.d.ts +50 -0
- package/dist/esm/setup/config.js +180 -0
- package/dist/esm/setup/config.js.map +1 -0
- package/dist/esm/setup/http.d.ts +8 -0
- package/dist/esm/setup/http.js +61 -0
- package/dist/esm/setup/http.js.map +1 -0
- package/dist/esm/setup/index.d.ts +5 -0
- package/dist/esm/setup/index.js +5 -0
- package/dist/esm/setup/index.js.map +1 -0
- package/dist/esm/setup/oauth-microsoft.d.ts +43 -0
- package/dist/esm/setup/oauth-microsoft.js +169 -0
- package/dist/esm/setup/oauth-microsoft.js.map +1 -0
- package/dist/esm/setup/runtime.d.ts +11 -0
- package/dist/esm/setup/runtime.js +115 -0
- package/dist/esm/setup/runtime.js.map +1 -0
- package/dist/esm/setup/stdio.d.ts +7 -0
- package/dist/esm/setup/stdio.js +38 -0
- package/dist/esm/setup/stdio.js.map +1 -0
- package/dist/esm/types.d.ts +54 -0
- package/dist/esm/types.js +1 -0
- package/dist/esm/types.js.map +1 -0
- package/package.json +111 -0
|
@@ -0,0 +1,239 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", {
|
|
3
|
+
value: true
|
|
4
|
+
});
|
|
5
|
+
Object.defineProperty(exports, "createStdioServer", {
|
|
6
|
+
enumerable: true,
|
|
7
|
+
get: function() {
|
|
8
|
+
return createStdioServer;
|
|
9
|
+
}
|
|
10
|
+
});
|
|
11
|
+
var _server = require("@mcp-z/server");
|
|
12
|
+
var _mcp = require("@modelcontextprotocol/sdk/server/mcp.js");
|
|
13
|
+
var _runtime = require("./runtime.js");
|
|
14
|
+
function _array_like_to_array(arr, len) {
|
|
15
|
+
if (len == null || len > arr.length) len = arr.length;
|
|
16
|
+
for(var i = 0, arr2 = new Array(len); i < len; i++)arr2[i] = arr[i];
|
|
17
|
+
return arr2;
|
|
18
|
+
}
|
|
19
|
+
function _array_without_holes(arr) {
|
|
20
|
+
if (Array.isArray(arr)) return _array_like_to_array(arr);
|
|
21
|
+
}
|
|
22
|
+
function asyncGeneratorStep(gen, resolve, reject, _next, _throw, key, arg) {
|
|
23
|
+
try {
|
|
24
|
+
var info = gen[key](arg);
|
|
25
|
+
var value = info.value;
|
|
26
|
+
} catch (error) {
|
|
27
|
+
reject(error);
|
|
28
|
+
return;
|
|
29
|
+
}
|
|
30
|
+
if (info.done) {
|
|
31
|
+
resolve(value);
|
|
32
|
+
} else {
|
|
33
|
+
Promise.resolve(value).then(_next, _throw);
|
|
34
|
+
}
|
|
35
|
+
}
|
|
36
|
+
function _async_to_generator(fn) {
|
|
37
|
+
return function() {
|
|
38
|
+
var self = this, args = arguments;
|
|
39
|
+
return new Promise(function(resolve, reject) {
|
|
40
|
+
var gen = fn.apply(self, args);
|
|
41
|
+
function _next(value) {
|
|
42
|
+
asyncGeneratorStep(gen, resolve, reject, _next, _throw, "next", value);
|
|
43
|
+
}
|
|
44
|
+
function _throw(err) {
|
|
45
|
+
asyncGeneratorStep(gen, resolve, reject, _next, _throw, "throw", err);
|
|
46
|
+
}
|
|
47
|
+
_next(undefined);
|
|
48
|
+
});
|
|
49
|
+
};
|
|
50
|
+
}
|
|
51
|
+
function _iterable_to_array(iter) {
|
|
52
|
+
if (typeof Symbol !== "undefined" && iter[Symbol.iterator] != null || iter["@@iterator"] != null) return Array.from(iter);
|
|
53
|
+
}
|
|
54
|
+
function _non_iterable_spread() {
|
|
55
|
+
throw new TypeError("Invalid attempt to spread non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.");
|
|
56
|
+
}
|
|
57
|
+
function _to_consumable_array(arr) {
|
|
58
|
+
return _array_without_holes(arr) || _iterable_to_array(arr) || _unsupported_iterable_to_array(arr) || _non_iterable_spread();
|
|
59
|
+
}
|
|
60
|
+
function _unsupported_iterable_to_array(o, minLen) {
|
|
61
|
+
if (!o) return;
|
|
62
|
+
if (typeof o === "string") return _array_like_to_array(o, minLen);
|
|
63
|
+
var n = Object.prototype.toString.call(o).slice(8, -1);
|
|
64
|
+
if (n === "Object" && o.constructor) n = o.constructor.name;
|
|
65
|
+
if (n === "Map" || n === "Set") return Array.from(n);
|
|
66
|
+
if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _array_like_to_array(o, minLen);
|
|
67
|
+
}
|
|
68
|
+
function _ts_generator(thisArg, body) {
|
|
69
|
+
var f, y, t, _ = {
|
|
70
|
+
label: 0,
|
|
71
|
+
sent: function() {
|
|
72
|
+
if (t[0] & 1) throw t[1];
|
|
73
|
+
return t[1];
|
|
74
|
+
},
|
|
75
|
+
trys: [],
|
|
76
|
+
ops: []
|
|
77
|
+
}, g = Object.create((typeof Iterator === "function" ? Iterator : Object).prototype), d = Object.defineProperty;
|
|
78
|
+
return d(g, "next", {
|
|
79
|
+
value: verb(0)
|
|
80
|
+
}), d(g, "throw", {
|
|
81
|
+
value: verb(1)
|
|
82
|
+
}), d(g, "return", {
|
|
83
|
+
value: verb(2)
|
|
84
|
+
}), typeof Symbol === "function" && d(g, Symbol.iterator, {
|
|
85
|
+
value: function() {
|
|
86
|
+
return this;
|
|
87
|
+
}
|
|
88
|
+
}), g;
|
|
89
|
+
function verb(n) {
|
|
90
|
+
return function(v) {
|
|
91
|
+
return step([
|
|
92
|
+
n,
|
|
93
|
+
v
|
|
94
|
+
]);
|
|
95
|
+
};
|
|
96
|
+
}
|
|
97
|
+
function step(op) {
|
|
98
|
+
if (f) throw new TypeError("Generator is already executing.");
|
|
99
|
+
while(g && (g = 0, op[0] && (_ = 0)), _)try {
|
|
100
|
+
if (f = 1, y && (t = op[0] & 2 ? y["return"] : op[0] ? y["throw"] || ((t = y["return"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;
|
|
101
|
+
if (y = 0, t) op = [
|
|
102
|
+
op[0] & 2,
|
|
103
|
+
t.value
|
|
104
|
+
];
|
|
105
|
+
switch(op[0]){
|
|
106
|
+
case 0:
|
|
107
|
+
case 1:
|
|
108
|
+
t = op;
|
|
109
|
+
break;
|
|
110
|
+
case 4:
|
|
111
|
+
_.label++;
|
|
112
|
+
return {
|
|
113
|
+
value: op[1],
|
|
114
|
+
done: false
|
|
115
|
+
};
|
|
116
|
+
case 5:
|
|
117
|
+
_.label++;
|
|
118
|
+
y = op[1];
|
|
119
|
+
op = [
|
|
120
|
+
0
|
|
121
|
+
];
|
|
122
|
+
continue;
|
|
123
|
+
case 7:
|
|
124
|
+
op = _.ops.pop();
|
|
125
|
+
_.trys.pop();
|
|
126
|
+
continue;
|
|
127
|
+
default:
|
|
128
|
+
if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) {
|
|
129
|
+
_ = 0;
|
|
130
|
+
continue;
|
|
131
|
+
}
|
|
132
|
+
if (op[0] === 3 && (!t || op[1] > t[0] && op[1] < t[3])) {
|
|
133
|
+
_.label = op[1];
|
|
134
|
+
break;
|
|
135
|
+
}
|
|
136
|
+
if (op[0] === 6 && _.label < t[1]) {
|
|
137
|
+
_.label = t[1];
|
|
138
|
+
t = op;
|
|
139
|
+
break;
|
|
140
|
+
}
|
|
141
|
+
if (t && _.label < t[2]) {
|
|
142
|
+
_.label = t[2];
|
|
143
|
+
_.ops.push(op);
|
|
144
|
+
break;
|
|
145
|
+
}
|
|
146
|
+
if (t[2]) _.ops.pop();
|
|
147
|
+
_.trys.pop();
|
|
148
|
+
continue;
|
|
149
|
+
}
|
|
150
|
+
op = body.call(thisArg, _);
|
|
151
|
+
} catch (e) {
|
|
152
|
+
op = [
|
|
153
|
+
6,
|
|
154
|
+
e
|
|
155
|
+
];
|
|
156
|
+
y = 0;
|
|
157
|
+
} finally{
|
|
158
|
+
f = t = 0;
|
|
159
|
+
}
|
|
160
|
+
if (op[0] & 5) throw op[1];
|
|
161
|
+
return {
|
|
162
|
+
value: op[0] ? op[1] : void 0,
|
|
163
|
+
done: true
|
|
164
|
+
};
|
|
165
|
+
}
|
|
166
|
+
}
|
|
167
|
+
function createStdioServer(config, overrides) {
|
|
168
|
+
return _async_to_generator(function() {
|
|
169
|
+
var runtime, modules, layers, composed, logger, tools, prompts, mcpServer, close;
|
|
170
|
+
return _ts_generator(this, function(_state) {
|
|
171
|
+
switch(_state.label){
|
|
172
|
+
case 0:
|
|
173
|
+
return [
|
|
174
|
+
4,
|
|
175
|
+
(0, _runtime.createDefaultRuntime)(config, overrides)
|
|
176
|
+
];
|
|
177
|
+
case 1:
|
|
178
|
+
runtime = _state.sent();
|
|
179
|
+
modules = runtime.createDomainModules();
|
|
180
|
+
layers = runtime.middlewareFactories.map(function(factory) {
|
|
181
|
+
return factory(runtime.deps);
|
|
182
|
+
});
|
|
183
|
+
composed = (0, _server.composeMiddleware)(modules, layers);
|
|
184
|
+
logger = runtime.deps.logger;
|
|
185
|
+
tools = _to_consumable_array(composed.tools).concat(_to_consumable_array(runtime.deps.oauthAdapters.accountTools));
|
|
186
|
+
prompts = _to_consumable_array(composed.prompts).concat(_to_consumable_array(runtime.deps.oauthAdapters.accountPrompts));
|
|
187
|
+
mcpServer = new _mcp.McpServer({
|
|
188
|
+
name: config.name,
|
|
189
|
+
version: config.version
|
|
190
|
+
});
|
|
191
|
+
(0, _server.registerTools)(mcpServer, tools);
|
|
192
|
+
(0, _server.registerResources)(mcpServer, composed.resources);
|
|
193
|
+
(0, _server.registerPrompts)(mcpServer, prompts);
|
|
194
|
+
logger.info("Starting ".concat(config.name, " MCP server (stdio)"));
|
|
195
|
+
return [
|
|
196
|
+
4,
|
|
197
|
+
(0, _server.connectStdio)(mcpServer, {
|
|
198
|
+
logger: logger
|
|
199
|
+
})
|
|
200
|
+
];
|
|
201
|
+
case 2:
|
|
202
|
+
close = _state.sent().close;
|
|
203
|
+
logger.info('stdio transport ready');
|
|
204
|
+
return [
|
|
205
|
+
2,
|
|
206
|
+
{
|
|
207
|
+
mcpServer: mcpServer,
|
|
208
|
+
logger: logger,
|
|
209
|
+
close: function() {
|
|
210
|
+
return _async_to_generator(function() {
|
|
211
|
+
return _ts_generator(this, function(_state) {
|
|
212
|
+
switch(_state.label){
|
|
213
|
+
case 0:
|
|
214
|
+
return [
|
|
215
|
+
4,
|
|
216
|
+
close()
|
|
217
|
+
];
|
|
218
|
+
case 1:
|
|
219
|
+
_state.sent();
|
|
220
|
+
return [
|
|
221
|
+
4,
|
|
222
|
+
runtime.close()
|
|
223
|
+
];
|
|
224
|
+
case 2:
|
|
225
|
+
_state.sent();
|
|
226
|
+
return [
|
|
227
|
+
2
|
|
228
|
+
];
|
|
229
|
+
}
|
|
230
|
+
});
|
|
231
|
+
})();
|
|
232
|
+
}
|
|
233
|
+
}
|
|
234
|
+
];
|
|
235
|
+
}
|
|
236
|
+
});
|
|
237
|
+
})();
|
|
238
|
+
}
|
|
239
|
+
/* CJS INTEROP */ if (exports.__esModule && exports.default) { try { Object.defineProperty(exports.default, '__esModule', { value: true }); for (var key in exports) { exports.default[key] = exports[key]; } } catch (_) {}; module.exports = exports.default; }
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["/Users/kevin/Dev/Projects/ai/mcp-z/servers/mcp-outlook/src/setup/stdio.ts"],"sourcesContent":["import { composeMiddleware, connectStdio, registerPrompts, registerResources, registerTools } from '@mcp-z/server';\nimport { McpServer } from '@modelcontextprotocol/sdk/server/mcp.js';\nimport type { RuntimeOverrides, ServerConfig } from '../types.js';\nimport { createDefaultRuntime } from './runtime.js';\n\nexport async function createStdioServer(config: ServerConfig, overrides?: RuntimeOverrides) {\n const runtime = await createDefaultRuntime(config, overrides);\n const modules = runtime.createDomainModules();\n const layers = runtime.middlewareFactories.map((factory) => factory(runtime.deps));\n const composed = composeMiddleware(modules, layers);\n const logger = runtime.deps.logger;\n\n const tools = [...composed.tools, ...runtime.deps.oauthAdapters.accountTools];\n const prompts = [...composed.prompts, ...runtime.deps.oauthAdapters.accountPrompts];\n\n const mcpServer = new McpServer({ name: config.name, version: config.version });\n registerTools(mcpServer, tools);\n registerResources(mcpServer, composed.resources);\n registerPrompts(mcpServer, prompts);\n\n logger.info(`Starting ${config.name} MCP server (stdio)`);\n const { close } = await connectStdio(mcpServer, { logger });\n logger.info('stdio transport ready');\n\n return {\n mcpServer,\n logger,\n close: async () => {\n await close();\n await runtime.close();\n },\n };\n}\n"],"names":["createStdioServer","config","overrides","runtime","modules","layers","composed","logger","tools","prompts","mcpServer","close","createDefaultRuntime","createDomainModules","middlewareFactories","map","factory","deps","composeMiddleware","oauthAdapters","accountTools","accountPrompts","McpServer","name","version","registerTools","registerResources","resources","registerPrompts","info","connectStdio"],"mappings":";;;;+BAKsBA;;;eAAAA;;;sBAL6E;mBACzE;uBAEW;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAE9B,SAAeA,kBAAkBC,MAAoB,EAAEC,SAA4B;;YAClFC,SACAC,SACAC,QACAC,UACAC,QAEAC,OACAC,SAEAC,WAMEC;;;;oBAfQ;;wBAAMC,IAAAA,6BAAoB,EAACX,QAAQC;;;oBAA7CC,UAAU;oBACVC,UAAUD,QAAQU,mBAAmB;oBACrCR,SAASF,QAAQW,mBAAmB,CAACC,GAAG,CAAC,SAACC;+BAAYA,QAAQb,QAAQc,IAAI;;oBAC1EX,WAAWY,IAAAA,yBAAiB,EAACd,SAASC;oBACtCE,SAASJ,QAAQc,IAAI,CAACV,MAAM;oBAE5BC,QAAQ,AAAC,qBAAGF,SAASE,KAAK,SAAE,qBAAGL,QAAQc,IAAI,CAACE,aAAa,CAACC,YAAY;oBACtEX,UAAU,AAAC,qBAAGH,SAASG,OAAO,SAAE,qBAAGN,QAAQc,IAAI,CAACE,aAAa,CAACE,cAAc;oBAE5EX,YAAY,IAAIY,cAAS,CAAC;wBAAEC,MAAMtB,OAAOsB,IAAI;wBAAEC,SAASvB,OAAOuB,OAAO;oBAAC;oBAC7EC,IAAAA,qBAAa,EAACf,WAAWF;oBACzBkB,IAAAA,yBAAiB,EAAChB,WAAWJ,SAASqB,SAAS;oBAC/CC,IAAAA,uBAAe,EAAClB,WAAWD;oBAE3BF,OAAOsB,IAAI,CAAC,AAAC,YAAuB,OAAZ5B,OAAOsB,IAAI,EAAC;oBAClB;;wBAAMO,IAAAA,oBAAY,EAACpB,WAAW;4BAAEH,QAAAA;wBAAO;;;oBAAjDI,QAAU,cAAVA;oBACRJ,OAAOsB,IAAI,CAAC;oBAEZ;;wBAAO;4BACLnB,WAAAA;4BACAH,QAAAA;4BACAI,OAAO;;;;;gDACL;;oDAAMA;;;gDAAN;gDACA;;oDAAMR,QAAQQ,KAAK;;;gDAAnB;;;;;;gCACF;;wBACF;;;;IACF"}
|
|
@@ -0,0 +1,54 @@
|
|
|
1
|
+
import type { DcrConfig, OAuthConfig } from '@mcp-z/oauth-microsoft';
|
|
2
|
+
import type { BaseServerConfig, MiddlewareLayer, PromptModule, ResourceModule, Logger as ServerLogger, ToolModule } from '@mcp-z/server';
|
|
3
|
+
import type { Keyv } from 'keyv';
|
|
4
|
+
import type { OAuthAdapters } from './setup/oauth-microsoft.js';
|
|
5
|
+
export type Logger = Pick<Console, 'info' | 'error' | 'warn' | 'debug'>;
|
|
6
|
+
/**
|
|
7
|
+
* Composes transport config, OAuth config, and application-level config
|
|
8
|
+
*/
|
|
9
|
+
export interface ServerConfig extends BaseServerConfig, OAuthConfig {
|
|
10
|
+
logLevel: string;
|
|
11
|
+
baseDir: string;
|
|
12
|
+
name: string;
|
|
13
|
+
version: string;
|
|
14
|
+
repositoryUrl: string;
|
|
15
|
+
storageDir: string;
|
|
16
|
+
baseUrl?: string;
|
|
17
|
+
dcrConfig?: DcrConfig;
|
|
18
|
+
}
|
|
19
|
+
export interface StorageContext {
|
|
20
|
+
storageDir: string;
|
|
21
|
+
baseUrl?: string;
|
|
22
|
+
transport: BaseServerConfig['transport'];
|
|
23
|
+
}
|
|
24
|
+
export interface StorageExtra {
|
|
25
|
+
storageContext: StorageContext;
|
|
26
|
+
}
|
|
27
|
+
/** Runtime dependencies exposed to middleware/factories. */
|
|
28
|
+
export interface RuntimeDeps {
|
|
29
|
+
config: ServerConfig;
|
|
30
|
+
logger: ServerLogger;
|
|
31
|
+
tokenStore: Keyv<unknown>;
|
|
32
|
+
oauthAdapters: OAuthAdapters;
|
|
33
|
+
baseUrl?: string;
|
|
34
|
+
}
|
|
35
|
+
/** Collections of MCP modules produced by domain factories. */
|
|
36
|
+
export type DomainModules = {
|
|
37
|
+
tools: ToolModule[];
|
|
38
|
+
resources: ResourceModule[];
|
|
39
|
+
prompts: PromptModule[];
|
|
40
|
+
};
|
|
41
|
+
/** Factory that produces a middleware layer given runtime dependencies. */
|
|
42
|
+
export type MiddlewareFactory = (deps: RuntimeDeps) => MiddlewareLayer;
|
|
43
|
+
/** Shared runtime configuration returned by `createDefaultRuntime`. */
|
|
44
|
+
export interface CommonRuntime {
|
|
45
|
+
deps: RuntimeDeps;
|
|
46
|
+
middlewareFactories: MiddlewareFactory[];
|
|
47
|
+
createDomainModules: () => DomainModules;
|
|
48
|
+
close: () => Promise<void>;
|
|
49
|
+
}
|
|
50
|
+
export interface RuntimeOverrides {
|
|
51
|
+
middlewareFactories?: MiddlewareFactory[];
|
|
52
|
+
createDomainModules?: () => DomainModules;
|
|
53
|
+
}
|
|
54
|
+
export type { EmailAddress, OneDriveFile, OutlookAttachment, OutlookCalendarEvent, OutlookCategory, OutlookContact, OutlookFolder, OutlookMessage, OutlookQuery, OutlookSystemCategory, Recipient } from './schemas/index.js';
|
|
@@ -0,0 +1,54 @@
|
|
|
1
|
+
import type { DcrConfig, OAuthConfig } from '@mcp-z/oauth-microsoft';
|
|
2
|
+
import type { BaseServerConfig, MiddlewareLayer, PromptModule, ResourceModule, Logger as ServerLogger, ToolModule } from '@mcp-z/server';
|
|
3
|
+
import type { Keyv } from 'keyv';
|
|
4
|
+
import type { OAuthAdapters } from './setup/oauth-microsoft.js';
|
|
5
|
+
export type Logger = Pick<Console, 'info' | 'error' | 'warn' | 'debug'>;
|
|
6
|
+
/**
|
|
7
|
+
* Composes transport config, OAuth config, and application-level config
|
|
8
|
+
*/
|
|
9
|
+
export interface ServerConfig extends BaseServerConfig, OAuthConfig {
|
|
10
|
+
logLevel: string;
|
|
11
|
+
baseDir: string;
|
|
12
|
+
name: string;
|
|
13
|
+
version: string;
|
|
14
|
+
repositoryUrl: string;
|
|
15
|
+
storageDir: string;
|
|
16
|
+
baseUrl?: string;
|
|
17
|
+
dcrConfig?: DcrConfig;
|
|
18
|
+
}
|
|
19
|
+
export interface StorageContext {
|
|
20
|
+
storageDir: string;
|
|
21
|
+
baseUrl?: string;
|
|
22
|
+
transport: BaseServerConfig['transport'];
|
|
23
|
+
}
|
|
24
|
+
export interface StorageExtra {
|
|
25
|
+
storageContext: StorageContext;
|
|
26
|
+
}
|
|
27
|
+
/** Runtime dependencies exposed to middleware/factories. */
|
|
28
|
+
export interface RuntimeDeps {
|
|
29
|
+
config: ServerConfig;
|
|
30
|
+
logger: ServerLogger;
|
|
31
|
+
tokenStore: Keyv<unknown>;
|
|
32
|
+
oauthAdapters: OAuthAdapters;
|
|
33
|
+
baseUrl?: string;
|
|
34
|
+
}
|
|
35
|
+
/** Collections of MCP modules produced by domain factories. */
|
|
36
|
+
export type DomainModules = {
|
|
37
|
+
tools: ToolModule[];
|
|
38
|
+
resources: ResourceModule[];
|
|
39
|
+
prompts: PromptModule[];
|
|
40
|
+
};
|
|
41
|
+
/** Factory that produces a middleware layer given runtime dependencies. */
|
|
42
|
+
export type MiddlewareFactory = (deps: RuntimeDeps) => MiddlewareLayer;
|
|
43
|
+
/** Shared runtime configuration returned by `createDefaultRuntime`. */
|
|
44
|
+
export interface CommonRuntime {
|
|
45
|
+
deps: RuntimeDeps;
|
|
46
|
+
middlewareFactories: MiddlewareFactory[];
|
|
47
|
+
createDomainModules: () => DomainModules;
|
|
48
|
+
close: () => Promise<void>;
|
|
49
|
+
}
|
|
50
|
+
export interface RuntimeOverrides {
|
|
51
|
+
middlewareFactories?: MiddlewareFactory[];
|
|
52
|
+
createDomainModules?: () => DomainModules;
|
|
53
|
+
}
|
|
54
|
+
export type { EmailAddress, OneDriveFile, OutlookAttachment, OutlookCalendarEvent, OutlookCategory, OutlookContact, OutlookFolder, OutlookMessage, OutlookQuery, OutlookSystemCategory, Recipient } from './schemas/index.js';
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", {
|
|
3
|
+
value: true
|
|
4
|
+
});
|
|
5
|
+
/* CJS INTEROP */ if (exports.__esModule && exports.default) { try { Object.defineProperty(exports.default, '__esModule', { value: true }); for (var key in exports) { exports.default[key] = exports[key]; } } catch (_) {}; module.exports = exports.default; }
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":[],"names":[],"mappings":""}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Outlook MCP Server Constants
|
|
3
|
+
*
|
|
4
|
+
* These scopes are required for Microsoft Outlook functionality and are hardcoded
|
|
5
|
+
* rather than externally configured since this server knows its own requirements.
|
|
6
|
+
*/
|
|
7
|
+
export declare const MS_SCOPE = "openid profile offline_access https://graph.microsoft.com/User.Read https://graph.microsoft.com/Mail.ReadWrite https://graph.microsoft.com/Mail.Send https://graph.microsoft.com/MailboxSettings.ReadWrite";
|
|
8
|
+
export declare const CHUNK_SIZE = 10;
|
|
9
|
+
export declare const MAX_BATCH_SIZE = 500;
|
|
10
|
+
export declare const MAX_PAGE_SIZE = 1000;
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Outlook MCP Server Constants
|
|
3
|
+
*
|
|
4
|
+
* These scopes are required for Microsoft Outlook functionality and are hardcoded
|
|
5
|
+
* rather than externally configured since this server knows its own requirements.
|
|
6
|
+
*/ import { EMAIL_CHUNK_SIZE, EMAIL_MAX_BATCH_SIZE } from '@mcp-z/email';
|
|
7
|
+
// Microsoft OAuth scopes required for Outlook operations
|
|
8
|
+
export const MS_SCOPE = 'openid profile offline_access https://graph.microsoft.com/User.Read https://graph.microsoft.com/Mail.ReadWrite https://graph.microsoft.com/Mail.Send https://graph.microsoft.com/MailboxSettings.ReadWrite';
|
|
9
|
+
// Batch processing configuration (from shared email constants)
|
|
10
|
+
export const CHUNK_SIZE = EMAIL_CHUNK_SIZE;
|
|
11
|
+
export const MAX_BATCH_SIZE = EMAIL_MAX_BATCH_SIZE;
|
|
12
|
+
// Pagination configuration
|
|
13
|
+
export const MAX_PAGE_SIZE = 1000; // Maximum number of items per page
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["/Users/kevin/Dev/Projects/ai/mcp-z/servers/mcp-outlook/src/constants.ts"],"sourcesContent":["/**\n * Outlook MCP Server Constants\n *\n * These scopes are required for Microsoft Outlook functionality and are hardcoded\n * rather than externally configured since this server knows its own requirements.\n */\n\nimport { EMAIL_CHUNK_SIZE, EMAIL_MAX_BATCH_SIZE } from '@mcp-z/email';\n\n// Microsoft OAuth scopes required for Outlook operations\nexport const MS_SCOPE = 'openid profile offline_access https://graph.microsoft.com/User.Read https://graph.microsoft.com/Mail.ReadWrite https://graph.microsoft.com/Mail.Send https://graph.microsoft.com/MailboxSettings.ReadWrite';\n\n// Batch processing configuration (from shared email constants)\nexport const CHUNK_SIZE = EMAIL_CHUNK_SIZE;\nexport const MAX_BATCH_SIZE = EMAIL_MAX_BATCH_SIZE;\n\n// Pagination configuration\nexport const MAX_PAGE_SIZE = 1000; // Maximum number of items per page\n"],"names":["EMAIL_CHUNK_SIZE","EMAIL_MAX_BATCH_SIZE","MS_SCOPE","CHUNK_SIZE","MAX_BATCH_SIZE","MAX_PAGE_SIZE"],"mappings":"AAAA;;;;;CAKC,GAED,SAASA,gBAAgB,EAAEC,oBAAoB,QAAQ,eAAe;AAEtE,yDAAyD;AACzD,OAAO,MAAMC,WAAW,6MAA6M;AAErO,+DAA+D;AAC/D,OAAO,MAAMC,aAAaH,iBAAiB;AAC3C,OAAO,MAAMI,iBAAiBH,qBAAqB;AAEnD,2BAA2B;AAC3B,OAAO,MAAMI,gBAAgB,KAAK,CAAC,mCAAmC"}
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Outlook-specific message builder for composing emails using Microsoft Graph API format
|
|
3
|
+
* This is the Outlook equivalent of Gmail's RFC822 builder
|
|
4
|
+
*/
|
|
5
|
+
export interface OutlookRecipient {
|
|
6
|
+
emailAddress: {
|
|
7
|
+
address: string;
|
|
8
|
+
name?: string;
|
|
9
|
+
};
|
|
10
|
+
}
|
|
11
|
+
export interface OutlookMessageArgs {
|
|
12
|
+
to?: string | string[] | undefined;
|
|
13
|
+
cc?: string | string[] | undefined;
|
|
14
|
+
bcc?: string | string[] | undefined;
|
|
15
|
+
subject?: string;
|
|
16
|
+
body?: string;
|
|
17
|
+
from?: string;
|
|
18
|
+
importance?: 'Low' | 'Normal' | 'High';
|
|
19
|
+
contentType?: 'Text' | 'HTML';
|
|
20
|
+
}
|
|
21
|
+
export interface OutlookMessage {
|
|
22
|
+
subject?: string;
|
|
23
|
+
body?: {
|
|
24
|
+
contentType: string;
|
|
25
|
+
content: string;
|
|
26
|
+
};
|
|
27
|
+
toRecipients?: OutlookRecipient[];
|
|
28
|
+
ccRecipients?: OutlookRecipient[];
|
|
29
|
+
bccRecipients?: OutlookRecipient[];
|
|
30
|
+
importance?: string;
|
|
31
|
+
}
|
|
32
|
+
/**
|
|
33
|
+
* Build an Outlook message object from email arguments for Microsoft Graph API
|
|
34
|
+
* This is the Outlook equivalent of buildRfc822FromArgs for Gmail
|
|
35
|
+
*/
|
|
36
|
+
export declare function buildOutlookMessage(args: OutlookMessageArgs): OutlookMessage;
|
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Outlook-specific message builder for composing emails using Microsoft Graph API format
|
|
3
|
+
* This is the Outlook equivalent of Gmail's RFC822 builder
|
|
4
|
+
*/ /**
|
|
5
|
+
* Build an Outlook message object from email arguments for Microsoft Graph API
|
|
6
|
+
* This is the Outlook equivalent of buildRfc822FromArgs for Gmail
|
|
7
|
+
*/ export function buildOutlookMessage(args) {
|
|
8
|
+
const { to = [], cc = [], bcc = [], subject = '', body = '', importance = 'Normal', contentType = 'Text' } = args;
|
|
9
|
+
const message = {};
|
|
10
|
+
if (subject) {
|
|
11
|
+
message.subject = subject;
|
|
12
|
+
}
|
|
13
|
+
if (body) {
|
|
14
|
+
message.body = {
|
|
15
|
+
contentType: contentType,
|
|
16
|
+
content: body
|
|
17
|
+
};
|
|
18
|
+
}
|
|
19
|
+
function parseEmailAddresses(emails) {
|
|
20
|
+
const emailArray = Array.isArray(emails) ? emails : [
|
|
21
|
+
emails
|
|
22
|
+
];
|
|
23
|
+
return emailArray.filter((email)=>email && email.trim()).map((email)=>{
|
|
24
|
+
const trimmed = email.trim();
|
|
25
|
+
// Simple email parsing - could be enhanced for name parsing
|
|
26
|
+
return {
|
|
27
|
+
emailAddress: {
|
|
28
|
+
address: trimmed
|
|
29
|
+
}
|
|
30
|
+
};
|
|
31
|
+
});
|
|
32
|
+
}
|
|
33
|
+
if (to && (Array.isArray(to) ? to.length > 0 : to.trim())) {
|
|
34
|
+
message.toRecipients = parseEmailAddresses(to);
|
|
35
|
+
}
|
|
36
|
+
if (cc && (Array.isArray(cc) ? cc.length > 0 : cc.trim())) {
|
|
37
|
+
message.ccRecipients = parseEmailAddresses(cc);
|
|
38
|
+
}
|
|
39
|
+
if (bcc && (Array.isArray(bcc) ? bcc.length > 0 : bcc.trim())) {
|
|
40
|
+
message.bccRecipients = parseEmailAddresses(bcc);
|
|
41
|
+
}
|
|
42
|
+
if (importance && importance !== 'Normal') {
|
|
43
|
+
message.importance = importance;
|
|
44
|
+
}
|
|
45
|
+
return message;
|
|
46
|
+
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["/Users/kevin/Dev/Projects/ai/mcp-z/servers/mcp-outlook/src/email/composition/outlook-message-builder.ts"],"sourcesContent":["/**\n * Outlook-specific message builder for composing emails using Microsoft Graph API format\n * This is the Outlook equivalent of Gmail's RFC822 builder\n */\n\nexport interface OutlookRecipient {\n emailAddress: {\n address: string;\n name?: string;\n };\n}\n\nexport interface OutlookMessageArgs {\n to?: string | string[] | undefined;\n cc?: string | string[] | undefined;\n bcc?: string | string[] | undefined;\n subject?: string;\n body?: string;\n from?: string;\n importance?: 'Low' | 'Normal' | 'High';\n contentType?: 'Text' | 'HTML';\n}\n\nexport interface OutlookMessage {\n subject?: string;\n body?: {\n contentType: string;\n content: string;\n };\n toRecipients?: OutlookRecipient[];\n ccRecipients?: OutlookRecipient[];\n bccRecipients?: OutlookRecipient[];\n importance?: string;\n}\n\n/**\n * Build an Outlook message object from email arguments for Microsoft Graph API\n * This is the Outlook equivalent of buildRfc822FromArgs for Gmail\n */\nexport function buildOutlookMessage(args: OutlookMessageArgs): OutlookMessage {\n const { to = [], cc = [], bcc = [], subject = '', body = '', importance = 'Normal', contentType = 'Text' } = args;\n\n const message: OutlookMessage = {};\n\n if (subject) {\n message.subject = subject;\n }\n\n if (body) {\n message.body = {\n contentType: contentType,\n content: body,\n };\n }\n\n function parseEmailAddresses(emails: string | string[]): OutlookRecipient[] {\n const emailArray = Array.isArray(emails) ? emails : [emails];\n return emailArray\n .filter((email) => email && email.trim())\n .map((email) => {\n const trimmed = email.trim();\n // Simple email parsing - could be enhanced for name parsing\n return {\n emailAddress: {\n address: trimmed,\n },\n };\n });\n }\n\n if (to && (Array.isArray(to) ? to.length > 0 : to.trim())) {\n message.toRecipients = parseEmailAddresses(to);\n }\n\n if (cc && (Array.isArray(cc) ? cc.length > 0 : cc.trim())) {\n message.ccRecipients = parseEmailAddresses(cc);\n }\n\n if (bcc && (Array.isArray(bcc) ? bcc.length > 0 : bcc.trim())) {\n message.bccRecipients = parseEmailAddresses(bcc);\n }\n\n if (importance && importance !== 'Normal') {\n message.importance = importance;\n }\n\n return message;\n}\n"],"names":["buildOutlookMessage","args","to","cc","bcc","subject","body","importance","contentType","message","content","parseEmailAddresses","emails","emailArray","Array","isArray","filter","email","trim","map","trimmed","emailAddress","address","length","toRecipients","ccRecipients","bccRecipients"],"mappings":"AAAA;;;CAGC,GAgCD;;;CAGC,GACD,OAAO,SAASA,oBAAoBC,IAAwB;IAC1D,MAAM,EAAEC,KAAK,EAAE,EAAEC,KAAK,EAAE,EAAEC,MAAM,EAAE,EAAEC,UAAU,EAAE,EAAEC,OAAO,EAAE,EAAEC,aAAa,QAAQ,EAAEC,cAAc,MAAM,EAAE,GAAGP;IAE7G,MAAMQ,UAA0B,CAAC;IAEjC,IAAIJ,SAAS;QACXI,QAAQJ,OAAO,GAAGA;IACpB;IAEA,IAAIC,MAAM;QACRG,QAAQH,IAAI,GAAG;YACbE,aAAaA;YACbE,SAASJ;QACX;IACF;IAEA,SAASK,oBAAoBC,MAAyB;QACpD,MAAMC,aAAaC,MAAMC,OAAO,CAACH,UAAUA,SAAS;YAACA;SAAO;QAC5D,OAAOC,WACJG,MAAM,CAAC,CAACC,QAAUA,SAASA,MAAMC,IAAI,IACrCC,GAAG,CAAC,CAACF;YACJ,MAAMG,UAAUH,MAAMC,IAAI;YAC1B,4DAA4D;YAC5D,OAAO;gBACLG,cAAc;oBACZC,SAASF;gBACX;YACF;QACF;IACJ;IAEA,IAAIlB,MAAOY,CAAAA,MAAMC,OAAO,CAACb,MAAMA,GAAGqB,MAAM,GAAG,IAAIrB,GAAGgB,IAAI,EAAC,GAAI;QACzDT,QAAQe,YAAY,GAAGb,oBAAoBT;IAC7C;IAEA,IAAIC,MAAOW,CAAAA,MAAMC,OAAO,CAACZ,MAAMA,GAAGoB,MAAM,GAAG,IAAIpB,GAAGe,IAAI,EAAC,GAAI;QACzDT,QAAQgB,YAAY,GAAGd,oBAAoBR;IAC7C;IAEA,IAAIC,OAAQU,CAAAA,MAAMC,OAAO,CAACX,OAAOA,IAAImB,MAAM,GAAG,IAAInB,IAAIc,IAAI,EAAC,GAAI;QAC7DT,QAAQiB,aAAa,GAAGf,oBAAoBP;IAC9C;IAEA,IAAIG,cAAcA,eAAe,UAAU;QACzCE,QAAQF,UAAU,GAAGA;IACvB;IAEA,OAAOE;AACT"}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import { buildContentForItems } from '@mcp-z/email';
|
|
2
|
+
import type { OutlookMessage } from '../../lib/outlook/types.js';
|
|
3
|
+
export { buildContentForItems };
|
|
4
|
+
export declare function toRowFromOutlook(msg: OutlookMessage, opts?: {
|
|
5
|
+
body?: boolean;
|
|
6
|
+
addressFormat?: 'email' | 'name' | 'raw';
|
|
7
|
+
}): string[];
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
import { buildContentForItems, stripHtml, normalizeDateToISO as toIsoUtc } from '@mcp-z/email';
|
|
2
|
+
import { extractFrom, formatAddressList } from '../parsing/header-parsing.js';
|
|
3
|
+
export { buildContentForItems };
|
|
4
|
+
export function toRowFromOutlook(msg, opts = {
|
|
5
|
+
body: false,
|
|
6
|
+
addressFormat: 'email'
|
|
7
|
+
}) {
|
|
8
|
+
var _msg_id, _msg_conversationId, _extractFrom, _msg_subject, _msg_bodyPreview;
|
|
9
|
+
const id = (_msg_id = msg.id) !== null && _msg_id !== void 0 ? _msg_id : '';
|
|
10
|
+
const provider = 'outlook';
|
|
11
|
+
const threadId = (_msg_conversationId = msg.conversationId) !== null && _msg_conversationId !== void 0 ? _msg_conversationId : '';
|
|
12
|
+
const to = msg.toRecipients ? formatAddressList(msg.toRecipients, opts.addressFormat) : '';
|
|
13
|
+
const from = msg.from ? (_extractFrom = extractFrom(msg.from)) !== null && _extractFrom !== void 0 ? _extractFrom : '' : '';
|
|
14
|
+
const cc = msg.ccRecipients ? formatAddressList(msg.ccRecipients, opts.addressFormat) : '';
|
|
15
|
+
const bcc = msg.bccRecipients ? formatAddressList(msg.bccRecipients, opts.addressFormat) : '';
|
|
16
|
+
const date = msg.receivedDateTime ? toIsoUtc(msg.receivedDateTime) || msg.receivedDateTime : '';
|
|
17
|
+
const subject = (_msg_subject = msg.subject) !== null && _msg_subject !== void 0 ? _msg_subject : '';
|
|
18
|
+
const labels = msg.categories ? msg.categories.join(';') : '';
|
|
19
|
+
const snippet = (_msg_bodyPreview = msg.bodyPreview) !== null && _msg_bodyPreview !== void 0 ? _msg_bodyPreview : '';
|
|
20
|
+
let bodyFull = '';
|
|
21
|
+
if (opts.body && msg.body) {
|
|
22
|
+
var _msg_body_content;
|
|
23
|
+
const raw = (_msg_body_content = msg.body.content) !== null && _msg_body_content !== void 0 ? _msg_body_content : '';
|
|
24
|
+
if (raw) {
|
|
25
|
+
bodyFull = msg.body.contentType && msg.body.contentType.toLowerCase() === 'html' ? stripHtml(raw) : String(raw);
|
|
26
|
+
}
|
|
27
|
+
}
|
|
28
|
+
return [
|
|
29
|
+
id,
|
|
30
|
+
provider,
|
|
31
|
+
threadId,
|
|
32
|
+
to,
|
|
33
|
+
from,
|
|
34
|
+
cc,
|
|
35
|
+
bcc,
|
|
36
|
+
date,
|
|
37
|
+
subject,
|
|
38
|
+
labels,
|
|
39
|
+
snippet,
|
|
40
|
+
bodyFull
|
|
41
|
+
];
|
|
42
|
+
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["/Users/kevin/Dev/Projects/ai/mcp-z/servers/mcp-outlook/src/email/messages/messages.ts"],"sourcesContent":["import { buildContentForItems, stripHtml, normalizeDateToISO as toIsoUtc } from '@mcp-z/email';\nimport type { OutlookMessage } from '../../lib/outlook/types.js';\nimport { extractFrom, formatAddressList } from '../parsing/header-parsing.js';\n\nexport { buildContentForItems };\n\nexport function toRowFromOutlook(msg: OutlookMessage, opts: { body?: boolean; addressFormat?: 'email' | 'name' | 'raw' } = { body: false, addressFormat: 'email' }) {\n const id = msg.id ?? '';\n const provider = 'outlook';\n const threadId = msg.conversationId ?? '';\n const to = msg.toRecipients ? formatAddressList(msg.toRecipients, opts.addressFormat) : '';\n const from = msg.from ? (extractFrom(msg.from) ?? '') : '';\n const cc = msg.ccRecipients ? formatAddressList(msg.ccRecipients, opts.addressFormat) : '';\n const bcc = msg.bccRecipients ? formatAddressList(msg.bccRecipients, opts.addressFormat) : '';\n const date = msg.receivedDateTime ? toIsoUtc(msg.receivedDateTime) || msg.receivedDateTime : '';\n const subject = msg.subject ?? '';\n const labels = msg.categories ? msg.categories.join(';') : '';\n const snippet = msg.bodyPreview ?? '';\n let bodyFull = '';\n if (opts.body && msg.body) {\n const raw = msg.body.content ?? '';\n if (raw) {\n bodyFull = msg.body.contentType && msg.body.contentType.toLowerCase() === 'html' ? stripHtml(raw) : String(raw);\n }\n }\n return [id, provider, threadId, to, from, cc, bcc, date, subject, labels, snippet, bodyFull];\n}\n"],"names":["buildContentForItems","stripHtml","normalizeDateToISO","toIsoUtc","extractFrom","formatAddressList","toRowFromOutlook","msg","opts","body","addressFormat","id","provider","threadId","conversationId","to","toRecipients","from","cc","ccRecipients","bcc","bccRecipients","date","receivedDateTime","subject","labels","categories","join","snippet","bodyPreview","bodyFull","raw","content","contentType","toLowerCase","String"],"mappings":"AAAA,SAASA,oBAAoB,EAAEC,SAAS,EAAEC,sBAAsBC,QAAQ,QAAQ,eAAe;AAE/F,SAASC,WAAW,EAAEC,iBAAiB,QAAQ,+BAA+B;AAE9E,SAASL,oBAAoB,GAAG;AAEhC,OAAO,SAASM,iBAAiBC,GAAmB,EAAEC,OAAqE;IAAEC,MAAM;IAAOC,eAAe;AAAQ,CAAC;QACrJH,SAEMA,qBAEQH,cAITG,cAEAA;IAVhB,MAAMI,MAAKJ,UAAAA,IAAII,EAAE,cAANJ,qBAAAA,UAAU;IACrB,MAAMK,WAAW;IACjB,MAAMC,YAAWN,sBAAAA,IAAIO,cAAc,cAAlBP,iCAAAA,sBAAsB;IACvC,MAAMQ,KAAKR,IAAIS,YAAY,GAAGX,kBAAkBE,IAAIS,YAAY,EAAER,KAAKE,aAAa,IAAI;IACxF,MAAMO,OAAOV,IAAIU,IAAI,IAAIb,eAAAA,YAAYG,IAAIU,IAAI,eAApBb,0BAAAA,eAAyB,KAAM;IACxD,MAAMc,KAAKX,IAAIY,YAAY,GAAGd,kBAAkBE,IAAIY,YAAY,EAAEX,KAAKE,aAAa,IAAI;IACxF,MAAMU,MAAMb,IAAIc,aAAa,GAAGhB,kBAAkBE,IAAIc,aAAa,EAAEb,KAAKE,aAAa,IAAI;IAC3F,MAAMY,OAAOf,IAAIgB,gBAAgB,GAAGpB,SAASI,IAAIgB,gBAAgB,KAAKhB,IAAIgB,gBAAgB,GAAG;IAC7F,MAAMC,WAAUjB,eAAAA,IAAIiB,OAAO,cAAXjB,0BAAAA,eAAe;IAC/B,MAAMkB,SAASlB,IAAImB,UAAU,GAAGnB,IAAImB,UAAU,CAACC,IAAI,CAAC,OAAO;IAC3D,MAAMC,WAAUrB,mBAAAA,IAAIsB,WAAW,cAAftB,8BAAAA,mBAAmB;IACnC,IAAIuB,WAAW;IACf,IAAItB,KAAKC,IAAI,IAAIF,IAAIE,IAAI,EAAE;YACbF;QAAZ,MAAMwB,OAAMxB,oBAAAA,IAAIE,IAAI,CAACuB,OAAO,cAAhBzB,+BAAAA,oBAAoB;QAChC,IAAIwB,KAAK;YACPD,WAAWvB,IAAIE,IAAI,CAACwB,WAAW,IAAI1B,IAAIE,IAAI,CAACwB,WAAW,CAACC,WAAW,OAAO,SAASjC,UAAU8B,OAAOI,OAAOJ;QAC7G;IACF;IACA,OAAO;QAACpB;QAAIC;QAAUC;QAAUE;QAAIE;QAAMC;QAAIE;QAAKE;QAAME;QAASC;QAAQG;QAASE;KAAS;AAC9F"}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
export declare function extractEmailsFromRecipients(recipients: Array<{
|
|
2
|
+
emailAddress?: {
|
|
3
|
+
address?: string;
|
|
4
|
+
name?: string;
|
|
5
|
+
};
|
|
6
|
+
}>, mode?: 'email' | 'name' | 'raw'): string[];
|
|
7
|
+
export declare function formatAddressList(recipients: Array<{
|
|
8
|
+
emailAddress?: {
|
|
9
|
+
address?: string;
|
|
10
|
+
name?: string;
|
|
11
|
+
};
|
|
12
|
+
}>, mode?: 'email' | 'name' | 'raw'): string;
|
|
13
|
+
export declare function extractFrom(from: {
|
|
14
|
+
emailAddress?: {
|
|
15
|
+
address?: string;
|
|
16
|
+
name?: string;
|
|
17
|
+
};
|
|
18
|
+
} | undefined): string | undefined;
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
export function extractEmailsFromRecipients(recipients, mode = 'email') {
|
|
2
|
+
if (!Array.isArray(recipients)) return [];
|
|
3
|
+
return recipients.map((r)=>{
|
|
4
|
+
var _ref, _ref1;
|
|
5
|
+
var _r_emailAddress, _r_emailAddress1;
|
|
6
|
+
const name = (_ref = r === null || r === void 0 ? void 0 : (_r_emailAddress = r.emailAddress) === null || _r_emailAddress === void 0 ? void 0 : _r_emailAddress.name) !== null && _ref !== void 0 ? _ref : '';
|
|
7
|
+
const email = (_ref1 = r === null || r === void 0 ? void 0 : (_r_emailAddress1 = r.emailAddress) === null || _r_emailAddress1 === void 0 ? void 0 : _r_emailAddress1.address) !== null && _ref1 !== void 0 ? _ref1 : '';
|
|
8
|
+
return mode === 'email' ? email : mode === 'name' ? name || email : `${name} <${email}>`;
|
|
9
|
+
}).filter(Boolean);
|
|
10
|
+
}
|
|
11
|
+
export function formatAddressList(recipients, mode = 'email') {
|
|
12
|
+
return extractEmailsFromRecipients(recipients, mode).join(', ');
|
|
13
|
+
}
|
|
14
|
+
export function extractFrom(from) {
|
|
15
|
+
var _from_emailAddress, _from_emailAddress1;
|
|
16
|
+
if (!from) return undefined;
|
|
17
|
+
return ((_from_emailAddress = from.emailAddress) === null || _from_emailAddress === void 0 ? void 0 : _from_emailAddress.address) || ((_from_emailAddress1 = from.emailAddress) === null || _from_emailAddress1 === void 0 ? void 0 : _from_emailAddress1.name) || undefined;
|
|
18
|
+
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["/Users/kevin/Dev/Projects/ai/mcp-z/servers/mcp-outlook/src/email/parsing/header-parsing.ts"],"sourcesContent":["export function extractEmailsFromRecipients(recipients: Array<{ emailAddress?: { address?: string; name?: string } }>, mode: 'email' | 'name' | 'raw' = 'email'): string[] {\n if (!Array.isArray(recipients)) return [];\n return recipients\n .map((r) => {\n const name = r?.emailAddress?.name ?? '';\n const email = r?.emailAddress?.address ?? '';\n return mode === 'email' ? email : mode === 'name' ? name || email : `${name} <${email}>`;\n })\n .filter(Boolean);\n}\n\nexport function formatAddressList(recipients: Array<{ emailAddress?: { address?: string; name?: string } }>, mode: 'email' | 'name' | 'raw' = 'email'): string {\n return extractEmailsFromRecipients(recipients, mode).join(', ');\n}\n\nexport function extractFrom(from: { emailAddress?: { address?: string; name?: string } } | undefined): string | undefined {\n if (!from) return undefined;\n return from.emailAddress?.address || from.emailAddress?.name || undefined;\n}\n"],"names":["extractEmailsFromRecipients","recipients","mode","Array","isArray","map","r","name","emailAddress","email","address","filter","Boolean","formatAddressList","join","extractFrom","from","undefined"],"mappings":"AAAA,OAAO,SAASA,4BAA4BC,UAAyE,EAAEC,OAAiC,OAAO;IAC7J,IAAI,CAACC,MAAMC,OAAO,CAACH,aAAa,OAAO,EAAE;IACzC,OAAOA,WACJI,GAAG,CAAC,CAACC;;YACSA,iBACCA;QADd,MAAMC,eAAOD,cAAAA,yBAAAA,kBAAAA,EAAGE,YAAY,cAAfF,sCAAAA,gBAAiBC,IAAI,uCAAI;QACtC,MAAME,iBAAQH,cAAAA,yBAAAA,mBAAAA,EAAGE,YAAY,cAAfF,uCAAAA,iBAAiBI,OAAO,yCAAI;QAC1C,OAAOR,SAAS,UAAUO,QAAQP,SAAS,SAASK,QAAQE,QAAQ,GAAGF,KAAK,EAAE,EAAEE,MAAM,CAAC,CAAC;IAC1F,GACCE,MAAM,CAACC;AACZ;AAEA,OAAO,SAASC,kBAAkBZ,UAAyE,EAAEC,OAAiC,OAAO;IACnJ,OAAOF,4BAA4BC,YAAYC,MAAMY,IAAI,CAAC;AAC5D;AAEA,OAAO,SAASC,YAAYC,IAAwE;QAE3FA,oBAA8BA;IADrC,IAAI,CAACA,MAAM,OAAOC;IAClB,OAAOD,EAAAA,qBAAAA,KAAKR,YAAY,cAAjBQ,yCAAAA,mBAAmBN,OAAO,OAAIM,sBAAAA,KAAKR,YAAY,cAAjBQ,0CAAAA,oBAAmBT,IAAI,KAAIU;AAClE"}
|
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
import type { Client } from '@microsoft/microsoft-graph-client';
|
|
2
|
+
import { type NormalizedMessage } from './message-mapping.js';
|
|
3
|
+
/** Fetch a single Outlook message. Throws on non-OK Graph responses. */
|
|
4
|
+
export declare function fetchOutlookMessage(graph: Client, id: string): Promise<NormalizedMessage>;
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
import { mapOutlookMessage } from './message-mapping.js';
|
|
2
|
+
/** Fetch a single Outlook message. Throws on non-OK Graph responses. */ export async function fetchOutlookMessage(graph, id) {
|
|
3
|
+
if (!id) throw new Error('fetchOutlookMessage: id required');
|
|
4
|
+
const selectFields = [
|
|
5
|
+
'id',
|
|
6
|
+
'conversationId',
|
|
7
|
+
'receivedDateTime',
|
|
8
|
+
'subject',
|
|
9
|
+
'from',
|
|
10
|
+
'toRecipients',
|
|
11
|
+
'ccRecipients',
|
|
12
|
+
'bccRecipients',
|
|
13
|
+
'bodyPreview',
|
|
14
|
+
'categories',
|
|
15
|
+
'body'
|
|
16
|
+
];
|
|
17
|
+
try {
|
|
18
|
+
const data = await graph.api(`/me/messages/${encodeURIComponent(id)}`).select(selectFields.join(',')).get();
|
|
19
|
+
return mapOutlookMessage(data, {
|
|
20
|
+
preferHtml: true
|
|
21
|
+
});
|
|
22
|
+
} catch (e) {
|
|
23
|
+
const status = (e === null || e === void 0 ? void 0 : e.status) || (e === null || e === void 0 ? void 0 : e.code) || 'unknown';
|
|
24
|
+
throw new Error(`outlook.fetchMessage: failed (${status})`);
|
|
25
|
+
}
|
|
26
|
+
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["/Users/kevin/Dev/Projects/ai/mcp-z/servers/mcp-outlook/src/email/parsing/message-extraction.ts"],"sourcesContent":["import type { Client } from '@microsoft/microsoft-graph-client';\nimport type { OutlookMessage } from '../../lib/outlook/types.js';\nimport { mapOutlookMessage, type NormalizedMessage } from './message-mapping.js';\n\n/** Fetch a single Outlook message. Throws on non-OK Graph responses. */\nexport async function fetchOutlookMessage(graph: Client, id: string): Promise<NormalizedMessage> {\n if (!id) throw new Error('fetchOutlookMessage: id required');\n const selectFields = ['id', 'conversationId', 'receivedDateTime', 'subject', 'from', 'toRecipients', 'ccRecipients', 'bccRecipients', 'bodyPreview', 'categories', 'body'];\n try {\n const data: unknown = await graph\n .api(`/me/messages/${encodeURIComponent(id)}`)\n .select(selectFields.join(','))\n .get();\n return mapOutlookMessage(data as OutlookMessage, { preferHtml: true });\n } catch (e: unknown) {\n const status = (e as Record<string, unknown>)?.status || (e as Record<string, unknown>)?.code || 'unknown';\n throw new Error(`outlook.fetchMessage: failed (${status})`);\n }\n}\n"],"names":["mapOutlookMessage","fetchOutlookMessage","graph","id","Error","selectFields","data","api","encodeURIComponent","select","join","get","preferHtml","e","status","code"],"mappings":"AAEA,SAASA,iBAAiB,QAAgC,uBAAuB;AAEjF,sEAAsE,GACtE,OAAO,eAAeC,oBAAoBC,KAAa,EAAEC,EAAU;IACjE,IAAI,CAACA,IAAI,MAAM,IAAIC,MAAM;IACzB,MAAMC,eAAe;QAAC;QAAM;QAAkB;QAAoB;QAAW;QAAQ;QAAgB;QAAgB;QAAiB;QAAe;QAAc;KAAO;IAC1K,IAAI;QACF,MAAMC,OAAgB,MAAMJ,MACzBK,GAAG,CAAC,CAAC,aAAa,EAAEC,mBAAmBL,KAAK,EAC5CM,MAAM,CAACJ,aAAaK,IAAI,CAAC,MACzBC,GAAG;QACN,OAAOX,kBAAkBM,MAAwB;YAAEM,YAAY;QAAK;IACtE,EAAE,OAAOC,GAAY;QACnB,MAAMC,SAAS,CAACD,cAAAA,wBAAD,AAACA,EAA+BC,MAAM,MAAKD,cAAAA,wBAAD,AAACA,EAA+BE,IAAI,KAAI;QACjG,MAAM,IAAIX,MAAM,CAAC,8BAA8B,EAAEU,OAAO,CAAC,CAAC;IAC5D;AACF"}
|