@wirecat/cli-memo 0.24.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 (178) hide show
  1. package/dist/actions/actions.d.ts +1 -1
  2. package/dist/actions/actions.d.ts.map +1 -1
  3. package/dist/actions/command.js +2 -2
  4. package/dist/actions/command.js.map +1 -1
  5. package/dist/answers/command.d.ts +1 -1
  6. package/dist/answers/command.d.ts.map +1 -1
  7. package/dist/answers/command.js +2 -2
  8. package/dist/answers/command.js.map +1 -1
  9. package/dist/author.d.ts +1 -1
  10. package/dist/author.d.ts.map +1 -1
  11. package/dist/bin/memo.js +2 -2
  12. package/dist/bin/memo.js.map +1 -1
  13. package/dist/config.d.ts +14 -1
  14. package/dist/config.d.ts.map +1 -1
  15. package/dist/config.js +14 -1
  16. package/dist/config.js.map +1 -1
  17. package/dist/context/command.js +1 -1
  18. package/dist/context/command.js.map +1 -1
  19. package/dist/context/context.d.ts +3 -3
  20. package/dist/context/context.d.ts.map +1 -1
  21. package/dist/context/context.js +2 -2
  22. package/dist/context/context.js.map +1 -1
  23. package/dist/discovery/command.d.ts +1 -1
  24. package/dist/discovery/command.js +2 -2
  25. package/dist/discovery/command.js.map +1 -1
  26. package/dist/examples.d.ts.map +1 -1
  27. package/dist/examples.js +7 -0
  28. package/dist/examples.js.map +1 -1
  29. package/dist/facts/command.js +1 -1
  30. package/dist/facts/command.js.map +1 -1
  31. package/dist/knowledge/command.js +1 -1
  32. package/dist/knowledge/command.js.map +1 -1
  33. package/dist/knowledge/key-documents.d.ts +1 -1
  34. package/dist/knowledge/key-documents.d.ts.map +1 -1
  35. package/dist/knowledge/key-documents.js +1 -1
  36. package/dist/knowledge/key-documents.js.map +1 -1
  37. package/dist/mail/accounts.d.ts +11 -0
  38. package/dist/mail/accounts.d.ts.map +1 -0
  39. package/dist/mail/accounts.js +26 -0
  40. package/dist/mail/accounts.js.map +1 -0
  41. package/dist/mail/command.d.ts +4 -0
  42. package/dist/mail/command.d.ts.map +1 -0
  43. package/dist/mail/command.js +139 -0
  44. package/dist/mail/command.js.map +1 -0
  45. package/dist/mail/gmail.d.ts +7 -2
  46. package/dist/mail/gmail.d.ts.map +1 -1
  47. package/dist/mail/gmail.js +76 -37
  48. package/dist/mail/gmail.js.map +1 -1
  49. package/dist/mail/headers.d.ts +17 -0
  50. package/dist/mail/headers.d.ts.map +1 -0
  51. package/dist/mail/headers.js +28 -0
  52. package/dist/mail/headers.js.map +1 -0
  53. package/dist/mail/himalaya.d.ts +3 -1
  54. package/dist/mail/himalaya.d.ts.map +1 -1
  55. package/dist/mail/himalaya.js +2 -2
  56. package/dist/mail/himalaya.js.map +1 -1
  57. package/dist/mail/import.d.ts +15 -6
  58. package/dist/mail/import.d.ts.map +1 -1
  59. package/dist/mail/import.js +130 -87
  60. package/dist/mail/import.js.map +1 -1
  61. package/dist/mail/mbox.d.ts +9 -0
  62. package/dist/mail/mbox.d.ts.map +1 -0
  63. package/dist/mail/mbox.js +218 -0
  64. package/dist/mail/mbox.js.map +1 -0
  65. package/dist/mail/messages-command.js +3 -3
  66. package/dist/mail/messages-command.js.map +1 -1
  67. package/dist/mail/parse.d.ts +2 -2
  68. package/dist/mail/parse.d.ts.map +1 -1
  69. package/dist/mail/parse.js +27 -63
  70. package/dist/mail/parse.js.map +1 -1
  71. package/dist/mail/probe.d.ts +31 -0
  72. package/dist/mail/probe.d.ts.map +1 -0
  73. package/dist/mail/probe.js +55 -0
  74. package/dist/mail/probe.js.map +1 -0
  75. package/dist/mail/rules.d.ts +18 -0
  76. package/dist/mail/rules.d.ts.map +1 -0
  77. package/dist/mail/rules.js +26 -0
  78. package/dist/mail/rules.js.map +1 -0
  79. package/dist/mail/source.d.ts +20 -0
  80. package/dist/mail/source.d.ts.map +1 -0
  81. package/dist/mail/source.js +99 -0
  82. package/dist/mail/source.js.map +1 -0
  83. package/dist/mcp/knowledge.js +1 -1
  84. package/dist/mcp/knowledge.js.map +1 -1
  85. package/dist/mcp/server.js +2 -2
  86. package/dist/mcp/server.js.map +1 -1
  87. package/dist/mcp/tool.d.ts +1 -1
  88. package/dist/mcp/tool.d.ts.map +1 -1
  89. package/dist/memories/command.js +1 -1
  90. package/dist/memories/command.js.map +1 -1
  91. package/dist/memories/memories.d.ts +1 -1
  92. package/dist/memories/memories.d.ts.map +1 -1
  93. package/dist/notes/about.d.ts +1 -1
  94. package/dist/notes/about.d.ts.map +1 -1
  95. package/dist/notes/about.js +1 -1
  96. package/dist/notes/about.js.map +1 -1
  97. package/dist/notes/bound.d.ts +1 -1
  98. package/dist/notes/bound.d.ts.map +1 -1
  99. package/dist/notes/command.js +1 -1
  100. package/dist/notes/command.js.map +1 -1
  101. package/dist/notes/embed.d.ts +1 -1
  102. package/dist/notes/embed.d.ts.map +1 -1
  103. package/dist/notes/embed.js +1 -1
  104. package/dist/notes/embed.js.map +1 -1
  105. package/dist/notes/folders-command.js +1 -1
  106. package/dist/notes/folders-command.js.map +1 -1
  107. package/dist/notes/import.d.ts +2 -2
  108. package/dist/notes/import.d.ts.map +1 -1
  109. package/dist/notes/import.js +2 -2
  110. package/dist/notes/import.js.map +1 -1
  111. package/dist/notes/internal.d.ts +1 -1
  112. package/dist/notes/internal.d.ts.map +1 -1
  113. package/dist/notes/links.d.ts +1 -1
  114. package/dist/notes/links.d.ts.map +1 -1
  115. package/dist/notes/list.d.ts +1 -1
  116. package/dist/notes/list.d.ts.map +1 -1
  117. package/dist/notes/search.d.ts +3 -3
  118. package/dist/notes/search.d.ts.map +1 -1
  119. package/dist/notes/search.js +1 -1
  120. package/dist/notes/search.js.map +1 -1
  121. package/dist/people/command.js +1 -1
  122. package/dist/people/command.js.map +1 -1
  123. package/dist/people/identity.d.ts +1 -1
  124. package/dist/people/identity.d.ts.map +1 -1
  125. package/dist/people/identity.js +1 -1
  126. package/dist/people/identity.js.map +1 -1
  127. package/dist/people/notes-map.d.ts +1 -1
  128. package/dist/people/notes-map.d.ts.map +1 -1
  129. package/dist/people/subject.d.ts +1 -1
  130. package/dist/people/subject.d.ts.map +1 -1
  131. package/dist/people/subject.js +1 -1
  132. package/dist/people/subject.js.map +1 -1
  133. package/dist/program.d.ts.map +1 -1
  134. package/dist/program.js +2 -0
  135. package/dist/program.js.map +1 -1
  136. package/dist/records/run.d.ts +1 -1
  137. package/dist/records/run.d.ts.map +1 -1
  138. package/dist/records/run.js +1 -1
  139. package/dist/records/run.js.map +1 -1
  140. package/dist/run/import.d.ts.map +1 -1
  141. package/dist/run/import.js +21 -17
  142. package/dist/run/import.js.map +1 -1
  143. package/dist/run/lock.js +1 -1
  144. package/dist/run/lock.js.map +1 -1
  145. package/dist/search/command.d.ts +2 -2
  146. package/dist/search/command.d.ts.map +1 -1
  147. package/dist/search/command.js +5 -4
  148. package/dist/search/command.js.map +1 -1
  149. package/dist/store/gone.d.ts +1 -1
  150. package/dist/store/gone.d.ts.map +1 -1
  151. package/dist/store/held.d.ts +1 -1
  152. package/dist/store/held.d.ts.map +1 -1
  153. package/dist/store/scope.d.ts +1 -1
  154. package/dist/store/scope.d.ts.map +1 -1
  155. package/dist/store/scope.js +1 -1
  156. package/dist/store/scope.js.map +1 -1
  157. package/dist/store/source-target.d.ts +1 -1
  158. package/dist/store/source-target.d.ts.map +1 -1
  159. package/dist/store/source-target.js +1 -1
  160. package/dist/store/source-target.js.map +1 -1
  161. package/dist/tags/command.js +2 -2
  162. package/dist/tags/command.js.map +1 -1
  163. package/dist/tasks/command.js +3 -3
  164. package/dist/tasks/command.js.map +1 -1
  165. package/dist/tasks/context.d.ts +2 -2
  166. package/dist/tasks/context.d.ts.map +1 -1
  167. package/dist/tasks/context.js +2 -2
  168. package/dist/tasks/context.js.map +1 -1
  169. package/dist/tasks/relations-command.js +1 -1
  170. package/dist/tasks/relations-command.js.map +1 -1
  171. package/dist/version.d.ts +1 -1
  172. package/dist/version.js +1 -1
  173. package/dist/vocabulary/command.js +1 -1
  174. package/dist/vocabulary/command.js.map +1 -1
  175. package/dist/vocabulary/project.d.ts +1 -1
  176. package/dist/vocabulary/project.d.ts.map +1 -1
  177. package/package.json +4 -3
  178. package/skills/cli-memo/SKILL.md +11 -0
@@ -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":"AAAA,OAAO,EAAE,WAAW,EAAE,YAAY,EAAmB,MAAM,kCAAkC,CAAA;AAE7F,OAAO,EAAE,YAAY,EAAE,eAAe,EAAsB,MAAM,mBAAmB,CAAA;AACrF,OAAO,EAAE,WAAW,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAA;AAC3D,OAAO,EAAE,WAAW,EAAE,YAAY,EAAE,MAAM,YAAY,CAAA;AAEtD,OAAO,EAAgB,cAAc,EAAE,SAAS,EAAE,MAAM,YAAY,CAAA;AA4BpE,MAAM,GAAG,GAAG,UAAU,CAAA;AACtB,uGAAuG;AACvG,MAAM,IAAI,GAAG,CAAC,GAAG,GAAG,CAAA;AACpB,MAAM,CAAC,MAAM,oBAAoB,GAAG,OAAO,CAAA;AAE3C,MAAM,SAAS,GAAG,CAAC,EAAE,KAAK,EAAE,IAAI,EAAW,EAAgB,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAA;AAExF,MAAM,CAAC,MAAM,UAAU,GAAG,KAAK,EAAE,EAC/B,KAAK,EACL,GAAG,EACH,OAAO,EACP,KAAK,EACL,GAAG,GAAG,GAAG,EACT,YAAY,GAAG,cAAc,EAC7B,kBAAkB,GAAG,oBAAoB,EACzC,GAAG,GAAG,IAAI,CAAC,GAAG,EACd,GAAG,EACH,KAAK,GAAG,KAAK,EACb,UAAU,GAAG,YAAY,EACzB,gBAAgB,GAAG,KAAK,EACxB,YAAY,GAAG,YAAY,EAC3B,SAAS,GAAG,eAAe,GAgB5B,EAAyB,EAAE;IAC1B,MAAM,SAAS,GAAG,GAAG,EAAE,CAAA;IACvB,MAAM,GAAG,GAAe,EAAE,QAAQ,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,CAAC,OAAO,CAAC,WAAW,EAAE,EAAE,CAAA;IACrF,MAAM,SAAS,GAAG,MAAM,KAAK,CAAC,WAAW,CAAC,GAAG,EAAE,EAAE,IAAI,EAAE,OAAO,CAAC,OAAO,EAAE,CAAC,CAAA;IAEzE,MAAM,OAAO,GAAG,OAAO,CAAC,OAAO,IAAI,CAAC,OAAO,CAAC,IAAI,KAAK,MAAM,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,kBAAkB,CAAC,CAAA;IAC3F,IAAI,OAAO,CAAC,MAAM,GAAG,CAAC,IAAI,OAAO,CAAC,MAAM,GAAG,EAAE;QAAE,MAAM,IAAI,KAAK,CAAC,0BAA0B,CAAC,CAAA;IAC1F,MAAM,SAAS,GAAG,EAAE,CAAA;IACpB,KAAK,MAAM,MAAM,IAAI,OAAO;QAC1B,SAAS,CAAC,IAAI,CACZ,GAAG,CAAC,OAAO,CAAC,IAAI,KAAK,MAAM;YACzB,CAAC,CAAC,MAAM,YAAY,CAAC,GAAG,EAAE,OAAO,CAAC,IAAI,EAAE,KAAK,EAAE,MAAM,CAAC;YACtD,CAAC,CAAC,CAAC,MAAM,WAAW,CAAC,GAAG,EAAE,OAAO,CAAC,IAAI,EAAE,KAAK,EAAE,MAAM,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC;gBACnE,GAAG,IAAI;gBACP,MAAM,EAAE,MAAM,KAAK,kBAAkB,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,MAAM;gBAC1D,WAAW,EAAE,MAAM;aACpB,CAAC,CAAC,CAAC,CACT,CAAA;IACH,MAAM,MAAM,GAAG,CAAC,GAAG,IAAI,GAAG,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,IAAI,CAAC,SAAS,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAClG,CAAC,CAAC,UAAU,CAAC,aAAa,CAAC,CAAC,CAAC,UAAU,CAAC,CACzC,CAAA;IACD,MAAM,OAAO,GAAG,IAAI,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,EAAE,SAAS,EAAE,EAAE,EAAE,CAAC,SAAS,CAAC,CAAC,CAAA;IACjE,MAAM,YAAY,GAAG,IAAI,GAAG,EAAuB,CAAA;IACnD,KAAK,MAAM,IAAI,IAAI,SAAS,EAAE,CAAC;QAC7B,MAAM,OAAO,GAAG,YAAY,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,IAAI,GAAG,EAAU,CAAA;QACrE,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,WAAW,IAAI,IAAI,CAAC,MAAM,IAAK,OAAO,CAAC,CAAC,CAAY,CAAC,CAAA;QACtE,YAAY,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,EAAE,OAAO,CAAC,CAAA;IAC3C,CAAC;IACD,MAAM,OAAO,GAAG,CAAC,MAAc,EAAE,EAAE,CAAC,CAAC,EAAE,UAAU,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC,CAAA;IACtF,MAAM,KAAK,GAAG,CAAC,IAAY,EAAE,EAAE,CAAC,CAAC,EAAE,UAAU,EAAE,SAAS,IAAI,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,OAAO,EAAE,CAAC,CAAA;IACtF,MAAM,QAAQ,GAAG,IAAI,GAAG,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,IAAI,CAAC,MAAM,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,SAAS,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAA;IAClH,MAAM,WAAW,GAAG,OAAO,CAAC,IAAI,KAAK,MAAM,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC,IAAI,OAAO,CAAC,CAAC,CAAC,KAAK,kBAAkB,CAAA;IAExG,wFAAwF;IACxF,MAAM,KAAK,GAAG,IAAI,CAAC,SAAS,CAAC,EAAE,IAAI,EAAE,OAAO,CAAC,IAAI,IAAI,OAAO,EAAE,OAAO,EAAE,CAAC,GAAG,OAAO,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,CAAA;IAC7F,MAAM,aAAa,GAAG,MAAM,KAAK,CAAC,SAAS,CAAC,GAAG,EAAE,mBAAmB,CAAC,CAAA;IACrE,MAAM,WAAW,GAAG,IAAI,IAAI,CAAC,KAAK,CAAC,OAAO,EAAE,GAAG,IAAI,CAAC,CAAA;IACpD,IAAI,OAAO,GAAG,CAAC,CAAA;IACf,IAAI,OAA2B,CAAA;IAC/B,IAAI,aAAa,KAAK,SAAS,IAAI,aAAa,CAAC,KAAK,KAAK,KAAK;QAC9D,OAAO,GAAG,0DAA0D,CAAA;SACjE,CAAC;QACJ,0FAA0F;QAC1F,MAAM,UAAU,GAAG,CAAC,MAAM,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,SAAS,EAAE,KAAK,EAAE,WAAW,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,CAC9F,CAAC,EAAE,SAAS,EAAE,EAAE,EAAE;YAChB,MAAM,SAAS,GAAG,SAAS,CAAC,MAAM,CAAC,CAAC,EAAE,IAAI,EAAE,EAAE,EAAE,CAAC,IAAI,KAAK,OAAO,CAAC,CAAA;YAClE,OAAO,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,EAAE,UAAU,EAAE,EAAE,EAAE,CAAC,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC,WAAW,CAAA;QAC3G,CAAC,CACF,CAAA;QACD,MAAM,IAAI,GAAG,UAAU,CAAC,MAAM,CAAC,CAAC,EAAE,UAAU,EAAE,EAAE,EAAE,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,UAAU,EAAE,EAAE,EAAE,CAAC,UAAU,CAAC,CAAA;QAChH,OAAO,GAAG,WAAW,CAAC,IAAI,CAAC,MAAM,EAAE,UAAU,CAAC,MAAM,CAAC,CAAA;QACrD,IAAI,CAAC,OAAO,IAAI,IAAI,CAAC,MAAM;YAAE,OAAO,GAAG,MAAM,KAAK,CAAC,IAAI,CAAC,WAAW,CAAC,SAAS,EAAE,IAAI,EAAE,SAAS,CAAC,CAAA;QAC/F,2GAA2G;QAC3G,MAAM,KAAK,GAAG,MAAM,WAAW,CAC7B,KAAK,EACL,GAAG,EACH,EAAE,GAAG,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,OAAO,CAAC,kBAAkB,EAAE,EAAE,CAAC,CAAC,EAAE,EAChE,WAAW,CAAC,WAAW,EAAE,EACzB,KAAK,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE;YACf,MAAM,UAAU,GAAG,MAAM,KAAK,CAAC,SAAS,CAAC,GAAG,EAAE,wBAAwB,EAAE,CAAC,OAAO,CAAC,kBAAkB,EAAE,EAAE,CAAC,EAAE,CAAC,CAAA;YAC3G,IAAI,UAAU,KAAK,SAAS;gBAAE,OAAO,WAAW,CAAA;YAChD,OAAQ,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,KAAK,CAAc,CAAC,KAAK,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAA;QAC/F,CAAC,CACF,CAAA;QACD,OAAO,IAAI,KAAK,CAAC,OAAO,CAAA;QACxB,OAAO,KAAK,KAAK,CAAC,OAAO,CAAA;IAC3B,CAAC;IACD,MAAM,KAAK,CAAC,IAAI,CAAC,YAAY,CAC3B,SAAS,EACT,OAAO,CAAC,GAAG,CAAC,OAAO,CAAC,EACpB,IAAI,GAAG,CAAC,CAAC,GAAG,YAAY,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,KAAK,CAAC,EAAE,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC,EACjE,SAAS,CACV,CAAA;IACD,qGAAqG;IACrG,IAAI,QAAQ,CAAC,IAAI,EAAE,CAAC;QAClB,MAAM,KAAK,GAAG,CAAC,MAAM,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,SAAS,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,EAAE,IAAI,EAAE,EAAE,EAAE,CAAC,IAAI,KAAK,OAAO,CAAC,CAAA;QAC5F,MAAM,IAAI,GAAG,CAAC,GAAG,QAAQ,CAAC,MAAM,EAAE,CAAC,CAAC,OAAO,CAAC,CAAC,EAAE,MAAM,EAAE,EAAE,EAAE,CAAC,MAAM,IAAI,EAAE,CAAC,CAAA;QACzE,MAAM,OAAO,GAAG,IAAI,GAAG,CAAC;YACtB,GAAG,KAAK,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,EAAE,EAAE,EAAE,CAAC,CAAC,IAAI,EAAE,KAAK,CAAC,IAAI,CAAC,CAAU,CAAC;YACxD,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,IAAI,EAAE,KAAK,CAAC,IAAI,CAAC,CAAU,CAAC;SACpD,CAAC,CAAA;QACF,MAAM,KAAK,CAAC,IAAI,CAAC,YAAY,CAC3B,SAAS,EACT,CAAC,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC,EACrB,IAAI,GAAG,CAAC,CAAC,GAAG,QAAQ,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,EAAE,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,MAAM,IAAI,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,EAC5G,SAAS,CACV,CAAA;IACH,CAAC;IAED,MAAM,WAAW,GAA6C,EAAE,CAAA;IAChE,IAAI,KAAK,GAAG,CAAC,CAAA;IACb,IAAI,aAAa,GAAG,CAAC,CAAA;IACrB,IAAI,IAAI,GAAG,CAAC,CAAA;IACZ,KAAK,MAAM,IAAI,IAAI,MAAM,EAAE,CAAC;QAC1B,IAAI,CAAC,gBAAgB,IAAI,CAAC,MAAM,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,SAAS,EAAE,IAAI,CAAC,SAAS,CAAC,CAAC,KAAK,IAAI,EAAE,CAAC;YACtF,aAAa,EAAE,CAAA;YACf,SAAQ;QACV,CAAC;QACD,IAAI,IAAI,IAAI,GAAG;YAAE,MAAK;QACtB,IAAI,EAAE,CAAA;QACN,MAAM,IAAI,GAAG,SAAS,CACpB,MAAM,GAAG,CAAC,CAAC,QAAQ,EAAE,SAAS,EAAE,MAAM,EAAE,IAAI,EAAE,OAAO,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,MAAM,IAAI,SAAS,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,EACtG,YAAY,CACb,CAAA;QACD,MAAM,KAAK,GAAsB,EAAE,CAAA;QACnC,KAAK,MAAM,CAAC,QAAQ,EAAE,IAAI,CAAC,IAAI,IAAI,CAAC,WAAW,CAAC,OAAO,EAAE,EAAE,CAAC;YAC1D,MAAM,UAAU,GACd,IAAI,CAAC,KAAK,KAAK,IAAI;gBACjB,CAAC,CAAC,EAAE,MAAM,EAAE,aAAsB,EAAE;gBACpC,CAAC,CAAC,MAAM,WAAW,CACf,IAAI,CAAC,KAAK,EACV,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE,EACnE,UAAU,CACX,CAAA;YACP,WAAW,CAAC,IAAI,CAAC,EAAE,OAAO,EAAE,IAAI,CAAC,SAAS,EAAE,IAAI,EAAE,IAAI,CAAC,EAAE,EAAE,MAAM,EAAE,UAAU,CAAC,MAAM,EAAE,CAAC,CAAA;YACvF,MAAM,SAAS,GAAG,UAAU,CAAC,MAAM,KAAK,WAAW,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,SAAS,CAAA;YAC5E,KAAK,CAAC,IAAI,CAAC;gBACT,QAAQ;gBACR,IAAI,EAAE,MAAM;gBACZ,IAAI,EAAE,IAAI,CAAC,IAAI;gBACf,IAAI,EAAE,IAAI,CAAC,IAAI;gBACf,KAAK,EAAE,IAAI;gBACX,GAAG,EAAE,IAAI;gBACT,IAAI,EAAE,IAAI,CAAC,KAAK,KAAK,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,UAAU;gBACxD,KAAK,EAAE,IAAI;gBACX,MAAM,EAAE,IAAI;gBACZ,QAAQ,EAAE,IAAI;gBACd,WAAW,EAAE,EAAE,OAAO,EAAE,IAAI,CAAC,SAAS,EAAE,IAAI,EAAE,IAAI,CAAC,EAAE,EAAE;gBACvD,SAAS,EAAE,IAAI;gBACf,IAAI,EAAE,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,kBAAkB,CAAC,CAAC,CAAC,CAAC,IAAI;gBACpE,cAAc,EAAE,IAAI;gBACpB,UAAU,EAAE,SAAS,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,QAAQ;gBACzC,SAAS,EAAE,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI;gBACjD,eAAe,EAAE,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,UAAU,CAAC,MAAM;gBACrD,aAAa,EAAE,IAAI;gBACnB,WAAW,EAAE,SAAS;aACvB,CAAC,CAAA;QACJ,CAAC;QACD,MAAM,KAAK,CAAC,IAAI,CAAC,UAAU,CAAC;YAC1B,SAAS;YACT,UAAU,EAAE,IAAI,CAAC,QAAQ;YACzB,GAAG,EAAE,SAAS;YACd,MAAM,EAAE;gBACN;oBACE,UAAU,EAAE,IAAI,CAAC,SAAS;oBAC1B,OAAO,EAAE,IAAI,CAAC,OAAO;oBACrB,IAAI,EAAE,IAAI,CAAC,IAAI,KAAK,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC;oBACtD,EAAE,EAAE,IAAI,CAAC,EAAE,CAAC,GAAG,CAAC,SAAS,CAAC;oBAC1B,EAAE,EAAE,IAAI,CAAC,EAAE,CAAC,GAAG,CAAC,SAAS,CAAC;oBAC1B,GAAG,EAAE,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,SAAS,CAAC;oBAC5B,MAAM,EAAE,IAAI;oBACZ,UAAU,EAAE,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,UAAU,CAAC;oBACvC,QAAQ,EAAE,IAAI,CAAC,IAAI,IAAI,IAAI;oBAC3B,QAAQ,EAAE,IAAI,CAAC,IAAI,KAAK,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,KAAK,GAAG,CAAC,OAAO;oBACrE,SAAS,EAAE;wBACT,GAAG,CAAC,GAAG,CAAC,YAAY,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC;wBAC7D,GAAG,CAAC,QAAQ,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE,MAAM,IAAI,EAAE,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC;qBAC3D;oBACD,GAAG,CAAC,QAAQ,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE,IAAI,KAAK,SAAS;wBAClD,CAAC,CAAC,EAAE;wBACJ,CAAC,CAAC,EAAE,IAAI,EAAE,QAAQ,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE,IAAI,IAAI,IAAI,EAAE,CAAC;oBACzD,GAAG,CAAC,QAAQ,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE,OAAO,KAAK,SAAS;wBACrD,CAAC,CAAC,EAAE;wBACJ,CAAC,CAAC,EAAE,OAAO,EAAE,QAAQ,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE,OAAO,IAAI,IAAI,EAAE,CAAC;oBAC/D,WAAW,EAAE,KAAK;iBACnB;aACF;SACF,CAAC,CAAA;QACF,KAAK,EAAE,CAAA;IACT,CAAC;IAED,iGAAiG;IACjG,MAAM,KAAK,CAAC,IAAI,CAAC,QAAQ,CACvB,SAAS,EACT,IAAI,GAAG,CACL,CAAC,GAAG,QAAQ,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,EAAE,EAAE,IAAI,EAAE,OAAO,EAAE,CAAC,EAAE,EAAE,CAChD,IAAI,KAAK,SAAS,IAAI,OAAO,KAAK,SAAS;QACzC,CAAC,CAAC,EAAE;QACJ,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,IAAI,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC,EAAE,GAAG,CAAC,OAAO,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC,CAC7G,CACF,EACD,SAAS,CACV,CAAA;IAED,MAAM,QAAQ,GAAG,MAAM,CAAC,MAAM,GAAG,aAAa,GAAG,KAAK,KAAK,CAAC,CAAA;IAC5D,MAAM,KAAK,CAAC,YAAY,CAAC,GAAG,EAAE,mBAAmB,EAAE,KAAK,CAAC,CAAA;IACzD,MAAM,SAAS,GAAG,EAAE,KAAK,EAAE,KAAK,IAAI,OAAO,CAAC,KAAK,KAAK,KAAK,EAAE,GAAG,CAAC,GAAG,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,GAAG,EAAE,CAAC,EAAE,CAAA;IACpG,wGAAwG;IACxG,MAAM,KAAK,GAAG,MAAM,YAAY,CAAC,KAAK,EAAE,GAAG,EAAE,EAAE,EAAE,SAAS,CAAC,CAAA;IAC3D,MAAM,IAAI,GAAG,MAAM,SAAS,CAAC,KAAK,EAAE,SAAS,CAAC,CAAA;IAC9C,MAAM,OAAO,GAAkB;QAC7B,GAAG,KAAK;QACR,MAAM,EAAE,KAAK,CAAC,MAAM,GAAG,IAAI,CAAC,MAAM;QAClC,IAAI,EAAE,KAAK,CAAC,IAAI,IAAI,IAAI,CAAC,IAAI;QAC7B,GAAG,CAAC,IAAI,CAAC,WAAW,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,WAAW,EAAE,IAAI,CAAC,WAAW,EAAE,CAAC;KAC7E,CAAA;IACD,MAAM,QAAQ,GAAG;QACf,OAAO;QACP,KAAK,EAAE,KAAK,CAAC,WAAW,EAAE;QAC1B,KAAK,EAAE,IAAI,IAAI,CAAC,SAAS,CAAC,CAAC,WAAW,EAAE;QACxC,KAAK,EAAE,QAAQ,CAAC,CAAC,CAAE,QAAkB,CAAC,CAAC,CAAE,SAAmB;QAC5D,QAAQ,EAAE,OAAO,CAAC,IAAI,KAAK,MAAM,CAAC,CAAC,CAAC,sCAAsC,CAAC,CAAC,CAAC,kBAAkB;KAChG,CAAA;IACD,MAAM,KAAK,CAAC,YAAY,CAAC,GAAG,EAAE,eAAe,EAAE,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAC,CAAA;IACxE,OAAO;QACL,OAAO,EAAE,GAAG,CAAC,OAAO;QACpB,KAAK,EAAE,KAAK,CAAC,WAAW,EAAE;QAC1B,MAAM,EAAE,MAAM,CAAC,MAAM;QACrB,KAAK;QACL,aAAa;QACb,OAAO;QACP,QAAQ;QACR,OAAO;QACP,QAAQ;QACR,GAAG,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,WAAW,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QAC9C,GAAG,CAAC,OAAO,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,gBAAgB,EAAE,OAAO,EAAE,CAAC;KAChE,CAAA;AACH,CAAC,CAAA"}
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"}
@@ -0,0 +1,218 @@
1
+ import { createReadStream } from "node:fs";
2
+ import { open } from "node:fs/promises";
3
+ import { CliError } from "@wirecat/cli-base";
4
+ import { systemLabel } from "./gmail.js";
5
+ import { field, headersOf, unfold } from "./headers.js";
6
+ const NEWLINE = 10;
7
+ const CR = 13;
8
+ const SEPARATOR = Buffer.from("\nFrom ");
9
+ const MAX_HEADER = 256 * 1024;
10
+ const MONTHS = ["Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sep", "Oct", "Nov", "Dec"];
11
+ /** Takeout's own marks, not labels the owner gave: read state and "not in Inbox". */
12
+ const PSEUDO_LABELS = new Set(["Opened", "Unread", "Archived"]);
13
+ /** `Mon Jul 24 10:00:00 +0000 2023`: asctime, with the zone Takeout writes. */
14
+ const separatorDate = (rest) => {
15
+ const match = /(\w{3}) +(\d{1,2}) (\d{2}):(\d{2}):(\d{2})(?: ([+-])(\d{2})(\d{2}))? (\d{4})/.exec(rest);
16
+ if (match === null)
17
+ return undefined;
18
+ const [, month = "", day, hour, minute, second, sign, offsetHours, offsetMinutes, year] = match;
19
+ if (!MONTHS.includes(month))
20
+ return undefined;
21
+ const local = Date.UTC(Number(year), MONTHS.indexOf(month), Number(day), Number(hour), Number(minute), Number(second));
22
+ const offset = sign === undefined ? 0 : (Number(offsetHours) * 60 + Number(offsetMinutes)) * 60_000;
23
+ return local - (sign === "-" ? -offset : offset);
24
+ };
25
+ /** RFC 2047 encoded words, which Takeout uses for labels outside ASCII. */
26
+ const decodeWords = (text) => text
27
+ .replace(/(\?=)\s+(=\?)/g, "$1$2")
28
+ .replace(/=\?([^?]+)\?([bBqQ])\?([^?]*)\?=/g, (_, charset, encoding, data) => {
29
+ const bytes = encoding.toUpperCase() === "B"
30
+ ? Buffer.from(data, "base64")
31
+ : Buffer.from(data
32
+ .replace(/_/g, " ")
33
+ .replace(/=([0-9A-Fa-f]{2})/g, (_hex, hex) => String.fromCharCode(parseInt(hex, 16))), "latin1");
34
+ try {
35
+ return new TextDecoder(charset).decode(bytes);
36
+ }
37
+ catch {
38
+ return bytes.toString("utf8");
39
+ }
40
+ });
41
+ const splitLabels = (value) => {
42
+ const labels = [];
43
+ let current = "";
44
+ let quoted = false;
45
+ for (const c of value) {
46
+ if (c === '"')
47
+ quoted = !quoted;
48
+ else if (c === "," && !quoted) {
49
+ labels.push(current);
50
+ current = "";
51
+ }
52
+ else
53
+ current += c;
54
+ }
55
+ labels.push(current);
56
+ return labels.map((label) => label.trim()).filter(Boolean);
57
+ };
58
+ const entryOf = (separator, header, start, body) => {
59
+ const [, sender = "", rest = ""] = /^From (\S+) ?(.*)$/.exec(separator) ?? [];
60
+ const messageId = /^(\d+)@/.exec(sender)?.[1];
61
+ // The id is what joins this archive to the IMAP account; never invented, so a wrong guess fails here.
62
+ if (messageId === undefined)
63
+ throw new CliError("invalid_response", `the mbox email at byte ${start} has no Gmail message id: its "From " line should read "From <digits>@xxx <date>"`);
64
+ const unfolded = unfold(header);
65
+ const date = separatorDate(rest) ?? Date.parse(field(unfolded, "Date") ?? "");
66
+ if (Number.isNaN(date))
67
+ throw new CliError("invalid_response", `the mbox email at byte ${start} has no readable date`);
68
+ const written = field(unfolded, "X-Gmail-Labels");
69
+ const raw = written === undefined ? undefined : splitLabels(decodeWords(written));
70
+ const labels = raw === undefined ? undefined : [...new Set(raw.filter((name) => !PSEUDO_LABELS.has(name)).map(systemLabel))].sort();
71
+ const seen = raw?.includes("Unread") ? false : raw?.includes("Opened") ? true : undefined;
72
+ const threadId = field(unfolded, "X-GM-THRID")?.trim();
73
+ return {
74
+ item: {
75
+ uid: messageId,
76
+ messageId,
77
+ threadId: threadId || messageId,
78
+ receivedAt: new Date(date).toISOString(),
79
+ ...(labels === undefined ? {} : { labels, flagged: labels.includes("Starred") }),
80
+ ...(seen === undefined ? {} : { seen }),
81
+ headers: headersOf(header),
82
+ },
83
+ start,
84
+ body,
85
+ end: -1,
86
+ };
87
+ };
88
+ /**
89
+ * One pass over the file: a "From " line after a blank line starts an email. Only headers are kept in memory;
90
+ * bodies are skipped with a byte search, so a 20 GB archive costs one read and no more memory than its headers.
91
+ */
92
+ const scan = async (path, chunkSize) => {
93
+ const entries = [];
94
+ let base = 0;
95
+ let pos = 0;
96
+ let bodyFrom = 0;
97
+ let inHeaders = true;
98
+ let separator;
99
+ let start = 0;
100
+ let body = 0;
101
+ let lines = [];
102
+ let headerBytes = 0;
103
+ const take = (buf, eof) => {
104
+ for (;;) {
105
+ if (inHeaders) {
106
+ let nl = buf.indexOf(NEWLINE, pos);
107
+ if (nl === -1) {
108
+ if (!eof || pos >= buf.length)
109
+ return Math.max(0, pos - 2);
110
+ nl = buf.length;
111
+ }
112
+ let line = buf.subarray(pos, nl);
113
+ if (line.at(-1) === CR)
114
+ line = line.subarray(0, -1);
115
+ if (separator === undefined) {
116
+ separator = line.toString("latin1");
117
+ if (!separator.startsWith("From "))
118
+ throw new CliError("validation_error", `${path} is not an mbox file: byte ${base + pos} starts no "From " line`);
119
+ start = base + pos;
120
+ body = base + nl + 1;
121
+ }
122
+ else if (line.length === 0) {
123
+ entries.push(entryOf(separator, Buffer.concat(lines).toString("utf8"), start, body));
124
+ lines = [];
125
+ headerBytes = 0;
126
+ inHeaders = false;
127
+ bodyFrom = nl;
128
+ }
129
+ else if (headerBytes < MAX_HEADER) {
130
+ lines.push(Buffer.from(line), Buffer.from("\n"));
131
+ headerBytes += line.length + 1;
132
+ }
133
+ pos = nl + 1;
134
+ continue;
135
+ }
136
+ const at = buf.indexOf(SEPARATOR, bodyFrom);
137
+ if (at === -1) {
138
+ const next = Math.max(bodyFrom, buf.length - (SEPARATOR.length - 1));
139
+ const keep = Math.max(0, next - 2);
140
+ bodyFrom = next - keep;
141
+ return keep;
142
+ }
143
+ const blank = buf[at - 1] === NEWLINE || (buf[at - 1] === CR && buf[at - 2] === NEWLINE);
144
+ if (!blank) {
145
+ bodyFrom = at + 1;
146
+ continue;
147
+ }
148
+ const last = entries.at(-1);
149
+ if (last)
150
+ last.end = base + at + 1;
151
+ inHeaders = true;
152
+ separator = undefined;
153
+ pos = at + 1;
154
+ }
155
+ };
156
+ let carry = Buffer.alloc(0);
157
+ for await (const chunk of createReadStream(path, { highWaterMark: chunkSize })) {
158
+ const buf = carry.length ? Buffer.concat([carry, chunk]) : chunk;
159
+ const keep = take(buf, false);
160
+ base += keep;
161
+ pos -= keep;
162
+ carry = buf.subarray(keep);
163
+ }
164
+ take(carry, true);
165
+ if (inHeaders && separator !== undefined)
166
+ entries.push(entryOf(separator, Buffer.concat(lines).toString("utf8"), start, body));
167
+ const last = entries.at(-1);
168
+ if (last && last.end === -1)
169
+ last.end = base + carry.length;
170
+ for (const entry of entries)
171
+ entry.item.size = entry.end - entry.start;
172
+ return entries;
173
+ };
174
+ /** The email as Gmail stored it: the blank line mbox adds after it removed, and mboxrd's `>From ` undone. */
175
+ const asStored = (bytes) => {
176
+ const text = bytes.toString("latin1");
177
+ const trimmed = /\r?\n\r?\n$/.test(text) ? text.replace(/\r?\n$/, "") : text;
178
+ return Buffer.from(trimmed.replace(/^>(>*From )/gm, "$1"), "latin1");
179
+ };
180
+ /**
181
+ * A Google Takeout mbox of Gmail: the same message and thread ids IMAP reports, so its emails and the
182
+ * account's IMAP emails are one set. Spam and Trash are left out, as IMAP's All Mail leaves them out.
183
+ */
184
+ export const mboxSource = (path, { chunkSize = 1024 * 1024 } = {}) => {
185
+ let index;
186
+ const indexed = () => {
187
+ index ??= scan(path, chunkSize).then((entries) => new Map(entries.map((entry) => [entry.item.messageId, entry])));
188
+ return index;
189
+ };
190
+ return {
191
+ list: async (since, folder) => [...(await indexed()).values()]
192
+ .filter(({ item }) => Date.parse(item.receivedAt) >= since.getTime() &&
193
+ !item.labels?.some((label) => label === "Spam" || label === "Trash"))
194
+ .map(({ item }) => ({ ...item, folder })),
195
+ fetchRaw: async (items) => {
196
+ const entries = await indexed();
197
+ const handle = await open(path);
198
+ try {
199
+ const read = [];
200
+ for (const item of items) {
201
+ const entry = entries.get(item.messageId);
202
+ if (entry === undefined) {
203
+ read.push(new CliError("not_found", `email ${item.messageId} is not in the mbox file`));
204
+ continue;
205
+ }
206
+ const bytes = Buffer.alloc(entry.end - entry.body);
207
+ await handle.read(bytes, 0, bytes.length, entry.body);
208
+ read.push(asStored(bytes));
209
+ }
210
+ return read;
211
+ }
212
+ finally {
213
+ await handle.close();
214
+ }
215
+ },
216
+ };
217
+ };
218
+ //# sourceMappingURL=mbox.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"mbox.js","sourceRoot":"","sources":["../../src/mail/mbox.ts"],"names":[],"mappings":"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"}
@@ -1,7 +1,7 @@
1
1
  import { CliError } from "@wirecat/cli-base";
2
- import { parseLocator, resolveOutput } from "@wirecat/cli-messaging";
3
- import { readMail } from "@wirecat/cli-messaging/services";
4
- import { openStore } from "@wirecat/cli-messaging/store";
2
+ import { parseLocator, resolveOutput } from "@wirecat/cli-core";
3
+ import { readMail } from "@wirecat/cli-core/services";
4
+ import { openStore } from "@wirecat/cli-core/store";
5
5
  import { whole } from "../options.js";
6
6
  import { found } from "../search/command.js";
7
7
  export const messagesCommand = (program, streams, env) => {
@@ -1 +1 @@
1
- {"version":3,"file":"messages-command.js","sourceRoot":"","sources":["../../src/mail/messages-command.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAgB,MAAM,mBAAmB,CAAA;AAC1D,OAAO,EAAE,YAAY,EAAE,aAAa,EAAE,MAAM,wBAAwB,CAAA;AACpE,OAAO,EAAE,QAAQ,EAAE,MAAM,iCAAiC,CAAA;AAC1D,OAAO,EAAE,SAAS,EAAE,MAAM,8BAA8B,CAAA;AAExD,OAAO,EAAE,KAAK,EAAE,MAAM,eAAe,CAAA;AACrC,OAAO,EAAE,KAAK,EAAE,MAAM,sBAAsB,CAAA;AAE5C,MAAM,CAAC,MAAM,eAAe,GAAG,CAAC,OAAgB,EAAE,OAAgB,EAAE,GAAsB,EAAQ,EAAE;IAClG,MAAM,QAAQ,GAAG,OAAO,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC,WAAW,CAAC,mDAAmD,CAAC,CAAA;IAC7G,QAAQ;SACL,OAAO,CAAC,MAAM,CAAC;SACf,WAAW,CAAC,iEAAiE,CAAC;SAC9E,QAAQ,CAAC,WAAW,EAAE,8DAA8D,CAAC;SACrF,MAAM,CAAC,gBAAgB,EAAE,6CAA6C,EAAE,KAAK,EAAE,CAAC,CAAC;SACjF,MAAM,CAAC,eAAe,EAAE,2CAA2C,EAAE,KAAK,EAAE,CAAC,CAAC;SAC9E,MAAM,CAAC,QAAQ,EAAE,YAAY,CAAC;SAC9B,MAAM,CAAC,KAAK,EAAE,SAAiB,EAAE,OAA4D,EAAE,EAAE;QAChG,IAAI,YAAY,CAAC,SAAS,CAAC,CAAC,QAAQ,KAAK,OAAO;YAC9C,MAAM,IAAI,QAAQ,CAAC,kBAAkB,EAAE,GAAG,SAAS,sDAAsD,CAAC,CAAA;QAC5G,MAAM,KAAK,GAAG,MAAM,SAAS,CAAC,EAAE,GAAG,EAAE,CAAC,CAAA;QACtC,IAAI,CAAC;YACH,MAAM,MAAM,GAAG,MAAM,QAAQ,CAAC,KAAK,EAAE,SAAS,EAAE,EAAE,MAAM,EAAE,OAAO,CAAC,OAAO,EAAE,KAAK,EAAE,OAAO,CAAC,MAAM,EAAE,CAAC,CAAA;YACnG,IAAI,OAAO,CAAC,IAAI;gBACd,aAAa,CAAC,EAAE,IAAI,EAAE,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,QAAQ,CAAC,MAAM,CACpD,OAAO,CAAC,OAAO,IAAI,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,MAAM,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAClE,CAAA;;gBACE,OAAO,CAAC,IAAI,CAAC,GAAG,MAAM,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,CAAA;QACpF,CAAC;gBAAS,CAAC;YACT,MAAM,KAAK,CAAC,KAAK,EAAE,CAAA;QACrB,CAAC;IACH,CAAC,CAAC,CAAA;AACN,CAAC,CAAA"}
1
+ {"version":3,"file":"messages-command.js","sourceRoot":"","sources":["../../src/mail/messages-command.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAgB,MAAM,mBAAmB,CAAA;AAC1D,OAAO,EAAE,YAAY,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAA;AAC/D,OAAO,EAAE,QAAQ,EAAE,MAAM,4BAA4B,CAAA;AACrD,OAAO,EAAE,SAAS,EAAE,MAAM,yBAAyB,CAAA;AAEnD,OAAO,EAAE,KAAK,EAAE,MAAM,eAAe,CAAA;AACrC,OAAO,EAAE,KAAK,EAAE,MAAM,sBAAsB,CAAA;AAE5C,MAAM,CAAC,MAAM,eAAe,GAAG,CAAC,OAAgB,EAAE,OAAgB,EAAE,GAAsB,EAAQ,EAAE;IAClG,MAAM,QAAQ,GAAG,OAAO,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC,WAAW,CAAC,mDAAmD,CAAC,CAAA;IAC7G,QAAQ;SACL,OAAO,CAAC,MAAM,CAAC;SACf,WAAW,CAAC,iEAAiE,CAAC;SAC9E,QAAQ,CAAC,WAAW,EAAE,8DAA8D,CAAC;SACrF,MAAM,CAAC,gBAAgB,EAAE,6CAA6C,EAAE,KAAK,EAAE,CAAC,CAAC;SACjF,MAAM,CAAC,eAAe,EAAE,2CAA2C,EAAE,KAAK,EAAE,CAAC,CAAC;SAC9E,MAAM,CAAC,QAAQ,EAAE,YAAY,CAAC;SAC9B,MAAM,CAAC,KAAK,EAAE,SAAiB,EAAE,OAA4D,EAAE,EAAE;QAChG,IAAI,YAAY,CAAC,SAAS,CAAC,CAAC,QAAQ,KAAK,OAAO;YAC9C,MAAM,IAAI,QAAQ,CAAC,kBAAkB,EAAE,GAAG,SAAS,sDAAsD,CAAC,CAAA;QAC5G,MAAM,KAAK,GAAG,MAAM,SAAS,CAAC,EAAE,GAAG,EAAE,CAAC,CAAA;QACtC,IAAI,CAAC;YACH,MAAM,MAAM,GAAG,MAAM,QAAQ,CAAC,KAAK,EAAE,SAAS,EAAE,EAAE,MAAM,EAAE,OAAO,CAAC,OAAO,EAAE,KAAK,EAAE,OAAO,CAAC,MAAM,EAAE,CAAC,CAAA;YACnG,IAAI,OAAO,CAAC,IAAI;gBACd,aAAa,CAAC,EAAE,IAAI,EAAE,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,QAAQ,CAAC,MAAM,CACpD,OAAO,CAAC,OAAO,IAAI,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,MAAM,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAClE,CAAA;;gBACE,OAAO,CAAC,IAAI,CAAC,GAAG,MAAM,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,CAAA;QACpF,CAAC;gBAAS,CAAC;YACT,MAAM,KAAK,CAAC,KAAK,EAAE,CAAA;QACrB,CAAC;IACH,CAAC,CAAC,CAAA;AACN,CAAC,CAAA"}