openclaw-client 1.1.1 → 2.0.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.
- package/README.md +85 -5
- package/dist/client.d.ts +46 -3
- package/dist/client.d.ts.map +1 -1
- package/dist/client.js +86 -14
- package/dist/types.d.ts +170 -7
- package/dist/types.d.ts.map +1 -1
- package/package.json +1 -1
- package/src/client.ts +115 -14
- package/src/protocol.schema.json +801 -79
- package/src/types.ts +198 -17
package/README.md
CHANGED
|
@@ -51,6 +51,9 @@ interface OpenClawClientConfig {
|
|
|
51
51
|
clientVersion?: string; // Client version (default: '1.0.0')
|
|
52
52
|
platform?: string; // Platform name (default: 'web')
|
|
53
53
|
mode?: string; // Client mode (default: 'ui')
|
|
54
|
+
connectTimeoutMs?: number; // Timeout for connect handshake (default: 120000)
|
|
55
|
+
requestTimeoutMs?: number; // Timeout for RPC requests (default: 30000)
|
|
56
|
+
connectParams?: Partial<ConnectParams>; // Extra fields merged into handshake
|
|
54
57
|
}
|
|
55
58
|
```
|
|
56
59
|
|
|
@@ -78,9 +81,13 @@ interface OpenClawClientConfig {
|
|
|
78
81
|
- `patchSession(params): Promise<any>` - Patch session
|
|
79
82
|
- `resetSession(params): Promise<any>` - Reset session
|
|
80
83
|
- `compactSession(params): Promise<any>` - Compact session
|
|
84
|
+
- `getSessionsUsage(params?): Promise<any>` - Get session usage
|
|
81
85
|
|
|
82
86
|
**Agents**
|
|
83
87
|
- `listAgents(params?): Promise<AgentsListResult>` - List available agents
|
|
88
|
+
- `createAgent(params): Promise<AgentsCreateResult>` - Create agent
|
|
89
|
+
- `updateAgent(params): Promise<AgentsUpdateResult>` - Update agent
|
|
90
|
+
- `deleteAgent(params): Promise<AgentsDeleteResult>` - Delete agent
|
|
84
91
|
- `getAgentIdentity(params?): Promise<AgentIdentityResult>` - Get agent identity
|
|
85
92
|
- `sendToAgent(params): Promise<any>` - Send a message to agent
|
|
86
93
|
- `waitForAgent(params): Promise<any>` - Wait for agent run to complete
|
|
@@ -110,10 +117,11 @@ interface OpenClawClientConfig {
|
|
|
110
117
|
- `cancelWizard(params): Promise<any>` - Cancel wizard
|
|
111
118
|
- `getWizardStatus(params): Promise<WizardStatusResult>` - Get wizard status
|
|
112
119
|
|
|
113
|
-
**Channels**
|
|
120
|
+
**Channels & Talk**
|
|
114
121
|
- `getChannelsStatus(params?): Promise<ChannelsStatusResult>` - Get channels status
|
|
115
122
|
- `logoutChannel(params): Promise<any>` - Logout from channel
|
|
116
123
|
- `setTalkMode(params): Promise<any>` - Set talk mode
|
|
124
|
+
- `getTalkConfig(params?): Promise<TalkConfigResult>` - Get talk config
|
|
117
125
|
|
|
118
126
|
**Authentication**
|
|
119
127
|
- `startWebLogin(params?): Promise<any>` - Start web login
|
|
@@ -146,6 +154,7 @@ interface OpenClawClientConfig {
|
|
|
146
154
|
- `listDevicePairings(params?): Promise<any>` - List device pairing requests
|
|
147
155
|
- `approveDevicePairing(params): Promise<any>` - Approve device pairing
|
|
148
156
|
- `rejectDevicePairing(params): Promise<any>` - Reject device pairing
|
|
157
|
+
- `removeDevicePairing(params): Promise<any>` - Remove paired device
|
|
149
158
|
- `rotateDeviceToken(params): Promise<any>` - Rotate device token
|
|
150
159
|
- `revokeDeviceToken(params): Promise<any>` - Revoke device token
|
|
151
160
|
|
|
@@ -159,6 +168,7 @@ interface OpenClawClientConfig {
|
|
|
159
168
|
- `listNodes(params?): Promise<any>` - List nodes
|
|
160
169
|
- `describeNode(params): Promise<any>` - Describe node
|
|
161
170
|
- `invokeNode(params): Promise<any>` - Invoke node command
|
|
171
|
+
- `testPush(params): Promise<PushTestResult>` - Test push notification to node
|
|
162
172
|
|
|
163
173
|
**Logs**
|
|
164
174
|
- `getLogTail(params?): Promise<LogsTailResult>` - Get log tail
|
|
@@ -191,17 +201,60 @@ Environment variables:
|
|
|
191
201
|
- `OPENCLAW_GATEWAY_URL` - Gateway URL (default: `http://localhost:18789`)
|
|
192
202
|
- `OPENCLAW_TOKEN` - Authentication token
|
|
193
203
|
|
|
194
|
-
## Type Generation
|
|
204
|
+
## Type Generation & Client Wrapper Maintenance
|
|
195
205
|
|
|
196
|
-
This package
|
|
206
|
+
This package uses a deterministic process to keep types and client method wrappers in sync with the OpenClaw protocol schema.
|
|
197
207
|
|
|
198
|
-
|
|
208
|
+
### Step 1: Update the schema
|
|
209
|
+
|
|
210
|
+
Place the latest `protocol.schema.json` from the OpenClaw Gateway into `src/protocol.schema.json`.
|
|
211
|
+
|
|
212
|
+
### Step 2: Regenerate types
|
|
199
213
|
|
|
200
214
|
```bash
|
|
201
215
|
npm run generate:types
|
|
202
216
|
```
|
|
203
217
|
|
|
204
|
-
|
|
218
|
+
This runs `src/generate-openclaw-types.ts` which uses `json-schema-to-typescript` to compile every definition in the schema into TypeScript interfaces. The output is written to `src/types.ts` (auto-generated, do not edit manually).
|
|
219
|
+
|
|
220
|
+
### Step 3: Update client method wrappers
|
|
221
|
+
|
|
222
|
+
The method wrappers in `src/client.ts` follow a deterministic pattern derived from the type names in `src/types.ts`:
|
|
223
|
+
|
|
224
|
+
1. **Find all `*Params` types** - Each `*Params` interface represents an RPC method.
|
|
225
|
+
2. **Derive the method name** - Convert the type name to a dot-separated RPC method name:
|
|
226
|
+
- `ConfigGetParams` → `config.get`
|
|
227
|
+
- `SessionsListParams` → `sessions.list`
|
|
228
|
+
- `AgentsFilesGetParams` → `agents.files.get`
|
|
229
|
+
- `ExecApprovalsNodeSetParams` → `exec.approvals.node.set`
|
|
230
|
+
- Top-level methods like `SendParams`, `PollParams`, `WakeParams` → `send`, `poll`, `wake`
|
|
231
|
+
3. **Match result types** - If a corresponding `*Result` type exists (e.g. `AgentsListResult` for `AgentsListParams`), use it as the return type. Otherwise use `Promise<any>`.
|
|
232
|
+
4. **Choose a wrapper method name** - Use a readable camelCase name (e.g. `listSessions`, `getConfig`, `deleteAgent`).
|
|
233
|
+
5. **Default empty params** - If the `*Params` interface has no required fields (e.g. `interface ConfigGetParams {}`), default the parameter to `= {}`.
|
|
234
|
+
6. **Import and add** - Import the new Params/Result types at the top of `client.ts` and add the wrapper method.
|
|
235
|
+
|
|
236
|
+
**Skipped types:** Some `*Params` types are not RPC request methods but are used for node-side responses or event payloads (e.g. `NodeInvokeResultParams`, `NodeEventParams`). These are skipped.
|
|
237
|
+
|
|
238
|
+
### Full update workflow
|
|
239
|
+
|
|
240
|
+
```bash
|
|
241
|
+
# 1. Drop in updated schema
|
|
242
|
+
cp /path/to/new/protocol.schema.json src/protocol.schema.json
|
|
243
|
+
|
|
244
|
+
# 2. Regenerate types
|
|
245
|
+
npm run generate:types
|
|
246
|
+
|
|
247
|
+
# 3. Update client wrappers (compare types.ts *Params exports against client.ts imports)
|
|
248
|
+
# - Add imports for any new *Params/*Result types
|
|
249
|
+
# - Add wrapper methods following the pattern above
|
|
250
|
+
# - Verify no existing types were removed/renamed
|
|
251
|
+
|
|
252
|
+
# 4. Build and verify
|
|
253
|
+
npm run build
|
|
254
|
+
|
|
255
|
+
# 5. Publish
|
|
256
|
+
npm publish
|
|
257
|
+
```
|
|
205
258
|
|
|
206
259
|
## Development
|
|
207
260
|
|
|
@@ -219,6 +272,33 @@ npm run build
|
|
|
219
272
|
npm publish
|
|
220
273
|
```
|
|
221
274
|
|
|
275
|
+
## Changelog
|
|
276
|
+
|
|
277
|
+
### 2.0.0
|
|
278
|
+
|
|
279
|
+
**Breaking Changes**
|
|
280
|
+
|
|
281
|
+
- **Connect handshake protocol** - The client now implements a challenge-response handshake. On connect, the gateway sends a `connect.challenge` event with a nonce before the client sends its `connect` request. This requires a compatible gateway version.
|
|
282
|
+
|
|
283
|
+
**New Features**
|
|
284
|
+
|
|
285
|
+
- **Configurable timeouts** - New `connectTimeoutMs` (default 120s) and `requestTimeoutMs` (default 30s) config options.
|
|
286
|
+
- **Connect params override** - New `connectParams` config option to merge additional fields into the handshake request (e.g. `device`, `caps`, `commands`).
|
|
287
|
+
- **New API methods:**
|
|
288
|
+
- `createAgent` / `updateAgent` / `deleteAgent` - Full agent CRUD
|
|
289
|
+
- `getSessionsUsage` - Session usage stats
|
|
290
|
+
- `getTalkConfig` - Talk configuration
|
|
291
|
+
- `removeDevicePairing` - Remove a paired device
|
|
292
|
+
- `testPush` - Test push notifications to a node
|
|
293
|
+
|
|
294
|
+
### 1.1.1
|
|
295
|
+
|
|
296
|
+
- Documentation updates.
|
|
297
|
+
|
|
298
|
+
### 1.1.0
|
|
299
|
+
|
|
300
|
+
- Initial public release with full Gateway RPC coverage.
|
|
301
|
+
|
|
222
302
|
## License
|
|
223
303
|
|
|
224
304
|
MIT
|
package/dist/client.d.ts
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import type { AgentIdentityParams, AgentIdentityResult, AgentParams, AgentsFilesGetParams, AgentsFilesGetResult, AgentsFilesListParams, AgentsFilesListResult, AgentsFilesSetParams, AgentsFilesSetResult, AgentsListParams, AgentsListResult, AgentWaitParams, ChannelsLogoutParams, ChannelsStatusParams, ChannelsStatusResult, ChatAbortParams, ChatHistoryParams, ChatInjectParams, ChatSendParams, ConfigApplyParams, ConfigGetParams, ConfigPatchParams, ConfigSchemaParams, ConfigSchemaResponse, ConfigSetParams, ConnectParams, CronAddParams, CronJob, CronListParams, CronRemoveParams, CronRunLogEntry, CronRunParams, CronRunsParams, CronStatusParams, CronUpdateParams, DevicePairApproveParams, DevicePairListParams, DevicePairRejectParams, DeviceTokenRevokeParams, DeviceTokenRotateParams, EventFrame, ExecApprovalRequestParams, ExecApprovalResolveParams, ExecApprovalsGetParams, ExecApprovalsNodeGetParams, ExecApprovalsNodeSetParams, ExecApprovalsSetParams, ExecApprovalsSnapshot, HelloOk, LogsTailParams, LogsTailResult, ModelsListParams, ModelsListResult, NodeDescribeParams, NodeInvokeParams, NodeListParams, NodePairApproveParams, NodePairListParams, NodePairRejectParams, NodePairRequestParams, NodePairVerifyParams, NodeRenameParams, PollParams, SendParams, SessionsCompactParams, SessionsDeleteParams, SessionsListParams, SessionsPatchParams, SessionsPreviewParams, SessionsResetParams, SessionsResolveParams, SkillsBinsParams, SkillsBinsResult, SkillsInstallParams, SkillsStatusParams, SkillsUpdateParams, TalkModeParams, UpdateRunParams, WakeParams, WebLoginStartParams, WebLoginWaitParams, WizardCancelParams, WizardNextParams, WizardNextResult, WizardStartParams, WizardStartResult, WizardStatusParams, WizardStatusResult } from './types';
|
|
1
|
+
import type { AgentIdentityParams, AgentIdentityResult, AgentParams, AgentsCreateParams, AgentsCreateResult, AgentsDeleteParams, AgentsDeleteResult, AgentsFilesGetParams, AgentsFilesGetResult, AgentsFilesListParams, AgentsFilesListResult, AgentsFilesSetParams, AgentsFilesSetResult, AgentsListParams, AgentsListResult, AgentsUpdateParams, AgentsUpdateResult, AgentWaitParams, ChannelsLogoutParams, ChannelsStatusParams, ChannelsStatusResult, ChatAbortParams, ChatHistoryParams, ChatInjectParams, ChatSendParams, ConfigApplyParams, ConfigGetParams, ConfigPatchParams, ConfigSchemaParams, ConfigSchemaResponse, ConfigSetParams, ConnectParams, CronAddParams, CronJob, CronListParams, CronRemoveParams, CronRunLogEntry, CronRunParams, CronRunsParams, CronStatusParams, CronUpdateParams, DevicePairApproveParams, DevicePairListParams, DevicePairRejectParams, DevicePairRemoveParams, DeviceTokenRevokeParams, DeviceTokenRotateParams, EventFrame, ExecApprovalRequestParams, ExecApprovalResolveParams, ExecApprovalsGetParams, ExecApprovalsNodeGetParams, ExecApprovalsNodeSetParams, ExecApprovalsSetParams, ExecApprovalsSnapshot, HelloOk, LogsTailParams, LogsTailResult, ModelsListParams, ModelsListResult, NodeDescribeParams, NodeInvokeParams, NodeListParams, NodePairApproveParams, NodePairListParams, NodePairRejectParams, NodePairRequestParams, NodePairVerifyParams, NodeRenameParams, PollParams, PushTestParams, PushTestResult, SendParams, SessionsCompactParams, SessionsDeleteParams, SessionsListParams, SessionsPatchParams, SessionsPreviewParams, SessionsResetParams, SessionsResolveParams, SessionsUsageParams, SkillsBinsParams, SkillsBinsResult, SkillsInstallParams, SkillsStatusParams, SkillsUpdateParams, TalkConfigParams, TalkConfigResult, TalkModeParams, UpdateRunParams, WakeParams, WebLoginStartParams, WebLoginWaitParams, WizardCancelParams, WizardNextParams, WizardNextResult, WizardStartParams, WizardStartResult, WizardStatusParams, WizardStatusResult } from './types';
|
|
2
2
|
export interface OpenClawClientConfig {
|
|
3
3
|
gatewayUrl: string;
|
|
4
4
|
token: string;
|
|
@@ -6,6 +6,14 @@ export interface OpenClawClientConfig {
|
|
|
6
6
|
clientVersion?: string;
|
|
7
7
|
platform?: string;
|
|
8
8
|
mode?: ConnectParams['client']['mode'];
|
|
9
|
+
/** Timeout in ms for the connect handshake (default: 120000).
|
|
10
|
+
* Set this higher if device approval may take a while. */
|
|
11
|
+
connectTimeoutMs?: number;
|
|
12
|
+
/** Timeout in ms for regular RPC requests (default: 30000). */
|
|
13
|
+
requestTimeoutMs?: number;
|
|
14
|
+
/** Additional ConnectParams fields to merge into the handshake request
|
|
15
|
+
* (e.g. `device` for device identity, `caps`, `commands`). */
|
|
16
|
+
connectParams?: Partial<ConnectParams>;
|
|
9
17
|
}
|
|
10
18
|
export type EventListener = (event: EventFrame) => void;
|
|
11
19
|
export declare class OpenClawClient {
|
|
@@ -18,7 +26,13 @@ export declare class OpenClawClient {
|
|
|
18
26
|
private connectionId;
|
|
19
27
|
constructor(config: OpenClawClientConfig);
|
|
20
28
|
/**
|
|
21
|
-
* Connect to the OpenClaw Gateway and perform handshake
|
|
29
|
+
* Connect to the OpenClaw Gateway and perform handshake.
|
|
30
|
+
*
|
|
31
|
+
* The protocol flow is:
|
|
32
|
+
* 1. Open WebSocket connection
|
|
33
|
+
* 2. Gateway sends a `connect.challenge` event with a nonce
|
|
34
|
+
* 3. Client responds with a `connect` request (including auth token)
|
|
35
|
+
* 4. Gateway replies with `hello-ok` containing server info and snapshot
|
|
22
36
|
*/
|
|
23
37
|
connect(): Promise<HelloOk>;
|
|
24
38
|
/**
|
|
@@ -38,7 +52,8 @@ export declare class OpenClawClient {
|
|
|
38
52
|
*/
|
|
39
53
|
addEventListener(listener: EventListener): () => void;
|
|
40
54
|
/**
|
|
41
|
-
* Perform the connection handshake
|
|
55
|
+
* Perform the connection handshake after receiving the challenge.
|
|
56
|
+
* Uses connectTimeoutMs (default 120s) since device approval may take a while.
|
|
42
57
|
*/
|
|
43
58
|
private handshake;
|
|
44
59
|
/**
|
|
@@ -101,6 +116,18 @@ export declare class OpenClawClient {
|
|
|
101
116
|
* List available agents
|
|
102
117
|
*/
|
|
103
118
|
listAgents(params?: AgentsListParams): Promise<AgentsListResult>;
|
|
119
|
+
/**
|
|
120
|
+
* Create agent
|
|
121
|
+
*/
|
|
122
|
+
createAgent(params: AgentsCreateParams): Promise<AgentsCreateResult>;
|
|
123
|
+
/**
|
|
124
|
+
* Update agent
|
|
125
|
+
*/
|
|
126
|
+
updateAgent(params: AgentsUpdateParams): Promise<AgentsUpdateResult>;
|
|
127
|
+
/**
|
|
128
|
+
* Delete agent
|
|
129
|
+
*/
|
|
130
|
+
deleteAgent(params: AgentsDeleteParams): Promise<AgentsDeleteResult>;
|
|
104
131
|
/**
|
|
105
132
|
* Get agent identity
|
|
106
133
|
*/
|
|
@@ -141,6 +168,10 @@ export declare class OpenClawClient {
|
|
|
141
168
|
* Compact session
|
|
142
169
|
*/
|
|
143
170
|
compactSession(params: SessionsCompactParams): Promise<any>;
|
|
171
|
+
/**
|
|
172
|
+
* Get session usage
|
|
173
|
+
*/
|
|
174
|
+
getSessionsUsage(params?: SessionsUsageParams): Promise<any>;
|
|
144
175
|
/**
|
|
145
176
|
* Send a message to agent
|
|
146
177
|
*/
|
|
@@ -181,6 +212,10 @@ export declare class OpenClawClient {
|
|
|
181
212
|
* Set talk mode
|
|
182
213
|
*/
|
|
183
214
|
setTalkMode(params: TalkModeParams): Promise<any>;
|
|
215
|
+
/**
|
|
216
|
+
* Get talk config
|
|
217
|
+
*/
|
|
218
|
+
getTalkConfig(params?: TalkConfigParams): Promise<TalkConfigResult>;
|
|
184
219
|
/**
|
|
185
220
|
* Get channels status
|
|
186
221
|
*/
|
|
@@ -285,6 +320,10 @@ export declare class OpenClawClient {
|
|
|
285
320
|
* Reject device pairing
|
|
286
321
|
*/
|
|
287
322
|
rejectDevicePairing(params: DevicePairRejectParams): Promise<any>;
|
|
323
|
+
/**
|
|
324
|
+
* Remove paired device
|
|
325
|
+
*/
|
|
326
|
+
removeDevicePairing(params: DevicePairRemoveParams): Promise<any>;
|
|
288
327
|
/**
|
|
289
328
|
* Rotate device token
|
|
290
329
|
*/
|
|
@@ -345,6 +384,10 @@ export declare class OpenClawClient {
|
|
|
345
384
|
* Invoke node command
|
|
346
385
|
*/
|
|
347
386
|
invokeNode(params: NodeInvokeParams): Promise<any>;
|
|
387
|
+
/**
|
|
388
|
+
* Test push notification to node
|
|
389
|
+
*/
|
|
390
|
+
testPush(params: PushTestParams): Promise<PushTestResult>;
|
|
348
391
|
/**
|
|
349
392
|
* Update and run
|
|
350
393
|
*/
|
package/dist/client.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../src/client.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,mBAAmB,EACnB,mBAAmB,EACnB,WAAW,EACX,oBAAoB,EACpB,oBAAoB,EACpB,qBAAqB,EACrB,qBAAqB,EACrB,oBAAoB,EACpB,oBAAoB,EACpB,gBAAgB,EAChB,gBAAgB,EAChB,eAAe,EACf,oBAAoB,EACpB,oBAAoB,EACpB,oBAAoB,EACpB,eAAe,EACf,iBAAiB,EACjB,gBAAgB,EAChB,cAAc,EACd,iBAAiB,EACjB,eAAe,EACf,iBAAiB,EACjB,kBAAkB,EAClB,oBAAoB,EACpB,eAAe,EACf,aAAa,EACb,aAAa,EACb,OAAO,EACP,cAAc,EACd,gBAAgB,EAChB,eAAe,EACf,aAAa,EACb,cAAc,EACd,gBAAgB,EAChB,gBAAgB,EAChB,uBAAuB,EACvB,oBAAoB,EACpB,sBAAsB,EACtB,uBAAuB,EACvB,uBAAuB,EACvB,UAAU,EACV,yBAAyB,EACzB,yBAAyB,EACzB,sBAAsB,EACtB,0BAA0B,EAC1B,0BAA0B,EAC1B,sBAAsB,EACtB,qBAAqB,EACrB,OAAO,EACP,cAAc,EACd,cAAc,EACd,gBAAgB,EAChB,gBAAgB,EAChB,kBAAkB,EAClB,gBAAgB,EAChB,cAAc,EACd,qBAAqB,EACrB,kBAAkB,EAClB,oBAAoB,EACpB,qBAAqB,EACrB,oBAAoB,EACpB,gBAAgB,EAChB,UAAU,
|
|
1
|
+
{"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../src/client.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,mBAAmB,EACnB,mBAAmB,EACnB,WAAW,EACX,kBAAkB,EAClB,kBAAkB,EAClB,kBAAkB,EAClB,kBAAkB,EAClB,oBAAoB,EACpB,oBAAoB,EACpB,qBAAqB,EACrB,qBAAqB,EACrB,oBAAoB,EACpB,oBAAoB,EACpB,gBAAgB,EAChB,gBAAgB,EAChB,kBAAkB,EAClB,kBAAkB,EAClB,eAAe,EACf,oBAAoB,EACpB,oBAAoB,EACpB,oBAAoB,EACpB,eAAe,EACf,iBAAiB,EACjB,gBAAgB,EAChB,cAAc,EACd,iBAAiB,EACjB,eAAe,EACf,iBAAiB,EACjB,kBAAkB,EAClB,oBAAoB,EACpB,eAAe,EACf,aAAa,EACb,aAAa,EACb,OAAO,EACP,cAAc,EACd,gBAAgB,EAChB,eAAe,EACf,aAAa,EACb,cAAc,EACd,gBAAgB,EAChB,gBAAgB,EAChB,uBAAuB,EACvB,oBAAoB,EACpB,sBAAsB,EACtB,sBAAsB,EACtB,uBAAuB,EACvB,uBAAuB,EACvB,UAAU,EACV,yBAAyB,EACzB,yBAAyB,EACzB,sBAAsB,EACtB,0BAA0B,EAC1B,0BAA0B,EAC1B,sBAAsB,EACtB,qBAAqB,EACrB,OAAO,EACP,cAAc,EACd,cAAc,EACd,gBAAgB,EAChB,gBAAgB,EAChB,kBAAkB,EAClB,gBAAgB,EAChB,cAAc,EACd,qBAAqB,EACrB,kBAAkB,EAClB,oBAAoB,EACpB,qBAAqB,EACrB,oBAAoB,EACpB,gBAAgB,EAChB,UAAU,EACV,cAAc,EACd,cAAc,EAGd,UAAU,EACV,qBAAqB,EACrB,oBAAoB,EACpB,kBAAkB,EAClB,mBAAmB,EACnB,qBAAqB,EACrB,mBAAmB,EACnB,qBAAqB,EACrB,mBAAmB,EACnB,gBAAgB,EAChB,gBAAgB,EAChB,mBAAmB,EACnB,kBAAkB,EAClB,kBAAkB,EAClB,gBAAgB,EAChB,gBAAgB,EAChB,cAAc,EACd,eAAe,EACf,UAAU,EACV,mBAAmB,EACnB,kBAAkB,EAClB,kBAAkB,EAClB,gBAAgB,EAChB,gBAAgB,EAChB,iBAAiB,EACjB,iBAAiB,EACjB,kBAAkB,EAClB,kBAAkB,EACnB,MAAM,SAAS,CAAC;AAEjB,MAAM,WAAW,oBAAoB;IACnC,UAAU,EAAE,MAAM,CAAC;IACnB,KAAK,EAAE,MAAM,CAAC;IACd,QAAQ,CAAC,EAAE,aAAa,CAAC,QAAQ,CAAC,CAAC,IAAI,CAAC,CAAC;IACzC,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,IAAI,CAAC,EAAE,aAAa,CAAC,QAAQ,CAAC,CAAC,MAAM,CAAC,CAAC;IACvC;+DAC2D;IAC3D,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,+DAA+D;IAC/D,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B;mEAC+D;IAC/D,aAAa,CAAC,EAAE,OAAO,CAAC,aAAa,CAAC,CAAC;CACxC;AAED,MAAM,MAAM,aAAa,GAAG,CAAC,KAAK,EAAE,UAAU,KAAK,IAAI,CAAC;AAUxD,qBAAa,cAAc;IACzB,OAAO,CAAC,EAAE,CAA0B;IACpC,OAAO,CAAC,MAAM,CAAuB;IACrC,OAAO,CAAC,SAAS,CAAK;IACtB,OAAO,CAAC,OAAO,CAMX;IACJ,OAAO,CAAC,cAAc,CAAuB;IAC7C,OAAO,CAAC,SAAS,CAAS;IAC1B,OAAO,CAAC,YAAY,CAAuB;gBAE/B,MAAM,EAAE,oBAAoB;IAIxC;;;;;;;;OAQG;IACG,OAAO,IAAI,OAAO,CAAC,OAAO,CAAC;IAyDjC;;OAEG;IACH,UAAU,IAAI,IAAI;IAelB;;OAEG;IACH,WAAW,IAAI,OAAO;IAItB;;OAEG;IACH,eAAe,IAAI,MAAM,GAAG,IAAI;IAIhC;;OAEG;IACH,gBAAgB,CAAC,QAAQ,EAAE,aAAa,GAAG,MAAM,IAAI;IAUrD;;;OAGG;YACW,SAAS;IAsBvB;;OAEG;YACW,OAAO;IAyCrB;;OAEG;IACH,OAAO,CAAC,aAAa;IAcrB;;OAEG;IACH,OAAO,CAAC,cAAc;IAoBtB;;OAEG;IACH,OAAO,CAAC,WAAW;IAUnB;;OAEG;IACH,OAAO,CAAC,WAAW;IAKnB;;OAEG;IACH,OAAO,CAAC,WAAW;IAQnB;;OAEG;IACG,SAAS,CAAC,MAAM,GAAE,eAAoB,GAAG,OAAO,CAAC,GAAG,CAAC;IAI3D;;OAEG;IACG,SAAS,CAAC,MAAM,EAAE,eAAe,GAAG,OAAO,CAAC,GAAG,CAAC;IAItD;;OAEG;IACG,eAAe,CAAC,MAAM,GAAE,kBAAuB,GAAG,OAAO,CAAC,oBAAoB,CAAC;IAIrF;;OAEG;IACG,YAAY,CAAC,MAAM,GAAE,kBAAuB,GAAG,OAAO,CAAC,GAAG,CAAC;IAIjE;;OAEG;IACG,aAAa,CAAC,MAAM,EAAE,oBAAoB,GAAG,OAAO,CAAC,GAAG,CAAC;IAI/D;;OAEG;IACG,YAAY,CAAC,MAAM,EAAE,oBAAoB,GAAG,OAAO,CAAC,oBAAoB,CAAC;IAI/E;;OAEG;IACG,cAAc,CAAC,MAAM,EAAE,qBAAqB,GAAG,OAAO,CAAC,qBAAqB,CAAC;IAInF;;OAEG;IACG,YAAY,CAAC,MAAM,EAAE,oBAAoB,GAAG,OAAO,CAAC,oBAAoB,CAAC;IAI/E;;OAEG;IACG,UAAU,CAAC,MAAM,GAAE,gBAAqB,GAAG,OAAO,CAAC,gBAAgB,CAAC;IAI1E;;OAEG;IACG,WAAW,CAAC,MAAM,EAAE,kBAAkB,GAAG,OAAO,CAAC,kBAAkB,CAAC;IAI1E;;OAEG;IACG,WAAW,CAAC,MAAM,EAAE,kBAAkB,GAAG,OAAO,CAAC,kBAAkB,CAAC;IAI1E;;OAEG;IACG,WAAW,CAAC,MAAM,EAAE,kBAAkB,GAAG,OAAO,CAAC,kBAAkB,CAAC;IAI1E;;OAEG;IACG,gBAAgB,CAAC,MAAM,GAAE,mBAAwB,GAAG,OAAO,CAAC,mBAAmB,CAAC;IAItF;;OAEG;IACG,UAAU,CAAC,MAAM,GAAE,gBAAqB,GAAG,OAAO,CAAC,gBAAgB,CAAC;IAI1E;;OAEG;IACG,UAAU,CAAC,MAAM,GAAE,cAAmB,GAAG,OAAO,CAAC,cAAc,CAAC;IAItE;;OAEG;IACG,WAAW,CAAC,MAAM,EAAE,iBAAiB,GAAG,OAAO,CAAC,GAAG,CAAC;IAI1D;;OAEG;IACG,WAAW,CAAC,MAAM,EAAE,iBAAiB,GAAG,OAAO,CAAC,GAAG,CAAC;IAI1D;;OAEG;IACG,eAAe,CAAC,MAAM,EAAE,qBAAqB,GAAG,OAAO,CAAC,GAAG,CAAC;IAIlE;;OAEG;IACG,cAAc,CAAC,MAAM,EAAE,qBAAqB,GAAG,OAAO,CAAC,GAAG,CAAC;IAIjE;;OAEG;IACG,YAAY,CAAC,MAAM,EAAE,mBAAmB,GAAG,OAAO,CAAC,GAAG,CAAC;IAI7D;;OAEG;IACG,YAAY,CAAC,MAAM,EAAE,mBAAmB,GAAG,OAAO,CAAC,GAAG,CAAC;IAI7D;;OAEG;IACG,cAAc,CAAC,MAAM,EAAE,qBAAqB,GAAG,OAAO,CAAC,GAAG,CAAC;IAIjE;;OAEG;IACG,gBAAgB,CAAC,MAAM,GAAE,mBAAwB,GAAG,OAAO,CAAC,GAAG,CAAC;IAItE;;OAEG;IACG,WAAW,CAAC,MAAM,EAAE,WAAW,GAAG,OAAO,CAAC,GAAG,CAAC;IAIpD;;OAEG;IACG,YAAY,CAAC,MAAM,EAAE,eAAe,GAAG,OAAO,CAAC,GAAG,CAAC;IAIzD;;OAEG;IACG,IAAI,CAAC,MAAM,EAAE,UAAU,GAAG,OAAO,CAAC,GAAG,CAAC;IAI5C;;OAEG;IACG,IAAI,CAAC,MAAM,EAAE,UAAU,GAAG,OAAO,CAAC,GAAG,CAAC;IAI5C;;OAEG;IACG,IAAI,CAAC,MAAM,EAAE,UAAU,GAAG,OAAO,CAAC,GAAG,CAAC;IAI5C;;OAEG;IACG,WAAW,CAAC,MAAM,GAAE,iBAAsB,GAAG,OAAO,CAAC,iBAAiB,CAAC;IAI7E;;OAEG;IACG,UAAU,CAAC,MAAM,EAAE,gBAAgB,GAAG,OAAO,CAAC,gBAAgB,CAAC;IAIrE;;OAEG;IACG,YAAY,CAAC,MAAM,EAAE,kBAAkB,GAAG,OAAO,CAAC,GAAG,CAAC;IAI5D;;OAEG;IACG,eAAe,CAAC,MAAM,EAAE,kBAAkB,GAAG,OAAO,CAAC,kBAAkB,CAAC;IAI9E;;OAEG;IACG,WAAW,CAAC,MAAM,EAAE,cAAc,GAAG,OAAO,CAAC,GAAG,CAAC;IAIvD;;OAEG;IACG,aAAa,CAAC,MAAM,GAAE,gBAAqB,GAAG,OAAO,CAAC,gBAAgB,CAAC;IAI7E;;OAEG;IACG,iBAAiB,CAAC,MAAM,GAAE,oBAAyB,GAAG,OAAO,CAAC,oBAAoB,CAAC;IAIzF;;OAEG;IACG,aAAa,CAAC,MAAM,EAAE,oBAAoB,GAAG,OAAO,CAAC,GAAG,CAAC;IAI/D;;OAEG;IACG,aAAa,CAAC,MAAM,GAAE,mBAAwB,GAAG,OAAO,CAAC,GAAG,CAAC;IAInE;;OAEG;IACG,eAAe,CAAC,MAAM,GAAE,kBAAuB,GAAG,OAAO,CAAC,GAAG,CAAC;IAIpE;;OAEG;IACG,eAAe,CAAC,MAAM,GAAE,kBAAuB,GAAG,OAAO,CAAC,GAAG,CAAC;IAIpE;;OAEG;IACG,aAAa,CAAC,MAAM,GAAE,gBAAqB,GAAG,OAAO,CAAC,gBAAgB,CAAC;IAI7E;;OAEG;IACG,YAAY,CAAC,MAAM,EAAE,mBAAmB,GAAG,OAAO,CAAC,GAAG,CAAC;IAI7D;;OAEG;IACG,WAAW,CAAC,MAAM,EAAE,kBAAkB,GAAG,OAAO,CAAC,GAAG,CAAC;IAI3D;;OAEG;IACG,YAAY,CAAC,MAAM,GAAE,cAAmB,GAAG,OAAO,CAAC;QAAE,IAAI,EAAE,OAAO,EAAE,CAAA;KAAE,CAAC;IAI7E;;OAEG;IACG,aAAa,CAAC,MAAM,GAAE,gBAAqB,GAAG,OAAO,CAAC,GAAG,CAAC;IAIhE;;OAEG;IACG,UAAU,CAAC,MAAM,EAAE,aAAa,GAAG,OAAO,CAAC;QAAE,GAAG,EAAE,OAAO,CAAA;KAAE,CAAC;IAIlE;;OAEG;IACG,aAAa,CAAC,MAAM,EAAE,gBAAgB,GAAG,OAAO,CAAC;QAAE,GAAG,EAAE,OAAO,CAAA;KAAE,CAAC;IAIxE;;OAEG;IACG,aAAa,CAAC,MAAM,EAAE,gBAAgB,GAAG,OAAO,CAAC,GAAG,CAAC;IAI3D;;OAEG;IACG,UAAU,CAAC,MAAM,EAAE,aAAa,GAAG,OAAO,CAAC,GAAG,CAAC;IAIrD;;OAEG;IACG,WAAW,CAAC,MAAM,EAAE,cAAc,GAAG,OAAO,CAAC;QAAE,IAAI,EAAE,eAAe,EAAE,CAAA;KAAE,CAAC;IAI/E;;OAEG;IACG,gBAAgB,CAAC,MAAM,GAAE,sBAA2B,GAAG,OAAO,CAAC,qBAAqB,CAAC;IAI3F;;OAEG;IACG,gBAAgB,CAAC,MAAM,EAAE,sBAAsB,GAAG,OAAO,CAAC,qBAAqB,CAAC;IAItF;;OAEG;IACG,oBAAoB,CAAC,MAAM,EAAE,0BAA0B,GAAG,OAAO,CAAC,qBAAqB,CAAC;IAI9F;;OAEG;IACG,oBAAoB,CAAC,MAAM,EAAE,0BAA0B,GAAG,OAAO,CAAC,qBAAqB,CAAC;IAI9F;;OAEG;IACG,mBAAmB,CAAC,MAAM,EAAE,yBAAyB,GAAG,OAAO,CAAC,GAAG,CAAC;IAI1E;;OAEG;IACG,mBAAmB,CAAC,MAAM,EAAE,yBAAyB,GAAG,OAAO,CAAC,GAAG,CAAC;IAI1E;;OAEG;IACG,kBAAkB,CAAC,MAAM,GAAE,oBAAyB,GAAG,OAAO,CAAC,GAAG,CAAC;IAIzE;;OAEG;IACG,oBAAoB,CAAC,MAAM,EAAE,uBAAuB,GAAG,OAAO,CAAC,GAAG,CAAC;IAIzE;;OAEG;IACG,mBAAmB,CAAC,MAAM,EAAE,sBAAsB,GAAG,OAAO,CAAC,GAAG,CAAC;IAIvE;;OAEG;IACG,mBAAmB,CAAC,MAAM,EAAE,sBAAsB,GAAG,OAAO,CAAC,GAAG,CAAC;IAIvE;;OAEG;IACG,iBAAiB,CAAC,MAAM,EAAE,uBAAuB,GAAG,OAAO,CAAC,GAAG,CAAC;IAItE;;OAEG;IACG,iBAAiB,CAAC,MAAM,EAAE,uBAAuB,GAAG,OAAO,CAAC,GAAG,CAAC;IAItE;;OAEG;IACG,cAAc,CAAC,MAAM,EAAE,iBAAiB,GAAG,OAAO,CAAC,GAAG,CAAC;IAI7D;;OAEG;IACG,QAAQ,CAAC,MAAM,EAAE,cAAc,GAAG,OAAO,CAAC,GAAG,CAAC;IAIpD;;OAEG;IACG,SAAS,CAAC,MAAM,EAAE,eAAe,GAAG,OAAO,CAAC,GAAG,CAAC;IAItD;;OAEG;IACG,UAAU,CAAC,MAAM,EAAE,gBAAgB,GAAG,OAAO,CAAC,GAAG,CAAC;IAIxD;;OAEG;IACG,kBAAkB,CAAC,MAAM,EAAE,qBAAqB,GAAG,OAAO,CAAC,GAAG,CAAC;IAIrE;;OAEG;IACG,gBAAgB,CAAC,MAAM,GAAE,kBAAuB,GAAG,OAAO,CAAC,GAAG,CAAC;IAIrE;;OAEG;IACG,kBAAkB,CAAC,MAAM,EAAE,qBAAqB,GAAG,OAAO,CAAC,GAAG,CAAC;IAIrE;;OAEG;IACG,iBAAiB,CAAC,MAAM,EAAE,oBAAoB,GAAG,OAAO,CAAC,GAAG,CAAC;IAInE;;OAEG;IACG,iBAAiB,CAAC,MAAM,EAAE,oBAAoB,GAAG,OAAO,CAAC,GAAG,CAAC;IAInE;;OAEG;IACG,UAAU,CAAC,MAAM,EAAE,gBAAgB,GAAG,OAAO,CAAC,GAAG,CAAC;IAIxD;;OAEG;IACG,SAAS,CAAC,MAAM,GAAE,cAAmB,GAAG,OAAO,CAAC,GAAG,CAAC;IAI1D;;OAEG;IACG,YAAY,CAAC,MAAM,EAAE,kBAAkB,GAAG,OAAO,CAAC,GAAG,CAAC;IAI5D;;OAEG;IACG,UAAU,CAAC,MAAM,EAAE,gBAAgB,GAAG,OAAO,CAAC,GAAG,CAAC;IAIxD;;OAEG;IACG,QAAQ,CAAC,MAAM,EAAE,cAAc,GAAG,OAAO,CAAC,cAAc,CAAC;IAI/D;;OAEG;IACG,SAAS,CAAC,MAAM,EAAE,eAAe,GAAG,OAAO,CAAC,GAAG,CAAC;IAItD;;;OAGG;IACG,IAAI,CAAC,CAAC,GAAG,GAAG,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,GAAG,GAAG,OAAO,CAAC,CAAC,CAAC;CAG9D"}
|
package/dist/client.js
CHANGED
|
@@ -17,7 +17,13 @@ export class OpenClawClient {
|
|
|
17
17
|
this.config = config;
|
|
18
18
|
}
|
|
19
19
|
/**
|
|
20
|
-
* Connect to the OpenClaw Gateway and perform handshake
|
|
20
|
+
* Connect to the OpenClaw Gateway and perform handshake.
|
|
21
|
+
*
|
|
22
|
+
* The protocol flow is:
|
|
23
|
+
* 1. Open WebSocket connection
|
|
24
|
+
* 2. Gateway sends a `connect.challenge` event with a nonce
|
|
25
|
+
* 3. Client responds with a `connect` request (including auth token)
|
|
26
|
+
* 4. Gateway replies with `hello-ok` containing server info and snapshot
|
|
21
27
|
*/
|
|
22
28
|
async connect() {
|
|
23
29
|
if (this.connected && this.ws?.readyState === WebSocket.OPEN) {
|
|
@@ -26,23 +32,44 @@ export class OpenClawClient {
|
|
|
26
32
|
// Create WebSocket connection
|
|
27
33
|
const WS = getWebSocketConstructor();
|
|
28
34
|
this.ws = new WS(this.config.gatewayUrl);
|
|
29
|
-
// Wait for connection to open
|
|
30
|
-
await new Promise((resolve, reject) => {
|
|
35
|
+
// Wait for connection to open and receive the challenge event
|
|
36
|
+
const challenge = await new Promise((resolve, reject) => {
|
|
31
37
|
if (!this.ws) {
|
|
32
38
|
reject(new Error('WebSocket not initialized'));
|
|
33
39
|
return;
|
|
34
40
|
}
|
|
35
|
-
|
|
36
|
-
|
|
41
|
+
const timeout = setTimeout(() => {
|
|
42
|
+
reject(new Error('Connection timeout: no challenge received'));
|
|
43
|
+
}, 15000);
|
|
44
|
+
this.ws.onerror = (error) => {
|
|
45
|
+
clearTimeout(timeout);
|
|
46
|
+
reject(error);
|
|
47
|
+
};
|
|
48
|
+
this.ws.onmessage = (event) => {
|
|
49
|
+
try {
|
|
50
|
+
const frame = JSON.parse(event.data);
|
|
51
|
+
if (frame.type === 'event' && frame.event === 'connect.challenge') {
|
|
52
|
+
clearTimeout(timeout);
|
|
53
|
+
resolve(frame.payload);
|
|
54
|
+
}
|
|
55
|
+
}
|
|
56
|
+
catch (error) {
|
|
57
|
+
clearTimeout(timeout);
|
|
58
|
+
reject(new Error('Failed to parse challenge frame'));
|
|
59
|
+
}
|
|
60
|
+
};
|
|
61
|
+
this.ws.onopen = () => {
|
|
62
|
+
// Wait for the challenge event after connection opens
|
|
63
|
+
};
|
|
37
64
|
});
|
|
38
|
-
// Set up message handler
|
|
65
|
+
// Set up message handler for subsequent messages
|
|
39
66
|
if (this.ws) {
|
|
40
67
|
this.ws.onmessage = (event) => this.handleMessage(event);
|
|
41
68
|
this.ws.onclose = () => this.handleClose();
|
|
42
69
|
this.ws.onerror = (error) => this.handleError(error);
|
|
43
70
|
}
|
|
44
|
-
// Perform handshake
|
|
45
|
-
const result = await this.handshake();
|
|
71
|
+
// Perform handshake (send connect request after receiving challenge)
|
|
72
|
+
const result = await this.handshake(challenge);
|
|
46
73
|
this.connected = true;
|
|
47
74
|
this.connectionId = result.server.connId;
|
|
48
75
|
return result;
|
|
@@ -88,9 +115,10 @@ export class OpenClawClient {
|
|
|
88
115
|
};
|
|
89
116
|
}
|
|
90
117
|
/**
|
|
91
|
-
* Perform the connection handshake
|
|
118
|
+
* Perform the connection handshake after receiving the challenge.
|
|
119
|
+
* Uses connectTimeoutMs (default 120s) since device approval may take a while.
|
|
92
120
|
*/
|
|
93
|
-
async handshake() {
|
|
121
|
+
async handshake(_challenge) {
|
|
94
122
|
const params = {
|
|
95
123
|
minProtocol: 3,
|
|
96
124
|
maxProtocol: 3,
|
|
@@ -105,13 +133,15 @@ export class OpenClawClient {
|
|
|
105
133
|
auth: {
|
|
106
134
|
token: this.config.token,
|
|
107
135
|
},
|
|
136
|
+
...this.config.connectParams,
|
|
108
137
|
};
|
|
109
|
-
|
|
138
|
+
const connectTimeout = this.config.connectTimeoutMs ?? 120000;
|
|
139
|
+
return this.request('connect', params, connectTimeout);
|
|
110
140
|
}
|
|
111
141
|
/**
|
|
112
142
|
* Send a request and wait for response
|
|
113
143
|
*/
|
|
114
|
-
async request(method, params) {
|
|
144
|
+
async request(method, params, timeoutMs) {
|
|
115
145
|
if (!this.ws || this.ws.readyState !== WebSocket.OPEN) {
|
|
116
146
|
throw new Error('Not connected');
|
|
117
147
|
}
|
|
@@ -124,11 +154,11 @@ export class OpenClawClient {
|
|
|
124
154
|
};
|
|
125
155
|
return new Promise((resolve, reject) => {
|
|
126
156
|
this.pending.set(id, { resolve, reject });
|
|
127
|
-
|
|
157
|
+
const effectiveTimeout = timeoutMs ?? this.config.requestTimeoutMs ?? 30000;
|
|
128
158
|
const timeout = setTimeout(() => {
|
|
129
159
|
this.pending.delete(id);
|
|
130
160
|
reject(new Error(`Request timeout: ${method}`));
|
|
131
|
-
},
|
|
161
|
+
}, effectiveTimeout);
|
|
132
162
|
// Clear timeout when promise settles
|
|
133
163
|
const originalResolve = resolve;
|
|
134
164
|
const originalReject = reject;
|
|
@@ -266,6 +296,24 @@ export class OpenClawClient {
|
|
|
266
296
|
async listAgents(params = {}) {
|
|
267
297
|
return this.request('agents.list', params);
|
|
268
298
|
}
|
|
299
|
+
/**
|
|
300
|
+
* Create agent
|
|
301
|
+
*/
|
|
302
|
+
async createAgent(params) {
|
|
303
|
+
return this.request('agents.create', params);
|
|
304
|
+
}
|
|
305
|
+
/**
|
|
306
|
+
* Update agent
|
|
307
|
+
*/
|
|
308
|
+
async updateAgent(params) {
|
|
309
|
+
return this.request('agents.update', params);
|
|
310
|
+
}
|
|
311
|
+
/**
|
|
312
|
+
* Delete agent
|
|
313
|
+
*/
|
|
314
|
+
async deleteAgent(params) {
|
|
315
|
+
return this.request('agents.delete', params);
|
|
316
|
+
}
|
|
269
317
|
/**
|
|
270
318
|
* Get agent identity
|
|
271
319
|
*/
|
|
@@ -326,6 +374,12 @@ export class OpenClawClient {
|
|
|
326
374
|
async compactSession(params) {
|
|
327
375
|
return this.request('sessions.compact', params);
|
|
328
376
|
}
|
|
377
|
+
/**
|
|
378
|
+
* Get session usage
|
|
379
|
+
*/
|
|
380
|
+
async getSessionsUsage(params = {}) {
|
|
381
|
+
return this.request('sessions.usage', params);
|
|
382
|
+
}
|
|
329
383
|
/**
|
|
330
384
|
* Send a message to agent
|
|
331
385
|
*/
|
|
@@ -386,6 +440,12 @@ export class OpenClawClient {
|
|
|
386
440
|
async setTalkMode(params) {
|
|
387
441
|
return this.request('talk.mode', params);
|
|
388
442
|
}
|
|
443
|
+
/**
|
|
444
|
+
* Get talk config
|
|
445
|
+
*/
|
|
446
|
+
async getTalkConfig(params = {}) {
|
|
447
|
+
return this.request('talk.config', params);
|
|
448
|
+
}
|
|
389
449
|
/**
|
|
390
450
|
* Get channels status
|
|
391
451
|
*/
|
|
@@ -530,6 +590,12 @@ export class OpenClawClient {
|
|
|
530
590
|
async rejectDevicePairing(params) {
|
|
531
591
|
return this.request('device.pair.reject', params);
|
|
532
592
|
}
|
|
593
|
+
/**
|
|
594
|
+
* Remove paired device
|
|
595
|
+
*/
|
|
596
|
+
async removeDevicePairing(params) {
|
|
597
|
+
return this.request('device.pair.remove', params);
|
|
598
|
+
}
|
|
533
599
|
/**
|
|
534
600
|
* Rotate device token
|
|
535
601
|
*/
|
|
@@ -620,6 +686,12 @@ export class OpenClawClient {
|
|
|
620
686
|
async invokeNode(params) {
|
|
621
687
|
return this.request('node.invoke', params);
|
|
622
688
|
}
|
|
689
|
+
/**
|
|
690
|
+
* Test push notification to node
|
|
691
|
+
*/
|
|
692
|
+
async testPush(params) {
|
|
693
|
+
return this.request('push.test', params);
|
|
694
|
+
}
|
|
623
695
|
/**
|
|
624
696
|
* Update and run
|
|
625
697
|
*/
|