@zhin.js/plugin-repeater 1.1.0 → 1.1.3
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/commands/repeater-status/index.js +10 -0
- package/commands/{repeater-status.ts → repeater-status/index.ts} +4 -4
- package/lib/engine.d.ts +0 -3
- package/lib/engine.d.ts.map +1 -1
- package/lib/engine.js +0 -14
- package/lib/engine.js.map +1 -1
- package/lib/index.d.ts +2 -1
- package/lib/index.d.ts.map +1 -1
- package/lib/index.js +2 -1
- package/lib/index.js.map +1 -1
- package/lib/runtime.d.ts +3 -0
- package/lib/runtime.d.ts.map +1 -0
- package/lib/runtime.js +3 -0
- package/lib/runtime.js.map +1 -0
- package/middlewares/{repeater.js → repeater/index.js} +3 -2
- package/middlewares/{repeater.ts → repeater/index.ts} +3 -3
- package/package.json +12 -7
- package/plugin.js +5 -3
- package/src/engine.ts +0 -15
- package/src/index.ts +1 -2
- package/src/runtime.ts +7 -0
- package/agent/skills/repeater.md +0 -27
- package/commands/repeater-status.js +0 -9
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
// Generated by build-plugin-runtime-entries.mjs. Do not edit.
|
|
2
|
+
import { defineCommand } from 'zhin.js/command';
|
|
3
|
+
import { resolveRepeaterConfig, } from "../../lib/engine.js";
|
|
4
|
+
import { repeaterEngineToken } from "../../lib/runtime.js";
|
|
5
|
+
export default defineCommand({
|
|
6
|
+
description: '查看复读机的运行状态',
|
|
7
|
+
execute({ config, use }) {
|
|
8
|
+
return use(repeaterEngineToken).statusLines(resolveRepeaterConfig(config));
|
|
9
|
+
},
|
|
10
|
+
});
|
|
@@ -1,13 +1,13 @@
|
|
|
1
1
|
import { defineCommand } from 'zhin.js/command';
|
|
2
2
|
import {
|
|
3
|
-
getRepeaterEngine,
|
|
4
3
|
resolveRepeaterConfig,
|
|
5
4
|
type RepeaterConfig,
|
|
6
|
-
} from '
|
|
5
|
+
} from '../../src/engine.js';
|
|
6
|
+
import { repeaterEngineToken } from '../../src/runtime.js';
|
|
7
7
|
|
|
8
8
|
export default defineCommand<RepeaterConfig>({
|
|
9
9
|
description: '查看复读机的运行状态',
|
|
10
|
-
execute({ config }) {
|
|
11
|
-
return
|
|
10
|
+
execute({ config, use }) {
|
|
11
|
+
return use(repeaterEngineToken).statusLines(resolveRepeaterConfig(config));
|
|
12
12
|
},
|
|
13
13
|
});
|
package/lib/engine.d.ts
CHANGED
|
@@ -39,7 +39,4 @@ export declare class RepeaterEngine {
|
|
|
39
39
|
pruneStale(now?: number, expiry?: number, cooldown?: number): void;
|
|
40
40
|
dispose(): void;
|
|
41
41
|
}
|
|
42
|
-
export declare function getRepeaterEngine(): RepeaterEngine;
|
|
43
|
-
/** Test helper — reset the process-wide singleton. */
|
|
44
|
-
export declare function resetRepeaterEngine(): void;
|
|
45
42
|
//# sourceMappingURL=engine.d.ts.map
|
package/lib/engine.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"engine.d.ts","sourceRoot":"","sources":["../src/engine.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,cAAc;IAC7B,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAC3B,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;CAC5B;AAED,eAAO,MAAM,uBAAuB,EAAE,cAIpC,CAAC;AAEH,wBAAgB,qBAAqB,CAAC,GAAG,EAAE,OAAO,GAAG,cAAc,CAMlE;AAOD,MAAM,WAAW,qBAAqB;IACpC,QAAQ,CAAC,YAAY,EAAE;QACrB,QAAQ,CAAC,IAAI,EAAE,SAAS,GAAG,OAAO,GAAG,SAAS,CAAC;QAC/C,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAC;KACrB,CAAC;IACF,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,MAAM,CAAC,EAAE;QAAE,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAC;QAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,MAAM,CAAA;KAAE,GAAG,MAAM,CAAC;IAC3E,QAAQ,CAAC,QAAQ,CAAC,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,CAAC;CACvD;AAED;;;;GAIG;AACH,wBAAgB,cAAc,CAAC,OAAO,EAAE,qBAAqB,GAAG,MAAM,GAAG,IAAI,CAY5E;AASD,MAAM,MAAM,kBAAkB,GAC1B;IAAE,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAA;CAAE,GAC3B;IAAE,QAAQ,CAAC,MAAM,EAAE,QAAQ,CAAC;IAAC,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAA;CAAE,CAAC;AAE5D,qBAAa,cAAc;;;IAezB,IAAI,YAAY,IAAI,MAAM,CAEzB;IAED,IAAI,YAAY,IAAI,MAAM,CAEzB;IAED,IAAI,CAAC,OAAO,EAAE,qBAAqB,EAAE,MAAM,EAAE,cAAc,GAAG,kBAAkB;IAuChF,WAAW,CAAC,MAAM,EAAE,cAAc,GAAG,MAAM;IAW3C,UAAU,CAAC,GAAG,SAAa,EAAE,MAAM,SAAa,EAAE,QAAQ,SAAqB,GAAG,IAAI;IAStF,OAAO,IAAI,IAAI;
|
|
1
|
+
{"version":3,"file":"engine.d.ts","sourceRoot":"","sources":["../src/engine.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,cAAc;IAC7B,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAC3B,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;CAC5B;AAED,eAAO,MAAM,uBAAuB,EAAE,cAIpC,CAAC;AAEH,wBAAgB,qBAAqB,CAAC,GAAG,EAAE,OAAO,GAAG,cAAc,CAMlE;AAOD,MAAM,WAAW,qBAAqB;IACpC,QAAQ,CAAC,YAAY,EAAE;QACrB,QAAQ,CAAC,IAAI,EAAE,SAAS,GAAG,OAAO,GAAG,SAAS,CAAC;QAC/C,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAC;KACrB,CAAC;IACF,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,MAAM,CAAC,EAAE;QAAE,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAC;QAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,MAAM,CAAA;KAAE,GAAG,MAAM,CAAC;IAC3E,QAAQ,CAAC,QAAQ,CAAC,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,CAAC;CACvD;AAED;;;;GAIG;AACH,wBAAgB,cAAc,CAAC,OAAO,EAAE,qBAAqB,GAAG,MAAM,GAAG,IAAI,CAY5E;AASD,MAAM,MAAM,kBAAkB,GAC1B;IAAE,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAA;CAAE,GAC3B;IAAE,QAAQ,CAAC,MAAM,EAAE,QAAQ,CAAC;IAAC,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAA;CAAE,CAAC;AAE5D,qBAAa,cAAc;;;IAezB,IAAI,YAAY,IAAI,MAAM,CAEzB;IAED,IAAI,YAAY,IAAI,MAAM,CAEzB;IAED,IAAI,CAAC,OAAO,EAAE,qBAAqB,EAAE,MAAM,EAAE,cAAc,GAAG,kBAAkB;IAuChF,WAAW,CAAC,MAAM,EAAE,cAAc,GAAG,MAAM;IAW3C,UAAU,CAAC,GAAG,SAAa,EAAE,MAAM,SAAa,EAAE,QAAQ,SAAqB,GAAG,IAAI;IAStF,OAAO,IAAI,IAAI;CAMhB"}
|
package/lib/engine.js
CHANGED
|
@@ -116,20 +116,6 @@ export class RepeaterEngine {
|
|
|
116
116
|
this.#cleanupTimer = undefined;
|
|
117
117
|
this.#groupStates.clear();
|
|
118
118
|
this.#cooldownSet.clear();
|
|
119
|
-
// 单例 dispose 后不得继续服役:下个 getRepeaterEngine() 必须拿到新实例。
|
|
120
|
-
if (shared === this)
|
|
121
|
-
shared = undefined;
|
|
122
119
|
}
|
|
123
120
|
}
|
|
124
|
-
let shared;
|
|
125
|
-
export function getRepeaterEngine() {
|
|
126
|
-
if (!shared)
|
|
127
|
-
shared = new RepeaterEngine();
|
|
128
|
-
return shared;
|
|
129
|
-
}
|
|
130
|
-
/** Test helper — reset the process-wide singleton. */
|
|
131
|
-
export function resetRepeaterEngine() {
|
|
132
|
-
shared?.dispose();
|
|
133
|
-
shared = undefined;
|
|
134
|
-
}
|
|
135
121
|
//# sourceMappingURL=engine.js.map
|
package/lib/engine.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"engine.js","sourceRoot":"","sources":["../src/engine.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"engine.js","sourceRoot":"","sources":["../src/engine.ts"],"names":[],"mappings":"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"}
|
package/lib/index.d.ts
CHANGED
|
@@ -1,3 +1,4 @@
|
|
|
1
|
-
export { DEFAULT_REPEATER_CONFIG, RepeaterEngine,
|
|
1
|
+
export { DEFAULT_REPEATER_CONFIG, RepeaterEngine, resolveGroupId, resolveRepeaterConfig, } from './engine.js';
|
|
2
2
|
export type { RepeaterConfig, RepeaterInboundFields, RepeaterTickResult } from './engine.js';
|
|
3
|
+
export { repeaterEngineToken } from './runtime.js';
|
|
3
4
|
//# sourceMappingURL=index.d.ts.map
|
package/lib/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,uBAAuB,EACvB,cAAc,EACd,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,uBAAuB,EACvB,cAAc,EACd,cAAc,EACd,qBAAqB,GACtB,MAAM,aAAa,CAAC;AACrB,YAAY,EAAE,cAAc,EAAE,qBAAqB,EAAE,kBAAkB,EAAE,MAAM,aAAa,CAAC;AAC7F,OAAO,EAAE,mBAAmB,EAAE,MAAM,cAAc,CAAC"}
|
package/lib/index.js
CHANGED
|
@@ -1,2 +1,3 @@
|
|
|
1
|
-
export { DEFAULT_REPEATER_CONFIG, RepeaterEngine,
|
|
1
|
+
export { DEFAULT_REPEATER_CONFIG, RepeaterEngine, resolveGroupId, resolveRepeaterConfig, } from './engine.js';
|
|
2
|
+
export { repeaterEngineToken } from './runtime.js';
|
|
2
3
|
//# sourceMappingURL=index.js.map
|
package/lib/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,uBAAuB,EACvB,cAAc,EACd,
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,uBAAuB,EACvB,cAAc,EACd,cAAc,EACd,qBAAqB,GACtB,MAAM,aAAa,CAAC;AAErB,OAAO,EAAE,mBAAmB,EAAE,MAAM,cAAc,CAAC"}
|
package/lib/runtime.d.ts
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"runtime.d.ts","sourceRoot":"","sources":["../src/runtime.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AAElD,eAAO,MAAM,mBAAmB,yCAG/B,CAAC"}
|
package/lib/runtime.js
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"runtime.js","sourceRoot":"","sources":["../src/runtime.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,SAAS,CAAC;AAGtC,MAAM,CAAC,MAAM,mBAAmB,GAAG,WAAW,CAC5C,sBAAsB,EACtB,kCAAkC,CACnC,CAAC"}
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
// Generated by build-plugin-runtime-entries.mjs. Do not edit.
|
|
2
2
|
import { defineMiddleware } from 'zhin.js/middleware';
|
|
3
|
-
import {
|
|
3
|
+
import { resolveRepeaterConfig, } from "../../lib/engine.js";
|
|
4
|
+
import { repeaterEngineToken } from "../../lib/runtime.js";
|
|
4
5
|
/**
|
|
5
6
|
* Runtime `Message` 是 conversation 原生:`conversation.kind/id` 直接喂给引擎
|
|
6
7
|
* (引擎契约 `RepeaterInboundFields.conversation`,私聊由引擎判 null 跳过)。
|
|
@@ -11,7 +12,7 @@ export default defineMiddleware({
|
|
|
11
12
|
target: 'inbound',
|
|
12
13
|
async handle(context, next) {
|
|
13
14
|
const config = resolveRepeaterConfig(context.config);
|
|
14
|
-
const engine =
|
|
15
|
+
const engine = context.use(repeaterEngineToken);
|
|
15
16
|
const result = engine.tick({
|
|
16
17
|
conversation: {
|
|
17
18
|
kind: context.input.conversation.kind,
|
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
import { defineMiddleware } from 'zhin.js/middleware';
|
|
2
2
|
import type { Message } from '@zhin.js/core/runtime';
|
|
3
3
|
import {
|
|
4
|
-
getRepeaterEngine,
|
|
5
4
|
resolveRepeaterConfig,
|
|
6
5
|
type RepeaterConfig,
|
|
7
|
-
} from '
|
|
6
|
+
} from '../../src/engine.js';
|
|
7
|
+
import { repeaterEngineToken } from '../../src/runtime.js';
|
|
8
8
|
|
|
9
9
|
/**
|
|
10
10
|
* Runtime `Message` 是 conversation 原生:`conversation.kind/id` 直接喂给引擎
|
|
@@ -16,7 +16,7 @@ export default defineMiddleware<Message, RepeaterConfig>({
|
|
|
16
16
|
target: 'inbound',
|
|
17
17
|
async handle(context, next) {
|
|
18
18
|
const config = resolveRepeaterConfig(context.config);
|
|
19
|
-
const engine =
|
|
19
|
+
const engine = context.use(repeaterEngineToken);
|
|
20
20
|
const result = engine.tick({
|
|
21
21
|
conversation: {
|
|
22
22
|
kind: context.input.conversation.kind,
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@zhin.js/plugin-repeater",
|
|
3
|
-
"version": "1.1.
|
|
3
|
+
"version": "1.1.3",
|
|
4
4
|
"description": "Repeater plugin for Zhin.js — auto-repeat when group members echo the same content (Plugin Runtime)",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"main": "./lib/index.js",
|
|
@@ -20,7 +20,7 @@
|
|
|
20
20
|
"middlewares",
|
|
21
21
|
"src",
|
|
22
22
|
"lib",
|
|
23
|
-
"
|
|
23
|
+
"skills",
|
|
24
24
|
"README.md"
|
|
25
25
|
],
|
|
26
26
|
"keywords": [
|
|
@@ -41,12 +41,13 @@
|
|
|
41
41
|
},
|
|
42
42
|
"license": "MIT",
|
|
43
43
|
"dependencies": {
|
|
44
|
-
"@zhin.js/core": "1.1.
|
|
44
|
+
"@zhin.js/core": "1.1.38",
|
|
45
|
+
"@zhin.js/skill": "1.1.2"
|
|
45
46
|
},
|
|
46
47
|
"devDependencies": {
|
|
47
48
|
"typescript": "^6.0.3",
|
|
48
49
|
"vitest": "^4.1.10",
|
|
49
|
-
"zhin.js": "1.1.
|
|
50
|
+
"zhin.js": "1.1.3"
|
|
50
51
|
},
|
|
51
52
|
"repository": {
|
|
52
53
|
"type": "git",
|
|
@@ -74,14 +75,18 @@
|
|
|
74
75
|
{
|
|
75
76
|
"package": "@zhin.js/middleware",
|
|
76
77
|
"api": "^1.0.0"
|
|
78
|
+
},
|
|
79
|
+
{
|
|
80
|
+
"package": "@zhin.js/skill",
|
|
81
|
+
"api": "^1.0.0"
|
|
77
82
|
}
|
|
78
83
|
],
|
|
79
84
|
"plugins": []
|
|
80
85
|
},
|
|
81
86
|
"peerDependencies": {
|
|
82
|
-
"@zhin.js/command": "^1.1.
|
|
83
|
-
"@zhin.js/middleware": "^1.1.
|
|
84
|
-
"zhin.js": "^1.1.
|
|
87
|
+
"@zhin.js/command": "^1.1.2",
|
|
88
|
+
"@zhin.js/middleware": "^1.1.2",
|
|
89
|
+
"zhin.js": "^1.1.3"
|
|
85
90
|
},
|
|
86
91
|
"peerDependenciesMeta": {
|
|
87
92
|
"@zhin.js/command": {
|
package/plugin.js
CHANGED
|
@@ -1,13 +1,15 @@
|
|
|
1
1
|
// Generated by build-plugin-runtime-entries.mjs. Do not edit.
|
|
2
2
|
import { definePlugin } from 'zhin.js';
|
|
3
|
-
import {
|
|
3
|
+
import { RepeaterEngine } from "./lib/engine.js";
|
|
4
|
+
import { repeaterEngineToken } from "./lib/runtime.js";
|
|
4
5
|
export default definePlugin({
|
|
5
6
|
name: 'repeater',
|
|
6
7
|
metadata: {
|
|
7
8
|
displayName: 'Repeater',
|
|
8
9
|
},
|
|
9
10
|
setup(context) {
|
|
10
|
-
const engine =
|
|
11
|
-
context.
|
|
11
|
+
const engine = new RepeaterEngine();
|
|
12
|
+
context.resources.provide(repeaterEngineToken, engine);
|
|
13
|
+
return () => engine.dispose();
|
|
12
14
|
},
|
|
13
15
|
});
|
package/src/engine.ts
CHANGED
|
@@ -150,20 +150,5 @@ export class RepeaterEngine {
|
|
|
150
150
|
this.#cleanupTimer = undefined;
|
|
151
151
|
this.#groupStates.clear();
|
|
152
152
|
this.#cooldownSet.clear();
|
|
153
|
-
// 单例 dispose 后不得继续服役:下个 getRepeaterEngine() 必须拿到新实例。
|
|
154
|
-
if (shared === this) shared = undefined;
|
|
155
153
|
}
|
|
156
154
|
}
|
|
157
|
-
|
|
158
|
-
let shared: RepeaterEngine | undefined;
|
|
159
|
-
|
|
160
|
-
export function getRepeaterEngine(): RepeaterEngine {
|
|
161
|
-
if (!shared) shared = new RepeaterEngine();
|
|
162
|
-
return shared;
|
|
163
|
-
}
|
|
164
|
-
|
|
165
|
-
/** Test helper — reset the process-wide singleton. */
|
|
166
|
-
export function resetRepeaterEngine(): void {
|
|
167
|
-
shared?.dispose();
|
|
168
|
-
shared = undefined;
|
|
169
|
-
}
|
package/src/index.ts
CHANGED
|
@@ -1,9 +1,8 @@
|
|
|
1
1
|
export {
|
|
2
2
|
DEFAULT_REPEATER_CONFIG,
|
|
3
3
|
RepeaterEngine,
|
|
4
|
-
getRepeaterEngine,
|
|
5
|
-
resetRepeaterEngine,
|
|
6
4
|
resolveGroupId,
|
|
7
5
|
resolveRepeaterConfig,
|
|
8
6
|
} from './engine.js';
|
|
9
7
|
export type { RepeaterConfig, RepeaterInboundFields, RepeaterTickResult } from './engine.js';
|
|
8
|
+
export { repeaterEngineToken } from './runtime.js';
|
package/src/runtime.ts
ADDED
package/agent/skills/repeater.md
DELETED
|
@@ -1,27 +0,0 @@
|
|
|
1
|
-
---
|
|
2
|
-
name: repeater
|
|
3
|
-
description: >-
|
|
4
|
-
复读机:群内连续多人发送相同消息时 Endpoint 自动跟读。纯中间件行为,
|
|
5
|
-
由阈值和冷却配置控制,无 AI 工具。
|
|
6
|
-
keywords:
|
|
7
|
-
- repeater
|
|
8
|
-
- 复读
|
|
9
|
-
- 复读机
|
|
10
|
-
- 跟读
|
|
11
|
-
- echo
|
|
12
|
-
tags:
|
|
13
|
-
- repeater
|
|
14
|
-
- fun
|
|
15
|
-
- group
|
|
16
|
-
tools: []
|
|
17
|
-
---
|
|
18
|
-
|
|
19
|
-
# 复读机
|
|
20
|
-
|
|
21
|
-
中间件自动检测群内连续相同消息,达到阈值后 Endpoint 跟读一次。无 AI 工具可调用。
|
|
22
|
-
|
|
23
|
-
## 行为
|
|
24
|
-
|
|
25
|
-
- 默认阈值:连续 3 条相同消息触发跟读
|
|
26
|
-
- 跟读后进入冷却期,避免刷屏
|
|
27
|
-
- 通过命令 `repeater-status` 查看/切换当前群的开关状态
|
|
@@ -1,9 +0,0 @@
|
|
|
1
|
-
// Generated by build-plugin-runtime-entries.mjs. Do not edit.
|
|
2
|
-
import { defineCommand } from 'zhin.js/command';
|
|
3
|
-
import { getRepeaterEngine, resolveRepeaterConfig, } from "../lib/engine.js";
|
|
4
|
-
export default defineCommand({
|
|
5
|
-
description: '查看复读机的运行状态',
|
|
6
|
-
execute({ config }) {
|
|
7
|
-
return getRepeaterEngine().statusLines(resolveRepeaterConfig(config));
|
|
8
|
-
},
|
|
9
|
-
});
|