@ozaiya/openclaw-channel 0.10.49 → 0.10.51

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.
@@ -1,7 +1,8 @@
1
1
  /**
2
- * Replies for the bot's mailbox, as pure functions over the original message: who a reply goes to,
3
- * the "Re:" subject, the quoted original, and the In-Reply-To / References headers that keep the
4
- * reply in the original's thread. (Same rules as the Ozaiya CLI's assistant mail.)
2
+ * Replies and forwards for the bot's mailbox, as pure functions over the original message: who a
3
+ * reply goes to, the "Re:"/"Fwd:" subjects, the quoted or forwarded original, and the In-Reply-To /
4
+ * References headers that keep a reply in the original's thread. (Same rules as the Ozaiya CLI's
5
+ * assistant mail.)
5
6
  */
6
7
  export interface MailAddress {
7
8
  name?: string;
@@ -31,6 +32,9 @@ export declare function replyRecipients(original: OriginalMail, own: string, all
31
32
  export declare function replySubject(subject?: string): string;
32
33
  /** The reply's text: what the bot wrote, then the original quoted with "> ". */
33
34
  export declare function replyText(body: string, original: OriginalMail, zh: boolean): string;
35
+ export declare function forwardSubject(subject?: string): string;
36
+ /** The forward's text: the bot's note, then the original's headers and text. */
37
+ export declare function forwardText(body: string, original: OriginalMail, zh: boolean): string;
34
38
  /** In-Reply-To and References that keep the reply in the original's thread. */
35
39
  export declare function threadHeaders(original: OriginalMail): {
36
40
  inReplyTo?: string;
@@ -1,10 +1,12 @@
1
1
  /**
2
- * Replies for the bot's mailbox, as pure functions over the original message: who a reply goes to,
3
- * the "Re:" subject, the quoted original, and the In-Reply-To / References headers that keep the
4
- * reply in the original's thread. (Same rules as the Ozaiya CLI's assistant mail.)
2
+ * Replies and forwards for the bot's mailbox, as pure functions over the original message: who a
3
+ * reply goes to, the "Re:"/"Fwd:" subjects, the quoted or forwarded original, and the In-Reply-To /
4
+ * References headers that keep a reply in the original's thread. (Same rules as the Ozaiya CLI's
5
+ * assistant mail.)
5
6
  */
6
- // How much of the original a reply quotes.
7
+ // How much of the original a reply quotes, and a forward carries.
7
8
  const QUOTE_CHARS = 4000;
9
+ const FORWARD_CHARS = 20_000;
8
10
  export const formatAddressList = (list) => (list ?? []).map((a) => (a.name ? `${a.name} <${a.address}>` : a.address ?? "")).filter(Boolean).join(", ");
9
11
  /**
10
12
  * A reply goes to Reply-To, else From. Replying to all adds the original's other To and Cc
@@ -37,6 +39,25 @@ export function replyText(body, original, zh) {
37
39
  const quoted = (text.length > QUOTE_CHARS ? `${text.slice(0, QUOTE_CHARS)}\n…` : text).split("\n").map((line) => `> ${line}`).join("\n");
38
40
  return `${body.trim()}\n\n${header}\n${quoted}`;
39
41
  }
42
+ export function forwardSubject(subject = "") {
43
+ return /^\s*(fwd?|转发|wg|tr)\s*[::]/i.test(subject) ? subject : `Fwd: ${subject}`;
44
+ }
45
+ /** The forward's text: the bot's note, then the original's headers and text. */
46
+ export function forwardText(body, original, zh) {
47
+ const text = original.text.trim();
48
+ return [
49
+ body.trim(),
50
+ "",
51
+ zh ? "---------- 转发的邮件 ----------" : "---------- Forwarded message ----------",
52
+ `${zh ? "发件人" : "From"}: ${formatAddressList(original.from)}`,
53
+ `${zh ? "日期" : "Date"}: ${original.when ?? ""}`,
54
+ `${zh ? "主题" : "Subject"}: ${original.subject ?? ""}`,
55
+ `${zh ? "收件人" : "To"}: ${formatAddressList(original.to)}`,
56
+ ...(original.cc?.length ? [`${zh ? "抄送" : "Cc"}: ${formatAddressList(original.cc)}`] : []),
57
+ "",
58
+ text.length > FORWARD_CHARS ? `${text.slice(0, FORWARD_CHARS)}\n…` : text,
59
+ ].join("\n").trimStart();
60
+ }
40
61
  /** In-Reply-To and References that keep the reply in the original's thread. */
41
62
  export function threadHeaders(original) {
42
63
  if (!original.messageId)
@@ -1 +1 @@
1
- {"version":3,"file":"mailCompose.js","sourceRoot":"","sources":["../../src/mailCompose.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"mailCompose.js","sourceRoot":"","sources":["../../src/mailCompose.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@ozaiya/openclaw-channel",
3
- "version": "0.10.49",
3
+ "version": "0.10.51",
4
4
  "description": "OpenClaw channel plugin for Ozaiya Chat",
5
5
  "license": "MIT",
6
6
  "type": "module",