@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
package/README.md
CHANGED
|
@@ -116,6 +116,7 @@ guard. See [Asking a person](https://imap-mcp.ni-c.de/guide/approval).
|
|
|
116
116
|
| `IMAP_MAX_MESSAGES` | no | `100` | Default page size |
|
|
117
117
|
| `IMAP_MAX_ATTACHMENT_BYTES` | no | `1048576` | Ceiling for returning an attachment inline |
|
|
118
118
|
| `IMAP_MAX_DOWNLOAD_BYTES` | no | `26214400` | Ceiling for writing one to disk |
|
|
119
|
+
| `IMAP_MAX_EXTRACT_BYTES` | no | `10485760` | Ceiling for reading a document's text; max `67108864` |
|
|
119
120
|
| `IMAP_ATTACHMENT_TYPES` | no | see below | Comma-separated content-type allowlist |
|
|
120
121
|
| `IMAP_DOWNLOAD_DIR` | no | — | Setting it allows saving attachments there |
|
|
121
122
|
| `IMAP_INSECURE_TLS` | no | `false` | Exactly `true` accepts a self-signed certificate |
|
|
@@ -155,8 +156,11 @@ answer — its `/hub` endpoint replaces every server's tools with six meta-tools
|
|
|
155
156
|
The password is deleted from the process environment as soon as it is read, so it is not
|
|
156
157
|
visible to child processes or in `/proc/<pid>/environ`.
|
|
157
158
|
|
|
158
|
-
Without `IMAP_DOWNLOAD_DIR` this server never writes to the filesystem. The
|
|
159
|
-
separate on purpose
|
|
159
|
+
Without `IMAP_DOWNLOAD_DIR` this server never writes to the filesystem. The three size limits are
|
|
160
|
+
separate on purpose, because they answer three different questions:
|
|
161
|
+
`IMAP_MAX_ATTACHMENT_BYTES` protects the model's context window,
|
|
162
|
+
`IMAP_MAX_DOWNLOAD_BYTES` protects your disk, and `IMAP_MAX_EXTRACT_BYTES` bounds how much
|
|
163
|
+
hostile input one parser is handed. Raising any one of them is not a request to raise the others.
|
|
160
164
|
|
|
161
165
|
The server starts without credentials on purpose — it completes the handshake and lists its
|
|
162
166
|
tools, and every call then fails with setup instructions instead of reaching a server.
|
|
@@ -259,7 +263,7 @@ are in the [client guide](https://imap-mcp.ni-c.de/guide/clients#through-mcp-hub
|
|
|
259
263
|
| `list_messages` | Lists and searches: sender, recipient, subject, body, date range, flags |
|
|
260
264
|
| `list_new_messages` | Messages not handed over yet; marks them afterwards, `dry_run` to preview |
|
|
261
265
|
| `get_message` | Headers and body, fenced untrusted, plus the security assessment; `include_thread` |
|
|
262
|
-
| `get_attachments` | Without `part_id` lists them, with `part_id` reads or saves one
|
|
266
|
+
| `get_attachments` | Without `part_id` lists them, with `part_id` reads, extracts or saves one |
|
|
263
267
|
|
|
264
268
|
**Mailbox** — needs `IMAP_READ_ONLY=false`
|
|
265
269
|
|
|
@@ -326,7 +330,8 @@ size limit and magic-byte check as the tool — it is not a second, unguarded do
|
|
|
326
330
|
## Not exposed, on purpose
|
|
327
331
|
|
|
328
332
|
No sending, no SMTP, no raw IMAP passthrough, no `APPEND` of arbitrary MIME, no HTML
|
|
329
|
-
composition, no OAuth2
|
|
333
|
+
composition, no OAuth2, and **no OCR** — a scanned PDF has no text to extract and says so
|
|
334
|
+
rather than guessing. The first is the whole security argument (see `SECURITY.md`); the
|
|
330
335
|
second would make every guard here optional; the last is planned but needs a test account
|
|
331
336
|
before it ships.
|
|
332
337
|
|
|
@@ -346,6 +351,17 @@ knowing before concluding that a filtered install reaches less of the mailbox th
|
|
|
346
351
|
saving to disk, where it would be more dangerous, not less.
|
|
347
352
|
- **A `part_id` must come from a listing call**, so the body cannot be pulled out through the
|
|
348
353
|
attachment tool and escape its framing.
|
|
354
|
+
- **Documents are parsed in a process that can be killed.** `mode: "text"` reads a PDF or
|
|
355
|
+
Office file with a bundled PDF.js and a ZIP reader — the only place this server parses a
|
|
356
|
+
binary a stranger sent. It runs in a child process with a heap limit and a timeout, its
|
|
357
|
+
stdout discarded rather than shared with the JSON-RPC transport, PDF.js's `eval` support
|
|
358
|
+
off, compressed streams measured against a ceiling _before_ PDF.js inflates them, and an
|
|
359
|
+
entry allowlist that decides what is decompressed _before_ the buffer is sized. Nothing in
|
|
360
|
+
that path touches the network or the filesystem.
|
|
361
|
+
- **Extracted text says what it is.** Extraction returns every text-drawing instruction in a
|
|
362
|
+
file, including text set below one point or drawn in the colour of the paper, and returns
|
|
363
|
+
nothing that was drawn as a picture. The result says so above the fence, because "the
|
|
364
|
+
document says X" is otherwise a claim the user has no way to check.
|
|
349
365
|
- **Downloads cannot escape their directory.** The target comes only from the environment, the
|
|
350
366
|
filename is sanitised, the resolved path is re-checked, and the file is opened with `wx` and
|
|
351
367
|
mode `0600` — so nothing is overwritten and no planted symlink is followed.
|
package/dist/analyze.d.ts
CHANGED
|
@@ -23,13 +23,33 @@ export interface SecurityAssessment {
|
|
|
23
23
|
};
|
|
24
24
|
}
|
|
25
25
|
/**
|
|
26
|
-
* Extracts readable text from HTML
|
|
26
|
+
* Extracts readable text from HTML — and from the XML inside an OOXML or
|
|
27
|
+
* OpenDocument attachment, which is the same problem with different tag names.
|
|
28
|
+
*
|
|
29
|
+
* Reused there rather than reimplemented, and that is a security decision, not
|
|
30
|
+
* a tidiness one. The obvious `document.xml` reader is
|
|
31
|
+
* `/<w:t[^>]*>([\s\S]*?)<\/w:t>/g` — which is the exact shape of the bug
|
|
32
|
+
* recorded above this function: *n* start tokens each paying for a scan that
|
|
33
|
+
* never finds its end. A `document.xml` of `'<w:t '` repeated 200 000 times is
|
|
34
|
+
* a tiny, deflate-friendly ZIP entry. This walk is immune for the reason it was
|
|
35
|
+
* written, so the second parser is the one not to write.
|
|
36
|
+
*
|
|
37
|
+
* It is also why nothing here parses XML properly. A real parser resolves
|
|
38
|
+
* entities, and would hand a mail attachment billion-laughs expansion and an
|
|
39
|
+
* `<!ENTITY … SYSTEM "file:///etc/passwd">` that reads a file. Those are not
|
|
40
|
+
* defended against below; they are simply not implemented. `&lol9;` comes out
|
|
41
|
+
* as six literal characters, and it must stay that way — reaching for
|
|
42
|
+
* `fast-xml-parser` here would reintroduce all three at once.
|
|
27
43
|
*
|
|
28
44
|
* Deliberately not `mailparser`'s own `text` fallback: that keeps content the
|
|
29
45
|
* recipient never sees. Anything hidden by inline CSS is a place to park an
|
|
30
46
|
* instruction meant only for the model, so those elements are dropped before
|
|
31
47
|
* the tags are stripped.
|
|
32
48
|
*
|
|
49
|
+
* `maxChars` overrides the input slice. The default suits a mail body; a
|
|
50
|
+
* document part needs more, because OOXML spends most of its bytes on
|
|
51
|
+
* formatting and the readable text is a small fraction of it.
|
|
52
|
+
*
|
|
33
53
|
* This is one pass over the input. The cursors below only ever move forward,
|
|
34
54
|
* which is the property that makes the whole function linear no matter what the
|
|
35
55
|
* sender writes: a start token that is never closed is answered once and then
|
|
@@ -40,7 +60,7 @@ export interface SecurityAssessment {
|
|
|
40
60
|
* for the same reason it always was: nothing downstream trusts the stripping,
|
|
41
61
|
* and the fencing in {@link wrapUntrusted} is what carries the weight.
|
|
42
62
|
*/
|
|
43
|
-
export declare function htmlToText(html: string): string;
|
|
63
|
+
export declare function htmlToText(html: string, maxChars?: number): string;
|
|
44
64
|
/**
|
|
45
65
|
* Removes the characters a human reader cannot see but the model can.
|
|
46
66
|
*
|
|
@@ -74,7 +94,16 @@ export declare function escapeInvisible(input: string): string;
|
|
|
74
94
|
* normalising would miss it.
|
|
75
95
|
*/
|
|
76
96
|
export declare function sanitizeText(input: string, maxChars?: number): string;
|
|
77
|
-
/**
|
|
97
|
+
/**
|
|
98
|
+
* Names of the injection shapes present in `text`.
|
|
99
|
+
*
|
|
100
|
+
* Runs in this process on text the sender wrote, up to a million characters
|
|
101
|
+
* of it for an extracted document — after the parser child has exited, so no
|
|
102
|
+
* timeout covers it. Every pattern above therefore has to be linear on a
|
|
103
|
+
* hostile repetition of its own trigger, and `analyze.test.ts` times each one
|
|
104
|
+
* on such input. A new pattern gets a line in that test before it gets a line
|
|
105
|
+
* in the list.
|
|
106
|
+
*/
|
|
78
107
|
export declare function detectSuspicious(text: string): string[];
|
|
79
108
|
/**
|
|
80
109
|
* Words that mix Latin with Cyrillic or Greek letters.
|
package/dist/analyze.js
CHANGED
|
@@ -45,9 +45,18 @@ const INJECTION_PATTERNS = [
|
|
|
45
45
|
'role-injection',
|
|
46
46
|
/(?:^|[-\u2014|>\])]\s{0,3})(system|assistant|developer)\s*:/im,
|
|
47
47
|
],
|
|
48
|
+
// Anchored at the start of the run. Without the lookbehind, `-{3,}` was
|
|
49
|
+
// tried from every position inside a run and backtracked once per possible
|
|
50
|
+
// length each time, which is quadratic on text that is nothing but hyphens:
|
|
51
|
+
// 40 000 of them took 1.5 s, and the million characters an extracted
|
|
52
|
+
// document may carry would have held this process — the whole server, its
|
|
53
|
+
// transport is stdio — for a quarter of an hour. A few kilobytes on the
|
|
54
|
+
// wire. With it, a run is one attempt from its first character and the
|
|
55
|
+
// positions inside it fail in constant time: a million hyphens in 5 ms,
|
|
56
|
+
// and a delimiter of any length is still found.
|
|
48
57
|
[
|
|
49
58
|
'fake-delimiter',
|
|
50
|
-
/(-{3,}|={3,}|#{3,})\s*(begin|end|system|instruction|prompt)/i,
|
|
59
|
+
/(?<![-=#])(-{3,}|={3,}|#{3,})\s*(begin|end|system|instruction|prompt)/i,
|
|
51
60
|
],
|
|
52
61
|
[
|
|
53
62
|
'tool-coercion',
|
|
@@ -115,7 +124,16 @@ const MAX_HIDDEN_ELEMENT_CHARS = 10_000;
|
|
|
115
124
|
*/
|
|
116
125
|
const CLOSER_SCAN_BUDGET_FACTOR = 4;
|
|
117
126
|
const CLOSER_SCAN_BUDGET_FLOOR = 100_000;
|
|
118
|
-
/**
|
|
127
|
+
/**
|
|
128
|
+
* Elements whose content the recipient never reads.
|
|
129
|
+
*
|
|
130
|
+
* The `w:`-prefixed names are WordprocessingML, not HTML: this walk is also how
|
|
131
|
+
* the text of a .docx attachment is read. A Word field code
|
|
132
|
+
* (`INCLUDEPICTURE "http://…"`, a DDE command) is markup the reader never sees
|
|
133
|
+
* for exactly the same reason a `<script>` body is, and `w:delText` is text a
|
|
134
|
+
* tracked change deleted — shown struck through at most, and not at all in the
|
|
135
|
+
* view a document is read in.
|
|
136
|
+
*/
|
|
119
137
|
const NON_CONTENT_TAGS = new Set([
|
|
120
138
|
'script',
|
|
121
139
|
'style',
|
|
@@ -123,8 +141,16 @@ const NON_CONTENT_TAGS = new Set([
|
|
|
123
141
|
'title',
|
|
124
142
|
'noscript',
|
|
125
143
|
'template',
|
|
144
|
+
'w:instrtext',
|
|
145
|
+
'w:deltext',
|
|
126
146
|
]);
|
|
127
|
-
/**
|
|
147
|
+
/**
|
|
148
|
+
* Closing tags that end a visual block, and so earn a line break.
|
|
149
|
+
*
|
|
150
|
+
* The namespaced names are the OOXML and OpenDocument paragraph, heading and
|
|
151
|
+
* row elements. Without them a whole .docx comes back as one line, because
|
|
152
|
+
* nothing else in a document part ever closes a block.
|
|
153
|
+
*/
|
|
128
154
|
const BLOCK_TAGS = new Set([
|
|
129
155
|
'p',
|
|
130
156
|
'div',
|
|
@@ -136,8 +162,19 @@ const BLOCK_TAGS = new Set([
|
|
|
136
162
|
'h4',
|
|
137
163
|
'h5',
|
|
138
164
|
'h6',
|
|
165
|
+
'w:p',
|
|
166
|
+
'w:tr',
|
|
167
|
+
'a:p',
|
|
168
|
+
'text:p',
|
|
169
|
+
'text:h',
|
|
170
|
+
'table:table-row',
|
|
139
171
|
]);
|
|
140
|
-
|
|
172
|
+
// The name may carry a namespace prefix and a hyphen: `</w:p>`, `</text:h>`,
|
|
173
|
+
// `</table:table-row>`. Without the colon and the hyphen this matched `w` for
|
|
174
|
+
// `</w:p>`, so every namespaced entry in the sets above would be dead code.
|
|
175
|
+
// HTML is unaffected — no HTML element name contains either character, and a
|
|
176
|
+
// custom element (`<my-widget>`) is in none of the sets under either reading.
|
|
177
|
+
const TAG_NAME = /^<\/?([A-Za-z][A-Za-z0-9:_.-]*)/;
|
|
141
178
|
const BR_TAG = /^<br\s*\/?$/i;
|
|
142
179
|
const STYLE_ATTRIBUTE = /style\s*=\s*("|')/gi;
|
|
143
180
|
const HIDDEN_VALUE = /display\s*:\s*none|visibility\s*:\s*hidden|opacity\s*:\s*0|font-size\s*:\s*0/i;
|
|
@@ -164,13 +201,33 @@ function hasHiddenStyle(tag) {
|
|
|
164
201
|
return false;
|
|
165
202
|
}
|
|
166
203
|
/**
|
|
167
|
-
* Extracts readable text from HTML
|
|
204
|
+
* Extracts readable text from HTML — and from the XML inside an OOXML or
|
|
205
|
+
* OpenDocument attachment, which is the same problem with different tag names.
|
|
206
|
+
*
|
|
207
|
+
* Reused there rather than reimplemented, and that is a security decision, not
|
|
208
|
+
* a tidiness one. The obvious `document.xml` reader is
|
|
209
|
+
* `/<w:t[^>]*>([\s\S]*?)<\/w:t>/g` — which is the exact shape of the bug
|
|
210
|
+
* recorded above this function: *n* start tokens each paying for a scan that
|
|
211
|
+
* never finds its end. A `document.xml` of `'<w:t '` repeated 200 000 times is
|
|
212
|
+
* a tiny, deflate-friendly ZIP entry. This walk is immune for the reason it was
|
|
213
|
+
* written, so the second parser is the one not to write.
|
|
214
|
+
*
|
|
215
|
+
* It is also why nothing here parses XML properly. A real parser resolves
|
|
216
|
+
* entities, and would hand a mail attachment billion-laughs expansion and an
|
|
217
|
+
* `<!ENTITY … SYSTEM "file:///etc/passwd">` that reads a file. Those are not
|
|
218
|
+
* defended against below; they are simply not implemented. `&lol9;` comes out
|
|
219
|
+
* as six literal characters, and it must stay that way — reaching for
|
|
220
|
+
* `fast-xml-parser` here would reintroduce all three at once.
|
|
168
221
|
*
|
|
169
222
|
* Deliberately not `mailparser`'s own `text` fallback: that keeps content the
|
|
170
223
|
* recipient never sees. Anything hidden by inline CSS is a place to park an
|
|
171
224
|
* instruction meant only for the model, so those elements are dropped before
|
|
172
225
|
* the tags are stripped.
|
|
173
226
|
*
|
|
227
|
+
* `maxChars` overrides the input slice. The default suits a mail body; a
|
|
228
|
+
* document part needs more, because OOXML spends most of its bytes on
|
|
229
|
+
* formatting and the readable text is a small fraction of it.
|
|
230
|
+
*
|
|
174
231
|
* This is one pass over the input. The cursors below only ever move forward,
|
|
175
232
|
* which is the property that makes the whole function linear no matter what the
|
|
176
233
|
* sender writes: a start token that is never closed is answered once and then
|
|
@@ -181,8 +238,8 @@ function hasHiddenStyle(tag) {
|
|
|
181
238
|
* for the same reason it always was: nothing downstream trusts the stripping,
|
|
182
239
|
* and the fencing in {@link wrapUntrusted} is what carries the weight.
|
|
183
240
|
*/
|
|
184
|
-
export function htmlToText(html) {
|
|
185
|
-
const source = html.slice(0,
|
|
241
|
+
export function htmlToText(html, maxChars = MAX_HTML_CHARS) {
|
|
242
|
+
const source = html.slice(0, maxChars);
|
|
186
243
|
const out = [];
|
|
187
244
|
// Forward-only cursors. Each call may advance them, never rewind them, so
|
|
188
245
|
// across the whole document each scans the input at most once — the same
|
|
@@ -288,10 +345,33 @@ export function htmlToText(html) {
|
|
|
288
345
|
.replace(/>/gi, '>')
|
|
289
346
|
.replace(/"/gi, '"')
|
|
290
347
|
.replace(/'/g, "'")
|
|
348
|
+
// Numeric character references. Common in HTML mail (`’` for a
|
|
349
|
+
// curly apostrophe) and near-universal in OOXML, where a German document
|
|
350
|
+
// may write every umlaut this way — without this they arrive as literal
|
|
351
|
+
// `ä`. Bounded digit counts so the pattern cannot be made to scan,
|
|
352
|
+
// and out-of-range values produce nothing rather than a guess.
|
|
353
|
+
.replace(/&#x([0-9a-f]{1,6});/gi, (match, hex) => fromCodePoint(parseInt(hex, 16), match))
|
|
354
|
+
.replace(/&#(\d{1,7});/g, (match, digits) => fromCodePoint(Number(digits), match))
|
|
291
355
|
// Last, so a decoded `&lt;` does not turn into a `<` the caller never
|
|
292
356
|
// received.
|
|
293
357
|
.replace(/&/gi, '&'));
|
|
294
358
|
}
|
|
359
|
+
/**
|
|
360
|
+
* One character from a numeric reference, or the reference itself.
|
|
361
|
+
*
|
|
362
|
+
* Returning the original text for anything out of range is the conservative
|
|
363
|
+
* half: a reference nobody can render is better left visible than turned into a
|
|
364
|
+
* replacement character that reads as content. Surrogates are excluded because
|
|
365
|
+
* a lone one is not a character and only makes the string harder to handle
|
|
366
|
+
* downstream.
|
|
367
|
+
*/
|
|
368
|
+
function fromCodePoint(value, original) {
|
|
369
|
+
if (!Number.isInteger(value) || value < 1 || value > 0x10ffff)
|
|
370
|
+
return original;
|
|
371
|
+
if (value >= 0xd800 && value <= 0xdfff)
|
|
372
|
+
return original;
|
|
373
|
+
return String.fromCodePoint(value);
|
|
374
|
+
}
|
|
295
375
|
/**
|
|
296
376
|
* Removes the characters a human reader cannot see but the model can.
|
|
297
377
|
*
|
|
@@ -338,7 +418,16 @@ export function sanitizeText(input, maxChars = MAX_BODY_CHARS) {
|
|
|
338
418
|
? `${normalized.slice(0, maxChars)}\n… (truncated at ${maxChars} characters)`
|
|
339
419
|
: normalized;
|
|
340
420
|
}
|
|
341
|
-
/**
|
|
421
|
+
/**
|
|
422
|
+
* Names of the injection shapes present in `text`.
|
|
423
|
+
*
|
|
424
|
+
* Runs in this process on text the sender wrote, up to a million characters
|
|
425
|
+
* of it for an extracted document — after the parser child has exited, so no
|
|
426
|
+
* timeout covers it. Every pattern above therefore has to be linear on a
|
|
427
|
+
* hostile repetition of its own trigger, and `analyze.test.ts` times each one
|
|
428
|
+
* on such input. A new pattern gets a line in that test before it gets a line
|
|
429
|
+
* in the list.
|
|
430
|
+
*/
|
|
342
431
|
export function detectSuspicious(text) {
|
|
343
432
|
return INJECTION_PATTERNS.filter(([, pattern]) => pattern.test(text)).map(([name]) => name);
|
|
344
433
|
}
|
package/dist/analyze.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"analyze.js","sourceRoot":"","sources":["../src/analyze.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"analyze.js","sourceRoot":"","sources":["../src/analyze.ts"],"names":[],"mappings":"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"}
|
package/dist/attachments.d.ts
CHANGED
|
@@ -24,7 +24,18 @@ export interface AttachmentCandidate {
|
|
|
24
24
|
}
|
|
25
25
|
export interface AttachmentPolicy {
|
|
26
26
|
allowedTypes: string[];
|
|
27
|
+
/**
|
|
28
|
+
* Size ceiling for the destination this check is for.
|
|
29
|
+
*
|
|
30
|
+
* Per destination, because there are three of them and they answer different
|
|
31
|
+
* questions: what may enter the model's context, what may be written to disk,
|
|
32
|
+
* what a parser may be handed. The caller picks the number; naming it here
|
|
33
|
+
* keeps the refusal pointing at the variable an operator would actually
|
|
34
|
+
* change.
|
|
35
|
+
*/
|
|
27
36
|
maxBytes: number;
|
|
37
|
+
/** Environment variable behind {@link maxBytes}, for the refusal text. */
|
|
38
|
+
maxBytesName: string;
|
|
28
39
|
}
|
|
29
40
|
/**
|
|
30
41
|
* Strips a filename down to something safe to print and to reason about.
|
package/dist/attachments.js
CHANGED
|
@@ -225,7 +225,7 @@ export function checkPolicy(candidate, policy) {
|
|
|
225
225
|
}
|
|
226
226
|
if (candidate.size !== undefined && candidate.size > policy.maxBytes) {
|
|
227
227
|
allowed = false;
|
|
228
|
-
notes.push(`refused: declared size ${candidate.size} exceeds
|
|
228
|
+
notes.push(`refused: declared size ${candidate.size} exceeds ${policy.maxBytesName} (${policy.maxBytes})`);
|
|
229
229
|
}
|
|
230
230
|
return { ...candidate, allowed, notes };
|
|
231
231
|
}
|
package/dist/attachments.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"attachments.js","sourceRoot":"","sources":["../src/attachments.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,eAAe,EAAE,cAAc,EAAE,MAAM,cAAc,CAAC;AAE/D,+EAA+E;AAC/E,MAAM,SAAS,GAAG,CAAC,CAAC;AACpB,8DAA8D;AAC9D,MAAM,eAAe,GAAG,EAAE,CAAC;AAC3B,MAAM,mBAAmB,GAAG,GAAG,CAAC;AAEhC;;;;;;;;;GASG;AACH,MAAM,CAAC,MAAM,qBAAqB,GAAG,IAAI,GAAG,CAAC;IAC3C,KAAK;IACL,KAAK;IACL,KAAK;IACL,UAAU;IACV,aAAa;IACb,WAAW;IACX,KAAK;IACL,MAAM;IACN,KAAK;IACL,KAAK;IACL,KAAK;IACL,KAAK;IACL,KAAK;IACL,KAAK;IACL,KAAK;IACL,KAAK;IACL,KAAK;IACL,KAAK;IACL,KAAK;IACL,KAAK;IACL,KAAK;IACL,KAAK;IACL,QAAQ;IACR,KAAK;IACL,KAAK;IACL,KAAK;IACL,KAAK;IACL,KAAK;IACL,KAAK;IACL,KAAK;IACL,KAAK;IACL,IAAI;IACJ,KAAK;IACL,KAAK;IACL,KAAK;IACL,KAAK;IACL,KAAK;IACL,KAAK;IACL,KAAK;IACL,KAAK;IACL,KAAK;IACL,KAAK;IACL,KAAK;IACL,KAAK;IACL,KAAK;IACL,KAAK;IACL,KAAK;IACL,KAAK;IACL,KAAK;IACL,KAAK;IACL,KAAK;IACL,KAAK;IACL,KAAK;IACL,KAAK;IACL,MAAM;IACN,MAAM;IACN,QAAQ;IACR,KAAK;IACL,KAAK;IACL,KAAK;IACL,KAAK;IACL,KAAK;IACL,KAAK;IACL,KAAK;IACL,IAAI;IACJ,KAAK;IACL,KAAK;IACL,KAAK;IACL,KAAK;IACL,KAAK;IACL,MAAM;IACN,MAAM;IACN,IAAI;IACJ,KAAK;IACL,KAAK;IACL,IAAI;IACJ,KAAK;IACL,KAAK;IACL,KAAK;IACL,KAAK;IACL,KAAK;IACL,IAAI;IACJ,KAAK;IACL,KAAK;IACL,KAAK;IACL,IAAI;IACJ,KAAK;IACL,KAAK;IACL,UAAU;IACV,KAAK;IACL,IAAI;IACJ,KAAK;IACL,KAAK;IACL,KAAK;IACL,KAAK;CACN,CAAC,CAAC;AAEH;;;;GAIG;AACH,MAAM,qBAAqB,GACzB,kFAAkF,CAAC;
|
|
1
|
+
{"version":3,"file":"attachments.js","sourceRoot":"","sources":["../src/attachments.ts"],"names":[],"mappings":"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"}
|
package/dist/config.d.ts
CHANGED
|
@@ -34,6 +34,17 @@ export interface ImapConfig {
|
|
|
34
34
|
*/
|
|
35
35
|
downloadDir: string | undefined;
|
|
36
36
|
maxDownloadBytes: number;
|
|
37
|
+
/**
|
|
38
|
+
* Ceiling on the bytes handed to the text-extraction worker.
|
|
39
|
+
*
|
|
40
|
+
* A third limit because it answers a third question. `maxAttachmentBytes`
|
|
41
|
+
* bounds what may enter the model's context — extraction does not, since only
|
|
42
|
+
* the extracted text comes back and `max_chars` bounds that. `maxDownloadBytes`
|
|
43
|
+
* bounds what may be written to the filesystem. This one bounds how much
|
|
44
|
+
* hostile input a parser is asked to chew on inside a thread that can be
|
|
45
|
+
* terminated, which is a memory question and neither of the other two.
|
|
46
|
+
*/
|
|
47
|
+
maxExtractBytes: number;
|
|
37
48
|
}
|
|
38
49
|
export interface Config {
|
|
39
50
|
imap: ImapConfig;
|
package/dist/config.js
CHANGED
|
@@ -23,6 +23,18 @@ const DEFAULT_MAX_MESSAGES = 100;
|
|
|
23
23
|
const DEFAULT_MAX_ATTACHMENT_BYTES = 1024 * 1024;
|
|
24
24
|
/** Disk cap: this one protects the filesystem, which is a different concern. */
|
|
25
25
|
const DEFAULT_MAX_DOWNLOAD_BYTES = 25 * 1024 * 1024;
|
|
26
|
+
/** Extraction cap: how much hostile input one parser is asked to chew on. */
|
|
27
|
+
const DEFAULT_MAX_EXTRACT_BYTES = 10 * 1024 * 1024;
|
|
28
|
+
/**
|
|
29
|
+
* Hard ceiling on `IMAP_MAX_EXTRACT_BYTES`.
|
|
30
|
+
*
|
|
31
|
+
* The other two size variables have no maximum because their cost is linear and
|
|
32
|
+
* paid somewhere visible — a big result, a big file. This one buys a buffer
|
|
33
|
+
* inside a parser working on bytes a stranger chose, so a typo of "104857600000"
|
|
34
|
+
* would not produce a big answer, it would produce an operator who believes
|
|
35
|
+
* there is a limit. 64 MiB is past any document that arrives by mail.
|
|
36
|
+
*/
|
|
37
|
+
const MAX_MAX_EXTRACT_BYTES = 64 * 1024 * 1024;
|
|
26
38
|
const DEFAULT_SEEN_KEYWORD = 'AiSeen';
|
|
27
39
|
/** Shown when the configuration is incomplete — at startup and on every call. */
|
|
28
40
|
export function missingConfigMessage(missing) {
|
|
@@ -91,6 +103,7 @@ export function loadConfig(env = process.env) {
|
|
|
91
103
|
allowedAttachmentTypes: parseTypes(env.IMAP_ATTACHMENT_TYPES),
|
|
92
104
|
downloadDir: env.IMAP_DOWNLOAD_DIR,
|
|
93
105
|
maxDownloadBytes: parseCount(env.IMAP_MAX_DOWNLOAD_BYTES, DEFAULT_MAX_DOWNLOAD_BYTES, 'IMAP_MAX_DOWNLOAD_BYTES'),
|
|
106
|
+
maxExtractBytes: parseCount(env.IMAP_MAX_EXTRACT_BYTES, DEFAULT_MAX_EXTRACT_BYTES, 'IMAP_MAX_EXTRACT_BYTES', MAX_MAX_EXTRACT_BYTES),
|
|
94
107
|
},
|
|
95
108
|
// Defaults to true, unlike the rest of the family — see the field comment.
|
|
96
109
|
readOnly: env.IMAP_READ_ONLY !== 'false',
|
|
@@ -161,7 +174,7 @@ function parsePort(raw, fallback, name) {
|
|
|
161
174
|
}
|
|
162
175
|
return value;
|
|
163
176
|
}
|
|
164
|
-
function parseCount(raw, fallback, name) {
|
|
177
|
+
function parseCount(raw, fallback, name, max) {
|
|
165
178
|
if (raw === undefined || raw === '')
|
|
166
179
|
return fallback;
|
|
167
180
|
const value = Number(raw);
|
|
@@ -169,6 +182,13 @@ function parseCount(raw, fallback, name) {
|
|
|
169
182
|
console.error(`imap-mcp: ${name} must be a positive integer`);
|
|
170
183
|
process.exit(1);
|
|
171
184
|
}
|
|
185
|
+
if (max !== undefined && value > max) {
|
|
186
|
+
// The limit is named rather than clamped to: an operator who asked for more
|
|
187
|
+
// than the server will do should learn that here, not from a refusal later
|
|
188
|
+
// that looks like the document was the problem.
|
|
189
|
+
console.error(`imap-mcp: ${name} must not exceed ${max}`);
|
|
190
|
+
process.exit(1);
|
|
191
|
+
}
|
|
172
192
|
return value;
|
|
173
193
|
}
|
|
174
194
|
/**
|
package/dist/config.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"config.js","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"config.js","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -0,0 +1,83 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* The extraction child: the only code in this server that parses a binary a
|
|
3
|
+
* stranger sent, and the reason it runs in a process of its own.
|
|
4
|
+
*
|
|
5
|
+
* A process rather than a worker thread, and that was a lesson rather than a
|
|
6
|
+
* preference. A worker's `resourceLimits` promise to turn a runaway parse into
|
|
7
|
+
* `ERR_WORKER_OUT_OF_MEMORY`, and for most allocation patterns they do; for
|
|
8
|
+
* the one a 3 kB spreadsheet produced they did not, and the whole server died
|
|
9
|
+
* with `FATAL ERROR: Reached heap limit`. A thread also cannot give back the
|
|
10
|
+
* memory a terminated parse left behind — a gigabyte stayed resident after
|
|
11
|
+
* `terminate()`. A process that is killed takes its memory with it, whatever
|
|
12
|
+
* it was doing, and a process that aborts aborts alone.
|
|
13
|
+
*
|
|
14
|
+
* Read the import rules before editing this file. It is started from its own
|
|
15
|
+
* source — `child.ts` under vitest, which Node runs with type stripping, and
|
|
16
|
+
* `child.js` from `dist/` in production — so Node loads it and everything it
|
|
17
|
+
* reaches, without vitest's resolver. Node strips types; it does not rewrite a
|
|
18
|
+
* `./x.js` specifier to the `./x.ts` sitting beside it. So:
|
|
19
|
+
*
|
|
20
|
+
* - static imports here may only be bare specifiers (`node:*`, a package) or
|
|
21
|
+
* `import type`, which is erased before it can fail to resolve;
|
|
22
|
+
* - anything relative is loaded through {@link sibling}, which picks the
|
|
23
|
+
* extension from this module's own;
|
|
24
|
+
* - no enums, no namespaces, no parameter properties — type stripping cannot
|
|
25
|
+
* erase syntax that emits code.
|
|
26
|
+
*
|
|
27
|
+
* Get this wrong in one direction and every test fails while the build stays
|
|
28
|
+
* green; get it wrong in the other and every test passes while the published
|
|
29
|
+
* package throws on first use. The second is why `npm run build` is followed by
|
|
30
|
+
* a real extraction against `dist/`.
|
|
31
|
+
*/
|
|
32
|
+
const EXTENSION = import.meta.url.endsWith('.ts') ? 'ts' : 'js';
|
|
33
|
+
function sibling(path) {
|
|
34
|
+
return new URL(`${path}.${EXTENSION}`, import.meta.url).href;
|
|
35
|
+
}
|
|
36
|
+
async function run(request) {
|
|
37
|
+
if (request.kind === 'pdf') {
|
|
38
|
+
const { extractPdf } = (await import(sibling('./pdf')));
|
|
39
|
+
return extractPdf(request.bytes, request.maxChars);
|
|
40
|
+
}
|
|
41
|
+
const [{ extractZipDocument }, { htmlToText }] = await Promise.all([
|
|
42
|
+
import(sibling('./ooxml')),
|
|
43
|
+
import(sibling('../analyze')),
|
|
44
|
+
]);
|
|
45
|
+
return extractZipDocument(request.kind, request.bytes, request.maxChars, htmlToText);
|
|
46
|
+
}
|
|
47
|
+
/** A code for the log, never a message: the message quotes the document. */
|
|
48
|
+
function codeOf(error) {
|
|
49
|
+
const value = error;
|
|
50
|
+
if (typeof value?.code === 'string')
|
|
51
|
+
return value.code;
|
|
52
|
+
if (typeof value?.name === 'string')
|
|
53
|
+
return value.name;
|
|
54
|
+
return 'unknown';
|
|
55
|
+
}
|
|
56
|
+
const send = process.send?.bind(process);
|
|
57
|
+
if (send !== undefined) {
|
|
58
|
+
// The parent is gone: nothing is waiting for an answer, and a parse that
|
|
59
|
+
// outlives the server it was started by is a parse nobody asked for.
|
|
60
|
+
process.on('disconnect', () => {
|
|
61
|
+
process.exit(0);
|
|
62
|
+
});
|
|
63
|
+
process.once('message', (request) => {
|
|
64
|
+
run(request).then((response) => {
|
|
65
|
+
send(response, () => {
|
|
66
|
+
process.exit(0);
|
|
67
|
+
});
|
|
68
|
+
}, (error) => {
|
|
69
|
+
// Never the caught error. pdf.js and fflate quote the document in
|
|
70
|
+
// their exception messages — byte offsets, object fragments, what they
|
|
71
|
+
// found where they expected something else. That is text a stranger
|
|
72
|
+
// wrote, and an error message is read as the server's own voice,
|
|
73
|
+
// outside the fence every other piece of message content passes
|
|
74
|
+
// through. A code crosses; the words are the host's.
|
|
75
|
+
console.error(`imap-mcp: extraction failed: ${codeOf(error)}`);
|
|
76
|
+
send({ ok: false, reason: 'internal' }, () => {
|
|
77
|
+
process.exit(0);
|
|
78
|
+
});
|
|
79
|
+
});
|
|
80
|
+
});
|
|
81
|
+
}
|
|
82
|
+
export {};
|
|
83
|
+
//# sourceMappingURL=child.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"child.js","sourceRoot":"","sources":["../../src/extract/child.ts"],"names":[],"mappings":"AAEA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA8BG;AACH,MAAM,SAAS,GAAG,OAAO,IAAI,CAAC,GAAG,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC;AAEhE,SAAS,OAAO,CAAC,IAAY;IAC3B,OAAO,IAAI,GAAG,CAAC,GAAG,IAAI,IAAI,SAAS,EAAE,EAAE,OAAO,IAAI,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC;AAC/D,CAAC;AAED,KAAK,UAAU,GAAG,CAAC,OAAuB;IACxC,IAAI,OAAO,CAAC,IAAI,KAAK,KAAK,EAAE,CAAC;QAC3B,MAAM,EAAE,UAAU,EAAE,GAAG,CAAC,MAAM,MAAM,CAClC,OAAO,CAAC,OAAO,CAAC,CACjB,CAA8B,CAAC;QAChC,OAAO,UAAU,CAAC,OAAO,CAAC,KAAK,EAAE,OAAO,CAAC,QAAQ,CAAC,CAAC;IACrD,CAAC;IACD,MAAM,CAAC,EAAE,kBAAkB,EAAE,EAAE,EAAE,UAAU,EAAE,CAAC,GAAG,MAAM,OAAO,CAAC,GAAG,CAAC;QACjE,MAAM,CAAC,OAAO,CAAC,SAAS,CAAC,CAAyC;QAClE,MAAM,CAAC,OAAO,CAAC,YAAY,CAAC,CAA4C;KACzE,CAAC,CAAC;IACH,OAAO,kBAAkB,CACvB,OAAO,CAAC,IAAI,EACZ,OAAO,CAAC,KAAK,EACb,OAAO,CAAC,QAAQ,EAChB,UAAU,CACX,CAAC;AACJ,CAAC;AAED,4EAA4E;AAC5E,SAAS,MAAM,CAAC,KAAc;IAC5B,MAAM,KAAK,GAAG,KAAkD,CAAC;IACjE,IAAI,OAAO,KAAK,EAAE,IAAI,KAAK,QAAQ;QAAE,OAAO,KAAK,CAAC,IAAI,CAAC;IACvD,IAAI,OAAO,KAAK,EAAE,IAAI,KAAK,QAAQ;QAAE,OAAO,KAAK,CAAC,IAAI,CAAC;IACvD,OAAO,SAAS,CAAC;AACnB,CAAC;AAED,MAAM,IAAI,GAAG,OAAO,CAAC,IAAI,EAAE,IAAI,CAAC,OAAO,CAAC,CAAC;AACzC,IAAI,IAAI,KAAK,SAAS,EAAE,CAAC;IACvB,yEAAyE;IACzE,qEAAqE;IACrE,OAAO,CAAC,EAAE,CAAC,YAAY,EAAE,GAAG,EAAE;QAC5B,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC,CAAC,CAAC;IACH,OAAO,CAAC,IAAI,CAAC,SAAS,EAAE,CAAC,OAAuB,EAAE,EAAE;QAClD,GAAG,CAAC,OAAO,CAAC,CAAC,IAAI,CACf,CAAC,QAAQ,EAAE,EAAE;YACX,IAAI,CAAC,QAAQ,EAAE,GAAG,EAAE;gBAClB,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;YAClB,CAAC,CAAC,CAAC;QACL,CAAC,EACD,CAAC,KAAc,EAAE,EAAE;YACjB,kEAAkE;YAClE,uEAAuE;YACvE,oEAAoE;YACpE,iEAAiE;YACjE,gEAAgE;YAChE,qDAAqD;YACrD,OAAO,CAAC,KAAK,CAAC,gCAAgC,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;YAC/D,IAAI,CACF,EAAE,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,UAAU,EAA4B,EAC3D,GAAG,EAAE;gBACH,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;YAClB,CAAC,CACF,CAAC;QACJ,CAAC,CACF,CAAC;IACJ,CAAC,CAAC,CAAC;AACL,CAAC"}
|