skill-schedule 0.1.0 → 0.2.1

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 (128) hide show
  1. package/SKILL.md +105 -0
  2. package/dist/cli/cmd_read.js +174 -116
  3. package/dist/cli/cmd_read.js.map +1 -1
  4. package/dist/cli/config.d.ts +16 -0
  5. package/dist/cli/config.d.ts.map +1 -0
  6. package/dist/cli/config.js +84 -0
  7. package/dist/cli/config.js.map +1 -0
  8. package/dist/cli/health.d.ts +7 -0
  9. package/dist/cli/health.d.ts.map +1 -0
  10. package/dist/cli/health.js +32 -0
  11. package/dist/cli/health.js.map +1 -0
  12. package/dist/config.d.ts +43 -0
  13. package/dist/config.d.ts.map +1 -0
  14. package/dist/config.js +64 -0
  15. package/dist/config.js.map +1 -0
  16. package/dist/fetch/db.d.ts +4 -0
  17. package/dist/fetch/db.d.ts.map +1 -1
  18. package/dist/fetch/db.js +10 -0
  19. package/dist/fetch/db.js.map +1 -1
  20. package/dist/fetch/errors.d.ts +1 -1
  21. package/dist/fetch/errors.d.ts.map +1 -1
  22. package/dist/fetch/errors.js.map +1 -1
  23. package/dist/fetch/feishu.d.ts +33 -9
  24. package/dist/fetch/feishu.d.ts.map +1 -1
  25. package/dist/fetch/feishu.js +137 -23
  26. package/dist/fetch/feishu.js.map +1 -1
  27. package/dist/fetch/index.d.ts +4 -4
  28. package/dist/fetch/index.d.ts.map +1 -1
  29. package/dist/fetch/index.js +3 -3
  30. package/dist/fetch/index.js.map +1 -1
  31. package/dist/fetch/paths.d.ts +5 -3
  32. package/dist/fetch/paths.d.ts.map +1 -1
  33. package/dist/fetch/paths.js +19 -24
  34. package/dist/fetch/paths.js.map +1 -1
  35. package/dist/health.d.ts +41 -0
  36. package/dist/health.d.ts.map +1 -0
  37. package/dist/health.js +580 -0
  38. package/dist/health.js.map +1 -0
  39. package/dist/help/helpFile.d.ts +69 -0
  40. package/dist/help/helpFile.d.ts.map +1 -0
  41. package/dist/help/helpFile.js +136 -0
  42. package/dist/help/helpFile.js.map +1 -0
  43. package/dist/help/helpPaths.d.ts +14 -0
  44. package/dist/help/helpPaths.d.ts.map +1 -0
  45. package/dist/help/helpPaths.js +40 -0
  46. package/dist/help/helpPaths.js.map +1 -0
  47. package/dist/help/lookup.d.ts.map +1 -1
  48. package/dist/help/lookup.js +8 -1
  49. package/dist/help/lookup.js.map +1 -1
  50. package/dist/help/output.d.ts +22 -0
  51. package/dist/help/output.d.ts.map +1 -0
  52. package/dist/help/output.js +79 -0
  53. package/dist/help/output.js.map +1 -0
  54. package/dist/help/scenes/help-assets.d.ts +97 -0
  55. package/dist/help/scenes/help-assets.d.ts.map +1 -0
  56. package/dist/help/scenes/help-assets.js +2148 -0
  57. package/dist/help/scenes/help-assets.js.map +1 -0
  58. package/dist/plan/check.d.ts +3 -0
  59. package/dist/plan/check.d.ts.map +1 -0
  60. package/dist/plan/check.js +71 -0
  61. package/dist/plan/check.js.map +1 -0
  62. package/dist/plan/context.d.ts +18 -0
  63. package/dist/plan/context.d.ts.map +1 -0
  64. package/dist/plan/context.js +4 -0
  65. package/dist/plan/context.js.map +1 -0
  66. package/dist/plan/ensure.d.ts +4 -0
  67. package/dist/plan/ensure.d.ts.map +1 -0
  68. package/dist/plan/ensure.js +140 -0
  69. package/dist/plan/ensure.js.map +1 -0
  70. package/dist/plan/index.d.ts +8 -0
  71. package/dist/plan/index.d.ts.map +1 -0
  72. package/dist/plan/index.js +56 -0
  73. package/dist/plan/index.js.map +1 -0
  74. package/dist/plan/iso.d.ts +27 -0
  75. package/dist/plan/iso.d.ts.map +1 -0
  76. package/dist/plan/iso.js +55 -0
  77. package/dist/plan/iso.js.map +1 -0
  78. package/dist/plan/overview.d.ts +23 -0
  79. package/dist/plan/overview.d.ts.map +1 -0
  80. package/dist/plan/overview.js +38 -0
  81. package/dist/plan/overview.js.map +1 -0
  82. package/dist/plan/pull.d.ts +25 -0
  83. package/dist/plan/pull.d.ts.map +1 -0
  84. package/dist/plan/pull.js +83 -0
  85. package/dist/plan/pull.js.map +1 -0
  86. package/dist/plan/receipt.d.ts +52 -0
  87. package/dist/plan/receipt.d.ts.map +1 -0
  88. package/dist/plan/receipt.js +57 -0
  89. package/dist/plan/receipt.js.map +1 -0
  90. package/dist/plan/remoteDay.d.ts +62 -0
  91. package/dist/plan/remoteDay.d.ts.map +1 -0
  92. package/dist/plan/remoteDay.js +102 -0
  93. package/dist/plan/remoteDay.js.map +1 -0
  94. package/dist/plan/single.d.ts +4 -0
  95. package/dist/plan/single.d.ts.map +1 -0
  96. package/dist/plan/single.js +176 -0
  97. package/dist/plan/single.js.map +1 -0
  98. package/dist/plan/sync.d.ts +14 -0
  99. package/dist/plan/sync.d.ts.map +1 -0
  100. package/dist/plan/sync.js +158 -0
  101. package/dist/plan/sync.js.map +1 -0
  102. package/dist/plan/upsert.d.ts +5 -0
  103. package/dist/plan/upsert.d.ts.map +1 -0
  104. package/dist/plan/upsert.js +102 -0
  105. package/dist/plan/upsert.js.map +1 -0
  106. package/dist/policy/index.d.ts +2 -2
  107. package/dist/policy/index.d.ts.map +1 -1
  108. package/dist/policy/index.js +1 -1
  109. package/dist/policy/index.js.map +1 -1
  110. package/dist/policy/plan.d.ts +16 -1
  111. package/dist/policy/plan.d.ts.map +1 -1
  112. package/dist/policy/plan.js +51 -1
  113. package/dist/policy/plan.js.map +1 -1
  114. package/dist/policy/wakewords.js +4 -4
  115. package/dist/policy/wakewords.js.map +1 -1
  116. package/dist/render/html.d.ts +0 -6
  117. package/dist/render/html.d.ts.map +1 -1
  118. package/dist/render/html.js +0 -17
  119. package/dist/render/html.js.map +1 -1
  120. package/dist/render/index.d.ts +2 -1
  121. package/dist/render/index.d.ts.map +1 -1
  122. package/dist/render/index.js +3 -1
  123. package/dist/render/index.js.map +1 -1
  124. package/dist/shared/templateFill.d.ts +4 -0
  125. package/dist/shared/templateFill.d.ts.map +1 -0
  126. package/dist/shared/templateFill.js +20 -0
  127. package/dist/shared/templateFill.js.map +1 -0
  128. package/package.json +7 -4
@@ -0,0 +1,14 @@
1
+ import type { PlanEvent } from '../fetch/index.js';
2
+ import { type PlanOpCtx, type PlanOpResult } from './context.js';
3
+ import { type RemoteSnapshot } from './remoteDay.js';
4
+ export interface ReconcileOutcome {
5
+ backfilled: {
6
+ id: number;
7
+ remoteId: string;
8
+ }[];
9
+ skipped: string[];
10
+ }
11
+ /** 阶段 0:远端 → 本地回填标识。唯一命中才回填;多候选记「需手工处理」并跳过。 */
12
+ export declare function reconcileIds(snap: RemoteSnapshot, locals: PlanEvent[]): ReconcileOutcome;
13
+ export declare function runSync(ctx: PlanOpCtx): PlanOpResult;
14
+ //# sourceMappingURL=sync.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"sync.d.ts","sourceRoot":"","sources":["../../src/plan/sync.ts"],"names":[],"mappings":"AAYA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,mBAAmB,CAAC;AACnD,OAAO,EAAiB,KAAK,SAAS,EAAE,KAAK,YAAY,EAAE,MAAM,cAAc,CAAC;AAEhF,OAAO,EAAuE,KAAK,cAAc,EAAE,MAAM,gBAAgB,CAAC;AAE1H,MAAM,WAAW,gBAAgB;IAC/B,UAAU,EAAE;QAAE,EAAE,EAAE,MAAM,CAAC;QAAC,QAAQ,EAAE,MAAM,CAAA;KAAE,EAAE,CAAC;IAC/C,OAAO,EAAE,MAAM,EAAE,CAAC;CACnB;AAED,+CAA+C;AAC/C,wBAAgB,YAAY,CAAC,IAAI,EAAE,cAAc,EAAE,MAAM,EAAE,SAAS,EAAE,GAAG,gBAAgB,CAmBxF;AAED,wBAAgB,OAAO,CAAC,GAAG,EAAE,SAAS,GAAG,YAAY,CA4GpD"}
@@ -0,0 +1,158 @@
1
+ // 日程与计划·#20 日程管家同步(op=sync):反向对账(阶段 0)+ 全量 diff + 两侧兜底清理。
2
+ //
3
+ // 阶段 0 · 反向对账(S-11):远端有、本地缺标识的,按 `(起, 止, 标题)` 索引回填;**多条候选不猜**(跳过并记账)。
4
+ // 阶段 A · 按本地存的标识配对:远端那条若被手动改了时段,尊重用户,把时段同步回本地(老口径);
5
+ // 题/备注与本地不一致则以本地为准改远端。
6
+ // 阶段 B · 本地没标识的按四元组认;认不出才建。**过去日期默认不补建**(避免死灰复燃,老口径 `feishu_sync.py:756-759`)。
7
+ // 阶段 C · 远端有、本地没有、且**带归属锚**的 → 孤儿,删;不带锚的一律不动(S-12)。
8
+ // 收口 · 同一时间槽里带锚的冗余对象(历史重复建的残留)有兜底清理(S-12 同槽一侧)。
9
+ //
10
+ // 远端不可用即阻断(S-09/老家唯一「不可用就阻断」的入口):回执标 `unavailable`,退出码非 0。
11
+ import { listPlanEvents, setFeishuEventId, updatePlanEvent, larkUpdateEvent, composeFeishuDescription } from '../fetch/index.js';
12
+ import { resolveDateParam, todayStr } from '../policy/index.js';
13
+ import { receiptResult } from './context.js';
14
+ import { buildReceipt } from './receipt.js';
15
+ import { takeSnapshot, alignOne, matchIn, orphansOf, removeRemote, cleanSlot } from './remoteDay.js';
16
+ /** 阶段 0:远端 → 本地回填标识。唯一命中才回填;多候选记「需手工处理」并跳过。 */
17
+ export function reconcileIds(snap, locals) {
18
+ const index = new Map();
19
+ for (const e of snap.events) {
20
+ if (!e.owned)
21
+ continue;
22
+ const k = e.slotStart + '|' + e.slotEnd + '|' + e.summary;
23
+ index.set(k, [...(index.get(k) ?? []), e.eventId]);
24
+ }
25
+ const out = { backfilled: [], skipped: [] };
26
+ for (const e of locals) {
27
+ if (e.feishu_event_id) {
28
+ // 已绑标识的也认领一下:免得阶段 C 把它们当成孤儿删掉。
29
+ if (snap.events.some((r) => r.eventId === e.feishu_event_id))
30
+ snap.claimed.add(e.feishu_event_id);
31
+ continue;
32
+ }
33
+ const hit = index.get(e.time_start + '|' + e.time_end + '|' + e.title) ?? [];
34
+ if (hit.length === 1)
35
+ out.backfilled.push({ id: e.id, remoteId: hit[0] });
36
+ else if (hit.length > 1)
37
+ out.skipped.push('本地 #' + e.id + '「' + e.title + '」远端有 ' + hit.length + ' 条撞键候选,跳过(需手工处理)');
38
+ }
39
+ return out;
40
+ }
41
+ export function runSync(ctx) {
42
+ const date = resolveDateParam(ctx.params);
43
+ if (!ctx.cli) {
44
+ const why = ctx.remoteWhy ?? '远端不可用';
45
+ return receiptResult(buildReceipt({
46
+ op: 'sync',
47
+ message: '重同步阻断:远端不可用(' + why + ')',
48
+ local: 'unchanged', remote: 'unavailable', remoteId: null,
49
+ errors: [why], date,
50
+ }));
51
+ }
52
+ const errors = [];
53
+ const notes = [];
54
+ let snap;
55
+ try {
56
+ snap = takeSnapshot(ctx.cli, date);
57
+ }
58
+ catch (e) {
59
+ const m = e instanceof Error ? e.message : String(e);
60
+ return receiptResult(buildReceipt({
61
+ op: 'sync', message: '重同步阻断:' + m, local: 'unchanged', remote: 'unavailable',
62
+ remoteId: null, errors: [m], date,
63
+ }));
64
+ }
65
+ errors.push(...snap.pullErrors);
66
+ // 阶段 0:反向对账
67
+ const rec = reconcileIds(snap, listPlanEvents(ctx.handle, date));
68
+ for (const m of rec.backfilled)
69
+ setFeishuEventId(ctx.handle, m.id, m.remoteId);
70
+ notes.push(...rec.skipped);
71
+ const isPast = date < todayStr();
72
+ const counts = { backfilled: rec.backfilled.length, created: 0, updated: 0, deleted: 0, timeSynced: 0, pastSkipped: 0, duplicates: 0, failed: 0 };
73
+ // 阶段 A/B:本地 → 远端
74
+ for (const e of listPlanEvents(ctx.handle, date)) {
75
+ const spec = {
76
+ date, timeStart: e.time_start, timeEnd: e.time_end,
77
+ title: e.title, notes: e.notes, remoteId: e.feishu_event_id,
78
+ };
79
+ const hit = matchIn(snap, spec);
80
+ if (!hit) {
81
+ if (isPast) {
82
+ counts.pastSkipped++;
83
+ continue;
84
+ } // 过去日期:本地有、远端无 → 默认不补建
85
+ const made = alignOne(snap, spec);
86
+ errors.push(...made.errors);
87
+ notes.push(...made.notes);
88
+ if (made.remote === 'unavailable' || !made.remoteId) {
89
+ counts.failed++;
90
+ continue;
91
+ }
92
+ setFeishuEventId(ctx.handle, e.id, made.remoteId);
93
+ counts.created++;
94
+ continue;
95
+ }
96
+ snap.claimed.add(hit.eventId);
97
+ if (hit.eventId !== e.feishu_event_id)
98
+ setFeishuEventId(ctx.handle, e.id, hit.eventId);
99
+ // 飞书侧被手动改了时段 → 尊重用户,把时段同步回本地
100
+ if (hit.slotStart !== e.time_start || hit.slotEnd !== e.time_end) {
101
+ updatePlanEvent(ctx.handle, e.id, { time_start: hit.slotStart, time_end: hit.slotEnd });
102
+ counts.timeSynced++;
103
+ }
104
+ const want = composeFeishuDescription(e.notes);
105
+ if (hit.summary !== e.title || hit.description !== want) {
106
+ try {
107
+ larkUpdateEvent(ctx.cli, hit.eventId, { summary: e.title, description: want });
108
+ counts.updated++;
109
+ }
110
+ catch (err) {
111
+ counts.failed++;
112
+ errors.push('远端改失败:' + hit.eventId + '(' + (err instanceof Error ? err.message : String(err)) + ')');
113
+ }
114
+ }
115
+ }
116
+ // 阶段 C:孤儿(带锚、无人认领)→ 删
117
+ for (const orphan of orphansOf(snap)) {
118
+ const r = removeRemote(snap, orphan.eventId);
119
+ if (r.ok)
120
+ counts.deleted++;
121
+ else {
122
+ counts.failed++;
123
+ errors.push('孤儿清理失败:' + orphan.eventId + '(' + r.error + ')');
124
+ }
125
+ }
126
+ // 收口:同槽冗余(带锚)兜底清理——留一条(优先认领过的那条),其余删。
127
+ const owned = snap.events.filter((e) => e.owned);
128
+ const bySlot = new Map();
129
+ for (const e of owned) {
130
+ const k = e.slotStart + '|' + e.slotEnd;
131
+ bySlot.set(k, [...(bySlot.get(k) ?? []), e]);
132
+ }
133
+ for (const [, group] of bySlot) {
134
+ if (group.length < 2)
135
+ continue;
136
+ counts.duplicates += group.length - 1;
137
+ const keeper = group.find((g) => snap.claimed.has(g.eventId)) ?? group[0];
138
+ const slot = cleanSlot(snap, {
139
+ date, timeStart: keeper.slotStart, timeEnd: keeper.slotEnd,
140
+ title: keeper.summary, notes: null, keepId: keeper.eventId,
141
+ });
142
+ counts.deleted += slot.deleted.length;
143
+ errors.push(...slot.errors);
144
+ }
145
+ const remote = counts.failed > 0 ? 'unavailable'
146
+ : counts.created > 0 ? 'created_feishu'
147
+ : counts.updated > 0 ? 'updated_feishu'
148
+ : counts.deleted > 0 ? 'deleted_feishu' : 'found_feishu';
149
+ const message = '已同步 ' + date + ':回填 ' + counts.backfilled + '/新增 ' + counts.created
150
+ + '/更新 ' + counts.updated + '/清理 ' + counts.deleted + '/时段回写 ' + counts.timeSynced
151
+ + (counts.pastSkipped ? '/过去日期跳过 ' + counts.pastSkipped : '')
152
+ + (counts.duplicates ? '/同槽冗余 ' + counts.duplicates : '')
153
+ + (errors.length ? '/错误 ' + errors.length : '');
154
+ return receiptResult(buildReceipt({
155
+ op: 'sync', message, local: 'updated', remote, remoteId: null, errors, notes, date, counts,
156
+ }));
157
+ }
158
+ //# sourceMappingURL=sync.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"sync.js","sourceRoot":"","sources":["../../src/plan/sync.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,5 @@
1
+ import { type PlanOpCtx, type PlanOpResult } from './context.js';
2
+ /** `op=preview`:只校验不落盘(24h 覆盖 + 字段合法),不碰远端。 */
3
+ export declare function runPreview(ctx: PlanOpCtx): PlanOpResult;
4
+ export declare function runUpsert(ctx: PlanOpCtx): PlanOpResult;
5
+ //# sourceMappingURL=upsert.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"upsert.d.ts","sourceRoot":"","sources":["../../src/plan/upsert.ts"],"names":[],"mappings":"AASA,OAAO,EAAiB,KAAK,SAAS,EAAE,KAAK,YAAY,EAAE,MAAM,cAAc,CAAC;AAIhF,+CAA+C;AAC/C,wBAAgB,UAAU,CAAC,GAAG,EAAE,SAAS,GAAG,YAAY,CAUvD;AAYD,wBAAgB,SAAS,CAAC,GAAG,EAAE,SAAS,GAAG,YAAY,CAyDtD"}
@@ -0,0 +1,102 @@
1
+ // 日程与计划·#17 商量计划(整日覆盖式写入)与它的预览档。
2
+ //
3
+ // 两种语义分得开(S-13):
4
+ // `op=upsert`=**覆盖**:整日先软删再整批落,本地以 (日期, 起, 止) 为身份;
5
+ // `op=ensure`=**缺则补**:命中即认,不改既有字段。
6
+ // 覆盖的那一侧还要把远端也覆盖掉:逐条对齐(建/认)+ 该日**带归属锚**却已无本地对应的远端对象删掉
7
+ // (S-12 的孤儿一侧;老实现把这一步留在 `diff_and_sync`,本实现随合成写一起做掉)。
8
+ import { upsertPlanEvents, setFeishuEventId } from '../fetch/index.js';
9
+ import { validateUpsertInput } from '../policy/index.js';
10
+ import { receiptResult } from './context.js';
11
+ import { buildReceipt, REMOTE_LABEL } from './receipt.js';
12
+ import { takeSnapshot, alignOne, orphansOf, removeRemote } from './remoteDay.js';
13
+ /** `op=preview`:只校验不落盘(24h 覆盖 + 字段合法),不碰远端。 */
14
+ export function runPreview(ctx) {
15
+ const { date, events } = validateUpsertInput(ctx.params);
16
+ return receiptResult(buildReceipt({
17
+ op: 'preview',
18
+ message: '预览通过:' + date + ' ' + events.length + ' 个事件 00:00~24:00 连续(确认后 op=upsert 落盘)',
19
+ local: 'preview',
20
+ remote: 'none',
21
+ remoteId: null,
22
+ date,
23
+ }));
24
+ }
25
+ /** 一整日里逐条动作合起来算哪一档:只要有一条没成,就是「远端没成」。 */
26
+ function dominantRemote(counts) {
27
+ if (counts.failed > 0)
28
+ return 'unavailable';
29
+ if (counts.created > 0)
30
+ return 'created_feishu';
31
+ if (counts.deleted > 0)
32
+ return 'deleted_feishu';
33
+ return 'found_feishu';
34
+ }
35
+ export function runUpsert(ctx) {
36
+ const { date, events } = validateUpsertInput(ctx.params);
37
+ const rows = upsertPlanEvents(ctx.handle, date, events);
38
+ const errors = [];
39
+ const notes = [];
40
+ const counts = { created: 0, found: 0, deleted: 0, failed: 0 };
41
+ let remote;
42
+ if (ctx.cli) {
43
+ let snap = null;
44
+ try {
45
+ snap = takeSnapshot(ctx.cli, date);
46
+ }
47
+ catch (e) {
48
+ errors.push(e instanceof Error ? e.message : String(e));
49
+ }
50
+ if (snap) {
51
+ errors.push(...snap.pullErrors);
52
+ for (const row of rows) {
53
+ const out = alignOne(snap, {
54
+ date,
55
+ timeStart: row.time_start,
56
+ timeEnd: row.time_end,
57
+ title: row.title,
58
+ notes: row.notes,
59
+ remoteId: row.feishu_event_id,
60
+ });
61
+ errors.push(...out.errors);
62
+ notes.push(...out.notes);
63
+ if (out.remote === 'created_feishu')
64
+ counts.created++;
65
+ else if (out.remote === 'found_feishu')
66
+ counts.found++;
67
+ else
68
+ counts.failed++;
69
+ if (out.remoteId && out.remoteId !== row.feishu_event_id)
70
+ setFeishuEventId(ctx.handle, row.id, out.remoteId);
71
+ }
72
+ // 覆盖语义的第二半:本地这一日已没有的、带归属锚的远端对象,删掉。
73
+ for (const orphan of orphansOf(snap)) {
74
+ const r = removeRemote(snap, orphan.eventId);
75
+ if (r.ok)
76
+ counts.deleted++;
77
+ else {
78
+ counts.failed++;
79
+ errors.push('孤儿清理失败:' + orphan.eventId + '(' + r.error + ')');
80
+ }
81
+ }
82
+ remote = dominantRemote(counts);
83
+ }
84
+ else {
85
+ remote = 'unavailable';
86
+ }
87
+ }
88
+ else if (ctx.remoteWhy) {
89
+ errors.push(ctx.remoteWhy);
90
+ remote = 'unavailable';
91
+ }
92
+ else {
93
+ remote = 'skipped';
94
+ }
95
+ const message = '已落盘(覆盖):' + date + ' ' + rows.length + ' 个事件;远端新增 ' + counts.created
96
+ + '/认出 ' + counts.found + '/清理 ' + counts.deleted + '(' + REMOTE_LABEL[remote] + ')';
97
+ return receiptResult(buildReceipt({
98
+ op: 'upsert', message, local: 'upserted', remote,
99
+ remoteId: null, errors, notes, date, counts: { ...counts, events: rows.length },
100
+ }));
101
+ }
102
+ //# sourceMappingURL=upsert.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"upsert.js","sourceRoot":"","sources":["../../src/plan/upsert.ts"],"names":[],"mappings":"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"}
@@ -3,8 +3,8 @@ export type { Anomaly } from './category.js';
3
3
  export { todayStr, relativeToDate, relativeToRange, recentNDays, RELATIVE_DATES, RELATIVE_RANGES, } from './routing.js';
4
4
  export { DATE_RE, TIME_RE, MONTH_RE, normalizeDate, normalizeMonth, normalizeTime, toMinutes, resolveDateParam, resolveRangeParam, validateAddInput, validateAmendInput, validateSummaryInput, validateCompareInput, } from './record.js';
5
5
  export type { AddInput, CompareKind } from './record.js';
6
- export { VALID_COMPLETIONS, validateEvent, assertCoverage24h, validateUpsertInput, validateEnsureInput, validateUpdateInput, parsePlanOp, parseRecordOp, } from './plan.js';
7
- export type { PlanEventInput, PlanWriteOp, RecordWriteOp } from './plan.js';
6
+ export { VALID_COMPLETIONS, validateEvent, assertCoverage24h, validateUpsertInput, validateEnsureInput, validateEnsureBatchInput, validateUpdateInput, parsePlanOp, parseRecordOp, parseFeishuMode, parsePlanView, PLAN_WRITE_OPS_OVERWRITE, PLAN_WRITE_OPS_FILL, } from './plan.js';
7
+ export type { PlanEventInput, EnsureBatchItem, PlanWriteOp, RecordWriteOp, PlanFeishuMode, PlanView } from './plan.js';
8
8
  export { routeWakeword, WAKE_TABLE } from './wakewords.js';
9
9
  export type { ScheduleKey, WakeRoute, WakeEntry } from './wakewords.js';
10
10
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/policy/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,gBAAgB,EAAE,iBAAiB,EAAE,aAAa,EAAE,iBAAiB,EACrE,UAAU,EAAE,UAAU,EAAE,cAAc,EAAE,IAAI,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,EACzE,cAAc,EAAE,cAAc,EAAE,kBAAkB,EAAE,eAAe,GACpE,MAAM,eAAe,CAAC;AACvB,YAAY,EAAE,OAAO,EAAE,MAAM,eAAe,CAAC;AAC7C,OAAO,EACL,QAAQ,EAAE,cAAc,EAAE,eAAe,EAAE,WAAW,EAAE,cAAc,EAAE,eAAe,GACxF,MAAM,cAAc,CAAC;AACtB,OAAO,EACL,OAAO,EAAE,OAAO,EAAE,QAAQ,EAAE,aAAa,EAAE,cAAc,EAAE,aAAa,EAAE,SAAS,EACnF,gBAAgB,EAAE,iBAAiB,EAAE,gBAAgB,EAAE,kBAAkB,EACzE,oBAAoB,EAAE,oBAAoB,GAC3C,MAAM,aAAa,CAAC;AACrB,YAAY,EAAE,QAAQ,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AACzD,OAAO,EACL,iBAAiB,EAAE,aAAa,EAAE,iBAAiB,EACnD,mBAAmB,EAAE,mBAAmB,EAAE,mBAAmB,EAC7D,WAAW,EAAE,aAAa,GAC3B,MAAM,WAAW,CAAC;AACnB,YAAY,EAAE,cAAc,EAAE,WAAW,EAAE,aAAa,EAAE,MAAM,WAAW,CAAC;AAC5E,OAAO,EAAE,aAAa,EAAE,UAAU,EAAE,MAAM,gBAAgB,CAAC;AAC3D,YAAY,EAAE,WAAW,EAAE,SAAS,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/policy/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,gBAAgB,EAAE,iBAAiB,EAAE,aAAa,EAAE,iBAAiB,EACrE,UAAU,EAAE,UAAU,EAAE,cAAc,EAAE,IAAI,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,EACzE,cAAc,EAAE,cAAc,EAAE,kBAAkB,EAAE,eAAe,GACpE,MAAM,eAAe,CAAC;AACvB,YAAY,EAAE,OAAO,EAAE,MAAM,eAAe,CAAC;AAC7C,OAAO,EACL,QAAQ,EAAE,cAAc,EAAE,eAAe,EAAE,WAAW,EAAE,cAAc,EAAE,eAAe,GACxF,MAAM,cAAc,CAAC;AACtB,OAAO,EACL,OAAO,EAAE,OAAO,EAAE,QAAQ,EAAE,aAAa,EAAE,cAAc,EAAE,aAAa,EAAE,SAAS,EACnF,gBAAgB,EAAE,iBAAiB,EAAE,gBAAgB,EAAE,kBAAkB,EACzE,oBAAoB,EAAE,oBAAoB,GAC3C,MAAM,aAAa,CAAC;AACrB,YAAY,EAAE,QAAQ,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AACzD,OAAO,EACL,iBAAiB,EAAE,aAAa,EAAE,iBAAiB,EACnD,mBAAmB,EAAE,mBAAmB,EAAE,wBAAwB,EAAE,mBAAmB,EACvF,WAAW,EAAE,aAAa,EAAE,eAAe,EAAE,aAAa,EAC1D,wBAAwB,EAAE,mBAAmB,GAC9C,MAAM,WAAW,CAAC;AACnB,YAAY,EAAE,cAAc,EAAE,eAAe,EAAE,WAAW,EAAE,aAAa,EAAE,cAAc,EAAE,QAAQ,EAAE,MAAM,WAAW,CAAC;AACvH,OAAO,EAAE,aAAa,EAAE,UAAU,EAAE,MAAM,gBAAgB,CAAC;AAC3D,YAAY,EAAE,WAAW,EAAE,SAAS,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC"}
@@ -1,6 +1,6 @@
1
1
  export { LEVEL1_WHITELIST, DEFAULT_WHITELIST, parseCategory, normalizeCategory, listLevel1, listLevel2, getEmojiPrefix, l1Of, fmtDur, fmtDurShort, fmtPct, HEALTH_TARGETS, healthDimScore, computeHealthScore, detectAnomalies, } from './category.js';
2
2
  export { todayStr, relativeToDate, relativeToRange, recentNDays, RELATIVE_DATES, RELATIVE_RANGES, } from './routing.js';
3
3
  export { DATE_RE, TIME_RE, MONTH_RE, normalizeDate, normalizeMonth, normalizeTime, toMinutes, resolveDateParam, resolveRangeParam, validateAddInput, validateAmendInput, validateSummaryInput, validateCompareInput, } from './record.js';
4
- export { VALID_COMPLETIONS, validateEvent, assertCoverage24h, validateUpsertInput, validateEnsureInput, validateUpdateInput, parsePlanOp, parseRecordOp, } from './plan.js';
4
+ export { VALID_COMPLETIONS, validateEvent, assertCoverage24h, validateUpsertInput, validateEnsureInput, validateEnsureBatchInput, validateUpdateInput, parsePlanOp, parseRecordOp, parseFeishuMode, parsePlanView, PLAN_WRITE_OPS_OVERWRITE, PLAN_WRITE_OPS_FILL, } from './plan.js';
5
5
  export { routeWakeword, WAKE_TABLE } from './wakewords.js';
6
6
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/policy/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,gBAAgB,EAAE,iBAAiB,EAAE,aAAa,EAAE,iBAAiB,EACrE,UAAU,EAAE,UAAU,EAAE,cAAc,EAAE,IAAI,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,EACzE,cAAc,EAAE,cAAc,EAAE,kBAAkB,EAAE,eAAe,GACpE,MAAM,eAAe,CAAC;AAEvB,OAAO,EACL,QAAQ,EAAE,cAAc,EAAE,eAAe,EAAE,WAAW,EAAE,cAAc,EAAE,eAAe,GACxF,MAAM,cAAc,CAAC;AACtB,OAAO,EACL,OAAO,EAAE,OAAO,EAAE,QAAQ,EAAE,aAAa,EAAE,cAAc,EAAE,aAAa,EAAE,SAAS,EACnF,gBAAgB,EAAE,iBAAiB,EAAE,gBAAgB,EAAE,kBAAkB,EACzE,oBAAoB,EAAE,oBAAoB,GAC3C,MAAM,aAAa,CAAC;AAErB,OAAO,EACL,iBAAiB,EAAE,aAAa,EAAE,iBAAiB,EACnD,mBAAmB,EAAE,mBAAmB,EAAE,mBAAmB,EAC7D,WAAW,EAAE,aAAa,GAC3B,MAAM,WAAW,CAAC;AAEnB,OAAO,EAAE,aAAa,EAAE,UAAU,EAAE,MAAM,gBAAgB,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/policy/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,gBAAgB,EAAE,iBAAiB,EAAE,aAAa,EAAE,iBAAiB,EACrE,UAAU,EAAE,UAAU,EAAE,cAAc,EAAE,IAAI,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,EACzE,cAAc,EAAE,cAAc,EAAE,kBAAkB,EAAE,eAAe,GACpE,MAAM,eAAe,CAAC;AAEvB,OAAO,EACL,QAAQ,EAAE,cAAc,EAAE,eAAe,EAAE,WAAW,EAAE,cAAc,EAAE,eAAe,GACxF,MAAM,cAAc,CAAC;AACtB,OAAO,EACL,OAAO,EAAE,OAAO,EAAE,QAAQ,EAAE,aAAa,EAAE,cAAc,EAAE,aAAa,EAAE,SAAS,EACnF,gBAAgB,EAAE,iBAAiB,EAAE,gBAAgB,EAAE,kBAAkB,EACzE,oBAAoB,EAAE,oBAAoB,GAC3C,MAAM,aAAa,CAAC;AAErB,OAAO,EACL,iBAAiB,EAAE,aAAa,EAAE,iBAAiB,EACnD,mBAAmB,EAAE,mBAAmB,EAAE,wBAAwB,EAAE,mBAAmB,EACvF,WAAW,EAAE,aAAa,EAAE,eAAe,EAAE,aAAa,EAC1D,wBAAwB,EAAE,mBAAmB,GAC9C,MAAM,WAAW,CAAC;AAEnB,OAAO,EAAE,aAAa,EAAE,UAAU,EAAE,MAAM,gBAAgB,CAAC"}
@@ -15,12 +15,27 @@ export declare function validateUpsertInput(params: Record<string, unknown>): {
15
15
  export declare function validateEnsureInput(params: Record<string, unknown>): PlanEventInput & {
16
16
  date: string;
17
17
  };
18
+ export interface EnsureBatchItem extends PlanEventInput {
19
+ date: string;
20
+ }
21
+ export declare function validateEnsureBatchInput(params: Record<string, unknown>): {
22
+ items: EnsureBatchItem[];
23
+ };
18
24
  export declare function validateUpdateInput(params: Record<string, unknown>): {
19
25
  id: number;
20
26
  patch: Record<string, unknown>;
21
27
  };
22
- export type PlanWriteOp = 'preview' | 'upsert' | 'ensure' | 'update' | 'deactivate' | 'review' | 'sync';
28
+ export type PlanWriteOp = 'preview' | 'upsert' | 'ensure' | 'update' | 'deactivate' | 'review' | 'sync' | 'check';
23
29
  export declare function parsePlanOp(params: Record<string, unknown>): PlanWriteOp;
30
+ /** 写命令的两档语义(S-13):`upsert`=整段覆盖,`ensure`=缺则补。 */
31
+ export declare const PLAN_WRITE_OPS_OVERWRITE: PlanWriteOp[];
32
+ export declare const PLAN_WRITE_OPS_FILL: PlanWriteOp[];
33
+ /** 远端开关(合成写的参数面):`ensure`(缺省)=把这条事实对齐到两侧;`skip`=这一趟只要本地。 */
34
+ export type PlanFeishuMode = 'ensure' | 'skip';
35
+ export declare function parseFeishuMode(params: Record<string, unknown>): PlanFeishuMode;
36
+ /** 日程查询的两种视图:`list`(缺省,全字段)与 `aggregate`(24h 聚合视图,丢 notes/同步态/ID)。 */
37
+ export type PlanView = 'list' | 'aggregate';
38
+ export declare function parsePlanView(params: Record<string, unknown>): PlanView;
24
39
  export type RecordWriteOp = 'add' | 'amend' | 'summary';
25
40
  export declare function parseRecordOp(params: Record<string, unknown>): RecordWriteOp;
26
41
  //# sourceMappingURL=plan.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"plan.d.ts","sourceRoot":"","sources":["../../src/policy/plan.ts"],"names":[],"mappings":"AAOA,eAAO,MAAM,iBAAiB,UAE7B,CAAC;AAEF,MAAM,WAAW,cAAc;IAC7B,UAAU,EAAE,MAAM,CAAC;IACnB,QAAQ,EAAE,MAAM,CAAC;IACjB,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACtB,QAAQ,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;CAC1B;AAED,wBAAgB,aAAa,CAAC,CAAC,EAAE,OAAO,EAAE,GAAG,EAAE,MAAM,GAAG,cAAc,CAuBrE;AAGD,wBAAgB,iBAAiB,CAAC,MAAM,EAAE,cAAc,EAAE,GAAG,IAAI,CAoBhE;AAGD,wBAAgB,mBAAmB,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,cAAc,EAAE,CAAA;CAAE,CAQ/G;AAGD,wBAAgB,mBAAmB,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,cAAc,GAAG;IAAE,IAAI,EAAE,MAAM,CAAA;CAAE,CAGtG;AAGD,wBAAgB,mBAAmB,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG;IAAE,EAAE,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;CAAE,CAsCnH;AAED,MAAM,MAAM,WAAW,GAAG,SAAS,GAAG,QAAQ,GAAG,QAAQ,GAAG,QAAQ,GAAG,YAAY,GAAG,QAAQ,GAAG,MAAM,CAAC;AAExG,wBAAgB,WAAW,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,WAAW,CAOxE;AAED,MAAM,MAAM,aAAa,GAAG,KAAK,GAAG,OAAO,GAAG,SAAS,CAAC;AAExD,wBAAgB,aAAa,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,aAAa,CAM5E"}
1
+ {"version":3,"file":"plan.d.ts","sourceRoot":"","sources":["../../src/policy/plan.ts"],"names":[],"mappings":"AAOA,eAAO,MAAM,iBAAiB,UAE7B,CAAC;AAEF,MAAM,WAAW,cAAc;IAC7B,UAAU,EAAE,MAAM,CAAC;IACnB,QAAQ,EAAE,MAAM,CAAC;IACjB,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACtB,QAAQ,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;CAC1B;AAED,wBAAgB,aAAa,CAAC,CAAC,EAAE,OAAO,EAAE,GAAG,EAAE,MAAM,GAAG,cAAc,CAuBrE;AAGD,wBAAgB,iBAAiB,CAAC,MAAM,EAAE,cAAc,EAAE,GAAG,IAAI,CAoBhE;AAGD,wBAAgB,mBAAmB,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,cAAc,EAAE,CAAA;CAAE,CAQ/G;AAGD,wBAAgB,mBAAmB,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,cAAc,GAAG;IAAE,IAAI,EAAE,MAAM,CAAA;CAAE,CAGtG;AAKD,MAAM,WAAW,eAAgB,SAAQ,cAAc;IACrD,IAAI,EAAE,MAAM,CAAC;CACd;AAED,wBAAgB,wBAAwB,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG;IAAE,KAAK,EAAE,eAAe,EAAE,CAAA;CAAE,CA0BtG;AAGD,wBAAgB,mBAAmB,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG;IAAE,EAAE,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;CAAE,CAsCnH;AAED,MAAM,MAAM,WAAW,GAAG,SAAS,GAAG,QAAQ,GAAG,QAAQ,GAAG,QAAQ,GAAG,YAAY,GAAG,QAAQ,GAAG,MAAM,GAAG,OAAO,CAAC;AAElH,wBAAgB,WAAW,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,WAAW,CAOxE;AAED,iDAAiD;AACjD,eAAO,MAAM,wBAAwB,EAAE,WAAW,EAAe,CAAC;AAClE,eAAO,MAAM,mBAAmB,EAAE,WAAW,EAAe,CAAC;AAE7D,4DAA4D;AAC5D,MAAM,MAAM,cAAc,GAAG,QAAQ,GAAG,MAAM,CAAC;AAE/C,wBAAgB,eAAe,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,cAAc,CAO/E;AAED,sEAAsE;AACtE,MAAM,MAAM,QAAQ,GAAG,MAAM,GAAG,WAAW,CAAC;AAE5C,wBAAgB,aAAa,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,QAAQ,CAOvE;AAED,MAAM,MAAM,aAAa,GAAG,KAAK,GAAG,OAAO,GAAG,SAAS,CAAC;AAExD,wBAAgB,aAAa,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,aAAa,CAM5E"}
@@ -65,6 +65,35 @@ export function validateEnsureInput(params) {
65
65
  const date = normalizeDate(params.date, 'date');
66
66
  return { date, ...validateEvent(params, -1) };
67
67
  }
68
+ export function validateEnsureBatchInput(params) {
69
+ const raw = params.dates;
70
+ if (!Array.isArray(raw) || raw.length === 0) {
71
+ throw new SchedulePolicyError('POLICY_BAD_INPUT', 'ensure 批量须给非空 dates 数组(每条含 date/time_start/time_end/title)');
72
+ }
73
+ if (params.date !== undefined) {
74
+ throw new SchedulePolicyError('POLICY_BAD_INPUT', 'date 与 dates 不可同给(单天走 date,多天走 dates[])');
75
+ }
76
+ return {
77
+ items: raw.map((e, i) => {
78
+ try {
79
+ if (typeof e !== 'object' || e === null || Array.isArray(e)) {
80
+ throw new SchedulePolicyError('POLICY_BAD_INPUT', 'dates[' + i + '] 须为对象');
81
+ }
82
+ const o = e;
83
+ const date = normalizeDate(o.date, 'dates[' + i + '].date');
84
+ return { date, ...validateEvent(o, i) };
85
+ }
86
+ catch (err) {
87
+ if (err instanceof SchedulePolicyError) {
88
+ if (err.message.startsWith('dates[' + i + ']'))
89
+ throw err;
90
+ throw new SchedulePolicyError(err.code, 'dates[' + i + ']:' + err.message);
91
+ }
92
+ throw err;
93
+ }
94
+ }),
95
+ };
96
+ }
68
97
  // #18 改计划:id + 至少一字段;completion 须 6 态之一。
69
98
  export function validateUpdateInput(params) {
70
99
  const id = params.id;
@@ -108,12 +137,33 @@ export function validateUpdateInput(params) {
108
137
  }
109
138
  export function parsePlanOp(params) {
110
139
  const op = params.op === undefined ? 'preview' : params.op;
111
- const ops = ['preview', 'upsert', 'ensure', 'update', 'deactivate', 'review', 'sync'];
140
+ const ops = ['preview', 'upsert', 'ensure', 'update', 'deactivate', 'review', 'sync', 'check'];
112
141
  if (typeof op !== 'string' || !ops.includes(op)) {
113
142
  throw new SchedulePolicyError('POLICY_BAD_INPUT', 'op 非法(期望 ' + ops.join('/') + '):' + JSON.stringify(op));
114
143
  }
115
144
  return op;
116
145
  }
146
+ /** 写命令的两档语义(S-13):`upsert`=整段覆盖,`ensure`=缺则补。 */
147
+ export const PLAN_WRITE_OPS_OVERWRITE = ['upsert'];
148
+ export const PLAN_WRITE_OPS_FILL = ['ensure'];
149
+ export function parseFeishuMode(params) {
150
+ const v = params.feishu;
151
+ if (v === undefined || v === null)
152
+ return 'ensure';
153
+ if (v !== 'ensure' && v !== 'skip') {
154
+ throw new SchedulePolicyError('POLICY_BAD_INPUT', 'feishu 非法(期望 ensure/skip):' + JSON.stringify(v));
155
+ }
156
+ return v;
157
+ }
158
+ export function parsePlanView(params) {
159
+ const v = params.view;
160
+ if (v === undefined || v === null)
161
+ return 'list';
162
+ if (v !== 'list' && v !== 'aggregate') {
163
+ throw new SchedulePolicyError('POLICY_BAD_INPUT', 'view 非法(期望 list/aggregate):' + JSON.stringify(v));
164
+ }
165
+ return v;
166
+ }
117
167
  export function parseRecordOp(params) {
118
168
  const op = params.op === undefined ? 'add' : params.op;
119
169
  if (op !== 'add' && op !== 'amend' && op !== 'summary') {
@@ -1 +1 @@
1
- {"version":3,"file":"plan.js","sourceRoot":"","sources":["../../src/policy/plan.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"plan.js","sourceRoot":"","sources":["../../src/policy/plan.ts"],"names":[],"mappings":"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"}
@@ -37,9 +37,9 @@ export const WAKE_TABLE = [
37
37
  { phrase: '跨月对比', key: 'schedule.record.compare', preset: { kind: 'months' } },
38
38
  { phrase: '类别深挖', key: 'schedule.record.compare', preset: { kind: 'category' } },
39
39
  { phrase: '异常检测', key: 'schedule.record.compare', preset: { kind: 'anomaly' } },
40
- // plan.today(#12/#15/#16:查日程 + 概览 + 多日)。
41
- { phrase: '查多日计划', key: 'schedule.plan.today' },
42
- { phrase: '24h 概览', key: 'schedule.plan.today' },
40
+ // plan.today(#12/#15/#16:查日程 + 概览 + 多日)。后两条走 24h 聚合视图(分桶),#12 走全字段 list。
41
+ { phrase: '查多日计划', key: 'schedule.plan.today', preset: { view: 'aggregate' }, needs: ['dates'] },
42
+ { phrase: '24h 概览', key: 'schedule.plan.today', preset: { view: 'aggregate' } },
43
43
  { phrase: '查日程', key: 'schedule.plan.today' },
44
44
  { phrase: '看日程', key: 'schedule.plan.today' },
45
45
  // plan.write(#13/#14/#17/#18/#19/#20/#21 + 复盘 4 粒度)。
@@ -48,7 +48,7 @@ export const WAKE_TABLE = [
48
48
  { phrase: '规划明天', key: 'schedule.plan.write', preset: { op: 'preview' } },
49
49
  { phrase: '规划一天', key: 'schedule.plan.write', preset: { op: 'preview' } },
50
50
  { phrase: '讨论计划', key: 'schedule.plan.write', preset: { op: 'preview' } },
51
- { phrase: '补计划', key: 'schedule.plan.write', preset: { op: 'ensure' } },
51
+ { phrase: '补计划', key: 'schedule.plan.write', preset: { op: 'ensure' }, needs: ['date', 'time_start', 'time_end', 'title'] },
52
52
  { phrase: '改计划', key: 'schedule.plan.write', preset: { op: 'update' }, needs: ['id'] },
53
53
  { phrase: '删计划', key: 'schedule.plan.write', preset: { op: 'deactivate' }, needs: ['id'] },
54
54
  { phrase: '复盘今日', key: 'schedule.plan.write', preset: { op: 'review', granularity: 'day' } },
@@ -1 +1 @@
1
- {"version":3,"file":"wakewords.js","sourceRoot":"","sources":["../../src/policy/wakewords.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"wakewords.js","sourceRoot":"","sources":["../../src/policy/wakewords.ts"],"names":[],"mappings":"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"}
@@ -4,10 +4,4 @@ export declare function escapeHtml(s: string): string;
4
4
  export declare function renderEnvelopeHtml(env: Envelope): string;
5
5
  export declare function estimateBytes(html: string): number;
6
6
  export declare function assertHtmlSize(html: string, max?: number): void;
7
- export declare const SHARED_CSS_MARKER = "<!--SHARED-CSS-->";
8
- export declare const SHARED_HELPERS_MARKER = "<!--SHARED-HELPERS-->";
9
- export declare const CONTENT_MARKER = "<!--CONTENT-->";
10
- export declare const SHARED_CSS = ".page{font-family:system-ui,sans-serif;max-width:720px;margin:0 auto;padding:12px}.item{border:1px solid #ddd;border-radius:8px;padding:8px;margin:8px 0}.item-head{display:flex;gap:8px;align-items:center}.badge{background:#eee;border-radius:4px;padding:0 6px}.receipt{background:#f0fff0;border:1px solid #090;border-radius:8px;padding:12px}.stat{display:flex;gap:8px}.analysis{white-space:pre-wrap}.hm-empty{color:#888}";
11
- export declare const SHARED_HELPERS = "<script>function copyItem(id){var e=document.getElementById(id);if(e&&navigator.clipboard){navigator.clipboard.writeText(e.innerText);}}</script>";
12
- export declare function fillTemplate(template: string, contentHtml: string): string;
13
7
  //# sourceMappingURL=html.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"html.d.ts","sourceRoot":"","sources":["../../src/render/html.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAC;AAG/C,eAAO,MAAM,uBAAuB,QAAa,CAAC;AAElD,wBAAgB,UAAU,CAAC,CAAC,EAAE,MAAM,GAAG,MAAM,CAE5C;AA0BD,wBAAgB,kBAAkB,CAAC,GAAG,EAAE,QAAQ,GAAG,MAAM,CAexD;AAED,wBAAgB,aAAa,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAA4C;AAG/F,wBAAgB,cAAc,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,SAA0B,GAAG,IAAI,CAIhF;AAGD,eAAO,MAAM,iBAAiB,sBAAsB,CAAC;AACrD,eAAO,MAAM,qBAAqB,0BAA0B,CAAC;AAC7D,eAAO,MAAM,cAAc,mBAAmB,CAAC;AAE/C,eAAO,MAAM,UAAU,waAAwa,CAAC;AAChc,eAAO,MAAM,cAAc,sJAAsJ,CAAC;AAElL,wBAAgB,YAAY,CAAC,QAAQ,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,GAAG,MAAM,CAU1E"}
1
+ {"version":3,"file":"html.d.ts","sourceRoot":"","sources":["../../src/render/html.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAC;AAG/C,eAAO,MAAM,uBAAuB,QAAa,CAAC;AAElD,wBAAgB,UAAU,CAAC,CAAC,EAAE,MAAM,GAAG,MAAM,CAE5C;AA0BD,wBAAgB,kBAAkB,CAAC,GAAG,EAAE,QAAQ,GAAG,MAAM,CAexD;AAED,wBAAgB,aAAa,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAA4C;AAG/F,wBAAgB,cAAc,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,SAA0B,GAAG,IAAI,CAIhF"}
@@ -48,21 +48,4 @@ export function assertHtmlSize(html, max = SCHEDULE_HTML_MAX_BYTES) {
48
48
  throw new ScheduleRenderError('SCHEDULE_HTML_TOO_LARGE', 'HTML 超体积:' + estimateBytes(html) + ' > ' + max);
49
49
  }
50
50
  }
51
- // 共享标记填充(老家离线注入壳对应):CSS/HELPERS/CONTENT 三标记各恰出现 1 次,否则 throw。
52
- export const SHARED_CSS_MARKER = '<!--SHARED-CSS-->';
53
- export const SHARED_HELPERS_MARKER = '<!--SHARED-HELPERS-->';
54
- export const CONTENT_MARKER = '<!--CONTENT-->';
55
- export const SHARED_CSS = '.page{font-family:system-ui,sans-serif;max-width:720px;margin:0 auto;padding:12px}.item{border:1px solid #ddd;border-radius:8px;padding:8px;margin:8px 0}.item-head{display:flex;gap:8px;align-items:center}.badge{background:#eee;border-radius:4px;padding:0 6px}.receipt{background:#f0fff0;border:1px solid #090;border-radius:8px;padding:12px}.stat{display:flex;gap:8px}.analysis{white-space:pre-wrap}.hm-empty{color:#888}';
56
- export const SHARED_HELPERS = '<script>function copyItem(id){var e=document.getElementById(id);if(e&&navigator.clipboard){navigator.clipboard.writeText(e.innerText);}}</script>';
57
- export function fillTemplate(template, contentHtml) {
58
- for (const m of [SHARED_CSS_MARKER, SHARED_HELPERS_MARKER, CONTENT_MARKER]) {
59
- if (template.split(m).length - 1 !== 1) {
60
- throw new ScheduleRenderError('SCHEDULE_MARKER_INVALID', '标记须恰出现 1 次:' + m);
61
- }
62
- }
63
- return template
64
- .split(SHARED_CSS_MARKER).join('<style>' + SHARED_CSS + '</style>')
65
- .split(SHARED_HELPERS_MARKER).join(SHARED_HELPERS)
66
- .split(CONTENT_MARKER).join(contentHtml);
67
- }
68
51
  //# sourceMappingURL=html.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"html.js","sourceRoot":"","sources":["../../src/render/html.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"html.js","sourceRoot":"","sources":["../../src/render/html.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,mBAAmB,EAAE,MAAM,aAAa,CAAC;AAElD,MAAM,CAAC,MAAM,uBAAuB,GAAG,GAAG,GAAG,IAAI,CAAC;AAElD,MAAM,UAAU,UAAU,CAAC,CAAS;IAClC,OAAO,CAAC,CAAC,OAAO,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC,OAAO,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC,OAAO,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC,OAAO,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC,OAAO,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;AAC7H,CAAC;AAED,SAAS,cAAc,CAAC,CAA0B;IAChD,MAAM,IAAI,GAAG,UAAU,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,IAAI,EAAE,CAAC,CAAC,CAAC;IAC9C,MAAM,GAAG,GAAG,UAAU,CAAC,MAAM,CAAC,CAAC,CAAC,QAAQ,IAAI,EAAE,CAAC,CAAC,CAAC;IACjD,MAAM,GAAG,GAAG,UAAU,CAAC,MAAM,CAAC,CAAC,CAAC,QAAQ,IAAI,EAAE,CAAC,CAAC,CAAC;IACjD,MAAM,KAAK,GAAG,UAAU,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,IAAI,EAAE,CAAC,CAAC,CAAC;IAChD,MAAM,GAAG,GAAG,UAAU,CAAC,MAAM,CAAC,CAAC,CAAC,QAAQ,IAAI,EAAE,CAAC,CAAC,CAAC;IACjD,OAAO,8DAA8D,GAAG,IAAI,GAAG,6BAA6B,GAAG,KAAK,GAAG,GAAG,GAAG,2BAA2B,GAAG,GAAG,GAAG,oCAAoC,GAAG,GAAG,GAAG,cAAc,CAAC;AAC/N,CAAC;AAED,SAAS,YAAY,CAAC,CAA0B;IAC9C,MAAM,IAAI,GAAG,UAAU,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,IAAI,EAAE,CAAC,CAAC,CAAC;IAC9C,MAAM,KAAK,GAAG,UAAU,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,IAAI,EAAE,CAAC,CAAC,CAAC;IAChD,MAAM,IAAI,GAAG,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,sBAAsB,GAAG,UAAU,CAAC,MAAM,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,GAAG,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC;IACvG,MAAM,IAAI,GAAG,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,8BAA8B,CAAC,CAAC,CAAC,EAAE,CAAC;IAC5D,OAAO,8DAA8D,GAAG,IAAI,GAAG,oCAAoC,GAAG,KAAK,GAAG,IAAI,GAAG,IAAI,GAAG,cAAc,CAAC;AAC7J,CAAC;AAED,SAAS,QAAQ,CAAC,KAAgB,EAAE,GAAW;IAC7C,IAAI,CAAC,KAAK,CAAC,MAAM;QAAE,OAAO,kCAAkC,CAAC;IAC7D,MAAM,EAAE,GAAG,GAAG,CAAC,UAAU,CAAC,gBAAgB,CAAC,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,cAAc,CAAC;IAC5E,OAAO,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,CAA4B,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;AACrE,CAAC;AAED,8CAA8C;AAC9C,MAAM,UAAU,kBAAkB,CAAC,GAAa;IAC9C,MAAM,IAAI,GAAG,6CAA6C,GAAG,GAAG,CAAC,KAAK,GAAG,cAAc,GAAG,UAAU,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,IAAI,CAAC;IACrH,MAAM,CAAC,GAAG,GAAG,CAAC,IAA+B,CAAC;IAC9C,QAAQ,GAAG,CAAC,KAAK,EAAE,CAAC;QAClB,KAAK,MAAM,CAAC,CAAC,OAAO,IAAI,GAAG,QAAQ,CAAC,CAAC,CAAC,KAAkB,EAAE,GAAG,CAAC,GAAG,CAAC,GAAG,YAAY,CAAC;QAClF,KAAK,QAAQ,CAAC,CAAC,OAAO,IAAI,GAAG,cAAc,CAAC,CAAC,CAAC,IAA+B,CAAC,GAAG,YAAY,CAAC;QAC9F,KAAK,SAAS,CAAC,CAAC,OAAO,IAAI,GAAG,uBAAuB,GAAG,UAAU,CAAC,MAAM,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,GAAG,kBAAkB,CAAC;QAC3G,KAAK,MAAM,CAAC,CAAC,CAAC;YACZ,MAAM,IAAI,GAAG,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,OAAO,IAAI,EAAE,CAA2B,CAAC,CAAC;YACzE,OAAO,IAAI,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,uBAAuB,GAAG,CAAC,GAAG,YAAY,GAAG,UAAU,CAAC,CAAC,CAAC,GAAG,eAAe,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,GAAG,YAAY,CAAC;QAC3I,CAAC;QACD,KAAK,UAAU,CAAC,CAAC,OAAO,IAAI,GAAG,wBAAwB,GAAG,UAAU,CAAC,MAAM,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,OAAO,CAAC,KAAK,EAAE,MAAM,CAAC,GAAG,kBAAkB,CAAC;QACpI,KAAK,UAAU,CAAC,CAAC,OAAO,IAAI,GAAG,yBAAyB,GAAG,UAAU,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,GAAG,kBAAkB,CAAC;QAC7G,OAAO,CAAC,CAAC,MAAM,IAAI,mBAAmB,CAAC,yBAAyB,EAAE,SAAS,GAAG,MAAM,CAAE,GAA2B,CAAC,KAAK,CAAC,CAAC,CAAC;IAC5H,CAAC;AACH,CAAC;AAED,MAAM,UAAU,aAAa,CAAC,IAAY,IAAY,OAAO,MAAM,CAAC,UAAU,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC;AAE/F,4CAA4C;AAC5C,MAAM,UAAU,cAAc,CAAC,IAAY,EAAE,GAAG,GAAG,uBAAuB;IACxE,IAAI,aAAa,CAAC,IAAI,CAAC,GAAG,GAAG,EAAE,CAAC;QAC9B,MAAM,IAAI,mBAAmB,CAAC,yBAAyB,EAAE,WAAW,GAAG,aAAa,CAAC,IAAI,CAAC,GAAG,KAAK,GAAG,GAAG,CAAC,CAAC;IAC5G,CAAC;AACH,CAAC"}