@ni-c/imap-mcp 0.3.0 → 0.4.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +20 -4
- package/dist/analyze.d.ts +32 -3
- package/dist/analyze.js +97 -8
- package/dist/analyze.js.map +1 -1
- package/dist/attachments.d.ts +11 -0
- package/dist/attachments.js +1 -1
- package/dist/attachments.js.map +1 -1
- package/dist/config.d.ts +11 -0
- package/dist/config.js +21 -1
- package/dist/config.js.map +1 -1
- package/dist/extract/child.d.ts +1 -0
- package/dist/extract/child.js +83 -0
- package/dist/extract/child.js.map +1 -0
- package/dist/extract/index.d.ts +41 -0
- package/dist/extract/index.js +183 -0
- package/dist/extract/index.js.map +1 -0
- package/dist/extract/ooxml.d.ts +35 -0
- package/dist/extract/ooxml.js +627 -0
- package/dist/extract/ooxml.js.map +1 -0
- package/dist/extract/pdf.d.ts +62 -0
- package/dist/extract/pdf.js +539 -0
- package/dist/extract/pdf.js.map +1 -0
- package/dist/extract/types.d.ts +56 -0
- package/dist/extract/types.js +13 -0
- package/dist/extract/types.js.map +1 -0
- package/dist/output-schema.d.ts +1 -0
- package/dist/output-schema.js +6 -0
- package/dist/output-schema.js.map +1 -1
- package/dist/resources.js +4 -1
- package/dist/resources.js.map +1 -1
- package/dist/result.d.ts +7 -1
- package/dist/result.js +14 -5
- package/dist/result.js.map +1 -1
- package/dist/tools/read.js +406 -45
- package/dist/tools/read.js.map +1 -1
- package/dist/tools/write.js +10 -2
- package/dist/tools/write.js.map +1 -1
- package/package.json +3 -1
|
@@ -0,0 +1,56 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* The vocabulary shared between the extraction host and the worker.
|
|
3
|
+
*
|
|
4
|
+
* Types only, and that is a constraint rather than a preference. The child
|
|
5
|
+
* process is started from its own source file — `child.ts` under vitest,
|
|
6
|
+
* `child.js` from `dist/` — so everything it reaches is loaded by Node
|
|
7
|
+
* directly, and Node's type stripping does not rewrite a `./x.js` specifier to
|
|
8
|
+
* the `./x.ts` that exists next to it. A type-only import is erased before that can matter. A value
|
|
9
|
+
* exported from here would not be, and would break `npm test` while leaving the
|
|
10
|
+
* build green.
|
|
11
|
+
*/
|
|
12
|
+
/** A document format this server can read text out of. */
|
|
13
|
+
export type ExtractKind = 'pdf' | 'docx' | 'xlsx' | 'pptx' | 'odt' | 'ods';
|
|
14
|
+
/**
|
|
15
|
+
* Why an extraction produced nothing.
|
|
16
|
+
*
|
|
17
|
+
* A code, never a message. The parsers quote the document in their exceptions —
|
|
18
|
+
* pdf.js names byte offsets and object fragments, fflate echoes what it found —
|
|
19
|
+
* and that is text a stranger wrote arriving in the model's context outside the
|
|
20
|
+
* fence. The host turns these into sentences it wrote itself.
|
|
21
|
+
*/
|
|
22
|
+
export type ExtractReason = 'no-text-layer' | 'encrypted' | 'corrupt' | 'not-a-document' | 'too-many-parts' | 'too-large' | 'timeout' | 'out-of-memory' | 'busy' | 'internal';
|
|
23
|
+
export interface ExtractRequest {
|
|
24
|
+
kind: ExtractKind;
|
|
25
|
+
bytes: Uint8Array;
|
|
26
|
+
/** Hard cap on the characters the worker may return. */
|
|
27
|
+
maxChars: number;
|
|
28
|
+
}
|
|
29
|
+
export interface ExtractOk {
|
|
30
|
+
ok: true;
|
|
31
|
+
text: string;
|
|
32
|
+
/** What `unitCount` counts, when the format has such a thing. */
|
|
33
|
+
unitLabel?: 'pages' | 'slides' | 'sheets';
|
|
34
|
+
unitCount?: number;
|
|
35
|
+
/**
|
|
36
|
+
* What the document declared, when the walk stopped short of it. A PDF may
|
|
37
|
+
* claim more pages than were read; the difference is reported rather than
|
|
38
|
+
* hidden, so a short answer is never mistaken for a short document.
|
|
39
|
+
*/
|
|
40
|
+
declaredUnitCount?: number;
|
|
41
|
+
/** True when `maxChars` cut the document short inside the worker. */
|
|
42
|
+
clipped: boolean;
|
|
43
|
+
/**
|
|
44
|
+
* Text runs drawn where a reader cannot see them: outside the page box or
|
|
45
|
+
* below two points in a PDF; marked hidden, set below two points or coloured
|
|
46
|
+
* white in a Word document. A count, never a filter — see the note in
|
|
47
|
+
* `pdf.ts`.
|
|
48
|
+
*/
|
|
49
|
+
hiddenRuns?: number;
|
|
50
|
+
totalRuns?: number;
|
|
51
|
+
}
|
|
52
|
+
export interface ExtractFailed {
|
|
53
|
+
ok: false;
|
|
54
|
+
reason: ExtractReason;
|
|
55
|
+
}
|
|
56
|
+
export type ExtractResponse = ExtractOk | ExtractFailed;
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* The vocabulary shared between the extraction host and the worker.
|
|
3
|
+
*
|
|
4
|
+
* Types only, and that is a constraint rather than a preference. The child
|
|
5
|
+
* process is started from its own source file — `child.ts` under vitest,
|
|
6
|
+
* `child.js` from `dist/` — so everything it reaches is loaded by Node
|
|
7
|
+
* directly, and Node's type stripping does not rewrite a `./x.js` specifier to
|
|
8
|
+
* the `./x.ts` that exists next to it. A type-only import is erased before that can matter. A value
|
|
9
|
+
* exported from here would not be, and would break `npm test` while leaving the
|
|
10
|
+
* build green.
|
|
11
|
+
*/
|
|
12
|
+
export {};
|
|
13
|
+
//# sourceMappingURL=types.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/extract/types.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG"}
|
package/dist/output-schema.d.ts
CHANGED
package/dist/output-schema.js
CHANGED
|
@@ -76,6 +76,12 @@ export const attachmentEntry = z
|
|
|
76
76
|
filename: z.string().optional(),
|
|
77
77
|
content_type: z.string().optional(),
|
|
78
78
|
size: z.number().optional(),
|
|
79
|
+
// A loose object would carry this either way; declared because the whole
|
|
80
|
+
// value of the field is that a reader sees it before deciding what to call.
|
|
81
|
+
extractable: z
|
|
82
|
+
.boolean()
|
|
83
|
+
.optional()
|
|
84
|
+
.describe('True when get_attachments with mode "text" can read this part as text.'),
|
|
79
85
|
})
|
|
80
86
|
.meta({ additionalProperties: true });
|
|
81
87
|
//# sourceMappingURL=output-schema.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"output-schema.js","sourceRoot":"","sources":["../src/output-schema.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"output-schema.js","sourceRoot":"","sources":["../src/output-schema.ts"],"names":[],"mappings":"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"}
|
package/dist/resources.js
CHANGED
|
@@ -48,8 +48,11 @@ export function registerAttachmentResources(server, client, config) {
|
|
|
48
48
|
// base64-encoded in a JSON-RPC response — that is context, and
|
|
49
49
|
// maxDownloadBytes exists to bound what may be written to a file.
|
|
50
50
|
// Using it here allowed ~34 MB of base64 in one response, where
|
|
51
|
-
// get_attachments caps the same attachment at 1 MB.
|
|
51
|
+
// get_attachments caps the same attachment at 1 MB. The same
|
|
52
|
+
// reasoning excludes IMAP_MAX_EXTRACT_BYTES: there is no text
|
|
53
|
+
// mode on this door, so nothing here can be reached by it.
|
|
52
54
|
maxBytes: config.imap.maxAttachmentBytes,
|
|
55
|
+
maxBytesName: 'IMAP_MAX_ATTACHMENT_BYTES',
|
|
53
56
|
}))
|
|
54
57
|
.find((entry) => entry.partId === partId);
|
|
55
58
|
if (candidate === undefined) {
|
package/dist/resources.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"resources.js","sourceRoot":"","sources":["../src/resources.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAE,MAAM,8BAA8B,CAAC;AAKhE,OAAO,EACL,WAAW,EACX,kBAAkB,EAClB,YAAY,GACb,MAAM,kBAAkB,CAAC;AAG1B,OAAO,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AAC7C,OAAO,EAAc,WAAW,EAAE,MAAM,WAAW,CAAC;AACpD,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AAEzC;;;;;;;;;;;GAWG;AACH,MAAM,UAAU,2BAA2B,CACzC,MAAiB,EACjB,MAAkB,EAClB,MAAc;IAEd,MAAM,CAAC,gBAAgB,CACrB,YAAY,EACZ,IAAI,gBAAgB,CAAC,oCAAoC,EAAE;QACzD,uEAAuE;QACvE,iEAAiE;QACjE,IAAI,EAAE,SAAS;KAChB,CAAC,EACF;QACE,KAAK,EAAE,oBAAoB;QAC3B,WAAW,EACT,kEAAkE;YAClE,gDAAgD;KACnD,EACD,KAAK,EAAE,GAAG,EAAE,SAAS,EAA+B,EAAE;QACpD,MAAM,GAAG,GAAG,MAAM,CAAC,KAAK,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC;QACzC,MAAM,MAAM,GAAG,KAAK,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC;QACvC,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,GAAG,CAAC,IAAI,GAAG,GAAG,CAAC,EAAE,CAAC;YACtC,MAAM,IAAI,cAAc,CAAC,aAAa,GAAG,CAAC,IAAI,oBAAoB,CAAC,CAAC;QACtE,CAAC;QACD,IAAI,CAAC,qBAAqB,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC;YACxC,MAAM,IAAI,cAAc,CACtB,aAAa,GAAG,CAAC,IAAI,6BAA6B,CACnD,CAAC;QACJ,CAAC;QAED,OAAO,MAAM,CAAC,WAAW,CAAC,SAAS,EAAE,IAAI,EAAE,KAAK,EAAE,UAAU,EAAE,EAAE;YAC9D,IAAI,SAAS,CAAC;YACd,IAAI,KAAK,EAAE,MAAM,OAAO,IAAI,UAAU,CAAC,KAAK,CAC1C,CAAC,GAAG,CAAC,EACL,EAAE,GAAG,EAAE,IAAI,EAAE,aAAa,EAAE,IAAI,EAAE,EAClC,EAAE,GAAG,EAAE,IAAI,EAAE,CACd,EAAE,CAAC;gBACF,SAAS,GAAG,OAAO,CAAC,aAAa,CAAC;YACpC,CAAC;YACD,IAAI,SAAS,KAAK,SAAS,EAAE,CAAC;gBAC5B,MAAM,IAAI,cAAc,CACtB,iCAAiC,GAAG,mBAAmB,CACxD,CAAC;YACJ,CAAC;YAED,MAAM,SAAS,GAAG,kBAAkB,CAAC,SAAS,CAAC;iBAC5C,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CACb,WAAW,CAAC,KAAK,EAAE;gBACjB,YAAY,EAAE,MAAM,CAAC,IAAI,CAAC,sBAAsB;gBAChD,2DAA2D;gBAC3D,+DAA+D;gBAC/D,kEAAkE;gBAClE,gEAAgE;gBAChE,
|
|
1
|
+
{"version":3,"file":"resources.js","sourceRoot":"","sources":["../src/resources.ts"],"names":[],"mappings":"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"}
|
package/dist/result.d.ts
CHANGED
|
@@ -70,7 +70,13 @@ export declare function fencedUntrustedResult(trustedHeader: string, body: strin
|
|
|
70
70
|
/**
|
|
71
71
|
* Limits what an upstream error string can inject into the model context: HTML
|
|
72
72
|
* error pages (captive portals, proxies answering on the mail port) are dropped
|
|
73
|
-
* entirely, other bodies are truncated
|
|
73
|
+
* entirely, other bodies are truncated, and the characters a reader cannot see
|
|
74
|
+
* are spelled out rather than passed through.
|
|
75
|
+
*
|
|
76
|
+
* The text is the mail server's, or that of whatever answers on its port. It
|
|
77
|
+
* used to be returned as it came, in this server's own voice; the escaping and
|
|
78
|
+
* the label the caller puts in front of it are what keep it from reading as
|
|
79
|
+
* something this server said.
|
|
74
80
|
*/
|
|
75
81
|
export declare function sanitizeErrorBody(body: string): string;
|
|
76
82
|
/**
|
package/dist/result.js
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { wrapUntrusted } from './analyze.js';
|
|
1
|
+
import { escapeInvisible, wrapUntrusted } from './analyze.js';
|
|
2
2
|
import { MailError, ToolInputError } from './errors.js';
|
|
3
3
|
export function textResult(text) {
|
|
4
4
|
return { content: [{ type: 'text', text }] };
|
|
@@ -233,7 +233,13 @@ const MAX_ERROR_BODY_LENGTH = 2000;
|
|
|
233
233
|
/**
|
|
234
234
|
* Limits what an upstream error string can inject into the model context: HTML
|
|
235
235
|
* error pages (captive portals, proxies answering on the mail port) are dropped
|
|
236
|
-
* entirely, other bodies are truncated
|
|
236
|
+
* entirely, other bodies are truncated, and the characters a reader cannot see
|
|
237
|
+
* are spelled out rather than passed through.
|
|
238
|
+
*
|
|
239
|
+
* The text is the mail server's, or that of whatever answers on its port. It
|
|
240
|
+
* used to be returned as it came, in this server's own voice; the escaping and
|
|
241
|
+
* the label the caller puts in front of it are what keep it from reading as
|
|
242
|
+
* something this server said.
|
|
237
243
|
*/
|
|
238
244
|
export function sanitizeErrorBody(body) {
|
|
239
245
|
const trimmed = body.trim();
|
|
@@ -244,9 +250,9 @@ export function sanitizeErrorBody(body) {
|
|
|
244
250
|
return '(HTML error page omitted)';
|
|
245
251
|
}
|
|
246
252
|
if (trimmed.length > MAX_ERROR_BODY_LENGTH) {
|
|
247
|
-
return `${trimmed.slice(0, MAX_ERROR_BODY_LENGTH)}… (truncated)`;
|
|
253
|
+
return `${escapeInvisible(trimmed.slice(0, MAX_ERROR_BODY_LENGTH))}… (truncated)`;
|
|
248
254
|
}
|
|
249
|
-
return trimmed;
|
|
255
|
+
return escapeInvisible(trimmed);
|
|
250
256
|
}
|
|
251
257
|
function hintFor(error) {
|
|
252
258
|
switch (error.code) {
|
|
@@ -288,7 +294,10 @@ export async function run(fn) {
|
|
|
288
294
|
}
|
|
289
295
|
if (error instanceof MailError) {
|
|
290
296
|
const body = sanitizeErrorBody(error.responseText);
|
|
291
|
-
|
|
297
|
+
// Labelled as the server's words: the response text is chosen by the
|
|
298
|
+
// mail server, and an unlabelled line after this server's own message
|
|
299
|
+
// reads as a continuation of it.
|
|
300
|
+
return errorResult(`${error.message}${body === '' ? '' : `\nThe mail server said: ${body}`}${hintFor(error)}`);
|
|
292
301
|
}
|
|
293
302
|
const message = error instanceof Error ? error.message : String(error);
|
|
294
303
|
return errorResult(`imap-mcp: ${message}`);
|
package/dist/result.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"result.js","sourceRoot":"","sources":["../src/result.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,aAAa,EAAE,MAAM,cAAc,CAAC;
|
|
1
|
+
{"version":3,"file":"result.js","sourceRoot":"","sources":["../src/result.ts"],"names":[],"mappings":"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"}
|