@camstack/addon-matter-broker 0.2.76 → 0.2.77

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
@@ -10563,12 +10563,30 @@ var BackupDestinationInfoSchema = object({
10563
10563
  lastSuccessAt: number().optional(),
10564
10564
  /** Newest-archive size from `manifests.json`, or undefined. */
10565
10565
  lastSuccessSizeBytes: number().optional(),
10566
- /** Per-destination cron expression. Empty = manual-only (no schedule). */
10566
+ /**
10567
+ * Cron cadence(s) of the ENABLED schedules that fan out to this
10568
+ * destination, comma-joined. Absent when no enabled schedule targets it
10569
+ * — a destination nothing is scheduled to write to must not advertise a
10570
+ * cadence (D384). This is never the `backup_destination_policies.cron`
10571
+ * column: that per-location cron has scheduled nothing since 2026-07-28
10572
+ * and reading it made a destination with a DISABLED schedule claim a
10573
+ * nightly run.
10574
+ */
10567
10575
  cron: string$2().optional(),
10568
- /** ms-epoch of next computed firing for this destination's cron, if any. */
10576
+ /** ms-epoch of the next firing across those schedules (earliest), if any. */
10569
10577
  nextRunAt: number().optional(),
10570
- /** ms-epoch of last successful scheduled run (mirrors policy.lastRunAt). */
10571
- lastRunAt: number().optional()
10578
+ /**
10579
+ * ms-epoch of the last time a run ATTEMPTED to write here — success or
10580
+ * failure. Never a success stamp: pair it with `lastSuccessAt` (the
10581
+ * newest archive that actually landed) and `lastError`.
10582
+ */
10583
+ lastAttemptAt: number().optional(),
10584
+ /**
10585
+ * Why the last attempt failed, verbatim. Absent when the last attempt
10586
+ * landed the archive. A destination that has never been written to has
10587
+ * neither this nor `lastAttemptAt`.
10588
+ */
10589
+ lastError: string$2().optional()
10572
10590
  });
10573
10591
  /**
10574
10592
  * Per-archive entry returned by `backup.listArchives({ destinationId })`.
@@ -10731,8 +10749,16 @@ var BackupScheduleSchema = object({
10731
10749
  retentionCount: number().int().min(1).max(1e3),
10732
10750
  /** Optional subset of source locations to include; omitted = all. */
10733
10751
  dataSources: array(string$2()).readonly().optional(),
10734
- /** ms-epoch of last successful run. */
10735
- lastRunAt: number().optional(),
10752
+ /**
10753
+ * ms-epoch of the last tick that FIRED this schedule. Stamped before the
10754
+ * archive runs (it is the dedupe anchor), so it says "attempted", never
10755
+ * "succeeded" — a run refused by every destination stamps it too.
10756
+ */
10757
+ lastAttemptAt: number().optional(),
10758
+ /** ms-epoch of the last run of this schedule that landed at ≥1 destination. */
10759
+ lastSuccessAt: number().optional(),
10760
+ /** Why the last fired run failed, verbatim. Absent when it succeeded. */
10761
+ lastError: string$2().optional(),
10736
10762
  /** ms-epoch of next computed firing (read-only, filled on list). */
10737
10763
  nextRunAt: number().optional()
10738
10764
  });
@@ -10781,14 +10807,7 @@ method(_void(), array(BackupDestinationInfoSchema).readonly(), { auth: "admin" }
10781
10807
  locationId: string$2(),
10782
10808
  enabled: boolean(),
10783
10809
  retentionCount: number().int().min(1).max(1e3),
10784
- label: string$2().optional(),
10785
- /**
10786
- * Per-destination cron expression. Empty string clears the
10787
- * schedule (manual-only). Validated server-side via croner;
10788
- * malformed expressions reject the upsert with an actionable
10789
- * message.
10790
- */
10791
- cron: string$2().optional()
10810
+ label: string$2().optional()
10792
10811
  }), _void(), {
10793
10812
  kind: "mutation",
10794
10813
  auth: "admin"
package/dist/addon.mjs CHANGED
@@ -10561,12 +10561,30 @@ var BackupDestinationInfoSchema = object({
10561
10561
  lastSuccessAt: number().optional(),
10562
10562
  /** Newest-archive size from `manifests.json`, or undefined. */
10563
10563
  lastSuccessSizeBytes: number().optional(),
10564
- /** Per-destination cron expression. Empty = manual-only (no schedule). */
10564
+ /**
10565
+ * Cron cadence(s) of the ENABLED schedules that fan out to this
10566
+ * destination, comma-joined. Absent when no enabled schedule targets it
10567
+ * — a destination nothing is scheduled to write to must not advertise a
10568
+ * cadence (D384). This is never the `backup_destination_policies.cron`
10569
+ * column: that per-location cron has scheduled nothing since 2026-07-28
10570
+ * and reading it made a destination with a DISABLED schedule claim a
10571
+ * nightly run.
10572
+ */
10565
10573
  cron: string$2().optional(),
10566
- /** ms-epoch of next computed firing for this destination's cron, if any. */
10574
+ /** ms-epoch of the next firing across those schedules (earliest), if any. */
10567
10575
  nextRunAt: number().optional(),
10568
- /** ms-epoch of last successful scheduled run (mirrors policy.lastRunAt). */
10569
- lastRunAt: number().optional()
10576
+ /**
10577
+ * ms-epoch of the last time a run ATTEMPTED to write here — success or
10578
+ * failure. Never a success stamp: pair it with `lastSuccessAt` (the
10579
+ * newest archive that actually landed) and `lastError`.
10580
+ */
10581
+ lastAttemptAt: number().optional(),
10582
+ /**
10583
+ * Why the last attempt failed, verbatim. Absent when the last attempt
10584
+ * landed the archive. A destination that has never been written to has
10585
+ * neither this nor `lastAttemptAt`.
10586
+ */
10587
+ lastError: string$2().optional()
10570
10588
  });
10571
10589
  /**
10572
10590
  * Per-archive entry returned by `backup.listArchives({ destinationId })`.
@@ -10729,8 +10747,16 @@ var BackupScheduleSchema = object({
10729
10747
  retentionCount: number().int().min(1).max(1e3),
10730
10748
  /** Optional subset of source locations to include; omitted = all. */
10731
10749
  dataSources: array(string$2()).readonly().optional(),
10732
- /** ms-epoch of last successful run. */
10733
- lastRunAt: number().optional(),
10750
+ /**
10751
+ * ms-epoch of the last tick that FIRED this schedule. Stamped before the
10752
+ * archive runs (it is the dedupe anchor), so it says "attempted", never
10753
+ * "succeeded" — a run refused by every destination stamps it too.
10754
+ */
10755
+ lastAttemptAt: number().optional(),
10756
+ /** ms-epoch of the last run of this schedule that landed at ≥1 destination. */
10757
+ lastSuccessAt: number().optional(),
10758
+ /** Why the last fired run failed, verbatim. Absent when it succeeded. */
10759
+ lastError: string$2().optional(),
10734
10760
  /** ms-epoch of next computed firing (read-only, filled on list). */
10735
10761
  nextRunAt: number().optional()
10736
10762
  });
@@ -10779,14 +10805,7 @@ method(_void(), array(BackupDestinationInfoSchema).readonly(), { auth: "admin" }
10779
10805
  locationId: string$2(),
10780
10806
  enabled: boolean(),
10781
10807
  retentionCount: number().int().min(1).max(1e3),
10782
- label: string$2().optional(),
10783
- /**
10784
- * Per-destination cron expression. Empty string clears the
10785
- * schedule (manual-only). Validated server-side via croner;
10786
- * malformed expressions reject the upsert with an actionable
10787
- * message.
10788
- */
10789
- cron: string$2().optional()
10808
+ label: string$2().optional()
10790
10809
  }), _void(), {
10791
10810
  kind: "mutation",
10792
10811
  auth: "admin"
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@camstack/addon-matter-broker",
3
- "version": "0.2.76",
3
+ "version": "0.2.77",
4
4
  "description": "Matter broker addon for CamStack — owns a Matter fabric (commissioning + the long-lived controller) via the matter.js controller and brokers commissioned Matter nodes into CamStack",
5
5
  "keywords": [
6
6
  "camstack",