camstack 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.
package/dist/cli.js CHANGED
@@ -1,7 +1,7 @@
1
1
  #!/usr/bin/env node
2
2
  import {
3
3
  runDiscover
4
- } from "./chunk-I6O2CHPR.js";
4
+ } from "./chunk-BLJRLA7I.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-3OHBVI43.js");
41
+ await import("./launcher-POOJGOAQ.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-3OHBVI43.js");
86
+ await import("./launcher-POOJGOAQ.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-LZJPQBVA.js");
1133
+ const { discoverNodes, resolveHubFromDiscovered, filterHubNodes, DEFAULT_HUB_HTTPS_PORT } = await import("./discover-FHE2CTRJ.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-I6O2CHPR.js";
8
+ } from "./chunk-BLJRLA7I.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-D8VIyu_0.js
23637
- var require_dist_D8VIyu_0 = __commonJS({
23638
- "../system/dist/dist-D8VIyu_0.js"(exports) {
23636
+ // ../system/dist/dist-DE3OH-FG.js
23637
+ var require_dist_DE3OH_FG = __commonJS({
23638
+ "../system/dist/dist-DE3OH-FG.js"(exports) {
23639
23639
  "use strict";
23640
23640
  var zod = require_zod();
23641
23641
  var EventCategory = /* @__PURE__ */ (function(EventCategory2) {
@@ -50286,16 +50286,34 @@ var require_dist_D8VIyu_0 = __commonJS({
50286
50286
  "image",
50287
50287
  "sensor"
50288
50288
  ];
50289
+ var CONTAINER_CHILD_ROLE_PRIORITY = [
50290
+ "contact-sensor",
50291
+ "motion-sensor",
50292
+ "occupancy-sensor",
50293
+ "smoke-sensor",
50294
+ "co-sensor",
50295
+ "gas-sensor",
50296
+ "leak-sensor",
50297
+ "vibration-sensor",
50298
+ "tamper-sensor",
50299
+ "sound-sensor"
50300
+ ];
50301
+ function roleRank(role) {
50302
+ if (role === void 0) return CONTAINER_CHILD_ROLE_PRIORITY.length;
50303
+ const i = CONTAINER_CHILD_ROLE_PRIORITY.indexOf(role);
50304
+ return i === -1 ? CONTAINER_CHILD_ROLE_PRIORITY.length : i;
50305
+ }
50289
50306
  function rank(type) {
50290
50307
  const i = CONTAINER_CHILD_PRIORITY.indexOf(type);
50291
50308
  return i === -1 ? CONTAINER_CHILD_PRIORITY.length : i;
50292
50309
  }
50293
- function resolveContainerPrimaryChild(children, overrideEntityId) {
50310
+ function resolveContainerPrimaryChild(children, overrideEntityId, containerName) {
50294
50311
  if (overrideEntityId !== void 0 && overrideEntityId !== null) {
50295
50312
  const picked = children.find((c) => c.stableId === overrideEntityId) ?? children.find((c) => c.entityId !== void 0 && c.entityId === overrideEntityId);
50296
50313
  if (picked !== void 0) return picked;
50297
50314
  }
50298
- return [...children].toSorted((a, b) => rank(a.type) - rank(b.type))[0] ?? null;
50315
+ const namesake = (c) => containerName !== void 0 && containerName.length > 0 && c.name !== void 0 && c.name.toLowerCase() === containerName.toLowerCase() ? 0 : 1;
50316
+ return [...children].toSorted((a, b) => roleRank(a.role) - roleRank(b.role) || namesake(a) - namesake(b) || rank(a.type) - rank(b.type))[0] ?? null;
50299
50317
  }
50300
50318
  var AccessoryKind = {
50301
50319
  Siren: DeviceRole.Siren,
@@ -60061,7 +60079,7 @@ var require_alerts_addon = __commonJS({
60061
60079
  [Symbol.toStringTag]: { value: "Module" }
60062
60080
  });
60063
60081
  require_chunk_Cek0wNdY();
60064
- var require_dist10 = require_dist_D8VIyu_0();
60082
+ var require_dist10 = require_dist_DE3OH_FG();
60065
60083
  function selectExpired(alerts, cutoffMs) {
60066
60084
  return alerts.filter((a) => a.createdAt < cutoffMs).sort((a, b) => a.createdAt - b.createdAt).map((a) => a.id);
60067
60085
  }
@@ -60880,7 +60898,7 @@ var require_console_logging = __commonJS({
60880
60898
  [Symbol.toStringTag]: { value: "Module" }
60881
60899
  });
60882
60900
  require_chunk_Cek0wNdY();
60883
- var require_dist10 = require_dist_D8VIyu_0();
60901
+ var require_dist10 = require_dist_DE3OH_FG();
60884
60902
  var require_formatter = require_formatter_DqAKDlvN();
60885
60903
  var LEVEL_RANK = {
60886
60904
  debug: 0,
@@ -60974,7 +60992,7 @@ var require_core_blocks_addon = __commonJS({
60974
60992
  "use strict";
60975
60993
  Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
60976
60994
  var require_chunk = require_chunk_Cek0wNdY();
60977
- var require_dist10 = require_dist_D8VIyu_0();
60995
+ var require_dist10 = require_dist_DE3OH_FG();
60978
60996
  var node_crypto = __require("crypto");
60979
60997
  var node_fs_promises = __require("fs/promises");
60980
60998
  node_fs_promises = require_chunk.__toESM(node_fs_promises);
@@ -61871,11 +61889,11 @@ var require_core_blocks = __commonJS({
61871
61889
  }
61872
61890
  });
61873
61891
 
61874
- // ../system/dist/retired-settings-keys-wakiINPT.js
61875
- var require_retired_settings_keys_wakiINPT = __commonJS({
61876
- "../system/dist/retired-settings-keys-wakiINPT.js"(exports) {
61892
+ // ../system/dist/retired-settings-keys-BgUS9Rr3.js
61893
+ var require_retired_settings_keys_BgUS9Rr3 = __commonJS({
61894
+ "../system/dist/retired-settings-keys-BgUS9Rr3.js"(exports) {
61877
61895
  "use strict";
61878
- var require_dist10 = require_dist_D8VIyu_0();
61896
+ var require_dist10 = require_dist_DE3OH_FG();
61879
61897
  function settingsStoreIsAuthoritativeHere(env) {
61880
61898
  const raw = (env["CAMSTACK_ROLE"] ?? "").trim().toLowerCase();
61881
61899
  return raw === "" || raw === "hub";
@@ -64089,8 +64107,8 @@ var require_device_manager_addon = __commonJS({
64089
64107
  [Symbol.toStringTag]: { value: "Module" }
64090
64108
  });
64091
64109
  require_chunk_Cek0wNdY();
64092
- var require_dist10 = require_dist_D8VIyu_0();
64093
- var require_retired_settings_keys = require_retired_settings_keys_wakiINPT();
64110
+ var require_dist10 = require_dist_DE3OH_FG();
64111
+ var require_retired_settings_keys = require_retired_settings_keys_BgUS9Rr3();
64094
64112
  var node_crypto = __require("crypto");
64095
64113
  var _camstack_types_node = require_node();
64096
64114
  var JOB_HISTORY = 20;
@@ -65736,8 +65754,10 @@ var require_device_manager_addon = __commonJS({
65736
65754
  const primary = require_dist10.resolveContainerPrimaryChild((byParent.get(id) ?? []).map((c) => ({
65737
65755
  id: c.id,
65738
65756
  stableId: c.stableId,
65739
- type: c.type
65740
- })), byId.get(id)?.primaryChildEntityId);
65757
+ type: c.type,
65758
+ ...c.role !== void 0 && c.role !== null ? { role: c.role } : {},
65759
+ ...c.name !== void 0 ? { name: c.name } : {}
65760
+ })), byId.get(id)?.primaryChildEntityId, byId.get(id)?.name);
65741
65761
  if (primary !== null) expandContainer(primary.id, byId, byParent, nextVisited, out);
65742
65762
  }
65743
65763
  function resolveLinkedDeviceIds(params) {
@@ -67243,6 +67263,16 @@ var require_device_manager_addon = __commonJS({
67243
67263
  const { deviceId, primaryChildEntityId } = input;
67244
67264
  await pctx.metaStore.withMetaWriteLock(async () => {
67245
67265
  if (!await pctx.metaStore.resolvePersistedById(deviceId)) throw new Error(`[device-manager] setPrimaryChildEntityId: unknown device id=${deviceId}`);
67266
+ if (primaryChildEntityId !== null) {
67267
+ const children = await pctx.metaStore.rows.listByParent(deviceId);
67268
+ if (!children.some((child) => child.meta.stableId === primaryChildEntityId)) pctx.host.ctx.logger.warn("setPrimaryChildEntityId: pick matches no child \u2014 the container will keep its priority default", {
67269
+ tags: { deviceId },
67270
+ meta: {
67271
+ primaryChildEntityId,
67272
+ childStableIds: children.map((child) => child.meta.stableId).slice(0, 12)
67273
+ }
67274
+ });
67275
+ }
67246
67276
  await pctx.metaStore.rows.patch(deviceId, { primaryChildEntityId });
67247
67277
  });
67248
67278
  pctx.host.ctx.eventBus.emit({
@@ -69362,7 +69392,7 @@ var require_hub_forwarder = __commonJS({
69362
69392
  [Symbol.toStringTag]: { value: "Module" }
69363
69393
  });
69364
69394
  require_chunk_Cek0wNdY();
69365
- var require_dist10 = require_dist_D8VIyu_0();
69395
+ var require_dist10 = require_dist_DE3OH_FG();
69366
69396
  var require_formatter = require_formatter_DqAKDlvN();
69367
69397
  var DEFAULT_OUTBOUND_BUFFER_SIZE = 500;
69368
69398
  var HubForwarderDestination = class {
@@ -69499,7 +69529,7 @@ var require_liveness_monitor_addon = __commonJS({
69499
69529
  "use strict";
69500
69530
  Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
69501
69531
  require_chunk_Cek0wNdY();
69502
- var require_dist10 = require_dist_D8VIyu_0();
69532
+ var require_dist10 = require_dist_DE3OH_FG();
69503
69533
  var NO_DEVICES = "liveness:no-devices";
69504
69534
  var ALL_OFFLINE = "liveness:all-devices-offline";
69505
69535
  var NO_FOOTAGE_PREFIX = "liveness:no-footage:";
@@ -69689,7 +69719,7 @@ var require_local_auth_addon = __commonJS({
69689
69719
  [Symbol.toStringTag]: { value: "Module" }
69690
69720
  });
69691
69721
  var require_chunk = require_chunk_Cek0wNdY();
69692
- var require_dist10 = require_dist_D8VIyu_0();
69722
+ var require_dist10 = require_dist_DE3OH_FG();
69693
69723
  var node_crypto = __require("crypto");
69694
69724
  node_crypto = require_chunk.__toESM(node_crypto);
69695
69725
  var crypto$1 = __require("crypto");
@@ -77502,7 +77532,7 @@ var require_loki_logging = __commonJS({
77502
77532
  [Symbol.toStringTag]: { value: "Module" }
77503
77533
  });
77504
77534
  require_chunk_Cek0wNdY();
77505
- var require_dist10 = require_dist_D8VIyu_0();
77535
+ var require_dist10 = require_dist_DE3OH_FG();
77506
77536
  function sanitizeLabelName(raw) {
77507
77537
  const replaced = raw.replaceAll(/[^a-zA-Z0-9_]/g, "_");
77508
77538
  return /^[a-zA-Z_]/.test(replaced) ? replaced : `_${replaced}`;
@@ -78067,7 +78097,7 @@ var require_native_metrics_addon = __commonJS({
78067
78097
  [Symbol.toStringTag]: { value: "Module" }
78068
78098
  });
78069
78099
  var require_chunk = require_chunk_Cek0wNdY();
78070
- var require_dist10 = require_dist_D8VIyu_0();
78100
+ var require_dist10 = require_dist_DE3OH_FG();
78071
78101
  var node_fs_promises = __require("fs/promises");
78072
78102
  var node_child_process = __require("child_process");
78073
78103
  var node_util = __require("util");
@@ -80651,7 +80681,7 @@ var require_filesystem_storage_addon = __commonJS({
80651
80681
  [Symbol.toStringTag]: { value: "Module" }
80652
80682
  });
80653
80683
  var require_chunk = require_chunk_Cek0wNdY();
80654
- var require_dist10 = require_dist_D8VIyu_0();
80684
+ var require_dist10 = require_dist_DE3OH_FG();
80655
80685
  var node_crypto = __require("crypto");
80656
80686
  var node_fs_promises = __require("fs/promises");
80657
80687
  var node_path = __require("path");
@@ -81767,8 +81797,8 @@ var require_sqlite_settings_addon = __commonJS({
81767
81797
  [Symbol.toStringTag]: { value: "Module" }
81768
81798
  });
81769
81799
  var require_chunk = require_chunk_Cek0wNdY();
81770
- var require_dist10 = require_dist_D8VIyu_0();
81771
- var require_retired_settings_keys = require_retired_settings_keys_wakiINPT();
81800
+ var require_dist10 = require_dist_DE3OH_FG();
81801
+ var require_retired_settings_keys = require_retired_settings_keys_BgUS9Rr3();
81772
81802
  var node_crypto = __require("crypto");
81773
81803
  var node_fs = __require("fs");
81774
81804
  var node_module = __require("module");
@@ -84258,7 +84288,7 @@ var require_storage_orchestrator_addon = __commonJS({
84258
84288
  [Symbol.toStringTag]: { value: "Module" }
84259
84289
  });
84260
84290
  var require_chunk = require_chunk_Cek0wNdY();
84261
- var require_dist10 = require_dist_D8VIyu_0();
84291
+ var require_dist10 = require_dist_DE3OH_FG();
84262
84292
  var require_hub_cap_forward = require_hub_cap_forward_DmHNjbB0();
84263
84293
  var zod = require_zod();
84264
84294
  var node_crypto = __require("crypto");
@@ -87209,7 +87239,7 @@ var require_system_config_addon = __commonJS({
87209
87239
  [Symbol.toStringTag]: { value: "Module" }
87210
87240
  });
87211
87241
  require_chunk_Cek0wNdY();
87212
- var require_dist10 = require_dist_D8VIyu_0();
87242
+ var require_dist10 = require_dist_DE3OH_FG();
87213
87243
  var SECTION_TITLES = {
87214
87244
  server: "Server",
87215
87245
  auth: "Authentication"
@@ -105270,7 +105300,7 @@ var require_winston_logging = __commonJS({
105270
105300
  [Symbol.toStringTag]: { value: "Module" }
105271
105301
  });
105272
105302
  var require_chunk = require_chunk_Cek0wNdY();
105273
- var require_dist10 = require_dist_D8VIyu_0();
105303
+ var require_dist10 = require_dist_DE3OH_FG();
105274
105304
  var require_formatter = require_formatter_DqAKDlvN();
105275
105305
  var node_path = __require("path");
105276
105306
  node_path = require_chunk.__toESM(node_path);
@@ -117772,12 +117802,12 @@ var require_dist2 = __commonJS({
117772
117802
  }
117773
117803
  });
117774
117804
 
117775
- // ../system/dist/manifest-system-deps-BbP419V1.js
117776
- var require_manifest_system_deps_BbP419V1 = __commonJS({
117777
- "../system/dist/manifest-system-deps-BbP419V1.js"(exports) {
117805
+ // ../system/dist/manifest-system-deps-DMWd5Ygf.js
117806
+ var require_manifest_system_deps_DMWd5Ygf = __commonJS({
117807
+ "../system/dist/manifest-system-deps-DMWd5Ygf.js"(exports) {
117778
117808
  "use strict";
117779
117809
  var require_chunk = require_chunk_Cek0wNdY();
117780
- require_dist_D8VIyu_0();
117810
+ require_dist_DE3OH_FG();
117781
117811
  require_hub_cap_forward_DmHNjbB0();
117782
117812
  var node_crypto = __require("crypto");
117783
117813
  node_crypto = require_chunk.__toESM(node_crypto);
@@ -129844,7 +129874,7 @@ var require_dist3 = __commonJS({
129844
129874
  "use strict";
129845
129875
  Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
129846
129876
  var require_chunk = require_chunk_Cek0wNdY();
129847
- var require_dist10 = require_dist_D8VIyu_0();
129877
+ var require_dist10 = require_dist_DE3OH_FG();
129848
129878
  var require_builtins_alerts_alerts_addon = require_alerts_addon();
129849
129879
  require_alerts();
129850
129880
  var require_formatter = require_formatter_DqAKDlvN();
@@ -129871,7 +129901,7 @@ var require_dist3 = __commonJS({
129871
129901
  var require_builtins_winston_logging_index = require_winston_logging();
129872
129902
  var require_file_data_plane = require_file_data_plane_DO8KbxCe();
129873
129903
  var require_tls$1 = require_tls_BxQlomxd();
129874
- var require_manifest_system_deps = require_manifest_system_deps_BbP419V1();
129904
+ var require_manifest_system_deps = require_manifest_system_deps_DMWd5Ygf();
129875
129905
  var require_resource_monitor = require_resource_monitor_CdnzxBLP();
129876
129906
  var require_custom_action_registry = require_custom_action_registry_jY0NOZK8();
129877
129907
  var zod = require_zod();
@@ -238555,16 +238585,34 @@ ${recipe.triggers.map((t, i) => emitTrigger(t, i)).join("\n\n")}
238555
238585
  "image",
238556
238586
  "sensor"
238557
238587
  ];
238588
+ var CONTAINER_CHILD_ROLE_PRIORITY = [
238589
+ "contact-sensor",
238590
+ "motion-sensor",
238591
+ "occupancy-sensor",
238592
+ "smoke-sensor",
238593
+ "co-sensor",
238594
+ "gas-sensor",
238595
+ "leak-sensor",
238596
+ "vibration-sensor",
238597
+ "tamper-sensor",
238598
+ "sound-sensor"
238599
+ ];
238600
+ function roleRank(role) {
238601
+ if (role === void 0) return CONTAINER_CHILD_ROLE_PRIORITY.length;
238602
+ const i = CONTAINER_CHILD_ROLE_PRIORITY.indexOf(role);
238603
+ return i === -1 ? CONTAINER_CHILD_ROLE_PRIORITY.length : i;
238604
+ }
238558
238605
  function rank(type) {
238559
238606
  const i = CONTAINER_CHILD_PRIORITY.indexOf(type);
238560
238607
  return i === -1 ? CONTAINER_CHILD_PRIORITY.length : i;
238561
238608
  }
238562
- function resolveContainerPrimaryChild(children, overrideEntityId) {
238609
+ function resolveContainerPrimaryChild(children, overrideEntityId, containerName) {
238563
238610
  if (overrideEntityId !== void 0 && overrideEntityId !== null) {
238564
238611
  const picked = children.find((c) => c.stableId === overrideEntityId) ?? children.find((c) => c.entityId !== void 0 && c.entityId === overrideEntityId);
238565
238612
  if (picked !== void 0) return picked;
238566
238613
  }
238567
- return [...children].toSorted((a, b) => rank(a.type) - rank(b.type))[0] ?? null;
238614
+ const namesake = (c) => containerName !== void 0 && containerName.length > 0 && c.name !== void 0 && c.name.toLowerCase() === containerName.toLowerCase() ? 0 : 1;
238615
+ return [...children].toSorted((a, b) => roleRank(a.role) - roleRank(b.role) || namesake(a) - namesake(b) || rank(a.type) - rank(b.type))[0] ?? null;
238568
238616
  }
238569
238617
  var AccessoryKind = {
238570
238618
  Siren: require_sleep.DeviceRole.Siren,
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "camstack",
3
- "version": "1.2.87",
3
+ "version": "1.2.89",
4
4
  "description": "CLI tool for managing and running CamStack server",
5
5
  "keywords": [
6
6
  "camstack",
File without changes