@camstack/addon-terminal 0.1.86 → 0.1.88

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
@@ -12150,6 +12150,9 @@ var QueryFilterSchema = object({
12150
12150
  whereBetween: record(string(), tuple([unknown(), unknown()])).optional(),
12151
12151
  /** NULL-safe exclusion: matches rows whose field is NULL OR != the value. */
12152
12152
  whereNot: record(string(), unknown()).optional(),
12153
+ /** NULL-safe exclusion of a SET — `whereNot` for more than one value. An
12154
+ * empty list excludes nothing. See `QueryFilter.whereNotIn`. */
12155
+ whereNotIn: record(string(), array(unknown())).optional(),
12153
12156
  orderBy: object({
12154
12157
  field: string(),
12155
12158
  direction: _enum(["asc", "desc"])
@@ -12170,7 +12173,8 @@ var MutationFilterSchema = object({
12170
12173
  where: record(string(), unknown()).optional(),
12171
12174
  whereIn: record(string(), array(unknown())).optional(),
12172
12175
  whereBetween: record(string(), tuple([unknown(), unknown()])).optional(),
12173
- whereNot: record(string(), unknown()).optional()
12176
+ whereNot: record(string(), unknown()).optional(),
12177
+ whereNotIn: record(string(), array(unknown())).optional()
12174
12178
  });
12175
12179
  /**
12176
12180
  * One scalar an {@link settingsStoreCapability.methods.aggregate} call asks for.
@@ -18845,10 +18849,12 @@ var TrackSourceSchema = _enum([
18845
18849
  * Terminal for the plain `markForTrain` toggle: returning it to `staging` is
18846
18850
  * a deliberate action of the retrain page, not a side effect of a checkbox.
18847
18851
  *
18848
- * There is no `null`. The state is stored `TEXT NOT NULL DEFAULT 'none'` because
18849
- * the store's filter language has only positive equality and `whereIn` no
18850
- * negation, no IS NULL so a NULL would be unselectable by ANY predicate and
18851
- * would make the entire pre-column history immortal in one deploy.
18852
+ * There is no `null`. The state is stored `TEXT NOT NULL DEFAULT 'none'` so that
18853
+ * every row is selectable by a positive predicate. (The filter language has
18854
+ * since grown the NULL-safe `whereNot` / `whereNotIn` and an `IS NULL` reading
18855
+ * of `where: { f: null }`, which is how {@link TrackSourceSchema} can be
18856
+ * filtered on a NULLABLE column — see `excludeSources`. It did not when this
18857
+ * column was designed, and a NOT NULL column is still the better shape.)
18852
18858
  */
18853
18859
  var RetrainStatusSchema = _enum([
18854
18860
  "none",
@@ -19584,7 +19590,9 @@ var RecentTracksQueryInput = object({
19584
19590
  * whose class list is unreadable are kept, and the client's rule stays the
19585
19591
  * exact one.
19586
19592
  */
19587
- classes: array(string()).optional()
19593
+ classes: array(string()).optional(),
19594
+ /** See {@link ExcludeSourcesDoc}. */
19595
+ excludeSources: array(TrackSourceSchema).optional()
19588
19596
  });
19589
19597
  /**
19590
19598
  * A Summary (D359): the per-camera session envelope that references tracks.
@@ -20012,7 +20020,9 @@ DeviceType.Camera, method(object({ deviceId: number() }), array(TrackSchema).rea
20012
20020
  * selected is an operator who has not narrowed anything, and an empty
20013
20021
  * timeline would read as a camera that saw nothing.
20014
20022
  */
20015
- classes: array(string()).optional()
20023
+ classes: array(string()).optional(),
20024
+ /** See {@link ExcludeSourcesDoc}. */
20025
+ excludeSources: array(TrackSourceSchema).optional()
20016
20026
  }), array(TrackSchema).readonly()), method(RecentTracksQueryInput, RecentTracksPageSchema), method(SummariesQueryInput, SummariesPageSchema), method(object({ id: string() }), SummaryDetailSchema.nullable()), method(object({ deviceId: number() }), _void(), {
20017
20027
  kind: "mutation",
20018
20028
  auth: "admin"
@@ -29350,8 +29360,27 @@ var PrivacyMaskRegionSchema = object({
29350
29360
  /** Current on-camera privacy state — mask master enable + zones + microphone. */
29351
29361
  var PrivacyMaskStatusSchema = object({
29352
29362
  enabled: boolean(),
29353
- /** Active zones (normalized 0..1). Length ≤ maxRegions. */
29354
- regions: array(PrivacyMaskRegionSchema),
29363
+ /**
29364
+ * Active zones (normalized 0..1). Length ≤ maxRegions.
29365
+ *
29366
+ * `null` means "no answer" — the provider has never reached this camera
29367
+ * (a cold `runtimeState` slice, a battery camera asleep) or the read
29368
+ * failed. A consumer must render it as UNKNOWN and never as "this camera
29369
+ * has no zones": those two look identical to an operator right up to the
29370
+ * moment one of them is acted on, and acting on them differs completely.
29371
+ * The switch group turned an unanswered read into *"nothing is set up for
29372
+ * it to act on"* — an instruction to go and draw a zone that already
29373
+ * exists — and this editor seeded an EMPTY canvas from it, one Save away
29374
+ * from deleting the mask it could not read.
29375
+ *
29376
+ * Empty-and-answered is `[]` and stays a real answer: this camera genuinely
29377
+ * has no zones. The distinction is the same one {@link
29378
+ * PrivacyMaskStatusSchema.shape.audioEnabled} already draws for the
29379
+ * microphone, on the very same payload — both planes come from ONE refresh,
29380
+ * so it was never coherent for one of them to be able to say "unknown"
29381
+ * while the other could not.
29382
+ */
29383
+ regions: array(PrivacyMaskRegionSchema).nullable(),
29355
29384
  /**
29356
29385
  * Is the camera capturing sound right now? Read from the camera, never from
29357
29386
  * a server-side mirror.
package/dist/addon.mjs CHANGED
@@ -12127,6 +12127,9 @@ var QueryFilterSchema = object({
12127
12127
  whereBetween: record(string(), tuple([unknown(), unknown()])).optional(),
12128
12128
  /** NULL-safe exclusion: matches rows whose field is NULL OR != the value. */
12129
12129
  whereNot: record(string(), unknown()).optional(),
12130
+ /** NULL-safe exclusion of a SET — `whereNot` for more than one value. An
12131
+ * empty list excludes nothing. See `QueryFilter.whereNotIn`. */
12132
+ whereNotIn: record(string(), array(unknown())).optional(),
12130
12133
  orderBy: object({
12131
12134
  field: string(),
12132
12135
  direction: _enum(["asc", "desc"])
@@ -12147,7 +12150,8 @@ var MutationFilterSchema = object({
12147
12150
  where: record(string(), unknown()).optional(),
12148
12151
  whereIn: record(string(), array(unknown())).optional(),
12149
12152
  whereBetween: record(string(), tuple([unknown(), unknown()])).optional(),
12150
- whereNot: record(string(), unknown()).optional()
12153
+ whereNot: record(string(), unknown()).optional(),
12154
+ whereNotIn: record(string(), array(unknown())).optional()
12151
12155
  });
12152
12156
  /**
12153
12157
  * One scalar an {@link settingsStoreCapability.methods.aggregate} call asks for.
@@ -18822,10 +18826,12 @@ var TrackSourceSchema = _enum([
18822
18826
  * Terminal for the plain `markForTrain` toggle: returning it to `staging` is
18823
18827
  * a deliberate action of the retrain page, not a side effect of a checkbox.
18824
18828
  *
18825
- * There is no `null`. The state is stored `TEXT NOT NULL DEFAULT 'none'` because
18826
- * the store's filter language has only positive equality and `whereIn` no
18827
- * negation, no IS NULL so a NULL would be unselectable by ANY predicate and
18828
- * would make the entire pre-column history immortal in one deploy.
18829
+ * There is no `null`. The state is stored `TEXT NOT NULL DEFAULT 'none'` so that
18830
+ * every row is selectable by a positive predicate. (The filter language has
18831
+ * since grown the NULL-safe `whereNot` / `whereNotIn` and an `IS NULL` reading
18832
+ * of `where: { f: null }`, which is how {@link TrackSourceSchema} can be
18833
+ * filtered on a NULLABLE column — see `excludeSources`. It did not when this
18834
+ * column was designed, and a NOT NULL column is still the better shape.)
18829
18835
  */
18830
18836
  var RetrainStatusSchema = _enum([
18831
18837
  "none",
@@ -19561,7 +19567,9 @@ var RecentTracksQueryInput = object({
19561
19567
  * whose class list is unreadable are kept, and the client's rule stays the
19562
19568
  * exact one.
19563
19569
  */
19564
- classes: array(string()).optional()
19570
+ classes: array(string()).optional(),
19571
+ /** See {@link ExcludeSourcesDoc}. */
19572
+ excludeSources: array(TrackSourceSchema).optional()
19565
19573
  });
19566
19574
  /**
19567
19575
  * A Summary (D359): the per-camera session envelope that references tracks.
@@ -19989,7 +19997,9 @@ DeviceType.Camera, method(object({ deviceId: number() }), array(TrackSchema).rea
19989
19997
  * selected is an operator who has not narrowed anything, and an empty
19990
19998
  * timeline would read as a camera that saw nothing.
19991
19999
  */
19992
- classes: array(string()).optional()
20000
+ classes: array(string()).optional(),
20001
+ /** See {@link ExcludeSourcesDoc}. */
20002
+ excludeSources: array(TrackSourceSchema).optional()
19993
20003
  }), array(TrackSchema).readonly()), method(RecentTracksQueryInput, RecentTracksPageSchema), method(SummariesQueryInput, SummariesPageSchema), method(object({ id: string() }), SummaryDetailSchema.nullable()), method(object({ deviceId: number() }), _void(), {
19994
20004
  kind: "mutation",
19995
20005
  auth: "admin"
@@ -29327,8 +29337,27 @@ var PrivacyMaskRegionSchema = object({
29327
29337
  /** Current on-camera privacy state — mask master enable + zones + microphone. */
29328
29338
  var PrivacyMaskStatusSchema = object({
29329
29339
  enabled: boolean(),
29330
- /** Active zones (normalized 0..1). Length ≤ maxRegions. */
29331
- regions: array(PrivacyMaskRegionSchema),
29340
+ /**
29341
+ * Active zones (normalized 0..1). Length ≤ maxRegions.
29342
+ *
29343
+ * `null` means "no answer" — the provider has never reached this camera
29344
+ * (a cold `runtimeState` slice, a battery camera asleep) or the read
29345
+ * failed. A consumer must render it as UNKNOWN and never as "this camera
29346
+ * has no zones": those two look identical to an operator right up to the
29347
+ * moment one of them is acted on, and acting on them differs completely.
29348
+ * The switch group turned an unanswered read into *"nothing is set up for
29349
+ * it to act on"* — an instruction to go and draw a zone that already
29350
+ * exists — and this editor seeded an EMPTY canvas from it, one Save away
29351
+ * from deleting the mask it could not read.
29352
+ *
29353
+ * Empty-and-answered is `[]` and stays a real answer: this camera genuinely
29354
+ * has no zones. The distinction is the same one {@link
29355
+ * PrivacyMaskStatusSchema.shape.audioEnabled} already draws for the
29356
+ * microphone, on the very same payload — both planes come from ONE refresh,
29357
+ * so it was never coherent for one of them to be able to say "unknown"
29358
+ * while the other could not.
29359
+ */
29360
+ regions: array(PrivacyMaskRegionSchema).nullable(),
29332
29361
  /**
29333
29362
  * Is the camera capturing sound right now? Read from the camera, never from
29334
29363
  * a server-side mirror.
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@camstack/addon-terminal",
3
- "version": "0.1.86",
3
+ "version": "0.1.88",
4
4
  "description": "Interactive terminal sessions (pty + xterm) as a CamStack addon",
5
5
  "keywords": [
6
6
  "camstack",