@yunzai-ng/core 0.1.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/LICENSE +661 -0
- package/README.md +51 -0
- package/dist/adapter/accounts.d.ts +174 -0
- package/dist/adapter/accounts.d.ts.map +1 -0
- package/dist/adapter/accounts.js +653 -0
- package/dist/adapter/accounts.js.map +1 -0
- package/dist/adapter/bots.d.ts +142 -0
- package/dist/adapter/bots.d.ts.map +1 -0
- package/dist/adapter/bots.js +454 -0
- package/dist/adapter/bots.js.map +1 -0
- package/dist/adapter/host.d.ts +114 -0
- package/dist/adapter/host.d.ts.map +1 -0
- package/dist/adapter/host.js +90 -0
- package/dist/adapter/host.js.map +1 -0
- package/dist/adapter/login.d.ts +174 -0
- package/dist/adapter/login.d.ts.map +1 -0
- package/dist/adapter/login.js +345 -0
- package/dist/adapter/login.js.map +1 -0
- package/dist/adapter/registry.d.ts +102 -0
- package/dist/adapter/registry.d.ts.map +1 -0
- package/dist/adapter/registry.js +150 -0
- package/dist/adapter/registry.js.map +1 -0
- package/dist/config/core-config.d.ts +151 -0
- package/dist/config/core-config.d.ts.map +1 -0
- package/dist/config/core-config.js +338 -0
- package/dist/config/core-config.js.map +1 -0
- package/dist/config/schema.d.ts +449 -0
- package/dist/config/schema.d.ts.map +1 -0
- package/dist/config/schema.js +871 -0
- package/dist/config/schema.js.map +1 -0
- package/dist/config/store.d.ts +184 -0
- package/dist/config/store.d.ts.map +1 -0
- package/dist/config/store.js +428 -0
- package/dist/config/store.js.map +1 -0
- package/dist/config/yaml.d.ts +23 -0
- package/dist/config/yaml.d.ts.map +1 -0
- package/dist/config/yaml.js +108 -0
- package/dist/config/yaml.js.map +1 -0
- package/dist/http/client.d.ts +82 -0
- package/dist/http/client.d.ts.map +1 -0
- package/dist/http/client.js +658 -0
- package/dist/http/client.js.map +1 -0
- package/dist/index.d.ts +77 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +94 -0
- package/dist/index.js.map +1 -0
- package/dist/kernel/app.d.ts +244 -0
- package/dist/kernel/app.d.ts.map +1 -0
- package/dist/kernel/app.js +654 -0
- package/dist/kernel/app.js.map +1 -0
- package/dist/kernel/kv-sink.d.ts +34 -0
- package/dist/kernel/kv-sink.d.ts.map +1 -0
- package/dist/kernel/kv-sink.js +25 -0
- package/dist/kernel/kv-sink.js.map +1 -0
- package/dist/kernel/policy.d.ts +77 -0
- package/dist/kernel/policy.d.ts.map +1 -0
- package/dist/kernel/policy.js +99 -0
- package/dist/kernel/policy.js.map +1 -0
- package/dist/kernel/runtime.d.ts +117 -0
- package/dist/kernel/runtime.d.ts.map +1 -0
- package/dist/kernel/runtime.js +197 -0
- package/dist/kernel/runtime.js.map +1 -0
- package/dist/kernel/sql-sink.d.ts +36 -0
- package/dist/kernel/sql-sink.d.ts.map +1 -0
- package/dist/kernel/sql-sink.js +114 -0
- package/dist/kernel/sql-sink.js.map +1 -0
- package/dist/logger/format.d.ts +67 -0
- package/dist/logger/format.d.ts.map +1 -0
- package/dist/logger/format.js +218 -0
- package/dist/logger/format.js.map +1 -0
- package/dist/logger/index.d.ts +97 -0
- package/dist/logger/index.d.ts.map +1 -0
- package/dist/logger/index.js +363 -0
- package/dist/logger/index.js.map +1 -0
- package/dist/logger/rotate.d.ts +47 -0
- package/dist/logger/rotate.d.ts.map +1 -0
- package/dist/logger/rotate.js +242 -0
- package/dist/logger/rotate.js.map +1 -0
- package/dist/message/segment.d.ts +255 -0
- package/dist/message/segment.d.ts.map +1 -0
- package/dist/message/segment.js +510 -0
- package/dist/message/segment.js.map +1 -0
- package/dist/message/split.d.ts +34 -0
- package/dist/message/split.d.ts.map +1 -0
- package/dist/message/split.js +79 -0
- package/dist/message/split.js.map +1 -0
- package/dist/message/target.d.ts +29 -0
- package/dist/message/target.d.ts.map +1 -0
- package/dist/message/target.js +34 -0
- package/dist/message/target.js.map +1 -0
- package/dist/pipeline/cooldown.d.ts +84 -0
- package/dist/pipeline/cooldown.d.ts.map +1 -0
- package/dist/pipeline/cooldown.js +94 -0
- package/dist/pipeline/cooldown.js.map +1 -0
- package/dist/pipeline/dispatch.d.ts +98 -0
- package/dist/pipeline/dispatch.d.ts.map +1 -0
- package/dist/pipeline/dispatch.js +323 -0
- package/dist/pipeline/dispatch.js.map +1 -0
- package/dist/pipeline/event.d.ts +130 -0
- package/dist/pipeline/event.d.ts.map +1 -0
- package/dist/pipeline/event.js +538 -0
- package/dist/pipeline/event.js.map +1 -0
- package/dist/pipeline/middleware.d.ts +63 -0
- package/dist/pipeline/middleware.d.ts.map +1 -0
- package/dist/pipeline/middleware.js +174 -0
- package/dist/pipeline/middleware.js.map +1 -0
- package/dist/pipeline/prompt.d.ts +80 -0
- package/dist/pipeline/prompt.d.ts.map +1 -0
- package/dist/pipeline/prompt.js +155 -0
- package/dist/pipeline/prompt.js.map +1 -0
- package/dist/pipeline/router.d.ts +98 -0
- package/dist/pipeline/router.d.ts.map +1 -0
- package/dist/pipeline/router.js +489 -0
- package/dist/pipeline/router.js.map +1 -0
- package/dist/platform/detect.d.ts +24 -0
- package/dist/platform/detect.d.ts.map +1 -0
- package/dist/platform/detect.js +178 -0
- package/dist/platform/detect.js.map +1 -0
- package/dist/platform/paths.d.ts +38 -0
- package/dist/platform/paths.d.ts.map +1 -0
- package/dist/platform/paths.js +129 -0
- package/dist/platform/paths.js.map +1 -0
- package/dist/platform/system.d.ts +71 -0
- package/dist/platform/system.d.ts.map +1 -0
- package/dist/platform/system.js +242 -0
- package/dist/platform/system.js.map +1 -0
- package/dist/plugin/context.d.ts +92 -0
- package/dist/plugin/context.d.ts.map +1 -0
- package/dist/plugin/context.js +573 -0
- package/dist/plugin/context.js.map +1 -0
- package/dist/plugin/define.d.ts +92 -0
- package/dist/plugin/define.d.ts.map +1 -0
- package/dist/plugin/define.js +82 -0
- package/dist/plugin/define.js.map +1 -0
- package/dist/plugin/discover.d.ts +106 -0
- package/dist/plugin/discover.d.ts.map +1 -0
- package/dist/plugin/discover.js +254 -0
- package/dist/plugin/discover.js.map +1 -0
- package/dist/plugin/events.d.ts +109 -0
- package/dist/plugin/events.d.ts.map +1 -0
- package/dist/plugin/events.js +209 -0
- package/dist/plugin/events.js.map +1 -0
- package/dist/plugin/hooks.d.ts +266 -0
- package/dist/plugin/hooks.d.ts.map +1 -0
- package/dist/plugin/hooks.js +84 -0
- package/dist/plugin/hooks.js.map +1 -0
- package/dist/plugin/host.d.ts +160 -0
- package/dist/plugin/host.d.ts.map +1 -0
- package/dist/plugin/host.js +546 -0
- package/dist/plugin/host.js.map +1 -0
- package/dist/plugin/market.d.ts +264 -0
- package/dist/plugin/market.d.ts.map +1 -0
- package/dist/plugin/market.js +700 -0
- package/dist/plugin/market.js.map +1 -0
- package/dist/plugin/services.d.ts +116 -0
- package/dist/plugin/services.d.ts.map +1 -0
- package/dist/plugin/services.js +213 -0
- package/dist/plugin/services.js.map +1 -0
- package/dist/plugin/tar.d.ts +65 -0
- package/dist/plugin/tar.d.ts.map +1 -0
- package/dist/plugin/tar.js +277 -0
- package/dist/plugin/tar.js.map +1 -0
- package/dist/render/registry.d.ts +127 -0
- package/dist/render/registry.d.ts.map +1 -0
- package/dist/render/registry.js +306 -0
- package/dist/render/registry.js.map +1 -0
- package/dist/scheduler/index.d.ts +67 -0
- package/dist/scheduler/index.d.ts.map +1 -0
- package/dist/scheduler/index.js +279 -0
- package/dist/scheduler/index.js.map +1 -0
- package/dist/server/api.d.ts +179 -0
- package/dist/server/api.d.ts.map +1 -0
- package/dist/server/api.js +602 -0
- package/dist/server/api.js.map +1 -0
- package/dist/server/auth.d.ts +83 -0
- package/dist/server/auth.d.ts.map +1 -0
- package/dist/server/auth.js +178 -0
- package/dist/server/auth.js.map +1 -0
- package/dist/server/browse.d.ts +60 -0
- package/dist/server/browse.d.ts.map +1 -0
- package/dist/server/browse.js +187 -0
- package/dist/server/browse.js.map +1 -0
- package/dist/server/files.d.ts +27 -0
- package/dist/server/files.d.ts.map +1 -0
- package/dist/server/files.js +76 -0
- package/dist/server/files.js.map +1 -0
- package/dist/server/index.d.ts +189 -0
- package/dist/server/index.d.ts.map +1 -0
- package/dist/server/index.js +1123 -0
- package/dist/server/index.js.map +1 -0
- package/dist/server/table.d.ts +105 -0
- package/dist/server/table.d.ts.map +1 -0
- package/dist/server/table.js +289 -0
- package/dist/server/table.js.map +1 -0
- package/dist/store/index.d.ts +50 -0
- package/dist/store/index.d.ts.map +1 -0
- package/dist/store/index.js +120 -0
- package/dist/store/index.js.map +1 -0
- package/dist/store/json.d.ts +73 -0
- package/dist/store/json.d.ts.map +1 -0
- package/dist/store/json.js +174 -0
- package/dist/store/json.js.map +1 -0
- package/dist/store/kv.d.ts +126 -0
- package/dist/store/kv.d.ts.map +1 -0
- package/dist/store/kv.js +232 -0
- package/dist/store/kv.js.map +1 -0
- package/dist/store/level.d.ts +103 -0
- package/dist/store/level.d.ts.map +1 -0
- package/dist/store/level.js +119 -0
- package/dist/store/level.js.map +1 -0
- package/dist/store/memory.d.ts +61 -0
- package/dist/store/memory.d.ts.map +1 -0
- package/dist/store/memory.js +94 -0
- package/dist/store/memory.js.map +1 -0
- package/dist/store/sql.d.ts +142 -0
- package/dist/store/sql.d.ts.map +1 -0
- package/dist/store/sql.js +246 -0
- package/dist/store/sql.js.map +1 -0
- package/dist/testing/fake.d.ts +109 -0
- package/dist/testing/fake.d.ts.map +1 -0
- package/dist/testing/fake.js +196 -0
- package/dist/testing/fake.js.map +1 -0
- package/dist/testing/index.d.ts +16 -0
- package/dist/testing/index.d.ts.map +1 -0
- package/dist/testing/index.js +16 -0
- package/dist/testing/index.js.map +1 -0
- package/dist/testing/mock-adapter.d.ts +205 -0
- package/dist/testing/mock-adapter.d.ts.map +1 -0
- package/dist/testing/mock-adapter.js +309 -0
- package/dist/testing/mock-adapter.js.map +1 -0
- package/dist/util/deep.d.ts +108 -0
- package/dist/util/deep.d.ts.map +1 -0
- package/dist/util/deep.js +275 -0
- package/dist/util/deep.js.map +1 -0
- package/dist/util/defer.d.ts +107 -0
- package/dist/util/defer.d.ts.map +1 -0
- package/dist/util/defer.js +163 -0
- package/dist/util/defer.js.map +1 -0
- package/dist/util/dispose.d.ts +88 -0
- package/dist/util/dispose.d.ts.map +1 -0
- package/dist/util/dispose.js +143 -0
- package/dist/util/dispose.js.map +1 -0
- package/dist/util/duration.d.ts +28 -0
- package/dist/util/duration.d.ts.map +1 -0
- package/dist/util/duration.js +77 -0
- package/dist/util/duration.js.map +1 -0
- package/dist/util/fs.d.ts +110 -0
- package/dist/util/fs.d.ts.map +1 -0
- package/dist/util/fs.js +269 -0
- package/dist/util/fs.js.map +1 -0
- package/dist/util/id.d.ts +49 -0
- package/dist/util/id.d.ts.map +1 -0
- package/dist/util/id.js +87 -0
- package/dist/util/id.js.map +1 -0
- package/dist/util/lru.d.ts +74 -0
- package/dist/util/lru.d.ts.map +1 -0
- package/dist/util/lru.js +156 -0
- package/dist/util/lru.js.map +1 -0
- package/dist/util/queue.d.ts +64 -0
- package/dist/util/queue.d.ts.map +1 -0
- package/dist/util/queue.js +147 -0
- package/dist/util/queue.js.map +1 -0
- package/dist/util/text.d.ts +86 -0
- package/dist/util/text.d.ts.map +1 -0
- package/dist/util/text.js +182 -0
- package/dist/util/text.js.map +1 -0
- package/package.json +44 -0
- package/src/adapter/accounts.ts +758 -0
- package/src/adapter/bots.ts +582 -0
- package/src/adapter/host.ts +224 -0
- package/src/adapter/login.ts +481 -0
- package/src/adapter/registry.ts +202 -0
- package/src/config/core-config.test.ts +60 -0
- package/src/config/core-config.ts +401 -0
- package/src/config/schema.test.ts +179 -0
- package/src/config/schema.ts +1036 -0
- package/src/config/store.test.ts +245 -0
- package/src/config/store.ts +506 -0
- package/src/config/yaml.ts +119 -0
- package/src/http/client.test.ts +568 -0
- package/src/http/client.ts +777 -0
- package/src/index.ts +106 -0
- package/src/kernel/app.test.ts +267 -0
- package/src/kernel/app.ts +843 -0
- package/src/kernel/kv-sink.ts +58 -0
- package/src/kernel/policy.ts +120 -0
- package/src/kernel/runtime.test.ts +542 -0
- package/src/kernel/runtime.ts +307 -0
- package/src/kernel/sql-sink.ts +154 -0
- package/src/logger/format.ts +259 -0
- package/src/logger/index.ts +427 -0
- package/src/logger/rotate.ts +265 -0
- package/src/message/segment.test.ts +335 -0
- package/src/message/segment.ts +569 -0
- package/src/message/split.ts +97 -0
- package/src/message/target.ts +48 -0
- package/src/pipeline/cooldown.ts +136 -0
- package/src/pipeline/dispatch.ts +419 -0
- package/src/pipeline/event.ts +735 -0
- package/src/pipeline/middleware.test.ts +426 -0
- package/src/pipeline/middleware.ts +199 -0
- package/src/pipeline/prompt.ts +212 -0
- package/src/pipeline/router.test.ts +432 -0
- package/src/pipeline/router.ts +575 -0
- package/src/platform/detect.ts +178 -0
- package/src/platform/paths.ts +147 -0
- package/src/platform/system.test.ts +102 -0
- package/src/platform/system.ts +289 -0
- package/src/plugin/context.test.ts +459 -0
- package/src/plugin/context.ts +757 -0
- package/src/plugin/define.test.ts +120 -0
- package/src/plugin/define.ts +142 -0
- package/src/plugin/discover.test.ts +253 -0
- package/src/plugin/discover.ts +353 -0
- package/src/plugin/events.test.ts +162 -0
- package/src/plugin/events.ts +266 -0
- package/src/plugin/hooks.ts +373 -0
- package/src/plugin/host.test.ts +696 -0
- package/src/plugin/host.ts +738 -0
- package/src/plugin/market.test.ts +781 -0
- package/src/plugin/market.ts +870 -0
- package/src/plugin/services.test.ts +135 -0
- package/src/plugin/services.ts +261 -0
- package/src/plugin/tar.test.ts +158 -0
- package/src/plugin/tar.ts +309 -0
- package/src/render/registry.test.ts +127 -0
- package/src/render/registry.ts +439 -0
- package/src/scheduler/index.ts +357 -0
- package/src/server/api.test.ts +802 -0
- package/src/server/api.ts +869 -0
- package/src/server/auth.ts +201 -0
- package/src/server/browse.test.ts +193 -0
- package/src/server/browse.ts +240 -0
- package/src/server/files.ts +97 -0
- package/src/server/index.test.ts +566 -0
- package/src/server/index.ts +1386 -0
- package/src/server/table.ts +351 -0
- package/src/store/index.ts +156 -0
- package/src/store/json.ts +198 -0
- package/src/store/kv.test.ts +307 -0
- package/src/store/kv.ts +256 -0
- package/src/store/level.ts +167 -0
- package/src/store/memory.ts +109 -0
- package/src/store/sql.test.ts +204 -0
- package/src/store/sql.ts +324 -0
- package/src/testing/fake.ts +297 -0
- package/src/testing/index.ts +15 -0
- package/src/testing/mock-adapter.ts +588 -0
- package/src/util/deep.ts +272 -0
- package/src/util/defer.ts +211 -0
- package/src/util/dispose.ts +169 -0
- package/src/util/duration.ts +82 -0
- package/src/util/fs.ts +279 -0
- package/src/util/id.ts +94 -0
- package/src/util/lru.ts +185 -0
- package/src/util/queue.ts +167 -0
- package/src/util/text.ts +189 -0
package/README.md
ADDED
|
@@ -0,0 +1,51 @@
|
|
|
1
|
+
# @yunzai-ng/core
|
|
2
|
+
|
|
3
|
+
内核实现。插件从这里取 `definePlugin`、`s`(配置 schema)与若干工具。
|
|
4
|
+
|
|
5
|
+
## 唯一入口
|
|
6
|
+
|
|
7
|
+
```ts
|
|
8
|
+
import { definePlugin, s } from "@yunzai-ng/core"
|
|
9
|
+
```
|
|
10
|
+
|
|
11
|
+
`src/index.ts` 刻意用 `export *` 而非逐个列举 —— 逐个列举的清单必然与实现脱节,而漏掉一个类型
|
|
12
|
+
就要使用者改内核。作为交换,各模块自己须克制:**只 `export` 确实供外部使用的符号**。
|
|
13
|
+
|
|
14
|
+
测试替身在 `@yunzai-ng/core/testing` 子路径,**不在主入口** —— 并进去会让替身实现进入生产依赖图。
|
|
15
|
+
|
|
16
|
+
## 目录
|
|
17
|
+
|
|
18
|
+
| 目录 | 职责 |
|
|
19
|
+
|---|---|
|
|
20
|
+
| `kernel/` | 应用生命周期 `create → start → stop`,以及运行期子系统的装配 |
|
|
21
|
+
| `plugin/` | 插件宿主:发现、导入、上下文、卸载、热重载、市场 |
|
|
22
|
+
| `pipeline/` | 消息管线:事件、中间件、路由、冷却、上下文问答、分发 |
|
|
23
|
+
| `config/` | 配置 schema 构造器与 YAML 存取 |
|
|
24
|
+
| `store/` | KV / SQL / JSON / 内存四种存储 |
|
|
25
|
+
| `server/` | 共享 HTTP + WebSocket 服务器、面板 API、鉴权 |
|
|
26
|
+
| `adapter/` | 适配器注册表、账号生命周期、Bot 门面 |
|
|
27
|
+
| `render/` | 渲染注册表(内核不认识 puppeteer) |
|
|
28
|
+
| `scheduler/` | 定时任务 |
|
|
29
|
+
| `logger/` | 日志与轮转 |
|
|
30
|
+
| `http/` | 全框架唯一的 HTTP 客户端 |
|
|
31
|
+
| `platform/` | 目录布局、平台探测、磁盘与 GPU |
|
|
32
|
+
| `util/` | 插件作者最常自己重复实现的那些(切分、LRU、退避重试、脱敏) |
|
|
33
|
+
| `testing/` | 测试替身,经子路径导出 |
|
|
34
|
+
|
|
35
|
+
## 三条不可动的约束
|
|
36
|
+
|
|
37
|
+
**内核不依赖任何插件。** 由 `scripts/check-layering.mjs` 在 CI 里守着。
|
|
38
|
+
|
|
39
|
+
**装配顺序不是任意排列。** 日志早于配置(否则「读配置时出错」无处记录)、存储早于插件(插件
|
|
40
|
+
加载失败要写状态)、`listen()` 晚于插件加载(否则有「面板部分可用」的窗口)。逐条写在
|
|
41
|
+
`kernel/app.ts` 的文件头。
|
|
42
|
+
|
|
43
|
+
**卸载必须完整归还资源。** 每个注册型方法都把 disposer 登记进 `DisposalRegistry`,插件作者
|
|
44
|
+
无从遗漏 —— 否则改十次代码就有十份定时器同时在跑。
|
|
45
|
+
|
|
46
|
+
## 读源码的入口
|
|
47
|
+
|
|
48
|
+
想看「一个插件是怎么跑起来的」:`plugin/host.ts` → `plugin/context.ts` → `plugin/hooks.ts`。
|
|
49
|
+
最后那个是理解全局的关键 —— 它解释了为什么上下文不直接 import 各子系统。
|
|
50
|
+
|
|
51
|
+
想看「一条消息是怎么走的」:`pipeline/dispatch.ts` → `pipeline/router.ts` → `adapter/bots.ts`。
|
|
@@ -0,0 +1,174 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* 模块职责:账号生命周期管理(持久化、连接、重连、状态)+ 实现 `AccountsView`
|
|
3
|
+
* 依赖方向:依赖类型包、KV、适配器注册表、Bot 注册表、宿主工厂;**不认识任何具体协议**
|
|
4
|
+
* 生命周期:随内核创建;每个账号一份 `AccountRuntime`,随账号删除或内核停止回收
|
|
5
|
+
* 注意事项:账号是**数据**(KV 里的 `AccountRecord`),协议是**插件**(`AdapterProvider`),
|
|
6
|
+
* 两者在运行时撮合 —— 故增删账号不必重启进程。四个必须做对的点:
|
|
7
|
+
*
|
|
8
|
+
* **重连要有退避、要能被取消。** 用 `backoffDelay`,日志按次数递减(首次 warn、
|
|
9
|
+
* 之后每 10 次一条);账号一被禁用或删除,pending 的重连定时器立刻清掉。
|
|
10
|
+
*
|
|
11
|
+
* **`connect()` 必须防重入。** 双击「连接」、重连定时器与手动连接撞在一起,都会让两个
|
|
12
|
+
* driver 连同一个账号 —— 表现为消息收两遍、回两遍。用 `#connecting` 做单飞。
|
|
13
|
+
*
|
|
14
|
+
* **每个账号一份 `DisposalRegistry` + 一个 `AbortController`,且顺序要对。** 断开时先
|
|
15
|
+
* abort(让宿主立刻开始丢事件),再回收登记,最后才 await driver 的 `disconnect()`;
|
|
16
|
+
* 反了就会出现「已断开的账号还在往管线里灌事件」。`disconnect()` 同样先 abort 再 await
|
|
17
|
+
* 正在进行的 `connect()` —— 被动接入的适配器要等对端连入才返回,不先 abort 会卡住停机。
|
|
18
|
+
*
|
|
19
|
+
* **适配器插件卸载时账号要同步下线。** `onUnregister` 是同步回调(见 registry.ts),
|
|
20
|
+
* 故此处同步改状态并 abort,异步的 socket 关闭交给 `#closing` 由 `stop()` 兜底 await。
|
|
21
|
+
*/
|
|
22
|
+
import type { AccountRecord, AccountState, AccountsView, KvNamespace, Logger } from "@yunzai-ng/types";
|
|
23
|
+
import type { CoreEventBus } from "../plugin/events.js";
|
|
24
|
+
import type { AdapterEntry, AdapterRegistry } from "./registry.js";
|
|
25
|
+
import type { BotRegistry, SendPolicyView } from "./bots.js";
|
|
26
|
+
import type { AdapterHostFactory } from "./host.js";
|
|
27
|
+
/** 账号管理器构造参数 */
|
|
28
|
+
export interface AccountManagerOptions {
|
|
29
|
+
/** 日志器 */
|
|
30
|
+
readonly logger: Logger;
|
|
31
|
+
/** 存账号记录的 KV 命名空间 */
|
|
32
|
+
readonly kv: KvNamespace;
|
|
33
|
+
/** 适配器注册表 */
|
|
34
|
+
readonly adapters: AdapterRegistry;
|
|
35
|
+
/** Bot 注册表 */
|
|
36
|
+
readonly bots: BotRegistry;
|
|
37
|
+
/** 宿主工厂 */
|
|
38
|
+
readonly createHost: AdapterHostFactory;
|
|
39
|
+
/** 内核事件总线 */
|
|
40
|
+
readonly events: CoreEventBus;
|
|
41
|
+
/** 发送策略视图,透传给每个 Bot 门面 */
|
|
42
|
+
readonly sendPolicy: SendPolicyView;
|
|
43
|
+
}
|
|
44
|
+
/**
|
|
45
|
+
* 账号管理器
|
|
46
|
+
*
|
|
47
|
+
* 既是 WebUI 的增删改查入口,也是 `AccountsView` 的实现(插件通过
|
|
48
|
+
* `ctx.app.accounts` 只读观察)。
|
|
49
|
+
*/
|
|
50
|
+
export declare class AccountManager implements AccountsView {
|
|
51
|
+
#private;
|
|
52
|
+
/**
|
|
53
|
+
* @param opts 构造参数
|
|
54
|
+
*/
|
|
55
|
+
constructor(opts: AccountManagerOptions);
|
|
56
|
+
/** 账号总数 */
|
|
57
|
+
get size(): number;
|
|
58
|
+
/**
|
|
59
|
+
* 从 KV 载入全部账号记录(不连接)
|
|
60
|
+
*
|
|
61
|
+
* 与 `startAll()` 分开:内核 `load` 阶段就该知道有哪些账号(WebUI 要能显示
|
|
62
|
+
* 列表),但连接要等适配器插件全部注册完 —— 否则先加载的账号会因为
|
|
63
|
+
* "适配器未注册"白失败一次。
|
|
64
|
+
* @returns 载入的账号数
|
|
65
|
+
*/
|
|
66
|
+
load(): Promise<number>;
|
|
67
|
+
/**
|
|
68
|
+
* 连接全部已启用的账号
|
|
69
|
+
*
|
|
70
|
+
* 并发连接:一个账号的对端没起来不该让后面的账号排队等它退避完。
|
|
71
|
+
* 单个账号失败只落日志(`connect` 内部已转成 error 状态 + 重连),
|
|
72
|
+
* 所以这里 `allSettled` 之后不需要检查结果。
|
|
73
|
+
*/
|
|
74
|
+
startAll(): Promise<void>;
|
|
75
|
+
/**
|
|
76
|
+
* 列出全部账号及其状态
|
|
77
|
+
* @returns 状态快照数组
|
|
78
|
+
*/
|
|
79
|
+
list(): AccountState[];
|
|
80
|
+
/**
|
|
81
|
+
* 按记录 id 取账号状态
|
|
82
|
+
* @param id 账号记录 id
|
|
83
|
+
* @returns 状态快照;不存在时 undefined
|
|
84
|
+
*/
|
|
85
|
+
get(id: string): AccountState | undefined;
|
|
86
|
+
/**
|
|
87
|
+
* 新建账号
|
|
88
|
+
*
|
|
89
|
+
* 配置先过 `validateAccount()` 再落盘:非法配置一旦存入,只会在下次启动时
|
|
90
|
+
* 表现为一条无从判断原因的连接失败。
|
|
91
|
+
* @param adapterId 适配器 id
|
|
92
|
+
* @param config 账号配置(WebUI 提交的原始对象)
|
|
93
|
+
* @param label 备注名
|
|
94
|
+
* @param enabled 是否立即启用并连接,缺省 true
|
|
95
|
+
* @returns 新建的记录
|
|
96
|
+
* @throws 适配器未注册或配置校验失败时
|
|
97
|
+
*/
|
|
98
|
+
create(adapterId: string, config: unknown, label?: string, enabled?: boolean): Promise<AccountRecord>;
|
|
99
|
+
/**
|
|
100
|
+
* 修改账号配置
|
|
101
|
+
*
|
|
102
|
+
* 改完必须重连:连接参数(地址、token)变了而 socket 还是旧的,
|
|
103
|
+
* 用户会以为"改了没生效"。
|
|
104
|
+
* @param id 账号记录 id
|
|
105
|
+
* @param patch 要改的字段
|
|
106
|
+
* @returns 更新后的记录
|
|
107
|
+
* @throws 账号不存在或配置校验失败时
|
|
108
|
+
*/
|
|
109
|
+
update(id: string, patch: {
|
|
110
|
+
config?: unknown;
|
|
111
|
+
label?: string;
|
|
112
|
+
enabled?: boolean;
|
|
113
|
+
}): Promise<AccountRecord>;
|
|
114
|
+
/**
|
|
115
|
+
* 启用 / 禁用账号
|
|
116
|
+
* @param id 账号记录 id
|
|
117
|
+
* @param enabled 是否启用
|
|
118
|
+
* @returns 更新后的记录
|
|
119
|
+
* @throws 账号不存在时
|
|
120
|
+
*/
|
|
121
|
+
setEnabled(id: string, enabled: boolean): Promise<AccountRecord>;
|
|
122
|
+
/**
|
|
123
|
+
* 删除账号
|
|
124
|
+
* @param id 账号记录 id
|
|
125
|
+
* @returns 是否删掉了(不存在时 false)
|
|
126
|
+
*/
|
|
127
|
+
remove(id: string): Promise<boolean>;
|
|
128
|
+
/**
|
|
129
|
+
* 连接一个账号
|
|
130
|
+
*
|
|
131
|
+
* 幂等且防重入:已在线直接返回,正在连接则复用同一个 promise(文件头第 2 点)。
|
|
132
|
+
* 失败**不抛出异常** —— 账号无法连接属于常态(对端未启动),转为 `error` 状态并
|
|
133
|
+
* 安排重连即可;抛出异常只会使 WebUI 的批量操作在第一个账号处中断。
|
|
134
|
+
* @param id 账号记录 id
|
|
135
|
+
* @throws 账号不存在时
|
|
136
|
+
*/
|
|
137
|
+
connect(id: string): Promise<void>;
|
|
138
|
+
/**
|
|
139
|
+
* 断开一个账号
|
|
140
|
+
* @param id 账号记录 id
|
|
141
|
+
* @param reason 断开原因(落日志与 `bot/offline`)
|
|
142
|
+
*/
|
|
143
|
+
disconnect(id: string, reason?: string): Promise<void>;
|
|
144
|
+
/**
|
|
145
|
+
* 重连一个账号
|
|
146
|
+
* @param id 账号记录 id
|
|
147
|
+
*/
|
|
148
|
+
reconnect(id: string): Promise<void>;
|
|
149
|
+
/**
|
|
150
|
+
* 适配器插件被卸载:同步让它名下的账号下线
|
|
151
|
+
*
|
|
152
|
+
* **同步部分**必须在本函数返回前完成(改状态 + abort + 从 Bot 注册表摘除),
|
|
153
|
+
* 因为调用方是同步的 `Disposer`。异步的 socket 关闭挂在 `rt.closing` 上,
|
|
154
|
+
* 由 `stop()` 兜底 await。见文件头第 4 点。
|
|
155
|
+
* @param adapterId 适配器 id
|
|
156
|
+
* @param entry 摘除的注册条目(仅用于日志)
|
|
157
|
+
*/
|
|
158
|
+
detachAdapter(adapterId: string, entry?: AdapterEntry): void;
|
|
159
|
+
/**
|
|
160
|
+
* 适配器插件重新注册:把它名下已启用的账号连回来
|
|
161
|
+
*
|
|
162
|
+
* 热重载的另一半。不 await:注册通知也发生在同步路径上。
|
|
163
|
+
* @param adapterId 适配器 id
|
|
164
|
+
*/
|
|
165
|
+
onAdapterRegistered(adapterId: string): void;
|
|
166
|
+
/**
|
|
167
|
+
* 停机:断开全部账号
|
|
168
|
+
*
|
|
169
|
+
* 并发断开并等到全部收尾,包括 `detachAdapter` 留下的异步尾巴 ——
|
|
170
|
+
* 否则进程退出时会留下没关的 socket,NapCat 侧要等到 TCP 超时才发现。
|
|
171
|
+
*/
|
|
172
|
+
stop(): Promise<void>;
|
|
173
|
+
}
|
|
174
|
+
//# sourceMappingURL=accounts.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"accounts.d.ts","sourceRoot":"","sources":["../../src/adapter/accounts.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;GAoBG;AACH,OAAO,KAAK,EACV,aAAa,EACb,YAAY,EAEZ,YAAY,EAIZ,WAAW,EACX,MAAM,EACP,MAAM,kBAAkB,CAAA;AACzB,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAA;AAIvD,OAAO,KAAK,EAAE,YAAY,EAAE,eAAe,EAAE,MAAM,eAAe,CAAA;AAClE,OAAO,KAAK,EAAa,WAAW,EAAE,cAAc,EAAE,MAAM,WAAW,CAAA;AAEvE,OAAO,KAAK,EAAE,kBAAkB,EAAqB,MAAM,WAAW,CAAA;AAyCtE,gBAAgB;AAChB,MAAM,WAAW,qBAAqB;IACpC,UAAU;IACV,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAA;IACvB,qBAAqB;IACrB,QAAQ,CAAC,EAAE,EAAE,WAAW,CAAA;IACxB,aAAa;IACb,QAAQ,CAAC,QAAQ,EAAE,eAAe,CAAA;IAClC,cAAc;IACd,QAAQ,CAAC,IAAI,EAAE,WAAW,CAAA;IAC1B,WAAW;IACX,QAAQ,CAAC,UAAU,EAAE,kBAAkB,CAAA;IACvC,aAAa;IACb,QAAQ,CAAC,MAAM,EAAE,YAAY,CAAA;IAC7B,0BAA0B;IAC1B,QAAQ,CAAC,UAAU,EAAE,cAAc,CAAA;CACpC;AAWD;;;;;GAKG;AACH,qBAAa,cAAe,YAAW,YAAY;;IAsBjD;;OAEG;gBACS,IAAI,EAAE,qBAAqB;IAmBvC,WAAW;IACX,IAAI,IAAI,IAAI,MAAM,CAEjB;IAED;;;;;;;OAOG;IACG,IAAI,IAAI,OAAO,CAAC,MAAM,CAAC;IA4B7B;;;;;;OAMG;IACG,QAAQ,IAAI,OAAO,CAAC,IAAI,CAAC;IAW/B;;;OAGG;IACH,IAAI,IAAI,YAAY,EAAE;IAItB;;;;OAIG;IACH,GAAG,CAAC,EAAE,EAAE,MAAM,GAAG,YAAY,GAAG,SAAS;IAOzC;;;;;;;;;;;OAWG;IACG,MAAM,CAAC,SAAS,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,KAAK,CAAC,EAAE,MAAM,EAAE,OAAO,UAAO,GAAG,OAAO,CAAC,aAAa,CAAC;IAoCxG;;;;;;;;;OASG;IACG,MAAM,CAAC,EAAE,EAAE,MAAM,EAAE,KAAK,EAAE;QAAE,MAAM,CAAC,EAAE,OAAO,CAAC;QAAC,KAAK,CAAC,EAAE,MAAM,CAAC;QAAC,OAAO,CAAC,EAAE,OAAO,CAAA;KAAE,GAAG,OAAO,CAAC,aAAa,CAAC;IAkBhH;;;;;;OAMG;IACG,UAAU,CAAC,EAAE,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,GAAG,OAAO,CAAC,aAAa,CAAC;IAItE;;;;OAIG;IACG,MAAM,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;IAc1C;;;;;;;;OAQG;IACG,OAAO,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAcxC;;;;OAIG;IACG,UAAU,CAAC,EAAE,EAAE,MAAM,EAAE,MAAM,SAAS,GAAG,OAAO,CAAC,IAAI,CAAC;IAc5D;;;OAGG;IACG,SAAS,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAK1C;;;;;;;;OAQG;IACH,aAAa,CAAC,SAAS,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,YAAY,GAAG,IAAI;IAuB5D;;;;;OAKG;IACH,mBAAmB,CAAC,SAAS,EAAE,MAAM,GAAG,IAAI;IAU5C;;;;;OAKG;IACG,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC;CAsT5B"}
|