camstack 1.2.120 → 1.2.122

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.
@@ -36990,8 +36990,27 @@ var PrivacyMaskRegionSchema = external_exports.object({
36990
36990
  });
36991
36991
  var PrivacyMaskStatusSchema = external_exports.object({
36992
36992
  enabled: external_exports.boolean(),
36993
- /** Active zones (normalized 0..1). Length ≤ maxRegions. */
36994
- regions: external_exports.array(PrivacyMaskRegionSchema),
36993
+ /**
36994
+ * Active zones (normalized 0..1). Length ≤ maxRegions.
36995
+ *
36996
+ * `null` means "no answer" — the provider has never reached this camera
36997
+ * (a cold `runtimeState` slice, a battery camera asleep) or the read
36998
+ * failed. A consumer must render it as UNKNOWN and never as "this camera
36999
+ * has no zones": those two look identical to an operator right up to the
37000
+ * moment one of them is acted on, and acting on them differs completely.
37001
+ * The switch group turned an unanswered read into *"nothing is set up for
37002
+ * it to act on"* — an instruction to go and draw a zone that already
37003
+ * exists — and this editor seeded an EMPTY canvas from it, one Save away
37004
+ * from deleting the mask it could not read.
37005
+ *
37006
+ * Empty-and-answered is `[]` and stays a real answer: this camera genuinely
37007
+ * has no zones. The distinction is the same one {@link
37008
+ * PrivacyMaskStatusSchema.shape.audioEnabled} already draws for the
37009
+ * microphone, on the very same payload — both planes come from ONE refresh,
37010
+ * so it was never coherent for one of them to be able to say "unknown"
37011
+ * while the other could not.
37012
+ */
37013
+ regions: external_exports.array(PrivacyMaskRegionSchema).nullable(),
36995
37014
  /**
36996
37015
  * Is the camera capturing sound right now? Read from the camera, never from
36997
37016
  * a server-side mirror.
package/dist/cli.js CHANGED
@@ -1,7 +1,7 @@
1
1
  #!/usr/bin/env node
2
2
  import {
3
3
  runDiscover
4
- } from "./chunk-WS7MOCV6.js";
4
+ } from "./chunk-F56HD6CH.js";
5
5
  import "./chunk-LMMQX4CK.js";
6
6
 
7
7
  // src/cli.ts
@@ -38,7 +38,7 @@ async function runServe(args) {
38
38
  ...typeof values.data === "string" ? { data: values.data } : {}
39
39
  };
40
40
  Object.assign(process.env, buildServeEnv(opts));
41
- await import("./launcher-2RTV67R7.js");
41
+ await import("./launcher-2BTQJ5AA.js");
42
42
  }
43
43
 
44
44
  // src/commands/agent.ts
@@ -83,7 +83,7 @@ async function runAgent(args) {
83
83
  ...typeof values.port === "string" ? { port: values.port } : {}
84
84
  };
85
85
  Object.assign(process.env, buildAgentEnv(opts));
86
- await import("./launcher-2RTV67R7.js");
86
+ await import("./launcher-2BTQJ5AA.js");
87
87
  }
88
88
 
89
89
  // src/commands/setup.ts
@@ -1130,7 +1130,7 @@ function isUnknown(_value) {
1130
1130
  return true;
1131
1131
  }
1132
1132
  async function resolveServerInteractive(presetNamespace) {
1133
- const { discoverNodes, resolveHubFromDiscovered, filterHubNodes, DEFAULT_HUB_HTTPS_PORT } = await import("./discover-TX6JSFY5.js");
1133
+ const { discoverNodes, resolveHubFromDiscovered, filterHubNodes, DEFAULT_HUB_HTTPS_PORT } = await import("./discover-X5IKQOKL.js");
1134
1134
  if (presetNamespace) {
1135
1135
  const spinner4 = clack.spinner();
1136
1136
  spinner4.start(`Discovering hub on LAN (namespace "${presetNamespace}")`);
@@ -5,7 +5,7 @@ import {
5
5
  filterHubNodes,
6
6
  resolveHubFromDiscovered,
7
7
  runDiscover
8
- } from "./chunk-WS7MOCV6.js";
8
+ } from "./chunk-F56HD6CH.js";
9
9
  import "./chunk-LMMQX4CK.js";
10
10
  export {
11
11
  DEFAULT_HUB_HTTPS_PORT,
@@ -23633,9 +23633,9 @@ var require_zod = __commonJS({
23633
23633
  }
23634
23634
  });
23635
23635
 
23636
- // ../system/dist/dist-DBpT4R7u.js
23637
- var require_dist_DBpT4R7u = __commonJS({
23638
- "../system/dist/dist-DBpT4R7u.js"(exports) {
23636
+ // ../system/dist/dist-kUlalZ6-.js
23637
+ var require_dist_kUlalZ6 = __commonJS({
23638
+ "../system/dist/dist-kUlalZ6-.js"(exports) {
23639
23639
  "use strict";
23640
23640
  var zod = require_zod();
23641
23641
  var EventCategory = /* @__PURE__ */ (function(EventCategory2) {
@@ -47605,8 +47605,27 @@ var require_dist_DBpT4R7u = __commonJS({
47605
47605
  });
47606
47606
  var PrivacyMaskStatusSchema = zod.z.object({
47607
47607
  enabled: zod.z.boolean(),
47608
- /** Active zones (normalized 0..1). Length ≤ maxRegions. */
47609
- regions: zod.z.array(PrivacyMaskRegionSchema),
47608
+ /**
47609
+ * Active zones (normalized 0..1). Length ≤ maxRegions.
47610
+ *
47611
+ * `null` means "no answer" — the provider has never reached this camera
47612
+ * (a cold `runtimeState` slice, a battery camera asleep) or the read
47613
+ * failed. A consumer must render it as UNKNOWN and never as "this camera
47614
+ * has no zones": those two look identical to an operator right up to the
47615
+ * moment one of them is acted on, and acting on them differs completely.
47616
+ * The switch group turned an unanswered read into *"nothing is set up for
47617
+ * it to act on"* — an instruction to go and draw a zone that already
47618
+ * exists — and this editor seeded an EMPTY canvas from it, one Save away
47619
+ * from deleting the mask it could not read.
47620
+ *
47621
+ * Empty-and-answered is `[]` and stays a real answer: this camera genuinely
47622
+ * has no zones. The distinction is the same one {@link
47623
+ * PrivacyMaskStatusSchema.shape.audioEnabled} already draws for the
47624
+ * microphone, on the very same payload — both planes come from ONE refresh,
47625
+ * so it was never coherent for one of them to be able to say "unknown"
47626
+ * while the other could not.
47627
+ */
47628
+ regions: zod.z.array(PrivacyMaskRegionSchema).nullable(),
47610
47629
  /**
47611
47630
  * Is the camera capturing sound right now? Read from the camera, never from
47612
47631
  * a server-side mirror.
@@ -60939,7 +60958,7 @@ var require_alerts_addon = __commonJS({
60939
60958
  [Symbol.toStringTag]: { value: "Module" }
60940
60959
  });
60941
60960
  require_chunk_Cek0wNdY();
60942
- var require_dist10 = require_dist_DBpT4R7u();
60961
+ var require_dist10 = require_dist_kUlalZ6();
60943
60962
  function selectExpired(alerts, cutoffMs) {
60944
60963
  return alerts.filter((a) => a.createdAt < cutoffMs).sort((a, b) => a.createdAt - b.createdAt).map((a) => a.id);
60945
60964
  }
@@ -61758,7 +61777,7 @@ var require_console_logging = __commonJS({
61758
61777
  [Symbol.toStringTag]: { value: "Module" }
61759
61778
  });
61760
61779
  require_chunk_Cek0wNdY();
61761
- var require_dist10 = require_dist_DBpT4R7u();
61780
+ var require_dist10 = require_dist_kUlalZ6();
61762
61781
  var require_formatter = require_formatter_DqAKDlvN();
61763
61782
  var LEVEL_RANK = {
61764
61783
  debug: 0,
@@ -61852,7 +61871,7 @@ var require_core_blocks_addon = __commonJS({
61852
61871
  "use strict";
61853
61872
  Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
61854
61873
  var require_chunk = require_chunk_Cek0wNdY();
61855
- var require_dist10 = require_dist_DBpT4R7u();
61874
+ var require_dist10 = require_dist_kUlalZ6();
61856
61875
  var node_crypto = __require("crypto");
61857
61876
  var node_fs_promises = __require("fs/promises");
61858
61877
  node_fs_promises = require_chunk.__toESM(node_fs_promises);
@@ -62749,11 +62768,11 @@ var require_core_blocks = __commonJS({
62749
62768
  }
62750
62769
  });
62751
62770
 
62752
- // ../system/dist/retired-settings-keys-OLPjsG6e.js
62753
- var require_retired_settings_keys_OLPjsG6e = __commonJS({
62754
- "../system/dist/retired-settings-keys-OLPjsG6e.js"(exports) {
62771
+ // ../system/dist/retired-settings-keys-D61YnSKJ.js
62772
+ var require_retired_settings_keys_D61YnSKJ = __commonJS({
62773
+ "../system/dist/retired-settings-keys-D61YnSKJ.js"(exports) {
62755
62774
  "use strict";
62756
- var require_dist10 = require_dist_DBpT4R7u();
62775
+ var require_dist10 = require_dist_kUlalZ6();
62757
62776
  function settingsStoreIsAuthoritativeHere(env) {
62758
62777
  const raw = (env["CAMSTACK_ROLE"] ?? "").trim().toLowerCase();
62759
62778
  return raw === "" || raw === "hub";
@@ -64988,8 +65007,8 @@ var require_device_manager_addon = __commonJS({
64988
65007
  [Symbol.toStringTag]: { value: "Module" }
64989
65008
  });
64990
65009
  require_chunk_Cek0wNdY();
64991
- var require_dist10 = require_dist_DBpT4R7u();
64992
- var require_retired_settings_keys = require_retired_settings_keys_OLPjsG6e();
65010
+ var require_dist10 = require_dist_kUlalZ6();
65011
+ var require_retired_settings_keys = require_retired_settings_keys_D61YnSKJ();
64993
65012
  var node_crypto = __require("crypto");
64994
65013
  var _camstack_types_node = require_node();
64995
65014
  var JOB_HISTORY = 20;
@@ -70614,7 +70633,7 @@ var require_hub_forwarder = __commonJS({
70614
70633
  [Symbol.toStringTag]: { value: "Module" }
70615
70634
  });
70616
70635
  require_chunk_Cek0wNdY();
70617
- var require_dist10 = require_dist_DBpT4R7u();
70636
+ var require_dist10 = require_dist_kUlalZ6();
70618
70637
  var require_formatter = require_formatter_DqAKDlvN();
70619
70638
  var DEFAULT_OUTBOUND_BUFFER_SIZE = 500;
70620
70639
  var HubForwarderDestination = class {
@@ -70751,7 +70770,7 @@ var require_liveness_monitor_addon = __commonJS({
70751
70770
  "use strict";
70752
70771
  Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
70753
70772
  require_chunk_Cek0wNdY();
70754
- var require_dist10 = require_dist_DBpT4R7u();
70773
+ var require_dist10 = require_dist_kUlalZ6();
70755
70774
  var NO_DEVICES = "liveness:no-devices";
70756
70775
  var ALL_OFFLINE = "liveness:all-devices-offline";
70757
70776
  var NO_FOOTAGE_PREFIX = "liveness:no-footage:";
@@ -70947,7 +70966,7 @@ var require_local_auth_addon = __commonJS({
70947
70966
  [Symbol.toStringTag]: { value: "Module" }
70948
70967
  });
70949
70968
  var require_chunk = require_chunk_Cek0wNdY();
70950
- var require_dist10 = require_dist_DBpT4R7u();
70969
+ var require_dist10 = require_dist_kUlalZ6();
70951
70970
  var node_crypto = __require("crypto");
70952
70971
  node_crypto = require_chunk.__toESM(node_crypto);
70953
70972
  var crypto$1 = __require("crypto");
@@ -78760,7 +78779,7 @@ var require_loki_logging = __commonJS({
78760
78779
  [Symbol.toStringTag]: { value: "Module" }
78761
78780
  });
78762
78781
  require_chunk_Cek0wNdY();
78763
- var require_dist10 = require_dist_DBpT4R7u();
78782
+ var require_dist10 = require_dist_kUlalZ6();
78764
78783
  function sanitizeLabelName(raw) {
78765
78784
  const replaced = raw.replaceAll(/[^a-zA-Z0-9_]/g, "_");
78766
78785
  return /^[a-zA-Z_]/.test(replaced) ? replaced : `_${replaced}`;
@@ -79325,7 +79344,7 @@ var require_native_metrics_addon = __commonJS({
79325
79344
  [Symbol.toStringTag]: { value: "Module" }
79326
79345
  });
79327
79346
  var require_chunk = require_chunk_Cek0wNdY();
79328
- var require_dist10 = require_dist_DBpT4R7u();
79347
+ var require_dist10 = require_dist_kUlalZ6();
79329
79348
  var node_fs_promises = __require("fs/promises");
79330
79349
  var node_child_process = __require("child_process");
79331
79350
  var node_util = __require("util");
@@ -81909,7 +81928,7 @@ var require_filesystem_storage_addon = __commonJS({
81909
81928
  [Symbol.toStringTag]: { value: "Module" }
81910
81929
  });
81911
81930
  var require_chunk = require_chunk_Cek0wNdY();
81912
- var require_dist10 = require_dist_DBpT4R7u();
81931
+ var require_dist10 = require_dist_kUlalZ6();
81913
81932
  var node_crypto = __require("crypto");
81914
81933
  var node_fs_promises = __require("fs/promises");
81915
81934
  var node_path = __require("path");
@@ -83025,8 +83044,8 @@ var require_sqlite_settings_addon = __commonJS({
83025
83044
  [Symbol.toStringTag]: { value: "Module" }
83026
83045
  });
83027
83046
  var require_chunk = require_chunk_Cek0wNdY();
83028
- var require_dist10 = require_dist_DBpT4R7u();
83029
- var require_retired_settings_keys = require_retired_settings_keys_OLPjsG6e();
83047
+ var require_dist10 = require_dist_kUlalZ6();
83048
+ var require_retired_settings_keys = require_retired_settings_keys_D61YnSKJ();
83030
83049
  var node_crypto = __require("crypto");
83031
83050
  var node_fs = __require("fs");
83032
83051
  var node_module = __require("module");
@@ -85530,7 +85549,7 @@ var require_storage_orchestrator_addon = __commonJS({
85530
85549
  [Symbol.toStringTag]: { value: "Module" }
85531
85550
  });
85532
85551
  var require_chunk = require_chunk_Cek0wNdY();
85533
- var require_dist10 = require_dist_DBpT4R7u();
85552
+ var require_dist10 = require_dist_kUlalZ6();
85534
85553
  var require_hub_cap_forward = require_hub_cap_forward_DmHNjbB0();
85535
85554
  var zod = require_zod();
85536
85555
  var node_crypto = __require("crypto");
@@ -89086,7 +89105,7 @@ var require_system_config_addon = __commonJS({
89086
89105
  [Symbol.toStringTag]: { value: "Module" }
89087
89106
  });
89088
89107
  require_chunk_Cek0wNdY();
89089
- var require_dist10 = require_dist_DBpT4R7u();
89108
+ var require_dist10 = require_dist_kUlalZ6();
89090
89109
  var SECTION_TITLES = {
89091
89110
  server: "Server",
89092
89111
  auth: "Authentication"
@@ -107147,7 +107166,7 @@ var require_winston_logging = __commonJS({
107147
107166
  [Symbol.toStringTag]: { value: "Module" }
107148
107167
  });
107149
107168
  var require_chunk = require_chunk_Cek0wNdY();
107150
- var require_dist10 = require_dist_DBpT4R7u();
107169
+ var require_dist10 = require_dist_kUlalZ6();
107151
107170
  var require_formatter = require_formatter_DqAKDlvN();
107152
107171
  var node_path = __require("path");
107153
107172
  node_path = require_chunk.__toESM(node_path);
@@ -131757,7 +131776,7 @@ var require_dist3 = __commonJS({
131757
131776
  "use strict";
131758
131777
  Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
131759
131778
  var require_chunk = require_chunk_Cek0wNdY();
131760
- var require_dist10 = require_dist_DBpT4R7u();
131779
+ var require_dist10 = require_dist_kUlalZ6();
131761
131780
  var require_builtins_alerts_alerts_addon = require_alerts_addon();
131762
131781
  require_alerts();
131763
131782
  var require_formatter = require_formatter_DqAKDlvN();
@@ -237902,8 +237921,27 @@ ${recipe.triggers.map((t, i) => emitTrigger(t, i)).join("\n\n")}
237902
237921
  });
237903
237922
  var PrivacyMaskStatusSchema = zod.z.object({
237904
237923
  enabled: zod.z.boolean(),
237905
- /** Active zones (normalized 0..1). Length ≤ maxRegions. */
237906
- regions: zod.z.array(PrivacyMaskRegionSchema),
237924
+ /**
237925
+ * Active zones (normalized 0..1). Length ≤ maxRegions.
237926
+ *
237927
+ * `null` means "no answer" — the provider has never reached this camera
237928
+ * (a cold `runtimeState` slice, a battery camera asleep) or the read
237929
+ * failed. A consumer must render it as UNKNOWN and never as "this camera
237930
+ * has no zones": those two look identical to an operator right up to the
237931
+ * moment one of them is acted on, and acting on them differs completely.
237932
+ * The switch group turned an unanswered read into *"nothing is set up for
237933
+ * it to act on"* — an instruction to go and draw a zone that already
237934
+ * exists — and this editor seeded an EMPTY canvas from it, one Save away
237935
+ * from deleting the mask it could not read.
237936
+ *
237937
+ * Empty-and-answered is `[]` and stays a real answer: this camera genuinely
237938
+ * has no zones. The distinction is the same one {@link
237939
+ * PrivacyMaskStatusSchema.shape.audioEnabled} already draws for the
237940
+ * microphone, on the very same payload — both planes come from ONE refresh,
237941
+ * so it was never coherent for one of them to be able to say "unknown"
237942
+ * while the other could not.
237943
+ */
237944
+ regions: zod.z.array(PrivacyMaskRegionSchema).nullable(),
237907
237945
  /**
237908
237946
  * Is the camera capturing sound right now? Read from the camera, never from
237909
237947
  * a server-side mirror.
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "camstack",
3
- "version": "1.2.120",
3
+ "version": "1.2.122",
4
4
  "description": "CLI tool for managing and running CamStack server",
5
5
  "keywords": [
6
6
  "camstack",