@camstack/types 1.2.263 → 1.2.265

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 (33) hide show
  1. package/dist/automation/recipe.d.ts +1 -1
  2. package/dist/capabilities/composer.cap.d.ts +328 -0
  3. package/dist/capabilities/control.cap.d.ts +4 -4
  4. package/dist/capabilities/core-blocks.cap.d.ts +2339 -0
  5. package/dist/capabilities/custom-model-registry.cap.d.ts +44 -2
  6. package/dist/capabilities/day-night.cap.d.ts +8 -8
  7. package/dist/capabilities/device-extension.cap.d.ts +8 -8
  8. package/dist/capabilities/index.d.ts +4 -2
  9. package/dist/capabilities/model-convert.cap.d.ts +22 -1
  10. package/dist/capabilities/model-distributor.cap.d.ts +44 -2
  11. package/dist/capabilities/notification-rules.cap.d.ts +74 -74
  12. package/dist/capabilities/osd-manager.cap.d.ts +13 -13
  13. package/dist/composition/composition-graph.d.ts +36 -0
  14. package/dist/composition/composition-report.d.ts +264 -0
  15. package/dist/composition/composition.d.ts +362 -0
  16. package/dist/composition/evaluate-field.d.ts +63 -0
  17. package/dist/composition/examples.d.ts +10 -0
  18. package/dist/composition/expression-kinds.d.ts +36 -0
  19. package/dist/composition/index.d.ts +12 -0
  20. package/dist/composition/state-fields.d.ts +19 -0
  21. package/dist/composition/validate-composition.d.ts +46 -0
  22. package/dist/device/schema-fields.d.ts +3 -0
  23. package/dist/expression/builtins.d.ts +30 -2
  24. package/dist/generated/addon-api.d.ts +57 -0
  25. package/dist/generated/capability-router-map.d.ts +5 -2
  26. package/dist/generated/method-access-map.d.ts +1 -1
  27. package/dist/generated/system-proxy.d.ts +1 -1
  28. package/dist/index.d.ts +1 -0
  29. package/dist/index.js +1388 -83
  30. package/dist/index.mjs +1314 -84
  31. package/dist/notification/rule-kinds.d.ts +3 -2
  32. package/dist/types/models.d.ts +80 -2
  33. package/package.json +1 -1
@@ -1,4 +1,5 @@
1
1
  import { z } from 'zod';
2
+ import { type Composition } from '../composition/composition.js';
2
3
  import { type InferProvider } from './capability-definition.js';
3
4
  /**
4
5
  * core-blocks — user-authored TypeScript, stored in the kernel and executed in
@@ -74,6 +75,192 @@ export declare const CoreBlockInputSchema: z.ZodObject<{
74
75
  integrationId: z.ZodOptional<z.ZodString>;
75
76
  }, z.core.$strip>;
76
77
  export type CoreBlockInput = z.infer<typeof CoreBlockInputSchema>;
78
+ /**
79
+ * What a block IS (D659). Absent means `code` — every row stored before this
80
+ * union keeps working unchanged.
81
+ * - `code`: the TypeScript in `code`, compiled and run in its own runner;
82
+ * - `recipe`: RESERVED (automations), stored shape only; refused at run by name;
83
+ * - `composition`: declarative, run by the shared `composer`; `code` is `''`.
84
+ */
85
+ export declare const CoreBlockSourceSchema: z.ZodDiscriminatedUnion<[z.ZodObject<{
86
+ kind: z.ZodLiteral<"code">;
87
+ }, z.core.$strip>, z.ZodObject<{
88
+ kind: z.ZodLiteral<"recipe">;
89
+ recipe: z.ZodObject<{
90
+ triggers: z.ZodArray<z.ZodDiscriminatedUnion<[z.ZodObject<{
91
+ kind: z.ZodLiteral<"device-state">;
92
+ deviceId: z.ZodNumber;
93
+ cap: z.ZodString;
94
+ fieldPath: z.ZodString;
95
+ becomes: z.ZodOptional<z.ZodUnion<readonly [z.ZodString, z.ZodNumber, z.ZodBoolean]>>;
96
+ edge: z.ZodOptional<z.ZodBoolean>;
97
+ forMs: z.ZodOptional<z.ZodNumber>;
98
+ debounceMs: z.ZodOptional<z.ZodNumber>;
99
+ }, z.core.$strip>, z.ZodObject<{
100
+ kind: z.ZodLiteral<"device-event">;
101
+ category: z.ZodString;
102
+ deviceId: z.ZodOptional<z.ZodNumber>;
103
+ }, z.core.$strip>, z.ZodObject<{
104
+ kind: z.ZodLiteral<"schedule">;
105
+ cron: z.ZodString;
106
+ }, z.core.$strip>, z.ZodObject<{
107
+ kind: z.ZodLiteral<"manual">;
108
+ }, z.core.$strip>], "kind">>;
109
+ conditions: z.ZodOptional<z.ZodType<import("../index.js").AutomationCondition, unknown, z.core.$ZodTypeInternals<import("../index.js").AutomationCondition, unknown>>>;
110
+ actions: z.ZodArray<z.ZodDiscriminatedUnion<[z.ZodObject<{
111
+ kind: z.ZodLiteral<"wait">;
112
+ seconds: z.ZodNumber;
113
+ }, z.core.$strip>, z.ZodObject<{
114
+ kind: z.ZodLiteral<"cap">;
115
+ deviceId: z.ZodUnion<readonly [z.ZodNumber, z.ZodObject<{
116
+ $var: z.ZodString;
117
+ }, z.core.$strip>]>;
118
+ cap: z.ZodString;
119
+ method: z.ZodString;
120
+ args: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
121
+ }, z.core.$strip>, z.ZodObject<{
122
+ kind: z.ZodLiteral<"code">;
123
+ code: z.ZodString;
124
+ }, z.core.$strip>], "kind">>;
125
+ }, z.core.$strip>;
126
+ }, z.core.$strip>, z.ZodObject<{
127
+ kind: z.ZodLiteral<"composition">;
128
+ composition: z.ZodObject<{
129
+ target: z.ZodDiscriminatedUnion<[z.ZodObject<{
130
+ kind: z.ZodLiteral<"new">;
131
+ type: z.ZodEnum<typeof import("../index.js").DeviceType>;
132
+ role: z.ZodOptional<z.ZodEnum<typeof import("../index.js").DeviceRole>>;
133
+ }, z.core.$strip>, z.ZodObject<{
134
+ kind: z.ZodLiteral<"existing">;
135
+ device: z.ZodObject<{
136
+ addonId: z.ZodString;
137
+ stableId: z.ZodString;
138
+ }, z.core.$strip>;
139
+ }, z.core.$strip>], "kind">;
140
+ features: z.ZodArray<z.ZodDiscriminatedUnion<[z.ZodObject<{
141
+ kind: z.ZodLiteral<"fields">;
142
+ cap: z.ZodString;
143
+ fields: z.ZodRecord<z.ZodString, z.ZodDiscriminatedUnion<[z.ZodObject<{
144
+ source: z.ZodObject<{
145
+ addonId: z.ZodString;
146
+ stableId: z.ZodString;
147
+ }, z.core.$strip>;
148
+ cap: z.ZodString;
149
+ fieldPath: z.ZodString;
150
+ kind: z.ZodLiteral<"from">;
151
+ }, z.core.$strip>, z.ZodObject<{
152
+ kind: z.ZodLiteral<"expression">;
153
+ expr: z.ZodString;
154
+ bindings: z.ZodRecord<z.ZodString, z.ZodDiscriminatedUnion<[z.ZodObject<{
155
+ source: z.ZodObject<{
156
+ addonId: z.ZodString;
157
+ stableId: z.ZodString;
158
+ }, z.core.$strip>;
159
+ cap: z.ZodString;
160
+ fieldPath: z.ZodString;
161
+ kind: z.ZodLiteral<"from">;
162
+ }, z.core.$strip>, z.ZodObject<{
163
+ kind: z.ZodLiteral<"literal">;
164
+ value: z.ZodUnion<readonly [z.ZodString, z.ZodNumber, z.ZodBoolean, z.ZodNull]>;
165
+ }, z.core.$strip>], "kind">>;
166
+ }, z.core.$strip>, z.ZodObject<{
167
+ kind: z.ZodLiteral<"code">;
168
+ code: z.ZodString;
169
+ }, z.core.$strip>], "kind">>;
170
+ commands: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodDiscriminatedUnion<[z.ZodObject<{
171
+ kind: z.ZodLiteral<"forward">;
172
+ source: z.ZodObject<{
173
+ addonId: z.ZodString;
174
+ stableId: z.ZodString;
175
+ }, z.core.$strip>;
176
+ cap: z.ZodString;
177
+ method: z.ZodString;
178
+ }, z.core.$strip>, z.ZodObject<{
179
+ kind: z.ZodLiteral<"code">;
180
+ code: z.ZodString;
181
+ }, z.core.$strip>], "kind">>>;
182
+ }, z.core.$strip>, z.ZodObject<{
183
+ kind: z.ZodLiteral<"passthrough">;
184
+ cap: z.ZodString;
185
+ source: z.ZodObject<{
186
+ addonId: z.ZodString;
187
+ stableId: z.ZodString;
188
+ }, z.core.$strip>;
189
+ }, z.core.$strip>], "kind">>;
190
+ }, z.core.$strip>;
191
+ }, z.core.$strip>], "kind">;
192
+ export type CoreBlockSource = z.infer<typeof CoreBlockSourceSchema>;
193
+ export type CoreBlockSourceKind = CoreBlockSource['kind'];
194
+ /** The client-authored half of a composition block. No `code`, no placement (hub-only; Phase 7). */
195
+ export declare const CompositionBlockInputSchema: z.ZodObject<{
196
+ name: z.ZodString;
197
+ enabled: z.ZodBoolean;
198
+ composition: z.ZodObject<{
199
+ target: z.ZodDiscriminatedUnion<[z.ZodObject<{
200
+ kind: z.ZodLiteral<"new">;
201
+ type: z.ZodEnum<typeof import("../index.js").DeviceType>;
202
+ role: z.ZodOptional<z.ZodEnum<typeof import("../index.js").DeviceRole>>;
203
+ }, z.core.$strip>, z.ZodObject<{
204
+ kind: z.ZodLiteral<"existing">;
205
+ device: z.ZodObject<{
206
+ addonId: z.ZodString;
207
+ stableId: z.ZodString;
208
+ }, z.core.$strip>;
209
+ }, z.core.$strip>], "kind">;
210
+ features: z.ZodArray<z.ZodDiscriminatedUnion<[z.ZodObject<{
211
+ kind: z.ZodLiteral<"fields">;
212
+ cap: z.ZodString;
213
+ fields: z.ZodRecord<z.ZodString, z.ZodDiscriminatedUnion<[z.ZodObject<{
214
+ source: z.ZodObject<{
215
+ addonId: z.ZodString;
216
+ stableId: z.ZodString;
217
+ }, z.core.$strip>;
218
+ cap: z.ZodString;
219
+ fieldPath: z.ZodString;
220
+ kind: z.ZodLiteral<"from">;
221
+ }, z.core.$strip>, z.ZodObject<{
222
+ kind: z.ZodLiteral<"expression">;
223
+ expr: z.ZodString;
224
+ bindings: z.ZodRecord<z.ZodString, z.ZodDiscriminatedUnion<[z.ZodObject<{
225
+ source: z.ZodObject<{
226
+ addonId: z.ZodString;
227
+ stableId: z.ZodString;
228
+ }, z.core.$strip>;
229
+ cap: z.ZodString;
230
+ fieldPath: z.ZodString;
231
+ kind: z.ZodLiteral<"from">;
232
+ }, z.core.$strip>, z.ZodObject<{
233
+ kind: z.ZodLiteral<"literal">;
234
+ value: z.ZodUnion<readonly [z.ZodString, z.ZodNumber, z.ZodBoolean, z.ZodNull]>;
235
+ }, z.core.$strip>], "kind">>;
236
+ }, z.core.$strip>, z.ZodObject<{
237
+ kind: z.ZodLiteral<"code">;
238
+ code: z.ZodString;
239
+ }, z.core.$strip>], "kind">>;
240
+ commands: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodDiscriminatedUnion<[z.ZodObject<{
241
+ kind: z.ZodLiteral<"forward">;
242
+ source: z.ZodObject<{
243
+ addonId: z.ZodString;
244
+ stableId: z.ZodString;
245
+ }, z.core.$strip>;
246
+ cap: z.ZodString;
247
+ method: z.ZodString;
248
+ }, z.core.$strip>, z.ZodObject<{
249
+ kind: z.ZodLiteral<"code">;
250
+ code: z.ZodString;
251
+ }, z.core.$strip>], "kind">>>;
252
+ }, z.core.$strip>, z.ZodObject<{
253
+ kind: z.ZodLiteral<"passthrough">;
254
+ cap: z.ZodString;
255
+ source: z.ZodObject<{
256
+ addonId: z.ZodString;
257
+ stableId: z.ZodString;
258
+ }, z.core.$strip>;
259
+ }, z.core.$strip>], "kind">>;
260
+ }, z.core.$strip>;
261
+ }, z.core.$strip>;
262
+ export type CompositionBlockInput = z.infer<typeof CompositionBlockInputSchema>;
263
+ export type CompositionBlockPatch = Partial<CompositionBlockInput>;
77
264
  /** A stored block. */
78
265
  export declare const CoreBlockSchema: z.ZodObject<{
79
266
  name: z.ZodString;
@@ -93,8 +280,631 @@ export declare const CoreBlockSchema: z.ZodObject<{
93
280
  }>;
94
281
  lastError: z.ZodOptional<z.ZodString>;
95
282
  lastChangedAt: z.ZodNumber;
283
+ source: z.ZodOptional<z.ZodDiscriminatedUnion<[z.ZodObject<{
284
+ kind: z.ZodLiteral<"code">;
285
+ }, z.core.$strip>, z.ZodObject<{
286
+ kind: z.ZodLiteral<"recipe">;
287
+ recipe: z.ZodObject<{
288
+ triggers: z.ZodArray<z.ZodDiscriminatedUnion<[z.ZodObject<{
289
+ kind: z.ZodLiteral<"device-state">;
290
+ deviceId: z.ZodNumber;
291
+ cap: z.ZodString;
292
+ fieldPath: z.ZodString;
293
+ becomes: z.ZodOptional<z.ZodUnion<readonly [z.ZodString, z.ZodNumber, z.ZodBoolean]>>;
294
+ edge: z.ZodOptional<z.ZodBoolean>;
295
+ forMs: z.ZodOptional<z.ZodNumber>;
296
+ debounceMs: z.ZodOptional<z.ZodNumber>;
297
+ }, z.core.$strip>, z.ZodObject<{
298
+ kind: z.ZodLiteral<"device-event">;
299
+ category: z.ZodString;
300
+ deviceId: z.ZodOptional<z.ZodNumber>;
301
+ }, z.core.$strip>, z.ZodObject<{
302
+ kind: z.ZodLiteral<"schedule">;
303
+ cron: z.ZodString;
304
+ }, z.core.$strip>, z.ZodObject<{
305
+ kind: z.ZodLiteral<"manual">;
306
+ }, z.core.$strip>], "kind">>;
307
+ conditions: z.ZodOptional<z.ZodType<import("../index.js").AutomationCondition, unknown, z.core.$ZodTypeInternals<import("../index.js").AutomationCondition, unknown>>>;
308
+ actions: z.ZodArray<z.ZodDiscriminatedUnion<[z.ZodObject<{
309
+ kind: z.ZodLiteral<"wait">;
310
+ seconds: z.ZodNumber;
311
+ }, z.core.$strip>, z.ZodObject<{
312
+ kind: z.ZodLiteral<"cap">;
313
+ deviceId: z.ZodUnion<readonly [z.ZodNumber, z.ZodObject<{
314
+ $var: z.ZodString;
315
+ }, z.core.$strip>]>;
316
+ cap: z.ZodString;
317
+ method: z.ZodString;
318
+ args: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
319
+ }, z.core.$strip>, z.ZodObject<{
320
+ kind: z.ZodLiteral<"code">;
321
+ code: z.ZodString;
322
+ }, z.core.$strip>], "kind">>;
323
+ }, z.core.$strip>;
324
+ }, z.core.$strip>, z.ZodObject<{
325
+ kind: z.ZodLiteral<"composition">;
326
+ composition: z.ZodObject<{
327
+ target: z.ZodDiscriminatedUnion<[z.ZodObject<{
328
+ kind: z.ZodLiteral<"new">;
329
+ type: z.ZodEnum<typeof import("../index.js").DeviceType>;
330
+ role: z.ZodOptional<z.ZodEnum<typeof import("../index.js").DeviceRole>>;
331
+ }, z.core.$strip>, z.ZodObject<{
332
+ kind: z.ZodLiteral<"existing">;
333
+ device: z.ZodObject<{
334
+ addonId: z.ZodString;
335
+ stableId: z.ZodString;
336
+ }, z.core.$strip>;
337
+ }, z.core.$strip>], "kind">;
338
+ features: z.ZodArray<z.ZodDiscriminatedUnion<[z.ZodObject<{
339
+ kind: z.ZodLiteral<"fields">;
340
+ cap: z.ZodString;
341
+ fields: z.ZodRecord<z.ZodString, z.ZodDiscriminatedUnion<[z.ZodObject<{
342
+ source: z.ZodObject<{
343
+ addonId: z.ZodString;
344
+ stableId: z.ZodString;
345
+ }, z.core.$strip>;
346
+ cap: z.ZodString;
347
+ fieldPath: z.ZodString;
348
+ kind: z.ZodLiteral<"from">;
349
+ }, z.core.$strip>, z.ZodObject<{
350
+ kind: z.ZodLiteral<"expression">;
351
+ expr: z.ZodString;
352
+ bindings: z.ZodRecord<z.ZodString, z.ZodDiscriminatedUnion<[z.ZodObject<{
353
+ source: z.ZodObject<{
354
+ addonId: z.ZodString;
355
+ stableId: z.ZodString;
356
+ }, z.core.$strip>;
357
+ cap: z.ZodString;
358
+ fieldPath: z.ZodString;
359
+ kind: z.ZodLiteral<"from">;
360
+ }, z.core.$strip>, z.ZodObject<{
361
+ kind: z.ZodLiteral<"literal">;
362
+ value: z.ZodUnion<readonly [z.ZodString, z.ZodNumber, z.ZodBoolean, z.ZodNull]>;
363
+ }, z.core.$strip>], "kind">>;
364
+ }, z.core.$strip>, z.ZodObject<{
365
+ kind: z.ZodLiteral<"code">;
366
+ code: z.ZodString;
367
+ }, z.core.$strip>], "kind">>;
368
+ commands: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodDiscriminatedUnion<[z.ZodObject<{
369
+ kind: z.ZodLiteral<"forward">;
370
+ source: z.ZodObject<{
371
+ addonId: z.ZodString;
372
+ stableId: z.ZodString;
373
+ }, z.core.$strip>;
374
+ cap: z.ZodString;
375
+ method: z.ZodString;
376
+ }, z.core.$strip>, z.ZodObject<{
377
+ kind: z.ZodLiteral<"code">;
378
+ code: z.ZodString;
379
+ }, z.core.$strip>], "kind">>>;
380
+ }, z.core.$strip>, z.ZodObject<{
381
+ kind: z.ZodLiteral<"passthrough">;
382
+ cap: z.ZodString;
383
+ source: z.ZodObject<{
384
+ addonId: z.ZodString;
385
+ stableId: z.ZodString;
386
+ }, z.core.$strip>;
387
+ }, z.core.$strip>], "kind">>;
388
+ }, z.core.$strip>;
389
+ }, z.core.$strip>], "kind">>;
96
390
  }, z.core.$strip>;
97
391
  export type CoreBlock = z.infer<typeof CoreBlockSchema>;
392
+ export declare function coreBlockSourceKind(block: Pick<CoreBlock, 'source'>): CoreBlockSourceKind;
393
+ export declare function coreBlockComposition(block: Pick<CoreBlock, 'source'>): Composition | null;
394
+ /** What the composer said, or that it could not be asked. Unknown never looks like absent (D315). */
395
+ export declare const CompositionStateReadSchema: z.ZodDiscriminatedUnion<[z.ZodObject<{
396
+ kind: z.ZodLiteral<"answered">;
397
+ state: z.ZodNullable<z.ZodObject<{
398
+ blockId: z.ZodString;
399
+ deviceId: z.ZodNullable<z.ZodNumber>;
400
+ status: z.ZodEnum<{
401
+ running: "running";
402
+ failed: "failed";
403
+ stopped: "stopped";
404
+ starting: "starting";
405
+ }>;
406
+ reason: z.ZodOptional<z.ZodString>;
407
+ fields: z.ZodArray<z.ZodObject<{
408
+ cap: z.ZodString;
409
+ path: z.ZodString;
410
+ state: z.ZodEnum<{
411
+ unavailable: "unavailable";
412
+ fresh: "fresh";
413
+ stale: "stale";
414
+ }>;
415
+ value: z.ZodUnion<readonly [z.ZodString, z.ZodNumber, z.ZodBoolean, z.ZodNull]>;
416
+ reason: z.ZodOptional<z.ZodString>;
417
+ }, z.core.$strip>>;
418
+ }, z.core.$strip>>;
419
+ }, z.core.$strip>, z.ZodObject<{
420
+ kind: z.ZodLiteral<"unreachable">;
421
+ error: z.ZodString;
422
+ }, z.core.$strip>], "kind">;
423
+ export type CompositionStateRead = z.infer<typeof CompositionStateReadSchema>;
424
+ /** A stored composition block and what the composer says about it. */
425
+ export declare const CompositionViewSchema: z.ZodObject<{
426
+ block: z.ZodObject<{
427
+ name: z.ZodString;
428
+ code: z.ZodString;
429
+ enabled: z.ZodBoolean;
430
+ placement: z.ZodUnion<readonly [z.ZodLiteral<"hub">, z.ZodString]>;
431
+ integrationId: z.ZodOptional<z.ZodString>;
432
+ id: z.ZodString;
433
+ createdAt: z.ZodNumber;
434
+ updatedAt: z.ZodNumber;
435
+ createdBy: z.ZodString;
436
+ status: z.ZodEnum<{
437
+ running: "running";
438
+ failed: "failed";
439
+ stopped: "stopped";
440
+ starting: "starting";
441
+ }>;
442
+ lastError: z.ZodOptional<z.ZodString>;
443
+ lastChangedAt: z.ZodNumber;
444
+ source: z.ZodOptional<z.ZodDiscriminatedUnion<[z.ZodObject<{
445
+ kind: z.ZodLiteral<"code">;
446
+ }, z.core.$strip>, z.ZodObject<{
447
+ kind: z.ZodLiteral<"recipe">;
448
+ recipe: z.ZodObject<{
449
+ triggers: z.ZodArray<z.ZodDiscriminatedUnion<[z.ZodObject<{
450
+ kind: z.ZodLiteral<"device-state">;
451
+ deviceId: z.ZodNumber;
452
+ cap: z.ZodString;
453
+ fieldPath: z.ZodString;
454
+ becomes: z.ZodOptional<z.ZodUnion<readonly [z.ZodString, z.ZodNumber, z.ZodBoolean]>>;
455
+ edge: z.ZodOptional<z.ZodBoolean>;
456
+ forMs: z.ZodOptional<z.ZodNumber>;
457
+ debounceMs: z.ZodOptional<z.ZodNumber>;
458
+ }, z.core.$strip>, z.ZodObject<{
459
+ kind: z.ZodLiteral<"device-event">;
460
+ category: z.ZodString;
461
+ deviceId: z.ZodOptional<z.ZodNumber>;
462
+ }, z.core.$strip>, z.ZodObject<{
463
+ kind: z.ZodLiteral<"schedule">;
464
+ cron: z.ZodString;
465
+ }, z.core.$strip>, z.ZodObject<{
466
+ kind: z.ZodLiteral<"manual">;
467
+ }, z.core.$strip>], "kind">>;
468
+ conditions: z.ZodOptional<z.ZodType<import("../index.js").AutomationCondition, unknown, z.core.$ZodTypeInternals<import("../index.js").AutomationCondition, unknown>>>;
469
+ actions: z.ZodArray<z.ZodDiscriminatedUnion<[z.ZodObject<{
470
+ kind: z.ZodLiteral<"wait">;
471
+ seconds: z.ZodNumber;
472
+ }, z.core.$strip>, z.ZodObject<{
473
+ kind: z.ZodLiteral<"cap">;
474
+ deviceId: z.ZodUnion<readonly [z.ZodNumber, z.ZodObject<{
475
+ $var: z.ZodString;
476
+ }, z.core.$strip>]>;
477
+ cap: z.ZodString;
478
+ method: z.ZodString;
479
+ args: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
480
+ }, z.core.$strip>, z.ZodObject<{
481
+ kind: z.ZodLiteral<"code">;
482
+ code: z.ZodString;
483
+ }, z.core.$strip>], "kind">>;
484
+ }, z.core.$strip>;
485
+ }, z.core.$strip>, z.ZodObject<{
486
+ kind: z.ZodLiteral<"composition">;
487
+ composition: z.ZodObject<{
488
+ target: z.ZodDiscriminatedUnion<[z.ZodObject<{
489
+ kind: z.ZodLiteral<"new">;
490
+ type: z.ZodEnum<typeof import("../index.js").DeviceType>;
491
+ role: z.ZodOptional<z.ZodEnum<typeof import("../index.js").DeviceRole>>;
492
+ }, z.core.$strip>, z.ZodObject<{
493
+ kind: z.ZodLiteral<"existing">;
494
+ device: z.ZodObject<{
495
+ addonId: z.ZodString;
496
+ stableId: z.ZodString;
497
+ }, z.core.$strip>;
498
+ }, z.core.$strip>], "kind">;
499
+ features: z.ZodArray<z.ZodDiscriminatedUnion<[z.ZodObject<{
500
+ kind: z.ZodLiteral<"fields">;
501
+ cap: z.ZodString;
502
+ fields: z.ZodRecord<z.ZodString, z.ZodDiscriminatedUnion<[z.ZodObject<{
503
+ source: z.ZodObject<{
504
+ addonId: z.ZodString;
505
+ stableId: z.ZodString;
506
+ }, z.core.$strip>;
507
+ cap: z.ZodString;
508
+ fieldPath: z.ZodString;
509
+ kind: z.ZodLiteral<"from">;
510
+ }, z.core.$strip>, z.ZodObject<{
511
+ kind: z.ZodLiteral<"expression">;
512
+ expr: z.ZodString;
513
+ bindings: z.ZodRecord<z.ZodString, z.ZodDiscriminatedUnion<[z.ZodObject<{
514
+ source: z.ZodObject<{
515
+ addonId: z.ZodString;
516
+ stableId: z.ZodString;
517
+ }, z.core.$strip>;
518
+ cap: z.ZodString;
519
+ fieldPath: z.ZodString;
520
+ kind: z.ZodLiteral<"from">;
521
+ }, z.core.$strip>, z.ZodObject<{
522
+ kind: z.ZodLiteral<"literal">;
523
+ value: z.ZodUnion<readonly [z.ZodString, z.ZodNumber, z.ZodBoolean, z.ZodNull]>;
524
+ }, z.core.$strip>], "kind">>;
525
+ }, z.core.$strip>, z.ZodObject<{
526
+ kind: z.ZodLiteral<"code">;
527
+ code: z.ZodString;
528
+ }, z.core.$strip>], "kind">>;
529
+ commands: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodDiscriminatedUnion<[z.ZodObject<{
530
+ kind: z.ZodLiteral<"forward">;
531
+ source: z.ZodObject<{
532
+ addonId: z.ZodString;
533
+ stableId: z.ZodString;
534
+ }, z.core.$strip>;
535
+ cap: z.ZodString;
536
+ method: z.ZodString;
537
+ }, z.core.$strip>, z.ZodObject<{
538
+ kind: z.ZodLiteral<"code">;
539
+ code: z.ZodString;
540
+ }, z.core.$strip>], "kind">>>;
541
+ }, z.core.$strip>, z.ZodObject<{
542
+ kind: z.ZodLiteral<"passthrough">;
543
+ cap: z.ZodString;
544
+ source: z.ZodObject<{
545
+ addonId: z.ZodString;
546
+ stableId: z.ZodString;
547
+ }, z.core.$strip>;
548
+ }, z.core.$strip>], "kind">>;
549
+ }, z.core.$strip>;
550
+ }, z.core.$strip>], "kind">>;
551
+ }, z.core.$strip>;
552
+ state: z.ZodDiscriminatedUnion<[z.ZodObject<{
553
+ kind: z.ZodLiteral<"answered">;
554
+ state: z.ZodNullable<z.ZodObject<{
555
+ blockId: z.ZodString;
556
+ deviceId: z.ZodNullable<z.ZodNumber>;
557
+ status: z.ZodEnum<{
558
+ running: "running";
559
+ failed: "failed";
560
+ stopped: "stopped";
561
+ starting: "starting";
562
+ }>;
563
+ reason: z.ZodOptional<z.ZodString>;
564
+ fields: z.ZodArray<z.ZodObject<{
565
+ cap: z.ZodString;
566
+ path: z.ZodString;
567
+ state: z.ZodEnum<{
568
+ unavailable: "unavailable";
569
+ fresh: "fresh";
570
+ stale: "stale";
571
+ }>;
572
+ value: z.ZodUnion<readonly [z.ZodString, z.ZodNumber, z.ZodBoolean, z.ZodNull]>;
573
+ reason: z.ZodOptional<z.ZodString>;
574
+ }, z.core.$strip>>;
575
+ }, z.core.$strip>>;
576
+ }, z.core.$strip>, z.ZodObject<{
577
+ kind: z.ZodLiteral<"unreachable">;
578
+ error: z.ZodString;
579
+ }, z.core.$strip>], "kind">;
580
+ }, z.core.$strip>;
581
+ export type CompositionView = z.infer<typeof CompositionViewSchema>;
582
+ export declare const CompositionListReadSchema: z.ZodDiscriminatedUnion<[z.ZodObject<{
583
+ state: z.ZodLiteral<"loaded">;
584
+ views: z.ZodArray<z.ZodObject<{
585
+ block: z.ZodObject<{
586
+ name: z.ZodString;
587
+ code: z.ZodString;
588
+ enabled: z.ZodBoolean;
589
+ placement: z.ZodUnion<readonly [z.ZodLiteral<"hub">, z.ZodString]>;
590
+ integrationId: z.ZodOptional<z.ZodString>;
591
+ id: z.ZodString;
592
+ createdAt: z.ZodNumber;
593
+ updatedAt: z.ZodNumber;
594
+ createdBy: z.ZodString;
595
+ status: z.ZodEnum<{
596
+ running: "running";
597
+ failed: "failed";
598
+ stopped: "stopped";
599
+ starting: "starting";
600
+ }>;
601
+ lastError: z.ZodOptional<z.ZodString>;
602
+ lastChangedAt: z.ZodNumber;
603
+ source: z.ZodOptional<z.ZodDiscriminatedUnion<[z.ZodObject<{
604
+ kind: z.ZodLiteral<"code">;
605
+ }, z.core.$strip>, z.ZodObject<{
606
+ kind: z.ZodLiteral<"recipe">;
607
+ recipe: z.ZodObject<{
608
+ triggers: z.ZodArray<z.ZodDiscriminatedUnion<[z.ZodObject<{
609
+ kind: z.ZodLiteral<"device-state">;
610
+ deviceId: z.ZodNumber;
611
+ cap: z.ZodString;
612
+ fieldPath: z.ZodString;
613
+ becomes: z.ZodOptional<z.ZodUnion<readonly [z.ZodString, z.ZodNumber, z.ZodBoolean]>>;
614
+ edge: z.ZodOptional<z.ZodBoolean>;
615
+ forMs: z.ZodOptional<z.ZodNumber>;
616
+ debounceMs: z.ZodOptional<z.ZodNumber>;
617
+ }, z.core.$strip>, z.ZodObject<{
618
+ kind: z.ZodLiteral<"device-event">;
619
+ category: z.ZodString;
620
+ deviceId: z.ZodOptional<z.ZodNumber>;
621
+ }, z.core.$strip>, z.ZodObject<{
622
+ kind: z.ZodLiteral<"schedule">;
623
+ cron: z.ZodString;
624
+ }, z.core.$strip>, z.ZodObject<{
625
+ kind: z.ZodLiteral<"manual">;
626
+ }, z.core.$strip>], "kind">>;
627
+ conditions: z.ZodOptional<z.ZodType<import("../index.js").AutomationCondition, unknown, z.core.$ZodTypeInternals<import("../index.js").AutomationCondition, unknown>>>;
628
+ actions: z.ZodArray<z.ZodDiscriminatedUnion<[z.ZodObject<{
629
+ kind: z.ZodLiteral<"wait">;
630
+ seconds: z.ZodNumber;
631
+ }, z.core.$strip>, z.ZodObject<{
632
+ kind: z.ZodLiteral<"cap">;
633
+ deviceId: z.ZodUnion<readonly [z.ZodNumber, z.ZodObject<{
634
+ $var: z.ZodString;
635
+ }, z.core.$strip>]>;
636
+ cap: z.ZodString;
637
+ method: z.ZodString;
638
+ args: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
639
+ }, z.core.$strip>, z.ZodObject<{
640
+ kind: z.ZodLiteral<"code">;
641
+ code: z.ZodString;
642
+ }, z.core.$strip>], "kind">>;
643
+ }, z.core.$strip>;
644
+ }, z.core.$strip>, z.ZodObject<{
645
+ kind: z.ZodLiteral<"composition">;
646
+ composition: z.ZodObject<{
647
+ target: z.ZodDiscriminatedUnion<[z.ZodObject<{
648
+ kind: z.ZodLiteral<"new">;
649
+ type: z.ZodEnum<typeof import("../index.js").DeviceType>;
650
+ role: z.ZodOptional<z.ZodEnum<typeof import("../index.js").DeviceRole>>;
651
+ }, z.core.$strip>, z.ZodObject<{
652
+ kind: z.ZodLiteral<"existing">;
653
+ device: z.ZodObject<{
654
+ addonId: z.ZodString;
655
+ stableId: z.ZodString;
656
+ }, z.core.$strip>;
657
+ }, z.core.$strip>], "kind">;
658
+ features: z.ZodArray<z.ZodDiscriminatedUnion<[z.ZodObject<{
659
+ kind: z.ZodLiteral<"fields">;
660
+ cap: z.ZodString;
661
+ fields: z.ZodRecord<z.ZodString, z.ZodDiscriminatedUnion<[z.ZodObject<{
662
+ source: z.ZodObject<{
663
+ addonId: z.ZodString;
664
+ stableId: z.ZodString;
665
+ }, z.core.$strip>;
666
+ cap: z.ZodString;
667
+ fieldPath: z.ZodString;
668
+ kind: z.ZodLiteral<"from">;
669
+ }, z.core.$strip>, z.ZodObject<{
670
+ kind: z.ZodLiteral<"expression">;
671
+ expr: z.ZodString;
672
+ bindings: z.ZodRecord<z.ZodString, z.ZodDiscriminatedUnion<[z.ZodObject<{
673
+ source: z.ZodObject<{
674
+ addonId: z.ZodString;
675
+ stableId: z.ZodString;
676
+ }, z.core.$strip>;
677
+ cap: z.ZodString;
678
+ fieldPath: z.ZodString;
679
+ kind: z.ZodLiteral<"from">;
680
+ }, z.core.$strip>, z.ZodObject<{
681
+ kind: z.ZodLiteral<"literal">;
682
+ value: z.ZodUnion<readonly [z.ZodString, z.ZodNumber, z.ZodBoolean, z.ZodNull]>;
683
+ }, z.core.$strip>], "kind">>;
684
+ }, z.core.$strip>, z.ZodObject<{
685
+ kind: z.ZodLiteral<"code">;
686
+ code: z.ZodString;
687
+ }, z.core.$strip>], "kind">>;
688
+ commands: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodDiscriminatedUnion<[z.ZodObject<{
689
+ kind: z.ZodLiteral<"forward">;
690
+ source: z.ZodObject<{
691
+ addonId: z.ZodString;
692
+ stableId: z.ZodString;
693
+ }, z.core.$strip>;
694
+ cap: z.ZodString;
695
+ method: z.ZodString;
696
+ }, z.core.$strip>, z.ZodObject<{
697
+ kind: z.ZodLiteral<"code">;
698
+ code: z.ZodString;
699
+ }, z.core.$strip>], "kind">>>;
700
+ }, z.core.$strip>, z.ZodObject<{
701
+ kind: z.ZodLiteral<"passthrough">;
702
+ cap: z.ZodString;
703
+ source: z.ZodObject<{
704
+ addonId: z.ZodString;
705
+ stableId: z.ZodString;
706
+ }, z.core.$strip>;
707
+ }, z.core.$strip>], "kind">>;
708
+ }, z.core.$strip>;
709
+ }, z.core.$strip>], "kind">>;
710
+ }, z.core.$strip>;
711
+ state: z.ZodDiscriminatedUnion<[z.ZodObject<{
712
+ kind: z.ZodLiteral<"answered">;
713
+ state: z.ZodNullable<z.ZodObject<{
714
+ blockId: z.ZodString;
715
+ deviceId: z.ZodNullable<z.ZodNumber>;
716
+ status: z.ZodEnum<{
717
+ running: "running";
718
+ failed: "failed";
719
+ stopped: "stopped";
720
+ starting: "starting";
721
+ }>;
722
+ reason: z.ZodOptional<z.ZodString>;
723
+ fields: z.ZodArray<z.ZodObject<{
724
+ cap: z.ZodString;
725
+ path: z.ZodString;
726
+ state: z.ZodEnum<{
727
+ unavailable: "unavailable";
728
+ fresh: "fresh";
729
+ stale: "stale";
730
+ }>;
731
+ value: z.ZodUnion<readonly [z.ZodString, z.ZodNumber, z.ZodBoolean, z.ZodNull]>;
732
+ reason: z.ZodOptional<z.ZodString>;
733
+ }, z.core.$strip>>;
734
+ }, z.core.$strip>>;
735
+ }, z.core.$strip>, z.ZodObject<{
736
+ kind: z.ZodLiteral<"unreachable">;
737
+ error: z.ZodString;
738
+ }, z.core.$strip>], "kind">;
739
+ }, z.core.$strip>>;
740
+ }, z.core.$strip>, z.ZodObject<{
741
+ state: z.ZodLiteral<"not-loaded">;
742
+ reason: z.ZodString;
743
+ }, z.core.$strip>], "state">;
744
+ export type CompositionListRead = z.infer<typeof CompositionListReadSchema>;
745
+ export declare const CompositionGetReadSchema: z.ZodDiscriminatedUnion<[z.ZodObject<{
746
+ state: z.ZodLiteral<"loaded">;
747
+ view: z.ZodNullable<z.ZodObject<{
748
+ block: z.ZodObject<{
749
+ name: z.ZodString;
750
+ code: z.ZodString;
751
+ enabled: z.ZodBoolean;
752
+ placement: z.ZodUnion<readonly [z.ZodLiteral<"hub">, z.ZodString]>;
753
+ integrationId: z.ZodOptional<z.ZodString>;
754
+ id: z.ZodString;
755
+ createdAt: z.ZodNumber;
756
+ updatedAt: z.ZodNumber;
757
+ createdBy: z.ZodString;
758
+ status: z.ZodEnum<{
759
+ running: "running";
760
+ failed: "failed";
761
+ stopped: "stopped";
762
+ starting: "starting";
763
+ }>;
764
+ lastError: z.ZodOptional<z.ZodString>;
765
+ lastChangedAt: z.ZodNumber;
766
+ source: z.ZodOptional<z.ZodDiscriminatedUnion<[z.ZodObject<{
767
+ kind: z.ZodLiteral<"code">;
768
+ }, z.core.$strip>, z.ZodObject<{
769
+ kind: z.ZodLiteral<"recipe">;
770
+ recipe: z.ZodObject<{
771
+ triggers: z.ZodArray<z.ZodDiscriminatedUnion<[z.ZodObject<{
772
+ kind: z.ZodLiteral<"device-state">;
773
+ deviceId: z.ZodNumber;
774
+ cap: z.ZodString;
775
+ fieldPath: z.ZodString;
776
+ becomes: z.ZodOptional<z.ZodUnion<readonly [z.ZodString, z.ZodNumber, z.ZodBoolean]>>;
777
+ edge: z.ZodOptional<z.ZodBoolean>;
778
+ forMs: z.ZodOptional<z.ZodNumber>;
779
+ debounceMs: z.ZodOptional<z.ZodNumber>;
780
+ }, z.core.$strip>, z.ZodObject<{
781
+ kind: z.ZodLiteral<"device-event">;
782
+ category: z.ZodString;
783
+ deviceId: z.ZodOptional<z.ZodNumber>;
784
+ }, z.core.$strip>, z.ZodObject<{
785
+ kind: z.ZodLiteral<"schedule">;
786
+ cron: z.ZodString;
787
+ }, z.core.$strip>, z.ZodObject<{
788
+ kind: z.ZodLiteral<"manual">;
789
+ }, z.core.$strip>], "kind">>;
790
+ conditions: z.ZodOptional<z.ZodType<import("../index.js").AutomationCondition, unknown, z.core.$ZodTypeInternals<import("../index.js").AutomationCondition, unknown>>>;
791
+ actions: z.ZodArray<z.ZodDiscriminatedUnion<[z.ZodObject<{
792
+ kind: z.ZodLiteral<"wait">;
793
+ seconds: z.ZodNumber;
794
+ }, z.core.$strip>, z.ZodObject<{
795
+ kind: z.ZodLiteral<"cap">;
796
+ deviceId: z.ZodUnion<readonly [z.ZodNumber, z.ZodObject<{
797
+ $var: z.ZodString;
798
+ }, z.core.$strip>]>;
799
+ cap: z.ZodString;
800
+ method: z.ZodString;
801
+ args: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
802
+ }, z.core.$strip>, z.ZodObject<{
803
+ kind: z.ZodLiteral<"code">;
804
+ code: z.ZodString;
805
+ }, z.core.$strip>], "kind">>;
806
+ }, z.core.$strip>;
807
+ }, z.core.$strip>, z.ZodObject<{
808
+ kind: z.ZodLiteral<"composition">;
809
+ composition: z.ZodObject<{
810
+ target: z.ZodDiscriminatedUnion<[z.ZodObject<{
811
+ kind: z.ZodLiteral<"new">;
812
+ type: z.ZodEnum<typeof import("../index.js").DeviceType>;
813
+ role: z.ZodOptional<z.ZodEnum<typeof import("../index.js").DeviceRole>>;
814
+ }, z.core.$strip>, z.ZodObject<{
815
+ kind: z.ZodLiteral<"existing">;
816
+ device: z.ZodObject<{
817
+ addonId: z.ZodString;
818
+ stableId: z.ZodString;
819
+ }, z.core.$strip>;
820
+ }, z.core.$strip>], "kind">;
821
+ features: z.ZodArray<z.ZodDiscriminatedUnion<[z.ZodObject<{
822
+ kind: z.ZodLiteral<"fields">;
823
+ cap: z.ZodString;
824
+ fields: z.ZodRecord<z.ZodString, z.ZodDiscriminatedUnion<[z.ZodObject<{
825
+ source: z.ZodObject<{
826
+ addonId: z.ZodString;
827
+ stableId: z.ZodString;
828
+ }, z.core.$strip>;
829
+ cap: z.ZodString;
830
+ fieldPath: z.ZodString;
831
+ kind: z.ZodLiteral<"from">;
832
+ }, z.core.$strip>, z.ZodObject<{
833
+ kind: z.ZodLiteral<"expression">;
834
+ expr: z.ZodString;
835
+ bindings: z.ZodRecord<z.ZodString, z.ZodDiscriminatedUnion<[z.ZodObject<{
836
+ source: z.ZodObject<{
837
+ addonId: z.ZodString;
838
+ stableId: z.ZodString;
839
+ }, z.core.$strip>;
840
+ cap: z.ZodString;
841
+ fieldPath: z.ZodString;
842
+ kind: z.ZodLiteral<"from">;
843
+ }, z.core.$strip>, z.ZodObject<{
844
+ kind: z.ZodLiteral<"literal">;
845
+ value: z.ZodUnion<readonly [z.ZodString, z.ZodNumber, z.ZodBoolean, z.ZodNull]>;
846
+ }, z.core.$strip>], "kind">>;
847
+ }, z.core.$strip>, z.ZodObject<{
848
+ kind: z.ZodLiteral<"code">;
849
+ code: z.ZodString;
850
+ }, z.core.$strip>], "kind">>;
851
+ commands: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodDiscriminatedUnion<[z.ZodObject<{
852
+ kind: z.ZodLiteral<"forward">;
853
+ source: z.ZodObject<{
854
+ addonId: z.ZodString;
855
+ stableId: z.ZodString;
856
+ }, z.core.$strip>;
857
+ cap: z.ZodString;
858
+ method: z.ZodString;
859
+ }, z.core.$strip>, z.ZodObject<{
860
+ kind: z.ZodLiteral<"code">;
861
+ code: z.ZodString;
862
+ }, z.core.$strip>], "kind">>>;
863
+ }, z.core.$strip>, z.ZodObject<{
864
+ kind: z.ZodLiteral<"passthrough">;
865
+ cap: z.ZodString;
866
+ source: z.ZodObject<{
867
+ addonId: z.ZodString;
868
+ stableId: z.ZodString;
869
+ }, z.core.$strip>;
870
+ }, z.core.$strip>], "kind">>;
871
+ }, z.core.$strip>;
872
+ }, z.core.$strip>], "kind">>;
873
+ }, z.core.$strip>;
874
+ state: z.ZodDiscriminatedUnion<[z.ZodObject<{
875
+ kind: z.ZodLiteral<"answered">;
876
+ state: z.ZodNullable<z.ZodObject<{
877
+ blockId: z.ZodString;
878
+ deviceId: z.ZodNullable<z.ZodNumber>;
879
+ status: z.ZodEnum<{
880
+ running: "running";
881
+ failed: "failed";
882
+ stopped: "stopped";
883
+ starting: "starting";
884
+ }>;
885
+ reason: z.ZodOptional<z.ZodString>;
886
+ fields: z.ZodArray<z.ZodObject<{
887
+ cap: z.ZodString;
888
+ path: z.ZodString;
889
+ state: z.ZodEnum<{
890
+ unavailable: "unavailable";
891
+ fresh: "fresh";
892
+ stale: "stale";
893
+ }>;
894
+ value: z.ZodUnion<readonly [z.ZodString, z.ZodNumber, z.ZodBoolean, z.ZodNull]>;
895
+ reason: z.ZodOptional<z.ZodString>;
896
+ }, z.core.$strip>>;
897
+ }, z.core.$strip>>;
898
+ }, z.core.$strip>, z.ZodObject<{
899
+ kind: z.ZodLiteral<"unreachable">;
900
+ error: z.ZodString;
901
+ }, z.core.$strip>], "kind">;
902
+ }, z.core.$strip>>;
903
+ }, z.core.$strip>, z.ZodObject<{
904
+ state: z.ZodLiteral<"not-loaded">;
905
+ reason: z.ZodString;
906
+ }, z.core.$strip>], "state">;
907
+ export type CompositionGetRead = z.infer<typeof CompositionGetReadSchema>;
98
908
  /** What a compile attempt produced. */
99
909
  export declare const CoreBlockCompileResultSchema: z.ZodObject<{
100
910
  ok: z.ZodBoolean;
@@ -127,6 +937,113 @@ export declare const coreBlocksCapability: {
127
937
  }>;
128
938
  lastError: z.ZodOptional<z.ZodString>;
129
939
  lastChangedAt: z.ZodNumber;
940
+ source: z.ZodOptional<z.ZodDiscriminatedUnion<[z.ZodObject<{
941
+ kind: z.ZodLiteral<"code">;
942
+ }, z.core.$strip>, z.ZodObject<{
943
+ kind: z.ZodLiteral<"recipe">;
944
+ recipe: z.ZodObject<{
945
+ triggers: z.ZodArray<z.ZodDiscriminatedUnion<[z.ZodObject<{
946
+ kind: z.ZodLiteral<"device-state">;
947
+ deviceId: z.ZodNumber;
948
+ cap: z.ZodString;
949
+ fieldPath: z.ZodString;
950
+ becomes: z.ZodOptional<z.ZodUnion<readonly [z.ZodString, z.ZodNumber, z.ZodBoolean]>>;
951
+ edge: z.ZodOptional<z.ZodBoolean>;
952
+ forMs: z.ZodOptional<z.ZodNumber>;
953
+ debounceMs: z.ZodOptional<z.ZodNumber>;
954
+ }, z.core.$strip>, z.ZodObject<{
955
+ kind: z.ZodLiteral<"device-event">;
956
+ category: z.ZodString;
957
+ deviceId: z.ZodOptional<z.ZodNumber>;
958
+ }, z.core.$strip>, z.ZodObject<{
959
+ kind: z.ZodLiteral<"schedule">;
960
+ cron: z.ZodString;
961
+ }, z.core.$strip>, z.ZodObject<{
962
+ kind: z.ZodLiteral<"manual">;
963
+ }, z.core.$strip>], "kind">>;
964
+ conditions: z.ZodOptional<z.ZodType<import("../index.js").AutomationCondition, unknown, z.core.$ZodTypeInternals<import("../index.js").AutomationCondition, unknown>>>;
965
+ actions: z.ZodArray<z.ZodDiscriminatedUnion<[z.ZodObject<{
966
+ kind: z.ZodLiteral<"wait">;
967
+ seconds: z.ZodNumber;
968
+ }, z.core.$strip>, z.ZodObject<{
969
+ kind: z.ZodLiteral<"cap">;
970
+ deviceId: z.ZodUnion<readonly [z.ZodNumber, z.ZodObject<{
971
+ $var: z.ZodString;
972
+ }, z.core.$strip>]>;
973
+ cap: z.ZodString;
974
+ method: z.ZodString;
975
+ args: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
976
+ }, z.core.$strip>, z.ZodObject<{
977
+ kind: z.ZodLiteral<"code">;
978
+ code: z.ZodString;
979
+ }, z.core.$strip>], "kind">>;
980
+ }, z.core.$strip>;
981
+ }, z.core.$strip>, z.ZodObject<{
982
+ kind: z.ZodLiteral<"composition">;
983
+ composition: z.ZodObject<{
984
+ target: z.ZodDiscriminatedUnion<[z.ZodObject<{
985
+ kind: z.ZodLiteral<"new">;
986
+ type: z.ZodEnum<typeof import("../index.js").DeviceType>;
987
+ role: z.ZodOptional<z.ZodEnum<typeof import("../index.js").DeviceRole>>;
988
+ }, z.core.$strip>, z.ZodObject<{
989
+ kind: z.ZodLiteral<"existing">;
990
+ device: z.ZodObject<{
991
+ addonId: z.ZodString;
992
+ stableId: z.ZodString;
993
+ }, z.core.$strip>;
994
+ }, z.core.$strip>], "kind">;
995
+ features: z.ZodArray<z.ZodDiscriminatedUnion<[z.ZodObject<{
996
+ kind: z.ZodLiteral<"fields">;
997
+ cap: z.ZodString;
998
+ fields: z.ZodRecord<z.ZodString, z.ZodDiscriminatedUnion<[z.ZodObject<{
999
+ source: z.ZodObject<{
1000
+ addonId: z.ZodString;
1001
+ stableId: z.ZodString;
1002
+ }, z.core.$strip>;
1003
+ cap: z.ZodString;
1004
+ fieldPath: z.ZodString;
1005
+ kind: z.ZodLiteral<"from">;
1006
+ }, z.core.$strip>, z.ZodObject<{
1007
+ kind: z.ZodLiteral<"expression">;
1008
+ expr: z.ZodString;
1009
+ bindings: z.ZodRecord<z.ZodString, z.ZodDiscriminatedUnion<[z.ZodObject<{
1010
+ source: z.ZodObject<{
1011
+ addonId: z.ZodString;
1012
+ stableId: z.ZodString;
1013
+ }, z.core.$strip>;
1014
+ cap: z.ZodString;
1015
+ fieldPath: z.ZodString;
1016
+ kind: z.ZodLiteral<"from">;
1017
+ }, z.core.$strip>, z.ZodObject<{
1018
+ kind: z.ZodLiteral<"literal">;
1019
+ value: z.ZodUnion<readonly [z.ZodString, z.ZodNumber, z.ZodBoolean, z.ZodNull]>;
1020
+ }, z.core.$strip>], "kind">>;
1021
+ }, z.core.$strip>, z.ZodObject<{
1022
+ kind: z.ZodLiteral<"code">;
1023
+ code: z.ZodString;
1024
+ }, z.core.$strip>], "kind">>;
1025
+ commands: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodDiscriminatedUnion<[z.ZodObject<{
1026
+ kind: z.ZodLiteral<"forward">;
1027
+ source: z.ZodObject<{
1028
+ addonId: z.ZodString;
1029
+ stableId: z.ZodString;
1030
+ }, z.core.$strip>;
1031
+ cap: z.ZodString;
1032
+ method: z.ZodString;
1033
+ }, z.core.$strip>, z.ZodObject<{
1034
+ kind: z.ZodLiteral<"code">;
1035
+ code: z.ZodString;
1036
+ }, z.core.$strip>], "kind">>>;
1037
+ }, z.core.$strip>, z.ZodObject<{
1038
+ kind: z.ZodLiteral<"passthrough">;
1039
+ cap: z.ZodString;
1040
+ source: z.ZodObject<{
1041
+ addonId: z.ZodString;
1042
+ stableId: z.ZodString;
1043
+ }, z.core.$strip>;
1044
+ }, z.core.$strip>], "kind">>;
1045
+ }, z.core.$strip>;
1046
+ }, z.core.$strip>], "kind">>;
130
1047
  }, z.core.$strip>>;
131
1048
  }, z.core.$strip>, import("./capability-definition.js").CapabilityMethodKind>;
132
1049
  readonly get: import("./capability-definition.js").CapabilityMethodSchema<z.ZodObject<{
@@ -150,6 +1067,113 @@ export declare const coreBlocksCapability: {
150
1067
  }>;
151
1068
  lastError: z.ZodOptional<z.ZodString>;
152
1069
  lastChangedAt: z.ZodNumber;
1070
+ source: z.ZodOptional<z.ZodDiscriminatedUnion<[z.ZodObject<{
1071
+ kind: z.ZodLiteral<"code">;
1072
+ }, z.core.$strip>, z.ZodObject<{
1073
+ kind: z.ZodLiteral<"recipe">;
1074
+ recipe: z.ZodObject<{
1075
+ triggers: z.ZodArray<z.ZodDiscriminatedUnion<[z.ZodObject<{
1076
+ kind: z.ZodLiteral<"device-state">;
1077
+ deviceId: z.ZodNumber;
1078
+ cap: z.ZodString;
1079
+ fieldPath: z.ZodString;
1080
+ becomes: z.ZodOptional<z.ZodUnion<readonly [z.ZodString, z.ZodNumber, z.ZodBoolean]>>;
1081
+ edge: z.ZodOptional<z.ZodBoolean>;
1082
+ forMs: z.ZodOptional<z.ZodNumber>;
1083
+ debounceMs: z.ZodOptional<z.ZodNumber>;
1084
+ }, z.core.$strip>, z.ZodObject<{
1085
+ kind: z.ZodLiteral<"device-event">;
1086
+ category: z.ZodString;
1087
+ deviceId: z.ZodOptional<z.ZodNumber>;
1088
+ }, z.core.$strip>, z.ZodObject<{
1089
+ kind: z.ZodLiteral<"schedule">;
1090
+ cron: z.ZodString;
1091
+ }, z.core.$strip>, z.ZodObject<{
1092
+ kind: z.ZodLiteral<"manual">;
1093
+ }, z.core.$strip>], "kind">>;
1094
+ conditions: z.ZodOptional<z.ZodType<import("../index.js").AutomationCondition, unknown, z.core.$ZodTypeInternals<import("../index.js").AutomationCondition, unknown>>>;
1095
+ actions: z.ZodArray<z.ZodDiscriminatedUnion<[z.ZodObject<{
1096
+ kind: z.ZodLiteral<"wait">;
1097
+ seconds: z.ZodNumber;
1098
+ }, z.core.$strip>, z.ZodObject<{
1099
+ kind: z.ZodLiteral<"cap">;
1100
+ deviceId: z.ZodUnion<readonly [z.ZodNumber, z.ZodObject<{
1101
+ $var: z.ZodString;
1102
+ }, z.core.$strip>]>;
1103
+ cap: z.ZodString;
1104
+ method: z.ZodString;
1105
+ args: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
1106
+ }, z.core.$strip>, z.ZodObject<{
1107
+ kind: z.ZodLiteral<"code">;
1108
+ code: z.ZodString;
1109
+ }, z.core.$strip>], "kind">>;
1110
+ }, z.core.$strip>;
1111
+ }, z.core.$strip>, z.ZodObject<{
1112
+ kind: z.ZodLiteral<"composition">;
1113
+ composition: z.ZodObject<{
1114
+ target: z.ZodDiscriminatedUnion<[z.ZodObject<{
1115
+ kind: z.ZodLiteral<"new">;
1116
+ type: z.ZodEnum<typeof import("../index.js").DeviceType>;
1117
+ role: z.ZodOptional<z.ZodEnum<typeof import("../index.js").DeviceRole>>;
1118
+ }, z.core.$strip>, z.ZodObject<{
1119
+ kind: z.ZodLiteral<"existing">;
1120
+ device: z.ZodObject<{
1121
+ addonId: z.ZodString;
1122
+ stableId: z.ZodString;
1123
+ }, z.core.$strip>;
1124
+ }, z.core.$strip>], "kind">;
1125
+ features: z.ZodArray<z.ZodDiscriminatedUnion<[z.ZodObject<{
1126
+ kind: z.ZodLiteral<"fields">;
1127
+ cap: z.ZodString;
1128
+ fields: z.ZodRecord<z.ZodString, z.ZodDiscriminatedUnion<[z.ZodObject<{
1129
+ source: z.ZodObject<{
1130
+ addonId: z.ZodString;
1131
+ stableId: z.ZodString;
1132
+ }, z.core.$strip>;
1133
+ cap: z.ZodString;
1134
+ fieldPath: z.ZodString;
1135
+ kind: z.ZodLiteral<"from">;
1136
+ }, z.core.$strip>, z.ZodObject<{
1137
+ kind: z.ZodLiteral<"expression">;
1138
+ expr: z.ZodString;
1139
+ bindings: z.ZodRecord<z.ZodString, z.ZodDiscriminatedUnion<[z.ZodObject<{
1140
+ source: z.ZodObject<{
1141
+ addonId: z.ZodString;
1142
+ stableId: z.ZodString;
1143
+ }, z.core.$strip>;
1144
+ cap: z.ZodString;
1145
+ fieldPath: z.ZodString;
1146
+ kind: z.ZodLiteral<"from">;
1147
+ }, z.core.$strip>, z.ZodObject<{
1148
+ kind: z.ZodLiteral<"literal">;
1149
+ value: z.ZodUnion<readonly [z.ZodString, z.ZodNumber, z.ZodBoolean, z.ZodNull]>;
1150
+ }, z.core.$strip>], "kind">>;
1151
+ }, z.core.$strip>, z.ZodObject<{
1152
+ kind: z.ZodLiteral<"code">;
1153
+ code: z.ZodString;
1154
+ }, z.core.$strip>], "kind">>;
1155
+ commands: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodDiscriminatedUnion<[z.ZodObject<{
1156
+ kind: z.ZodLiteral<"forward">;
1157
+ source: z.ZodObject<{
1158
+ addonId: z.ZodString;
1159
+ stableId: z.ZodString;
1160
+ }, z.core.$strip>;
1161
+ cap: z.ZodString;
1162
+ method: z.ZodString;
1163
+ }, z.core.$strip>, z.ZodObject<{
1164
+ kind: z.ZodLiteral<"code">;
1165
+ code: z.ZodString;
1166
+ }, z.core.$strip>], "kind">>>;
1167
+ }, z.core.$strip>, z.ZodObject<{
1168
+ kind: z.ZodLiteral<"passthrough">;
1169
+ cap: z.ZodString;
1170
+ source: z.ZodObject<{
1171
+ addonId: z.ZodString;
1172
+ stableId: z.ZodString;
1173
+ }, z.core.$strip>;
1174
+ }, z.core.$strip>], "kind">>;
1175
+ }, z.core.$strip>;
1176
+ }, z.core.$strip>], "kind">>;
153
1177
  }, z.core.$strip>>;
154
1178
  }, z.core.$strip>, import("./capability-definition.js").CapabilityMethodKind>;
155
1179
  /**
@@ -184,6 +1208,113 @@ export declare const coreBlocksCapability: {
184
1208
  }>;
185
1209
  lastError: z.ZodOptional<z.ZodString>;
186
1210
  lastChangedAt: z.ZodNumber;
1211
+ source: z.ZodOptional<z.ZodDiscriminatedUnion<[z.ZodObject<{
1212
+ kind: z.ZodLiteral<"code">;
1213
+ }, z.core.$strip>, z.ZodObject<{
1214
+ kind: z.ZodLiteral<"recipe">;
1215
+ recipe: z.ZodObject<{
1216
+ triggers: z.ZodArray<z.ZodDiscriminatedUnion<[z.ZodObject<{
1217
+ kind: z.ZodLiteral<"device-state">;
1218
+ deviceId: z.ZodNumber;
1219
+ cap: z.ZodString;
1220
+ fieldPath: z.ZodString;
1221
+ becomes: z.ZodOptional<z.ZodUnion<readonly [z.ZodString, z.ZodNumber, z.ZodBoolean]>>;
1222
+ edge: z.ZodOptional<z.ZodBoolean>;
1223
+ forMs: z.ZodOptional<z.ZodNumber>;
1224
+ debounceMs: z.ZodOptional<z.ZodNumber>;
1225
+ }, z.core.$strip>, z.ZodObject<{
1226
+ kind: z.ZodLiteral<"device-event">;
1227
+ category: z.ZodString;
1228
+ deviceId: z.ZodOptional<z.ZodNumber>;
1229
+ }, z.core.$strip>, z.ZodObject<{
1230
+ kind: z.ZodLiteral<"schedule">;
1231
+ cron: z.ZodString;
1232
+ }, z.core.$strip>, z.ZodObject<{
1233
+ kind: z.ZodLiteral<"manual">;
1234
+ }, z.core.$strip>], "kind">>;
1235
+ conditions: z.ZodOptional<z.ZodType<import("../index.js").AutomationCondition, unknown, z.core.$ZodTypeInternals<import("../index.js").AutomationCondition, unknown>>>;
1236
+ actions: z.ZodArray<z.ZodDiscriminatedUnion<[z.ZodObject<{
1237
+ kind: z.ZodLiteral<"wait">;
1238
+ seconds: z.ZodNumber;
1239
+ }, z.core.$strip>, z.ZodObject<{
1240
+ kind: z.ZodLiteral<"cap">;
1241
+ deviceId: z.ZodUnion<readonly [z.ZodNumber, z.ZodObject<{
1242
+ $var: z.ZodString;
1243
+ }, z.core.$strip>]>;
1244
+ cap: z.ZodString;
1245
+ method: z.ZodString;
1246
+ args: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
1247
+ }, z.core.$strip>, z.ZodObject<{
1248
+ kind: z.ZodLiteral<"code">;
1249
+ code: z.ZodString;
1250
+ }, z.core.$strip>], "kind">>;
1251
+ }, z.core.$strip>;
1252
+ }, z.core.$strip>, z.ZodObject<{
1253
+ kind: z.ZodLiteral<"composition">;
1254
+ composition: z.ZodObject<{
1255
+ target: z.ZodDiscriminatedUnion<[z.ZodObject<{
1256
+ kind: z.ZodLiteral<"new">;
1257
+ type: z.ZodEnum<typeof import("../index.js").DeviceType>;
1258
+ role: z.ZodOptional<z.ZodEnum<typeof import("../index.js").DeviceRole>>;
1259
+ }, z.core.$strip>, z.ZodObject<{
1260
+ kind: z.ZodLiteral<"existing">;
1261
+ device: z.ZodObject<{
1262
+ addonId: z.ZodString;
1263
+ stableId: z.ZodString;
1264
+ }, z.core.$strip>;
1265
+ }, z.core.$strip>], "kind">;
1266
+ features: z.ZodArray<z.ZodDiscriminatedUnion<[z.ZodObject<{
1267
+ kind: z.ZodLiteral<"fields">;
1268
+ cap: z.ZodString;
1269
+ fields: z.ZodRecord<z.ZodString, z.ZodDiscriminatedUnion<[z.ZodObject<{
1270
+ source: z.ZodObject<{
1271
+ addonId: z.ZodString;
1272
+ stableId: z.ZodString;
1273
+ }, z.core.$strip>;
1274
+ cap: z.ZodString;
1275
+ fieldPath: z.ZodString;
1276
+ kind: z.ZodLiteral<"from">;
1277
+ }, z.core.$strip>, z.ZodObject<{
1278
+ kind: z.ZodLiteral<"expression">;
1279
+ expr: z.ZodString;
1280
+ bindings: z.ZodRecord<z.ZodString, z.ZodDiscriminatedUnion<[z.ZodObject<{
1281
+ source: z.ZodObject<{
1282
+ addonId: z.ZodString;
1283
+ stableId: z.ZodString;
1284
+ }, z.core.$strip>;
1285
+ cap: z.ZodString;
1286
+ fieldPath: z.ZodString;
1287
+ kind: z.ZodLiteral<"from">;
1288
+ }, z.core.$strip>, z.ZodObject<{
1289
+ kind: z.ZodLiteral<"literal">;
1290
+ value: z.ZodUnion<readonly [z.ZodString, z.ZodNumber, z.ZodBoolean, z.ZodNull]>;
1291
+ }, z.core.$strip>], "kind">>;
1292
+ }, z.core.$strip>, z.ZodObject<{
1293
+ kind: z.ZodLiteral<"code">;
1294
+ code: z.ZodString;
1295
+ }, z.core.$strip>], "kind">>;
1296
+ commands: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodDiscriminatedUnion<[z.ZodObject<{
1297
+ kind: z.ZodLiteral<"forward">;
1298
+ source: z.ZodObject<{
1299
+ addonId: z.ZodString;
1300
+ stableId: z.ZodString;
1301
+ }, z.core.$strip>;
1302
+ cap: z.ZodString;
1303
+ method: z.ZodString;
1304
+ }, z.core.$strip>, z.ZodObject<{
1305
+ kind: z.ZodLiteral<"code">;
1306
+ code: z.ZodString;
1307
+ }, z.core.$strip>], "kind">>>;
1308
+ }, z.core.$strip>, z.ZodObject<{
1309
+ kind: z.ZodLiteral<"passthrough">;
1310
+ cap: z.ZodString;
1311
+ source: z.ZodObject<{
1312
+ addonId: z.ZodString;
1313
+ stableId: z.ZodString;
1314
+ }, z.core.$strip>;
1315
+ }, z.core.$strip>], "kind">>;
1316
+ }, z.core.$strip>;
1317
+ }, z.core.$strip>], "kind">>;
187
1318
  }, z.core.$strip>;
188
1319
  }, z.core.$strip>, "mutation"> & {
189
1320
  readonly caller: "required";
@@ -216,6 +1347,113 @@ export declare const coreBlocksCapability: {
216
1347
  }>;
217
1348
  lastError: z.ZodOptional<z.ZodString>;
218
1349
  lastChangedAt: z.ZodNumber;
1350
+ source: z.ZodOptional<z.ZodDiscriminatedUnion<[z.ZodObject<{
1351
+ kind: z.ZodLiteral<"code">;
1352
+ }, z.core.$strip>, z.ZodObject<{
1353
+ kind: z.ZodLiteral<"recipe">;
1354
+ recipe: z.ZodObject<{
1355
+ triggers: z.ZodArray<z.ZodDiscriminatedUnion<[z.ZodObject<{
1356
+ kind: z.ZodLiteral<"device-state">;
1357
+ deviceId: z.ZodNumber;
1358
+ cap: z.ZodString;
1359
+ fieldPath: z.ZodString;
1360
+ becomes: z.ZodOptional<z.ZodUnion<readonly [z.ZodString, z.ZodNumber, z.ZodBoolean]>>;
1361
+ edge: z.ZodOptional<z.ZodBoolean>;
1362
+ forMs: z.ZodOptional<z.ZodNumber>;
1363
+ debounceMs: z.ZodOptional<z.ZodNumber>;
1364
+ }, z.core.$strip>, z.ZodObject<{
1365
+ kind: z.ZodLiteral<"device-event">;
1366
+ category: z.ZodString;
1367
+ deviceId: z.ZodOptional<z.ZodNumber>;
1368
+ }, z.core.$strip>, z.ZodObject<{
1369
+ kind: z.ZodLiteral<"schedule">;
1370
+ cron: z.ZodString;
1371
+ }, z.core.$strip>, z.ZodObject<{
1372
+ kind: z.ZodLiteral<"manual">;
1373
+ }, z.core.$strip>], "kind">>;
1374
+ conditions: z.ZodOptional<z.ZodType<import("../index.js").AutomationCondition, unknown, z.core.$ZodTypeInternals<import("../index.js").AutomationCondition, unknown>>>;
1375
+ actions: z.ZodArray<z.ZodDiscriminatedUnion<[z.ZodObject<{
1376
+ kind: z.ZodLiteral<"wait">;
1377
+ seconds: z.ZodNumber;
1378
+ }, z.core.$strip>, z.ZodObject<{
1379
+ kind: z.ZodLiteral<"cap">;
1380
+ deviceId: z.ZodUnion<readonly [z.ZodNumber, z.ZodObject<{
1381
+ $var: z.ZodString;
1382
+ }, z.core.$strip>]>;
1383
+ cap: z.ZodString;
1384
+ method: z.ZodString;
1385
+ args: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
1386
+ }, z.core.$strip>, z.ZodObject<{
1387
+ kind: z.ZodLiteral<"code">;
1388
+ code: z.ZodString;
1389
+ }, z.core.$strip>], "kind">>;
1390
+ }, z.core.$strip>;
1391
+ }, z.core.$strip>, z.ZodObject<{
1392
+ kind: z.ZodLiteral<"composition">;
1393
+ composition: z.ZodObject<{
1394
+ target: z.ZodDiscriminatedUnion<[z.ZodObject<{
1395
+ kind: z.ZodLiteral<"new">;
1396
+ type: z.ZodEnum<typeof import("../index.js").DeviceType>;
1397
+ role: z.ZodOptional<z.ZodEnum<typeof import("../index.js").DeviceRole>>;
1398
+ }, z.core.$strip>, z.ZodObject<{
1399
+ kind: z.ZodLiteral<"existing">;
1400
+ device: z.ZodObject<{
1401
+ addonId: z.ZodString;
1402
+ stableId: z.ZodString;
1403
+ }, z.core.$strip>;
1404
+ }, z.core.$strip>], "kind">;
1405
+ features: z.ZodArray<z.ZodDiscriminatedUnion<[z.ZodObject<{
1406
+ kind: z.ZodLiteral<"fields">;
1407
+ cap: z.ZodString;
1408
+ fields: z.ZodRecord<z.ZodString, z.ZodDiscriminatedUnion<[z.ZodObject<{
1409
+ source: z.ZodObject<{
1410
+ addonId: z.ZodString;
1411
+ stableId: z.ZodString;
1412
+ }, z.core.$strip>;
1413
+ cap: z.ZodString;
1414
+ fieldPath: z.ZodString;
1415
+ kind: z.ZodLiteral<"from">;
1416
+ }, z.core.$strip>, z.ZodObject<{
1417
+ kind: z.ZodLiteral<"expression">;
1418
+ expr: z.ZodString;
1419
+ bindings: z.ZodRecord<z.ZodString, z.ZodDiscriminatedUnion<[z.ZodObject<{
1420
+ source: z.ZodObject<{
1421
+ addonId: z.ZodString;
1422
+ stableId: z.ZodString;
1423
+ }, z.core.$strip>;
1424
+ cap: z.ZodString;
1425
+ fieldPath: z.ZodString;
1426
+ kind: z.ZodLiteral<"from">;
1427
+ }, z.core.$strip>, z.ZodObject<{
1428
+ kind: z.ZodLiteral<"literal">;
1429
+ value: z.ZodUnion<readonly [z.ZodString, z.ZodNumber, z.ZodBoolean, z.ZodNull]>;
1430
+ }, z.core.$strip>], "kind">>;
1431
+ }, z.core.$strip>, z.ZodObject<{
1432
+ kind: z.ZodLiteral<"code">;
1433
+ code: z.ZodString;
1434
+ }, z.core.$strip>], "kind">>;
1435
+ commands: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodDiscriminatedUnion<[z.ZodObject<{
1436
+ kind: z.ZodLiteral<"forward">;
1437
+ source: z.ZodObject<{
1438
+ addonId: z.ZodString;
1439
+ stableId: z.ZodString;
1440
+ }, z.core.$strip>;
1441
+ cap: z.ZodString;
1442
+ method: z.ZodString;
1443
+ }, z.core.$strip>, z.ZodObject<{
1444
+ kind: z.ZodLiteral<"code">;
1445
+ code: z.ZodString;
1446
+ }, z.core.$strip>], "kind">>>;
1447
+ }, z.core.$strip>, z.ZodObject<{
1448
+ kind: z.ZodLiteral<"passthrough">;
1449
+ cap: z.ZodString;
1450
+ source: z.ZodObject<{
1451
+ addonId: z.ZodString;
1452
+ stableId: z.ZodString;
1453
+ }, z.core.$strip>;
1454
+ }, z.core.$strip>], "kind">>;
1455
+ }, z.core.$strip>;
1456
+ }, z.core.$strip>], "kind">>;
219
1457
  }, z.core.$strip>;
220
1458
  }, z.core.$strip>, "mutation"> & {
221
1459
  readonly caller: "required";
@@ -247,6 +1485,113 @@ export declare const coreBlocksCapability: {
247
1485
  }>;
248
1486
  lastError: z.ZodOptional<z.ZodString>;
249
1487
  lastChangedAt: z.ZodNumber;
1488
+ source: z.ZodOptional<z.ZodDiscriminatedUnion<[z.ZodObject<{
1489
+ kind: z.ZodLiteral<"code">;
1490
+ }, z.core.$strip>, z.ZodObject<{
1491
+ kind: z.ZodLiteral<"recipe">;
1492
+ recipe: z.ZodObject<{
1493
+ triggers: z.ZodArray<z.ZodDiscriminatedUnion<[z.ZodObject<{
1494
+ kind: z.ZodLiteral<"device-state">;
1495
+ deviceId: z.ZodNumber;
1496
+ cap: z.ZodString;
1497
+ fieldPath: z.ZodString;
1498
+ becomes: z.ZodOptional<z.ZodUnion<readonly [z.ZodString, z.ZodNumber, z.ZodBoolean]>>;
1499
+ edge: z.ZodOptional<z.ZodBoolean>;
1500
+ forMs: z.ZodOptional<z.ZodNumber>;
1501
+ debounceMs: z.ZodOptional<z.ZodNumber>;
1502
+ }, z.core.$strip>, z.ZodObject<{
1503
+ kind: z.ZodLiteral<"device-event">;
1504
+ category: z.ZodString;
1505
+ deviceId: z.ZodOptional<z.ZodNumber>;
1506
+ }, z.core.$strip>, z.ZodObject<{
1507
+ kind: z.ZodLiteral<"schedule">;
1508
+ cron: z.ZodString;
1509
+ }, z.core.$strip>, z.ZodObject<{
1510
+ kind: z.ZodLiteral<"manual">;
1511
+ }, z.core.$strip>], "kind">>;
1512
+ conditions: z.ZodOptional<z.ZodType<import("../index.js").AutomationCondition, unknown, z.core.$ZodTypeInternals<import("../index.js").AutomationCondition, unknown>>>;
1513
+ actions: z.ZodArray<z.ZodDiscriminatedUnion<[z.ZodObject<{
1514
+ kind: z.ZodLiteral<"wait">;
1515
+ seconds: z.ZodNumber;
1516
+ }, z.core.$strip>, z.ZodObject<{
1517
+ kind: z.ZodLiteral<"cap">;
1518
+ deviceId: z.ZodUnion<readonly [z.ZodNumber, z.ZodObject<{
1519
+ $var: z.ZodString;
1520
+ }, z.core.$strip>]>;
1521
+ cap: z.ZodString;
1522
+ method: z.ZodString;
1523
+ args: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
1524
+ }, z.core.$strip>, z.ZodObject<{
1525
+ kind: z.ZodLiteral<"code">;
1526
+ code: z.ZodString;
1527
+ }, z.core.$strip>], "kind">>;
1528
+ }, z.core.$strip>;
1529
+ }, z.core.$strip>, z.ZodObject<{
1530
+ kind: z.ZodLiteral<"composition">;
1531
+ composition: z.ZodObject<{
1532
+ target: z.ZodDiscriminatedUnion<[z.ZodObject<{
1533
+ kind: z.ZodLiteral<"new">;
1534
+ type: z.ZodEnum<typeof import("../index.js").DeviceType>;
1535
+ role: z.ZodOptional<z.ZodEnum<typeof import("../index.js").DeviceRole>>;
1536
+ }, z.core.$strip>, z.ZodObject<{
1537
+ kind: z.ZodLiteral<"existing">;
1538
+ device: z.ZodObject<{
1539
+ addonId: z.ZodString;
1540
+ stableId: z.ZodString;
1541
+ }, z.core.$strip>;
1542
+ }, z.core.$strip>], "kind">;
1543
+ features: z.ZodArray<z.ZodDiscriminatedUnion<[z.ZodObject<{
1544
+ kind: z.ZodLiteral<"fields">;
1545
+ cap: z.ZodString;
1546
+ fields: z.ZodRecord<z.ZodString, z.ZodDiscriminatedUnion<[z.ZodObject<{
1547
+ source: z.ZodObject<{
1548
+ addonId: z.ZodString;
1549
+ stableId: z.ZodString;
1550
+ }, z.core.$strip>;
1551
+ cap: z.ZodString;
1552
+ fieldPath: z.ZodString;
1553
+ kind: z.ZodLiteral<"from">;
1554
+ }, z.core.$strip>, z.ZodObject<{
1555
+ kind: z.ZodLiteral<"expression">;
1556
+ expr: z.ZodString;
1557
+ bindings: z.ZodRecord<z.ZodString, z.ZodDiscriminatedUnion<[z.ZodObject<{
1558
+ source: z.ZodObject<{
1559
+ addonId: z.ZodString;
1560
+ stableId: z.ZodString;
1561
+ }, z.core.$strip>;
1562
+ cap: z.ZodString;
1563
+ fieldPath: z.ZodString;
1564
+ kind: z.ZodLiteral<"from">;
1565
+ }, z.core.$strip>, z.ZodObject<{
1566
+ kind: z.ZodLiteral<"literal">;
1567
+ value: z.ZodUnion<readonly [z.ZodString, z.ZodNumber, z.ZodBoolean, z.ZodNull]>;
1568
+ }, z.core.$strip>], "kind">>;
1569
+ }, z.core.$strip>, z.ZodObject<{
1570
+ kind: z.ZodLiteral<"code">;
1571
+ code: z.ZodString;
1572
+ }, z.core.$strip>], "kind">>;
1573
+ commands: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodDiscriminatedUnion<[z.ZodObject<{
1574
+ kind: z.ZodLiteral<"forward">;
1575
+ source: z.ZodObject<{
1576
+ addonId: z.ZodString;
1577
+ stableId: z.ZodString;
1578
+ }, z.core.$strip>;
1579
+ cap: z.ZodString;
1580
+ method: z.ZodString;
1581
+ }, z.core.$strip>, z.ZodObject<{
1582
+ kind: z.ZodLiteral<"code">;
1583
+ code: z.ZodString;
1584
+ }, z.core.$strip>], "kind">>>;
1585
+ }, z.core.$strip>, z.ZodObject<{
1586
+ kind: z.ZodLiteral<"passthrough">;
1587
+ cap: z.ZodString;
1588
+ source: z.ZodObject<{
1589
+ addonId: z.ZodString;
1590
+ stableId: z.ZodString;
1591
+ }, z.core.$strip>;
1592
+ }, z.core.$strip>], "kind">>;
1593
+ }, z.core.$strip>;
1594
+ }, z.core.$strip>], "kind">>;
250
1595
  }, z.core.$strip>;
251
1596
  }, z.core.$strip>, "mutation">;
252
1597
  /**
@@ -283,6 +1628,113 @@ export declare const coreBlocksCapability: {
283
1628
  }>;
284
1629
  lastError: z.ZodOptional<z.ZodString>;
285
1630
  lastChangedAt: z.ZodNumber;
1631
+ source: z.ZodOptional<z.ZodDiscriminatedUnion<[z.ZodObject<{
1632
+ kind: z.ZodLiteral<"code">;
1633
+ }, z.core.$strip>, z.ZodObject<{
1634
+ kind: z.ZodLiteral<"recipe">;
1635
+ recipe: z.ZodObject<{
1636
+ triggers: z.ZodArray<z.ZodDiscriminatedUnion<[z.ZodObject<{
1637
+ kind: z.ZodLiteral<"device-state">;
1638
+ deviceId: z.ZodNumber;
1639
+ cap: z.ZodString;
1640
+ fieldPath: z.ZodString;
1641
+ becomes: z.ZodOptional<z.ZodUnion<readonly [z.ZodString, z.ZodNumber, z.ZodBoolean]>>;
1642
+ edge: z.ZodOptional<z.ZodBoolean>;
1643
+ forMs: z.ZodOptional<z.ZodNumber>;
1644
+ debounceMs: z.ZodOptional<z.ZodNumber>;
1645
+ }, z.core.$strip>, z.ZodObject<{
1646
+ kind: z.ZodLiteral<"device-event">;
1647
+ category: z.ZodString;
1648
+ deviceId: z.ZodOptional<z.ZodNumber>;
1649
+ }, z.core.$strip>, z.ZodObject<{
1650
+ kind: z.ZodLiteral<"schedule">;
1651
+ cron: z.ZodString;
1652
+ }, z.core.$strip>, z.ZodObject<{
1653
+ kind: z.ZodLiteral<"manual">;
1654
+ }, z.core.$strip>], "kind">>;
1655
+ conditions: z.ZodOptional<z.ZodType<import("../index.js").AutomationCondition, unknown, z.core.$ZodTypeInternals<import("../index.js").AutomationCondition, unknown>>>;
1656
+ actions: z.ZodArray<z.ZodDiscriminatedUnion<[z.ZodObject<{
1657
+ kind: z.ZodLiteral<"wait">;
1658
+ seconds: z.ZodNumber;
1659
+ }, z.core.$strip>, z.ZodObject<{
1660
+ kind: z.ZodLiteral<"cap">;
1661
+ deviceId: z.ZodUnion<readonly [z.ZodNumber, z.ZodObject<{
1662
+ $var: z.ZodString;
1663
+ }, z.core.$strip>]>;
1664
+ cap: z.ZodString;
1665
+ method: z.ZodString;
1666
+ args: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
1667
+ }, z.core.$strip>, z.ZodObject<{
1668
+ kind: z.ZodLiteral<"code">;
1669
+ code: z.ZodString;
1670
+ }, z.core.$strip>], "kind">>;
1671
+ }, z.core.$strip>;
1672
+ }, z.core.$strip>, z.ZodObject<{
1673
+ kind: z.ZodLiteral<"composition">;
1674
+ composition: z.ZodObject<{
1675
+ target: z.ZodDiscriminatedUnion<[z.ZodObject<{
1676
+ kind: z.ZodLiteral<"new">;
1677
+ type: z.ZodEnum<typeof import("../index.js").DeviceType>;
1678
+ role: z.ZodOptional<z.ZodEnum<typeof import("../index.js").DeviceRole>>;
1679
+ }, z.core.$strip>, z.ZodObject<{
1680
+ kind: z.ZodLiteral<"existing">;
1681
+ device: z.ZodObject<{
1682
+ addonId: z.ZodString;
1683
+ stableId: z.ZodString;
1684
+ }, z.core.$strip>;
1685
+ }, z.core.$strip>], "kind">;
1686
+ features: z.ZodArray<z.ZodDiscriminatedUnion<[z.ZodObject<{
1687
+ kind: z.ZodLiteral<"fields">;
1688
+ cap: z.ZodString;
1689
+ fields: z.ZodRecord<z.ZodString, z.ZodDiscriminatedUnion<[z.ZodObject<{
1690
+ source: z.ZodObject<{
1691
+ addonId: z.ZodString;
1692
+ stableId: z.ZodString;
1693
+ }, z.core.$strip>;
1694
+ cap: z.ZodString;
1695
+ fieldPath: z.ZodString;
1696
+ kind: z.ZodLiteral<"from">;
1697
+ }, z.core.$strip>, z.ZodObject<{
1698
+ kind: z.ZodLiteral<"expression">;
1699
+ expr: z.ZodString;
1700
+ bindings: z.ZodRecord<z.ZodString, z.ZodDiscriminatedUnion<[z.ZodObject<{
1701
+ source: z.ZodObject<{
1702
+ addonId: z.ZodString;
1703
+ stableId: z.ZodString;
1704
+ }, z.core.$strip>;
1705
+ cap: z.ZodString;
1706
+ fieldPath: z.ZodString;
1707
+ kind: z.ZodLiteral<"from">;
1708
+ }, z.core.$strip>, z.ZodObject<{
1709
+ kind: z.ZodLiteral<"literal">;
1710
+ value: z.ZodUnion<readonly [z.ZodString, z.ZodNumber, z.ZodBoolean, z.ZodNull]>;
1711
+ }, z.core.$strip>], "kind">>;
1712
+ }, z.core.$strip>, z.ZodObject<{
1713
+ kind: z.ZodLiteral<"code">;
1714
+ code: z.ZodString;
1715
+ }, z.core.$strip>], "kind">>;
1716
+ commands: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodDiscriminatedUnion<[z.ZodObject<{
1717
+ kind: z.ZodLiteral<"forward">;
1718
+ source: z.ZodObject<{
1719
+ addonId: z.ZodString;
1720
+ stableId: z.ZodString;
1721
+ }, z.core.$strip>;
1722
+ cap: z.ZodString;
1723
+ method: z.ZodString;
1724
+ }, z.core.$strip>, z.ZodObject<{
1725
+ kind: z.ZodLiteral<"code">;
1726
+ code: z.ZodString;
1727
+ }, z.core.$strip>], "kind">>>;
1728
+ }, z.core.$strip>, z.ZodObject<{
1729
+ kind: z.ZodLiteral<"passthrough">;
1730
+ cap: z.ZodString;
1731
+ source: z.ZodObject<{
1732
+ addonId: z.ZodString;
1733
+ stableId: z.ZodString;
1734
+ }, z.core.$strip>;
1735
+ }, z.core.$strip>], "kind">>;
1736
+ }, z.core.$strip>;
1737
+ }, z.core.$strip>], "kind">>;
286
1738
  }, z.core.$strip>;
287
1739
  }, z.core.$strip>, "mutation">;
288
1740
  /**
@@ -312,6 +1764,893 @@ export declare const coreBlocksCapability: {
312
1764
  content: z.ZodString;
313
1765
  }, z.core.$strip>>;
314
1766
  }, z.core.$strip>, import("./capability-definition.js").CapabilityMethodKind>;
1767
+ /**
1768
+ * Create a composition block (D659). VALIDATED first against the live
1769
+ * sources and every stored composition; a refusal names every problem by
1770
+ * path and reason (D391) and stores nothing.
1771
+ */
1772
+ readonly createComposition: import("./capability-definition.js").CapabilityMethodSchema<z.ZodObject<{
1773
+ block: z.ZodObject<{
1774
+ name: z.ZodString;
1775
+ enabled: z.ZodBoolean;
1776
+ composition: z.ZodObject<{
1777
+ target: z.ZodDiscriminatedUnion<[z.ZodObject<{
1778
+ kind: z.ZodLiteral<"new">;
1779
+ type: z.ZodEnum<typeof import("../index.js").DeviceType>;
1780
+ role: z.ZodOptional<z.ZodEnum<typeof import("../index.js").DeviceRole>>;
1781
+ }, z.core.$strip>, z.ZodObject<{
1782
+ kind: z.ZodLiteral<"existing">;
1783
+ device: z.ZodObject<{
1784
+ addonId: z.ZodString;
1785
+ stableId: z.ZodString;
1786
+ }, z.core.$strip>;
1787
+ }, z.core.$strip>], "kind">;
1788
+ features: z.ZodArray<z.ZodDiscriminatedUnion<[z.ZodObject<{
1789
+ kind: z.ZodLiteral<"fields">;
1790
+ cap: z.ZodString;
1791
+ fields: z.ZodRecord<z.ZodString, z.ZodDiscriminatedUnion<[z.ZodObject<{
1792
+ source: z.ZodObject<{
1793
+ addonId: z.ZodString;
1794
+ stableId: z.ZodString;
1795
+ }, z.core.$strip>;
1796
+ cap: z.ZodString;
1797
+ fieldPath: z.ZodString;
1798
+ kind: z.ZodLiteral<"from">;
1799
+ }, z.core.$strip>, z.ZodObject<{
1800
+ kind: z.ZodLiteral<"expression">;
1801
+ expr: z.ZodString;
1802
+ bindings: z.ZodRecord<z.ZodString, z.ZodDiscriminatedUnion<[z.ZodObject<{
1803
+ source: z.ZodObject<{
1804
+ addonId: z.ZodString;
1805
+ stableId: z.ZodString;
1806
+ }, z.core.$strip>;
1807
+ cap: z.ZodString;
1808
+ fieldPath: z.ZodString;
1809
+ kind: z.ZodLiteral<"from">;
1810
+ }, z.core.$strip>, z.ZodObject<{
1811
+ kind: z.ZodLiteral<"literal">;
1812
+ value: z.ZodUnion<readonly [z.ZodString, z.ZodNumber, z.ZodBoolean, z.ZodNull]>;
1813
+ }, z.core.$strip>], "kind">>;
1814
+ }, z.core.$strip>, z.ZodObject<{
1815
+ kind: z.ZodLiteral<"code">;
1816
+ code: z.ZodString;
1817
+ }, z.core.$strip>], "kind">>;
1818
+ commands: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodDiscriminatedUnion<[z.ZodObject<{
1819
+ kind: z.ZodLiteral<"forward">;
1820
+ source: z.ZodObject<{
1821
+ addonId: z.ZodString;
1822
+ stableId: z.ZodString;
1823
+ }, z.core.$strip>;
1824
+ cap: z.ZodString;
1825
+ method: z.ZodString;
1826
+ }, z.core.$strip>, z.ZodObject<{
1827
+ kind: z.ZodLiteral<"code">;
1828
+ code: z.ZodString;
1829
+ }, z.core.$strip>], "kind">>>;
1830
+ }, z.core.$strip>, z.ZodObject<{
1831
+ kind: z.ZodLiteral<"passthrough">;
1832
+ cap: z.ZodString;
1833
+ source: z.ZodObject<{
1834
+ addonId: z.ZodString;
1835
+ stableId: z.ZodString;
1836
+ }, z.core.$strip>;
1837
+ }, z.core.$strip>], "kind">>;
1838
+ }, z.core.$strip>;
1839
+ }, z.core.$strip>;
1840
+ }, z.core.$strip>, z.ZodObject<{
1841
+ block: z.ZodObject<{
1842
+ name: z.ZodString;
1843
+ code: z.ZodString;
1844
+ enabled: z.ZodBoolean;
1845
+ placement: z.ZodUnion<readonly [z.ZodLiteral<"hub">, z.ZodString]>;
1846
+ integrationId: z.ZodOptional<z.ZodString>;
1847
+ id: z.ZodString;
1848
+ createdAt: z.ZodNumber;
1849
+ updatedAt: z.ZodNumber;
1850
+ createdBy: z.ZodString;
1851
+ status: z.ZodEnum<{
1852
+ running: "running";
1853
+ failed: "failed";
1854
+ stopped: "stopped";
1855
+ starting: "starting";
1856
+ }>;
1857
+ lastError: z.ZodOptional<z.ZodString>;
1858
+ lastChangedAt: z.ZodNumber;
1859
+ source: z.ZodOptional<z.ZodDiscriminatedUnion<[z.ZodObject<{
1860
+ kind: z.ZodLiteral<"code">;
1861
+ }, z.core.$strip>, z.ZodObject<{
1862
+ kind: z.ZodLiteral<"recipe">;
1863
+ recipe: z.ZodObject<{
1864
+ triggers: z.ZodArray<z.ZodDiscriminatedUnion<[z.ZodObject<{
1865
+ kind: z.ZodLiteral<"device-state">;
1866
+ deviceId: z.ZodNumber;
1867
+ cap: z.ZodString;
1868
+ fieldPath: z.ZodString;
1869
+ becomes: z.ZodOptional<z.ZodUnion<readonly [z.ZodString, z.ZodNumber, z.ZodBoolean]>>;
1870
+ edge: z.ZodOptional<z.ZodBoolean>;
1871
+ forMs: z.ZodOptional<z.ZodNumber>;
1872
+ debounceMs: z.ZodOptional<z.ZodNumber>;
1873
+ }, z.core.$strip>, z.ZodObject<{
1874
+ kind: z.ZodLiteral<"device-event">;
1875
+ category: z.ZodString;
1876
+ deviceId: z.ZodOptional<z.ZodNumber>;
1877
+ }, z.core.$strip>, z.ZodObject<{
1878
+ kind: z.ZodLiteral<"schedule">;
1879
+ cron: z.ZodString;
1880
+ }, z.core.$strip>, z.ZodObject<{
1881
+ kind: z.ZodLiteral<"manual">;
1882
+ }, z.core.$strip>], "kind">>;
1883
+ conditions: z.ZodOptional<z.ZodType<import("../index.js").AutomationCondition, unknown, z.core.$ZodTypeInternals<import("../index.js").AutomationCondition, unknown>>>;
1884
+ actions: z.ZodArray<z.ZodDiscriminatedUnion<[z.ZodObject<{
1885
+ kind: z.ZodLiteral<"wait">;
1886
+ seconds: z.ZodNumber;
1887
+ }, z.core.$strip>, z.ZodObject<{
1888
+ kind: z.ZodLiteral<"cap">;
1889
+ deviceId: z.ZodUnion<readonly [z.ZodNumber, z.ZodObject<{
1890
+ $var: z.ZodString;
1891
+ }, z.core.$strip>]>;
1892
+ cap: z.ZodString;
1893
+ method: z.ZodString;
1894
+ args: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
1895
+ }, z.core.$strip>, z.ZodObject<{
1896
+ kind: z.ZodLiteral<"code">;
1897
+ code: z.ZodString;
1898
+ }, z.core.$strip>], "kind">>;
1899
+ }, z.core.$strip>;
1900
+ }, z.core.$strip>, z.ZodObject<{
1901
+ kind: z.ZodLiteral<"composition">;
1902
+ composition: z.ZodObject<{
1903
+ target: z.ZodDiscriminatedUnion<[z.ZodObject<{
1904
+ kind: z.ZodLiteral<"new">;
1905
+ type: z.ZodEnum<typeof import("../index.js").DeviceType>;
1906
+ role: z.ZodOptional<z.ZodEnum<typeof import("../index.js").DeviceRole>>;
1907
+ }, z.core.$strip>, z.ZodObject<{
1908
+ kind: z.ZodLiteral<"existing">;
1909
+ device: z.ZodObject<{
1910
+ addonId: z.ZodString;
1911
+ stableId: z.ZodString;
1912
+ }, z.core.$strip>;
1913
+ }, z.core.$strip>], "kind">;
1914
+ features: z.ZodArray<z.ZodDiscriminatedUnion<[z.ZodObject<{
1915
+ kind: z.ZodLiteral<"fields">;
1916
+ cap: z.ZodString;
1917
+ fields: z.ZodRecord<z.ZodString, z.ZodDiscriminatedUnion<[z.ZodObject<{
1918
+ source: z.ZodObject<{
1919
+ addonId: z.ZodString;
1920
+ stableId: z.ZodString;
1921
+ }, z.core.$strip>;
1922
+ cap: z.ZodString;
1923
+ fieldPath: z.ZodString;
1924
+ kind: z.ZodLiteral<"from">;
1925
+ }, z.core.$strip>, z.ZodObject<{
1926
+ kind: z.ZodLiteral<"expression">;
1927
+ expr: z.ZodString;
1928
+ bindings: z.ZodRecord<z.ZodString, z.ZodDiscriminatedUnion<[z.ZodObject<{
1929
+ source: z.ZodObject<{
1930
+ addonId: z.ZodString;
1931
+ stableId: z.ZodString;
1932
+ }, z.core.$strip>;
1933
+ cap: z.ZodString;
1934
+ fieldPath: z.ZodString;
1935
+ kind: z.ZodLiteral<"from">;
1936
+ }, z.core.$strip>, z.ZodObject<{
1937
+ kind: z.ZodLiteral<"literal">;
1938
+ value: z.ZodUnion<readonly [z.ZodString, z.ZodNumber, z.ZodBoolean, z.ZodNull]>;
1939
+ }, z.core.$strip>], "kind">>;
1940
+ }, z.core.$strip>, z.ZodObject<{
1941
+ kind: z.ZodLiteral<"code">;
1942
+ code: z.ZodString;
1943
+ }, z.core.$strip>], "kind">>;
1944
+ commands: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodDiscriminatedUnion<[z.ZodObject<{
1945
+ kind: z.ZodLiteral<"forward">;
1946
+ source: z.ZodObject<{
1947
+ addonId: z.ZodString;
1948
+ stableId: z.ZodString;
1949
+ }, z.core.$strip>;
1950
+ cap: z.ZodString;
1951
+ method: z.ZodString;
1952
+ }, z.core.$strip>, z.ZodObject<{
1953
+ kind: z.ZodLiteral<"code">;
1954
+ code: z.ZodString;
1955
+ }, z.core.$strip>], "kind">>>;
1956
+ }, z.core.$strip>, z.ZodObject<{
1957
+ kind: z.ZodLiteral<"passthrough">;
1958
+ cap: z.ZodString;
1959
+ source: z.ZodObject<{
1960
+ addonId: z.ZodString;
1961
+ stableId: z.ZodString;
1962
+ }, z.core.$strip>;
1963
+ }, z.core.$strip>], "kind">>;
1964
+ }, z.core.$strip>;
1965
+ }, z.core.$strip>], "kind">>;
1966
+ }, z.core.$strip>;
1967
+ }, z.core.$strip>, "mutation"> & {
1968
+ readonly caller: "required";
1969
+ };
1970
+ /**
1971
+ * Patch a composition block. A changed `composition` is validated exactly
1972
+ * as on create. `expectedUpdatedAt` is the `updatedAt` the caller READ: a
1973
+ * block changed since is refused by name, never silently overwritten.
1974
+ */
1975
+ readonly updateComposition: import("./capability-definition.js").CapabilityMethodSchema<z.ZodObject<{
1976
+ blockId: z.ZodString;
1977
+ expectedUpdatedAt: z.ZodNumber;
1978
+ block: z.ZodObject<{
1979
+ name: z.ZodOptional<z.ZodString>;
1980
+ enabled: z.ZodOptional<z.ZodBoolean>;
1981
+ composition: z.ZodOptional<z.ZodObject<{
1982
+ target: z.ZodDiscriminatedUnion<[z.ZodObject<{
1983
+ kind: z.ZodLiteral<"new">;
1984
+ type: z.ZodEnum<typeof import("../index.js").DeviceType>;
1985
+ role: z.ZodOptional<z.ZodEnum<typeof import("../index.js").DeviceRole>>;
1986
+ }, z.core.$strip>, z.ZodObject<{
1987
+ kind: z.ZodLiteral<"existing">;
1988
+ device: z.ZodObject<{
1989
+ addonId: z.ZodString;
1990
+ stableId: z.ZodString;
1991
+ }, z.core.$strip>;
1992
+ }, z.core.$strip>], "kind">;
1993
+ features: z.ZodArray<z.ZodDiscriminatedUnion<[z.ZodObject<{
1994
+ kind: z.ZodLiteral<"fields">;
1995
+ cap: z.ZodString;
1996
+ fields: z.ZodRecord<z.ZodString, z.ZodDiscriminatedUnion<[z.ZodObject<{
1997
+ source: z.ZodObject<{
1998
+ addonId: z.ZodString;
1999
+ stableId: z.ZodString;
2000
+ }, z.core.$strip>;
2001
+ cap: z.ZodString;
2002
+ fieldPath: z.ZodString;
2003
+ kind: z.ZodLiteral<"from">;
2004
+ }, z.core.$strip>, z.ZodObject<{
2005
+ kind: z.ZodLiteral<"expression">;
2006
+ expr: z.ZodString;
2007
+ bindings: z.ZodRecord<z.ZodString, z.ZodDiscriminatedUnion<[z.ZodObject<{
2008
+ source: z.ZodObject<{
2009
+ addonId: z.ZodString;
2010
+ stableId: z.ZodString;
2011
+ }, z.core.$strip>;
2012
+ cap: z.ZodString;
2013
+ fieldPath: z.ZodString;
2014
+ kind: z.ZodLiteral<"from">;
2015
+ }, z.core.$strip>, z.ZodObject<{
2016
+ kind: z.ZodLiteral<"literal">;
2017
+ value: z.ZodUnion<readonly [z.ZodString, z.ZodNumber, z.ZodBoolean, z.ZodNull]>;
2018
+ }, z.core.$strip>], "kind">>;
2019
+ }, z.core.$strip>, z.ZodObject<{
2020
+ kind: z.ZodLiteral<"code">;
2021
+ code: z.ZodString;
2022
+ }, z.core.$strip>], "kind">>;
2023
+ commands: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodDiscriminatedUnion<[z.ZodObject<{
2024
+ kind: z.ZodLiteral<"forward">;
2025
+ source: z.ZodObject<{
2026
+ addonId: z.ZodString;
2027
+ stableId: z.ZodString;
2028
+ }, z.core.$strip>;
2029
+ cap: z.ZodString;
2030
+ method: z.ZodString;
2031
+ }, z.core.$strip>, z.ZodObject<{
2032
+ kind: z.ZodLiteral<"code">;
2033
+ code: z.ZodString;
2034
+ }, z.core.$strip>], "kind">>>;
2035
+ }, z.core.$strip>, z.ZodObject<{
2036
+ kind: z.ZodLiteral<"passthrough">;
2037
+ cap: z.ZodString;
2038
+ source: z.ZodObject<{
2039
+ addonId: z.ZodString;
2040
+ stableId: z.ZodString;
2041
+ }, z.core.$strip>;
2042
+ }, z.core.$strip>], "kind">>;
2043
+ }, z.core.$strip>>;
2044
+ }, z.core.$strip>;
2045
+ }, z.core.$strip>, z.ZodObject<{
2046
+ block: z.ZodObject<{
2047
+ name: z.ZodString;
2048
+ code: z.ZodString;
2049
+ enabled: z.ZodBoolean;
2050
+ placement: z.ZodUnion<readonly [z.ZodLiteral<"hub">, z.ZodString]>;
2051
+ integrationId: z.ZodOptional<z.ZodString>;
2052
+ id: z.ZodString;
2053
+ createdAt: z.ZodNumber;
2054
+ updatedAt: z.ZodNumber;
2055
+ createdBy: z.ZodString;
2056
+ status: z.ZodEnum<{
2057
+ running: "running";
2058
+ failed: "failed";
2059
+ stopped: "stopped";
2060
+ starting: "starting";
2061
+ }>;
2062
+ lastError: z.ZodOptional<z.ZodString>;
2063
+ lastChangedAt: z.ZodNumber;
2064
+ source: z.ZodOptional<z.ZodDiscriminatedUnion<[z.ZodObject<{
2065
+ kind: z.ZodLiteral<"code">;
2066
+ }, z.core.$strip>, z.ZodObject<{
2067
+ kind: z.ZodLiteral<"recipe">;
2068
+ recipe: z.ZodObject<{
2069
+ triggers: z.ZodArray<z.ZodDiscriminatedUnion<[z.ZodObject<{
2070
+ kind: z.ZodLiteral<"device-state">;
2071
+ deviceId: z.ZodNumber;
2072
+ cap: z.ZodString;
2073
+ fieldPath: z.ZodString;
2074
+ becomes: z.ZodOptional<z.ZodUnion<readonly [z.ZodString, z.ZodNumber, z.ZodBoolean]>>;
2075
+ edge: z.ZodOptional<z.ZodBoolean>;
2076
+ forMs: z.ZodOptional<z.ZodNumber>;
2077
+ debounceMs: z.ZodOptional<z.ZodNumber>;
2078
+ }, z.core.$strip>, z.ZodObject<{
2079
+ kind: z.ZodLiteral<"device-event">;
2080
+ category: z.ZodString;
2081
+ deviceId: z.ZodOptional<z.ZodNumber>;
2082
+ }, z.core.$strip>, z.ZodObject<{
2083
+ kind: z.ZodLiteral<"schedule">;
2084
+ cron: z.ZodString;
2085
+ }, z.core.$strip>, z.ZodObject<{
2086
+ kind: z.ZodLiteral<"manual">;
2087
+ }, z.core.$strip>], "kind">>;
2088
+ conditions: z.ZodOptional<z.ZodType<import("../index.js").AutomationCondition, unknown, z.core.$ZodTypeInternals<import("../index.js").AutomationCondition, unknown>>>;
2089
+ actions: z.ZodArray<z.ZodDiscriminatedUnion<[z.ZodObject<{
2090
+ kind: z.ZodLiteral<"wait">;
2091
+ seconds: z.ZodNumber;
2092
+ }, z.core.$strip>, z.ZodObject<{
2093
+ kind: z.ZodLiteral<"cap">;
2094
+ deviceId: z.ZodUnion<readonly [z.ZodNumber, z.ZodObject<{
2095
+ $var: z.ZodString;
2096
+ }, z.core.$strip>]>;
2097
+ cap: z.ZodString;
2098
+ method: z.ZodString;
2099
+ args: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
2100
+ }, z.core.$strip>, z.ZodObject<{
2101
+ kind: z.ZodLiteral<"code">;
2102
+ code: z.ZodString;
2103
+ }, z.core.$strip>], "kind">>;
2104
+ }, z.core.$strip>;
2105
+ }, z.core.$strip>, z.ZodObject<{
2106
+ kind: z.ZodLiteral<"composition">;
2107
+ composition: z.ZodObject<{
2108
+ target: z.ZodDiscriminatedUnion<[z.ZodObject<{
2109
+ kind: z.ZodLiteral<"new">;
2110
+ type: z.ZodEnum<typeof import("../index.js").DeviceType>;
2111
+ role: z.ZodOptional<z.ZodEnum<typeof import("../index.js").DeviceRole>>;
2112
+ }, z.core.$strip>, z.ZodObject<{
2113
+ kind: z.ZodLiteral<"existing">;
2114
+ device: z.ZodObject<{
2115
+ addonId: z.ZodString;
2116
+ stableId: z.ZodString;
2117
+ }, z.core.$strip>;
2118
+ }, z.core.$strip>], "kind">;
2119
+ features: z.ZodArray<z.ZodDiscriminatedUnion<[z.ZodObject<{
2120
+ kind: z.ZodLiteral<"fields">;
2121
+ cap: z.ZodString;
2122
+ fields: z.ZodRecord<z.ZodString, z.ZodDiscriminatedUnion<[z.ZodObject<{
2123
+ source: z.ZodObject<{
2124
+ addonId: z.ZodString;
2125
+ stableId: z.ZodString;
2126
+ }, z.core.$strip>;
2127
+ cap: z.ZodString;
2128
+ fieldPath: z.ZodString;
2129
+ kind: z.ZodLiteral<"from">;
2130
+ }, z.core.$strip>, z.ZodObject<{
2131
+ kind: z.ZodLiteral<"expression">;
2132
+ expr: z.ZodString;
2133
+ bindings: z.ZodRecord<z.ZodString, z.ZodDiscriminatedUnion<[z.ZodObject<{
2134
+ source: z.ZodObject<{
2135
+ addonId: z.ZodString;
2136
+ stableId: z.ZodString;
2137
+ }, z.core.$strip>;
2138
+ cap: z.ZodString;
2139
+ fieldPath: z.ZodString;
2140
+ kind: z.ZodLiteral<"from">;
2141
+ }, z.core.$strip>, z.ZodObject<{
2142
+ kind: z.ZodLiteral<"literal">;
2143
+ value: z.ZodUnion<readonly [z.ZodString, z.ZodNumber, z.ZodBoolean, z.ZodNull]>;
2144
+ }, z.core.$strip>], "kind">>;
2145
+ }, z.core.$strip>, z.ZodObject<{
2146
+ kind: z.ZodLiteral<"code">;
2147
+ code: z.ZodString;
2148
+ }, z.core.$strip>], "kind">>;
2149
+ commands: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodDiscriminatedUnion<[z.ZodObject<{
2150
+ kind: z.ZodLiteral<"forward">;
2151
+ source: z.ZodObject<{
2152
+ addonId: z.ZodString;
2153
+ stableId: z.ZodString;
2154
+ }, z.core.$strip>;
2155
+ cap: z.ZodString;
2156
+ method: z.ZodString;
2157
+ }, z.core.$strip>, z.ZodObject<{
2158
+ kind: z.ZodLiteral<"code">;
2159
+ code: z.ZodString;
2160
+ }, z.core.$strip>], "kind">>>;
2161
+ }, z.core.$strip>, z.ZodObject<{
2162
+ kind: z.ZodLiteral<"passthrough">;
2163
+ cap: z.ZodString;
2164
+ source: z.ZodObject<{
2165
+ addonId: z.ZodString;
2166
+ stableId: z.ZodString;
2167
+ }, z.core.$strip>;
2168
+ }, z.core.$strip>], "kind">>;
2169
+ }, z.core.$strip>;
2170
+ }, z.core.$strip>], "kind">>;
2171
+ }, z.core.$strip>;
2172
+ }, z.core.$strip>, "mutation"> & {
2173
+ readonly caller: "required";
2174
+ };
2175
+ /** One composition and the composer's state for it, or `not-loaded` (D315). */
2176
+ readonly getComposition: import("./capability-definition.js").CapabilityMethodSchema<z.ZodObject<{
2177
+ blockId: z.ZodString;
2178
+ }, z.core.$strip>, z.ZodDiscriminatedUnion<[z.ZodObject<{
2179
+ state: z.ZodLiteral<"loaded">;
2180
+ view: z.ZodNullable<z.ZodObject<{
2181
+ block: z.ZodObject<{
2182
+ name: z.ZodString;
2183
+ code: z.ZodString;
2184
+ enabled: z.ZodBoolean;
2185
+ placement: z.ZodUnion<readonly [z.ZodLiteral<"hub">, z.ZodString]>;
2186
+ integrationId: z.ZodOptional<z.ZodString>;
2187
+ id: z.ZodString;
2188
+ createdAt: z.ZodNumber;
2189
+ updatedAt: z.ZodNumber;
2190
+ createdBy: z.ZodString;
2191
+ status: z.ZodEnum<{
2192
+ running: "running";
2193
+ failed: "failed";
2194
+ stopped: "stopped";
2195
+ starting: "starting";
2196
+ }>;
2197
+ lastError: z.ZodOptional<z.ZodString>;
2198
+ lastChangedAt: z.ZodNumber;
2199
+ source: z.ZodOptional<z.ZodDiscriminatedUnion<[z.ZodObject<{
2200
+ kind: z.ZodLiteral<"code">;
2201
+ }, z.core.$strip>, z.ZodObject<{
2202
+ kind: z.ZodLiteral<"recipe">;
2203
+ recipe: z.ZodObject<{
2204
+ triggers: z.ZodArray<z.ZodDiscriminatedUnion<[z.ZodObject<{
2205
+ kind: z.ZodLiteral<"device-state">;
2206
+ deviceId: z.ZodNumber;
2207
+ cap: z.ZodString;
2208
+ fieldPath: z.ZodString;
2209
+ becomes: z.ZodOptional<z.ZodUnion<readonly [z.ZodString, z.ZodNumber, z.ZodBoolean]>>;
2210
+ edge: z.ZodOptional<z.ZodBoolean>;
2211
+ forMs: z.ZodOptional<z.ZodNumber>;
2212
+ debounceMs: z.ZodOptional<z.ZodNumber>;
2213
+ }, z.core.$strip>, z.ZodObject<{
2214
+ kind: z.ZodLiteral<"device-event">;
2215
+ category: z.ZodString;
2216
+ deviceId: z.ZodOptional<z.ZodNumber>;
2217
+ }, z.core.$strip>, z.ZodObject<{
2218
+ kind: z.ZodLiteral<"schedule">;
2219
+ cron: z.ZodString;
2220
+ }, z.core.$strip>, z.ZodObject<{
2221
+ kind: z.ZodLiteral<"manual">;
2222
+ }, z.core.$strip>], "kind">>;
2223
+ conditions: z.ZodOptional<z.ZodType<import("../index.js").AutomationCondition, unknown, z.core.$ZodTypeInternals<import("../index.js").AutomationCondition, unknown>>>;
2224
+ actions: z.ZodArray<z.ZodDiscriminatedUnion<[z.ZodObject<{
2225
+ kind: z.ZodLiteral<"wait">;
2226
+ seconds: z.ZodNumber;
2227
+ }, z.core.$strip>, z.ZodObject<{
2228
+ kind: z.ZodLiteral<"cap">;
2229
+ deviceId: z.ZodUnion<readonly [z.ZodNumber, z.ZodObject<{
2230
+ $var: z.ZodString;
2231
+ }, z.core.$strip>]>;
2232
+ cap: z.ZodString;
2233
+ method: z.ZodString;
2234
+ args: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
2235
+ }, z.core.$strip>, z.ZodObject<{
2236
+ kind: z.ZodLiteral<"code">;
2237
+ code: z.ZodString;
2238
+ }, z.core.$strip>], "kind">>;
2239
+ }, z.core.$strip>;
2240
+ }, z.core.$strip>, z.ZodObject<{
2241
+ kind: z.ZodLiteral<"composition">;
2242
+ composition: z.ZodObject<{
2243
+ target: z.ZodDiscriminatedUnion<[z.ZodObject<{
2244
+ kind: z.ZodLiteral<"new">;
2245
+ type: z.ZodEnum<typeof import("../index.js").DeviceType>;
2246
+ role: z.ZodOptional<z.ZodEnum<typeof import("../index.js").DeviceRole>>;
2247
+ }, z.core.$strip>, z.ZodObject<{
2248
+ kind: z.ZodLiteral<"existing">;
2249
+ device: z.ZodObject<{
2250
+ addonId: z.ZodString;
2251
+ stableId: z.ZodString;
2252
+ }, z.core.$strip>;
2253
+ }, z.core.$strip>], "kind">;
2254
+ features: z.ZodArray<z.ZodDiscriminatedUnion<[z.ZodObject<{
2255
+ kind: z.ZodLiteral<"fields">;
2256
+ cap: z.ZodString;
2257
+ fields: z.ZodRecord<z.ZodString, z.ZodDiscriminatedUnion<[z.ZodObject<{
2258
+ source: z.ZodObject<{
2259
+ addonId: z.ZodString;
2260
+ stableId: z.ZodString;
2261
+ }, z.core.$strip>;
2262
+ cap: z.ZodString;
2263
+ fieldPath: z.ZodString;
2264
+ kind: z.ZodLiteral<"from">;
2265
+ }, z.core.$strip>, z.ZodObject<{
2266
+ kind: z.ZodLiteral<"expression">;
2267
+ expr: z.ZodString;
2268
+ bindings: z.ZodRecord<z.ZodString, z.ZodDiscriminatedUnion<[z.ZodObject<{
2269
+ source: z.ZodObject<{
2270
+ addonId: z.ZodString;
2271
+ stableId: z.ZodString;
2272
+ }, z.core.$strip>;
2273
+ cap: z.ZodString;
2274
+ fieldPath: z.ZodString;
2275
+ kind: z.ZodLiteral<"from">;
2276
+ }, z.core.$strip>, z.ZodObject<{
2277
+ kind: z.ZodLiteral<"literal">;
2278
+ value: z.ZodUnion<readonly [z.ZodString, z.ZodNumber, z.ZodBoolean, z.ZodNull]>;
2279
+ }, z.core.$strip>], "kind">>;
2280
+ }, z.core.$strip>, z.ZodObject<{
2281
+ kind: z.ZodLiteral<"code">;
2282
+ code: z.ZodString;
2283
+ }, z.core.$strip>], "kind">>;
2284
+ commands: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodDiscriminatedUnion<[z.ZodObject<{
2285
+ kind: z.ZodLiteral<"forward">;
2286
+ source: z.ZodObject<{
2287
+ addonId: z.ZodString;
2288
+ stableId: z.ZodString;
2289
+ }, z.core.$strip>;
2290
+ cap: z.ZodString;
2291
+ method: z.ZodString;
2292
+ }, z.core.$strip>, z.ZodObject<{
2293
+ kind: z.ZodLiteral<"code">;
2294
+ code: z.ZodString;
2295
+ }, z.core.$strip>], "kind">>>;
2296
+ }, z.core.$strip>, z.ZodObject<{
2297
+ kind: z.ZodLiteral<"passthrough">;
2298
+ cap: z.ZodString;
2299
+ source: z.ZodObject<{
2300
+ addonId: z.ZodString;
2301
+ stableId: z.ZodString;
2302
+ }, z.core.$strip>;
2303
+ }, z.core.$strip>], "kind">>;
2304
+ }, z.core.$strip>;
2305
+ }, z.core.$strip>], "kind">>;
2306
+ }, z.core.$strip>;
2307
+ state: z.ZodDiscriminatedUnion<[z.ZodObject<{
2308
+ kind: z.ZodLiteral<"answered">;
2309
+ state: z.ZodNullable<z.ZodObject<{
2310
+ blockId: z.ZodString;
2311
+ deviceId: z.ZodNullable<z.ZodNumber>;
2312
+ status: z.ZodEnum<{
2313
+ running: "running";
2314
+ failed: "failed";
2315
+ stopped: "stopped";
2316
+ starting: "starting";
2317
+ }>;
2318
+ reason: z.ZodOptional<z.ZodString>;
2319
+ fields: z.ZodArray<z.ZodObject<{
2320
+ cap: z.ZodString;
2321
+ path: z.ZodString;
2322
+ state: z.ZodEnum<{
2323
+ unavailable: "unavailable";
2324
+ fresh: "fresh";
2325
+ stale: "stale";
2326
+ }>;
2327
+ value: z.ZodUnion<readonly [z.ZodString, z.ZodNumber, z.ZodBoolean, z.ZodNull]>;
2328
+ reason: z.ZodOptional<z.ZodString>;
2329
+ }, z.core.$strip>>;
2330
+ }, z.core.$strip>>;
2331
+ }, z.core.$strip>, z.ZodObject<{
2332
+ kind: z.ZodLiteral<"unreachable">;
2333
+ error: z.ZodString;
2334
+ }, z.core.$strip>], "kind">;
2335
+ }, z.core.$strip>>;
2336
+ }, z.core.$strip>, z.ZodObject<{
2337
+ state: z.ZodLiteral<"not-loaded">;
2338
+ reason: z.ZodString;
2339
+ }, z.core.$strip>], "state">, import("./capability-definition.js").CapabilityMethodKind>;
2340
+ readonly listCompositions: import("./capability-definition.js").CapabilityMethodSchema<z.ZodObject<{}, z.core.$strip>, z.ZodDiscriminatedUnion<[z.ZodObject<{
2341
+ state: z.ZodLiteral<"loaded">;
2342
+ views: z.ZodArray<z.ZodObject<{
2343
+ block: z.ZodObject<{
2344
+ name: z.ZodString;
2345
+ code: z.ZodString;
2346
+ enabled: z.ZodBoolean;
2347
+ placement: z.ZodUnion<readonly [z.ZodLiteral<"hub">, z.ZodString]>;
2348
+ integrationId: z.ZodOptional<z.ZodString>;
2349
+ id: z.ZodString;
2350
+ createdAt: z.ZodNumber;
2351
+ updatedAt: z.ZodNumber;
2352
+ createdBy: z.ZodString;
2353
+ status: z.ZodEnum<{
2354
+ running: "running";
2355
+ failed: "failed";
2356
+ stopped: "stopped";
2357
+ starting: "starting";
2358
+ }>;
2359
+ lastError: z.ZodOptional<z.ZodString>;
2360
+ lastChangedAt: z.ZodNumber;
2361
+ source: z.ZodOptional<z.ZodDiscriminatedUnion<[z.ZodObject<{
2362
+ kind: z.ZodLiteral<"code">;
2363
+ }, z.core.$strip>, z.ZodObject<{
2364
+ kind: z.ZodLiteral<"recipe">;
2365
+ recipe: z.ZodObject<{
2366
+ triggers: z.ZodArray<z.ZodDiscriminatedUnion<[z.ZodObject<{
2367
+ kind: z.ZodLiteral<"device-state">;
2368
+ deviceId: z.ZodNumber;
2369
+ cap: z.ZodString;
2370
+ fieldPath: z.ZodString;
2371
+ becomes: z.ZodOptional<z.ZodUnion<readonly [z.ZodString, z.ZodNumber, z.ZodBoolean]>>;
2372
+ edge: z.ZodOptional<z.ZodBoolean>;
2373
+ forMs: z.ZodOptional<z.ZodNumber>;
2374
+ debounceMs: z.ZodOptional<z.ZodNumber>;
2375
+ }, z.core.$strip>, z.ZodObject<{
2376
+ kind: z.ZodLiteral<"device-event">;
2377
+ category: z.ZodString;
2378
+ deviceId: z.ZodOptional<z.ZodNumber>;
2379
+ }, z.core.$strip>, z.ZodObject<{
2380
+ kind: z.ZodLiteral<"schedule">;
2381
+ cron: z.ZodString;
2382
+ }, z.core.$strip>, z.ZodObject<{
2383
+ kind: z.ZodLiteral<"manual">;
2384
+ }, z.core.$strip>], "kind">>;
2385
+ conditions: z.ZodOptional<z.ZodType<import("../index.js").AutomationCondition, unknown, z.core.$ZodTypeInternals<import("../index.js").AutomationCondition, unknown>>>;
2386
+ actions: z.ZodArray<z.ZodDiscriminatedUnion<[z.ZodObject<{
2387
+ kind: z.ZodLiteral<"wait">;
2388
+ seconds: z.ZodNumber;
2389
+ }, z.core.$strip>, z.ZodObject<{
2390
+ kind: z.ZodLiteral<"cap">;
2391
+ deviceId: z.ZodUnion<readonly [z.ZodNumber, z.ZodObject<{
2392
+ $var: z.ZodString;
2393
+ }, z.core.$strip>]>;
2394
+ cap: z.ZodString;
2395
+ method: z.ZodString;
2396
+ args: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
2397
+ }, z.core.$strip>, z.ZodObject<{
2398
+ kind: z.ZodLiteral<"code">;
2399
+ code: z.ZodString;
2400
+ }, z.core.$strip>], "kind">>;
2401
+ }, z.core.$strip>;
2402
+ }, z.core.$strip>, z.ZodObject<{
2403
+ kind: z.ZodLiteral<"composition">;
2404
+ composition: z.ZodObject<{
2405
+ target: z.ZodDiscriminatedUnion<[z.ZodObject<{
2406
+ kind: z.ZodLiteral<"new">;
2407
+ type: z.ZodEnum<typeof import("../index.js").DeviceType>;
2408
+ role: z.ZodOptional<z.ZodEnum<typeof import("../index.js").DeviceRole>>;
2409
+ }, z.core.$strip>, z.ZodObject<{
2410
+ kind: z.ZodLiteral<"existing">;
2411
+ device: z.ZodObject<{
2412
+ addonId: z.ZodString;
2413
+ stableId: z.ZodString;
2414
+ }, z.core.$strip>;
2415
+ }, z.core.$strip>], "kind">;
2416
+ features: z.ZodArray<z.ZodDiscriminatedUnion<[z.ZodObject<{
2417
+ kind: z.ZodLiteral<"fields">;
2418
+ cap: z.ZodString;
2419
+ fields: z.ZodRecord<z.ZodString, z.ZodDiscriminatedUnion<[z.ZodObject<{
2420
+ source: z.ZodObject<{
2421
+ addonId: z.ZodString;
2422
+ stableId: z.ZodString;
2423
+ }, z.core.$strip>;
2424
+ cap: z.ZodString;
2425
+ fieldPath: z.ZodString;
2426
+ kind: z.ZodLiteral<"from">;
2427
+ }, z.core.$strip>, z.ZodObject<{
2428
+ kind: z.ZodLiteral<"expression">;
2429
+ expr: z.ZodString;
2430
+ bindings: z.ZodRecord<z.ZodString, z.ZodDiscriminatedUnion<[z.ZodObject<{
2431
+ source: z.ZodObject<{
2432
+ addonId: z.ZodString;
2433
+ stableId: z.ZodString;
2434
+ }, z.core.$strip>;
2435
+ cap: z.ZodString;
2436
+ fieldPath: z.ZodString;
2437
+ kind: z.ZodLiteral<"from">;
2438
+ }, z.core.$strip>, z.ZodObject<{
2439
+ kind: z.ZodLiteral<"literal">;
2440
+ value: z.ZodUnion<readonly [z.ZodString, z.ZodNumber, z.ZodBoolean, z.ZodNull]>;
2441
+ }, z.core.$strip>], "kind">>;
2442
+ }, z.core.$strip>, z.ZodObject<{
2443
+ kind: z.ZodLiteral<"code">;
2444
+ code: z.ZodString;
2445
+ }, z.core.$strip>], "kind">>;
2446
+ commands: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodDiscriminatedUnion<[z.ZodObject<{
2447
+ kind: z.ZodLiteral<"forward">;
2448
+ source: z.ZodObject<{
2449
+ addonId: z.ZodString;
2450
+ stableId: z.ZodString;
2451
+ }, z.core.$strip>;
2452
+ cap: z.ZodString;
2453
+ method: z.ZodString;
2454
+ }, z.core.$strip>, z.ZodObject<{
2455
+ kind: z.ZodLiteral<"code">;
2456
+ code: z.ZodString;
2457
+ }, z.core.$strip>], "kind">>>;
2458
+ }, z.core.$strip>, z.ZodObject<{
2459
+ kind: z.ZodLiteral<"passthrough">;
2460
+ cap: z.ZodString;
2461
+ source: z.ZodObject<{
2462
+ addonId: z.ZodString;
2463
+ stableId: z.ZodString;
2464
+ }, z.core.$strip>;
2465
+ }, z.core.$strip>], "kind">>;
2466
+ }, z.core.$strip>;
2467
+ }, z.core.$strip>], "kind">>;
2468
+ }, z.core.$strip>;
2469
+ state: z.ZodDiscriminatedUnion<[z.ZodObject<{
2470
+ kind: z.ZodLiteral<"answered">;
2471
+ state: z.ZodNullable<z.ZodObject<{
2472
+ blockId: z.ZodString;
2473
+ deviceId: z.ZodNullable<z.ZodNumber>;
2474
+ status: z.ZodEnum<{
2475
+ running: "running";
2476
+ failed: "failed";
2477
+ stopped: "stopped";
2478
+ starting: "starting";
2479
+ }>;
2480
+ reason: z.ZodOptional<z.ZodString>;
2481
+ fields: z.ZodArray<z.ZodObject<{
2482
+ cap: z.ZodString;
2483
+ path: z.ZodString;
2484
+ state: z.ZodEnum<{
2485
+ unavailable: "unavailable";
2486
+ fresh: "fresh";
2487
+ stale: "stale";
2488
+ }>;
2489
+ value: z.ZodUnion<readonly [z.ZodString, z.ZodNumber, z.ZodBoolean, z.ZodNull]>;
2490
+ reason: z.ZodOptional<z.ZodString>;
2491
+ }, z.core.$strip>>;
2492
+ }, z.core.$strip>>;
2493
+ }, z.core.$strip>, z.ZodObject<{
2494
+ kind: z.ZodLiteral<"unreachable">;
2495
+ error: z.ZodString;
2496
+ }, z.core.$strip>], "kind">;
2497
+ }, z.core.$strip>>;
2498
+ }, z.core.$strip>, z.ZodObject<{
2499
+ state: z.ZodLiteral<"not-loaded">;
2500
+ reason: z.ZodString;
2501
+ }, z.core.$strip>], "state">, import("./capability-definition.js").CapabilityMethodKind>;
2502
+ /**
2503
+ * Validate without saving — the same verdict the save reaches. A mutation
2504
+ * for its body size; it writes nothing, so its access is `view`.
2505
+ */
2506
+ readonly validateComposition: import("./capability-definition.js").CapabilityMethodSchema<z.ZodObject<{
2507
+ composition: z.ZodObject<{
2508
+ target: z.ZodDiscriminatedUnion<[z.ZodObject<{
2509
+ kind: z.ZodLiteral<"new">;
2510
+ type: z.ZodEnum<typeof import("../index.js").DeviceType>;
2511
+ role: z.ZodOptional<z.ZodEnum<typeof import("../index.js").DeviceRole>>;
2512
+ }, z.core.$strip>, z.ZodObject<{
2513
+ kind: z.ZodLiteral<"existing">;
2514
+ device: z.ZodObject<{
2515
+ addonId: z.ZodString;
2516
+ stableId: z.ZodString;
2517
+ }, z.core.$strip>;
2518
+ }, z.core.$strip>], "kind">;
2519
+ features: z.ZodArray<z.ZodDiscriminatedUnion<[z.ZodObject<{
2520
+ kind: z.ZodLiteral<"fields">;
2521
+ cap: z.ZodString;
2522
+ fields: z.ZodRecord<z.ZodString, z.ZodDiscriminatedUnion<[z.ZodObject<{
2523
+ source: z.ZodObject<{
2524
+ addonId: z.ZodString;
2525
+ stableId: z.ZodString;
2526
+ }, z.core.$strip>;
2527
+ cap: z.ZodString;
2528
+ fieldPath: z.ZodString;
2529
+ kind: z.ZodLiteral<"from">;
2530
+ }, z.core.$strip>, z.ZodObject<{
2531
+ kind: z.ZodLiteral<"expression">;
2532
+ expr: z.ZodString;
2533
+ bindings: z.ZodRecord<z.ZodString, z.ZodDiscriminatedUnion<[z.ZodObject<{
2534
+ source: z.ZodObject<{
2535
+ addonId: z.ZodString;
2536
+ stableId: z.ZodString;
2537
+ }, z.core.$strip>;
2538
+ cap: z.ZodString;
2539
+ fieldPath: z.ZodString;
2540
+ kind: z.ZodLiteral<"from">;
2541
+ }, z.core.$strip>, z.ZodObject<{
2542
+ kind: z.ZodLiteral<"literal">;
2543
+ value: z.ZodUnion<readonly [z.ZodString, z.ZodNumber, z.ZodBoolean, z.ZodNull]>;
2544
+ }, z.core.$strip>], "kind">>;
2545
+ }, z.core.$strip>, z.ZodObject<{
2546
+ kind: z.ZodLiteral<"code">;
2547
+ code: z.ZodString;
2548
+ }, z.core.$strip>], "kind">>;
2549
+ commands: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodDiscriminatedUnion<[z.ZodObject<{
2550
+ kind: z.ZodLiteral<"forward">;
2551
+ source: z.ZodObject<{
2552
+ addonId: z.ZodString;
2553
+ stableId: z.ZodString;
2554
+ }, z.core.$strip>;
2555
+ cap: z.ZodString;
2556
+ method: z.ZodString;
2557
+ }, z.core.$strip>, z.ZodObject<{
2558
+ kind: z.ZodLiteral<"code">;
2559
+ code: z.ZodString;
2560
+ }, z.core.$strip>], "kind">>>;
2561
+ }, z.core.$strip>, z.ZodObject<{
2562
+ kind: z.ZodLiteral<"passthrough">;
2563
+ cap: z.ZodString;
2564
+ source: z.ZodObject<{
2565
+ addonId: z.ZodString;
2566
+ stableId: z.ZodString;
2567
+ }, z.core.$strip>;
2568
+ }, z.core.$strip>], "kind">>;
2569
+ }, z.core.$strip>;
2570
+ blockId: z.ZodOptional<z.ZodString>;
2571
+ }, z.core.$strip>, z.ZodObject<{
2572
+ ok: z.ZodBoolean;
2573
+ problems: z.ZodArray<z.ZodObject<{
2574
+ code: z.ZodEnum<{
2575
+ "source-missing": "source-missing";
2576
+ "reserved-variant": "reserved-variant";
2577
+ "unknown-capability": "unknown-capability";
2578
+ "not-composable": "not-composable";
2579
+ "wrong-device-type": "wrong-device-type";
2580
+ "has-commands": "has-commands";
2581
+ "unknown-field": "unknown-field";
2582
+ "nested-field": "nested-field";
2583
+ "missing-field": "missing-field";
2584
+ "kind-mismatch": "kind-mismatch";
2585
+ "may-be-null": "may-be-null";
2586
+ "source-unreadable": "source-unreadable";
2587
+ "source-capability-missing": "source-capability-missing";
2588
+ "source-field-unknown": "source-field-unknown";
2589
+ "expression-invalid": "expression-invalid";
2590
+ cycle: "cycle";
2591
+ "duplicate-target": "duplicate-target";
2592
+ }>;
2593
+ path: z.ZodString;
2594
+ message: z.ZodString;
2595
+ }, z.core.$strip>>;
2596
+ fields: z.ZodArray<z.ZodObject<{
2597
+ cap: z.ZodString;
2598
+ path: z.ZodString;
2599
+ featureIndex: z.ZodNumber;
2600
+ kind: z.ZodEnum<{
2601
+ string: "string";
2602
+ number: "number";
2603
+ boolean: "boolean";
2604
+ enum: "enum";
2605
+ }>;
2606
+ nullable: z.ZodBoolean;
2607
+ required: z.ZodBoolean;
2608
+ unavailable: z.ZodEnum<{
2609
+ null: "null";
2610
+ offline: "offline";
2611
+ }>;
2612
+ role: z.ZodEnum<{
2613
+ derived: "derived";
2614
+ clock: "clock";
2615
+ constant: "constant";
2616
+ }>;
2617
+ source: z.ZodDiscriminatedUnion<[z.ZodObject<{
2618
+ source: z.ZodObject<{
2619
+ addonId: z.ZodString;
2620
+ stableId: z.ZodString;
2621
+ }, z.core.$strip>;
2622
+ cap: z.ZodString;
2623
+ fieldPath: z.ZodString;
2624
+ kind: z.ZodLiteral<"from">;
2625
+ }, z.core.$strip>, z.ZodObject<{
2626
+ kind: z.ZodLiteral<"expression">;
2627
+ expr: z.ZodString;
2628
+ bindings: z.ZodRecord<z.ZodString, z.ZodDiscriminatedUnion<[z.ZodObject<{
2629
+ source: z.ZodObject<{
2630
+ addonId: z.ZodString;
2631
+ stableId: z.ZodString;
2632
+ }, z.core.$strip>;
2633
+ cap: z.ZodString;
2634
+ fieldPath: z.ZodString;
2635
+ kind: z.ZodLiteral<"from">;
2636
+ }, z.core.$strip>, z.ZodObject<{
2637
+ kind: z.ZodLiteral<"literal">;
2638
+ value: z.ZodUnion<readonly [z.ZodString, z.ZodNumber, z.ZodBoolean, z.ZodNull]>;
2639
+ }, z.core.$strip>], "kind">>;
2640
+ }, z.core.$strip>, z.ZodObject<{
2641
+ kind: z.ZodLiteral<"code">;
2642
+ code: z.ZodString;
2643
+ }, z.core.$strip>], "kind">;
2644
+ reads: z.ZodArray<z.ZodObject<{
2645
+ source: z.ZodObject<{
2646
+ addonId: z.ZodString;
2647
+ stableId: z.ZodString;
2648
+ }, z.core.$strip>;
2649
+ cap: z.ZodString;
2650
+ fieldPath: z.ZodString;
2651
+ }, z.core.$strip>>;
2652
+ }, z.core.$strip>>;
2653
+ }, z.core.$strip>, "mutation">;
315
2654
  };
316
2655
  };
317
2656
  export type ICoreBlocksProvider = InferProvider<typeof coreBlocksCapability>;