@camstack/types 1.1.19 → 1.1.21

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 (36) hide show
  1. package/dist/addon.js +1 -1
  2. package/dist/addon.mjs +1 -1
  3. package/dist/capabilities/battery.cap.d.ts +6 -0
  4. package/dist/capabilities/capability-definition.d.ts +39 -0
  5. package/dist/capabilities/consumables.cap.d.ts +35 -0
  6. package/dist/capabilities/device-manager.cap.d.ts +396 -15
  7. package/dist/capabilities/index.d.ts +1 -1
  8. package/dist/capabilities/pipeline-orchestrator.cap.d.ts +7 -3
  9. package/dist/device/device-binding.d.ts +9 -3
  10. package/dist/device/device-management.d.ts +87 -6
  11. package/dist/device/index.d.ts +2 -2
  12. package/dist/device/schema-fields.d.ts +13 -0
  13. package/dist/expression/ast.d.ts +56 -0
  14. package/dist/expression/builtins.d.ts +19 -0
  15. package/dist/expression/compile.d.ts +17 -0
  16. package/dist/expression/errors.d.ts +16 -0
  17. package/dist/expression/evaluator.d.ts +14 -0
  18. package/dist/expression/index.d.ts +25 -0
  19. package/dist/expression/limits.d.ts +30 -0
  20. package/dist/expression/link-expression.d.ts +44 -0
  21. package/dist/expression/parser.d.ts +12 -0
  22. package/dist/expression/tokenizer.d.ts +38 -0
  23. package/dist/generated/addon-api.d.ts +452 -4
  24. package/dist/generated/device-proxy.d.ts +1 -1
  25. package/dist/generated/method-access-map.d.ts +1 -1
  26. package/dist/generated/system-proxy.d.ts +1 -1
  27. package/dist/index.d.ts +5 -2
  28. package/dist/index.js +1342 -20
  29. package/dist/index.mjs +1313 -21
  30. package/dist/interfaces/agent.d.ts +21 -0
  31. package/dist/{sleep-MHm--th-.mjs → sleep-BO1nweKv.mjs} +1 -0
  32. package/dist/{sleep-BabrCASa.js → sleep-DaQgDq90.js} +1 -0
  33. package/dist/units/convert.d.ts +49 -0
  34. package/dist/units/index.d.ts +8 -0
  35. package/dist/units/unit-table.d.ts +270 -0
  36. package/package.json +1 -1
@@ -19,6 +19,85 @@
19
19
  import { z } from 'zod';
20
20
  import { DeviceType } from '../device/device-type.js';
21
21
  import { StreamSourceEntrySchema } from './schemas/streaming-shared.js';
22
+ export declare const DeviceLinkSchema: z.ZodObject<{
23
+ id: z.ZodString;
24
+ source: z.ZodUnion<readonly [z.ZodObject<{
25
+ kind: z.ZodOptional<z.ZodLiteral<"field">>;
26
+ sourceKey: z.ZodString;
27
+ cap: z.ZodString;
28
+ fieldPath: z.ZodString;
29
+ }, z.core.$strip>, z.ZodObject<{
30
+ kind: z.ZodLiteral<"literal">;
31
+ value: z.ZodUnion<readonly [z.ZodString, z.ZodNumber, z.ZodBoolean, z.ZodNull]>;
32
+ }, z.core.$strip>, z.ZodObject<{
33
+ kind: z.ZodLiteral<"global">;
34
+ sourceStableId: z.ZodString;
35
+ cap: z.ZodString;
36
+ fieldPath: z.ZodString;
37
+ }, z.core.$strip>, z.ZodObject<{
38
+ kind: z.ZodLiteral<"expression">;
39
+ expr: z.ZodString;
40
+ bindings: z.ZodRecord<z.ZodString, z.ZodUnion<readonly [z.ZodObject<{
41
+ kind: z.ZodOptional<z.ZodLiteral<"field">>;
42
+ sourceKey: z.ZodString;
43
+ cap: z.ZodString;
44
+ fieldPath: z.ZodString;
45
+ }, z.core.$strip>, z.ZodObject<{
46
+ kind: z.ZodLiteral<"literal">;
47
+ value: z.ZodUnion<readonly [z.ZodString, z.ZodNumber, z.ZodBoolean, z.ZodNull]>;
48
+ }, z.core.$strip>, z.ZodObject<{
49
+ kind: z.ZodLiteral<"global">;
50
+ sourceStableId: z.ZodString;
51
+ cap: z.ZodString;
52
+ fieldPath: z.ZodString;
53
+ }, z.core.$strip>]>>;
54
+ }, z.core.$strip>]>;
55
+ target: z.ZodObject<{
56
+ cap: z.ZodString;
57
+ fieldPath: z.ZodString;
58
+ itemKey: z.ZodOptional<z.ZodString>;
59
+ }, z.core.$strip>;
60
+ transform: z.ZodOptional<z.ZodDiscriminatedUnion<[z.ZodObject<{
61
+ kind: z.ZodLiteral<"identity">;
62
+ }, z.core.$strip>, z.ZodObject<{
63
+ kind: z.ZodLiteral<"enum-map">;
64
+ mapping: z.ZodRecord<z.ZodString, z.ZodUnion<readonly [z.ZodString, z.ZodNumber, z.ZodBoolean]>>;
65
+ fallback: z.ZodOptional<z.ZodUnion<readonly [z.ZodString, z.ZodNumber, z.ZodBoolean]>>;
66
+ }, z.core.$strip>, z.ZodObject<{
67
+ kind: z.ZodLiteral<"linear">;
68
+ scale: z.ZodNumber;
69
+ offset: z.ZodNumber;
70
+ clamp: z.ZodOptional<z.ZodReadonly<z.ZodTuple<[z.ZodNumber, z.ZodNumber], null>>>;
71
+ }, z.core.$strip>], "kind">>;
72
+ }, z.core.$strip>;
73
+ /** Cap-wire shape of a per-cap display refinement — mirrors
74
+ * `DeviceCapDisplayOverride` in `device-management.ts`. */
75
+ export declare const DeviceCapDisplayOverrideSchema: z.ZodObject<{
76
+ unit: z.ZodOptional<z.ZodString>;
77
+ precision: z.ZodOptional<z.ZodNumber>;
78
+ }, z.core.$strip>;
79
+ /** Cap-wire shape of an operator-authored per-device display override —
80
+ * mirrors `DeviceDisplayOverride` in `device-management.ts`. `precision`
81
+ * bounds mirror `numeric-sensor.cap.ts` (`int 0-10`). */
82
+ export declare const DeviceDisplayOverrideSchema: z.ZodObject<{
83
+ icon: z.ZodOptional<z.ZodString>;
84
+ label: z.ZodOptional<z.ZodString>;
85
+ unit: z.ZodOptional<z.ZodString>;
86
+ precision: z.ZodOptional<z.ZodNumber>;
87
+ hidden: z.ZodOptional<z.ZodBoolean>;
88
+ perCap: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodObject<{
89
+ unit: z.ZodOptional<z.ZodString>;
90
+ precision: z.ZodOptional<z.ZodNumber>;
91
+ }, z.core.$strip>>>;
92
+ }, z.core.$strip>;
93
+ /** Cap-wire shape of a per-role display default — mirrors `RoleDisplayDefault`
94
+ * in `device-management.ts`. Keyed by `DeviceRole` string (role strings cross
95
+ * the wire as plain strings everywhere else — cf. `DeviceInfoSchema.role`). */
96
+ export declare const RoleDisplayDefaultSchema: z.ZodObject<{
97
+ unit: z.ZodOptional<z.ZodString>;
98
+ precision: z.ZodOptional<z.ZodNumber>;
99
+ icon: z.ZodOptional<z.ZodString>;
100
+ }, z.core.$strip>;
22
101
  /**
23
102
  * Serializable projection of a live IDevice.
24
103
  * Returned by listAll, getDevice, getChildren.
@@ -57,11 +136,37 @@ export declare const DeviceInfoSchema: z.ZodObject<{
57
136
  }, z.core.$strip>>>>;
58
137
  deviceLinks: z.ZodOptional<z.ZodReadonly<z.ZodArray<z.ZodObject<{
59
138
  id: z.ZodString;
60
- source: z.ZodObject<{
139
+ source: z.ZodUnion<readonly [z.ZodObject<{
140
+ kind: z.ZodOptional<z.ZodLiteral<"field">>;
61
141
  sourceKey: z.ZodString;
62
142
  cap: z.ZodString;
63
143
  fieldPath: z.ZodString;
64
- }, z.core.$strip>;
144
+ }, z.core.$strip>, z.ZodObject<{
145
+ kind: z.ZodLiteral<"literal">;
146
+ value: z.ZodUnion<readonly [z.ZodString, z.ZodNumber, z.ZodBoolean, z.ZodNull]>;
147
+ }, z.core.$strip>, z.ZodObject<{
148
+ kind: z.ZodLiteral<"global">;
149
+ sourceStableId: z.ZodString;
150
+ cap: z.ZodString;
151
+ fieldPath: z.ZodString;
152
+ }, z.core.$strip>, z.ZodObject<{
153
+ kind: z.ZodLiteral<"expression">;
154
+ expr: z.ZodString;
155
+ bindings: z.ZodRecord<z.ZodString, z.ZodUnion<readonly [z.ZodObject<{
156
+ kind: z.ZodOptional<z.ZodLiteral<"field">>;
157
+ sourceKey: z.ZodString;
158
+ cap: z.ZodString;
159
+ fieldPath: z.ZodString;
160
+ }, z.core.$strip>, z.ZodObject<{
161
+ kind: z.ZodLiteral<"literal">;
162
+ value: z.ZodUnion<readonly [z.ZodString, z.ZodNumber, z.ZodBoolean, z.ZodNull]>;
163
+ }, z.core.$strip>, z.ZodObject<{
164
+ kind: z.ZodLiteral<"global">;
165
+ sourceStableId: z.ZodString;
166
+ cap: z.ZodString;
167
+ fieldPath: z.ZodString;
168
+ }, z.core.$strip>]>>;
169
+ }, z.core.$strip>]>;
65
170
  target: z.ZodObject<{
66
171
  cap: z.ZodString;
67
172
  fieldPath: z.ZodString;
@@ -80,6 +185,17 @@ export declare const DeviceInfoSchema: z.ZodObject<{
80
185
  clamp: z.ZodOptional<z.ZodReadonly<z.ZodTuple<[z.ZodNumber, z.ZodNumber], null>>>;
81
186
  }, z.core.$strip>], "kind">>;
82
187
  }, z.core.$strip>>>>;
188
+ display: z.ZodOptional<z.ZodObject<{
189
+ icon: z.ZodOptional<z.ZodString>;
190
+ label: z.ZodOptional<z.ZodString>;
191
+ unit: z.ZodOptional<z.ZodString>;
192
+ precision: z.ZodOptional<z.ZodNumber>;
193
+ hidden: z.ZodOptional<z.ZodBoolean>;
194
+ perCap: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodObject<{
195
+ unit: z.ZodOptional<z.ZodString>;
196
+ precision: z.ZodOptional<z.ZodNumber>;
197
+ }, z.core.$strip>>>;
198
+ }, z.core.$strip>>;
83
199
  }, z.core.$strip>;
84
200
  export declare const ConfigEntrySchema: z.ZodObject<{
85
201
  key: z.ZodString;
@@ -129,11 +245,37 @@ export declare const DeviceMetaSchema: z.ZodObject<{
129
245
  }, z.core.$strip>>>>;
130
246
  deviceLinks: z.ZodOptional<z.ZodReadonly<z.ZodArray<z.ZodObject<{
131
247
  id: z.ZodString;
132
- source: z.ZodObject<{
248
+ source: z.ZodUnion<readonly [z.ZodObject<{
249
+ kind: z.ZodOptional<z.ZodLiteral<"field">>;
133
250
  sourceKey: z.ZodString;
134
251
  cap: z.ZodString;
135
252
  fieldPath: z.ZodString;
136
- }, z.core.$strip>;
253
+ }, z.core.$strip>, z.ZodObject<{
254
+ kind: z.ZodLiteral<"literal">;
255
+ value: z.ZodUnion<readonly [z.ZodString, z.ZodNumber, z.ZodBoolean, z.ZodNull]>;
256
+ }, z.core.$strip>, z.ZodObject<{
257
+ kind: z.ZodLiteral<"global">;
258
+ sourceStableId: z.ZodString;
259
+ cap: z.ZodString;
260
+ fieldPath: z.ZodString;
261
+ }, z.core.$strip>, z.ZodObject<{
262
+ kind: z.ZodLiteral<"expression">;
263
+ expr: z.ZodString;
264
+ bindings: z.ZodRecord<z.ZodString, z.ZodUnion<readonly [z.ZodObject<{
265
+ kind: z.ZodOptional<z.ZodLiteral<"field">>;
266
+ sourceKey: z.ZodString;
267
+ cap: z.ZodString;
268
+ fieldPath: z.ZodString;
269
+ }, z.core.$strip>, z.ZodObject<{
270
+ kind: z.ZodLiteral<"literal">;
271
+ value: z.ZodUnion<readonly [z.ZodString, z.ZodNumber, z.ZodBoolean, z.ZodNull]>;
272
+ }, z.core.$strip>, z.ZodObject<{
273
+ kind: z.ZodLiteral<"global">;
274
+ sourceStableId: z.ZodString;
275
+ cap: z.ZodString;
276
+ fieldPath: z.ZodString;
277
+ }, z.core.$strip>]>>;
278
+ }, z.core.$strip>]>;
137
279
  target: z.ZodObject<{
138
280
  cap: z.ZodString;
139
281
  fieldPath: z.ZodString;
@@ -153,6 +295,17 @@ export declare const DeviceMetaSchema: z.ZodObject<{
153
295
  }, z.core.$strip>], "kind">>;
154
296
  }, z.core.$strip>>>>;
155
297
  role: z.ZodOptional<z.ZodNullable<z.ZodString>>;
298
+ display: z.ZodOptional<z.ZodObject<{
299
+ icon: z.ZodOptional<z.ZodString>;
300
+ label: z.ZodOptional<z.ZodString>;
301
+ unit: z.ZodOptional<z.ZodString>;
302
+ precision: z.ZodOptional<z.ZodNumber>;
303
+ hidden: z.ZodOptional<z.ZodBoolean>;
304
+ perCap: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodObject<{
305
+ unit: z.ZodOptional<z.ZodString>;
306
+ precision: z.ZodOptional<z.ZodNumber>;
307
+ }, z.core.$strip>>>;
308
+ }, z.core.$strip>>;
156
309
  }, z.core.$strip>;
157
310
  export declare const DeviceRegisterPayloadSchema: z.ZodObject<{
158
311
  addonId: z.ZodString;
@@ -254,11 +407,37 @@ export declare const deviceManagerCapability: {
254
407
  }, z.core.$strip>>>>;
255
408
  deviceLinks: z.ZodOptional<z.ZodReadonly<z.ZodArray<z.ZodObject<{
256
409
  id: z.ZodString;
257
- source: z.ZodObject<{
410
+ source: z.ZodUnion<readonly [z.ZodObject<{
411
+ kind: z.ZodOptional<z.ZodLiteral<"field">>;
258
412
  sourceKey: z.ZodString;
259
413
  cap: z.ZodString;
260
414
  fieldPath: z.ZodString;
261
- }, z.core.$strip>;
415
+ }, z.core.$strip>, z.ZodObject<{
416
+ kind: z.ZodLiteral<"literal">;
417
+ value: z.ZodUnion<readonly [z.ZodString, z.ZodNumber, z.ZodBoolean, z.ZodNull]>;
418
+ }, z.core.$strip>, z.ZodObject<{
419
+ kind: z.ZodLiteral<"global">;
420
+ sourceStableId: z.ZodString;
421
+ cap: z.ZodString;
422
+ fieldPath: z.ZodString;
423
+ }, z.core.$strip>, z.ZodObject<{
424
+ kind: z.ZodLiteral<"expression">;
425
+ expr: z.ZodString;
426
+ bindings: z.ZodRecord<z.ZodString, z.ZodUnion<readonly [z.ZodObject<{
427
+ kind: z.ZodOptional<z.ZodLiteral<"field">>;
428
+ sourceKey: z.ZodString;
429
+ cap: z.ZodString;
430
+ fieldPath: z.ZodString;
431
+ }, z.core.$strip>, z.ZodObject<{
432
+ kind: z.ZodLiteral<"literal">;
433
+ value: z.ZodUnion<readonly [z.ZodString, z.ZodNumber, z.ZodBoolean, z.ZodNull]>;
434
+ }, z.core.$strip>, z.ZodObject<{
435
+ kind: z.ZodLiteral<"global">;
436
+ sourceStableId: z.ZodString;
437
+ cap: z.ZodString;
438
+ fieldPath: z.ZodString;
439
+ }, z.core.$strip>]>>;
440
+ }, z.core.$strip>]>;
262
441
  target: z.ZodObject<{
263
442
  cap: z.ZodString;
264
443
  fieldPath: z.ZodString;
@@ -278,6 +457,17 @@ export declare const deviceManagerCapability: {
278
457
  }, z.core.$strip>], "kind">>;
279
458
  }, z.core.$strip>>>>;
280
459
  role: z.ZodOptional<z.ZodNullable<z.ZodString>>;
460
+ display: z.ZodOptional<z.ZodObject<{
461
+ icon: z.ZodOptional<z.ZodString>;
462
+ label: z.ZodOptional<z.ZodString>;
463
+ unit: z.ZodOptional<z.ZodString>;
464
+ precision: z.ZodOptional<z.ZodNumber>;
465
+ hidden: z.ZodOptional<z.ZodBoolean>;
466
+ perCap: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodObject<{
467
+ unit: z.ZodOptional<z.ZodString>;
468
+ precision: z.ZodOptional<z.ZodNumber>;
469
+ }, z.core.$strip>>>;
470
+ }, z.core.$strip>>;
281
471
  }, z.core.$strip>>, import("./capability-definition.js").CapabilityMethodKind>;
282
472
  /** Update the operator-edited display name. Persists to the meta
283
473
  * row + emits `EventCategory.DeviceMetaChanged`. */
@@ -345,11 +535,37 @@ export declare const deviceManagerCapability: {
345
535
  deviceId: z.ZodNumber;
346
536
  deviceLinks: z.ZodReadonly<z.ZodArray<z.ZodObject<{
347
537
  id: z.ZodString;
348
- source: z.ZodObject<{
538
+ source: z.ZodUnion<readonly [z.ZodObject<{
539
+ kind: z.ZodOptional<z.ZodLiteral<"field">>;
349
540
  sourceKey: z.ZodString;
350
541
  cap: z.ZodString;
351
542
  fieldPath: z.ZodString;
352
- }, z.core.$strip>;
543
+ }, z.core.$strip>, z.ZodObject<{
544
+ kind: z.ZodLiteral<"literal">;
545
+ value: z.ZodUnion<readonly [z.ZodString, z.ZodNumber, z.ZodBoolean, z.ZodNull]>;
546
+ }, z.core.$strip>, z.ZodObject<{
547
+ kind: z.ZodLiteral<"global">;
548
+ sourceStableId: z.ZodString;
549
+ cap: z.ZodString;
550
+ fieldPath: z.ZodString;
551
+ }, z.core.$strip>, z.ZodObject<{
552
+ kind: z.ZodLiteral<"expression">;
553
+ expr: z.ZodString;
554
+ bindings: z.ZodRecord<z.ZodString, z.ZodUnion<readonly [z.ZodObject<{
555
+ kind: z.ZodOptional<z.ZodLiteral<"field">>;
556
+ sourceKey: z.ZodString;
557
+ cap: z.ZodString;
558
+ fieldPath: z.ZodString;
559
+ }, z.core.$strip>, z.ZodObject<{
560
+ kind: z.ZodLiteral<"literal">;
561
+ value: z.ZodUnion<readonly [z.ZodString, z.ZodNumber, z.ZodBoolean, z.ZodNull]>;
562
+ }, z.core.$strip>, z.ZodObject<{
563
+ kind: z.ZodLiteral<"global">;
564
+ sourceStableId: z.ZodString;
565
+ cap: z.ZodString;
566
+ fieldPath: z.ZodString;
567
+ }, z.core.$strip>]>>;
568
+ }, z.core.$strip>]>;
353
569
  target: z.ZodObject<{
354
570
  cap: z.ZodString;
355
571
  fieldPath: z.ZodString;
@@ -369,10 +585,57 @@ export declare const deviceManagerCapability: {
369
585
  }, z.core.$strip>], "kind">>;
370
586
  }, z.core.$strip>>>;
371
587
  }, z.core.$strip>, z.ZodVoid, "mutation">;
588
+ /** Set (or clear) the per-device display override on the meta row. Mirrors
589
+ * `setChildLayout` persistence; `null` clears the override entirely. The
590
+ * override unit(s) are normalized (`normalizeUnit`) at write so the render
591
+ * path's `UNIT_TABLE` lookups always hit canonical spellings. Persisted,
592
+ * projected, and preserved across re-register/restore. Idempotent. */
593
+ readonly setDisplay: import("./capability-definition.js").CapabilityMethodSchema<z.ZodObject<{
594
+ deviceId: z.ZodNumber;
595
+ display: z.ZodNullable<z.ZodObject<{
596
+ icon: z.ZodOptional<z.ZodString>;
597
+ label: z.ZodOptional<z.ZodString>;
598
+ unit: z.ZodOptional<z.ZodString>;
599
+ precision: z.ZodOptional<z.ZodNumber>;
600
+ hidden: z.ZodOptional<z.ZodBoolean>;
601
+ perCap: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodObject<{
602
+ unit: z.ZodOptional<z.ZodString>;
603
+ precision: z.ZodOptional<z.ZodNumber>;
604
+ }, z.core.$strip>>>;
605
+ }, z.core.$strip>>;
606
+ }, z.core.$strip>, z.ZodVoid, "mutation">;
607
+ /** Read the operator-authored per-role display defaults (unit/precision/
608
+ * icon), keyed by `DeviceRole` string. Empty record when none set. */
609
+ readonly getRoleDisplayDefaults: import("./capability-definition.js").CapabilityMethodSchema<z.ZodObject<{}, z.core.$strip>, z.ZodObject<{
610
+ defaults: z.ZodRecord<z.ZodString, z.ZodObject<{
611
+ unit: z.ZodOptional<z.ZodString>;
612
+ precision: z.ZodOptional<z.ZodNumber>;
613
+ icon: z.ZodOptional<z.ZodString>;
614
+ }, z.core.$strip>>;
615
+ }, z.core.$strip>, "query">;
616
+ /** Replace the per-role display defaults whole-record (full replace — the
617
+ * caller sends the complete map). Override unit(s) are normalized at write.
618
+ * Not per-device, so nothing is emitted; the UI invalidates its own query
619
+ * on mutate. */
620
+ readonly setRoleDisplayDefaults: import("./capability-definition.js").CapabilityMethodSchema<z.ZodObject<{
621
+ defaults: z.ZodRecord<z.ZodString, z.ZodObject<{
622
+ unit: z.ZodOptional<z.ZodString>;
623
+ precision: z.ZodOptional<z.ZodNumber>;
624
+ icon: z.ZodOptional<z.ZodString>;
625
+ }, z.core.$strip>>;
626
+ }, z.core.$strip>, z.ZodVoid, "mutation">;
372
627
  /** List the wireable status-schema fields per cap bound to a device.
373
- * Powers the Wiring tab's field pickers. Caps without a status schema are omitted. */
628
+ * Powers the Wiring tab's field pickers. Caps without a status schema are
629
+ * omitted. Item-array caps (`status.itemArray`, e.g. consumables) also
630
+ * emit their per-item fields tagged `item: true` (a link targeting one
631
+ * must carry a `target.itemKey`) plus the cap-level `itemArray`
632
+ * descriptor. `includeSynthesizable: true` (TARGET pickers only) unions
633
+ * in unbound device-scoped caps that declare `status.empty` and match
634
+ * the device's type — so the FIRST link to a synthesize-only cap
635
+ * (consumables on an HA vacuum) can be authored. */
374
636
  readonly getWireableFields: import("./capability-definition.js").CapabilityMethodSchema<z.ZodObject<{
375
637
  deviceId: z.ZodNumber;
638
+ includeSynthesizable: z.ZodOptional<z.ZodBoolean>;
376
639
  }, z.core.$strip>, z.ZodObject<{
377
640
  caps: z.ZodReadonly<z.ZodArray<z.ZodObject<{
378
641
  cap: z.ZodString;
@@ -385,7 +648,12 @@ export declare const deviceManagerCapability: {
385
648
  enum: "enum";
386
649
  }>;
387
650
  enumValues: z.ZodOptional<z.ZodArray<z.ZodString>>;
651
+ item: z.ZodOptional<z.ZodBoolean>;
388
652
  }, z.core.$strip>>>;
653
+ itemArray: z.ZodOptional<z.ZodObject<{
654
+ path: z.ZodString;
655
+ keyField: z.ZodString;
656
+ }, z.core.$strip>>;
389
657
  }, z.core.$strip>>>;
390
658
  }, z.core.$strip>, "query">;
391
659
  /** Stamp (or update) the semantic role on the device's meta row.
@@ -501,11 +769,37 @@ export declare const deviceManagerCapability: {
501
769
  }, z.core.$strip>>>>;
502
770
  deviceLinks: z.ZodOptional<z.ZodReadonly<z.ZodArray<z.ZodObject<{
503
771
  id: z.ZodString;
504
- source: z.ZodObject<{
772
+ source: z.ZodUnion<readonly [z.ZodObject<{
773
+ kind: z.ZodOptional<z.ZodLiteral<"field">>;
505
774
  sourceKey: z.ZodString;
506
775
  cap: z.ZodString;
507
776
  fieldPath: z.ZodString;
508
- }, z.core.$strip>;
777
+ }, z.core.$strip>, z.ZodObject<{
778
+ kind: z.ZodLiteral<"literal">;
779
+ value: z.ZodUnion<readonly [z.ZodString, z.ZodNumber, z.ZodBoolean, z.ZodNull]>;
780
+ }, z.core.$strip>, z.ZodObject<{
781
+ kind: z.ZodLiteral<"global">;
782
+ sourceStableId: z.ZodString;
783
+ cap: z.ZodString;
784
+ fieldPath: z.ZodString;
785
+ }, z.core.$strip>, z.ZodObject<{
786
+ kind: z.ZodLiteral<"expression">;
787
+ expr: z.ZodString;
788
+ bindings: z.ZodRecord<z.ZodString, z.ZodUnion<readonly [z.ZodObject<{
789
+ kind: z.ZodOptional<z.ZodLiteral<"field">>;
790
+ sourceKey: z.ZodString;
791
+ cap: z.ZodString;
792
+ fieldPath: z.ZodString;
793
+ }, z.core.$strip>, z.ZodObject<{
794
+ kind: z.ZodLiteral<"literal">;
795
+ value: z.ZodUnion<readonly [z.ZodString, z.ZodNumber, z.ZodBoolean, z.ZodNull]>;
796
+ }, z.core.$strip>, z.ZodObject<{
797
+ kind: z.ZodLiteral<"global">;
798
+ sourceStableId: z.ZodString;
799
+ cap: z.ZodString;
800
+ fieldPath: z.ZodString;
801
+ }, z.core.$strip>]>>;
802
+ }, z.core.$strip>]>;
509
803
  target: z.ZodObject<{
510
804
  cap: z.ZodString;
511
805
  fieldPath: z.ZodString;
@@ -524,6 +818,17 @@ export declare const deviceManagerCapability: {
524
818
  clamp: z.ZodOptional<z.ZodReadonly<z.ZodTuple<[z.ZodNumber, z.ZodNumber], null>>>;
525
819
  }, z.core.$strip>], "kind">>;
526
820
  }, z.core.$strip>>>>;
821
+ display: z.ZodOptional<z.ZodObject<{
822
+ icon: z.ZodOptional<z.ZodString>;
823
+ label: z.ZodOptional<z.ZodString>;
824
+ unit: z.ZodOptional<z.ZodString>;
825
+ precision: z.ZodOptional<z.ZodNumber>;
826
+ hidden: z.ZodOptional<z.ZodBoolean>;
827
+ perCap: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodObject<{
828
+ unit: z.ZodOptional<z.ZodString>;
829
+ precision: z.ZodOptional<z.ZodNumber>;
830
+ }, z.core.$strip>>>;
831
+ }, z.core.$strip>>;
527
832
  }, z.core.$strip>>, import("./capability-definition.js").CapabilityMethodKind>;
528
833
  /** Get a single device by numeric deviceId. */
529
834
  readonly getDevice: import("./capability-definition.js").CapabilityMethodSchema<z.ZodObject<{
@@ -561,11 +866,37 @@ export declare const deviceManagerCapability: {
561
866
  }, z.core.$strip>>>>;
562
867
  deviceLinks: z.ZodOptional<z.ZodReadonly<z.ZodArray<z.ZodObject<{
563
868
  id: z.ZodString;
564
- source: z.ZodObject<{
869
+ source: z.ZodUnion<readonly [z.ZodObject<{
870
+ kind: z.ZodOptional<z.ZodLiteral<"field">>;
565
871
  sourceKey: z.ZodString;
566
872
  cap: z.ZodString;
567
873
  fieldPath: z.ZodString;
568
- }, z.core.$strip>;
874
+ }, z.core.$strip>, z.ZodObject<{
875
+ kind: z.ZodLiteral<"literal">;
876
+ value: z.ZodUnion<readonly [z.ZodString, z.ZodNumber, z.ZodBoolean, z.ZodNull]>;
877
+ }, z.core.$strip>, z.ZodObject<{
878
+ kind: z.ZodLiteral<"global">;
879
+ sourceStableId: z.ZodString;
880
+ cap: z.ZodString;
881
+ fieldPath: z.ZodString;
882
+ }, z.core.$strip>, z.ZodObject<{
883
+ kind: z.ZodLiteral<"expression">;
884
+ expr: z.ZodString;
885
+ bindings: z.ZodRecord<z.ZodString, z.ZodUnion<readonly [z.ZodObject<{
886
+ kind: z.ZodOptional<z.ZodLiteral<"field">>;
887
+ sourceKey: z.ZodString;
888
+ cap: z.ZodString;
889
+ fieldPath: z.ZodString;
890
+ }, z.core.$strip>, z.ZodObject<{
891
+ kind: z.ZodLiteral<"literal">;
892
+ value: z.ZodUnion<readonly [z.ZodString, z.ZodNumber, z.ZodBoolean, z.ZodNull]>;
893
+ }, z.core.$strip>, z.ZodObject<{
894
+ kind: z.ZodLiteral<"global">;
895
+ sourceStableId: z.ZodString;
896
+ cap: z.ZodString;
897
+ fieldPath: z.ZodString;
898
+ }, z.core.$strip>]>>;
899
+ }, z.core.$strip>]>;
569
900
  target: z.ZodObject<{
570
901
  cap: z.ZodString;
571
902
  fieldPath: z.ZodString;
@@ -584,6 +915,17 @@ export declare const deviceManagerCapability: {
584
915
  clamp: z.ZodOptional<z.ZodReadonly<z.ZodTuple<[z.ZodNumber, z.ZodNumber], null>>>;
585
916
  }, z.core.$strip>], "kind">>;
586
917
  }, z.core.$strip>>>>;
918
+ display: z.ZodOptional<z.ZodObject<{
919
+ icon: z.ZodOptional<z.ZodString>;
920
+ label: z.ZodOptional<z.ZodString>;
921
+ unit: z.ZodOptional<z.ZodString>;
922
+ precision: z.ZodOptional<z.ZodNumber>;
923
+ hidden: z.ZodOptional<z.ZodBoolean>;
924
+ perCap: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodObject<{
925
+ unit: z.ZodOptional<z.ZodString>;
926
+ precision: z.ZodOptional<z.ZodNumber>;
927
+ }, z.core.$strip>>>;
928
+ }, z.core.$strip>>;
587
929
  }, z.core.$strip>>, import("./capability-definition.js").CapabilityMethodKind>;
588
930
  /** List children of a parent device (by parent numeric id). */
589
931
  readonly getChildren: import("./capability-definition.js").CapabilityMethodSchema<z.ZodObject<{
@@ -621,11 +963,37 @@ export declare const deviceManagerCapability: {
621
963
  }, z.core.$strip>>>>;
622
964
  deviceLinks: z.ZodOptional<z.ZodReadonly<z.ZodArray<z.ZodObject<{
623
965
  id: z.ZodString;
624
- source: z.ZodObject<{
966
+ source: z.ZodUnion<readonly [z.ZodObject<{
967
+ kind: z.ZodOptional<z.ZodLiteral<"field">>;
625
968
  sourceKey: z.ZodString;
626
969
  cap: z.ZodString;
627
970
  fieldPath: z.ZodString;
628
- }, z.core.$strip>;
971
+ }, z.core.$strip>, z.ZodObject<{
972
+ kind: z.ZodLiteral<"literal">;
973
+ value: z.ZodUnion<readonly [z.ZodString, z.ZodNumber, z.ZodBoolean, z.ZodNull]>;
974
+ }, z.core.$strip>, z.ZodObject<{
975
+ kind: z.ZodLiteral<"global">;
976
+ sourceStableId: z.ZodString;
977
+ cap: z.ZodString;
978
+ fieldPath: z.ZodString;
979
+ }, z.core.$strip>, z.ZodObject<{
980
+ kind: z.ZodLiteral<"expression">;
981
+ expr: z.ZodString;
982
+ bindings: z.ZodRecord<z.ZodString, z.ZodUnion<readonly [z.ZodObject<{
983
+ kind: z.ZodOptional<z.ZodLiteral<"field">>;
984
+ sourceKey: z.ZodString;
985
+ cap: z.ZodString;
986
+ fieldPath: z.ZodString;
987
+ }, z.core.$strip>, z.ZodObject<{
988
+ kind: z.ZodLiteral<"literal">;
989
+ value: z.ZodUnion<readonly [z.ZodString, z.ZodNumber, z.ZodBoolean, z.ZodNull]>;
990
+ }, z.core.$strip>, z.ZodObject<{
991
+ kind: z.ZodLiteral<"global">;
992
+ sourceStableId: z.ZodString;
993
+ cap: z.ZodString;
994
+ fieldPath: z.ZodString;
995
+ }, z.core.$strip>]>>;
996
+ }, z.core.$strip>]>;
629
997
  target: z.ZodObject<{
630
998
  cap: z.ZodString;
631
999
  fieldPath: z.ZodString;
@@ -644,6 +1012,17 @@ export declare const deviceManagerCapability: {
644
1012
  clamp: z.ZodOptional<z.ZodReadonly<z.ZodTuple<[z.ZodNumber, z.ZodNumber], null>>>;
645
1013
  }, z.core.$strip>], "kind">>;
646
1014
  }, z.core.$strip>>>>;
1015
+ display: z.ZodOptional<z.ZodObject<{
1016
+ icon: z.ZodOptional<z.ZodString>;
1017
+ label: z.ZodOptional<z.ZodString>;
1018
+ unit: z.ZodOptional<z.ZodString>;
1019
+ precision: z.ZodOptional<z.ZodNumber>;
1020
+ hidden: z.ZodOptional<z.ZodBoolean>;
1021
+ perCap: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodObject<{
1022
+ unit: z.ZodOptional<z.ZodString>;
1023
+ precision: z.ZodOptional<z.ZodNumber>;
1024
+ }, z.core.$strip>>>;
1025
+ }, z.core.$strip>>;
647
1026
  }, z.core.$strip>>, import("./capability-definition.js").CapabilityMethodKind>;
648
1027
  /** Get stream sources for a camera device. */
649
1028
  readonly getStreamSources: import("./capability-definition.js").CapabilityMethodSchema<z.ZodObject<{
@@ -754,6 +1133,7 @@ export declare const deviceManagerCapability: {
754
1133
  capName: z.ZodString;
755
1134
  kind: z.ZodEnum<{
756
1135
  native: "native";
1136
+ linked: "linked";
757
1137
  wrapped: "wrapped";
758
1138
  }>;
759
1139
  providerAddonId: z.ZodString;
@@ -775,6 +1155,7 @@ export declare const deviceManagerCapability: {
775
1155
  capName: z.ZodString;
776
1156
  kind: z.ZodEnum<{
777
1157
  native: "native";
1158
+ linked: "linked";
778
1159
  wrapped: "wrapped";
779
1160
  }>;
780
1161
  providerAddonId: z.ZodString;
@@ -37,7 +37,7 @@ export { ArchiveEntrySchema, ArchiveManifestSchema, BackupDestinationInfoSchema,
37
37
  export { BrokerAddInputSchema, BrokerGetStateInputSchema, type BrokerInfo as UnifiedBrokerInfo, BrokerInfoSchema as UnifiedBrokerInfoSchema, type BrokerProviderInfo, BrokerProviderInfoSchema, BrokerPublishInputSchema, BrokerRegistryStatusSchema, type BrokerStatus as UnifiedBrokerStatus, BrokerStatusEnum, BrokerSubscribeInputSchema, BrokerSubscribeResultSchema, BrokerTestConnectionResultSchema, BrokerUnsubscribeInputSchema, brokerCapability, type IBrokerProvider, } from './broker.cap.js';
38
38
  export { cameraPipelineConfigCapability, type ICameraPipelineConfigProvider, } from './camera-pipeline-config.cap.js';
39
39
  export { cameraStreamsCapability, type ICameraStreamsProvider, type PickedCamStream, PickedCamStreamSchema, PickStreamPreferencesSchema, PickStreamRequirementsSchema, type StreamCodec, StreamCodecSchema, } from './camera-streams.cap.js';
40
- export type { CapabilityDefinition, CapabilityEventSchema, CapabilityMethodAuth, CapabilityMethodKind, CapabilityMethodOptions, CapabilityMethodSchema, CapabilityMountHint, CapabilityMountKind, DeviceConfigDerivedFormUi, DeviceConfigSpec, DeviceConfigUiSpec, DeviceConfigWidgetUi, DeviceSettingsContribution, InferDeviceProxyCap, InferEvents, InferName, InferNativeProvider, InferProvider, InferRuntimeState, ProviderKind, UiContribution, UiContributionKind, UiContributionRemote, } from './capability-definition.js';
40
+ export type { CapabilityDefinition, CapabilityEventSchema, CapabilityMethodAuth, CapabilityMethodKind, CapabilityMethodOptions, CapabilityMethodSchema, CapabilityMountHint, CapabilityMountKind, CapabilityStatusItemArray, CapabilityStatusKind, CapabilityStatusSchema, DeviceConfigDerivedFormUi, DeviceConfigSpec, DeviceConfigUiSpec, DeviceConfigWidgetUi, DeviceSettingsContribution, InferDeviceProxyCap, InferEvents, InferName, InferNativeProvider, InferProvider, InferRuntimeState, ProviderKind, UiContribution, UiContributionKind, UiContributionRemote, } from './capability-definition.js';
41
41
  export { DEVICE_SETTINGS_CONTRIBUTION_METHODS, DEVICE_STATUS_METHOD, event, expandCapMethods, isDeviceConfigCap, method, resolveCapMount, } from './capability-definition.js';
42
42
  export * from './custom-actions.js';
43
43
  export type { CustomModelDescriptor, ICustomModelRegistryProvider, } from './custom-model-registry.cap.js';
@@ -459,7 +459,10 @@ export declare const pipelineOrchestratorCapability: {
459
459
  readonly methods: {
460
460
  /**
461
461
  * Pin a camera's pipeline to a specific agent (L1 affinity).
462
- * The orchestrator re-evaluates the assignment immediately.
462
+ * The orchestrator re-evaluates the assignment immediately and persists
463
+ * the pin under the canonical `pipelineNodeId` device-store key (the
464
+ * legacy `preferredAgent` key is nulled on write and kept only as a
465
+ * read-only fallback for stores written before the unification).
463
466
  */
464
467
  readonly assignPipeline: import("./capability-definition.js").CapabilityMethodSchema<z.ZodObject<{
465
468
  deviceId: z.ZodNumber;
@@ -469,8 +472,9 @@ export declare const pipelineOrchestratorCapability: {
469
472
  }, z.core.$strip>, "mutation">;
470
473
  /**
471
474
  * Clear a camera's pipeline pin and let the auto-balancer re-pick
472
- * the optimal agent. The orchestrator persists `preferredAgent=null`
473
- * (and `pipelineNodeId='auto'`), then re-runs the balancer with the
475
+ * the optimal agent. The orchestrator persists the canonical
476
+ * `pipelineNodeId='auto'` (and nulls the legacy `preferredAgent`),
477
+ * then re-runs the balancer with the
474
478
  * cached `RunnerCameraConfig` and migrates only when the chosen
475
479
  * node differs. The camera stays in `getPipelineAssignments()` —
476
480
  * just with `pinned=false`. If no runner is currently available
@@ -6,13 +6,19 @@
6
6
  */
7
7
  export interface DeviceBindingEntry {
8
8
  capName: string;
9
- kind: 'native' | 'wrapped';
9
+ /** `native`/`wrapped` = a real provider serves the cap. `linked` = the cap
10
+ * is SYNTHESIZED from device-links (no provider — the getStatus dispatcher
11
+ * routes to device-manager's resolveLinkedStatus). UI metadata only —
12
+ * consumers must never branch on it for routing (D13). */
13
+ kind: 'native' | 'wrapped' | 'linked';
10
14
  /** Currently-active provider. For kind='native', equal to `nativeAddonId`.
11
- * For kind='wrapped', the wrapper addon id. */
15
+ * For kind='wrapped', the wrapper addon id. For kind='linked', the
16
+ * device-manager addon id (the synthesize owner). */
12
17
  providerAddonId: string;
13
18
  /** Node where the active provider runs. 'hub' for native; may vary for wrappers. */
14
19
  providerNodeId: string;
15
- /** Always the addon id of the underlying native provider for the device. */
20
+ /** Always the addon id of the underlying native provider for the device.
21
+ * Empty for kind='linked' (no native exists). */
16
22
  nativeAddonId: string;
17
23
  }
18
24
  export interface DeviceBinding {