@camstack/types 1.1.20 → 1.1.22

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 (49) hide show
  1. package/dist/addon/base-addon.d.ts +30 -4
  2. package/dist/addon/per-node-store.d.ts +68 -0
  3. package/dist/addon.js +1 -1
  4. package/dist/addon.mjs +1 -1
  5. package/dist/capabilities/camera-streams.cap.d.ts +5 -5
  6. package/dist/capabilities/decoder.cap.d.ts +2 -0
  7. package/dist/capabilities/device-manager.cap.d.ts +269 -6
  8. package/dist/capabilities/index.d.ts +3 -1
  9. package/dist/capabilities/metrics-provider.cap.d.ts +2 -2
  10. package/dist/capabilities/motion-detection.cap.d.ts +20 -2
  11. package/dist/capabilities/pet-feeder.cap.d.ts +185 -0
  12. package/dist/capabilities/pipeline-executor.cap.d.ts +29 -2
  13. package/dist/capabilities/pipeline-orchestrator.cap.d.ts +7 -3
  14. package/dist/capabilities/platform-probe.cap.d.ts +1 -1
  15. package/dist/capabilities/schemas/streaming-shared.d.ts +2 -2
  16. package/dist/capabilities/stream-broker.cap.d.ts +1 -1
  17. package/dist/device/device-management.d.ts +61 -2
  18. package/dist/device/device-type.d.ts +8 -1
  19. package/dist/device/index.d.ts +1 -1
  20. package/dist/expression/ast.d.ts +56 -0
  21. package/dist/expression/builtins.d.ts +19 -0
  22. package/dist/expression/compile.d.ts +17 -0
  23. package/dist/expression/errors.d.ts +16 -0
  24. package/dist/expression/evaluator.d.ts +14 -0
  25. package/dist/expression/index.d.ts +25 -0
  26. package/dist/expression/limits.d.ts +30 -0
  27. package/dist/expression/link-expression.d.ts +44 -0
  28. package/dist/expression/parser.d.ts +12 -0
  29. package/dist/expression/tokenizer.d.ts +38 -0
  30. package/dist/generated/addon-api.d.ts +616 -12
  31. package/dist/generated/cap-status-types.d.ts +3 -1
  32. package/dist/generated/capability-router-map.d.ts +5 -2
  33. package/dist/generated/device-local-state.d.ts +3 -0
  34. package/dist/generated/device-proxy.d.ts +4 -1
  35. package/dist/generated/method-access-map.d.ts +1 -1
  36. package/dist/generated/system-proxy.d.ts +1 -1
  37. package/dist/index.d.ts +4 -1
  38. package/dist/index.js +1555 -37
  39. package/dist/index.mjs +1523 -38
  40. package/dist/interfaces/addon.d.ts +15 -2
  41. package/dist/interfaces/agent.d.ts +14 -0
  42. package/dist/interfaces/config-ui.d.ts +19 -1
  43. package/dist/interfaces/pipeline-executor-capability.d.ts +10 -0
  44. package/dist/{sleep-BabrCASa.js → sleep-B8cp-HUn.js} +193 -7
  45. package/dist/{sleep-MHm--th-.mjs → sleep-BiDFW0E7.mjs} +193 -7
  46. package/dist/units/convert.d.ts +49 -0
  47. package/dist/units/index.d.ts +8 -0
  48. package/dist/units/unit-table.d.ts +270 -0
  49. package/package.json +1 -1
@@ -1,7 +1,7 @@
1
+ import type { ZodType } from 'zod';
1
2
  import type { AddonContext, AddonInitResult, CapabilitiesAccess, ProviderRegistration } from '../interfaces/addon.js';
2
- import type { ConfigUISchema, ConfigUISchemaWithValues, ConfigField, ConfigSection } from '../interfaces/config-ui.js';
3
+ import type { ConfigField, ConfigSection, ConfigUISchema, ConfigUISchemaWithValues } from '../interfaces/config-ui.js';
3
4
  import { type DurableState } from './durable-state.js';
4
- import type { ZodType } from 'zod';
5
5
  export type { CapabilitiesAccess };
6
6
  /**
7
7
  * Utility type that constrains a ConfigField's `key` to only accept
@@ -182,8 +182,29 @@ export declare abstract class BaseAddon<TConfig extends object = Record<string,
182
182
  protected globalSettingsSchema(_cap?: string): ConfigUISchema | null;
183
183
  /** Override to provide device-level settings UI schema. */
184
184
  protected deviceSettingsSchema(): ConfigUISchema | null;
185
- getGlobalSettings(overlay?: Record<string, unknown>, cap?: string, _nodeId?: string): Promise<ConfigUISchemaWithValues | null>;
186
- updateGlobalSettings(patch: Partial<TConfig>, _nodeId?: string): Promise<void>;
185
+ getGlobalSettings(overlay?: Record<string, unknown>, cap?: string, nodeId?: string): Promise<ConfigUISchemaWithValues | null>;
186
+ /**
187
+ * The raw addon store PROJECTED onto the target node's bare per-node keys:
188
+ * every `perNode: true` field carries THAT node's scoped value on its bare
189
+ * key (absent scoped key ⇒ key absent, so the schema `default` wins — no
190
+ * bare fallback), all `@`-scoped and stray bare per-node keys are dropped.
191
+ * A no-op passthrough when the schema declares no `perNode` field.
192
+ *
193
+ * This is the sanctioned way for a `getGlobalSettings` OVERRIDE that needs
194
+ * the store for custom option logic (option narrowing, value snapping) to
195
+ * read it per-node — never `ctx.settings.readAddonStore()` directly.
196
+ * `nodeId` omitted ⇒ the local node (node-blind injection from ctx).
197
+ */
198
+ protected resolveGlobalStore(nodeId?: string, cap?: string): Promise<Record<string, unknown>>;
199
+ updateGlobalSettings(patch: Partial<TConfig>, nodeId?: string): Promise<void>;
200
+ /**
201
+ * The set of field keys the global settings schema declares `perNode: true`
202
+ * — derived once per `cap` argument and memoized (schemas are static
203
+ * declarations). Empty set ⇒ every per-node code path is bypassed and the
204
+ * settings API behaves exactly like the legacy node-agnostic one.
205
+ */
206
+ private readonly _perNodeKeysCache;
207
+ private perNodeKeys;
187
208
  /**
188
209
  * If any field in `patch` is marked `requiresRestart` in `schema`,
189
210
  * schedule an addon restart for the next tick. Deferred via
@@ -255,6 +276,11 @@ export declare abstract class BaseAddon<TConfig extends object = Record<string,
255
276
  * The merge is shallow: each key in `defaults` is checked against the store.
256
277
  * Only keys present in defaults are read — the store can contain extra keys
257
278
  * (e.g. from older versions) without polluting the typed config.
279
+ *
280
+ * Keys the global settings schema declares `perNode: true` resolve from
281
+ * THIS node's scoped key (`<key>@<localNode>`) via `readNodeValue` — never
282
+ * from the bare key — so a per-node field resolves to this node's own
283
+ * selection at boot (absent scoped key ⇒ the constructor default wins).
258
284
  */
259
285
  protected resolveConfig(): Promise<void>;
260
286
  /**
@@ -0,0 +1,68 @@
1
+ /**
2
+ * Per-node scoping for the shared addon-settings blob.
3
+ *
4
+ * An addon's settings store is hub-central (the `addon-settings` cap is
5
+ * hub-routed — the hub instance answers for every node), so fields whose
6
+ * value is a NODE fact (decoder backend, engine pick, probed hardware
7
+ * capabilities) persist under the node-scoped key `<key>@<nodeId>` inside
8
+ * the single shared blob. The SCHEMA field key stays bare: the write path
9
+ * ({@link scopePatch}) maps the bare field onto the target node's scoped
10
+ * key; the read/hydrate path ({@link projectStore}) maps THIS node's value
11
+ * back, so UI forms and `resolveConfig` only ever see the bare key.
12
+ *
13
+ * Fields opt in via the `perNode: true` schema marker on `ConfigFieldBase`
14
+ * (`interfaces/config-ui.ts`); `BaseAddon` derives the key set from the
15
+ * schema and routes reads/writes through these helpers.
16
+ *
17
+ * ## No bare-key fallback — deliberate
18
+ *
19
+ * {@link readNodeValue} reads the node-scoped key ONLY. A node with no
20
+ * scoped key resolves to `undefined` so the field's schema `default` wins —
21
+ * NEVER `store[base]` and never another node's value. A bare legacy key in
22
+ * the store is invisible to every node, hub included, so one node's
23
+ * selection can never leak onto another. (This generalizes the
24
+ * `decoder-backend-keys.ts` semantics — the no-fallback variant — over an
25
+ * arbitrary set of per-node field keys.)
26
+ *
27
+ * Pure functions only — no I/O, no imports beyond the language. This is a
28
+ * LEAF module: import it via its deep path, never from the root barrel.
29
+ */
30
+ /**
31
+ * Normalize a raw kernel node id to the bare node id used for scoping.
32
+ * `localNodeId` can carry a `<node>/<addon>` suffix on forked child
33
+ * processes; per-node settings are per-NODE, so strip the addon segment.
34
+ * `undefined` / `null` / empty falls back to `'hub'`.
35
+ */
36
+ export declare function normalizeNodeId(raw: string | undefined | null): string;
37
+ /** The node-scoped store key for a per-node field: `<base>@<nodeId>`. */
38
+ export declare function nodeScopedKey(base: string, nodeId: string): string;
39
+ /**
40
+ * Read a node's value for a per-node field from the raw shared store:
41
+ * the node-scoped key when present, otherwise `undefined`.
42
+ * Deliberately NO bare-key fallback (see module doc) — the caller lets the
43
+ * schema `default` win on `undefined`.
44
+ */
45
+ export declare function readNodeValue(store: Readonly<Record<string, unknown>>, base: string, nodeId: string): unknown;
46
+ /**
47
+ * Re-map a UI/settings patch so every bare perNode field persists under the
48
+ * TARGET node's scoped key; all other keys pass through unchanged. Used on
49
+ * the write path so a save for one node never clobbers another node's value
50
+ * (and the bare key is never written). Returns a new object — the input
51
+ * patch is not mutated.
52
+ */
53
+ export declare function scopePatch(patch: Readonly<Record<string, unknown>>, perNodeKeys: ReadonlySet<string>, nodeId: string): Record<string, unknown>;
54
+ /**
55
+ * Project the raw shared store onto the bare schema keys for ONE node so a
56
+ * UI schema (whose field keys are bare) hydrates from that node's own
57
+ * values:
58
+ *
59
+ * - EVERY `@`-scoped key (any node's) is dropped from the pass-through.
60
+ * - Every bare perNode key is dropped from the pass-through (a stray bare
61
+ * legacy key must never hydrate any node — no bare fallback).
62
+ * - THIS node's effective value ({@link readNodeValue}) is then laid onto
63
+ * each bare perNode key; when the node has no scoped key the bare key is
64
+ * left ABSENT so the field's schema `default` wins.
65
+ *
66
+ * Returns a new object — the input store is not mutated.
67
+ */
68
+ export declare function projectStore(store: Readonly<Record<string, unknown>>, perNodeKeys: ReadonlySet<string>, nodeId: string): Record<string, unknown>;
package/dist/addon.js CHANGED
@@ -1,5 +1,5 @@
1
1
  Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
2
- const require_sleep = require("./sleep-BabrCASa.js");
2
+ const require_sleep = require("./sleep-B8cp-HUn.js");
3
3
  const require_err_msg = require("./err-msg-COpsHMw2.js");
4
4
  exports.BaseAddon = require_sleep.BaseAddon;
5
5
  exports.DATAPLANE_SECRET_HEADER = require_sleep.DATAPLANE_SECRET_HEADER;
package/dist/addon.mjs CHANGED
@@ -1,3 +1,3 @@
1
- import { A as ReadinessRegistry, C as asJsonObject, O as parseJsonUnknown, P as scopeKey, T as asString, a as adminUiCapability, b as DeviceType, gt as DisposerChain, ht as EventCategory, i as deviceOpsCapability, j as ReadinessTimeoutError, k as DATAPLANE_SECRET_HEADER, o as createDeviceProxy, ot as BaseAddon, p as expandCapMethods, st as normalizeAddonInitResult, t as sleep, ut as emitReadiness } from "./sleep-MHm--th-.mjs";
1
+ import { A as ReadinessRegistry, C as asJsonObject, O as parseJsonUnknown, P as scopeKey, T as asString, a as adminUiCapability, b as DeviceType, gt as DisposerChain, ht as EventCategory, i as deviceOpsCapability, j as ReadinessTimeoutError, k as DATAPLANE_SECRET_HEADER, o as createDeviceProxy, ot as BaseAddon, p as expandCapMethods, st as normalizeAddonInitResult, t as sleep, ut as emitReadiness } from "./sleep-BiDFW0E7.mjs";
2
2
  import { t as errMsg } from "./err-msg-IQTHeDzc.mjs";
3
3
  export { BaseAddon, DATAPLANE_SECRET_HEADER, DeviceType, DisposerChain, EventCategory, ReadinessRegistry, ReadinessTimeoutError, adminUiCapability, asJsonObject, asString, createDeviceProxy, deviceOpsCapability, emitReadiness, errMsg, expandCapMethods, normalizeAddonInitResult, parseJsonUnknown, scopeKey, sleep };
@@ -116,8 +116,8 @@ export declare const cameraStreamsCapability: {
116
116
  sourceCamStreamId: z.ZodNullable<z.ZodString>;
117
117
  status: z.ZodEnum<{
118
118
  error: "error";
119
- idle: "idle";
120
119
  unassigned: "unassigned";
120
+ idle: "idle";
121
121
  connecting: "connecting";
122
122
  streaming: "streaming";
123
123
  }>;
@@ -280,8 +280,8 @@ export declare const cameraStreamsCapability: {
280
280
  sourceCamStreamId: z.ZodNullable<z.ZodString>;
281
281
  status: z.ZodEnum<{
282
282
  error: "error";
283
- idle: "idle";
284
283
  unassigned: "unassigned";
284
+ idle: "idle";
285
285
  connecting: "connecting";
286
286
  streaming: "streaming";
287
287
  }>;
@@ -323,22 +323,22 @@ export declare const cameraStreamsCapability: {
323
323
  slotStatuses: z.ZodObject<{
324
324
  high: z.ZodOptional<z.ZodEnum<{
325
325
  error: "error";
326
- idle: "idle";
327
326
  unassigned: "unassigned";
327
+ idle: "idle";
328
328
  connecting: "connecting";
329
329
  streaming: "streaming";
330
330
  }>>;
331
331
  mid: z.ZodOptional<z.ZodEnum<{
332
332
  error: "error";
333
- idle: "idle";
334
333
  unassigned: "unassigned";
334
+ idle: "idle";
335
335
  connecting: "connecting";
336
336
  streaming: "streaming";
337
337
  }>>;
338
338
  low: z.ZodOptional<z.ZodEnum<{
339
339
  error: "error";
340
- idle: "idle";
341
340
  unassigned: "unassigned";
341
+ idle: "idle";
342
342
  connecting: "connecting";
343
343
  streaming: "streaming";
344
344
  }>>;
@@ -109,6 +109,7 @@ export declare const decoderCapability: {
109
109
  readonly pullFrames: import("./capability-definition.js").CapabilityMethodSchema<z.ZodObject<{
110
110
  sessionId: z.ZodString;
111
111
  maxCount: z.ZodDefault<z.ZodNumber>;
112
+ waitMs: z.ZodOptional<z.ZodNumber>;
112
113
  }, z.core.$strip>, z.ZodArray<z.ZodObject<{
113
114
  data: z.ZodCustom<Uint8Array<ArrayBuffer>, Uint8Array<ArrayBuffer>>;
114
115
  width: z.ZodNumber;
@@ -125,6 +126,7 @@ export declare const decoderCapability: {
125
126
  readonly pullHandles: import("./capability-definition.js").CapabilityMethodSchema<z.ZodObject<{
126
127
  sessionId: z.ZodString;
127
128
  maxCount: z.ZodDefault<z.ZodNumber>;
129
+ waitMs: z.ZodOptional<z.ZodNumber>;
128
130
  }, z.core.$strip>, z.ZodArray<z.ZodObject<{
129
131
  shmId: z.ZodString;
130
132
  slot: z.ZodNumber;
@@ -19,12 +19,6 @@
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
- /** Cap-wire shape of a DeviceLink — structurally mirrors `DeviceLink` in
23
- * `device-management.ts`. Source is a union: a FIELD source copies a sibling
24
- * accessory's status field (`kind` optional/absent for wire compat); a
25
- * LITERAL source carries a per-device constant (no sibling is read); a
26
- * GLOBAL source (P2e) copies ANY device's status field, addressed by the
27
- * source device's full re-sync-stable `stableId`. */
28
22
  export declare const DeviceLinkSchema: z.ZodObject<{
29
23
  id: z.ZodString;
30
24
  source: z.ZodUnion<readonly [z.ZodObject<{
@@ -40,6 +34,23 @@ export declare const DeviceLinkSchema: z.ZodObject<{
40
34
  sourceStableId: z.ZodString;
41
35
  cap: z.ZodString;
42
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>]>>;
43
54
  }, z.core.$strip>]>;
44
55
  target: z.ZodObject<{
45
56
  cap: z.ZodString;
@@ -59,6 +70,34 @@ export declare const DeviceLinkSchema: z.ZodObject<{
59
70
  clamp: z.ZodOptional<z.ZodReadonly<z.ZodTuple<[z.ZodNumber, z.ZodNumber], null>>>;
60
71
  }, z.core.$strip>], "kind">>;
61
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>;
62
101
  /**
63
102
  * Serializable projection of a live IDevice.
64
103
  * Returned by listAll, getDevice, getChildren.
@@ -110,6 +149,23 @@ export declare const DeviceInfoSchema: z.ZodObject<{
110
149
  sourceStableId: z.ZodString;
111
150
  cap: z.ZodString;
112
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>]>>;
113
169
  }, z.core.$strip>]>;
114
170
  target: z.ZodObject<{
115
171
  cap: z.ZodString;
@@ -129,6 +185,17 @@ export declare const DeviceInfoSchema: z.ZodObject<{
129
185
  clamp: z.ZodOptional<z.ZodReadonly<z.ZodTuple<[z.ZodNumber, z.ZodNumber], null>>>;
130
186
  }, z.core.$strip>], "kind">>;
131
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>>;
132
199
  }, z.core.$strip>;
133
200
  export declare const ConfigEntrySchema: z.ZodObject<{
134
201
  key: z.ZodString;
@@ -191,6 +258,23 @@ export declare const DeviceMetaSchema: z.ZodObject<{
191
258
  sourceStableId: z.ZodString;
192
259
  cap: z.ZodString;
193
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>]>>;
194
278
  }, z.core.$strip>]>;
195
279
  target: z.ZodObject<{
196
280
  cap: z.ZodString;
@@ -211,6 +295,17 @@ export declare const DeviceMetaSchema: z.ZodObject<{
211
295
  }, z.core.$strip>], "kind">>;
212
296
  }, z.core.$strip>>>>;
213
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>>;
214
309
  }, z.core.$strip>;
215
310
  export declare const DeviceRegisterPayloadSchema: z.ZodObject<{
216
311
  addonId: z.ZodString;
@@ -325,6 +420,23 @@ export declare const deviceManagerCapability: {
325
420
  sourceStableId: z.ZodString;
326
421
  cap: z.ZodString;
327
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>]>>;
328
440
  }, z.core.$strip>]>;
329
441
  target: z.ZodObject<{
330
442
  cap: z.ZodString;
@@ -345,6 +457,17 @@ export declare const deviceManagerCapability: {
345
457
  }, z.core.$strip>], "kind">>;
346
458
  }, z.core.$strip>>>>;
347
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>>;
348
471
  }, z.core.$strip>>, import("./capability-definition.js").CapabilityMethodKind>;
349
472
  /** Update the operator-edited display name. Persists to the meta
350
473
  * row + emits `EventCategory.DeviceMetaChanged`. */
@@ -425,6 +548,23 @@ export declare const deviceManagerCapability: {
425
548
  sourceStableId: z.ZodString;
426
549
  cap: z.ZodString;
427
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>]>>;
428
568
  }, z.core.$strip>]>;
429
569
  target: z.ZodObject<{
430
570
  cap: z.ZodString;
@@ -445,6 +585,45 @@ export declare const deviceManagerCapability: {
445
585
  }, z.core.$strip>], "kind">>;
446
586
  }, z.core.$strip>>>;
447
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">;
448
627
  /** List the wireable status-schema fields per cap bound to a device.
449
628
  * Powers the Wiring tab's field pickers. Caps without a status schema are
450
629
  * omitted. Item-array caps (`status.itemArray`, e.g. consumables) also
@@ -603,6 +782,23 @@ export declare const deviceManagerCapability: {
603
782
  sourceStableId: z.ZodString;
604
783
  cap: z.ZodString;
605
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>]>>;
606
802
  }, z.core.$strip>]>;
607
803
  target: z.ZodObject<{
608
804
  cap: z.ZodString;
@@ -622,6 +818,17 @@ export declare const deviceManagerCapability: {
622
818
  clamp: z.ZodOptional<z.ZodReadonly<z.ZodTuple<[z.ZodNumber, z.ZodNumber], null>>>;
623
819
  }, z.core.$strip>], "kind">>;
624
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>>;
625
832
  }, z.core.$strip>>, import("./capability-definition.js").CapabilityMethodKind>;
626
833
  /** Get a single device by numeric deviceId. */
627
834
  readonly getDevice: import("./capability-definition.js").CapabilityMethodSchema<z.ZodObject<{
@@ -672,6 +879,23 @@ export declare const deviceManagerCapability: {
672
879
  sourceStableId: z.ZodString;
673
880
  cap: z.ZodString;
674
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>]>>;
675
899
  }, z.core.$strip>]>;
676
900
  target: z.ZodObject<{
677
901
  cap: z.ZodString;
@@ -691,6 +915,17 @@ export declare const deviceManagerCapability: {
691
915
  clamp: z.ZodOptional<z.ZodReadonly<z.ZodTuple<[z.ZodNumber, z.ZodNumber], null>>>;
692
916
  }, z.core.$strip>], "kind">>;
693
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>>;
694
929
  }, z.core.$strip>>, import("./capability-definition.js").CapabilityMethodKind>;
695
930
  /** List children of a parent device (by parent numeric id). */
696
931
  readonly getChildren: import("./capability-definition.js").CapabilityMethodSchema<z.ZodObject<{
@@ -741,6 +976,23 @@ export declare const deviceManagerCapability: {
741
976
  sourceStableId: z.ZodString;
742
977
  cap: z.ZodString;
743
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>]>>;
744
996
  }, z.core.$strip>]>;
745
997
  target: z.ZodObject<{
746
998
  cap: z.ZodString;
@@ -760,6 +1012,17 @@ export declare const deviceManagerCapability: {
760
1012
  clamp: z.ZodOptional<z.ZodReadonly<z.ZodTuple<[z.ZodNumber, z.ZodNumber], null>>>;
761
1013
  }, z.core.$strip>], "kind">>;
762
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>>;
763
1026
  }, z.core.$strip>>, import("./capability-definition.js").CapabilityMethodKind>;
764
1027
  /** Get stream sources for a camera device. */
765
1028
  readonly getStreamSources: import("./capability-definition.js").CapabilityMethodSchema<z.ZodObject<{
@@ -177,6 +177,7 @@ export { type ITemperatureSensorProvider, type TemperatureSensorStatus, Temperat
177
177
  export { type IToastProvider, ToastSchema, toastCapability } from './toast.cap.js';
178
178
  export { type IUpdateProvider, type UpdateStatus, UpdateStatusSchema, updateCapability, } from './update.cap.js';
179
179
  export { ApiKeySummarySchema, CreateApiKeyInputSchema, CreateApiKeyResultSchema, CreateScopedTokenInputSchema, CreateScopedTokenResultSchema, CreateUserInputSchema, type IUserManagementProvider, ScopedTokenSummarySchema, UpdateUserInputSchema, UserSummarySchema, userManagementCapability, } from './user-management.cap.js';
180
+ export { type IPetFeederProvider, PET_FEEDER_MANUAL_FEED_MAX, PET_FEEDER_MANUAL_FEED_MIN, type PetFeederStatus, PetFeederStatusSchema, petFeederCapability, } from './pet-feeder.cap.js';
180
181
  export { type IVacuumControlProvider, type TankStatus, TankStatusSchema, type VacuumControlStatus, VacuumControlStatusSchema, type VacuumState, VacuumStateSchema, vacuumControlCapability, } from './vacuum-control.cap.js';
181
182
  export { type IValveProvider, type ValveState, ValveStateSchema, type ValveStatus, ValveStatusSchema, valveCapability, } from './valve.cap.js';
182
183
  export { type IVibrationProvider, type VibrationStatus, VibrationStatusSchema, vibrationCapability, } from './vibration.cap.js';
@@ -213,6 +214,7 @@ import type { cameraPipelineConfigCapability } from './camera-pipeline-config.ca
213
214
  import type { cameraStreamsCapability } from './camera-streams.cap.js';
214
215
  import type { carbonMonoxideCapability } from './carbon-monoxide.cap.js';
215
216
  import type { climateControlCapability } from './climate-control.cap.js';
217
+ import type { petFeederCapability } from './pet-feeder.cap.js';
216
218
  import type { colorCapability } from './color.cap.js';
217
219
  import type { connectivityCapability } from './connectivity.cap.js';
218
220
  import type { consumablesCapability } from './consumables.cap.js';
@@ -306,6 +308,6 @@ import type { webrtcSessionCapability } from './webrtc-session.cap.js';
306
308
  import type { zoneAnalyticsCapability } from './zone-analytics.cap.js';
307
309
  import type { zoneRulesCapability } from './zone-rules.cap.js';
308
310
  import type { zonesCapability } from './zones.cap.js';
309
- type AnyCapability = typeof addonSettingsCapability | typeof alertsCapability | typeof storageCapability | typeof storageProviderCapability | typeof storageEvictableCapability | typeof filesystemBrowseCapability | typeof backupCapability | typeof settingsStoreCapability | typeof logDestinationCapability | typeof adminUiCapability | typeof ssoBridgeCapability | typeof userPasskeysCapability | typeof smtpProviderCapability | typeof mqttBrokerCapability | typeof brokerCapability | typeof deviceAdoptionCapability | typeof deviceExportCapability | typeof addonPagesCapability | typeof addonPagesSourceCapability | typeof addonWidgetsCapability | typeof addonWidgetsSourceCapability | typeof customModelRegistryCapability | typeof modelDistributorCapability | typeof modelConvertCapability | typeof addonRoutesCapability | typeof streamBrokerCapability | typeof decoderCapability | typeof restreamerCapability | typeof webrtcCapability | typeof webrtcSessionCapability | typeof cameraStreamsCapability | typeof streamingEngineCapability | typeof motionDetectionCapability | typeof pipelineExecutorCapability | typeof detectionPipelineCapability | typeof cameraPipelineConfigCapability | typeof pipelineRunnerCapability | typeof pipelineOrchestratorCapability | typeof audioAnalyzerCapability | typeof audioAnalysisCapability | typeof audioCodecCapability | typeof embeddingEncoderCapability | typeof deviceProviderCapability | typeof deviceManagerCapability | typeof deviceStateCapability | typeof authProviderCapability | typeof networkAccessCapability | typeof turnProviderCapability | typeof snapshotCapability | typeof snapshotProviderCapability | typeof notificationOutputCapability | typeof advancedNotifierCapability | typeof pipelineAnalyticsCapability | typeof metricsProviderCapability | typeof ptzCapability | typeof ptzAutotrackCapability | typeof consumablesCapability | typeof rebootCapability | typeof deviceDiscoveryCapability | typeof brightnessCapability | typeof colorCapability | typeof climateControlCapability | typeof coverCapability | typeof valveCapability | typeof humidifierCapability | typeof waterHeaterCapability | typeof weatherCapability | typeof imageCapability | typeof lockControlCapability | typeof vacuumControlCapability | typeof lawnMowerControlCapability | typeof fanControlCapability | typeof controlCapability | typeof notifierCapability | typeof mediaPlayerCapability | typeof alarmPanelCapability | typeof presenceCapability | typeof scriptRunnerCapability | typeof automationControlCapability | typeof motionTriggerCapability | typeof eventsCapability | typeof zonesCapability | typeof zoneRulesCapability | typeof zoneAnalyticsCapability | typeof audioMetricsCapability | typeof motionCapability | typeof contactCapability | typeof floodCapability | typeof smokeCapability | typeof carbonMonoxideCapability | typeof gasCapability | typeof tamperCapability | typeof vibrationCapability | typeof connectivityCapability | typeof binaryCapability | typeof temperatureSensorCapability | typeof humiditySensorCapability | typeof ambientLightSensorCapability | typeof pressureSensorCapability | typeof powerMeterCapability | typeof airQualitySensorCapability | typeof numericSensorCapability | typeof enumSensorCapability | typeof recordingCapability | typeof deviceOpsCapability | typeof platformProbeCapability | typeof localNetworkCapability | typeof meshNetworkCapability | typeof userManagementCapability | typeof systemCapability | typeof networkQualityCapability | typeof toastCapability | typeof nodesCapability | typeof integrationsCapability | typeof addonsCapability | typeof oauthIntegrationCapability | typeof streamParamsCapability | typeof streamCatalogCapability | typeof motionZonesCapability | typeof privacyMaskCapability;
311
+ type AnyCapability = typeof addonSettingsCapability | typeof alertsCapability | typeof storageCapability | typeof storageProviderCapability | typeof storageEvictableCapability | typeof filesystemBrowseCapability | typeof backupCapability | typeof settingsStoreCapability | typeof logDestinationCapability | typeof adminUiCapability | typeof ssoBridgeCapability | typeof userPasskeysCapability | typeof smtpProviderCapability | typeof mqttBrokerCapability | typeof brokerCapability | typeof deviceAdoptionCapability | typeof deviceExportCapability | typeof addonPagesCapability | typeof addonPagesSourceCapability | typeof addonWidgetsCapability | typeof addonWidgetsSourceCapability | typeof customModelRegistryCapability | typeof modelDistributorCapability | typeof modelConvertCapability | typeof addonRoutesCapability | typeof streamBrokerCapability | typeof decoderCapability | typeof restreamerCapability | typeof webrtcCapability | typeof webrtcSessionCapability | typeof cameraStreamsCapability | typeof streamingEngineCapability | typeof motionDetectionCapability | typeof pipelineExecutorCapability | typeof detectionPipelineCapability | typeof cameraPipelineConfigCapability | typeof pipelineRunnerCapability | typeof pipelineOrchestratorCapability | typeof audioAnalyzerCapability | typeof audioAnalysisCapability | typeof audioCodecCapability | typeof embeddingEncoderCapability | typeof deviceProviderCapability | typeof deviceManagerCapability | typeof deviceStateCapability | typeof authProviderCapability | typeof networkAccessCapability | typeof turnProviderCapability | typeof snapshotCapability | typeof snapshotProviderCapability | typeof notificationOutputCapability | typeof advancedNotifierCapability | typeof pipelineAnalyticsCapability | typeof metricsProviderCapability | typeof ptzCapability | typeof ptzAutotrackCapability | typeof consumablesCapability | typeof rebootCapability | typeof deviceDiscoveryCapability | typeof brightnessCapability | typeof colorCapability | typeof climateControlCapability | typeof coverCapability | typeof valveCapability | typeof humidifierCapability | typeof waterHeaterCapability | typeof weatherCapability | typeof imageCapability | typeof lockControlCapability | typeof vacuumControlCapability | typeof petFeederCapability | typeof lawnMowerControlCapability | typeof fanControlCapability | typeof controlCapability | typeof notifierCapability | typeof mediaPlayerCapability | typeof alarmPanelCapability | typeof presenceCapability | typeof scriptRunnerCapability | typeof automationControlCapability | typeof motionTriggerCapability | typeof eventsCapability | typeof zonesCapability | typeof zoneRulesCapability | typeof zoneAnalyticsCapability | typeof audioMetricsCapability | typeof motionCapability | typeof contactCapability | typeof floodCapability | typeof smokeCapability | typeof carbonMonoxideCapability | typeof gasCapability | typeof tamperCapability | typeof vibrationCapability | typeof connectivityCapability | typeof binaryCapability | typeof temperatureSensorCapability | typeof humiditySensorCapability | typeof ambientLightSensorCapability | typeof pressureSensorCapability | typeof powerMeterCapability | typeof airQualitySensorCapability | typeof numericSensorCapability | typeof enumSensorCapability | typeof recordingCapability | typeof deviceOpsCapability | typeof platformProbeCapability | typeof localNetworkCapability | typeof meshNetworkCapability | typeof userManagementCapability | typeof systemCapability | typeof networkQualityCapability | typeof toastCapability | typeof nodesCapability | typeof integrationsCapability | typeof addonsCapability | typeof oauthIntegrationCapability | typeof streamParamsCapability | typeof streamCatalogCapability | typeof motionZonesCapability | typeof privacyMaskCapability;
310
312
  export type CapabilityName = AnyCapability['name'];
311
313
  export type ITypedReadinessRegistry = IReadinessRegistry<CapabilityName>;
@@ -170,8 +170,8 @@ declare const AddonInstanceSchema: z.ZodObject<{
170
170
  pid: z.ZodNumber;
171
171
  state: z.ZodEnum<{
172
172
  running: "running";
173
- starting: "starting";
174
173
  stopped: "stopped";
174
+ starting: "starting";
175
175
  stopping: "stopping";
176
176
  crashed: "crashed";
177
177
  }>;
@@ -466,8 +466,8 @@ export declare const metricsProviderCapability: {
466
466
  pid: z.ZodNumber;
467
467
  state: z.ZodEnum<{
468
468
  running: "running";
469
- starting: "starting";
470
469
  stopped: "stopped";
470
+ starting: "starting";
471
471
  stopping: "stopping";
472
472
  crashed: "crashed";
473
473
  }>;