camstack 1.2.96 → 1.2.97

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.
@@ -15537,7 +15537,8 @@ var CameraSwitchAuthoritySchema = external_exports.discriminatedUnion("kind", [
15537
15537
  var CameraSwitchUnavailableReasonSchema = external_exports.enum([
15538
15538
  "no-provider",
15539
15539
  "source-unreachable",
15540
- "not-configured"
15540
+ "not-configured",
15541
+ "device-disabled"
15541
15542
  ]);
15542
15543
  var CameraSwitchSchema = external_exports.object({
15543
15544
  id: CameraSwitchIdSchema,
@@ -31971,12 +31972,20 @@ var BatteryStatusSchema = external_exports.object({
31971
31972
  * Charging source. `'dc'` covers wall/USB adapters; `'solar'` is
31972
31973
  * Reolink-specific for the Solar Panel 2 accessory (will become
31973
31974
  * common on other battery cams). `'none'` means running on battery
31974
- * alone.
31975
+ * alone — a NEGATIVE the firmware actually reported.
31976
+ *
31977
+ * `'unknown'` is the absence of an answer: the provider has not read the
31978
+ * power fields yet, or the firmware reported neither. Before it existed,
31979
+ * two unreadable fields produced `'none'`, and a camera nobody had reached
31980
+ * was drawn "on battery alone" — the same D315 defect `percentage` closed
31981
+ * by going nullable. Consumers SKIP it (no charger state published, no
31982
+ * glyph, no HomeKit ChargingState) rather than coerce it either way.
31975
31983
  */
31976
31984
  charging: external_exports.enum([
31977
31985
  "dc",
31978
31986
  "solar",
31979
- "none"
31987
+ "none",
31988
+ "unknown"
31980
31989
  ]),
31981
31990
  /**
31982
31991
  * True when the camera firmware has gone into low-power mode. Battery
@@ -32068,7 +32077,7 @@ var batteryCapability = {
32068
32077
  kind: "push",
32069
32078
  empty: {
32070
32079
  percentage: 0,
32071
- charging: "none",
32080
+ charging: "unknown",
32072
32081
  sleeping: false,
32073
32082
  lastUpdated: 0
32074
32083
  }
package/dist/cli.js CHANGED
@@ -1,7 +1,7 @@
1
1
  #!/usr/bin/env node
2
2
  import {
3
3
  runDiscover
4
- } from "./chunk-KFUPFPP3.js";
4
+ } from "./chunk-MKOPVONP.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-7Z35E2WM.js");
41
+ await import("./launcher-PPFRDC5W.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-7Z35E2WM.js");
86
+ await import("./launcher-PPFRDC5W.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-5KWSHFNI.js");
1133
+ const { discoverNodes, resolveHubFromDiscovered, filterHubNodes, DEFAULT_HUB_HTTPS_PORT } = await import("./discover-BRZ4GUUB.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-KFUPFPP3.js";
8
+ } from "./chunk-MKOPVONP.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-DNwhsXWi.js
23637
- var require_dist_DNwhsXWi = __commonJS({
23638
- "../system/dist/dist-DNwhsXWi.js"(exports) {
23636
+ // ../system/dist/dist-DlL8iWQo.js
23637
+ var require_dist_DlL8iWQo = __commonJS({
23638
+ "../system/dist/dist-DlL8iWQo.js"(exports) {
23639
23639
  "use strict";
23640
23640
  var zod = require_zod();
23641
23641
  var EventCategory = /* @__PURE__ */ (function(EventCategory2) {
@@ -25984,7 +25984,8 @@ var require_dist_DNwhsXWi = __commonJS({
25984
25984
  var CameraSwitchUnavailableReasonSchema = zod.z.enum([
25985
25985
  "no-provider",
25986
25986
  "source-unreachable",
25987
- "not-configured"
25987
+ "not-configured",
25988
+ "device-disabled"
25988
25989
  ]);
25989
25990
  var CameraSwitchSchema = zod.z.object({
25990
25991
  id: CameraSwitchIdSchema,
@@ -42531,12 +42532,20 @@ var require_dist_DNwhsXWi = __commonJS({
42531
42532
  * Charging source. `'dc'` covers wall/USB adapters; `'solar'` is
42532
42533
  * Reolink-specific for the Solar Panel 2 accessory (will become
42533
42534
  * common on other battery cams). `'none'` means running on battery
42534
- * alone.
42535
+ * alone — a NEGATIVE the firmware actually reported.
42536
+ *
42537
+ * `'unknown'` is the absence of an answer: the provider has not read the
42538
+ * power fields yet, or the firmware reported neither. Before it existed,
42539
+ * two unreadable fields produced `'none'`, and a camera nobody had reached
42540
+ * was drawn "on battery alone" — the same D315 defect `percentage` closed
42541
+ * by going nullable. Consumers SKIP it (no charger state published, no
42542
+ * glyph, no HomeKit ChargingState) rather than coerce it either way.
42535
42543
  */
42536
42544
  charging: zod.z.enum([
42537
42545
  "dc",
42538
42546
  "solar",
42539
- "none"
42547
+ "none",
42548
+ "unknown"
42540
42549
  ]),
42541
42550
  /**
42542
42551
  * True when the camera firmware has gone into low-power mode. Battery
@@ -42628,7 +42637,7 @@ var require_dist_DNwhsXWi = __commonJS({
42628
42637
  kind: "push",
42629
42638
  empty: {
42630
42639
  percentage: 0,
42631
- charging: "none",
42640
+ charging: "unknown",
42632
42641
  sleeping: false,
42633
42642
  lastUpdated: 0
42634
42643
  }
@@ -60109,7 +60118,7 @@ var require_alerts_addon = __commonJS({
60109
60118
  [Symbol.toStringTag]: { value: "Module" }
60110
60119
  });
60111
60120
  require_chunk_Cek0wNdY();
60112
- var require_dist10 = require_dist_DNwhsXWi();
60121
+ var require_dist10 = require_dist_DlL8iWQo();
60113
60122
  function selectExpired(alerts, cutoffMs) {
60114
60123
  return alerts.filter((a) => a.createdAt < cutoffMs).sort((a, b) => a.createdAt - b.createdAt).map((a) => a.id);
60115
60124
  }
@@ -60928,7 +60937,7 @@ var require_console_logging = __commonJS({
60928
60937
  [Symbol.toStringTag]: { value: "Module" }
60929
60938
  });
60930
60939
  require_chunk_Cek0wNdY();
60931
- var require_dist10 = require_dist_DNwhsXWi();
60940
+ var require_dist10 = require_dist_DlL8iWQo();
60932
60941
  var require_formatter = require_formatter_DqAKDlvN();
60933
60942
  var LEVEL_RANK = {
60934
60943
  debug: 0,
@@ -61022,7 +61031,7 @@ var require_core_blocks_addon = __commonJS({
61022
61031
  "use strict";
61023
61032
  Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
61024
61033
  var require_chunk = require_chunk_Cek0wNdY();
61025
- var require_dist10 = require_dist_DNwhsXWi();
61034
+ var require_dist10 = require_dist_DlL8iWQo();
61026
61035
  var node_crypto = __require("crypto");
61027
61036
  var node_fs_promises = __require("fs/promises");
61028
61037
  node_fs_promises = require_chunk.__toESM(node_fs_promises);
@@ -61919,11 +61928,11 @@ var require_core_blocks = __commonJS({
61919
61928
  }
61920
61929
  });
61921
61930
 
61922
- // ../system/dist/retired-settings-keys-CUXClAIQ.js
61923
- var require_retired_settings_keys_CUXClAIQ = __commonJS({
61924
- "../system/dist/retired-settings-keys-CUXClAIQ.js"(exports) {
61931
+ // ../system/dist/retired-settings-keys-B5wVSU65.js
61932
+ var require_retired_settings_keys_B5wVSU65 = __commonJS({
61933
+ "../system/dist/retired-settings-keys-B5wVSU65.js"(exports) {
61925
61934
  "use strict";
61926
- var require_dist10 = require_dist_DNwhsXWi();
61935
+ var require_dist10 = require_dist_DlL8iWQo();
61927
61936
  function settingsStoreIsAuthoritativeHere(env) {
61928
61937
  const raw = (env["CAMSTACK_ROLE"] ?? "").trim().toLowerCase();
61929
61938
  return raw === "" || raw === "hub";
@@ -64137,8 +64146,8 @@ var require_device_manager_addon = __commonJS({
64137
64146
  [Symbol.toStringTag]: { value: "Module" }
64138
64147
  });
64139
64148
  require_chunk_Cek0wNdY();
64140
- var require_dist10 = require_dist_DNwhsXWi();
64141
- var require_retired_settings_keys = require_retired_settings_keys_CUXClAIQ();
64149
+ var require_dist10 = require_dist_DlL8iWQo();
64150
+ var require_retired_settings_keys = require_retired_settings_keys_B5wVSU65();
64142
64151
  var node_crypto = __require("crypto");
64143
64152
  var _camstack_types_node = require_node();
64144
64153
  var JOB_HISTORY = 20;
@@ -69653,7 +69662,7 @@ var require_hub_forwarder = __commonJS({
69653
69662
  [Symbol.toStringTag]: { value: "Module" }
69654
69663
  });
69655
69664
  require_chunk_Cek0wNdY();
69656
- var require_dist10 = require_dist_DNwhsXWi();
69665
+ var require_dist10 = require_dist_DlL8iWQo();
69657
69666
  var require_formatter = require_formatter_DqAKDlvN();
69658
69667
  var DEFAULT_OUTBOUND_BUFFER_SIZE = 500;
69659
69668
  var HubForwarderDestination = class {
@@ -69790,7 +69799,7 @@ var require_liveness_monitor_addon = __commonJS({
69790
69799
  "use strict";
69791
69800
  Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
69792
69801
  require_chunk_Cek0wNdY();
69793
- var require_dist10 = require_dist_DNwhsXWi();
69802
+ var require_dist10 = require_dist_DlL8iWQo();
69794
69803
  var NO_DEVICES = "liveness:no-devices";
69795
69804
  var ALL_OFFLINE = "liveness:all-devices-offline";
69796
69805
  var NO_FOOTAGE_PREFIX = "liveness:no-footage:";
@@ -69980,7 +69989,7 @@ var require_local_auth_addon = __commonJS({
69980
69989
  [Symbol.toStringTag]: { value: "Module" }
69981
69990
  });
69982
69991
  var require_chunk = require_chunk_Cek0wNdY();
69983
- var require_dist10 = require_dist_DNwhsXWi();
69992
+ var require_dist10 = require_dist_DlL8iWQo();
69984
69993
  var node_crypto = __require("crypto");
69985
69994
  node_crypto = require_chunk.__toESM(node_crypto);
69986
69995
  var crypto$1 = __require("crypto");
@@ -77793,7 +77802,7 @@ var require_loki_logging = __commonJS({
77793
77802
  [Symbol.toStringTag]: { value: "Module" }
77794
77803
  });
77795
77804
  require_chunk_Cek0wNdY();
77796
- var require_dist10 = require_dist_DNwhsXWi();
77805
+ var require_dist10 = require_dist_DlL8iWQo();
77797
77806
  function sanitizeLabelName(raw) {
77798
77807
  const replaced = raw.replaceAll(/[^a-zA-Z0-9_]/g, "_");
77799
77808
  return /^[a-zA-Z_]/.test(replaced) ? replaced : `_${replaced}`;
@@ -78358,7 +78367,7 @@ var require_native_metrics_addon = __commonJS({
78358
78367
  [Symbol.toStringTag]: { value: "Module" }
78359
78368
  });
78360
78369
  var require_chunk = require_chunk_Cek0wNdY();
78361
- var require_dist10 = require_dist_DNwhsXWi();
78370
+ var require_dist10 = require_dist_DlL8iWQo();
78362
78371
  var node_fs_promises = __require("fs/promises");
78363
78372
  var node_child_process = __require("child_process");
78364
78373
  var node_util = __require("util");
@@ -80942,7 +80951,7 @@ var require_filesystem_storage_addon = __commonJS({
80942
80951
  [Symbol.toStringTag]: { value: "Module" }
80943
80952
  });
80944
80953
  var require_chunk = require_chunk_Cek0wNdY();
80945
- var require_dist10 = require_dist_DNwhsXWi();
80954
+ var require_dist10 = require_dist_DlL8iWQo();
80946
80955
  var node_crypto = __require("crypto");
80947
80956
  var node_fs_promises = __require("fs/promises");
80948
80957
  var node_path = __require("path");
@@ -82058,8 +82067,8 @@ var require_sqlite_settings_addon = __commonJS({
82058
82067
  [Symbol.toStringTag]: { value: "Module" }
82059
82068
  });
82060
82069
  var require_chunk = require_chunk_Cek0wNdY();
82061
- var require_dist10 = require_dist_DNwhsXWi();
82062
- var require_retired_settings_keys = require_retired_settings_keys_CUXClAIQ();
82070
+ var require_dist10 = require_dist_DlL8iWQo();
82071
+ var require_retired_settings_keys = require_retired_settings_keys_B5wVSU65();
82063
82072
  var node_crypto = __require("crypto");
82064
82073
  var node_fs = __require("fs");
82065
82074
  var node_module = __require("module");
@@ -84549,7 +84558,7 @@ var require_storage_orchestrator_addon = __commonJS({
84549
84558
  [Symbol.toStringTag]: { value: "Module" }
84550
84559
  });
84551
84560
  var require_chunk = require_chunk_Cek0wNdY();
84552
- var require_dist10 = require_dist_DNwhsXWi();
84561
+ var require_dist10 = require_dist_DlL8iWQo();
84553
84562
  var require_hub_cap_forward = require_hub_cap_forward_DmHNjbB0();
84554
84563
  var zod = require_zod();
84555
84564
  var node_crypto = __require("crypto");
@@ -87500,7 +87509,7 @@ var require_system_config_addon = __commonJS({
87500
87509
  [Symbol.toStringTag]: { value: "Module" }
87501
87510
  });
87502
87511
  require_chunk_Cek0wNdY();
87503
- var require_dist10 = require_dist_DNwhsXWi();
87512
+ var require_dist10 = require_dist_DlL8iWQo();
87504
87513
  var SECTION_TITLES = {
87505
87514
  server: "Server",
87506
87515
  auth: "Authentication"
@@ -105561,7 +105570,7 @@ var require_winston_logging = __commonJS({
105561
105570
  [Symbol.toStringTag]: { value: "Module" }
105562
105571
  });
105563
105572
  var require_chunk = require_chunk_Cek0wNdY();
105564
- var require_dist10 = require_dist_DNwhsXWi();
105573
+ var require_dist10 = require_dist_DlL8iWQo();
105565
105574
  var require_formatter = require_formatter_DqAKDlvN();
105566
105575
  var node_path = __require("path");
105567
105576
  node_path = require_chunk.__toESM(node_path);
@@ -118071,9 +118080,9 @@ var require_dist2 = __commonJS({
118071
118080
  }
118072
118081
  });
118073
118082
 
118074
- // ../system/dist/manifest-system-deps-KBuTXH-y.js
118075
- var require_manifest_system_deps_KBuTXH_y = __commonJS({
118076
- "../system/dist/manifest-system-deps-KBuTXH-y.js"(exports) {
118083
+ // ../system/dist/manifest-system-deps-CdIVy85V.js
118084
+ var require_manifest_system_deps_CdIVy85V = __commonJS({
118085
+ "../system/dist/manifest-system-deps-CdIVy85V.js"(exports) {
118077
118086
  "use strict";
118078
118087
  var require_chunk = require_chunk_Cek0wNdY();
118079
118088
  require_hub_cap_forward_DmHNjbB0();
@@ -123925,9 +123934,11 @@ var require_manifest_system_deps_KBuTXH_y = __commonJS({
123925
123934
  }
123926
123935
  throw new Error(`no provider registered for cap "${input.capName}" (resolver miss after boot-window retry; forked-addon provider not yet registered \u2014 ${input.method})`);
123927
123936
  }
123928
- deps.logger?.warn?.("routing child unowned cap call via broker fallback", {
123937
+ deps.logger?.debug?.("routing child unowned cap call via the hub-core `$core-caps` bridge", {
123929
123938
  capName: input.capName,
123930
- method: input.method
123939
+ method: input.method,
123940
+ callerAddonId: input.callerAddonId,
123941
+ route: "$core-caps"
123931
123942
  });
123932
123943
  return await brokerCallForCap(deps.broker, input.capName, input.method, input.args);
123933
123944
  } catch (cause) {
@@ -130142,7 +130153,7 @@ var require_dist3 = __commonJS({
130142
130153
  "use strict";
130143
130154
  Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
130144
130155
  var require_chunk = require_chunk_Cek0wNdY();
130145
- var require_dist10 = require_dist_DNwhsXWi();
130156
+ var require_dist10 = require_dist_DlL8iWQo();
130146
130157
  var require_builtins_alerts_alerts_addon = require_alerts_addon();
130147
130158
  require_alerts();
130148
130159
  var require_formatter = require_formatter_DqAKDlvN();
@@ -130169,7 +130180,7 @@ var require_dist3 = __commonJS({
130169
130180
  var require_builtins_winston_logging_index = require_winston_logging();
130170
130181
  var require_file_data_plane = require_file_data_plane_DO8KbxCe();
130171
130182
  var require_tls$1 = require_tls_BxQlomxd();
130172
- var require_manifest_system_deps = require_manifest_system_deps_KBuTXH_y();
130183
+ var require_manifest_system_deps = require_manifest_system_deps_CdIVy85V();
130173
130184
  var require_resource_monitor = require_resource_monitor_CdnzxBLP();
130174
130185
  var require_custom_action_registry = require_custom_action_registry_jY0NOZK8();
130175
130186
  var zod = require_zod();
@@ -211733,7 +211744,8 @@ var require_dist4 = __commonJS({
211733
211744
  var CameraSwitchUnavailableReasonSchema = zod.z.enum([
211734
211745
  "no-provider",
211735
211746
  "source-unreachable",
211736
- "not-configured"
211747
+ "not-configured",
211748
+ "device-disabled"
211737
211749
  ]);
211738
211750
  var CameraSwitchSchema = zod.z.object({
211739
211751
  id: CameraSwitchIdSchema,
@@ -211878,7 +211890,7 @@ var require_dist4 = __commonJS({
211878
211890
  if (audio === null) return {
211879
211891
  available: false,
211880
211892
  enabled: true,
211881
- unavailableReason: "source-unreachable"
211893
+ unavailableReason: input.deviceDisabled ? "device-disabled" : "source-unreachable"
211882
211894
  };
211883
211895
  if (!audio.supported) return {
211884
211896
  available: false,
@@ -211900,7 +211912,7 @@ var require_dist4 = __commonJS({
211900
211912
  if (mask === null) return {
211901
211913
  available: false,
211902
211914
  enabled: false,
211903
- unavailableReason: "source-unreachable"
211915
+ unavailableReason: input.deviceDisabled ? "device-disabled" : "source-unreachable"
211904
211916
  };
211905
211917
  if (!mask.supported) return {
211906
211918
  available: false,
@@ -231002,12 +231014,20 @@ ${recipe.triggers.map((t, i) => emitTrigger(t, i)).join("\n\n")}
231002
231014
  * Charging source. `'dc'` covers wall/USB adapters; `'solar'` is
231003
231015
  * Reolink-specific for the Solar Panel 2 accessory (will become
231004
231016
  * common on other battery cams). `'none'` means running on battery
231005
- * alone.
231017
+ * alone — a NEGATIVE the firmware actually reported.
231018
+ *
231019
+ * `'unknown'` is the absence of an answer: the provider has not read the
231020
+ * power fields yet, or the firmware reported neither. Before it existed,
231021
+ * two unreadable fields produced `'none'`, and a camera nobody had reached
231022
+ * was drawn "on battery alone" — the same D315 defect `percentage` closed
231023
+ * by going nullable. Consumers SKIP it (no charger state published, no
231024
+ * glyph, no HomeKit ChargingState) rather than coerce it either way.
231006
231025
  */
231007
231026
  charging: zod.z.enum([
231008
231027
  "dc",
231009
231028
  "solar",
231010
- "none"
231029
+ "none",
231030
+ "unknown"
231011
231031
  ]),
231012
231032
  /**
231013
231033
  * True when the camera firmware has gone into low-power mode. Battery
@@ -231099,7 +231119,7 @@ ${recipe.triggers.map((t, i) => emitTrigger(t, i)).join("\n\n")}
231099
231119
  kind: "push",
231100
231120
  empty: {
231101
231121
  percentage: 0,
231102
- charging: "none",
231122
+ charging: "unknown",
231103
231123
  sleeping: false,
231104
231124
  lastUpdated: 0
231105
231125
  }
@@ -240179,8 +240199,17 @@ ${recipe.triggers.map((t, i) => emitTrigger(t, i)).join("\n\n")}
240179
240199
  async onRestoreDevices(savedDevices) {
240180
240200
  const restored = /* @__PURE__ */ new Set();
240181
240201
  const failures = [];
240202
+ const liveStableIds = new Set((await this.ctx.kernel.devices.getAll()).map((device2) => device2.stableId));
240182
240203
  const attemptRestore = async (saved) => {
240183
240204
  if (restored.has(saved.id)) return;
240205
+ if (liveStableIds.has(saved.stableId)) {
240206
+ this.ctx.logger.debug("Restore row already live \u2014 not dialled again", { tags: {
240207
+ deviceId: saved.id,
240208
+ stableId: saved.stableId
240209
+ } });
240210
+ restored.add(saved.id);
240211
+ return;
240212
+ }
240184
240213
  const Class = this.deviceClasses[saved.type];
240185
240214
  if (!Class) throw new Error(`no device class registered for type "${saved.type}"`);
240186
240215
  if (saved.parentDeviceId !== null && !restored.has(saved.parentDeviceId)) throw new Error(`parent device ${saved.parentDeviceId} not restored`);
@@ -415398,6 +415427,29 @@ var require_cap_providers = __commonJS({
415398
415427
  }
415399
415428
  });
415400
415429
 
415430
+ // ../../server/backend/dist/api/trpc/server-provided-caps.js
415431
+ var require_server_provided_caps = __commonJS({
415432
+ "../../server/backend/dist/api/trpc/server-provided-caps.js"(exports) {
415433
+ "use strict";
415434
+ Object.defineProperty(exports, "__esModule", { value: true });
415435
+ exports.ADDON_BACKED_SERVER_CAP_NAMES = exports.HUB_SERVICE_CAP_NAMES = void 0;
415436
+ exports.capNameToNamespace = capNameToNamespace;
415437
+ exports.HUB_SERVICE_CAP_NAMES = [
415438
+ "network-quality",
415439
+ "system",
415440
+ "toast",
415441
+ "integrations",
415442
+ "nodes",
415443
+ "server-management",
415444
+ "addons"
415445
+ ];
415446
+ exports.ADDON_BACKED_SERVER_CAP_NAMES = ["webrtc-session"];
415447
+ function capNameToNamespace(capName) {
415448
+ return capName.replace(/-([a-z])/g, (_m, c) => c.toUpperCase());
415449
+ }
415450
+ }
415451
+ });
415452
+
415401
415453
  // ../../server/backend/dist/core/auth/share-token.service.js
415402
415454
  var require_share_token_service = __commonJS({
415403
415455
  "../../server/backend/dist/core/auth/share-token.service.js"(exports) {
@@ -417418,15 +417470,12 @@ var require_core_cap_bridge = __commonJS({
417418
417470
  exports.buildCoreCapService = buildCoreCapService;
417419
417471
  var system_1 = require_dist3();
417420
417472
  var http_request_census_singleton_js_1 = require_http_request_census_singleton();
417473
+ var server_provided_caps_js_1 = require_server_provided_caps();
417421
417474
  var trpc_context_js_1 = require_trpc_context();
417422
417475
  var trpc_middleware_js_1 = require_trpc_middleware();
417423
417476
  var CORE_NAMESPACES = /* @__PURE__ */ new Set([
417424
- // Service-backed cap routers (no addon provider).
417425
- "system",
417426
- "toast",
417427
- "integrations",
417428
- "nodes",
417429
- "addons",
417477
+ // Service-backed cap routers (no addon provider) — derived, never copied.
417478
+ ...server_provided_caps_js_1.HUB_SERVICE_CAP_NAMES.map(server_provided_caps_js_1.capNameToNamespace),
417430
417479
  // Hand-written single-impl core routers.
417431
417480
  "capabilities",
417432
417481
  "notifications",
@@ -425893,6 +425942,7 @@ var require_moleculer_service = __commonJS({
425893
425942
  // multi-node addon cap is covered with no change here.
425894
425943
  isCoreServiceCap: (capName) => (0, core_cap_bridge_js_1.isCoreServiceCapName)(capName),
425895
425944
  logger: {
425945
+ debug: (msg, meta) => logger.debug(msg, meta !== null && meta !== void 0 ? { meta } : void 0),
425896
425946
  warn: (msg, meta) => logger.warn(msg, meta !== null && meta !== void 0 ? { meta } : void 0)
425897
425947
  }
425898
425948
  });
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "camstack",
3
- "version": "1.2.96",
3
+ "version": "1.2.97",
4
4
  "description": "CLI tool for managing and running CamStack server",
5
5
  "keywords": [
6
6
  "camstack",