wezard 1.3.23 → 1.4.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 (43) hide show
  1. package/CLAUDE.md +4 -2
  2. package/README.md +43 -37
  3. package/dist/daemon/chat-name.js +65 -2
  4. package/dist/daemon/chat-name.js.map +1 -1
  5. package/dist/daemon/detail.js +7 -0
  6. package/dist/daemon/detail.js.map +1 -1
  7. package/dist/daemon/graph.js +25 -3
  8. package/dist/daemon/graph.js.map +1 -1
  9. package/dist/daemon/inbound.js +114 -58
  10. package/dist/daemon/inbound.js.map +1 -1
  11. package/dist/daemon/index.js +773 -125
  12. package/dist/daemon/index.js.map +1 -1
  13. package/dist/daemon/jobs.js +91 -0
  14. package/dist/daemon/jobs.js.map +1 -0
  15. package/dist/daemon/mirror-bridge.js +194 -14
  16. package/dist/daemon/mirror-bridge.js.map +1 -1
  17. package/dist/daemon/mirror-store.js.map +1 -1
  18. package/dist/daemon/notices.js +70 -0
  19. package/dist/daemon/notices.js.map +1 -0
  20. package/dist/daemon/peers.js +93 -61
  21. package/dist/daemon/peers.js.map +1 -1
  22. package/dist/daemon/spawn-tmux.js +46 -4
  23. package/dist/daemon/spawn-tmux.js.map +1 -1
  24. package/dist/daemon/tasks.js +90 -0
  25. package/dist/daemon/tasks.js.map +1 -0
  26. package/dist/daemon/wizard.js +151 -0
  27. package/dist/daemon/wizard.js.map +1 -0
  28. package/dist/mcp/server.js +236 -102
  29. package/dist/mcp/server.js.map +1 -1
  30. package/dist/shared/cli-backends.js +10 -0
  31. package/dist/shared/cli-backends.js.map +1 -1
  32. package/dist/shared/config.js +50 -14
  33. package/dist/shared/config.js.map +1 -1
  34. package/dist/shared/detail-render.js +3 -2
  35. package/dist/shared/detail-render.js.map +1 -1
  36. package/dist/shared/detail-store.js.map +1 -1
  37. package/dist/shared/schedule-spec.js +240 -0
  38. package/dist/shared/schedule-spec.js.map +1 -0
  39. package/dist/shared/session-label.js +8 -4
  40. package/dist/shared/session-label.js.map +1 -1
  41. package/package.json +1 -1
  42. package/dist/daemon/topics.js +0 -106
  43. package/dist/daemon/topics.js.map +0 -1
@@ -0,0 +1,240 @@
1
+ // 定时规格 —— 把一句人话里的「什么时候」解析成三种形状之一, 外加到点判定与
2
+ // 下次触发时刻。整模块是纯函数: 时钟由调用方传进来 (now), 这里只做匹配与算术。
3
+ //
4
+ // 三种形状覆盖了「比 /loop 更长」的全部实际需求:
5
+ // daily 某几天的 HH:MM (days 为空 = 每天) —— 「每个工作日晚上 9:30」
6
+ // every 每隔 N 分钟 —— 「每两小时」
7
+ // once 一个绝对时刻 —— 「明早 9 点」「20 分钟后」, 触发后自删
8
+ //
9
+ // 刻意不做 cron 表达式: 人在群里说的是「每个工作日晚上九点半」, 让 wizard 把这句
10
+ // 原样递进来比让它翻译成 `30 21 * * 1-5` 更不容易错 —— 翻译错了没人看得出来。
11
+ // 守护进程重启/维护会吃掉整分钟的 tick。错过的那一下在 5 分钟内补跑, 超出就放弃 ——
12
+ // 早上 9 点的任务在中午补跑比不跑更糟。
13
+ const CATCHUP_MS = 5 * 60_000;
14
+ // ── 汉字数字 ────────────────────────────────────────────────────────
15
+ const CN_DIGIT = {
16
+ 零: 0, 〇: 0, 一: 1, 二: 2, 两: 2, 三: 3, 四: 4, 五: 5,
17
+ 六: 6, 七: 7, 八: 8, 九: 9, 十: 10,
18
+ };
19
+ /** 「二十一」→ 21, 「十」→ 10, 「9」→ 9。认不出返回 undefined。 */
20
+ export const cnToNum = (raw) => {
21
+ const s = raw.trim();
22
+ if (!s)
23
+ return undefined;
24
+ if (/^\d+$/.test(s))
25
+ return Number(s);
26
+ if ([...s].some((c) => !(c in CN_DIGIT)))
27
+ return undefined;
28
+ const i = s.indexOf("十");
29
+ if (i < 0)
30
+ return [...s].reduce((n, c) => n * 10 + CN_DIGIT[c], 0);
31
+ const tens = i === 0 ? 1 : CN_DIGIT[s[i - 1]];
32
+ const ones = i === s.length - 1 ? 0 : CN_DIGIT[s[s.length - 1]];
33
+ return tens * 10 + ones;
34
+ };
35
+ const NUM = "[0-9零〇一二三四五六七八九十两]";
36
+ // ── 星期 ────────────────────────────────────────────────────────────
37
+ const CN_WEEKDAY = {
38
+ 日: 0, 天: 0, 一: 1, 二: 2, 三: 3, 四: 4, 五: 5, 六: 6,
39
+ };
40
+ const EN_WEEKDAY = {
41
+ sun: 0, mon: 1, tue: 2, wed: 3, thu: 4, fri: 5, sat: 6,
42
+ };
43
+ const uniqSorted = (xs) => [...new Set(xs)].sort((a, b) => a - b);
44
+ /** 文本里说的是哪几天。`[]` = 每天; undefined = 没提。 */
45
+ export const parseDays = (t) => {
46
+ if (/工作日|上班日|周一到周五|周一至周五|週一到週五|weekdays?|workdays?/i.test(t))
47
+ return [1, 2, 3, 4, 5];
48
+ if (/周末|週末|双休|週休|weekends?/i.test(t))
49
+ return [0, 6];
50
+ const cn = [...t.matchAll(/(?:每)?(?:周|週|星期|礼拜|禮拜)\s*([日一二三四五六天]+)/g)]
51
+ .flatMap((m) => [...m[1]].map((c) => CN_WEEKDAY[c]));
52
+ if (cn.length)
53
+ return uniqSorted(cn);
54
+ const en = [...t.matchAll(/\b(sun|mon|tue|wed|thu|fri|sat)[a-z]*\b/gi)].map((m) => EN_WEEKDAY[m[1].toLowerCase()]);
55
+ if (en.length)
56
+ return uniqSorted(en);
57
+ if (/每天|每日|天天|每晚|每早|每个早上|daily|every\s*day/i.test(t))
58
+ return [];
59
+ return undefined;
60
+ };
61
+ // ── 时刻 ────────────────────────────────────────────────────────────
62
+ // 时段词只在 12 小时制下有意义: 「晚上 21:30」里的 21 已经说清楚了, 再 +12 就废了。
63
+ const shiftMeridiem = (h, t) => {
64
+ if (h > 12)
65
+ return h;
66
+ if (/下午|傍晚|晚上|夜里|夜間|今晚|每晚|晚|(?<![a-z])pm\b/i.test(t))
67
+ return h === 12 ? 12 : h + 12;
68
+ if (/中午|正午|noon/.test(t))
69
+ return h === 12 ? 12 : h + 12;
70
+ if (/凌晨|半夜|midnight/.test(t))
71
+ return h === 12 ? 0 : h;
72
+ if (/早上|早晨|清晨|上午|每早|明早|(?<![a-z])am\b/i.test(t))
73
+ return h === 12 ? 0 : h;
74
+ return h;
75
+ };
76
+ const QUARTER = { 半: 30, 一刻: 15, 三刻: 45 };
77
+ /** 「晚上九点半」「21:30」「9:30pm」→ {hour, minute}。没提时刻返回 undefined。 */
78
+ export const parseTimeOfDay = (t) => {
79
+ const digital = t.match(/(\d{1,2})\s*[::]\s*(\d{1,2})/);
80
+ if (digital) {
81
+ const h = shiftMeridiem(Number(digital[1]), t);
82
+ return { hour: h % 24, minute: Number(digital[2]) % 60 };
83
+ }
84
+ const spoken = t.match(new RegExp(`(${NUM}{1,3})\\s*(?:点|時|时|时钟|o'?clock)\\s*(半|一刻|三刻)?\\s*(?:(${NUM}{1,3})\\s*分)?`));
85
+ if (spoken) {
86
+ const h0 = cnToNum(spoken[1]);
87
+ if (h0 === undefined || h0 > 24)
88
+ return undefined;
89
+ const m = spoken[2] ? QUARTER[spoken[2]] : spoken[3] ? (cnToNum(spoken[3]) ?? 0) : 0;
90
+ return { hour: shiftMeridiem(h0, t) % 24, minute: m % 60 };
91
+ }
92
+ const bare = t.match(/(\d{1,2})\s*(am|pm)\b/i);
93
+ if (bare)
94
+ return { hour: shiftMeridiem(Number(bare[1]), bare[2]) % 24, minute: 0 };
95
+ return undefined;
96
+ };
97
+ // ── 间隔 ────────────────────────────────────────────────────────────
98
+ const UNIT_MIN = {
99
+ 分: 1, 分钟: 1, 分鐘: 1, min: 1, mins: 1, minute: 1, minutes: 1, m: 1,
100
+ 小时: 60, 小時: 60, 钟头: 60, 鐘頭: 60, 时: 60, hour: 60, hours: 60, hr: 60, h: 60,
101
+ 天: 1440, 日: 1440, day: 1440, days: 1440, d: 1440,
102
+ };
103
+ /** 「每隔两小时」「每 30 分钟」「每半小时」「every 15m」→ 分钟数。 */
104
+ export const parseInterval = (t) => {
105
+ const half = t.match(/每\s*隔?\s*半\s*(小时|小時|钟头|鐘頭|天|日|hour)/);
106
+ if (half)
107
+ return (UNIT_MIN[half[1]] ?? 60) / 2;
108
+ const cn = t.match(new RegExp(`每\\s*隔?\\s*(${NUM}{1,3})\\s*(分钟|分鐘|分|小时|小時|钟头|鐘頭|天|日)`));
109
+ if (cn) {
110
+ const n = cnToNum(cn[1]);
111
+ return n && n > 0 ? n * (UNIT_MIN[cn[2]] ?? 1) : undefined;
112
+ }
113
+ const en = t.match(/every\s*(\d{1,4})?\s*(minutes?|mins?|hours?|hrs?|days?|[mhd])\b/i);
114
+ if (en) {
115
+ const n = en[1] ? Number(en[1]) : 1;
116
+ return n > 0 ? n * (UNIT_MIN[en[2].toLowerCase()] ?? 1) : undefined;
117
+ }
118
+ return undefined;
119
+ };
120
+ // ── 一次性 ──────────────────────────────────────────────────────────
121
+ const atOn = (now, addDays, hour, minute) => new Date(now.getFullYear(), now.getMonth(), now.getDate() + addDays, hour, minute, 0, 0).getTime();
122
+ const parseOnce = (t, now) => {
123
+ const rel = t.match(new RegExp(`(半|${NUM}{1,4})\\s*(分钟|分鐘|分|小时|小時|钟头|鐘頭|天)\\s*(?:之)?后`))
124
+ ?? t.match(/\bin\s*(\d{1,4})\s*(minutes?|mins?|hours?|hrs?|days?|[mhd])\b/i);
125
+ if (rel) {
126
+ const unit = UNIT_MIN[rel[2].toLowerCase()] ?? 1;
127
+ const n = rel[1] === "半" ? 0.5 : (cnToNum(rel[1]) ?? Number(rel[1]));
128
+ if (n > 0)
129
+ return { kind: "once", at: now.getTime() + Math.round(n * unit) * 60_000 };
130
+ }
131
+ const dayWord = t.match(/(今天|今晚|今夜|明天|明早|明晚|后天|後天|tomorrow|tonight)/i);
132
+ if (!dayWord)
133
+ return undefined;
134
+ const addDays = /后天|後天/.test(dayWord[1]) ? 2 : /今天|今晚|今夜|tonight/i.test(dayWord[1]) ? 0 : 1;
135
+ const tod = parseTimeOfDay(t) ?? (/晚|tonight/i.test(dayWord[1]) ? { hour: 21, minute: 0 } : undefined);
136
+ if (!tod)
137
+ return undefined;
138
+ return { kind: "once", at: atOn(now, addDays, tod.hour, tod.minute) };
139
+ };
140
+ // ── 入口 ────────────────────────────────────────────────────────────
141
+ /**
142
+ * 整句话进, 规格出。认不出返回 undefined —— 调用方要把原句回给用户让他重说,
143
+ * 绝不能猜一个时间安静地存下去。
144
+ *
145
+ * 顺序有意为之: 一次性(带「今天/明天/N 分钟后」的措辞) 最具体, 其次是间隔,
146
+ * 最后才是周期日程 —— 「每天」这种词在前两者里都不会出现。
147
+ */
148
+ export const parseWhen = (text, now = new Date()) => {
149
+ const t = text.trim();
150
+ if (!t)
151
+ return undefined;
152
+ const once = parseOnce(t, now);
153
+ if (once)
154
+ return once;
155
+ const tod = parseTimeOfDay(t);
156
+ // 「每 2 天早上 9 点」这种既给间隔又给时刻的说法, 按日程理解更接近本意;
157
+ // 纯间隔 (不带时刻) 才走 every。
158
+ const iv = parseInterval(t);
159
+ if (iv !== undefined && !tod)
160
+ return { kind: "every", minutes: Math.max(1, Math.round(iv)) };
161
+ const days = parseDays(t);
162
+ if (tod)
163
+ return { kind: "daily", days: days ?? [], hour: tod.hour, minute: tod.minute };
164
+ if (days)
165
+ return { kind: "daily", days, hour: 9, minute: 0 }; // 只说了「每个工作日」: 默认早上 9 点
166
+ if (iv !== undefined)
167
+ return { kind: "every", minutes: Math.max(1, Math.round(iv)) };
168
+ return undefined;
169
+ };
170
+ // ── 判定 ────────────────────────────────────────────────────────────
171
+ const instantToday = (w, now) => {
172
+ if (w.days.length && !w.days.includes(now.getDay()))
173
+ return undefined;
174
+ const d = new Date(now);
175
+ d.setHours(w.hour, w.minute, 0, 0);
176
+ return d.getTime();
177
+ };
178
+ /**
179
+ * 到点了吗。`since` = 上次触发时刻, 从没触发过就传创建时刻 —— 它同时承担三件事:
180
+ * 同一分钟内多次 tick 的去重、重启后不重复触发、以及「刚创建就到点」不立即打一枪。
181
+ */
182
+ export const isDue = (when, now, since) => {
183
+ const t = now.getTime();
184
+ switch (when.kind) {
185
+ case "once":
186
+ return t >= when.at && since < when.at;
187
+ case "every":
188
+ return t - since >= when.minutes * 60_000;
189
+ case "daily": {
190
+ const inst = instantToday(when, now);
191
+ return inst !== undefined && t >= inst && t - inst < CATCHUP_MS && since < inst;
192
+ }
193
+ }
194
+ };
195
+ /** 下一次该在什么时候响。`since` 同 isDue。 */
196
+ export const nextFire = (when, since, now = new Date()) => {
197
+ if (when.kind === "once")
198
+ return when.at;
199
+ if (when.kind === "every")
200
+ return Math.max(since + when.minutes * 60_000, now.getTime());
201
+ for (let i = 0; i < 8; i++) {
202
+ const c = new Date(now.getFullYear(), now.getMonth(), now.getDate() + i, when.hour, when.minute, 0, 0);
203
+ if (c.getTime() > now.getTime() && (!when.days.length || when.days.includes(c.getDay())))
204
+ return c.getTime();
205
+ }
206
+ return now.getTime();
207
+ };
208
+ // ── 回显 ────────────────────────────────────────────────────────────
209
+ const hhmm = (h, m) => `${String(h).padStart(2, "0")}:${String(m).padStart(2, "0")}`;
210
+ const CN_DAY_NAME = ["日", "一", "二", "三", "四", "五", "六"];
211
+ const daysLabel = (days) => {
212
+ if (!days.length)
213
+ return "每天";
214
+ const k = days.join(",");
215
+ if (k === "1,2,3,4,5")
216
+ return "每个工作日";
217
+ if (k === "0,6")
218
+ return "每逢周末";
219
+ return `每周${days.map((d) => CN_DAY_NAME[d]).join("、")}`;
220
+ };
221
+ /** 人能一眼确认的回显 —— 存下去之前必须把它回给用户。 */
222
+ export const describeWhen = (when) => {
223
+ switch (when.kind) {
224
+ case "daily":
225
+ return `${daysLabel(when.days)} ${hhmm(when.hour, when.minute)}`;
226
+ case "every": {
227
+ const { minutes: n } = when;
228
+ if (n % 1440 === 0)
229
+ return `每 ${n / 1440} 天`;
230
+ if (n % 60 === 0)
231
+ return `每 ${n / 60} 小时`;
232
+ return n > 60 ? `每 ${Math.floor(n / 60)} 小时 ${n % 60} 分` : `每 ${n} 分钟`;
233
+ }
234
+ case "once": {
235
+ const d = new Date(when.at);
236
+ return `${d.getFullYear()}-${String(d.getMonth() + 1).padStart(2, "0")}-${String(d.getDate()).padStart(2, "0")} ${hhmm(d.getHours(), d.getMinutes())}(仅一次)`;
237
+ }
238
+ }
239
+ };
240
+ //# sourceMappingURL=schedule-spec.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"schedule-spec.js","sourceRoot":"","sources":["../../shared/schedule-spec.ts"],"names":[],"mappings":"AAAA,0CAA0C;AAC1C,8CAA8C;AAC9C,EAAE;AACF,8BAA8B;AAC9B,uDAAuD;AACvD,mDAAmD;AACnD,kEAAkE;AAClE,EAAE;AACF,mDAAmD;AACnD,mDAAmD;AAOnD,kDAAkD;AAClD,uBAAuB;AACvB,MAAM,UAAU,GAAG,CAAC,GAAG,MAAM,CAAC;AAE9B,mEAAmE;AACnE,MAAM,QAAQ,GAAqC;IACjD,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC;IAC9C,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE;CAC9B,CAAC;AAEF,kDAAkD;AAClD,MAAM,CAAC,MAAM,OAAO,GAAG,CAAC,GAAW,EAAsB,EAAE;IACzD,MAAM,CAAC,GAAG,GAAG,CAAC,IAAI,EAAE,CAAC;IACrB,IAAI,CAAC,CAAC;QAAE,OAAO,SAAS,CAAC;IACzB,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC;QAAE,OAAO,MAAM,CAAC,CAAC,CAAC,CAAC;IACtC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,IAAI,QAAQ,CAAC,CAAC;QAAE,OAAO,SAAS,CAAC;IAC3D,MAAM,CAAC,GAAG,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;IACzB,IAAI,CAAC,GAAG,CAAC;QAAE,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,GAAG,EAAE,GAAG,QAAQ,CAAC,CAAC,CAAE,EAAE,CAAC,CAAC,CAAC;IACpE,MAAM,IAAI,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAE,CAAE,CAAC;IAChD,MAAM,IAAI,GAAG,CAAC,KAAK,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,GAAG,CAAC,CAAE,CAAE,CAAC;IAClE,OAAO,IAAI,GAAG,EAAE,GAAG,IAAI,CAAC;AAC1B,CAAC,CAAC;AAEF,MAAM,GAAG,GAAG,oBAAoB,CAAC;AAEjC,qEAAqE;AACrE,MAAM,UAAU,GAAqC;IACnD,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC;CAC/C,CAAC;AACF,MAAM,UAAU,GAAqC;IACnD,GAAG,EAAE,CAAC,EAAE,GAAG,EAAE,CAAC,EAAE,GAAG,EAAE,CAAC,EAAE,GAAG,EAAE,CAAC,EAAE,GAAG,EAAE,CAAC,EAAE,GAAG,EAAE,CAAC,EAAE,GAAG,EAAE,CAAC;CACvD,CAAC;AAEF,MAAM,UAAU,GAAG,CAAC,EAAY,EAAY,EAAE,CAAC,CAAC,GAAG,IAAI,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;AAEtF,2CAA2C;AAC3C,MAAM,CAAC,MAAM,SAAS,GAAG,CAAC,CAAS,EAAwB,EAAE;IAC3D,IAAI,gDAAgD,CAAC,IAAI,CAAC,CAAC,CAAC;QAAE,OAAO,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;IACrF,IAAI,wBAAwB,CAAC,IAAI,CAAC,CAAC,CAAC;QAAE,OAAO,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;IACpD,MAAM,EAAE,GAAG,CAAC,GAAG,CAAC,CAAC,QAAQ,CAAC,yCAAyC,CAAC,CAAC;SAClE,OAAO,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAE,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,UAAU,CAAC,CAAC,CAAE,CAAC,CAAC,CAAC;IACzD,IAAI,EAAE,CAAC,MAAM;QAAE,OAAO,UAAU,CAAC,EAAE,CAAC,CAAC;IACrC,MAAM,EAAE,GAAG,CAAC,GAAG,CAAC,CAAC,QAAQ,CAAC,2CAA2C,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,CAAE,CAAC,WAAW,EAAE,CAAE,CAAC,CAAC;IACrH,IAAI,EAAE,CAAC,MAAM;QAAE,OAAO,UAAU,CAAC,EAAE,CAAC,CAAC;IACrC,IAAI,wCAAwC,CAAC,IAAI,CAAC,CAAC,CAAC;QAAE,OAAO,EAAE,CAAC;IAChE,OAAO,SAAS,CAAC;AACnB,CAAC,CAAC;AAEF,qEAAqE;AACrE,uDAAuD;AACvD,MAAM,aAAa,GAAG,CAAC,CAAS,EAAE,CAAS,EAAU,EAAE;IACrD,IAAI,CAAC,GAAG,EAAE;QAAE,OAAO,CAAC,CAAC;IACrB,IAAI,wCAAwC,CAAC,IAAI,CAAC,CAAC,CAAC;QAAE,OAAO,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC;IACpF,IAAI,YAAY,CAAC,IAAI,CAAC,CAAC,CAAC;QAAE,OAAO,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC;IACxD,IAAI,gBAAgB,CAAC,IAAI,CAAC,CAAC,CAAC;QAAE,OAAO,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IACtD,IAAI,mCAAmC,CAAC,IAAI,CAAC,CAAC,CAAC;QAAE,OAAO,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IACzE,OAAO,CAAC,CAAC;AACX,CAAC,CAAC;AAEF,MAAM,OAAO,GAAqC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC;AAE5E,+DAA+D;AAC/D,MAAM,CAAC,MAAM,cAAc,GAAG,CAAC,CAAS,EAAgD,EAAE;IACxF,MAAM,OAAO,GAAG,CAAC,CAAC,KAAK,CAAC,8BAA8B,CAAC,CAAC;IACxD,IAAI,OAAO,EAAE,CAAC;QACZ,MAAM,CAAC,GAAG,aAAa,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;QAC/C,OAAO,EAAE,IAAI,EAAE,CAAC,GAAG,EAAE,EAAE,MAAM,EAAE,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC;IAC3D,CAAC;IACD,MAAM,MAAM,GAAG,CAAC,CAAC,KAAK,CAAC,IAAI,MAAM,CAAC,IAAI,GAAG,wDAAwD,GAAG,eAAe,CAAC,CAAC,CAAC;IACtH,IAAI,MAAM,EAAE,CAAC;QACX,MAAM,EAAE,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC,CAAE,CAAC,CAAC;QAC/B,IAAI,EAAE,KAAK,SAAS,IAAI,EAAE,GAAG,EAAE;YAAE,OAAO,SAAS,CAAC;QAClD,MAAM,CAAC,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,CAAE,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QACtF,OAAO,EAAE,IAAI,EAAE,aAAa,CAAC,EAAE,EAAE,CAAC,CAAC,GAAG,EAAE,EAAE,MAAM,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC;IAC7D,CAAC;IACD,MAAM,IAAI,GAAG,CAAC,CAAC,KAAK,CAAC,wBAAwB,CAAC,CAAC;IAC/C,IAAI,IAAI;QAAE,OAAO,EAAE,IAAI,EAAE,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAE,CAAC,GAAG,EAAE,EAAE,MAAM,EAAE,CAAC,EAAE,CAAC;IACpF,OAAO,SAAS,CAAC;AACnB,CAAC,CAAC;AAEF,qEAAqE;AACrE,MAAM,QAAQ,GAAqC;IACjD,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,GAAG,EAAE,CAAC,EAAE,IAAI,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC;IAChE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,IAAI,EAAE,EAAE,EAAE,KAAK,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE;IACzE,CAAC,EAAE,IAAI,EAAE,CAAC,EAAE,IAAI,EAAE,GAAG,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC,EAAE,IAAI;CACjD,CAAC;AAEF,8CAA8C;AAC9C,MAAM,CAAC,MAAM,aAAa,GAAG,CAAC,CAAS,EAAsB,EAAE;IAC7D,MAAM,IAAI,GAAG,CAAC,CAAC,KAAK,CAAC,qCAAqC,CAAC,CAAC;IAC5D,IAAI,IAAI;QAAE,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAE,CAAC,IAAI,EAAE,CAAC,GAAG,CAAC,CAAC;IAChD,MAAM,EAAE,GAAG,CAAC,CAAC,KAAK,CAAC,IAAI,MAAM,CAAC,eAAe,GAAG,qCAAqC,CAAC,CAAC,CAAC;IACxF,IAAI,EAAE,EAAE,CAAC;QACP,MAAM,CAAC,GAAG,OAAO,CAAC,EAAE,CAAC,CAAC,CAAE,CAAC,CAAC;QAC1B,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,CAAE,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;IAC9D,CAAC;IACD,MAAM,EAAE,GAAG,CAAC,CAAC,KAAK,CAAC,kEAAkE,CAAC,CAAC;IACvF,IAAI,EAAE,EAAE,CAAC;QACP,MAAM,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QACpC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,CAAE,CAAC,WAAW,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;IACvE,CAAC;IACD,OAAO,SAAS,CAAC;AACnB,CAAC,CAAC;AAEF,oEAAoE;AACpE,MAAM,IAAI,GAAG,CAAC,GAAS,EAAE,OAAe,EAAE,IAAY,EAAE,MAAc,EAAU,EAAE,CAChF,IAAI,IAAI,CAAC,GAAG,CAAC,WAAW,EAAE,EAAE,GAAG,CAAC,QAAQ,EAAE,EAAE,GAAG,CAAC,OAAO,EAAE,GAAG,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,OAAO,EAAE,CAAC;AAErG,MAAM,SAAS,GAAG,CAAC,CAAS,EAAE,GAAS,EAAoB,EAAE;IAC3D,MAAM,GAAG,GAAG,CAAC,CAAC,KAAK,CAAC,IAAI,MAAM,CAAC,MAAM,GAAG,8CAA8C,CAAC,CAAC;WACnF,CAAC,CAAC,KAAK,CAAC,gEAAgE,CAAC,CAAC;IAC/E,IAAI,GAAG,EAAE,CAAC;QACR,MAAM,IAAI,GAAG,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAE,CAAC,WAAW,EAAE,CAAC,IAAI,CAAC,CAAC;QAClD,MAAM,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAE,CAAC,IAAI,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QACtE,IAAI,CAAC,GAAG,CAAC;YAAE,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE,EAAE,EAAE,GAAG,CAAC,OAAO,EAAE,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,GAAG,IAAI,CAAC,GAAG,MAAM,EAAE,CAAC;IACxF,CAAC;IACD,MAAM,OAAO,GAAG,CAAC,CAAC,KAAK,CAAC,6CAA6C,CAAC,CAAC;IACvE,IAAI,CAAC,OAAO;QAAE,OAAO,SAAS,CAAC;IAC/B,MAAM,OAAO,GAAG,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,CAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,mBAAmB,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,CAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IAC9F,MAAM,GAAG,GAAG,cAAc,CAAC,CAAC,CAAC,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,CAAE,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,EAAE,EAAE,MAAM,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC;IACxG,IAAI,CAAC,GAAG;QAAE,OAAO,SAAS,CAAC;IAC3B,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE,EAAE,EAAE,IAAI,CAAC,GAAG,EAAE,OAAO,EAAE,GAAG,CAAC,IAAI,EAAE,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC;AACxE,CAAC,CAAC;AAEF,qEAAqE;AACrE;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,SAAS,GAAG,CAAC,IAAY,EAAE,MAAY,IAAI,IAAI,EAAE,EAAoB,EAAE;IAClF,MAAM,CAAC,GAAG,IAAI,CAAC,IAAI,EAAE,CAAC;IACtB,IAAI,CAAC,CAAC;QAAE,OAAO,SAAS,CAAC;IACzB,MAAM,IAAI,GAAG,SAAS,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC;IAC/B,IAAI,IAAI;QAAE,OAAO,IAAI,CAAC;IACtB,MAAM,GAAG,GAAG,cAAc,CAAC,CAAC,CAAC,CAAC;IAC9B,0CAA0C;IAC1C,uBAAuB;IACvB,MAAM,EAAE,GAAG,aAAa,CAAC,CAAC,CAAC,CAAC;IAC5B,IAAI,EAAE,KAAK,SAAS,IAAI,CAAC,GAAG;QAAE,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,OAAO,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC;IAC7F,MAAM,IAAI,GAAG,SAAS,CAAC,CAAC,CAAC,CAAC;IAC1B,IAAI,GAAG;QAAE,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,IAAI,EAAE,IAAI,IAAI,EAAE,EAAE,IAAI,EAAE,GAAG,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,CAAC,MAAM,EAAE,CAAC;IACxF,IAAI,IAAI;QAAE,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,CAAC,CAAC,uBAAuB;IACrF,IAAI,EAAE,KAAK,SAAS;QAAE,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,OAAO,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC;IACrF,OAAO,SAAS,CAAC;AACnB,CAAC,CAAC;AAEF,qEAAqE;AACrE,MAAM,YAAY,GAAG,CAAC,CAAmC,EAAE,GAAS,EAAsB,EAAE;IAC1F,IAAI,CAAC,CAAC,IAAI,CAAC,MAAM,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,MAAM,EAAE,CAAC;QAAE,OAAO,SAAS,CAAC;IACtE,MAAM,CAAC,GAAG,IAAI,IAAI,CAAC,GAAG,CAAC,CAAC;IACxB,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;IACnC,OAAO,CAAC,CAAC,OAAO,EAAE,CAAC;AACrB,CAAC,CAAC;AAEF;;;GAGG;AACH,MAAM,CAAC,MAAM,KAAK,GAAG,CAAC,IAAU,EAAE,GAAS,EAAE,KAAa,EAAW,EAAE;IACrE,MAAM,CAAC,GAAG,GAAG,CAAC,OAAO,EAAE,CAAC;IACxB,QAAQ,IAAI,CAAC,IAAI,EAAE,CAAC;QAClB,KAAK,MAAM;YACT,OAAO,CAAC,IAAI,IAAI,CAAC,EAAE,IAAI,KAAK,GAAG,IAAI,CAAC,EAAE,CAAC;QACzC,KAAK,OAAO;YACV,OAAO,CAAC,GAAG,KAAK,IAAI,IAAI,CAAC,OAAO,GAAG,MAAM,CAAC;QAC5C,KAAK,OAAO,CAAC,CAAC,CAAC;YACb,MAAM,IAAI,GAAG,YAAY,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC;YACrC,OAAO,IAAI,KAAK,SAAS,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC,GAAG,IAAI,GAAG,UAAU,IAAI,KAAK,GAAG,IAAI,CAAC;QAClF,CAAC;IACH,CAAC;AACH,CAAC,CAAC;AAEF,kCAAkC;AAClC,MAAM,CAAC,MAAM,QAAQ,GAAG,CAAC,IAAU,EAAE,KAAa,EAAE,MAAY,IAAI,IAAI,EAAE,EAAU,EAAE;IACpF,IAAI,IAAI,CAAC,IAAI,KAAK,MAAM;QAAE,OAAO,IAAI,CAAC,EAAE,CAAC;IACzC,IAAI,IAAI,CAAC,IAAI,KAAK,OAAO;QAAE,OAAO,IAAI,CAAC,GAAG,CAAC,KAAK,GAAG,IAAI,CAAC,OAAO,GAAG,MAAM,EAAE,GAAG,CAAC,OAAO,EAAE,CAAC,CAAC;IACzF,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC;QAC3B,MAAM,CAAC,GAAG,IAAI,IAAI,CAAC,GAAG,CAAC,WAAW,EAAE,EAAE,GAAG,CAAC,QAAQ,EAAE,EAAE,GAAG,CAAC,OAAO,EAAE,GAAG,CAAC,EAAE,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,MAAM,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;QACvG,IAAI,CAAC,CAAC,OAAO,EAAE,GAAG,GAAG,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,IAAI,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC;YAAE,OAAO,CAAC,CAAC,OAAO,EAAE,CAAC;IAC/G,CAAC;IACD,OAAO,GAAG,CAAC,OAAO,EAAE,CAAC;AACvB,CAAC,CAAC;AAEF,qEAAqE;AACrE,MAAM,IAAI,GAAG,CAAC,CAAS,EAAE,CAAS,EAAU,EAAE,CAAC,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC,IAAI,MAAM,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC;AAC7G,MAAM,WAAW,GAAG,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,CAAC;AAExD,MAAM,SAAS,GAAG,CAAC,IAAc,EAAU,EAAE;IAC3C,IAAI,CAAC,IAAI,CAAC,MAAM;QAAE,OAAO,IAAI,CAAC;IAC9B,MAAM,CAAC,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;IACzB,IAAI,CAAC,KAAK,WAAW;QAAE,OAAO,OAAO,CAAC;IACtC,IAAI,CAAC,KAAK,KAAK;QAAE,OAAO,MAAM,CAAC;IAC/B,OAAO,KAAK,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,WAAW,CAAC,CAAC,CAAE,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC;AAC3D,CAAC,CAAC;AAEF,kCAAkC;AAClC,MAAM,CAAC,MAAM,YAAY,GAAG,CAAC,IAAU,EAAU,EAAE;IACjD,QAAQ,IAAI,CAAC,IAAI,EAAE,CAAC;QAClB,KAAK,OAAO;YACV,OAAO,GAAG,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC;QACnE,KAAK,OAAO,CAAC,CAAC,CAAC;YACb,MAAM,EAAE,OAAO,EAAE,CAAC,EAAE,GAAG,IAAI,CAAC;YAC5B,IAAI,CAAC,GAAG,IAAI,KAAK,CAAC;gBAAE,OAAO,KAAK,CAAC,GAAG,IAAI,IAAI,CAAC;YAC7C,IAAI,CAAC,GAAG,EAAE,KAAK,CAAC;gBAAE,OAAO,KAAK,CAAC,GAAG,EAAE,KAAK,CAAC;YAC1C,OAAO,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,KAAK,IAAI,CAAC,KAAK,CAAC,CAAC,GAAG,EAAE,CAAC,OAAO,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC;QACzE,CAAC;QACD,KAAK,MAAM,CAAC,CAAC,CAAC;YACZ,MAAM,CAAC,GAAG,IAAI,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;YAC5B,OAAO,GAAG,CAAC,CAAC,WAAW,EAAE,IAAI,MAAM,CAAC,CAAC,CAAC,QAAQ,EAAE,GAAG,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC,IAAI,MAAM,CAAC,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC,IAAI,IAAI,CAAC,CAAC,CAAC,QAAQ,EAAE,EAAE,CAAC,CAAC,UAAU,EAAE,CAAC,OAAO,CAAC;QAC9J,CAAC;IACH,CAAC;AACH,CAAC,CAAC"}
@@ -132,6 +132,13 @@ export const tagBadge = (target) => {
132
132
  const tag = tagOfKey(target);
133
133
  return tag ? `${labelFor(tag)} ` : "🧙 ";
134
134
  };
135
+ /** 头与正文之间该留多少空白。默认同行一个空格 —— 头只是一句话的前缀,省一行。
136
+ * 块级语法认行首,两种例外:
137
+ * • ``` 栅栏必须顶行首才被 WeCom 认作代码块,同行拼头会把它挤成字面文本;
138
+ * • 表格更严 —— 它**不能打断一个段落**,只隔一个换行,首行表头会被当成头那一
139
+ * 段的续行,整张表塌成一行带竖线的文字。所以表格必须空行隔开。
140
+ * HEADER_RE 尾部的 \s* 吃得掉这些换行,parseTagHeader 剥头不受影响。 */
141
+ export const headSep = (content) => content.startsWith("```") ? "\n" : content.startsWith("|") ? "\n\n" : " ";
135
142
  /** Prefix markdown content with the `emoji \`#tag\`` header; identity when untagged.
136
143
  * `seq` ("2/5") marks one piece of a split push — it rides in the same header
137
144
  * line so every chunk of a long reply is attributable on its own, and shows
@@ -139,9 +146,6 @@ export const tagBadge = (target) => {
139
146
  export const withTagHeader = (target, content, seq) => {
140
147
  const tag = tagOfKey(target);
141
148
  const head = [tag ? `${labelFor(tag)} #${tag}` : "🧙", seq ?? ""].filter(Boolean).join(" ");
142
- // 栅栏必须顶行首才被 WeCom 认作代码块 —— 同行拼头会把 ``` 挤成字面文本。
143
- // HEADER_RE 尾部的 \s* 吃得掉换行,parseTagHeader 剥头不受影响。
144
- const sep = content.startsWith("```") ? "\n" : " ";
145
- return `${head}${sep}${content}`;
149
+ return `${head}${headSep(content)}${content}`;
146
150
  };
147
151
  //# sourceMappingURL=session-label.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"session-label.js","sourceRoot":"","sources":["../../shared/session-label.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"session-label.js","sourceRoot":"","sources":["../../shared/session-label.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "wezard",
3
- "version": "1.3.23",
3
+ "version": "1.4.0",
4
4
  "description": "Bridge Claude Code and WeCom: PreToolUse approval cards + bidirectional tmux session mirror with image paste",
5
5
  "type": "module",
6
6
  "license": "MIT",
@@ -1,106 +0,0 @@
1
- import { patchJsonc } from "../shared/config-writer.js";
2
- import { withTagHeader } from "../shared/session-label.js";
3
- const stripPrefix = (s) => {
4
- const i = s.indexOf(":");
5
- return i >= 0 ? s.slice(i + 1) : s;
6
- };
7
- // Topic name 允许中文/字母数字/`-`/`_`/`.`,不允许空白。剥离外层引号(中英文单双)。
8
- const stripQuotes = (s) => s.trim().replace(/^[\s'"‘’“”`]+|[\s'"‘’“”`]+$/gu, "");
9
- const normTopic = (raw) => stripQuotes(raw);
10
- // ── 订阅表 ────────────────────────────────────────────────────────
11
- export const subscribe = (cfg, sourcePath, topic, target) => {
12
- const t = normTopic(topic);
13
- if (!t)
14
- return { added: false };
15
- const arr = cfg.topics.subs[t] ? cfg.topics.subs[t].slice() : [];
16
- if (arr.includes(target))
17
- return { added: false };
18
- arr.push(target);
19
- cfg.topics.subs[t] = arr;
20
- patchJsonc(sourcePath, [{ path: ["topics", "subs", t], value: arr }]);
21
- return { added: true };
22
- };
23
- export const unsubscribe = (cfg, sourcePath, topic, target) => {
24
- const t = normTopic(topic);
25
- const arr = cfg.topics.subs[t] ?? [];
26
- const next = arr.filter((x) => x !== target);
27
- if (next.length === arr.length)
28
- return { removed: false };
29
- cfg.topics.subs[t] = next;
30
- patchJsonc(sourcePath, [{ path: ["topics", "subs", t], value: next }]);
31
- return { removed: true };
32
- };
33
- export const listSubs = (cfg, target) => {
34
- const entries = Object.entries(cfg.topics.subs);
35
- const filtered = target ? entries.filter(([, subs]) => subs.includes(target)) : entries;
36
- return filtered.map(([topic, targets]) => ({ topic, targets: targets.slice() }));
37
- };
38
- const persistSchedules = (cfg, sourcePath) => {
39
- patchJsonc(sourcePath, [{ path: ["topics", "schedules"], value: cfg.topics.schedules }]);
40
- };
41
- export const addSchedule = (cfg, sourcePath, s) => {
42
- cfg.topics.schedules.push(s);
43
- persistSchedules(cfg, sourcePath);
44
- };
45
- export const removeSchedulesByTopic = (cfg, sourcePath, topic) => {
46
- const t = normTopic(topic);
47
- const before = cfg.topics.schedules.length;
48
- cfg.topics.schedules = cfg.topics.schedules.filter((s) => s.topic !== t);
49
- const removed = before - cfg.topics.schedules.length;
50
- if (removed > 0)
51
- persistSchedules(cfg, sourcePath);
52
- return removed;
53
- };
54
- export const listSchedules = (cfg, topic) => {
55
- const t = topic ? normTopic(topic) : undefined;
56
- return t ? cfg.topics.schedules.filter((s) => s.topic === t) : cfg.topics.schedules.slice();
57
- };
58
- export const publish = async (client, cfg, log, topic, content) => {
59
- const t = normTopic(topic);
60
- const subs = (cfg.topics.subs[t] ?? []).slice();
61
- let sent = 0;
62
- let failed = 0;
63
- for (const s of subs) {
64
- try {
65
- // 订阅者 key 可能带 `#tag` (订阅是按会话 key 记的) —— 广播落到该会话的
66
- // 视觉通道里, 与该会话的其它气泡一致。
67
- await client.sendMessage(stripPrefix(s), {
68
- msgtype: "markdown",
69
- markdown: { content: withTagHeader(s, content) },
70
- });
71
- sent++;
72
- }
73
- catch (e) {
74
- failed++;
75
- log.warn({ topic: t, target: s, err: e.message }, "publish target failed");
76
- }
77
- }
78
- log.info({ topic: t, subs: subs.length, sent, failed }, "publish");
79
- return { topic: t, sent, failed, subs };
80
- };
81
- export const startScheduler = ({ client, cfg, log }) => {
82
- let lastKey = "";
83
- const tick = async () => {
84
- if (!client.isConnected)
85
- return;
86
- const now = new Date();
87
- const key = `${now.getFullYear()}-${now.getMonth()}-${now.getDate()}-${now.getHours()}-${now.getMinutes()}`;
88
- if (key === lastKey)
89
- return;
90
- lastKey = key;
91
- const h = now.getHours();
92
- const m = now.getMinutes();
93
- const due = cfg.topics.schedules.filter((s) => s.hour === h && s.minute === m);
94
- for (const s of due) {
95
- try {
96
- await publish(client, cfg, log, s.topic, s.content);
97
- }
98
- catch (e) {
99
- log.error({ topic: s.topic, err: e.message }, "scheduled publish failed");
100
- }
101
- }
102
- };
103
- const timer = setInterval(() => { void tick(); }, 20_000);
104
- return { stop: () => clearInterval(timer) };
105
- };
106
- //# sourceMappingURL=topics.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"topics.js","sourceRoot":"","sources":["../../daemon/topics.ts"],"names":[],"mappings":"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"}