@zhin.js/plugin-reminder 1.0.5 → 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.
- package/README.md +8 -2
- package/commands/remind/after/index.js +6 -5
- package/commands/remind/after/index.ts +6 -5
- package/commands/remind/at/index.js +8 -7
- package/commands/remind/at/index.ts +6 -5
- package/commands/remind/cancel/index.js +5 -4
- package/commands/remind/cancel/index.ts +5 -4
- package/commands/remind/create/index.js +3 -3
- package/commands/remind/create/index.ts +3 -3
- package/commands/remind/every/index.js +6 -5
- package/commands/remind/every/index.ts +6 -5
- package/commands/remind/list/index.js +5 -4
- package/commands/remind/list/index.ts +5 -4
- package/lib/admin-i18n.d.ts +155 -0
- package/lib/admin-i18n.d.ts.map +1 -0
- package/lib/admin-i18n.js +152 -0
- package/lib/admin-i18n.js.map +1 -0
- package/lib/admin-tasks.d.ts +35 -5
- package/lib/admin-tasks.d.ts.map +1 -1
- package/lib/admin-tasks.js +77 -57
- package/lib/admin-tasks.js.map +1 -1
- package/lib/caller.d.ts +2 -1
- package/lib/caller.d.ts.map +1 -1
- package/lib/caller.js +5 -3
- package/lib/caller.js.map +1 -1
- package/lib/config.js +6 -6
- package/lib/config.js.map +1 -1
- package/lib/create-reminder.d.ts.map +1 -1
- package/lib/create-reminder.js +31 -25
- package/lib/create-reminder.js.map +1 -1
- package/lib/duration.d.ts +2 -1
- package/lib/duration.d.ts.map +1 -1
- package/lib/duration.js +4 -3
- package/lib/duration.js.map +1 -1
- package/lib/i18n.d.ts +2 -0
- package/lib/i18n.d.ts.map +1 -0
- package/lib/i18n.js +336 -0
- package/lib/i18n.js.map +1 -0
- package/lib/natural-time.d.ts +5 -1
- package/lib/natural-time.d.ts.map +1 -1
- package/lib/natural-time.js +71 -57
- package/lib/natural-time.js.map +1 -1
- package/lib/service.d.ts +8 -2
- package/lib/service.d.ts.map +1 -1
- package/lib/service.js +47 -36
- package/lib/service.js.map +1 -1
- package/lib/storage.d.ts.map +1 -1
- package/lib/storage.js +7 -5
- package/lib/storage.js.map +1 -1
- package/lib/timing.d.ts +2 -1
- package/lib/timing.d.ts.map +1 -1
- package/lib/timing.js +5 -4
- package/lib/timing.js.map +1 -1
- package/lib/tool-actor.d.ts +2 -0
- package/lib/tool-actor.d.ts.map +1 -1
- package/lib/tool-actor.js +14 -4
- package/lib/tool-actor.js.map +1 -1
- package/package.json +9 -9
- package/plugin.js +8 -3
- package/schema.json +30 -0
- package/skills/reminder/tools/reminder_cancel/index.js +3 -2
- package/skills/reminder/tools/reminder_cancel/index.ts +3 -2
- package/skills/reminder/tools/reminder_create/index.js +7 -6
- package/skills/reminder/tools/reminder_create/index.ts +7 -6
- package/skills/reminder/tools/reminder_list/index.js +3 -2
- package/skills/reminder/tools/reminder_list/index.ts +3 -2
- package/src/admin-i18n.ts +154 -0
- package/src/admin-tasks.ts +79 -53
- package/src/caller.ts +5 -3
- package/src/config.ts +6 -6
- package/src/create-reminder.ts +33 -25
- package/src/duration.ts +5 -3
- package/src/i18n.ts +336 -0
- package/src/natural-time.ts +40 -30
- package/src/service.ts +51 -38
- package/src/storage.ts +7 -5
- package/src/timing.ts +6 -4
- package/src/tool-actor.ts +15 -4
package/lib/admin-tasks.d.ts
CHANGED
|
@@ -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
|
-
|
|
34
|
-
|
|
35
|
-
|
|
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
|
-
|
|
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(
|
|
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>>;
|
package/lib/admin-tasks.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"admin-tasks.d.ts","sourceRoot":"","sources":["../src/admin-tasks.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"admin-tasks.d.ts","sourceRoot":"","sources":["../src/admin-tasks.ts"],"names":[],"mappings":"AAAA,OAAO,EAA+E,KAAK,YAAY,EAAE,MAAM,iBAAiB,CAAC;AACjI,OAAO,EAAiB,KAAK,MAAM,EAAE,MAAM,cAAc,CAAC;AAG1D,OAAO,EAAwB,KAAK,cAAc,EAAE,KAAK,YAAY,EAAE,KAAK,gBAAgB,EAAE,MAAM,SAAS,CAAC;AAC9G,OAAO,EAAkD,yBAAyB,EAAE,KAAK,SAAS,EAAE,KAAK,UAAU,EAAE,KAAK,gBAAgB,EAAE,KAAK,kBAAkB,EACjK,KAAK,kBAAkB,EAAE,KAAK,kBAAkB,EAAE,MAAM,wBAAwB,CAAC;AAEnF,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AAGlD,eAAO,MAAM,wBAAwB,uBAAuB,CAAC;AAC7D,KAAK,SAAS,GAAG;IACf,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,MAAM,EAAE,cAAc,CAAC;IAAC,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACvG,QAAQ,CAAC,MAAM,CAAC,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,UAAU,EAAE,MAAM,GAAG,IAAI,CAAC;IACrH,QAAQ,CAAC,KAAK,EAAE,OAAO,CAAC,UAAU,CAAC,OAAO,CAAC,EAAE,SAAS,CAAC,CAAC;IAAC,QAAQ,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI,CAAC;IACzF,QAAQ,CAAC,SAAS,EAAE,MAAM,GAAG,IAAI,CAAC;IAAC,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,SAAS,CAAC,EAAE,YAAY,CAAC;CAC/F,CAAC;AACF,KAAK,eAAe,GAAG;IAAE,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,SAAS,EAAE,QAAQ,GAAG,gBAAgB,CAAA;CAAE,CAAC;AACvJ,MAAM,MAAM,iBAAiB,GAAG;IAAE,QAAQ,CAAC,OAAO,EAAE,CAAC,CAAC;IAAC,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC/E,QAAQ,CAAC,KAAK,EAAE,SAAS,SAAS,EAAE,CAAC;IAAC,QAAQ,CAAC,QAAQ,EAAE,SAAS,eAAe,EAAE,CAAA;CAAE,CAAC;AAKxF,+FAA+F;AAC/F,qBAAa,0BAA2B,YAAW,kBAAkB;;IACnE,QAAQ,CAAC,IAAI;;;;;;MASJ;IACT,QAAQ,CAAC,KAAK,oCAAW;IACzB,QAAQ,CAAC,WAAW,4MAAuC;IAC3D,QAAQ,CAAC,OAAO,WAAqF;IACrG,QAAQ,CAAC,MAAM;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;MAIF;IAGb,IAAI,CAAC,yBAAyB,CAAC,gDAAgC;IAC/D,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAmB;IACzC,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAe;IACxC,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAiB;IACxC,OAAO,CAAC,QAAQ,CAAC,aAAa,CAAS;gBAC3B,KAAK,EAAE,gBAAgB,EAAE,QAAQ,EAAE,YAAY,EAAE,MAAM,EAAE,cAAc,EAAE,aAAa,GAAE,MAAgB;IAMpH,IAAI,IAAI,IAAI;IAEN,IAAI,CAAC,OAAO,CAAC,EAAE;QAAE,QAAQ,CAAC,MAAM,CAAC,EAAE,MAAM,CAAA;KAAE,GAAG,OAAO,CAAC,kBAAkB,CAAC;IAIzE,MAAM,CAAC,KAAK,EAAE,kBAAkB,GAAG,QAAQ,CAAC;QAAE,MAAM,EAAE,cAAc,CAAC;QAAC,UAAU,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,SAAS,CAAC,CAAC,CAAA;KAAE,CAAC,GAAG,OAAO,CAAC,kBAAkB,CAAC;IA6BtJ,MAAM,CAAC,KAAK,EAAE,kBAAkB,GAAG,QAAQ,CAAC;QAAE,EAAE,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,gBAAgB,CAAC;QAAC,UAAU,CAAC,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,SAAS,CAAC,CAAC,CAAA;KAAE,CAAC,GAAG,OAAO,CAAC,kBAAkB,CAAC;IAyC3K,yFAAyF;IACnF,KAAK,CAAC,GAAG,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,SAAS,GAAG,SAAS,CAAC;IAkBnE,OAAO,CAAC,IAAI,EAAE,SAAS,GAAG,OAAO,CAAC,IAAI,CAAC;CAwC9C"}
|
package/lib/admin-tasks.js
CHANGED
|
@@ -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 {
|
|
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
|
-
|
|
12
|
-
|
|
13
|
-
|
|
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
|
-
|
|
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,
|
|
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('
|
|
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('
|
|
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
|
|
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',
|
|
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,
|
|
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,
|
|
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',
|
|
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),
|
|
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,
|
|
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,
|
|
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
|
|
190
|
-
async #admit(operation) {
|
|
191
|
-
|
|
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:
|
|
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('
|
|
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('
|
|
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('
|
|
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('
|
|
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
|
|
260
|
-
function conflict(message) { return new
|
|
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('
|
|
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
|
|
311
|
+
throw new LocalizedTaskError('unavailable', 'corrupt');
|
|
292
312
|
}
|
|
293
313
|
}
|
|
294
314
|
//# sourceMappingURL=admin-tasks.js.map
|
package/lib/admin-tasks.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"admin-tasks.js","sourceRoot":"","sources":["../src/admin-tasks.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AACrD,OAAO,EAAE,oBAAoB,EAAiE,MAAM,SAAS,CAAC;AAC9G,OAAO,EAAE,eAAe,EAAE,6BAA6B,EAAE,yBAAyB,EAC9B,MAAM,wBAAwB,CAAC;AACnF,OAAO,EAAE,qBAAqB,EAAE,MAAM,sBAAsB,CAAC;AAE7D,OAAO,EAAE,iBAAiB,EAAE,gBAAgB,EAAE,oBAAoB,EAAE,MAAM,aAAa,CAAC;AAExF,MAAM,CAAC,MAAM,wBAAwB,GAAG,oBAAoB,CAAC;AAW7D,MAAM,YAAY,GAAG,IAAI,GAAG,CAAqB,CAAC,WAAW,EAAE,QAAQ,EAAE,SAAS,CAAC,CAAC,CAAC;AACrF,MAAM,WAAW,GAAG,8CAA8C,CAAC;AAEnE,+FAA+F;AAC/F,MAAM,OAAO,0BAA0B;IAYR;IAA0C;IAAyC;IAXvG,KAAK,GAAG,OAAO,CAAC;IAChB,WAAW,GAAG,mCAAmC,CAAC;IAClD,OAAO,GAAG,CAAC,4CAA4C,EAAE,iCAAiC,CAAC,CAAC;IAC5F,MAAM,GAAG,EAAE,IAAI,EAAE,QAAQ,EAAE,oBAAoB,EAAE,KAAK,EAAE,QAAQ,EAAE,CAAC,MAAM,EAAE,IAAI,CAAC,EAAE,UAAU,EAAE;YACrG,IAAI,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,SAAS,EAAE,CAAC,EAAE,SAAS,EAAE,GAAG,EAAE,KAAK,EAAE,MAAM,EAAE;YACrE,EAAE,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,MAAM,EAAE,WAAW,EAAE,KAAK,EAAE,QAAQ,EAAE,WAAW,EAAE,gCAAgC,EAAE;YAC3G,eAAe,EAAE,EAAE,IAAI,EAAE,SAAS,EAAE,OAAO,EAAE,EAAE,EAAE,OAAO,EAAE,iBAAiB,EAAE,KAAK,EAAE,UAAU,EAAE;SACjG,EAAW,CAAC;IACb,QAAQ,GAAG,KAAK,CAAC;IACR,UAAU,GAAG,6BAA6B,EAAE,CAAC;IACtD,IAAI,CAAC,yBAAyB,CAAC,KAAK,OAAO,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC;IAC/D,YAA6B,KAAuB,EAAmB,QAAsB,EAAmB,MAAsB;QAAzG,UAAK,GAAL,KAAK,CAAkB;QAAmB,aAAQ,GAAR,QAAQ,CAAc;QAAmB,WAAM,GAAN,MAAM,CAAgB;IAAG,CAAC;IAC1I,IAAI,KAAW,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,CAAC,CAAC;IAEtC,KAAK,CAAC,IAAI;QACR,OAAO,IAAI,CAAC,MAAM,CAAC,KAAK,IAAI,EAAE,CAAC,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,MAAM,IAAI,CAAC,KAAK,CAAC,GAAG,CAAoB,wBAAwB,CAAC,CAAC,CAAC,CAAC,CAAC;IAC9H,CAAC;IAED,KAAK,CAAC,MAAM,CAAC,KAAiH;QAC5H,OAAO,IAAI,CAAC,MAAM,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC;IAChD,CAAC;IACD,KAAK,CAAC,OAAO,CAAC,KAAiH;QAC7H,IAAI,CAAC,WAAW,EAAE,CAAC;QAAC,cAAc,CAAC,KAAK,CAAC,CAAC;QAC1C,IAAI,MAAsB,CAAC;QAC3B,IAAI,CAAC;YAAC,MAAM,GAAG,oBAAoB,CAAC,EAAE,YAAY,EAAE,KAAK,CAAC,MAAM,EAAE,CAAC,CAAC;QAAC,CAAC;QAAC,MAAM,CAAC;YAAC,MAAM,OAAO,CAAC,wBAAwB,CAAC,CAAC;QAAC,CAAC;QACzH,MAAM,UAAU,GAAG,eAAe,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC;QACrD,MAAM,WAAW,GAAG,MAAM,CAAC,EAAE,SAAS,EAAE,QAAQ,EAAE,MAAM,EAAE,UAAU,EAAE,CAAC,CAAC;QACxE,MAAM,QAAQ,GAAG,UAAU,EAAE,CAAC;QAAC,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;QACtD,MAAM,IAAI,GAAc,EAAE,EAAE,EAAE,KAAK,CAAC,SAAS,EAAE,QAAQ,EAAE,WAAW,EAAE,MAAM,EAAE,IAAI,EAAE,UAAU,CAAC,IAAI,EAAE,SAAS,EAAE,GAAG;YACjH,SAAS,EAAE,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,EAAE,CAAC,EAAE,UAAU,EAAE,UAAU,CAAC,eAAe,KAAK,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,UAAU,CAAC,eAAe,GAAG,IAAI;YACrI,KAAK,EAAE,WAAW,EAAE,OAAO,EAAE,IAAI,EAAE,SAAS,EAAE,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,CAAC;QACvE,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,KAAK,CAAC,MAAM,CAAoB,wBAAwB,EAAE,OAAO,CAAC,EAAE;YAC5F,IAAI,CAAC,WAAW,EAAE,CAAC;YAAC,MAAM,IAAI,GAAG,QAAQ,CAAC,OAAO,CAAC,CAAC;YACnD,IAAI,SAAS,CAAC,IAAI,EAAE,KAAK,CAAC,SAAS,EAAE,WAAW,CAAC;gBAAE,OAAO,IAAI,CAAC;YAC/D,cAAc,CAAC,IAAI,EAAE,KAAK,CAAC,gBAAgB,CAAC,CAAC;YAC7C,MAAM,QAAQ,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,KAAK,KAAK,CAAC,SAAS,CAAC,CAAC;YACtE,IAAI,QAAQ,EAAE,CAAC;gBAAC,IAAI,QAAQ,CAAC,QAAQ,KAAK,WAAW;oBAAE,MAAM,QAAQ,CAAC,iBAAiB,CAAC,CAAC;gBAAC,OAAO,IAAI,CAAC;YAAC,CAAC;YACxG,YAAY,CAAC,IAAI,CAAC,SAAS,EAAE,GAAG,CAAC,CAAC;YAClC,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC,YAAY,CAAC,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC;YACvE,IAAI,MAAM,CAAC,MAAM,IAAI,IAAI,CAAC,MAAM,CAAC,aAAa;gBAAE,MAAM,OAAO,CAAC,gCAAgC,CAAC,CAAC;YAChG,MAAM,YAAY,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,MAAM,CAAC,aAAa,GAAG,MAAM,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;YAChF,MAAM,OAAO,GAAG,YAAY,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,YAAY,CAAC,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;YAClH,OAAO,OAAO,CAAC,EAAE,GAAG,IAAI,EAAE,QAAQ,EAAE,KAAK,EAAE,CAAC,GAAG,MAAM,EAAE,GAAG,OAAO,EAAE,IAAI,CAAC,EAAE,QAAQ,EAAE,OAAO,CAAC,IAAI,EAAE,KAAK,CAAC,SAAS,EAAE,WAAW,EAAE,IAAI,CAAC,EAAE,EAAE,QAAQ,CAAC,EAAE,CAAC,CAAC;QACxJ,CAAC,CAAC,CAAC;QACH,OAAO,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC;IAC1C,CAAC;IAED,KAAK,CAAC,MAAM,CAAC,KAAgI;QAC3I,OAAO,IAAI,CAAC,MAAM,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC;IAChD,CAAC;IACD,KAAK,CAAC,OAAO,CAAC,KAAgI;QAC5I,IAAI,CAAC,WAAW,EAAE,CAAC;QAAC,cAAc,CAAC,KAAK,CAAC,CAAC;QAC1C,IAAI,OAAO,KAAK,CAAC,EAAE,KAAK,QAAQ,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC,OAAO,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC,MAAM,CAAC;YAAE,MAAM,OAAO,CAAC,aAAa,CAAC,CAAC;QACjK,IAAI,KAAK,CAAC,MAAM,KAAK,QAAQ,IAAI,KAAK,CAAC,UAAU,KAAK,SAAS;YAAE,MAAM,OAAO,CAAC,WAAW,CAAC,CAAC;QAC5F,MAAM,UAAU,GAAG,KAAK,CAAC,MAAM,KAAK,QAAQ,CAAC,CAAC,CAAC,eAAe,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;QAC7F,MAAM,WAAW,GAAG,MAAM,CAAC,EAAE,SAAS,EAAE,QAAQ,EAAE,EAAE,EAAE,KAAK,CAAC,EAAE,EAAE,MAAM,EAAE,KAAK,CAAC,MAAM,EAAE,UAAU,EAAE,UAAU,IAAI,IAAI,EAAE,CAAC,CAAC;QACxH,MAAM,QAAQ,GAAG,UAAU,EAAE,CAAC;QAAC,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;QACtD,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,KAAK,CAAC,MAAM,CAAoB,wBAAwB,EAAE,OAAO,CAAC,EAAE;YAC5F,IAAI,CAAC,WAAW,EAAE,CAAC;YAAC,MAAM,IAAI,GAAG,QAAQ,CAAC,OAAO,CAAC,CAAC;YACnD,IAAI,SAAS,CAAC,IAAI,EAAE,KAAK,CAAC,SAAS,EAAE,WAAW,CAAC;gBAAE,OAAO,IAAI,CAAC;YAC/D,cAAc,CAAC,IAAI,EAAE,KAAK,CAAC,gBAAgB,CAAC,CAAC;YAC7C,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,KAAK,KAAK,CAAC,EAAE,CAAC,CAAC;YAC3D,IAAI,CAAC,IAAI;gBAAE,MAAM,IAAI,eAAe,CAAC,WAAW,EAAE,2BAA2B,CAAC,CAAC;YAC/E,IAAI,OAAkB,CAAC;YACvB,QAAQ,KAAK,CAAC,MAAM,EAAE,CAAC;gBACrB,KAAK,OAAO;oBACV,IAAI,IAAI,CAAC,KAAK,KAAK,WAAW;wBAAE,MAAM,OAAO,CAAC,yBAAyB,CAAC,CAAC;oBACzE,OAAO,GAAG,EAAE,GAAG,IAAI,EAAE,KAAK,EAAE,QAAQ,EAAE,MAAM,EAAE,OAAO,EAAE,CAAC;oBAAC,MAAM;gBACjE,KAAK,QAAQ,CAAC,CAAC,CAAC;oBACd,IAAI,IAAI,CAAC,KAAK,KAAK,QAAQ;wBAAE,MAAM,OAAO,CAAC,yBAAyB,CAAC,CAAC;oBACtE,IAAI,IAAI,CAAC,UAAU,KAAK,IAAI,IAAI,IAAI,CAAC,SAAS,IAAI,GAAG;wBAAE,MAAM,OAAO,CAAC,wBAAwB,CAAC,CAAC;oBAC/F,MAAM,SAAS,GAAG,IAAI,CAAC,SAAS,IAAI,GAAG,IAAI,IAAI,CAAC,UAAU,KAAK,IAAI,CAAC,CAAC,CAAC,gBAAgB,CAAC,IAAI,CAAC,SAAS,EAAE,IAAI,CAAC,UAAU,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC;oBAC9I,OAAO,GAAG,EAAE,GAAG,IAAI,EAAE,KAAK,EAAE,WAAW,EAAE,SAAS,EAAE,MAAM,EAAE,SAAS,KAAK,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,gBAAgB,CAAC,CAAC,CAAC,OAAO,EAAE,CAAC;oBAAC,MAAM;gBACjI,CAAC;gBACD,KAAK,QAAQ;oBACX,IAAI,IAAI,CAAC,KAAK,KAAK,QAAQ;wBAAE,MAAM,OAAO,CAAC,qBAAqB,CAAC,CAAC;oBAClE,YAAY,CAAC,IAAI,CAAC,KAAK,CAAC,UAAW,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,CAAC;oBAC9C,OAAO,GAAG,EAAE,GAAG,IAAI,EAAE,IAAI,EAAE,UAAW,CAAC,IAAI,EAAE,SAAS,EAAE,IAAI,CAAC,KAAK,CAAC,UAAW,CAAC,EAAE,CAAC;wBAChF,UAAU,EAAE,UAAW,CAAC,eAAe,KAAK,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,UAAW,CAAC,eAAe,GAAG,IAAI,EAAE,MAAM,EAAE,iBAAiB,EAAE,CAAC;oBAAC,MAAM;gBAC1I,KAAK,QAAQ;oBACX,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC;wBAAE,MAAM,OAAO,CAAC,cAAc,CAAC,CAAC;oBACjE,OAAO,GAAG,EAAE,GAAG,IAAI,EAAE,KAAK,EAAE,WAAW,EAAE,MAAM,EAAE,mBAAmB,EAAE,CAAC;oBAAC,MAAM;YAClF,CAAC;YACD,OAAO,OAAO,CAAC,EAAE,GAAG,IAAI,EAAE,QAAQ,EAAE,KAAK,EAAE,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,KAAK,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,QAAQ,EAAE,OAAO,CAAC,IAAI,EAAE,KAAK,CAAC,SAAS,EAAE,WAAW,EAAE,IAAI,CAAC,EAAE,EAAE,KAAK,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;QAC3L,CAAC,CAAC,CAAC;QACH,OAAO,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC;IAC1C,CAAC;IAED,yFAAyF;IACzF,KAAK,CAAC,KAAK,CAAC,GAAW,EAAE,OAAe;QACtC,IAAI,CAAC,WAAW,EAAE,CAAC;QAAC,MAAM,QAAQ,GAAG,UAAU,EAAE,CAAC;QAClD,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,KAAK,CAAC,MAAM,CAAoB,wBAAwB,EAAE,OAAO,CAAC,EAAE;YAC1F,MAAM,IAAI,GAAG,QAAQ,CAAC,OAAO,CAAC,CAAC;YAAC,IAAI,OAAO,GAAG,KAAK,CAAC;YAAC,IAAI,OAAO,GAAG,KAAK,CAAC;YACzE,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE;gBAClC,IAAI,IAAI,CAAC,KAAK,KAAK,WAAW,IAAI,IAAI,CAAC,SAAS,GAAG,GAAG;oBAAE,OAAO,IAAI,CAAC;gBACpE,IAAI,IAAI,CAAC,UAAU,KAAK,IAAI,IAAI,GAAG,GAAG,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,MAAM,CAAC,kBAAkB,GAAG,IAAI,EAAE,CAAC;oBAC7F,OAAO,GAAG,IAAI,CAAC;oBAAC,OAAO,EAAE,GAAG,IAAI,EAAE,SAAS,EAAE,gBAAgB,CAAC,IAAI,CAAC,SAAS,EAAE,IAAI,CAAC,UAAU,EAAE,GAAG,CAAC,EAAE,MAAM,EAAE,YAAY,EAAE,CAAC;gBAC9H,CAAC;gBACD,IAAI,OAAO;oBAAE,OAAO,IAAI,CAAC;gBACzB,OAAO,GAAG,OAAO,GAAG,IAAI,CAAC;gBACzB,OAAO,EAAE,GAAG,IAAI,EAAE,KAAK,EAAE,SAAkB,EAAE,OAAO,EAAE,SAAS,EAAE,GAAG,EAAE,MAAM,EAAE,gBAAgB,EAAE,CAAC;YACnG,CAAC,CAAC,CAAC;YACH,OAAO,OAAO,CAAC,CAAC,CAAC,OAAO,CAAC,EAAE,GAAG,IAAI,EAAE,QAAQ,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC;QACnE,CAAC,CAAC,CAAC;QACH,OAAO,IAAI,EAAE,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,OAAO,KAAK,OAAO,CAAC,CAAC;IAC5D,CAAC;IAED,KAAK,CAAC,OAAO,CAAC,IAAe;QAC3B,IAAI,IAAI,CAAC,QAAQ;YAAE,OAAO;QAC1B,IAAI,KAAK,GAAuB,SAAS,CAAC;QAAC,IAAI,MAAM,GAAG,gCAAgC,CAAC;QACzF,IAAI,CAAC;YACH,MAAM,EAAE,GAAG,MAAM,IAAI,CAAC,QAAQ,CAAC,UAAW,CAAC,IAAI,CAAC,MAAM,EAAE,QAAQ,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC;YAC7E,IAAI,EAAE,EAAE,CAAC;gBAAC,KAAK,GAAG,IAAI,CAAC,UAAU,KAAK,IAAI,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,WAAW,CAAC;gBAAC,MAAM,GAAG,OAAO,CAAC;YAAC,CAAC;QAC7F,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,IAAI,KAAK,YAAY,qBAAqB,IAAI,KAAK,CAAC,WAAW,KAAK,SAAS,EAAE,CAAC;gBAAC,KAAK,GAAG,QAAQ,CAAC;gBAAC,MAAM,GAAG,kBAAkB,CAAC;YAAC,CAAC;QACnI,CAAC;QACD,MAAM,QAAQ,GAAG,UAAU,EAAE,CAAC;QAC9B,MAAM,IAAI,CAAC,KAAK,CAAC,MAAM,CAAoB,wBAAwB,EAAE,OAAO,CAAC,EAAE;YAC7E,MAAM,IAAI,GAAG,QAAQ,CAAC,OAAO,CAAC,CAAC;YAAC,IAAI,OAAO,GAAG,KAAK,CAAC;YACpD,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE;gBAClC,IAAI,IAAI,CAAC,EAAE,KAAK,IAAI,CAAC,EAAE,IAAI,IAAI,CAAC,OAAO,KAAK,IAAI,CAAC,OAAO,IAAI,IAAI,CAAC,KAAK,KAAK,SAAS;oBAAE,OAAO,IAAI,CAAC;gBAClG,OAAO,GAAG,IAAI,CAAC;gBACf,OAAO,EAAE,GAAG,IAAI,EAAE,KAAK,EAAE,MAAM,EAAE,GAAG,CAAC,KAAK,KAAK,WAAW,IAAI,IAAI,CAAC,UAAU,KAAK,IAAI;wBACpF,CAAC,CAAC,EAAE,SAAS,EAAE,gBAAgB,CAAC,IAAI,CAAC,SAAS,EAAE,IAAI,CAAC,UAAU,EAAE,IAAI,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC;YAC3F,CAAC,CAAC,CAAC;YACH,OAAO,OAAO,CAAC,CAAC,CAAC,OAAO,CAAC,EAAE,GAAG,IAAI,EAAE,QAAQ,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC;QACnE,CAAC,CAAC,CAAC;IACL,CAAC;IAED,WAAW,KAAW,IAAI,IAAI,CAAC,QAAQ;QAAE,MAAM,IAAI,eAAe,CAAC,aAAa,EAAE,mBAAmB,CAAC,CAAC,CAAC,CAAC;IACzG,KAAK,CAAC,MAAM,CAAI,SAA2B;QACzC,IAAI,CAAC,WAAW,EAAE,CAAC;QAAC,MAAM,OAAO,GAAG,IAAI,CAAC,UAAU,CAAC,OAAO,EAAE,CAAC;QAC9D,IAAI,CAAC,OAAO;YAAE,MAAM,IAAI,eAAe,CAAC,aAAa,EAAE,8BAA8B,CAAC,CAAC;QACvF,IAAI,CAAC;YAAC,OAAO,MAAM,SAAS,EAAE,CAAC;QAAC,CAAC;gBAAS,CAAC;YAAC,OAAO,EAAE,CAAC;QAAC,CAAC;IAC1D,CAAC;IACD,SAAS,CAAC,IAAuB;QAC/B,OAAO,EAAE,QAAQ,EAAE,IAAI,CAAC,QAAQ,EAAE,QAAQ,EAAE,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,EAAE,SAAS,EAAE,IAAI,CAAC,EAAE,EAAE,MAAM,EAAE,IAAI,CAAC,MAAM,EAAE,SAAS,EAAE,IAAI,CAAC,SAAS,EAAE,CAAC,CAAC,EAAE,KAAK,EAAE,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;gBAC9K,EAAE,EAAE,IAAI,CAAC,EAAE,EAAE,SAAS,EAAE,eAAe,EAAE,KAAK,EAAE,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,IAAI,CAAC,MAAM,EAAE,KAAK,EAAE,IAAI,CAAC,KAAK,EAAE,SAAS,EAAE,IAAI,CAAC,SAAS;gBACvI,GAAG,CAAC,IAAI,CAAC,KAAK,KAAK,WAAW,IAAI,IAAI,CAAC,KAAK,KAAK,QAAQ,CAAC,CAAC,CAAC,EAAE,SAAS,EAAE,IAAI,CAAC,SAAS,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,IAAI,CAAC,SAAS,KAAK,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,SAAS,EAAE,IAAI,CAAC,SAAS,EAAE,CAAC;gBAClK,QAAQ,EAAE,IAAI,CAAC,MAAM,CAAC,QAAQ,EAAE,MAAM,EAAE,GAAG,IAAI,CAAC,MAAM,yBAAyB;gBAC/E,UAAU,EAAE,EAAE,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE,EAAE,EAAE,IAAI,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,WAAW,EAAE,EAAE,GAAG,CAAC,IAAI,CAAC,UAAU,KAAK,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,eAAe,EAAE,IAAI,CAAC,UAAU,GAAG,IAAI,EAAE,CAAC,EAAE;gBAC7J,OAAO,EAAE,IAAI,CAAC,KAAK,KAAK,WAAW,CAAC,CAAC,CAAC,CAAC,OAAO,EAAE,QAAQ,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,KAAK,QAAQ,CAAC,CAAC,CAAC,CAAC,QAAQ,EAAE,QAAQ,EAAE,QAAQ,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,KAAK,SAAS,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,EAAE;aAClK,CAAC,CAAC,EAAE,CAAC;IACR,CAAC;CACF;AAED,SAAS,cAAc,CAAC,KAAyB;IAC/C,IAAI,OAAO,KAAK,CAAC,SAAS,KAAK,QAAQ,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,IAAI,OAAO,KAAK,CAAC,gBAAgB,KAAK,QAAQ,IAAI,CAAC,KAAK,CAAC,gBAAgB,IAAI,KAAK,CAAC,gBAAgB,CAAC,MAAM,GAAG,GAAG;QAAE,MAAM,OAAO,CAAC,6CAA6C,CAAC,CAAC;AAC9P,CAAC;AACD,SAAS,eAAe,CAAC,KAAsD;IAC7E,IAAI,CAAC,KAAK,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,IAAI,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,MAAM,EAAE,IAAI,EAAE,iBAAiB,CAAC,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC;WACjH,OAAO,KAAK,CAAC,IAAI,KAAK,QAAQ,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,KAAK,CAAC,IAAI,CAAC,MAAM,GAAG,GAAG,IAAI,OAAO,KAAK,CAAC,EAAE,KAAK,QAAQ;WAC/G,CAAC,KAAK,CAAC,eAAe,KAAK,SAAS,IAAI,CAAC,OAAO,KAAK,CAAC,eAAe,KAAK,QAAQ,IAAI,CAAC,MAAM,CAAC,aAAa,CAAC,KAAK,CAAC,eAAe,CAAC,IAAI,KAAK,CAAC,eAAe,GAAG,EAAE,IAAI,KAAK,CAAC,eAAe,GAAG,iBAAiB,CAAC,CAAC;QAAE,MAAM,OAAO,CAAC,qDAAqD,CAAC,CAAC;IAC3R,IAAI,EAAU,CAAC;IACf,IAAI,CAAC;QAAC,EAAE,GAAG,oBAAoB,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;IAAC,CAAC;IAAC,MAAM,CAAC;QAAC,MAAM,OAAO,CAAC,gCAAgC,CAAC,CAAC;IAAC,CAAC;IACvG,OAAO,EAAE,IAAI,EAAE,KAAK,CAAC,IAAI,EAAE,EAAE,EAAE,IAAI,IAAI,CAAC,EAAE,CAAC,CAAC,WAAW,EAAE,EAAE,GAAG,CAAC,KAAK,CAAC,eAAe,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,eAAe,EAAE,KAAK,CAAC,eAAyB,EAAE,CAAC,EAAE,CAAC;AACpK,CAAC;AACD,SAAS,YAAY,CAAC,EAAU,EAAE,GAAW;IAC3C,IAAI,CAAC,MAAM,CAAC,aAAa,CAAC,EAAE,CAAC,IAAI,EAAE,IAAI,GAAG,IAAI,EAAE,GAAG,GAAG,GAAG,iBAAiB,GAAG,IAAI;QAAE,MAAM,OAAO,CAAC,aAAa,CAAC,CAAC;AAClH,CAAC;AACD,SAAS,MAAM,CAAC,KAAc,IAAY,OAAO,UAAU,CAAC,QAAQ,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;AACpH,SAAS,SAAS,CAAC,IAAY;IAC7B,IAAI,IAAI,CAAC,MAAM,IAAI,GAAG;QAAE,OAAO,IAAI,CAAC;IACpC,IAAI,KAAK,GAAG,EAAE,CAAC;IACf,KAAK,MAAM,SAAS,IAAI,IAAI,EAAE,CAAC;QAC7B,IAAI,KAAK,CAAC,MAAM,GAAG,SAAS,CAAC,MAAM,GAAG,GAAG;YAAE,MAAM;QACjD,KAAK,IAAI,SAAS,CAAC;IACrB,CAAC;IACD,OAAO,GAAG,KAAK,GAAG,CAAC;AACrB,CAAC;AACD,SAAS,SAAS,CAAC,IAAuB,EAAE,EAAU,EAAE,WAAmB;IACzE,MAAM,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC;IAC5D,IAAI,CAAC,QAAQ;QAAE,OAAO,KAAK,CAAC;IAC5B,IAAI,QAAQ,CAAC,WAAW,KAAK,WAAW;QAAE,MAAM,QAAQ,CAAC,wBAAwB,CAAC,CAAC;IACnF,OAAO,IAAI,CAAC;AACd,CAAC;AACD,SAAS,cAAc,CAAC,IAAuB,EAAE,QAAgB,IAAU,IAAI,IAAI,CAAC,QAAQ,KAAK,QAAQ;IAAE,MAAM,QAAQ,CAAC,oBAAoB,CAAC,CAAC,CAAC,CAAC;AAClJ,SAAS,OAAO,CAAC,IAAuB,EAAE,EAAU,EAAE,WAAmB,EAAE,MAAc,EAAE,SAAuC;IAChI,OAAO,CAAC,GAAG,IAAI,CAAC,QAAQ,EAAE,EAAE,EAAE,EAAE,WAAW,EAAE,MAAM,EAAE,SAAS,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,GAAG,CAAC,CAAC;AAChF,CAAC;AACD,SAAS,OAAO,CAAC,OAAe,IAAqB,OAAO,IAAI,eAAe,CAAC,eAAe,EAAE,OAAO,CAAC,CAAC,CAAC,CAAC;AAC5G,SAAS,QAAQ,CAAC,OAAe,IAAqB,OAAO,IAAI,eAAe,CAAC,UAAU,EAAE,OAAO,CAAC,CAAC,CAAC,CAAC;AACxG,SAAS,OAAO,CAAC,IAAuB;IACtC,IAAI,IAAI,CAAC,KAAK,CAAC,MAAM,GAAG,EAAE,IAAI,IAAI,WAAW,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,UAAU,GAAG,EAAE,GAAG,IAAI;QAAE,MAAM,OAAO,CAAC,sCAAsC,CAAC,CAAC;IAC3J,OAAO,IAAI,CAAC;AACd,CAAC;AACD,SAAS,QAAQ,CAAC,KAAoC;IACpD,IAAI,KAAK,KAAK,SAAS;QAAE,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,QAAQ,EAAE,GAAG,EAAE,KAAK,EAAE,EAAE,EAAE,QAAQ,EAAE,EAAE,EAAE,CAAC;IACvF,IAAI,CAAC;QACH,IAAI,KAAK,CAAC,OAAO,KAAK,CAAC,IAAI,OAAO,KAAK,CAAC,QAAQ,KAAK,QAAQ,IAAI,CAAC,KAAK,CAAC,QAAQ,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,QAAQ,CAAC,IAAI,KAAK,CAAC,QAAQ,CAAC,MAAM,GAAG,GAAG;YAAE,MAAM,IAAI,KAAK,CAAC,cAAc,CAAC,CAAC;QAClN,KAAK,MAAM,IAAI,IAAI,KAAK,CAAC,QAAQ;YAAE,IAAI,CAAC,IAAI,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC;mBACvG,CAAC,CAAC,QAAQ,EAAE,OAAO,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC;gBAAE,MAAM,IAAI,KAAK,CAAC,iBAAiB,CAAC,CAAC;QACjK,MAAM,GAAG,GAAG,IAAI,GAAG,EAAU,CAAC;QAC9B,KAAK,MAAM,IAAI,IAAI,KAAK,CAAC,KAAK,EAAE,CAAC;YAC/B,IAAI,CAAC,IAAI,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,OAAO,IAAI,CAAC,QAAQ,KAAK,QAAQ,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC;mBACpI,OAAO,IAAI,CAAC,IAAI,KAAK,QAAQ,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,IAAI,CAAC,IAAI,CAAC,MAAM,GAAG,GAAG,IAAI,CAAC,MAAM,CAAC,aAAa,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,MAAM,CAAC,aAAa,CAAC,IAAI,CAAC,SAAS,CAAC;mBAC9J,CAAC,IAAI,CAAC,UAAU,KAAK,IAAI,IAAI,CAAC,CAAC,MAAM,CAAC,aAAa,CAAC,IAAI,CAAC,UAAU,CAAC,IAAI,IAAI,CAAC,UAAU,GAAG,MAAM,IAAI,IAAI,CAAC,UAAU,GAAG,iBAAiB,GAAG,IAAI,CAAC,CAAC;mBAChJ,CAAC,CAAC,WAAW,EAAE,QAAQ,EAAE,SAAS,EAAE,WAAW,EAAE,QAAQ,EAAE,WAAW,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC;mBAC5F,CAAC,IAAI,CAAC,OAAO,KAAK,IAAI,IAAI,CAAC,OAAO,IAAI,CAAC,OAAO,KAAK,QAAQ,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,KAAK,IAAI,IAAI,CAAC,MAAM,CAAC,aAAa,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;mBACpJ,OAAO,IAAI,CAAC,MAAM,KAAK,QAAQ,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,IAAI,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,OAAO,EAAE,CAAC;gBAAE,MAAM,IAAI,KAAK,CAAC,cAAc,CAAC,CAAC;YAC9H,oBAAoB,CAAC,EAAE,YAAY,EAAE,IAAI,CAAC,MAAM,EAAE,CAAC,CAAC;YAAC,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QACxE,CAAC;QACD,OAAO,OAAO,CAAC,KAAK,CAAC,CAAC;IACxB,CAAC;IAAC,MAAM,CAAC;QAAC,MAAM,IAAI,eAAe,CAAC,aAAa,EAAE,qBAAqB,CAAC,CAAC;IAAC,CAAC;AAC9E,CAAC"}
|
|
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
|
package/lib/caller.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"caller.d.ts","sourceRoot":"","sources":["../src/caller.ts"],"names":[],"mappings":"
|
|
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;
|
|
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;
|
|
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":"
|
|
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"}
|