@zhin.js/plugin-reminder 1.0.5 → 1.0.7

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 (78) hide show
  1. package/README.md +8 -2
  2. package/commands/remind/after/index.js +6 -5
  3. package/commands/remind/after/index.ts +6 -5
  4. package/commands/remind/at/index.js +8 -7
  5. package/commands/remind/at/index.ts +6 -5
  6. package/commands/remind/cancel/index.js +5 -4
  7. package/commands/remind/cancel/index.ts +5 -4
  8. package/commands/remind/create/index.js +3 -3
  9. package/commands/remind/create/index.ts +3 -3
  10. package/commands/remind/every/index.js +6 -5
  11. package/commands/remind/every/index.ts +6 -5
  12. package/commands/remind/list/index.js +5 -4
  13. package/commands/remind/list/index.ts +5 -4
  14. package/lib/admin-i18n.d.ts +155 -0
  15. package/lib/admin-i18n.d.ts.map +1 -0
  16. package/lib/admin-i18n.js +152 -0
  17. package/lib/admin-i18n.js.map +1 -0
  18. package/lib/admin-tasks.d.ts +35 -5
  19. package/lib/admin-tasks.d.ts.map +1 -1
  20. package/lib/admin-tasks.js +77 -57
  21. package/lib/admin-tasks.js.map +1 -1
  22. package/lib/caller.d.ts +2 -1
  23. package/lib/caller.d.ts.map +1 -1
  24. package/lib/caller.js +5 -3
  25. package/lib/caller.js.map +1 -1
  26. package/lib/config.js +6 -6
  27. package/lib/config.js.map +1 -1
  28. package/lib/create-reminder.d.ts.map +1 -1
  29. package/lib/create-reminder.js +31 -25
  30. package/lib/create-reminder.js.map +1 -1
  31. package/lib/duration.d.ts +2 -1
  32. package/lib/duration.d.ts.map +1 -1
  33. package/lib/duration.js +4 -3
  34. package/lib/duration.js.map +1 -1
  35. package/lib/i18n.d.ts +2 -0
  36. package/lib/i18n.d.ts.map +1 -0
  37. package/lib/i18n.js +336 -0
  38. package/lib/i18n.js.map +1 -0
  39. package/lib/natural-time.d.ts +5 -1
  40. package/lib/natural-time.d.ts.map +1 -1
  41. package/lib/natural-time.js +71 -57
  42. package/lib/natural-time.js.map +1 -1
  43. package/lib/service.d.ts +8 -2
  44. package/lib/service.d.ts.map +1 -1
  45. package/lib/service.js +47 -36
  46. package/lib/service.js.map +1 -1
  47. package/lib/storage.d.ts.map +1 -1
  48. package/lib/storage.js +7 -5
  49. package/lib/storage.js.map +1 -1
  50. package/lib/timing.d.ts +2 -1
  51. package/lib/timing.d.ts.map +1 -1
  52. package/lib/timing.js +5 -4
  53. package/lib/timing.js.map +1 -1
  54. package/lib/tool-actor.d.ts +2 -0
  55. package/lib/tool-actor.d.ts.map +1 -1
  56. package/lib/tool-actor.js +14 -4
  57. package/lib/tool-actor.js.map +1 -1
  58. package/package.json +9 -9
  59. package/plugin.js +8 -3
  60. package/schema.json +30 -0
  61. package/skills/reminder/tools/reminder_cancel/index.js +3 -2
  62. package/skills/reminder/tools/reminder_cancel/index.ts +3 -2
  63. package/skills/reminder/tools/reminder_create/index.js +7 -6
  64. package/skills/reminder/tools/reminder_create/index.ts +7 -6
  65. package/skills/reminder/tools/reminder_list/index.js +3 -2
  66. package/skills/reminder/tools/reminder_list/index.ts +3 -2
  67. package/src/admin-i18n.ts +154 -0
  68. package/src/admin-tasks.ts +79 -53
  69. package/src/caller.ts +5 -3
  70. package/src/config.ts +6 -6
  71. package/src/create-reminder.ts +33 -25
  72. package/src/duration.ts +5 -3
  73. package/src/i18n.ts +336 -0
  74. package/src/natural-time.ts +40 -30
  75. package/src/service.ts +51 -38
  76. package/src/storage.ts +7 -5
  77. package/src/timing.ts +6 -4
  78. package/src/tool-actor.ts +15 -4
@@ -1,3 +1,5 @@
1
+ import { type AdminTextKey } from './admin-i18n.js';
2
+ import { type Locale } from 'zhin.js/i18n';
1
3
  import { type DeliveryTarget, type OutboundHost, type PluginStateStore } from 'zhin.js';
2
4
  import { generationAdmissionSource, type JsonValue, type PluginTask, type PluginTaskAction, type PluginTaskMutation, type PluginTaskProvider, type PluginTaskSnapshot } from 'zhin.js/plugin-runtime';
3
5
  import type { ReminderConfig } from './config.js';
@@ -7,6 +9,7 @@ type AdminTask = {
7
9
  readonly creation: string;
8
10
  readonly target: DeliveryTarget;
9
11
  readonly text: string;
12
+ readonly locale?: Locale;
10
13
  readonly createdAt: number;
11
14
  readonly nextRunAt: number;
12
15
  readonly intervalMs: number | null;
@@ -14,6 +17,7 @@ type AdminTask = {
14
17
  readonly claimId: string | null;
15
18
  readonly lastRunAt: number | null;
16
19
  readonly detail: string;
20
+ readonly detailKey?: AdminTextKey;
17
21
  };
18
22
  type MutationReceipt = {
19
23
  readonly id: string;
@@ -30,9 +34,13 @@ export type AdminReminderBook = {
30
34
  /** A separate administrator state pool; no sender identity and no access to chat reminders. */
31
35
  export declare class AdministratorReminderTasks implements PluginTaskProvider {
32
36
  #private;
33
- private readonly state;
34
- private readonly outbound;
35
- private readonly config;
37
+ readonly i18n: {
38
+ readonly en: {
39
+ readonly title: "Administrator reminders";
40
+ readonly description: "Send one-time or recurring reminders to an exact account, conversation and thread, independently of personal chat reminders.";
41
+ readonly effects: readonly ["Creating a task schedules delivery through this plugin instance. Pausing or cancelling cannot recall a delivery already in progress.", "Unconfirmed delivery is never retried or resumed automatically. Check the target conversation before cancelling and creating another task."];
42
+ };
43
+ };
36
44
  readonly title = "\u7BA1\u7406\u5458\u63D0\u9192";
37
45
  readonly description = "\u72EC\u7ACB\u4E8E\u804A\u5929\u4E2A\u4EBA\u63D0\u9192\uFF0C\u5411\u6307\u5B9A\u8D26\u53F7\u3001\u4F1A\u8BDD\u53CA\u7EBF\u7A0B\u53D1\u9001\u4E00\u6B21\u6027\u6216\u56FA\u5B9A\u5468\u671F\u63D0\u9192";
38
46
  readonly effects: string[];
@@ -45,11 +53,22 @@ export declare class AdministratorReminderTasks implements PluginTaskProvider {
45
53
  readonly type: "string";
46
54
  readonly minLength: 1;
47
55
  readonly maxLength: 500;
56
+ readonly 'x-i18n': {
57
+ readonly en: {
58
+ readonly title: "Reminder text";
59
+ };
60
+ };
48
61
  readonly title: "提醒内容";
49
62
  };
50
63
  readonly at: {
51
64
  readonly type: "string";
52
65
  readonly format: "date-time";
66
+ readonly 'x-i18n': {
67
+ readonly en: {
68
+ readonly title: "First run time";
69
+ readonly description: "ISO time within the next year, with Z or an explicit ±hh:mm offset";
70
+ };
71
+ };
53
72
  readonly title: "首次执行时间";
54
73
  readonly description: "未来一年内、显式包含 Z 或 ±hh:mm 的 ISO 时间";
55
74
  };
@@ -57,14 +76,25 @@ export declare class AdministratorReminderTasks implements PluginTaskProvider {
57
76
  readonly type: "integer";
58
77
  readonly minimum: 60;
59
78
  readonly maximum: number;
79
+ readonly 'x-i18n': {
80
+ readonly en: {
81
+ readonly title: "Interval in seconds (optional)";
82
+ };
83
+ };
60
84
  readonly title: "周期秒数(可选)";
61
85
  };
62
86
  };
63
87
  };
64
88
  get [generationAdmissionSource](): import("zhin.js").GenerationAdmissionGate[];
65
- constructor(state: PluginStateStore, outbound: OutboundHost, config: ReminderConfig);
89
+ private readonly state;
90
+ private readonly outbound;
91
+ private readonly config;
92
+ private readonly projectLocale;
93
+ constructor(state: PluginStateStore, outbound: OutboundHost, config: ReminderConfig, projectLocale?: Locale);
66
94
  stop(): void;
67
- read(): Promise<PluginTaskSnapshot>;
95
+ read(options?: {
96
+ readonly locale?: Locale;
97
+ }): Promise<PluginTaskSnapshot>;
68
98
  create(input: PluginTaskMutation & Readonly<{
69
99
  target: DeliveryTarget;
70
100
  parameters: Readonly<Record<string, JsonValue>>;
@@ -1 +1 @@
1
- {"version":3,"file":"admin-tasks.d.ts","sourceRoot":"","sources":["../src/admin-tasks.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"admin-tasks.d.ts","sourceRoot":"","sources":["../src/admin-tasks.ts"],"names":[],"mappings":"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"}
@@ -1,6 +1,9 @@
1
+ import { adminText, taskDetail, formatTaskDetail, isAdminTextKey, LocalizedTaskError } from './admin-i18n.js';
2
+ import { resolveLocale } from 'zhin.js/i18n';
3
+ import { reminderMessages as t } from './i18n.js';
1
4
  import { createHash, randomUUID } from 'node:crypto';
2
5
  import { createDeliveryTarget } from 'zhin.js';
3
- import { PluginTaskError, createGenerationAdmissionGate, generationAdmissionSource } from 'zhin.js/plugin-runtime';
6
+ import { createGenerationAdmissionGate, generationAdmissionSource } from 'zhin.js/plugin-runtime';
4
7
  import { EndpointDeliveryError } from '@zhin.js/im-contract';
5
8
  import { MAX_DELAY_SECONDS, nextPeriodicTime, parseReminderInstant } from './timing.js';
6
9
  export const ADMIN_REMINDER_STATE_KEY = 'admin-reminders/v1';
@@ -8,31 +11,43 @@ const activeStates = new Set(['scheduled', 'paused', 'unknown']);
8
11
  const uuidPattern = /^[\da-f]{8}-(?:[\da-f]{4}-){3}[\da-f]{12}$/iu;
9
12
  /** A separate administrator state pool; no sender identity and no access to chat reminders. */
10
13
  export class AdministratorReminderTasks {
11
- state;
12
- outbound;
13
- config;
14
+ i18n = {
15
+ "en": {
16
+ "title": "Administrator reminders",
17
+ "description": "Send one-time or recurring reminders to an exact account, conversation and thread, independently of personal chat reminders.",
18
+ "effects": [
19
+ "Creating a task schedules delivery through this plugin instance. Pausing or cancelling cannot recall a delivery already in progress.",
20
+ "Unconfirmed delivery is never retried or resumed automatically. Check the target conversation before cancelling and creating another task."
21
+ ]
22
+ }
23
+ };
14
24
  title = '管理员提醒';
15
25
  description = '独立于聊天个人提醒,向指定账号、会话及线程发送一次性或固定周期提醒';
16
26
  effects = ['创建后将在指定时间通过当前插件实例向目标会话发送提醒;暂停或取消不能撤回已开始的投递', '未确认的投递不会自动重试或恢复,需核实目标会话后取消并另建任务'];
17
27
  schema = { type: 'object', additionalProperties: false, required: ['text', 'at'], properties: {
18
- text: { type: 'string', minLength: 1, maxLength: 500, title: '提醒内容' },
19
- at: { type: 'string', format: 'date-time', title: '首次执行时间', description: '未来一年内、显式包含 Z 或 ±hh:mm 的 ISO 时间' },
20
- intervalSeconds: { type: 'integer', minimum: 60, maximum: MAX_DELAY_SECONDS, title: '周期秒数(可选)' },
28
+ text: { type: 'string', minLength: 1, maxLength: 500, 'x-i18n': { "en": { "title": "Reminder text" } }, title: '提醒内容' },
29
+ at: { type: 'string', format: 'date-time', 'x-i18n': { "en": { "title": "First run time", "description": "ISO time within the next year, with Z or an explicit ±hh:mm offset" } }, title: '首次执行时间', description: '未来一年内、显式包含 Z 或 ±hh:mm 的 ISO 时间' },
30
+ intervalSeconds: { type: 'integer', minimum: 60, maximum: MAX_DELAY_SECONDS, 'x-i18n': { "en": { "title": "Interval in seconds (optional)" } }, title: '周期秒数(可选)' },
21
31
  } };
22
32
  #stopped = false;
23
33
  #admission = createGenerationAdmissionGate();
24
34
  get [generationAdmissionSource]() { return [this.#admission]; }
25
- constructor(state, outbound, config) {
35
+ state;
36
+ outbound;
37
+ config;
38
+ projectLocale;
39
+ constructor(state, outbound, config, projectLocale = 'zh-CN') {
26
40
  this.state = state;
27
41
  this.outbound = outbound;
28
42
  this.config = config;
43
+ this.projectLocale = projectLocale;
29
44
  }
30
45
  stop() { this.#stopped = true; }
31
- async read() {
32
- return this.#admit(async () => this.#snapshot(readBook(await this.state.get(ADMIN_REMINDER_STATE_KEY))));
46
+ async read(options) {
47
+ return this.#admit(async () => this.#snapshot(readBook(await this.state.get(ADMIN_REMINDER_STATE_KEY)), options?.locale), options?.locale);
33
48
  }
34
49
  async create(input) {
35
- return this.#admit(() => this.#create(input));
50
+ return this.#admit(() => this.#create(input), input.locale);
36
51
  }
37
52
  async #create(input) {
38
53
  this.#assertLive();
@@ -42,15 +57,15 @@ export class AdministratorReminderTasks {
42
57
  target = createDeliveryTarget({ conversation: input.target });
43
58
  }
44
59
  catch {
45
- throw invalid('请提供完整有效的目标账号、会话、父容器和线程');
60
+ throw invalid('invalidTarget');
46
61
  }
47
62
  const parameters = parseParameters(input.parameters);
48
63
  const fingerprint = digest({ operation: 'create', target, parameters });
49
64
  const revision = randomUUID();
50
65
  const now = Date.now();
51
- const task = { id: input.requestId, creation: fingerprint, target, text: parameters.text, createdAt: now,
66
+ const task = { id: input.requestId, creation: fingerprint, target, locale: this.projectLocale, text: parameters.text, createdAt: now,
52
67
  nextRunAt: Date.parse(parameters.at), intervalMs: parameters.intervalSeconds === undefined ? null : parameters.intervalSeconds * 1000,
53
- state: 'scheduled', claimId: null, lastRunAt: null, detail: '等待执行' };
68
+ state: 'scheduled', claimId: null, lastRunAt: null, ...taskDetail('waiting') };
54
69
  const result = await this.state.update(ADMIN_REMINDER_STATE_KEY, current => {
55
70
  this.#assertLive();
56
71
  const book = readBook(current);
@@ -60,29 +75,29 @@ export class AdministratorReminderTasks {
60
75
  const existing = book.tasks.find(item => item.id === input.requestId);
61
76
  if (existing) {
62
77
  if (existing.creation !== fingerprint)
63
- throw conflict('同一请求 ID 已用于其他内容');
78
+ throw conflict('requestReused');
64
79
  return book;
65
80
  }
66
81
  assertFuture(task.nextRunAt, now);
67
82
  const active = book.tasks.filter(item => activeStates.has(item.state));
68
83
  if (active.length >= this.config.adminMaxTasks)
69
- throw invalid('管理员提醒池已达上限,请先取消任务;聊天个人提醒使用独立配额');
84
+ throw invalid('quota');
70
85
  const historyLimit = Math.max(0, this.config.adminMaxTasks - active.length - 1);
71
86
  const history = historyLimit ? book.tasks.filter(item => !activeStates.has(item.state)).slice(-historyLimit) : [];
72
87
  return bounded({ ...book, revision, tasks: [...active, ...history, task], receipts: receipt(book, input.requestId, fingerprint, task.id, 'create') });
73
88
  });
74
- return this.#snapshot(readBook(result));
89
+ return this.#snapshot(readBook(result), input.locale);
75
90
  }
76
91
  async change(input) {
77
- return this.#admit(() => this.#change(input));
92
+ return this.#admit(() => this.#change(input), input.locale);
78
93
  }
79
94
  async #change(input) {
80
95
  this.#assertLive();
81
96
  assertMutation(input);
82
97
  if (typeof input.id !== 'string' || !uuidPattern.test(input.id) || !['pause', 'resume', 'cancel', 'update'].includes(input.action))
83
- throw invalid('任务 ID 或操作无效');
98
+ throw invalid('invalidAction');
84
99
  if (input.action !== 'update' && input.parameters !== undefined)
85
- throw invalid('仅编辑操作接受参数');
100
+ throw invalid('updateParameters');
86
101
  const parameters = input.action === 'update' ? parseParameters(input.parameters) : undefined;
87
102
  const fingerprint = digest({ operation: 'change', id: input.id, action: input.action, parameters: parameters ?? null });
88
103
  const revision = randomUUID();
@@ -95,39 +110,39 @@ export class AdministratorReminderTasks {
95
110
  assertRevision(book, input.expectedRevision);
96
111
  const task = book.tasks.find(item => item.id === input.id);
97
112
  if (!task)
98
- throw new PluginTaskError('not_found', '未找到当前实例的管理员任务;聊天任务不在此入口管理');
113
+ throw new LocalizedTaskError('not_found', 'notFound');
99
114
  let changed;
100
115
  switch (input.action) {
101
116
  case 'pause':
102
117
  if (task.state !== 'scheduled')
103
- throw invalid('仅待执行任务可以暂停;未确认投递不能暂停或恢复');
104
- changed = { ...task, state: 'paused', detail: '管理员暂停' };
118
+ throw invalid('pauseState');
119
+ changed = { ...task, state: 'paused', ...taskDetail('paused') };
105
120
  break;
106
121
  case 'resume': {
107
122
  if (task.state !== 'paused')
108
- throw invalid('仅已暂停任务可以恢复;未确认投递不能恢复或重试');
123
+ throw invalid('resumeState');
109
124
  if (task.intervalMs === null && task.nextRunAt <= now)
110
- throw invalid('一次性任务时间已过,请先编辑为未来时间再恢复');
125
+ throw invalid('expired');
111
126
  const nextRunAt = task.nextRunAt <= now && task.intervalMs !== null ? nextPeriodicTime(task.nextRunAt, task.intervalMs, now) : task.nextRunAt;
112
- changed = { ...task, state: 'scheduled', nextRunAt, detail: nextRunAt !== task.nextRunAt ? '已恢复,并跳过错过的周期轮次' : '管理员恢复' };
127
+ changed = { ...task, state: 'scheduled', nextRunAt, ...taskDetail(nextRunAt !== task.nextRunAt ? 'resumedSkipping' : 'resumed') };
113
128
  break;
114
129
  }
115
130
  case 'update':
116
131
  if (task.state !== 'paused')
117
- throw invalid('编辑前请先暂停任务;未确认投递不能编辑');
132
+ throw invalid('updateState');
118
133
  assertFuture(Date.parse(parameters.at), now);
119
134
  changed = { ...task, text: parameters.text, nextRunAt: Date.parse(parameters.at),
120
- intervalMs: parameters.intervalSeconds === undefined ? null : parameters.intervalSeconds * 1000, detail: '已编辑,保持暂停;请确认后恢复' };
135
+ intervalMs: parameters.intervalSeconds === undefined ? null : parameters.intervalSeconds * 1000, ...taskDetail('edited') };
121
136
  break;
122
137
  case 'cancel':
123
138
  if (!activeStates.has(task.state))
124
- throw invalid('任务已结束,不能再次取消');
125
- changed = { ...task, state: 'cancelled', detail: '管理员取消;已经开始的投递无法撤回' };
139
+ throw invalid('finished');
140
+ changed = { ...task, state: 'cancelled', ...taskDetail('cancelled') };
126
141
  break;
127
142
  }
128
143
  return bounded({ ...book, revision, tasks: book.tasks.map(item => item.id === task.id ? changed : item), receipts: receipt(book, input.requestId, fingerprint, task.id, input.action) });
129
144
  });
130
- return this.#snapshot(readBook(result));
145
+ return this.#snapshot(readBook(result), input.locale);
131
146
  }
132
147
  /** Called only by the existing ReminderService worker, within its shared batch limit. */
133
148
  async claim(now, claimId) {
@@ -142,12 +157,12 @@ export class AdministratorReminderTasks {
142
157
  return task;
143
158
  if (task.intervalMs !== null && now - task.nextRunAt > this.config.missedGraceSeconds * 1000) {
144
159
  changed = true;
145
- return { ...task, nextRunAt: nextPeriodicTime(task.nextRunAt, task.intervalMs, now), detail: '已跳过错过的周期轮次' };
160
+ return { ...task, nextRunAt: nextPeriodicTime(task.nextRunAt, task.intervalMs, now), ...taskDetail('skipped') };
146
161
  }
147
162
  if (claimed)
148
163
  return task;
149
164
  changed = claimed = true;
150
- return { ...task, state: 'unknown', claimId, lastRunAt: now, detail: '投递中或未确认;不会自动重试' };
165
+ return { ...task, state: 'unknown', claimId, lastRunAt: now, ...taskDetail('delivering') };
151
166
  });
152
167
  return changed ? bounded({ ...book, revision, tasks }) : current;
153
168
  });
@@ -157,18 +172,18 @@ export class AdministratorReminderTasks {
157
172
  if (this.#stopped)
158
173
  return;
159
174
  let state = 'unknown';
160
- let detail = '平台未确认投递,请核实目标会话后取消并另建任务;不会自动重试';
175
+ let detail = taskDetail('unknown');
161
176
  try {
162
- const id = await this.outbound.sendTarget(task.target, `⏰ 提醒:${task.text}`);
177
+ const id = await this.outbound.sendTarget(task.target, t(resolveLocale(task.locale), 'notification', { text: task.text }), { locale: resolveLocale(task.locale) });
163
178
  if (id) {
164
179
  state = task.intervalMs === null ? 'succeeded' : 'scheduled';
165
- detail = '已确认投递';
180
+ detail = taskDetail('delivered');
166
181
  }
167
182
  }
168
183
  catch (error) {
169
184
  if (error instanceof EndpointDeliveryError && error.disposition !== 'unknown') {
170
185
  state = 'failed';
171
- detail = '平台明确未投递或拒绝;任务已停止';
186
+ detail = taskDetail('rejected');
172
187
  }
173
188
  }
174
189
  const revision = randomUUID();
@@ -179,31 +194,35 @@ export class AdministratorReminderTasks {
179
194
  if (item.id !== task.id || item.claimId !== task.claimId || item.state !== 'unknown')
180
195
  return item;
181
196
  changed = true;
182
- return { ...item, state, detail, ...(state === 'scheduled' && task.intervalMs !== null
197
+ return { ...item, state, ...detail, ...(state === 'scheduled' && task.intervalMs !== null
183
198
  ? { nextRunAt: nextPeriodicTime(task.nextRunAt, task.intervalMs, Date.now()) } : {}) };
184
199
  });
185
200
  return changed ? bounded({ ...book, revision, tasks }) : current;
186
201
  });
187
202
  }
188
203
  #assertLive() { if (this.#stopped)
189
- throw new PluginTaskError('unavailable', '管理员提醒服务属于已停止的插件实例'); }
190
- async #admit(operation) {
191
- this.#assertLive();
192
- const release = this.#admission.acquire();
193
- if (!release)
194
- throw new PluginTaskError('unavailable', '管理员提醒服务属于未发布或已退役的 generation');
204
+ throw new LocalizedTaskError('unavailable', 'stopped'); }
205
+ async #admit(operation, locale) {
206
+ let release;
195
207
  try {
208
+ this.#assertLive();
209
+ release = this.#admission.acquire();
210
+ if (!release)
211
+ throw new LocalizedTaskError('unavailable', 'retired');
196
212
  return await operation();
197
213
  }
214
+ catch (error) {
215
+ throw error instanceof LocalizedTaskError ? error.localize(locale) : error;
216
+ }
198
217
  finally {
199
- release();
218
+ release?.();
200
219
  }
201
220
  }
202
- #snapshot(book) {
221
+ #snapshot(book, locale) {
203
222
  return { revision: book.revision, receipts: book.receipts.map(item => ({ requestId: item.id, taskId: item.taskId, operation: item.operation })), tasks: book.tasks.map(task => ({
204
223
  id: task.id, ownership: 'administrator', title: taskTitle(task.text), target: task.target, state: task.state, createdAt: task.createdAt,
205
224
  ...(task.state === 'scheduled' || task.state === 'paused' ? { nextRunAt: task.nextRunAt } : {}), ...(task.lastRunAt === null ? {} : { lastRunAt: task.lastRunAt }),
206
- timezone: this.config.timezone, detail: `${task.detail};状态仅表示调度事实,不代表平台连接或投递健康`,
225
+ timezone: this.config.timezone, detail: adminText(locale, 'stateNote', { detail: formatTaskDetail(task, locale) }),
207
226
  parameters: { text: task.text, at: new Date(task.nextRunAt).toISOString(), ...(task.intervalMs === null ? {} : { intervalSeconds: task.intervalMs / 1000 }) },
208
227
  actions: task.state === 'scheduled' ? ['pause', 'cancel'] : task.state === 'paused' ? ['update', 'resume', 'cancel'] : task.state === 'unknown' ? ['cancel'] : [],
209
228
  })) };
@@ -211,25 +230,25 @@ export class AdministratorReminderTasks {
211
230
  }
212
231
  function assertMutation(input) {
213
232
  if (typeof input.requestId !== 'string' || !uuidPattern.test(input.requestId) || typeof input.expectedRevision !== 'string' || !input.expectedRevision || input.expectedRevision.length > 128)
214
- throw invalid('操作须包含 UUID requestId 和读取到的 expectedRevision');
233
+ throw invalid('invalidMutation');
215
234
  }
216
235
  function parseParameters(value) {
217
236
  if (!value || Array.isArray(value) || Object.keys(value).some(key => !['text', 'at', 'intervalSeconds'].includes(key))
218
237
  || typeof value.text !== 'string' || !value.text.trim() || value.text.length > 500 || typeof value.at !== 'string'
219
238
  || (value.intervalSeconds !== undefined && (typeof value.intervalSeconds !== 'number' || !Number.isSafeInteger(value.intervalSeconds) || value.intervalSeconds < 60 || value.intervalSeconds > MAX_DELAY_SECONDS)))
220
- throw invalid('参数须包含 1–500 字提醒内容、带 offset 的 ISO 时间及可选的 60 秒至一年整数周期');
239
+ throw invalid('invalidParameters');
221
240
  let at;
222
241
  try {
223
242
  at = parseReminderInstant(value.at);
224
243
  }
225
244
  catch {
226
- throw invalid('提醒时间须为有效且带 Z 或 ±hh:mm 的 ISO 时间');
245
+ throw invalid('invalidInstant');
227
246
  }
228
247
  return { text: value.text, at: new Date(at).toISOString(), ...(value.intervalSeconds === undefined ? {} : { intervalSeconds: value.intervalSeconds }) };
229
248
  }
230
249
  function assertFuture(at, now) {
231
250
  if (!Number.isSafeInteger(at) || at <= now || at - now > MAX_DELAY_SECONDS * 1000)
232
- throw invalid('提醒时间须在未来一年内');
251
+ throw invalid('future');
233
252
  }
234
253
  function digest(value) { return createHash('sha256').update(JSON.stringify(value)).digest('hex'); }
235
254
  function taskTitle(text) {
@@ -248,19 +267,19 @@ function reconcile(book, id, fingerprint) {
248
267
  if (!previous)
249
268
  return false;
250
269
  if (previous.fingerprint !== fingerprint)
251
- throw conflict('同一操作请求 ID 已用于其他内容,禁止重放');
270
+ throw conflict('replayConflict');
252
271
  return true;
253
272
  }
254
273
  function assertRevision(book, revision) { if (book.revision !== revision)
255
- throw conflict('任务列表已变化,请刷新后重新确认操作'); }
274
+ throw conflict('revision'); }
256
275
  function receipt(book, id, fingerprint, taskId, operation) {
257
276
  return [...book.receipts, { id, fingerprint, taskId, operation }].slice(-128);
258
277
  }
259
- function invalid(message) { return new PluginTaskError('invalid_input', message); }
260
- function conflict(message) { return new PluginTaskError('conflict', message); }
278
+ function invalid(message) { return new LocalizedTaskError('invalid_input', message); }
279
+ function conflict(message) { return new LocalizedTaskError('conflict', message); }
261
280
  function bounded(book) {
262
281
  if (book.tasks.length > 32 || new TextEncoder().encode(JSON.stringify(book)).byteLength > 60 * 1024)
263
- throw invalid('管理员提醒池状态达到 32 条或 60 KiB 上限,请先取消并整理任务');
282
+ throw invalid('capacity');
264
283
  return book;
265
284
  }
266
285
  function readBook(value) {
@@ -280,6 +299,7 @@ function readBook(value) {
280
299
  || (task.intervalMs !== null && (!Number.isSafeInteger(task.intervalMs) || task.intervalMs < 60_000 || task.intervalMs > MAX_DELAY_SECONDS * 1000))
281
300
  || !['scheduled', 'paused', 'unknown', 'succeeded', 'failed', 'cancelled'].includes(task.state)
282
301
  || (task.claimId !== null && (typeof task.claimId !== 'string' || !task.claimId)) || (task.lastRunAt !== null && !Number.isSafeInteger(task.lastRunAt))
302
+ || (task.locale !== undefined && task.locale !== 'zh-CN' && task.locale !== 'en') || (task.detailKey !== undefined && !isAdminTextKey(task.detailKey))
283
303
  || typeof task.detail !== 'string' || !Number.isFinite(new Date(task.nextRunAt).getTime()))
284
304
  throw new Error('invalid task');
285
305
  createDeliveryTarget({ conversation: task.target });
@@ -288,7 +308,7 @@ function readBook(value) {
288
308
  return bounded(value);
289
309
  }
290
310
  catch {
291
- throw new PluginTaskError('unavailable', '管理员提醒持久状态格式无效,已停止投递');
311
+ throw new LocalizedTaskError('unavailable', 'corrupt');
292
312
  }
293
313
  }
294
314
  //# sourceMappingURL=admin-tasks.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"admin-tasks.js","sourceRoot":"","sources":["../src/admin-tasks.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"admin-tasks.js","sourceRoot":"","sources":["../src/admin-tasks.ts"],"names":[],"mappings":"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"}
package/lib/caller.d.ts CHANGED
@@ -1,5 +1,6 @@
1
+ import { type Locale } from 'zhin.js/i18n';
1
2
  import type { CommandMessage } from '@zhin.js/command';
2
3
  import { type ReminderActor } from './service.js';
3
- export declare function reminderActor(input: CommandMessage | undefined): ReminderActor;
4
+ export declare function reminderActor(input: CommandMessage | undefined, locale?: Locale): ReminderActor;
4
5
  export declare function replyReminder(operation: () => Promise<string>): Promise<string>;
5
6
  //# sourceMappingURL=caller.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"caller.d.ts","sourceRoot":"","sources":["../src/caller.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AACvD,OAAO,EAAsB,KAAK,aAAa,EAAE,MAAM,cAAc,CAAC;AAEtE,wBAAgB,aAAa,CAAC,KAAK,EAAE,cAAc,GAAG,SAAS,GAAG,aAAa,CAG9E;AAED,wBAAsB,aAAa,CAAC,SAAS,EAAE,MAAM,OAAO,CAAC,MAAM,CAAC,GAAG,OAAO,CAAC,MAAM,CAAC,CAGrF"}
1
+ {"version":3,"file":"caller.d.ts","sourceRoot":"","sources":["../src/caller.ts"],"names":[],"mappings":"AAAA,OAAO,EAAiB,KAAK,MAAM,EAAE,MAAM,cAAc,CAAC;AAG1D,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AACvD,OAAO,EAAsB,KAAK,aAAa,EAAE,MAAM,cAAc,CAAC;AAEtE,wBAAgB,aAAa,CAAC,KAAK,EAAE,cAAc,GAAG,SAAS,EAAE,MAAM,GAAE,MAAqC,GAAG,aAAa,CAG7H;AAED,wBAAsB,aAAa,CAAC,SAAS,EAAE,MAAM,OAAO,CAAC,MAAM,CAAC,GAAG,OAAO,CAAC,MAAM,CAAC,CAGrF"}
package/lib/caller.js CHANGED
@@ -1,9 +1,11 @@
1
+ import { resolveLocale } from 'zhin.js/i18n';
2
+ import { reminderMessages as t } from './i18n.js';
1
3
  import { createDeliveryTarget } from 'zhin.js';
2
4
  import { ReminderInputError } from './service.js';
3
- export function reminderActor(input) {
5
+ export function reminderActor(input, locale = resolveLocale(input?.locale)) {
4
6
  if (!input?.sender?.id)
5
- throw new ReminderInputError('提醒指令需要真实会话和发送者');
6
- return { senderId: input.sender.id, target: createDeliveryTarget(input) };
7
+ throw new ReminderInputError(t(locale, 'actorRequired'));
8
+ return { senderId: input.sender.id, target: createDeliveryTarget(input), locale };
7
9
  }
8
10
  export async function replyReminder(operation) {
9
11
  try {
package/lib/caller.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"caller.js","sourceRoot":"","sources":["../src/caller.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,oBAAoB,EAAE,MAAM,SAAS,CAAC;AAE/C,OAAO,EAAE,kBAAkB,EAAsB,MAAM,cAAc,CAAC;AAEtE,MAAM,UAAU,aAAa,CAAC,KAAiC;IAC7D,IAAI,CAAC,KAAK,EAAE,MAAM,EAAE,EAAE;QAAE,MAAM,IAAI,kBAAkB,CAAC,gBAAgB,CAAC,CAAC;IACvE,OAAO,EAAE,QAAQ,EAAE,KAAK,CAAC,MAAM,CAAC,EAAE,EAAE,MAAM,EAAE,oBAAoB,CAAC,KAAK,CAAC,EAAE,CAAC;AAC5E,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,aAAa,CAAC,SAAgC;IAClE,IAAI,CAAC;QAAC,OAAO,MAAM,SAAS,EAAE,CAAC;IAAC,CAAC;IACjC,OAAO,KAAK,EAAE,CAAC;QAAC,IAAI,KAAK,YAAY,kBAAkB;YAAE,OAAO,KAAK,CAAC,OAAO,CAAC;QAAC,MAAM,KAAK,CAAC;IAAC,CAAC;AAC/F,CAAC"}
1
+ {"version":3,"file":"caller.js","sourceRoot":"","sources":["../src/caller.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAe,MAAM,cAAc,CAAC;AAC1D,OAAO,EAAE,gBAAgB,IAAI,CAAC,EAAE,MAAM,WAAW,CAAC;AAClD,OAAO,EAAE,oBAAoB,EAAE,MAAM,SAAS,CAAC;AAE/C,OAAO,EAAE,kBAAkB,EAAsB,MAAM,cAAc,CAAC;AAEtE,MAAM,UAAU,aAAa,CAAC,KAAiC,EAAE,SAAiB,aAAa,CAAC,KAAK,EAAE,MAAM,CAAC;IAC5G,IAAI,CAAC,KAAK,EAAE,MAAM,EAAE,EAAE;QAAE,MAAM,IAAI,kBAAkB,CAAC,CAAC,CAAC,MAAM,EAAE,eAAe,CAAC,CAAC,CAAC;IACjF,OAAO,EAAE,QAAQ,EAAE,KAAK,CAAC,MAAM,CAAC,EAAE,EAAE,MAAM,EAAE,oBAAoB,CAAC,KAAK,CAAC,EAAE,MAAM,EAAE,CAAC;AACpF,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,aAAa,CAAC,SAAgC;IAClE,IAAI,CAAC;QAAC,OAAO,MAAM,SAAS,EAAE,CAAC;IAAC,CAAC;IACjC,OAAO,KAAK,EAAE,CAAC;QAAC,IAAI,KAAK,YAAY,kBAAkB;YAAE,OAAO,KAAK,CAAC,OAAO,CAAC;QAAC,MAAM,KAAK,CAAC;IAAC,CAAC;AAC/F,CAAC"}
package/lib/config.js CHANGED
@@ -1,11 +1,11 @@
1
1
  import { Schema } from 'zhin.js';
2
2
  export const reminderConfig = Schema.object({
3
- timezone: Schema.string().default('UTC').description('解释 create 自然时间并显示提醒的 IANA 时区;ISO 绝对时间仍须显式 offset').effect('reload'),
4
- maxTasks: Schema.number().min(1).max(32).step(1).default(20).description('每实例聊天个人提醒池的活跃任务上限;与管理员池独立,降低上限不删除既有任务').effect('reload'),
5
- adminMaxTasks: Schema.number().min(1).max(32).step(1).default(20).description('每实例管理员提醒池的活跃任务上限(待执行、暂停或未确认);与聊天池独立,两池总量可达上限之和').effect('reload'),
6
- maxTasksPerSender: Schema.number().min(1).max(10).step(1).default(10).description('同一发送者在同一会话的任务上限').effect('reload'),
7
- batchSize: Schema.number().min(1).max(5).step(1).default(5).description('每次扫描最多投递的任务数').effect('reload'),
8
- missedGraceSeconds: Schema.number().min(5).max(60).step(1).default(15).description('周期轮次超过此延迟后跳过;停机期间不补历史轮次').effect('reload'),
3
+ timezone: Schema.string().default('UTC').description('解释 create 自然时间并显示提醒的 IANA 时区;ISO 绝对时间仍须显式 offset').i18n({ "en": { "description": "IANA timezone for natural reminder times and display. Absolute ISO times still require an explicit offset." } }).effect('reload'),
4
+ maxTasks: Schema.number().min(1).max(32).step(1).default(20).description('每实例聊天个人提醒池的活跃任务上限;与管理员池独立,降低上限不删除既有任务').i18n({ "en": { "description": "Maximum active personal chat reminders per instance, separate from administrator tasks. Lowering the limit does not delete existing tasks." } }).effect('reload'),
5
+ adminMaxTasks: Schema.number().min(1).max(32).step(1).default(20).description('每实例管理员提醒池的活跃任务上限(待执行、暂停或未确认);与聊天池独立,两池总量可达上限之和').i18n({ "en": { "description": "Maximum active administrator reminders (scheduled, paused or unconfirmed) per instance. Separate from chat tasks; the two quotas are additive." } }).effect('reload'),
6
+ maxTasksPerSender: Schema.number().min(1).max(10).step(1).default(10).description('同一发送者在同一会话的任务上限').i18n({ "en": { "description": "Maximum tasks per sender in the same conversation." } }).effect('reload'),
7
+ batchSize: Schema.number().min(1).max(5).step(1).default(5).description('每次扫描最多投递的任务数').i18n({ "en": { "description": "Maximum tasks delivered in each scan." } }).effect('reload'),
8
+ missedGraceSeconds: Schema.number().min(5).max(60).step(1).default(15).description('周期轮次超过此延迟后跳过;停机期间不补历史轮次').i18n({ "en": { "description": "Skip recurring runs delayed beyond this many seconds. Missed runs during downtime are not backfilled." } }).effect('reload'),
9
9
  });
10
10
  export function assertReminderTimezone(timezone) {
11
11
  try {
package/lib/config.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"config.js","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,SAAS,CAAC;AAEjC,MAAM,CAAC,MAAM,cAAc,GAAG,MAAM,CAAC,MAAM,CAAC;IAC1C,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,WAAW,CAAC,kDAAkD,CAAC,CAAC,MAAM,CAAC,QAAQ,CAAC;IACzH,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC,WAAW,CAAC,uCAAuC,CAAC,CAAC,MAAM,CAAC,QAAQ,CAAC;IAClI,aAAa,EAAE,MAAM,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC,WAAW,CAAC,gDAAgD,CAAC,CAAC,MAAM,CAAC,QAAQ,CAAC;IAChJ,iBAAiB,EAAE,MAAM,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC,WAAW,CAAC,iBAAiB,CAAC,CAAC,MAAM,CAAC,QAAQ,CAAC;IACrH,SAAS,EAAE,MAAM,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC,cAAc,CAAC,CAAC,MAAM,CAAC,QAAQ,CAAC;IACxG,kBAAkB,EAAE,MAAM,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC,WAAW,CAAC,yBAAyB,CAAC,CAAC,MAAM,CAAC,QAAQ,CAAC;CAC/H,CAAC,CAAC;AAIH,MAAM,UAAU,sBAAsB,CAAC,QAAgB;IACrD,IAAI,CAAC;QACH,IAAI,CAAC,QAAQ,IAAI,QAAQ,CAAC,MAAM,GAAG,GAAG,IAAI,QAAQ,KAAK,QAAQ,CAAC,IAAI,EAAE,IAAI,QAAQ,CAAC,IAAI,CAAC,QAAQ,CAAC;YAAE,MAAM,IAAI,UAAU,CAAC,uBAAuB,CAAC,CAAC;QACjJ,IAAI,IAAI,CAAC,cAAc,CAAC,OAAO,EAAE,EAAE,QAAQ,EAAE,QAAQ,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;IACrE,CAAC;IACD,MAAM,CAAC;QAAC,MAAM,IAAI,SAAS,CAAC,8BAA8B,QAAQ,EAAE,CAAC,CAAC;IAAC,CAAC;AAC1E,CAAC"}
1
+ {"version":3,"file":"config.js","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,SAAS,CAAC;AAEjC,MAAM,CAAC,MAAM,cAAc,GAAG,MAAM,CAAC,MAAM,CAAC;IAC1C,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,WAAW,CAAC,kDAAkD,CAAC,CAAC,IAAI,CAAC,EAAC,IAAI,EAAE,EAAC,aAAa,EAAE,4GAA4G,EAAC,EAAC,CAAC,CAAC,MAAM,CAAC,QAAQ,CAAC;IACrQ,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC,WAAW,CAAC,uCAAuC,CAAC,CAAC,IAAI,CAAC,EAAC,IAAI,EAAE,EAAC,aAAa,EAAE,4IAA4I,EAAC,EAAC,CAAC,CAAC,MAAM,CAAC,QAAQ,CAAC;IAC9S,aAAa,EAAE,MAAM,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC,WAAW,CAAC,gDAAgD,CAAC,CAAC,IAAI,CAAC,EAAC,IAAI,EAAE,EAAC,aAAa,EAAE,gJAAgJ,EAAC,EAAC,CAAC,CAAC,MAAM,CAAC,QAAQ,CAAC;IAChU,iBAAiB,EAAE,MAAM,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC,WAAW,CAAC,iBAAiB,CAAC,CAAC,IAAI,CAAC,EAAC,IAAI,EAAE,EAAC,aAAa,EAAE,oDAAoD,EAAC,EAAC,CAAC,CAAC,MAAM,CAAC,QAAQ,CAAC;IACzM,SAAS,EAAE,MAAM,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC,cAAc,CAAC,CAAC,IAAI,CAAC,EAAC,IAAI,EAAE,EAAC,aAAa,EAAE,uCAAuC,EAAC,EAAC,CAAC,CAAC,MAAM,CAAC,QAAQ,CAAC;IAC/K,kBAAkB,EAAE,MAAM,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC,WAAW,CAAC,yBAAyB,CAAC,CAAC,IAAI,CAAC,EAAC,IAAI,EAAE,EAAC,aAAa,EAAE,uGAAuG,EAAC,EAAC,CAAC,CAAC,MAAM,CAAC,QAAQ,CAAC;CACtQ,CAAC,CAAC;AAIH,MAAM,UAAU,sBAAsB,CAAC,QAAgB;IACrD,IAAI,CAAC;QACH,IAAI,CAAC,QAAQ,IAAI,QAAQ,CAAC,MAAM,GAAG,GAAG,IAAI,QAAQ,KAAK,QAAQ,CAAC,IAAI,EAAE,IAAI,QAAQ,CAAC,IAAI,CAAC,QAAQ,CAAC;YAAE,MAAM,IAAI,UAAU,CAAC,uBAAuB,CAAC,CAAC;QACjJ,IAAI,IAAI,CAAC,cAAc,CAAC,OAAO,EAAE,EAAE,QAAQ,EAAE,QAAQ,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;IACrE,CAAC;IACD,MAAM,CAAC;QAAC,MAAM,IAAI,SAAS,CAAC,8BAA8B,QAAQ,EAAE,CAAC,CAAC;IAAC,CAAC;AAC1E,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"create-reminder.d.ts","sourceRoot":"","sources":["../src/create-reminder.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,iBAAiB,CAAC;AACtD,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AAalD,uFAAuF;AACvF,wBAAsB,sBAAsB,CAC1C,OAAO,EAAE,cAAc,CAAC,cAAc,CAAC,EACvC,UAAU,EAAE,QAAQ,CAAC;IAAE,IAAI,CAAC,EAAE,MAAM,CAAC;IAAC,IAAI,CAAC,EAAE,MAAM,CAAA;CAAE,CAAC,GACrD,OAAO,CAAC,MAAM,GAAG,SAAS,CAAC,CAuF7B"}
1
+ {"version":3,"file":"create-reminder.d.ts","sourceRoot":"","sources":["../src/create-reminder.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,iBAAiB,CAAC;AACtD,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AAYlD,uFAAuF;AACvF,wBAAsB,sBAAsB,CAC1C,OAAO,EAAE,cAAc,CAAC,cAAc,CAAC,EACvC,UAAU,EAAE,QAAQ,CAAC;IAAE,IAAI,CAAC,EAAE,MAAM,CAAC;IAAC,IAAI,CAAC,EAAE,MAAM,CAAA;CAAE,CAAC,GACrD,OAAO,CAAC,MAAM,GAAG,SAAS,CAAC,CA8F7B"}