@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
@@ -0,0 +1,186 @@
1
+ import { ConnectionState, OneainexusChatClient, } from '@oneainexus/chat-sdk';
2
+ import { CHANNEL_ID } from './types.js';
3
+ import { handleInboundSdkChat } from './inbound.js';
4
+ import { runtimeStore } from './runtime-store.js';
5
+ import { deleteOpenClawSession } from './session-delete.js';
6
+ const DEFAULT_WS_PATH = '/oneainexus-talk/api/_ws';
7
+ function resolveWsPath(apiEndpoint, wsPath) {
8
+ const raw = wsPath?.trim();
9
+ if (!raw) {
10
+ return DEFAULT_WS_PATH;
11
+ }
12
+ const normalizedPath = raw.startsWith('/') ? raw : `/${raw}`;
13
+ // Backward compatibility:
14
+ // If apiEndpoint is deployed under a sub-path and wsPath is still "/api/...",
15
+ // prepend the apiEndpoint pathname to avoid dropping the deployment prefix.
16
+ if (!normalizedPath.startsWith('/api/')) {
17
+ return normalizedPath;
18
+ }
19
+ try {
20
+ const endpoint = new URL(apiEndpoint);
21
+ const endpointPath = endpoint.pathname.replace(/\/+$/, '');
22
+ if (!endpointPath || endpointPath === '/') {
23
+ return normalizedPath;
24
+ }
25
+ if (normalizedPath.startsWith(`${endpointPath}/`)) {
26
+ return normalizedPath;
27
+ }
28
+ return `${endpointPath}${normalizedPath}`;
29
+ }
30
+ catch {
31
+ return normalizedPath;
32
+ }
33
+ }
34
+ function ensureRuntimeChannel(runtime) {
35
+ if (!runtime.channel) {
36
+ throw new Error('OpenClaw channel runtime helpers are not available.');
37
+ }
38
+ return runtime.channel;
39
+ }
40
+ function isSessionDeleteMessage(rawMessage) {
41
+ return rawMessage.type === 'session_delete';
42
+ }
43
+ function resolveDeleteSessionId(rawMessage) {
44
+ if (rawMessage.data && typeof rawMessage.data === 'object') {
45
+ const candidate = rawMessage.data.sessionId;
46
+ if (typeof candidate === 'string' && candidate.trim()) {
47
+ return candidate.trim();
48
+ }
49
+ }
50
+ if (typeof rawMessage.sessionId === 'string' && rawMessage.sessionId.trim()) {
51
+ return rawMessage.sessionId.trim();
52
+ }
53
+ throw new Error('Session delete message is missing sessionId.');
54
+ }
55
+ export async function startAccountWorker(params) {
56
+ const { cfg, runtime, accountId, account, abortSignal } = params;
57
+ ensureRuntimeChannel(runtime);
58
+ if (!account.apiEndpoint || !account.clientId || !account.clientSecret) {
59
+ throw new Error(`Oneainexus account "${accountId}" is not fully configured.`);
60
+ }
61
+ const logger = runtime.logging.getChildLogger({ plugin: CHANNEL_ID, accountId });
62
+ const client = new OneainexusChatClient({
63
+ apiEndpoint: account.apiEndpoint,
64
+ clientId: account.clientId,
65
+ clientSecret: account.clientSecret,
66
+ wsPath: resolveWsPath(account.apiEndpoint, account.wsPath),
67
+ enableAck: false,
68
+ reconnect: true,
69
+ logLevel: 'info',
70
+ });
71
+ const updateStatus = (state, extra) => {
72
+ params.setStatus?.({
73
+ accountId,
74
+ running: state !== ConnectionState.Disconnected,
75
+ connected: state === ConnectionState.Connected,
76
+ healthState: state,
77
+ lastEventAt: Date.now(),
78
+ ...(extra ?? {}),
79
+ });
80
+ };
81
+ client.onStateChange((state) => {
82
+ logger.info(`SDK connection state changed to ${state}`);
83
+ updateStatus(state);
84
+ });
85
+ client.onError((error) => {
86
+ logger.error(`SDK client error: ${String(error)}`);
87
+ updateStatus(client.getConnectionState(), {
88
+ lastError: String(error),
89
+ });
90
+ });
91
+ client.onMessage(async (rawMessage) => {
92
+ const message = rawMessage;
93
+ if (message.type === 'chat') {
94
+ try {
95
+ await handleInboundSdkChat({
96
+ cfg,
97
+ runtime,
98
+ accountId,
99
+ rawMessage,
100
+ });
101
+ runtime.channel.activity.record({
102
+ channel: CHANNEL_ID,
103
+ accountId,
104
+ direction: 'inbound',
105
+ });
106
+ }
107
+ catch (error) {
108
+ logger.error(`Failed to handle inbound SDK chat: ${String(error)}`);
109
+ }
110
+ return;
111
+ }
112
+ if (!isSessionDeleteMessage(message)) {
113
+ return;
114
+ }
115
+ try {
116
+ const sessionId = resolveDeleteSessionId(message);
117
+ const result = await deleteOpenClawSession({
118
+ cfg,
119
+ runtime,
120
+ accountId,
121
+ sessionId,
122
+ });
123
+ if (result.deleted) {
124
+ logger.info(`Deleted OpenClaw session "${result.sessionKey}" for oneainexus session "${sessionId}"`, {
125
+ storePath: result.storePath,
126
+ });
127
+ }
128
+ else {
129
+ logger.warn(`OpenClaw session not found for oneainexus session "${sessionId}"`, {
130
+ sessionKey: result.sessionKey,
131
+ storePath: result.storePath,
132
+ });
133
+ }
134
+ }
135
+ catch (error) {
136
+ logger.error(`Failed to delete OpenClaw session from SDK control message: ${String(error)}`);
137
+ }
138
+ });
139
+ if (abortSignal.aborted) {
140
+ logger.info(`Oneainexus SDK worker aborted before connect for account "${accountId}"`);
141
+ updateStatus(ConnectionState.Disconnected, {
142
+ lastStopAt: Date.now(),
143
+ });
144
+ return;
145
+ }
146
+ let stoppedByAbort = false;
147
+ const handleAbort = () => {
148
+ if (stoppedByAbort) {
149
+ return;
150
+ }
151
+ stoppedByAbort = true;
152
+ void client.disconnect().catch((abortError) => {
153
+ logger.warn(`Graceful disconnect failed: ${String(abortError)}`);
154
+ });
155
+ runtimeStore.removeClient(accountId);
156
+ updateStatus(ConnectionState.Disconnected, {
157
+ lastStopAt: Date.now(),
158
+ });
159
+ };
160
+ abortSignal.addEventListener('abort', handleAbort, { once: true });
161
+ try {
162
+ logger.info(`Connecting Oneainexus SDK client for account "${accountId}"`);
163
+ updateStatus(ConnectionState.Connecting);
164
+ await client.connect();
165
+ if (abortSignal.aborted) {
166
+ handleAbort();
167
+ return;
168
+ }
169
+ runtimeStore.setClient(accountId, client);
170
+ updateStatus(ConnectionState.Connected, {
171
+ lastStartAt: Date.now(),
172
+ baseUrl: account.apiEndpoint,
173
+ });
174
+ await new Promise((resolve) => {
175
+ if (abortSignal.aborted) {
176
+ resolve();
177
+ return;
178
+ }
179
+ abortSignal.addEventListener('abort', () => resolve(), { once: true });
180
+ });
181
+ }
182
+ finally {
183
+ abortSignal.removeEventListener('abort', handleAbort);
184
+ }
185
+ }
186
+ //# sourceMappingURL=sdk-worker.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"sdk-worker.js","sourceRoot":"","sources":["../../src/sdk-worker.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,12 @@
1
+ import type { OpenClawConfig, PluginRuntime } from 'openclaw/plugin-sdk/core';
2
+ export declare function deleteOpenClawSession(params: {
3
+ cfg: OpenClawConfig;
4
+ runtime: PluginRuntime;
5
+ accountId?: string | null;
6
+ sessionId: string;
7
+ }): Promise<{
8
+ deleted: boolean;
9
+ sessionKey: string;
10
+ storePath: string;
11
+ }>;
12
+ //# sourceMappingURL=session-delete.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"session-delete.d.ts","sourceRoot":"","sources":["../../src/session-delete.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,aAAa,EAAE,MAAM,0BAA0B,CAAC;AAa9E,wBAAsB,qBAAqB,CAAC,MAAM,EAAE;IAClD,GAAG,EAAE,cAAc,CAAC;IACpB,OAAO,EAAE,aAAa,CAAC;IACvB,SAAS,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC1B,SAAS,EAAE,MAAM,CAAC;CACnB,GAAG,OAAO,CAAC;IACV,OAAO,EAAE,OAAO,CAAC;IACjB,UAAU,EAAE,MAAM,CAAC;IACnB,SAAS,EAAE,MAAM,CAAC;CACnB,CAAC,CAwCD"}
@@ -0,0 +1,40 @@
1
+ import { resolveSessionStoreEntry, updateSessionStore } from 'openclaw/plugin-sdk/config-runtime';
2
+ import { CHANNEL_ID, DEFAULT_ACCOUNT_ID } from './types.js';
3
+ function resolveSessionStoreConfig(cfg) {
4
+ const cfgWithSession = cfg;
5
+ return cfgWithSession.session?.store ?? cfgWithSession.sessions?.store;
6
+ }
7
+ export async function deleteOpenClawSession(params) {
8
+ const accountId = params.accountId ?? DEFAULT_ACCOUNT_ID;
9
+ const target = `session:${params.sessionId}`;
10
+ const route = params.runtime.channel.routing.resolveAgentRoute({
11
+ cfg: params.cfg,
12
+ channel: CHANNEL_ID,
13
+ accountId,
14
+ peer: {
15
+ kind: 'direct',
16
+ id: target,
17
+ },
18
+ });
19
+ const storePath = params.runtime.channel.session.resolveStorePath(resolveSessionStoreConfig(params.cfg), { agentId: route.agentId });
20
+ const deleted = await updateSessionStore(storePath, (store) => {
21
+ const resolved = resolveSessionStoreEntry({
22
+ store,
23
+ sessionKey: route.sessionKey,
24
+ });
25
+ if (!resolved.existing) {
26
+ return false;
27
+ }
28
+ delete store[resolved.normalizedKey];
29
+ for (const legacyKey of resolved.legacyKeys) {
30
+ delete store[legacyKey];
31
+ }
32
+ return true;
33
+ });
34
+ return {
35
+ deleted,
36
+ sessionKey: route.sessionKey,
37
+ storePath,
38
+ };
39
+ }
40
+ //# sourceMappingURL=session-delete.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"session-delete.js","sourceRoot":"","sources":["../../src/session-delete.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,wBAAwB,EAAE,kBAAkB,EAAE,MAAM,oCAAoC,CAAC;AAClG,OAAO,EAAE,UAAU,EAAE,kBAAkB,EAAE,MAAM,YAAY,CAAC;AAE5D,SAAS,yBAAyB,CAAC,GAAmB;IACpD,MAAM,cAAc,GAAG,GAGtB,CAAC;IAEF,OAAO,cAAc,CAAC,OAAO,EAAE,KAAK,IAAI,cAAc,CAAC,QAAQ,EAAE,KAAK,CAAC;AACzE,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,qBAAqB,CAAC,MAK3C;IAKC,MAAM,SAAS,GAAG,MAAM,CAAC,SAAS,IAAI,kBAAkB,CAAC;IACzD,MAAM,MAAM,GAAG,WAAW,MAAM,CAAC,SAAS,EAAE,CAAC;IAC7C,MAAM,KAAK,GAAG,MAAM,CAAC,OAAO,CAAC,OAAO,CAAC,OAAO,CAAC,iBAAiB,CAAC;QAC7D,GAAG,EAAE,MAAM,CAAC,GAAG;QACf,OAAO,EAAE,UAAU;QACnB,SAAS;QACT,IAAI,EAAE;YACJ,IAAI,EAAE,QAAQ;YACd,EAAE,EAAE,MAAM;SACX;KACF,CAAC,CAAC;IAEH,MAAM,SAAS,GAAG,MAAM,CAAC,OAAO,CAAC,OAAO,CAAC,OAAO,CAAC,gBAAgB,CAC/D,yBAAyB,CAAC,MAAM,CAAC,GAAG,CAAC,EACrC,EAAE,OAAO,EAAE,KAAK,CAAC,OAAO,EAAE,CAC3B,CAAC;IAEF,MAAM,OAAO,GAAG,MAAM,kBAAkB,CAAC,SAAS,EAAE,CAAC,KAAK,EAAE,EAAE;QAC5D,MAAM,QAAQ,GAAG,wBAAwB,CAAC;YACxC,KAAK;YACL,UAAU,EAAE,KAAK,CAAC,UAAU;SAC7B,CAAC,CAAC;QAEH,IAAI,CAAC,QAAQ,CAAC,QAAQ,EAAE,CAAC;YACvB,OAAO,KAAK,CAAC;QACf,CAAC;QAED,OAAO,KAAK,CAAC,QAAQ,CAAC,aAAa,CAAC,CAAC;QACrC,KAAK,MAAM,SAAS,IAAI,QAAQ,CAAC,UAAU,EAAE,CAAC;YAC5C,OAAO,KAAK,CAAC,SAAS,CAAC,CAAC;QAC1B,CAAC;QACD,OAAO,IAAI,CAAC;IACd,CAAC,CAAC,CAAC;IAEH,OAAO;QACL,OAAO;QACP,UAAU,EAAE,KAAK,CAAC,UAAU;QAC5B,SAAS;KACV,CAAC;AACJ,CAAC"}
@@ -0,0 +1,35 @@
1
+ import type { MessagePart, ReceivedMessage } from '@oneainexus/chat-sdk';
2
+ export declare const CHANNEL_ID = "oneainexus";
3
+ export declare const DEFAULT_ACCOUNT_ID = "default";
4
+ export declare const DEFAULT_DM_POLICY = "open";
5
+ export type OneainexusAccount = {
6
+ accountId: string;
7
+ name?: string;
8
+ enabled: boolean;
9
+ configured: boolean;
10
+ apiEndpoint?: string;
11
+ wsPath?: string;
12
+ clientId?: string;
13
+ clientSecret?: string;
14
+ allowFrom: string[];
15
+ dmPolicy: string;
16
+ };
17
+ export type SDKChatTurn = {
18
+ role: 'user' | 'assistant' | 'system';
19
+ content?: string;
20
+ parts?: MessagePart[];
21
+ };
22
+ export type SDKChatEnvelope = {
23
+ sessionId?: string;
24
+ stream?: boolean;
25
+ messages?: SDKChatTurn[];
26
+ };
27
+ export type InboundMessageContext = {
28
+ account: OneainexusAccount;
29
+ accountId: string;
30
+ sessionId: string;
31
+ target: string;
32
+ rawMessage: ReceivedMessage;
33
+ envelope: SDKChatEnvelope;
34
+ };
35
+ //# sourceMappingURL=types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAC;AAEzE,eAAO,MAAM,UAAU,eAAe,CAAC;AACvC,eAAO,MAAM,kBAAkB,YAAY,CAAC;AAC5C,eAAO,MAAM,iBAAiB,SAAS,CAAC;AAExC,MAAM,MAAM,iBAAiB,GAAG;IAC9B,SAAS,EAAE,MAAM,CAAC;IAClB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,OAAO,EAAE,OAAO,CAAC;IACjB,UAAU,EAAE,OAAO,CAAC;IACpB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,SAAS,EAAE,MAAM,EAAE,CAAC;IACpB,QAAQ,EAAE,MAAM,CAAC;CAClB,CAAC;AAEF,MAAM,MAAM,WAAW,GAAG;IACxB,IAAI,EAAE,MAAM,GAAG,WAAW,GAAG,QAAQ,CAAC;IACtC,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,KAAK,CAAC,EAAE,WAAW,EAAE,CAAC;CACvB,CAAC;AAEF,MAAM,MAAM,eAAe,GAAG;IAC5B,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,QAAQ,CAAC,EAAE,WAAW,EAAE,CAAC;CAC1B,CAAC;AAEF,MAAM,MAAM,qBAAqB,GAAG;IAClC,OAAO,EAAE,iBAAiB,CAAC;IAC3B,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,MAAM,CAAC;IAClB,MAAM,EAAE,MAAM,CAAC;IACf,UAAU,EAAE,eAAe,CAAC;IAC5B,QAAQ,EAAE,eAAe,CAAC;CAC3B,CAAC"}
@@ -0,0 +1,4 @@
1
+ export const CHANNEL_ID = 'oneainexus';
2
+ export const DEFAULT_ACCOUNT_ID = 'default';
3
+ export const DEFAULT_DM_POLICY = 'open';
4
+ //# sourceMappingURL=types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/types.ts"],"names":[],"mappings":"AAEA,MAAM,CAAC,MAAM,UAAU,GAAG,YAAY,CAAC;AACvC,MAAM,CAAC,MAAM,kBAAkB,GAAG,SAAS,CAAC;AAC5C,MAAM,CAAC,MAAM,iBAAiB,GAAG,MAAM,CAAC"}
@@ -0,0 +1,60 @@
1
+ {
2
+ "id": "oneainexus-openclaw-connector",
3
+ "kind": "channel",
4
+ "channels": [
5
+ "oneainexus"
6
+ ],
7
+ "name": "Oneainexus Chat",
8
+ "description": "OpenClaw channel plugin for oneainexus-openclaw-chat",
9
+ "configSchema": {
10
+ "type": "object",
11
+ "additionalProperties": false,
12
+ "properties": {}
13
+ },
14
+ "channelConfigs": {
15
+ "oneainexus": {
16
+ "schema": {
17
+ "type": "object",
18
+ "additionalProperties": false,
19
+ "properties": {
20
+ "accounts": {
21
+ "type": "object",
22
+ "additionalProperties": {
23
+ "type": "object",
24
+ "additionalProperties": false,
25
+ "properties": {
26
+ "name": {
27
+ "type": "string"
28
+ },
29
+ "enabled": {
30
+ "type": "boolean"
31
+ },
32
+ "apiEndpoint": {
33
+ "type": "string"
34
+ },
35
+ "wsPath": {
36
+ "type": "string"
37
+ },
38
+ "clientId": {
39
+ "type": "string"
40
+ },
41
+ "clientSecret": {
42
+ "type": "string"
43
+ },
44
+ "dmPolicy": {
45
+ "type": "string"
46
+ },
47
+ "allowFrom": {
48
+ "type": "array",
49
+ "items": {
50
+ "type": "string"
51
+ }
52
+ }
53
+ }
54
+ }
55
+ }
56
+ }
57
+ }
58
+ }
59
+ }
60
+ }
package/package.json ADDED
@@ -0,0 +1,64 @@
1
+ {
2
+ "name": "@yuzhf/oneainexus-openclaw-connector",
3
+ "version": "0.1.4",
4
+ "description": "OpenClaw channel plugin for oneainexus-openclaw-chat",
5
+ "type": "module",
6
+ "main": "./dist/index.js",
7
+ "types": "./dist/index.d.ts",
8
+ "exports": {
9
+ ".": {
10
+ "types": "./dist/index.d.ts",
11
+ "default": "./dist/index.js"
12
+ }
13
+ },
14
+ "files": [
15
+ "dist/",
16
+ "openclaw.plugin.json",
17
+ "LICENSE"
18
+ ],
19
+ "scripts": {
20
+ "build": "tsc -p tsconfig.json",
21
+ "typecheck": "tsc --noEmit -p tsconfig.json",
22
+ "test": "npm run typecheck",
23
+ "publish": "node ./scripts/publish.js"
24
+ },
25
+ "dependencies": {
26
+ "@buape/carbon": "^0.14.0",
27
+ "openclaw": "^2026.4.5",
28
+ "zod": "^4.3.6"
29
+ },
30
+ "peerDependencies": {
31
+ "@oneainexus/chat-sdk": "^1.0.0"
32
+ },
33
+ "keywords": [
34
+ "openclaw",
35
+ "channel-plugin",
36
+ "oneainexus"
37
+ ],
38
+ "author": "oneainexus",
39
+ "license": "ISC",
40
+ "openclaw": {
41
+ "extensions": [
42
+ "./dist/index.js"
43
+ ],
44
+ "setupEntry": "./dist/setup-entry.js",
45
+ "channel": {
46
+ "id": "oneainexus",
47
+ "label": "Oneainexus Chat",
48
+ "selectionLabel": "Oneainexus Chat",
49
+ "docsPath": "/channels/oneainexus",
50
+ "docsLabel": "oneainexus",
51
+ "blurb": "Bridge OpenClaw with oneainexus-openclaw-chat via the Oneainexus Chat SDK.",
52
+ "aliases": [
53
+ "oneainexus-chat"
54
+ ],
55
+ "order": 80,
56
+ "quickstartAllowFrom": false
57
+ }
58
+ },
59
+ "devDependencies": {
60
+ "@oneainexus/chat-sdk": "file:../oneainexus-chat-sdk",
61
+ "@types/node": "^25.5.2",
62
+ "typescript": "^6.0.2"
63
+ }
64
+ }