@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
|
@@ -0,0 +1,114 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* 模块职责:`AdapterHost` 实现 —— 内核给每个账号的宿主能力面
|
|
3
|
+
* 依赖方向:依赖类型包、plugin/hooks 的 `ServerSink`、util/*;**不认识任何适配器实现**
|
|
4
|
+
* 生命周期:一个账号一个实例;随账号断开而回收(`DisposalRegistry` 逆序)
|
|
5
|
+
* 注意事项:适配器插件只拿到这个对象,拿不到内核内部。它解决三件事:
|
|
6
|
+
*
|
|
7
|
+
* **事件投递的闸门。** `BotDriver` 的契约写明「内核会在卸载时调 `disconnect()`,并断言
|
|
8
|
+
* 其后不再有事件投递进来」。这条断言由此处兑现:`signal` 一经 abort,`submit()` 立即开始
|
|
9
|
+
* 丢弃并计数 —— 不能指望适配器一定彻底停掉自己的 socket 回调,否则热重载后会收到重复回复。
|
|
10
|
+
*
|
|
11
|
+
* **服务器晚绑定。** HTTP 服务器装配得比适配器插件晚,故 `server` 是 getter、`ServerSink`
|
|
12
|
+
* 是取值函数:适配器在 `createBot()` 里存下 host,真要挂 webhook 时读到的是当时的实际状态。
|
|
13
|
+
* 服务器没开时 `info.enabled` 为 false,适配器据此告知使用者「该模式需要内置服务器」。
|
|
14
|
+
*
|
|
15
|
+
* **资源回收。** `route` / `websocket` / `createCache` / `onDispose` 全部登记进账号自己的
|
|
16
|
+
* `DisposalRegistry`,账号一断开即全部回收,适配器不必自行记录。
|
|
17
|
+
*
|
|
18
|
+
* 工厂分两层是刻意的:内核装配时绑定一次全局依赖,账号管理器每次连接只补「该账号」专属
|
|
19
|
+
* 的几项 —— 于是账号管理器不必认识分发器与服务器,`adapter` 层也不会反向依赖 `pipeline`。
|
|
20
|
+
*/
|
|
21
|
+
import type { AccountRecord, AccountStatus, AdapterHost, BotApi, IncomingEvent, KvNamespace, Logger, PolicyView } from "@yunzai-ng/types";
|
|
22
|
+
import type { ServerSink } from "../plugin/hooks.js";
|
|
23
|
+
import type { DisposalRegistry } from "../util/dispose.js";
|
|
24
|
+
/** 状态上报的附加信息 */
|
|
25
|
+
export interface StatusDetail {
|
|
26
|
+
/** 错误消息 */
|
|
27
|
+
error?: string;
|
|
28
|
+
/** 账号昵称 */
|
|
29
|
+
nickname?: string;
|
|
30
|
+
}
|
|
31
|
+
/** 宿主工厂的全局依赖(内核装配时绑定一次) */
|
|
32
|
+
export interface AdapterHostDeps {
|
|
33
|
+
/**
|
|
34
|
+
* 基础日志器
|
|
35
|
+
*
|
|
36
|
+
* 工厂会自己派生带 `adapter`/`account` 字段的 child —— `AdapterHost.logger`
|
|
37
|
+
* 的契约是"已带这两个字段",由这里兑现而不是靠调用方记得。
|
|
38
|
+
*/
|
|
39
|
+
readonly logger: Logger;
|
|
40
|
+
/**
|
|
41
|
+
* 适配器数据的 KV 根命名空间
|
|
42
|
+
*
|
|
43
|
+
* 每个账号取得的是 `<root>/<adapterId>/<accountId>`:两个账号即使运行同一个
|
|
44
|
+
* 适配器亦不会相互覆写键,而同一账号重连后仍可读回其此前写入的数据
|
|
45
|
+
*(NapCat 的 `echo` 序号与登录态缓存均依赖该机制)。
|
|
46
|
+
*/
|
|
47
|
+
readonly kv: KvNamespace;
|
|
48
|
+
/** 内核策略视图 */
|
|
49
|
+
readonly policy: PolicyView;
|
|
50
|
+
/**
|
|
51
|
+
* 取当前的服务器登记面
|
|
52
|
+
*
|
|
53
|
+
* 取函数而非直接传值:服务器子系统装好之前 `hooks.server` 是"不可用"占位,
|
|
54
|
+
* 之后会被整体替换掉。见文件头第 2 点。
|
|
55
|
+
*/
|
|
56
|
+
readonly server: () => ServerSink;
|
|
57
|
+
/**
|
|
58
|
+
* 把事件送进管线
|
|
59
|
+
*
|
|
60
|
+
* 由内核注入(最终指向 `EventDispatcher.submit`)。宿主不认识分发器,
|
|
61
|
+
* 否则 adapter 层就反过来依赖 pipeline 层了。
|
|
62
|
+
* @param event 通用事件
|
|
63
|
+
* @param bot 收到该事件的 Bot
|
|
64
|
+
*/
|
|
65
|
+
readonly dispatch: (event: IncomingEvent, bot: BotApi) => void;
|
|
66
|
+
}
|
|
67
|
+
/** 单次连接的账号侧参数 */
|
|
68
|
+
export interface AdapterHostParams {
|
|
69
|
+
/** 账号记录 */
|
|
70
|
+
readonly record: AccountRecord;
|
|
71
|
+
/** 本次连接的取消信号源 */
|
|
72
|
+
readonly controller: AbortController;
|
|
73
|
+
/** 本次连接的回收登记簿 */
|
|
74
|
+
readonly registry: DisposalRegistry;
|
|
75
|
+
/**
|
|
76
|
+
* 上报账号状态
|
|
77
|
+
* @param status 新状态
|
|
78
|
+
* @param detail 附加信息
|
|
79
|
+
*/
|
|
80
|
+
readonly setStatus: (status: AccountStatus, detail?: StatusDetail) => void;
|
|
81
|
+
}
|
|
82
|
+
/** 宿主句柄:`host` 交给适配器,其余留给账号管理器 */
|
|
83
|
+
export interface AdapterHostHandle {
|
|
84
|
+
/** 交给 `createBot()` 的宿主对象 */
|
|
85
|
+
readonly host: AdapterHost;
|
|
86
|
+
/**
|
|
87
|
+
* 绑定事件归属的 Bot
|
|
88
|
+
*
|
|
89
|
+
* 必须在 `createBot()` 返回、门面建好之后调用。宿主先于驱动存在
|
|
90
|
+
* (驱动是靠宿主创建出来的),所以这个槽位只能后填。
|
|
91
|
+
* @param bot Bot 门面
|
|
92
|
+
*/
|
|
93
|
+
attach(bot: BotApi): void;
|
|
94
|
+
/** 解绑:此后事件一律丢弃 */
|
|
95
|
+
detach(): void;
|
|
96
|
+
/** 被丢弃的事件数(诊断用:非 0 说明适配器停止不彻底) */
|
|
97
|
+
readonly dropped: number;
|
|
98
|
+
}
|
|
99
|
+
/** 宿主工厂 */
|
|
100
|
+
export type AdapterHostFactory = (params: AdapterHostParams) => AdapterHostHandle;
|
|
101
|
+
/**
|
|
102
|
+
* 绑定全局依赖,得到宿主工厂
|
|
103
|
+
* @param deps 全局依赖
|
|
104
|
+
* @returns 宿主工厂
|
|
105
|
+
*/
|
|
106
|
+
export declare function createAdapterHostFactory(deps: AdapterHostDeps): AdapterHostFactory;
|
|
107
|
+
/**
|
|
108
|
+
* 创建一个账号宿主
|
|
109
|
+
* @param deps 全局依赖
|
|
110
|
+
* @param params 账号侧参数
|
|
111
|
+
* @returns 宿主句柄
|
|
112
|
+
*/
|
|
113
|
+
export declare function createAdapterHost(deps: AdapterHostDeps, params: AdapterHostParams): AdapterHostHandle;
|
|
114
|
+
//# sourceMappingURL=host.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"host.d.ts","sourceRoot":"","sources":["../../src/adapter/host.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;GAmBG;AACH,OAAO,KAAK,EACV,aAAa,EACb,aAAa,EACb,WAAW,EACX,MAAM,EAIN,aAAa,EACb,WAAW,EACX,MAAM,EACN,UAAU,EAMX,MAAM,kBAAkB,CAAA;AACzB,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,oBAAoB,CAAA;AACpD,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAA;AAG1D,gBAAgB;AAChB,MAAM,WAAW,YAAY;IAC3B,WAAW;IACX,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,WAAW;IACX,QAAQ,CAAC,EAAE,MAAM,CAAA;CAClB;AAED,2BAA2B;AAC3B,MAAM,WAAW,eAAe;IAC9B;;;;;OAKG;IACH,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAA;IACvB;;;;;;OAMG;IACH,QAAQ,CAAC,EAAE,EAAE,WAAW,CAAA;IACxB,aAAa;IACb,QAAQ,CAAC,MAAM,EAAE,UAAU,CAAA;IAC3B;;;;;OAKG;IACH,QAAQ,CAAC,MAAM,EAAE,MAAM,UAAU,CAAA;IACjC;;;;;;;OAOG;IACH,QAAQ,CAAC,QAAQ,EAAE,CAAC,KAAK,EAAE,aAAa,EAAE,GAAG,EAAE,MAAM,KAAK,IAAI,CAAA;CAC/D;AAED,iBAAiB;AACjB,MAAM,WAAW,iBAAiB;IAChC,WAAW;IACX,QAAQ,CAAC,MAAM,EAAE,aAAa,CAAA;IAC9B,iBAAiB;IACjB,QAAQ,CAAC,UAAU,EAAE,eAAe,CAAA;IACpC,iBAAiB;IACjB,QAAQ,CAAC,QAAQ,EAAE,gBAAgB,CAAA;IACnC;;;;OAIG;IACH,QAAQ,CAAC,SAAS,EAAE,CAAC,MAAM,EAAE,aAAa,EAAE,MAAM,CAAC,EAAE,YAAY,KAAK,IAAI,CAAA;CAC3E;AAED,kCAAkC;AAClC,MAAM,WAAW,iBAAiB;IAChC,6BAA6B;IAC7B,QAAQ,CAAC,IAAI,EAAE,WAAW,CAAA;IAC1B;;;;;;OAMG;IACH,MAAM,CAAC,GAAG,EAAE,MAAM,GAAG,IAAI,CAAA;IACzB,kBAAkB;IAClB,MAAM,IAAI,IAAI,CAAA;IACd,kCAAkC;IAClC,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAA;CACzB;AAED,WAAW;AACX,MAAM,MAAM,kBAAkB,GAAG,CAAC,MAAM,EAAE,iBAAiB,KAAK,iBAAiB,CAAA;AAEjF;;;;GAIG;AACH,wBAAgB,wBAAwB,CAAC,IAAI,EAAE,eAAe,GAAG,kBAAkB,CAElF;AAED;;;;;GAKG;AACH,wBAAgB,iBAAiB,CAAC,IAAI,EAAE,eAAe,EAAE,MAAM,EAAE,iBAAiB,GAAG,iBAAiB,CAoFrG"}
|
|
@@ -0,0 +1,90 @@
|
|
|
1
|
+
import { createCache } from "../util/lru.js";
|
|
2
|
+
/**
|
|
3
|
+
* 绑定全局依赖,得到宿主工厂
|
|
4
|
+
* @param deps 全局依赖
|
|
5
|
+
* @returns 宿主工厂
|
|
6
|
+
*/
|
|
7
|
+
export function createAdapterHostFactory(deps) {
|
|
8
|
+
return params => createAdapterHost(deps, params);
|
|
9
|
+
}
|
|
10
|
+
/**
|
|
11
|
+
* 创建一个账号宿主
|
|
12
|
+
* @param deps 全局依赖
|
|
13
|
+
* @param params 账号侧参数
|
|
14
|
+
* @returns 宿主句柄
|
|
15
|
+
*/
|
|
16
|
+
export function createAdapterHost(deps, params) {
|
|
17
|
+
const { record, registry, setStatus } = params;
|
|
18
|
+
const adapterId = record.adapterId;
|
|
19
|
+
const accountId = record.id;
|
|
20
|
+
const signal = params.controller.signal;
|
|
21
|
+
const logger = deps.logger.child({ adapter: adapterId, account: accountId });
|
|
22
|
+
/** 路由挂载前缀 */
|
|
23
|
+
const scope = `/adapter/${adapterId}`;
|
|
24
|
+
/** 事件归属的 Bot;`createBot()` 之后才有 */
|
|
25
|
+
let bot;
|
|
26
|
+
/** 丢弃的事件数 */
|
|
27
|
+
let dropped = 0;
|
|
28
|
+
/** 是否已就"投递到无主宿主"提醒过 */
|
|
29
|
+
let warnedNoBot = false;
|
|
30
|
+
const host = {
|
|
31
|
+
logger,
|
|
32
|
+
signal,
|
|
33
|
+
policy: deps.policy,
|
|
34
|
+
kv: deps.kv.sub(adapterId).sub(accountId),
|
|
35
|
+
// 快照 + 复制 config:适配器往 config 上随手写字段是常事,
|
|
36
|
+
// 若给的是原对象,那些临时字段会被账号管理器一并持久化下去,
|
|
37
|
+
// 下次启动时又被当成用户配置读回来
|
|
38
|
+
account: { ...record, config: { ...record.config } },
|
|
39
|
+
// getter:服务器可能在适配器加载之后才启动,见文件头第 2 点
|
|
40
|
+
get server() {
|
|
41
|
+
return deps.server().info;
|
|
42
|
+
},
|
|
43
|
+
submit: (event) => {
|
|
44
|
+
// 闸门一:账号已停用 / 插件已卸载。这是 BotDriver 契约里
|
|
45
|
+
// "断开后不再有事件投递进来"的兑现处
|
|
46
|
+
if (signal.aborted) {
|
|
47
|
+
dropped++;
|
|
48
|
+
return;
|
|
49
|
+
}
|
|
50
|
+
// 闸门二:尚未绑定 Bot。适配器在 connect() 完成前即收到事件,
|
|
51
|
+
// 此时不存在可用于回复的对象,继续处理只会在管线中抛错
|
|
52
|
+
if (bot === undefined) {
|
|
53
|
+
dropped++;
|
|
54
|
+
if (!warnedNoBot) {
|
|
55
|
+
warnedNoBot = true;
|
|
56
|
+
logger.warn("在 Bot 就绪前收到事件,已丢弃:请在 connect() 解析之后再开始投递事件");
|
|
57
|
+
}
|
|
58
|
+
return;
|
|
59
|
+
}
|
|
60
|
+
deps.dispatch(event, bot);
|
|
61
|
+
},
|
|
62
|
+
route: (method, path, handler, routeOpts) =>
|
|
63
|
+
// 登记进账号的回收簿:账号一断开,webhook 端点必须跟着消失,
|
|
64
|
+
// 否则平台还在往一个没人接的地址推事件
|
|
65
|
+
registry.add(deps.server().route(scope, method, path, handler, routeOpts), `route:${method} ${scope}${path}`),
|
|
66
|
+
websocket: (path, handler, wsOpts) => registry.add(deps.server().websocket(scope, path, handler, wsOpts), `ws:${scope}${path}`),
|
|
67
|
+
createCache: (cacheOpts) => {
|
|
68
|
+
const cache = createCache(cacheOpts);
|
|
69
|
+
// clear 而不是置 undefined:适配器可能还握着这个缓存对象的引用,
|
|
70
|
+
// 清空能立刻把内存还回去,之后即使被误用也只是全部 miss
|
|
71
|
+
registry.add(() => cache.clear(), "cache");
|
|
72
|
+
return cache;
|
|
73
|
+
},
|
|
74
|
+
onDispose: (fn) => void registry.add(fn, "adapter:onDispose"),
|
|
75
|
+
setStatus: (status, detail) => setStatus(status, detail)
|
|
76
|
+
};
|
|
77
|
+
return {
|
|
78
|
+
host,
|
|
79
|
+
attach: (next) => {
|
|
80
|
+
bot = next;
|
|
81
|
+
},
|
|
82
|
+
detach: () => {
|
|
83
|
+
bot = undefined;
|
|
84
|
+
},
|
|
85
|
+
get dropped() {
|
|
86
|
+
return dropped;
|
|
87
|
+
}
|
|
88
|
+
};
|
|
89
|
+
}
|
|
90
|
+
//# sourceMappingURL=host.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"host.js","sourceRoot":"","sources":["../../src/adapter/host.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,174 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* 模块职责:交互式登录会话(实现 `LoginSession`)与登录会话管理器
|
|
3
|
+
* 依赖方向:依赖类型包与 util/*;通过注入的回调创建账号,**不认识账号管理器**
|
|
4
|
+
* 生命周期:一次登录一个会话;成功/失败/取消后短暂留存供 WebUI 展示结果,然后自毁
|
|
5
|
+
* 注意事项:内核不知道扫码、短信验证码、填 token 有什么区别,只提供两个原语:**推一步给用户看**
|
|
6
|
+
* (`push`)与**等用户答一次**(`ask`)。扫码是 push(qrcode) + push(progress),短信是
|
|
7
|
+
* ask(手机号) + ask(验证码) —— 故前端不必为每个新平台改一行代码。三处必须做对:
|
|
8
|
+
*
|
|
9
|
+
* **`start()` 同步返回。** 登录要等用户操作、动辄几十秒,HTTP 请求不能挂在那儿,故
|
|
10
|
+
* `login()` 在后台跑,前端拿会话 id 去轮询或订阅。
|
|
11
|
+
*
|
|
12
|
+
* **`ask` 带序号。** 用户连点两次提交或网络重发时,迟到的那次答复不能拿去满足**下一个**
|
|
13
|
+
* 问题(把手机号填进验证码框),故 `answer()` 必须带 `seq`,对不上就拒绝。
|
|
14
|
+
*
|
|
15
|
+
* **一切都有上限**:步骤数、每次提问的超时、整个会话的 TTL,结束即自毁 —— 一个人点开
|
|
16
|
+
* 登录页就走开,不该留下一个永远挂着的 promise 和一张常驻内存的二维码。
|
|
17
|
+
*/
|
|
18
|
+
import type { AccountRecord, AdapterRegistryView, LoginPrompt, LoginStep, Logger } from "@yunzai-ng/types";
|
|
19
|
+
/** 单次提问的缺省超时(毫秒),与 `LoginPrompt.timeout` 文档一致 */
|
|
20
|
+
export declare const DEFAULT_LOGIN_PROMPT_TIMEOUT = 180000;
|
|
21
|
+
/** 整个登录会话的硬上限(毫秒):扫码最多两三分钟,十分钟足够宽裕 */
|
|
22
|
+
export declare const DEFAULT_LOGIN_TTL = 600000;
|
|
23
|
+
/** 登录会话状态 */
|
|
24
|
+
export type LoginStatus = "running" | "done" | "failed" | "cancelled";
|
|
25
|
+
/** 正在等待用户回答的提问 */
|
|
26
|
+
export interface PendingPrompt {
|
|
27
|
+
/** 提问序号,回答时必须带回 */
|
|
28
|
+
readonly seq: number;
|
|
29
|
+
/** 提问内容 */
|
|
30
|
+
readonly prompt: LoginPrompt;
|
|
31
|
+
/** 超时时刻(毫秒时间戳),前端据此显示倒计时 */
|
|
32
|
+
readonly deadline: number;
|
|
33
|
+
}
|
|
34
|
+
/** 登录会话快照,WebUI 的唯一数据来源 */
|
|
35
|
+
export interface LoginSnapshot {
|
|
36
|
+
/** 会话 id */
|
|
37
|
+
readonly id: string;
|
|
38
|
+
/** 适配器 id */
|
|
39
|
+
readonly adapterId: string;
|
|
40
|
+
/** 登录方式 id */
|
|
41
|
+
readonly mode: string;
|
|
42
|
+
/** 当前状态 */
|
|
43
|
+
readonly status: LoginStatus;
|
|
44
|
+
/** 已推送的步骤,按时间顺序 */
|
|
45
|
+
readonly steps: readonly LoginStep[];
|
|
46
|
+
/** 正在等待的提问;没有则 undefined */
|
|
47
|
+
readonly pending: PendingPrompt | undefined;
|
|
48
|
+
/** 失败原因 */
|
|
49
|
+
readonly error: string | undefined;
|
|
50
|
+
/** 成功时创建出的账号记录 id */
|
|
51
|
+
readonly accountId: string | undefined;
|
|
52
|
+
/** 开始时刻(毫秒时间戳) */
|
|
53
|
+
readonly startedAt: number;
|
|
54
|
+
/** 最后变化时刻(毫秒时间戳),前端据此判断是否需要重绘 */
|
|
55
|
+
readonly updatedAt: number;
|
|
56
|
+
}
|
|
57
|
+
/** 登录管理器构造参数 */
|
|
58
|
+
export interface LoginManagerOptions {
|
|
59
|
+
/** 日志器 */
|
|
60
|
+
readonly logger: Logger;
|
|
61
|
+
/** 适配器注册表视图 */
|
|
62
|
+
readonly adapters: AdapterRegistryView;
|
|
63
|
+
/**
|
|
64
|
+
* 登录成功后落账号
|
|
65
|
+
*
|
|
66
|
+
* 注入而非直接依赖账号管理器:否则 login → accounts → login 就绕成环了。
|
|
67
|
+
* @param adapterId 适配器 id
|
|
68
|
+
* @param config 登录产出的账号配置
|
|
69
|
+
* @param label 账号备注名
|
|
70
|
+
* @returns 新建的账号记录
|
|
71
|
+
*/
|
|
72
|
+
readonly createAccount: (adapterId: string, config: Record<string, unknown>, label?: string) => Promise<AccountRecord>;
|
|
73
|
+
/** 会话硬上限,缺省 `DEFAULT_LOGIN_TTL` */
|
|
74
|
+
readonly ttl?: number;
|
|
75
|
+
}
|
|
76
|
+
/** 会话内部状态 */
|
|
77
|
+
interface SessionState {
|
|
78
|
+
/** 会话 id */
|
|
79
|
+
readonly id: string;
|
|
80
|
+
/** 适配器 id */
|
|
81
|
+
readonly adapterId: string;
|
|
82
|
+
/** 登录方式 */
|
|
83
|
+
readonly mode: string;
|
|
84
|
+
/** 账号备注名 */
|
|
85
|
+
readonly label: string | undefined;
|
|
86
|
+
/** 取消信号源 */
|
|
87
|
+
readonly controller: AbortController;
|
|
88
|
+
/** 已推送步骤 */
|
|
89
|
+
readonly steps: LoginStep[];
|
|
90
|
+
/** 当前状态 */
|
|
91
|
+
status: LoginStatus;
|
|
92
|
+
/** 正在等待的提问 */
|
|
93
|
+
pending: PendingPrompt | undefined;
|
|
94
|
+
/** 交付答复 */
|
|
95
|
+
resolveAsk: ((value: unknown) => void) | undefined;
|
|
96
|
+
/** 终止等待 */
|
|
97
|
+
rejectAsk: ((err: Error) => void) | undefined;
|
|
98
|
+
/** 会话 TTL 定时器 */
|
|
99
|
+
ttlTimer: NodeJS.Timeout | undefined;
|
|
100
|
+
/** 结束后自毁定时器 */
|
|
101
|
+
reapTimer: NodeJS.Timeout | undefined;
|
|
102
|
+
/** 提问序号发号器 */
|
|
103
|
+
seq: number;
|
|
104
|
+
/** 失败原因 */
|
|
105
|
+
error: string | undefined;
|
|
106
|
+
/** 成功创建的账号 id */
|
|
107
|
+
accountId: string | undefined;
|
|
108
|
+
/** 开始时刻 */
|
|
109
|
+
readonly startedAt: number;
|
|
110
|
+
/** 最后变化时刻 */
|
|
111
|
+
updatedAt: number;
|
|
112
|
+
}
|
|
113
|
+
/**
|
|
114
|
+
* 交互式登录会话管理器
|
|
115
|
+
*
|
|
116
|
+
* WebUI 侧的用法:`start()` 拿到 id → 轮询/订阅 `snapshot(id)` → 遇到
|
|
117
|
+
* `pending` 就渲染输入框,用户提交后 `answer(id, seq, value)` → 直到
|
|
118
|
+
* `status` 不再是 `running`。
|
|
119
|
+
*/
|
|
120
|
+
export declare class LoginManager {
|
|
121
|
+
#private;
|
|
122
|
+
/**
|
|
123
|
+
* @param opts 构造参数
|
|
124
|
+
*/
|
|
125
|
+
constructor(opts: LoginManagerOptions);
|
|
126
|
+
/** 进行中的会话数 */
|
|
127
|
+
get running(): number;
|
|
128
|
+
/**
|
|
129
|
+
* 开始一次交互式登录
|
|
130
|
+
*
|
|
131
|
+
* **同步返回**,登录流程在后台跑,见文件头第 1 点。
|
|
132
|
+
* @param adapterId 适配器 id
|
|
133
|
+
* @param mode 登录方式 id
|
|
134
|
+
* @param label 账号备注名
|
|
135
|
+
* @returns 初始快照
|
|
136
|
+
* @throws 适配器不存在、不支持交互式登录、或方式 id 无效时
|
|
137
|
+
*/
|
|
138
|
+
start(adapterId: string, mode: string, label?: string): LoginSnapshot;
|
|
139
|
+
/**
|
|
140
|
+
* 读一个会话的快照
|
|
141
|
+
* @param id 会话 id
|
|
142
|
+
* @returns 快照;会话不存在(或已自毁)时 undefined
|
|
143
|
+
*/
|
|
144
|
+
snapshot(id: string): LoginSnapshot | undefined;
|
|
145
|
+
/**
|
|
146
|
+
* 列出全部会话
|
|
147
|
+
* @returns 快照数组,按开始时间
|
|
148
|
+
*/
|
|
149
|
+
list(): LoginSnapshot[];
|
|
150
|
+
/**
|
|
151
|
+
* 提交用户的答复
|
|
152
|
+
* @param id 会话 id
|
|
153
|
+
* @param seq 提问序号,必须与 `pending.seq` 一致
|
|
154
|
+
* @param value 用户输入
|
|
155
|
+
* @returns 是否被接受
|
|
156
|
+
*/
|
|
157
|
+
answer(id: string, seq: number, value: unknown): boolean;
|
|
158
|
+
/**
|
|
159
|
+
* 取消一个会话
|
|
160
|
+
* @param id 会话 id
|
|
161
|
+
* @returns 是否取消成功(会话不存在或已结束时 false)
|
|
162
|
+
*/
|
|
163
|
+
cancel(id: string): boolean;
|
|
164
|
+
/** 取消全部会话并清理(停机时调用) */
|
|
165
|
+
stop(): void;
|
|
166
|
+
/**
|
|
167
|
+
* 生成快照
|
|
168
|
+
* @param state 会话状态
|
|
169
|
+
* @returns 快照
|
|
170
|
+
*/
|
|
171
|
+
snapshotOf(state: SessionState): LoginSnapshot;
|
|
172
|
+
}
|
|
173
|
+
export {};
|
|
174
|
+
//# sourceMappingURL=login.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"login.d.ts","sourceRoot":"","sources":["../../src/adapter/login.ts"],"names":[],"mappings":"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"}
|