@ozaiya/openclaw-channel 0.10.52 → 0.10.53
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/src/actionConfirmation.js +6 -8
- package/dist/src/actionConfirmation.js.map +1 -1
- package/dist/src/botEmail.d.ts +20 -0
- package/dist/src/botEmail.js +367 -64
- package/dist/src/botEmail.js.map +1 -1
- package/dist/src/channel.js +35 -0
- package/dist/src/channel.js.map +1 -1
- package/dist/src/mailDocuments.d.ts +3 -1
- package/dist/src/mailDocuments.js +72 -6
- package/dist/src/mailDocuments.js.map +1 -1
- package/dist/src/mailHtml.d.ts +8 -0
- package/dist/src/mailHtml.js +79 -0
- package/dist/src/mailHtml.js.map +1 -0
- package/dist/src/mailSchedule.d.ts +29 -0
- package/dist/src/mailSchedule.js +89 -0
- package/dist/src/mailSchedule.js.map +1 -0
- package/package.json +1 -1
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
export type DocumentKind = "text" | "html" | "pdf" | "docx" | "xlsx" | "pptx" | "eml";
|
|
1
|
+
export type DocumentKind = "text" | "html" | "pdf" | "docx" | "xlsx" | "pptx" | "eml" | "zip";
|
|
2
2
|
/** What kind of document a file is, by its name first and its MIME type second; null when it has no text to read. */
|
|
3
3
|
export declare function documentKind(name: string, mime?: string): DocumentKind | null;
|
|
4
4
|
/** The text of a document, or null when its kind has none. Callers cut long results. */
|
|
@@ -12,3 +12,5 @@ export declare function htmlToText(html: string): string;
|
|
|
12
12
|
* damaged or ZIP64 entries are skipped rather than failing the whole document.
|
|
13
13
|
*/
|
|
14
14
|
export declare function zipEntries(data: Buffer, wanted: (name: string) => boolean): Map<string, Buffer>;
|
|
15
|
+
/** The names of a ZIP archive's entries (folders left out), as zipEntries reads them. */
|
|
16
|
+
export declare function zipListing(data: Buffer): string[];
|
|
@@ -1,21 +1,27 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* Text from the documents a bot reads in its mailbox — email attachments: plain text (UTF-8, else
|
|
3
3
|
* GB18030, common for Chinese CSV/TXT), HTML, PDF (unpdf, a server build of PDF.js), Word, Excel and
|
|
4
|
-
* PowerPoint (ZIP archives of XML, opened with zlib),
|
|
5
|
-
*
|
|
6
|
-
* (packages/ozaiya-cli/src/assistant/assistantDocuments.ts)
|
|
4
|
+
* PowerPoint (ZIP archives of XML, opened with zlib), forwarded emails, and the documents inside a
|
|
5
|
+
* ZIP archive. Anything else (images, RAR/7z, audio…) has no text to give: null. Grown from the
|
|
6
|
+
* Ozaiya CLI assistant's reader (packages/ozaiya-cli/src/assistant/assistantDocuments.ts), which
|
|
7
|
+
* has everything but archives.
|
|
7
8
|
*/
|
|
9
|
+
import path from "node:path";
|
|
8
10
|
import { inflateRawSync } from "node:zlib";
|
|
9
11
|
import { simpleParser } from "mailparser";
|
|
10
12
|
import { getDocumentProxy } from "unpdf";
|
|
11
13
|
const BY_EXTENSION = {
|
|
12
14
|
txt: "text", md: "text", csv: "text", tsv: "text", json: "text", xml: "text", log: "text", ics: "text", yaml: "text", yml: "text",
|
|
13
|
-
html: "html", htm: "html", pdf: "pdf", docx: "docx", xlsx: "xlsx", pptx: "pptx", eml: "eml",
|
|
15
|
+
html: "html", htm: "html", pdf: "pdf", docx: "docx", xlsx: "xlsx", pptx: "pptx", eml: "eml", zip: "zip",
|
|
14
16
|
};
|
|
15
17
|
// A PDF longer than this is read from its first pages only.
|
|
16
18
|
const PDF_PAGES = 40;
|
|
17
19
|
// Spreadsheet rows read per sheet.
|
|
18
20
|
const SHEET_ROWS = 500;
|
|
21
|
+
// Inside an archive: entries listed, documents read, and their unpacked size together.
|
|
22
|
+
const ARCHIVE_ENTRIES = 200;
|
|
23
|
+
const ARCHIVE_DOCUMENTS = 30;
|
|
24
|
+
const ARCHIVE_BYTES = 50 * 1024 * 1024;
|
|
19
25
|
/** What kind of document a file is, by its name first and its MIME type second; null when it has no text to read. */
|
|
20
26
|
export function documentKind(name, mime = "") {
|
|
21
27
|
const extension = name.toLowerCase().split(".").pop() ?? "";
|
|
@@ -36,6 +42,8 @@ export function documentKind(name, mime = "") {
|
|
|
36
42
|
return "xlsx";
|
|
37
43
|
if (type.includes("presentationml"))
|
|
38
44
|
return "pptx";
|
|
45
|
+
if (type === "application/zip" || type === "application/x-zip-compressed")
|
|
46
|
+
return "zip";
|
|
39
47
|
return null;
|
|
40
48
|
}
|
|
41
49
|
/** The text of a document, or null when its kind has none. Callers cut long results. */
|
|
@@ -51,6 +59,7 @@ export async function documentText(data, name, mime = "") {
|
|
|
51
59
|
const mail = await simpleParser(data);
|
|
52
60
|
return [`From: ${mail.from?.text ?? ""}`, `Date: ${mail.date?.toISOString() ?? ""}`, `Subject: ${mail.subject ?? ""}`, "", mail.text || htmlToText(String(mail.html || ""))].join("\n");
|
|
53
61
|
}
|
|
62
|
+
case "zip": return archiveText(data);
|
|
54
63
|
default: return null;
|
|
55
64
|
}
|
|
56
65
|
}
|
|
@@ -123,9 +132,10 @@ export function zipEntries(data, wanted) {
|
|
|
123
132
|
const size = data.readUInt32LE(at + 20);
|
|
124
133
|
const nameLength = data.readUInt16LE(at + 28);
|
|
125
134
|
const local = data.readUInt32LE(at + 42);
|
|
126
|
-
const name = data.
|
|
135
|
+
const name = zipName(data.subarray(at + 46, at + 46 + nameLength), (data.readUInt16LE(at + 8) & 0x800) !== 0);
|
|
127
136
|
at += 46 + nameLength + data.readUInt16LE(at + 30) + data.readUInt16LE(at + 32);
|
|
128
|
-
|
|
137
|
+
const want = wanted(name); // asked for every entry, encrypted ones too (zipListing lists them all)
|
|
138
|
+
if (encrypted || !want || local + 30 > data.length || data.readUInt32LE(local) !== 0x04034b50)
|
|
129
139
|
continue;
|
|
130
140
|
const start = local + 30 + data.readUInt16LE(local + 26) + data.readUInt16LE(local + 28);
|
|
131
141
|
if (start + size > data.length)
|
|
@@ -142,6 +152,62 @@ export function zipEntries(data, wanted) {
|
|
|
142
152
|
}
|
|
143
153
|
return entries;
|
|
144
154
|
}
|
|
155
|
+
/** An entry name: UTF-8 when the archive says so, else GB18030 (Chinese Windows) when it isn't plain ASCII. */
|
|
156
|
+
function zipName(raw, utf8) {
|
|
157
|
+
if (utf8)
|
|
158
|
+
return raw.toString("utf8");
|
|
159
|
+
// No flag: a Mac (zip, Finder) still writes UTF-8, a Chinese Windows writes GBK. GBK is almost never
|
|
160
|
+
// valid UTF-8, while UTF-8 bytes do pass as GB18030, so UTF-8 is tried first.
|
|
161
|
+
for (const encoding of ["utf-8", "gb18030"]) {
|
|
162
|
+
try {
|
|
163
|
+
return new TextDecoder(encoding, { fatal: true }).decode(raw);
|
|
164
|
+
}
|
|
165
|
+
catch {
|
|
166
|
+
// the next one
|
|
167
|
+
}
|
|
168
|
+
}
|
|
169
|
+
return raw.toString("utf8");
|
|
170
|
+
}
|
|
171
|
+
/** The names of a ZIP archive's entries (folders left out), as zipEntries reads them. */
|
|
172
|
+
export function zipListing(data) {
|
|
173
|
+
const names = [];
|
|
174
|
+
zipEntries(data, (name) => {
|
|
175
|
+
if (!name.endsWith("/"))
|
|
176
|
+
names.push(name);
|
|
177
|
+
return false;
|
|
178
|
+
});
|
|
179
|
+
return names;
|
|
180
|
+
}
|
|
181
|
+
/** A ZIP archive's file list, then the text of each document in it (archives inside included). */
|
|
182
|
+
async function archiveText(data, depth = 0) {
|
|
183
|
+
// A Finder zip's __MACOSX/._* copies and dotfiles like .DS_Store are not the sender's files.
|
|
184
|
+
const names = zipListing(data).filter((n) => !/(^|\/)(__MACOSX\/|\.)/.test(n));
|
|
185
|
+
if (names.length === 0)
|
|
186
|
+
return null;
|
|
187
|
+
const docs = names.filter((n) => documentKind(n)).slice(0, ARCHIVE_DOCUMENTS);
|
|
188
|
+
const wanted = new Set(docs);
|
|
189
|
+
let total = 0;
|
|
190
|
+
const contents = zipEntries(data, (name) => wanted.has(name));
|
|
191
|
+
const parts = [`Archive with ${names.length} file${names.length === 1 ? "" : "s"}:\n${names.slice(0, ARCHIVE_ENTRIES).map((n) => `- ${n}`).join("\n")}${names.length > ARCHIVE_ENTRIES ? `\n… and ${names.length - ARCHIVE_ENTRIES} more` : ""}`];
|
|
192
|
+
for (const name of docs) {
|
|
193
|
+
const entry = contents.get(name);
|
|
194
|
+
if (!entry) {
|
|
195
|
+
parts.push(`=== ${name} ===\n(could not be unpacked: encrypted, damaged or too large)`);
|
|
196
|
+
continue;
|
|
197
|
+
}
|
|
198
|
+
total += entry.length;
|
|
199
|
+
if (total > ARCHIVE_BYTES) {
|
|
200
|
+
parts.push(`(the rest is not read: over ${ARCHIVE_BYTES / 1024 / 1024} MB unpacked)`);
|
|
201
|
+
break;
|
|
202
|
+
}
|
|
203
|
+
const kind = documentKind(name);
|
|
204
|
+
const text = kind === "zip"
|
|
205
|
+
? (depth < 1 ? await archiveText(entry, depth + 1) : "(an archive inside an archive inside an archive: not opened)")
|
|
206
|
+
: await documentText(entry, path.basename(name)).catch(() => null);
|
|
207
|
+
parts.push(`=== ${name} ===\n${text?.trim() || "(no text)"}`);
|
|
208
|
+
}
|
|
209
|
+
return parts.join("\n\n");
|
|
210
|
+
}
|
|
145
211
|
const xmlText = (xml) => decodeEntities(xml.replace(/<[^>]+>/g, ""));
|
|
146
212
|
const byNumber = (pattern) => (a, b) => Number(a.match(pattern)?.[1]) - Number(b.match(pattern)?.[1]);
|
|
147
213
|
function docxText(data) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"mailDocuments.js","sourceRoot":"","sources":["../../src/mailDocuments.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"mailDocuments.js","sourceRoot":"","sources":["../../src/mailDocuments.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Formatted mail from the bot: it writes Markdown, which goes out as a plain-text part (the Markdown
|
|
3
|
+
* itself, readable as it is) and an HTML part. Covers what a business mail needs — paragraphs, line
|
|
4
|
+
* breaks, headings, bold / italic / code, links, bullet and numbered lists, block quotes and pipe
|
|
5
|
+
* tables (quotes are often tables) — and escapes everything else, so the bot can't inject markup.
|
|
6
|
+
*/
|
|
7
|
+
/** The HTML body of a mail written in Markdown. */
|
|
8
|
+
export declare function markdownToHtml(markdown: string): string;
|
|
@@ -0,0 +1,79 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Formatted mail from the bot: it writes Markdown, which goes out as a plain-text part (the Markdown
|
|
3
|
+
* itself, readable as it is) and an HTML part. Covers what a business mail needs — paragraphs, line
|
|
4
|
+
* breaks, headings, bold / italic / code, links, bullet and numbered lists, block quotes and pipe
|
|
5
|
+
* tables (quotes are often tables) — and escapes everything else, so the bot can't inject markup.
|
|
6
|
+
*/
|
|
7
|
+
const escapeHtml = (text) => text.replace(/&/g, "&").replace(/</g, "<").replace(/>/g, ">").replace(/"/g, """);
|
|
8
|
+
/** Inline Markdown in one line of already-escaped text. */
|
|
9
|
+
function inline(text) {
|
|
10
|
+
return escapeHtml(text)
|
|
11
|
+
.replace(/`([^`]+)`/g, "<code>$1</code>")
|
|
12
|
+
.replace(/\[([^\]]+)\]\((https?:\/\/[^\s)]+|mailto:[^\s)]+)\)/g, '<a href="$2">$1</a>')
|
|
13
|
+
.replace(/\*\*([^*]+)\*\*/g, "<strong>$1</strong>")
|
|
14
|
+
.replace(/(^|[^*])\*([^*\s][^*]*)\*/g, "$1<em>$2</em>");
|
|
15
|
+
}
|
|
16
|
+
const CELL = 'style="border:1px solid #ccc;padding:4px 8px;text-align:left"';
|
|
17
|
+
const isTableRow = (line) => /^\s*\|.*\|\s*$/.test(line);
|
|
18
|
+
const isTableRule = (line) => /^\s*\|?\s*:?-{2,}:?\s*(\|\s*:?-{2,}:?\s*)*\|?\s*$/.test(line);
|
|
19
|
+
const cells = (line) => line.trim().replace(/^\||\|$/g, "").split("|").map((c) => c.trim());
|
|
20
|
+
/** The HTML body of a mail written in Markdown. */
|
|
21
|
+
export function markdownToHtml(markdown) {
|
|
22
|
+
const lines = markdown.replace(/\r\n/g, "\n").split("\n");
|
|
23
|
+
const out = [];
|
|
24
|
+
let paragraph = [];
|
|
25
|
+
const flush = () => {
|
|
26
|
+
if (paragraph.length)
|
|
27
|
+
out.push(`<p>${paragraph.map(inline).join("<br>")}</p>`);
|
|
28
|
+
paragraph = [];
|
|
29
|
+
};
|
|
30
|
+
for (let i = 0; i < lines.length; i++) {
|
|
31
|
+
const line = lines[i];
|
|
32
|
+
if (!line.trim()) {
|
|
33
|
+
flush();
|
|
34
|
+
continue;
|
|
35
|
+
}
|
|
36
|
+
const heading = /^(#{1,4})\s+(.*)$/.exec(line);
|
|
37
|
+
if (heading) {
|
|
38
|
+
flush();
|
|
39
|
+
out.push(`<h${heading[1].length + 1}>${inline(heading[2])}</h${heading[1].length + 1}>`);
|
|
40
|
+
continue;
|
|
41
|
+
}
|
|
42
|
+
if (isTableRow(line) && i + 1 < lines.length && isTableRule(lines[i + 1])) {
|
|
43
|
+
flush();
|
|
44
|
+
const head = cells(line);
|
|
45
|
+
const rows = [];
|
|
46
|
+
i += 2;
|
|
47
|
+
while (i < lines.length && isTableRow(lines[i]))
|
|
48
|
+
rows.push(cells(lines[i++]));
|
|
49
|
+
i--;
|
|
50
|
+
out.push(`<table style="border-collapse:collapse"><thead><tr>${head.map((c) => `<th ${CELL}>${inline(c)}</th>`).join("")}</tr></thead>`
|
|
51
|
+
+ `<tbody>${rows.map((r) => `<tr>${r.map((c) => `<td ${CELL}>${inline(c)}</td>`).join("")}</tr>`).join("")}</tbody></table>`);
|
|
52
|
+
continue;
|
|
53
|
+
}
|
|
54
|
+
const list = /^\s*([-*]|\d+[.)])\s+/.exec(line);
|
|
55
|
+
if (list) {
|
|
56
|
+
flush();
|
|
57
|
+
const ordered = /\d/.test(list[1]);
|
|
58
|
+
const items = [];
|
|
59
|
+
while (i < lines.length && /^\s*([-*]|\d+[.)])\s+/.test(lines[i]))
|
|
60
|
+
items.push(lines[i++].replace(/^\s*([-*]|\d+[.)])\s+/, ""));
|
|
61
|
+
i--;
|
|
62
|
+
out.push(`<${ordered ? "ol" : "ul"}>${items.map((it) => `<li>${inline(it)}</li>`).join("")}</${ordered ? "ol" : "ul"}>`);
|
|
63
|
+
continue;
|
|
64
|
+
}
|
|
65
|
+
if (/^\s*>/.test(line)) {
|
|
66
|
+
flush();
|
|
67
|
+
const quoted = [];
|
|
68
|
+
while (i < lines.length && /^\s*>/.test(lines[i]))
|
|
69
|
+
quoted.push(lines[i++].replace(/^\s*>\s?/, ""));
|
|
70
|
+
i--;
|
|
71
|
+
out.push(`<blockquote style="margin:0 0 0 8px;padding-left:8px;border-left:3px solid #ccc;color:#555">${quoted.map(inline).join("<br>")}</blockquote>`);
|
|
72
|
+
continue;
|
|
73
|
+
}
|
|
74
|
+
paragraph.push(line);
|
|
75
|
+
}
|
|
76
|
+
flush();
|
|
77
|
+
return `<div style="font-family:-apple-system,Segoe UI,Arial,sans-serif;font-size:14px;line-height:1.5">${out.join("\n")}</div>`;
|
|
78
|
+
}
|
|
79
|
+
//# sourceMappingURL=mailHtml.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"mailHtml.js","sourceRoot":"","sources":["../../src/mailHtml.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
export interface ScheduledMail {
|
|
2
|
+
id: string;
|
|
3
|
+
accountId: string;
|
|
4
|
+
/** The owner's chat: where the outcome is posted. */
|
|
5
|
+
groupId: string;
|
|
6
|
+
sendAt: number;
|
|
7
|
+
/** The email tool's args for the send, without send_at. */
|
|
8
|
+
args: unknown;
|
|
9
|
+
/** For listing and for the outcome message. */
|
|
10
|
+
to: string;
|
|
11
|
+
subject: string;
|
|
12
|
+
createdAt: number;
|
|
13
|
+
}
|
|
14
|
+
export interface MailScheduleDeps {
|
|
15
|
+
accountId: string;
|
|
16
|
+
stateDir: string;
|
|
17
|
+
/** Send it now: the email tool with approval already given. */
|
|
18
|
+
send: (args: unknown) => Promise<string>;
|
|
19
|
+
notify: (groupId: string, text: string) => Promise<void>;
|
|
20
|
+
}
|
|
21
|
+
export declare const MAX_SCHEDULE_MS: number;
|
|
22
|
+
/** Keep a mail to send at `sendAt`; returns its id. */
|
|
23
|
+
export declare function scheduleMail(deps: MailScheduleDeps, entry: Omit<ScheduledMail, "id" | "accountId" | "createdAt">): Promise<ScheduledMail>;
|
|
24
|
+
/** This bot's mails waiting to be sent, soonest first. */
|
|
25
|
+
export declare function scheduledMails(accountId: string): ScheduledMail[];
|
|
26
|
+
/** Drop a scheduled mail before it goes out; false when there is no such mail of this bot. */
|
|
27
|
+
export declare function cancelScheduledMail(deps: Pick<MailScheduleDeps, "accountId" | "stateDir">, id: string): Promise<boolean>;
|
|
28
|
+
/** After a gateway (re)start: arm this bot's scheduled mails again; overdue ones go out now. */
|
|
29
|
+
export declare function restoreScheduledMails(deps: MailScheduleDeps): Promise<number>;
|
|
@@ -0,0 +1,89 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Scheduled sending for the bot's mailbox: a mail the owner approved "for 9 tomorrow" waits here —
|
|
3
|
+
* in memory and in <stateDir>/ozaiya-mail-schedule/<id>.json, so a gateway restart keeps it — and is
|
|
4
|
+
* sent at that time by running the email tool again with the same args (send_at dropped, approval
|
|
5
|
+
* already given). What happened is posted in the owner's chat. A mail whose time passed while the
|
|
6
|
+
* gateway was down goes out as soon as it is back, saying so.
|
|
7
|
+
*/
|
|
8
|
+
import { randomBytes } from "node:crypto";
|
|
9
|
+
import fs from "node:fs/promises";
|
|
10
|
+
import path from "node:path";
|
|
11
|
+
// setTimeout takes at most ~24.8 days; longer waits re-arm.
|
|
12
|
+
const MAX_DELAY_MS = 2_147_000_000;
|
|
13
|
+
export const MAX_SCHEDULE_MS = 30 * 24 * 60 * 60 * 1000;
|
|
14
|
+
const scheduled = new Map();
|
|
15
|
+
const timers = new Map();
|
|
16
|
+
const dir = (stateDir) => path.join(stateDir, "ozaiya-mail-schedule");
|
|
17
|
+
const file = (stateDir, id) => path.join(dir(stateDir), `${id.replace(/[^a-f0-9]/g, "")}.json`);
|
|
18
|
+
async function forget(stateDir, id) {
|
|
19
|
+
scheduled.delete(id);
|
|
20
|
+
clearTimeout(timers.get(id));
|
|
21
|
+
timers.delete(id);
|
|
22
|
+
await fs.rm(file(stateDir, id), { force: true }).catch(() => { });
|
|
23
|
+
}
|
|
24
|
+
function arm(deps, mail, late = false) {
|
|
25
|
+
clearTimeout(timers.get(mail.id));
|
|
26
|
+
const delay = mail.sendAt - Date.now();
|
|
27
|
+
if (delay > MAX_DELAY_MS) {
|
|
28
|
+
const timer = setTimeout(() => arm(deps, mail), MAX_DELAY_MS);
|
|
29
|
+
timer.unref?.();
|
|
30
|
+
timers.set(mail.id, timer);
|
|
31
|
+
return;
|
|
32
|
+
}
|
|
33
|
+
const timer = setTimeout(() => void fire(deps, mail, late), Math.max(0, delay));
|
|
34
|
+
timer.unref?.();
|
|
35
|
+
timers.set(mail.id, timer);
|
|
36
|
+
}
|
|
37
|
+
async function fire(deps, mail, late) {
|
|
38
|
+
// Forget it first: a crash during the send must not send it a second time after a restart.
|
|
39
|
+
if (!scheduled.has(mail.id))
|
|
40
|
+
return;
|
|
41
|
+
await forget(deps.stateDir, mail.id);
|
|
42
|
+
const result = await deps.send(mail.args).catch((e) => `Failed: ${e instanceof Error ? e.message : String(e)}`);
|
|
43
|
+
const zh = /[㐀-鿿]/.test(`${mail.subject}`);
|
|
44
|
+
const failed = result.startsWith("Failed") || result.startsWith("Invalid input");
|
|
45
|
+
const head = failed
|
|
46
|
+
? (zh ? `⚠️ 定时邮件没有发出:「${mail.subject}」→ ${mail.to}` : `⚠️ The scheduled mail was not sent: "${mail.subject}" → ${mail.to}`)
|
|
47
|
+
: (zh ? `⏰ 已按时发送:「${mail.subject}」→ ${mail.to}` : `⏰ Sent on schedule: "${mail.subject}" → ${mail.to}`);
|
|
48
|
+
const note = late ? (zh ? "(网关在预定时间不在线,回来后补发)" : " (the gateway was offline at the time; sent once it was back)") : "";
|
|
49
|
+
// The tool's result is English for the model: a Chinese owner only needs it to see why it failed.
|
|
50
|
+
const detail = failed || !zh ? `\n${result}` : "";
|
|
51
|
+
await deps.notify(mail.groupId, `${head}${note}${detail}`).catch(() => { });
|
|
52
|
+
}
|
|
53
|
+
/** Keep a mail to send at `sendAt`; returns its id. */
|
|
54
|
+
export async function scheduleMail(deps, entry) {
|
|
55
|
+
const mail = { ...entry, id: randomBytes(6).toString("hex"), accountId: deps.accountId, createdAt: Date.now() };
|
|
56
|
+
await fs.mkdir(dir(deps.stateDir), { recursive: true });
|
|
57
|
+
await fs.writeFile(file(deps.stateDir, mail.id), JSON.stringify(mail), { mode: 0o600 });
|
|
58
|
+
scheduled.set(mail.id, mail);
|
|
59
|
+
arm(deps, mail);
|
|
60
|
+
return mail;
|
|
61
|
+
}
|
|
62
|
+
/** This bot's mails waiting to be sent, soonest first. */
|
|
63
|
+
export function scheduledMails(accountId) {
|
|
64
|
+
return [...scheduled.values()].filter((m) => m.accountId === accountId).sort((a, b) => a.sendAt - b.sendAt);
|
|
65
|
+
}
|
|
66
|
+
/** Drop a scheduled mail before it goes out; false when there is no such mail of this bot. */
|
|
67
|
+
export async function cancelScheduledMail(deps, id) {
|
|
68
|
+
const mail = scheduled.get(id);
|
|
69
|
+
if (!mail || mail.accountId !== deps.accountId)
|
|
70
|
+
return false;
|
|
71
|
+
await forget(deps.stateDir, id);
|
|
72
|
+
return true;
|
|
73
|
+
}
|
|
74
|
+
/** After a gateway (re)start: arm this bot's scheduled mails again; overdue ones go out now. */
|
|
75
|
+
export async function restoreScheduledMails(deps) {
|
|
76
|
+
const names = await fs.readdir(dir(deps.stateDir)).catch(() => []);
|
|
77
|
+
let restored = 0;
|
|
78
|
+
for (const name of names.filter((n) => n.endsWith(".json"))) {
|
|
79
|
+
const raw = await fs.readFile(path.join(dir(deps.stateDir), name), "utf8").catch(() => null);
|
|
80
|
+
const mail = raw ? JSON.parse(raw) : null;
|
|
81
|
+
if (!mail || mail.accountId !== deps.accountId || scheduled.has(mail.id))
|
|
82
|
+
continue;
|
|
83
|
+
scheduled.set(mail.id, mail);
|
|
84
|
+
arm(deps, mail, mail.sendAt < Date.now());
|
|
85
|
+
restored++;
|
|
86
|
+
}
|
|
87
|
+
return restored;
|
|
88
|
+
}
|
|
89
|
+
//# sourceMappingURL=mailSchedule.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"mailSchedule.js","sourceRoot":"","sources":["../../src/mailSchedule.ts"],"names":[],"mappings":"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"}
|