@aalis/plugin-scheduler 0.13.0 → 0.15.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/index.d.ts +87 -6
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +350 -257
- package/dist/index.js.map +1 -1
- package/package.json +9 -9
package/dist/index.d.ts
CHANGED
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import { type ConfigOf } from '@aalis/schema-config';
|
|
1
2
|
interface SchedulerJobConfig {
|
|
2
3
|
name: string;
|
|
3
4
|
/** cron 表达式 (5 段: 分 时 日 月 周),支持快捷符 @hourly/@daily/@weekly/@monthly */
|
|
@@ -63,18 +64,98 @@ export interface SchedulerService {
|
|
|
63
64
|
pauseJob(name: string): boolean;
|
|
64
65
|
resumeJob(name: string): boolean;
|
|
65
66
|
triggerJob(name: string): Promise<boolean>;
|
|
67
|
+
/** cron 无效时抛出原因,不收下 */
|
|
66
68
|
addJob(job: SchedulerJobConfig): void;
|
|
67
|
-
/** upsert:已存在则先 remove 再 add
|
|
69
|
+
/** upsert:已存在则先 remove 再 add;计划任务页的新建与编辑都经它。cron 无效时抛出原因,原任务不变 */
|
|
68
70
|
setJob(job: SchedulerJobConfig): void;
|
|
69
71
|
removeJob(name: string): boolean;
|
|
70
72
|
}
|
|
71
|
-
export declare const scheduler: import("@aalis/core").ServiceDescriptor<SchedulerService,
|
|
73
|
+
export declare const scheduler: import("@aalis/core").ServiceDescriptor<SchedulerService, SchedulerService>;
|
|
74
|
+
export declare const configSchema: {
|
|
75
|
+
readonly jobs: {
|
|
76
|
+
readonly type: "array";
|
|
77
|
+
readonly onInvalid: "error";
|
|
78
|
+
readonly label: "计划任务列表";
|
|
79
|
+
readonly description: "配置定时/周期性任务,让 AI 主动执行计划。";
|
|
80
|
+
readonly items: {
|
|
81
|
+
readonly name: {
|
|
82
|
+
readonly type: "string";
|
|
83
|
+
readonly label: "任务名称";
|
|
84
|
+
};
|
|
85
|
+
readonly cron: {
|
|
86
|
+
readonly type: "string";
|
|
87
|
+
readonly label: "Cron 表达式";
|
|
88
|
+
readonly description: "5 段格式: 分 时 日 月 周 (如 \"0 9 * * *\" = 每天 9:00)。与\"固定间隔\"二选一。";
|
|
89
|
+
};
|
|
90
|
+
readonly interval: {
|
|
91
|
+
readonly type: "number";
|
|
92
|
+
readonly label: "固定间隔(秒)";
|
|
93
|
+
readonly description: "每隔 N 秒执行一次。与\"Cron 表达式\"二选一。";
|
|
94
|
+
};
|
|
95
|
+
readonly runAt: {
|
|
96
|
+
readonly type: "string";
|
|
97
|
+
readonly label: "一次性运行时间";
|
|
98
|
+
readonly description: "ISO 字符串;执行一次后自动禁用。";
|
|
99
|
+
};
|
|
100
|
+
readonly sessionId: {
|
|
101
|
+
readonly type: "string";
|
|
102
|
+
readonly label: "目标会话 ID";
|
|
103
|
+
readonly description: "任务消息发往的会话 ID。可以是真实群/用户会话,也可以自定义(如 scheduler::daily)。";
|
|
104
|
+
};
|
|
105
|
+
readonly platform: {
|
|
106
|
+
readonly type: "string";
|
|
107
|
+
readonly onInvalid: "error";
|
|
108
|
+
readonly label: "目标平台";
|
|
109
|
+
readonly required: true;
|
|
110
|
+
readonly description: "任务消息的平台标识(如 internal、webui、onebot)。仅用于消息路由。";
|
|
111
|
+
readonly default: "internal";
|
|
112
|
+
};
|
|
113
|
+
readonly actorPlatform: {
|
|
114
|
+
readonly type: "string";
|
|
115
|
+
readonly onInvalid: "error";
|
|
116
|
+
readonly label: "执行身份-平台";
|
|
117
|
+
readonly description: "代理身份的 platform(与目标平台解耦)。authority 按 (actorPlatform, actorUserId) 联合裁决能力。留空 = webui。";
|
|
118
|
+
};
|
|
119
|
+
readonly actorUserId: {
|
|
120
|
+
readonly type: "string";
|
|
121
|
+
readonly onInvalid: "error";
|
|
122
|
+
readonly label: "执行身份-用户 ID";
|
|
123
|
+
readonly description: "代理身份的 userId。留空 = console(与 actorPlatform=webui 组合即 owner,拥有一切能力)。";
|
|
124
|
+
};
|
|
125
|
+
readonly content: {
|
|
126
|
+
readonly type: "string";
|
|
127
|
+
readonly label: "消息内容";
|
|
128
|
+
readonly default: "";
|
|
129
|
+
readonly description: "发送给 Agent 的指令/提示内容。";
|
|
130
|
+
};
|
|
131
|
+
readonly enabled: {
|
|
132
|
+
readonly type: "boolean";
|
|
133
|
+
readonly label: "启用";
|
|
134
|
+
readonly default: true;
|
|
135
|
+
readonly onInvalid: "error";
|
|
136
|
+
};
|
|
137
|
+
readonly timeZone: {
|
|
138
|
+
readonly type: "string";
|
|
139
|
+
readonly label: "时区 (IANA)";
|
|
140
|
+
readonly description: "cron 求值所用时区,如 Asia/Shanghai、Europe/London。留空 = 进程本地时区。仅对 cron 类任务生效。";
|
|
141
|
+
};
|
|
142
|
+
};
|
|
143
|
+
readonly default: [];
|
|
144
|
+
};
|
|
145
|
+
readonly persistPath: {
|
|
146
|
+
readonly type: "string";
|
|
147
|
+
readonly onInvalid: "error";
|
|
148
|
+
readonly label: "动态任务存储路径";
|
|
149
|
+
readonly default: "data:/scheduler-jobs.json";
|
|
150
|
+
readonly description: "通过 AI 或 WebUI 创建的任务会持久化到此 storage URI,重启后自动加载。";
|
|
151
|
+
};
|
|
152
|
+
};
|
|
72
153
|
declare const _default: import("@aalis/core").PluginDefinition<{
|
|
73
154
|
tools: import("@aalis/core").ServiceDescriptor<import("@aalis/api-tools").ToolService, import("@aalis/api-tools").BoundTools>;
|
|
74
|
-
cronEngine: import("@aalis/core").ServiceDescriptor<import("@aalis/api-cron-engine").CronEngine, import("@aalis/
|
|
155
|
+
cronEngine: import("@aalis/core").ServiceDescriptor<import("@aalis/api-cron-engine").CronEngine, import("@aalis/api-cron-engine").CronEngine>;
|
|
75
156
|
/** 动态任务的持久化出口;没有 storage 时任务只活在本次激活里(读写各自降级) */
|
|
76
|
-
storage: import("@aalis/core").OptionalUse<import("@aalis/api-storage").StorageService, import("@aalis/
|
|
77
|
-
/**
|
|
157
|
+
storage: import("@aalis/core").OptionalUse<import("@aalis/api-storage").StorageService, import("@aalis/api-storage").BoundStorage>;
|
|
158
|
+
/** 计划任务页的登记口;无 WebUI 时调度照常运行 */
|
|
78
159
|
webui: import("@aalis/core").OptionalUse<import("@aalis/api-webui").WebUIService, import("@aalis/api-webui").BoundWebui>;
|
|
79
160
|
events: import("@aalis/core").ServiceDescriptor<(identity: symbol) => import("@aalis/core").Events, import("@aalis/core").Events>;
|
|
80
161
|
lifecycle: import("@aalis/core").ServiceDescriptor<(identity: symbol) => import("@aalis/core").LifecycleCap, import("@aalis/core").LifecycleCap>;
|
|
@@ -83,7 +164,7 @@ declare const _default: import("@aalis/core").PluginDefinition<{
|
|
|
83
164
|
provide: import("@aalis/core").ServiceDescriptor<(identity: symbol) => import("@aalis/core").Provide, import("@aalis/core").Provide>;
|
|
84
165
|
}>;
|
|
85
166
|
export default _default;
|
|
86
|
-
export declare function resolveConfig(
|
|
167
|
+
export declare function resolveConfig(cfg: ConfigOf<typeof configSchema>): SchedulerConfig;
|
|
87
168
|
declare module '@aalis/core' {
|
|
88
169
|
interface AalisEvents {
|
|
89
170
|
/** 任务开始执行 */
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAeA,OAAO,EAAE,KAAK,QAAQ,EAA0C,MAAM,sBAAsB,CAAC;AAc7F,UAAU,kBAAkB;IAC1B,IAAI,EAAE,MAAM,CAAC;IACb,sEAAsE;IACtE,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,6DAA6D;IAC7D,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB;;;OAGG;IACH,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,6BAA6B;IAC7B,SAAS,EAAE,MAAM,CAAC;IAClB,aAAa;IACb,QAAQ,EAAE,MAAM,CAAC;IACjB;;;;;;;;OAQG;IACH,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,2DAA2D;IAC3D,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,sBAAsB;IACtB,OAAO,EAAE,MAAM,CAAC;IAChB,WAAW;IACX,OAAO,EAAE,OAAO,CAAC;IACjB,2CAA2C;IAC3C,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB;;;;OAIG;IACH,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB;AAED,UAAU,eAAe;IACvB,IAAI,EAAE,kBAAkB,EAAE,CAAC;IAC3B,kBAAkB;IAClB,WAAW,EAAE,MAAM,CAAC;CACrB;AAiCD,MAAM,WAAW,gBAAgB;IAC/B,OAAO,IAAI,KAAK,CAAC;QACf,IAAI,EAAE,MAAM,CAAC;QACb,IAAI,CAAC,EAAE,MAAM,CAAC;QACd,QAAQ,CAAC,EAAE,MAAM,CAAC;QAClB,KAAK,CAAC,EAAE,MAAM,CAAC;QACf,SAAS,EAAE,MAAM,CAAC;QAClB,QAAQ,EAAE,MAAM,CAAC;QACjB,OAAO,EAAE,MAAM,CAAC;QAChB,OAAO,EAAE,OAAO,CAAC;QACjB,MAAM,EAAE,OAAO,CAAC;QAChB,OAAO,EAAE,OAAO,CAAC;QACjB,OAAO,EAAE,MAAM,CAAC;QAChB,OAAO,EAAE,MAAM,CAAC;QAChB,QAAQ,EAAE,MAAM,CAAC;QACjB,UAAU,EAAE,MAAM,CAAC;KACpB,CAAC,CAAC;IACH,QAAQ,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC;IAChC,SAAS,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC;IACjC,UAAU,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC;IAC3C,uBAAuB;IACvB,MAAM,CAAC,GAAG,EAAE,kBAAkB,GAAG,IAAI,CAAC;IACtC,kEAAkE;IAClE,MAAM,CAAC,GAAG,EAAE,kBAAkB,GAAG,IAAI,CAAC;IACtC,SAAS,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC;CAClC;AAGD,eAAO,MAAM,SAAS,6EAA+C,CAAC;AAItE,eAAO,MAAM,YAAY;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAuEvB,CAAC;;;;IA6CD,gDAAgD;;IAEhD,gCAAgC;;;;;;;;AAUlC,wBAWG;AAq6BH,wBAAgB,aAAa,CAAC,GAAG,EAAE,QAAQ,CAAC,OAAO,YAAY,CAAC,GAAG,eAAe,CASjF;AAeD,OAAO,QAAQ,aAAa,CAAC;IAC3B,UAAU,WAAW;QACnB,aAAa;QACb,qBAAqB,EAAE,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC;QACzC,aAAa;QACb,oBAAoB,EAAE,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC;QACxC,aAAa;QACb,qBAAqB,EAAE,CAAC,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,CAAC,CAAC;KAC3D;CACF"}
|
package/dist/index.js
CHANGED
|
@@ -1,24 +1,26 @@
|
|
|
1
1
|
import { cronEngine } from '@aalis/api-cron-engine';
|
|
2
|
-
import {
|
|
2
|
+
import { isStorageNotFound, isStorageUri, storage } from '@aalis/api-storage';
|
|
3
3
|
import { tools } from '@aalis/api-tools';
|
|
4
4
|
import { webuiServer } from '@aalis/api-webui';
|
|
5
5
|
import { config, definePlugin, defineService, events, lifecycle, logger, optional, provide, } from '@aalis/core';
|
|
6
|
+
import { configError, defineConfig, parseConfig } from '@aalis/schema-config';
|
|
6
7
|
import { parseEverySeconds } from '@aalis/util-cron';
|
|
7
8
|
// ──────────── Cron 解析 ────────────
|
|
8
9
|
// 解析在 @aalis/util-cron(parseEverySeconds 等);
|
|
9
10
|
// scheduler 声明 cronEngine 后调用 subscribe()/nextFireTime()。
|
|
10
11
|
/** setTimeout 的 delay 上限(32 位有符号毫秒,约 24.8 天);超过即溢出成立即触发 */
|
|
11
12
|
const MAX_TIMEOUT_MS = 2 ** 31 - 1;
|
|
12
|
-
// -----
|
|
13
|
+
// ----- 服务描述符(调用型:业务层就是提供者的形状)-----
|
|
13
14
|
export const scheduler = defineService('scheduler');
|
|
14
15
|
// ──────────── 插件元数据 ────────────
|
|
15
|
-
const configSchema = {
|
|
16
|
+
export const configSchema = defineConfig({
|
|
16
17
|
jobs: {
|
|
17
18
|
type: 'array',
|
|
19
|
+
onInvalid: 'error',
|
|
18
20
|
label: '计划任务列表',
|
|
19
21
|
description: '配置定时/周期性任务,让 AI 主动执行计划。',
|
|
20
22
|
items: {
|
|
21
|
-
name: { type: 'string', label: '任务名称'
|
|
23
|
+
name: { type: 'string', label: '任务名称' },
|
|
22
24
|
cron: {
|
|
23
25
|
type: 'string',
|
|
24
26
|
label: 'Cron 表达式',
|
|
@@ -29,14 +31,19 @@ const configSchema = {
|
|
|
29
31
|
label: '固定间隔(秒)',
|
|
30
32
|
description: '每隔 N 秒执行一次。与"Cron 表达式"二选一。',
|
|
31
33
|
},
|
|
34
|
+
runAt: {
|
|
35
|
+
type: 'string',
|
|
36
|
+
label: '一次性运行时间',
|
|
37
|
+
description: 'ISO 字符串;执行一次后自动禁用。',
|
|
38
|
+
},
|
|
32
39
|
sessionId: {
|
|
33
40
|
type: 'string',
|
|
34
41
|
label: '目标会话 ID',
|
|
35
|
-
required: true,
|
|
36
42
|
description: '任务消息发往的会话 ID。可以是真实群/用户会话,也可以自定义(如 scheduler::daily)。',
|
|
37
43
|
},
|
|
38
44
|
platform: {
|
|
39
45
|
type: 'string',
|
|
46
|
+
onInvalid: 'error',
|
|
40
47
|
label: '目标平台',
|
|
41
48
|
required: true,
|
|
42
49
|
description: '任务消息的平台标识(如 internal、webui、onebot)。仅用于消息路由。',
|
|
@@ -44,23 +51,23 @@ const configSchema = {
|
|
|
44
51
|
},
|
|
45
52
|
actorPlatform: {
|
|
46
53
|
type: 'string',
|
|
54
|
+
onInvalid: 'error',
|
|
47
55
|
label: '执行身份-平台',
|
|
48
56
|
description: '代理身份的 platform(与目标平台解耦)。authority 按 (actorPlatform, actorUserId) 联合裁决能力。留空 = webui。',
|
|
49
|
-
default: 'webui',
|
|
50
57
|
},
|
|
51
58
|
actorUserId: {
|
|
52
59
|
type: 'string',
|
|
60
|
+
onInvalid: 'error',
|
|
53
61
|
label: '执行身份-用户 ID',
|
|
54
62
|
description: '代理身份的 userId。留空 = console(与 actorPlatform=webui 组合即 owner,拥有一切能力)。',
|
|
55
|
-
default: 'console',
|
|
56
63
|
},
|
|
57
64
|
content: {
|
|
58
65
|
type: 'string',
|
|
59
66
|
label: '消息内容',
|
|
60
|
-
|
|
67
|
+
default: '',
|
|
61
68
|
description: '发送给 Agent 的指令/提示内容。',
|
|
62
69
|
},
|
|
63
|
-
enabled: { type: 'boolean', label: '启用', default: true },
|
|
70
|
+
enabled: { type: 'boolean', label: '启用', default: true, onInvalid: 'error' },
|
|
64
71
|
timeZone: {
|
|
65
72
|
type: 'string',
|
|
66
73
|
label: '时区 (IANA)',
|
|
@@ -71,84 +78,44 @@ const configSchema = {
|
|
|
71
78
|
},
|
|
72
79
|
persistPath: {
|
|
73
80
|
type: 'string',
|
|
81
|
+
onInvalid: 'error',
|
|
74
82
|
label: '动态任务存储路径',
|
|
75
83
|
default: 'data:/scheduler-jobs.json',
|
|
76
84
|
description: '通过 AI 或 WebUI 创建的任务会持久化到此 storage URI,重启后自动加载。',
|
|
77
85
|
},
|
|
78
|
-
};
|
|
86
|
+
});
|
|
79
87
|
// ──────────── WebUI 页面 ────────────
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
content: [
|
|
87
|
-
{
|
|
88
|
-
type: 'table',
|
|
89
|
-
label: '任务列表',
|
|
90
|
-
source: 'listJobs',
|
|
91
|
-
columns: [
|
|
92
|
-
{ key: 'name', label: '名称' },
|
|
93
|
-
{ key: 'schedule', label: '调度规则' },
|
|
94
|
-
{ key: 'sessionId', label: '目标会话' },
|
|
95
|
-
{ key: 'status', label: '状态' },
|
|
96
|
-
{ key: 'nextRun', label: '下次执行', render: 'countdown' },
|
|
97
|
-
{ key: 'lastRunText', label: '上次执行' },
|
|
98
|
-
{ key: 'runCount', label: '执行次数' },
|
|
99
|
-
{ key: 'lastResult', label: '最近结果' },
|
|
100
|
-
],
|
|
101
|
-
actions: [
|
|
102
|
-
{ label: '立即执行', method: 'triggerJob' },
|
|
103
|
-
{ label: '暂停', method: 'pauseJob' },
|
|
104
|
-
{ label: '恢复', method: 'resumeJob' },
|
|
105
|
-
{ label: '删除', method: 'removeJob', confirm: '确定删除该任务?', danger: true },
|
|
106
|
-
],
|
|
107
|
-
refresh: 30,
|
|
108
|
-
},
|
|
109
|
-
{
|
|
110
|
-
type: 'form',
|
|
111
|
-
label: '新建 / 编辑任务',
|
|
112
|
-
source: 'newJobDraft',
|
|
113
|
-
save: 'upsertJob',
|
|
114
|
-
schema: {
|
|
115
|
-
name: {
|
|
116
|
-
type: 'string',
|
|
117
|
-
label: '名称',
|
|
118
|
-
required: true,
|
|
119
|
-
description: '任务唯一标识;填已有动态任务名会覆盖(配置文件中的静态任务无法覆盖)',
|
|
120
|
-
},
|
|
121
|
-
cron: {
|
|
122
|
-
type: 'string',
|
|
123
|
-
label: 'Cron 表达式',
|
|
124
|
-
description: '5 字段或别名:@hourly / @daily / @weekly / @every 30s;与 interval / runAt / delaySeconds 四选一',
|
|
125
|
-
},
|
|
126
|
-
interval: { type: 'number', label: '固定间隔(秒)', description: '与 cron / runAt / delaySeconds 四选一' },
|
|
127
|
-
runAt: {
|
|
128
|
-
type: 'string',
|
|
129
|
-
label: '一次性运行时间',
|
|
130
|
-
description: 'ISO 字符串,如 2026-05-19T10:00:00;执行一次后自动删除',
|
|
131
|
-
},
|
|
132
|
-
delaySeconds: {
|
|
133
|
-
type: 'number',
|
|
134
|
-
label: 'X 秒后执行一次',
|
|
135
|
-
description: '与 cron / interval / runAt 四选一;填写后会转换为 runAt = now + N 秒,执行一次后自动删除',
|
|
136
|
-
},
|
|
137
|
-
sessionId: { type: 'string', label: '目标会话 ID', required: true },
|
|
138
|
-
platform: { type: 'string', label: '目标平台', default: 'internal' },
|
|
139
|
-
content: { type: 'textarea', label: '消息内容', required: true, description: '届时发送给自己的指令/提示' },
|
|
140
|
-
enabled: { type: 'boolean', label: '启用', default: true },
|
|
141
|
-
paused: {
|
|
142
|
-
type: 'boolean',
|
|
143
|
-
label: '创建后立即暂停',
|
|
144
|
-
default: false,
|
|
145
|
-
description: '勾选后任务创建但不会自动运行,需手动「恢复」;仅周期任务(cron / interval)可用',
|
|
146
|
-
},
|
|
147
|
-
},
|
|
148
|
-
},
|
|
149
|
-
],
|
|
88
|
+
/** 新建与编辑共用的输入:调度方式(四选一)、目标会话与内容。新建另收任务名,编辑的任务名取这一行 */
|
|
89
|
+
const JOB_FIELDS = defineConfig({
|
|
90
|
+
cron: {
|
|
91
|
+
type: 'string',
|
|
92
|
+
label: 'Cron 表达式',
|
|
93
|
+
description: '5 字段或别名:@hourly、@daily、@weekly、@every 30s;与固定间隔、一次性运行时间、X 秒后执行四选一',
|
|
150
94
|
},
|
|
151
|
-
|
|
95
|
+
interval: { type: 'number', label: '固定间隔(秒)', description: '不小于 5;与其余三种调度方式四选一' },
|
|
96
|
+
runAt: {
|
|
97
|
+
type: 'string',
|
|
98
|
+
label: '一次性运行时间',
|
|
99
|
+
description: 'ISO 时间,如 2026-05-19T10:00:00;执行一次后自动删除',
|
|
100
|
+
},
|
|
101
|
+
delaySeconds: {
|
|
102
|
+
type: 'number',
|
|
103
|
+
label: 'X 秒后执行一次',
|
|
104
|
+
description: '换算成一次性运行时间 = 现在 + N 秒,执行一次后自动删除',
|
|
105
|
+
},
|
|
106
|
+
sessionId: { type: 'string', label: '目标会话 ID', required: true },
|
|
107
|
+
platform: { type: 'string', label: '目标平台', default: 'internal' },
|
|
108
|
+
content: { type: 'textarea', label: '消息内容', required: true, description: '届时发送给自己的指令或提示' },
|
|
109
|
+
enabled: { type: 'boolean', label: '启用', default: true },
|
|
110
|
+
paused: {
|
|
111
|
+
type: 'boolean',
|
|
112
|
+
label: '暂停',
|
|
113
|
+
default: false,
|
|
114
|
+
description: '勾选后不自动运行,要手动「恢复」;只对周期任务(cron、固定间隔)有效',
|
|
115
|
+
},
|
|
116
|
+
});
|
|
117
|
+
/** 单个会话最多几个计划任务(防资源耗尽);编辑已有任务不计入 */
|
|
118
|
+
const MAX_JOBS_PER_SESSION = 20;
|
|
152
119
|
// ──────────── 插件入口 ────────────
|
|
153
120
|
const uses = {
|
|
154
121
|
// tools 必须先就绪,否则下方 register tool 全部静默丢失(optional 不参与激活闸)
|
|
@@ -157,7 +124,7 @@ const uses = {
|
|
|
157
124
|
cronEngine,
|
|
158
125
|
/** 动态任务的持久化出口;没有 storage 时任务只活在本次激活里(读写各自降级) */
|
|
159
126
|
storage: optional(storage),
|
|
160
|
-
/**
|
|
127
|
+
/** 计划任务页的登记口;无 WebUI 时调度照常运行 */
|
|
161
128
|
webui: optional(webuiServer),
|
|
162
129
|
events,
|
|
163
130
|
lifecycle,
|
|
@@ -178,37 +145,222 @@ export default definePlugin({
|
|
|
178
145
|
apply: run,
|
|
179
146
|
});
|
|
180
147
|
async function run(caps) {
|
|
148
|
+
const cfg = parseConfig(configSchema, caps.config.use, caps.logger.use);
|
|
181
149
|
const { cronEngine, storage, webui, events, lifecycle, logger, provide, tools } = caps;
|
|
182
|
-
const config = resolveConfig(
|
|
183
|
-
for (const page of webuiPages)
|
|
184
|
-
webui.registerPage(page);
|
|
150
|
+
const config = resolveConfig(cfg);
|
|
185
151
|
const runtimes = new Map();
|
|
186
152
|
// 配置中定义的任务名称集合(不需要持久化)
|
|
187
153
|
const configJobNames = new Set(config.jobs.map(j => j.name));
|
|
188
154
|
// 动态任务集合(需要持久化)
|
|
189
155
|
const dynamicJobs = new Map();
|
|
190
156
|
// ── 持久化读写 (经 storage 抽象,默认 data:/scheduler-jobs.json) ──
|
|
191
|
-
const storageGateway = createStorageGateway(storage);
|
|
192
157
|
const persistUri = config.persistPath;
|
|
193
158
|
/**
|
|
194
159
|
* 激活时那次读失败了、又不是「文件不存在」(storage 不在场、读错误、解析失败、结构不对):写的是整表,
|
|
195
160
|
* 此后一律拒写,否则下一次增删改就把原有动态任务冲掉。只在激活时读一次,storage 迟到也不重读。
|
|
196
161
|
*/
|
|
197
162
|
let loadFailed = false;
|
|
198
|
-
/** 拒写期间新建或改动的任务只在内存、重启即失:回执末尾如实注明(AI
|
|
199
|
-
const persistNote = () =>
|
|
163
|
+
/** 拒写期间新建或改动的任务只在内存、重启即失:回执末尾如实注明(AI 工具与计划任务页同一附注),文件正常时为空串 */
|
|
164
|
+
const persistNote = () => loadFailed ? `;仅本次运行生效,未写入 ${persistUri}:它读不出来,处理办法见「需要处理」里的提示` : '';
|
|
165
|
+
// 先读完持久化任务再登记页面:登记之后到服务就绪之间不再有等待,页面一出现取数与动作就可用
|
|
166
|
+
const persisted = await loadDynamicJobs();
|
|
167
|
+
// ── 计划任务页:动作是本次激活的闭包,直接操作本插件自己的调度表;登记随激活撤回 ──
|
|
168
|
+
/**
|
|
169
|
+
* 新建与编辑共用:调度方式恰好一个(四者是互不相容的定时语义,多填时取哪个都是猜),与 scheduler_create_job
|
|
170
|
+
* 工具路径同一条判据与同一份 delaySeconds 换算。actor 取闸门放行后的调用者,不从输入读,免得伪造他人身份
|
|
171
|
+
*/
|
|
172
|
+
function saveJob(name, input, caller, creating) {
|
|
173
|
+
const cron = input.cron?.trim() || undefined;
|
|
174
|
+
const interval = input.interval !== undefined && input.interval > 0 ? input.interval : undefined;
|
|
175
|
+
const delaySeconds = input.delaySeconds !== undefined && input.delaySeconds > 0 ? Math.floor(input.delaySeconds) : undefined;
|
|
176
|
+
const rawRunAt = input.runAt?.trim() || undefined;
|
|
177
|
+
const provided = [cron, interval, delaySeconds, rawRunAt].filter(v => v !== undefined).length;
|
|
178
|
+
if (provided === 0)
|
|
179
|
+
throw new Error('cron、固定间隔、一次性运行时间、X 秒后执行必须填写其中之一');
|
|
180
|
+
if (provided > 1)
|
|
181
|
+
throw new Error('cron、固定间隔、一次性运行时间、X 秒后执行互斥,只能填一个');
|
|
182
|
+
const runAt = delaySeconds !== undefined ? new Date(Date.now() + delaySeconds * 1000).toISOString() : rawRunAt;
|
|
183
|
+
// 一次性任务被暂停时到点的定时器直接跳过,之后既不重排也不自删,任务就永久卡死在那里
|
|
184
|
+
if (input.paused && runAt)
|
|
185
|
+
throw new Error('暂停对一次性任务(一次性运行时间、X 秒后执行)没有可用语义');
|
|
186
|
+
// 防误填高频任务:挡住 interval:0.5 这类会占满调度的间隔
|
|
187
|
+
if (interval !== undefined && interval < 5)
|
|
188
|
+
throw new Error('固定间隔不能小于 5 秒(防高频任务耗尽资源)');
|
|
189
|
+
const sessionId = input.sessionId.trim();
|
|
190
|
+
if (!sessionId)
|
|
191
|
+
throw new Error('目标会话 ID 不能为空');
|
|
192
|
+
const content = input.content.trim();
|
|
193
|
+
if (!content)
|
|
194
|
+
throw new Error('消息内容不能为空');
|
|
195
|
+
if (creating) {
|
|
196
|
+
const all = service.getJobs();
|
|
197
|
+
if (all.some(j => j.name === name))
|
|
198
|
+
throw new Error(`已有同名任务 ${name},改它用「编辑」`);
|
|
199
|
+
if (all.filter(j => j.sessionId === sessionId).length >= MAX_JOBS_PER_SESSION) {
|
|
200
|
+
throw new Error(`本会话定时任务数已达上限 ${MAX_JOBS_PER_SESSION},请先删除部分任务再新建`);
|
|
201
|
+
}
|
|
202
|
+
}
|
|
203
|
+
service.setJob({
|
|
204
|
+
name,
|
|
205
|
+
cron,
|
|
206
|
+
interval,
|
|
207
|
+
runAt,
|
|
208
|
+
sessionId,
|
|
209
|
+
platform: input.platform,
|
|
210
|
+
actorPlatform: caller.platform,
|
|
211
|
+
actorUserId: caller.userId,
|
|
212
|
+
content,
|
|
213
|
+
enabled: input.enabled,
|
|
214
|
+
paused: input.paused,
|
|
215
|
+
});
|
|
216
|
+
return `已保存任务 ${name}${persistNote()}`;
|
|
217
|
+
}
|
|
218
|
+
const jobsPage = webui.use.definePage({
|
|
219
|
+
key: 'scheduler',
|
|
220
|
+
title: '计划任务',
|
|
221
|
+
icon: 'clock',
|
|
222
|
+
actions: {
|
|
223
|
+
createJob: {
|
|
224
|
+
label: '新建',
|
|
225
|
+
effect: 'write',
|
|
226
|
+
input: {
|
|
227
|
+
name: { type: 'string', label: '名称', required: true, description: '任务的唯一标识' },
|
|
228
|
+
...JOB_FIELDS,
|
|
229
|
+
},
|
|
230
|
+
handler({ input, ctx }) {
|
|
231
|
+
const name = input.name.trim();
|
|
232
|
+
if (!name)
|
|
233
|
+
throw new Error('名称不能为空');
|
|
234
|
+
return saveJob(name, input, ctx.caller, true);
|
|
235
|
+
},
|
|
236
|
+
},
|
|
237
|
+
editJob: {
|
|
238
|
+
label: '编辑',
|
|
239
|
+
effect: 'write',
|
|
240
|
+
row: true,
|
|
241
|
+
input: JOB_FIELDS,
|
|
242
|
+
handler({ rowKey, input, ctx }) {
|
|
243
|
+
if (!service.getJobs().some(j => j.name === rowKey))
|
|
244
|
+
throw new Error(`任务 ${rowKey} 不存在`);
|
|
245
|
+
return saveJob(rowKey, input, ctx.caller, false);
|
|
246
|
+
},
|
|
247
|
+
},
|
|
248
|
+
triggerJob: {
|
|
249
|
+
label: '立即执行',
|
|
250
|
+
effect: 'write',
|
|
251
|
+
row: true,
|
|
252
|
+
async handler({ rowKey }) {
|
|
253
|
+
// 这一轮还没执行完时 triggerJob 直接跳过;与它置 running 在同一个同步段里判,没有竞态
|
|
254
|
+
if (service.getJobs().find(j => j.name === rowKey)?.running) {
|
|
255
|
+
throw new Error(`任务 ${rowKey} 正在执行,这次没有再触发`);
|
|
256
|
+
}
|
|
257
|
+
if (!(await service.triggerJob(rowKey)))
|
|
258
|
+
throw new Error(`任务 ${rowKey} 不存在`);
|
|
259
|
+
return `已执行 ${rowKey}`;
|
|
260
|
+
},
|
|
261
|
+
},
|
|
262
|
+
pauseJob: {
|
|
263
|
+
label: '暂停',
|
|
264
|
+
effect: 'write',
|
|
265
|
+
row: true,
|
|
266
|
+
handler({ rowKey }) {
|
|
267
|
+
if (!service.pauseJob(rowKey))
|
|
268
|
+
throw new Error('任务不存在,或是一次性任务(不能暂停,只能删除重建)');
|
|
269
|
+
return `已暂停 ${rowKey}`;
|
|
270
|
+
},
|
|
271
|
+
},
|
|
272
|
+
resumeJob: {
|
|
273
|
+
label: '恢复',
|
|
274
|
+
effect: 'write',
|
|
275
|
+
row: true,
|
|
276
|
+
handler({ rowKey }) {
|
|
277
|
+
if (!service.resumeJob(rowKey))
|
|
278
|
+
throw new Error(`任务 ${rowKey} 不存在`);
|
|
279
|
+
return `已恢复 ${rowKey}`;
|
|
280
|
+
},
|
|
281
|
+
},
|
|
282
|
+
removeJob: {
|
|
283
|
+
label: '删除',
|
|
284
|
+
effect: 'destructive',
|
|
285
|
+
confirm: '删除这个计划任务?',
|
|
286
|
+
row: true,
|
|
287
|
+
handler({ rowKey }) {
|
|
288
|
+
if (!service.removeJob(rowKey))
|
|
289
|
+
throw new Error(`任务 ${rowKey} 不存在`);
|
|
290
|
+
return `已删除 ${rowKey}`;
|
|
291
|
+
},
|
|
292
|
+
},
|
|
293
|
+
},
|
|
294
|
+
content: [
|
|
295
|
+
{
|
|
296
|
+
type: 'table',
|
|
297
|
+
id: 'jobs',
|
|
298
|
+
rowKey: 'name',
|
|
299
|
+
empty: '还没有计划任务',
|
|
300
|
+
columns: [
|
|
301
|
+
{ key: 'name', label: '名称', primary: true },
|
|
302
|
+
{ key: 'schedule', label: '调度' },
|
|
303
|
+
{ key: 'sessionId', label: '目标会话' },
|
|
304
|
+
{ key: 'status', label: '状态', kind: 'status', primary: true },
|
|
305
|
+
{ key: 'nextRun', label: '下次执行', kind: 'countdown' },
|
|
306
|
+
{ key: 'lastRun', label: '上次执行', kind: 'time' },
|
|
307
|
+
{ key: 'runCount', label: '执行次数' },
|
|
308
|
+
{ key: 'lastResult', label: '最近结果', kind: 'long-text' },
|
|
309
|
+
],
|
|
310
|
+
rowActions: [
|
|
311
|
+
{ action: 'triggerJob' },
|
|
312
|
+
{ action: 'pauseJob', visibleWhen: 'pausable' },
|
|
313
|
+
{ action: 'resumeJob', visibleWhen: 'paused' },
|
|
314
|
+
{ action: 'editJob', visibleWhen: 'editable' },
|
|
315
|
+
{ action: 'removeJob' },
|
|
316
|
+
],
|
|
317
|
+
data: () => service.getJobs().map(j => {
|
|
318
|
+
const ready = j.enabled && !j.paused && !j.running;
|
|
319
|
+
return {
|
|
320
|
+
name: j.name,
|
|
321
|
+
cron: j.cron,
|
|
322
|
+
interval: j.interval,
|
|
323
|
+
runAt: j.runAt,
|
|
324
|
+
sessionId: j.sessionId,
|
|
325
|
+
platform: j.platform,
|
|
326
|
+
content: j.content,
|
|
327
|
+
enabled: j.enabled,
|
|
328
|
+
paused: j.paused,
|
|
329
|
+
schedule: j.cron ?? (j.interval ? `每 ${j.interval} 秒` : j.runAt ? `一次性 ${j.runAt}` : '未设置'),
|
|
330
|
+
status: !j.enabled
|
|
331
|
+
? { text: '禁用', state: 'inactive' }
|
|
332
|
+
: j.paused
|
|
333
|
+
? { text: '暂停', state: 'inactive' }
|
|
334
|
+
: j.running
|
|
335
|
+
? { text: '执行中', state: 'running' }
|
|
336
|
+
: { text: '就绪' },
|
|
337
|
+
nextRun: ready && j.nextRun > 0 ? j.nextRun : undefined,
|
|
338
|
+
lastRun: j.lastRun || undefined,
|
|
339
|
+
runCount: j.runCount,
|
|
340
|
+
lastResult: j.lastResult,
|
|
341
|
+
pausable: ready && !!(j.cron || j.interval),
|
|
342
|
+
editable: !configJobNames.has(j.name),
|
|
343
|
+
};
|
|
344
|
+
}),
|
|
345
|
+
},
|
|
346
|
+
{ type: 'actions', actions: ['createJob'] },
|
|
347
|
+
],
|
|
348
|
+
});
|
|
200
349
|
async function loadDynamicJobs() {
|
|
350
|
+
/** 失败出在读文件这一步(存储插件不在、persistPath 的根名写错、文件读不了),文件内容未必有错 */
|
|
351
|
+
let reading = true;
|
|
201
352
|
try {
|
|
202
353
|
let raw;
|
|
203
354
|
try {
|
|
204
|
-
raw = (await
|
|
355
|
+
raw = (await storage.use.readFile(persistUri, 'utf-8'));
|
|
205
356
|
}
|
|
206
357
|
catch (err) {
|
|
207
|
-
//
|
|
358
|
+
// 只有「文件不存在」算全新;「未知存储根」等其它失败不能当成空表
|
|
208
359
|
if (isStorageNotFound(err))
|
|
209
360
|
return [];
|
|
210
361
|
throw err;
|
|
211
362
|
}
|
|
363
|
+
reading = false;
|
|
212
364
|
const data = JSON.parse(raw);
|
|
213
365
|
if (!Array.isArray(data)) {
|
|
214
366
|
throw new Error(`持久化任务文件不是数组(得到 ${data === null ? 'null' : typeof data})`);
|
|
@@ -224,7 +376,7 @@ async function run(caps) {
|
|
|
224
376
|
// `saveDynamicJobs` 的 JSON.stringify 会丢掉 undefined 键,匿名创建的任务落盘后
|
|
225
377
|
// 与无 actor 字段的老任务同形;此处补 owner 即等于给它开一条提权通道。
|
|
226
378
|
// 「创建者未知」不等于「创建者是 owner」。
|
|
227
|
-
logger.warn(`持久化任务 "${j.name}" 缺少 actor 身份,已按匿名(最低权限)运行;如需更高权限请在 WebUI 中显式设置创建者身份`);
|
|
379
|
+
logger.use.warn(`持久化任务 "${j.name}" 缺少 actor 身份,已按匿名(最低权限)运行;如需更高权限请在 WebUI 中显式设置创建者身份`);
|
|
228
380
|
}
|
|
229
381
|
return {
|
|
230
382
|
name: String(j.name ?? 'unnamed'),
|
|
@@ -243,7 +395,17 @@ async function run(caps) {
|
|
|
243
395
|
}
|
|
244
396
|
catch (err) {
|
|
245
397
|
loadFailed = true;
|
|
246
|
-
logger.warn(`加载持久化任务失败,本次运行不再写入该文件: ${err}`);
|
|
398
|
+
logger.use.warn(`加载持久化任务失败,本次运行不再写入该文件: ${err}`);
|
|
399
|
+
// 里面的任务全没加载、新改动也不落盘:只记日志用户看不到
|
|
400
|
+
webui.use.notify({
|
|
401
|
+
id: 'jobs-load',
|
|
402
|
+
level: 'error',
|
|
403
|
+
title: `计划任务文件 ${persistUri} 读不出来,里面的任务没有加载`,
|
|
404
|
+
detail: (reading
|
|
405
|
+
? '确认本地存储插件在运行、配置项 persistPath 的根名写对、这个文件能读取,然后重载本插件。'
|
|
406
|
+
: '修好这个文件后重载本插件:内容要是任务数组;不要里面的任务就把它移走再重载。') +
|
|
407
|
+
`修好之前新建与改动的任务只在本次运行生效。原因:${err instanceof Error ? err.message : String(err)}`,
|
|
408
|
+
});
|
|
247
409
|
return [];
|
|
248
410
|
}
|
|
249
411
|
}
|
|
@@ -256,17 +418,17 @@ async function run(caps) {
|
|
|
256
418
|
let saveChain = Promise.resolve();
|
|
257
419
|
function saveDynamicJobs() {
|
|
258
420
|
if (loadFailed) {
|
|
259
|
-
logger.warn(`持久化任务上次加载失败,跳过写入以免覆盖原有任务(本次改动仅在内存生效): ${persistUri}`);
|
|
421
|
+
logger.use.warn(`持久化任务上次加载失败,跳过写入以免覆盖原有任务(本次改动仅在内存生效): ${persistUri}`);
|
|
260
422
|
return;
|
|
261
423
|
}
|
|
262
424
|
const jobs = [...dynamicJobs.values()];
|
|
263
425
|
const payload = JSON.stringify(jobs, null, 2);
|
|
264
426
|
saveChain = saveChain
|
|
265
|
-
.then(() =>
|
|
427
|
+
.then(() => storage.use.writeFile(persistUri, payload))
|
|
266
428
|
.then(() => {
|
|
267
|
-
logger.debug(`已持久化 ${jobs.length} 个动态任务`);
|
|
429
|
+
logger.use.debug(`已持久化 ${jobs.length} 个动态任务`);
|
|
268
430
|
}, err => {
|
|
269
|
-
logger.warn(`持久化任务失败: ${err}`);
|
|
431
|
+
logger.use.warn(`持久化任务失败: ${err}`);
|
|
270
432
|
});
|
|
271
433
|
}
|
|
272
434
|
// ── 发送调度消息 ──
|
|
@@ -274,15 +436,16 @@ async function run(caps) {
|
|
|
274
436
|
if (rt.running)
|
|
275
437
|
return;
|
|
276
438
|
rt.running = true;
|
|
439
|
+
jobsPage.invalidate();
|
|
277
440
|
const jobName = rt.config.name;
|
|
278
441
|
try {
|
|
279
|
-
logger.info(`执行任务: ${jobName}`);
|
|
280
|
-
await events.emit('scheduler:job:start', jobName);
|
|
442
|
+
logger.use.info(`执行任务: ${jobName}`);
|
|
443
|
+
await events.use.emit('scheduler:job:start', jobName);
|
|
281
444
|
// 通用触发事件:供 workflow 等订阅者使用
|
|
282
445
|
// (任务本身仍走 inbound:message 投递,这里同时广播 trigger:fired,
|
|
283
446
|
// 便于平滑迁移到 plugin-workflow)
|
|
284
447
|
// biome-ignore lint/suspicious/noExplicitAny: 事件类型由 api-workflow 增广,scheduler 不直接依赖
|
|
285
|
-
await events.emit('trigger:fired', {
|
|
448
|
+
await events.use.emit('trigger:fired', {
|
|
286
449
|
source: `scheduler:${jobName}`,
|
|
287
450
|
type: rt.config.cron ? 'cron' : 'interval',
|
|
288
451
|
payload: {
|
|
@@ -309,20 +472,21 @@ async function run(caps) {
|
|
|
309
472
|
if (actorPlatform && actorUserId) {
|
|
310
473
|
message.actor = { platform: actorPlatform, userId: actorUserId };
|
|
311
474
|
}
|
|
312
|
-
await events.emit('inbound:message', message);
|
|
475
|
+
await events.use.emit('inbound:message', message);
|
|
313
476
|
rt.lastRun = Date.now();
|
|
314
477
|
rt.runCount++;
|
|
315
478
|
rt.lastResult = '成功';
|
|
316
|
-
await events.emit('scheduler:job:done', jobName);
|
|
479
|
+
await events.use.emit('scheduler:job:done', jobName);
|
|
317
480
|
}
|
|
318
481
|
catch (err) {
|
|
319
482
|
const msg = err instanceof Error ? err.message : String(err);
|
|
320
483
|
rt.lastResult = `失败: ${msg}`;
|
|
321
|
-
logger.error(`任务 "${jobName}" 执行失败: ${msg}`);
|
|
322
|
-
await events.emit('scheduler:job:error', jobName, msg);
|
|
484
|
+
logger.use.error(`任务 "${jobName}" 执行失败: ${msg}`);
|
|
485
|
+
await events.use.emit('scheduler:job:error', jobName, msg);
|
|
323
486
|
}
|
|
324
487
|
finally {
|
|
325
488
|
rt.running = false;
|
|
489
|
+
jobsPage.invalidate();
|
|
326
490
|
}
|
|
327
491
|
}
|
|
328
492
|
// ── 估算下次执行时间 ──
|
|
@@ -336,15 +500,28 @@ async function run(caps) {
|
|
|
336
500
|
}
|
|
337
501
|
if (job.cron) {
|
|
338
502
|
const tz = job.timeZone?.trim() || undefined;
|
|
339
|
-
// 每次求值取当前提供者:cron-engine
|
|
340
|
-
|
|
503
|
+
// 每次求值取当前提供者:cron-engine 换人后不会算在旧实例上。时区无效时它同步抛错:这只是展示用的估计,
|
|
504
|
+
// 按「不知道」处理,任务排不上的原因由订阅失败的提示报出
|
|
505
|
+
try {
|
|
506
|
+
return cronEngine.use.nextFireTime(job.cron, new Date(), undefined, tz ? { timeZone: tz } : undefined) ?? 0;
|
|
507
|
+
}
|
|
508
|
+
catch {
|
|
509
|
+
return 0;
|
|
510
|
+
}
|
|
341
511
|
}
|
|
342
512
|
return 0;
|
|
343
513
|
}
|
|
344
514
|
// ── 初始化所有任务 ──
|
|
515
|
+
/** cron 订阅不上、永远不会运行的任务各一条提示:任务重排或删掉时撤回 */
|
|
516
|
+
const unscheduled = new Map();
|
|
517
|
+
function clearUnscheduled(name) {
|
|
518
|
+
unscheduled.get(name)?.clear();
|
|
519
|
+
unscheduled.delete(name);
|
|
520
|
+
}
|
|
345
521
|
function initJob(jobCfg) {
|
|
346
522
|
if (runtimes.has(jobCfg.name))
|
|
347
523
|
return;
|
|
524
|
+
clearUnscheduled(jobCfg.name);
|
|
348
525
|
// 归一化 cron 快捷符;"@every Ns" 转成 interval 通道
|
|
349
526
|
if (jobCfg.cron) {
|
|
350
527
|
const everySec = parseEverySeconds(jobCfg.cron);
|
|
@@ -358,7 +535,7 @@ async function run(caps) {
|
|
|
358
535
|
// 创建口与 pauseJob 都已拒绝这种组合,但存量持久化文件里可能还留着;启动时告警并按未暂停处理
|
|
359
536
|
// (要停掉它请改 enabled 或直接删除)。
|
|
360
537
|
if (jobCfg.runAt && !jobCfg.cron && !jobCfg.interval && jobCfg.paused) {
|
|
361
|
-
logger.warn(`任务 "${jobCfg.name}" 是一次性任务却带 paused,暂停对其无可用语义;已按未暂停处理`);
|
|
538
|
+
logger.use.warn(`任务 "${jobCfg.name}" 是一次性任务却带 paused,暂停对其无可用语义;已按未暂停处理`);
|
|
362
539
|
jobCfg.paused = false;
|
|
363
540
|
}
|
|
364
541
|
const rt = {
|
|
@@ -386,7 +563,7 @@ async function run(caps) {
|
|
|
386
563
|
if (jobCfg.cron && jobCfg.enabled) {
|
|
387
564
|
try {
|
|
388
565
|
const tz = jobCfg.timeZone?.trim() || undefined;
|
|
389
|
-
rt.cronDispose = cronEngine.
|
|
566
|
+
rt.cronDispose = cronEngine.use.subscribe(jobCfg.cron, () => {
|
|
390
567
|
if (rt.paused || !rt.config.enabled)
|
|
391
568
|
return;
|
|
392
569
|
executeJob(rt);
|
|
@@ -394,7 +571,18 @@ async function run(caps) {
|
|
|
394
571
|
}, tz ? { timeZone: tz } : undefined);
|
|
395
572
|
}
|
|
396
573
|
catch (err) {
|
|
397
|
-
|
|
574
|
+
const reason = err instanceof Error ? err.message : String(err);
|
|
575
|
+
logger.use.warn(`任务 ${jobCfg.name} cron 订阅失败: ${reason}`);
|
|
576
|
+
const fromConfig = configJobNames.has(jobCfg.name);
|
|
577
|
+
unscheduled.set(jobCfg.name, webui.use.notify({
|
|
578
|
+
id: `unscheduled:${jobCfg.name}`,
|
|
579
|
+
level: 'error',
|
|
580
|
+
title: `计划任务「${jobCfg.name}」没有排上,不会运行`,
|
|
581
|
+
detail: fromConfig
|
|
582
|
+
? `在配置文件里改正这个任务的 cron 或 timeZone,保存后生效。原因:${reason}`
|
|
583
|
+
: `在计划任务页编辑这个任务,改正它的 cron 后保存。原因:${reason}`,
|
|
584
|
+
open: fromConfig ? 'config' : { page: 'scheduler' },
|
|
585
|
+
}));
|
|
398
586
|
}
|
|
399
587
|
}
|
|
400
588
|
// 一次性任务:到点用 setTimeout 触发一次,执行完 disable 并持久化
|
|
@@ -429,10 +617,11 @@ async function run(caps) {
|
|
|
429
617
|
}
|
|
430
618
|
}
|
|
431
619
|
else {
|
|
432
|
-
logger.warn(`任务 ${jobCfg.name} 的 runAt 无法解析: ${jobCfg.runAt}`);
|
|
620
|
+
logger.use.warn(`任务 ${jobCfg.name} 的 runAt 无法解析: ${jobCfg.runAt}`);
|
|
433
621
|
}
|
|
434
622
|
}
|
|
435
623
|
runtimes.set(jobCfg.name, rt);
|
|
624
|
+
jobsPage.invalidate();
|
|
436
625
|
const scheduleHint = jobCfg.cron
|
|
437
626
|
? `(cron: ${jobCfg.cron})`
|
|
438
627
|
: jobCfg.interval
|
|
@@ -440,7 +629,7 @@ async function run(caps) {
|
|
|
440
629
|
: jobCfg.runAt
|
|
441
630
|
? `(runAt: ${jobCfg.runAt})`
|
|
442
631
|
: '(no schedule)';
|
|
443
|
-
logger.info(`任务已注册: ${jobCfg.name} ${scheduleHint}`);
|
|
632
|
+
logger.use.info(`任务已注册: ${jobCfg.name} ${scheduleHint}`);
|
|
444
633
|
}
|
|
445
634
|
/** 一次性任务执行完后的清理:动态任务直接删除;静态 yaml 任务仅标记 enabled=false */
|
|
446
635
|
function disableOneShot(rt) {
|
|
@@ -453,13 +642,15 @@ async function run(caps) {
|
|
|
453
642
|
runtimes.delete(jobName);
|
|
454
643
|
dynamicJobs.delete(jobName);
|
|
455
644
|
saveDynamicJobs();
|
|
456
|
-
|
|
645
|
+
jobsPage.invalidate();
|
|
646
|
+
logger.use.info(`一次性任务已执行完毕并删除: ${jobName}`);
|
|
457
647
|
return;
|
|
458
648
|
}
|
|
459
649
|
// 静态配置任务:不删,仅标记 enabled=false(yaml 才是权威源)
|
|
460
650
|
rt.config.enabled = false;
|
|
461
651
|
rt.paused = true;
|
|
462
|
-
|
|
652
|
+
jobsPage.invalidate();
|
|
653
|
+
logger.use.info(`一次性任务已执行完毕并停用(静态): ${jobName}`);
|
|
463
654
|
}
|
|
464
655
|
// 静态 YAML 任务的「创建者」是编辑配置文件的人——那本身就是 owner 行为,故缺省补 owner。
|
|
465
656
|
// **这是全插件唯一允许推断 owner 的地方**:来源是配置文件(只有能写盘的人才改得动),
|
|
@@ -471,12 +662,11 @@ async function run(caps) {
|
|
|
471
662
|
if ((p && !u) || (!p && u)) {
|
|
472
663
|
// 半指定:只写了一半就当没写,会被整体替换成 owner —— 那与作者意图相反
|
|
473
664
|
// (写 actor 通常是为了**降权**)。不静默升权,也不因此拒绝启动。
|
|
474
|
-
logger.warn(`任务 "${job.name}" 只写了 actorPlatform/actorUserId 其中一个,两者必须成对;已按未指定处理(owner)`);
|
|
665
|
+
logger.use.warn(`任务 "${job.name}" 只写了 actorPlatform/actorUserId 其中一个,两者必须成对;已按未指定处理(owner)`);
|
|
475
666
|
}
|
|
476
667
|
initJob(p && u ? job : { ...job, actorPlatform: 'webui', actorUserId: 'console' });
|
|
477
668
|
}
|
|
478
|
-
//
|
|
479
|
-
const persisted = await loadDynamicJobs();
|
|
669
|
+
// 持久化的动态任务(同名的配置文件任务优先)
|
|
480
670
|
for (const job of persisted) {
|
|
481
671
|
if (!runtimes.has(job.name)) {
|
|
482
672
|
dynamicJobs.set(job.name, job);
|
|
@@ -484,9 +674,17 @@ async function run(caps) {
|
|
|
484
674
|
}
|
|
485
675
|
}
|
|
486
676
|
if (persisted.length > 0) {
|
|
487
|
-
logger.info(`已加载 ${persisted.length} 个持久化任务`);
|
|
677
|
+
logger.use.info(`已加载 ${persisted.length} 个持久化任务`);
|
|
488
678
|
}
|
|
489
679
|
// ── 注册 scheduler 服务 ──
|
|
680
|
+
/** 无效的 cron 当场拒收:收下了也订阅不上、永远不会运行,还会落进持久化文件。页面、工具与别的插件都经服务新建与修改 */
|
|
681
|
+
function rejectInvalidCron(job) {
|
|
682
|
+
if (!job.cron)
|
|
683
|
+
return;
|
|
684
|
+
const checked = cronEngine.use.validate(job.cron);
|
|
685
|
+
if (!checked.ok)
|
|
686
|
+
throw new Error(checked.reason);
|
|
687
|
+
}
|
|
490
688
|
const service = {
|
|
491
689
|
getJobs() {
|
|
492
690
|
return [...runtimes.values()].map(rt => ({
|
|
@@ -512,7 +710,7 @@ async function run(caps) {
|
|
|
512
710
|
return false;
|
|
513
711
|
// 一次性任务被暂停会永久卡住(到点的定时器直接跳过且不重排),与创建口同一判据:直接拒绝
|
|
514
712
|
if (rt.config.runAt && !rt.config.cron && !rt.config.interval) {
|
|
515
|
-
logger.warn(`一次性任务不能暂停: ${jobName}(只能删除重建)`);
|
|
713
|
+
logger.use.warn(`一次性任务不能暂停: ${jobName}(只能删除重建)`);
|
|
516
714
|
return false;
|
|
517
715
|
}
|
|
518
716
|
rt.paused = true;
|
|
@@ -521,7 +719,8 @@ async function run(caps) {
|
|
|
521
719
|
dynamicJobs.set(jobName, { ...rt.config });
|
|
522
720
|
saveDynamicJobs();
|
|
523
721
|
}
|
|
524
|
-
|
|
722
|
+
jobsPage.invalidate();
|
|
723
|
+
logger.use.info(`任务已暂停: ${jobName}`);
|
|
525
724
|
return true;
|
|
526
725
|
},
|
|
527
726
|
resumeJob(jobName) {
|
|
@@ -535,7 +734,8 @@ async function run(caps) {
|
|
|
535
734
|
dynamicJobs.set(jobName, { ...rt.config });
|
|
536
735
|
saveDynamicJobs();
|
|
537
736
|
}
|
|
538
|
-
|
|
737
|
+
jobsPage.invalidate();
|
|
738
|
+
logger.use.info(`任务已恢复: ${jobName}`);
|
|
539
739
|
return true;
|
|
540
740
|
},
|
|
541
741
|
async triggerJob(jobName) {
|
|
@@ -546,6 +746,7 @@ async function run(caps) {
|
|
|
546
746
|
return true;
|
|
547
747
|
},
|
|
548
748
|
addJob(job) {
|
|
749
|
+
rejectInvalidCron(job);
|
|
549
750
|
initJob(job);
|
|
550
751
|
// 非配置中定义的任务需要持久化
|
|
551
752
|
if (!configJobNames.has(job.name)) {
|
|
@@ -558,6 +759,7 @@ async function run(caps) {
|
|
|
558
759
|
if (configJobNames.has(job.name)) {
|
|
559
760
|
throw new Error(`任务 "${job.name}" 来自配置文件,无法通过 setJob 覆盖`);
|
|
560
761
|
}
|
|
762
|
+
rejectInvalidCron(job);
|
|
561
763
|
const existed = runtimes.get(job.name);
|
|
562
764
|
if (existed) {
|
|
563
765
|
if (existed.timer)
|
|
@@ -583,116 +785,20 @@ async function run(caps) {
|
|
|
583
785
|
dynamicJobs.delete(jobName);
|
|
584
786
|
saveDynamicJobs();
|
|
585
787
|
}
|
|
586
|
-
|
|
788
|
+
clearUnscheduled(jobName);
|
|
789
|
+
jobsPage.invalidate();
|
|
790
|
+
logger.use.info(`任务已删除: ${jobName}`);
|
|
587
791
|
return true;
|
|
588
792
|
},
|
|
589
793
|
};
|
|
590
|
-
provide(scheduler, service);
|
|
591
|
-
// ── WebUI 页面动作 ──
|
|
592
|
-
// 动作是本次激活的闭包,直接操作本插件自己的调度表;登记随激活撤回。
|
|
593
|
-
webui.registerAction('listJobs', async () => {
|
|
594
|
-
return service.getJobs().map(j => {
|
|
595
|
-
const ready = j.enabled && !j.paused && !j.running;
|
|
596
|
-
return {
|
|
597
|
-
...j,
|
|
598
|
-
nextRun: ready ? j.nextRun : 0,
|
|
599
|
-
schedule: j.cron ?? (j.interval ? `每 ${j.interval}s` : j.runAt ? `一次性@${j.runAt}` : '未设置'),
|
|
600
|
-
status: !j.enabled ? '❌ 禁用' : j.paused ? '⏸ 暂停' : j.running ? '⏳ 执行中' : '✅ 就绪',
|
|
601
|
-
lastRunText: j.lastRun ? new Date(j.lastRun).toLocaleString('zh-CN') : '从未',
|
|
602
|
-
};
|
|
603
|
-
});
|
|
604
|
-
});
|
|
605
|
-
webui.registerAction('triggerJob', async (args) => service.triggerJob(args.name));
|
|
606
|
-
// 三个开关类 action 返回 { ok, error }:裸 boolean 会被前端按成功处理(一次性任务不能暂停就是这样被静默掉的)
|
|
607
|
-
webui.registerAction('pauseJob', async (args) => service.pauseJob(args.name)
|
|
608
|
-
? { ok: true }
|
|
609
|
-
: { ok: false, error: '任务不存在,或是一次性任务(不能暂停,只能删除重建)' });
|
|
610
|
-
webui.registerAction('resumeJob', async (args) => service.resumeJob(args.name) ? { ok: true } : { ok: false, error: '任务不存在' });
|
|
611
|
-
webui.registerAction('removeJob', async (args) => service.removeJob(args.name) ? { ok: true } : { ok: false, error: '任务不存在' });
|
|
612
|
-
webui.registerAction('newJobDraft', async () => ({
|
|
613
|
-
name: '',
|
|
614
|
-
cron: '',
|
|
615
|
-
interval: 0,
|
|
616
|
-
runAt: '',
|
|
617
|
-
delaySeconds: 0,
|
|
618
|
-
sessionId: '',
|
|
619
|
-
platform: 'internal',
|
|
620
|
-
content: '',
|
|
621
|
-
enabled: true,
|
|
622
|
-
paused: false,
|
|
623
|
-
}));
|
|
624
|
-
webui.registerAction('upsertJob', async (args, caller) => {
|
|
625
|
-
const jobName = String(args.name ?? '').trim();
|
|
626
|
-
if (!jobName)
|
|
627
|
-
return { ok: false, error: '任务名称不能为空' };
|
|
628
|
-
const cron = String(args.cron ?? '').trim() || undefined;
|
|
629
|
-
const interval = Number(args.interval) > 0 ? Number(args.interval) : undefined;
|
|
630
|
-
const delaySeconds = Number(args.delaySeconds) > 0 ? Math.floor(Number(args.delaySeconds)) : undefined;
|
|
631
|
-
const rawRunAt = String(args.runAt ?? '').trim() || undefined;
|
|
632
|
-
// 调度方式恰好一个:四者同时也是四种互不相容的定时语义(周期 cron / 周期间隔 / 一次性),
|
|
633
|
-
// 多填时取哪个都是猜,一律报错要求填一个——与 scheduler_create_job 工具路径同一条判据。
|
|
634
|
-
const provided = [cron, interval, delaySeconds, rawRunAt].filter(v => v !== undefined).length;
|
|
635
|
-
if (provided === 0) {
|
|
636
|
-
return { ok: false, error: 'cron / interval / runAt / delaySeconds 必须填写其中之一' };
|
|
637
|
-
}
|
|
638
|
-
if (provided > 1) {
|
|
639
|
-
return { ok: false, error: 'cron / interval / runAt / delaySeconds 互斥,只能填一个' };
|
|
640
|
-
}
|
|
641
|
-
// delaySeconds → runAt:与 scheduler_create_job 工具路径同一份转换(到点执行一次后自动停止)
|
|
642
|
-
const runAt = delaySeconds !== undefined ? new Date(Date.now() + delaySeconds * 1000).toISOString() : rawRunAt;
|
|
643
|
-
// 「创建后立即暂停」只对周期任务有意义:一次性任务被暂停时到点的 setTimeout 直接跳过,
|
|
644
|
-
// 之后既不会重排也不会自删(disableOneShot 只在真执行后走),任务就永久卡死在那里。
|
|
645
|
-
if (args.paused === true && runAt) {
|
|
646
|
-
return { ok: false, error: '创建后立即暂停对一次性任务(runAt / delaySeconds)没有可用语义' };
|
|
647
|
-
}
|
|
648
|
-
// 防资源耗尽(scheduler 工具对聊天访客公开):interval 下限,挡住 interval:0.5 这类高频任务。
|
|
649
|
-
if (interval !== undefined && interval < 5) {
|
|
650
|
-
return { ok: false, error: 'interval 不能小于 5 秒(防高频任务耗尽资源)' };
|
|
651
|
-
}
|
|
652
|
-
const sessionId = String(args.sessionId ?? '').trim();
|
|
653
|
-
if (!sessionId)
|
|
654
|
-
return { ok: false, error: 'sessionId 不能为空' };
|
|
655
|
-
const content = String(args.content ?? '').trim();
|
|
656
|
-
if (!content)
|
|
657
|
-
return { ok: false, error: 'content 不能为空' };
|
|
658
|
-
// 防资源耗尽:单会话任务数上限;更新已有任务(同名)不计入,仅拦新建。
|
|
659
|
-
const MAX_JOBS_PER_SESSION = 20;
|
|
660
|
-
const allJobs = service.getJobs();
|
|
661
|
-
if (!allJobs.some(j => j.name === jobName) &&
|
|
662
|
-
allJobs.filter(j => j.sessionId === sessionId).length >= MAX_JOBS_PER_SESSION) {
|
|
663
|
-
return { ok: false, error: `本会话定时任务数已达上限 ${MAX_JOBS_PER_SESSION},请先删除部分任务再新建` };
|
|
664
|
-
}
|
|
665
|
-
try {
|
|
666
|
-
// actor 从权限闸放行后的 caller 快照(登录账户或单 token 模式的 webui:console),
|
|
667
|
-
// 不从 args 读取,避免 WebUI 调用方伪造他人身份。
|
|
668
|
-
const actor = caller ?? { platform: 'webui', userId: 'console' };
|
|
669
|
-
service.setJob({
|
|
670
|
-
name: jobName,
|
|
671
|
-
cron,
|
|
672
|
-
interval,
|
|
673
|
-
runAt,
|
|
674
|
-
sessionId,
|
|
675
|
-
platform: String(args.platform ?? 'internal'),
|
|
676
|
-
actorPlatform: actor.platform,
|
|
677
|
-
actorUserId: actor.userId,
|
|
678
|
-
content,
|
|
679
|
-
enabled: args.enabled !== false,
|
|
680
|
-
paused: args.paused === true,
|
|
681
|
-
});
|
|
682
|
-
const note = persistNote();
|
|
683
|
-
return note ? { ok: true, message: `已保存${note}` } : { ok: true };
|
|
684
|
-
}
|
|
685
|
-
catch (err) {
|
|
686
|
-
return { ok: false, error: err instanceof Error ? err.message : String(err) };
|
|
687
|
-
}
|
|
688
|
-
});
|
|
794
|
+
provide.use(scheduler, service);
|
|
689
795
|
// ── 注册 AI 工具:让 Agent 可以自主创建/管理任务 ──
|
|
690
|
-
tools.registerGroup({
|
|
796
|
+
tools.use.registerGroup({
|
|
691
797
|
name: 'scheduler',
|
|
692
798
|
label: '定时任务',
|
|
693
799
|
description: '创建、查看和取消定时/周期性自主行动计划',
|
|
694
800
|
});
|
|
695
|
-
tools.register({
|
|
801
|
+
tools.use.register({
|
|
696
802
|
groups: ['scheduler'],
|
|
697
803
|
definition: {
|
|
698
804
|
type: 'function',
|
|
@@ -763,7 +869,7 @@ async function run(caps) {
|
|
|
763
869
|
platform: args.platform || callCtx.platform || 'internal',
|
|
764
870
|
// 安全关键:actor 强制从 callCtx snapshot,不从 args 读取。
|
|
765
871
|
// 这样即使 LLM 在 prompt 中尝试伪造身份,也会被忽略——它只能以当前调用者的身份创建任务。
|
|
766
|
-
// 优先 callCtx.actor
|
|
872
|
+
// 优先 callCtx.actor(本回合本就在代人执行,如子任务链、workflow 或定时任务驱动的回合),否则用物理身份;
|
|
767
873
|
// 两者皆空则子任务匿名(defaultAuthority),实现权限的自然传递与不可提升。
|
|
768
874
|
actorPlatform: callCtx.actor?.platform ?? callCtx.platform,
|
|
769
875
|
actorUserId: callCtx.actor?.userId ?? callCtx.userId,
|
|
@@ -772,7 +878,12 @@ async function run(caps) {
|
|
|
772
878
|
};
|
|
773
879
|
if (runtimes.has(job.name))
|
|
774
880
|
return JSON.stringify({ error: `任务 "${job.name}" 已存在` });
|
|
775
|
-
|
|
881
|
+
try {
|
|
882
|
+
service.addJob(job);
|
|
883
|
+
}
|
|
884
|
+
catch (err) {
|
|
885
|
+
return JSON.stringify({ error: err instanceof Error ? err.message : String(err) });
|
|
886
|
+
}
|
|
776
887
|
const scheduleDesc = job.cron
|
|
777
888
|
? `cron="${job.cron}"`
|
|
778
889
|
: job.interval
|
|
@@ -786,7 +897,7 @@ async function run(caps) {
|
|
|
786
897
|
});
|
|
787
898
|
},
|
|
788
899
|
});
|
|
789
|
-
tools.register({
|
|
900
|
+
tools.use.register({
|
|
790
901
|
groups: ['scheduler'],
|
|
791
902
|
definition: {
|
|
792
903
|
type: 'function',
|
|
@@ -853,7 +964,7 @@ async function run(caps) {
|
|
|
853
964
|
});
|
|
854
965
|
},
|
|
855
966
|
});
|
|
856
|
-
tools.register({
|
|
967
|
+
tools.use.register({
|
|
857
968
|
groups: ['scheduler'],
|
|
858
969
|
definition: {
|
|
859
970
|
type: 'function',
|
|
@@ -877,7 +988,7 @@ async function run(caps) {
|
|
|
877
988
|
return JSON.stringify({ ok, message: ok ? '已删除' : '任务不存在' });
|
|
878
989
|
},
|
|
879
990
|
});
|
|
880
|
-
tools.register({
|
|
991
|
+
tools.use.register({
|
|
881
992
|
groups: ['scheduler'],
|
|
882
993
|
definition: {
|
|
883
994
|
type: 'function',
|
|
@@ -901,7 +1012,7 @@ async function run(caps) {
|
|
|
901
1012
|
return JSON.stringify({ ok, message: ok ? '已暂停' : '任务不存在,或是一次性任务(不能暂停,只能删除重建)' });
|
|
902
1013
|
},
|
|
903
1014
|
});
|
|
904
|
-
tools.register({
|
|
1015
|
+
tools.use.register({
|
|
905
1016
|
groups: ['scheduler'],
|
|
906
1017
|
definition: {
|
|
907
1018
|
type: 'function',
|
|
@@ -926,7 +1037,7 @@ async function run(caps) {
|
|
|
926
1037
|
},
|
|
927
1038
|
});
|
|
928
1039
|
// ── 清理 ──
|
|
929
|
-
lifecycle.onDispose(() => {
|
|
1040
|
+
lifecycle.use.onDispose(() => {
|
|
930
1041
|
for (const rt of runtimes.values()) {
|
|
931
1042
|
if (rt.timer)
|
|
932
1043
|
clearInterval(rt.timer);
|
|
@@ -935,44 +1046,26 @@ async function run(caps) {
|
|
|
935
1046
|
}
|
|
936
1047
|
runtimes.clear();
|
|
937
1048
|
});
|
|
938
|
-
logger.info(`计划任务调度器已启动 (${config.jobs.length} 个任务)`);
|
|
1049
|
+
logger.use.info(`计划任务调度器已启动 (${config.jobs.length} 个任务)`);
|
|
939
1050
|
}
|
|
940
1051
|
// ──────────── 辅助函数 ────────────
|
|
941
|
-
export function resolveConfig(
|
|
942
|
-
const rawJobs = Array.isArray(raw.jobs) ? raw.jobs : [];
|
|
943
|
-
/**
|
|
944
|
-
* 可选字符串字段的归一化:**不能只写 `as string | undefined`**。
|
|
945
|
-
* 这些值来自 YAML 反序列化,不受 TS 约束,而 `as` 不产生任何运行时转换 ——
|
|
946
|
-
* QQ 号天然写成不带引号的 `actorUserId: 10001`、时区写成 `timeZone: 8`,
|
|
947
|
-
* 拿到的都是 number,下游 `.trim()` 直接抛 "is not a function",
|
|
948
|
-
* 而那些 .trim() 在 apply() 顶层无 try,一抛整个 scheduler 服务就不注册。
|
|
949
|
-
*/
|
|
950
|
-
const str = (v) => (v === undefined || v === null ? undefined : String(v));
|
|
1052
|
+
export function resolveConfig(cfg) {
|
|
951
1053
|
return {
|
|
952
|
-
|
|
953
|
-
|
|
954
|
-
name:
|
|
955
|
-
|
|
956
|
-
interval: j.interval === undefined || j.interval === null ? undefined : Number(j.interval),
|
|
957
|
-
runAt: str(j.runAt),
|
|
958
|
-
sessionId: String(j.sessionId ?? `scheduler::${j.name ?? 'default'}`),
|
|
959
|
-
platform: String(j.platform ?? 'internal'),
|
|
960
|
-
actorPlatform: str(j.actorPlatform),
|
|
961
|
-
actorUserId: str(j.actorUserId),
|
|
962
|
-
timeZone: str(j.timeZone),
|
|
963
|
-
content: String(j.content ?? ''),
|
|
964
|
-
enabled: j.enabled !== false,
|
|
1054
|
+
jobs: cfg.jobs.map(j => ({
|
|
1055
|
+
...j,
|
|
1056
|
+
name: j.name ?? 'unnamed',
|
|
1057
|
+
sessionId: j.sessionId ?? `scheduler::${j.name ?? 'default'}`,
|
|
965
1058
|
})),
|
|
966
|
-
persistPath: resolvePersistPath(
|
|
1059
|
+
persistPath: resolvePersistPath(cfg.persistPath),
|
|
967
1060
|
};
|
|
968
1061
|
}
|
|
969
|
-
/** persistPath 只接受 storage URI
|
|
1062
|
+
/** persistPath 只接受 storage URI;留空用 schema 默认值,其它写法拒绝激活。 */
|
|
970
1063
|
function resolvePersistPath(input) {
|
|
971
|
-
const s =
|
|
1064
|
+
const s = input.trim();
|
|
972
1065
|
if (!s)
|
|
973
|
-
return
|
|
1066
|
+
return configSchema.persistPath.default;
|
|
974
1067
|
if (!isStorageUri(s)) {
|
|
975
|
-
throw
|
|
1068
|
+
throw configError(`persistPath="${s}" 不是 storage URI,请写成 <根名>:/<路径>(如 data:/scheduler-jobs.json),或删掉该键使用默认值`);
|
|
976
1069
|
}
|
|
977
1070
|
return s;
|
|
978
1071
|
}
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@aalis/plugin-scheduler",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.15.0",
|
|
4
4
|
"license": "MIT",
|
|
5
5
|
"repository": {
|
|
6
6
|
"type": "git",
|
|
@@ -24,21 +24,21 @@
|
|
|
24
24
|
"dist"
|
|
25
25
|
],
|
|
26
26
|
"dependencies": {
|
|
27
|
-
"@aalis/schema-config": ">=0.
|
|
28
|
-
"@aalis/api-cron-engine": ">=0.
|
|
29
|
-
"@aalis/api-storage": ">=0.
|
|
30
|
-
"@aalis/api-tools": ">=0.
|
|
31
|
-
"@aalis/api-webui": ">=0.
|
|
27
|
+
"@aalis/schema-config": ">=0.15.0 <1.0.0",
|
|
28
|
+
"@aalis/api-cron-engine": ">=0.8.0 <1.0.0",
|
|
29
|
+
"@aalis/api-storage": ">=0.8.0 <1.0.0",
|
|
30
|
+
"@aalis/api-tools": ">=0.11.0 <1.0.0",
|
|
31
|
+
"@aalis/api-webui": ">=0.12.0 <1.0.0",
|
|
32
32
|
"@aalis/util-cron": ">=0.1.3 <1.0.0"
|
|
33
33
|
},
|
|
34
34
|
"devDependencies": {
|
|
35
35
|
"@types/node": "^22.0.0",
|
|
36
36
|
"typescript": "^5.7.0",
|
|
37
|
-
"@aalis/core": "0.
|
|
38
|
-
"@aalis/schema-message": "0.
|
|
37
|
+
"@aalis/core": "0.20.0",
|
|
38
|
+
"@aalis/schema-message": "0.10.0"
|
|
39
39
|
},
|
|
40
40
|
"peerDependencies": {
|
|
41
|
-
"@aalis/core": ">=0.
|
|
41
|
+
"@aalis/core": ">=0.20.0 <1.0.0"
|
|
42
42
|
},
|
|
43
43
|
"aalis": {
|
|
44
44
|
"service": {
|