@camstack/types 1.2.175 → 1.2.176

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.
@@ -1433,6 +1433,7 @@ export declare const EventDensityBucketSchema: z.ZodObject<{
1433
1433
  motion: z.ZodNumber;
1434
1434
  object: z.ZodNumber;
1435
1435
  audio: z.ZodNumber;
1436
+ audioDbfs: z.ZodOptional<z.ZodNumber>;
1436
1437
  }, z.core.$strip>;
1437
1438
  export type EventDensityBucket = z.infer<typeof EventDensityBucketSchema>;
1438
1439
  /**
@@ -1477,6 +1478,7 @@ export declare const EventDensityForDeviceSchema: z.ZodObject<{
1477
1478
  motion: z.ZodNumber;
1478
1479
  object: z.ZodNumber;
1479
1480
  audio: z.ZodNumber;
1481
+ audioDbfs: z.ZodOptional<z.ZodNumber>;
1480
1482
  }, z.core.$strip>>>;
1481
1483
  }, z.core.$strip>;
1482
1484
  export type EventDensityForDevice = z.infer<typeof EventDensityForDeviceSchema>;
@@ -2614,6 +2616,7 @@ export declare const pipelineAnalyticsCapability: {
2614
2616
  motion: z.ZodNumber;
2615
2617
  object: z.ZodNumber;
2616
2618
  audio: z.ZodNumber;
2619
+ audioDbfs: z.ZodOptional<z.ZodNumber>;
2617
2620
  }, z.core.$strip>>>, import("./capability-definition.js").CapabilityMethodKind>;
2618
2621
  /**
2619
2622
  * The same histogram, for a SET of cameras, in one round trip.
@@ -2649,6 +2652,7 @@ export declare const pipelineAnalyticsCapability: {
2649
2652
  motion: z.ZodNumber;
2650
2653
  object: z.ZodNumber;
2651
2654
  audio: z.ZodNumber;
2655
+ audioDbfs: z.ZodOptional<z.ZodNumber>;
2652
2656
  }, z.core.$strip>>>;
2653
2657
  }, z.core.$strip>>>, import("./capability-definition.js").CapabilityMethodKind>;
2654
2658
  /**
@@ -35,6 +35,7 @@ export declare const RecordingAvailabilitySchema: z.ZodObject<{
35
35
  startMs: z.ZodNumber;
36
36
  endMs: z.ZodNumber;
37
37
  }, z.core.$strip>>;
38
+ profilesWithFootage: z.ZodArray<z.ZodString>;
38
39
  }, z.core.$strip>;
39
40
  export type RecordingAvailability = z.infer<typeof RecordingAvailabilitySchema>;
40
41
  export declare const RecordingDaysSchema: z.ZodObject<{
@@ -84,6 +85,7 @@ export declare const RecordingAvailabilityForDeviceSchema: z.ZodObject<{
84
85
  startMs: z.ZodNumber;
85
86
  endMs: z.ZodNumber;
86
87
  }, z.core.$strip>>>;
88
+ profilesWithFootage: z.ZodReadonly<z.ZodArray<z.ZodString>>;
87
89
  }, z.core.$strip>;
88
90
  export type RecordingAvailabilityForDevice = z.infer<typeof RecordingAvailabilityForDeviceSchema>;
89
91
  /**
@@ -377,6 +379,7 @@ export declare const recordingCapability: {
377
379
  deviceId: z.ZodNumber;
378
380
  fromMs: z.ZodNumber;
379
381
  toMs: z.ZodNumber;
382
+ profile: z.ZodOptional<z.ZodString>;
380
383
  }, z.core.$strip>, z.ZodObject<{
381
384
  deviceId: z.ZodNumber;
382
385
  ranges: z.ZodArray<z.ZodObject<{
@@ -384,6 +387,7 @@ export declare const recordingCapability: {
384
387
  startMs: z.ZodNumber;
385
388
  endMs: z.ZodNumber;
386
389
  }, z.core.$strip>>;
390
+ profilesWithFootage: z.ZodArray<z.ZodString>;
387
391
  }, z.core.$strip>, "query">;
388
392
  /**
389
393
  * `getAvailability` for a SET of cameras, in one round trip.
@@ -418,6 +422,7 @@ export declare const recordingCapability: {
418
422
  startMs: z.ZodNumber;
419
423
  endMs: z.ZodNumber;
420
424
  }, z.core.$strip>>>;
425
+ profilesWithFootage: z.ZodReadonly<z.ZodArray<z.ZodString>>;
421
426
  }, z.core.$strip>>>, "query">;
422
427
  /** Which calendar days in [fromMs,toMs) have ≥1 recorded segment, bucketed by
423
428
  * the client's local day (`tzOffsetMinutes` = minutes to add to UTC). Drives
package/dist/index.js CHANGED
@@ -19912,7 +19912,17 @@ var EventDensityBucketSchema = zod.z.object({
19912
19912
  bucketStart: zod.z.number(),
19913
19913
  motion: zod.z.number().int(),
19914
19914
  object: zod.z.number().int(),
19915
- audio: zod.z.number().int()
19915
+ audio: zod.z.number().int(),
19916
+ /**
19917
+ * Energy-weighted mean dBFS of the audio events in this bucket — the LEVEL,
19918
+ * as opposed to `audio`, which is their COUNT (D431).
19919
+ *
19920
+ * ABSENT when the bucket holds no audio event. Absence means "nothing was
19921
+ * measured", which is not the same claim as silence, and a lane that cannot
19922
+ * tell them apart paints a quiet hour at full scale — which is exactly what
19923
+ * the count-on-a-level-meter did.
19924
+ */
19925
+ audioDbfs: zod.z.number().optional()
19916
19926
  });
19917
19927
  /**
19918
19928
  * Most cameras one `getEventDensityBatch` may name.
@@ -33309,7 +33319,23 @@ var RecordingRangeSchema = zod.z.object({
33309
33319
  });
33310
33320
  var RecordingAvailabilitySchema = zod.z.object({
33311
33321
  deviceId: zod.z.number(),
33312
- ranges: zod.z.array(RecordingRangeSchema)
33322
+ ranges: zod.z.array(RecordingRangeSchema),
33323
+ /**
33324
+ * Every profile this camera has footage in — not only the one `ranges`
33325
+ * describes (D433).
33326
+ *
33327
+ * `ranges` answers for ONE profile by design: the timeline is a single bar,
33328
+ * and enumerating all of them triples the directory reads for a bar that
33329
+ * would look identical. But the answer used to say nothing about that, so a
33330
+ * caller asking "what can I export?" read the single preferred profile as
33331
+ * the only one that exists — on this deployment every camera records `high`
33332
+ * AND `low`, the low tree holding 14 GB for camera 615 alone, and the export
33333
+ * UI could not see it.
33334
+ *
33335
+ * Cheap: it is the same shallow directory read the profile CHOICE already
33336
+ * makes. Ask for a specific profile's ranges with the `profile` input.
33337
+ */
33338
+ profilesWithFootage: zod.z.array(zod.z.string())
33313
33339
  });
33314
33340
  var RecordingDaysSchema = zod.z.object({
33315
33341
  deviceId: zod.z.number(),
@@ -33350,7 +33376,11 @@ var RECORDING_TIMELINE_BATCH_MAX = 200;
33350
33376
  var RecordingAvailabilityForDeviceSchema = zod.z.object({
33351
33377
  deviceId: zod.z.number(),
33352
33378
  read: zod.z.enum(["read", "unreadable"]),
33353
- ranges: zod.z.array(RecordingRangeSchema).readonly()
33379
+ ranges: zod.z.array(RecordingRangeSchema).readonly(),
33380
+ /** Same field, same meaning, as the singular answer (D433). A row that
33381
+ * dropped it would tell a grid caller the archive holds one profile.
33382
+ * Empty on an `'unreadable'` row: nobody looked. */
33383
+ profilesWithFootage: zod.z.array(zod.z.string()).readonly()
33354
33384
  });
33355
33385
  /**
33356
33386
  * One camera's row in a `getDaysWithRecordingsBatch` answer. Same rule as
@@ -33650,7 +33680,14 @@ var recordingCapability = {
33650
33680
  getAvailability: require_sleep.method(zod.z.object({
33651
33681
  deviceId: zod.z.number(),
33652
33682
  fromMs: zod.z.number(),
33653
- toMs: zod.z.number()
33683
+ toMs: zod.z.number(),
33684
+ /**
33685
+ * Answer for THIS profile instead of the preferred one (D433). Absent
33686
+ * keeps the timeline's behaviour — one bar, one profile, one set of
33687
+ * reads. `profilesWithFootage` on the answer says what may be asked
33688
+ * for.
33689
+ */
33690
+ profile: zod.z.string().optional()
33654
33691
  }), RecordingAvailabilitySchema, {
33655
33692
  kind: "query",
33656
33693
  auth: "protected"
package/dist/index.mjs CHANGED
@@ -19911,7 +19911,17 @@ var EventDensityBucketSchema = z.object({
19911
19911
  bucketStart: z.number(),
19912
19912
  motion: z.number().int(),
19913
19913
  object: z.number().int(),
19914
- audio: z.number().int()
19914
+ audio: z.number().int(),
19915
+ /**
19916
+ * Energy-weighted mean dBFS of the audio events in this bucket — the LEVEL,
19917
+ * as opposed to `audio`, which is their COUNT (D431).
19918
+ *
19919
+ * ABSENT when the bucket holds no audio event. Absence means "nothing was
19920
+ * measured", which is not the same claim as silence, and a lane that cannot
19921
+ * tell them apart paints a quiet hour at full scale — which is exactly what
19922
+ * the count-on-a-level-meter did.
19923
+ */
19924
+ audioDbfs: z.number().optional()
19915
19925
  });
19916
19926
  /**
19917
19927
  * Most cameras one `getEventDensityBatch` may name.
@@ -33308,7 +33318,23 @@ var RecordingRangeSchema = z.object({
33308
33318
  });
33309
33319
  var RecordingAvailabilitySchema = z.object({
33310
33320
  deviceId: z.number(),
33311
- ranges: z.array(RecordingRangeSchema)
33321
+ ranges: z.array(RecordingRangeSchema),
33322
+ /**
33323
+ * Every profile this camera has footage in — not only the one `ranges`
33324
+ * describes (D433).
33325
+ *
33326
+ * `ranges` answers for ONE profile by design: the timeline is a single bar,
33327
+ * and enumerating all of them triples the directory reads for a bar that
33328
+ * would look identical. But the answer used to say nothing about that, so a
33329
+ * caller asking "what can I export?" read the single preferred profile as
33330
+ * the only one that exists — on this deployment every camera records `high`
33331
+ * AND `low`, the low tree holding 14 GB for camera 615 alone, and the export
33332
+ * UI could not see it.
33333
+ *
33334
+ * Cheap: it is the same shallow directory read the profile CHOICE already
33335
+ * makes. Ask for a specific profile's ranges with the `profile` input.
33336
+ */
33337
+ profilesWithFootage: z.array(z.string())
33312
33338
  });
33313
33339
  var RecordingDaysSchema = z.object({
33314
33340
  deviceId: z.number(),
@@ -33349,7 +33375,11 @@ var RECORDING_TIMELINE_BATCH_MAX = 200;
33349
33375
  var RecordingAvailabilityForDeviceSchema = z.object({
33350
33376
  deviceId: z.number(),
33351
33377
  read: z.enum(["read", "unreadable"]),
33352
- ranges: z.array(RecordingRangeSchema).readonly()
33378
+ ranges: z.array(RecordingRangeSchema).readonly(),
33379
+ /** Same field, same meaning, as the singular answer (D433). A row that
33380
+ * dropped it would tell a grid caller the archive holds one profile.
33381
+ * Empty on an `'unreadable'` row: nobody looked. */
33382
+ profilesWithFootage: z.array(z.string()).readonly()
33353
33383
  });
33354
33384
  /**
33355
33385
  * One camera's row in a `getDaysWithRecordingsBatch` answer. Same rule as
@@ -33649,7 +33679,14 @@ var recordingCapability = {
33649
33679
  getAvailability: method(z.object({
33650
33680
  deviceId: z.number(),
33651
33681
  fromMs: z.number(),
33652
- toMs: z.number()
33682
+ toMs: z.number(),
33683
+ /**
33684
+ * Answer for THIS profile instead of the preferred one (D433). Absent
33685
+ * keeps the timeline's behaviour — one bar, one profile, one set of
33686
+ * reads. `profilesWithFootage` on the answer says what may be asked
33687
+ * for.
33688
+ */
33689
+ profile: z.string().optional()
33653
33690
  }), RecordingAvailabilitySchema, {
33654
33691
  kind: "query",
33655
33692
  auth: "protected"
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@camstack/types",
3
- "version": "1.2.175",
3
+ "version": "1.2.176",
4
4
  "description": "Shared types, interfaces, and model catalogs for the CamStack detection ecosystem",
5
5
  "keywords": [
6
6
  "camstack",