@camstack/addon-ai 0.4.83 → 0.4.85

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.
package/dist/addon.js CHANGED
@@ -12152,6 +12152,9 @@ var QueryFilterSchema = object({
12152
12152
  whereBetween: record(string(), tuple([unknown(), unknown()])).optional(),
12153
12153
  /** NULL-safe exclusion: matches rows whose field is NULL OR != the value. */
12154
12154
  whereNot: record(string(), unknown()).optional(),
12155
+ /** NULL-safe exclusion of a SET — `whereNot` for more than one value. An
12156
+ * empty list excludes nothing. See `QueryFilter.whereNotIn`. */
12157
+ whereNotIn: record(string(), array(unknown())).optional(),
12155
12158
  orderBy: object({
12156
12159
  field: string(),
12157
12160
  direction: _enum(["asc", "desc"])
@@ -12172,7 +12175,8 @@ var MutationFilterSchema = object({
12172
12175
  where: record(string(), unknown()).optional(),
12173
12176
  whereIn: record(string(), array(unknown())).optional(),
12174
12177
  whereBetween: record(string(), tuple([unknown(), unknown()])).optional(),
12175
- whereNot: record(string(), unknown()).optional()
12178
+ whereNot: record(string(), unknown()).optional(),
12179
+ whereNotIn: record(string(), array(unknown())).optional()
12176
12180
  });
12177
12181
  /**
12178
12182
  * One scalar an {@link settingsStoreCapability.methods.aggregate} call asks for.
@@ -18756,10 +18760,12 @@ var TrackSourceSchema = _enum([
18756
18760
  * Terminal for the plain `markForTrain` toggle: returning it to `staging` is
18757
18761
  * a deliberate action of the retrain page, not a side effect of a checkbox.
18758
18762
  *
18759
- * There is no `null`. The state is stored `TEXT NOT NULL DEFAULT 'none'` because
18760
- * the store's filter language has only positive equality and `whereIn` — no
18761
- * negation, no IS NULL — so a NULL would be unselectable by ANY predicate and
18762
- * would make the entire pre-column history immortal in one deploy.
18763
+ * There is no `null`. The state is stored `TEXT NOT NULL DEFAULT 'none'` so that
18764
+ * every row is selectable by a positive predicate. (The filter language has
18765
+ * since grown the NULL-safe `whereNot` / `whereNotIn` and an `IS NULL` reading
18766
+ * of `where: { f: null }`, which is how {@link TrackSourceSchema} can be
18767
+ * filtered on a NULLABLE column — see `excludeSources`. It did not when this
18768
+ * column was designed, and a NOT NULL column is still the better shape.)
18763
18769
  */
18764
18770
  var RetrainStatusSchema = _enum([
18765
18771
  "none",
@@ -19495,7 +19501,9 @@ var RecentTracksQueryInput = object({
19495
19501
  * whose class list is unreadable are kept, and the client's rule stays the
19496
19502
  * exact one.
19497
19503
  */
19498
- classes: array(string()).optional()
19504
+ classes: array(string()).optional(),
19505
+ /** See {@link ExcludeSourcesDoc}. */
19506
+ excludeSources: array(TrackSourceSchema).optional()
19499
19507
  });
19500
19508
  /**
19501
19509
  * A Summary (D359): the per-camera session envelope that references tracks.
@@ -19923,7 +19931,9 @@ DeviceType.Camera, method(object({ deviceId: number$1() }), array(TrackSchema).r
19923
19931
  * selected is an operator who has not narrowed anything, and an empty
19924
19932
  * timeline would read as a camera that saw nothing.
19925
19933
  */
19926
- classes: array(string()).optional()
19934
+ classes: array(string()).optional(),
19935
+ /** See {@link ExcludeSourcesDoc}. */
19936
+ excludeSources: array(TrackSourceSchema).optional()
19927
19937
  }), array(TrackSchema).readonly()), method(RecentTracksQueryInput, RecentTracksPageSchema), method(SummariesQueryInput, SummariesPageSchema), method(object({ id: string() }), SummaryDetailSchema.nullable()), method(object({ deviceId: number$1() }), _void(), {
19928
19938
  kind: "mutation",
19929
19939
  auth: "admin"
@@ -27384,8 +27394,27 @@ var PrivacyMaskRegionSchema = object({
27384
27394
  });
27385
27395
  object({
27386
27396
  enabled: boolean(),
27387
- /** Active zones (normalized 0..1). Length ≤ maxRegions. */
27388
- regions: array(PrivacyMaskRegionSchema),
27397
+ /**
27398
+ * Active zones (normalized 0..1). Length ≤ maxRegions.
27399
+ *
27400
+ * `null` means "no answer" — the provider has never reached this camera
27401
+ * (a cold `runtimeState` slice, a battery camera asleep) or the read
27402
+ * failed. A consumer must render it as UNKNOWN and never as "this camera
27403
+ * has no zones": those two look identical to an operator right up to the
27404
+ * moment one of them is acted on, and acting on them differs completely.
27405
+ * The switch group turned an unanswered read into *"nothing is set up for
27406
+ * it to act on"* — an instruction to go and draw a zone that already
27407
+ * exists — and this editor seeded an EMPTY canvas from it, one Save away
27408
+ * from deleting the mask it could not read.
27409
+ *
27410
+ * Empty-and-answered is `[]` and stays a real answer: this camera genuinely
27411
+ * has no zones. The distinction is the same one {@link
27412
+ * PrivacyMaskStatusSchema.shape.audioEnabled} already draws for the
27413
+ * microphone, on the very same payload — both planes come from ONE refresh,
27414
+ * so it was never coherent for one of them to be able to say "unknown"
27415
+ * while the other could not.
27416
+ */
27417
+ regions: array(PrivacyMaskRegionSchema).nullable(),
27389
27418
  /**
27390
27419
  * Is the camera capturing sound right now? Read from the camera, never from
27391
27420
  * a server-side mirror.
package/dist/addon.mjs CHANGED
@@ -12179,6 +12179,9 @@ var QueryFilterSchema = object({
12179
12179
  whereBetween: record(string(), tuple([unknown(), unknown()])).optional(),
12180
12180
  /** NULL-safe exclusion: matches rows whose field is NULL OR != the value. */
12181
12181
  whereNot: record(string(), unknown()).optional(),
12182
+ /** NULL-safe exclusion of a SET — `whereNot` for more than one value. An
12183
+ * empty list excludes nothing. See `QueryFilter.whereNotIn`. */
12184
+ whereNotIn: record(string(), array(unknown())).optional(),
12182
12185
  orderBy: object({
12183
12186
  field: string(),
12184
12187
  direction: _enum(["asc", "desc"])
@@ -12199,7 +12202,8 @@ var MutationFilterSchema = object({
12199
12202
  where: record(string(), unknown()).optional(),
12200
12203
  whereIn: record(string(), array(unknown())).optional(),
12201
12204
  whereBetween: record(string(), tuple([unknown(), unknown()])).optional(),
12202
- whereNot: record(string(), unknown()).optional()
12205
+ whereNot: record(string(), unknown()).optional(),
12206
+ whereNotIn: record(string(), array(unknown())).optional()
12203
12207
  });
12204
12208
  /**
12205
12209
  * One scalar an {@link settingsStoreCapability.methods.aggregate} call asks for.
@@ -18783,10 +18787,12 @@ var TrackSourceSchema = _enum([
18783
18787
  * Terminal for the plain `markForTrain` toggle: returning it to `staging` is
18784
18788
  * a deliberate action of the retrain page, not a side effect of a checkbox.
18785
18789
  *
18786
- * There is no `null`. The state is stored `TEXT NOT NULL DEFAULT 'none'` because
18787
- * the store's filter language has only positive equality and `whereIn` — no
18788
- * negation, no IS NULL — so a NULL would be unselectable by ANY predicate and
18789
- * would make the entire pre-column history immortal in one deploy.
18790
+ * There is no `null`. The state is stored `TEXT NOT NULL DEFAULT 'none'` so that
18791
+ * every row is selectable by a positive predicate. (The filter language has
18792
+ * since grown the NULL-safe `whereNot` / `whereNotIn` and an `IS NULL` reading
18793
+ * of `where: { f: null }`, which is how {@link TrackSourceSchema} can be
18794
+ * filtered on a NULLABLE column — see `excludeSources`. It did not when this
18795
+ * column was designed, and a NOT NULL column is still the better shape.)
18790
18796
  */
18791
18797
  var RetrainStatusSchema = _enum([
18792
18798
  "none",
@@ -19522,7 +19528,9 @@ var RecentTracksQueryInput = object({
19522
19528
  * whose class list is unreadable are kept, and the client's rule stays the
19523
19529
  * exact one.
19524
19530
  */
19525
- classes: array(string()).optional()
19531
+ classes: array(string()).optional(),
19532
+ /** See {@link ExcludeSourcesDoc}. */
19533
+ excludeSources: array(TrackSourceSchema).optional()
19526
19534
  });
19527
19535
  /**
19528
19536
  * A Summary (D359): the per-camera session envelope that references tracks.
@@ -19950,7 +19958,9 @@ DeviceType.Camera, method(object({ deviceId: number$1() }), array(TrackSchema).r
19950
19958
  * selected is an operator who has not narrowed anything, and an empty
19951
19959
  * timeline would read as a camera that saw nothing.
19952
19960
  */
19953
- classes: array(string()).optional()
19961
+ classes: array(string()).optional(),
19962
+ /** See {@link ExcludeSourcesDoc}. */
19963
+ excludeSources: array(TrackSourceSchema).optional()
19954
19964
  }), array(TrackSchema).readonly()), method(RecentTracksQueryInput, RecentTracksPageSchema), method(SummariesQueryInput, SummariesPageSchema), method(object({ id: string() }), SummaryDetailSchema.nullable()), method(object({ deviceId: number$1() }), _void(), {
19955
19965
  kind: "mutation",
19956
19966
  auth: "admin"
@@ -27411,8 +27421,27 @@ var PrivacyMaskRegionSchema = object({
27411
27421
  });
27412
27422
  object({
27413
27423
  enabled: boolean(),
27414
- /** Active zones (normalized 0..1). Length ≤ maxRegions. */
27415
- regions: array(PrivacyMaskRegionSchema),
27424
+ /**
27425
+ * Active zones (normalized 0..1). Length ≤ maxRegions.
27426
+ *
27427
+ * `null` means "no answer" — the provider has never reached this camera
27428
+ * (a cold `runtimeState` slice, a battery camera asleep) or the read
27429
+ * failed. A consumer must render it as UNKNOWN and never as "this camera
27430
+ * has no zones": those two look identical to an operator right up to the
27431
+ * moment one of them is acted on, and acting on them differs completely.
27432
+ * The switch group turned an unanswered read into *"nothing is set up for
27433
+ * it to act on"* — an instruction to go and draw a zone that already
27434
+ * exists — and this editor seeded an EMPTY canvas from it, one Save away
27435
+ * from deleting the mask it could not read.
27436
+ *
27437
+ * Empty-and-answered is `[]` and stays a real answer: this camera genuinely
27438
+ * has no zones. The distinction is the same one {@link
27439
+ * PrivacyMaskStatusSchema.shape.audioEnabled} already draws for the
27440
+ * microphone, on the very same payload — both planes come from ONE refresh,
27441
+ * so it was never coherent for one of them to be able to say "unknown"
27442
+ * while the other could not.
27443
+ */
27444
+ regions: array(PrivacyMaskRegionSchema).nullable(),
27416
27445
  /**
27417
27446
  * Is the camera capturing sound right now? Read from the camera, never from
27418
27447
  * a server-side mirror.
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@camstack/addon-ai",
3
- "version": "0.4.83",
3
+ "version": "0.4.85",
4
4
  "description": "AI addon for CamStack — the `llm` collection provider (cloud, LAN, and camstack-managed local llama.cpp profiles) plus the per-node `llm-runtime` managed executor.",
5
5
  "keywords": [
6
6
  "camstack",