@napuketto/adapter 0.0.1

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 ADDED
@@ -0,0 +1,21 @@
1
+ MIT License
2
+
3
+ Copyright (c) 2026 睦 <oppenheymu@gmail.com>
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining a copy
6
+ of this software and associated documentation files (the "Software"), to deal
7
+ in the Software without restriction, including without limitation the rights
8
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9
+ copies of the Software, and to permit persons to whom the Software is
10
+ furnished to do so, subject to the following conditions:
11
+
12
+ The above copyright notice and this permission notice shall be included in all
13
+ copies or substantial portions of the Software.
14
+
15
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21
+ SOFTWARE.
@@ -0,0 +1,2 @@
1
+ import { a as ProtocolAdapterLike, c as BaseAction, i as AdapterRegistry, l as ErrorCodeMap, n as ProtocolHooks, o as ActionRegistry, r as ProtocolConfig, s as ActionResult, t as BaseProtocolAdapter } from "../index-C1nIfPiU.mjs";
2
+ export { ActionRegistry, type ActionResult, AdapterRegistry, BaseAction, BaseProtocolAdapter, type ErrorCodeMap, type ProtocolAdapterLike, ProtocolConfig, type ProtocolHooks };
@@ -0,0 +1,2 @@
1
+ import { a as ActionRegistry, i as AdapterRegistry, n as BaseProtocolAdapter, r as BaseAction, t as ProtocolConfig } from "../core-Bj5L8WeZ.mjs";
2
+ export { ActionRegistry, AdapterRegistry, BaseAction, BaseProtocolAdapter, ProtocolConfig };
@@ -0,0 +1,149 @@
1
+ import { ConfigBase } from "@napuketto/kernel";
2
+ //#region src/core/action-registry.ts
3
+ var ActionRegistry = class {
4
+ actions = /* @__PURE__ */ new Map();
5
+ register(action) {
6
+ this.actions.set(action.name, action);
7
+ }
8
+ get(name) {
9
+ return this.actions.get(name);
10
+ }
11
+ has(name) {
12
+ return this.actions.has(name);
13
+ }
14
+ get names() {
15
+ return [...this.actions.keys()];
16
+ }
17
+ };
18
+ //#endregion
19
+ //#region src/core/adapter-registry.ts
20
+ var AdapterRegistry = class {
21
+ adapters = /* @__PURE__ */ new Map();
22
+ register(adapter) {
23
+ this.adapters.set(adapter.protocol, adapter);
24
+ }
25
+ get(protocol) {
26
+ return this.adapters.get(protocol);
27
+ }
28
+ async startAll() {
29
+ await Promise.all([...this.adapters.values()].map((a) => a.start()));
30
+ }
31
+ async stopAll() {
32
+ await Promise.all([...this.adapters.values()].map((a) => a.stop()));
33
+ }
34
+ };
35
+ //#endregion
36
+ //#region src/core/BaseAction.ts
37
+ /** 校验失败 retcode:HTTP 入口。 */
38
+ const INVALID_RETCODE_HTTP = 400;
39
+ /** 校验失败 retcode:WS 入口。 */
40
+ const INVALID_RETCODE_WS = 1400;
41
+ /** 动作基类:校验失败 retcode=400(HTTP)/1400(WS)。 */
42
+ var BaseAction = class {
43
+ /** 校验并执行(HTTP 入口)。 */
44
+ handle(payload) {
45
+ return this.run(payload, INVALID_RETCODE_HTTP);
46
+ }
47
+ /** 校验并执行(WS 入口,echo 透传)。 */
48
+ async websocketHandle(payload, echo) {
49
+ const result = await this.run(payload, INVALID_RETCODE_WS);
50
+ if (echo !== void 0) result.echo = echo;
51
+ return result;
52
+ }
53
+ async run(payload, invalidRetcode) {
54
+ const parsed = this.schema.safeParse(payload);
55
+ if (!parsed.success) return this.fail(invalidRetcode, "参数校验失败");
56
+ try {
57
+ return {
58
+ retcode: 0,
59
+ status: "ok",
60
+ data: await this._handle(parsed.data),
61
+ message: ""
62
+ };
63
+ } catch (err) {
64
+ return this.mapError(err);
65
+ }
66
+ }
67
+ mapError(err) {
68
+ if (err instanceof Error && "code" in err) {
69
+ const typed = err;
70
+ return {
71
+ retcode: this.errorCodeMap[typed.code] ?? this.errorCodeMap["UNKNOWN"],
72
+ status: "failed",
73
+ data: null,
74
+ message: err.message
75
+ };
76
+ }
77
+ if (err instanceof Error) return this.fail(this.errorCodeMap["UNKNOWN"], err.message);
78
+ return this.fail(this.errorCodeMap["UNKNOWN"], "未知错误");
79
+ }
80
+ fail(retcode, message) {
81
+ return {
82
+ retcode,
83
+ status: "failed",
84
+ data: null,
85
+ message
86
+ };
87
+ }
88
+ };
89
+ //#endregion
90
+ //#region src/core/BaseProtocolAdapter.ts
91
+ /**
92
+ * 协议适配器骨架。
93
+ * @typeParam TConfig - 协议配置类型
94
+ */
95
+ var BaseProtocolAdapter = class {
96
+ config;
97
+ hooks;
98
+ broadcaster;
99
+ started = false;
100
+ constructor(opts) {
101
+ this.config = opts.config;
102
+ this.hooks = opts.hooks;
103
+ this.broadcaster = opts.broadcaster;
104
+ }
105
+ /** 启动:加载配置 → 校验 → 协议层初始化。 */
106
+ async start() {
107
+ if (this.started) return;
108
+ const config = await this.config.load();
109
+ await this.hooks.onStart(config);
110
+ this.started = true;
111
+ }
112
+ /** 停止:协议层清理资源。 */
113
+ async stop() {
114
+ if (!this.started) return;
115
+ await this.hooks.onStop();
116
+ this.started = false;
117
+ }
118
+ /** 配置热更新:重新加载 → 校验 → 协议层处理。 */
119
+ async reload() {
120
+ const config = await this.config.reload();
121
+ await this.hooks.onReload(config);
122
+ }
123
+ /** 广播协议事件给所有 network 适配器。 */
124
+ broadcastEvent(event) {
125
+ this.broadcaster?.emit(event);
126
+ }
127
+ /** 获取广播器(传输装配等内部使用;未传入返回 undefined)。 */
128
+ getBroadcaster() {
129
+ return this.broadcaster;
130
+ }
131
+ };
132
+ //#endregion
133
+ //#region src/core/config.ts
134
+ /** 协议配置基类:zod schema + 文本读写(JSON/TOML,文件路径由装配层传入)。 */
135
+ var ProtocolConfig = class extends ConfigBase {
136
+ constructor(opts) {
137
+ super({
138
+ path: opts.path,
139
+ schema: opts.schema,
140
+ defaults: opts.defaults,
141
+ seed: opts.seed,
142
+ format: opts.format
143
+ });
144
+ }
145
+ };
146
+ //#endregion
147
+ export { ActionRegistry as a, AdapterRegistry as i, BaseProtocolAdapter as n, BaseAction as r, ProtocolConfig as t };
148
+
149
+ //# sourceMappingURL=core-Bj5L8WeZ.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"core-Bj5L8WeZ.mjs","names":[],"sources":["../src/core/action-registry.ts","../src/core/adapter-registry.ts","../src/core/BaseAction.ts","../src/core/BaseProtocolAdapter.ts","../src/core/config.ts"],"sourcesContent":["/**\n * 动作注册表:按动作名索引(构建后只读)。\n */\nimport type { BaseAction } from \"./BaseAction.js\";\n\nexport class ActionRegistry {\n private readonly actions = new Map<string, BaseAction<unknown, unknown>>();\n\n register(action: BaseAction<unknown, unknown>): void {\n this.actions.set(action.name, action);\n }\n\n get(name: string): BaseAction<unknown, unknown> | undefined {\n return this.actions.get(name);\n }\n\n has(name: string): boolean {\n return this.actions.has(name);\n }\n\n get names(): string[] {\n return [...this.actions.keys()];\n }\n}\n","/**\n * 适配器注册表:cli 按 enabledProtocols 装配用。\n */\n\n/** 协议适配器基类类型(避免 core 与具体协议循环依赖的轻量接口)。 */\nexport interface ProtocolAdapterLike {\n readonly protocol: string;\n start: () => Promise<void>;\n stop: () => Promise<void>;\n}\n\nexport class AdapterRegistry {\n private readonly adapters = new Map<string, ProtocolAdapterLike>();\n\n register(adapter: ProtocolAdapterLike): void {\n this.adapters.set(adapter.protocol, adapter);\n }\n\n get(protocol: string): ProtocolAdapterLike | undefined {\n return this.adapters.get(protocol);\n }\n\n async startAll(): Promise<void> {\n await Promise.all([...this.adapters.values()].map((a) => a.start()));\n }\n\n async stopAll(): Promise<void> {\n await Promise.all([...this.adapters.values()].map((a) => a.stop()));\n }\n}\n","/**\n * BaseAction:协议动作基类(zod 校验 + 统一错误映射)\n *\n * 各协议动作继承并实现 `_handle`;`handle`(HTTP)/ `websocketHandle`(WS)\n * 统一做 zod 校验 + KernelError → 协议错误码映射。\n */\n\nimport type { KernelErrorCode } from \"@napuketto/kernel\";\nimport type { ZodType } from \"zod\";\n\n/** 校验失败 retcode:HTTP 入口。 */\nconst INVALID_RETCODE_HTTP = 400;\n/** 校验失败 retcode:WS 入口。 */\nconst INVALID_RETCODE_WS = 1400;\n\n/** 动作执行结果(含 retcode,协议错误码由协议层映射表提供)。 */\nexport interface ActionResult<T> {\n retcode: number;\n status: string;\n data: T | null;\n message: string;\n echo?: unknown;\n}\n\n/** 协议错误码映射表:KernelErrorCode → 协议错误码(各协议各自实现,ADR-017)。 */\nexport type ErrorCodeMap = Record<KernelErrorCode, number>;\n\n/** 动作基类:校验失败 retcode=400(HTTP)/1400(WS)。 */\nexport abstract class BaseAction<TPayload, TReturn> {\n abstract readonly name: string;\n abstract readonly schema: ZodType<TPayload>;\n protected abstract readonly errorCodeMap: ErrorCodeMap;\n\n /** 校验并执行(HTTP 入口)。 */\n handle(payload: unknown): Promise<ActionResult<TReturn>> {\n return this.run(payload, INVALID_RETCODE_HTTP);\n }\n\n /** 校验并执行(WS 入口,echo 透传)。 */\n async websocketHandle(payload: unknown, echo?: unknown): Promise<ActionResult<TReturn>> {\n const result = await this.run(payload, INVALID_RETCODE_WS);\n if (echo !== undefined) {\n result.echo = echo;\n }\n return result;\n }\n\n private async run(payload: unknown, invalidRetcode: number): Promise<ActionResult<TReturn>> {\n const parsed = this.schema.safeParse(payload);\n if (!parsed.success) {\n return this.fail(invalidRetcode, \"参数校验失败\");\n }\n try {\n const data = await this._handle(parsed.data);\n return { retcode: 0, status: \"ok\", data, message: \"\" };\n } catch (err) {\n return this.mapError(err);\n }\n }\n\n protected abstract _handle(payload: TPayload): Promise<TReturn>;\n\n private mapError(err: unknown): ActionResult<TReturn> {\n if (err instanceof Error && \"code\" in err) {\n const typed = err as Error & { code: KernelErrorCode };\n //从断言联合类型访问 code,解构会丢失 err 其余属性\n const retcode = this.errorCodeMap[typed.code] ?? this.errorCodeMap[\"UNKNOWN\"];\n return { retcode, status: \"failed\", data: null, message: err.message };\n }\n if (err instanceof Error) {\n return this.fail(this.errorCodeMap[\"UNKNOWN\"], err.message);\n }\n return this.fail(this.errorCodeMap[\"UNKNOWN\"], \"未知错误\");\n }\n\n private fail(retcode: number, message: string): ActionResult<TReturn> {\n return { retcode, status: \"failed\", data: null, message };\n }\n}\n","/**\n * BaseProtocolAdapter:协议适配器骨架(ADR-013,只写一次,各协议薄映射)\n *\n * 生命周期:start(校验配置 → 协议层初始化 → 启动传输)→ stop。\n * 请求分发:协议层把 network 的 onRequest 绑定到 `handleRequest`。\n * 事件广播:协议层翻译 kernel 事件后经 `broadcastEvent` 推给 network。\n */\nimport type { EventBroadcaster } from \"@napuketto/network\";\nimport type { ZodType } from \"zod\";\nimport type { ProtocolConfig } from \"./config.js\";\n\n/** 适配器生命周期钩子:由协议层实现(配置校验、初始化、资源清理)。 */\nexport interface ProtocolHooks {\n /** 配置校验通过后初始化(如建立 kernel 事件订阅)。 */\n onStart: (config: unknown) => Promise<void>;\n /** 停止时清理资源(退订、关闭传输等)。 */\n onStop: () => Promise<void>;\n /** 配置热更新。 */\n onReload: (config: unknown) => Promise<void>;\n}\n\n/**\n * 协议适配器骨架。\n * @typeParam TConfig - 协议配置类型\n */\nexport abstract class BaseProtocolAdapter<TConfig> {\n abstract readonly protocol: string;\n abstract readonly configSchema: ZodType<TConfig>;\n\n protected readonly config: ProtocolConfig<TConfig>;\n protected readonly hooks: ProtocolHooks;\n private readonly broadcaster: EventBroadcaster | undefined;\n private started = false;\n\n constructor(opts: {\n config: ProtocolConfig<TConfig>;\n hooks: ProtocolHooks;\n broadcaster?: EventBroadcaster;\n }) {\n this.config = opts.config;\n this.hooks = opts.hooks;\n this.broadcaster = opts.broadcaster;\n }\n\n /** 启动:加载配置 → 校验 → 协议层初始化。 */\n async start(): Promise<void> {\n if (this.started) {\n return;\n }\n const config = await this.config.load();\n await this.hooks.onStart(config);\n this.started = true;\n }\n\n /** 停止:协议层清理资源。 */\n async stop(): Promise<void> {\n if (!this.started) {\n return;\n }\n await this.hooks.onStop();\n this.started = false;\n }\n\n /** 配置热更新:重新加载 → 校验 → 协议层处理。 */\n async reload(): Promise<void> {\n const config = await this.config.reload();\n await this.hooks.onReload(config);\n }\n\n /** 广播协议事件给所有 network 适配器。 */\n protected broadcastEvent<T>(event: T): void {\n this.broadcaster?.emit(event);\n }\n\n /** 获取广播器(传输装配等内部使用;未传入返回 undefined)。 */\n protected getBroadcaster(): EventBroadcaster | undefined {\n return this.broadcaster;\n }\n}\n","/**\n * 协议配置加载基类:复用 kernel ConfigBase(zod schema 天然满足其校验器接口)。\n */\nimport type { ConfigFormat } from \"@napuketto/kernel\";\nimport { ConfigBase } from \"@napuketto/kernel\";\nimport type { ZodType } from \"zod\";\n\n/** 协议配置基类:zod schema + 文本读写(JSON/TOML,文件路径由装配层传入)。 */\nexport class ProtocolConfig<T> extends ConfigBase<T> {\n constructor(opts: {\n path: string;\n schema: ZodType<T>;\n defaults: T;\n /** 内存初值(全局 TOML 分段装配:seed 存在时 load() 直接用它)。 */\n seed?: T;\n format?: ConfigFormat;\n }) {\n super({\n path: opts.path,\n schema: opts.schema,\n defaults: opts.defaults,\n seed: opts.seed,\n format: opts.format,\n });\n }\n}\n"],"mappings":"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"}
@@ -0,0 +1,109 @@
1
+ import { ConfigBase, ConfigFormat, KernelErrorCode } from "@napuketto/kernel";
2
+ import { ZodType } from "zod";
3
+ import { EventBroadcaster } from "@napuketto/network";
4
+ //#region src/core/BaseAction.d.ts
5
+ /** 动作执行结果(含 retcode,协议错误码由协议层映射表提供)。 */
6
+ interface ActionResult<T> {
7
+ retcode: number;
8
+ status: string;
9
+ data: T | null;
10
+ message: string;
11
+ echo?: unknown;
12
+ }
13
+ /** 协议错误码映射表:KernelErrorCode → 协议错误码(各协议各自实现,ADR-017)。 */
14
+ type ErrorCodeMap = Record<KernelErrorCode, number>;
15
+ /** 动作基类:校验失败 retcode=400(HTTP)/1400(WS)。 */
16
+ declare abstract class BaseAction<TPayload, TReturn> {
17
+ abstract readonly name: string;
18
+ abstract readonly schema: ZodType<TPayload>;
19
+ protected abstract readonly errorCodeMap: ErrorCodeMap;
20
+ /** 校验并执行(HTTP 入口)。 */
21
+ handle(payload: unknown): Promise<ActionResult<TReturn>>;
22
+ /** 校验并执行(WS 入口,echo 透传)。 */
23
+ websocketHandle(payload: unknown, echo?: unknown): Promise<ActionResult<TReturn>>;
24
+ private run;
25
+ protected abstract _handle(payload: TPayload): Promise<TReturn>;
26
+ private mapError;
27
+ private fail;
28
+ }
29
+ //#endregion
30
+ //#region src/core/action-registry.d.ts
31
+ declare class ActionRegistry {
32
+ private readonly actions;
33
+ register(action: BaseAction<unknown, unknown>): void;
34
+ get(name: string): BaseAction<unknown, unknown> | undefined;
35
+ has(name: string): boolean;
36
+ get names(): string[];
37
+ }
38
+ //#endregion
39
+ //#region src/core/adapter-registry.d.ts
40
+ /**
41
+ * 适配器注册表:cli 按 enabledProtocols 装配用。
42
+ */
43
+ /** 协议适配器基类类型(避免 core 与具体协议循环依赖的轻量接口)。 */
44
+ interface ProtocolAdapterLike {
45
+ readonly protocol: string;
46
+ start: () => Promise<void>;
47
+ stop: () => Promise<void>;
48
+ }
49
+ declare class AdapterRegistry {
50
+ private readonly adapters;
51
+ register(adapter: ProtocolAdapterLike): void;
52
+ get(protocol: string): ProtocolAdapterLike | undefined;
53
+ startAll(): Promise<void>;
54
+ stopAll(): Promise<void>;
55
+ }
56
+ //#endregion
57
+ //#region src/core/config.d.ts
58
+ /** 协议配置基类:zod schema + 文本读写(JSON/TOML,文件路径由装配层传入)。 */
59
+ declare class ProtocolConfig<T> extends ConfigBase<T> {
60
+ constructor(opts: {
61
+ path: string;
62
+ schema: ZodType<T>;
63
+ defaults: T;
64
+ /** 内存初值(全局 TOML 分段装配:seed 存在时 load() 直接用它)。 */
65
+ seed?: T;
66
+ format?: ConfigFormat;
67
+ });
68
+ }
69
+ //#endregion
70
+ //#region src/core/BaseProtocolAdapter.d.ts
71
+ /** 适配器生命周期钩子:由协议层实现(配置校验、初始化、资源清理)。 */
72
+ interface ProtocolHooks {
73
+ /** 配置校验通过后初始化(如建立 kernel 事件订阅)。 */
74
+ onStart: (config: unknown) => Promise<void>;
75
+ /** 停止时清理资源(退订、关闭传输等)。 */
76
+ onStop: () => Promise<void>;
77
+ /** 配置热更新。 */
78
+ onReload: (config: unknown) => Promise<void>;
79
+ }
80
+ /**
81
+ * 协议适配器骨架。
82
+ * @typeParam TConfig - 协议配置类型
83
+ */
84
+ declare abstract class BaseProtocolAdapter<TConfig> {
85
+ abstract readonly protocol: string;
86
+ abstract readonly configSchema: ZodType<TConfig>;
87
+ protected readonly config: ProtocolConfig<TConfig>;
88
+ protected readonly hooks: ProtocolHooks;
89
+ private readonly broadcaster;
90
+ private started;
91
+ constructor(opts: {
92
+ config: ProtocolConfig<TConfig>;
93
+ hooks: ProtocolHooks;
94
+ broadcaster?: EventBroadcaster;
95
+ });
96
+ /** 启动:加载配置 → 校验 → 协议层初始化。 */
97
+ start(): Promise<void>;
98
+ /** 停止:协议层清理资源。 */
99
+ stop(): Promise<void>;
100
+ /** 配置热更新:重新加载 → 校验 → 协议层处理。 */
101
+ reload(): Promise<void>;
102
+ /** 广播协议事件给所有 network 适配器。 */
103
+ protected broadcastEvent<T>(event: T): void;
104
+ /** 获取广播器(传输装配等内部使用;未传入返回 undefined)。 */
105
+ protected getBroadcaster(): EventBroadcaster | undefined;
106
+ }
107
+ //#endregion
108
+ export { ProtocolAdapterLike as a, BaseAction as c, AdapterRegistry as i, ErrorCodeMap as l, ProtocolHooks as n, ActionRegistry as o, ProtocolConfig as r, ActionResult as s, BaseProtocolAdapter as t };
109
+ //# sourceMappingURL=index-C1nIfPiU.d.mts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index-C1nIfPiU.d.mts","names":[],"sources":["../src/core/BaseAction.ts","../src/core/action-registry.ts","../src/core/adapter-registry.ts","../src/core/config.ts","../src/core/BaseProtocolAdapter.ts"],"mappings":";;;;;UAgBiB,aAAa;EAC1B;EACA;EACA,MAAM;EACN;EACA;;;KAIQ,eAAe,OAAO;;uBAGZ,WAAW,UAAU;oBACrB;oBACA,QAAQ,QAAQ;8BACN,cAAc;;EAG1C,OAAO,mBAAmB,QAAQ,aAAa;;EAKzC,gBAAgB,kBAAkB,iBAAiB,QAAQ,aAAa;UAQhE;qBAaK,QAAQ,SAAS,WAAW,QAAQ;UAE/C;UAaA;;;;cCtEC;mBACQ;EAEjB,SAAS,QAAQ;EAIjB,IAAI,eAAe;EAInB,IAAI;MAIA;;;;;;;;UCfS;WACJ;EACT,aAAa;EACb,YAAY;;cAGH;mBACQ;EAEjB,SAAS,SAAS;EAIlB,IAAI,mBAAmB;EAIjB,YAAY;EAIZ,WAAW;;;;;cClBR,eAAe,WAAW,WAAW;EAC9C,YAAY;IACR;IACA,QAAQ,QAAQ;IAChB,UAAU;;IAEV,OAAO;IACP,SAAS;;;;;;UCHA;;EAEb,UAAU,oBAAoB;;EAE9B,cAAc;;EAEd,WAAW,oBAAoB;;;;;;uBAOb,oBAAoB;oBACpB;oBACA,cAAc,QAAQ;qBAErB,QAAQ,eAAe;qBACvB,OAAO;mBACT;UACT;EAER,YAAY;IACR,QAAQ,eAAe;IACvB,OAAO;IACP,cAAc;;;EAQZ,SAAS;;EAUT,QAAQ;;EASR,UAAU;;YAMN,eAAe,GAAG,OAAO;;YAKzB,kBAAkB"}
@@ -0,0 +1,11 @@
1
+ //#region src/index.d.ts
2
+ /**
3
+ * @napuketto/adapter 入口
4
+ * 协议适配器容器:core 框架 + onebot11 / satori。
5
+ * 根入口保持轻量(ADR-014):只导出公共类型,不聚合三个协议;协议面走子路径(./core、./onebot11 等)。
6
+ */
7
+ /** 协议标识(多协议共存的装配 key)。 */
8
+ type ProtocolId = "onebot11" | "satori";
9
+ //#endregion
10
+ export { ProtocolId };
11
+ //# sourceMappingURL=index.d.mts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.mts","names":[],"sources":["../src/index.ts"],"mappings":";;;;;;;KAOY"}
package/dist/index.mjs ADDED
@@ -0,0 +1 @@
1
+ export {};