@wirecat/cli-memo 0.23.0 → 0.25.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 (232) hide show
  1. package/README.md +24 -21
  2. package/dist/actions/actions.d.ts +1 -1
  3. package/dist/actions/actions.d.ts.map +1 -1
  4. package/dist/actions/command.d.ts.map +1 -1
  5. package/dist/actions/command.js +14 -15
  6. package/dist/actions/command.js.map +1 -1
  7. package/dist/agents/command.d.ts.map +1 -1
  8. package/dist/agents/command.js +3 -2
  9. package/dist/agents/command.js.map +1 -1
  10. package/dist/answers/command.d.ts +1 -1
  11. package/dist/answers/command.d.ts.map +1 -1
  12. package/dist/answers/command.js +8 -8
  13. package/dist/answers/command.js.map +1 -1
  14. package/dist/author.d.ts +11 -0
  15. package/dist/author.d.ts.map +1 -0
  16. package/dist/author.js +16 -0
  17. package/dist/author.js.map +1 -0
  18. package/dist/bin/memo.js +6 -4
  19. package/dist/bin/memo.js.map +1 -1
  20. package/dist/config.d.ts +15 -2
  21. package/dist/config.d.ts.map +1 -1
  22. package/dist/config.js +15 -2
  23. package/dist/config.js.map +1 -1
  24. package/dist/context/command.d.ts.map +1 -1
  25. package/dist/context/command.js +4 -4
  26. package/dist/context/command.js.map +1 -1
  27. package/dist/context/context.d.ts +3 -3
  28. package/dist/context/context.d.ts.map +1 -1
  29. package/dist/context/context.js +3 -3
  30. package/dist/context/context.js.map +1 -1
  31. package/dist/discovery/command.d.ts +2 -0
  32. package/dist/discovery/command.d.ts.map +1 -1
  33. package/dist/discovery/command.js +18 -10
  34. package/dist/discovery/command.js.map +1 -1
  35. package/dist/examples.d.ts +5 -0
  36. package/dist/examples.d.ts.map +1 -0
  37. package/dist/examples.js +135 -0
  38. package/dist/examples.js.map +1 -0
  39. package/dist/facts/command.d.ts.map +1 -1
  40. package/dist/facts/command.js +19 -18
  41. package/dist/facts/command.js.map +1 -1
  42. package/dist/install/postinstall.d.ts +7 -0
  43. package/dist/install/postinstall.d.ts.map +1 -0
  44. package/dist/install/postinstall.js +28 -0
  45. package/dist/install/postinstall.js.map +1 -0
  46. package/dist/knowledge/command.d.ts.map +1 -1
  47. package/dist/knowledge/command.js +107 -62
  48. package/dist/knowledge/command.js.map +1 -1
  49. package/dist/knowledge/key-documents.d.ts +29 -0
  50. package/dist/knowledge/key-documents.d.ts.map +1 -0
  51. package/dist/knowledge/key-documents.js +76 -0
  52. package/dist/knowledge/key-documents.js.map +1 -0
  53. package/dist/knowledge/meeting-projects-command.js +4 -4
  54. package/dist/knowledge/meeting-projects-command.js.map +1 -1
  55. package/dist/mail/accounts.d.ts +11 -0
  56. package/dist/mail/accounts.d.ts.map +1 -0
  57. package/dist/mail/accounts.js +26 -0
  58. package/dist/mail/accounts.js.map +1 -0
  59. package/dist/mail/command.d.ts +1 -1
  60. package/dist/mail/command.d.ts.map +1 -1
  61. package/dist/mail/command.js +132 -98
  62. package/dist/mail/command.js.map +1 -1
  63. package/dist/mail/gmail.d.ts +7 -2
  64. package/dist/mail/gmail.d.ts.map +1 -1
  65. package/dist/mail/gmail.js +76 -37
  66. package/dist/mail/gmail.js.map +1 -1
  67. package/dist/mail/headers.d.ts +17 -0
  68. package/dist/mail/headers.d.ts.map +1 -0
  69. package/dist/mail/headers.js +28 -0
  70. package/dist/mail/headers.js.map +1 -0
  71. package/dist/mail/himalaya.d.ts +3 -1
  72. package/dist/mail/himalaya.d.ts.map +1 -1
  73. package/dist/mail/himalaya.js +2 -2
  74. package/dist/mail/himalaya.js.map +1 -1
  75. package/dist/mail/import.d.ts +15 -6
  76. package/dist/mail/import.d.ts.map +1 -1
  77. package/dist/mail/import.js +130 -87
  78. package/dist/mail/import.js.map +1 -1
  79. package/dist/mail/mbox.d.ts +9 -0
  80. package/dist/mail/mbox.d.ts.map +1 -0
  81. package/dist/mail/mbox.js +218 -0
  82. package/dist/mail/mbox.js.map +1 -0
  83. package/dist/mail/messages-command.d.ts +4 -0
  84. package/dist/mail/messages-command.d.ts.map +1 -0
  85. package/dist/mail/messages-command.js +32 -0
  86. package/dist/mail/messages-command.js.map +1 -0
  87. package/dist/mail/parse.d.ts +2 -2
  88. package/dist/mail/parse.d.ts.map +1 -1
  89. package/dist/mail/parse.js +27 -63
  90. package/dist/mail/parse.js.map +1 -1
  91. package/dist/mail/probe.d.ts +31 -0
  92. package/dist/mail/probe.d.ts.map +1 -0
  93. package/dist/mail/probe.js +55 -0
  94. package/dist/mail/probe.js.map +1 -0
  95. package/dist/mail/rules.d.ts +18 -0
  96. package/dist/mail/rules.d.ts.map +1 -0
  97. package/dist/mail/rules.js +26 -0
  98. package/dist/mail/rules.js.map +1 -0
  99. package/dist/mail/source.d.ts +20 -0
  100. package/dist/mail/source.d.ts.map +1 -0
  101. package/dist/mail/source.js +99 -0
  102. package/dist/mail/source.js.map +1 -0
  103. package/dist/mcp/command.js +1 -1
  104. package/dist/mcp/command.js.map +1 -1
  105. package/dist/mcp/knowledge.js +4 -4
  106. package/dist/mcp/knowledge.js.map +1 -1
  107. package/dist/mcp/server.js +11 -11
  108. package/dist/mcp/server.js.map +1 -1
  109. package/dist/mcp/task-relations.d.ts +3 -3
  110. package/dist/mcp/task-relations.d.ts.map +1 -1
  111. package/dist/mcp/task-relations.js +17 -8
  112. package/dist/mcp/task-relations.js.map +1 -1
  113. package/dist/mcp/tool.d.ts +1 -1
  114. package/dist/mcp/tool.d.ts.map +1 -1
  115. package/dist/mcp/vocabulary.d.ts +2 -3
  116. package/dist/mcp/vocabulary.d.ts.map +1 -1
  117. package/dist/mcp/vocabulary.js +23 -18
  118. package/dist/mcp/vocabulary.js.map +1 -1
  119. package/dist/memories/command.d.ts +1 -0
  120. package/dist/memories/command.d.ts.map +1 -1
  121. package/dist/memories/command.js +23 -21
  122. package/dist/memories/command.js.map +1 -1
  123. package/dist/memories/memories.d.ts +1 -1
  124. package/dist/memories/memories.d.ts.map +1 -1
  125. package/dist/notes/about.d.ts +12 -3
  126. package/dist/notes/about.d.ts.map +1 -1
  127. package/dist/notes/about.js +35 -31
  128. package/dist/notes/about.js.map +1 -1
  129. package/dist/notes/bound.d.ts +4 -1
  130. package/dist/notes/bound.d.ts.map +1 -1
  131. package/dist/notes/bound.js +9 -1
  132. package/dist/notes/bound.js.map +1 -1
  133. package/dist/notes/command.d.ts.map +1 -1
  134. package/dist/notes/command.js +18 -61
  135. package/dist/notes/command.js.map +1 -1
  136. package/dist/notes/embed.d.ts +1 -1
  137. package/dist/notes/embed.d.ts.map +1 -1
  138. package/dist/notes/embed.js +1 -1
  139. package/dist/notes/embed.js.map +1 -1
  140. package/dist/notes/folders-command.d.ts.map +1 -1
  141. package/dist/notes/folders-command.js +13 -7
  142. package/dist/notes/folders-command.js.map +1 -1
  143. package/dist/notes/import.d.ts +2 -2
  144. package/dist/notes/import.d.ts.map +1 -1
  145. package/dist/notes/import.js +2 -2
  146. package/dist/notes/import.js.map +1 -1
  147. package/dist/notes/internal.d.ts +1 -1
  148. package/dist/notes/internal.d.ts.map +1 -1
  149. package/dist/notes/links.d.ts +1 -1
  150. package/dist/notes/links.d.ts.map +1 -1
  151. package/dist/notes/list.d.ts +22 -0
  152. package/dist/notes/list.d.ts.map +1 -0
  153. package/dist/notes/list.js +24 -0
  154. package/dist/notes/list.js.map +1 -0
  155. package/dist/notes/search.d.ts +3 -3
  156. package/dist/notes/search.d.ts.map +1 -1
  157. package/dist/notes/search.js +3 -3
  158. package/dist/notes/search.js.map +1 -1
  159. package/dist/options.d.ts +2 -0
  160. package/dist/options.d.ts.map +1 -1
  161. package/dist/options.js +2 -0
  162. package/dist/options.js.map +1 -1
  163. package/dist/people/command.js +3 -3
  164. package/dist/people/command.js.map +1 -1
  165. package/dist/people/identity.d.ts +1 -1
  166. package/dist/people/identity.d.ts.map +1 -1
  167. package/dist/people/identity.js +1 -1
  168. package/dist/people/identity.js.map +1 -1
  169. package/dist/people/notes-map.d.ts +1 -1
  170. package/dist/people/notes-map.d.ts.map +1 -1
  171. package/dist/people/subject.d.ts +1 -1
  172. package/dist/people/subject.d.ts.map +1 -1
  173. package/dist/people/subject.js +1 -1
  174. package/dist/people/subject.js.map +1 -1
  175. package/dist/program.d.ts +5 -0
  176. package/dist/program.d.ts.map +1 -1
  177. package/dist/program.js +35 -4
  178. package/dist/program.js.map +1 -1
  179. package/dist/records/run.d.ts +1 -1
  180. package/dist/records/run.d.ts.map +1 -1
  181. package/dist/records/run.js +1 -1
  182. package/dist/records/run.js.map +1 -1
  183. package/dist/run/auto.d.ts.map +1 -1
  184. package/dist/run/auto.js +11 -13
  185. package/dist/run/auto.js.map +1 -1
  186. package/dist/run/import.d.ts +2 -2
  187. package/dist/run/import.d.ts.map +1 -1
  188. package/dist/run/import.js +71 -28
  189. package/dist/run/import.js.map +1 -1
  190. package/dist/run/lock.d.ts +1 -1
  191. package/dist/run/lock.d.ts.map +1 -1
  192. package/dist/run/lock.js +2 -2
  193. package/dist/run/lock.js.map +1 -1
  194. package/dist/search/command.d.ts +16 -21
  195. package/dist/search/command.d.ts.map +1 -1
  196. package/dist/search/command.js +101 -51
  197. package/dist/search/command.js.map +1 -1
  198. package/dist/store/gone.d.ts +1 -1
  199. package/dist/store/gone.d.ts.map +1 -1
  200. package/dist/store/held.d.ts +1 -1
  201. package/dist/store/held.d.ts.map +1 -1
  202. package/dist/store/scope.d.ts +1 -1
  203. package/dist/store/scope.d.ts.map +1 -1
  204. package/dist/store/scope.js +1 -1
  205. package/dist/store/scope.js.map +1 -1
  206. package/dist/store/source-target.d.ts +1 -1
  207. package/dist/store/source-target.d.ts.map +1 -1
  208. package/dist/store/source-target.js +1 -1
  209. package/dist/store/source-target.js.map +1 -1
  210. package/dist/tags/command.d.ts.map +1 -1
  211. package/dist/tags/command.js +19 -9
  212. package/dist/tags/command.js.map +1 -1
  213. package/dist/tasks/command.d.ts.map +1 -1
  214. package/dist/tasks/command.js +19 -9
  215. package/dist/tasks/command.js.map +1 -1
  216. package/dist/tasks/context.d.ts +2 -2
  217. package/dist/tasks/context.d.ts.map +1 -1
  218. package/dist/tasks/context.js +2 -2
  219. package/dist/tasks/context.js.map +1 -1
  220. package/dist/tasks/relations-command.d.ts.map +1 -1
  221. package/dist/tasks/relations-command.js +9 -22
  222. package/dist/tasks/relations-command.js.map +1 -1
  223. package/dist/version.d.ts +1 -1
  224. package/dist/version.js +1 -1
  225. package/dist/vocabulary/command.d.ts.map +1 -1
  226. package/dist/vocabulary/command.js +45 -33
  227. package/dist/vocabulary/command.js.map +1 -1
  228. package/dist/vocabulary/project.d.ts +1 -1
  229. package/dist/vocabulary/project.d.ts.map +1 -1
  230. package/install/postinstall.mjs +9 -0
  231. package/package.json +9 -4
  232. package/skills/cli-memo/SKILL.md +60 -0
@@ -0,0 +1,28 @@
1
+ /** The header fields memo reads at list time: enough to group mail by sender and apply the owner's rules. */
2
+ export const HEADER_FIELDS = "FROM TO CC LIST-ID LIST-UNSUBSCRIBE PRECEDENCE";
3
+ export const unfold = (text) => text.replace(/\r?\n[ \t]+/g, " ");
4
+ export const field = (unfolded, name) => new RegExp(`^${name}:[ \\t]*(.*?)\\r?$`, "im").exec(unfolded)?.[1];
5
+ export const addressesOf = (value) => {
6
+ if (value === undefined)
7
+ return [];
8
+ const bracketed = [...value.matchAll(/<([^<>\s]+@[^<>\s]+)>/g)].map(([, address]) => address);
9
+ const found = bracketed.length ? bracketed : (value.match(/[^\s<>,;:"()]+@[^\s<>,;:"()]+/g) ?? []);
10
+ return found.map((address) => address.toLowerCase());
11
+ };
12
+ /** The header fields of one email, from its header text. */
13
+ export const headersOf = (text) => {
14
+ const unfolded = unfold(text);
15
+ const [from] = addressesOf(field(unfolded, "From"));
16
+ const rawList = field(unfolded, "List-Id");
17
+ const listId = rawList === undefined ? undefined : (/<([^>]+)>/.exec(rawList)?.[1] ?? rawList).trim().toLowerCase();
18
+ const bulk = Boolean(listId) ||
19
+ field(unfolded, "List-Unsubscribe") !== undefined ||
20
+ /^(bulk|list|junk)\b/i.test(field(unfolded, "Precedence") ?? "");
21
+ return {
22
+ ...(from === undefined ? {} : { from }),
23
+ to: [...addressesOf(field(unfolded, "To")), ...addressesOf(field(unfolded, "Cc"))],
24
+ ...(listId ? { listId } : {}),
25
+ bulk,
26
+ };
27
+ };
28
+ //# sourceMappingURL=headers.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"headers.js","sourceRoot":"","sources":["../../src/mail/headers.ts"],"names":[],"mappings":"AAAA,6GAA6G;AAC7G,MAAM,CAAC,MAAM,aAAa,GAAG,gDAAgD,CAAA;AAY7E,MAAM,CAAC,MAAM,MAAM,GAAG,CAAC,IAAY,EAAU,EAAE,CAAC,IAAI,CAAC,OAAO,CAAC,cAAc,EAAE,GAAG,CAAC,CAAA;AAEjF,MAAM,CAAC,MAAM,KAAK,GAAG,CAAC,QAAgB,EAAE,IAAY,EAAsB,EAAE,CAC1E,IAAI,MAAM,CAAC,IAAI,IAAI,oBAAoB,EAAE,IAAI,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,CAAC,CAAA;AAEpE,MAAM,CAAC,MAAM,WAAW,GAAG,CAAC,KAAyB,EAAY,EAAE;IACjE,IAAI,KAAK,KAAK,SAAS;QAAE,OAAO,EAAE,CAAA;IAClC,MAAM,SAAS,GAAG,CAAC,GAAG,KAAK,CAAC,QAAQ,CAAC,wBAAwB,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,OAAO,CAAC,EAAE,EAAE,CAAC,OAAiB,CAAC,CAAA;IACvG,MAAM,KAAK,GAAG,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,gCAAgC,CAAC,IAAI,EAAE,CAAC,CAAA;IAClG,OAAO,KAAK,CAAC,GAAG,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,OAAO,CAAC,WAAW,EAAE,CAAC,CAAA;AACtD,CAAC,CAAA;AAED,4DAA4D;AAC5D,MAAM,CAAC,MAAM,SAAS,GAAG,CAAC,IAAY,EAAe,EAAE;IACrD,MAAM,QAAQ,GAAG,MAAM,CAAC,IAAI,CAAC,CAAA;IAC7B,MAAM,CAAC,IAAI,CAAC,GAAG,WAAW,CAAC,KAAK,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC,CAAA;IACnD,MAAM,OAAO,GAAG,KAAK,CAAC,QAAQ,EAAE,SAAS,CAAC,CAAA;IAC1C,MAAM,MAAM,GAAG,OAAO,KAAK,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,OAAO,CAAC,CAAC,IAAI,EAAE,CAAC,WAAW,EAAE,CAAA;IACnH,MAAM,IAAI,GACR,OAAO,CAAC,MAAM,CAAC;QACf,KAAK,CAAC,QAAQ,EAAE,kBAAkB,CAAC,KAAK,SAAS;QACjD,sBAAsB,CAAC,IAAI,CAAC,KAAK,CAAC,QAAQ,EAAE,YAAY,CAAC,IAAI,EAAE,CAAC,CAAA;IAClE,OAAO;QACL,GAAG,CAAC,IAAI,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,CAAC;QACvC,EAAE,EAAE,CAAC,GAAG,WAAW,CAAC,KAAK,CAAC,QAAQ,EAAE,IAAI,CAAC,CAAC,EAAE,GAAG,WAAW,CAAC,KAAK,CAAC,QAAQ,EAAE,IAAI,CAAC,CAAC,CAAC;QAClF,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QAC7B,IAAI;KACL,CAAA;AACH,CAAC,CAAA"}
@@ -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,16 @@ 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;
20
24
  deleted: number;
21
25
  /** False when `max` stopped the run before every new message was read; the next run continues. */
22
26
  complete: boolean;
27
+ /** Emails that could not be read or parsed; they are tried again next run. */
28
+ unreadable?: {
29
+ message: string;
30
+ reason: string;
31
+ }[];
23
32
  /** Why stored messages missing at the source were left alone, when they were. */
24
33
  deletionsSkipped?: string;
25
34
  indexed?: NotesEmbedded;
@@ -37,9 +46,9 @@ export interface ImportResult {
37
46
  }[];
38
47
  }
39
48
  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, }: {
49
+ export declare const importMail: ({ store, source, account, since, max, maxBodyChars, maxAttachmentChars, now, env, embed, loadEngine, retryAttachments, indexThreads, embedMail, }: {
41
50
  store: MessageStore;
42
- run: Himalaya;
51
+ source: MailSource;
43
52
  account: MailAccount;
44
53
  since: Date;
45
54
  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,EAAU,KAAK,QAAQ,EAAE,MAAM,YAAY,CAAA;AAClD,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,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,CAqPvB,CAAA"}
@@ -1,35 +1,39 @@
1
- import { extractText, importEngine } from "@wirecat/cli-messaging/documents";
1
+ import { extractText, importEngine } from "@wirecat/cli-core/documents";
2
2
  import { embedChanged, embedMailChunks } from "../notes/embed.js";
3
3
  import { dropMissing, tooManyGone } from "../store/gone.js";
4
- import { listAllMail, listImapMail } from "./gmail.js";
4
+ import { mailFolders } from "./accounts.js";
5
5
  import { MAX_BODY_CHARS, parseMail } from "./parse.js";
6
+ import { decide } from "./rules.js";
6
7
  const DAY = 86_400_000;
7
8
  /** IMAP's SINCE counts whole days in the server's zone, so the window's first days are not trusted. */
8
9
  const EDGE = 2 * DAY;
9
10
  export const MAX_ATTACHMENT_CHARS = 200_000;
11
+ /** One chunk of raw mail is held in memory at a time. */
12
+ const FETCH_CHUNK = 50;
10
13
  const addressOf = ({ email, name }) => ({ address: email, name });
11
- export const importMail = async ({ store, run, account, since, max = 200, maxBodyChars = MAX_BODY_CHARS, maxAttachmentChars = MAX_ATTACHMENT_CHARS, now = Date.now, env, embed = false, loadEngine = importEngine, retryAttachments = false, indexThreads = embedChanged, embedMail = embedMailChunks, }) => {
14
+ export const importMail = async ({ store, source, account, since, max = 200, maxBodyChars = MAX_BODY_CHARS, maxAttachmentChars = MAX_ATTACHMENT_CHARS, now = Date.now, env, embed = false, loadEngine = importEngine, retryAttachments = false, indexThreads = embedChanged, embedMail = embedMailChunks, }) => {
12
15
  const startedAt = now();
13
16
  const key = { provider: "email", account: account.address.toLowerCase() };
14
17
  const accountId = await store.saveAccount(key, { name: account.address });
15
- const folders = account.folders ?? [account.mode === "imap" ? "INBOX" : "[Gmail]/All Mail"];
18
+ const folders = mailFolders(account);
16
19
  if (folders.length < 1 || folders.length > 50)
17
20
  throw new Error("select 1–50 mail folders");
21
+ const rules = account.rules ?? [];
22
+ // An archive file is a snapshot of the same account: it adds mail, and changes nothing IMAP keeps current.
23
+ const snapshot = account.mode === "mbox";
18
24
  const collected = [];
19
- for (const folder of folders)
20
- collected.push(...(account.mode === "imap"
21
- ? await listImapMail(run, account.name, since, folder)
22
- : (await listAllMail(run, account.name, since, folder)).map((item) => ({
23
- ...item,
24
- folder: folder === "[Gmail]/All Mail" ? "archive" : folder,
25
- scopeFolder: folder,
26
- }))));
25
+ for (const folder of folders) {
26
+ const found = await source.list(since, folder, { headers: rules.length > 0 });
27
+ // Spreading a whole mailbox into push() overflows the stack past ~120,000 emails.
28
+ for (const item of found)
29
+ collected.push(item);
30
+ }
27
31
  const listed = [...new Map(collected.map((item) => [item.messageId, item])).values()].sort((a, b) => b.receivedAt.localeCompare(a.receivedAt));
28
32
  const present = new Set(listed.map(({ messageId }) => messageId));
29
33
  const foundFolders = new Map();
30
34
  for (const item of collected) {
31
35
  const current = foundFolders.get(item.messageId) ?? new Set();
32
- current.add(item.scopeFolder ?? item.folder ?? folders[0]);
36
+ current.add(item.folder ?? folders[0]);
33
37
  foundFolders.set(item.messageId, current);
34
38
  }
35
39
  const mailbox = (folder) => ({ externalId: folder, name: folder, kind: null });
@@ -38,15 +42,17 @@ export const importMail = async ({ store, run, account, since, max = 200, maxBod
38
42
  const allMailOnly = account.mode !== "imap" && folders.length === 1 && folders[0] === "[Gmail]/All Mail";
39
43
  // Deletions are proved against the mailboxes as stored before this scan moves anything.
40
44
  const scope = JSON.stringify({ mode: account.mode ?? "gmail", folders: [...folders].sort() });
41
- const previousScope = await store.syncState(key, "mail_folder_scope");
45
+ const previousScope = snapshot ? undefined : await store.syncState(key, "mail_folder_scope");
42
46
  const windowStart = new Date(since.getTime() + EDGE);
43
47
  let deleted = 0;
44
48
  let skipped;
45
- if (previousScope !== undefined && previousScope.value !== scope)
49
+ if (snapshot)
50
+ skipped = "an mbox file is a snapshot; mail missing from it is not proven deleted";
51
+ else if (previousScope !== undefined && previousScope.value !== scope)
46
52
  skipped = "folder scope changed; missing mail is not proven deleted";
47
53
  else {
48
54
  // A label is not where mail lives, so only folders prove that a missing mail was deleted.
49
- const candidates = (await store.mail.emails({ accountId, since: windowStart.getTime() })).filter(({ mailboxes }) => {
55
+ const candidates = (await store.mail.emailRefs({ accountId, since: windowStart.getTime() })).filter(({ mailboxes }) => {
50
56
  const inFolders = mailboxes.filter(({ kind }) => kind !== "label");
51
57
  return inFolders.length ? inFolders.every(({ externalId }) => folders.includes(externalId)) : allMailOnly;
52
58
  });
@@ -64,9 +70,10 @@ export const importMail = async ({ store, run, account, since, max = 200, maxBod
64
70
  deleted += older.deleted;
65
71
  skipped ??= older.skipped;
66
72
  }
67
- await store.mail.setMailboxes(accountId, folders.map(mailbox), new Map([...foundFolders].map(([id, found]) => [id, [...found]])), startedAt);
73
+ if (!snapshot)
74
+ await store.mail.setMailboxes(accountId, folders.map(mailbox), new Map([...foundFolders].map(([id, found]) => [id, [...found]])), startedAt);
68
75
  // A message's label list is whole, so every label the account has is replaced for each message read.
69
- if (labelsOf.size) {
76
+ if (labelsOf.size && !snapshot) {
70
77
  const known = (await store.mail.mailboxes(accountId)).filter(({ kind }) => kind === "label");
71
78
  const seen = [...labelsOf.values()].flatMap(({ labels }) => labels ?? []);
72
79
  const scanned = new Map([
@@ -76,85 +83,118 @@ export const importMail = async ({ store, run, account, since, max = 200, maxBod
76
83
  await store.mail.setMailboxes(accountId, [...scanned.values()], new Map([...labelsOf].map(([id, { labels }]) => [id, (labels ?? []).map((name) => label(name).externalId)])), startedAt);
77
84
  }
78
85
  const attachments = [];
86
+ const unreadable = [];
79
87
  let saved = 0;
80
88
  let alreadyStored = 0;
81
- let read = 0;
89
+ let ruledOut = 0;
90
+ const pending = [];
91
+ // IMAP lists what exists now, so a mail marked deleted that it lists again is saved again, which brings it back.
92
+ // An archive is old: what it holds that IMAP proved deleted stays deleted.
93
+ const stored = retryAttachments
94
+ ? new Set()
95
+ : new Set((await store.mail.emailRefs({ accountId, includeDeleted: snapshot })).map(({ externalId }) => externalId));
82
96
  for (const item of listed) {
83
- if (!retryAttachments && (await store.mail.email(accountId, item.messageId)) !== null) {
97
+ if (stored.has(item.messageId)) {
84
98
  alreadyStored++;
85
99
  continue;
86
100
  }
87
- if (read >= max)
101
+ // Stored mail a newer skip rule matches stays: removing it is a separate, explicit step.
102
+ if (decide(rules, item.headers) === "skip") {
103
+ ruledOut++;
104
+ continue;
105
+ }
106
+ if (pending.length >= max)
88
107
  break;
89
- read++;
90
- const mail = parseMail(await run(["--json", "message", "read", "-a", account.name, "-m", item.folder ?? "archive", item.uid]), maxBodyChars);
91
- const files = [];
92
- for (const [position, part] of mail.attachments.entries()) {
93
- const extraction = part.bytes === null
94
- ? { status: "unavailable" }
95
- : await extractText(part.bytes, { kind: "file", name: part.name, mime: part.mime, path: part.name }, loadEngine);
96
- attachments.push({ message: item.messageId, part: part.id, status: extraction.status });
97
- const extracted = extraction.status === "extracted" ? extraction : undefined;
98
- files.push({
99
- position,
100
- kind: "file",
101
- mime: part.mime,
102
- name: part.name,
103
- title: null,
104
- url: null,
105
- size: part.bytes === null ? null : part.bytes.byteLength,
106
- width: null,
107
- height: null,
108
- duration: null,
109
- providerRef: { message: item.messageId, part: part.id },
110
- localPath: null,
111
- text: extracted ? extracted.text.slice(0, maxAttachmentChars) : null,
112
- normalizedText: null,
113
- extraction: extracted ? "text" : "failed",
114
- extractor: extracted ? extracted.extractor : null,
115
- extractionError: extracted ? null : extraction.status,
116
- contentSha256: null,
117
- extractedAt: startedAt,
108
+ pending.push(item);
109
+ }
110
+ for (let start = 0; start < pending.length; start += FETCH_CHUNK) {
111
+ const chunk = pending.slice(start, start + FETCH_CHUNK);
112
+ const raws = await source.fetchRaw(chunk);
113
+ // Every email of a chunk failing is the connection or the login, not the mail: stop instead of trying the rest.
114
+ if (chunk.length > 1 && raws.every((raw) => raw instanceof Error))
115
+ throw raws[0];
116
+ for (const [index, item] of chunk.entries()) {
117
+ let mail;
118
+ try {
119
+ const raw = raws[index];
120
+ if (raw === undefined || raw instanceof Error)
121
+ throw raw ?? new Error("not read");
122
+ mail = await parseMail(raw, maxBodyChars);
123
+ }
124
+ catch (error) {
125
+ unreadable.push({ message: item.messageId, reason: error instanceof Error ? error.message : String(error) });
126
+ continue;
127
+ }
128
+ const files = [];
129
+ for (const [position, part] of mail.attachments.entries()) {
130
+ const extraction = part.bytes === null
131
+ ? { status: "unavailable" }
132
+ : await extractText(part.bytes, { kind: "file", name: part.name, mime: part.mime, path: part.name }, loadEngine);
133
+ attachments.push({ message: item.messageId, part: part.id, status: extraction.status });
134
+ const extracted = extraction.status === "extracted" ? extraction : undefined;
135
+ files.push({
136
+ position,
137
+ kind: "file",
138
+ mime: part.mime,
139
+ name: part.name,
140
+ title: null,
141
+ url: null,
142
+ size: part.bytes === null ? null : part.bytes.byteLength,
143
+ width: null,
144
+ height: null,
145
+ duration: null,
146
+ providerRef: { message: item.messageId, part: part.id },
147
+ localPath: null,
148
+ text: extracted ? extracted.text.slice(0, maxAttachmentChars) : null,
149
+ normalizedText: null,
150
+ extraction: extracted ? "text" : "failed",
151
+ extractor: extracted ? extracted.extractor : null,
152
+ extractionError: extracted ? null : extraction.status,
153
+ contentSha256: null,
154
+ extractedAt: startedAt,
155
+ });
156
+ }
157
+ await store.mail.saveThread({
158
+ accountId,
159
+ externalId: item.threadId,
160
+ now: startedAt,
161
+ emails: [
162
+ {
163
+ externalId: item.messageId,
164
+ subject: mail.subject,
165
+ from: mail.from === null ? null : addressOf(mail.from),
166
+ to: mail.to.map(addressOf),
167
+ cc: mail.cc.map(addressOf),
168
+ bcc: mail.bcc.map(addressOf),
169
+ sentAt: null,
170
+ receivedAt: Date.parse(item.receivedAt),
171
+ bodyText: mail.text || null,
172
+ outgoing: mail.from === null ? null : mail.from.email === key.account,
173
+ mailboxes: [
174
+ ...[...(foundFolders.get(item.messageId) ?? [])].map(mailbox),
175
+ ...(labelsOf.get(item.messageId)?.labels ?? []).map(label),
176
+ ],
177
+ ...(labelsOf.get(item.messageId)?.seen === undefined
178
+ ? {}
179
+ : { read: labelsOf.get(item.messageId)?.seen ?? null }),
180
+ ...(labelsOf.get(item.messageId)?.flagged === undefined
181
+ ? {}
182
+ : { flagged: labelsOf.get(item.messageId)?.flagged ?? null }),
183
+ attachments: files,
184
+ },
185
+ ],
118
186
  });
187
+ saved++;
119
188
  }
120
- await store.mail.saveThread({
121
- accountId,
122
- externalId: item.threadId,
123
- now: startedAt,
124
- emails: [
125
- {
126
- externalId: item.messageId,
127
- subject: mail.subject,
128
- from: mail.from === null ? null : addressOf(mail.from),
129
- to: mail.to.map(addressOf),
130
- cc: mail.cc.map(addressOf),
131
- bcc: mail.bcc.map(addressOf),
132
- sentAt: null,
133
- receivedAt: Date.parse(item.receivedAt),
134
- bodyText: mail.text || null,
135
- outgoing: mail.from === null ? null : mail.from.email === key.account,
136
- mailboxes: [
137
- ...[...(foundFolders.get(item.messageId) ?? [])].map(mailbox),
138
- ...(labelsOf.get(item.messageId)?.labels ?? []).map(label),
139
- ],
140
- ...(labelsOf.get(item.messageId)?.seen === undefined
141
- ? {}
142
- : { read: labelsOf.get(item.messageId)?.seen ?? null }),
143
- ...(labelsOf.get(item.messageId)?.flagged === undefined
144
- ? {}
145
- : { flagged: labelsOf.get(item.messageId)?.flagged ?? null }),
146
- attachments: files,
147
- },
148
- ],
149
- });
150
- saved++;
151
189
  }
152
190
  // Read and starred change at the source after import; mail saved in this run already holds them.
153
- await store.mail.setFlags(accountId, new Map([...labelsOf].flatMap(([id, { seen, flagged }]) => seen === undefined && flagged === undefined
154
- ? []
155
- : [[id, { ...(seen === undefined ? {} : { read: seen }), ...(flagged === undefined ? {} : { flagged }) }]])), startedAt);
156
- const complete = listed.length - alreadyStored - saved === 0;
157
- await store.setSyncState(key, "mail_folder_scope", scope);
191
+ if (!snapshot)
192
+ await store.mail.setFlags(accountId, new Map([...labelsOf].flatMap(([id, { seen, flagged }]) => seen === undefined && flagged === undefined
193
+ ? []
194
+ : [[id, { ...(seen === undefined ? {} : { read: seen }), ...(flagged === undefined ? {} : { flagged }) }]])), startedAt);
195
+ const complete = listed.length - alreadyStored - ruledOut - saved === 0;
196
+ if (!snapshot)
197
+ await store.setSyncState(key, "mail_folder_scope", scope);
158
198
  const embedding = { embed: embed && account.embed !== false, ...(env === undefined ? {} : { env }) };
159
199
  // Chats an earlier import saved as messages may still wait for vectors; the mail tables have their own.
160
200
  const older = await indexThreads(store, key, [], embedding);
@@ -172,18 +212,21 @@ export const importMail = async ({ store, run, account, since, max = 200, maxBod
172
212
  state: complete ? "window" : "partial",
173
213
  identity: account.mode === "imap" ? "message-id-or-uidvalidity-folder-uid" : "gmail-message-id",
174
214
  };
175
- await store.setSyncState(key, "mail_coverage", JSON.stringify(coverage));
215
+ if (!snapshot)
216
+ await store.setSyncState(key, "mail_coverage", JSON.stringify(coverage));
176
217
  return {
177
218
  account: key.account,
178
219
  since: since.toISOString(),
179
220
  listed: listed.length,
180
221
  saved,
181
222
  alreadyStored,
223
+ skipped: ruledOut,
182
224
  deleted,
183
225
  complete,
184
226
  indexed,
185
227
  coverage,
186
228
  ...(attachments.length ? { attachments } : {}),
229
+ ...(unreadable.length ? { unreadable } : {}),
187
230
  ...(skipped === undefined ? {} : { deletionsSkipped: skipped }),
188
231
  };
189
232
  };
@@ -1 +1 @@
1
- {"version":3,"file":"import.js","sourceRoot":"","sources":["../../src/mail/import.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"import.js","sourceRoot":"","sources":["../../src/mail/import.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,9 @@
1
+ import type { MailSource } from "./source.js";
2
+ /**
3
+ * A Google Takeout mbox of Gmail: the same message and thread ids IMAP reports, so its emails and the
4
+ * account's IMAP emails are one set. Spam and Trash are left out, as IMAP's All Mail leaves them out.
5
+ */
6
+ export declare const mboxSource: (path: string, { chunkSize }?: {
7
+ chunkSize?: number;
8
+ }) => MailSource;
9
+ //# sourceMappingURL=mbox.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"mbox.d.ts","sourceRoot":"","sources":["../../src/mail/mbox.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,aAAa,CAAA;AA+L7C;;;GAGG;AACH,eAAO,MAAM,UAAU,SAAU,MAAM,kBAA+B;IAAE,SAAS,CAAC,EAAE,MAAM,CAAA;CAAE,KAAQ,UAqCnG,CAAA"}