@yuzhf/oneainexus-openclaw-connector 0.1.4

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 (47) hide show
  1. package/README.md +221 -0
  2. package/dist/index.d.ts +13 -0
  3. package/dist/index.d.ts.map +1 -0
  4. package/dist/index.js +12 -0
  5. package/dist/index.js.map +1 -0
  6. package/dist/setup-entry.d.ts +5 -0
  7. package/dist/setup-entry.d.ts.map +1 -0
  8. package/dist/setup-entry.js +4 -0
  9. package/dist/setup-entry.js.map +1 -0
  10. package/dist/src/channel.d.ts +3 -0
  11. package/dist/src/channel.d.ts.map +1 -0
  12. package/dist/src/channel.js +149 -0
  13. package/dist/src/channel.js.map +1 -0
  14. package/dist/src/config.d.ts +85 -0
  15. package/dist/src/config.d.ts.map +1 -0
  16. package/dist/src/config.js +116 -0
  17. package/dist/src/config.js.map +1 -0
  18. package/dist/src/inbound.d.ts +9 -0
  19. package/dist/src/inbound.d.ts.map +1 -0
  20. package/dist/src/inbound.js +336 -0
  21. package/dist/src/inbound.js.map +1 -0
  22. package/dist/src/media-bridge.d.ts +10 -0
  23. package/dist/src/media-bridge.d.ts.map +1 -0
  24. package/dist/src/media-bridge.js +258 -0
  25. package/dist/src/media-bridge.js.map +1 -0
  26. package/dist/src/outbound.d.ts +61 -0
  27. package/dist/src/outbound.d.ts.map +1 -0
  28. package/dist/src/outbound.js +467 -0
  29. package/dist/src/outbound.js.map +1 -0
  30. package/dist/src/runtime-store.d.ts +14 -0
  31. package/dist/src/runtime-store.d.ts.map +1 -0
  32. package/dist/src/runtime-store.js +27 -0
  33. package/dist/src/runtime-store.js.map +1 -0
  34. package/dist/src/sdk-worker.d.ts +12 -0
  35. package/dist/src/sdk-worker.d.ts.map +1 -0
  36. package/dist/src/sdk-worker.js +186 -0
  37. package/dist/src/sdk-worker.js.map +1 -0
  38. package/dist/src/session-delete.d.ts +12 -0
  39. package/dist/src/session-delete.d.ts.map +1 -0
  40. package/dist/src/session-delete.js +40 -0
  41. package/dist/src/session-delete.js.map +1 -0
  42. package/dist/src/types.d.ts +35 -0
  43. package/dist/src/types.d.ts.map +1 -0
  44. package/dist/src/types.js +4 -0
  45. package/dist/src/types.js.map +1 -0
  46. package/openclaw.plugin.json +60 -0
  47. package/package.json +64 -0
package/README.md ADDED
@@ -0,0 +1,221 @@
1
+ # oneainexu-openclaw-connector
2
+
3
+ `oneainexu-openclaw-connector` 是一个 OpenClaw channel 插件,用于把 OpenClaw 和 `oneainexus-openclaw-chat` 通过 Oneainexus Chat SDK 连接起来。
4
+
5
+ ## 功能
6
+
7
+ - 提供 `oneainexus` channel
8
+ - 支持 direct chat
9
+ - 支持文本与媒体消息透传
10
+ - 支持基于 `session:<sessionId>` 的目标路由
11
+ - 支持多账号配置
12
+
13
+ ## 安装
14
+
15
+ 发布到 npm 后,在 OpenClaw 的运行环境中安装:
16
+
17
+ ```bash
18
+ npm install @oneainexus/openclaw-connector
19
+ ```
20
+
21
+ 如果你使用的是本地包或私有源,也可以按实际包名安装。
22
+
23
+ ## 插件入口
24
+
25
+ 本插件在 `package.json` 中声明了 OpenClaw 扩展信息:
26
+
27
+ - 扩展入口:`./dist/index.js`
28
+ - setup 入口:`./dist/setup-entry.js`
29
+ - channel id:`oneainexus`
30
+
31
+ 通常只要在 OpenClaw 所在环境安装该包,OpenClaw 就可以识别这个 channel 插件。
32
+
33
+ ## 配置方式
34
+
35
+ 主配置使用 `channels.oneainexus.accounts`。
36
+
37
+ 最小必填项:
38
+
39
+ - `apiEndpoint`
40
+ - `clientId`
41
+ - `clientSecret`
42
+
43
+ 可选项:
44
+
45
+ - `name`
46
+ - `enabled`
47
+ - `wsPath`
48
+ - `dmPolicy`
49
+ - `allowFrom`
50
+
51
+ ## 最小配置示例
52
+
53
+ ```json
54
+ {
55
+ "channels": {
56
+ "oneainexus": {
57
+ "accounts": {
58
+ "default": {
59
+ "enabled": true,
60
+ "apiEndpoint": "https://your-chat-gateway.example.com",
61
+ "clientId": "your-client-id",
62
+ "clientSecret": "your-client-secret"
63
+ }
64
+ }
65
+ }
66
+ }
67
+ }
68
+ ```
69
+
70
+ ## 完整配置示例
71
+
72
+ ```json
73
+ {
74
+ "channels": {
75
+ "oneainexus": {
76
+ "accounts": {
77
+ "default": {
78
+ "name": "prod",
79
+ "enabled": true,
80
+ "apiEndpoint": "https://your-chat-gateway.example.com",
81
+ "wsPath": "/oneainexus-talk/api/_ws.ws",
82
+ "clientId": "your-client-id",
83
+ "clientSecret": "your-client-secret",
84
+ "dmPolicy": "open",
85
+ "allowFrom": []
86
+ }
87
+ }
88
+ }
89
+ }
90
+ }
91
+ ```
92
+
93
+ ## 多账号示例
94
+
95
+ ```json
96
+ {
97
+ "channels": {
98
+ "oneainexus": {
99
+ "accounts": {
100
+ "default": {
101
+ "name": "prod",
102
+ "enabled": true,
103
+ "apiEndpoint": "https://chat-prod.example.com",
104
+ "clientId": "prod-client-id",
105
+ "clientSecret": "prod-client-secret"
106
+ },
107
+ "staging": {
108
+ "name": "staging",
109
+ "enabled": true,
110
+ "apiEndpoint": "https://chat-staging.example.com",
111
+ "clientId": "staging-client-id",
112
+ "clientSecret": "staging-client-secret",
113
+ "wsPath": "/oneainexus-talk/api/_ws.ws"
114
+ }
115
+ }
116
+ }
117
+ }
118
+ }
119
+ ```
120
+
121
+ ## 字段说明
122
+
123
+ ### `apiEndpoint`
124
+
125
+ Oneainexus Chat 网关的 HTTP 基地址。
126
+
127
+ ### `wsPath`
128
+
129
+ WebSocket 路径,可选。默认值是:
130
+
131
+ ```txt
132
+ /oneainexus-talk/api/_ws.ws
133
+ ```
134
+
135
+ ### `clientId`
136
+
137
+ SDK 使用的客户端标识。
138
+
139
+ ### `clientSecret`
140
+
141
+ SDK 使用的客户端密钥。
142
+
143
+ ### `enabled`
144
+
145
+ 账号是否启用。未配置时默认按启用处理。
146
+
147
+ ### `dmPolicy`
148
+
149
+ 私聊策略,默认值是 `open`。
150
+
151
+ ### `allowFrom`
152
+
153
+ 来源白名单列表。
154
+
155
+ ## 目标格式
156
+
157
+ 当前 channel 的显式目标格式为:
158
+
159
+ ```txt
160
+ session:<sessionId>
161
+ ```
162
+
163
+ 例如:
164
+
165
+ ```txt
166
+ session:abc123
167
+ ```
168
+
169
+ 如果只传 `abc123`,插件也会自动规范化为 `session:abc123`。
170
+
171
+ ## 运行流程
172
+
173
+ 1. OpenClaw 启动并加载插件
174
+ 2. 插件读取 `channels.oneainexus.accounts`
175
+ 3. 连接到 Oneainexus Chat 网关
176
+ 4. 接收来自 SDK 的 `chat` 消息
177
+ 5. 将消息路由到 OpenClaw 对话会话
178
+ 6. 把 OpenClaw 的回复再发回对应的 `sessionId`
179
+
180
+ ## 发布后接入建议
181
+
182
+ 1. 先确认 `oneainexus-openclaw-chat` 服务地址可访问
183
+ 2. 准备一组有效的 `clientId` 和 `clientSecret`
184
+ 3. 在 OpenClaw 运行环境中安装本插件
185
+ 4. 在 OpenClaw 主配置中增加 `channels.oneainexus.accounts.default`
186
+ 5. 重启 OpenClaw 并检查该 channel 账号是否连接成功
187
+
188
+ ## 常见问题
189
+
190
+ ### 1. 账号没有连上
191
+
192
+ 优先检查:
193
+
194
+ - `apiEndpoint` 是否可访问
195
+ - `wsPath` 是否正确
196
+ - `clientId` / `clientSecret` 是否有效
197
+
198
+ ### 2. 找不到目标会话
199
+
200
+ 优先检查发送目标是否是:
201
+
202
+ ```txt
203
+ session:<sessionId>
204
+ ```
205
+
206
+ ### 3. 多账号时走错账号
207
+
208
+ 如果未显式指定账号,默认优先使用 `default`,没有 `default` 时使用第一个账号。
209
+
210
+ ## 开发
211
+
212
+ ```bash
213
+ npm install
214
+ npm run build
215
+ ```
216
+
217
+ 类型检查:
218
+
219
+ ```bash
220
+ npm run typecheck
221
+ ```
@@ -0,0 +1,13 @@
1
+ import { type OpenClawPluginApi, type PluginRuntime } from 'openclaw/plugin-sdk/core';
2
+ import { oneainexusPlugin } from './src/channel.js';
3
+ declare const entry: {
4
+ id: string;
5
+ name: string;
6
+ description: string;
7
+ configSchema: NonNullable<typeof oneainexusPlugin.configSchema>;
8
+ register: (api: OpenClawPluginApi) => void;
9
+ channelPlugin: typeof oneainexusPlugin;
10
+ setChannelRuntime?: (runtime: PluginRuntime) => void;
11
+ };
12
+ export default entry;
13
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../index.ts"],"names":[],"mappings":"AAAA,OAAO,EAA4B,KAAK,iBAAiB,EAAE,KAAK,aAAa,EAAE,MAAM,0BAA0B,CAAC;AAChH,OAAO,EAAE,gBAAgB,EAAE,MAAM,kBAAkB,CAAC;AAGpD,QAAA,MAAM,KAAK,EAAE;IACX,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,EAAE,MAAM,CAAC;IACpB,YAAY,EAAE,WAAW,CAAC,OAAO,gBAAgB,CAAC,YAAY,CAAC,CAAC;IAChE,QAAQ,EAAE,CAAC,GAAG,EAAE,iBAAiB,KAAK,IAAI,CAAC;IAC3C,aAAa,EAAE,OAAO,gBAAgB,CAAC;IACvC,iBAAiB,CAAC,EAAE,CAAC,OAAO,EAAE,aAAa,KAAK,IAAI,CAAC;CAOrD,CAAC;AAEH,eAAe,KAAK,CAAC"}
package/dist/index.js ADDED
@@ -0,0 +1,12 @@
1
+ import { defineChannelPluginEntry } from 'openclaw/plugin-sdk/core';
2
+ import { oneainexusPlugin } from './src/channel.js';
3
+ import { runtimeStore } from './src/runtime-store.js';
4
+ const entry = defineChannelPluginEntry({
5
+ id: 'oneainexus-openclaw-connector',
6
+ name: 'Oneainexus Chat',
7
+ description: 'Bridge OpenClaw with oneainexus-openclaw-chat via the Oneainexus Chat SDK.',
8
+ plugin: oneainexusPlugin,
9
+ setRuntime: runtimeStore.setRuntime,
10
+ });
11
+ export default entry;
12
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,wBAAwB,EAA8C,MAAM,0BAA0B,CAAC;AAChH,OAAO,EAAE,gBAAgB,EAAE,MAAM,kBAAkB,CAAC;AACpD,OAAO,EAAE,YAAY,EAAE,MAAM,wBAAwB,CAAC;AAEtD,MAAM,KAAK,GAQP,wBAAwB,CAAC;IAC3B,EAAE,EAAE,+BAA+B;IACnC,IAAI,EAAE,iBAAiB;IACvB,WAAW,EAAE,4EAA4E;IACzF,MAAM,EAAE,gBAAgB;IACxB,UAAU,EAAE,YAAY,CAAC,UAAU;CACpC,CAAC,CAAC;AAEH,eAAe,KAAK,CAAC"}
@@ -0,0 +1,5 @@
1
+ declare const _default: {
2
+ plugin: import("openclaw/plugin-sdk/core").ChannelPlugin<import("./src/types.js").OneainexusAccount, unknown, unknown>;
3
+ };
4
+ export default _default;
5
+ //# sourceMappingURL=setup-entry.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"setup-entry.d.ts","sourceRoot":"","sources":["../setup-entry.ts"],"names":[],"mappings":";;;AAGA,wBAAwD"}
@@ -0,0 +1,4 @@
1
+ import { defineSetupPluginEntry } from 'openclaw/plugin-sdk/core';
2
+ import { oneainexusPlugin } from './src/channel.js';
3
+ export default defineSetupPluginEntry(oneainexusPlugin);
4
+ //# sourceMappingURL=setup-entry.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"setup-entry.js","sourceRoot":"","sources":["../setup-entry.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,sBAAsB,EAAE,MAAM,0BAA0B,CAAC;AAClE,OAAO,EAAE,gBAAgB,EAAE,MAAM,kBAAkB,CAAC;AAEpD,eAAe,sBAAsB,CAAC,gBAAgB,CAAC,CAAC"}
@@ -0,0 +1,3 @@
1
+ import { type OneainexusAccount } from './types.js';
2
+ export declare const oneainexusPlugin: import("openclaw/plugin-sdk/core").ChannelPlugin<OneainexusAccount, unknown, unknown>;
3
+ //# sourceMappingURL=channel.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"channel.d.ts","sourceRoot":"","sources":["../../src/channel.ts"],"names":[],"mappings":"AAcA,OAAO,EAAiC,KAAK,iBAAiB,EAAE,MAAM,YAAY,CAAC;AA6DnF,eAAO,MAAM,gBAAgB,uFAc3B,CAAC"}
@@ -0,0 +1,149 @@
1
+ import { buildChannelOutboundSessionRoute, createChannelPluginBase, createChatChannelPlugin, } from 'openclaw/plugin-sdk/core';
2
+ import { oneainexusConfigAdapter, oneainexusConfigSchema, resolveOneainexusAccount, } from './config.js';
3
+ import { oneainexusOutbound, parseOneainexusTarget } from './outbound.js';
4
+ import { runtimeStore } from './runtime-store.js';
5
+ import { startAccountWorker } from './sdk-worker.js';
6
+ import { CHANNEL_ID, DEFAULT_DM_POLICY } from './types.js';
7
+ const oneainexusPluginBase = {
8
+ ...createChannelPluginBase({
9
+ id: CHANNEL_ID,
10
+ meta: {
11
+ id: CHANNEL_ID,
12
+ label: 'Oneainexus Chat',
13
+ selectionLabel: 'Oneainexus Chat',
14
+ docsPath: '/channels/oneainexus',
15
+ docsLabel: 'oneainexus',
16
+ blurb: 'Bridge OpenClaw with oneainexus-openclaw-chat via a persistent SDK client.',
17
+ aliases: ['oneainexus-chat'],
18
+ order: 80,
19
+ quickstartAllowFrom: false,
20
+ },
21
+ capabilities: {
22
+ chatTypes: ['direct'],
23
+ media: true,
24
+ threads: false,
25
+ reactions: false,
26
+ nativeCommands: true,
27
+ blockStreaming: true,
28
+ },
29
+ reload: {
30
+ configPrefixes: [`channels.${CHANNEL_ID}`],
31
+ },
32
+ setup: {
33
+ resolveAccountId: ({ cfg, accountId }) => accountId ?? oneainexusConfigAdapter.defaultAccountId?.(cfg) ?? 'default',
34
+ applyAccountConfig: ({ cfg, accountId, input }) => {
35
+ const nextCfg = structuredClone(cfg);
36
+ const channels = (nextCfg.channels ??= {});
37
+ const channelSection = (channels[CHANNEL_ID] ??= {});
38
+ const accounts = (channelSection.accounts ??= {});
39
+ const existing = accounts[accountId] ?? {};
40
+ accounts[accountId] = {
41
+ ...existing,
42
+ enabled: true,
43
+ ...(input.name ? { name: input.name } : {}),
44
+ ...(input.httpUrl || input.url ? { apiEndpoint: input.httpUrl ?? input.url } : {}),
45
+ ...(input.webhookPath ? { wsPath: input.webhookPath } : {}),
46
+ ...(input.userId || input.botToken || input.token ? { clientId: input.userId ?? input.botToken ?? input.token } : {}),
47
+ ...(input.accessToken || input.password ? { clientSecret: input.accessToken ?? input.password } : {}),
48
+ };
49
+ return nextCfg;
50
+ },
51
+ validateInput: ({ input }) => {
52
+ if (!input.httpUrl && !input.url) {
53
+ return 'Oneainexus setup requires httpUrl or url for the chat gateway endpoint.';
54
+ }
55
+ return null;
56
+ },
57
+ },
58
+ }),
59
+ config: oneainexusConfigAdapter,
60
+ configSchema: oneainexusConfigSchema,
61
+ };
62
+ export const oneainexusPlugin = createChatChannelPlugin({
63
+ base: oneainexusPluginBase,
64
+ security: {
65
+ dm: {
66
+ channelKey: CHANNEL_ID,
67
+ resolvePolicy: (account) => account.dmPolicy || DEFAULT_DM_POLICY,
68
+ resolveAllowFrom: (account) => account.allowFrom,
69
+ defaultPolicy: DEFAULT_DM_POLICY,
70
+ },
71
+ },
72
+ threading: {
73
+ topLevelReplyToMode: 'off',
74
+ },
75
+ outbound: oneainexusOutbound,
76
+ });
77
+ oneainexusPlugin.messaging = {
78
+ normalizeTarget: (raw) => {
79
+ const trimmed = raw.trim();
80
+ if (!trimmed)
81
+ return undefined;
82
+ return trimmed.startsWith('session:') ? trimmed : `session:${trimmed}`;
83
+ },
84
+ inferTargetChatType: () => 'direct',
85
+ parseExplicitTarget: (params) => {
86
+ const { normalizedTarget } = parseOneainexusTarget(params.raw);
87
+ return {
88
+ to: normalizedTarget,
89
+ chatType: 'direct',
90
+ };
91
+ },
92
+ resolveOutboundSessionRoute: (params) => {
93
+ const { sessionId, normalizedTarget } = parseOneainexusTarget(params.target);
94
+ return buildChannelOutboundSessionRoute({
95
+ cfg: params.cfg,
96
+ agentId: params.agentId,
97
+ channel: CHANNEL_ID,
98
+ peer: {
99
+ kind: 'direct',
100
+ id: normalizedTarget,
101
+ },
102
+ chatType: 'direct',
103
+ from: normalizedTarget,
104
+ to: normalizedTarget,
105
+ threadId: sessionId,
106
+ ...(params.accountId == null ? {} : { accountId: params.accountId }),
107
+ });
108
+ },
109
+ targetResolver: {
110
+ looksLikeId: (raw, normalized) => {
111
+ const candidate = normalized ?? raw;
112
+ return candidate.startsWith('session:');
113
+ },
114
+ hint: '<sessionId|session:sessionId>',
115
+ },
116
+ };
117
+ oneainexusPlugin.agentPrompt = {
118
+ messageToolHints: () => [
119
+ '- Oneainexus supports image/file attachments.',
120
+ '- To send attachments, provide `mediaUrl` or `mediaUrls` in the message payload (do not rely on plain text paths).',
121
+ '- Prefer explicit `channelData.oneainexus.mediaUrl` / `channelData.oneainexus.mediaUrls` when building channel-specific payloads.',
122
+ ],
123
+ };
124
+ oneainexusPlugin.gateway = {
125
+ startAccount: async (ctx) => {
126
+ const runtime = runtimeStore.getRuntime();
127
+ const account = resolveOneainexusAccount({
128
+ cfg: ctx.cfg,
129
+ accountId: ctx.accountId,
130
+ });
131
+ await startAccountWorker({
132
+ cfg: ctx.cfg,
133
+ runtime,
134
+ accountId: ctx.accountId,
135
+ account,
136
+ abortSignal: ctx.abortSignal,
137
+ setStatus: ctx.setStatus,
138
+ log: (message) => ctx.log?.info(message),
139
+ });
140
+ },
141
+ stopAccount: async (ctx) => {
142
+ const client = runtimeStore.tryGetClient(ctx.accountId);
143
+ if (client) {
144
+ await client.disconnect().catch(() => undefined);
145
+ runtimeStore.removeClient(ctx.accountId);
146
+ }
147
+ },
148
+ };
149
+ //# sourceMappingURL=channel.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"channel.js","sourceRoot":"","sources":["../../src/channel.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,85 @@
1
+ import type { ChannelAccountSnapshot, OpenClawConfig } from 'openclaw/plugin-sdk/core';
2
+ import { type OneainexusAccount } from './types.js';
3
+ export declare function listOneainexusAccountIds(cfg: OpenClawConfig): string[];
4
+ export declare function resolveDefaultOneainexusAccountId(cfg: OpenClawConfig): string;
5
+ export declare function resolveOneainexusAccount(params: {
6
+ cfg: OpenClawConfig;
7
+ accountId?: string | null;
8
+ }): OneainexusAccount;
9
+ export declare function describeOneainexusAccount(account: OneainexusAccount): ChannelAccountSnapshot;
10
+ export declare const oneainexusConfigSchema: {
11
+ schema: {
12
+ type: string;
13
+ additionalProperties: boolean;
14
+ properties: {
15
+ accounts: {
16
+ type: string;
17
+ additionalProperties: {
18
+ type: string;
19
+ additionalProperties: boolean;
20
+ properties: {
21
+ name: {
22
+ type: string;
23
+ };
24
+ enabled: {
25
+ type: string;
26
+ };
27
+ apiEndpoint: {
28
+ type: string;
29
+ };
30
+ wsPath: {
31
+ type: string;
32
+ };
33
+ clientId: {
34
+ type: string;
35
+ };
36
+ clientSecret: {
37
+ type: string;
38
+ };
39
+ dmPolicy: {
40
+ type: string;
41
+ };
42
+ allowFrom: {
43
+ type: string;
44
+ items: {
45
+ type: string;
46
+ };
47
+ };
48
+ };
49
+ };
50
+ };
51
+ };
52
+ };
53
+ };
54
+ export declare const oneainexusConfigAdapter: {
55
+ isConfigured: (account: OneainexusAccount) => boolean;
56
+ isEnabled: (account: OneainexusAccount) => boolean;
57
+ describeAccount: (account: OneainexusAccount) => ChannelAccountSnapshot;
58
+ listAccountIds: (cfg: OpenClawConfig) => string[];
59
+ resolveAccount: (cfg: OpenClawConfig, accountId?: string | null) => OneainexusAccount;
60
+ inspectAccount?: (cfg: OpenClawConfig, accountId?: string | null) => unknown;
61
+ defaultAccountId?: (cfg: OpenClawConfig) => string;
62
+ setAccountEnabled?: (params: {
63
+ cfg: OpenClawConfig;
64
+ accountId: string;
65
+ enabled: boolean;
66
+ }) => OpenClawConfig;
67
+ deleteAccount?: (params: {
68
+ cfg: OpenClawConfig;
69
+ accountId: string;
70
+ }) => OpenClawConfig;
71
+ resolveAllowFrom?: (params: {
72
+ cfg: OpenClawConfig;
73
+ accountId?: string | null;
74
+ }) => Array<string | number> | undefined;
75
+ formatAllowFrom?: (params: {
76
+ cfg: OpenClawConfig;
77
+ accountId?: string | null;
78
+ allowFrom: Array<string | number>;
79
+ }) => string[];
80
+ resolveDefaultTo?: (params: {
81
+ cfg: OpenClawConfig;
82
+ accountId?: string | null;
83
+ }) => string | undefined;
84
+ };
85
+ //# sourceMappingURL=config.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../../src/config.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,sBAAsB,EAAE,cAAc,EAAE,MAAM,0BAA0B,CAAC;AAKvF,OAAO,EAIL,KAAK,iBAAiB,EACvB,MAAM,YAAY,CAAC;AAwBpB,wBAAgB,wBAAwB,CAAC,GAAG,EAAE,cAAc,GAAG,MAAM,EAAE,CAEtE;AAED,wBAAgB,iCAAiC,CAAC,GAAG,EAAE,cAAc,GAAG,MAAM,CAI7E;AAED,wBAAgB,wBAAwB,CAAC,MAAM,EAAE;IAC/C,GAAG,EAAE,cAAc,CAAC;IACpB,SAAS,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;CAC3B,GAAG,iBAAiB,CAwBpB;AAED,wBAAgB,yBAAyB,CAAC,OAAO,EAAE,iBAAiB,GAAG,sBAAsB,CAU5F;AAED,eAAO,MAAM,sBAAsB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CA2BlC,CAAC;AAqBF,eAAO,MAAM,uBAAuB;4BAEV,iBAAiB;yBACpB,iBAAiB;+BACX,iBAAiB;;;oDArBb,CAAC;;;;;;;;;;;;;iBAuB8D,CAAC;;;;iBAA8I,CAAC;;;;;iBAA6Y,CAAC;;CAD7nB,CAAC"}
@@ -0,0 +1,116 @@
1
+ import { adaptScopedAccountAccessor, createScopedChannelConfigAdapter, } from 'openclaw/plugin-sdk/channel-config-helpers';
2
+ import { CHANNEL_ID, DEFAULT_ACCOUNT_ID, DEFAULT_DM_POLICY, } from './types.js';
3
+ function asRecord(value) {
4
+ if (!value || typeof value !== 'object' || Array.isArray(value))
5
+ return undefined;
6
+ return value;
7
+ }
8
+ function asString(value) {
9
+ return typeof value === 'string' && value.trim() ? value.trim() : undefined;
10
+ }
11
+ function asStringArray(value) {
12
+ if (!Array.isArray(value))
13
+ return [];
14
+ return value.map((entry) => String(entry).trim()).filter(Boolean);
15
+ }
16
+ function resolveAccountsSection(cfg) {
17
+ const channels = asRecord(cfg.channels);
18
+ const channelSection = asRecord(channels?.[CHANNEL_ID]);
19
+ return asRecord(channelSection?.accounts) ?? {};
20
+ }
21
+ export function listOneainexusAccountIds(cfg) {
22
+ return Object.keys(resolveAccountsSection(cfg));
23
+ }
24
+ export function resolveDefaultOneainexusAccountId(cfg) {
25
+ const accountIds = listOneainexusAccountIds(cfg);
26
+ if (accountIds.includes(DEFAULT_ACCOUNT_ID))
27
+ return DEFAULT_ACCOUNT_ID;
28
+ return accountIds[0] ?? DEFAULT_ACCOUNT_ID;
29
+ }
30
+ export function resolveOneainexusAccount(params) {
31
+ const accounts = resolveAccountsSection(params.cfg);
32
+ const resolvedAccountId = params.accountId ?? resolveDefaultOneainexusAccountId(params.cfg);
33
+ const raw = asRecord(accounts[resolvedAccountId]) ?? {};
34
+ const apiEndpoint = asString(raw.apiEndpoint);
35
+ const wsPath = asString(raw.wsPath);
36
+ const clientId = asString(raw.clientId);
37
+ const clientSecret = asString(raw.clientSecret);
38
+ const name = asString(raw.name);
39
+ const enabled = raw.enabled !== false;
40
+ return {
41
+ accountId: resolvedAccountId,
42
+ enabled,
43
+ configured: Boolean(apiEndpoint && clientId && clientSecret),
44
+ allowFrom: asStringArray(raw.allowFrom),
45
+ dmPolicy: asString(raw.dmPolicy) ?? DEFAULT_DM_POLICY,
46
+ ...(name ? { name } : {}),
47
+ ...(apiEndpoint ? { apiEndpoint } : {}),
48
+ ...(wsPath ? { wsPath } : {}),
49
+ ...(clientId ? { clientId } : {}),
50
+ ...(clientSecret ? { clientSecret } : {}),
51
+ };
52
+ }
53
+ export function describeOneainexusAccount(account) {
54
+ return {
55
+ accountId: account.accountId,
56
+ ...(account.name ? { name: account.name } : {}),
57
+ enabled: account.enabled,
58
+ configured: account.configured,
59
+ tokenSource: account.clientId ? 'config' : 'missing',
60
+ secretSource: account.clientSecret ? 'config' : 'missing',
61
+ ...(account.apiEndpoint ? { baseUrl: account.apiEndpoint } : {}),
62
+ };
63
+ }
64
+ export const oneainexusConfigSchema = {
65
+ schema: {
66
+ type: 'object',
67
+ additionalProperties: false,
68
+ properties: {
69
+ accounts: {
70
+ type: 'object',
71
+ additionalProperties: {
72
+ type: 'object',
73
+ additionalProperties: false,
74
+ properties: {
75
+ name: { type: 'string' },
76
+ enabled: { type: 'boolean' },
77
+ apiEndpoint: { type: 'string' },
78
+ wsPath: { type: 'string' },
79
+ clientId: { type: 'string' },
80
+ clientSecret: { type: 'string' },
81
+ dmPolicy: { type: 'string' },
82
+ allowFrom: {
83
+ type: 'array',
84
+ items: { type: 'string' },
85
+ },
86
+ },
87
+ },
88
+ },
89
+ },
90
+ },
91
+ };
92
+ const baseConfigAdapter = createScopedChannelConfigAdapter({
93
+ sectionKey: CHANNEL_ID,
94
+ listAccountIds: (cfg) => listOneainexusAccountIds(cfg),
95
+ resolveAccount: adaptScopedAccountAccessor(resolveOneainexusAccount),
96
+ defaultAccountId: (cfg) => resolveDefaultOneainexusAccountId(cfg),
97
+ clearBaseFields: [
98
+ 'name',
99
+ 'enabled',
100
+ 'apiEndpoint',
101
+ 'wsPath',
102
+ 'clientId',
103
+ 'clientSecret',
104
+ 'dmPolicy',
105
+ 'allowFrom',
106
+ ],
107
+ resolveAllowFrom: (account) => account.allowFrom,
108
+ formatAllowFrom: (allowFrom) => allowFrom.map((entry) => String(entry).trim()).filter(Boolean),
109
+ });
110
+ export const oneainexusConfigAdapter = {
111
+ ...baseConfigAdapter,
112
+ isConfigured: (account) => account.configured,
113
+ isEnabled: (account) => account.enabled,
114
+ describeAccount: (account) => describeOneainexusAccount(account),
115
+ };
116
+ //# sourceMappingURL=config.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"config.js","sourceRoot":"","sources":["../../src/config.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,9 @@
1
+ import type { ReceivedMessage } from '@oneainexus/chat-sdk';
2
+ import type { OpenClawConfig, PluginRuntime } from 'openclaw/plugin-sdk/core';
3
+ export declare function handleInboundSdkChat(params: {
4
+ cfg: OpenClawConfig;
5
+ runtime: PluginRuntime;
6
+ accountId?: string | null;
7
+ rawMessage: ReceivedMessage;
8
+ }): Promise<void>;
9
+ //# sourceMappingURL=inbound.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"inbound.d.ts","sourceRoot":"","sources":["../../src/inbound.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAe,eAAe,EAAE,MAAM,sBAAsB,CAAC;AAEzE,OAAO,KAAK,EAAE,cAAc,EAAE,aAAa,EAAE,MAAM,0BAA0B,CAAC;AA4J9E,wBAAsB,oBAAoB,CAAC,MAAM,EAAE;IACjD,GAAG,EAAE,cAAc,CAAC;IACpB,OAAO,EAAE,aAAa,CAAC;IACvB,SAAS,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC1B,UAAU,EAAE,eAAe,CAAC;CAC7B,GAAG,OAAO,CAAC,IAAI,CAAC,CAoQhB"}