camstack 1.2.135 → 1.2.137

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.
@@ -24249,6 +24249,7 @@ var NcSystemEventKindSchema = external_exports.enum([
24249
24249
  "addon-crash-loop",
24250
24250
  "addon-update-available",
24251
24251
  "server-update-available",
24252
+ "wrapper-update-available",
24252
24253
  "alarm-triggered",
24253
24254
  "alarm-armed",
24254
24255
  "alarm-disarmed",
@@ -27110,7 +27111,17 @@ var EventDensityBucketSchema = external_exports.object({
27110
27111
  bucketStart: external_exports.number(),
27111
27112
  motion: external_exports.number().int(),
27112
27113
  object: external_exports.number().int(),
27113
- audio: external_exports.number().int()
27114
+ audio: external_exports.number().int(),
27115
+ /**
27116
+ * Energy-weighted mean dBFS of the audio events in this bucket — the LEVEL,
27117
+ * as opposed to `audio`, which is their COUNT (D431).
27118
+ *
27119
+ * ABSENT when the bucket holds no audio event. Absence means "nothing was
27120
+ * measured", which is not the same claim as silence, and a lane that cannot
27121
+ * tell them apart paints a quiet hour at full scale — which is exactly what
27122
+ * the count-on-a-level-meter did.
27123
+ */
27124
+ audioDbfs: external_exports.number().optional()
27114
27125
  });
27115
27126
  var EventDensityForDeviceSchema = external_exports.object({
27116
27127
  deviceId: external_exports.number(),
@@ -30089,6 +30100,45 @@ var ImageContractSchema = external_exports.object({
30089
30100
  /** One operator-grade sentence: this node runs image X; the contract says Y. */
30090
30101
  message: external_exports.string()
30091
30102
  });
30103
+ var WrapperKindSchema = external_exports.enum([
30104
+ "docker",
30105
+ "electron",
30106
+ "native",
30107
+ "contradictory",
30108
+ "unknown"
30109
+ ]);
30110
+ var WrapperEvidenceSchema = external_exports.object({
30111
+ /** Which probe this row reports. */
30112
+ fact: external_exports.enum([
30113
+ "dockerenv-file",
30114
+ "proc-1-cgroup",
30115
+ "platform",
30116
+ "electron-app-version-env"
30117
+ ]),
30118
+ /**
30119
+ * `observed` — this process read it itself. `declared` — the shell told the
30120
+ * process and nothing here can check it. Only the Electron app version is
30121
+ * ever `declared`, and only because a child cannot see its parent.
30122
+ */
30123
+ mode: external_exports.enum(["observed", "declared"]),
30124
+ /** Did the probe support the fact it names? A `false` row is still evidence. */
30125
+ holds: external_exports.boolean(),
30126
+ /** What was actually read, verbatim enough for an operator to argue with. */
30127
+ detail: external_exports.string()
30128
+ });
30129
+ var WrapperIdentitySchema = external_exports.object({
30130
+ kind: WrapperKindSchema,
30131
+ /** Every probe that ran, in a stable order. Never empty. */
30132
+ evidence: external_exports.array(WrapperEvidenceSchema),
30133
+ /**
30134
+ * The version of the SHELL, when the shell has one it can state: the
30135
+ * Electron app version it declared, or the baked seed closure that
30136
+ * fingerprints a container / app bundle. `null` for `contradictory` and
30137
+ * `unknown` — which version belongs to the shell is precisely what is not
30138
+ * known there.
30139
+ */
30140
+ currentVersion: external_exports.string().nullable()
30141
+ });
30092
30142
  var ServerRollbackInfoSchema = external_exports.object({
30093
30143
  /** The version that failed (or was manually rolled back). */
30094
30144
  fromVersion: external_exports.string(),
@@ -30130,7 +30180,13 @@ var ServerPackageStatusSchema = external_exports.object({
30130
30180
  * Seed-vs-contract verdict (see {@link ImageContractSchema}). Optional for
30131
30181
  * version skew: an older provider's payload simply omits it.
30132
30182
  */
30133
- imageContract: ImageContractSchema.optional()
30183
+ imageContract: ImageContractSchema.optional(),
30184
+ /**
30185
+ * What this node runs INSIDE (see {@link WrapperIdentitySchema}). Optional
30186
+ * for version skew: an older provider's payload simply omits it, and an
30187
+ * absent wrapper is unknown — never `native`.
30188
+ */
30189
+ wrapper: WrapperIdentitySchema.optional()
30134
30190
  });
30135
30191
  var ServerUpdateCheckResultSchema = external_exports.object({
30136
30192
  packageName: external_exports.string(),
@@ -37795,7 +37851,23 @@ var RecordingRangeSchema = external_exports.object({
37795
37851
  });
37796
37852
  var RecordingAvailabilitySchema = external_exports.object({
37797
37853
  deviceId: external_exports.number(),
37798
- ranges: external_exports.array(RecordingRangeSchema)
37854
+ ranges: external_exports.array(RecordingRangeSchema),
37855
+ /**
37856
+ * Every profile this camera has footage in — not only the one `ranges`
37857
+ * describes (D433).
37858
+ *
37859
+ * `ranges` answers for ONE profile by design: the timeline is a single bar,
37860
+ * and enumerating all of them triples the directory reads for a bar that
37861
+ * would look identical. But the answer used to say nothing about that, so a
37862
+ * caller asking "what can I export?" read the single preferred profile as
37863
+ * the only one that exists — on this deployment every camera records `high`
37864
+ * AND `low`, the low tree holding 14 GB for camera 615 alone, and the export
37865
+ * UI could not see it.
37866
+ *
37867
+ * Cheap: it is the same shallow directory read the profile CHOICE already
37868
+ * makes. Ask for a specific profile's ranges with the `profile` input.
37869
+ */
37870
+ profilesWithFootage: external_exports.array(external_exports.string())
37799
37871
  });
37800
37872
  var RecordingDaysSchema = external_exports.object({
37801
37873
  deviceId: external_exports.number(),
@@ -37805,7 +37877,11 @@ var RecordingDaysSchema = external_exports.object({
37805
37877
  var RecordingAvailabilityForDeviceSchema = external_exports.object({
37806
37878
  deviceId: external_exports.number(),
37807
37879
  read: external_exports.enum(["read", "unreadable"]),
37808
- ranges: external_exports.array(RecordingRangeSchema).readonly()
37880
+ ranges: external_exports.array(RecordingRangeSchema).readonly(),
37881
+ /** Same field, same meaning, as the singular answer (D433). A row that
37882
+ * dropped it would tell a grid caller the archive holds one profile.
37883
+ * Empty on an `'unreadable'` row: nobody looked. */
37884
+ profilesWithFootage: external_exports.array(external_exports.string()).readonly()
37809
37885
  });
37810
37886
  var RecordingDaysForDeviceSchema = external_exports.object({
37811
37887
  deviceId: external_exports.number(),
@@ -38020,7 +38096,14 @@ var recordingCapability = {
38020
38096
  getAvailability: method(external_exports.object({
38021
38097
  deviceId: external_exports.number(),
38022
38098
  fromMs: external_exports.number(),
38023
- toMs: external_exports.number()
38099
+ toMs: external_exports.number(),
38100
+ /**
38101
+ * Answer for THIS profile instead of the preferred one (D433). Absent
38102
+ * keeps the timeline's behaviour — one bar, one profile, one set of
38103
+ * reads. `profilesWithFootage` on the answer says what may be asked
38104
+ * for.
38105
+ */
38106
+ profile: external_exports.string().optional()
38024
38107
  }), RecordingAvailabilitySchema, {
38025
38108
  kind: "query",
38026
38109
  auth: "protected"
package/dist/cli.js CHANGED
@@ -1,7 +1,7 @@
1
1
  #!/usr/bin/env node
2
2
  import {
3
3
  runDiscover
4
- } from "./chunk-LMISNMUF.js";
4
+ } from "./chunk-EYL3W5FY.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-CGCHY5QF.js");
41
+ await import("./launcher-U2UTNMNT.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-CGCHY5QF.js");
86
+ await import("./launcher-U2UTNMNT.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-R4IJGYTA.js");
1133
+ const { discoverNodes, resolveHubFromDiscovered, filterHubNodes, DEFAULT_HUB_HTTPS_PORT } = await import("./discover-VOPNVH7F.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-LMISNMUF.js";
8
+ } from "./chunk-EYL3W5FY.js";
9
9
  import "./chunk-LMMQX4CK.js";
10
10
  export {
11
11
  DEFAULT_HUB_HTTPS_PORT,