@camstack/types 1.2.183 → 1.2.185

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.
@@ -1243,6 +1243,26 @@ declare const SummariesPageSchema: z.ZodObject<{
1243
1243
  }, z.core.$strip>>>;
1244
1244
  }, z.core.$strip>;
1245
1245
  export type SummariesPage = z.infer<typeof SummariesPageSchema>;
1246
+ /**
1247
+ * One member of a group, as a reader needs it.
1248
+ *
1249
+ * The class and the role travel WITH the id because every consumer that shows
1250
+ * a group has to say what it was made of — "two people and a dog" — and asking
1251
+ * `getTrack` per member to find that out turns one card into `memberCount`
1252
+ * round trips. The member row already holds both (they are written at the
1253
+ * join), so this costs the reader nothing.
1254
+ */
1255
+ declare const SummaryMemberSchema: z.ZodObject<{
1256
+ trackId: z.ZodString;
1257
+ className: z.ZodNullable<z.ZodString>;
1258
+ role: z.ZodNullable<z.ZodEnum<{
1259
+ primary: "primary";
1260
+ sibling: "sibling";
1261
+ child: "child";
1262
+ }>>;
1263
+ joinedAt: z.ZodNumber;
1264
+ }, z.core.$strip>;
1265
+ export type SummaryMemberOut = z.infer<typeof SummaryMemberSchema>;
1246
1266
  declare const SummaryDetailSchema: z.ZodObject<{
1247
1267
  summary: z.ZodObject<{
1248
1268
  id: z.ZodString;
@@ -1253,7 +1273,16 @@ declare const SummaryDetailSchema: z.ZodObject<{
1253
1273
  memberCount: z.ZodNumber;
1254
1274
  groupShotMediaId: z.ZodNullable<z.ZodNumber>;
1255
1275
  }, z.core.$strip>;
1256
- trackIds: z.ZodReadonly<z.ZodArray<z.ZodString>>;
1276
+ members: z.ZodReadonly<z.ZodArray<z.ZodObject<{
1277
+ trackId: z.ZodString;
1278
+ className: z.ZodNullable<z.ZodString>;
1279
+ role: z.ZodNullable<z.ZodEnum<{
1280
+ primary: "primary";
1281
+ sibling: "sibling";
1282
+ child: "child";
1283
+ }>>;
1284
+ joinedAt: z.ZodNumber;
1285
+ }, z.core.$strip>>>;
1257
1286
  }, z.core.$strip>;
1258
1287
  export type SummaryDetail = z.infer<typeof SummaryDetailSchema>;
1259
1288
  declare const RecentTracksPageSchema: z.ZodObject<{
@@ -2260,7 +2289,16 @@ export declare const pipelineAnalyticsCapability: {
2260
2289
  memberCount: z.ZodNumber;
2261
2290
  groupShotMediaId: z.ZodNullable<z.ZodNumber>;
2262
2291
  }, z.core.$strip>;
2263
- trackIds: z.ZodReadonly<z.ZodArray<z.ZodString>>;
2292
+ members: z.ZodReadonly<z.ZodArray<z.ZodObject<{
2293
+ trackId: z.ZodString;
2294
+ className: z.ZodNullable<z.ZodString>;
2295
+ role: z.ZodNullable<z.ZodEnum<{
2296
+ primary: "primary";
2297
+ sibling: "sibling";
2298
+ child: "child";
2299
+ }>>;
2300
+ joinedAt: z.ZodNumber;
2301
+ }, z.core.$strip>>>;
2264
2302
  }, z.core.$strip>>, import("./capability-definition.js").CapabilityMethodKind>;
2265
2303
  readonly clearTracks: import("./capability-definition.js").CapabilityMethodSchema<z.ZodObject<{
2266
2304
  deviceId: z.ZodNumber;
@@ -466,6 +466,7 @@ declare const LoggingSettingsPatchSchema: z.ZodObject<{
466
466
  armMs: z.ZodNumber;
467
467
  deviceIds: z.ZodOptional<z.ZodNullable<z.ZodReadonly<z.ZodArray<z.ZodNumber>>>>;
468
468
  }, z.core.$strip>>>>;
469
+ opsLogRetentionDays: z.ZodOptional<z.ZodNumber>;
469
470
  }, z.core.$strip>;
470
471
  /**
471
472
  * Which LAYER of the hierarchy is addressed. Absent = the cluster layer.
@@ -555,6 +556,7 @@ declare const SetLoggingSettingsInputSchema: z.ZodObject<{
555
556
  armMs: z.ZodNumber;
556
557
  deviceIds: z.ZodOptional<z.ZodNullable<z.ZodReadonly<z.ZodArray<z.ZodNumber>>>>;
557
558
  }, z.core.$strip>>>>;
559
+ opsLogRetentionDays: z.ZodOptional<z.ZodNumber>;
558
560
  }, z.core.$strip>;
559
561
  }, z.core.$strip>;
560
562
  /**
@@ -626,6 +628,7 @@ declare const LoggingSettingsStateSchema: z.ZodObject<{
626
628
  remainingMs: z.ZodNumber;
627
629
  deviceIds: z.ZodNullable<z.ZodReadonly<z.ZodArray<z.ZodNumber>>>;
628
630
  }, z.core.$strip>>>;
631
+ opsLogRetentionDays: z.ZodNumber;
629
632
  persisted: z.ZodBoolean;
630
633
  }, z.core.$strip>;
631
634
  export declare const systemCapability: {
@@ -931,6 +934,7 @@ export declare const systemCapability: {
931
934
  remainingMs: z.ZodNumber;
932
935
  deviceIds: z.ZodNullable<z.ZodReadonly<z.ZodArray<z.ZodNumber>>>;
933
936
  }, z.core.$strip>>>;
937
+ opsLogRetentionDays: z.ZodNumber;
934
938
  persisted: z.ZodBoolean;
935
939
  }, z.core.$strip>, import("./capability-definition.js").CapabilityMethodKind>;
936
940
  /**
@@ -964,6 +968,7 @@ export declare const systemCapability: {
964
968
  armMs: z.ZodNumber;
965
969
  deviceIds: z.ZodOptional<z.ZodNullable<z.ZodReadonly<z.ZodArray<z.ZodNumber>>>>;
966
970
  }, z.core.$strip>>>>;
971
+ opsLogRetentionDays: z.ZodOptional<z.ZodNumber>;
967
972
  }, z.core.$strip>;
968
973
  }, z.core.$strip>, z.ZodObject<{
969
974
  scopeNodeId: z.ZodNullable<z.ZodString>;
@@ -1025,6 +1030,7 @@ export declare const systemCapability: {
1025
1030
  remainingMs: z.ZodNumber;
1026
1031
  deviceIds: z.ZodNullable<z.ZodReadonly<z.ZodArray<z.ZodNumber>>>;
1027
1032
  }, z.core.$strip>>>;
1033
+ opsLogRetentionDays: z.ZodNumber;
1028
1034
  persisted: z.ZodBoolean;
1029
1035
  }, z.core.$strip>, "mutation">;
1030
1036
  };
package/dist/index.js CHANGED
@@ -20252,10 +20252,31 @@ var SummariesQueryInput = zod.z.object({
20252
20252
  limit: zod.z.number().int().min(1).max(200).default(50)
20253
20253
  });
20254
20254
  var SummariesPageSchema = zod.z.object({ summaries: zod.z.array(SummarySchema).readonly() });
20255
+ /**
20256
+ * One member of a group, as a reader needs it.
20257
+ *
20258
+ * The class and the role travel WITH the id because every consumer that shows
20259
+ * a group has to say what it was made of — "two people and a dog" — and asking
20260
+ * `getTrack` per member to find that out turns one card into `memberCount`
20261
+ * round trips. The member row already holds both (they are written at the
20262
+ * join), so this costs the reader nothing.
20263
+ */
20264
+ var SummaryMemberSchema = zod.z.object({
20265
+ trackId: zod.z.string(),
20266
+ /** The track's class at the time it joined, or `null` when unresolved. */
20267
+ className: zod.z.string().nullable(),
20268
+ /** `primary` is the one member that carries the group's identity. */
20269
+ role: zod.z.enum([
20270
+ "primary",
20271
+ "sibling",
20272
+ "child"
20273
+ ]).nullable(),
20274
+ joinedAt: zod.z.number()
20275
+ });
20255
20276
  var SummaryDetailSchema = zod.z.object({
20256
20277
  summary: SummarySchema,
20257
- /** Member track ids, in absorption order. */
20258
- trackIds: zod.z.array(zod.z.string()).readonly()
20278
+ /** Members in absorption order, oldest join first. */
20279
+ members: zod.z.array(SummaryMemberSchema).readonly()
20259
20280
  });
20260
20281
  var RecentTracksPageSchema = zod.z.object({
20261
20282
  /** Merged page, ordered by (`lastSeen` DESC, `trackId` DESC). */
@@ -36465,7 +36486,29 @@ var LoggingSettingsPatchSchema = zod.z.object({
36465
36486
  * disarmed the channels it did not mention would make the Levels page and
36466
36487
  * the Diagnostics page fight over the same value.
36467
36488
  */
36468
- channels: zod.z.array(LogChannelWindowPatchSchema).readonly().optional()
36489
+ channels: zod.z.array(LogChannelWindowPatchSchema).readonly().optional(),
36490
+ /**
36491
+ * How many days the analytics OPS LOG is kept — the audit trail of what
36492
+ * retention actually deleted.
36493
+ *
36494
+ * It lives HERE, on the logging document, and not on the analytics addon's
36495
+ * settings form, on the operator's instruction: every other log-ish window in
36496
+ * this system is configured through this one document, and a retention audit
36497
+ * configured somewhere else is a second place to look when the question is
36498
+ * "what happened to my data".
36499
+ *
36500
+ * That placement has a cost worth stating: this document ships in the
36501
+ * framework closure, so this knob needs a published `@camstack/server` while
36502
+ * the four windows beside it (D485) reach a node on `camstack deploy`.
36503
+ *
36504
+ * `retention-model.ts` argued this one must NOT follow a device window,
36505
+ * because the audit trail is the history of the SWEEP and not of the camera.
36506
+ * That argument stands and is untouched — what changes is that 30 days stops
36507
+ * being a constant nobody can reach. `0` keeps it forever. The floor is 1 day
36508
+ * rather than 0-as-delete: an audit log truncated to nothing is precisely the
36509
+ * state in which the next 9.5 GiB leak cannot be explained.
36510
+ */
36511
+ opsLogRetentionDays: zod.z.number().int().min(0).max(3650).optional()
36469
36512
  });
36470
36513
  /**
36471
36514
  * Which LAYER of the hierarchy is addressed. Absent = the cluster layer.
@@ -36538,6 +36581,14 @@ var LoggingSettingsStateSchema = zod.z.object({
36538
36581
  channels: zod.z.array(LogChannelDescriptorSchema).readonly(),
36539
36582
  /** The channels ARMED right now, each with its deadline. */
36540
36583
  activeChannels: zod.z.array(LogChannelWindowStateSchema).readonly(),
36584
+ /**
36585
+ * The ops-log window in days, as it is in force. `0` = kept forever.
36586
+ *
36587
+ * Reported rather than left to the caller's memory of what it wrote: this is
36588
+ * the value the analytics sweep will actually use, and an operator asking how
36589
+ * long their audit trail lives should not have to infer it from a default.
36590
+ */
36591
+ opsLogRetentionDays: zod.z.number().int().min(0),
36541
36592
  persisted: zod.z.boolean()
36542
36593
  });
36543
36594
  var systemCapability = {
package/dist/index.mjs CHANGED
@@ -20251,10 +20251,31 @@ var SummariesQueryInput = z.object({
20251
20251
  limit: z.number().int().min(1).max(200).default(50)
20252
20252
  });
20253
20253
  var SummariesPageSchema = z.object({ summaries: z.array(SummarySchema).readonly() });
20254
+ /**
20255
+ * One member of a group, as a reader needs it.
20256
+ *
20257
+ * The class and the role travel WITH the id because every consumer that shows
20258
+ * a group has to say what it was made of — "two people and a dog" — and asking
20259
+ * `getTrack` per member to find that out turns one card into `memberCount`
20260
+ * round trips. The member row already holds both (they are written at the
20261
+ * join), so this costs the reader nothing.
20262
+ */
20263
+ var SummaryMemberSchema = z.object({
20264
+ trackId: z.string(),
20265
+ /** The track's class at the time it joined, or `null` when unresolved. */
20266
+ className: z.string().nullable(),
20267
+ /** `primary` is the one member that carries the group's identity. */
20268
+ role: z.enum([
20269
+ "primary",
20270
+ "sibling",
20271
+ "child"
20272
+ ]).nullable(),
20273
+ joinedAt: z.number()
20274
+ });
20254
20275
  var SummaryDetailSchema = z.object({
20255
20276
  summary: SummarySchema,
20256
- /** Member track ids, in absorption order. */
20257
- trackIds: z.array(z.string()).readonly()
20277
+ /** Members in absorption order, oldest join first. */
20278
+ members: z.array(SummaryMemberSchema).readonly()
20258
20279
  });
20259
20280
  var RecentTracksPageSchema = z.object({
20260
20281
  /** Merged page, ordered by (`lastSeen` DESC, `trackId` DESC). */
@@ -36457,7 +36478,29 @@ var LoggingSettingsPatchSchema = z.object({
36457
36478
  * disarmed the channels it did not mention would make the Levels page and
36458
36479
  * the Diagnostics page fight over the same value.
36459
36480
  */
36460
- channels: z.array(LogChannelWindowPatchSchema).readonly().optional()
36481
+ channels: z.array(LogChannelWindowPatchSchema).readonly().optional(),
36482
+ /**
36483
+ * How many days the analytics OPS LOG is kept — the audit trail of what
36484
+ * retention actually deleted.
36485
+ *
36486
+ * It lives HERE, on the logging document, and not on the analytics addon's
36487
+ * settings form, on the operator's instruction: every other log-ish window in
36488
+ * this system is configured through this one document, and a retention audit
36489
+ * configured somewhere else is a second place to look when the question is
36490
+ * "what happened to my data".
36491
+ *
36492
+ * That placement has a cost worth stating: this document ships in the
36493
+ * framework closure, so this knob needs a published `@camstack/server` while
36494
+ * the four windows beside it (D485) reach a node on `camstack deploy`.
36495
+ *
36496
+ * `retention-model.ts` argued this one must NOT follow a device window,
36497
+ * because the audit trail is the history of the SWEEP and not of the camera.
36498
+ * That argument stands and is untouched — what changes is that 30 days stops
36499
+ * being a constant nobody can reach. `0` keeps it forever. The floor is 1 day
36500
+ * rather than 0-as-delete: an audit log truncated to nothing is precisely the
36501
+ * state in which the next 9.5 GiB leak cannot be explained.
36502
+ */
36503
+ opsLogRetentionDays: z.number().int().min(0).max(3650).optional()
36461
36504
  });
36462
36505
  /**
36463
36506
  * Which LAYER of the hierarchy is addressed. Absent = the cluster layer.
@@ -36530,6 +36573,14 @@ var LoggingSettingsStateSchema = z.object({
36530
36573
  channels: z.array(LogChannelDescriptorSchema).readonly(),
36531
36574
  /** The channels ARMED right now, each with its deadline. */
36532
36575
  activeChannels: z.array(LogChannelWindowStateSchema).readonly(),
36576
+ /**
36577
+ * The ops-log window in days, as it is in force. `0` = kept forever.
36578
+ *
36579
+ * Reported rather than left to the caller's memory of what it wrote: this is
36580
+ * the value the analytics sweep will actually use, and an operator asking how
36581
+ * long their audit trail lives should not have to infer it from a default.
36582
+ */
36583
+ opsLogRetentionDays: z.number().int().min(0),
36533
36584
  persisted: z.boolean()
36534
36585
  });
36535
36586
  var systemCapability = {
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@camstack/types",
3
- "version": "1.2.183",
3
+ "version": "1.2.185",
4
4
  "description": "Shared types, interfaces, and model catalogs for the CamStack detection ecosystem",
5
5
  "keywords": [
6
6
  "camstack",