@camstack/addon-export-alexa 1.2.87 → 1.2.89

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.
@@ -12219,6 +12219,9 @@ var QueryFilterSchema = object({
12219
12219
  whereBetween: record(string(), tuple([unknown(), unknown()])).optional(),
12220
12220
  /** NULL-safe exclusion: matches rows whose field is NULL OR != the value. */
12221
12221
  whereNot: record(string(), unknown()).optional(),
12222
+ /** NULL-safe exclusion of a SET — `whereNot` for more than one value. An
12223
+ * empty list excludes nothing. See `QueryFilter.whereNotIn`. */
12224
+ whereNotIn: record(string(), array(unknown())).optional(),
12222
12225
  orderBy: object({
12223
12226
  field: string(),
12224
12227
  direction: _enum(["asc", "desc"])
@@ -12239,7 +12242,8 @@ var MutationFilterSchema = object({
12239
12242
  where: record(string(), unknown()).optional(),
12240
12243
  whereIn: record(string(), array(unknown())).optional(),
12241
12244
  whereBetween: record(string(), tuple([unknown(), unknown()])).optional(),
12242
- whereNot: record(string(), unknown()).optional()
12245
+ whereNot: record(string(), unknown()).optional(),
12246
+ whereNotIn: record(string(), array(unknown())).optional()
12243
12247
  });
12244
12248
  /**
12245
12249
  * One scalar an {@link settingsStoreCapability.methods.aggregate} call asks for.
@@ -18770,10 +18774,12 @@ var TrackSourceSchema = _enum([
18770
18774
  * Terminal for the plain `markForTrain` toggle: returning it to `staging` is
18771
18775
  * a deliberate action of the retrain page, not a side effect of a checkbox.
18772
18776
  *
18773
- * There is no `null`. The state is stored `TEXT NOT NULL DEFAULT 'none'` because
18774
- * the store's filter language has only positive equality and `whereIn` — no
18775
- * negation, no IS NULL — so a NULL would be unselectable by ANY predicate and
18776
- * would make the entire pre-column history immortal in one deploy.
18777
+ * There is no `null`. The state is stored `TEXT NOT NULL DEFAULT 'none'` so that
18778
+ * every row is selectable by a positive predicate. (The filter language has
18779
+ * since grown the NULL-safe `whereNot` / `whereNotIn` and an `IS NULL` reading
18780
+ * of `where: { f: null }`, which is how {@link TrackSourceSchema} can be
18781
+ * filtered on a NULLABLE column — see `excludeSources`. It did not when this
18782
+ * column was designed, and a NOT NULL column is still the better shape.)
18777
18783
  */
18778
18784
  var RetrainStatusSchema = _enum([
18779
18785
  "none",
@@ -19509,7 +19515,9 @@ var RecentTracksQueryInput = object({
19509
19515
  * whose class list is unreadable are kept, and the client's rule stays the
19510
19516
  * exact one.
19511
19517
  */
19512
- classes: array(string()).optional()
19518
+ classes: array(string()).optional(),
19519
+ /** See {@link ExcludeSourcesDoc}. */
19520
+ excludeSources: array(TrackSourceSchema).optional()
19513
19521
  });
19514
19522
  /**
19515
19523
  * A Summary (D359): the per-camera session envelope that references tracks.
@@ -19937,7 +19945,9 @@ DeviceType.Camera, method(object({ deviceId: number() }), array(TrackSchema).rea
19937
19945
  * selected is an operator who has not narrowed anything, and an empty
19938
19946
  * timeline would read as a camera that saw nothing.
19939
19947
  */
19940
- classes: array(string()).optional()
19948
+ classes: array(string()).optional(),
19949
+ /** See {@link ExcludeSourcesDoc}. */
19950
+ excludeSources: array(TrackSourceSchema).optional()
19941
19951
  }), array(TrackSchema).readonly()), method(RecentTracksQueryInput, RecentTracksPageSchema), method(SummariesQueryInput, SummariesPageSchema), method(object({ id: string() }), SummaryDetailSchema.nullable()), method(object({ deviceId: number() }), _void(), {
19942
19952
  kind: "mutation",
19943
19953
  auth: "admin"
@@ -27398,8 +27408,27 @@ var PrivacyMaskRegionSchema = object({
27398
27408
  });
27399
27409
  object({
27400
27410
  enabled: boolean(),
27401
- /** Active zones (normalized 0..1). Length ≤ maxRegions. */
27402
- regions: array(PrivacyMaskRegionSchema),
27411
+ /**
27412
+ * Active zones (normalized 0..1). Length ≤ maxRegions.
27413
+ *
27414
+ * `null` means "no answer" — the provider has never reached this camera
27415
+ * (a cold `runtimeState` slice, a battery camera asleep) or the read
27416
+ * failed. A consumer must render it as UNKNOWN and never as "this camera
27417
+ * has no zones": those two look identical to an operator right up to the
27418
+ * moment one of them is acted on, and acting on them differs completely.
27419
+ * The switch group turned an unanswered read into *"nothing is set up for
27420
+ * it to act on"* — an instruction to go and draw a zone that already
27421
+ * exists — and this editor seeded an EMPTY canvas from it, one Save away
27422
+ * from deleting the mask it could not read.
27423
+ *
27424
+ * Empty-and-answered is `[]` and stays a real answer: this camera genuinely
27425
+ * has no zones. The distinction is the same one {@link
27426
+ * PrivacyMaskStatusSchema.shape.audioEnabled} already draws for the
27427
+ * microphone, on the very same payload — both planes come from ONE refresh,
27428
+ * so it was never coherent for one of them to be able to say "unknown"
27429
+ * while the other could not.
27430
+ */
27431
+ regions: array(PrivacyMaskRegionSchema).nullable(),
27403
27432
  /**
27404
27433
  * Is the camera capturing sound right now? Read from the camera, never from
27405
27434
  * a server-side mirror.
@@ -12192,6 +12192,9 @@ var QueryFilterSchema = object({
12192
12192
  whereBetween: record(string(), tuple([unknown(), unknown()])).optional(),
12193
12193
  /** NULL-safe exclusion: matches rows whose field is NULL OR != the value. */
12194
12194
  whereNot: record(string(), unknown()).optional(),
12195
+ /** NULL-safe exclusion of a SET — `whereNot` for more than one value. An
12196
+ * empty list excludes nothing. See `QueryFilter.whereNotIn`. */
12197
+ whereNotIn: record(string(), array(unknown())).optional(),
12195
12198
  orderBy: object({
12196
12199
  field: string(),
12197
12200
  direction: _enum(["asc", "desc"])
@@ -12212,7 +12215,8 @@ var MutationFilterSchema = object({
12212
12215
  where: record(string(), unknown()).optional(),
12213
12216
  whereIn: record(string(), array(unknown())).optional(),
12214
12217
  whereBetween: record(string(), tuple([unknown(), unknown()])).optional(),
12215
- whereNot: record(string(), unknown()).optional()
12218
+ whereNot: record(string(), unknown()).optional(),
12219
+ whereNotIn: record(string(), array(unknown())).optional()
12216
12220
  });
12217
12221
  /**
12218
12222
  * One scalar an {@link settingsStoreCapability.methods.aggregate} call asks for.
@@ -18743,10 +18747,12 @@ var TrackSourceSchema = _enum([
18743
18747
  * Terminal for the plain `markForTrain` toggle: returning it to `staging` is
18744
18748
  * a deliberate action of the retrain page, not a side effect of a checkbox.
18745
18749
  *
18746
- * There is no `null`. The state is stored `TEXT NOT NULL DEFAULT 'none'` because
18747
- * the store's filter language has only positive equality and `whereIn` — no
18748
- * negation, no IS NULL — so a NULL would be unselectable by ANY predicate and
18749
- * would make the entire pre-column history immortal in one deploy.
18750
+ * There is no `null`. The state is stored `TEXT NOT NULL DEFAULT 'none'` so that
18751
+ * every row is selectable by a positive predicate. (The filter language has
18752
+ * since grown the NULL-safe `whereNot` / `whereNotIn` and an `IS NULL` reading
18753
+ * of `where: { f: null }`, which is how {@link TrackSourceSchema} can be
18754
+ * filtered on a NULLABLE column — see `excludeSources`. It did not when this
18755
+ * column was designed, and a NOT NULL column is still the better shape.)
18750
18756
  */
18751
18757
  var RetrainStatusSchema = _enum([
18752
18758
  "none",
@@ -19482,7 +19488,9 @@ var RecentTracksQueryInput = object({
19482
19488
  * whose class list is unreadable are kept, and the client's rule stays the
19483
19489
  * exact one.
19484
19490
  */
19485
- classes: array(string()).optional()
19491
+ classes: array(string()).optional(),
19492
+ /** See {@link ExcludeSourcesDoc}. */
19493
+ excludeSources: array(TrackSourceSchema).optional()
19486
19494
  });
19487
19495
  /**
19488
19496
  * A Summary (D359): the per-camera session envelope that references tracks.
@@ -19910,7 +19918,9 @@ DeviceType.Camera, method(object({ deviceId: number() }), array(TrackSchema).rea
19910
19918
  * selected is an operator who has not narrowed anything, and an empty
19911
19919
  * timeline would read as a camera that saw nothing.
19912
19920
  */
19913
- classes: array(string()).optional()
19921
+ classes: array(string()).optional(),
19922
+ /** See {@link ExcludeSourcesDoc}. */
19923
+ excludeSources: array(TrackSourceSchema).optional()
19914
19924
  }), array(TrackSchema).readonly()), method(RecentTracksQueryInput, RecentTracksPageSchema), method(SummariesQueryInput, SummariesPageSchema), method(object({ id: string() }), SummaryDetailSchema.nullable()), method(object({ deviceId: number() }), _void(), {
19915
19925
  kind: "mutation",
19916
19926
  auth: "admin"
@@ -27371,8 +27381,27 @@ var PrivacyMaskRegionSchema = object({
27371
27381
  });
27372
27382
  object({
27373
27383
  enabled: boolean(),
27374
- /** Active zones (normalized 0..1). Length ≤ maxRegions. */
27375
- regions: array(PrivacyMaskRegionSchema),
27384
+ /**
27385
+ * Active zones (normalized 0..1). Length ≤ maxRegions.
27386
+ *
27387
+ * `null` means "no answer" — the provider has never reached this camera
27388
+ * (a cold `runtimeState` slice, a battery camera asleep) or the read
27389
+ * failed. A consumer must render it as UNKNOWN and never as "this camera
27390
+ * has no zones": those two look identical to an operator right up to the
27391
+ * moment one of them is acted on, and acting on them differs completely.
27392
+ * The switch group turned an unanswered read into *"nothing is set up for
27393
+ * it to act on"* — an instruction to go and draw a zone that already
27394
+ * exists — and this editor seeded an EMPTY canvas from it, one Save away
27395
+ * from deleting the mask it could not read.
27396
+ *
27397
+ * Empty-and-answered is `[]` and stays a real answer: this camera genuinely
27398
+ * has no zones. The distinction is the same one {@link
27399
+ * PrivacyMaskStatusSchema.shape.audioEnabled} already draws for the
27400
+ * microphone, on the very same payload — both planes come from ONE refresh,
27401
+ * so it was never coherent for one of them to be able to say "unknown"
27402
+ * while the other could not.
27403
+ */
27404
+ regions: array(PrivacyMaskRegionSchema).nullable(),
27376
27405
  /**
27377
27406
  * Is the camera capturing sound right now? Read from the camera, never from
27378
27407
  * a server-side mirror.
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@camstack/addon-export-alexa",
3
- "version": "1.2.87",
3
+ "version": "1.2.89",
4
4
  "description": "Alexa Smart Home Skill export — hub-side OAuth provider + directive handler. The companion AWS Lambda forwards Alexa directives to this addon's /addon/export-alexa/directive endpoint.",
5
5
  "keywords": [
6
6
  "camstack",