@mcp-z/mcp-gmail 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 +167 -0
- package/bin/server.js +5 -0
- package/dist/cjs/constants.d.cts +11 -0
- package/dist/cjs/constants.d.ts +11 -0
- package/dist/cjs/constants.js +39 -0
- package/dist/cjs/constants.js.map +1 -0
- package/dist/cjs/email/composition/rfc822-builder.d.cts +11 -0
- package/dist/cjs/email/composition/rfc822-builder.d.ts +11 -0
- package/dist/cjs/email/composition/rfc822-builder.js +24 -0
- package/dist/cjs/email/composition/rfc822-builder.js.map +1 -0
- package/dist/cjs/email/messages/fetch-message.d.cts +24 -0
- package/dist/cjs/email/messages/fetch-message.d.ts +24 -0
- package/dist/cjs/email/messages/fetch-message.js +367 -0
- package/dist/cjs/email/messages/fetch-message.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 +146 -0
- package/dist/cjs/email/messages/messages.js.map +1 -0
- package/dist/cjs/email/parsing/header-parsing.d.cts +1 -0
- package/dist/cjs/email/parsing/header-parsing.d.ts +1 -0
- package/dist/cjs/email/parsing/header-parsing.js +20 -0
- package/dist/cjs/email/parsing/header-parsing.js.map +1 -0
- package/dist/cjs/email/parsing/headers-utils.d.cts +5 -0
- package/dist/cjs/email/parsing/headers-utils.d.ts +5 -0
- package/dist/cjs/email/parsing/headers-utils.js +46 -0
- package/dist/cjs/email/parsing/headers-utils.js.map +1 -0
- package/dist/cjs/email/parsing/html-processing.d.cts +8 -0
- package/dist/cjs/email/parsing/html-processing.d.ts +8 -0
- package/dist/cjs/email/parsing/html-processing.js +72 -0
- package/dist/cjs/email/parsing/html-processing.js.map +1 -0
- package/dist/cjs/email/parsing/message-extraction.d.cts +2 -0
- package/dist/cjs/email/parsing/message-extraction.d.ts +2 -0
- package/dist/cjs/email/parsing/message-extraction.js +25 -0
- package/dist/cjs/email/parsing/message-extraction.js.map +1 -0
- package/dist/cjs/email/querying/execute-query.d.cts +17 -0
- package/dist/cjs/email/querying/execute-query.d.ts +17 -0
- package/dist/cjs/email/querying/execute-query.js +265 -0
- package/dist/cjs/email/querying/execute-query.js.map +1 -0
- package/dist/cjs/email/querying/pagination.d.cts +27 -0
- package/dist/cjs/email/querying/pagination.d.ts +27 -0
- package/dist/cjs/email/querying/pagination.js +533 -0
- package/dist/cjs/email/querying/pagination.js.map +1 -0
- package/dist/cjs/email/querying/query-builder.d.cts +47 -0
- package/dist/cjs/email/querying/query-builder.d.ts +47 -0
- package/dist/cjs/email/querying/query-builder.js +387 -0
- package/dist/cjs/email/querying/query-builder.js.map +1 -0
- package/dist/cjs/email/querying/search-execution.d.cts +29 -0
- package/dist/cjs/email/querying/search-execution.d.ts +29 -0
- package/dist/cjs/email/querying/search-execution.js +190 -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/labels/gmail-labels.d.cts +2 -0
- package/dist/cjs/labels/gmail-labels.d.ts +2 -0
- package/dist/cjs/labels/gmail-labels.js +206 -0
- package/dist/cjs/labels/gmail-labels.js.map +1 -0
- package/dist/cjs/lib/base64-encoding.d.cts +2 -0
- package/dist/cjs/lib/base64-encoding.d.ts +2 -0
- package/dist/cjs/lib/base64-encoding.js +32 -0
- package/dist/cjs/lib/base64-encoding.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/date-conversion.d.cts +1 -0
- package/dist/cjs/lib/date-conversion.d.ts +1 -0
- package/dist/cjs/lib/date-conversion.js +16 -0
- package/dist/cjs/lib/date-conversion.js.map +1 -0
- package/dist/cjs/lib/messages-to-row.d.cts +61 -0
- package/dist/cjs/lib/messages-to-row.d.ts +61 -0
- package/dist/cjs/lib/messages-to-row.js +243 -0
- package/dist/cjs/lib/messages-to-row.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 +256 -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 +58 -0
- package/dist/cjs/mcp/tools/categories-list.d.ts +58 -0
- package/dist/cjs/mcp/tools/categories-list.js +298 -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 +61 -0
- package/dist/cjs/mcp/tools/label-add.d.ts +61 -0
- package/dist/cjs/mcp/tools/label-add.js +280 -0
- package/dist/cjs/mcp/tools/label-add.js.map +1 -0
- package/dist/cjs/mcp/tools/label-delete.d.cts +71 -0
- package/dist/cjs/mcp/tools/label-delete.d.ts +71 -0
- package/dist/cjs/mcp/tools/label-delete.js +476 -0
- package/dist/cjs/mcp/tools/label-delete.js.map +1 -0
- package/dist/cjs/mcp/tools/labels-list.d.cts +75 -0
- package/dist/cjs/mcp/tools/labels-list.d.ts +75 -0
- package/dist/cjs/mcp/tools/labels-list.js +298 -0
- package/dist/cjs/mcp/tools/labels-list.js.map +1 -0
- package/dist/cjs/mcp/tools/message-get.d.cts +146 -0
- package/dist/cjs/mcp/tools/message-get.d.ts +146 -0
- package/dist/cjs/mcp/tools/message-get.js +317 -0
- package/dist/cjs/mcp/tools/message-get.js.map +1 -0
- package/dist/cjs/mcp/tools/message-mark-read.d.cts +50 -0
- package/dist/cjs/mcp/tools/message-mark-read.d.ts +50 -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 +71 -0
- package/dist/cjs/mcp/tools/message-move-to-trash.d.ts +71 -0
- package/dist/cjs/mcp/tools/message-move-to-trash.js +450 -0
- package/dist/cjs/mcp/tools/message-move-to-trash.js.map +1 -0
- package/dist/cjs/mcp/tools/message-respond.d.cts +60 -0
- package/dist/cjs/mcp/tools/message-respond.d.ts +60 -0
- package/dist/cjs/mcp/tools/message-respond.js +367 -0
- package/dist/cjs/mcp/tools/message-respond.js.map +1 -0
- package/dist/cjs/mcp/tools/message-search.d.cts +182 -0
- package/dist/cjs/mcp/tools/message-search.d.ts +182 -0
- package/dist/cjs/mcp/tools/message-search.js +405 -0
- package/dist/cjs/mcp/tools/message-search.js.map +1 -0
- package/dist/cjs/mcp/tools/message-send.d.cts +87 -0
- package/dist/cjs/mcp/tools/message-send.d.ts +87 -0
- package/dist/cjs/mcp/tools/message-send.js +288 -0
- package/dist/cjs/mcp/tools/message-send.js.map +1 -0
- package/dist/cjs/mcp/tools/messages-export-csv.d.cts +84 -0
- package/dist/cjs/mcp/tools/messages-export-csv.d.ts +84 -0
- package/dist/cjs/mcp/tools/messages-export-csv.js +530 -0
- package/dist/cjs/mcp/tools/messages-export-csv.js.map +1 -0
- package/dist/cjs/package.json +1 -0
- package/dist/cjs/schemas/gmail-query-schema.d.cts +36 -0
- package/dist/cjs/schemas/gmail-query-schema.d.ts +36 -0
- package/dist/cjs/schemas/gmail-query-schema.js +117 -0
- package/dist/cjs/schemas/gmail-query-schema.js.map +1 -0
- package/dist/cjs/schemas/index.d.cts +1 -0
- package/dist/cjs/schemas/index.d.ts +1 -0
- package/dist/cjs/schemas/index.js +19 -0
- package/dist/cjs/schemas/index.js.map +1 -0
- package/dist/cjs/setup/config.d.cts +48 -0
- package/dist/cjs/setup/config.d.ts +48 -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-google.d.cts +54 -0
- package/dist/cjs/setup/oauth-google.d.ts +54 -0
- package/dist/cjs/setup/oauth-google.js +332 -0
- package/dist/cjs/setup/oauth-google.js.map +1 -0
- package/dist/cjs/setup/runtime.d.cts +12 -0
- package/dist/cjs/setup/runtime.d.ts +12 -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 +11 -0
- package/dist/esm/constants.js +14 -0
- package/dist/esm/constants.js.map +1 -0
- package/dist/esm/email/composition/rfc822-builder.d.ts +11 -0
- package/dist/esm/email/composition/rfc822-builder.js +13 -0
- package/dist/esm/email/composition/rfc822-builder.js.map +1 -0
- package/dist/esm/email/messages/fetch-message.d.ts +24 -0
- package/dist/esm/email/messages/fetch-message.js +123 -0
- package/dist/esm/email/messages/fetch-message.js.map +1 -0
- package/dist/esm/email/messages/messages.d.ts +7 -0
- package/dist/esm/email/messages/messages.js +91 -0
- package/dist/esm/email/messages/messages.js.map +1 -0
- package/dist/esm/email/parsing/header-parsing.d.ts +1 -0
- package/dist/esm/email/parsing/header-parsing.js +1 -0
- package/dist/esm/email/parsing/header-parsing.js.map +1 -0
- package/dist/esm/email/parsing/headers-utils.d.ts +5 -0
- package/dist/esm/email/parsing/headers-utils.js +25 -0
- package/dist/esm/email/parsing/headers-utils.js.map +1 -0
- package/dist/esm/email/parsing/html-processing.d.ts +8 -0
- package/dist/esm/email/parsing/html-processing.js +39 -0
- package/dist/esm/email/parsing/html-processing.js.map +1 -0
- package/dist/esm/email/parsing/message-extraction.d.ts +2 -0
- package/dist/esm/email/parsing/message-extraction.js +3 -0
- package/dist/esm/email/parsing/message-extraction.js.map +1 -0
- package/dist/esm/email/querying/execute-query.d.ts +17 -0
- package/dist/esm/email/querying/execute-query.js +45 -0
- package/dist/esm/email/querying/execute-query.js.map +1 -0
- package/dist/esm/email/querying/pagination.d.ts +27 -0
- package/dist/esm/email/querying/pagination.js +152 -0
- package/dist/esm/email/querying/pagination.js.map +1 -0
- package/dist/esm/email/querying/query-builder.d.ts +47 -0
- package/dist/esm/email/querying/query-builder.js +306 -0
- package/dist/esm/email/querying/query-builder.js.map +1 -0
- package/dist/esm/email/querying/search-execution.d.ts +29 -0
- package/dist/esm/email/querying/search-execution.js +35 -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/labels/gmail-labels.d.ts +2 -0
- package/dist/esm/labels/gmail-labels.js +43 -0
- package/dist/esm/labels/gmail-labels.js.map +1 -0
- package/dist/esm/lib/base64-encoding.d.ts +2 -0
- package/dist/esm/lib/base64-encoding.js +13 -0
- package/dist/esm/lib/base64-encoding.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/date-conversion.d.ts +1 -0
- package/dist/esm/lib/date-conversion.js +5 -0
- package/dist/esm/lib/date-conversion.js.map +1 -0
- package/dist/esm/lib/messages-to-row.d.ts +61 -0
- package/dist/esm/lib/messages-to-row.js +188 -0
- package/dist/esm/lib/messages-to-row.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 +74 -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 +92 -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 +58 -0
- package/dist/esm/mcp/tools/categories-list.js +124 -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 +61 -0
- package/dist/esm/mcp/tools/label-add.js +101 -0
- package/dist/esm/mcp/tools/label-add.js.map +1 -0
- package/dist/esm/mcp/tools/label-delete.d.ts +71 -0
- package/dist/esm/mcp/tools/label-delete.js +186 -0
- package/dist/esm/mcp/tools/label-delete.js.map +1 -0
- package/dist/esm/mcp/tools/labels-list.d.ts +75 -0
- package/dist/esm/mcp/tools/labels-list.js +122 -0
- package/dist/esm/mcp/tools/labels-list.js.map +1 -0
- package/dist/esm/mcp/tools/message-get.d.ts +146 -0
- package/dist/esm/mcp/tools/message-get.js +145 -0
- package/dist/esm/mcp/tools/message-get.js.map +1 -0
- package/dist/esm/mcp/tools/message-mark-read.d.ts +50 -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 +71 -0
- package/dist/esm/mcp/tools/message-move-to-trash.js +167 -0
- package/dist/esm/mcp/tools/message-move-to-trash.js.map +1 -0
- package/dist/esm/mcp/tools/message-respond.d.ts +60 -0
- package/dist/esm/mcp/tools/message-respond.js +152 -0
- package/dist/esm/mcp/tools/message-respond.js.map +1 -0
- package/dist/esm/mcp/tools/message-search.d.ts +182 -0
- package/dist/esm/mcp/tools/message-search.js +180 -0
- package/dist/esm/mcp/tools/message-search.js.map +1 -0
- package/dist/esm/mcp/tools/message-send.d.ts +87 -0
- package/dist/esm/mcp/tools/message-send.js +115 -0
- package/dist/esm/mcp/tools/message-send.js.map +1 -0
- package/dist/esm/mcp/tools/messages-export-csv.d.ts +84 -0
- package/dist/esm/mcp/tools/messages-export-csv.js +261 -0
- package/dist/esm/mcp/tools/messages-export-csv.js.map +1 -0
- package/dist/esm/package.json +1 -0
- package/dist/esm/schemas/gmail-query-schema.d.ts +36 -0
- package/dist/esm/schemas/gmail-query-schema.js +72 -0
- package/dist/esm/schemas/gmail-query-schema.js.map +1 -0
- package/dist/esm/schemas/index.d.ts +1 -0
- package/dist/esm/schemas/index.js +1 -0
- package/dist/esm/schemas/index.js.map +1 -0
- package/dist/esm/setup/config.d.ts +48 -0
- package/dist/esm/setup/config.js +175 -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-google.d.ts +54 -0
- package/dist/esm/setup/oauth-google.js +142 -0
- package/dist/esm/setup/oauth-google.js.map +1 -0
- package/dist/esm/setup/runtime.d.ts +12 -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 +110 -0
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", {
|
|
3
|
+
value: true
|
|
4
|
+
});
|
|
5
|
+
function _export(target, all) {
|
|
6
|
+
for(var name in all)Object.defineProperty(target, name, {
|
|
7
|
+
enumerable: true,
|
|
8
|
+
get: Object.getOwnPropertyDescriptor(all, name).get
|
|
9
|
+
});
|
|
10
|
+
}
|
|
11
|
+
_export(exports, {
|
|
12
|
+
get extractEmails () {
|
|
13
|
+
return extractEmails;
|
|
14
|
+
},
|
|
15
|
+
get extractFrom () {
|
|
16
|
+
return extractFrom;
|
|
17
|
+
}
|
|
18
|
+
});
|
|
19
|
+
function extractEmails(header) {
|
|
20
|
+
if (!header) return [];
|
|
21
|
+
var matches = header.match(/[A-Z0-9._%+-]+@[A-Z0-9.-]+\.[A-Z]{2,}/gi) || [];
|
|
22
|
+
return matches.map(function(s) {
|
|
23
|
+
return s.trim();
|
|
24
|
+
});
|
|
25
|
+
}
|
|
26
|
+
function extractFrom(header) {
|
|
27
|
+
if (!header) return undefined;
|
|
28
|
+
var m = header.match(/^(.*)<([^>]+)>/);
|
|
29
|
+
if (m) {
|
|
30
|
+
var rawName = m[1];
|
|
31
|
+
var name = rawName ? rawName.replace(/"/g, '').trim() : undefined;
|
|
32
|
+
var addr = m[2] ? m[2].trim() : undefined;
|
|
33
|
+
var result = {};
|
|
34
|
+
if (addr) result.address = addr;
|
|
35
|
+
if (name) result.name = name;
|
|
36
|
+
return result;
|
|
37
|
+
}
|
|
38
|
+
var emails = extractEmails(header);
|
|
39
|
+
if (emails[0]) return {
|
|
40
|
+
address: emails[0]
|
|
41
|
+
};
|
|
42
|
+
return {
|
|
43
|
+
address: header.trim()
|
|
44
|
+
};
|
|
45
|
+
}
|
|
46
|
+
/* 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-gmail/src/email/parsing/headers-utils.ts"],"sourcesContent":["export function extractEmails(header?: string): string[] {\n if (!header) return [];\n const matches = header.match(/[A-Z0-9._%+-]+@[A-Z0-9.-]+\\.[A-Z]{2,}/gi) || [];\n return matches.map((s: string) => s.trim());\n}\n\nexport function extractFrom(header?: string): { address?: string; name?: string } | undefined {\n if (!header) return undefined;\n const m = header.match(/^(.*)<([^>]+)>/);\n if (m) {\n const rawName = m[1];\n const name = rawName ? rawName.replace(/\"/g, '').trim() : undefined;\n const addr = m[2] ? m[2].trim() : undefined;\n const result: { address?: string; name?: string } = {};\n if (addr) result.address = addr;\n if (name) result.name = name;\n return result;\n }\n const emails = extractEmails(header);\n if (emails[0]) return { address: emails[0] };\n return { address: header.trim() };\n}\n"],"names":["extractEmails","extractFrom","header","matches","match","map","s","trim","undefined","m","rawName","name","replace","addr","result","address","emails"],"mappings":";;;;;;;;;;;QAAgBA;eAAAA;;QAMAC;eAAAA;;;AANT,SAASD,cAAcE,MAAe;IAC3C,IAAI,CAACA,QAAQ,OAAO,EAAE;IACtB,IAAMC,UAAUD,OAAOE,KAAK,CAAC,8CAA8C,EAAE;IAC7E,OAAOD,QAAQE,GAAG,CAAC,SAACC;eAAcA,EAAEC,IAAI;;AAC1C;AAEO,SAASN,YAAYC,MAAe;IACzC,IAAI,CAACA,QAAQ,OAAOM;IACpB,IAAMC,IAAIP,OAAOE,KAAK,CAAC;IACvB,IAAIK,GAAG;QACL,IAAMC,UAAUD,CAAC,CAAC,EAAE;QACpB,IAAME,OAAOD,UAAUA,QAAQE,OAAO,CAAC,MAAM,IAAIL,IAAI,KAAKC;QAC1D,IAAMK,OAAOJ,CAAC,CAAC,EAAE,GAAGA,CAAC,CAAC,EAAE,CAACF,IAAI,KAAKC;QAClC,IAAMM,SAA8C,CAAC;QACrD,IAAID,MAAMC,OAAOC,OAAO,GAAGF;QAC3B,IAAIF,MAAMG,OAAOH,IAAI,GAAGA;QACxB,OAAOG;IACT;IACA,IAAME,SAAShB,cAAcE;IAC7B,IAAIc,MAAM,CAAC,EAAE,EAAE,OAAO;QAAED,SAASC,MAAM,CAAC,EAAE;IAAC;IAC3C,OAAO;QAAED,SAASb,OAAOK,IAAI;IAAG;AAClC"}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import type { gmail_v1 } from 'googleapis';
|
|
2
|
+
export interface BodyExtractionOptions {
|
|
3
|
+
/** Format to return: 'text' extracts plain text, 'html' preserves HTML structure */
|
|
4
|
+
contentType?: 'text' | 'html';
|
|
5
|
+
/** When true, removes quoted thread history from HTML content */
|
|
6
|
+
excludeThreadHistory?: boolean;
|
|
7
|
+
}
|
|
8
|
+
export declare function extractBodyFromPayload(payload: gmail_v1.Schema$MessagePart, options?: BodyExtractionOptions): string;
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import type { gmail_v1 } from 'googleapis';
|
|
2
|
+
export interface BodyExtractionOptions {
|
|
3
|
+
/** Format to return: 'text' extracts plain text, 'html' preserves HTML structure */
|
|
4
|
+
contentType?: 'text' | 'html';
|
|
5
|
+
/** When true, removes quoted thread history from HTML content */
|
|
6
|
+
excludeThreadHistory?: boolean;
|
|
7
|
+
}
|
|
8
|
+
export declare function extractBodyFromPayload(payload: gmail_v1.Schema$MessagePart, options?: BodyExtractionOptions): string;
|
|
@@ -0,0 +1,72 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", {
|
|
3
|
+
value: true
|
|
4
|
+
});
|
|
5
|
+
Object.defineProperty(exports, "extractBodyFromPayload", {
|
|
6
|
+
enumerable: true,
|
|
7
|
+
get: function() {
|
|
8
|
+
return extractBodyFromPayload;
|
|
9
|
+
}
|
|
10
|
+
});
|
|
11
|
+
var _email = require("@mcp-z/email");
|
|
12
|
+
var _nodehtmlparser = require("node-html-parser");
|
|
13
|
+
function _type_of(obj) {
|
|
14
|
+
"@swc/helpers - typeof";
|
|
15
|
+
return obj && typeof Symbol !== "undefined" && obj.constructor === Symbol ? "symbol" : typeof obj;
|
|
16
|
+
}
|
|
17
|
+
function extractBodyFromPayload(payload) {
|
|
18
|
+
var options = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : {};
|
|
19
|
+
var _payload_body;
|
|
20
|
+
var _options_contentType = options.contentType, contentType = _options_contentType === void 0 ? 'text' : _options_contentType, _options_excludeThreadHistory = options.excludeThreadHistory, excludeThreadHistory = _options_excludeThreadHistory === void 0 ? false : _options_excludeThreadHistory;
|
|
21
|
+
if (!payload) return '';
|
|
22
|
+
// If there's a direct body with data
|
|
23
|
+
if ((_payload_body = payload.body) === null || _payload_body === void 0 ? void 0 : _payload_body.data) {
|
|
24
|
+
return Buffer.from(payload.body.data, 'base64').toString('utf-8');
|
|
25
|
+
}
|
|
26
|
+
// If there are parts, look for text/plain or text/html
|
|
27
|
+
if (payload.parts && Array.isArray(payload.parts)) {
|
|
28
|
+
var _iteratorNormalCompletion = true, _didIteratorError = false, _iteratorError = undefined;
|
|
29
|
+
try {
|
|
30
|
+
for(var _iterator = payload.parts[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true){
|
|
31
|
+
var part = _step.value;
|
|
32
|
+
var _part_body, _part_body1;
|
|
33
|
+
if (part.mimeType === 'text/plain' && ((_part_body = part.body) === null || _part_body === void 0 ? void 0 : _part_body.data)) {
|
|
34
|
+
return Buffer.from(part.body.data, 'base64').toString('utf-8');
|
|
35
|
+
}
|
|
36
|
+
if (part.mimeType === 'text/html' && ((_part_body1 = part.body) === null || _part_body1 === void 0 ? void 0 : _part_body1.data)) {
|
|
37
|
+
var html = Buffer.from(part.body.data, 'base64').toString('utf-8');
|
|
38
|
+
// Remove thread history if requested
|
|
39
|
+
if (excludeThreadHistory) {
|
|
40
|
+
html = (0, _email.extractCurrentMessageFromHtml)(html);
|
|
41
|
+
}
|
|
42
|
+
// Return HTML directly if requested
|
|
43
|
+
if (contentType === 'html') {
|
|
44
|
+
return html;
|
|
45
|
+
}
|
|
46
|
+
// Otherwise extract plain text from HTML
|
|
47
|
+
var doc = (0, _nodehtmlparser.parse)(html);
|
|
48
|
+
var docUnknown = doc;
|
|
49
|
+
if (docUnknown && (typeof docUnknown === "undefined" ? "undefined" : _type_of(docUnknown)) === 'object' && 'text' in docUnknown) {
|
|
50
|
+
return docUnknown.text;
|
|
51
|
+
}
|
|
52
|
+
return '';
|
|
53
|
+
}
|
|
54
|
+
}
|
|
55
|
+
} catch (err) {
|
|
56
|
+
_didIteratorError = true;
|
|
57
|
+
_iteratorError = err;
|
|
58
|
+
} finally{
|
|
59
|
+
try {
|
|
60
|
+
if (!_iteratorNormalCompletion && _iterator.return != null) {
|
|
61
|
+
_iterator.return();
|
|
62
|
+
}
|
|
63
|
+
} finally{
|
|
64
|
+
if (_didIteratorError) {
|
|
65
|
+
throw _iteratorError;
|
|
66
|
+
}
|
|
67
|
+
}
|
|
68
|
+
}
|
|
69
|
+
}
|
|
70
|
+
return '';
|
|
71
|
+
}
|
|
72
|
+
/* 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-gmail/src/email/parsing/html-processing.ts"],"sourcesContent":["import { extractCurrentMessageFromHtml } from '@mcp-z/email';\nimport type { gmail_v1 } from 'googleapis';\nimport { parse } from 'node-html-parser';\n\nexport interface BodyExtractionOptions {\n /** Format to return: 'text' extracts plain text, 'html' preserves HTML structure */\n contentType?: 'text' | 'html';\n /** When true, removes quoted thread history from HTML content */\n excludeThreadHistory?: boolean;\n}\n\nexport function extractBodyFromPayload(payload: gmail_v1.Schema$MessagePart, options: BodyExtractionOptions = {}): string {\n const { contentType = 'text', excludeThreadHistory = false } = options;\n if (!payload) return '';\n\n // If there's a direct body with data\n if (payload.body?.data) {\n return Buffer.from(payload.body.data, 'base64').toString('utf-8');\n }\n\n // If there are parts, look for text/plain or text/html\n if (payload.parts && Array.isArray(payload.parts)) {\n for (const part of payload.parts) {\n if (part.mimeType === 'text/plain' && part.body?.data) {\n return Buffer.from(part.body.data, 'base64').toString('utf-8');\n }\n if (part.mimeType === 'text/html' && part.body?.data) {\n let html = Buffer.from(part.body.data, 'base64').toString('utf-8');\n\n // Remove thread history if requested\n if (excludeThreadHistory) {\n html = extractCurrentMessageFromHtml(html);\n }\n\n // Return HTML directly if requested\n if (contentType === 'html') {\n return html;\n }\n\n // Otherwise extract plain text from HTML\n const doc = parse(html);\n const docUnknown = doc as unknown;\n if (docUnknown && typeof docUnknown === 'object' && 'text' in docUnknown) {\n return docUnknown.text as string;\n }\n return '';\n }\n }\n }\n\n return '';\n}\n"],"names":["extractBodyFromPayload","payload","options","contentType","excludeThreadHistory","body","data","Buffer","from","toString","parts","Array","isArray","part","mimeType","html","extractCurrentMessageFromHtml","doc","parse","docUnknown","text"],"mappings":";;;;+BAWgBA;;;eAAAA;;;qBAX8B;8BAExB;;;;;AASf,SAASA,uBAAuBC,OAAoC;QAAEC,UAAAA,iEAAiC,CAAC;QAKzGD;IAJJ,2BAA+DC,QAAvDC,aAAAA,gDAAc,+DAAyCD,QAAjCE,sBAAAA,kEAAuB;IACrD,IAAI,CAACH,SAAS,OAAO;IAErB,qCAAqC;IACrC,KAAIA,gBAAAA,QAAQI,IAAI,cAAZJ,oCAAAA,cAAcK,IAAI,EAAE;QACtB,OAAOC,OAAOC,IAAI,CAACP,QAAQI,IAAI,CAACC,IAAI,EAAE,UAAUG,QAAQ,CAAC;IAC3D;IAEA,uDAAuD;IACvD,IAAIR,QAAQS,KAAK,IAAIC,MAAMC,OAAO,CAACX,QAAQS,KAAK,GAAG;YAC5C,kCAAA,2BAAA;;YAAL,QAAK,YAAcT,QAAQS,KAAK,qBAA3B,SAAA,6BAAA,QAAA,yBAAA,iCAA6B;gBAA7B,IAAMG,OAAN;oBACmCA,YAGDA;gBAHrC,IAAIA,KAAKC,QAAQ,KAAK,kBAAgBD,aAAAA,KAAKR,IAAI,cAATQ,iCAAAA,WAAWP,IAAI,GAAE;oBACrD,OAAOC,OAAOC,IAAI,CAACK,KAAKR,IAAI,CAACC,IAAI,EAAE,UAAUG,QAAQ,CAAC;gBACxD;gBACA,IAAII,KAAKC,QAAQ,KAAK,iBAAeD,cAAAA,KAAKR,IAAI,cAATQ,kCAAAA,YAAWP,IAAI,GAAE;oBACpD,IAAIS,OAAOR,OAAOC,IAAI,CAACK,KAAKR,IAAI,CAACC,IAAI,EAAE,UAAUG,QAAQ,CAAC;oBAE1D,qCAAqC;oBACrC,IAAIL,sBAAsB;wBACxBW,OAAOC,IAAAA,oCAA6B,EAACD;oBACvC;oBAEA,oCAAoC;oBACpC,IAAIZ,gBAAgB,QAAQ;wBAC1B,OAAOY;oBACT;oBAEA,yCAAyC;oBACzC,IAAME,MAAMC,IAAAA,qBAAK,EAACH;oBAClB,IAAMI,aAAaF;oBACnB,IAAIE,cAAc,CAAA,OAAOA,2CAAP,SAAOA,WAAS,MAAM,YAAY,UAAUA,YAAY;wBACxE,OAAOA,WAAWC,IAAI;oBACxB;oBACA,OAAO;gBACT;YACF;;YAzBK;YAAA;;;qBAAA,6BAAA;oBAAA;;;oBAAA;0BAAA;;;;IA0BP;IAEA,OAAO;AACT"}
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
// Unified message extraction functionality
|
|
2
|
+
"use strict";
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
function _export(target, all) {
|
|
7
|
+
for(var name in all)Object.defineProperty(target, name, {
|
|
8
|
+
enumerable: true,
|
|
9
|
+
get: Object.getOwnPropertyDescriptor(all, name).get
|
|
10
|
+
});
|
|
11
|
+
}
|
|
12
|
+
_export(exports, {
|
|
13
|
+
get extractBodyFromPayload () {
|
|
14
|
+
return _htmlprocessing.extractBodyFromPayload;
|
|
15
|
+
},
|
|
16
|
+
get extractEmails () {
|
|
17
|
+
return _headersutils.extractEmails;
|
|
18
|
+
},
|
|
19
|
+
get extractFrom () {
|
|
20
|
+
return _headersutils.extractFrom;
|
|
21
|
+
}
|
|
22
|
+
});
|
|
23
|
+
var _headersutils = require("./headers-utils.js");
|
|
24
|
+
var _htmlprocessing = require("./html-processing.js");
|
|
25
|
+
/* 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-gmail/src/email/parsing/message-extraction.ts"],"sourcesContent":["// Unified message extraction functionality\n\nexport { extractEmails, extractFrom } from './headers-utils.js';\nexport { extractBodyFromPayload } from './html-processing.js';\n"],"names":["extractBodyFromPayload","extractEmails","extractFrom"],"mappings":"AAAA,2CAA2C;;;;;;;;;;;;QAGlCA;eAAAA,sCAAsB;;QADtBC;eAAAA,2BAAa;;QAAEC;eAAAA,yBAAW;;;4BAAQ;8BACJ"}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
import type { ExecutionResult } from '@mcp-z/email';
|
|
2
|
+
import type { gmail_v1 } from 'googleapis';
|
|
3
|
+
import type { GmailQuery as QueryNode } from '../../schemas/gmail-query-schema.js';
|
|
4
|
+
import type { Logger } from '../../types.js';
|
|
5
|
+
export interface ExecuteQueryOptions {
|
|
6
|
+
client: gmail_v1.Gmail;
|
|
7
|
+
logger: Logger;
|
|
8
|
+
pageSize?: number;
|
|
9
|
+
pageToken?: string;
|
|
10
|
+
includeBody?: boolean;
|
|
11
|
+
}
|
|
12
|
+
/**
|
|
13
|
+
* Execute a Gmail query with direct, single-attempt execution.
|
|
14
|
+
* No planning, no fallbacks, no retries.
|
|
15
|
+
* Provider errors are returned directly to the caller for actionable feedback.
|
|
16
|
+
*/
|
|
17
|
+
export declare function executeQuery<T>(query: QueryNode | undefined, options: ExecuteQueryOptions, transform: (item: unknown) => T): Promise<ExecutionResult<T>>;
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
import type { ExecutionResult } from '@mcp-z/email';
|
|
2
|
+
import type { gmail_v1 } from 'googleapis';
|
|
3
|
+
import type { GmailQuery as QueryNode } from '../../schemas/gmail-query-schema.js';
|
|
4
|
+
import type { Logger } from '../../types.js';
|
|
5
|
+
export interface ExecuteQueryOptions {
|
|
6
|
+
client: gmail_v1.Gmail;
|
|
7
|
+
logger: Logger;
|
|
8
|
+
pageSize?: number;
|
|
9
|
+
pageToken?: string;
|
|
10
|
+
includeBody?: boolean;
|
|
11
|
+
}
|
|
12
|
+
/**
|
|
13
|
+
* Execute a Gmail query with direct, single-attempt execution.
|
|
14
|
+
* No planning, no fallbacks, no retries.
|
|
15
|
+
* Provider errors are returned directly to the caller for actionable feedback.
|
|
16
|
+
*/
|
|
17
|
+
export declare function executeQuery<T>(query: QueryNode | undefined, options: ExecuteQueryOptions, transform: (item: unknown) => T): Promise<ExecutionResult<T>>;
|
|
@@ -0,0 +1,265 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", {
|
|
3
|
+
value: true
|
|
4
|
+
});
|
|
5
|
+
Object.defineProperty(exports, "executeQuery", {
|
|
6
|
+
enumerable: true,
|
|
7
|
+
get: function() {
|
|
8
|
+
return executeQuery;
|
|
9
|
+
}
|
|
10
|
+
});
|
|
11
|
+
var _constantsts = require("../../constants.js");
|
|
12
|
+
var _searchexecution = require("./search-execution.js");
|
|
13
|
+
function asyncGeneratorStep(gen, resolve, reject, _next, _throw, key, arg) {
|
|
14
|
+
try {
|
|
15
|
+
var info = gen[key](arg);
|
|
16
|
+
var value = info.value;
|
|
17
|
+
} catch (error) {
|
|
18
|
+
reject(error);
|
|
19
|
+
return;
|
|
20
|
+
}
|
|
21
|
+
if (info.done) {
|
|
22
|
+
resolve(value);
|
|
23
|
+
} else {
|
|
24
|
+
Promise.resolve(value).then(_next, _throw);
|
|
25
|
+
}
|
|
26
|
+
}
|
|
27
|
+
function _async_to_generator(fn) {
|
|
28
|
+
return function() {
|
|
29
|
+
var self = this, args = arguments;
|
|
30
|
+
return new Promise(function(resolve, reject) {
|
|
31
|
+
var gen = fn.apply(self, args);
|
|
32
|
+
function _next(value) {
|
|
33
|
+
asyncGeneratorStep(gen, resolve, reject, _next, _throw, "next", value);
|
|
34
|
+
}
|
|
35
|
+
function _throw(err) {
|
|
36
|
+
asyncGeneratorStep(gen, resolve, reject, _next, _throw, "throw", err);
|
|
37
|
+
}
|
|
38
|
+
_next(undefined);
|
|
39
|
+
});
|
|
40
|
+
};
|
|
41
|
+
}
|
|
42
|
+
function _define_property(obj, key, value) {
|
|
43
|
+
if (key in obj) {
|
|
44
|
+
Object.defineProperty(obj, key, {
|
|
45
|
+
value: value,
|
|
46
|
+
enumerable: true,
|
|
47
|
+
configurable: true,
|
|
48
|
+
writable: true
|
|
49
|
+
});
|
|
50
|
+
} else {
|
|
51
|
+
obj[key] = value;
|
|
52
|
+
}
|
|
53
|
+
return obj;
|
|
54
|
+
}
|
|
55
|
+
function _instanceof(left, right) {
|
|
56
|
+
if (right != null && typeof Symbol !== "undefined" && right[Symbol.hasInstance]) {
|
|
57
|
+
return !!right[Symbol.hasInstance](left);
|
|
58
|
+
} else {
|
|
59
|
+
return left instanceof right;
|
|
60
|
+
}
|
|
61
|
+
}
|
|
62
|
+
function _object_spread(target) {
|
|
63
|
+
for(var i = 1; i < arguments.length; i++){
|
|
64
|
+
var source = arguments[i] != null ? arguments[i] : {};
|
|
65
|
+
var ownKeys = Object.keys(source);
|
|
66
|
+
if (typeof Object.getOwnPropertySymbols === "function") {
|
|
67
|
+
ownKeys = ownKeys.concat(Object.getOwnPropertySymbols(source).filter(function(sym) {
|
|
68
|
+
return Object.getOwnPropertyDescriptor(source, sym).enumerable;
|
|
69
|
+
}));
|
|
70
|
+
}
|
|
71
|
+
ownKeys.forEach(function(key) {
|
|
72
|
+
_define_property(target, key, source[key]);
|
|
73
|
+
});
|
|
74
|
+
}
|
|
75
|
+
return target;
|
|
76
|
+
}
|
|
77
|
+
function ownKeys(object, enumerableOnly) {
|
|
78
|
+
var keys = Object.keys(object);
|
|
79
|
+
if (Object.getOwnPropertySymbols) {
|
|
80
|
+
var symbols = Object.getOwnPropertySymbols(object);
|
|
81
|
+
if (enumerableOnly) {
|
|
82
|
+
symbols = symbols.filter(function(sym) {
|
|
83
|
+
return Object.getOwnPropertyDescriptor(object, sym).enumerable;
|
|
84
|
+
});
|
|
85
|
+
}
|
|
86
|
+
keys.push.apply(keys, symbols);
|
|
87
|
+
}
|
|
88
|
+
return keys;
|
|
89
|
+
}
|
|
90
|
+
function _object_spread_props(target, source) {
|
|
91
|
+
source = source != null ? source : {};
|
|
92
|
+
if (Object.getOwnPropertyDescriptors) {
|
|
93
|
+
Object.defineProperties(target, Object.getOwnPropertyDescriptors(source));
|
|
94
|
+
} else {
|
|
95
|
+
ownKeys(Object(source)).forEach(function(key) {
|
|
96
|
+
Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key));
|
|
97
|
+
});
|
|
98
|
+
}
|
|
99
|
+
return target;
|
|
100
|
+
}
|
|
101
|
+
function _ts_generator(thisArg, body) {
|
|
102
|
+
var f, y, t, _ = {
|
|
103
|
+
label: 0,
|
|
104
|
+
sent: function() {
|
|
105
|
+
if (t[0] & 1) throw t[1];
|
|
106
|
+
return t[1];
|
|
107
|
+
},
|
|
108
|
+
trys: [],
|
|
109
|
+
ops: []
|
|
110
|
+
}, g = Object.create((typeof Iterator === "function" ? Iterator : Object).prototype), d = Object.defineProperty;
|
|
111
|
+
return d(g, "next", {
|
|
112
|
+
value: verb(0)
|
|
113
|
+
}), d(g, "throw", {
|
|
114
|
+
value: verb(1)
|
|
115
|
+
}), d(g, "return", {
|
|
116
|
+
value: verb(2)
|
|
117
|
+
}), typeof Symbol === "function" && d(g, Symbol.iterator, {
|
|
118
|
+
value: function() {
|
|
119
|
+
return this;
|
|
120
|
+
}
|
|
121
|
+
}), g;
|
|
122
|
+
function verb(n) {
|
|
123
|
+
return function(v) {
|
|
124
|
+
return step([
|
|
125
|
+
n,
|
|
126
|
+
v
|
|
127
|
+
]);
|
|
128
|
+
};
|
|
129
|
+
}
|
|
130
|
+
function step(op) {
|
|
131
|
+
if (f) throw new TypeError("Generator is already executing.");
|
|
132
|
+
while(g && (g = 0, op[0] && (_ = 0)), _)try {
|
|
133
|
+
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;
|
|
134
|
+
if (y = 0, t) op = [
|
|
135
|
+
op[0] & 2,
|
|
136
|
+
t.value
|
|
137
|
+
];
|
|
138
|
+
switch(op[0]){
|
|
139
|
+
case 0:
|
|
140
|
+
case 1:
|
|
141
|
+
t = op;
|
|
142
|
+
break;
|
|
143
|
+
case 4:
|
|
144
|
+
_.label++;
|
|
145
|
+
return {
|
|
146
|
+
value: op[1],
|
|
147
|
+
done: false
|
|
148
|
+
};
|
|
149
|
+
case 5:
|
|
150
|
+
_.label++;
|
|
151
|
+
y = op[1];
|
|
152
|
+
op = [
|
|
153
|
+
0
|
|
154
|
+
];
|
|
155
|
+
continue;
|
|
156
|
+
case 7:
|
|
157
|
+
op = _.ops.pop();
|
|
158
|
+
_.trys.pop();
|
|
159
|
+
continue;
|
|
160
|
+
default:
|
|
161
|
+
if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) {
|
|
162
|
+
_ = 0;
|
|
163
|
+
continue;
|
|
164
|
+
}
|
|
165
|
+
if (op[0] === 3 && (!t || op[1] > t[0] && op[1] < t[3])) {
|
|
166
|
+
_.label = op[1];
|
|
167
|
+
break;
|
|
168
|
+
}
|
|
169
|
+
if (op[0] === 6 && _.label < t[1]) {
|
|
170
|
+
_.label = t[1];
|
|
171
|
+
t = op;
|
|
172
|
+
break;
|
|
173
|
+
}
|
|
174
|
+
if (t && _.label < t[2]) {
|
|
175
|
+
_.label = t[2];
|
|
176
|
+
_.ops.push(op);
|
|
177
|
+
break;
|
|
178
|
+
}
|
|
179
|
+
if (t[2]) _.ops.pop();
|
|
180
|
+
_.trys.pop();
|
|
181
|
+
continue;
|
|
182
|
+
}
|
|
183
|
+
op = body.call(thisArg, _);
|
|
184
|
+
} catch (e) {
|
|
185
|
+
op = [
|
|
186
|
+
6,
|
|
187
|
+
e
|
|
188
|
+
];
|
|
189
|
+
y = 0;
|
|
190
|
+
} finally{
|
|
191
|
+
f = t = 0;
|
|
192
|
+
}
|
|
193
|
+
if (op[0] & 5) throw op[1];
|
|
194
|
+
return {
|
|
195
|
+
value: op[0] ? op[1] : void 0,
|
|
196
|
+
done: true
|
|
197
|
+
};
|
|
198
|
+
}
|
|
199
|
+
}
|
|
200
|
+
function executeQuery(query, options, transform) {
|
|
201
|
+
return _async_to_generator(function() {
|
|
202
|
+
var client, logger, pageSize, pageToken, includeBody, result, transformedResults, error;
|
|
203
|
+
return _ts_generator(this, function(_state) {
|
|
204
|
+
switch(_state.label){
|
|
205
|
+
case 0:
|
|
206
|
+
client = options.client, logger = options.logger, pageSize = options.pageSize, pageToken = options.pageToken, includeBody = options.includeBody;
|
|
207
|
+
// Validate pagination parameters
|
|
208
|
+
if (pageSize !== undefined && (pageSize < 1 || pageSize > _constantsts.MAX_PAGE_SIZE)) {
|
|
209
|
+
throw new Error("pageSize must be between 1 and ".concat(_constantsts.MAX_PAGE_SIZE));
|
|
210
|
+
}
|
|
211
|
+
if (pageToken !== undefined && typeof pageToken === 'string' && pageToken.trim().length === 0) {
|
|
212
|
+
logger.info('Empty pageToken provided, ignoring');
|
|
213
|
+
}
|
|
214
|
+
// Single execution - direct query to Gmail API
|
|
215
|
+
logger.info('executeQuery: executing direct Gmail query');
|
|
216
|
+
_state.label = 1;
|
|
217
|
+
case 1:
|
|
218
|
+
_state.trys.push([
|
|
219
|
+
1,
|
|
220
|
+
3,
|
|
221
|
+
,
|
|
222
|
+
4
|
|
223
|
+
]);
|
|
224
|
+
return [
|
|
225
|
+
4,
|
|
226
|
+
(0, _searchexecution.searchMessages)(client, _object_spread_props(_object_spread({}, query !== undefined && {
|
|
227
|
+
query: query
|
|
228
|
+
}), {
|
|
229
|
+
pageSize: pageSize !== null && pageSize !== void 0 ? pageSize : 50,
|
|
230
|
+
pageToken: pageToken && pageToken.trim().length > 0 ? pageToken : undefined,
|
|
231
|
+
includeBody: includeBody !== null && includeBody !== void 0 ? includeBody : false,
|
|
232
|
+
logger: logger
|
|
233
|
+
}))
|
|
234
|
+
];
|
|
235
|
+
case 2:
|
|
236
|
+
result = _state.sent();
|
|
237
|
+
// Transform results
|
|
238
|
+
transformedResults = result.messages.map(transform);
|
|
239
|
+
logger.info("executeQuery: succeeded with ".concat(transformedResults.length, " results"));
|
|
240
|
+
return [
|
|
241
|
+
2,
|
|
242
|
+
{
|
|
243
|
+
success: true,
|
|
244
|
+
items: transformedResults,
|
|
245
|
+
metadata: {
|
|
246
|
+
nextPageToken: result.nextPageToken
|
|
247
|
+
}
|
|
248
|
+
}
|
|
249
|
+
];
|
|
250
|
+
case 3:
|
|
251
|
+
error = _state.sent();
|
|
252
|
+
// Re-throw errors directly - no fallback logic
|
|
253
|
+
logger.error('executeQuery: failed', {
|
|
254
|
+
error: _instanceof(error, Error) ? error.message : String(error)
|
|
255
|
+
});
|
|
256
|
+
throw error;
|
|
257
|
+
case 4:
|
|
258
|
+
return [
|
|
259
|
+
2
|
|
260
|
+
];
|
|
261
|
+
}
|
|
262
|
+
});
|
|
263
|
+
})();
|
|
264
|
+
}
|
|
265
|
+
/* 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-gmail/src/email/querying/execute-query.ts"],"sourcesContent":["import type { ExecutionResult } from '@mcp-z/email';\nimport type { gmail_v1 } from 'googleapis';\nimport { MAX_PAGE_SIZE } from '../../constants.ts';\nimport type { GmailQuery as QueryNode } from '../../schemas/gmail-query-schema.js';\nimport type { Logger } from '../../types.js';\nimport { searchMessages } from './search-execution.js';\n\nexport interface ExecuteQueryOptions {\n client: gmail_v1.Gmail;\n logger: Logger;\n pageSize?: number;\n pageToken?: string;\n includeBody?: boolean;\n}\n\n/**\n * Execute a Gmail query with direct, single-attempt execution.\n * No planning, no fallbacks, no retries.\n * Provider errors are returned directly to the caller for actionable feedback.\n */\nexport async function executeQuery<T>(query: QueryNode | undefined, options: ExecuteQueryOptions, transform: (item: unknown) => T): Promise<ExecutionResult<T>> {\n const { client, logger, pageSize, pageToken, includeBody } = options;\n\n // Validate pagination parameters\n if (pageSize !== undefined && (pageSize < 1 || pageSize > MAX_PAGE_SIZE)) {\n throw new Error(`pageSize must be between 1 and ${MAX_PAGE_SIZE}`);\n }\n\n if (pageToken !== undefined && typeof pageToken === 'string' && pageToken.trim().length === 0) {\n logger.info('Empty pageToken provided, ignoring');\n }\n\n // Single execution - direct query to Gmail API\n logger.info('executeQuery: executing direct Gmail query');\n\n try {\n const result = await searchMessages(client, {\n ...(query !== undefined && { query }),\n pageSize: pageSize ?? 50,\n pageToken: pageToken && pageToken.trim().length > 0 ? pageToken : undefined,\n includeBody: includeBody ?? false,\n logger,\n });\n\n // Transform results\n const transformedResults = result.messages.map(transform);\n\n logger.info(`executeQuery: succeeded with ${transformedResults.length} results`);\n\n return {\n success: true,\n items: transformedResults,\n metadata: {\n nextPageToken: result.nextPageToken,\n },\n };\n } catch (error) {\n // Re-throw errors directly - no fallback logic\n logger.error('executeQuery: failed', { error: error instanceof Error ? error.message : String(error) });\n throw error;\n }\n}\n"],"names":["executeQuery","query","options","transform","client","logger","pageSize","pageToken","includeBody","result","transformedResults","error","undefined","MAX_PAGE_SIZE","Error","trim","length","info","searchMessages","messages","map","success","items","metadata","nextPageToken","message","String"],"mappings":";;;;+BAoBsBA;;;eAAAA;;;2BAlBQ;+BAGC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAexB,SAAeA,aAAgBC,KAA4B,EAAEC,OAA4B,EAAEC,SAA+B;;YACvHC,QAAQC,QAAQC,UAAUC,WAAWC,aAerCC,QASAC,oBAWCC;;;;oBAnCDP,SAAqDF,QAArDE,QAAQC,SAA6CH,QAA7CG,QAAQC,WAAqCJ,QAArCI,UAAUC,YAA2BL,QAA3BK,WAAWC,cAAgBN,QAAhBM;oBAE7C,iCAAiC;oBACjC,IAAIF,aAAaM,aAAcN,CAAAA,WAAW,KAAKA,WAAWO,0BAAa,AAAD,GAAI;wBACxE,MAAM,IAAIC,MAAM,AAAC,kCAA+C,OAAdD,0BAAa;oBACjE;oBAEA,IAAIN,cAAcK,aAAa,OAAOL,cAAc,YAAYA,UAAUQ,IAAI,GAAGC,MAAM,KAAK,GAAG;wBAC7FX,OAAOY,IAAI,CAAC;oBACd;oBAEA,+CAA+C;oBAC/CZ,OAAOY,IAAI,CAAC;;;;;;;;;oBAGK;;wBAAMC,IAAAA,+BAAc,EAACd,QAAQ,wCACtCH,UAAUW,aAAa;4BAAEX,OAAAA;wBAAM;4BACnCK,QAAQ,EAAEA,qBAAAA,sBAAAA,WAAY;4BACtBC,WAAWA,aAAaA,UAAUQ,IAAI,GAAGC,MAAM,GAAG,IAAIT,YAAYK;4BAClEJ,WAAW,EAAEA,wBAAAA,yBAAAA,cAAe;4BAC5BH,QAAAA;;;;oBALII,SAAS;oBAQf,oBAAoB;oBACdC,qBAAqBD,OAAOU,QAAQ,CAACC,GAAG,CAACjB;oBAE/CE,OAAOY,IAAI,CAAC,AAAC,gCAAyD,OAA1BP,mBAAmBM,MAAM,EAAC;oBAEtE;;wBAAO;4BACLK,SAAS;4BACTC,OAAOZ;4BACPa,UAAU;gCACRC,eAAef,OAAOe,aAAa;4BACrC;wBACF;;;oBACOb;oBACP,+CAA+C;oBAC/CN,OAAOM,KAAK,CAAC,wBAAwB;wBAAEA,OAAOA,AAAK,YAALA,OAAiBG,SAAQH,MAAMc,OAAO,GAAGC,OAAOf;oBAAO;oBACrG,MAAMA;;;;;;;IAEV"}
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
/** Gmail pagination helpers for single-page operations. */
|
|
2
|
+
import type { gmail_v1 } from 'googleapis';
|
|
3
|
+
import type { Logger } from '../../types.js';
|
|
4
|
+
export interface SinglePageResult {
|
|
5
|
+
readonly messages: gmail_v1.Schema$Message[];
|
|
6
|
+
readonly nextPageToken: string | undefined;
|
|
7
|
+
}
|
|
8
|
+
/**
|
|
9
|
+
* Fetch a single page of messages from Gmail
|
|
10
|
+
*/
|
|
11
|
+
export interface FetchMessagesPageParams {
|
|
12
|
+
readonly gmailQ: string;
|
|
13
|
+
readonly pageSize?: number;
|
|
14
|
+
readonly pageToken: string | undefined;
|
|
15
|
+
readonly body?: boolean;
|
|
16
|
+
readonly logger: Logger;
|
|
17
|
+
readonly metadataHeaders?: readonly string[];
|
|
18
|
+
}
|
|
19
|
+
export declare function fetchMessagesPage(gmail: gmail_v1.Gmail, params: FetchMessagesPageParams): Promise<SinglePageResult>;
|
|
20
|
+
export interface FetchMessagesConcurrentlyParams {
|
|
21
|
+
readonly items: readonly string[];
|
|
22
|
+
readonly concurrency?: number;
|
|
23
|
+
readonly body?: boolean;
|
|
24
|
+
readonly logger: Logger;
|
|
25
|
+
readonly metadataHeaders?: readonly string[];
|
|
26
|
+
}
|
|
27
|
+
export declare function fetchMessagesConcurrently(gmail: gmail_v1.Gmail, params: FetchMessagesConcurrentlyParams): Promise<gmail_v1.Schema$Message[]>;
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
/** Gmail pagination helpers for single-page operations. */
|
|
2
|
+
import type { gmail_v1 } from 'googleapis';
|
|
3
|
+
import type { Logger } from '../../types.js';
|
|
4
|
+
export interface SinglePageResult {
|
|
5
|
+
readonly messages: gmail_v1.Schema$Message[];
|
|
6
|
+
readonly nextPageToken: string | undefined;
|
|
7
|
+
}
|
|
8
|
+
/**
|
|
9
|
+
* Fetch a single page of messages from Gmail
|
|
10
|
+
*/
|
|
11
|
+
export interface FetchMessagesPageParams {
|
|
12
|
+
readonly gmailQ: string;
|
|
13
|
+
readonly pageSize?: number;
|
|
14
|
+
readonly pageToken: string | undefined;
|
|
15
|
+
readonly body?: boolean;
|
|
16
|
+
readonly logger: Logger;
|
|
17
|
+
readonly metadataHeaders?: readonly string[];
|
|
18
|
+
}
|
|
19
|
+
export declare function fetchMessagesPage(gmail: gmail_v1.Gmail, params: FetchMessagesPageParams): Promise<SinglePageResult>;
|
|
20
|
+
export interface FetchMessagesConcurrentlyParams {
|
|
21
|
+
readonly items: readonly string[];
|
|
22
|
+
readonly concurrency?: number;
|
|
23
|
+
readonly body?: boolean;
|
|
24
|
+
readonly logger: Logger;
|
|
25
|
+
readonly metadataHeaders?: readonly string[];
|
|
26
|
+
}
|
|
27
|
+
export declare function fetchMessagesConcurrently(gmail: gmail_v1.Gmail, params: FetchMessagesConcurrentlyParams): Promise<gmail_v1.Schema$Message[]>;
|