@rndmjoker/proton-mcp 0.4.5 → 0.4.11

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.
Files changed (57) hide show
  1. package/README.md +21 -14
  2. package/dist/in-flight.d.ts +6 -3
  3. package/dist/in-flight.js +6 -3
  4. package/dist/in-flight.js.map +1 -1
  5. package/dist/mail/actions.d.ts +0 -2
  6. package/dist/mail/actions.js +8 -7
  7. package/dist/mail/actions.js.map +1 -1
  8. package/dist/mail/compose.d.ts +23 -26
  9. package/dist/mail/compose.js +21 -27
  10. package/dist/mail/compose.js.map +1 -1
  11. package/dist/mail/drafts.d.ts +15 -0
  12. package/dist/mail/drafts.js +24 -5
  13. package/dist/mail/drafts.js.map +1 -1
  14. package/dist/mail/ids.d.ts +15 -1
  15. package/dist/mail/ids.js +10 -0
  16. package/dist/mail/ids.js.map +1 -1
  17. package/dist/mail/labels.js +9 -4
  18. package/dist/mail/labels.js.map +1 -1
  19. package/dist/mail/markup.d.ts +8 -2
  20. package/dist/mail/markup.js +111 -7
  21. package/dist/mail/markup.js.map +1 -1
  22. package/dist/mail/messages.d.ts +30 -9
  23. package/dist/mail/messages.js +57 -2
  24. package/dist/mail/messages.js.map +1 -1
  25. package/dist/mail/search.d.ts +14 -4
  26. package/dist/mail/search.js +17 -5
  27. package/dist/mail/search.js.map +1 -1
  28. package/dist/server.js +4 -2
  29. package/dist/server.js.map +1 -1
  30. package/dist/tools/actions.js +2 -1
  31. package/dist/tools/actions.js.map +1 -1
  32. package/dist/tools/confirm.d.ts +5 -2
  33. package/dist/tools/confirm.js +13 -2
  34. package/dist/tools/confirm.js.map +1 -1
  35. package/dist/tools/drafts.js +24 -13
  36. package/dist/tools/drafts.js.map +1 -1
  37. package/dist/tools/format.d.ts +4 -0
  38. package/dist/tools/format.js +91 -12
  39. package/dist/tools/format.js.map +1 -1
  40. package/dist/tools/guidance.js +11 -4
  41. package/dist/tools/guidance.js.map +1 -1
  42. package/dist/tools/messages.js +34 -11
  43. package/dist/tools/messages.js.map +1 -1
  44. package/dist/tools/pending-view.d.ts +1 -1
  45. package/dist/tools/preview.d.ts +6 -1
  46. package/dist/tools/preview.js +6 -1
  47. package/dist/tools/preview.js.map +1 -1
  48. package/dist/tools/send.js +23 -12
  49. package/dist/tools/send.js.map +1 -1
  50. package/dist/web/pending.d.ts +1 -1
  51. package/dist/web/pending.js +1 -1
  52. package/dist/web/pending.js.map +1 -1
  53. package/dist/web/sections.js +6 -1
  54. package/dist/web/sections.js.map +1 -1
  55. package/dist/web/server.d.ts +5 -1
  56. package/dist/web/server.js.map +1 -1
  57. package/package.json +8 -10
package/README.md CHANGED
@@ -17,8 +17,8 @@ This server therefore runs on your machine as well, started by the AI client as
17
17
  | Tool | What it does |
18
18
  | :--- | :--- |
19
19
  | `list_folders` | Lists folders and labels, grouped by kind |
20
- | `list_messages` | Headers of a mailbox, newest first, with paging |
21
- | `search_messages` | Full text, subject, sender, recipient, date range, read state, star, size |
20
+ | `list_messages` | Headers of a mailbox, newest first, with paging. In "All Mail" the discarded ones are marked as such |
21
+ | `search_messages` | Full text, subject, sender, recipient, date range, read state, star, size. Dates are the sender's, matching what the results show |
22
22
  | `get_message` | One message as readable text, HTML converted, budgeted |
23
23
  | `get_attachment` | One attachment by index, textual types only |
24
24
  | `add_label` | Applies an existing label. The message stays in its folder |
@@ -35,6 +35,7 @@ This server therefore runs on your machine as well, started by the AI client as
35
35
  | `send_reply` | Replies and sends, keeping the conversation intact |
36
36
  | `send_forward` | Forwards and sends, attachments and all |
37
37
  | `send_draft` | Sends a draft that is already written |
38
+ | `open_configuration` | Hands back the address of the local web interface, with the token that opens it |
38
39
  | `check_for_updates` | Asks npm whether a newer version exists. The only thing here that contacts anything but your own machine, and only when called |
39
40
 
40
41
  Every tool that composes a message takes either `text` or `html`, never both: Proton drops the plain text half of a message that carries markup, so the half you confirmed would be the half that never arrived.
@@ -71,7 +72,7 @@ This table says what the server cannot do today. The issue behind each entry say
71
72
  | :--- | :--- |
72
73
  | Attachments composed from files on this machine | [#17](https://github.com/RndmJoker/proton-mcp/issues/17) |
73
74
  | Choosing per tool what an assistant may do | [#19](https://github.com/RndmJoker/proton-mcp/issues/19) |
74
- | Choosing how much markup a message may carry | [#24](https://github.com/RndmJoker/proton-mcp/issues/24) |
75
+ | Choosing in the interface how much markup a message may carry. The levels exist and a caller picks one per message; what is missing is a ceiling the caller cannot raise | [#24](https://github.com/RndmJoker/proton-mcp/issues/24) |
75
76
  | A fixed extra recipient the assistant cannot remove | [#18](https://github.com/RndmJoker/proton-mcp/issues/18) |
76
77
 
77
78
  **Binary attachments** are missing from that table on purpose. They are not an unfinished feature waiting for its turn: `get_attachment` refuses anything that is not text and says why. Handing one over would mean either base64 in the context window, which is unusable, or writing decrypted content to your disk, which this server does not do. Changing that needs a decision first, not an implementation, so there is nothing to track yet.
@@ -240,22 +241,26 @@ Use an absolute path; `~` is not expanded by every client. The setup script prin
240
241
  Without any client, by speaking the protocol directly:
241
242
 
242
243
  ```bash
243
- printf '%s\n' \
244
- '{"jsonrpc":"2.0","id":1,"method":"initialize","params":{"protocolVersion":"2025-06-18","capabilities":{},"clientInfo":{"name":"check","version":"1"}}}' \
245
- '{"jsonrpc":"2.0","method":"notifications/initialized"}' \
246
- '{"jsonrpc":"2.0","id":2,"method":"tools/call","params":{"name":"list_folders","arguments":{"kind":"system"}}}' \
247
- | node dist/server.js
244
+ {
245
+ printf '%s\n' \
246
+ '{"jsonrpc":"2.0","id":1,"method":"initialize","params":{"protocolVersion":"2025-06-18","capabilities":{},"clientInfo":{"name":"check","version":"1"}}}' \
247
+ '{"jsonrpc":"2.0","method":"notifications/initialized"}' \
248
+ '{"jsonrpc":"2.0","id":2,"method":"tools/call","params":{"name":"list_folders","arguments":{"kind":"system"}}}'
249
+ sleep 5
250
+ } | node dist/server.js
248
251
  ```
249
252
 
253
+ The `sleep` keeps the input open while the answer is on its way. A client signals that it is leaving by closing the server's input, and from that moment no further answer is written, so a plain `printf ... |` only ever gets the reply to `initialize`.
254
+
250
255
  You should see your system mailboxes. If instead you get a message saying the Bridge is probably not running, start and unlock the Bridge and try again. The server explains what to do in its error messages rather than printing error codes.
251
256
 
252
257
  ## Security
253
258
 
254
259
  The content of someone else's email is text written by strangers, and it is handed to a language model that can call tools. A crafted message may try to instruct the assistant. This server assumes that will happen:
255
260
 
256
- - **Message content is marked as untrusted** in every answer, enclosed in explicit markers and separated from anything the server itself says.
261
+ - **Message content is marked as untrusted** in every answer, enclosed in markers and separated from anything the server itself says. The markers carry a label drawn per answer, because a fixed one is written down in this repository: a sender could put the closing marker in the body and have everything after it read as though the server wrote it. A label that changes every time cannot be copied. For the same reason a subject, a display name or an attachment name never breaks across lines, however many line breaks it was sent with; the break is shown, not removed.
257
262
  - **Nothing is filtered out of the content** and no attempt is made to detect attacks. Such filters pretend to offer safety they cannot deliver.
258
- - **Sending will always require your confirmation**, enforced in the server rather than in a system prompt. There will be no switch to turn it off. Until sending exists at all, there is nothing to confirm.
263
+ - **Sending always requires your confirmation**, enforced in the server rather than in a system prompt. There is no switch to turn it off, and a client that cannot ask the question cannot send.
259
264
  - **There will be no permanent deletion**, and no tools for filters, forwarding, account or key settings. A hijacked session must not be able to leave behind lasting access.
260
265
  - **HTML is never passed through raw** and external content is never fetched. Tracking pixels stay ineffective.
261
266
  - **No message ever touches your disk.** No cache, no index, no copies. Anything this server wrote down would be your mail in plain text, outside the encryption you pay Proton for.
@@ -283,7 +288,7 @@ Formatting changes what a confirmation has to show, and that is the interesting
283
288
  - **Text a recipient can read that the body does not show.** Measured: an image's alt text never appears in the converted body, and mail clients block remote images by default, so the alt text is frequently what the recipient actually reads. That was a way past the confirmation, and it is closed.
284
289
  - **Every property beyond ordinary formatting**, when `extended` was used, with the ones that really put something out of sight marked as such.
285
290
 
286
- What no level permits is `style` blocks, `script`, event handlers and `data:` addresses. The line runs between describing a document and running inside it or reaching out of it: a `<style>` in the quote of a reply restyles the answer written above it, and 66 percent of real formatted mail carries one. Attachments from files on this machine are deliberately not supported either: a path named by a model, read by the server and carried out by the next confirmation is not a feature, it is a way out for anything on your disk. Forwarding loses nothing all the same, because the original message travels along whole, embedded images included.
291
+ What no level permits is `style` blocks, `script`, event handlers, `data:` addresses and comments. Comments look inert and are not: Outlook runs conditional ones, so a `<style>` block inside a comment reaches those recipients as markup while the confirmation and the preview see a comment. Addresses are checked wherever they appear, a CSS `background: url(...)` included, and every one of them is listed on the preview page. The line runs between describing a document and running inside it or reaching out of it: a `<style>` in the quote of a reply restyles the answer written above it, and 66 percent of real formatted mail carries one. Attachments from files on this machine are deliberately not supported either: a path named by a model, read by the server and carried out by the next confirmation is not a feature, it is a way out for anything on your disk. Forwarding loses nothing all the same, because the original message travels along whole, embedded images included.
287
292
 
288
293
  One thing worth knowing about drafts: Proton rewrites the thread headers of anything it stores. A reply is built with `In-Reply-To` and `References`, and what comes back has neither, only Proton's own internal thread id. Threading a stored draft is therefore Proton's business rather than this server's.
289
294
 
@@ -363,14 +368,14 @@ The one moment this cannot protect you is the very first connection, which is wh
363
368
  | Area | Choice |
364
369
  | :--- | :--- |
365
370
  | Language | TypeScript, Node.js 24 or newer |
366
- | MCP | `@modelcontextprotocol/server` v2, specification 2026-07-28 |
371
+ | MCP | `@modelcontextprotocol/server` v2. Its newest protocol revision is 2025-11-25; the parts of 2026-07-28 this server prepares for are read defensively, see the comment in `src/tools/capabilities.ts` |
367
372
  | IMAP | `imapflow` |
368
373
  | MIME | `mailparser`, `html-to-text` |
369
- | SMTP | `nodemailer`, for sending once it exists |
374
+ | SMTP | `nodemailer` |
370
375
  | Schemas | `zod` |
371
376
  | Tests | Vitest, `node` environment |
372
377
 
373
- Every dependency is MIT or MIT-0, except `deepmerge-ts` which is BSD-3-Clause. All permissive.
378
+ Every dependency that ships is permissive: mostly MIT, with Apache-2.0 (`@modelcontextprotocol/server` and `@modelcontextprotocol/core`, which are moving from MIT and keep it for older contributions), MIT-0 (`nodemailer`), BSD-2-Clause (the `htmlparser2` family), BSD-3-Clause (`deepmerge-ts`), ISC (`split2`) and one dual `MIT OR EUPL-1.1+` (`@zone-eu/mailsplit`). Development dependencies add MPL-2.0.
374
379
 
375
380
  ```bash
376
381
  npm run build # compile into dist/
@@ -393,6 +398,8 @@ src/
393
398
  ├── tools/ the MCP tools and their output formatting
394
399
  ├── web/ the local interface and its security layer
395
400
  ├── activity.ts what is running and what ran, in memory only
401
+ ├── config.ts the environment variables, read once at startup
402
+ ├── in-flight.ts the counter that holds shutdown until answers are out
396
403
  ├── session.ts whether we are signed in, and where from
397
404
  ├── settings.ts the Bridge ports, when changed in the interface
398
405
  └── server.ts entry point and transport
@@ -2,9 +2,12 @@
2
2
  * Bookkeeping for tool calls that are still running.
3
3
  *
4
4
  * Background: a stdio server learns that its client is gone by its input
5
- * stream ending. If it exits right away it cuts off calls that are still in
6
- * progress and their answer is lost. If it waits forever it hangs whenever a
7
- * call never returns.
5
+ * stream ending. The MCP SDK closes the transport at that point, so a call
6
+ * still in progress no longer gets its answer written; the client has said it
7
+ * is leaving and is not waiting for one. The work behind the call is another
8
+ * matter. Exiting right away would cut it off halfway, a message in the middle
9
+ * of being handed to the Bridge or a draft half replaced. Waiting forever would
10
+ * hang whenever a call never returns.
8
11
  *
9
12
  * Hence: keep count, and wait for a bounded grace period on shutdown.
10
13
  */
package/dist/in-flight.js CHANGED
@@ -2,9 +2,12 @@
2
2
  * Bookkeeping for tool calls that are still running.
3
3
  *
4
4
  * Background: a stdio server learns that its client is gone by its input
5
- * stream ending. If it exits right away it cuts off calls that are still in
6
- * progress and their answer is lost. If it waits forever it hangs whenever a
7
- * call never returns.
5
+ * stream ending. The MCP SDK closes the transport at that point, so a call
6
+ * still in progress no longer gets its answer written; the client has said it
7
+ * is leaving and is not waiting for one. The work behind the call is another
8
+ * matter. Exiting right away would cut it off halfway, a message in the middle
9
+ * of being handed to the Bridge or a draft half replaced. Waiting forever would
10
+ * hang whenever a call never returns.
8
11
  *
9
12
  * Hence: keep count, and wait for a bounded grace period on shutdown.
10
13
  */
@@ -1 +1 @@
1
- {"version":3,"file":"in-flight.js","sourceRoot":"","sources":["../src/in-flight.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAEH,OAAO,KAAK,QAAQ,MAAM,eAAe,CAAA;AAEzC,IAAI,QAAQ,GAAG,CAAC,CAAA;AAChB,IAAI,aAAa,GAAsB,EAAE,CAAA;AAEzC,4EAA4E;AAC5E,MAAM,UAAU,aAAa;IAC3B,OAAO,QAAQ,CAAA;AACjB,CAAC;AAED;;;;;;;;;GASG;AACH,MAAM,CAAC,KAAK,UAAU,KAAK,CAAI,EAAoB,EAAE,IAAa;IAChE,QAAQ,EAAE,CAAA;IACV,MAAM,MAAM,GAAG,IAAI,KAAK,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC,IAAI,CAAC,CAAA;IACpE,IAAI,MAAM,GAAG,KAAK,CAAA;IAClB,IAAI,CAAC;QACH,OAAO,MAAM,EAAE,EAAE,CAAA;IACnB,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,MAAM,GAAG,IAAI,CAAA;QACb,MAAM,KAAK,CAAA;IACb,CAAC;YAAS,CAAC;QACT,IAAI,MAAM,KAAK,SAAS;YAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,CAAA;QAC3E,QAAQ,EAAE,CAAA;QACV,IAAI,QAAQ,KAAK,CAAC,EAAE,CAAC;YACnB,MAAM,OAAO,GAAG,aAAa,CAAA;YAC7B,aAAa,GAAG,EAAE,CAAA;YAClB,KAAK,MAAM,OAAO,IAAI,OAAO;gBAAE,OAAO,EAAE,CAAA;QAC1C,CAAC;IACH,CAAC;AACH,CAAC;AAED;;;;;;GAMG;AACH,MAAM,UAAU,WAAW,CAAC,KAAK,GAAG,IAAI;IACtC,IAAI,QAAQ,KAAK,CAAC;QAAE,OAAO,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,CAAA;IAEhD,OAAO,IAAI,OAAO,CAAU,CAAC,OAAO,EAAE,EAAE;QACtC,MAAM,KAAK,GAAG,UAAU,CAAC,GAAG,EAAE;YAC5B,aAAa,GAAG,aAAa,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,KAAK,MAAM,CAAC,CAAA;YACzD,OAAO,CAAC,KAAK,CAAC,CAAA;QAChB,CAAC,EAAE,KAAK,CAAC,CAAA;QAET,MAAM,MAAM,GAAG,GAAG,EAAE;YAClB,YAAY,CAAC,KAAK,CAAC,CAAA;YACnB,OAAO,CAAC,IAAI,CAAC,CAAA;QACf,CAAC,CAAA;QACD,aAAa,CAAC,IAAI,CAAC,MAAM,CAAC,CAAA;IAC5B,CAAC,CAAC,CAAA;AACJ,CAAC;AAED,wCAAwC;AACxC,MAAM,UAAU,MAAM;IACpB,QAAQ,GAAG,CAAC,CAAA;IACZ,aAAa,GAAG,EAAE,CAAA;AACpB,CAAC"}
1
+ {"version":3,"file":"in-flight.js","sourceRoot":"","sources":["../src/in-flight.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAEH,OAAO,KAAK,QAAQ,MAAM,eAAe,CAAA;AAEzC,IAAI,QAAQ,GAAG,CAAC,CAAA;AAChB,IAAI,aAAa,GAAsB,EAAE,CAAA;AAEzC,4EAA4E;AAC5E,MAAM,UAAU,aAAa;IAC3B,OAAO,QAAQ,CAAA;AACjB,CAAC;AAED;;;;;;;;;GASG;AACH,MAAM,CAAC,KAAK,UAAU,KAAK,CAAI,EAAoB,EAAE,IAAa;IAChE,QAAQ,EAAE,CAAA;IACV,MAAM,MAAM,GAAG,IAAI,KAAK,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC,IAAI,CAAC,CAAA;IACpE,IAAI,MAAM,GAAG,KAAK,CAAA;IAClB,IAAI,CAAC;QACH,OAAO,MAAM,EAAE,EAAE,CAAA;IACnB,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,MAAM,GAAG,IAAI,CAAA;QACb,MAAM,KAAK,CAAA;IACb,CAAC;YAAS,CAAC;QACT,IAAI,MAAM,KAAK,SAAS;YAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,CAAA;QAC3E,QAAQ,EAAE,CAAA;QACV,IAAI,QAAQ,KAAK,CAAC,EAAE,CAAC;YACnB,MAAM,OAAO,GAAG,aAAa,CAAA;YAC7B,aAAa,GAAG,EAAE,CAAA;YAClB,KAAK,MAAM,OAAO,IAAI,OAAO;gBAAE,OAAO,EAAE,CAAA;QAC1C,CAAC;IACH,CAAC;AACH,CAAC;AAED;;;;;;GAMG;AACH,MAAM,UAAU,WAAW,CAAC,KAAK,GAAG,IAAI;IACtC,IAAI,QAAQ,KAAK,CAAC;QAAE,OAAO,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,CAAA;IAEhD,OAAO,IAAI,OAAO,CAAU,CAAC,OAAO,EAAE,EAAE;QACtC,MAAM,KAAK,GAAG,UAAU,CAAC,GAAG,EAAE;YAC5B,aAAa,GAAG,aAAa,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,KAAK,MAAM,CAAC,CAAA;YACzD,OAAO,CAAC,KAAK,CAAC,CAAA;QAChB,CAAC,EAAE,KAAK,CAAC,CAAA;QAET,MAAM,MAAM,GAAG,GAAG,EAAE;YAClB,YAAY,CAAC,KAAK,CAAC,CAAA;YACnB,OAAO,CAAC,IAAI,CAAC,CAAA;QACf,CAAC,CAAA;QACD,aAAa,CAAC,IAAI,CAAC,MAAM,CAAC,CAAA;IAC5B,CAAC,CAAC,CAAA;AACJ,CAAC;AAED,wCAAwC;AACxC,MAAM,UAAU,MAAM;IACpB,QAAQ,GAAG,CAAC,CAAA;IACZ,aAAa,GAAG,EAAE,CAAA;AACpB,CAAC"}
@@ -102,8 +102,6 @@ export interface FlagChanges {
102
102
  * were correct immediately and unchanged twenty seconds later.
103
103
  */
104
104
  export declare function setFlags(connection: Connection, readOnly: boolean, messageIds: string[], changes: FlagChanges, hint?: string): Promise<BatchResult>;
105
- /** The mailbox Proton puts discarded messages in. Nothing here empties it. */
106
- export declare const TRASH = "Trash";
107
105
  /**
108
106
  * Moves messages to the trash.
109
107
  *
@@ -30,7 +30,7 @@
30
30
  * keeps it in "All Mail", which the measurement confirmed.
31
31
  */
32
32
  import { BridgeError } from '../bridge/errors.js';
33
- import { normaliseMessageId, ALL_MAIL } from './ids.js';
33
+ import { normaliseMessageId, findByMessageId, ALL_MAIL, TRASH } from './ids.js';
34
34
  import { LABEL_PREFIX } from './labels.js';
35
35
  /**
36
36
  * How many messages one call may touch.
@@ -104,10 +104,13 @@ export async function findHomeFolder(connection, rawId, hint) {
104
104
  // The Bridge answers a fetch on an empty mailbox with BAD.
105
105
  if (status.messages === 0)
106
106
  return undefined;
107
- const hits = await client.search({ header: { 'message-id': messageId } }, { uid: true });
108
- if (!Array.isArray(hits) || hits.length === 0)
109
- return undefined;
110
- return Math.max(...hits);
107
+ // findByMessageId rather than a search written out here. It makes the
108
+ // second attempt without the angle brackets and verifies every hit of
109
+ // it, which real mail needs: an identifier is not always bracketed, and
110
+ // the incident behind that fallback was "marking 67 messages left that
111
+ // one behind" - marking goes through setFlags to this function, so the
112
+ // path the incident happened in was the one without the fallback.
113
+ return findByMessageId(client, messageId);
111
114
  })
112
115
  .catch(() => undefined);
113
116
  return found;
@@ -250,8 +253,6 @@ export async function setFlags(connection, readOnly, messageIds, changes, hint)
250
253
  }
251
254
  return summarise(outcomes);
252
255
  }
253
- /** The mailbox Proton puts discarded messages in. Nothing here empties it. */
254
- export const TRASH = 'Trash';
255
256
  /**
256
257
  * Moves messages to the trash.
257
258
  *
@@ -1 +1 @@
1
- {"version":3,"file":"actions.js","sourceRoot":"","sources":["../../src/mail/actions.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"actions.js","sourceRoot":"","sources":["../../src/mail/actions.ts"],"names":[],"mappings":"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"}
@@ -34,9 +34,13 @@ export interface Draft {
34
34
  * How much markup this message may carry. Absent means `standard`.
35
35
  *
36
36
  * Part of the draft rather than a parameter beside it, because it decides
37
- * what the message is allowed to contain and therefore belongs to the same
38
- * thing the digest covers. A message agreed to at one level must not be sent
39
- * at another.
37
+ * what the message is allowed to contain.
38
+ *
39
+ * Covered by the digest, alongside the markup itself. The level does not
40
+ * change the bytes that go out, but it changes what the question says: at
41
+ * `extended` the confirmation warns and the preview lists every property
42
+ * used. Binding it means a yes given to the warned version cannot be
43
+ * replayed for the unwarned one.
40
44
  */
41
45
  markupLevel?: MarkupLevel;
42
46
  /** A whole message carried along, used when forwarding. */
@@ -132,29 +136,15 @@ export declare function quote(original: {
132
136
  subject: string;
133
137
  text: string;
134
138
  }, limit?: number): string;
135
- /** Turns text into markup that says exactly what the text said. */
136
- export declare function escapeHtml(text: string): string;
137
139
  /**
138
- * Quotes a message inside a formatted reply.
139
- *
140
- * **The quote is built from the original's text, never from its markup**, and
141
- * that is the whole design rather than a shortcut. Two reasons, and the second
142
- * is the one that matters:
140
+ * Turns text into markup that says exactly what the text said.
143
141
  *
144
- * 1. Carrying the original's markup would mean checking a stranger's HTML
145
- * against the permitted set and refusing the reply when it fails. Ordinary
146
- * mail is full of `<style>` blocks, so replying to real messages would
147
- * mostly not work.
148
- * 2. It would put markup written by somebody else into a message sent under
149
- * this account's name. A link in the quote could show one thing and go
150
- * somewhere else, and it would ride along into the reply without anybody
151
- * having written it.
152
- *
153
- * The text comes from the same conversion this server uses to read a message,
154
- * so a link in the original appears as its address in the quote. A phishing
155
- * mail quoted in a reply arrives with its targets in plain sight. It is then
156
- * escaped, because text that happens to contain angle brackets must stay text.
142
+ * For element content. It does not escape the apostrophe, so it is not safe for
143
+ * a single-quoted attribute value; every caller here puts the result between
144
+ * tags. The interface has its own escapeHtml which does cover it, for markup it
145
+ * builds with attributes.
157
146
  */
147
+ export declare function escapeHtml(text: string): string;
158
148
  /**
159
149
  * The quoted body alone, without the "wrote:" line.
160
150
  *
@@ -265,14 +255,21 @@ export interface QuoteSummary {
265
255
  * message on average and up to thirty links. Listing those would bury the two
266
256
  * addresses that matter under thirty that arrived in the sender's mailbox
267
257
  * anyway, and a confirmation nobody reads to the end protects nobody.
258
+ *
259
+ * Worth knowing about the trade: because the quote keeps the original's markup,
260
+ * a link in it shows its text and hides its target, the same as in the message
261
+ * that arrived. An earlier version quoted as text, where every target was
262
+ * spelled out. What replaces that is the rendered preview page, where the quote
263
+ * is visible as the recipient will see it.
268
264
  */
269
265
  export declare function summariseQuote(draft: Draft): QuoteSummary | undefined;
270
266
  /**
271
267
  * Everything the message points at or carries, for the confirmation.
272
268
  *
273
- * Kept whole and never shortened. The body excerpt in a confirmation is cut
274
- * after a few lines, so an address on line thirty would otherwise never be
275
- * shown, which is precisely where one would be put to avoid being read.
269
+ * Kept whole and never shortened. The confirmation carries counts and the
270
+ * preview page carries the detail, so this is the list a person reads before
271
+ * answering. Shortening it would hide the entry on line thirty, which is
272
+ * precisely where one would be put to avoid being read.
276
273
  */
277
274
  export declare function describeAttachments(draft: Draft): string[];
278
275
  /** The addresses in a message's markup, with the text they are shown as. */
@@ -188,7 +188,14 @@ function quoteHeader(original) {
188
188
  : 'an unknown date';
189
189
  return `On ${escapeHtml(when)}, ${escapeHtml(who)} wrote:`;
190
190
  }
191
- /** Turns text into markup that says exactly what the text said. */
191
+ /**
192
+ * Turns text into markup that says exactly what the text said.
193
+ *
194
+ * For element content. It does not escape the apostrophe, so it is not safe for
195
+ * a single-quoted attribute value; every caller here puts the result between
196
+ * tags. The interface has its own escapeHtml which does cover it, for markup it
197
+ * builds with attributes.
198
+ */
192
199
  export function escapeHtml(text) {
193
200
  return text
194
201
  .replace(/&/g, '&amp;')
@@ -196,27 +203,6 @@ export function escapeHtml(text) {
196
203
  .replace(/>/g, '&gt;')
197
204
  .replace(/"/g, '&quot;');
198
205
  }
199
- /**
200
- * Quotes a message inside a formatted reply.
201
- *
202
- * **The quote is built from the original's text, never from its markup**, and
203
- * that is the whole design rather than a shortcut. Two reasons, and the second
204
- * is the one that matters:
205
- *
206
- * 1. Carrying the original's markup would mean checking a stranger's HTML
207
- * against the permitted set and refusing the reply when it fails. Ordinary
208
- * mail is full of `<style>` blocks, so replying to real messages would
209
- * mostly not work.
210
- * 2. It would put markup written by somebody else into a message sent under
211
- * this account's name. A link in the quote could show one thing and go
212
- * somewhere else, and it would ride along into the reply without anybody
213
- * having written it.
214
- *
215
- * The text comes from the same conversion this server uses to read a message,
216
- * so a link in the original appears as its address in the quote. A phishing
217
- * mail quoted in a reply arrives with its targets in plain sight. It is then
218
- * escaped, because text that happens to contain angle brackets must stay text.
219
- */
220
206
  /**
221
207
  * The quoted body alone, without the "wrote:" line.
222
208
  *
@@ -313,8 +299,9 @@ export const MARKUP_NOTE = 'A message may instead be written as markup, in the h
313
299
  'arrive. Permitted are headings, paragraphs, line breaks, rules, quotes, emphasis, lists, ' +
314
300
  'tables, links and images, with colour, font, alignment, spacing and borders. Anything else ' +
315
301
  'is refused rather than quietly removed, and the answer names what and why. Note that the ' +
316
- 'confirmation shows every address in the message in full, including the ones behind links and ' +
317
- 'images, and every alt text, because those are what a recipient reads.';
302
+ 'preview page linked from the confirmation lists every address in the message in full, ' +
303
+ 'including the ones behind links and images, and every alt text, because those are what a ' +
304
+ 'recipient reads. The question in the client stays short and carries counts instead.';
318
305
  /**
319
306
  * What a caller is told about the two levels.
320
307
  *
@@ -372,6 +359,12 @@ export function composedBody(draft) {
372
359
  * message on average and up to thirty links. Listing those would bury the two
373
360
  * addresses that matter under thirty that arrived in the sender's mailbox
374
361
  * anyway, and a confirmation nobody reads to the end protects nobody.
362
+ *
363
+ * Worth knowing about the trade: because the quote keeps the original's markup,
364
+ * a link in it shows its text and hides its target, the same as in the message
365
+ * that arrived. An earlier version quoted as text, where every target was
366
+ * spelled out. What replaces that is the rendered preview page, where the quote
367
+ * is visible as the recipient will see it.
375
368
  */
376
369
  export function summariseQuote(draft) {
377
370
  if (!draft.quotedHtml)
@@ -386,9 +379,10 @@ export function summariseQuote(draft) {
386
379
  /**
387
380
  * Everything the message points at or carries, for the confirmation.
388
381
  *
389
- * Kept whole and never shortened. The body excerpt in a confirmation is cut
390
- * after a few lines, so an address on line thirty would otherwise never be
391
- * shown, which is precisely where one would be put to avoid being read.
382
+ * Kept whole and never shortened. The confirmation carries counts and the
383
+ * preview page carries the detail, so this is the list a person reads before
384
+ * answering. Shortening it would hide the entry on line thirty, which is
385
+ * precisely where one would be put to avoid being read.
392
386
  */
393
387
  export function describeAttachments(draft) {
394
388
  const lines = [];
@@ -1 +1 @@
1
- {"version":3,"file":"compose.js","sourceRoot":"","sources":["../../src/mail/compose.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"compose.js","sourceRoot":"","sources":["../../src/mail/compose.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAEH,OAAO,YAAY,MAAM,uCAAuC,CAAA;AAChE,OAAO,EAAE,UAAU,EAAE,UAAU,EAAE,MAAM,aAAa,CAAA;AACpD,OAAO,EAAE,WAAW,EAAE,MAAM,qBAAqB,CAAA;AACjD,OAAO,EACL,oBAAoB,EACpB,UAAU,GAIX,MAAM,aAAa,CAAA;AACpB,OAAO,EAAE,mBAAmB,EAAE,MAAM,YAAY,CAAA;AAChD,OAAO,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAA;AA2E7C;;;;;;;;GAQG;AACH,MAAM,UAAU,cAAc,CAAC,KAAa;IAC1C,MAAM,GAAG,GAAG,KAAK,CAAC,IAAI,EAAE,CAAA;IACxB,IAAI,CAAC,GAAG;QAAE,MAAM,IAAI,WAAW,CAAC,oCAAoC,CAAC,CAAA;IACrE,IAAI,QAAQ,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC;QACvB,MAAM,IAAI,WAAW,CACnB,kBAAkB,GAAG,CAAC,OAAO,CAAC,UAAU,EAAE,GAAG,CAAC,8CAA8C;YAC1F,gFAAgF,CACnF,CAAA;IACH,CAAC;IAED,MAAM,MAAM,GAAG,kBAAkB,CAAC,IAAI,CAAC,GAAG,CAAC,CAAA;IAC3C,MAAM,IAAI,GAAG,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAE,CAAC,IAAI,EAAE,CAAC,OAAO,CAAC,QAAQ,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,SAAS,CAAA;IACzE,MAAM,OAAO,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAE,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,CAAA;IAElD,0EAA0E;IAC1E,IAAI,CAAC,4BAA4B,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC;QAChD,MAAM,IAAI,WAAW,CACnB,IAAI,OAAO,oFAAoF;YAC7F,kDAAkD,CACrD,CAAA;IACH,CAAC;IACD,OAAO,IAAI,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,CAAA;AAC/C,CAAC;AAED,MAAM,UAAU,eAAe,CAAC,IAA0B;IACxD,OAAO,CAAC,IAAI,IAAI,EAAE,CAAC,CAAC,GAAG,CAAC,cAAc,CAAC,CAAA;AACzC,CAAC;AAED,6EAA6E;AAC7E,MAAM,UAAU,aAAa,CAAC,KAAY;IACxC,OAAO,CAAC,GAAG,KAAK,CAAC,EAAE,EAAE,GAAG,KAAK,CAAC,EAAE,EAAE,GAAG,KAAK,CAAC,GAAG,CAAC,CAAA;AACjD,CAAC;AAED,oFAAoF;AACpF,MAAM,UAAU,aAAa,CAAC,IAAY;IACxC,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,kBAAkB,CAAA;IACvD,OAAO,IAAI,UAAU,EAAE,IAAI,MAAM,GAAG,CAAA;AACtC,CAAC;AAED,sDAAsD;AACtD,SAAS,MAAM,CAAC,EAAU;IACxB,MAAM,IAAI,GAAG,EAAE,CAAC,IAAI,EAAE,CAAC,OAAO,CAAC,QAAQ,EAAE,EAAE,CAAC,CAAA;IAC5C,OAAO,IAAI,IAAI,GAAG,CAAA;AACpB,CAAC;AAED;;;;;;;;;;;;;;;;GAgBG;AACH,MAAM,CAAC,KAAK,UAAU,YAAY,CAChC,KAAY,EACZ,OAAO,GAA0B,EAAE;IAEnC,IAAI,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,EAAE,CAAC;QACjC,MAAM,IAAI,WAAW,CACnB,0FAA0F;YACxF,wCAAwC,CAC3C,CAAA;IACH,CAAC;IACD,IAAI,KAAK,CAAC,EAAE,CAAC,MAAM,KAAK,CAAC,IAAI,KAAK,CAAC,EAAE,CAAC,MAAM,KAAK,CAAC,IAAI,KAAK,CAAC,GAAG,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QAC7E,MAAM,IAAI,WAAW,CAAC,yCAAyC,CAAC,CAAA;IAClE,CAAC;IAED,MAAM,MAAM,GAA4B;QACtC,IAAI,EAAE,KAAK,CAAC,IAAI;QAChB,EAAE,EAAE,KAAK,CAAC,EAAE;QACZ,OAAO,EAAE,KAAK,CAAC,OAAO;QACtB,SAAS,EAAE,KAAK,CAAC,SAAS;QAC1B,IAAI,EAAE,IAAI,IAAI,EAAE;KACjB,CAAA;IAED,IAAI,KAAK,CAAC,IAAI,KAAK,SAAS,EAAE,CAAC;QAC7B,MAAM,CAAC,IAAI,GAAG,KAAK,CAAC,IAAI,CAAA;IAC1B,CAAC;SAAM,CAAC;QACN,uEAAuE;QACvE,8DAA8D;QAC9D,MAAM,OAAO,GAAG,oBAAoB,CAAC,KAAK,CAAC,IAAI,EAAE,KAAK,CAAC,WAAW,IAAI,UAAU,CAAC,CAAA;QAEjF,uEAAuE;QACvE,2EAA2E;QAC3E,qEAAqE;QACrE,MAAM,QAAQ,GAAG,IAAI,GAAG,CAAC,CAAC,KAAK,CAAC,WAAW,IAAI,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,CAAA;QACjF,MAAM,OAAO,GAAG,OAAO,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAA;QACpE,IAAI,OAAO,CAAC,MAAM,EAAE,CAAC;YACnB,MAAM,IAAI,WAAW,CACnB,wBAAwB,OAAO,CAAC,GAAG,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,QAAQ,EAAE,GAAG,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,qBAAqB;gBACxF,kFAAkF,CACrF,CAAA;QACH,CAAC;QACD,uEAAuE;QACvE,gEAAgE;QAChE,MAAM,CAAC,IAAI,GAAG,KAAK,CAAC,IAAI,GAAG,CAAC,KAAK,CAAC,UAAU,IAAI,EAAE,CAAC,CAAA;IACrD,CAAC;IACD,IAAI,KAAK,CAAC,EAAE,CAAC,MAAM;QAAE,MAAM,CAAC,EAAE,GAAG,KAAK,CAAC,EAAE,CAAA;IACzC,IAAI,KAAK,CAAC,GAAG,CAAC,MAAM;QAAE,MAAM,CAAC,GAAG,GAAG,KAAK,CAAC,GAAG,CAAA;IAC5C,IAAI,KAAK,CAAC,SAAS;QAAE,MAAM,CAAC,SAAS,GAAG,MAAM,CAAC,KAAK,CAAC,SAAS,CAAC,CAAA;IAC/D,IAAI,KAAK,CAAC,UAAU,EAAE,MAAM;QAAE,MAAM,CAAC,UAAU,GAAG,KAAK,CAAC,UAAU,CAAC,GAAG,CAAC,MAAM,CAAC,CAAA;IAC9E,MAAM,WAAW,GAAmC,EAAE,CAAA;IACtD,IAAI,KAAK,CAAC,eAAe,EAAE,CAAC;QAC1B,WAAW,CAAC,IAAI,CAAC;YACf,QAAQ,EAAE,KAAK,CAAC,eAAe,CAAC,QAAQ;YACxC,OAAO,EAAE,KAAK,CAAC,eAAe,CAAC,GAAG;YAClC,WAAW,EAAE,gBAAgB;SAC9B,CAAC,CAAA;IACJ,CAAC;IACD,KAAK,MAAM,IAAI,IAAI,KAAK,CAAC,WAAW,IAAI,EAAE,EAAE,CAAC;QAC3C,WAAW,CAAC,IAAI,CAAC;YACf,QAAQ,EAAE,IAAI,CAAC,QAAQ;YACvB,OAAO,EAAE,IAAI,CAAC,OAAO;YACrB,WAAW,EAAE,IAAI,CAAC,WAAW;YAC7B,GAAG,EAAE,IAAI,CAAC,SAAS;SACpB,CAAC,CAAA;IACJ,CAAC;IACD,IAAI,WAAW,CAAC,MAAM;QAAE,MAAM,CAAC,WAAW,GAAG,WAAW,CAAA;IAExD,8EAA8E;IAC9E,8EAA8E;IAC9E,8EAA8E;IAC9E,qEAAqE;IACrE,MAAM,IAAI,GAAG,IAAI,YAAY,CAAC,MAAM,CAAC,CAAC,OAAO,EAAE,CAAA;IAC/C,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC,OAAO,KAAK,IAAI,CAAA;IAEvC,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;QACrC,IAAI,CAAC,KAAK,CAAC,CAAC,KAAK,EAAE,OAAO,EAAE,EAAE;YAC5B,IAAI,KAAK;gBAAE,MAAM,CAAC,IAAI,WAAW,CAAC,mCAAmC,KAAK,CAAC,OAAO,EAAE,CAAC,CAAC,CAAA;;gBACjF,OAAO,CAAC,OAAO,CAAC,CAAA;QACvB,CAAC,CAAC,CAAA;IACJ,CAAC,CAAC,CAAA;AACJ,CAAC;AAED,4DAA4D;AAC5D,MAAM,UAAU,aAAa,CAAC,OAAe,EAAE,MAAoB;IACjE,MAAM,OAAO,GAAG,OAAO,CAAC,IAAI,EAAE,CAAA;IAC9B,MAAM,OAAO,GAAG,MAAM,KAAK,IAAI,CAAC,CAAC,CAAC,eAAe,CAAC,CAAC,CAAC,iBAAiB,CAAA;IACrE,IAAI,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC;QAAE,OAAO,OAAO,CAAA;IACzC,OAAO,GAAG,MAAM,KAAK,OAAO,IAAI,cAAc,EAAE,CAAA;AAClD,CAAC;AAED;;;;;;;GAOG;AACH,MAAM,UAAU,KAAK,CACnB,QAAsF,EACtF,KAAK,GAAG,IAAI;IAEZ,MAAM,GAAG,GAAG,QAAQ,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,IAAI,KAAK,CAAC,CAAC,OAAO,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;IAClG,MAAM,IAAI,GAAG,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,OAAO,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,iBAAiB,CAAA;IAC3G,MAAM,IAAI,GAAG,QAAQ,CAAC,IAAI,CAAC,MAAM,GAAG,KAAK,CAAC,CAAC,CAAC,GAAG,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAA;IACrG,MAAM,MAAM,GAAG,IAAI;SAChB,KAAK,CAAC,IAAI,CAAC;SACX,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,KAAK,IAAI,EAAE,CAAC;SAC1B,IAAI,CAAC,IAAI,CAAC,CAAA;IACb,OAAO,UAAU,IAAI,KAAK,GAAG,IAAI,SAAS,YAAY,MAAM,EAAE,CAAA;AAChE,CAAC;AAED,+EAA+E;AAC/E,SAAS,WAAW,CAAC,QAAuD;IAC1E,MAAM,GAAG,GAAG,QAAQ,CAAC,IAAI,CAAC,GAAG,CAAC,aAAa,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,SAAS,CAAA;IACpE,MAAM,IAAI,GAAG,QAAQ,CAAC,IAAI;QACxB,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,OAAO,CAAC,GAAG,EAAE,GAAG,CAAC;QAC5D,CAAC,CAAC,iBAAiB,CAAA;IACrB,OAAO,MAAM,UAAU,CAAC,IAAI,CAAC,KAAK,UAAU,CAAC,GAAG,CAAC,SAAS,CAAA;AAC5D,CAAC;AAED;;;;;;;GAOG;AACH,MAAM,UAAU,UAAU,CAAC,IAAY;IACrC,OAAO,IAAI;SACR,OAAO,CAAC,IAAI,EAAE,OAAO,CAAC;SACtB,OAAO,CAAC,IAAI,EAAE,MAAM,CAAC;SACrB,OAAO,CAAC,IAAI,EAAE,MAAM,CAAC;SACrB,OAAO,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAA;AAC5B,CAAC;AAED;;;;;;GAMG;AACH,MAAM,UAAU,SAAS,CACvB,QAAoF,EACpF,KAAK,GAAG,IAAI;IAEZ,IAAI,QAAQ,CAAC,IAAI,EAAE,CAAC;QAClB,MAAM,QAAQ,GAAG,mBAAmB,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAA;QACnD,IAAI,QAAQ,CAAC,IAAI,EAAE,CAAC;YAClB,OAAO,CACL,0FAA0F;gBAC1F,GAAG,QAAQ,CAAC,IAAI,eAAe,CAChC,CAAA;QACH,CAAC;IACH,CAAC;IACD,MAAM,IAAI,GAAG,QAAQ,CAAC,IAAI,CAAC,MAAM,GAAG,KAAK,CAAC,CAAC,CAAC,GAAG,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAA;IACrG,OAAO,CACL,yGAAyG;QACzG,GAAG,UAAU,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,eAAe,CAC5D,CAAA;AACH,CAAC;AAED,MAAM,UAAU,WAAW,CACzB,QAAoF,EACpF,KAAK,GAAG,IAAI;IAEZ,4EAA4E;IAC5E,8EAA8E;IAC9E,0EAA0E;IAC1E,6BAA6B;IAC7B,OAAO,MAAM,WAAW,CAAC,QAAQ,CAAC,OAAO,SAAS,CAAC,QAAQ,EAAE,KAAK,CAAC,EAAE,CAAA;AACvE,CAAC;AAED,wCAAwC;AACxC,MAAM,UAAU,aAAa,CAAC,CAAY;IACxC,OAAO,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,IAAI,KAAK,CAAC,CAAC,OAAO,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAA;AACxD,CAAC;AAED;;;;;;;GAOG;AACH,MAAM,UAAU,kBAAkB,CAAC,KAIlC;IACC,MAAM,KAAK,GAAG,CAAC,QAAQ,KAAK,CAAC,EAAE,CAAC,GAAG,CAAC,aAAa,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,QAAQ,EAAE,CAAC,CAAA;IAC5E,IAAI,KAAK,CAAC,EAAE,CAAC,MAAM;QAAE,KAAK,CAAC,IAAI,CAAC,QAAQ,KAAK,CAAC,EAAE,CAAC,GAAG,CAAC,aAAa,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAA;IACjF,IAAI,KAAK,CAAC,GAAG,CAAC,MAAM,EAAE,CAAC;QACrB,KAAK,CAAC,IAAI,CACR,QAAQ,KAAK,CAAC,GAAG,CAAC,GAAG,CAAC,aAAa,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,gEAAgE,CAChH,CAAA;IACH,CAAC;IACD,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;AACzB,CAAC;AAED,+EAA+E;AAC/E,MAAM,UAAU,UAAU,CAAC,IAAY,EAAE,KAAK,GAAG,CAAC,EAAE,KAAK,GAAG,GAAG;IAC7D,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;IACxD,MAAM,GAAG,GAAG,IAAI,CAAC,MAAM,GAAG,KAAK,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAA;IACrE,OAAO,GAAG,CAAC,IAAI,EAAE,IAAI,2BAA2B,CAAA;AAClD,CAAC;AAED;;;;;;;;;;;;;;GAcG;AACH,MAAM,CAAC,MAAM,SAAS,GACpB,0FAA0F;IAC1F,2FAA2F;IAC3F,6EAA6E;IAC7E,uEAAuE;IACvE,sEAAsE;IACtE,qEAAqE;IACrE,yFAAyF;IACzF,6FAA6F;IAC7F,2FAA2F;IAC3F,8CAA8C,CAAA;AAEhD;;;;;;;;;;;GAWG;AACH,MAAM,CAAC,MAAM,WAAW,GACtB,uFAAuF;IACvF,0FAA0F;IAC1F,6FAA6F;IAC7F,2FAA2F;IAC3F,6FAA6F;IAC7F,2FAA2F;IAC3F,wFAAwF;IACxF,2FAA2F;IAC3F,qFAAqF,CAAA;AAEvF;;;;;;;;GAQG;AACH,MAAM,CAAC,MAAM,iBAAiB,GAC5B,4FAA4F;IAC5F,2FAA2F;IAC3F,+FAA+F;IAC/F,yFAAyF;IACzF,yFAAyF;IACzF,6FAA6F;IAC7F,6FAA6F;IAC7F,6FAA6F;IAC7F,8FAA8F;IAC9F,6FAA6F;IAC7F,4EAA4E,CAAA;AAE9E,MAAM,CAAC,MAAM,eAAe,GAC1B,0FAA0F;IAC1F,uFAAuF;IACvF,2FAA2F;IAC3F,4EAA4E,CAAA;AAE9E;;;;;;;GAOG;AACH,MAAM,UAAU,YAAY,CAAC,KAAY;IACvC,OAAO,KAAK,CAAC,IAAI,KAAK,SAAS;QAC7B,CAAC,CAAC,KAAK,CAAC,IAAI;QACZ,CAAC,CAAC,UAAU,CAAC,KAAK,CAAC,IAAI,GAAG,CAAC,KAAK,CAAC,UAAU,IAAI,EAAE,CAAC,CAAC,CAAA;AACvD,CAAC;AAED;;;;;;;GAOG;AACH,MAAM,UAAU,YAAY,CAAC,KAAY;IACvC,OAAO,KAAK,CAAC,IAAI,KAAK,SAAS,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,UAAU,CAAC,KAAK,CAAC,IAAI,CAAC,CAAA;AACvE,CAAC;AAUD;;;;;;;;;;;;;;;GAeG;AACH,MAAM,UAAU,cAAc,CAAC,KAAY;IACzC,IAAI,CAAC,KAAK,CAAC,UAAU;QAAE,OAAO,SAAS,CAAA;IACvC,MAAM,OAAO,GAAG,UAAU,CAAC,KAAK,CAAC,UAAU,CAAC,CAAA;IAC5C,OAAO;QACL,KAAK,EAAE,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,MAAM,CAAC,CAAC,MAAM;QAC3D,MAAM,EAAE,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,OAAO,CAAC,CAAC,MAAM;QAC7D,UAAU,EAAE,OAAO,CAAC,UAAU;KAC/B,CAAA;AACH,CAAC;AAED;;;;;;;GAOG;AACH,MAAM,UAAU,mBAAmB,CAAC,KAAY;IAC9C,MAAM,KAAK,GAAa,EAAE,CAAA;IAC1B,IAAI,KAAK,CAAC,eAAe,EAAE,CAAC;QAC1B,KAAK,CAAC,IAAI,CACR,GAAG,KAAK,CAAC,eAAe,CAAC,QAAQ,4BAA4B,KAAK,CAAC,eAAe,CAAC,GAAG,CAAC,MAAM,SAAS,CACvG,CAAA;IACH,CAAC;IACD,KAAK,MAAM,IAAI,IAAI,KAAK,CAAC,WAAW,IAAI,EAAE,EAAE,CAAC;QAC3C,KAAK,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC,QAAQ,KAAK,IAAI,CAAC,WAAW,KAAK,IAAI,CAAC,OAAO,CAAC,MAAM,8BAA8B,CAAC,CAAA;IACzG,CAAC;IACD,OAAO,KAAK,CAAA;AACd,CAAC;AAED,4EAA4E;AAC5E,MAAM,UAAU,YAAY,CAAC,KAAY;IACvC,OAAO,KAAK,CAAC,IAAI,KAAK,SAAS;QAC7B,CAAC,CAAC,EAAE;QACJ,CAAC,CAAC,oBAAoB,CAAC,KAAK,CAAC,IAAI,EAAE,KAAK,CAAC,WAAW,IAAI,UAAU,CAAC,CAAC,IAAI,CAAA;AAC5E,CAAC;AAED,mEAAmE;AACnE,MAAM,UAAU,YAAY,CAAC,KAAY;IACvC,OAAO,KAAK,CAAC,IAAI,KAAK,SAAS;QAC7B,CAAC,CAAC,EAAE;QACJ,CAAC,CAAC,oBAAoB,CAAC,KAAK,CAAC,IAAI,EAAE,KAAK,CAAC,WAAW,IAAI,UAAU,CAAC,CAAC,UAAU,CAAA;AAClF,CAAC;AAED,+EAA+E;AAC/E,MAAM,UAAU,eAAe,CAAC,OAAe;IAC7C,OAAO,UAAU,CAAC,QAAQ,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,CAAA;AACxE,CAAC;AAED;;;;;;;GAOG;AACH,MAAM,UAAU,YAAY,CAAC,KAAY;IACvC,IAAI,KAAK,CAAC,IAAI,KAAK,SAAS;QAAE,OAAO,EAAE,CAAA;IACvC,OAAO,oBAAoB,CAAC,KAAK,CAAC,IAAI,EAAE,KAAK,CAAC,WAAW,IAAI,UAAU,CAAC,CAAC,UAAU,CAAA;AACrF,CAAC"}
@@ -40,6 +40,7 @@
40
40
  */
41
41
  import type { Connection } from '../bridge/connection.js';
42
42
  import { type ListResult } from './messages.js';
43
+ import type { MarkupLevel } from './markup.js';
43
44
  import { type Draft, type Recipient } from './compose.js';
44
45
  /** The one mailbox this module writes to. */
45
46
  export declare const DRAFTS = "Drafts";
@@ -57,6 +58,16 @@ export interface DraftInput {
57
58
  subject?: string | undefined;
58
59
  text?: string | undefined;
59
60
  html?: string | undefined;
61
+ /**
62
+ * How much markup the body may carry. Absent means `standard`.
63
+ *
64
+ * This field was missing while every draft tool already declared it in its
65
+ * input schema, so a caller asking for `extended` was validated against
66
+ * `standard` and refused with a message naming the level it had just asked
67
+ * for. Because a variable rather than an object literal is passed in, excess
68
+ * property checking never flagged it.
69
+ */
70
+ markupLevel?: MarkupLevel | undefined;
60
71
  }
61
72
  export interface DraftResult {
62
73
  messageId: string;
@@ -94,12 +105,14 @@ export declare function buildReplyDraft(connection: Connection, fromAddress: str
94
105
  all?: boolean;
95
106
  mailbox?: string;
96
107
  html?: string;
108
+ markupLevel?: MarkupLevel;
97
109
  }): Promise<Draft>;
98
110
  /** Prepares a reply and stores it as a draft. */
99
111
  export declare function replyDraft(connection: Connection, readOnly: boolean, fromAddress: string, messageId: string, text: string, options?: {
100
112
  all?: boolean;
101
113
  mailbox?: string;
102
114
  html?: string;
115
+ markupLevel?: MarkupLevel;
103
116
  }): Promise<DraftResult>;
104
117
  /**
105
118
  * Prepares a forward as a draft.
@@ -112,11 +125,13 @@ export declare function replyDraft(connection: Connection, readOnly: boolean, fr
112
125
  export declare function buildForwardDraft(connection: Connection, fromAddress: string, messageId: string, to: string[], text: string, options?: {
113
126
  mailbox?: string;
114
127
  html?: string;
128
+ markupLevel?: MarkupLevel;
115
129
  }): Promise<Draft>;
116
130
  /** Prepares a forward and stores it as a draft. */
117
131
  export declare function forwardDraft(connection: Connection, readOnly: boolean, fromAddress: string, messageId: string, to: string[], text: string, options?: {
118
132
  mailbox?: string;
119
133
  html?: string;
134
+ markupLevel?: MarkupLevel;
120
135
  }): Promise<DraftResult>;
121
136
  /** The drafts that are there. Reading only. */
122
137
  export declare function listDrafts(connection: Connection, options?: {
@@ -134,6 +134,7 @@ export async function createDraft(connection, readOnly, fromAddress, input) {
134
134
  text: input.html !== undefined ? htmlToText(input.html) : (input.text ?? ''),
135
135
  messageId: mintMessageId(from.address),
136
136
  ...(input.html !== undefined ? { html: input.html } : {}),
137
+ ...(input.markupLevel !== undefined ? { markupLevel: input.markupLevel } : {}),
137
138
  };
138
139
  const raw = await buildMessage(draft, { keepBcc: true });
139
140
  const uid = await appendDraft(connection, raw);
@@ -211,13 +212,23 @@ export async function updateDraft(connection, readOnly, fromAddress, messageId,
211
212
  * what was there, markup included, which is what makes changing only the
212
213
  * subject of a formatted draft leave the formatting alone.
213
214
  */
215
+ /**
216
+ * The body of an updated draft, and the level it is held to.
217
+ *
218
+ * The level travels with the body rather than beside it: a caller replacing the
219
+ * markup states which level the new markup is meant for, and one that only
220
+ * changes the subject keeps the stored body without a level, which means
221
+ * `standard`. A level carried over onto markup nobody re-stated would be a
222
+ * permission granted by an earlier call.
223
+ */
214
224
  function markupOf(changes, current) {
225
+ const level = changes.markupLevel !== undefined ? { markupLevel: changes.markupLevel } : {};
215
226
  if (changes.html !== undefined)
216
- return { text: htmlToText(changes.html), html: changes.html };
227
+ return { text: htmlToText(changes.html), html: changes.html, ...level };
217
228
  if (changes.text !== undefined)
218
229
  return { text: changes.text };
219
230
  return current.html !== undefined
220
- ? { text: current.text, html: current.html }
231
+ ? { text: current.text, html: current.html, ...level }
221
232
  : { text: current.text };
222
233
  }
223
234
  /**
@@ -298,6 +309,7 @@ export async function buildReplyDraft(connection, fromAddress, messageId, text,
298
309
  subject: prefixSubject(original.subject, 'Re'),
299
310
  ...body,
300
311
  messageId: mintMessageId(from.address),
312
+ ...(options.markupLevel !== undefined ? { markupLevel: options.markupLevel } : {}),
301
313
  ...(thread.messageId ? { inReplyTo: thread.messageId } : {}),
302
314
  references: [...thread.references, ...(thread.messageId ? [thread.messageId] : [])],
303
315
  };
@@ -309,13 +321,19 @@ export async function replyDraft(connection, readOnly, fromAddress, messageId, t
309
321
  const draft = await buildReplyDraft(connection, fromAddress, messageId, text, options);
310
322
  return store(connection, draft);
311
323
  }
312
- /** The uid of a message inside one mailbox. */
324
+ /**
325
+ * The uid of a message inside one mailbox.
326
+ *
327
+ * findByMessageId rather than a search written out here, because it makes the
328
+ * second attempt without the angle brackets and verifies every hit of it. Real
329
+ * mail carries unbracketed identifiers, and without the fallback this threw
330
+ * "the message is no longer in Drafts" for a message that had not moved.
331
+ */
313
332
  async function uidOf(connection, path, messageId) {
314
333
  const uid = await connection.withMailbox(path, async (client, status) => {
315
334
  if (status.messages === 0)
316
335
  return undefined;
317
- const hits = await client.search({ header: { 'message-id': messageId } }, { uid: true });
318
- return Array.isArray(hits) && hits.length ? Math.max(...hits) : undefined;
336
+ return findByMessageId(client, messageId);
319
337
  });
320
338
  if (uid === undefined) {
321
339
  throw new BridgeError(`The message ${messageId} is no longer in "${path}".`);
@@ -372,6 +390,7 @@ export async function buildForwardDraft(connection, fromAddress, messageId, to,
372
390
  };
373
391
  })()),
374
392
  messageId: mintMessageId(from.address),
393
+ ...(options.markupLevel !== undefined ? { markupLevel: options.markupLevel } : {}),
375
394
  };
376
395
  // Only when there is something a quoted body would lose.
377
396
  if (original.attachments.length > 0) {