@jsbot-tellus/core 2.0.3 → 2.2.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.
Files changed (83) hide show
  1. package/README.md +23 -27
  2. package/dist/app.js +14 -40
  3. package/dist/app.js.map +1 -1
  4. package/dist/core/config/schema.d.ts +0 -2
  5. package/dist/core/config/schema.d.ts.map +1 -1
  6. package/dist/core/config/schema.js +0 -1
  7. package/dist/core/config/schema.js.map +1 -1
  8. package/dist/core/dispatch/command.d.ts +24 -2
  9. package/dist/core/dispatch/command.d.ts.map +1 -1
  10. package/dist/core/dispatch/command.js +297 -60
  11. package/dist/core/dispatch/command.js.map +1 -1
  12. package/dist/core/dispatch/router.d.ts +17 -3
  13. package/dist/core/dispatch/router.d.ts.map +1 -1
  14. package/dist/core/dispatch/router.js +38 -2
  15. package/dist/core/dispatch/router.js.map +1 -1
  16. package/dist/core/index.d.ts +2 -1
  17. package/dist/core/index.d.ts.map +1 -1
  18. package/dist/core/index.js.map +1 -1
  19. package/dist/core/kernel.d.ts.map +1 -1
  20. package/dist/core/kernel.js +5 -1
  21. package/dist/core/kernel.js.map +1 -1
  22. package/dist/core/plugin/command-params.d.ts +37 -0
  23. package/dist/core/plugin/command-params.d.ts.map +1 -0
  24. package/dist/core/plugin/command-params.js +427 -0
  25. package/dist/core/plugin/command-params.js.map +1 -0
  26. package/dist/core/plugin/context.d.ts.map +1 -1
  27. package/dist/core/plugin/context.js +27 -0
  28. package/dist/core/plugin/context.js.map +1 -1
  29. package/dist/core/plugin/install-dir.d.ts +6 -9
  30. package/dist/core/plugin/install-dir.d.ts.map +1 -1
  31. package/dist/core/plugin/install-dir.js +99 -79
  32. package/dist/core/plugin/install-dir.js.map +1 -1
  33. package/dist/core/plugin/install-validate.d.ts +2 -1
  34. package/dist/core/plugin/install-validate.d.ts.map +1 -1
  35. package/dist/core/plugin/install-validate.js +25 -17
  36. package/dist/core/plugin/install-validate.js.map +1 -1
  37. package/dist/core/plugin/installer.d.ts +3 -3
  38. package/dist/core/plugin/installer.d.ts.map +1 -1
  39. package/dist/core/plugin/installer.js +143 -140
  40. package/dist/core/plugin/installer.js.map +1 -1
  41. package/dist/core/plugin/loader.d.ts +13 -1
  42. package/dist/core/plugin/loader.d.ts.map +1 -1
  43. package/dist/core/plugin/loader.js +106 -2
  44. package/dist/core/plugin/loader.js.map +1 -1
  45. package/dist/core/plugin/types.d.ts +14 -5
  46. package/dist/core/plugin/types.d.ts.map +1 -1
  47. package/dist/core/plugin/types.js.map +1 -1
  48. package/dist/plugins/admin/index.d.ts.map +1 -1
  49. package/dist/plugins/admin/index.js +119 -86
  50. package/dist/plugins/admin/index.js.map +1 -1
  51. package/dist/plugins/core/index.d.ts.map +1 -1
  52. package/dist/plugins/core/index.js +5 -2
  53. package/dist/plugins/core/index.js.map +1 -1
  54. package/docs/architecture.md +22 -24
  55. package/docs/configuration.md +19 -23
  56. package/docs/feature-parity.md +4 -4
  57. package/docs/migration.md +13 -13
  58. package/docs/plugin-api.md +164 -27
  59. package/docs/plugin-development.md +400 -0
  60. package/docs/release.md +2 -2
  61. package/examples/plugins/hello/README.md +10 -5
  62. package/examples/plugins/hello/index.js +3 -6
  63. package/package.json +4 -1
  64. package/src/app.ts +18 -55
  65. package/src/core/config/schema.ts +0 -1
  66. package/src/core/dispatch/command.ts +478 -70
  67. package/src/core/dispatch/router.ts +77 -3
  68. package/src/core/index.ts +3 -0
  69. package/src/core/kernel.ts +8 -1
  70. package/src/core/plugin/command-params.ts +667 -0
  71. package/src/core/plugin/context.ts +51 -2
  72. package/src/core/plugin/install-dir.ts +117 -111
  73. package/src/core/plugin/install-validate.ts +36 -34
  74. package/src/core/plugin/installer.ts +228 -184
  75. package/src/core/plugin/loader.ts +180 -3
  76. package/src/core/plugin/types.ts +31 -5
  77. package/src/plugins/admin/index.ts +302 -233
  78. package/src/plugins/core/index.ts +6 -2
  79. package/dist/core/plugin/installed.d.ts +0 -9
  80. package/dist/core/plugin/installed.d.ts.map +0 -1
  81. package/dist/core/plugin/installed.js +0 -113
  82. package/dist/core/plugin/installed.js.map +0 -1
  83. package/src/core/plugin/installed.ts +0 -165
@@ -7,6 +7,7 @@ import type { SendOptions } from '../messaging/sender.js';
7
7
  import type { PluginKV } from '../plugin/kv.js';
8
8
  import type { Permission } from '../security/permission.js';
9
9
  import type { SessionStore } from '../storage/session.js';
10
+ import type { CommandParamArgs } from './command-params.js';
10
11
  export type EventType = 'message' | 'notice' | 'request' | 'meta';
11
12
  export interface CommandMatch {
12
13
  command: string;
@@ -19,6 +20,7 @@ export interface CommandInfo {
19
20
  aliases: string[];
20
21
  permission: Permission;
21
22
  description?: string | undefined;
23
+ usage?: string | undefined;
22
24
  pluginId: string;
23
25
  }
24
26
  export interface EventContext<TEvent extends SnowLumaEvent = SnowLumaEvent> {
@@ -29,17 +31,25 @@ export interface EventContext<TEvent extends SnowLumaEvent = SnowLumaEvent> {
29
31
  send(message: OutgoingMessage, options?: SendOptions): Promise<unknown>;
30
32
  stopPropagation(): void;
31
33
  }
32
- export type CommandHandler<TEvent extends OneBotMessageEvent = OneBotMessageEvent> = (event: TEvent, context: EventContext<TEvent>, match: CommandMatch) => void | Promise<void>;
34
+ export type CommandHandler<TEvent extends OneBotMessageEvent = OneBotMessageEvent, TArgs extends unknown[] = []> = (event: TEvent, context: EventContext<TEvent>, match: CommandMatch, ...args: TArgs) => void | Promise<void>;
33
35
  export type MessageHandler = (event: OneBotMessageEvent, context: EventContext<OneBotMessageEvent>) => void | Promise<void>;
34
36
  export type NoticeHandler = (event: OneBotNoticeEvent, context: EventContext<OneBotNoticeEvent>) => void | Promise<void>;
35
37
  export type RequestHandler = (event: OneBotRequestEvent, context: EventContext<OneBotRequestEvent>) => void | Promise<void>;
36
38
  export type PluginMiddleware = (event: SnowLumaEvent, context: EventContext, next: () => Promise<void>) => void | Promise<void>;
37
- export interface CommandOptions {
39
+ export interface CommandOptions<Declaration extends string = string> {
38
40
  name: string;
39
41
  aliases?: string[] | undefined;
40
42
  prefixes?: string[] | undefined;
41
43
  permission?: Permission | undefined;
42
44
  description?: string | undefined;
45
+ params?: Declaration | undefined;
46
+ }
47
+ export interface CommandGroupOptions<Declaration extends string = string> extends CommandOptions<Declaration> {
48
+ handler?: CommandHandler<OneBotMessageEvent, CommandParamArgs<Declaration>> | undefined;
49
+ }
50
+ export interface CommandGroupRegistrar {
51
+ register<Declaration extends string = string>(options: CommandOptions<Declaration>, handler: CommandHandler<OneBotMessageEvent, CommandParamArgs<Declaration>>): () => void;
52
+ group<Declaration extends string = string>(options: CommandGroupOptions<Declaration>, setup: (group: CommandGroupRegistrar) => void): () => void;
43
53
  }
44
54
  export interface NoticeOptions {
45
55
  noticeType?: string | undefined;
@@ -53,8 +63,7 @@ export interface MiddlewareOptions {
53
63
  eventTypes?: EventType[] | undefined;
54
64
  priority?: number | undefined;
55
65
  }
56
- export interface CommandRegistrar {
57
- register(options: CommandOptions, handler: CommandHandler): () => void;
66
+ export interface CommandRegistrar extends CommandGroupRegistrar {
58
67
  list(): ReadonlyArray<CommandInfo>;
59
68
  }
60
69
  export interface EventRegistrar {
@@ -114,7 +123,7 @@ export interface CoreServices {
114
123
  can(actual: Permission, required: Permission): boolean;
115
124
  };
116
125
  commands: {
117
- list(): ReadonlyArray<CommandInfo>;
126
+ list(event?: SnowLumaEvent): ReadonlyArray<CommandInfo>;
118
127
  };
119
128
  plugins: PluginStatus;
120
129
  installer: PluginInstaller;
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/core/plugin/types.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/core/plugin/types.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"types.js","sourceRoot":"","sources":["../../../src/core/plugin/types.ts"],"names":[],"mappings":"AA+MA,MAAM,UAAU,YAAY,CACxB,UAA6C;IAE7C,OAAO,UAAU,CAAA;AACrB,CAAC"}
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../../../src/core/plugin/types.ts"],"names":[],"mappings":"AAyOA,MAAM,UAAU,YAAY,CACxB,UAA6C;IAE7C,OAAO,UAAU,CAAA;AACrB,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/plugins/admin/index.ts"],"names":[],"mappings":"AAiBA,eAAO,MAAM,WAAW,6EA4StB,CAAA"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/plugins/admin/index.ts"],"names":[],"mappings":"AAmBA,eAAO,MAAM,WAAW,6EA+WtB,CAAA"}
@@ -1,5 +1,6 @@
1
1
  import { z } from 'zod';
2
2
  import { definePlugin } from '../../core/index.js';
3
+ const INSTALLER_DISABLED = '插件安装功能未启用(installer.enabled=false)。';
3
4
  const PLUGIN_USAGE = `用法:
4
5
  /plugin install <npm包[@版本|tag]>
5
6
  /plugin list
@@ -21,50 +22,49 @@ export const adminPlugin = definePlugin({
21
22
  configSchema: z.object({}).strict(),
22
23
  },
23
24
  setup(ctx) {
24
- ctx.commands.register({
25
+ ctx.commands.group({
25
26
  name: 'utter',
26
27
  permission: 'Admin',
27
28
  description: '向当前会话发送文本',
28
- }, async (_event, context, match) => {
29
- if (!match.rest) {
30
- await context.send('用法:/utter <文本>');
31
- return;
32
- }
33
- await context.send(match.rest, {
34
- quote: false,
35
- autoEscape: true,
36
- });
37
- });
38
- ctx.commands.register({
39
- name: 'utter.raw',
40
- permission: 'SuperAdmin',
41
- description: '发送原始 CQ 消息',
42
- }, async (_event, context, match) => {
43
- if (!match.rest) {
44
- await context.send('用法:/utter.raw <CQ 消息>');
45
- return;
46
- }
47
- await context.send(match.rest, {
48
- quote: false,
49
- autoEscape: false,
29
+ handler: async (_event, context, match) => {
30
+ if (!match.rest) {
31
+ await context.send('用法:/utter <文本>');
32
+ return;
33
+ }
34
+ await context.send(match.rest, {
35
+ quote: false,
36
+ autoEscape: true,
37
+ });
38
+ },
39
+ }, (utter) => {
40
+ utter.register({
41
+ name: 'raw',
42
+ permission: 'SuperAdmin',
43
+ description: '发送原始 CQ 消息',
44
+ }, async (_event, context, match) => {
45
+ if (!match.rest) {
46
+ await context.send('用法:/utter raw <CQ 消息>');
47
+ return;
48
+ }
49
+ await context.send(match.rest, {
50
+ quote: false,
51
+ autoEscape: false,
52
+ });
50
53
  });
51
54
  });
52
- ctx.commands.register({
55
+ ctx.commands.group({
53
56
  name: 'plugin',
54
57
  permission: 'SuperAdmin',
55
58
  description: '管理已安装的插件包',
56
- }, async (_event, context, match) => {
57
- const sub = (match.args[0] ?? '').toLowerCase();
58
- const argument = match.rest
59
- .slice(match.args[0]?.length ?? 0)
60
- .trim();
61
- const installer = ctx.core.installer;
62
- const sessionId = context.sessionId;
63
- if (sub.length === 0 || sub === 'help') {
59
+ handler: async (_event, context) => {
64
60
  await context.send(PLUGIN_USAGE, { quote: false });
65
- return;
66
- }
67
- if (sub === 'list') {
61
+ },
62
+ }, (plugin) => {
63
+ plugin.register({
64
+ name: 'list',
65
+ description: '列出已安装的插件包',
66
+ }, async (_event, context) => {
67
+ const installer = ctx.core.installer;
68
68
  try {
69
69
  const packages = await installer.list();
70
70
  if (packages.length === 0) {
@@ -74,7 +74,9 @@ export const adminPlugin = definePlugin({
74
74
  return;
75
75
  }
76
76
  const lines = packages.map((item) => {
77
- const status = item.loaded ? '已加载' : '重启后生效';
77
+ const status = item.loaded
78
+ ? '已加载'
79
+ : '重启后生效';
78
80
  return `- ${item.packageName}@${item.version} → ${formatIds(item.pluginIds)}(${status})`;
79
81
  });
80
82
  await context.send([
@@ -85,17 +87,20 @@ export const adminPlugin = definePlugin({
85
87
  catch (error) {
86
88
  await context.send(`❌ 读取插件包失败:${errorMessage(error)}`, { quote: false });
87
89
  }
88
- return;
89
- }
90
- if (sub !== 'install' && sub !== 'remove' && sub !== 'update') {
91
- await context.send(PLUGIN_USAGE, { quote: false });
92
- return;
93
- }
94
- if (!installer.enabled) {
95
- await context.send('插件安装功能未启用(installer.enabled=false)。', { quote: false });
96
- return;
97
- }
98
- if (sub === 'install') {
90
+ });
91
+ plugin.register({
92
+ name: 'install',
93
+ description: '安装 npm 插件包',
94
+ }, async (_event, context, match) => {
95
+ const installer = ctx.core.installer;
96
+ const sessionId = context.sessionId;
97
+ if (!installer.enabled) {
98
+ await context.send(INSTALLER_DISABLED, {
99
+ quote: false,
100
+ });
101
+ return;
102
+ }
103
+ const argument = match.rest.trim();
99
104
  if (argument.length === 0) {
100
105
  await context.send('用法:/plugin install <npm包[@版本|tag]>', { quote: false });
101
106
  return;
@@ -126,9 +131,20 @@ export const adminPlugin = definePlugin({
126
131
  await ctx.api.send(sessionId, `❌ 安装失败:${errorMessage(error)}`, { quote: false });
127
132
  }
128
133
  });
129
- return;
130
- }
131
- if (sub === 'remove') {
134
+ });
135
+ plugin.register({
136
+ name: 'remove',
137
+ description: '卸载插件包',
138
+ }, async (_event, context, match) => {
139
+ const installer = ctx.core.installer;
140
+ const sessionId = context.sessionId;
141
+ if (!installer.enabled) {
142
+ await context.send(INSTALLER_DISABLED, {
143
+ quote: false,
144
+ });
145
+ return;
146
+ }
147
+ const argument = match.rest.trim();
132
148
  if (argument.length === 0) {
133
149
  await context.send('用法:/plugin remove <包名|插件id> [--force]', { quote: false });
134
150
  return;
@@ -147,7 +163,9 @@ export const adminPlugin = definePlugin({
147
163
  ctx.tasks.enqueue('plugin-installer', async (signal) => {
148
164
  try {
149
165
  const result = await installer.remove(target, signal, { force });
150
- const lines = [`✅ 已卸载 ${result.packageName}。`];
166
+ const lines = [
167
+ `✅ 已卸载 ${result.packageName}。`,
168
+ ];
151
169
  if (result.pluginIds.length > 0) {
152
170
  lines.push(`插件 id: ${formatIds(result.pluginIds)}`);
153
171
  }
@@ -171,44 +189,59 @@ export const adminPlugin = definePlugin({
171
189
  await ctx.api.send(sessionId, `❌ 卸载失败:${errorMessage(error)}`, { quote: false });
172
190
  }
173
191
  });
174
- return;
175
- }
176
- await context.send(argument.length > 0
177
- ? `正在更新 ${argument} ...`
178
- : '正在更新全部插件包 ...', { quote: false });
179
- ctx.tasks.enqueue('plugin-installer', async (signal) => {
180
- try {
181
- const result = await installer.update(argument.length > 0 ? argument : undefined, signal);
182
- const lines = [];
183
- const warnings = result.updated.flatMap((item) => item.warnings);
184
- for (const item of result.updated) {
185
- lines.push(`✅ ${item.packageName}@${item.version}(插件 id: ${formatIds(item.pluginIds)})`);
186
- }
187
- for (const item of result.failed) {
188
- lines.push(`❌ ${item.packageName}:${item.message}`);
189
- }
190
- for (const warning of warnings) {
191
- lines.push(`⚠️ ${warning}`);
192
- }
193
- if (lines.length === 0) {
194
- lines.push('没有可更新的插件包。');
195
- }
196
- if (result.updated.length > 0) {
197
- lines.push(warnings.length === 0
198
- ? '正在重启。'
199
- : '请处理以上问题后手动重启。');
200
- }
201
- await ctx.api.send(sessionId, lines.join('\n'), {
192
+ });
193
+ plugin.register({
194
+ name: 'update',
195
+ description: '更新插件包',
196
+ }, async (_event, context, match) => {
197
+ const installer = ctx.core.installer;
198
+ const sessionId = context.sessionId;
199
+ if (!installer.enabled) {
200
+ await context.send(INSTALLER_DISABLED, {
202
201
  quote: false,
203
202
  });
204
- if (result.updated.length > 0 &&
205
- warnings.length === 0) {
206
- ctx.core.restart();
207
- }
208
- }
209
- catch (error) {
210
- await ctx.api.send(sessionId, `❌ 更新失败:${errorMessage(error)}`, { quote: false });
203
+ return;
211
204
  }
205
+ const argument = match.rest.trim();
206
+ await context.send(argument.length > 0
207
+ ? `正在更新 ${argument} ...`
208
+ : '正在更新全部插件包 ...', { quote: false });
209
+ ctx.tasks.enqueue('plugin-installer', async (signal) => {
210
+ try {
211
+ const result = await installer.update(argument.length > 0
212
+ ? argument
213
+ : undefined, signal);
214
+ const lines = [];
215
+ const warnings = result.updated.flatMap((item) => item.warnings);
216
+ for (const item of result.updated) {
217
+ lines.push(`✅ ${item.packageName}@${item.version}(插件 id: ${formatIds(item.pluginIds)})`);
218
+ }
219
+ for (const item of result.failed) {
220
+ lines.push(`❌ ${item.packageName}:${item.message}`);
221
+ }
222
+ for (const warning of warnings) {
223
+ lines.push(`⚠️ ${warning}`);
224
+ }
225
+ if (lines.length === 0) {
226
+ lines.push('没有可更新的插件包。');
227
+ }
228
+ if (result.updated.length > 0) {
229
+ lines.push(warnings.length === 0
230
+ ? '正在重启。'
231
+ : '请处理以上问题后手动重启。');
232
+ }
233
+ await ctx.api.send(sessionId, lines.join('\n'), {
234
+ quote: false,
235
+ });
236
+ if (result.updated.length > 0 &&
237
+ warnings.length === 0) {
238
+ ctx.core.restart();
239
+ }
240
+ }
241
+ catch (error) {
242
+ await ctx.api.send(sessionId, `❌ 更新失败:${errorMessage(error)}`, { quote: false });
243
+ }
244
+ });
212
245
  });
213
246
  });
214
247
  },
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/plugins/admin/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/plugins/admin/index.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/plugins/core/index.ts"],"names":[],"mappings":"AAoBA,eAAO,MAAM,UAAU,6EAqFrB,CAAA"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/plugins/core/index.ts"],"names":[],"mappings":"AAoBA,eAAO,MAAM,UAAU,6EAyFrB,CAAA"}
@@ -31,9 +31,12 @@ export const corePlugin = definePlugin({
31
31
  }, async (event, context) => {
32
32
  const role = ctx.core.roles.roleOf(event.user_id);
33
33
  const commands = ctx.core.commands
34
- .list()
34
+ .list(event)
35
35
  .filter((command) => ctx.core.roles.can(role, command.permission))
36
36
  .map((command) => {
37
+ const usage = command.usage !== undefined
38
+ ? ` ${command.usage}`
39
+ : '';
37
40
  const aliases = command.aliases.length > 0
38
41
  ? ` (${command.aliases
39
42
  .map((alias) => `/${alias}`)
@@ -42,7 +45,7 @@ export const corePlugin = definePlugin({
42
45
  const description = command.description
43
46
  ? ` - ${command.description}`
44
47
  : '';
45
- return `/${command.name}${aliases}${description}`;
48
+ return `/${command.name}${usage}${aliases}${description}`;
46
49
  });
47
50
  await context.send(`可用命令:\n${commands.join('\n')}`);
48
51
  });
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/plugins/core/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/plugins/core/index.ts"],"names":[],"mappings":"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"}
@@ -4,7 +4,7 @@
4
4
 
5
5
  ```text
6
6
  src/plugins/* -> src/core/index.ts 的公共 API(内置插件)
7
- 外部插件包 -> @jsbot-tellus/core 的公共 API
7
+ 本地/npm 插件包 -> @jsbot-tellus/core 的公共 API
8
8
  src/core/* -> SDK adapter、Node 内置模块、SQLite
9
9
  src/core/* -X-> src/plugins/*
10
10
  ```
@@ -16,8 +16,8 @@ src/core/* -X-> src/plugins/*
16
16
  - 插件只能通过 `PluginContext`、`EventContext` 和 `BotApi` 使用能力。
17
17
  - `core` 不 import 任何插件;`core`、`admin` 在 `src/plugins/index.ts` 显式注册。
18
18
  - 内置插件是普通源码,随内核一起编译;没有独立依赖,不单独建包。
19
- - 外部插件由 `src/app.ts` 在启动前扫描并追加到内置插件之后。
20
- - 本地插件放在不跟踪的 `plugins/`,每个插件是独立包,通过 `--plugin-dir` 加载。
19
+ - 本地插件由 `src/app.ts` 在启动前扫描 `plugins/<id>/dist` 并追加到内置插件之后;缺少 `dist` 时加载器会尝试执行插件的 `build` 脚本。
20
+ - 本地插件放在不跟踪的 `plugins/`,每个插件是独立包,构建后自动加载。
21
21
 
22
22
  ## 运行时主链路
23
23
 
@@ -25,7 +25,7 @@ src/core/* -X-> src/plugins/*
25
25
  SDK WebSocket
26
26
  -> client.use(router.dispatch)
27
27
  -> Router 中间件(按 priority 降序,逐插件 gating)
28
- -> CommandRegistry.match
28
+ -> CommandRegistry.match(前缀最长优先,完整路径最长优先)
29
29
  -> 命中命令:stopPropagation
30
30
  -> 插件启用 / 群组 / 私聊 gating
31
31
  -> 权限检查
@@ -48,7 +48,7 @@ src/
48
48
  config/ 配置 schema 和加载
49
49
  dispatch/
50
50
  router.ts 唯一 SDK middleware
51
- command.ts 命令索引和冲突检测
51
+ command.ts 命令索引、组注册、多级匹配和冲突检测
52
52
  handler.ts 事件 handler 注册表
53
53
  middleware.ts 插件中间件注册表
54
54
  task-queue.ts 按 key 串行任务队列
@@ -58,14 +58,14 @@ src/
58
58
  host.ts 插件排序、配置校验、setup/start/stop
59
59
  gating.ts enabled/private/groups
60
60
  kv.ts SQLite KV
61
- loader.ts 外部插件目录加载
61
+ loader.ts 本地插件目录加载(缺 dist 时自动构建)
62
62
  security/ 角色、权限、拒绝提示
63
63
  messaging/ reply/forward 发送和回复分段
64
64
  storage/ SQLite 和 Session
65
65
  lifecycle/ 启动/停止状态机
66
66
  plugins/
67
67
  core/index.ts /help、/status、/role
68
- admin/index.ts /utter、/utter.raw
68
+ admin/index.ts /utter、/utter raw
69
69
  index.ts 内置插件清单
70
70
  plugins/ 本地插件根目录,整个目录不跟踪
71
71
  poke/
@@ -75,7 +75,7 @@ plugins/ 本地插件根目录,整个目录不跟踪
75
75
  ## 启动顺序
76
76
 
77
77
  ```text
78
- 加载配置和外部插件
78
+ 加载配置和本地插件
79
79
  -> 打开数据库
80
80
  -> 创建 Kernel
81
81
  -> 创建 Router、PluginGate、SessionStore、TaskQueue、BotApi
@@ -128,24 +128,21 @@ npm run smoke # node dist/app.js --help
128
128
  npm install --prefix plugins/poke
129
129
  npm install --prefix plugins/llm
130
130
  npm run build:local
131
- node dist/app.js \
132
- --plugin-dir plugins/poke/dist \
133
- --plugin-dir plugins/llm/dist
131
+ node dist/app.js
134
132
  ```
135
133
 
136
- `--plugin-dir` 可以重复。应用会跳过与内置插件同 ID 的外部插件,避免重复注册。
134
+ 应用会固定扫描 `plugins/<id>/dist`,并跳过与内置插件同 ID 的本地插件,避免重复注册。没有 `dist` 的本地插件如果带有 `build` 脚本且依赖已安装,会先自动构建再加载;没有 `build` 脚本、缺少 `node_modules` 或构建失败时会记录警告并跳过。
137
135
 
138
136
  ## 在线安装插件
139
137
 
140
- `admin` 插件注册 `/plugin` 命令,通过 `ctx.core.installer` 调用 `NpmPluginInstaller`。安装器位于 `src/core/plugin/`:
138
+ `admin` 插件注册 `/plugin` 指令组,通过 `ctx.core.installer` 调用 `NpmPluginInstaller`。安装器位于 `src/core/plugin/`:
141
139
 
142
140
  ```text
143
141
  spec.ts 解析并校验 npm 包名 / 精确版本 / dist-tag
144
142
  npm-runner.ts execFile 调用 npm,支持超时和取消
145
- install-dir.ts <data-dir>/plugins 的 manifest、状态文件和 @jsbot-tellus/core 链接
146
- install-validate.ts 在子进程中 import 包,确认它导出插件定义
147
- installer.ts 安装 / 列表 / 卸载 / 更新、串行化、备份与回滚
148
- installed.ts 启动时从安装目录加载已安装包
143
+ install-dir.ts plugins/ 的安装状态、校验脚本和 @jsbot-tellus/core 链接
144
+ install-validate.ts 在子进程中扫描插件 dist,确认它导出插件定义
145
+ installer.ts 安装 / 列表 / 卸载 / 更新、串行化、目录替换与回滚
149
146
  ```
150
147
 
151
148
  安装流程:
@@ -153,17 +150,18 @@ installed.ts 启动时从安装目录加载已安装包
153
150
  ```text
154
151
  /plugin install <spec>
155
152
  -> 校验 npm registry 来源和允许列表
156
- -> npm install <spec> --save-exact [--ignore-scripts]
157
- -> 重建 node_modules/@jsbot-tellus/core 链接
158
- -> 子进程 import 包,收集 manifest.id / version / dependencies
153
+ -> 在 plugins/.staging-<uuid> 中 npm install <spec> --save-exact [--ignore-scripts]
154
+ -> 把包内容移到插件目录根,依赖留在 <插件目录>/node_modules
155
+ -> 创建 <插件目录>/node_modules/@jsbot-tellus/core 链接
156
+ -> 子进程扫描 dist,收集 manifest.id / version / dependencies
159
157
  -> 检查 id 冲突和完整依赖图(缺失、自依赖、循环)
160
- -> 原子写入 .jsbot-installed.json
161
- -> 自动重建运行时,由 installed.ts 重新加载
158
+ -> 原子替换 plugins/<插件id>,写入 plugins/.jsbot-installed.json
159
+ -> 自动重建运行时,由同一个本地插件加载器重新加载
162
160
  ```
163
161
 
164
- npm 或校验失败时,安装器恢复安装前的 `package.json` / `package-lock.json` / `.jsbot-installed.json`,并运行 `npm ci`(没有旧 lockfile 时运行 `npm install`)恢复 `node_modules`。所有安装操作通过内部队列串行执行。状态文件损坏时安装器会明确报错,不会用空状态覆盖其它包记录。
162
+ 安装或校验失败时目标目录不会被替换;更新会先用暂存目录完成下载和校验,再替换旧目录。所有安装操作通过内部队列串行执行。状态文件损坏时安装器会明确报错,不会用空状态覆盖其它包记录。
165
163
 
166
- 加载顺序是内置插件 → `--plugin-dir` 外部插件 → `<data-dir>/plugins` 已安装插件。重复 ID 保留先加载的插件并记录警告。安装器不直接修改运行中的插件状态;操作成功后由应用重建运行时并重新加载。卸载时如果检测到配置残留,会跳过自动重启并提示手动处理;如果其它已安装包依赖被卸载的插件,默认拒绝卸载,`--force` 可强制继续。安装器默认关闭,安装的插件是完全可信的宿主进程代码。
164
+ 启动时加载顺序是内置插件 → `plugins/` 中的全部目录(本地插件和在线安装的插件没有区别)。重复 ID 保留先加载的插件并记录警告。安装器不直接修改运行中的插件状态;操作成功后由应用重建运行时并重新加载。卸载时如果检测到配置残留,会跳过自动重启并提示手动处理;如果其它已安装包依赖被卸载的插件,默认拒绝卸载,`--force` 可强制继续。安装器默认关闭,安装的插件是完全可信的宿主进程代码。
167
165
 
168
166
  ## 测试边界
169
167