liangzimixin 0.1.0 → 0.2.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 (97) hide show
  1. package/README.md +1 -1
  2. package/dist/accounts.d.ts +45 -0
  3. package/dist/accounts.d.ts.map +1 -0
  4. package/dist/accounts.js +73 -0
  5. package/dist/accounts.js.map +1 -0
  6. package/dist/auth/oauth-client.d.ts +1 -1
  7. package/dist/auth/oauth-client.js +1 -1
  8. package/dist/auth/token-manager.d.ts +1 -1
  9. package/dist/auth/token-manager.js +1 -1
  10. package/dist/auth/token-store.d.ts +4 -4
  11. package/dist/auth/token-store.js +4 -4
  12. package/dist/channel/gate.d.ts +1 -1
  13. package/dist/channel/gate.js +1 -1
  14. package/dist/channel/outbound.d.ts +1 -1
  15. package/dist/channel/outbound.d.ts.map +1 -1
  16. package/dist/channel/outbound.js +10 -9
  17. package/dist/channel/outbound.js.map +1 -1
  18. package/dist/channel/plugin.d.ts +1 -1
  19. package/dist/channel/plugin.d.ts.map +1 -1
  20. package/dist/channel/plugin.js +36 -29
  21. package/dist/channel/plugin.js.map +1 -1
  22. package/dist/config-schema.d.ts +33 -275
  23. package/dist/config-schema.d.ts.map +1 -1
  24. package/dist/config-schema.js +33 -279
  25. package/dist/config-schema.js.map +1 -1
  26. package/dist/config.d.ts +133 -78
  27. package/dist/config.d.ts.map +1 -1
  28. package/dist/config.js +93 -139
  29. package/dist/config.js.map +1 -1
  30. package/dist/constants.d.ts +25 -0
  31. package/dist/constants.d.ts.map +1 -0
  32. package/dist/constants.js +30 -0
  33. package/dist/constants.js.map +1 -0
  34. package/dist/crypto/crypto-engine.d.ts +1 -1
  35. package/dist/crypto/crypto-engine.js +1 -1
  36. package/dist/crypto/key-manager.d.ts +1 -1
  37. package/dist/crypto/key-manager.js +1 -1
  38. package/dist/crypto/quantun-plug-mock.d.ts +1 -1
  39. package/dist/crypto/quantun-plug-mock.js +1 -1
  40. package/dist/crypto/strategy.d.ts +1 -1
  41. package/dist/crypto/strategy.js +1 -1
  42. package/dist/file/api-client.d.ts +1 -1
  43. package/dist/file/api-client.js +1 -1
  44. package/dist/file/download.d.ts +1 -1
  45. package/dist/file/download.js +1 -1
  46. package/dist/file/http-client.d.ts +1 -1
  47. package/dist/file/http-client.js +1 -1
  48. package/dist/file/media.d.ts +1 -1
  49. package/dist/file/media.d.ts.map +1 -1
  50. package/dist/file/media.js +4 -3
  51. package/dist/file/media.js.map +1 -1
  52. package/dist/file/upload.d.ts +1 -1
  53. package/dist/file/upload.js +1 -1
  54. package/dist/index.d.ts +17 -14
  55. package/dist/index.d.ts.map +1 -1
  56. package/dist/index.js +26 -30
  57. package/dist/index.js.map +1 -1
  58. package/dist/logger.d.ts +1 -1
  59. package/dist/logger.d.ts.map +1 -1
  60. package/dist/logger.js +3 -2
  61. package/dist/logger.js.map +1 -1
  62. package/dist/message-handler/abort-detect.d.ts +1 -1
  63. package/dist/message-handler/abort-detect.js +1 -1
  64. package/dist/message-handler/content-resolver.d.ts +1 -1
  65. package/dist/message-handler/content-resolver.js +1 -1
  66. package/dist/message-handler/envelope-builder.d.ts +1 -1
  67. package/dist/message-handler/envelope-builder.d.ts.map +1 -1
  68. package/dist/message-handler/envelope-builder.js +7 -6
  69. package/dist/message-handler/envelope-builder.js.map +1 -1
  70. package/dist/message-handler/handler.d.ts +1 -1
  71. package/dist/message-handler/handler.js +1 -1
  72. package/dist/message-handler/parser.d.ts +1 -1
  73. package/dist/message-handler/parser.js +1 -1
  74. package/dist/push/cockatoo-client.d.ts +1 -1
  75. package/dist/push/cockatoo-client.js +1 -1
  76. package/dist/push/message-transformer.d.ts +1 -1
  77. package/dist/push/message-transformer.js +1 -1
  78. package/dist/push/push-queue.d.ts +1 -1
  79. package/dist/push/push-queue.js +1 -1
  80. package/dist/reply-dispatcher/dispatcher.d.ts +1 -1
  81. package/dist/reply-dispatcher/dispatcher.js +1 -1
  82. package/dist/reply-dispatcher/stream-handler.d.ts +1 -1
  83. package/dist/reply-dispatcher/stream-handler.js +1 -1
  84. package/dist/reply-dispatcher/typing-indicator.d.ts +1 -1
  85. package/dist/reply-dispatcher/typing-indicator.js +1 -1
  86. package/dist/transport/connection-manager.d.ts +1 -1
  87. package/dist/transport/connection-manager.js +1 -1
  88. package/dist/transport/dedup.d.ts +1 -1
  89. package/dist/transport/dedup.js +1 -1
  90. package/dist/transport/message-pipe.d.ts +1 -1
  91. package/dist/transport/message-pipe.js +1 -1
  92. package/dist/transport/ws-client.d.ts +1 -1
  93. package/dist/transport/ws-client.js +1 -1
  94. package/dist/types.d.ts +1 -1
  95. package/dist/types.js +1 -1
  96. package/openclaw.plugin.json +1 -1
  97. package/package.json +6 -6
package/README.md CHANGED
@@ -44,7 +44,7 @@ plugins:
44
44
  wsUrl: "wss://im.example.com/ws"
45
45
  auth:
46
46
  serverUrl: "http://seal.example.com:8080"
47
- clientName: "my-quantum-im"
47
+ clientName: "my-liangzimixin"
48
48
  message:
49
49
  messageServiceBaseUrl: "https://msg.example.com/api/v1"
50
50
  file:
@@ -0,0 +1,45 @@
1
+ /**
2
+ * openclaw-liangzimixin — 多账户配置读取
3
+ *
4
+ * 从 OpenClaw 的 cfg.channels.liangzimixin 中提取账户配置。
5
+ */
6
+ import { type AccountConfig } from './config.js';
7
+ type GlobalConfig = Record<string, unknown>;
8
+ /** 渠道配置(channels.liangzimixin 下的完整对象) */
9
+ interface ChannelSection {
10
+ accounts?: Record<string, Record<string, unknown>>;
11
+ [key: string]: unknown;
12
+ }
13
+ /** 已解析的账户信息 */
14
+ export interface ResolvedAccount {
15
+ accountId: string;
16
+ enabled: boolean;
17
+ configured: boolean;
18
+ credentials?: AccountConfig;
19
+ }
20
+ /**
21
+ * 从 OpenClaw 全局配置中提取渠道配置。
22
+ * 对应 `cfg.channels.liangzimixin`。
23
+ */
24
+ export declare function getChannelConfig(cfg: GlobalConfig): ChannelSection | undefined;
25
+ /**
26
+ * 列出所有账户 ID。
27
+ * 当前只支持单账户 (DEFAULT_ACCOUNT_ID)。
28
+ */
29
+ export declare function getAccountIds(cfg: GlobalConfig): string[];
30
+ /**
31
+ * 获取默认账户 ID。
32
+ */
33
+ export declare function getDefaultAccountId(cfg: GlobalConfig): string;
34
+ /**
35
+ * 解析指定账户的配置。
36
+ * 从 channels.liangzimixin.accounts.<accountId> 中读取并校验。
37
+ */
38
+ export declare function resolveAccount(cfg: GlobalConfig, accountId?: string | null): ResolvedAccount;
39
+ /**
40
+ * 提取账户凭据(快捷方法)。
41
+ * 返回已解析的 AccountConfig,如果账户未配置则返回 null。
42
+ */
43
+ export declare function getCredentials(cfg: GlobalConfig, accountId?: string | null): AccountConfig | null;
44
+ export {};
45
+ //# sourceMappingURL=accounts.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"accounts.d.ts","sourceRoot":"","sources":["../src/accounts.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAGH,OAAO,EAAuB,KAAK,aAAa,EAAE,MAAM,aAAa,CAAC;AAItE,KAAK,YAAY,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;AAM5C,yCAAyC;AACzC,UAAU,cAAc;IACtB,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,CAAC;IACnD,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC;CACxB;AAED,eAAe;AACf,MAAM,WAAW,eAAe;IAC9B,SAAS,EAAE,MAAM,CAAC;IAClB,OAAO,EAAE,OAAO,CAAC;IACjB,UAAU,EAAE,OAAO,CAAC;IACpB,WAAW,CAAC,EAAE,aAAa,CAAC;CAC7B;AAMD;;;GAGG;AACH,wBAAgB,gBAAgB,CAAC,GAAG,EAAE,YAAY,GAAG,cAAc,GAAG,SAAS,CAE9E;AAED;;;GAGG;AACH,wBAAgB,aAAa,CAAC,GAAG,EAAE,YAAY,GAAG,MAAM,EAAE,CAIzD;AAED;;GAEG;AACH,wBAAgB,mBAAmB,CAAC,GAAG,EAAE,YAAY,GAAG,MAAM,CAE7D;AAED;;;GAGG;AACH,wBAAgB,cAAc,CAAC,GAAG,EAAE,YAAY,EAAE,SAAS,CAAC,EAAE,MAAM,GAAG,IAAI,GAAG,eAAe,CA6B5F;AAED;;;GAGG;AACH,wBAAgB,cAAc,CAAC,GAAG,EAAE,YAAY,EAAE,SAAS,CAAC,EAAE,MAAM,GAAG,IAAI,GAAG,aAAa,GAAG,IAAI,CAGjG"}
@@ -0,0 +1,73 @@
1
+ /**
2
+ * openclaw-liangzimixin — 多账户配置读取
3
+ *
4
+ * 从 OpenClaw 的 cfg.channels.liangzimixin 中提取账户配置。
5
+ */
6
+ import { DEFAULT_ACCOUNT_ID } from 'openclaw/plugin-sdk';
7
+ import { AccountConfigSchema } from './config.js';
8
+ import { CHANNEL_ID } from './constants.js';
9
+ // ─────────────────────────────────────────────────────────────────────────────
10
+ // 配置读取
11
+ // ─────────────────────────────────────────────────────────────────────────────
12
+ /**
13
+ * 从 OpenClaw 全局配置中提取渠道配置。
14
+ * 对应 `cfg.channels.liangzimixin`。
15
+ */
16
+ export function getChannelConfig(cfg) {
17
+ return cfg?.channels?.[CHANNEL_ID];
18
+ }
19
+ /**
20
+ * 列出所有账户 ID。
21
+ * 当前只支持单账户 (DEFAULT_ACCOUNT_ID)。
22
+ */
23
+ export function getAccountIds(cfg) {
24
+ const section = getChannelConfig(cfg);
25
+ if (!section?.accounts)
26
+ return [DEFAULT_ACCOUNT_ID];
27
+ return Object.keys(section.accounts);
28
+ }
29
+ /**
30
+ * 获取默认账户 ID。
31
+ */
32
+ export function getDefaultAccountId(cfg) {
33
+ return getAccountIds(cfg)[0] ?? DEFAULT_ACCOUNT_ID;
34
+ }
35
+ /**
36
+ * 解析指定账户的配置。
37
+ * 从 channels.liangzimixin.accounts.<accountId> 中读取并校验。
38
+ */
39
+ export function resolveAccount(cfg, accountId) {
40
+ const requestedId = accountId ?? DEFAULT_ACCOUNT_ID;
41
+ const section = getChannelConfig(cfg);
42
+ if (!section?.accounts?.[requestedId]) {
43
+ return {
44
+ accountId: requestedId,
45
+ enabled: false,
46
+ configured: false,
47
+ };
48
+ }
49
+ const rawAccount = section.accounts[requestedId];
50
+ const result = AccountConfigSchema.safeParse(rawAccount);
51
+ if (!result.success) {
52
+ return {
53
+ accountId: requestedId,
54
+ enabled: false,
55
+ configured: false,
56
+ };
57
+ }
58
+ return {
59
+ accountId: requestedId,
60
+ enabled: true,
61
+ configured: true,
62
+ credentials: result.data,
63
+ };
64
+ }
65
+ /**
66
+ * 提取账户凭据(快捷方法)。
67
+ * 返回已解析的 AccountConfig,如果账户未配置则返回 null。
68
+ */
69
+ export function getCredentials(cfg, accountId) {
70
+ const resolved = resolveAccount(cfg, accountId);
71
+ return resolved.credentials ?? null;
72
+ }
73
+ //# sourceMappingURL=accounts.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"accounts.js","sourceRoot":"","sources":["../src/accounts.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,kBAAkB,EAAE,MAAM,qBAAqB,CAAC;AACzD,OAAO,EAAE,mBAAmB,EAAsB,MAAM,aAAa,CAAC;AACtE,OAAO,EAAE,UAAU,EAAE,MAAM,gBAAgB,CAAC;AAuB5C,gFAAgF;AAChF,OAAO;AACP,gFAAgF;AAEhF;;;GAGG;AACH,MAAM,UAAU,gBAAgB,CAAC,GAAiB;IAChD,OAAQ,GAAG,EAAE,QAAuD,EAAE,CAAC,UAAU,CAAC,CAAC;AACrF,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,aAAa,CAAC,GAAiB;IAC7C,MAAM,OAAO,GAAG,gBAAgB,CAAC,GAAG,CAAC,CAAC;IACtC,IAAI,CAAC,OAAO,EAAE,QAAQ;QAAE,OAAO,CAAC,kBAAkB,CAAC,CAAC;IACpD,OAAO,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;AACvC,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,mBAAmB,CAAC,GAAiB;IACnD,OAAO,aAAa,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,kBAAkB,CAAC;AACrD,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,cAAc,CAAC,GAAiB,EAAE,SAAyB;IACzE,MAAM,WAAW,GAAG,SAAS,IAAI,kBAAkB,CAAC;IACpD,MAAM,OAAO,GAAG,gBAAgB,CAAC,GAAG,CAAC,CAAC;IAEtC,IAAI,CAAC,OAAO,EAAE,QAAQ,EAAE,CAAC,WAAW,CAAC,EAAE,CAAC;QACtC,OAAO;YACL,SAAS,EAAE,WAAW;YACtB,OAAO,EAAE,KAAK;YACd,UAAU,EAAE,KAAK;SAClB,CAAC;IACJ,CAAC;IAED,MAAM,UAAU,GAAG,OAAO,CAAC,QAAQ,CAAC,WAAW,CAAC,CAAC;IACjD,MAAM,MAAM,GAAG,mBAAmB,CAAC,SAAS,CAAC,UAAU,CAAC,CAAC;IAEzD,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC;QACpB,OAAO;YACL,SAAS,EAAE,WAAW;YACtB,OAAO,EAAE,KAAK;YACd,UAAU,EAAE,KAAK;SAClB,CAAC;IACJ,CAAC;IAED,OAAO;QACL,SAAS,EAAE,WAAW;QACtB,OAAO,EAAE,IAAI;QACb,UAAU,EAAE,IAAI;QAChB,WAAW,EAAE,MAAM,CAAC,IAAI;KACzB,CAAC;AACJ,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,cAAc,CAAC,GAAiB,EAAE,SAAyB;IACzE,MAAM,QAAQ,GAAG,cAAc,CAAC,GAAG,EAAE,SAAS,CAAC,CAAC;IAChD,OAAO,QAAQ,CAAC,WAAW,IAAI,IAAI,CAAC;AACtC,CAAC"}
@@ -1,5 +1,5 @@
1
1
  /**
2
- * openclaw-quantum-im — Seal OAuth HTTP 客户端
2
+ * openclaw-liangzimixin — Seal OAuth HTTP 客户端
3
3
  *
4
4
  * 封装 Seal 授权服务器通信: register / getToken
5
5
  * 基于《seal认证技术文档》OAuth2 Client Credentials 模式
@@ -1,5 +1,5 @@
1
1
  /**
2
- * openclaw-quantum-im — Seal OAuth HTTP 客户端
2
+ * openclaw-liangzimixin — Seal OAuth HTTP 客户端
3
3
  *
4
4
  * 封装 Seal 授权服务器通信: register / getToken
5
5
  * 基于《seal认证技术文档》OAuth2 Client Credentials 模式
@@ -1,5 +1,5 @@
1
1
  /**
2
- * openclaw-quantum-im — Token 生命周期管理
2
+ * openclaw-liangzimixin — Token 生命周期管理
3
3
  *
4
4
  * 自动获取 / 缓存 / 过期重取 / 并发锁 / scope 检查 / 定时刷新
5
5
  *
@@ -1,5 +1,5 @@
1
1
  /**
2
- * openclaw-quantum-im — Token 生命周期管理
2
+ * openclaw-liangzimixin — Token 生命周期管理
3
3
  *
4
4
  * 自动获取 / 缓存 / 过期重取 / 并发锁 / scope 检查 / 定时刷新
5
5
  *
@@ -1,7 +1,7 @@
1
1
  /**
2
- * openclaw-quantum-im — Token 安全存储
2
+ * openclaw-liangzimixin — Token 安全存储
3
3
  *
4
- * 加密持久化 Token 到 ~/.quantum-im/tokens/ (目录 0700, 文件 0600)。
4
+ * 加密持久化 Token 到 ~/.liangzimixin/tokens/ (目录 0700, 文件 0600)。
5
5
  * 使用 CryptoEngine 对 Token 数据进行量子加密(Mock)后存储。
6
6
  *
7
7
  * 存储格式 (JSON):
@@ -18,7 +18,7 @@ import type { CryptoEngine } from '../crypto/crypto-engine.js';
18
18
  /**
19
19
  * Token 安全存储 — 加密持久化 Token 到本地文件系统。
20
20
  *
21
- * 存储路径: ~/.quantum-im/tokens/
21
+ * 存储路径: ~/.liangzimixin/tokens/
22
22
  * 文件格式: JSON → CryptoEngine.encrypt() → { ciphertext, keyId } JSON → .enc 文件
23
23
  *
24
24
  * 操作:
@@ -34,7 +34,7 @@ export declare class TokenStore {
34
34
  /** 目录是否已初始化 (避免重复 mkdir) */
35
35
  private dirEnsured;
36
36
  /**
37
- * @param storageDir - 存储目录路径 (如 '~/.quantum-im/tokens')
37
+ * @param storageDir - 存储目录路径 (如 '~/.liangzimixin/tokens')
38
38
  * @param crypto - CryptoEngine 实例 (需已调用 init())
39
39
  */
40
40
  constructor(storageDir: string, crypto: CryptoEngine);
@@ -1,7 +1,7 @@
1
1
  /**
2
- * openclaw-quantum-im — Token 安全存储
2
+ * openclaw-liangzimixin — Token 安全存储
3
3
  *
4
- * 加密持久化 Token 到 ~/.quantum-im/tokens/ (目录 0700, 文件 0600)。
4
+ * 加密持久化 Token 到 ~/.liangzimixin/tokens/ (目录 0700, 文件 0600)。
5
5
  * 使用 CryptoEngine 对 Token 数据进行量子加密(Mock)后存储。
6
6
  *
7
7
  * 存储格式 (JSON):
@@ -22,7 +22,7 @@ const log = createLogger('auth/token-store');
22
22
  /**
23
23
  * Token 安全存储 — 加密持久化 Token 到本地文件系统。
24
24
  *
25
- * 存储路径: ~/.quantum-im/tokens/
25
+ * 存储路径: ~/.liangzimixin/tokens/
26
26
  * 文件格式: JSON → CryptoEngine.encrypt() → { ciphertext, keyId } JSON → .enc 文件
27
27
  *
28
28
  * 操作:
@@ -38,7 +38,7 @@ export class TokenStore {
38
38
  /** 目录是否已初始化 (避免重复 mkdir) */
39
39
  dirEnsured = false;
40
40
  /**
41
- * @param storageDir - 存储目录路径 (如 '~/.quantum-im/tokens')
41
+ * @param storageDir - 存储目录路径 (如 '~/.liangzimixin/tokens')
42
42
  * @param crypto - CryptoEngine 实例 (需已调用 init())
43
43
  */
44
44
  constructor(storageDir, crypto) {
@@ -1,5 +1,5 @@
1
1
  /**
2
- * openclaw-quantum-im — 消息入口守卫
2
+ * openclaw-liangzimixin — 消息入口守卫
3
3
  *
4
4
  * 1. Anti-loop: senderId === botUserId → 丢弃
5
5
  * 2. 过期检测: > 30min → 丢弃
@@ -1,5 +1,5 @@
1
1
  /**
2
- * openclaw-quantum-im — 消息入口守卫
2
+ * openclaw-liangzimixin — 消息入口守卫
3
3
  *
4
4
  * 1. Anti-loop: senderId === botUserId → 丢弃
5
5
  * 2. 过期检测: > 30min → 丢弃
@@ -1,5 +1,5 @@
1
1
  /**
2
- * openclaw-quantum-im — SDK 主动发消息适配器 (ChannelOutboundAdapter)
2
+ * openclaw-liangzimixin — SDK 主动发消息适配器 (ChannelOutboundAdapter)
3
3
  *
4
4
  * 仅处理 SDK 主动发送 (tool call / 通知)。入站回复走 reply-dispatcher/。
5
5
  *
@@ -1 +1 @@
1
- {"version":3,"file":"outbound.d.ts","sourceRoot":"","sources":["../../src/channel/outbound.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAEH,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,qBAAqB,CAAC;AAClE,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,+BAA+B,CAAC;AACnE,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,0BAA0B,CAAC;AAY7D,wDAAwD;AACxD,wBAAgB,oBAAoB,CAAC,MAAM,EAAE,MAAM,OAAO,8BAA8B,EAAE,WAAW,GAAG,IAAI,CAE3G;AAQD,wDAAwD;AACxD,wBAAgB,mBAAmB,CAAC,MAAM,EAAE,MAAM,aAAa,GAAG,IAAI,CAErE;AAQD,yDAAyD;AACzD,wBAAgB,qBAAqB,CAAC,MAAM,EAAE,MAAM,YAAY,GAAG,IAAI,CAEtE;AAED;;;;GAIG;AACH,eAAO,MAAM,iBAAiB,EAAE,sBA0E/B,CAAC"}
1
+ {"version":3,"file":"outbound.d.ts","sourceRoot":"","sources":["../../src/channel/outbound.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAEH,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,qBAAqB,CAAC;AAClE,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,+BAA+B,CAAC;AACnE,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,0BAA0B,CAAC;AAa7D,wDAAwD;AACxD,wBAAgB,oBAAoB,CAAC,MAAM,EAAE,MAAM,OAAO,8BAA8B,EAAE,WAAW,GAAG,IAAI,CAE3G;AAQD,wDAAwD;AACxD,wBAAgB,mBAAmB,CAAC,MAAM,EAAE,MAAM,aAAa,GAAG,IAAI,CAErE;AAQD,yDAAyD;AACzD,wBAAgB,qBAAqB,CAAC,MAAM,EAAE,MAAM,YAAY,GAAG,IAAI,CAEtE;AAED;;;;GAIG;AACH,eAAO,MAAM,iBAAiB,EAAE,sBA0E/B,CAAC"}
@@ -1,5 +1,5 @@
1
1
  /**
2
- * openclaw-quantum-im — SDK 主动发消息适配器 (ChannelOutboundAdapter)
2
+ * openclaw-liangzimixin — SDK 主动发消息适配器 (ChannelOutboundAdapter)
3
3
  *
4
4
  * 仅处理 SDK 主动发送 (tool call / 通知)。入站回复走 reply-dispatcher/。
5
5
  *
@@ -11,6 +11,7 @@
11
11
  */
12
12
  import { resolveAndUploadMedia } from '../file/media.js';
13
13
  import { createLogger } from '../logger.js';
14
+ import { CHANNEL_ID, parseChannelAddress } from '../constants.js';
14
15
  const log = createLogger('channel/outbound');
15
16
  /**
16
17
  * 获取当前 MessagePipe 实例。
@@ -56,32 +57,32 @@ export const quantumImOutbound = {
56
57
  log.info('sendText called', { to, textLength: text.length });
57
58
  if (!messagePipeGetter) {
58
59
  log.error('outbound:sendText failed, messagePipe not initialized');
59
- return { channel: 'quantum-im', messageId: '', chatId: to };
60
+ return { channel: CHANNEL_ID, messageId: '', chatId: to };
60
61
  }
61
62
  const messagePipe = messagePipeGetter();
62
- // 从 to 解析 chatId (去掉 "quantum-im:" 前缀)
63
+ // 从 to 解析 chatId (去掉 channel 前缀)
63
64
  // 私聊场景: chatId 即为用户 ID,同时作为 senderId (receive_id)
64
- const chatId = to.replace(/^quantum-im:/, '');
65
+ const chatId = parseChannelAddress(to);
65
66
  await messagePipe.sendMessage({
66
67
  chatId,
67
68
  senderId: chatId,
68
69
  msgType: 'text',
69
70
  content: JSON.stringify({ content: text }),
70
71
  });
71
- return { channel: 'quantum-im', messageId: '', chatId };
72
+ return { channel: CHANNEL_ID, messageId: '', chatId };
72
73
  },
73
74
  /** 发送媒体消息 — SDK fetchRemoteMedia + 三步上传 + 发送 */
74
75
  sendMedia: async ({ cfg, to, text, mediaUrl, mediaLocalRoots, accountId }) => {
75
76
  log.info('sendMedia called', { to, mediaUrl });
76
77
  if (!messagePipeGetter || !sdkRuntimeGetter || !tokenManagerGetter) {
77
78
  log.error('outbound:sendMedia failed, dependencies not initialized');
78
- return { channel: 'quantum-im', messageId: '', chatId: to };
79
+ return { channel: CHANNEL_ID, messageId: '', chatId: to };
79
80
  }
80
81
  const messagePipe = messagePipeGetter();
81
82
  const sdkRuntime = sdkRuntimeGetter();
82
- const chatId = to.replace(/^quantum-im:/, '');
83
+ const chatId = parseChannelAddress(to);
83
84
  // 从 cfg 获取文件服务配置
84
- const fileCfg = cfg?.channels?.['quantum-im']?.file;
85
+ const fileCfg = cfg?.channels?.[CHANNEL_ID]?.file;
85
86
  const result = await resolveAndUploadMedia({
86
87
  mediaUrl: mediaUrl ?? undefined,
87
88
  tokenManager: tokenManagerGetter(),
@@ -98,7 +99,7 @@ export const quantumImOutbound = {
98
99
  if (result.warning) {
99
100
  log.warn('sendMedia:degraded', { chatId, warning: result.warning });
100
101
  }
101
- return { channel: 'quantum-im', messageId: result.messageId, chatId };
102
+ return { channel: CHANNEL_ID, messageId: result.messageId, chatId };
102
103
  },
103
104
  };
104
105
  //# sourceMappingURL=outbound.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"outbound.js","sourceRoot":"","sources":["../../src/channel/outbound.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAKH,OAAO,EAAE,qBAAqB,EAAE,MAAM,kBAAkB,CAAC;AACzD,OAAO,EAAE,YAAY,EAAE,MAAM,cAAc,CAAC;AAE5C,MAAM,GAAG,GAAG,YAAY,CAAC,kBAAkB,CAAC,CAAC;AAE7C;;;GAGG;AACH,IAAI,iBAAiB,GAAsE,IAAI,CAAC;AAEhG,wDAAwD;AACxD,MAAM,UAAU,oBAAoB,CAAC,MAAgE;IACnG,iBAAiB,GAAG,MAAM,CAAC;AAC7B,CAAC;AAED;;;GAGG;AACH,IAAI,gBAAgB,GAAiC,IAAI,CAAC;AAE1D,wDAAwD;AACxD,MAAM,UAAU,mBAAmB,CAAC,MAA2B;IAC7D,gBAAgB,GAAG,MAAM,CAAC;AAC5B,CAAC;AAED;;;GAGG;AACH,IAAI,kBAAkB,GAAgC,IAAI,CAAC;AAE3D,yDAAyD;AACzD,MAAM,UAAU,qBAAqB,CAAC,MAA0B;IAC9D,kBAAkB,GAAG,MAAM,CAAC;AAC9B,CAAC;AAED;;;;GAIG;AACH,MAAM,CAAC,MAAM,iBAAiB,GAA2B;IACvD,kCAAkC;IAClC,YAAY,EAAE,QAAQ;IACtB,sCAAsC;IACtC,WAAW,EAAE,UAAU;IACvB,gBAAgB;IAChB,cAAc,EAAE,KAAK;IAErB,iCAAiC;IACjC,QAAQ,EAAE,KAAK,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,IAAI,EAAE,SAAS,EAAE,EAAE,EAAE;QAC/C,GAAG,CAAC,IAAI,CAAC,iBAAiB,EAAE,EAAE,EAAE,EAAE,UAAU,EAAE,IAAI,CAAC,MAAM,EAAE,CAAC,CAAC;QAE7D,IAAI,CAAC,iBAAiB,EAAE,CAAC;YACvB,GAAG,CAAC,KAAK,CAAC,uDAAuD,CAAC,CAAC;YACnE,OAAO,EAAE,OAAO,EAAE,YAAY,EAAE,SAAS,EAAE,EAAE,EAAE,MAAM,EAAE,EAAE,EAAE,CAAC;QAC9D,CAAC;QAED,MAAM,WAAW,GAAG,iBAAiB,EAAE,CAAC;QACxC,uCAAuC;QACvC,kDAAkD;QAClD,MAAM,MAAM,GAAG,EAAE,CAAC,OAAO,CAAC,cAAc,EAAE,EAAE,CAAC,CAAC;QAE9C,MAAM,WAAW,CAAC,WAAW,CAAC;YAC5B,MAAM;YACN,QAAQ,EAAE,MAAM;YAChB,OAAO,EAAE,MAAM;YACf,OAAO,EAAE,IAAI,CAAC,SAAS,CAAC,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC;SAC3C,CAAC,CAAC;QAEH,OAAO,EAAE,OAAO,EAAE,YAAY,EAAE,SAAS,EAAE,EAAE,EAAE,MAAM,EAAE,CAAC;IAC1D,CAAC;IAED,gDAAgD;IAChD,SAAS,EAAE,KAAK,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,eAAe,EAAE,SAAS,EAAE,EAAE,EAAE;QAC3E,GAAG,CAAC,IAAI,CAAC,kBAAkB,EAAE,EAAE,EAAE,EAAE,QAAQ,EAAE,CAAC,CAAC;QAE/C,IAAI,CAAC,iBAAiB,IAAI,CAAC,gBAAgB,IAAI,CAAC,kBAAkB,EAAE,CAAC;YACnE,GAAG,CAAC,KAAK,CAAC,yDAAyD,CAAC,CAAC;YACrE,OAAO,EAAE,OAAO,EAAE,YAAY,EAAE,SAAS,EAAE,EAAE,EAAE,MAAM,EAAE,EAAE,EAAE,CAAC;QAC9D,CAAC;QAED,MAAM,WAAW,GAAG,iBAAiB,EAAE,CAAC;QACxC,MAAM,UAAU,GAAG,gBAAgB,EAAE,CAAC;QACtC,MAAM,MAAM,GAAG,EAAE,CAAC,OAAO,CAAC,cAAc,EAAE,EAAE,CAAC,CAAC;QAE9C,iBAAiB;QACjB,MAAM,OAAO,GAAI,GAMT,EAAE,QAAQ,EAAE,CAAC,YAAY,CAAC,EAAE,IAAI,CAAC;QAEzC,MAAM,MAAM,GAAG,MAAM,qBAAqB,CAAC;YACzC,QAAQ,EAAE,QAAQ,IAAI,SAAS;YAC/B,YAAY,EAAE,kBAAkB,EAAE;YAClC,SAAS,EAAE,OAAO,EAAE,kBAAkB,IAAI,EAAE;YAC5C,iBAAiB,EAAE,eAAe,IAAI,SAAS;YAC/C,mBAAmB,EAAE,OAAO,EAAE,mBAAmB,IAAI,KAAK;YAC1D,UAAU;YACV,WAAW;YACX,MAAM;YACN,aAAa,EAAE,OAAO,EAAE,aAAa;YACrC,WAAW,EAAE,OAAO,EAAE,WAAW;YACjC,SAAS,EAAE,OAAO,EAAE,cAAc;SACnC,CAAC,CAAC;QAEH,IAAI,MAAM,CAAC,OAAO,EAAE,CAAC;YACnB,GAAG,CAAC,IAAI,CAAC,oBAAoB,EAAE,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,CAAC,OAAO,EAAE,CAAC,CAAC;QACtE,CAAC;QAED,OAAO,EAAE,OAAO,EAAE,YAAY,EAAE,SAAS,EAAE,MAAM,CAAC,SAAS,EAAE,MAAM,EAAE,CAAC;IACxE,CAAC;CACF,CAAC"}
1
+ {"version":3,"file":"outbound.js","sourceRoot":"","sources":["../../src/channel/outbound.ts"],"names":[],"mappings":"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"}
@@ -1,5 +1,5 @@
1
1
  /**
2
- * openclaw-quantum-im — ChannelPlugin 接口实现
2
+ * openclaw-liangzimixin — ChannelPlugin 接口实现
3
3
  *
4
4
  * 插件与 OpenClaw SDK 的核心契约。
5
5
  * gateway.startAccount 是整个插件的启动入口。
@@ -1 +1 @@
1
- {"version":3,"file":"plugin.d.ts","sourceRoot":"","sources":["../../src/channel/plugin.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,KAAK,EAAe,aAAa,EAAE,MAAM,qBAAqB,CAAC;AAyBtE,eAAO,MAAM,eAAe,EAAE,aAmJ7B,CAAC"}
1
+ {"version":3,"file":"plugin.d.ts","sourceRoot":"","sources":["../../src/channel/plugin.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,KAAK,EAAe,aAAa,EAAE,MAAM,qBAAqB,CAAC;AA2BtE,eAAO,MAAM,eAAe,EAAE,aAyJ7B,CAAC"}
@@ -1,5 +1,5 @@
1
1
  /**
2
- * openclaw-quantum-im — ChannelPlugin 接口实现
2
+ * openclaw-liangzimixin — ChannelPlugin 接口实现
3
3
  *
4
4
  * 插件与 OpenClaw SDK 的核心契约。
5
5
  * gateway.startAccount 是整个插件的启动入口。
@@ -10,14 +10,16 @@ import { startPlugin } from '../index.js';
10
10
  import { InboundPipeline } from '../message-handler/handler.js';
11
11
  import { createLogger } from '../logger.js';
12
12
  import { QUANTUM_IM_CONFIG_JSON_SCHEMA } from '../config-schema.js';
13
+ import { getAccountIds, getDefaultAccountId, resolveAccount } from '../accounts.js';
14
+ import { CHANNEL_ID } from '../constants.js';
13
15
  const log = createLogger('channel/plugin');
14
16
  /** 渠道元数据 — 显示在 OpenClaw 管理界面的插件信息 */
15
17
  const meta = {
16
- id: 'quantum-im',
18
+ id: CHANNEL_ID,
17
19
  label: 'QuantumIM',
18
20
  selectionLabel: '密信 IM',
19
- docsPath: '/channels/quantum-im',
20
- docsLabel: 'quantum-im',
21
+ docsPath: `/channels/${CHANNEL_ID}`,
22
+ docsLabel: CHANNEL_ID,
21
23
  blurb: '密信 IM Channel,支持量子加密的安全即时通信。',
22
24
  aliases: ['qim'], // CLI 和 API 中的短名
23
25
  order: 80, // 渠道列表排序权重
@@ -25,7 +27,7 @@ const meta = {
25
27
  /** 当前运行中的插件实例 (单账户) */
26
28
  let activeInstance = null;
27
29
  export const quantumImPlugin = {
28
- id: 'quantum-im',
30
+ id: CHANNEL_ID,
29
31
  meta: { ...meta },
30
32
  /** 配置 JSON Schema — 用于框架配置校验和 UI 表单自动生成 */
31
33
  configSchema: {
@@ -53,20 +55,22 @@ export const quantumImPlugin = {
53
55
  * 当前简化实现: 仅支持单一默认账户 (DEFAULT_ACCOUNT_ID)。
54
56
  */
55
57
  config: {
56
- /** 列出所有账户 ID (当前固定返回单个默认账户) */
57
- listAccountIds: (_cfg) => [DEFAULT_ACCOUNT_ID],
58
+ /** 列出所有账户 ID */
59
+ listAccountIds: (cfg) => getAccountIds(cfg),
58
60
  /** 解析账户配置 */
59
- resolveAccount: (_cfg, _accountId) => ({
60
- accountId: DEFAULT_ACCOUNT_ID,
61
- enabled: true,
62
- configured: true,
63
- // TODO: 从 cfg 中提取 quantum-im 配置,检查必填字段
64
- }),
61
+ resolveAccount: (cfg, accountId) => {
62
+ const resolved = resolveAccount(cfg, accountId);
63
+ return {
64
+ accountId: resolved.accountId,
65
+ enabled: resolved.enabled,
66
+ configured: resolved.configured,
67
+ };
68
+ },
65
69
  /** 返回默认账户 ID */
66
- defaultAccountId: (_cfg) => DEFAULT_ACCOUNT_ID,
67
- /** 检查账户是否已配置 (必填字段是否已填写) */
68
- isConfigured: (account) => Boolean(account),
69
- /** 返回账户状态描述 (用于管理界面展示) */
70
+ defaultAccountId: (cfg) => getDefaultAccountId(cfg),
71
+ /** 检查账户是否已配置 */
72
+ isConfigured: (account) => Boolean(account?.configured),
73
+ /** 返回账户状态描述 */
70
74
  describeAccount: (_account) => ({
71
75
  accountId: DEFAULT_ACCOUNT_ID,
72
76
  enabled: true,
@@ -107,17 +111,20 @@ export const quantumImPlugin = {
107
111
  gateway: {
108
112
  /** 启动账户 — 初始化所有模块并开始接收消息 */
109
113
  startAccount: async (ctx) => {
110
- log.info(`starting quantum-im[${ctx.accountId}]`);
114
+ log.info(`starting liangzimixin[${ctx.accountId}]`);
111
115
  try {
112
- // 1. 初始化所有模块
113
- // TODO: ctx.cfg 是 OpenClaw 全局配置,需要提取 quantum-im 子配置
114
- // 当前假设 ctx.cfg 直接是 quantum-im 配置 (后续根据 SDK 实际结构调整)
115
- const instance = await startPlugin(ctx.cfg);
116
+ // 1. 从全局配置中提取账户凭据
117
+ const resolved = resolveAccount(ctx.cfg, ctx.accountId);
118
+ if (!resolved.credentials) {
119
+ throw new Error(`账户 ${ctx.accountId} 未配置或凭据不完整`);
120
+ }
121
+ // 2. 使用凭据初始化所有模块
122
+ const instance = await startPlugin(resolved.credentials);
116
123
  activeInstance = instance;
117
124
  const { config } = instance;
118
- // 2. 启动 WS 连接
125
+ // 3. 启动 WS 连接
119
126
  await instance.connectionManager.start(config.transport.wsUrl, () => instance.tokenManager.getValidToken(), config.credentials.appId);
120
- // 3. 创建入站管道并注册消息回调
127
+ // 4. 创建入站管道并注册消息回调
121
128
  const pipeline = new InboundPipeline({
122
129
  messagePipe: instance.messagePipe,
123
130
  tokenManager: instance.tokenManager,
@@ -131,14 +138,14 @@ export const quantumImPlugin = {
131
138
  instance.messagePipe.onMessage((msg) => {
132
139
  pipeline.handle(msg);
133
140
  });
134
- // 4. 注册 outbound 依赖 getter (messagePipe / sdkRuntime / tokenManager)
141
+ // 5. 注册 outbound 依赖 getter
135
142
  setMessagePipeGetter(() => instance.messagePipe);
136
143
  setSdkRuntimeGetter(() => ctx.runtime);
137
144
  setTokenManagerGetter(() => instance.tokenManager);
138
- log.info(`quantum-im[${ctx.accountId}] started ✓`);
145
+ log.info(`liangzimixin[${ctx.accountId}] started ✓`);
139
146
  }
140
147
  catch (err) {
141
- log.error(`quantum-im[${ctx.accountId}] start failed`, {
148
+ log.error(`liangzimixin[${ctx.accountId}] start failed`, {
142
149
  error: err.message,
143
150
  });
144
151
  throw err;
@@ -146,12 +153,12 @@ export const quantumImPlugin = {
146
153
  },
147
154
  /** 停止账户 — 优雅关闭所有模块 */
148
155
  stopAccount: async (ctx) => {
149
- log.info(`stopping quantum-im[${ctx.accountId}]`);
156
+ log.info(`stopping liangzimixin[${ctx.accountId}]`);
150
157
  if (activeInstance) {
151
158
  await activeInstance.shutdown();
152
159
  activeInstance = null;
153
160
  }
154
- log.info(`stopped quantum-im[${ctx.accountId}]`);
161
+ log.info(`stopped liangzimixin[${ctx.accountId}]`);
155
162
  },
156
163
  },
157
164
  };
@@ -1 +1 @@
1
- {"version":3,"file":"plugin.js","sourceRoot":"","sources":["../../src/channel/plugin.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"plugin.js","sourceRoot":"","sources":["../../src/channel/plugin.ts"],"names":[],"mappings":"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"}