@zhin.js/plugin-reminder 1.0.4 → 1.0.6

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 (79) hide show
  1. package/README.md +12 -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 +4 -0
  48. package/lib/storage.d.ts.map +1 -0
  49. package/lib/storage.js +51 -0
  50. package/lib/storage.js.map +1 -0
  51. package/lib/timing.d.ts +2 -1
  52. package/lib/timing.d.ts.map +1 -1
  53. package/lib/timing.js +5 -4
  54. package/lib/timing.js.map +1 -1
  55. package/lib/tool-actor.d.ts +2 -0
  56. package/lib/tool-actor.d.ts.map +1 -1
  57. package/lib/tool-actor.js +14 -4
  58. package/lib/tool-actor.js.map +1 -1
  59. package/package.json +9 -9
  60. package/plugin.js +12 -4
  61. package/schema.json +30 -0
  62. package/skills/reminder/tools/reminder_cancel/index.js +3 -2
  63. package/skills/reminder/tools/reminder_cancel/index.ts +3 -2
  64. package/skills/reminder/tools/reminder_create/index.js +7 -6
  65. package/skills/reminder/tools/reminder_create/index.ts +7 -6
  66. package/skills/reminder/tools/reminder_list/index.js +3 -2
  67. package/skills/reminder/tools/reminder_list/index.ts +3 -2
  68. package/src/admin-i18n.ts +154 -0
  69. package/src/admin-tasks.ts +79 -53
  70. package/src/caller.ts +5 -3
  71. package/src/config.ts +6 -6
  72. package/src/create-reminder.ts +33 -25
  73. package/src/duration.ts +5 -3
  74. package/src/i18n.ts +336 -0
  75. package/src/natural-time.ts +40 -30
  76. package/src/service.ts +51 -38
  77. package/src/storage.ts +54 -0
  78. package/src/timing.ts +6 -4
  79. package/src/tool-actor.ts +15 -4
@@ -1,10 +1,11 @@
1
+ import { resolveLocale } from 'zhin.js/i18n';
2
+ import { reminderMessages as t } from './i18n.js';
1
3
  import { reminderActor } from './caller.js';
2
4
  import { reminderServiceToken } from './runtime.js';
3
5
  import { ReminderInputError } from './service.js';
4
6
  import { ReminderTimeInputError, parseNaturalReminderTime, formatReminderTime } from './natural-time.js';
5
7
  const STEP_TIMEOUT = 60_000;
6
8
  const FLOW_TIMEOUT = 3 * STEP_TIMEOUT;
7
- const TIMEOUT_TEXT = '提醒输入超时,未创建提醒;请重新执行 remind create。';
8
9
  class ReminderCreationCancelled extends Error {
9
10
  }
10
11
  class ReminderCreationDeadline extends Error {
@@ -13,25 +14,30 @@ class ReminderPreviewDeliveryError extends Error {
13
14
  }
14
15
  /** Personal reminder entry: no persistence is touched before explicit confirmation. */
15
16
  export async function createPersonalReminder(context, parameters) {
17
+ const locale = resolveLocale(context.locale);
18
+ const createCommand = context.formatCommand('remind create');
19
+ const listCommand = context.formatCommand('remind list');
20
+ const restart = createCommand ? t(locale, 'restartCommand', { command: createCommand }) : t(locale, 'restart');
21
+ const timeoutText = `${t(locale, 'flowTimeout')} ${restart}`;
22
+ const checkExisting = listCommand ? t(locale, 'checkCommand', { command: listCommand }) : t(locale, 'checkNoCommand');
16
23
  if (!context.input?.sender?.id || !context.interaction || !context.input.$replyFrom && !context.input.$reply)
17
- return '请在真实聊天会话中使用此指令;需要发送者身份和交互能力,未创建提醒。';
24
+ return t(locale, 'needsChat');
18
25
  const deadline = Date.now() + FLOW_TIMEOUT;
19
26
  let creating = false;
20
27
  try {
21
- const actor = reminderActor(context.input);
28
+ const actor = reminderActor(context.input, locale);
22
29
  const interaction = context.interaction;
23
30
  const timezone = context.config.timezone;
24
31
  const steps = new Map();
25
- const invocationHead = /^(.*?remind)\s+create(?:\s|$)/iu.exec(context.input.content.trim())?.[1];
26
- const isCommand = (value) => /^[!/#.]?remind\s+(?:create|after|at|every|list|cancel)(?:\s|$)/iu.test(value)
27
- || !!invocationHead && value.startsWith(`${invocationHead} `);
32
+ const commandHeads = ['create', 'after', 'at', 'every', 'list', 'cancel'].map(name => context.formatCommand(`remind ${name}`)).filter((value) => !!value);
33
+ const isCommand = (value) => commandHeads.some(head => value === head || value.startsWith(`${head} `));
28
34
  const checkDeadline = () => {
29
35
  context.signal.throwIfAborted();
30
36
  if (Date.now() >= deadline)
31
37
  throw new ReminderCreationDeadline();
32
38
  };
33
39
  const checkCancel = (value) => {
34
- if (/^(?:取消|cancel)$/iu.test(value.trim()))
40
+ if (value.trim().toLowerCase() === (locale === 'en' ? 'cancel' : '取消'))
35
41
  throw new ReminderCreationCancelled();
36
42
  };
37
43
  const ask = async (stage, title, description, maxLength) => {
@@ -42,8 +48,8 @@ export async function createPersonalReminder(context, parameters) {
42
48
  if (remaining <= 0)
43
49
  throw new ReminderCreationDeadline();
44
50
  const answer = (await interaction.ask({ type: 'text', title, description,
45
- tip: '直接回复内容,不加命令前缀;输入“取消”或 cancel 可退出。', maxLength,
46
- timeout: remaining, timeoutText: TIMEOUT_TEXT, signal: context.signal,
51
+ tip: t(locale, 'answerTip'), maxLength,
52
+ timeout: remaining, timeoutText, signal: context.signal,
47
53
  })).trim();
48
54
  checkDeadline();
49
55
  checkCancel(answer);
@@ -57,9 +63,9 @@ export async function createPersonalReminder(context, parameters) {
57
63
  while (!parsed) {
58
64
  checkDeadline();
59
65
  if (!expression)
60
- expression = await ask('time', '什么时候提醒你?', [timeError, `按 ${timezone} 解析,例如“10分钟后”或“明天上午九点”;也可使用带 offset 的 ISO 时间。`].filter(Boolean).join('\n'), 200);
66
+ expression = await ask('time', t(locale, 'askWhen'), [timeError, t(locale, 'whenHelp', { timezone })].filter(Boolean).join('\n'), 200);
61
67
  try {
62
- parsed = parseNaturalReminderTime(expression, { now: Date.now(), timezone });
68
+ parsed = parseNaturalReminderTime(expression, { now: Date.now(), timezone, locale });
63
69
  }
64
70
  catch (error) {
65
71
  if (!(error instanceof ReminderTimeInputError))
@@ -74,13 +80,13 @@ export async function createPersonalReminder(context, parameters) {
74
80
  let textError = '';
75
81
  while (!text || text.length > 500 || isCommand(text)) {
76
82
  if (text)
77
- textError = isCommand(text) ? '当前正在补全提醒;请直接回复正文,或先取消后重新发指令。' : '提醒正文须为 1–500 个字符。';
78
- text = await ask('body', '提醒你做什么?', [textError, '请输入纯文字提醒正文(1–500 字)。'].filter(Boolean).join('\n'), 500);
83
+ textError = isCommand(text) ? t(locale, 'bodyCommand') : t(locale, 'bodyLimit');
84
+ text = await ask('body', t(locale, 'askBody'), [textError, t(locale, 'bodyHelp')].filter(Boolean).join('\n'), 500);
79
85
  }
80
86
  const target = actor.target;
81
- const scene = `${target.kind} ${target.id}${target.parent ? `;父容器 ${target.parent.kind} ${target.parent.id}` : ''}${target.threadId ? `;话题 ${target.threadId}` : ''}`;
87
+ const scene = `${target.kind} ${target.id}${target.parent ? `; ${t(locale, 'parent')} ${target.parent.kind} ${target.parent.id}` : ''}${target.threadId ? `; ${t(locale, 'thread')} ${target.threadId}` : ''}`;
82
88
  const account = `${target.endpoint.adapter} / ${target.endpoint.id.replaceAll('\0', ' / ')}`;
83
- const preview = `时间:${formatReminderTime(parsed.at, parsed.timezone)}\n原会话:${scene}\n账号:${account}\n正文(原样显示):\n${text}\n\n请等待下一条确认提示,再输入“确认”创建;不会更换目标会话。\n若确认后未收到创建结果,请先在原会话用 remind list 核对,不要直接重复创建。`;
89
+ const preview = `${t(locale, 'preview', { time: formatReminderTime(parsed.at, parsed.timezone), scene, account, text })}\n${checkExisting}`;
84
90
  checkDeadline();
85
91
  // Canonical text avoids interpreting reminder content as Markdown/HTML in the prompt renderer.
86
92
  const previewContent = { type: 'text', data: { text: preview } };
@@ -92,26 +98,26 @@ export async function createPersonalReminder(context, parameters) {
92
98
  throw new ReminderPreviewDeliveryError();
93
99
  let confirmError = '';
94
100
  while (true) {
95
- const answer = await ask('confirmation', '确认创建这条提醒?', [confirmError, '请核对上一条预览的时间、时区、正文和原会话;仅输入“确认”才创建。'].filter(Boolean).join('\n'), 500);
96
- if (answer === '确认')
101
+ const answer = await ask('confirmation', t(locale, 'askConfirm'), [confirmError, t(locale, 'confirmHelp')].filter(Boolean).join('\n'), 500);
102
+ if (answer.toLowerCase() === (locale === 'en' ? 'confirm' : '确认'))
97
103
  break;
98
- confirmError = '未创建提醒。请明确输入“确认”,或输入“取消”退出。';
104
+ confirmError = t(locale, 'confirmInvalid');
99
105
  }
100
106
  checkDeadline();
101
107
  if (parsed.at <= Date.now())
102
- return '提醒时间已过,未创建提醒。请重新执行 remind create 并选择未来时间;不会自动顺延。';
108
+ return `${t(locale, 'expired')} ${restart}`;
103
109
  const service = context.use(reminderServiceToken);
104
110
  creating = true;
105
111
  const task = await service.add(actor, text, parsed.at, null);
106
- return `已创建个人提醒\n${service.describe(task)}`;
112
+ return `${t(locale, 'personalCreated')}\n${service.describe(task, locale)}`;
107
113
  }
108
114
  catch (error) {
109
115
  if (error instanceof ReminderCreationCancelled)
110
- return '已取消,未创建提醒。';
116
+ return t(locale, 'flowCancelled');
111
117
  if (error instanceof ReminderInputError)
112
- return `未创建提醒:${error.message}`;
118
+ return t(locale, 'notCreated', { error: error.message });
113
119
  if (creating)
114
- return '提醒创建结果未能确认,请先使用 remind list 核对;不要直接重复创建。';
120
+ return checkExisting;
115
121
  if (context.signal.aborted
116
122
  || error instanceof Error && ['UserInteractionTimeoutError', 'UserInteractionSupersededError', 'AbortError'].includes(error.name))
117
123
  return undefined;
@@ -119,9 +125,9 @@ export async function createPersonalReminder(context, parameters) {
119
125
  return undefined;
120
126
  // Core reports ask timeouts itself; this deadline can instead expire during preview delivery.
121
127
  if (error instanceof ReminderCreationDeadline)
122
- return TIMEOUT_TEXT;
128
+ return timeoutText;
123
129
  if (error instanceof ReminderPreviewDeliveryError || error instanceof Error && error.name === 'UserInteractionDeliveryError')
124
- return '提示消息未能确认送达,未创建提醒;请核对会话后重新执行,不会自动重发。';
130
+ return t(locale, 'previewFailed');
125
131
  throw error;
126
132
  }
127
133
  }
@@ -1 +1 @@
1
- {"version":3,"file":"create-reminder.js","sourceRoot":"","sources":["../src/create-reminder.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"create-reminder.js","sourceRoot":"","sources":["../src/create-reminder.ts"],"names":[],"mappings":"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"}
package/lib/duration.d.ts CHANGED
@@ -1,2 +1,3 @@
1
- export declare function parseRelativeDelayMs(value: string): number;
1
+ import type { Locale } from 'zhin.js/i18n';
2
+ export declare function parseRelativeDelayMs(value: string, locale?: Locale): number;
2
3
  //# sourceMappingURL=duration.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"duration.d.ts","sourceRoot":"","sources":["../src/duration.ts"],"names":[],"mappings":"AAGA,wBAAgB,oBAAoB,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CA2B1D"}
1
+ {"version":3,"file":"duration.d.ts","sourceRoot":"","sources":["../src/duration.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,cAAc,CAAC;AAK3C,wBAAgB,oBAAoB,CAAC,KAAK,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,MAAM,GAAG,MAAM,CA2B3E"}
package/lib/duration.js CHANGED
@@ -1,17 +1,18 @@
1
+ import { reminderMessages as t } from './i18n.js';
1
2
  /** Relative durations for Agent tools: `10m`, `2h`, `1d`, or plain seconds. */
2
3
  import { ReminderInputError } from "./service.js";
3
- export function parseRelativeDelayMs(value) {
4
+ export function parseRelativeDelayMs(value, locale) {
4
5
  const text = value.trim().toLowerCase();
5
6
  if (/^\d+$/.test(text)) {
6
7
  const seconds = Number(text);
7
8
  if (!Number.isSafeInteger(seconds) || seconds < 1) {
8
- throw new ReminderInputError("延迟秒数无效");
9
+ throw new ReminderInputError(t(locale, 'durationInvalid'));
9
10
  }
10
11
  return seconds * 1000;
11
12
  }
12
13
  const match = /^(\d+)\s*(s|m|h|d|秒|分|分钟|小时|天)$/u.exec(text);
13
14
  if (!match) {
14
- throw new ReminderInputError("时长格式无效(示例:600、10m、2h、1d)");
15
+ throw new ReminderInputError(t(locale, 'durationFormat'));
15
16
  }
16
17
  const amount = Number(match[1]);
17
18
  const unit = match[2];
@@ -1 +1 @@
1
- {"version":3,"file":"duration.js","sourceRoot":"","sources":["../src/duration.ts"],"names":[],"mappings":"AAAA,+EAA+E;AAC/E,OAAO,EAAE,kBAAkB,EAAE,MAAM,cAAc,CAAC;AAElD,MAAM,UAAU,oBAAoB,CAAC,KAAa;IAChD,MAAM,IAAI,GAAG,KAAK,CAAC,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC;IACxC,IAAI,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC;QACvB,MAAM,OAAO,GAAG,MAAM,CAAC,IAAI,CAAC,CAAC;QAC7B,IAAI,CAAC,MAAM,CAAC,aAAa,CAAC,OAAO,CAAC,IAAI,OAAO,GAAG,CAAC,EAAE,CAAC;YAClD,MAAM,IAAI,kBAAkB,CAAC,QAAQ,CAAC,CAAC;QACzC,CAAC;QACD,OAAO,OAAO,GAAG,IAAI,CAAC;IACxB,CAAC;IACD,MAAM,KAAK,GAAG,kCAAkC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAC5D,IAAI,CAAC,KAAK,EAAE,CAAC;QACX,MAAM,IAAI,kBAAkB,CAAC,0BAA0B,CAAC,CAAC;IAC3D,CAAC;IACD,MAAM,MAAM,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;IAChC,MAAM,IAAI,GAAG,KAAK,CAAC,CAAC,CAAE,CAAC;IACvB,MAAM,MAAM,GAAG;QACb,CAAC,EAAE,IAAI;QACP,CAAC,EAAE,IAAI;QACP,CAAC,EAAE,MAAM;QACT,CAAC,EAAE,MAAM;QACT,EAAE,EAAE,MAAM;QACV,CAAC,EAAE,SAAS;QACZ,EAAE,EAAE,SAAS;QACb,CAAC,EAAE,UAAU;QACb,CAAC,EAAE,UAAU;KACd,CAAC,IAAI,CAAE,CAAC;IACT,OAAO,MAAM,GAAG,MAAM,CAAC;AACzB,CAAC"}
1
+ {"version":3,"file":"duration.js","sourceRoot":"","sources":["../src/duration.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,gBAAgB,IAAI,CAAC,EAAE,MAAM,WAAW,CAAC;AAClD,+EAA+E;AAC/E,OAAO,EAAE,kBAAkB,EAAE,MAAM,cAAc,CAAC;AAElD,MAAM,UAAU,oBAAoB,CAAC,KAAa,EAAE,MAAe;IACjE,MAAM,IAAI,GAAG,KAAK,CAAC,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC;IACxC,IAAI,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC;QACvB,MAAM,OAAO,GAAG,MAAM,CAAC,IAAI,CAAC,CAAC;QAC7B,IAAI,CAAC,MAAM,CAAC,aAAa,CAAC,OAAO,CAAC,IAAI,OAAO,GAAG,CAAC,EAAE,CAAC;YAClD,MAAM,IAAI,kBAAkB,CAAC,CAAC,CAAC,MAAM,EAAE,iBAAiB,CAAC,CAAC,CAAC;QAC7D,CAAC;QACD,OAAO,OAAO,GAAG,IAAI,CAAC;IACxB,CAAC;IACD,MAAM,KAAK,GAAG,kCAAkC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAC5D,IAAI,CAAC,KAAK,EAAE,CAAC;QACX,MAAM,IAAI,kBAAkB,CAAC,CAAC,CAAC,MAAM,EAAE,gBAAgB,CAAC,CAAC,CAAC;IAC5D,CAAC;IACD,MAAM,MAAM,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;IAChC,MAAM,IAAI,GAAG,KAAK,CAAC,CAAC,CAAE,CAAC;IACvB,MAAM,MAAM,GAAG;QACb,CAAC,EAAE,IAAI;QACP,CAAC,EAAE,IAAI;QACP,CAAC,EAAE,MAAM;QACT,CAAC,EAAE,MAAM;QACT,EAAE,EAAE,MAAM;QACV,CAAC,EAAE,SAAS;QACZ,EAAE,EAAE,SAAS;QACb,CAAC,EAAE,UAAU;QACb,CAAC,EAAE,UAAU;KACd,CAAC,IAAI,CAAE,CAAC;IACT,OAAO,MAAM,GAAG,MAAM,CAAC;AACzB,CAAC"}
package/lib/i18n.d.ts ADDED
@@ -0,0 +1,2 @@
1
+ export declare const reminderMessages: (locale: import("zhin.js").Locale | undefined, key: "notFound" | "expired" | "cancelled" | "skipped" | "unknown" | "delivered" | "created" | "createdPeriodic" | "empty" | "actorRequired" | "contentInvalid" | "futureRequired" | "intervalInvalid" | "instanceLimit" | "actorLimit" | "userCancelled" | "unconfirmed" | "notification" | "deliveryFailed" | "checkUnconfirmed" | "pending" | "unknownStatus" | "deliveredStatus" | "failedStatus" | "cancelledStatus" | "every" | "storageLimit" | "needsChat" | "flowTimeout" | "restartCommand" | "restart" | "answerTip" | "askWhen" | "whenHelp" | "askBody" | "bodyHelp" | "bodyLimit" | "bodyCommand" | "preview" | "parent" | "checkCommand" | "checkNoCommand" | "askConfirm" | "confirmHelp" | "confirmInvalid" | "personalCreated" | "flowCancelled" | "notCreated" | "previewFailed" | "absoluteInvalid" | "timeLength" | "timeOneLine" | "timeAbsolute" | "timeRange" | "timeFuture" | "timeInstant" | "timeZone" | "timeDateRange" | "timeGap" | "timeFold" | "timeClock" | "timeClockRange" | "timePeriod" | "timeMorning" | "timeNoon" | "timeNumberRange" | "timeChineseNumber" | "timeChineseInteger" | "timeGrammar" | "toolOrigin" | "toolEndpoint" | "toolSender" | "toolMode" | "toolEmpty" | "toolCancelled" | "toolNotFound" | "durationInvalid" | "durationFormat" | "absoluteFormat" | "instantInvalid" | "thread" | "serviceStopped" | "invalidState", values?: import("zhin.js").MessageValues) => string;
2
+ //# sourceMappingURL=i18n.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"i18n.d.ts","sourceRoot":"","sources":["../src/i18n.ts"],"names":[],"mappings":"AAEA,eAAO,MAAM,gBAAgB,w5CA6U3B,CAAC"}
package/lib/i18n.js ADDED
@@ -0,0 +1,336 @@
1
+ import { createMessages } from 'zhin.js/i18n';
2
+ export const reminderMessages = createMessages({
3
+ "created": {
4
+ "zh-CN": "已创建提醒",
5
+ "en": "Reminder created"
6
+ },
7
+ "createdPeriodic": {
8
+ "zh-CN": "已创建周期提醒",
9
+ "en": "Recurring reminder created"
10
+ },
11
+ "empty": {
12
+ "zh-CN": "你在此会话没有提醒任务",
13
+ "en": "You have no reminders in this conversation"
14
+ },
15
+ "cancelled": {
16
+ "zh-CN": "已取消提醒;已经开始的投递无法撤销",
17
+ "en": "Reminder cancelled; delivery already in progress cannot be recalled"
18
+ },
19
+ "notFound": {
20
+ "zh-CN": "未找到你在此会话的提醒",
21
+ "en": "No reminder belonging to you was found in this conversation"
22
+ },
23
+ "actorRequired": {
24
+ "zh-CN": "提醒指令需要真实会话和发送者",
25
+ "en": "Reminder commands require a real conversation and sender"
26
+ },
27
+ "contentInvalid": {
28
+ "zh-CN": "提醒内容须为 1–500 个字符",
29
+ "en": "Reminder text must contain 1–500 characters"
30
+ },
31
+ "futureRequired": {
32
+ "zh-CN": "提醒时间须在未来一年内",
33
+ "en": "The reminder must be scheduled within the next year"
34
+ },
35
+ "intervalInvalid": {
36
+ "zh-CN": "周期须为 60 秒至一年",
37
+ "en": "The interval must be between 60 seconds and one year"
38
+ },
39
+ "instanceLimit": {
40
+ "zh-CN": "此插件实例的提醒数量已达上限,请先取消任务",
41
+ "en": "This plugin instance has reached its reminder limit; cancel a task first"
42
+ },
43
+ "actorLimit": {
44
+ "zh-CN": "你在此会话的提醒数量已达上限,请先取消任务",
45
+ "en": "You have reached the reminder limit for this conversation; cancel a task first"
46
+ },
47
+ "userCancelled": {
48
+ "zh-CN": "用户取消;已经开始的投递无法撤销",
49
+ "en": "Cancelled by the user; delivery already in progress cannot be recalled"
50
+ },
51
+ "skipped": {
52
+ "zh-CN": "已跳过错过的周期轮次",
53
+ "en": "Missed recurring runs were skipped"
54
+ },
55
+ "unknown": {
56
+ "zh-CN": "投递中或未确认;不会自动重试",
57
+ "en": "Delivery is in progress or unconfirmed; it will not be retried automatically"
58
+ },
59
+ "unconfirmed": {
60
+ "zh-CN": "平台未返回确认的消息 ID;不会自动重试",
61
+ "en": "The platform did not return a confirmed message ID; delivery will not be retried automatically"
62
+ },
63
+ "notification": {
64
+ "zh-CN": "⏰ 提醒:{text}",
65
+ "en": "⏰ Reminder: {text}"
66
+ },
67
+ "delivered": {
68
+ "zh-CN": "已确认投递",
69
+ "en": "Delivery confirmed"
70
+ },
71
+ "deliveryFailed": {
72
+ "zh-CN": "投递失败:{code};任务已停止",
73
+ "en": "Delivery failed: {code}; the task has stopped"
74
+ },
75
+ "checkUnconfirmed": {
76
+ "zh-CN": "投递结果未确认;请核对目标会话后取消或重新创建",
77
+ "en": "Delivery is unconfirmed; check the target conversation before cancelling or creating a new reminder"
78
+ },
79
+ "pending": {
80
+ "zh-CN": "待触发",
81
+ "en": "Scheduled"
82
+ },
83
+ "unknownStatus": {
84
+ "zh-CN": "投递中或未确认",
85
+ "en": "In progress or unconfirmed"
86
+ },
87
+ "deliveredStatus": {
88
+ "zh-CN": "已完成",
89
+ "en": "Completed"
90
+ },
91
+ "failedStatus": {
92
+ "zh-CN": "投递失败",
93
+ "en": "Delivery failed"
94
+ },
95
+ "cancelledStatus": {
96
+ "zh-CN": "已取消",
97
+ "en": "Cancelled"
98
+ },
99
+ "every": {
100
+ "zh-CN": "每 {seconds} 秒",
101
+ "en": "Every {seconds} seconds"
102
+ },
103
+ "storageLimit": {
104
+ "zh-CN": "提醒存储达到大小上限,请先取消旧任务",
105
+ "en": "Reminder storage has reached its size limit; cancel old tasks first"
106
+ },
107
+ "needsChat": {
108
+ "zh-CN": "请在真实聊天会话中使用此指令;需要发送者身份和交互能力,未创建提醒。",
109
+ "en": "Use this command in a real chat with a sender identity and interaction support. No reminder was created."
110
+ },
111
+ "flowTimeout": {
112
+ "zh-CN": "提醒输入超时,未创建提醒。",
113
+ "en": "Reminder input timed out. No reminder was created."
114
+ },
115
+ "restartCommand": {
116
+ "zh-CN": "请重新执行 {command}。",
117
+ "en": "Run {command} again."
118
+ },
119
+ "restart": {
120
+ "zh-CN": "请重新发起提醒创建流程。",
121
+ "en": "Start the reminder creation flow again."
122
+ },
123
+ "answerTip": {
124
+ "zh-CN": "直接回复内容,不加命令前缀;输入“取消”可退出。",
125
+ "en": "Reply directly without a command prefix. Enter \"cancel\" to exit."
126
+ },
127
+ "askWhen": {
128
+ "zh-CN": "什么时候提醒你?",
129
+ "en": "When should I remind you?"
130
+ },
131
+ "whenHelp": {
132
+ "zh-CN": "按 {timezone} 解析,例如“10分钟后”或“明天上午九点”;也可使用带 offset 的 ISO 时间。",
133
+ "en": "Parsed in {timezone}. Use \"in 10 minutes\", \"tomorrow at 09:00\", or an ISO timestamp with an explicit offset."
134
+ },
135
+ "askBody": {
136
+ "zh-CN": "提醒你做什么?",
137
+ "en": "What should I remind you about?"
138
+ },
139
+ "bodyHelp": {
140
+ "zh-CN": "请输入纯文字提醒正文(1–500 字)。",
141
+ "en": "Enter plain reminder text (1–500 characters)."
142
+ },
143
+ "bodyLimit": {
144
+ "zh-CN": "提醒正文须为 1–500 个字符。",
145
+ "en": "Reminder text must contain 1–500 characters."
146
+ },
147
+ "bodyCommand": {
148
+ "zh-CN": "当前正在补全提醒;请直接回复正文,或先取消后重新发指令。",
149
+ "en": "A reminder is being completed. Reply with the reminder text, or cancel before starting another command."
150
+ },
151
+ "preview": {
152
+ "zh-CN": "时间:{time}\n原会话:{scene}\n账号:{account}\n正文(原样显示):\n{text}\n\n请等待下一条确认提示,再输入“确认”创建;不会更换目标会话。",
153
+ "en": "Time: {time}\nOriginal conversation: {scene}\nAccount: {account}\nText (shown verbatim):\n{text}\n\nWait for the next confirmation prompt, then enter \"confirm\" to create. The target conversation will remain unchanged."
154
+ },
155
+ "parent": {
156
+ "zh-CN": "父容器",
157
+ "en": "Parent"
158
+ },
159
+ "checkCommand": {
160
+ "zh-CN": "若确认后未收到创建结果,请先在原会话用 {command} 核对,不要直接重复创建。",
161
+ "en": "If the creation result is missing after confirmation, use {command} in the original conversation to check before creating another reminder."
162
+ },
163
+ "checkNoCommand": {
164
+ "zh-CN": "若确认后未收到创建结果,请先核对现有提醒,不要直接重复创建。",
165
+ "en": "If the creation result is missing after confirmation, check existing reminders before creating another one."
166
+ },
167
+ "askConfirm": {
168
+ "zh-CN": "确认创建这条提醒?",
169
+ "en": "Create this reminder?"
170
+ },
171
+ "confirmHelp": {
172
+ "zh-CN": "请核对上一条预览的时间、时区、正文和原会话;仅输入“确认”才创建。",
173
+ "en": "Check the time, timezone, text and original conversation in the preview. Enter \"confirm\" to create."
174
+ },
175
+ "confirmInvalid": {
176
+ "zh-CN": "未创建提醒。请明确输入“确认”,或输入“取消”退出。",
177
+ "en": "No reminder was created. Enter \"confirm\", or enter \"cancel\" to exit."
178
+ },
179
+ "expired": {
180
+ "zh-CN": "提醒时间已过,未创建提醒。请选择未来时间;不会自动顺延。",
181
+ "en": "The reminder time has passed. No reminder was created. Choose a future time; it will not be postponed automatically."
182
+ },
183
+ "personalCreated": {
184
+ "zh-CN": "已创建个人提醒",
185
+ "en": "Personal reminder created"
186
+ },
187
+ "flowCancelled": {
188
+ "zh-CN": "已取消,未创建提醒。",
189
+ "en": "Cancelled. No reminder was created."
190
+ },
191
+ "notCreated": {
192
+ "zh-CN": "未创建提醒:{error}",
193
+ "en": "No reminder was created: {error}"
194
+ },
195
+ "previewFailed": {
196
+ "zh-CN": "提示消息未能确认送达,未创建提醒;请核对会话后重新执行,不会自动重发。",
197
+ "en": "Delivery of the prompt was not confirmed. No reminder was created; check the conversation before trying again. The prompt will not be resent automatically."
198
+ },
199
+ "absoluteInvalid": {
200
+ "zh-CN": "绝对时间须为有效的 ISO 时间并包含时区 offset",
201
+ "en": "Use a valid ISO timestamp with an explicit timezone offset"
202
+ },
203
+ "timeLength": {
204
+ "zh-CN": "提醒时间须为不超过 200 个字符的文字",
205
+ "en": "Reminder time must be text of at most 200 characters"
206
+ },
207
+ "timeOneLine": {
208
+ "zh-CN": "请在一行内输入提醒时间",
209
+ "en": "Enter the reminder time on one line"
210
+ },
211
+ "timeAbsolute": {
212
+ "zh-CN": "绝对时间无效,请使用带 Z 或 ±hh:mm 的 ISO 时间,例如 2026-10-20T09:00:00+08:00",
213
+ "en": "Use a valid ISO timestamp with Z or an explicit ±hh:mm offset, such as 2027-01-01T09:00:00+08:00"
214
+ },
215
+ "timeRange": {
216
+ "zh-CN": "提醒时间不能超过当前时间的 365 天后",
217
+ "en": "The reminder cannot be more than 365 days in the future"
218
+ },
219
+ "timeFuture": {
220
+ "zh-CN": "提醒时间须在当前时间至少 1 秒后;今天已过的时间不会自动改到明天,请重新指定日期",
221
+ "en": "The reminder must be at least one second in the future. Past times are not postponed to tomorrow; choose a new date"
222
+ },
223
+ "timeInstant": {
224
+ "zh-CN": "当前时间或提醒时间无效",
225
+ "en": "The current time or reminder time is invalid"
226
+ },
227
+ "timeZone": {
228
+ "zh-CN": "提醒时区无效,请配置有效的 IANA 时区,例如 Asia/Shanghai",
229
+ "en": "Configure a valid IANA timezone, such as Asia/Shanghai"
230
+ },
231
+ "timeDateRange": {
232
+ "zh-CN": "提醒日期超出支持范围",
233
+ "en": "The reminder date is outside the supported range"
234
+ },
235
+ "timeGap": {
236
+ "zh-CN": "这个本地时间因时区或夏令时切换而不存在,请改用明确日期并带 offset 的 ISO 时间",
237
+ "en": "This local time does not exist because of a timezone transition. Use an ISO timestamp with an explicit date and offset"
238
+ },
239
+ "timeFold": {
240
+ "zh-CN": "这个本地时间因夏令时切换出现两次,请使用带明确 offset 的 ISO 时间选择其中一次",
241
+ "en": "This local time occurs twice because of daylight saving time. Use an ISO timestamp with an explicit offset to select one occurrence"
242
+ },
243
+ "timeClock": {
244
+ "zh-CN": "时间须写为 09:30、九点、九点半或九点三十分;请同时指定今天、明天或后天",
245
+ "en": "Specify today, tomorrow or the day after tomorrow with an explicit clock time"
246
+ },
247
+ "timeClockRange": {
248
+ "zh-CN": "小时须为 0–23,分钟和秒须为 0–59",
249
+ "en": "Hours must be 0–23; minutes and seconds must be 0–59"
250
+ },
251
+ "timePeriod": {
252
+ "zh-CN": "时段与钟点不明确,请使用 24 小时制,例如 00:00 或 18:00",
253
+ "en": "The clock time and period are ambiguous; use 24-hour time such as 00:00 or 18:00"
254
+ },
255
+ "timeMorning": {
256
+ "zh-CN": "时段与钟点不明确,请使用 24 小时制,例如 00:00 或 12:00",
257
+ "en": "The clock time and period are ambiguous; use 24-hour time such as 00:00 or 12:00"
258
+ },
259
+ "timeNoon": {
260
+ "zh-CN": "中午的钟点不明确,请使用 24 小时制",
261
+ "en": "The noon time is ambiguous; use 24-hour time"
262
+ },
263
+ "timeNumberRange": {
264
+ "zh-CN": "时间数值过大,请使用一年以内的时间",
265
+ "en": "The time value is too large; choose a time within one year"
266
+ },
267
+ "timeChineseNumber": {
268
+ "zh-CN": "中文数字不明确,请改用阿拉伯数字",
269
+ "en": "The Chinese number is ambiguous; use Arabic numerals"
270
+ },
271
+ "timeChineseInteger": {
272
+ "zh-CN": "中文数字不明确,请写完整中文整数或改用阿拉伯数字",
273
+ "en": "Use a complete Chinese integer or Arabic numerals"
274
+ },
275
+ "timeGrammar": {
276
+ "zh-CN": "暂不支持这种时间表达,请使用“十分钟后”“明天九点半”或带时区 offset 的 ISO 时间;不支持每天、每周等日历周期",
277
+ "en": "This time expression is not supported. Use \"in 10 minutes\", \"tomorrow at 09:00\", or an ISO timestamp with an explicit offset. Calendar recurrence is not supported."
278
+ },
279
+ "toolOrigin": {
280
+ "zh-CN": "提醒工具只能在聊天会话中使用(不能用于 http/schedule 等来源)",
281
+ "en": "Reminder tools require a chat conversation; HTTP and scheduled-agent origins are not supported."
282
+ },
283
+ "toolEndpoint": {
284
+ "zh-CN": "无法确定当前会话所属的机器人账号",
285
+ "en": "Could not identify the bot account for this conversation."
286
+ },
287
+ "toolSender": {
288
+ "zh-CN": "提醒工具需要真实发送者",
289
+ "en": "Reminder tools require a real sender."
290
+ },
291
+ "toolMode": {
292
+ "zh-CN": "请在 after / at / every_seconds 中只选一种时间表达",
293
+ "en": "Choose exactly one of after, at or every_seconds."
294
+ },
295
+ "toolEmpty": {
296
+ "zh-CN": "当前会话没有提醒",
297
+ "en": "There are no reminders in this conversation."
298
+ },
299
+ "toolCancelled": {
300
+ "zh-CN": "已取消提醒 {id}",
301
+ "en": "Reminder {id} cancelled."
302
+ },
303
+ "toolNotFound": {
304
+ "zh-CN": "找不到提醒 {id}(或不属于你在当前会话的任务)",
305
+ "en": "Reminder {id} was not found or does not belong to you in this conversation."
306
+ },
307
+ "durationInvalid": {
308
+ "zh-CN": "延迟秒数无效",
309
+ "en": "Invalid delay in seconds."
310
+ },
311
+ "durationFormat": {
312
+ "zh-CN": "时长格式无效(示例:600、10m、2h、1d)",
313
+ "en": "Invalid duration (examples: 600, 10m, 2h, 1d)."
314
+ },
315
+ "absoluteFormat": {
316
+ "zh-CN": "绝对时间须为带 Z 或 ±hh:mm 的 ISO 时间,例如 2026-10-14T09:00:00+08:00",
317
+ "en": "Use an ISO time with Z or an explicit ±hh:mm offset, such as 2026-10-14T09:00:00+08:00."
318
+ },
319
+ "instantInvalid": {
320
+ "zh-CN": "提醒时间无效",
321
+ "en": "Invalid reminder time."
322
+ },
323
+ "thread": {
324
+ "zh-CN": "话题",
325
+ "en": "Thread"
326
+ },
327
+ "serviceStopped": {
328
+ "zh-CN": "提醒服务属于已停止的插件实例",
329
+ "en": "This reminder service belongs to a stopped plugin instance"
330
+ },
331
+ "invalidState": {
332
+ "zh-CN": "提醒持久状态格式无效,已停止投递",
333
+ "en": "Reminder storage is invalid; delivery has been stopped"
334
+ }
335
+ });
336
+ //# sourceMappingURL=i18n.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"i18n.js","sourceRoot":"","sources":["../src/i18n.ts"],"names":[],"mappings":"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"}
@@ -1,10 +1,14 @@
1
+ import { type Locale } from 'zhin.js/i18n';
2
+ import { reminderMessages as t } from './i18n.js';
1
3
  export declare class ReminderTimeInputError extends Error {
2
- constructor(message: string);
4
+ readonly code?: Parameters<typeof t>[1] | undefined;
5
+ constructor(message: string, code?: Parameters<typeof t>[1] | undefined);
3
6
  }
4
7
  /** Parse a bounded, explicit grammar; this never reads the machine's default timezone. */
5
8
  export declare function parseNaturalReminderTime(expression: string, options: {
6
9
  now: number;
7
10
  timezone: string;
11
+ locale?: Locale;
8
12
  }): {
9
13
  at: number;
10
14
  timezone: string;
@@ -1 +1 @@
1
- {"version":3,"file":"natural-time.d.ts","sourceRoot":"","sources":["../src/natural-time.ts"],"names":[],"mappings":"AAEA,qBAAa,sBAAuB,SAAQ,KAAK;gBACnC,OAAO,EAAE,MAAM;CAI5B;AAoBD,0FAA0F;AAC1F,wBAAgB,wBAAwB,CACtC,UAAU,EAAE,MAAM,EAClB,OAAO,EAAE;IAAE,GAAG,EAAE,MAAM,CAAC;IAAC,QAAQ,EAAE,MAAM,CAAA;CAAE,GACzC;IAAE,EAAE,EAAE,MAAM,CAAC;IAAC,QAAQ,EAAE,MAAM,CAAC;IAAC,UAAU,EAAE,MAAM,CAAA;CAAE,CAmCtD;AAED,4EAA4E;AAC5E,wBAAgB,kBAAkB,CAAC,EAAE,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,MAAM,CAQvE"}
1
+ {"version":3,"file":"natural-time.d.ts","sourceRoot":"","sources":["../src/natural-time.ts"],"names":[],"mappings":"AAAA,OAAO,EAAiB,KAAK,MAAM,EAAE,MAAM,cAAc,CAAC;AAC1D,OAAO,EAAE,gBAAgB,IAAI,CAAC,EAAE,MAAM,WAAW,CAAC;AAGlD,qBAAa,sBAAuB,SAAQ,KAAK;IAClB,QAAQ,CAAC,IAAI,CAAC,EAAE,UAAU,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC;gBAAxD,OAAO,EAAE,MAAM,EAAW,IAAI,CAAC,EAAE,UAAU,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,YAAA;CAIrE;AAsBD,0FAA0F;AAC1F,wBAAgB,wBAAwB,CACtC,UAAU,EAAE,MAAM,EAClB,OAAO,EAAE;IAAE,GAAG,EAAE,MAAM,CAAC;IAAC,QAAQ,EAAE,MAAM,CAAC;IAAC,MAAM,CAAC,EAAE,MAAM,CAAA;CAAE,GAC1D;IAAE,EAAE,EAAE,MAAM,CAAC;IAAC,QAAQ,EAAE,MAAM,CAAC;IAAC,UAAU,EAAE,MAAM,CAAA;CAAE,CAyCtD;AAED,4EAA4E;AAC5E,wBAAgB,kBAAkB,CAAC,EAAE,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,MAAM,CAQvE"}