@wirecat/cli-memo 0.24.0 → 0.26.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.
Files changed (194) hide show
  1. package/README.md +2 -2
  2. package/dist/actions/actions.d.ts +1 -1
  3. package/dist/actions/actions.d.ts.map +1 -1
  4. package/dist/actions/command.js +2 -2
  5. package/dist/actions/command.js.map +1 -1
  6. package/dist/answers/command.d.ts +1 -1
  7. package/dist/answers/command.d.ts.map +1 -1
  8. package/dist/answers/command.js +2 -2
  9. package/dist/answers/command.js.map +1 -1
  10. package/dist/app.d.ts +10 -1
  11. package/dist/app.d.ts.map +1 -1
  12. package/dist/app.js +3 -1
  13. package/dist/app.js.map +1 -1
  14. package/dist/author.d.ts +1 -1
  15. package/dist/author.d.ts.map +1 -1
  16. package/dist/bin/memo.js +25 -12
  17. package/dist/bin/memo.js.map +1 -1
  18. package/dist/config.d.ts +14 -1
  19. package/dist/config.d.ts.map +1 -1
  20. package/dist/config.js +14 -1
  21. package/dist/config.js.map +1 -1
  22. package/dist/context/command.js +1 -1
  23. package/dist/context/command.js.map +1 -1
  24. package/dist/context/context.d.ts +3 -3
  25. package/dist/context/context.d.ts.map +1 -1
  26. package/dist/context/context.js +2 -2
  27. package/dist/context/context.js.map +1 -1
  28. package/dist/discovery/command.d.ts +1 -1
  29. package/dist/discovery/command.js +2 -2
  30. package/dist/discovery/command.js.map +1 -1
  31. package/dist/examples.d.ts.map +1 -1
  32. package/dist/examples.js +8 -0
  33. package/dist/examples.js.map +1 -1
  34. package/dist/facts/command.js +1 -1
  35. package/dist/facts/command.js.map +1 -1
  36. package/dist/failure.d.ts +65 -0
  37. package/dist/failure.d.ts.map +1 -0
  38. package/dist/failure.js +73 -0
  39. package/dist/failure.js.map +1 -0
  40. package/dist/knowledge/command.js +1 -1
  41. package/dist/knowledge/command.js.map +1 -1
  42. package/dist/knowledge/key-documents.d.ts +1 -1
  43. package/dist/knowledge/key-documents.d.ts.map +1 -1
  44. package/dist/knowledge/key-documents.js +1 -1
  45. package/dist/knowledge/key-documents.js.map +1 -1
  46. package/dist/mail/accounts.d.ts +11 -0
  47. package/dist/mail/accounts.d.ts.map +1 -0
  48. package/dist/mail/accounts.js +26 -0
  49. package/dist/mail/accounts.js.map +1 -0
  50. package/dist/mail/command.d.ts +4 -0
  51. package/dist/mail/command.d.ts.map +1 -0
  52. package/dist/mail/command.js +185 -0
  53. package/dist/mail/command.js.map +1 -0
  54. package/dist/mail/gmail.d.ts +7 -2
  55. package/dist/mail/gmail.d.ts.map +1 -1
  56. package/dist/mail/gmail.js +76 -37
  57. package/dist/mail/gmail.js.map +1 -1
  58. package/dist/mail/headers.d.ts +23 -0
  59. package/dist/mail/headers.d.ts.map +1 -0
  60. package/dist/mail/headers.js +42 -0
  61. package/dist/mail/headers.js.map +1 -0
  62. package/dist/mail/himalaya.d.ts +3 -1
  63. package/dist/mail/himalaya.d.ts.map +1 -1
  64. package/dist/mail/himalaya.js +2 -2
  65. package/dist/mail/himalaya.js.map +1 -1
  66. package/dist/mail/import.d.ts +17 -6
  67. package/dist/mail/import.d.ts.map +1 -1
  68. package/dist/mail/import.js +184 -78
  69. package/dist/mail/import.js.map +1 -1
  70. package/dist/mail/mbox.d.ts +9 -0
  71. package/dist/mail/mbox.d.ts.map +1 -0
  72. package/dist/mail/mbox.js +218 -0
  73. package/dist/mail/mbox.js.map +1 -0
  74. package/dist/mail/messages-command.js +3 -3
  75. package/dist/mail/messages-command.js.map +1 -1
  76. package/dist/mail/parse.d.ts +2 -2
  77. package/dist/mail/parse.d.ts.map +1 -1
  78. package/dist/mail/parse.js +27 -63
  79. package/dist/mail/parse.js.map +1 -1
  80. package/dist/mail/probe.d.ts +31 -0
  81. package/dist/mail/probe.d.ts.map +1 -0
  82. package/dist/mail/probe.js +55 -0
  83. package/dist/mail/probe.js.map +1 -0
  84. package/dist/mail/rules.d.ts +35 -0
  85. package/dist/mail/rules.d.ts.map +1 -0
  86. package/dist/mail/rules.js +45 -0
  87. package/dist/mail/rules.js.map +1 -0
  88. package/dist/mail/source.d.ts +20 -0
  89. package/dist/mail/source.d.ts.map +1 -0
  90. package/dist/mail/source.js +99 -0
  91. package/dist/mail/source.js.map +1 -0
  92. package/dist/mcp/knowledge.js +2 -2
  93. package/dist/mcp/knowledge.js.map +1 -1
  94. package/dist/mcp/server.d.ts.map +1 -1
  95. package/dist/mcp/server.js +21 -17
  96. package/dist/mcp/server.js.map +1 -1
  97. package/dist/mcp/tool.d.ts +1 -1
  98. package/dist/mcp/tool.d.ts.map +1 -1
  99. package/dist/memories/command.js +1 -1
  100. package/dist/memories/command.js.map +1 -1
  101. package/dist/memories/memories.d.ts +1 -1
  102. package/dist/memories/memories.d.ts.map +1 -1
  103. package/dist/notes/about.d.ts +1 -1
  104. package/dist/notes/about.d.ts.map +1 -1
  105. package/dist/notes/about.js +1 -1
  106. package/dist/notes/about.js.map +1 -1
  107. package/dist/notes/bound.d.ts +1 -1
  108. package/dist/notes/bound.d.ts.map +1 -1
  109. package/dist/notes/command.js +1 -1
  110. package/dist/notes/command.js.map +1 -1
  111. package/dist/notes/embed.d.ts +1 -1
  112. package/dist/notes/embed.d.ts.map +1 -1
  113. package/dist/notes/embed.js +9 -7
  114. package/dist/notes/embed.js.map +1 -1
  115. package/dist/notes/folders-command.js +1 -1
  116. package/dist/notes/folders-command.js.map +1 -1
  117. package/dist/notes/import.d.ts +2 -2
  118. package/dist/notes/import.d.ts.map +1 -1
  119. package/dist/notes/import.js +2 -2
  120. package/dist/notes/import.js.map +1 -1
  121. package/dist/notes/internal.d.ts +1 -1
  122. package/dist/notes/internal.d.ts.map +1 -1
  123. package/dist/notes/links.d.ts +1 -1
  124. package/dist/notes/links.d.ts.map +1 -1
  125. package/dist/notes/list.d.ts +1 -1
  126. package/dist/notes/list.d.ts.map +1 -1
  127. package/dist/notes/search.d.ts +3 -3
  128. package/dist/notes/search.d.ts.map +1 -1
  129. package/dist/notes/search.js +1 -1
  130. package/dist/notes/search.js.map +1 -1
  131. package/dist/people/command.js +1 -1
  132. package/dist/people/command.js.map +1 -1
  133. package/dist/people/identity.d.ts +1 -1
  134. package/dist/people/identity.d.ts.map +1 -1
  135. package/dist/people/identity.js +1 -1
  136. package/dist/people/identity.js.map +1 -1
  137. package/dist/people/notes-map.d.ts +1 -1
  138. package/dist/people/notes-map.d.ts.map +1 -1
  139. package/dist/people/subject.d.ts +1 -1
  140. package/dist/people/subject.d.ts.map +1 -1
  141. package/dist/people/subject.js +1 -1
  142. package/dist/people/subject.js.map +1 -1
  143. package/dist/program.d.ts.map +1 -1
  144. package/dist/program.js +4 -1
  145. package/dist/program.js.map +1 -1
  146. package/dist/reasons.d.ts +4 -0
  147. package/dist/reasons.d.ts.map +1 -0
  148. package/dist/reasons.js +11 -0
  149. package/dist/reasons.js.map +1 -0
  150. package/dist/records/run.d.ts +1 -1
  151. package/dist/records/run.d.ts.map +1 -1
  152. package/dist/records/run.js +1 -1
  153. package/dist/records/run.js.map +1 -1
  154. package/dist/run/import.d.ts +2 -0
  155. package/dist/run/import.d.ts.map +1 -1
  156. package/dist/run/import.js +42 -20
  157. package/dist/run/import.js.map +1 -1
  158. package/dist/run/lock.d.ts.map +1 -1
  159. package/dist/run/lock.js +5 -2
  160. package/dist/run/lock.js.map +1 -1
  161. package/dist/search/command.d.ts +2 -2
  162. package/dist/search/command.d.ts.map +1 -1
  163. package/dist/search/command.js +7 -6
  164. package/dist/search/command.js.map +1 -1
  165. package/dist/store/gone.d.ts +1 -1
  166. package/dist/store/gone.d.ts.map +1 -1
  167. package/dist/store/held.d.ts +1 -1
  168. package/dist/store/held.d.ts.map +1 -1
  169. package/dist/store/scope.d.ts +1 -1
  170. package/dist/store/scope.d.ts.map +1 -1
  171. package/dist/store/scope.js +1 -1
  172. package/dist/store/scope.js.map +1 -1
  173. package/dist/store/source-target.d.ts +1 -1
  174. package/dist/store/source-target.d.ts.map +1 -1
  175. package/dist/store/source-target.js +1 -1
  176. package/dist/store/source-target.js.map +1 -1
  177. package/dist/tags/command.js +2 -2
  178. package/dist/tags/command.js.map +1 -1
  179. package/dist/tasks/command.js +3 -3
  180. package/dist/tasks/command.js.map +1 -1
  181. package/dist/tasks/context.d.ts +2 -2
  182. package/dist/tasks/context.d.ts.map +1 -1
  183. package/dist/tasks/context.js +2 -2
  184. package/dist/tasks/context.js.map +1 -1
  185. package/dist/tasks/relations-command.js +1 -1
  186. package/dist/tasks/relations-command.js.map +1 -1
  187. package/dist/version.d.ts +1 -1
  188. package/dist/version.js +1 -1
  189. package/dist/vocabulary/command.js +1 -1
  190. package/dist/vocabulary/command.js.map +1 -1
  191. package/dist/vocabulary/project.d.ts +1 -1
  192. package/dist/vocabulary/project.d.ts.map +1 -1
  193. package/package.json +4 -3
  194. package/skills/cli-memo/SKILL.md +13 -0
@@ -1,5 +1,6 @@
1
1
  import { createHash } from "node:crypto";
2
2
  import { CliError } from "@wirecat/cli-base";
3
+ import { HEADER_FIELDS, headersOf } from "./headers.js";
3
4
  const SYSTEM_LABELS = {
4
5
  inbox: "Inbox",
5
6
  sent: "Sent",
@@ -52,13 +53,29 @@ const imapList = (items, name) => {
52
53
  }
53
54
  return undefined;
54
55
  };
56
+ export const systemLabel = (name) => SYSTEM_LABELS[name.toLowerCase()] ?? name;
55
57
  /** A label as people read it: `\\Important` and `Important` are one label, and names are decoded. */
56
58
  export const labelName = (raw) => {
57
59
  const system = raw.startsWith("\\") ? raw.slice(1) : raw;
58
60
  return SYSTEM_LABELS[system.toLowerCase()] ?? decodeMailboxName(system);
59
61
  };
62
+ /** One FETCH answer per email, across lines, since a header field comes back as a multi-line literal. */
63
+ const FETCH_ANSWERS = /^\* \d+ FETCH \(([\s\S]*?)(?=^\* \d+ FETCH|^[a-z]\d* (?:OK|NO|BAD)|$(?![\s\S]))/gm;
64
+ /** Each answer's UID and header text; the UID is looked for outside the literal, so a header cannot fake it. */
65
+ const fetchedHeaders = (output) => [...output.matchAll(FETCH_ANSWERS)].flatMap(([, fields = ""]) => {
66
+ const literal = /\{\d+\}\r?\n/.exec(fields);
67
+ if (literal === null)
68
+ return [];
69
+ const start = literal.index + literal[0].length;
70
+ const blank = fields.slice(start).search(/\r?\n\r?\n/);
71
+ const end = blank === -1 ? fields.length : start + blank;
72
+ const uid = /(?:^|\s)UID (\d+)/.exec(`${fields.slice(0, literal.index)} ${fields.slice(end)}`)?.[1];
73
+ return uid === undefined ? [] : [[uid, fields.slice(start, end)]];
74
+ });
60
75
  const MONTHS = ["Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sep", "Oct", "Nov", "Dec"];
61
76
  const FETCH_BATCH = 500;
77
+ /** One himalaya call reads its whole answer into memory, so a mailbox of 300,000+ emails is listed in parts. */
78
+ const CALL_UIDS = 10_000;
62
79
  const imapDate = (day) => `${day.getUTCDate()}-${MONTHS[day.getUTCMonth()]}-${day.getUTCFullYear()}`;
63
80
  /** IMAP's `INTERNALDATE`: `"04-Oct-2026 19:51:09 +0000"`. */
64
81
  const isoOf = (internal) => {
@@ -83,7 +100,7 @@ const assertCompleted = (output, tags) => {
83
100
  * Every message in All Mail received since `since`, read with EXAMINE so nothing can change a flag.
84
101
  * All Mail rather than INBOX: an archived message leaves INBOX but is not deleted.
85
102
  */
86
- export const listAllMail = async (run, account, since, folder = "[Gmail]/All Mail") => {
103
+ export const listAllMail = async (run, account, since, folder = "[Gmail]/All Mail", headers = false) => {
87
104
  if (/[\r\n]/.test(folder) || folder.includes(String.fromCharCode(0)))
88
105
  throw new CliError("validation_error", "invalid mailbox name");
89
106
  const mailbox = JSON.stringify(folder);
@@ -92,43 +109,62 @@ export const listAllMail = async (run, account, since, folder = "[Gmail]/All Mai
92
109
  const uids = (/^\* SEARCH(.*)$/m.exec(search)?.[1] ?? "").trim().split(/\s+/).filter(Boolean);
93
110
  if (uids.length === 0)
94
111
  return [];
95
- const batches = [];
96
- for (let start = 0; start < uids.length; start += FETCH_BATCH)
97
- batches.push(uids.slice(start, start + FETCH_BATCH).join(","));
98
- const tags = batches.map((_, index) => `f${index}`);
99
- const fetched = await run(["imap", "raw", "-a", account], `a EXAMINE ${mailbox}\r\n${batches
100
- .map((set, index) => `${tags[index]} UID FETCH ${set} (UID X-GM-MSGID X-GM-THRID INTERNALDATE)\r\n`)
101
- .join("")}`);
102
- assertCompleted(fetched, ["a", ...tags]);
103
- const listed = [...fetched.matchAll(/^\* \d+ FETCH \((.*)\)\s*$/gm)].map(([, items = ""]) => {
104
- const item = (name) => new RegExp(`${name} (\\d+)`).exec(items)?.[1];
105
- const internal = /INTERNALDATE "([^"]+)"/.exec(items)?.[1];
106
- const uid = item("UID");
107
- const messageId = item("X-GM-MSGID");
108
- const threadId = item("X-GM-THRID");
109
- if (!uid || !messageId || !threadId || !internal)
110
- throw new CliError("invalid_response", `IMAP FETCH answer without the Gmail ids: ${items}`);
111
- return { uid, messageId, threadId, receivedAt: isoOf(internal) };
112
- });
113
- if (listed.length !== uids.length)
114
- throw new CliError("invalid_response", `IMAP listed ${uids.length} messages but fetched ${listed.length}`);
115
- // A separate answer, so a label the parser cannot read costs that message its labels, never the listing.
116
- const labelled = await run(["imap", "raw", "-a", account], `a EXAMINE ${mailbox}\r\n${batches
117
- .map((set, index) => `l${index} UID FETCH ${set} (UID X-GM-LABELS FLAGS)\r\n`)
118
- .join("")}`);
112
+ const listed = [];
119
113
  const marks = new Map();
120
- for (const [, items = ""] of labelled.matchAll(/^\* \d+ FETCH \((.*)\)\s*$/gm)) {
121
- const uid = /(?:^|\s)UID (\d+)/.exec(items)?.[1];
122
- const labels = imapList(items, "X-GM-LABELS");
123
- const flags = imapList(items, "FLAGS");
124
- if (!uid || labels === undefined || flags === undefined)
125
- continue;
126
- const flagged = flags.includes("\\Flagged");
127
- const names = new Set(labels.map(labelName));
128
- if (flagged)
129
- names.add("Starred");
130
- marks.set(uid, { labels: [...names].sort(), seen: flags.includes("\\Seen"), flagged });
114
+ for (let from = 0; from < uids.length; from += CALL_UIDS) {
115
+ const batches = [];
116
+ for (let start = from; start < Math.min(from + CALL_UIDS, uids.length); start += FETCH_BATCH)
117
+ batches.push(uids.slice(start, start + FETCH_BATCH).join(","));
118
+ const tags = batches.map((_, index) => `f${index}`);
119
+ const fetched = await run(["imap", "raw", "-a", account], `a EXAMINE ${mailbox}\r\n${batches
120
+ .map((set, index) => `${tags[index]} UID FETCH ${set} (UID X-GM-MSGID X-GM-THRID INTERNALDATE RFC822.SIZE)\r\n`)
121
+ .join("")}`);
122
+ assertCompleted(fetched, ["a", ...tags]);
123
+ for (const [, items = ""] of fetched.matchAll(/^\* \d+ FETCH \((.*)\)\s*$/gm)) {
124
+ const item = (name) => new RegExp(`${name} (\\d+)`).exec(items)?.[1];
125
+ const internal = /INTERNALDATE "([^"]+)"/.exec(items)?.[1];
126
+ const uid = item("UID");
127
+ const messageId = item("X-GM-MSGID");
128
+ const threadId = item("X-GM-THRID");
129
+ const size = item("RFC822\\.SIZE");
130
+ if (!uid || !messageId || !threadId || !internal)
131
+ throw new CliError("invalid_response", `IMAP FETCH answer without the Gmail ids: ${items}`);
132
+ listed.push({
133
+ uid,
134
+ messageId,
135
+ threadId,
136
+ receivedAt: isoOf(internal),
137
+ ...(size === undefined ? {} : { size: Number(size) }),
138
+ });
139
+ }
140
+ // A separate answer, so a label the parser cannot read costs that message its labels, never the listing.
141
+ const labelled = await run(["imap", "raw", "-a", account], `a EXAMINE ${mailbox}\r\n${batches
142
+ .map((set, index) => `l${index} UID FETCH ${set} (UID X-GM-LABELS FLAGS)\r\n`)
143
+ .join("")}`);
144
+ for (const [, items = ""] of labelled.matchAll(/^\* \d+ FETCH \((.*)\)\s*$/gm)) {
145
+ const uid = /(?:^|\s)UID (\d+)/.exec(items)?.[1];
146
+ const labels = imapList(items, "X-GM-LABELS");
147
+ const flags = imapList(items, "FLAGS");
148
+ if (!uid || labels === undefined || flags === undefined)
149
+ continue;
150
+ const flagged = flags.includes("\\Flagged");
151
+ const names = new Set(labels.map(labelName));
152
+ if (flagged)
153
+ names.add("Starred");
154
+ marks.set(uid, { labels: [...names].sort(), seen: flags.includes("\\Seen"), flagged });
155
+ }
156
+ if (headers) {
157
+ const headed = await run(["imap", "raw", "-a", account], `a EXAMINE ${mailbox}\r\n${batches
158
+ .map((set, index) => `h${index} UID FETCH ${set} (UID BODY.PEEK[HEADER.FIELDS (${HEADER_FIELDS})])\r\n`)
159
+ .join("")}`);
160
+ // A refused fetch would leave a whole batch without headers, and rules would not keep its mail out.
161
+ assertCompleted(headed, ["a", ...batches.map((_, index) => `h${index}`)]);
162
+ for (const [uid, text] of fetchedHeaders(headed))
163
+ marks.set(uid, { ...marks.get(uid), headers: headersOf(text) });
164
+ }
131
165
  }
166
+ if (listed.length !== uids.length)
167
+ throw new CliError("invalid_response", `IMAP listed ${uids.length} messages but fetched ${listed.length}`);
132
168
  return listed.map((item) => ({ ...item, ...marks.get(item.uid) }));
133
169
  };
134
170
  /** Message-ID is stable across folders; absent headers fall back to a UIDVALIDITY-scoped identity. */
@@ -149,7 +185,7 @@ export const listImapMail = async (run, account, since, folder) => {
149
185
  for (let start = 0; start < uids.length; start += FETCH_BATCH) {
150
186
  const batch = uids.slice(start, start + FETCH_BATCH);
151
187
  const before = listed.length;
152
- const output = await run(["imap", "raw", "-a", account], `a EXAMINE ${mailbox}\r\nf UID FETCH ${batch.join(",")} (UID FLAGS INTERNALDATE BODY.PEEK[HEADER.FIELDS (MESSAGE-ID REFERENCES IN-REPLY-TO)])\r\n`);
188
+ const output = await run(["imap", "raw", "-a", account], `a EXAMINE ${mailbox}\r\nf UID FETCH ${batch.join(",")} (UID FLAGS INTERNALDATE RFC822.SIZE BODY.PEEK[HEADER.FIELDS (MESSAGE-ID REFERENCES IN-REPLY-TO ${HEADER_FIELDS})])\r\n`);
153
189
  assertCompleted(output, ["a", "f"]);
154
190
  for (const match of output.matchAll(/^\* \d+ FETCH \(([\s\S]*?)(?=^\* \d+ FETCH|^[af] (?:OK|NO|BAD)|$(?![\s\S]))/gm)) {
155
191
  const fields = match[1] ?? "", uid = /(?:^|\s)UID (\d+)/.exec(fields)?.[1], internal = /INTERNALDATE "([^"]+)"/.exec(fields)?.[1];
@@ -161,12 +197,15 @@ export const listImapMail = async (run, account, since, folder) => {
161
197
  const parent = /^In-Reply-To:\s*(<[^>]+>)/im.exec(unfolded)?.[1];
162
198
  const identity = messageId ?? `uid:${folder}:${validity}:${uid}`;
163
199
  const flags = imapList(fields, "FLAGS");
200
+ const size = /RFC822\.SIZE (\d+)/.exec(fields)?.[1];
164
201
  listed.push({
165
202
  uid,
203
+ ...(size === undefined ? {} : { size: Number(size) }),
166
204
  messageId: digest(identity),
167
205
  threadId: digest(refs?.[0] ?? parent ?? identity),
168
206
  receivedAt: isoOf(internal),
169
207
  folder,
208
+ headers: headersOf(unfolded),
170
209
  // IMAP has no labels; a flagged message is Starred, as in Gmail, so one search finds both.
171
210
  ...(flags === undefined
172
211
  ? {}
@@ -1 +1 @@
1
- {"version":3,"file":"gmail.js","sourceRoot":"","sources":["../../src/mail/gmail.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"gmail.js","sourceRoot":"","sources":["../../src/mail/gmail.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,23 @@
1
+ /**
2
+ * The header fields memo reads at list time: enough to group mail by sender, apply the owner's rules and keep
3
+ * an envelope of the mail a rule records without its text.
4
+ */
5
+ export declare const HEADER_FIELDS = "FROM TO CC SUBJECT LIST-ID LIST-UNSUBSCRIBE PRECEDENCE";
6
+ export interface MailHeaders {
7
+ /** The sender's address, lower case; absent when From holds none. */
8
+ from?: string;
9
+ /** The sender's display name, decoded. */
10
+ fromName?: string;
11
+ subject?: string;
12
+ /** To and Cc addresses, lower case. */
13
+ to: string[];
14
+ listId?: string;
15
+ /** List-Id, List-Unsubscribe or `Precedence: bulk|list|junk`: mail sent to many, not written to one. */
16
+ bulk: boolean;
17
+ }
18
+ export declare const unfold: (text: string) => string;
19
+ export declare const field: (unfolded: string, name: string) => string | undefined;
20
+ export declare const addressesOf: (value: string | undefined) => string[];
21
+ /** The header fields of one email, from its header text. */
22
+ export declare const headersOf: (text: string) => MailHeaders;
23
+ //# sourceMappingURL=headers.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"headers.d.ts","sourceRoot":"","sources":["../../src/mail/headers.ts"],"names":[],"mappings":"AAEA;;;GAGG;AACH,eAAO,MAAM,aAAa,2DAA2D,CAAA;AAErF,MAAM,WAAW,WAAW;IAC1B,qEAAqE;IACrE,IAAI,CAAC,EAAE,MAAM,CAAA;IACb,0CAA0C;IAC1C,QAAQ,CAAC,EAAE,MAAM,CAAA;IACjB,OAAO,CAAC,EAAE,MAAM,CAAA;IAChB,uCAAuC;IACvC,EAAE,EAAE,MAAM,EAAE,CAAA;IACZ,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,wGAAwG;IACxG,IAAI,EAAE,OAAO,CAAA;CACd;AAED,eAAO,MAAM,MAAM,SAAU,MAAM,KAAG,MAA2C,CAAA;AAEjF,eAAO,MAAM,KAAK,aAAc,MAAM,QAAQ,MAAM,KAAG,MAAM,GAAG,SACI,CAAA;AAEpE,eAAO,MAAM,WAAW,UAAW,MAAM,GAAG,SAAS,KAAG,MAAM,EAK7D,CAAA;AAQD,4DAA4D;AAC5D,eAAO,MAAM,SAAS,SAAU,MAAM,KAAG,WAoBxC,CAAA"}
@@ -0,0 +1,42 @@
1
+ import { decodeWords } from "postal-mime";
2
+ /**
3
+ * The header fields memo reads at list time: enough to group mail by sender, apply the owner's rules and keep
4
+ * an envelope of the mail a rule records without its text.
5
+ */
6
+ export const HEADER_FIELDS = "FROM TO CC SUBJECT LIST-ID LIST-UNSUBSCRIBE PRECEDENCE";
7
+ export const unfold = (text) => text.replace(/\r?\n[ \t]+/g, " ");
8
+ export const field = (unfolded, name) => new RegExp(`^${name}:[ \\t]*(.*?)\\r?$`, "im").exec(unfolded)?.[1];
9
+ export const addressesOf = (value) => {
10
+ if (value === undefined)
11
+ return [];
12
+ const bracketed = [...value.matchAll(/<([^<>\s]+@[^<>\s]+)>/g)].map(([, address]) => address);
13
+ const found = bracketed.length ? bracketed : (value.match(/[^\s<>,;:"()]+@[^\s<>,;:"()]+/g) ?? []);
14
+ return found.map((address) => address.toLowerCase());
15
+ };
16
+ const nameOf = (value) => {
17
+ const before = /^\s*(.*?)\s*<[^<>]+>\s*$/.exec(value)?.[1];
18
+ const name = before?.replace(/^"(.*)"$/, "$1").trim();
19
+ return name ? decodeWords(name) : undefined;
20
+ };
21
+ /** The header fields of one email, from its header text. */
22
+ export const headersOf = (text) => {
23
+ const unfolded = unfold(text);
24
+ const sender = field(unfolded, "From");
25
+ const [from] = addressesOf(sender);
26
+ const fromName = sender === undefined ? undefined : nameOf(sender);
27
+ const subject = field(unfolded, "Subject");
28
+ const rawList = field(unfolded, "List-Id");
29
+ const listId = rawList === undefined ? undefined : (/<([^>]+)>/.exec(rawList)?.[1] ?? rawList).trim().toLowerCase();
30
+ const bulk = Boolean(listId) ||
31
+ field(unfolded, "List-Unsubscribe") !== undefined ||
32
+ /^(bulk|list|junk)\b/i.test(field(unfolded, "Precedence") ?? "");
33
+ return {
34
+ ...(from === undefined ? {} : { from }),
35
+ ...(fromName ? { fromName } : {}),
36
+ ...(subject === undefined ? {} : { subject: decodeWords(subject).trim() }),
37
+ to: [...addressesOf(field(unfolded, "To")), ...addressesOf(field(unfolded, "Cc"))],
38
+ ...(listId ? { listId } : {}),
39
+ bulk,
40
+ };
41
+ };
42
+ //# sourceMappingURL=headers.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"headers.js","sourceRoot":"","sources":["../../src/mail/headers.ts"],"names":[],"mappings":"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"}
@@ -1,4 +1,6 @@
1
- export type Himalaya = (args: string[], input?: string) => Promise<string>;
1
+ export type Himalaya = (args: string[], input?: string, options?: {
2
+ maxBuffer?: number;
3
+ }) => Promise<string>;
2
4
  /** `MEMO_HIMALAYA` names the program, so the test sandbox can point it at a fake. */
3
5
  export declare const himalaya: (env?: NodeJS.ProcessEnv) => Himalaya;
4
6
  //# sourceMappingURL=himalaya.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"himalaya.d.ts","sourceRoot":"","sources":["../../src/mail/himalaya.ts"],"names":[],"mappings":"AAGA,MAAM,MAAM,QAAQ,GAAG,CAAC,IAAI,EAAE,MAAM,EAAE,EAAE,KAAK,CAAC,EAAE,MAAM,KAAK,OAAO,CAAC,MAAM,CAAC,CAAA;AAE1E,qFAAqF;AACrF,eAAO,MAAM,QAAQ,SACb,MAAM,CAAC,UAAU,KAAiB,QAgBpC,CAAA"}
1
+ {"version":3,"file":"himalaya.d.ts","sourceRoot":"","sources":["../../src/mail/himalaya.ts"],"names":[],"mappings":"AAGA,MAAM,MAAM,QAAQ,GAAG,CAAC,IAAI,EAAE,MAAM,EAAE,EAAE,KAAK,CAAC,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE;IAAE,SAAS,CAAC,EAAE,MAAM,CAAA;CAAE,KAAK,OAAO,CAAC,MAAM,CAAC,CAAA;AAE5G,qFAAqF;AACrF,eAAO,MAAM,QAAQ,SACb,MAAM,CAAC,UAAU,KAAiB,QAgBpC,CAAA"}
@@ -1,8 +1,8 @@
1
1
  import { execFile } from "node:child_process";
2
2
  import { CliError } from "@wirecat/cli-base";
3
3
  /** `MEMO_HIMALAYA` names the program, so the test sandbox can point it at a fake. */
4
- export const himalaya = (env = process.env) => (args, input) => new Promise((resolve, reject) => {
5
- const child = execFile(env.MEMO_HIMALAYA ?? "himalaya", args, { env, maxBuffer: 64 * 1024 * 1024 }, (error, stdout, stderr) => {
4
+ export const himalaya = (env = process.env) => (args, input, options) => new Promise((resolve, reject) => {
5
+ const child = execFile(env.MEMO_HIMALAYA ?? "himalaya", args, { env, maxBuffer: options?.maxBuffer ?? 64 * 1024 * 1024 }, (error, stdout, stderr) => {
6
6
  if (error === null)
7
7
  resolve(stdout);
8
8
  else
@@ -1 +1 @@
1
- {"version":3,"file":"himalaya.js","sourceRoot":"","sources":["../../src/mail/himalaya.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,oBAAoB,CAAA;AAC7C,OAAO,EAAE,QAAQ,EAAE,MAAM,mBAAmB,CAAA;AAI5C,qFAAqF;AACrF,MAAM,CAAC,MAAM,QAAQ,GACnB,CAAC,GAAG,GAAsB,OAAO,CAAC,GAAG,EAAY,EAAE,CACnD,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE,CACd,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;IAC9B,MAAM,KAAK,GAAG,QAAQ,CACpB,GAAG,CAAC,aAAa,IAAI,UAAU,EAC/B,IAAI,EACJ,EAAE,GAAG,EAAE,SAAS,EAAE,EAAE,GAAG,IAAI,GAAG,IAAI,EAAE,EACpC,CAAC,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,EAAE;QACxB,IAAI,KAAK,KAAK,IAAI;YAAE,OAAO,CAAC,MAAM,CAAC,CAAA;;YAEjC,MAAM,CACJ,IAAI,QAAQ,CAAC,gBAAgB,EAAE,YAAY,IAAI,CAAC,CAAC,CAAC,IAAI,EAAE,YAAY,MAAM,CAAC,IAAI,EAAE,IAAI,KAAK,CAAC,OAAO,EAAE,CAAC,CACtG,CAAA;IACL,CAAC,CACF,CAAA;IACD,KAAK,CAAC,KAAK,EAAE,GAAG,CAAC,KAAK,IAAI,EAAE,CAAC,CAAA;AAC/B,CAAC,CAAC,CAAA"}
1
+ {"version":3,"file":"himalaya.js","sourceRoot":"","sources":["../../src/mail/himalaya.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,oBAAoB,CAAA;AAC7C,OAAO,EAAE,QAAQ,EAAE,MAAM,mBAAmB,CAAA;AAI5C,qFAAqF;AACrF,MAAM,CAAC,MAAM,QAAQ,GACnB,CAAC,GAAG,GAAsB,OAAO,CAAC,GAAG,EAAY,EAAE,CACnD,CAAC,IAAI,EAAE,KAAK,EAAE,OAAO,EAAE,EAAE,CACvB,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;IAC9B,MAAM,KAAK,GAAG,QAAQ,CACpB,GAAG,CAAC,aAAa,IAAI,UAAU,EAC/B,IAAI,EACJ,EAAE,GAAG,EAAE,SAAS,EAAE,OAAO,EAAE,SAAS,IAAI,EAAE,GAAG,IAAI,GAAG,IAAI,EAAE,EAC1D,CAAC,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,EAAE;QACxB,IAAI,KAAK,KAAK,IAAI;YAAE,OAAO,CAAC,MAAM,CAAC,CAAA;;YAEjC,MAAM,CACJ,IAAI,QAAQ,CAAC,gBAAgB,EAAE,YAAY,IAAI,CAAC,CAAC,CAAC,IAAI,EAAE,YAAY,MAAM,CAAC,IAAI,EAAE,IAAI,KAAK,CAAC,OAAO,EAAE,CAAC,CACtG,CAAA;IACL,CAAC,CACF,CAAA;IACD,KAAK,CAAC,KAAK,EAAE,GAAG,CAAC,KAAK,IAAI,EAAE,CAAC,CAAA;AAC/B,CAAC,CAAC,CAAA"}
@@ -1,15 +1,17 @@
1
- import { type LoadEngine } from "@wirecat/cli-messaging/documents";
2
- import type { MessageStore } from "@wirecat/cli-messaging/store";
1
+ import { type LoadEngine } from "@wirecat/cli-core/documents";
2
+ import type { MessageStore } from "@wirecat/cli-core/store";
3
3
  import { embedChanged, embedMailChunks, type NotesEmbedded } from "../notes/embed.js";
4
- import type { Himalaya } from "./himalaya.js";
4
+ import { type MailRule } from "./rules.js";
5
+ import type { MailSource } from "./source.js";
5
6
  export interface MailAccount {
6
7
  /** The account's name in Himalaya's config. */
7
8
  name: string;
8
9
  /** The mailbox address: the store's account id. */
9
10
  address: string;
10
- mode?: "gmail" | "imap";
11
+ mode?: "gmail" | "imap" | "mbox";
11
12
  folders?: string[];
12
13
  embed?: boolean;
14
+ rules?: MailRule[];
13
15
  }
14
16
  export interface ImportResult {
15
17
  account: string;
@@ -17,9 +19,18 @@ export interface ImportResult {
17
19
  listed: number;
18
20
  saved: number;
19
21
  alreadyStored: number;
22
+ /** New emails a skip rule kept out: never read, never stored. */
23
+ skipped: number;
24
+ /** New emails an envelope rule recorded: sender, date, size and labels, never their text. */
25
+ envelopes: number;
20
26
  deleted: number;
21
27
  /** False when `max` stopped the run before every new message was read; the next run continues. */
22
28
  complete: boolean;
29
+ /** Emails that could not be read or parsed; they are tried again next run. */
30
+ unreadable?: {
31
+ message: string;
32
+ reason: string;
33
+ }[];
23
34
  /** Why stored messages missing at the source were left alone, when they were. */
24
35
  deletionsSkipped?: string;
25
36
  indexed?: NotesEmbedded;
@@ -37,9 +48,9 @@ export interface ImportResult {
37
48
  }[];
38
49
  }
39
50
  export declare const MAX_ATTACHMENT_CHARS = 200000;
40
- export declare const importMail: ({ store, run, account, since, max, maxBodyChars, maxAttachmentChars, now, env, embed, loadEngine, retryAttachments, indexThreads, embedMail, }: {
51
+ export declare const importMail: ({ store, source, account, since, max, maxBodyChars, maxAttachmentChars, now, env, embed, loadEngine, retryAttachments, indexThreads, embedMail, }: {
41
52
  store: MessageStore;
42
- run: Himalaya;
53
+ source: MailSource;
43
54
  account: MailAccount;
44
55
  since: Date;
45
56
  max?: number;
@@ -1 +1 @@
1
- {"version":3,"file":"import.d.ts","sourceRoot":"","sources":["../../src/mail/import.ts"],"names":[],"mappings":"AAAA,OAAO,EAA6B,KAAK,UAAU,EAAE,MAAM,kCAAkC,CAAA;AAC7F,OAAO,KAAK,EAA6C,YAAY,EAAE,MAAM,8BAA8B,CAAA;AAC3G,OAAO,EAAE,YAAY,EAAE,eAAe,EAAE,KAAK,aAAa,EAAE,MAAM,mBAAmB,CAAA;AAGrF,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAA;AAG7C,MAAM,WAAW,WAAW;IAC1B,+CAA+C;IAC/C,IAAI,EAAE,MAAM,CAAA;IACZ,mDAAmD;IACnD,OAAO,EAAE,MAAM,CAAA;IACf,IAAI,CAAC,EAAE,OAAO,GAAG,MAAM,CAAA;IACvB,OAAO,CAAC,EAAE,MAAM,EAAE,CAAA;IAClB,KAAK,CAAC,EAAE,OAAO,CAAA;CAChB;AAED,MAAM,WAAW,YAAY;IAC3B,OAAO,EAAE,MAAM,CAAA;IACf,KAAK,EAAE,MAAM,CAAA;IACb,MAAM,EAAE,MAAM,CAAA;IACd,KAAK,EAAE,MAAM,CAAA;IACb,aAAa,EAAE,MAAM,CAAA;IACrB,OAAO,EAAE,MAAM,CAAA;IACf,kGAAkG;IAClG,QAAQ,EAAE,OAAO,CAAA;IACjB,iFAAiF;IACjF,gBAAgB,CAAC,EAAE,MAAM,CAAA;IACzB,OAAO,CAAC,EAAE,aAAa,CAAA;IACvB,QAAQ,CAAC,EAAE;QAAE,OAAO,EAAE,MAAM,EAAE,CAAC;QAAC,KAAK,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,QAAQ,GAAG,SAAS,CAAC;QAAC,QAAQ,EAAE,MAAM,CAAA;KAAE,CAAA;IAC7G,WAAW,CAAC,EAAE;QAAE,OAAO,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAA;KAAE,EAAE,CAAA;CAClE;AAKD,eAAO,MAAM,oBAAoB,SAAU,CAAA;AAI3C,eAAO,MAAM,UAAU,mJAepB;IACD,KAAK,EAAE,YAAY,CAAA;IACnB,GAAG,EAAE,QAAQ,CAAA;IACb,OAAO,EAAE,WAAW,CAAA;IACpB,KAAK,EAAE,IAAI,CAAA;IACX,GAAG,CAAC,EAAE,MAAM,CAAA;IACZ,YAAY,CAAC,EAAE,MAAM,CAAA;IACrB,kBAAkB,CAAC,EAAE,MAAM,CAAA;IAC3B,GAAG,CAAC,EAAE,MAAM,MAAM,CAAA;IAClB,GAAG,CAAC,EAAE,MAAM,CAAC,UAAU,CAAA;IACvB,KAAK,CAAC,EAAE,OAAO,CAAA;IACf,UAAU,CAAC,EAAE,UAAU,CAAA;IACvB,gBAAgB,CAAC,EAAE,OAAO,CAAA;IAC1B,YAAY,CAAC,EAAE,OAAO,YAAY,CAAA;IAClC,SAAS,CAAC,EAAE,OAAO,eAAe,CAAA;CACnC,KAAG,OAAO,CAAC,YAAY,CAyNvB,CAAA"}
1
+ {"version":3,"file":"import.d.ts","sourceRoot":"","sources":["../../src/mail/import.ts"],"names":[],"mappings":"AAAA,OAAO,EAA6B,KAAK,UAAU,EAAE,MAAM,6BAA6B,CAAA;AACxF,OAAO,KAAK,EAA6C,YAAY,EAAE,MAAM,yBAAyB,CAAA;AACtG,OAAO,EAAE,YAAY,EAAE,eAAe,EAAE,KAAK,aAAa,EAAE,MAAM,mBAAmB,CAAA;AAIrF,OAAO,EAAgD,KAAK,QAAQ,EAAE,MAAM,YAAY,CAAA;AACxF,OAAO,KAAK,EAAU,UAAU,EAAE,MAAM,aAAa,CAAA;AAErD,MAAM,WAAW,WAAW;IAC1B,+CAA+C;IAC/C,IAAI,EAAE,MAAM,CAAA;IACZ,mDAAmD;IACnD,OAAO,EAAE,MAAM,CAAA;IACf,IAAI,CAAC,EAAE,OAAO,GAAG,MAAM,GAAG,MAAM,CAAA;IAChC,OAAO,CAAC,EAAE,MAAM,EAAE,CAAA;IAClB,KAAK,CAAC,EAAE,OAAO,CAAA;IACf,KAAK,CAAC,EAAE,QAAQ,EAAE,CAAA;CACnB;AAED,MAAM,WAAW,YAAY;IAC3B,OAAO,EAAE,MAAM,CAAA;IACf,KAAK,EAAE,MAAM,CAAA;IACb,MAAM,EAAE,MAAM,CAAA;IACd,KAAK,EAAE,MAAM,CAAA;IACb,aAAa,EAAE,MAAM,CAAA;IACrB,iEAAiE;IACjE,OAAO,EAAE,MAAM,CAAA;IACf,6FAA6F;IAC7F,SAAS,EAAE,MAAM,CAAA;IACjB,OAAO,EAAE,MAAM,CAAA;IACf,kGAAkG;IAClG,QAAQ,EAAE,OAAO,CAAA;IACjB,8EAA8E;IAC9E,UAAU,CAAC,EAAE;QAAE,OAAO,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAA;KAAE,EAAE,CAAA;IAClD,iFAAiF;IACjF,gBAAgB,CAAC,EAAE,MAAM,CAAA;IACzB,OAAO,CAAC,EAAE,aAAa,CAAA;IACvB,QAAQ,CAAC,EAAE;QAAE,OAAO,EAAE,MAAM,EAAE,CAAC;QAAC,KAAK,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,QAAQ,GAAG,SAAS,CAAC;QAAC,QAAQ,EAAE,MAAM,CAAA;KAAE,CAAA;IAC7G,WAAW,CAAC,EAAE;QAAE,OAAO,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAA;KAAE,EAAE,CAAA;CAClE;AAKD,eAAO,MAAM,oBAAoB,SAAU,CAAA;AAM3C,eAAO,MAAM,UAAU,sJAepB;IACD,KAAK,EAAE,YAAY,CAAA;IACnB,MAAM,EAAE,UAAU,CAAA;IAClB,OAAO,EAAE,WAAW,CAAA;IACpB,KAAK,EAAE,IAAI,CAAA;IACX,GAAG,CAAC,EAAE,MAAM,CAAA;IACZ,YAAY,CAAC,EAAE,MAAM,CAAA;IACrB,kBAAkB,CAAC,EAAE,MAAM,CAAA;IAC3B,GAAG,CAAC,EAAE,MAAM,MAAM,CAAA;IAClB,GAAG,CAAC,EAAE,MAAM,CAAC,UAAU,CAAA;IACvB,KAAK,CAAC,EAAE,OAAO,CAAA;IACf,UAAU,CAAC,EAAE,UAAU,CAAA;IACvB,gBAAgB,CAAC,EAAE,OAAO,CAAA;IAC1B,YAAY,CAAC,EAAE,OAAO,YAAY,CAAA;IAClC,SAAS,CAAC,EAAE,OAAO,eAAe,CAAA;CACnC,KAAG,OAAO,CAAC,YAAY,CAiTvB,CAAA"}