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: "
|
|
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-
|
|
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-
|
|
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-
|
|
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-
|
|
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}")`);
|
|
@@ -23633,9 +23633,9 @@ var require_zod = __commonJS({
|
|
|
23633
23633
|
}
|
|
23634
23634
|
});
|
|
23635
23635
|
|
|
23636
|
-
// ../system/dist/dist-
|
|
23637
|
-
var
|
|
23638
|
-
"../system/dist/dist-
|
|
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: "
|
|
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 =
|
|
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 =
|
|
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 =
|
|
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-
|
|
61923
|
-
var
|
|
61924
|
-
"../system/dist/retired-settings-keys-
|
|
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 =
|
|
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 =
|
|
64141
|
-
var require_retired_settings_keys =
|
|
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 =
|
|
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 =
|
|
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 =
|
|
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 =
|
|
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 =
|
|
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 =
|
|
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 =
|
|
82062
|
-
var require_retired_settings_keys =
|
|
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 =
|
|
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 =
|
|
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 =
|
|
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-
|
|
118075
|
-
var
|
|
118076
|
-
"../system/dist/manifest-system-deps-
|
|
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?.
|
|
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 =
|
|
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 =
|
|
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: "
|
|
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
|
-
|
|
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
|
});
|