@camstack/types 1.2.165 → 1.2.166

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.
@@ -62,7 +62,7 @@ export declare const PrivacyMaskRegionSchema: z.ZodObject<{
62
62
  /** Current on-camera privacy state — mask master enable + zones + microphone. */
63
63
  export declare const PrivacyMaskStatusSchema: z.ZodObject<{
64
64
  enabled: z.ZodBoolean;
65
- regions: z.ZodArray<z.ZodObject<{
65
+ regions: z.ZodNullable<z.ZodArray<z.ZodObject<{
66
66
  id: z.ZodNumber;
67
67
  enabled: z.ZodBoolean;
68
68
  shape: z.ZodDiscriminatedUnion<[z.ZodObject<{
@@ -78,7 +78,7 @@ export declare const PrivacyMaskStatusSchema: z.ZodObject<{
78
78
  y: z.ZodNumber;
79
79
  }, z.core.$strip>>;
80
80
  }, z.core.$strip>], "kind">;
81
- }, z.core.$strip>>;
81
+ }, z.core.$strip>>>;
82
82
  audioEnabled: z.ZodNullable<z.ZodBoolean>;
83
83
  lastFetchedAt: z.ZodNumber;
84
84
  }, z.core.$strip>;
@@ -199,7 +199,7 @@ export declare const privacyMaskCapability: {
199
199
  readonly status: {
200
200
  readonly schema: z.ZodObject<{
201
201
  enabled: z.ZodBoolean;
202
- regions: z.ZodArray<z.ZodObject<{
202
+ regions: z.ZodNullable<z.ZodArray<z.ZodObject<{
203
203
  id: z.ZodNumber;
204
204
  enabled: z.ZodBoolean;
205
205
  shape: z.ZodDiscriminatedUnion<[z.ZodObject<{
@@ -215,7 +215,7 @@ export declare const privacyMaskCapability: {
215
215
  y: z.ZodNumber;
216
216
  }, z.core.$strip>>;
217
217
  }, z.core.$strip>], "kind">;
218
- }, z.core.$strip>>;
218
+ }, z.core.$strip>>>;
219
219
  audioEnabled: z.ZodNullable<z.ZodBoolean>;
220
220
  lastFetchedAt: z.ZodNumber;
221
221
  }, z.core.$strip>;
@@ -223,7 +223,7 @@ export declare const privacyMaskCapability: {
223
223
  };
224
224
  readonly runtimeState: z.ZodObject<{
225
225
  enabled: z.ZodBoolean;
226
- regions: z.ZodArray<z.ZodObject<{
226
+ regions: z.ZodNullable<z.ZodArray<z.ZodObject<{
227
227
  id: z.ZodNumber;
228
228
  enabled: z.ZodBoolean;
229
229
  shape: z.ZodDiscriminatedUnion<[z.ZodObject<{
@@ -239,7 +239,7 @@ export declare const privacyMaskCapability: {
239
239
  y: z.ZodNumber;
240
240
  }, z.core.$strip>>;
241
241
  }, z.core.$strip>], "kind">;
242
- }, z.core.$strip>>;
242
+ }, z.core.$strip>>>;
243
243
  audioEnabled: z.ZodNullable<z.ZodBoolean>;
244
244
  lastFetchedAt: z.ZodNumber;
245
245
  }, z.core.$strip>;
package/dist/index.js CHANGED
@@ -32200,8 +32200,27 @@ var PrivacyMaskRegionSchema = zod.z.object({
32200
32200
  /** Current on-camera privacy state — mask master enable + zones + microphone. */
32201
32201
  var PrivacyMaskStatusSchema = zod.z.object({
32202
32202
  enabled: zod.z.boolean(),
32203
- /** Active zones (normalized 0..1). Length ≤ maxRegions. */
32204
- regions: zod.z.array(PrivacyMaskRegionSchema),
32203
+ /**
32204
+ * Active zones (normalized 0..1). Length ≤ maxRegions.
32205
+ *
32206
+ * `null` means "no answer" — the provider has never reached this camera
32207
+ * (a cold `runtimeState` slice, a battery camera asleep) or the read
32208
+ * failed. A consumer must render it as UNKNOWN and never as "this camera
32209
+ * has no zones": those two look identical to an operator right up to the
32210
+ * moment one of them is acted on, and acting on them differs completely.
32211
+ * The switch group turned an unanswered read into *"nothing is set up for
32212
+ * it to act on"* — an instruction to go and draw a zone that already
32213
+ * exists — and this editor seeded an EMPTY canvas from it, one Save away
32214
+ * from deleting the mask it could not read.
32215
+ *
32216
+ * Empty-and-answered is `[]` and stays a real answer: this camera genuinely
32217
+ * has no zones. The distinction is the same one {@link
32218
+ * PrivacyMaskStatusSchema.shape.audioEnabled} already draws for the
32219
+ * microphone, on the very same payload — both planes come from ONE refresh,
32220
+ * so it was never coherent for one of them to be able to say "unknown"
32221
+ * while the other could not.
32222
+ */
32223
+ regions: zod.z.array(PrivacyMaskRegionSchema).nullable(),
32205
32224
  /**
32206
32225
  * Is the camera capturing sound right now? Read from the camera, never from
32207
32226
  * a server-side mirror.
package/dist/index.mjs CHANGED
@@ -32199,8 +32199,27 @@ var PrivacyMaskRegionSchema = z.object({
32199
32199
  /** Current on-camera privacy state — mask master enable + zones + microphone. */
32200
32200
  var PrivacyMaskStatusSchema = z.object({
32201
32201
  enabled: z.boolean(),
32202
- /** Active zones (normalized 0..1). Length ≤ maxRegions. */
32203
- regions: z.array(PrivacyMaskRegionSchema),
32202
+ /**
32203
+ * Active zones (normalized 0..1). Length ≤ maxRegions.
32204
+ *
32205
+ * `null` means "no answer" — the provider has never reached this camera
32206
+ * (a cold `runtimeState` slice, a battery camera asleep) or the read
32207
+ * failed. A consumer must render it as UNKNOWN and never as "this camera
32208
+ * has no zones": those two look identical to an operator right up to the
32209
+ * moment one of them is acted on, and acting on them differs completely.
32210
+ * The switch group turned an unanswered read into *"nothing is set up for
32211
+ * it to act on"* — an instruction to go and draw a zone that already
32212
+ * exists — and this editor seeded an EMPTY canvas from it, one Save away
32213
+ * from deleting the mask it could not read.
32214
+ *
32215
+ * Empty-and-answered is `[]` and stays a real answer: this camera genuinely
32216
+ * has no zones. The distinction is the same one {@link
32217
+ * PrivacyMaskStatusSchema.shape.audioEnabled} already draws for the
32218
+ * microphone, on the very same payload — both planes come from ONE refresh,
32219
+ * so it was never coherent for one of them to be able to say "unknown"
32220
+ * while the other could not.
32221
+ */
32222
+ regions: z.array(PrivacyMaskRegionSchema).nullable(),
32204
32223
  /**
32205
32224
  * Is the camera capturing sound right now? Read from the camera, never from
32206
32225
  * a server-side mirror.
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@camstack/types",
3
- "version": "1.2.165",
3
+ "version": "1.2.166",
4
4
  "description": "Shared types, interfaces, and model catalogs for the CamStack detection ecosystem",
5
5
  "keywords": [
6
6
  "camstack",