@jsbot-tellus/core 2.6.0 → 2.7.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/README.md +16 -4
- package/dist/core/dispatch/command.d.ts +5 -2
- package/dist/core/dispatch/command.d.ts.map +1 -1
- package/dist/core/dispatch/command.js +33 -7
- package/dist/core/dispatch/command.js.map +1 -1
- package/dist/core/dispatch/handler.d.ts +5 -3
- package/dist/core/dispatch/handler.d.ts.map +1 -1
- package/dist/core/dispatch/handler.js +6 -1
- package/dist/core/dispatch/handler.js.map +1 -1
- package/dist/core/dispatch/router.d.ts +4 -2
- package/dist/core/dispatch/router.d.ts.map +1 -1
- package/dist/core/dispatch/router.js +9 -5
- package/dist/core/dispatch/router.js.map +1 -1
- package/dist/core/index.d.ts +1 -1
- package/dist/core/index.d.ts.map +1 -1
- package/dist/core/kernel.d.ts +1 -1
- package/dist/core/kernel.d.ts.map +1 -1
- package/dist/core/kernel.js +4 -1
- package/dist/core/kernel.js.map +1 -1
- package/dist/core/plugin/context.d.ts.map +1 -1
- package/dist/core/plugin/context.js +12 -0
- package/dist/core/plugin/context.js.map +1 -1
- package/dist/core/plugin/loader.d.ts +1 -1
- package/dist/core/plugin/loader.d.ts.map +1 -1
- package/dist/core/plugin/loader.js +31 -46
- package/dist/core/plugin/loader.js.map +1 -1
- package/dist/core/plugin/types.d.ts +9 -1
- package/dist/core/plugin/types.d.ts.map +1 -1
- package/dist/core/plugin/types.js.map +1 -1
- package/docs/architecture.md +3 -3
- package/docs/configuration.md +3 -3
- package/docs/docker.md +166 -0
- package/docs/feature-parity.md +2 -2
- package/docs/migration.md +1 -1
- package/docs/plugin-api.md +20 -5
- package/docs/plugin-development.md +30 -27
- package/docs/release.md +50 -8
- package/package.json +2 -2
- package/src/core/dispatch/command.ts +53 -1
- package/src/core/dispatch/handler.ts +19 -1
- package/src/core/dispatch/router.ts +20 -3
- package/src/core/index.ts +4 -0
- package/src/core/kernel.ts +8 -1
- package/src/core/plugin/context.ts +21 -0
- package/src/core/plugin/loader.ts +41 -66
- package/src/core/plugin/types.ts +20 -0
package/dist/core/kernel.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"kernel.js","sourceRoot":"","sources":["../../src/core/kernel.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"kernel.js","sourceRoot":"","sources":["../../src/core/kernel.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"context.d.ts","sourceRoot":"","sources":["../../../src/core/plugin/context.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,WAAW,CAAA;AACvC,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,uBAAuB,CAAA;AACnD,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,2BAA2B,CAAA;AAC1D,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,sBAAsB,CAAA;AAClD,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,uBAAuB,CAAA;AAEzD,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,SAAS,CAAA;AACvC,OAAO,KAAK,EAKR,YAAY,
|
|
1
|
+
{"version":3,"file":"context.d.ts","sourceRoot":"","sources":["../../../src/core/plugin/context.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,WAAW,CAAA;AACvC,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,uBAAuB,CAAA;AACnD,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,2BAA2B,CAAA;AAC1D,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,sBAAsB,CAAA;AAClD,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,uBAAuB,CAAA;AAEzD,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,SAAS,CAAA;AACvC,OAAO,KAAK,EAKR,YAAY,EAEZ,aAAa,EACb,gBAAgB,EACnB,MAAM,YAAY,CAAA;AAEnB,MAAM,WAAW,iBAAiB;IAC9B,MAAM,EAAE,OAAO,CAAA;IACf,MAAM,EAAE,MAAM,CAAA;IACd,MAAM,EAAE,MAAM,CAAA;IACd,IAAI,EAAE,YAAY,CAAA;IAClB,EAAE,EAAE,QAAQ,CAAA;IACZ,QAAQ,EAAE,YAAY,CAAA;IACtB,KAAK,EAAE,SAAS,CAAA;IAChB,GAAG,EAAE,MAAM,CAAA;CACd;AAED,wBAAgB,mBAAmB,CAAC,OAAO,EACvC,UAAU,EAAE,gBAAgB,CAAC,OAAO,EAAE,OAAO,CAAC,EAC9C,IAAI,EAAE,iBAAiB,GACxB,aAAa,CAAC,OAAO,CAAC,CA8IxB"}
|
|
@@ -23,6 +23,9 @@ export function createPluginContext(definition, deps) {
|
|
|
23
23
|
...(options.permission !== undefined
|
|
24
24
|
? { permission: options.permission }
|
|
25
25
|
: {}),
|
|
26
|
+
...(options.messageType !== undefined
|
|
27
|
+
? { messageType: options.messageType }
|
|
28
|
+
: {}),
|
|
26
29
|
...(options.description !== undefined
|
|
27
30
|
? { description: options.description }
|
|
28
31
|
: {}),
|
|
@@ -45,6 +48,9 @@ export function createPluginContext(definition, deps) {
|
|
|
45
48
|
...(options.permission !== undefined
|
|
46
49
|
? { permission: options.permission }
|
|
47
50
|
: {}),
|
|
51
|
+
...(options.messageType !== undefined
|
|
52
|
+
? { messageType: options.messageType }
|
|
53
|
+
: {}),
|
|
48
54
|
...(options.description !== undefined
|
|
49
55
|
? { description: options.description }
|
|
50
56
|
: {}),
|
|
@@ -64,6 +70,12 @@ export function createPluginContext(definition, deps) {
|
|
|
64
70
|
onMessage(handler) {
|
|
65
71
|
return deps.router.registerMessage(id, handler);
|
|
66
72
|
},
|
|
73
|
+
onGroupMessage(handler) {
|
|
74
|
+
return deps.router.registerMessage(id, handler, 'group');
|
|
75
|
+
},
|
|
76
|
+
onPrivateMessage(handler) {
|
|
77
|
+
return deps.router.registerMessage(id, handler, 'private');
|
|
78
|
+
},
|
|
67
79
|
onNotice(options, handler) {
|
|
68
80
|
return deps.router.registerNotice({
|
|
69
81
|
pluginId: id,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"context.js","sourceRoot":"","sources":["../../../src/core/plugin/context.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"context.js","sourceRoot":"","sources":["../../../src/core/plugin/context.ts"],"names":[],"mappings":"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"}
|
|
@@ -5,7 +5,7 @@ type LoaderLogger = Pick<Logger, 'warn' | 'error'> & {
|
|
|
5
5
|
info?: Logger['info'] | undefined;
|
|
6
6
|
};
|
|
7
7
|
export interface LocalPluginLoaderOptions {
|
|
8
|
-
/**
|
|
8
|
+
/** Rebuild local plugins that have a build script on every load. Defaults to true. */
|
|
9
9
|
autoBuild?: boolean | undefined;
|
|
10
10
|
/** Timeout for a single local plugin build. Defaults to 120 seconds. */
|
|
11
11
|
buildTimeoutMs?: number | undefined;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"loader.d.ts","sourceRoot":"","sources":["../../../src/core/plugin/loader.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,sBAAsB,CAAA;AAGlD,OAAO,EAAgB,KAAK,SAAS,EAAE,MAAM,iBAAiB,CAAA;AAC9D,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,YAAY,CAAA;AAErD,KAAK,YAAY,GAAG,IAAI,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,GAAG;IACjD,IAAI,CAAC,EAAE,MAAM,CAAC,MAAM,CAAC,GAAG,SAAS,CAAA;CACpC,CAAA;AAED,MAAM,WAAW,wBAAwB;IACrC,
|
|
1
|
+
{"version":3,"file":"loader.d.ts","sourceRoot":"","sources":["../../../src/core/plugin/loader.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,sBAAsB,CAAA;AAGlD,OAAO,EAAgB,KAAK,SAAS,EAAE,MAAM,iBAAiB,CAAA;AAC9D,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,YAAY,CAAA;AAErD,KAAK,YAAY,GAAG,IAAI,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,GAAG;IACjD,IAAI,CAAC,EAAE,MAAM,CAAC,MAAM,CAAC,GAAG,SAAS,CAAA;CACpC,CAAA;AAED,MAAM,WAAW,wBAAwB;IACrC,sFAAsF;IACtF,SAAS,CAAC,EAAE,OAAO,GAAG,SAAS,CAAA;IAC/B,wEAAwE;IACxE,cAAc,CAAC,EAAE,MAAM,GAAG,SAAS,CAAA;IACnC,6CAA6C;IAC7C,MAAM,CAAC,EAAE,SAAS,GAAG,SAAS,CAAA;CACjC;AA+DD,wBAAsB,wBAAwB,CAC1C,SAAS,EAAE,MAAM,EACjB,MAAM,CAAC,EAAE,YAAY,GAAG,SAAS,GAClC,OAAO,CAAC,mBAAmB,EAAE,CAAC,CAuDhC;AAED,wBAAsB,gBAAgB,CAClC,IAAI,EAAE,MAAM,EACZ,MAAM,CAAC,EAAE,YAAY,GAAG,SAAS,EACjC,OAAO,GAAE,wBAA6B,GACvC,OAAO,CAAC,mBAAmB,EAAE,CAAC,CAiEhC"}
|
|
@@ -3,7 +3,7 @@ import { join, resolve } from 'node:path';
|
|
|
3
3
|
import { pathToFileURL } from 'node:url';
|
|
4
4
|
import fg from 'fast-glob';
|
|
5
5
|
import { collectPluginExports } from './exports.js';
|
|
6
|
-
import {
|
|
6
|
+
import { readJsonFile } from './install-dir.js';
|
|
7
7
|
import { NpmCliRunner } from './npm-runner.js';
|
|
8
8
|
const DEFAULT_BUILD_TIMEOUT_MS = 120_000;
|
|
9
9
|
function isRecord(value) {
|
|
@@ -23,25 +23,12 @@ async function readBuildScript(directory) {
|
|
|
23
23
|
? build
|
|
24
24
|
: undefined;
|
|
25
25
|
}
|
|
26
|
-
async function readManagedDirectories(root) {
|
|
27
|
-
try {
|
|
28
|
-
const state = await readInstallState(root);
|
|
29
|
-
return new Set(Object.values(state.packages).map((record) => record.dir));
|
|
30
|
-
}
|
|
31
|
-
catch {
|
|
32
|
-
return null;
|
|
33
|
-
}
|
|
34
|
-
}
|
|
35
26
|
async function buildLocalPlugin(directory, name, logger, runner, timeoutMs) {
|
|
36
|
-
if ((await readBuildScript(directory)) === undefined) {
|
|
37
|
-
logger?.warn(`skipping local plugin ${name}: dist directory not found and package.json has no build script`);
|
|
38
|
-
return false;
|
|
39
|
-
}
|
|
40
27
|
if (!(await directoryExists(join(directory, 'node_modules')))) {
|
|
41
|
-
logger?.warn(`
|
|
42
|
-
return
|
|
28
|
+
logger?.warn(`cannot build local plugin ${name}: node_modules is missing; run npm install --prefix ${directory}`);
|
|
29
|
+
return 'missing-node-modules';
|
|
43
30
|
}
|
|
44
|
-
logger?.info?.(`building local plugin ${name}
|
|
31
|
+
logger?.info?.(`building local plugin ${name}`);
|
|
45
32
|
try {
|
|
46
33
|
await runner.run(['run', 'build'], {
|
|
47
34
|
cwd: directory,
|
|
@@ -50,11 +37,10 @@ async function buildLocalPlugin(directory, name, logger, runner, timeoutMs) {
|
|
|
50
37
|
}
|
|
51
38
|
catch (error) {
|
|
52
39
|
logger?.error(`failed to build local plugin ${name}`, error);
|
|
53
|
-
|
|
54
|
-
return false;
|
|
40
|
+
return 'failed';
|
|
55
41
|
}
|
|
56
42
|
logger?.info?.(`built local plugin ${name}`);
|
|
57
|
-
return
|
|
43
|
+
return 'built';
|
|
58
44
|
}
|
|
59
45
|
export async function loadPluginsFromDirectory(directory, logger) {
|
|
60
46
|
const absolute = resolve(directory);
|
|
@@ -73,7 +59,12 @@ export async function loadPluginsFromDirectory(directory, logger) {
|
|
|
73
59
|
for (const file of files.sort()) {
|
|
74
60
|
let imported;
|
|
75
61
|
try {
|
|
76
|
-
|
|
62
|
+
const info = await stat(file).catch(() => null);
|
|
63
|
+
const url = pathToFileURL(file);
|
|
64
|
+
if (info !== null) {
|
|
65
|
+
url.searchParams.set('v', String(info.mtimeMs));
|
|
66
|
+
}
|
|
67
|
+
imported = await import(url.href);
|
|
77
68
|
}
|
|
78
69
|
catch (error) {
|
|
79
70
|
logger?.error(`failed to import plugin file: ${file}`, error);
|
|
@@ -99,18 +90,7 @@ export async function loadLocalPlugins(root, logger, options = {}) {
|
|
|
99
90
|
return [];
|
|
100
91
|
const entries = (await readdir(absolute, { withFileTypes: true })).sort((a, b) => a.name.localeCompare(b.name));
|
|
101
92
|
const plugins = [];
|
|
102
|
-
|
|
103
|
-
let managed = new Set();
|
|
104
|
-
if (autoBuild) {
|
|
105
|
-
const directories = await readManagedDirectories(absolute);
|
|
106
|
-
if (directories === null) {
|
|
107
|
-
logger?.warn('cannot read plugin install state; automatic local plugin build is disabled');
|
|
108
|
-
autoBuild = false;
|
|
109
|
-
}
|
|
110
|
-
else {
|
|
111
|
-
managed = directories;
|
|
112
|
-
}
|
|
113
|
-
}
|
|
93
|
+
const autoBuild = options.autoBuild !== false;
|
|
114
94
|
const runner = options.runner ?? new NpmCliRunner();
|
|
115
95
|
const timeoutMs = options.buildTimeoutMs ?? DEFAULT_BUILD_TIMEOUT_MS;
|
|
116
96
|
for (const entry of entries) {
|
|
@@ -120,24 +100,29 @@ export async function loadLocalPlugins(root, logger, options = {}) {
|
|
|
120
100
|
continue;
|
|
121
101
|
const directory = join(absolute, entry.name);
|
|
122
102
|
const dist = join(directory, 'dist');
|
|
103
|
+
const hasBuildScript = (await readBuildScript(directory)) !== undefined;
|
|
123
104
|
let distInfo = await stat(dist).catch(() => null);
|
|
124
|
-
if (
|
|
125
|
-
|
|
126
|
-
logger?.warn(`skipping local plugin ${entry.name}: dist directory not found`);
|
|
127
|
-
continue;
|
|
128
|
-
}
|
|
129
|
-
if (managed.has(entry.name)) {
|
|
130
|
-
logger?.warn(`skipping local plugin ${entry.name}: dist directory not found (installed package is expected to include dist)`);
|
|
131
|
-
continue;
|
|
132
|
-
}
|
|
133
|
-
const built = await buildLocalPlugin(directory, entry.name, logger, runner, timeoutMs);
|
|
134
|
-
if (!built)
|
|
135
|
-
continue;
|
|
105
|
+
if (autoBuild && hasBuildScript) {
|
|
106
|
+
const outcome = await buildLocalPlugin(directory, entry.name, logger, runner, timeoutMs);
|
|
136
107
|
distInfo = await stat(dist).catch(() => null);
|
|
137
108
|
if (!distInfo?.isDirectory()) {
|
|
138
|
-
|
|
109
|
+
const reason = outcome === 'built'
|
|
110
|
+
? 'build finished but dist directory not found'
|
|
111
|
+
: outcome === 'missing-node-modules'
|
|
112
|
+
? 'node_modules is missing and dist directory not found'
|
|
113
|
+
: 'build failed and dist directory not found';
|
|
114
|
+
logger?.warn(`skipping local plugin ${entry.name}: ${reason}`);
|
|
139
115
|
continue;
|
|
140
116
|
}
|
|
117
|
+
if (outcome !== 'built') {
|
|
118
|
+
logger?.warn(`using existing dist for local plugin ${entry.name}: rebuild failed`);
|
|
119
|
+
}
|
|
120
|
+
}
|
|
121
|
+
else if (!distInfo?.isDirectory()) {
|
|
122
|
+
logger?.warn(hasBuildScript
|
|
123
|
+
? `skipping local plugin ${entry.name}: dist directory not found and automatic build is disabled`
|
|
124
|
+
: `skipping local plugin ${entry.name}: dist directory not found and package.json has no build script`);
|
|
125
|
+
continue;
|
|
141
126
|
}
|
|
142
127
|
plugins.push(...(await loadPluginsFromDirectory(dist, logger)));
|
|
143
128
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"loader.js","sourceRoot":"","sources":["../../../src/core/plugin/loader.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,kBAAkB,CAAA;AAChD,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,MAAM,WAAW,CAAA;AACzC,OAAO,EAAE,aAAa,EAAE,MAAM,UAAU,CAAA;AACxC,OAAO,EAAE,MAAM,WAAW,CAAA;AAE1B,OAAO,EAAE,oBAAoB,EAAE,MAAM,cAAc,CAAA;AACnD,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"loader.js","sourceRoot":"","sources":["../../../src/core/plugin/loader.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,kBAAkB,CAAA;AAChD,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,MAAM,WAAW,CAAA;AACzC,OAAO,EAAE,aAAa,EAAE,MAAM,UAAU,CAAA;AACxC,OAAO,EAAE,MAAM,WAAW,CAAA;AAE1B,OAAO,EAAE,oBAAoB,EAAE,MAAM,cAAc,CAAA;AACnD,OAAO,EAAE,YAAY,EAAE,MAAM,kBAAkB,CAAA;AAC/C,OAAO,EAAE,YAAY,EAAkB,MAAM,iBAAiB,CAAA;AAgB9D,MAAM,wBAAwB,GAAG,OAAO,CAAA;AAExC,SAAS,QAAQ,CAAC,KAAc;IAC5B,OAAO,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,KAAK,IAAI,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,CAAA;AAC/E,CAAC;AAED,KAAK,UAAU,eAAe,CAAC,IAAY;IACvC,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,CAAA;IAE/C,OAAO,IAAI,EAAE,WAAW,EAAE,IAAI,KAAK,CAAA;AACvC,CAAC;AAED,KAAK,UAAU,eAAe,CAAC,SAAiB;IAC5C,MAAM,QAAQ,GAAG,MAAM,YAAY,CAAC,IAAI,CAAC,SAAS,EAAE,cAAc,CAAC,CAAC,CAAC,KAAK,CACtE,GAAG,EAAE,CAAC,SAAS,CAClB,CAAA;IAED,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC,EAAE,CAAC;QACxD,OAAO,SAAS,CAAA;IACpB,CAAC;IAED,MAAM,KAAK,GAAG,QAAQ,CAAC,SAAS,CAAC,CAAC,OAAO,CAAC,CAAA;IAE1C,OAAO,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,CAAC,IAAI,EAAE,CAAC,MAAM,GAAG,CAAC;QACvD,CAAC,CAAC,KAAK;QACP,CAAC,CAAC,SAAS,CAAA;AACnB,CAAC;AAID,KAAK,UAAU,gBAAgB,CAC3B,SAAiB,EACjB,IAAY,EACZ,MAAgC,EAChC,MAAiB,EACjB,SAAiB;IAEjB,IAAI,CAAC,CAAC,MAAM,eAAe,CAAC,IAAI,CAAC,SAAS,EAAE,cAAc,CAAC,CAAC,CAAC,EAAE,CAAC;QAC5D,MAAM,EAAE,IAAI,CACR,6BAA6B,IAAI,uDAAuD,SAAS,EAAE,CACtG,CAAA;QACD,OAAO,sBAAsB,CAAA;IACjC,CAAC;IAED,MAAM,EAAE,IAAI,EAAE,CAAC,yBAAyB,IAAI,EAAE,CAAC,CAAA;IAE/C,IAAI,CAAC;QACD,MAAM,MAAM,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,OAAO,CAAC,EAAE;YAC/B,GAAG,EAAE,SAAS;YACd,SAAS;SACZ,CAAC,CAAA;IACN,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACb,MAAM,EAAE,KAAK,CAAC,gCAAgC,IAAI,EAAE,EAAE,KAAK,CAAC,CAAA;QAC5D,OAAO,QAAQ,CAAA;IACnB,CAAC;IAED,MAAM,EAAE,IAAI,EAAE,CAAC,sBAAsB,IAAI,EAAE,CAAC,CAAA;IAE5C,OAAO,OAAO,CAAA;AAClB,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,wBAAwB,CAC1C,SAAiB,EACjB,MAAiC;IAEjC,MAAM,QAAQ,GAAG,OAAO,CAAC,SAAS,CAAC,CAAA;IACnC,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,QAAQ,CAAC,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,CAAA;IAEnD,IAAI,CAAC,IAAI,EAAE,WAAW,EAAE,EAAE,CAAC;QACvB,MAAM,IAAI,KAAK,CAAC,+BAA+B,QAAQ,EAAE,CAAC,CAAA;IAC9D,CAAC;IAED,MAAM,KAAK,GAAG,MAAM,EAAE,CAAC,8BAA8B,EAAE;QACnD,GAAG,EAAE,QAAQ;QACb,QAAQ,EAAE,IAAI;QACd,SAAS,EAAE,IAAI;QACf,MAAM,EAAE,CAAC,WAAW,EAAE,YAAY,EAAE,YAAY,EAAE,oBAAoB,CAAC;KAC1E,CAAC,CAAA;IAEF,MAAM,OAAO,GAA0B,EAAE,CAAA;IACzC,MAAM,OAAO,GAAa,EAAE,CAAA;IAE5B,KAAK,MAAM,IAAI,IAAI,KAAK,CAAC,IAAI,EAAE,EAAE,CAAC;QAC9B,IAAI,QAAiB,CAAA;QAErB,IAAI,CAAC;YACD,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,CAAA;YAC/C,MAAM,GAAG,GAAG,aAAa,CAAC,IAAI,CAAC,CAAA;YAE/B,IAAI,IAAI,KAAK,IAAI,EAAE,CAAC;gBAChB,GAAG,CAAC,YAAY,CAAC,GAAG,CAAC,GAAG,EAAE,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,CAAA;YACnD,CAAC;YAED,QAAQ,GAAG,MAAM,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,CAAA;QACrC,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACb,MAAM,EAAE,KAAK,CAAC,iCAAiC,IAAI,EAAE,EAAE,KAAK,CAAC,CAAA;YAC7D,OAAO,CAAC,IAAI,CACR,oBAAoB,IAAI,KACpB,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CACzD,EAAE,CACL,CAAA;YACD,SAAQ;QACZ,CAAC;QAED,OAAO,CAAC,IAAI,CACR,GAAG,oBAAoB,CAAC,QAAQ,EAAE,IAAI,EAAE;YACpC,SAAS,EAAE,CAAC,OAAO,EAAE,EAAE;gBACnB,MAAM,EAAE,IAAI,CAAC,OAAO,CAAC,CAAA;gBACrB,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,CAAA;YACzB,CAAC;SACJ,CAAC,CACL,CAAA;IACL,CAAC;IAED,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC,IAAI,OAAO,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QAC7C,MAAM,IAAI,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAA;IAC/B,CAAC;IAED,OAAO,OAAO,CAAA;AAClB,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,gBAAgB,CAClC,IAAY,EACZ,MAAiC,EACjC,OAAO,GAA6B,EAAE;IAEtC,MAAM,QAAQ,GAAG,OAAO,CAAC,IAAI,CAAC,CAAA;IAC9B,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,QAAQ,CAAC,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,CAAA;IAEnD,IAAI,CAAC,IAAI,EAAE,WAAW,EAAE;QAAE,OAAO,EAAE,CAAA;IAEnC,MAAM,OAAO,GAAG,CAAC,MAAM,OAAO,CAAC,QAAQ,EAAE,EAAE,aAAa,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,IAAI,CACnE,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC,CAAC,IAAI,CAAC,CACzC,CAAA;IACD,MAAM,OAAO,GAA0B,EAAE,CAAA;IAEzC,MAAM,SAAS,GAAG,OAAO,CAAC,SAAS,KAAK,KAAK,CAAA;IAC7C,MAAM,MAAM,GAAG,OAAO,CAAC,MAAM,IAAI,IAAI,YAAY,EAAE,CAAA;IACnD,MAAM,SAAS,GAAG,OAAO,CAAC,cAAc,IAAI,wBAAwB,CAAA;IAEpE,KAAK,MAAM,KAAK,IAAI,OAAO,EAAE,CAAC;QAC1B,IAAI,CAAC,KAAK,CAAC,WAAW,EAAE,IAAI,KAAK,CAAC,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC;YAAE,SAAQ;QAChE,IAAI,KAAK,CAAC,IAAI,KAAK,cAAc;YAAE,SAAQ;QAE3C,MAAM,SAAS,GAAG,IAAI,CAAC,QAAQ,EAAE,KAAK,CAAC,IAAI,CAAC,CAAA;QAC5C,MAAM,IAAI,GAAG,IAAI,CAAC,SAAS,EAAE,MAAM,CAAC,CAAA;QACpC,MAAM,cAAc,GAAG,CAAC,MAAM,eAAe,CAAC,SAAS,CAAC,CAAC,KAAK,SAAS,CAAA;QACvE,IAAI,QAAQ,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,CAAA;QAEjD,IAAI,SAAS,IAAI,cAAc,EAAE,CAAC;YAC9B,MAAM,OAAO,GAAG,MAAM,gBAAgB,CAClC,SAAS,EACT,KAAK,CAAC,IAAI,EACV,MAAM,EACN,MAAM,EACN,SAAS,CACZ,CAAA;YAED,QAAQ,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,CAAA;YAE7C,IAAI,CAAC,QAAQ,EAAE,WAAW,EAAE,EAAE,CAAC;gBAC3B,MAAM,MAAM,GACR,OAAO,KAAK,OAAO;oBACf,CAAC,CAAC,6CAA6C;oBAC/C,CAAC,CAAC,OAAO,KAAK,sBAAsB;wBAClC,CAAC,CAAC,sDAAsD;wBACxD,CAAC,CAAC,2CAA2C,CAAA;gBAEvD,MAAM,EAAE,IAAI,CAAC,yBAAyB,KAAK,CAAC,IAAI,KAAK,MAAM,EAAE,CAAC,CAAA;gBAC9D,SAAQ;YACZ,CAAC;YAED,IAAI,OAAO,KAAK,OAAO,EAAE,CAAC;gBACtB,MAAM,EAAE,IAAI,CACR,wCAAwC,KAAK,CAAC,IAAI,kBAAkB,CACvE,CAAA;YACL,CAAC;QACL,CAAC;aAAM,IAAI,CAAC,QAAQ,EAAE,WAAW,EAAE,EAAE,CAAC;YAClC,MAAM,EAAE,IAAI,CACR,cAAc;gBACV,CAAC,CAAC,yBAAyB,KAAK,CAAC,IAAI,4DAA4D;gBACjG,CAAC,CAAC,yBAAyB,KAAK,CAAC,IAAI,iEAAiE,CAC7G,CAAA;YACD,SAAQ;QACZ,CAAC;QAED,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,MAAM,wBAAwB,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC,CAAC,CAAA;IACnE,CAAC;IAED,OAAO,OAAO,CAAA;AAClB,CAAC"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import type { OneBotMessageEvent, OneBotNoticeEvent, OneBotRequestEvent, OutgoingMessage, SnowLumaEvent } from '@snowluma/sdk';
|
|
1
|
+
import type { OneBotGroupMessageEvent, OneBotMessageEvent, OneBotNoticeEvent, OneBotPrivateMessageEvent, OneBotRequestEvent, OutgoingMessage, SnowLumaEvent } from '@snowluma/sdk';
|
|
2
2
|
import type { z } from 'zod';
|
|
3
3
|
import type { BotApi } from '../api.js';
|
|
4
4
|
import type { TaskQueue } from '../dispatch/task-queue.js';
|
|
@@ -9,6 +9,8 @@ import type { Permission } from '../security/permission.js';
|
|
|
9
9
|
import type { SessionStore } from '../storage/session.js';
|
|
10
10
|
import type { CommandParamArgs } from './command-params.js';
|
|
11
11
|
export type EventType = 'message' | 'notice' | 'request' | 'meta';
|
|
12
|
+
export type MessageType = 'group' | 'private';
|
|
13
|
+
export type MessageTypeFilter = MessageType | readonly MessageType[];
|
|
12
14
|
export interface CommandMatch {
|
|
13
15
|
command: string;
|
|
14
16
|
prefix: string;
|
|
@@ -19,6 +21,7 @@ export interface CommandInfo {
|
|
|
19
21
|
name: string;
|
|
20
22
|
aliases: string[];
|
|
21
23
|
permission: Permission;
|
|
24
|
+
messageTypes: MessageType[];
|
|
22
25
|
description?: string | undefined;
|
|
23
26
|
usage?: string | undefined;
|
|
24
27
|
pluginId: string;
|
|
@@ -33,6 +36,8 @@ export interface EventContext<TEvent extends SnowLumaEvent = SnowLumaEvent> {
|
|
|
33
36
|
}
|
|
34
37
|
export type CommandHandler<TEvent extends OneBotMessageEvent = OneBotMessageEvent, TArgs extends unknown[] = []> = (event: TEvent, context: EventContext<TEvent>, match: CommandMatch, ...args: TArgs) => void | Promise<void>;
|
|
35
38
|
export type MessageHandler = (event: OneBotMessageEvent, context: EventContext<OneBotMessageEvent>) => void | Promise<void>;
|
|
39
|
+
export type GroupMessageHandler = (event: OneBotGroupMessageEvent, context: EventContext<OneBotGroupMessageEvent>) => void | Promise<void>;
|
|
40
|
+
export type PrivateMessageHandler = (event: OneBotPrivateMessageEvent, context: EventContext<OneBotPrivateMessageEvent>) => void | Promise<void>;
|
|
36
41
|
export type NoticeHandler = (event: OneBotNoticeEvent, context: EventContext<OneBotNoticeEvent>) => void | Promise<void>;
|
|
37
42
|
export type RequestHandler = (event: OneBotRequestEvent, context: EventContext<OneBotRequestEvent>) => void | Promise<void>;
|
|
38
43
|
export type PluginMiddleware = (event: SnowLumaEvent, context: EventContext, next: () => Promise<void>) => void | Promise<void>;
|
|
@@ -41,6 +46,7 @@ export interface CommandOptions<Declaration extends string = string> {
|
|
|
41
46
|
aliases?: string[] | undefined;
|
|
42
47
|
prefixes?: string[] | undefined;
|
|
43
48
|
permission?: Permission | undefined;
|
|
49
|
+
messageType?: MessageTypeFilter | undefined;
|
|
44
50
|
description?: string | undefined;
|
|
45
51
|
params?: Declaration | undefined;
|
|
46
52
|
}
|
|
@@ -68,6 +74,8 @@ export interface CommandRegistrar extends CommandGroupRegistrar {
|
|
|
68
74
|
}
|
|
69
75
|
export interface EventRegistrar {
|
|
70
76
|
onMessage(handler: MessageHandler): () => void;
|
|
77
|
+
onGroupMessage(handler: GroupMessageHandler): () => void;
|
|
78
|
+
onPrivateMessage(handler: PrivateMessageHandler): () => void;
|
|
71
79
|
onNotice(options: NoticeOptions, handler: NoticeHandler): () => void;
|
|
72
80
|
onRequest(options: RequestOptions, handler: RequestHandler): () => void;
|
|
73
81
|
}
|
|
@@ -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":"AAAA,OAAO,KAAK,EACR,uBAAuB,EACvB,kBAAkB,EAClB,iBAAiB,EACjB,yBAAyB,EACzB,kBAAkB,EAClB,eAAe,EACf,aAAa,EAChB,MAAM,eAAe,CAAA;AACtB,OAAO,KAAK,EAAE,CAAC,EAAE,MAAM,KAAK,CAAA;AAC5B,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,WAAW,CAAA;AACvC,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,2BAA2B,CAAA;AAC1D,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,sBAAsB,CAAA;AAClD,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,wBAAwB,CAAA;AACzD,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,iBAAiB,CAAA;AAC/C,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,2BAA2B,CAAA;AAC3D,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,uBAAuB,CAAA;AACzD,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,qBAAqB,CAAA;AAE3D,MAAM,MAAM,SAAS,GAAG,SAAS,GAAG,QAAQ,GAAG,SAAS,GAAG,MAAM,CAAA;AAEjE,MAAM,MAAM,WAAW,GAAG,OAAO,GAAG,SAAS,CAAA;AAE7C,MAAM,MAAM,iBAAiB,GAAG,WAAW,GAAG,SAAS,WAAW,EAAE,CAAA;AAEpE,MAAM,WAAW,YAAY;IACzB,OAAO,EAAE,MAAM,CAAA;IACf,MAAM,EAAE,MAAM,CAAA;IACd,IAAI,EAAE,MAAM,EAAE,CAAA;IACd,IAAI,EAAE,MAAM,CAAA;CACf;AAED,MAAM,WAAW,WAAW;IACxB,IAAI,EAAE,MAAM,CAAA;IACZ,OAAO,EAAE,MAAM,EAAE,CAAA;IACjB,UAAU,EAAE,UAAU,CAAA;IACtB,YAAY,EAAE,WAAW,EAAE,CAAA;IAC3B,WAAW,CAAC,EAAE,MAAM,GAAG,SAAS,CAAA;IAChC,KAAK,CAAC,EAAE,MAAM,GAAG,SAAS,CAAA;IAC1B,QAAQ,EAAE,MAAM,CAAA;CACnB;AAED,MAAM,WAAW,YAAY,CAAC,MAAM,SAAS,aAAa,GAAG,aAAa;IACtE,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAA;IACtB,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAA;IAC1B,QAAQ,CAAC,OAAO,EAAE,YAAY,GAAG,IAAI,CAAA;IACrC,QAAQ,CAAC,OAAO,EAAE,OAAO,CAAA;IAEzB,IAAI,CAAC,OAAO,EAAE,eAAe,EAAE,OAAO,CAAC,EAAE,WAAW,GAAG,OAAO,CAAC,OAAO,CAAC,CAAA;IAEvE,eAAe,IAAI,IAAI,CAAA;CAC1B;AAED,MAAM,MAAM,cAAc,CACtB,MAAM,SAAS,kBAAkB,GAAG,kBAAkB,EACtD,KAAK,SAAS,OAAO,EAAE,GAAG,EAAE,IAC5B,CACA,KAAK,EAAE,MAAM,EACb,OAAO,EAAE,YAAY,CAAC,MAAM,CAAC,EAC7B,KAAK,EAAE,YAAY,EACnB,GAAG,IAAI,EAAE,KAAK,KACb,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAA;AAEzB,MAAM,MAAM,cAAc,GAAG,CACzB,KAAK,EAAE,kBAAkB,EACzB,OAAO,EAAE,YAAY,CAAC,kBAAkB,CAAC,KACxC,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAA;AAEzB,MAAM,MAAM,mBAAmB,GAAG,CAC9B,KAAK,EAAE,uBAAuB,EAC9B,OAAO,EAAE,YAAY,CAAC,uBAAuB,CAAC,KAC7C,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAA;AAEzB,MAAM,MAAM,qBAAqB,GAAG,CAChC,KAAK,EAAE,yBAAyB,EAChC,OAAO,EAAE,YAAY,CAAC,yBAAyB,CAAC,KAC/C,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAA;AAEzB,MAAM,MAAM,aAAa,GAAG,CACxB,KAAK,EAAE,iBAAiB,EACxB,OAAO,EAAE,YAAY,CAAC,iBAAiB,CAAC,KACvC,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAA;AAEzB,MAAM,MAAM,cAAc,GAAG,CACzB,KAAK,EAAE,kBAAkB,EACzB,OAAO,EAAE,YAAY,CAAC,kBAAkB,CAAC,KACxC,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAA;AAEzB,MAAM,MAAM,gBAAgB,GAAG,CAC3B,KAAK,EAAE,aAAa,EACpB,OAAO,EAAE,YAAY,EACrB,IAAI,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,KACxB,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAA;AAEzB,MAAM,WAAW,cAAc,CAAC,WAAW,SAAS,MAAM,GAAG,MAAM;IAC/D,IAAI,EAAE,MAAM,CAAA;IACZ,OAAO,CAAC,EAAE,MAAM,EAAE,GAAG,SAAS,CAAA;IAC9B,QAAQ,CAAC,EAAE,MAAM,EAAE,GAAG,SAAS,CAAA;IAC/B,UAAU,CAAC,EAAE,UAAU,GAAG,SAAS,CAAA;IACnC,WAAW,CAAC,EAAE,iBAAiB,GAAG,SAAS,CAAA;IAC3C,WAAW,CAAC,EAAE,MAAM,GAAG,SAAS,CAAA;IAChC,MAAM,CAAC,EAAE,WAAW,GAAG,SAAS,CAAA;CACnC;AAED,MAAM,WAAW,mBAAmB,CAChC,WAAW,SAAS,MAAM,GAAG,MAAM,CACrC,SAAQ,cAAc,CAAC,WAAW,CAAC;IACjC,OAAO,CAAC,EACF,cAAc,CAAC,kBAAkB,EAAE,gBAAgB,CAAC,WAAW,CAAC,CAAC,GACjE,SAAS,CAAA;CAClB;AAED,MAAM,WAAW,qBAAqB;IAClC,QAAQ,CAAC,WAAW,SAAS,MAAM,GAAG,MAAM,EACxC,OAAO,EAAE,cAAc,CAAC,WAAW,CAAC,EACpC,OAAO,EAAE,cAAc,CACnB,kBAAkB,EAClB,gBAAgB,CAAC,WAAW,CAAC,CAChC,GACF,MAAM,IAAI,CAAA;IACb,KAAK,CAAC,WAAW,SAAS,MAAM,GAAG,MAAM,EACrC,OAAO,EAAE,mBAAmB,CAAC,WAAW,CAAC,EACzC,KAAK,EAAE,CAAC,KAAK,EAAE,qBAAqB,KAAK,IAAI,GAC9C,MAAM,IAAI,CAAA;CAChB;AAED,MAAM,WAAW,aAAa;IAC1B,UAAU,CAAC,EAAE,MAAM,GAAG,SAAS,CAAA;IAC/B,OAAO,CAAC,EAAE,MAAM,GAAG,SAAS,CAAA;CAC/B;AAED,MAAM,WAAW,cAAc;IAC3B,WAAW,CAAC,EAAE,MAAM,GAAG,SAAS,CAAA;CACnC;AAED,MAAM,WAAW,iBAAiB;IAC9B,IAAI,CAAC,EAAE,MAAM,GAAG,SAAS,CAAA;IACzB,UAAU,CAAC,EAAE,SAAS,EAAE,GAAG,SAAS,CAAA;IACpC,QAAQ,CAAC,EAAE,MAAM,GAAG,SAAS,CAAA;CAChC;AAED,MAAM,WAAW,gBAAiB,SAAQ,qBAAqB;IAC3D,IAAI,IAAI,aAAa,CAAC,WAAW,CAAC,CAAA;CACrC;AAED,MAAM,WAAW,cAAc;IAC3B,SAAS,CAAC,OAAO,EAAE,cAAc,GAAG,MAAM,IAAI,CAAA;IAC9C,cAAc,CAAC,OAAO,EAAE,mBAAmB,GAAG,MAAM,IAAI,CAAA;IACxD,gBAAgB,CAAC,OAAO,EAAE,qBAAqB,GAAG,MAAM,IAAI,CAAA;IAC5D,QAAQ,CAAC,OAAO,EAAE,aAAa,EAAE,OAAO,EAAE,aAAa,GAAG,MAAM,IAAI,CAAA;IACpE,SAAS,CAAC,OAAO,EAAE,cAAc,EAAE,OAAO,EAAE,cAAc,GAAG,MAAM,IAAI,CAAA;CAC1E;AAED,MAAM,WAAW,mBAAmB;IAChC,GAAG,CAAC,OAAO,EAAE,iBAAiB,EAAE,OAAO,EAAE,gBAAgB,GAAG,MAAM,IAAI,CAAA;CACzE;AAED,MAAM,WAAW,iBAAiB;IAC9B,EAAE,EAAE,MAAM,CAAA;IACV,OAAO,EAAE,OAAO,CAAA;IAChB,MAAM,EAAE,OAAO,CAAA;CAClB;AAED,MAAM,WAAW,YAAY;IACzB,IAAI,IAAI,iBAAiB,EAAE,CAAA;CAC9B;AAED,MAAM,WAAW,oBAAoB;IACjC,WAAW,EAAE,MAAM,CAAA;IACnB,OAAO,EAAE,MAAM,CAAA;IACf,IAAI,EAAE,MAAM,CAAA;IACZ,SAAS,EAAE,MAAM,EAAE,CAAA;IACnB,WAAW,EAAE,MAAM,CAAA;IACnB,MAAM,EAAE,OAAO,CAAA;CAClB;AAED,MAAM,WAAW,mBAAmB;IAChC,WAAW,EAAE,MAAM,CAAA;IACnB,OAAO,EAAE,MAAM,CAAA;IACf,SAAS,EAAE,MAAM,EAAE,CAAA;IACnB,QAAQ,EAAE,MAAM,EAAE,CAAA;CACrB;AAED,MAAM,WAAW,kBAAkB;IAC/B,WAAW,EAAE,MAAM,CAAA;IACnB,SAAS,EAAE,MAAM,EAAE,CAAA;IACnB,QAAQ,EAAE,MAAM,EAAE,CAAA;CACrB;AAED,MAAM,WAAW,kBAAkB;IAC/B,OAAO,EAAE,mBAAmB,EAAE,CAAA;IAC9B,MAAM,EAAE,KAAK,CAAC;QAAE,WAAW,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,MAAM,CAAA;KAAE,CAAC,CAAA;CAC1D;AAED,MAAM,WAAW,eAAe;IAC5B,QAAQ,CAAC,OAAO,EAAE,OAAO,CAAA;IACzB,IAAI,IAAI,OAAO,CAAC,oBAAoB,EAAE,CAAC,CAAA;IACvC,OAAO,CAAC,IAAI,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,WAAW,GAAG,OAAO,CAAC,mBAAmB,CAAC,CAAA;IACzE,MAAM,CACF,MAAM,EAAE,MAAM,EACd,MAAM,CAAC,EAAE,WAAW,EACpB,OAAO,CAAC,EAAE;QAAE,KAAK,CAAC,EAAE,OAAO,GAAG,SAAS,CAAA;KAAE,GAAG,SAAS,GACtD,OAAO,CAAC,kBAAkB,CAAC,CAAA;IAC9B,MAAM,CAAC,MAAM,CAAC,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,WAAW,GAAG,OAAO,CAAC,kBAAkB,CAAC,CAAA;CAC7E;AAED,MAAM,WAAW,YAAY;IACzB,KAAK,EAAE;QACH,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,UAAU,CAAA;QAClC,GAAG,CAAC,MAAM,EAAE,UAAU,EAAE,QAAQ,EAAE,UAAU,GAAG,OAAO,CAAA;KACzD,CAAA;IACD,QAAQ,EAAE;QACN,IAAI,CAAC,KAAK,CAAC,EAAE,aAAa,GAAG,aAAa,CAAC,WAAW,CAAC,CAAA;KAC1D,CAAA;IACD,OAAO,EAAE,YAAY,CAAA;IACrB,SAAS,EAAE,eAAe,CAAA;IAC1B,OAAO,IAAI,IAAI,CAAA;IACf,MAAM,IAAI,MAAM,CAAA;CACnB;AAED,MAAM,WAAW,aAAa,CAAC,OAAO,GAAG,OAAO;IAC5C,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAA;IACnB,QAAQ,CAAC,MAAM,EAAE,QAAQ,CAAC,OAAO,CAAC,CAAA;IAClC,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAA;IACvB,QAAQ,CAAC,EAAE,EAAE,QAAQ,CAAA;IACrB,QAAQ,CAAC,QAAQ,EAAE,YAAY,CAAA;IAC/B,QAAQ,CAAC,KAAK,EAAE,SAAS,CAAA;IACzB,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAA;IACpB,QAAQ,CAAC,QAAQ,EAAE,gBAAgB,CAAA;IACnC,QAAQ,CAAC,MAAM,EAAE,cAAc,CAAA;IAC/B,QAAQ,CAAC,WAAW,EAAE,mBAAmB,CAAA;IACzC,QAAQ,CAAC,IAAI,EAAE,YAAY,CAAA;CAC9B;AAED,MAAM,WAAW,cAAc,CAAC,OAAO,GAAG,OAAO;IAC7C,EAAE,EAAE,MAAM,CAAA;IACV,OAAO,EAAE,MAAM,CAAA;IACf,WAAW,CAAC,EAAE,MAAM,GAAG,SAAS,CAAA;IAChC,YAAY,CAAC,EAAE,MAAM,EAAE,GAAG,SAAS,CAAA;IACnC,QAAQ,CAAC,EAAE,MAAM,GAAG,SAAS,CAAA;IAC7B,cAAc,CAAC,EAAE,OAAO,GAAG,SAAS,CAAA;IACpC,YAAY,EAAE,CAAC,CAAC,OAAO,CAAC,OAAO,CAAC,CAAA;CACnC;AAED,MAAM,WAAW,gBAAgB,CAAC,OAAO,GAAG,OAAO,EAAE,MAAM,GAAG,IAAI;IAC9D,QAAQ,EAAE,cAAc,CAAC,OAAO,CAAC,CAAA;IACjC,KAAK,CAAC,OAAO,EAAE,aAAa,CAAC,OAAO,CAAC,GAAG,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAAA;IAChE,KAAK,CAAC,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAA;IAC3C,IAAI,CAAC,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAA;CAC7C;AAED,MAAM,MAAM,mBAAmB,GAAG,gBAAgB,CAAC,OAAO,EAAE,OAAO,CAAC,CAAA;AAEpE,wBAAgB,YAAY,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI,EAC/C,UAAU,EAAE,gBAAgB,CAAC,OAAO,EAAE,MAAM,CAAC,GAC9C,gBAAgB,CAAC,OAAO,EAAE,MAAM,CAAC,CAEnC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.js","sourceRoot":"","sources":["../../../src/core/plugin/types.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"types.js","sourceRoot":"","sources":["../../../src/core/plugin/types.ts"],"names":[],"mappings":"AA6PA,MAAM,UAAU,YAAY,CACxB,UAA6C;IAE7C,OAAO,UAAU,CAAA;AACrB,CAAC"}
|
package/docs/architecture.md
CHANGED
|
@@ -16,7 +16,7 @@ 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/runtime.ts`
|
|
19
|
+
- 本地插件由 `src/app/runtime.ts` 在启动和运行时重启前扫描 `plugins/<id>/dist` 并追加到内置插件之后;带 `build` 脚本的插件每次都会先重新构建,失败时回退已有 `dist`。
|
|
20
20
|
- 本地插件放在不跟踪的 `plugins/`,每个插件是独立包,构建后自动加载。
|
|
21
21
|
|
|
22
22
|
## 运行时主链路
|
|
@@ -56,7 +56,7 @@ src/
|
|
|
56
56
|
host.ts 插件排序、配置校验、setup/start/stop
|
|
57
57
|
gating.ts enabled/private/groups
|
|
58
58
|
kv.ts SQLite KV
|
|
59
|
-
loader.ts
|
|
59
|
+
loader.ts 本地插件目录加载(每次加载自动重建,失败回退 dist)
|
|
60
60
|
command-params.ts 命令参数解析入口(barrel)
|
|
61
61
|
params/ 声明、默认值/at/time、输入解析、类型级解析
|
|
62
62
|
install-dir.ts 安装状态/路径入口(barrel)
|
|
@@ -148,7 +148,7 @@ npm run build:plugin
|
|
|
148
148
|
node dist/app.js
|
|
149
149
|
```
|
|
150
150
|
|
|
151
|
-
应用会固定扫描 `plugins/<id>/dist`,并跳过与内置插件同 ID
|
|
151
|
+
应用会固定扫描 `plugins/<id>/dist`,并跳过与内置插件同 ID 的本地插件,避免重复注册。每次加载时,带 `build` 脚本且依赖已安装的插件都会先自动构建,无论 `dist` 是否已经存在;构建失败或缺少 `node_modules` 时会回退加载已有 `dist`,没有可用 `dist` 时记录警告并跳过。没有 `build` 脚本的插件直接加载现有 `dist`。`npm run build:plugin` / `npm run check:plugin` 会自动发现 `plugins/*` 下的本地源码插件,新增插件不需要改根 `package.json`。
|
|
152
152
|
|
|
153
153
|
## 在线安装插件
|
|
154
154
|
|
package/docs/configuration.md
CHANGED
|
@@ -8,7 +8,7 @@
|
|
|
8
8
|
| 数据目录 | `--data-dir` | `BOT_DATA_DIR` | `./data` |
|
|
9
9
|
| 日志级别 | `--log-level` | `BOT_LOG_LEVEL` | `info` |
|
|
10
10
|
|
|
11
|
-
本地插件目录固定为 `./plugins`,不提供 CLI 或环境变量覆盖;每个插件从 `./plugins/<id>/dist`
|
|
11
|
+
本地插件目录固定为 `./plugins`,不提供 CLI 或环境变量覆盖;每个插件从 `./plugins/<id>/dist` 加载,每次启动或重启加载时都会尝试自动重建,失败时回退已有产物,相对路径按 `process.cwd()` 解析。
|
|
12
12
|
|
|
13
13
|
## 完整示例
|
|
14
14
|
|
|
@@ -151,7 +151,7 @@ npm run build
|
|
|
151
151
|
node dist/app.js
|
|
152
152
|
```
|
|
153
153
|
|
|
154
|
-
|
|
154
|
+
带有 `build` 脚本且依赖已安装的插件,无论 `dist` 是否已经存在,每次加载都会先自动执行 `npm run build`;构建失败或缺少 `node_modules` 时会回退加载已有 `dist`,没有可用 `dist` 时记录警告并跳过。没有 `build` 脚本的插件直接加载现有 `dist`。通过 `/plugin install` 安装的包会直接出现在 `plugins/<插件id>/`,与手动放在 `plugins/` 的本地插件使用同一套重建规则;安装包通常自带 `dist`,缺少构建依赖时会回退使用自带产物。安装状态、registry 和允许列表见[插件安装器](#插件安装器)。
|
|
155
155
|
|
|
156
156
|
插件自己的配置字段由 `manifest.configSchema` 校验。例如一个 `demo` 插件:
|
|
157
157
|
|
|
@@ -179,7 +179,7 @@ npm run build:plugin
|
|
|
179
179
|
npm run dev
|
|
180
180
|
```
|
|
181
181
|
|
|
182
|
-
本地插件从 `plugins/<id>/dist`
|
|
182
|
+
本地插件从 `plugins/<id>/dist` 自动加载;每次加载前都会尝试重建。应用会跳过与内置插件同 ID 的本地插件。
|
|
183
183
|
|
|
184
184
|
## 错误处理
|
|
185
185
|
|
package/docs/docker.md
ADDED
|
@@ -0,0 +1,166 @@
|
|
|
1
|
+
# Docker 部署
|
|
2
|
+
|
|
3
|
+
Docker 镜像包含内核、内置插件、WebUI 静态资源和生产依赖,不包含配置、数据库和本地插件。这几项通过卷挂载持久化。
|
|
4
|
+
|
|
5
|
+
## 镜像
|
|
6
|
+
|
|
7
|
+
| 仓库 | 镜像 |
|
|
8
|
+
| ---------- | --------------------------------------------- |
|
|
9
|
+
| GHCR | `ghcr.io/jsbot-dev/jsbot-tellus` |
|
|
10
|
+
| Docker Hub | `docker.io/<DOCKERHUB_USERNAME>/jsbot-tellus` |
|
|
11
|
+
|
|
12
|
+
当前只提供 `linux/amd64`。标签规则:
|
|
13
|
+
|
|
14
|
+
| 标签 | 说明 |
|
|
15
|
+
| ------------- | ------------------------------- |
|
|
16
|
+
| `latest` | 最近一次成功发布的新版本 |
|
|
17
|
+
| `1.2.3` | 完整版本号,对应 `package.json` |
|
|
18
|
+
| `1.2`、`1` | 主/次版本 |
|
|
19
|
+
| `sha-xxxxxxx` | 对应提交的短哈希 |
|
|
20
|
+
|
|
21
|
+
同一个版本已经存在于某个镜像仓库时,CD 会跳过该仓库,不覆盖已有版本标签。`latest` 只会在发布新版本时移动。
|
|
22
|
+
|
|
23
|
+
## 快速开始
|
|
24
|
+
|
|
25
|
+
先准备配置目录。配置文件必须放在一个目录里挂载,不要单独挂载 `bot.config.json` 文件:WebUI 保存配置时会先写临时文件再原子重命名,单文件挂载会导致重命名失败。
|
|
26
|
+
|
|
27
|
+
```bash
|
|
28
|
+
mkdir -p config
|
|
29
|
+
cp bot.config.example.json config/bot.config.json
|
|
30
|
+
```
|
|
31
|
+
|
|
32
|
+
本地没有源码时,可以直接从镜像取出示例配置:
|
|
33
|
+
|
|
34
|
+
```bash
|
|
35
|
+
docker run --rm --entrypoint cat \
|
|
36
|
+
ghcr.io/jsbot-dev/jsbot-tellus:latest \
|
|
37
|
+
/app/bot.config.example.json > config/bot.config.json
|
|
38
|
+
```
|
|
39
|
+
|
|
40
|
+
编辑 `config/bot.config.json`,至少填写 OneBot 的 `url`、`accessToken` 和 `roles`。然后使用仓库里的示例:
|
|
41
|
+
|
|
42
|
+
```bash
|
|
43
|
+
docker compose -f compose.example.yaml up -d
|
|
44
|
+
```
|
|
45
|
+
|
|
46
|
+
或者直接运行:
|
|
47
|
+
|
|
48
|
+
```bash
|
|
49
|
+
docker run -d --name jsbot \
|
|
50
|
+
--restart unless-stopped \
|
|
51
|
+
--init \
|
|
52
|
+
-p 127.0.0.1:8787:8787 \
|
|
53
|
+
-v "$PWD/config:/app/config" \
|
|
54
|
+
-v jsbot-data:/app/data \
|
|
55
|
+
-v jsbot-plugins:/app/plugins \
|
|
56
|
+
ghcr.io/jsbot-dev/jsbot-tellus:latest
|
|
57
|
+
```
|
|
58
|
+
|
|
59
|
+
查看日志:
|
|
60
|
+
|
|
61
|
+
```bash
|
|
62
|
+
docker compose -f compose.example.yaml logs -f
|
|
63
|
+
# 或
|
|
64
|
+
docker logs -f jsbot
|
|
65
|
+
```
|
|
66
|
+
|
|
67
|
+
## 路径和卷
|
|
68
|
+
|
|
69
|
+
镜像内固定使用以下路径:
|
|
70
|
+
|
|
71
|
+
| 容器路径 | 内容 | 说明 |
|
|
72
|
+
| ----------------- | ------------------ | ------------------------------------------------- |
|
|
73
|
+
| `/app/config` | 配置文件目录 | 环境变量 `BOT_CONFIG=/app/config/bot.config.json` |
|
|
74
|
+
| `/app/data` | SQLite 数据库 | 环境变量 `BOT_DATA_DIR=/app/data` |
|
|
75
|
+
| `/app/plugins` | 本地和在线安装插件 | 固定目录,不可通过环境变量修改 |
|
|
76
|
+
| `/app/dist/webui` | WebUI 静态资源 | 随镜像构建 |
|
|
77
|
+
|
|
78
|
+
`data` 和 `plugins` 建议使用命名卷;如果改成宿主目录,需要保证容器内用户可写。
|
|
79
|
+
|
|
80
|
+
容器以非 root 的 `node` 用户运行,UID/GID 为 `1000:1000`。绑定宿主机目录时先授权:
|
|
81
|
+
|
|
82
|
+
```bash
|
|
83
|
+
mkdir -p data plugins
|
|
84
|
+
sudo chown -R 1000:1000 data plugins config
|
|
85
|
+
```
|
|
86
|
+
|
|
87
|
+
## WebUI
|
|
88
|
+
|
|
89
|
+
WebUI 默认关闭。容器内要让端口可达,配置需要监听 `0.0.0.0`:
|
|
90
|
+
|
|
91
|
+
```json
|
|
92
|
+
{
|
|
93
|
+
"webui": {
|
|
94
|
+
"enabled": true,
|
|
95
|
+
"host": "0.0.0.0",
|
|
96
|
+
"port": 8787,
|
|
97
|
+
"username": "admin",
|
|
98
|
+
"password": "至少 8 位"
|
|
99
|
+
}
|
|
100
|
+
}
|
|
101
|
+
```
|
|
102
|
+
|
|
103
|
+
示例 compose 只把端口发布到宿主机 `127.0.0.1`。WebUI 是完全特权接口,远程访问请放在 HTTPS 反向代理后面,不要直接暴露到公网。反向代理时按需设置 `trustProxy`,详见 [WebUI 文档](webui.md)。
|
|
104
|
+
|
|
105
|
+
不启用 WebUI 时可以删掉 compose 里的 `ports`,或者不传 `-p`。
|
|
106
|
+
|
|
107
|
+
## 插件
|
|
108
|
+
|
|
109
|
+
`plugins` 卷必须可写。在线安装器默认关闭;启用后 `/plugin install` 会在容器内调用 npm,把包安装到 `/app/plugins/<id>/`,因此容器需要能访问 npm registry:
|
|
110
|
+
|
|
111
|
+
```json
|
|
112
|
+
{
|
|
113
|
+
"installer": {
|
|
114
|
+
"enabled": true,
|
|
115
|
+
"registry": "https://registry.npmjs.org/"
|
|
116
|
+
}
|
|
117
|
+
}
|
|
118
|
+
```
|
|
119
|
+
|
|
120
|
+
手动放入的本地插件也从 `/app/plugins/<id>/dist` 加载,并在每次启动或重启时尝试重建。镜像已经包含 npm;插件自己的依赖安装在各自的 `node_modules` 中,不需要把宿主机的 `node_modules` 挂进来。
|
|
121
|
+
|
|
122
|
+
## 升级
|
|
123
|
+
|
|
124
|
+
```bash
|
|
125
|
+
docker compose -f compose.example.yaml pull
|
|
126
|
+
docker compose -f compose.example.yaml up -d
|
|
127
|
+
```
|
|
128
|
+
|
|
129
|
+
需要固定版本时把镜像标签改成完整版本号,例如 `ghcr.io/jsbot-dev/jsbot-tellus:1.2.3`。升级前建议备份 `/app/data` 和 `/app/config`。
|
|
130
|
+
|
|
131
|
+
## 本地构建
|
|
132
|
+
|
|
133
|
+
```bash
|
|
134
|
+
docker build -t jsbot-tellus .
|
|
135
|
+
docker run --rm jsbot-tellus --help
|
|
136
|
+
```
|
|
137
|
+
|
|
138
|
+
本地开发时也可以直接挂载配置启动:
|
|
139
|
+
|
|
140
|
+
```bash
|
|
141
|
+
docker run --rm -it \
|
|
142
|
+
-v "$PWD/config:/app/config" \
|
|
143
|
+
-v "$PWD/data:/app/data" \
|
|
144
|
+
-v "$PWD/plugins:/app/plugins" \
|
|
145
|
+
jsbot-tellus
|
|
146
|
+
```
|
|
147
|
+
|
|
148
|
+
## 发布机制
|
|
149
|
+
|
|
150
|
+
Docker 镜像由 [`.github/workflows/cd.yaml`](../.github/workflows/cd.yaml) 发布:
|
|
151
|
+
|
|
152
|
+
- `main` 的 CI 成功、并且 npm 发布步骤成功或幂等跳过之后执行;
|
|
153
|
+
- 同时推送 GHCR 和 Docker Hub;
|
|
154
|
+
- 每个仓库独立检查版本标签,已存在则跳过,缺失的一侧会补推;
|
|
155
|
+
- 构建带 GHA 缓存、provenance 和 SBOM,仅 `linux/amd64`。
|
|
156
|
+
|
|
157
|
+
GHCR 使用 `GITHUB_TOKEN` 和 `packages: write`,不需要额外 Secret。Docker Hub 需要在仓库 Actions secrets 中配置 `DOCKERHUB_USERNAME` 和 `DOCKERHUB_TOKEN`(Read & Write Token)。CI 会在每次推送时构建镜像并做 smoke,但不会推送。完整发布流程见[发布流程](release.md)。
|
|
158
|
+
|
|
159
|
+
## 故障排查
|
|
160
|
+
|
|
161
|
+
- **启动提示找不到配置**:确认 `./config/bot.config.json` 存在,并且挂载到 `/app/config`。
|
|
162
|
+
- **`EACCES` / `permission denied`**:确认宿主机上的 `config`、`data`、`plugins` 目录属于 UID 1000,或改用命名卷。
|
|
163
|
+
- **WebUI 打不开**:确认配置里 `webui.enabled=true`、`host=0.0.0.0`,并且容器端口已发布到宿主机。
|
|
164
|
+
- **在线安装插件失败**:确认 `installer.enabled=true`、容器能访问 registry,并且 `/app/plugins` 可写。
|
|
165
|
+
- **GHCR 拉取 403/404**:首次发布后到仓库的 Packages 设置里把 `jsbot-tellus` 设为 public,或先 `docker login ghcr.io`。
|
|
166
|
+
- **镜像架构不匹配**:当前镜像只有 `linux/amd64`,ARM 设备需要使用 amd64 模拟或自行构建。
|
package/docs/feature-parity.md
CHANGED
|
@@ -18,7 +18,7 @@
|
|
|
18
18
|
|
|
19
19
|
## 本地插件
|
|
20
20
|
|
|
21
|
-
以下插件保留在本地,但不进入仓库,从 `plugins/<id>/dist`
|
|
21
|
+
以下插件保留在本地,但不进入仓库,从 `plugins/<id>/dist` 自动加载(每次加载前都会尝试自动重建):
|
|
22
22
|
|
|
23
23
|
| 能力 | 位置 | 说明 |
|
|
24
24
|
| ---- | -------------- | -------------------------------------------- |
|
|
@@ -50,7 +50,7 @@
|
|
|
50
50
|
- 插件 setup/start 失败可以回滚。
|
|
51
51
|
- 长消息转 forward,短消息默认引用回复。
|
|
52
52
|
- 配置错误包含路径,未知插件 ID 启动失败。
|
|
53
|
-
- 本地插件可以从 `plugins/<id>/dist`
|
|
53
|
+
- 本地插件可以从 `plugins/<id>/dist` 自动加载并执行;带有 `build` 脚本时每次加载都会先自动重建,失败时回退已有 `dist`。
|
|
54
54
|
- 已安装的 npm 插件包可以在自动重启后加载,安装失败会回滚。
|
|
55
55
|
- 非 SuperAdmin 不能使用 `/plugin` 的任何子命令,包括 `help` 和 `list`。
|
|
56
56
|
- `npm run build` 后 `node dist/app.js` 可用。
|
package/docs/migration.md
CHANGED
|
@@ -8,7 +8,7 @@
|
|
|
8
8
|
|
|
9
9
|
- 安装本地依赖:`npm install --prefix plugins/poke`、`npm install --prefix plugins/llm`
|
|
10
10
|
- 构建本地插件:`npm run build:plugin`
|
|
11
|
-
-
|
|
11
|
+
- 启动和重启时加载:应用会自动扫描 `plugins/<id>/dist`,不需要路径参数
|
|
12
12
|
|
|
13
13
|
应用会跳过与内置插件同 ID 的本地插件。没有加载的插件不能出现在 `plugins` 配置中,否则会因未知插件 ID 启动失败。
|
|
14
14
|
|