@camstack/addon-provider-rtsp 1.2.77 → 1.2.78

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.
package/dist/addon.js CHANGED
@@ -10605,12 +10605,30 @@ var BackupDestinationInfoSchema = object({
10605
10605
  lastSuccessAt: number().optional(),
10606
10606
  /** Newest-archive size from `manifests.json`, or undefined. */
10607
10607
  lastSuccessSizeBytes: number().optional(),
10608
- /** Per-destination cron expression. Empty = manual-only (no schedule). */
10608
+ /**
10609
+ * Cron cadence(s) of the ENABLED schedules that fan out to this
10610
+ * destination, comma-joined. Absent when no enabled schedule targets it
10611
+ * — a destination nothing is scheduled to write to must not advertise a
10612
+ * cadence (D384). This is never the `backup_destination_policies.cron`
10613
+ * column: that per-location cron has scheduled nothing since 2026-07-28
10614
+ * and reading it made a destination with a DISABLED schedule claim a
10615
+ * nightly run.
10616
+ */
10609
10617
  cron: string().optional(),
10610
- /** ms-epoch of next computed firing for this destination's cron, if any. */
10618
+ /** ms-epoch of the next firing across those schedules (earliest), if any. */
10611
10619
  nextRunAt: number().optional(),
10612
- /** ms-epoch of last successful scheduled run (mirrors policy.lastRunAt). */
10613
- lastRunAt: number().optional()
10620
+ /**
10621
+ * ms-epoch of the last time a run ATTEMPTED to write here — success or
10622
+ * failure. Never a success stamp: pair it with `lastSuccessAt` (the
10623
+ * newest archive that actually landed) and `lastError`.
10624
+ */
10625
+ lastAttemptAt: number().optional(),
10626
+ /**
10627
+ * Why the last attempt failed, verbatim. Absent when the last attempt
10628
+ * landed the archive. A destination that has never been written to has
10629
+ * neither this nor `lastAttemptAt`.
10630
+ */
10631
+ lastError: string().optional()
10614
10632
  });
10615
10633
  /**
10616
10634
  * Per-archive entry returned by `backup.listArchives({ destinationId })`.
@@ -10773,8 +10791,16 @@ var BackupScheduleSchema = object({
10773
10791
  retentionCount: number().int().min(1).max(1e3),
10774
10792
  /** Optional subset of source locations to include; omitted = all. */
10775
10793
  dataSources: array(string()).readonly().optional(),
10776
- /** ms-epoch of last successful run. */
10777
- lastRunAt: number().optional(),
10794
+ /**
10795
+ * ms-epoch of the last tick that FIRED this schedule. Stamped before the
10796
+ * archive runs (it is the dedupe anchor), so it says "attempted", never
10797
+ * "succeeded" — a run refused by every destination stamps it too.
10798
+ */
10799
+ lastAttemptAt: number().optional(),
10800
+ /** ms-epoch of the last run of this schedule that landed at ≥1 destination. */
10801
+ lastSuccessAt: number().optional(),
10802
+ /** Why the last fired run failed, verbatim. Absent when it succeeded. */
10803
+ lastError: string().optional(),
10778
10804
  /** ms-epoch of next computed firing (read-only, filled on list). */
10779
10805
  nextRunAt: number().optional()
10780
10806
  });
@@ -10823,14 +10849,7 @@ method(_void(), array(BackupDestinationInfoSchema).readonly(), { auth: "admin" }
10823
10849
  locationId: string(),
10824
10850
  enabled: boolean(),
10825
10851
  retentionCount: number().int().min(1).max(1e3),
10826
- label: string().optional(),
10827
- /**
10828
- * Per-destination cron expression. Empty string clears the
10829
- * schedule (manual-only). Validated server-side via croner;
10830
- * malformed expressions reject the upsert with an actionable
10831
- * message.
10832
- */
10833
- cron: string().optional()
10852
+ label: string().optional()
10834
10853
  }), _void(), {
10835
10854
  kind: "mutation",
10836
10855
  auth: "admin"
package/dist/addon.mjs CHANGED
@@ -10581,12 +10581,30 @@ var BackupDestinationInfoSchema = object({
10581
10581
  lastSuccessAt: number().optional(),
10582
10582
  /** Newest-archive size from `manifests.json`, or undefined. */
10583
10583
  lastSuccessSizeBytes: number().optional(),
10584
- /** Per-destination cron expression. Empty = manual-only (no schedule). */
10584
+ /**
10585
+ * Cron cadence(s) of the ENABLED schedules that fan out to this
10586
+ * destination, comma-joined. Absent when no enabled schedule targets it
10587
+ * — a destination nothing is scheduled to write to must not advertise a
10588
+ * cadence (D384). This is never the `backup_destination_policies.cron`
10589
+ * column: that per-location cron has scheduled nothing since 2026-07-28
10590
+ * and reading it made a destination with a DISABLED schedule claim a
10591
+ * nightly run.
10592
+ */
10585
10593
  cron: string().optional(),
10586
- /** ms-epoch of next computed firing for this destination's cron, if any. */
10594
+ /** ms-epoch of the next firing across those schedules (earliest), if any. */
10587
10595
  nextRunAt: number().optional(),
10588
- /** ms-epoch of last successful scheduled run (mirrors policy.lastRunAt). */
10589
- lastRunAt: number().optional()
10596
+ /**
10597
+ * ms-epoch of the last time a run ATTEMPTED to write here — success or
10598
+ * failure. Never a success stamp: pair it with `lastSuccessAt` (the
10599
+ * newest archive that actually landed) and `lastError`.
10600
+ */
10601
+ lastAttemptAt: number().optional(),
10602
+ /**
10603
+ * Why the last attempt failed, verbatim. Absent when the last attempt
10604
+ * landed the archive. A destination that has never been written to has
10605
+ * neither this nor `lastAttemptAt`.
10606
+ */
10607
+ lastError: string().optional()
10590
10608
  });
10591
10609
  /**
10592
10610
  * Per-archive entry returned by `backup.listArchives({ destinationId })`.
@@ -10749,8 +10767,16 @@ var BackupScheduleSchema = object({
10749
10767
  retentionCount: number().int().min(1).max(1e3),
10750
10768
  /** Optional subset of source locations to include; omitted = all. */
10751
10769
  dataSources: array(string()).readonly().optional(),
10752
- /** ms-epoch of last successful run. */
10753
- lastRunAt: number().optional(),
10770
+ /**
10771
+ * ms-epoch of the last tick that FIRED this schedule. Stamped before the
10772
+ * archive runs (it is the dedupe anchor), so it says "attempted", never
10773
+ * "succeeded" — a run refused by every destination stamps it too.
10774
+ */
10775
+ lastAttemptAt: number().optional(),
10776
+ /** ms-epoch of the last run of this schedule that landed at ≥1 destination. */
10777
+ lastSuccessAt: number().optional(),
10778
+ /** Why the last fired run failed, verbatim. Absent when it succeeded. */
10779
+ lastError: string().optional(),
10754
10780
  /** ms-epoch of next computed firing (read-only, filled on list). */
10755
10781
  nextRunAt: number().optional()
10756
10782
  });
@@ -10799,14 +10825,7 @@ method(_void(), array(BackupDestinationInfoSchema).readonly(), { auth: "admin" }
10799
10825
  locationId: string(),
10800
10826
  enabled: boolean(),
10801
10827
  retentionCount: number().int().min(1).max(1e3),
10802
- label: string().optional(),
10803
- /**
10804
- * Per-destination cron expression. Empty string clears the
10805
- * schedule (manual-only). Validated server-side via croner;
10806
- * malformed expressions reject the upsert with an actionable
10807
- * message.
10808
- */
10809
- cron: string().optional()
10828
+ label: string().optional()
10810
10829
  }), _void(), {
10811
10830
  kind: "mutation",
10812
10831
  auth: "admin"
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@camstack/addon-provider-rtsp",
3
- "version": "1.2.77",
3
+ "version": "1.2.78",
4
4
  "description": "Generic RTSP camera device provider addon for CamStack",
5
5
  "keywords": [
6
6
  "camstack",