@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.
Files changed (357) hide show
  1. package/LICENSE +661 -0
  2. package/README.md +51 -0
  3. package/dist/adapter/accounts.d.ts +174 -0
  4. package/dist/adapter/accounts.d.ts.map +1 -0
  5. package/dist/adapter/accounts.js +653 -0
  6. package/dist/adapter/accounts.js.map +1 -0
  7. package/dist/adapter/bots.d.ts +142 -0
  8. package/dist/adapter/bots.d.ts.map +1 -0
  9. package/dist/adapter/bots.js +454 -0
  10. package/dist/adapter/bots.js.map +1 -0
  11. package/dist/adapter/host.d.ts +114 -0
  12. package/dist/adapter/host.d.ts.map +1 -0
  13. package/dist/adapter/host.js +90 -0
  14. package/dist/adapter/host.js.map +1 -0
  15. package/dist/adapter/login.d.ts +174 -0
  16. package/dist/adapter/login.d.ts.map +1 -0
  17. package/dist/adapter/login.js +345 -0
  18. package/dist/adapter/login.js.map +1 -0
  19. package/dist/adapter/registry.d.ts +102 -0
  20. package/dist/adapter/registry.d.ts.map +1 -0
  21. package/dist/adapter/registry.js +150 -0
  22. package/dist/adapter/registry.js.map +1 -0
  23. package/dist/config/core-config.d.ts +151 -0
  24. package/dist/config/core-config.d.ts.map +1 -0
  25. package/dist/config/core-config.js +338 -0
  26. package/dist/config/core-config.js.map +1 -0
  27. package/dist/config/schema.d.ts +449 -0
  28. package/dist/config/schema.d.ts.map +1 -0
  29. package/dist/config/schema.js +871 -0
  30. package/dist/config/schema.js.map +1 -0
  31. package/dist/config/store.d.ts +184 -0
  32. package/dist/config/store.d.ts.map +1 -0
  33. package/dist/config/store.js +428 -0
  34. package/dist/config/store.js.map +1 -0
  35. package/dist/config/yaml.d.ts +23 -0
  36. package/dist/config/yaml.d.ts.map +1 -0
  37. package/dist/config/yaml.js +108 -0
  38. package/dist/config/yaml.js.map +1 -0
  39. package/dist/http/client.d.ts +82 -0
  40. package/dist/http/client.d.ts.map +1 -0
  41. package/dist/http/client.js +658 -0
  42. package/dist/http/client.js.map +1 -0
  43. package/dist/index.d.ts +77 -0
  44. package/dist/index.d.ts.map +1 -0
  45. package/dist/index.js +94 -0
  46. package/dist/index.js.map +1 -0
  47. package/dist/kernel/app.d.ts +244 -0
  48. package/dist/kernel/app.d.ts.map +1 -0
  49. package/dist/kernel/app.js +654 -0
  50. package/dist/kernel/app.js.map +1 -0
  51. package/dist/kernel/kv-sink.d.ts +34 -0
  52. package/dist/kernel/kv-sink.d.ts.map +1 -0
  53. package/dist/kernel/kv-sink.js +25 -0
  54. package/dist/kernel/kv-sink.js.map +1 -0
  55. package/dist/kernel/policy.d.ts +77 -0
  56. package/dist/kernel/policy.d.ts.map +1 -0
  57. package/dist/kernel/policy.js +99 -0
  58. package/dist/kernel/policy.js.map +1 -0
  59. package/dist/kernel/runtime.d.ts +117 -0
  60. package/dist/kernel/runtime.d.ts.map +1 -0
  61. package/dist/kernel/runtime.js +197 -0
  62. package/dist/kernel/runtime.js.map +1 -0
  63. package/dist/kernel/sql-sink.d.ts +36 -0
  64. package/dist/kernel/sql-sink.d.ts.map +1 -0
  65. package/dist/kernel/sql-sink.js +114 -0
  66. package/dist/kernel/sql-sink.js.map +1 -0
  67. package/dist/logger/format.d.ts +67 -0
  68. package/dist/logger/format.d.ts.map +1 -0
  69. package/dist/logger/format.js +218 -0
  70. package/dist/logger/format.js.map +1 -0
  71. package/dist/logger/index.d.ts +97 -0
  72. package/dist/logger/index.d.ts.map +1 -0
  73. package/dist/logger/index.js +363 -0
  74. package/dist/logger/index.js.map +1 -0
  75. package/dist/logger/rotate.d.ts +47 -0
  76. package/dist/logger/rotate.d.ts.map +1 -0
  77. package/dist/logger/rotate.js +242 -0
  78. package/dist/logger/rotate.js.map +1 -0
  79. package/dist/message/segment.d.ts +255 -0
  80. package/dist/message/segment.d.ts.map +1 -0
  81. package/dist/message/segment.js +510 -0
  82. package/dist/message/segment.js.map +1 -0
  83. package/dist/message/split.d.ts +34 -0
  84. package/dist/message/split.d.ts.map +1 -0
  85. package/dist/message/split.js +79 -0
  86. package/dist/message/split.js.map +1 -0
  87. package/dist/message/target.d.ts +29 -0
  88. package/dist/message/target.d.ts.map +1 -0
  89. package/dist/message/target.js +34 -0
  90. package/dist/message/target.js.map +1 -0
  91. package/dist/pipeline/cooldown.d.ts +84 -0
  92. package/dist/pipeline/cooldown.d.ts.map +1 -0
  93. package/dist/pipeline/cooldown.js +94 -0
  94. package/dist/pipeline/cooldown.js.map +1 -0
  95. package/dist/pipeline/dispatch.d.ts +98 -0
  96. package/dist/pipeline/dispatch.d.ts.map +1 -0
  97. package/dist/pipeline/dispatch.js +323 -0
  98. package/dist/pipeline/dispatch.js.map +1 -0
  99. package/dist/pipeline/event.d.ts +130 -0
  100. package/dist/pipeline/event.d.ts.map +1 -0
  101. package/dist/pipeline/event.js +538 -0
  102. package/dist/pipeline/event.js.map +1 -0
  103. package/dist/pipeline/middleware.d.ts +63 -0
  104. package/dist/pipeline/middleware.d.ts.map +1 -0
  105. package/dist/pipeline/middleware.js +174 -0
  106. package/dist/pipeline/middleware.js.map +1 -0
  107. package/dist/pipeline/prompt.d.ts +80 -0
  108. package/dist/pipeline/prompt.d.ts.map +1 -0
  109. package/dist/pipeline/prompt.js +155 -0
  110. package/dist/pipeline/prompt.js.map +1 -0
  111. package/dist/pipeline/router.d.ts +98 -0
  112. package/dist/pipeline/router.d.ts.map +1 -0
  113. package/dist/pipeline/router.js +489 -0
  114. package/dist/pipeline/router.js.map +1 -0
  115. package/dist/platform/detect.d.ts +24 -0
  116. package/dist/platform/detect.d.ts.map +1 -0
  117. package/dist/platform/detect.js +178 -0
  118. package/dist/platform/detect.js.map +1 -0
  119. package/dist/platform/paths.d.ts +38 -0
  120. package/dist/platform/paths.d.ts.map +1 -0
  121. package/dist/platform/paths.js +129 -0
  122. package/dist/platform/paths.js.map +1 -0
  123. package/dist/platform/system.d.ts +71 -0
  124. package/dist/platform/system.d.ts.map +1 -0
  125. package/dist/platform/system.js +242 -0
  126. package/dist/platform/system.js.map +1 -0
  127. package/dist/plugin/context.d.ts +92 -0
  128. package/dist/plugin/context.d.ts.map +1 -0
  129. package/dist/plugin/context.js +573 -0
  130. package/dist/plugin/context.js.map +1 -0
  131. package/dist/plugin/define.d.ts +92 -0
  132. package/dist/plugin/define.d.ts.map +1 -0
  133. package/dist/plugin/define.js +82 -0
  134. package/dist/plugin/define.js.map +1 -0
  135. package/dist/plugin/discover.d.ts +106 -0
  136. package/dist/plugin/discover.d.ts.map +1 -0
  137. package/dist/plugin/discover.js +254 -0
  138. package/dist/plugin/discover.js.map +1 -0
  139. package/dist/plugin/events.d.ts +109 -0
  140. package/dist/plugin/events.d.ts.map +1 -0
  141. package/dist/plugin/events.js +209 -0
  142. package/dist/plugin/events.js.map +1 -0
  143. package/dist/plugin/hooks.d.ts +266 -0
  144. package/dist/plugin/hooks.d.ts.map +1 -0
  145. package/dist/plugin/hooks.js +84 -0
  146. package/dist/plugin/hooks.js.map +1 -0
  147. package/dist/plugin/host.d.ts +160 -0
  148. package/dist/plugin/host.d.ts.map +1 -0
  149. package/dist/plugin/host.js +546 -0
  150. package/dist/plugin/host.js.map +1 -0
  151. package/dist/plugin/market.d.ts +264 -0
  152. package/dist/plugin/market.d.ts.map +1 -0
  153. package/dist/plugin/market.js +700 -0
  154. package/dist/plugin/market.js.map +1 -0
  155. package/dist/plugin/services.d.ts +116 -0
  156. package/dist/plugin/services.d.ts.map +1 -0
  157. package/dist/plugin/services.js +213 -0
  158. package/dist/plugin/services.js.map +1 -0
  159. package/dist/plugin/tar.d.ts +65 -0
  160. package/dist/plugin/tar.d.ts.map +1 -0
  161. package/dist/plugin/tar.js +277 -0
  162. package/dist/plugin/tar.js.map +1 -0
  163. package/dist/render/registry.d.ts +127 -0
  164. package/dist/render/registry.d.ts.map +1 -0
  165. package/dist/render/registry.js +306 -0
  166. package/dist/render/registry.js.map +1 -0
  167. package/dist/scheduler/index.d.ts +67 -0
  168. package/dist/scheduler/index.d.ts.map +1 -0
  169. package/dist/scheduler/index.js +279 -0
  170. package/dist/scheduler/index.js.map +1 -0
  171. package/dist/server/api.d.ts +179 -0
  172. package/dist/server/api.d.ts.map +1 -0
  173. package/dist/server/api.js +602 -0
  174. package/dist/server/api.js.map +1 -0
  175. package/dist/server/auth.d.ts +83 -0
  176. package/dist/server/auth.d.ts.map +1 -0
  177. package/dist/server/auth.js +178 -0
  178. package/dist/server/auth.js.map +1 -0
  179. package/dist/server/browse.d.ts +60 -0
  180. package/dist/server/browse.d.ts.map +1 -0
  181. package/dist/server/browse.js +187 -0
  182. package/dist/server/browse.js.map +1 -0
  183. package/dist/server/files.d.ts +27 -0
  184. package/dist/server/files.d.ts.map +1 -0
  185. package/dist/server/files.js +76 -0
  186. package/dist/server/files.js.map +1 -0
  187. package/dist/server/index.d.ts +189 -0
  188. package/dist/server/index.d.ts.map +1 -0
  189. package/dist/server/index.js +1123 -0
  190. package/dist/server/index.js.map +1 -0
  191. package/dist/server/table.d.ts +105 -0
  192. package/dist/server/table.d.ts.map +1 -0
  193. package/dist/server/table.js +289 -0
  194. package/dist/server/table.js.map +1 -0
  195. package/dist/store/index.d.ts +50 -0
  196. package/dist/store/index.d.ts.map +1 -0
  197. package/dist/store/index.js +120 -0
  198. package/dist/store/index.js.map +1 -0
  199. package/dist/store/json.d.ts +73 -0
  200. package/dist/store/json.d.ts.map +1 -0
  201. package/dist/store/json.js +174 -0
  202. package/dist/store/json.js.map +1 -0
  203. package/dist/store/kv.d.ts +126 -0
  204. package/dist/store/kv.d.ts.map +1 -0
  205. package/dist/store/kv.js +232 -0
  206. package/dist/store/kv.js.map +1 -0
  207. package/dist/store/level.d.ts +103 -0
  208. package/dist/store/level.d.ts.map +1 -0
  209. package/dist/store/level.js +119 -0
  210. package/dist/store/level.js.map +1 -0
  211. package/dist/store/memory.d.ts +61 -0
  212. package/dist/store/memory.d.ts.map +1 -0
  213. package/dist/store/memory.js +94 -0
  214. package/dist/store/memory.js.map +1 -0
  215. package/dist/store/sql.d.ts +142 -0
  216. package/dist/store/sql.d.ts.map +1 -0
  217. package/dist/store/sql.js +246 -0
  218. package/dist/store/sql.js.map +1 -0
  219. package/dist/testing/fake.d.ts +109 -0
  220. package/dist/testing/fake.d.ts.map +1 -0
  221. package/dist/testing/fake.js +196 -0
  222. package/dist/testing/fake.js.map +1 -0
  223. package/dist/testing/index.d.ts +16 -0
  224. package/dist/testing/index.d.ts.map +1 -0
  225. package/dist/testing/index.js +16 -0
  226. package/dist/testing/index.js.map +1 -0
  227. package/dist/testing/mock-adapter.d.ts +205 -0
  228. package/dist/testing/mock-adapter.d.ts.map +1 -0
  229. package/dist/testing/mock-adapter.js +309 -0
  230. package/dist/testing/mock-adapter.js.map +1 -0
  231. package/dist/util/deep.d.ts +108 -0
  232. package/dist/util/deep.d.ts.map +1 -0
  233. package/dist/util/deep.js +275 -0
  234. package/dist/util/deep.js.map +1 -0
  235. package/dist/util/defer.d.ts +107 -0
  236. package/dist/util/defer.d.ts.map +1 -0
  237. package/dist/util/defer.js +163 -0
  238. package/dist/util/defer.js.map +1 -0
  239. package/dist/util/dispose.d.ts +88 -0
  240. package/dist/util/dispose.d.ts.map +1 -0
  241. package/dist/util/dispose.js +143 -0
  242. package/dist/util/dispose.js.map +1 -0
  243. package/dist/util/duration.d.ts +28 -0
  244. package/dist/util/duration.d.ts.map +1 -0
  245. package/dist/util/duration.js +77 -0
  246. package/dist/util/duration.js.map +1 -0
  247. package/dist/util/fs.d.ts +110 -0
  248. package/dist/util/fs.d.ts.map +1 -0
  249. package/dist/util/fs.js +269 -0
  250. package/dist/util/fs.js.map +1 -0
  251. package/dist/util/id.d.ts +49 -0
  252. package/dist/util/id.d.ts.map +1 -0
  253. package/dist/util/id.js +87 -0
  254. package/dist/util/id.js.map +1 -0
  255. package/dist/util/lru.d.ts +74 -0
  256. package/dist/util/lru.d.ts.map +1 -0
  257. package/dist/util/lru.js +156 -0
  258. package/dist/util/lru.js.map +1 -0
  259. package/dist/util/queue.d.ts +64 -0
  260. package/dist/util/queue.d.ts.map +1 -0
  261. package/dist/util/queue.js +147 -0
  262. package/dist/util/queue.js.map +1 -0
  263. package/dist/util/text.d.ts +86 -0
  264. package/dist/util/text.d.ts.map +1 -0
  265. package/dist/util/text.js +182 -0
  266. package/dist/util/text.js.map +1 -0
  267. package/package.json +44 -0
  268. package/src/adapter/accounts.ts +758 -0
  269. package/src/adapter/bots.ts +582 -0
  270. package/src/adapter/host.ts +224 -0
  271. package/src/adapter/login.ts +481 -0
  272. package/src/adapter/registry.ts +202 -0
  273. package/src/config/core-config.test.ts +60 -0
  274. package/src/config/core-config.ts +401 -0
  275. package/src/config/schema.test.ts +179 -0
  276. package/src/config/schema.ts +1036 -0
  277. package/src/config/store.test.ts +245 -0
  278. package/src/config/store.ts +506 -0
  279. package/src/config/yaml.ts +119 -0
  280. package/src/http/client.test.ts +568 -0
  281. package/src/http/client.ts +777 -0
  282. package/src/index.ts +106 -0
  283. package/src/kernel/app.test.ts +267 -0
  284. package/src/kernel/app.ts +843 -0
  285. package/src/kernel/kv-sink.ts +58 -0
  286. package/src/kernel/policy.ts +120 -0
  287. package/src/kernel/runtime.test.ts +542 -0
  288. package/src/kernel/runtime.ts +307 -0
  289. package/src/kernel/sql-sink.ts +154 -0
  290. package/src/logger/format.ts +259 -0
  291. package/src/logger/index.ts +427 -0
  292. package/src/logger/rotate.ts +265 -0
  293. package/src/message/segment.test.ts +335 -0
  294. package/src/message/segment.ts +569 -0
  295. package/src/message/split.ts +97 -0
  296. package/src/message/target.ts +48 -0
  297. package/src/pipeline/cooldown.ts +136 -0
  298. package/src/pipeline/dispatch.ts +419 -0
  299. package/src/pipeline/event.ts +735 -0
  300. package/src/pipeline/middleware.test.ts +426 -0
  301. package/src/pipeline/middleware.ts +199 -0
  302. package/src/pipeline/prompt.ts +212 -0
  303. package/src/pipeline/router.test.ts +432 -0
  304. package/src/pipeline/router.ts +575 -0
  305. package/src/platform/detect.ts +178 -0
  306. package/src/platform/paths.ts +147 -0
  307. package/src/platform/system.test.ts +102 -0
  308. package/src/platform/system.ts +289 -0
  309. package/src/plugin/context.test.ts +459 -0
  310. package/src/plugin/context.ts +757 -0
  311. package/src/plugin/define.test.ts +120 -0
  312. package/src/plugin/define.ts +142 -0
  313. package/src/plugin/discover.test.ts +253 -0
  314. package/src/plugin/discover.ts +353 -0
  315. package/src/plugin/events.test.ts +162 -0
  316. package/src/plugin/events.ts +266 -0
  317. package/src/plugin/hooks.ts +373 -0
  318. package/src/plugin/host.test.ts +696 -0
  319. package/src/plugin/host.ts +738 -0
  320. package/src/plugin/market.test.ts +781 -0
  321. package/src/plugin/market.ts +870 -0
  322. package/src/plugin/services.test.ts +135 -0
  323. package/src/plugin/services.ts +261 -0
  324. package/src/plugin/tar.test.ts +158 -0
  325. package/src/plugin/tar.ts +309 -0
  326. package/src/render/registry.test.ts +127 -0
  327. package/src/render/registry.ts +439 -0
  328. package/src/scheduler/index.ts +357 -0
  329. package/src/server/api.test.ts +802 -0
  330. package/src/server/api.ts +869 -0
  331. package/src/server/auth.ts +201 -0
  332. package/src/server/browse.test.ts +193 -0
  333. package/src/server/browse.ts +240 -0
  334. package/src/server/files.ts +97 -0
  335. package/src/server/index.test.ts +566 -0
  336. package/src/server/index.ts +1386 -0
  337. package/src/server/table.ts +351 -0
  338. package/src/store/index.ts +156 -0
  339. package/src/store/json.ts +198 -0
  340. package/src/store/kv.test.ts +307 -0
  341. package/src/store/kv.ts +256 -0
  342. package/src/store/level.ts +167 -0
  343. package/src/store/memory.ts +109 -0
  344. package/src/store/sql.test.ts +204 -0
  345. package/src/store/sql.ts +324 -0
  346. package/src/testing/fake.ts +297 -0
  347. package/src/testing/index.ts +15 -0
  348. package/src/testing/mock-adapter.ts +588 -0
  349. package/src/util/deep.ts +272 -0
  350. package/src/util/defer.ts +211 -0
  351. package/src/util/dispose.ts +169 -0
  352. package/src/util/duration.ts +82 -0
  353. package/src/util/fs.ts +279 -0
  354. package/src/util/id.ts +94 -0
  355. package/src/util/lru.ts +185 -0
  356. package/src/util/queue.ts +167 -0
  357. package/src/util/text.ts +189 -0
@@ -0,0 +1 @@
1
+ {"version":3,"file":"accounts.js","sourceRoot":"","sources":["../../src/adapter/accounts.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,142 @@
1
+ /**
2
+ * 模块职责:Bot 门面(`BotFacade`)与 Bot 注册表(实现 `BotRegistryView`)
3
+ * 依赖方向:依赖类型包、message/*、util/*;**不认识适配器实现,也不认识账号管理器**
4
+ * 生命周期:门面随账号连接建立、随断开销毁;注册表随内核创建
5
+ * 注意事项:门面存在的理由是**把发送语义收进内核**,使适配器只需实现「把这一段消息段发出去」。
6
+ * 以下四件一律由门面负责:`splitLength` 超长切分、`sequential` 同会话串行(`KeyedQueue`,
7
+ * 键与 `e.prompt()` 共用 `targetKey`)、`sendTimeout` 发送超时、`recallAfter` /
8
+ * `autoForward`。故 `SendOptions` 四个字段里**只有 `quote` 会传到驱动**。
9
+ *
10
+ * **超时只是「不再等」,取消不了已发出的请求** —— 消息可能仍然送达,故超时后绝不自动重试,
11
+ * 否则用户会收到两条一样的回复。
12
+ *
13
+ * **只有发送类调用套 `sendTimeout`。** 查询类不套:`getGroupMemberList` 在千人群上本就要
14
+ * 十几秒,按「发一条消息」的尺度掐掉它是错的,那属于适配器自己的 HTTP 超时。
15
+ */
16
+ import type { BotApi, BotDriver, BotRegistryView, Logger, MessageSentInfo } from "@yunzai-ng/types";
17
+ /**
18
+ * 门面需要的发送策略视图
19
+ *
20
+ * 三个字段都在**每次发送时**读取,因此实现方可以用 getter 直连当前配置快照:
21
+ * 用户在 WebUI 里把 `splitLength` 从 3000 改成 1000,下一条消息就生效,
22
+ * 不需要重连账号。
23
+ */
24
+ export interface SendPolicyView {
25
+ /** 单条消息最大文本长度;`<= 0` 表示不切分 */
26
+ readonly splitLength: number;
27
+ /** 单条消息的发送超时(毫秒) */
28
+ readonly sendTimeout: number;
29
+ /** 同一会话内是否串行发送 */
30
+ readonly sequential: boolean;
31
+ }
32
+ /** Bot 门面构造参数 */
33
+ export interface BotFacadeOptions {
34
+ /** 适配器创建的驱动 */
35
+ readonly driver: BotDriver;
36
+ /** 账号记录 id */
37
+ readonly accountId: string;
38
+ /** 日志器 */
39
+ readonly logger: Logger;
40
+ /** 发送策略视图 */
41
+ readonly policy: SendPolicyView;
42
+ /**
43
+ * 一条消息发出后的回调,用于触发 `message/sent` 总线事件
44
+ *
45
+ * 取回调而非直接传 `CoreEventBus`:本文件的职责边界是「把发送语义收进内核」,
46
+ * 认识事件总线就等于认识插件系统,而门面连账号管理器都不认识(见文件头)。
47
+ * 回调由账号管理器传入 —— 它本来就持有总线。
48
+ *
49
+ * 省略即不通知,`createBotFacade` 的现有调用方因此无须改动。
50
+ */
51
+ readonly onSent?: (info: MessageSentInfo) => void;
52
+ }
53
+ /** Bot 门面:插件拿到的 `BotApi` 实体 */
54
+ export interface BotFacade extends BotApi {
55
+ /** 账号记录 id(`BotApi` 里没有,注册表与 WebUI 用它定位) */
56
+ readonly accountId: string;
57
+ /**
58
+ * 关闭门面
59
+ *
60
+ * 此后所有调用立刻 reject,待撤回的定时器一并取消。
61
+ * **不会**调 `driver.disconnect()` —— 驱动的生死由账号管理器负责,
62
+ * 门面只管"别再让插件用这个壳子"。
63
+ */
64
+ close(): void;
65
+ }
66
+ /**
67
+ * 创建一个 Bot 门面
68
+ *
69
+ * 刻意返回**对象字面量**而不是 class 实例:可选方法必须按驱动的实际实现
70
+ * 逐个决定"装不装",见 `OPTIONAL_METHODS` 的说明。class 做不到这件事 ——
71
+ * 原型上的方法总是存在。
72
+ * @param opts 构造参数
73
+ * @returns Bot 门面
74
+ */
75
+ export declare function createBotFacade(opts: BotFacadeOptions): BotFacade;
76
+ /** Bot 注册表构造参数 */
77
+ export interface BotRegistryOptions {
78
+ /** 日志器 */
79
+ readonly logger: Logger;
80
+ }
81
+ /**
82
+ * Bot 注册表
83
+ *
84
+ * 只登记**已连接**的账号:`BotRegistryView.get()` 的契约是"未连接时 undefined",
85
+ * 因此账号管理器在 `connect()` 成功后才 `add`,断开时立刻 `remove`。
86
+ * 让离线账号留在表里会让插件的 `pickBot()` 拿到一个永远发不出消息的壳子。
87
+ */
88
+ export declare class BotRegistry implements BotRegistryView {
89
+ #private;
90
+ /**
91
+ * @param opts 构造参数
92
+ */
93
+ constructor(opts: BotRegistryOptions);
94
+ /** 在线 Bot 数量 */
95
+ get size(): number;
96
+ /** 已登记的账号数(含短暂离线的) */
97
+ get total(): number;
98
+ /**
99
+ * 登记一个已连接的账号
100
+ *
101
+ * 必须在驱动知道自己的 selfId **之后**调用(即 `connect()` 解析之后),
102
+ * 否则 selfId 索引会建在空串上。重连走"remove → add",索引因此自愈。
103
+ * @param facade Bot 门面
104
+ * @returns 被顶掉的旧门面(同一账号重复登记时),没有则 undefined
105
+ */
106
+ add(facade: BotFacade): BotFacade | undefined;
107
+ /**
108
+ * 摘除一个账号
109
+ * @param accountId 账号记录 id
110
+ * @returns 被摘除的门面;未登记时 undefined
111
+ */
112
+ remove(accountId: string): BotFacade | undefined;
113
+ /**
114
+ * 按账号记录 id 取 Bot
115
+ * @param accountId 账号记录 id
116
+ * @returns Bot,未连接时 undefined
117
+ */
118
+ get(accountId: string): BotApi | undefined;
119
+ /**
120
+ * 按平台 selfId 取 Bot
121
+ *
122
+ * 同一个 QQ 有多条链路时优先返回在线的那条;全都不在线则返回第一条 ——
123
+ * 而不是 undefined。重连的瞬间返回"找不到这个账号"会让插件走进
124
+ * "配置错了吗"的排查方向,让驱动报一个真实的网络错误更有指向性。
125
+ * @param selfId 平台账号 id
126
+ * @returns Bot,未连接时 undefined
127
+ */
128
+ bySelfId(selfId: string): BotApi | undefined;
129
+ /**
130
+ * 列出所有在线 Bot
131
+ * @returns Bot 数组
132
+ */
133
+ online(): BotApi[];
134
+ /**
135
+ * 列出全部门面(含离线),停机时逐个关闭用
136
+ * @returns 门面数组
137
+ */
138
+ all(): BotFacade[];
139
+ /** 清空登记(不关闭门面,由账号管理器负责) */
140
+ clear(): void;
141
+ }
142
+ //# sourceMappingURL=bots.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"bots.d.ts","sourceRoot":"","sources":["../../src/adapter/bots.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AACH,OAAO,KAAK,EACV,MAAM,EAEN,SAAS,EACT,eAAe,EAGf,MAAM,EAIN,eAAe,EAMhB,MAAM,kBAAkB,CAAA;AAiCzB;;;;;;GAMG;AACH,MAAM,WAAW,cAAc;IAC7B,8BAA8B;IAC9B,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAA;IAC5B,oBAAoB;IACpB,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAA;IAC5B,kBAAkB;IAClB,QAAQ,CAAC,UAAU,EAAE,OAAO,CAAA;CAC7B;AAED,iBAAiB;AACjB,MAAM,WAAW,gBAAgB;IAC/B,eAAe;IACf,QAAQ,CAAC,MAAM,EAAE,SAAS,CAAA;IAC1B,cAAc;IACd,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAA;IAC1B,UAAU;IACV,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAA;IACvB,aAAa;IACb,QAAQ,CAAC,MAAM,EAAE,cAAc,CAAA;IAC/B;;;;;;;;OAQG;IACH,QAAQ,CAAC,MAAM,CAAC,EAAE,CAAC,IAAI,EAAE,eAAe,KAAK,IAAI,CAAA;CAClD;AAED,+BAA+B;AAC/B,MAAM,WAAW,SAAU,SAAQ,MAAM;IACvC,4CAA4C;IAC5C,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAA;IAC1B;;;;;;OAMG;IACH,KAAK,IAAI,IAAI,CAAA;CACd;AAWD;;;;;;;;GAQG;AACH,wBAAgB,eAAe,CAAC,IAAI,EAAE,gBAAgB,GAAG,SAAS,CAqSjE;AAeD,kBAAkB;AAClB,MAAM,WAAW,kBAAkB;IACjC,UAAU;IACV,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAA;CACxB;AAED;;;;;;GAMG;AACH,qBAAa,WAAY,YAAW,eAAe;;IAQjD;;OAEG;gBACS,IAAI,EAAE,kBAAkB;IAIpC,gBAAgB;IAChB,IAAI,IAAI,IAAI,MAAM,CAKjB;IAED,sBAAsB;IACtB,IAAI,KAAK,IAAI,MAAM,CAElB;IAED;;;;;;;OAOG;IACH,GAAG,CAAC,MAAM,EAAE,SAAS,GAAG,SAAS,GAAG,SAAS;IAoB7C;;;;OAIG;IACH,MAAM,CAAC,SAAS,EAAE,MAAM,GAAG,SAAS,GAAG,SAAS;IAchD;;;;OAIG;IACH,GAAG,CAAC,SAAS,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS;IAI1C;;;;;;;;OAQG;IACH,QAAQ,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS;IAO5C;;;OAGG;IACH,MAAM,IAAI,MAAM,EAAE;IAMlB;;;OAGG;IACH,GAAG,IAAI,SAAS,EAAE;IAMlB,2BAA2B;IAC3B,KAAK,IAAI,IAAI;CAId"}
@@ -0,0 +1,454 @@
1
+ import { toSegments } from "../message/segment.js";
2
+ import { splitMessage } from "../message/split.js";
3
+ import { describeTarget, targetKey } from "../message/target.js";
4
+ import { withTimeout } from "../util/defer.js";
5
+ import { KeyedQueue } from "../util/queue.js";
6
+ /**
7
+ * `BotApi` 上的可选方法名
8
+ *
9
+ * 门面必须**存在性对齐**驱动:`pipeline/event.ts` 的 `createRequest` 即依靠
10
+ * `bot.handleGroupRequest === undefined` 判断"该平台是否支持同意加群"。
11
+ * 若门面无条件补齐这些方法(即便内部转发至一个不存在的实现),
12
+ * 该处判断将永远为真,错误亦由"能力探测失败"转变为"调用时于运行时抛错"。
13
+ */
14
+ const OPTIONAL_METHODS = [
15
+ "sendForward",
16
+ "setGroupCard",
17
+ "muteGroupMember",
18
+ "muteGroupAll",
19
+ "kickGroupMember",
20
+ "quitGroup",
21
+ "handleFriendRequest",
22
+ "handleGroupRequest",
23
+ "fetchHistory",
24
+ "getMessage",
25
+ "uploadGroupFile",
26
+ "setReaction"
27
+ ];
28
+ /** 需要套用 `sendTimeout` 的可选方法 */
29
+ const TIMED_METHODS = new Set(["sendForward"]);
30
+ /**
31
+ * 取错误的可读描述
32
+ * @param err 任意抛出物
33
+ * @returns 描述文本
34
+ */
35
+ function errText(err) {
36
+ return err instanceof Error ? err.message : String(err);
37
+ }
38
+ /**
39
+ * 创建一个 Bot 门面
40
+ *
41
+ * 刻意返回**对象字面量**而不是 class 实例:可选方法必须按驱动的实际实现
42
+ * 逐个决定"装不装",见 `OPTIONAL_METHODS` 的说明。class 做不到这件事 ——
43
+ * 原型上的方法总是存在。
44
+ * @param opts 构造参数
45
+ * @returns Bot 门面
46
+ */
47
+ export function createBotFacade(opts) {
48
+ const { driver, accountId, logger, policy, onSent } = opts;
49
+ /** 同会话串行发送队列 */
50
+ const queue = new KeyedQueue();
51
+ /** 待触发的自动撤回定时器 */
52
+ const timers = new Set();
53
+ /** 是否已关闭 */
54
+ let closed = false;
55
+ /** 是否已就"平台不支持撤回"提醒过一次 */
56
+ let warnedRecall = false;
57
+ /**
58
+ * 确认门面仍然可用
59
+ * @throws 门面已关闭时
60
+ */
61
+ const ensureAlive = () => {
62
+ if (closed) {
63
+ throw new Error(`账号 ${accountId} 已断开,这个 Bot 句柄失效了:请在用到时重新 ctx.pickBot(),不要把 Bot 存进模块变量`);
64
+ }
65
+ };
66
+ /**
67
+ * 安排自动撤回
68
+ * @param messageId 消息 id
69
+ * @param ms 延时毫秒
70
+ */
71
+ const scheduleRecall = (messageId, ms) => {
72
+ if (!driver.caps.has("recall")) {
73
+ // 只提醒一次:这是插件作者的能力误判,每条消息都刷一行没有新信息
74
+ if (!warnedRecall) {
75
+ warnedRecall = true;
76
+ logger.warn(`适配器 ${driver.adapterId} 不支持撤回,recallAfter 将被忽略`);
77
+ }
78
+ return;
79
+ }
80
+ // 平台没返回消息 id 就无从撤回,静默跳过(不是错误,有平台确实不返回)
81
+ if (messageId === "")
82
+ return;
83
+ const timer = setTimeout(() => {
84
+ timers.delete(timer);
85
+ if (closed)
86
+ return;
87
+ void driver.recallMessage(messageId).catch((err) => {
88
+ // 撤回失败很常见(消息已过撤回时限、被管理员先撤了),不值得报错
89
+ logger.debug(`自动撤回消息 ${messageId} 失败:${errText(err)}`);
90
+ });
91
+ }, ms);
92
+ // 不使"等待撤回"阻止进程退出:停机时该消息留存于群内并无影响
93
+ timer.unref?.();
94
+ timers.add(timer);
95
+ };
96
+ /**
97
+ * 发出一条(已切分好的)消息
98
+ * @param target 发送目标
99
+ * @param chunk 消息段
100
+ * @param quote 引用的消息 id
101
+ * @returns 发送结果
102
+ */
103
+ const sendChunk = async (target, chunk, quote) => {
104
+ const pending = quote === undefined ? driver.sendMessage(target, chunk) : driver.sendMessage(target, chunk, { quote });
105
+ return await withTimeout(pending, policy.sendTimeout, `向${describeTarget(target)}发送消息超时`);
106
+ };
107
+ /**
108
+ * 把切分结果包成合并转发节点
109
+ * @param chunks 切分结果
110
+ * @returns 转发节点数组
111
+ */
112
+ const forwardNodes = (chunks) => chunks.map(message => ({ uid: driver.selfId, name: driver.nickname, message }));
113
+ /**
114
+ * 完成一次发送(切分、转发、撤回都在这里)
115
+ * @param target 发送目标
116
+ * @param segments 已展平的消息段
117
+ * @param opts 发送选项
118
+ * @returns 发送结果
119
+ */
120
+ const deliver = async (target, segments, opts) => {
121
+ // 再确认一次:串行队列里排在后面的任务可能等到了断开之后才轮到
122
+ ensureAlive();
123
+ const chunks = splitMessage(segments, opts?.splitLength ?? policy.splitLength);
124
+ const recallAfter = opts?.recallAfter ?? 0;
125
+ const results = [];
126
+ // 合并转发:连发五条长文本会把屏幕刷满,折成一个卡片友好得多
127
+ const forward = driver.sendForward;
128
+ if (chunks.length > 1 && opts?.autoForward === true) {
129
+ if (forward !== undefined && driver.caps.has("forward")) {
130
+ const result = await withTimeout(forward.call(driver, target, forwardNodes(chunks)), policy.sendTimeout, `向${describeTarget(target)}发送合并转发超时`);
131
+ if (recallAfter > 0)
132
+ scheduleRecall(result.messageId, recallAfter);
133
+ return result;
134
+ }
135
+ logger.debug(`适配器 ${driver.adapterId} 不支持合并转发,autoForward 退回逐条发送`);
136
+ }
137
+ for (const [i, chunk] of chunks.entries()) {
138
+ // 只有第一条带引用:每条都引用会让整屏都是回复箭头,
139
+ // 而用户想看到的是"这一串是对那条消息的回答"
140
+ results.push(await sendChunk(target, chunk, i === 0 ? opts?.quote : undefined));
141
+ }
142
+ if (recallAfter > 0)
143
+ for (const r of results)
144
+ scheduleRecall(r.messageId, recallAfter);
145
+ const first = results[0];
146
+ // splitMessage 保证至少一条,这里只是让类型收窄;真到了这一步说明切分坏了
147
+ if (first === undefined)
148
+ return { ok: false, messageId: "", time: Date.now() };
149
+ if (results.length === 1)
150
+ return first;
151
+ // 多条时返回**第一条**的 id:插件拿它去撤回或引用,用户看到的也是从第一条开始
152
+ return {
153
+ ok: results.every(r => r.ok),
154
+ messageId: first.messageId,
155
+ time: first.time,
156
+ raw: results.map(r => r.raw)
157
+ };
158
+ };
159
+ /**
160
+ * 记一行「已发出」并通知总线
161
+ *
162
+ * 日志取 info 级:与「收到消息」成对。只记进来不记出去,则一次问答在日志里
163
+ * 只剩上半句 —— 排障时无从判断是命令没跑,还是跑完了但平台没收。
164
+ *
165
+ * 图文构成逐类计数而非只记总段数:「发了 3 段」看不出是三行字还是两张图,
166
+ * 而「图片发不出去」与「文字发不出去」是两类完全不同的故障。
167
+ * @param target 发送目标
168
+ * @param segments 已展平的消息段
169
+ * @param cost 耗时毫秒
170
+ * @param ok 平台是否接收
171
+ */
172
+ const report = (target, segments, cost, ok) => {
173
+ /** 各类型段的计数 */
174
+ const kinds = {};
175
+ for (const s of segments)
176
+ kinds[s.type] = (kinds[s.type] ?? 0) + 1;
177
+ const shape = Object.entries(kinds)
178
+ .map(([type, n]) => `${type}×${n}`)
179
+ .join(" ");
180
+ const verb = ok ? "已发出" : "发送失败";
181
+ logger.info(`[${driver.platform}:${driver.selfId}] ${verb} → ${describeTarget(target)}:${shape},耗时 ${cost}ms`);
182
+ // 回调自身抛错不该让「消息已发出」变成「发送失败」:统计插件的问题不是发送的问题
183
+ try {
184
+ onSent?.({
185
+ accountId,
186
+ adapterId: driver.adapterId,
187
+ platform: driver.platform,
188
+ target,
189
+ segments: segments.length,
190
+ kinds,
191
+ cost,
192
+ ok
193
+ });
194
+ }
195
+ catch (err) {
196
+ logger.debug(`message/sent 通知回调抛错:${errText(err)}`);
197
+ }
198
+ };
199
+ /**
200
+ * 发送消息
201
+ * @param target 发送目标
202
+ * @param content 消息内容
203
+ * @param opts 发送选项
204
+ * @returns 发送结果
205
+ */
206
+ const sendMessage = async (target, content, opts) => {
207
+ ensureAlive();
208
+ const segments = toSegments(content);
209
+ if (segments.length === 0) {
210
+ // 与 `e.reply()` 一致:空内容几乎总是拼装时全部为 undefined 的逻辑缺陷。
211
+ // 告警而非抛错 —— 因一句未能拼装出的提示语而使整个插件失败并不适当。
212
+ logger.warn(`试图向${describeTarget(target)}发送空消息,已忽略`);
213
+ return { ok: false, messageId: "", time: Date.now() };
214
+ }
215
+ /**
216
+ * 实际发送
217
+ *
218
+ * 计时起点在**队列之内**:`sequential` 为真时,一条消息可能先在队列里等上
219
+ * 数秒才轮到自己发。把等待算进「发送耗时」会使统计出的耗时随并发量起伏,
220
+ * 而那反映的是排队深度、不是平台的响应快慢。
221
+ */
222
+ const task = async () => {
223
+ const started = Date.now();
224
+ try {
225
+ const result = await deliver(target, segments, opts);
226
+ report(target, segments, Date.now() - started, result.ok);
227
+ return result;
228
+ }
229
+ catch (err) {
230
+ // 抛错也报一次:统计要算成功率,只在成功时报则分母恒等于分子。
231
+ // 报完照旧抛出 —— 调用方的错误处理不受影响
232
+ report(target, segments, Date.now() - started, false);
233
+ throw err;
234
+ }
235
+ };
236
+ // 同会话串行:并发发送时平台不保证到达顺序,用户会看到图片跑到说明文字前面
237
+ return policy.sequential ? await queue.run(targetKey(target), task) : await task();
238
+ };
239
+ const facade = {
240
+ accountId,
241
+ // 一律用 getter 转发:`selfId` 在握手完成后才知道、`nickname` 会被用户改、
242
+ // `online` 会在重连中反复变化。快照下来就全是过期数据。
243
+ get selfId() {
244
+ return driver.selfId;
245
+ },
246
+ get platform() {
247
+ return driver.platform;
248
+ },
249
+ get adapterId() {
250
+ return driver.adapterId;
251
+ },
252
+ get nickname() {
253
+ return driver.nickname;
254
+ },
255
+ get online() {
256
+ return !closed && driver.online;
257
+ },
258
+ get caps() {
259
+ return driver.caps;
260
+ },
261
+ sendMessage,
262
+ // 以下透传方法全部写成 async:`ensureAlive()` 若同步抛出,
263
+ // 调用方的 `.catch()` 接不住,会变成一个 unhandled 异常
264
+ recallMessage: async (messageId) => {
265
+ ensureAlive();
266
+ return await driver.recallMessage(messageId);
267
+ },
268
+ getSelfInfo: async () => {
269
+ ensureAlive();
270
+ return await driver.getSelfInfo();
271
+ },
272
+ getFriend: async (uid) => {
273
+ ensureAlive();
274
+ return await driver.getFriend(uid);
275
+ },
276
+ getFriendList: async () => {
277
+ ensureAlive();
278
+ return await driver.getFriendList();
279
+ },
280
+ getGroup: async (gid) => {
281
+ ensureAlive();
282
+ return await driver.getGroup(gid);
283
+ },
284
+ getGroupList: async () => {
285
+ ensureAlive();
286
+ return await driver.getGroupList();
287
+ },
288
+ getGroupMember: async (gid, uid) => {
289
+ ensureAlive();
290
+ return await driver.getGroupMember(gid, uid);
291
+ },
292
+ getGroupMemberList: async (gid, listOpts) => {
293
+ ensureAlive();
294
+ return await driver.getGroupMemberList(gid, listOpts);
295
+ },
296
+ callApi: async (action, params) => {
297
+ ensureAlive();
298
+ return await driver.callApi(action, params);
299
+ },
300
+ close: () => {
301
+ if (closed)
302
+ return;
303
+ closed = true;
304
+ for (const timer of timers)
305
+ clearTimeout(timer);
306
+ timers.clear();
307
+ }
308
+ };
309
+ for (const name of OPTIONAL_METHODS) {
310
+ const fn = driver[name];
311
+ // 驱动没实现就不装 —— 这正是本函数不写成 class 的原因
312
+ if (typeof fn !== "function")
313
+ continue;
314
+ const timed = TIMED_METHODS.has(name);
315
+ Reflect.set(facade, name, async (...args) => {
316
+ ensureAlive();
317
+ const pending = Reflect.apply(fn, driver, args);
318
+ return await (timed ? withTimeout(pending, policy.sendTimeout, `调用 ${name} 超时`) : pending);
319
+ });
320
+ }
321
+ return facade;
322
+ }
323
+ /**
324
+ * Bot 注册表
325
+ *
326
+ * 只登记**已连接**的账号:`BotRegistryView.get()` 的契约是"未连接时 undefined",
327
+ * 因此账号管理器在 `connect()` 成功后才 `add`,断开时立刻 `remove`。
328
+ * 让离线账号留在表里会让插件的 `pickBot()` 拿到一个永远发不出消息的壳子。
329
+ */
330
+ export class BotRegistry {
331
+ /** 日志器 */
332
+ #logger;
333
+ /** 账号记录 id → 条目 */
334
+ #byAccount = new Map();
335
+ /** 平台 selfId → 条目(同一个 QQ 可能有两条账号记录,例如正向 WS 与 HTTP 各一条) */
336
+ #bySelfId = new Map();
337
+ /**
338
+ * @param opts 构造参数
339
+ */
340
+ constructor(opts) {
341
+ this.#logger = opts.logger.child({ scope: "bot" });
342
+ }
343
+ /** 在线 Bot 数量 */
344
+ get size() {
345
+ let n = 0;
346
+ // 不走 online() —— 那会为了数个数分配一个数组
347
+ for (const entry of this.#byAccount.values())
348
+ if (entry.facade.online)
349
+ n++;
350
+ return n;
351
+ }
352
+ /** 已登记的账号数(含短暂离线的) */
353
+ get total() {
354
+ return this.#byAccount.size;
355
+ }
356
+ /**
357
+ * 登记一个已连接的账号
358
+ *
359
+ * 必须在驱动知道自己的 selfId **之后**调用(即 `connect()` 解析之后),
360
+ * 否则 selfId 索引会建在空串上。重连走"remove → add",索引因此自愈。
361
+ * @param facade Bot 门面
362
+ * @returns 被顶掉的旧门面(同一账号重复登记时),没有则 undefined
363
+ */
364
+ add(facade) {
365
+ const previous = this.remove(facade.accountId);
366
+ const entry = { facade, selfId: facade.selfId };
367
+ this.#byAccount.set(facade.accountId, entry);
368
+ let list = this.#bySelfId.get(entry.selfId);
369
+ if (list === undefined) {
370
+ list = [];
371
+ this.#bySelfId.set(entry.selfId, list);
372
+ }
373
+ list.push(entry);
374
+ if (list.length > 1) {
375
+ // 不是错误:一个 QQ 挂两条链路(正向 WS + HTTP 回调)是合法用法。
376
+ // 但这意味着 bySelfId 存在歧义,此处提示一句,以免排障时误判至他处
377
+ this.#logger.info(`账号 ${facade.selfId} 有 ${list.length} 条链路在线,bySelfId 只会返回其中一条`);
378
+ }
379
+ return previous;
380
+ }
381
+ /**
382
+ * 摘除一个账号
383
+ * @param accountId 账号记录 id
384
+ * @returns 被摘除的门面;未登记时 undefined
385
+ */
386
+ remove(accountId) {
387
+ const entry = this.#byAccount.get(accountId);
388
+ if (entry === undefined)
389
+ return undefined;
390
+ this.#byAccount.delete(accountId);
391
+ const list = this.#bySelfId.get(entry.selfId);
392
+ if (list !== undefined) {
393
+ const at = list.indexOf(entry);
394
+ if (at >= 0)
395
+ list.splice(at, 1);
396
+ if (list.length === 0)
397
+ this.#bySelfId.delete(entry.selfId);
398
+ }
399
+ return entry.facade;
400
+ }
401
+ /**
402
+ * 按账号记录 id 取 Bot
403
+ * @param accountId 账号记录 id
404
+ * @returns Bot,未连接时 undefined
405
+ */
406
+ get(accountId) {
407
+ return this.#byAccount.get(accountId)?.facade;
408
+ }
409
+ /**
410
+ * 按平台 selfId 取 Bot
411
+ *
412
+ * 同一个 QQ 有多条链路时优先返回在线的那条;全都不在线则返回第一条 ——
413
+ * 而不是 undefined。重连的瞬间返回"找不到这个账号"会让插件走进
414
+ * "配置错了吗"的排查方向,让驱动报一个真实的网络错误更有指向性。
415
+ * @param selfId 平台账号 id
416
+ * @returns Bot,未连接时 undefined
417
+ */
418
+ bySelfId(selfId) {
419
+ const list = this.#bySelfId.get(selfId);
420
+ if (list === undefined)
421
+ return undefined;
422
+ for (const entry of list)
423
+ if (entry.facade.online)
424
+ return entry.facade;
425
+ return list[0]?.facade;
426
+ }
427
+ /**
428
+ * 列出所有在线 Bot
429
+ * @returns Bot 数组
430
+ */
431
+ online() {
432
+ const out = [];
433
+ for (const entry of this.#byAccount.values())
434
+ if (entry.facade.online)
435
+ out.push(entry.facade);
436
+ return out;
437
+ }
438
+ /**
439
+ * 列出全部门面(含离线),停机时逐个关闭用
440
+ * @returns 门面数组
441
+ */
442
+ all() {
443
+ const out = [];
444
+ for (const entry of this.#byAccount.values())
445
+ out.push(entry.facade);
446
+ return out;
447
+ }
448
+ /** 清空登记(不关闭门面,由账号管理器负责) */
449
+ clear() {
450
+ this.#byAccount.clear();
451
+ this.#bySelfId.clear();
452
+ }
453
+ }
454
+ //# sourceMappingURL=bots.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"bots.js","sourceRoot":"","sources":["../../src/adapter/bots.ts"],"names":[],"mappings":"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"}