@kya-os/contracts 1.7.26 → 1.7.32

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 (44) hide show
  1. package/dist/agent-deployment-utils.d.ts +20 -0
  2. package/dist/agent-deployment-utils.js +37 -0
  3. package/dist/agent-deployment.d.ts +19 -19
  4. package/dist/agent-deployment.js +2 -1
  5. package/dist/agentshield-api/admin-schemas.d.ts +2 -2
  6. package/dist/agentshield-api/schemas.d.ts +462 -462
  7. package/dist/audit/index.d.ts +24 -24
  8. package/dist/cli.d.ts +44 -44
  9. package/dist/compute-binding.d.ts +6 -6
  10. package/dist/compute.d.ts +27 -8
  11. package/dist/compute.js +6 -0
  12. package/dist/config/identity.d.ts +98 -98
  13. package/dist/consent/schemas.d.ts +72 -72
  14. package/dist/dashboard-config/schemas.d.ts +2191 -2191
  15. package/dist/delegation/constraints.d.ts +32 -32
  16. package/dist/delegation/schemas.d.ts +610 -610
  17. package/dist/deploy/schemas.d.ts +84 -84
  18. package/dist/gateway/index.d.ts +579 -0
  19. package/dist/gateway/index.js +103 -0
  20. package/dist/handshake.d.ts +42 -42
  21. package/dist/index.d.ts +1 -0
  22. package/dist/index.js +2 -0
  23. package/dist/molti/admin-ws.d.ts +116 -116
  24. package/dist/molti/schemas.d.ts +98 -98
  25. package/dist/openclaw/index.d.ts +20 -0
  26. package/dist/openclaw/index.js +28 -0
  27. package/dist/openclaw/types.d.ts +714 -0
  28. package/dist/openclaw/types.js +122 -0
  29. package/dist/pairing/index.d.ts +44 -0
  30. package/dist/pairing/index.js +11 -0
  31. package/dist/policy/schemas.d.ts +553 -553
  32. package/dist/proof/proof-record.d.ts +48 -48
  33. package/dist/proof/signing-spec.d.ts +8 -8
  34. package/dist/proof.d.ts +68 -68
  35. package/dist/registry.d.ts +24 -24
  36. package/dist/reputation/api.d.ts +156 -156
  37. package/dist/reputation/credentials.d.ts +48 -48
  38. package/dist/reputation/schemas.d.ts +48 -48
  39. package/dist/test.d.ts +22 -22
  40. package/dist/tlkrc/rotation.d.ts +12 -12
  41. package/dist/tool-protection/index.d.ts +22 -22
  42. package/dist/verifier.d.ts +17 -17
  43. package/dist/well-known/index.d.ts +72 -72
  44. package/package.json +10 -2
@@ -0,0 +1,714 @@
1
+ /**
2
+ * OpenClaw Configuration & Gateway Protocol Types
3
+ *
4
+ * Single source of truth for:
5
+ * 1. openclaw.json config shape (Zod schemas + inferred types)
6
+ * 2. Gateway Protocol v3 WebSocket frame types (plain interfaces)
7
+ *
8
+ * Based on openclaw 2026.2.x config schema.
9
+ *
10
+ * @package @kya-os/contracts/openclaw
11
+ */
12
+ import { z } from "zod";
13
+ /**
14
+ * Gateway controlUi configuration.
15
+ * Controls WebSocket access, device auth, and origin allowlisting.
16
+ */
17
+ export declare const OpenClawControlUiSchema: z.ZodObject<{
18
+ enabled: z.ZodOptional<z.ZodBoolean>;
19
+ allowInsecureAuth: z.ZodOptional<z.ZodBoolean>;
20
+ dangerouslyDisableDeviceAuth: z.ZodOptional<z.ZodBoolean>;
21
+ /** Exact origin strings — no wildcard support */
22
+ allowedOrigins: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
23
+ }, "strip", z.ZodTypeAny, {
24
+ enabled?: boolean | undefined;
25
+ allowInsecureAuth?: boolean | undefined;
26
+ dangerouslyDisableDeviceAuth?: boolean | undefined;
27
+ allowedOrigins?: string[] | undefined;
28
+ }, {
29
+ enabled?: boolean | undefined;
30
+ allowInsecureAuth?: boolean | undefined;
31
+ dangerouslyDisableDeviceAuth?: boolean | undefined;
32
+ allowedOrigins?: string[] | undefined;
33
+ }>;
34
+ export type OpenClawControlUi = z.infer<typeof OpenClawControlUiSchema>;
35
+ /**
36
+ * Gateway configuration.
37
+ * Key differences from older versions:
38
+ * - bind is an enum ("lan"|"loopback"|"auto"|"custom"|"tailnet"), not an IP
39
+ */
40
+ export declare const OpenClawGatewaySchema: z.ZodObject<{
41
+ mode: z.ZodEnum<["local", "remote"]>;
42
+ port: z.ZodNumber;
43
+ bind: z.ZodEnum<["lan", "loopback", "auto", "custom", "tailnet"]>;
44
+ auth: z.ZodObject<{
45
+ token: z.ZodString;
46
+ }, "strip", z.ZodTypeAny, {
47
+ token: string;
48
+ }, {
49
+ token: string;
50
+ }>;
51
+ remote: z.ZodOptional<z.ZodObject<{
52
+ token: z.ZodString;
53
+ }, "strip", z.ZodTypeAny, {
54
+ token: string;
55
+ }, {
56
+ token: string;
57
+ }>>;
58
+ trustedProxies: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
59
+ controlUi: z.ZodOptional<z.ZodObject<{
60
+ enabled: z.ZodOptional<z.ZodBoolean>;
61
+ allowInsecureAuth: z.ZodOptional<z.ZodBoolean>;
62
+ dangerouslyDisableDeviceAuth: z.ZodOptional<z.ZodBoolean>;
63
+ /** Exact origin strings — no wildcard support */
64
+ allowedOrigins: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
65
+ }, "strip", z.ZodTypeAny, {
66
+ enabled?: boolean | undefined;
67
+ allowInsecureAuth?: boolean | undefined;
68
+ dangerouslyDisableDeviceAuth?: boolean | undefined;
69
+ allowedOrigins?: string[] | undefined;
70
+ }, {
71
+ enabled?: boolean | undefined;
72
+ allowInsecureAuth?: boolean | undefined;
73
+ dangerouslyDisableDeviceAuth?: boolean | undefined;
74
+ allowedOrigins?: string[] | undefined;
75
+ }>>;
76
+ }, "strip", z.ZodTypeAny, {
77
+ mode: "local" | "remote";
78
+ port: number;
79
+ bind: "custom" | "lan" | "loopback" | "auto" | "tailnet";
80
+ auth: {
81
+ token: string;
82
+ };
83
+ remote?: {
84
+ token: string;
85
+ } | undefined;
86
+ trustedProxies?: string[] | undefined;
87
+ controlUi?: {
88
+ enabled?: boolean | undefined;
89
+ allowInsecureAuth?: boolean | undefined;
90
+ dangerouslyDisableDeviceAuth?: boolean | undefined;
91
+ allowedOrigins?: string[] | undefined;
92
+ } | undefined;
93
+ }, {
94
+ mode: "local" | "remote";
95
+ port: number;
96
+ bind: "custom" | "lan" | "loopback" | "auto" | "tailnet";
97
+ auth: {
98
+ token: string;
99
+ };
100
+ remote?: {
101
+ token: string;
102
+ } | undefined;
103
+ trustedProxies?: string[] | undefined;
104
+ controlUi?: {
105
+ enabled?: boolean | undefined;
106
+ allowInsecureAuth?: boolean | undefined;
107
+ dangerouslyDisableDeviceAuth?: boolean | undefined;
108
+ allowedOrigins?: string[] | undefined;
109
+ } | undefined;
110
+ }>;
111
+ export type OpenClawGateway = z.infer<typeof OpenClawGatewaySchema>;
112
+ /**
113
+ * Channel configurations.
114
+ * - Telegram uses "botToken", Discord uses "token" (not "botToken")
115
+ * - Slack needs both botToken and appToken
116
+ */
117
+ export declare const OpenClawChannelsSchema: z.ZodObject<{
118
+ telegram: z.ZodOptional<z.ZodObject<{
119
+ enabled: z.ZodBoolean;
120
+ botToken: z.ZodString;
121
+ dmPolicy: z.ZodOptional<z.ZodString>;
122
+ }, "strip", z.ZodTypeAny, {
123
+ enabled: boolean;
124
+ botToken: string;
125
+ dmPolicy?: string | undefined;
126
+ }, {
127
+ enabled: boolean;
128
+ botToken: string;
129
+ dmPolicy?: string | undefined;
130
+ }>>;
131
+ discord: z.ZodOptional<z.ZodObject<{
132
+ enabled: z.ZodBoolean;
133
+ token: z.ZodString;
134
+ dm: z.ZodOptional<z.ZodObject<{
135
+ policy: z.ZodString;
136
+ }, "strip", z.ZodTypeAny, {
137
+ policy: string;
138
+ }, {
139
+ policy: string;
140
+ }>>;
141
+ }, "strip", z.ZodTypeAny, {
142
+ enabled: boolean;
143
+ token: string;
144
+ dm?: {
145
+ policy: string;
146
+ } | undefined;
147
+ }, {
148
+ enabled: boolean;
149
+ token: string;
150
+ dm?: {
151
+ policy: string;
152
+ } | undefined;
153
+ }>>;
154
+ slack: z.ZodOptional<z.ZodObject<{
155
+ enabled: z.ZodBoolean;
156
+ botToken: z.ZodString;
157
+ appToken: z.ZodString;
158
+ }, "strip", z.ZodTypeAny, {
159
+ enabled: boolean;
160
+ appToken: string;
161
+ botToken: string;
162
+ }, {
163
+ enabled: boolean;
164
+ appToken: string;
165
+ botToken: string;
166
+ }>>;
167
+ whatsapp: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
168
+ }, "strip", z.ZodTypeAny, {
169
+ telegram?: {
170
+ enabled: boolean;
171
+ botToken: string;
172
+ dmPolicy?: string | undefined;
173
+ } | undefined;
174
+ discord?: {
175
+ enabled: boolean;
176
+ token: string;
177
+ dm?: {
178
+ policy: string;
179
+ } | undefined;
180
+ } | undefined;
181
+ slack?: {
182
+ enabled: boolean;
183
+ appToken: string;
184
+ botToken: string;
185
+ } | undefined;
186
+ whatsapp?: Record<string, unknown> | undefined;
187
+ }, {
188
+ telegram?: {
189
+ enabled: boolean;
190
+ botToken: string;
191
+ dmPolicy?: string | undefined;
192
+ } | undefined;
193
+ discord?: {
194
+ enabled: boolean;
195
+ token: string;
196
+ dm?: {
197
+ policy: string;
198
+ } | undefined;
199
+ } | undefined;
200
+ slack?: {
201
+ enabled: boolean;
202
+ appToken: string;
203
+ botToken: string;
204
+ } | undefined;
205
+ whatsapp?: Record<string, unknown> | undefined;
206
+ }>;
207
+ export type OpenClawChannels = z.infer<typeof OpenClawChannelsSchema>;
208
+ /**
209
+ * A single model definition within a provider.
210
+ */
211
+ export declare const OpenClawModelSchema: z.ZodObject<{
212
+ id: z.ZodString;
213
+ name: z.ZodString;
214
+ contextWindow: z.ZodNumber;
215
+ maxTokens: z.ZodNumber;
216
+ }, "strip", z.ZodTypeAny, {
217
+ name: string;
218
+ id: string;
219
+ contextWindow: number;
220
+ maxTokens: number;
221
+ }, {
222
+ name: string;
223
+ id: string;
224
+ contextWindow: number;
225
+ maxTokens: number;
226
+ }>;
227
+ export type OpenClawModel = z.infer<typeof OpenClawModelSchema>;
228
+ /**
229
+ * AI model provider definition.
230
+ * Tells OpenClaw how to reach an AI provider (e.g. OpenAI, custom endpoint).
231
+ */
232
+ export declare const OpenClawModelProviderSchema: z.ZodObject<{
233
+ baseUrl: z.ZodString;
234
+ apiKey: z.ZodOptional<z.ZodString>;
235
+ api: z.ZodString;
236
+ models: z.ZodArray<z.ZodObject<{
237
+ id: z.ZodString;
238
+ name: z.ZodString;
239
+ contextWindow: z.ZodNumber;
240
+ maxTokens: z.ZodNumber;
241
+ }, "strip", z.ZodTypeAny, {
242
+ name: string;
243
+ id: string;
244
+ contextWindow: number;
245
+ maxTokens: number;
246
+ }, {
247
+ name: string;
248
+ id: string;
249
+ contextWindow: number;
250
+ maxTokens: number;
251
+ }>, "many">;
252
+ }, "strip", z.ZodTypeAny, {
253
+ baseUrl: string;
254
+ api: string;
255
+ models: {
256
+ name: string;
257
+ id: string;
258
+ contextWindow: number;
259
+ maxTokens: number;
260
+ }[];
261
+ apiKey?: string | undefined;
262
+ }, {
263
+ baseUrl: string;
264
+ api: string;
265
+ models: {
266
+ name: string;
267
+ id: string;
268
+ contextWindow: number;
269
+ maxTokens: number;
270
+ }[];
271
+ apiKey?: string | undefined;
272
+ }>;
273
+ export type OpenClawModelProvider = z.infer<typeof OpenClawModelProviderSchema>;
274
+ /**
275
+ * Full openclaw.json configuration.
276
+ *
277
+ * AI provider keys go in `env` (flat record), not a top-level "ai" key.
278
+ * The `agents.defaults.model.primary` field sets the default model.
279
+ */
280
+ export declare const OpenClawConfigSchema: z.ZodObject<{
281
+ gateway: z.ZodObject<{
282
+ mode: z.ZodEnum<["local", "remote"]>;
283
+ port: z.ZodNumber;
284
+ bind: z.ZodEnum<["lan", "loopback", "auto", "custom", "tailnet"]>;
285
+ auth: z.ZodObject<{
286
+ token: z.ZodString;
287
+ }, "strip", z.ZodTypeAny, {
288
+ token: string;
289
+ }, {
290
+ token: string;
291
+ }>;
292
+ remote: z.ZodOptional<z.ZodObject<{
293
+ token: z.ZodString;
294
+ }, "strip", z.ZodTypeAny, {
295
+ token: string;
296
+ }, {
297
+ token: string;
298
+ }>>;
299
+ trustedProxies: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
300
+ controlUi: z.ZodOptional<z.ZodObject<{
301
+ enabled: z.ZodOptional<z.ZodBoolean>;
302
+ allowInsecureAuth: z.ZodOptional<z.ZodBoolean>;
303
+ dangerouslyDisableDeviceAuth: z.ZodOptional<z.ZodBoolean>;
304
+ /** Exact origin strings — no wildcard support */
305
+ allowedOrigins: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
306
+ }, "strip", z.ZodTypeAny, {
307
+ enabled?: boolean | undefined;
308
+ allowInsecureAuth?: boolean | undefined;
309
+ dangerouslyDisableDeviceAuth?: boolean | undefined;
310
+ allowedOrigins?: string[] | undefined;
311
+ }, {
312
+ enabled?: boolean | undefined;
313
+ allowInsecureAuth?: boolean | undefined;
314
+ dangerouslyDisableDeviceAuth?: boolean | undefined;
315
+ allowedOrigins?: string[] | undefined;
316
+ }>>;
317
+ }, "strip", z.ZodTypeAny, {
318
+ mode: "local" | "remote";
319
+ port: number;
320
+ bind: "custom" | "lan" | "loopback" | "auto" | "tailnet";
321
+ auth: {
322
+ token: string;
323
+ };
324
+ remote?: {
325
+ token: string;
326
+ } | undefined;
327
+ trustedProxies?: string[] | undefined;
328
+ controlUi?: {
329
+ enabled?: boolean | undefined;
330
+ allowInsecureAuth?: boolean | undefined;
331
+ dangerouslyDisableDeviceAuth?: boolean | undefined;
332
+ allowedOrigins?: string[] | undefined;
333
+ } | undefined;
334
+ }, {
335
+ mode: "local" | "remote";
336
+ port: number;
337
+ bind: "custom" | "lan" | "loopback" | "auto" | "tailnet";
338
+ auth: {
339
+ token: string;
340
+ };
341
+ remote?: {
342
+ token: string;
343
+ } | undefined;
344
+ trustedProxies?: string[] | undefined;
345
+ controlUi?: {
346
+ enabled?: boolean | undefined;
347
+ allowInsecureAuth?: boolean | undefined;
348
+ dangerouslyDisableDeviceAuth?: boolean | undefined;
349
+ allowedOrigins?: string[] | undefined;
350
+ } | undefined;
351
+ }>;
352
+ env: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodString>>;
353
+ channels: z.ZodOptional<z.ZodObject<{
354
+ telegram: z.ZodOptional<z.ZodObject<{
355
+ enabled: z.ZodBoolean;
356
+ botToken: z.ZodString;
357
+ dmPolicy: z.ZodOptional<z.ZodString>;
358
+ }, "strip", z.ZodTypeAny, {
359
+ enabled: boolean;
360
+ botToken: string;
361
+ dmPolicy?: string | undefined;
362
+ }, {
363
+ enabled: boolean;
364
+ botToken: string;
365
+ dmPolicy?: string | undefined;
366
+ }>>;
367
+ discord: z.ZodOptional<z.ZodObject<{
368
+ enabled: z.ZodBoolean;
369
+ token: z.ZodString;
370
+ dm: z.ZodOptional<z.ZodObject<{
371
+ policy: z.ZodString;
372
+ }, "strip", z.ZodTypeAny, {
373
+ policy: string;
374
+ }, {
375
+ policy: string;
376
+ }>>;
377
+ }, "strip", z.ZodTypeAny, {
378
+ enabled: boolean;
379
+ token: string;
380
+ dm?: {
381
+ policy: string;
382
+ } | undefined;
383
+ }, {
384
+ enabled: boolean;
385
+ token: string;
386
+ dm?: {
387
+ policy: string;
388
+ } | undefined;
389
+ }>>;
390
+ slack: z.ZodOptional<z.ZodObject<{
391
+ enabled: z.ZodBoolean;
392
+ botToken: z.ZodString;
393
+ appToken: z.ZodString;
394
+ }, "strip", z.ZodTypeAny, {
395
+ enabled: boolean;
396
+ appToken: string;
397
+ botToken: string;
398
+ }, {
399
+ enabled: boolean;
400
+ appToken: string;
401
+ botToken: string;
402
+ }>>;
403
+ whatsapp: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
404
+ }, "strip", z.ZodTypeAny, {
405
+ telegram?: {
406
+ enabled: boolean;
407
+ botToken: string;
408
+ dmPolicy?: string | undefined;
409
+ } | undefined;
410
+ discord?: {
411
+ enabled: boolean;
412
+ token: string;
413
+ dm?: {
414
+ policy: string;
415
+ } | undefined;
416
+ } | undefined;
417
+ slack?: {
418
+ enabled: boolean;
419
+ appToken: string;
420
+ botToken: string;
421
+ } | undefined;
422
+ whatsapp?: Record<string, unknown> | undefined;
423
+ }, {
424
+ telegram?: {
425
+ enabled: boolean;
426
+ botToken: string;
427
+ dmPolicy?: string | undefined;
428
+ } | undefined;
429
+ discord?: {
430
+ enabled: boolean;
431
+ token: string;
432
+ dm?: {
433
+ policy: string;
434
+ } | undefined;
435
+ } | undefined;
436
+ slack?: {
437
+ enabled: boolean;
438
+ appToken: string;
439
+ botToken: string;
440
+ } | undefined;
441
+ whatsapp?: Record<string, unknown> | undefined;
442
+ }>>;
443
+ agents: z.ZodOptional<z.ZodObject<{
444
+ defaults: z.ZodOptional<z.ZodObject<{
445
+ model: z.ZodOptional<z.ZodObject<{
446
+ primary: z.ZodString;
447
+ }, "strip", z.ZodTypeAny, {
448
+ primary: string;
449
+ }, {
450
+ primary: string;
451
+ }>>;
452
+ }, "strip", z.ZodTypeAny, {
453
+ model?: {
454
+ primary: string;
455
+ } | undefined;
456
+ }, {
457
+ model?: {
458
+ primary: string;
459
+ } | undefined;
460
+ }>>;
461
+ }, "strip", z.ZodTypeAny, {
462
+ defaults?: {
463
+ model?: {
464
+ primary: string;
465
+ } | undefined;
466
+ } | undefined;
467
+ }, {
468
+ defaults?: {
469
+ model?: {
470
+ primary: string;
471
+ } | undefined;
472
+ } | undefined;
473
+ }>>;
474
+ models: z.ZodOptional<z.ZodObject<{
475
+ providers: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodObject<{
476
+ baseUrl: z.ZodString;
477
+ apiKey: z.ZodOptional<z.ZodString>;
478
+ api: z.ZodString;
479
+ models: z.ZodArray<z.ZodObject<{
480
+ id: z.ZodString;
481
+ name: z.ZodString;
482
+ contextWindow: z.ZodNumber;
483
+ maxTokens: z.ZodNumber;
484
+ }, "strip", z.ZodTypeAny, {
485
+ name: string;
486
+ id: string;
487
+ contextWindow: number;
488
+ maxTokens: number;
489
+ }, {
490
+ name: string;
491
+ id: string;
492
+ contextWindow: number;
493
+ maxTokens: number;
494
+ }>, "many">;
495
+ }, "strip", z.ZodTypeAny, {
496
+ baseUrl: string;
497
+ api: string;
498
+ models: {
499
+ name: string;
500
+ id: string;
501
+ contextWindow: number;
502
+ maxTokens: number;
503
+ }[];
504
+ apiKey?: string | undefined;
505
+ }, {
506
+ baseUrl: string;
507
+ api: string;
508
+ models: {
509
+ name: string;
510
+ id: string;
511
+ contextWindow: number;
512
+ maxTokens: number;
513
+ }[];
514
+ apiKey?: string | undefined;
515
+ }>>>;
516
+ }, "strip", z.ZodTypeAny, {
517
+ providers?: Record<string, {
518
+ baseUrl: string;
519
+ api: string;
520
+ models: {
521
+ name: string;
522
+ id: string;
523
+ contextWindow: number;
524
+ maxTokens: number;
525
+ }[];
526
+ apiKey?: string | undefined;
527
+ }> | undefined;
528
+ }, {
529
+ providers?: Record<string, {
530
+ baseUrl: string;
531
+ api: string;
532
+ models: {
533
+ name: string;
534
+ id: string;
535
+ contextWindow: number;
536
+ maxTokens: number;
537
+ }[];
538
+ apiKey?: string | undefined;
539
+ }> | undefined;
540
+ }>>;
541
+ }, "strip", z.ZodTypeAny, {
542
+ gateway: {
543
+ mode: "local" | "remote";
544
+ port: number;
545
+ bind: "custom" | "lan" | "loopback" | "auto" | "tailnet";
546
+ auth: {
547
+ token: string;
548
+ };
549
+ remote?: {
550
+ token: string;
551
+ } | undefined;
552
+ trustedProxies?: string[] | undefined;
553
+ controlUi?: {
554
+ enabled?: boolean | undefined;
555
+ allowInsecureAuth?: boolean | undefined;
556
+ dangerouslyDisableDeviceAuth?: boolean | undefined;
557
+ allowedOrigins?: string[] | undefined;
558
+ } | undefined;
559
+ };
560
+ channels?: {
561
+ telegram?: {
562
+ enabled: boolean;
563
+ botToken: string;
564
+ dmPolicy?: string | undefined;
565
+ } | undefined;
566
+ discord?: {
567
+ enabled: boolean;
568
+ token: string;
569
+ dm?: {
570
+ policy: string;
571
+ } | undefined;
572
+ } | undefined;
573
+ slack?: {
574
+ enabled: boolean;
575
+ appToken: string;
576
+ botToken: string;
577
+ } | undefined;
578
+ whatsapp?: Record<string, unknown> | undefined;
579
+ } | undefined;
580
+ models?: {
581
+ providers?: Record<string, {
582
+ baseUrl: string;
583
+ api: string;
584
+ models: {
585
+ name: string;
586
+ id: string;
587
+ contextWindow: number;
588
+ maxTokens: number;
589
+ }[];
590
+ apiKey?: string | undefined;
591
+ }> | undefined;
592
+ } | undefined;
593
+ env?: Record<string, string> | undefined;
594
+ agents?: {
595
+ defaults?: {
596
+ model?: {
597
+ primary: string;
598
+ } | undefined;
599
+ } | undefined;
600
+ } | undefined;
601
+ }, {
602
+ gateway: {
603
+ mode: "local" | "remote";
604
+ port: number;
605
+ bind: "custom" | "lan" | "loopback" | "auto" | "tailnet";
606
+ auth: {
607
+ token: string;
608
+ };
609
+ remote?: {
610
+ token: string;
611
+ } | undefined;
612
+ trustedProxies?: string[] | undefined;
613
+ controlUi?: {
614
+ enabled?: boolean | undefined;
615
+ allowInsecureAuth?: boolean | undefined;
616
+ dangerouslyDisableDeviceAuth?: boolean | undefined;
617
+ allowedOrigins?: string[] | undefined;
618
+ } | undefined;
619
+ };
620
+ channels?: {
621
+ telegram?: {
622
+ enabled: boolean;
623
+ botToken: string;
624
+ dmPolicy?: string | undefined;
625
+ } | undefined;
626
+ discord?: {
627
+ enabled: boolean;
628
+ token: string;
629
+ dm?: {
630
+ policy: string;
631
+ } | undefined;
632
+ } | undefined;
633
+ slack?: {
634
+ enabled: boolean;
635
+ appToken: string;
636
+ botToken: string;
637
+ } | undefined;
638
+ whatsapp?: Record<string, unknown> | undefined;
639
+ } | undefined;
640
+ models?: {
641
+ providers?: Record<string, {
642
+ baseUrl: string;
643
+ api: string;
644
+ models: {
645
+ name: string;
646
+ id: string;
647
+ contextWindow: number;
648
+ maxTokens: number;
649
+ }[];
650
+ apiKey?: string | undefined;
651
+ }> | undefined;
652
+ } | undefined;
653
+ env?: Record<string, string> | undefined;
654
+ agents?: {
655
+ defaults?: {
656
+ model?: {
657
+ primary: string;
658
+ } | undefined;
659
+ } | undefined;
660
+ } | undefined;
661
+ }>;
662
+ export type OpenClawConfig = z.infer<typeof OpenClawConfigSchema>;
663
+ /**
664
+ * RPC request frame sent to the OpenClaw gateway.
665
+ */
666
+ export interface OpenClawRpcRequest {
667
+ type: "req";
668
+ id: string;
669
+ method: string;
670
+ params?: unknown;
671
+ }
672
+ /**
673
+ * RPC response frame received from the OpenClaw gateway.
674
+ */
675
+ export interface OpenClawRpcResponse {
676
+ type: "res";
677
+ id: string;
678
+ ok: boolean;
679
+ payload?: unknown;
680
+ error?: unknown;
681
+ }
682
+ /**
683
+ * Event frame pushed by the OpenClaw gateway.
684
+ */
685
+ export interface OpenClawEvent {
686
+ type: "event";
687
+ event: string;
688
+ payload?: unknown;
689
+ }
690
+ /**
691
+ * Discriminated union of all v3 WebSocket frame types.
692
+ */
693
+ export type OpenClawFrame = OpenClawRpcRequest | OpenClawRpcResponse | OpenClawEvent;
694
+ /**
695
+ * Payload shape of the `hello-ok` response after a successful
696
+ * `connect` RPC handshake. Parsed defensively — fields are optional.
697
+ */
698
+ export interface OpenClawHelloOkPayload {
699
+ gateway?: {
700
+ version?: string;
701
+ mode?: string;
702
+ features?: string[];
703
+ };
704
+ health?: {
705
+ channels?: Record<string, {
706
+ connected: boolean;
707
+ error?: string;
708
+ }>;
709
+ };
710
+ agent?: {
711
+ id?: string;
712
+ name?: string;
713
+ };
714
+ }