@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.
- package/README.md +221 -0
- package/dist/index.d.ts +13 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +12 -0
- package/dist/index.js.map +1 -0
- package/dist/setup-entry.d.ts +5 -0
- package/dist/setup-entry.d.ts.map +1 -0
- package/dist/setup-entry.js +4 -0
- package/dist/setup-entry.js.map +1 -0
- package/dist/src/channel.d.ts +3 -0
- package/dist/src/channel.d.ts.map +1 -0
- package/dist/src/channel.js +149 -0
- package/dist/src/channel.js.map +1 -0
- package/dist/src/config.d.ts +85 -0
- package/dist/src/config.d.ts.map +1 -0
- package/dist/src/config.js +116 -0
- package/dist/src/config.js.map +1 -0
- package/dist/src/inbound.d.ts +9 -0
- package/dist/src/inbound.d.ts.map +1 -0
- package/dist/src/inbound.js +336 -0
- package/dist/src/inbound.js.map +1 -0
- package/dist/src/media-bridge.d.ts +10 -0
- package/dist/src/media-bridge.d.ts.map +1 -0
- package/dist/src/media-bridge.js +258 -0
- package/dist/src/media-bridge.js.map +1 -0
- package/dist/src/outbound.d.ts +61 -0
- package/dist/src/outbound.d.ts.map +1 -0
- package/dist/src/outbound.js +467 -0
- package/dist/src/outbound.js.map +1 -0
- package/dist/src/runtime-store.d.ts +14 -0
- package/dist/src/runtime-store.d.ts.map +1 -0
- package/dist/src/runtime-store.js +27 -0
- package/dist/src/runtime-store.js.map +1 -0
- package/dist/src/sdk-worker.d.ts +12 -0
- package/dist/src/sdk-worker.d.ts.map +1 -0
- package/dist/src/sdk-worker.js +186 -0
- package/dist/src/sdk-worker.js.map +1 -0
- package/dist/src/session-delete.d.ts +12 -0
- package/dist/src/session-delete.d.ts.map +1 -0
- package/dist/src/session-delete.js +40 -0
- package/dist/src/session-delete.js.map +1 -0
- package/dist/src/types.d.ts +35 -0
- package/dist/src/types.d.ts.map +1 -0
- package/dist/src/types.js +4 -0
- package/dist/src/types.js.map +1 -0
- package/openclaw.plugin.json +60 -0
- 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
|
+
```
|
package/dist/index.d.ts
ADDED
|
@@ -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 @@
|
|
|
1
|
+
{"version":3,"file":"setup-entry.d.ts","sourceRoot":"","sources":["../setup-entry.ts"],"names":[],"mappings":";;;AAGA,wBAAwD"}
|
|
@@ -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 @@
|
|
|
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"}
|