@camstack/addon-provider-rademacher 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
@@ -11534,12 +11534,30 @@ var BackupDestinationInfoSchema = object({
11534
11534
  lastSuccessAt: number().optional(),
11535
11535
  /** Newest-archive size from `manifests.json`, or undefined. */
11536
11536
  lastSuccessSizeBytes: number().optional(),
11537
- /** Per-destination cron expression. Empty = manual-only (no schedule). */
11537
+ /**
11538
+ * Cron cadence(s) of the ENABLED schedules that fan out to this
11539
+ * destination, comma-joined. Absent when no enabled schedule targets it
11540
+ * — a destination nothing is scheduled to write to must not advertise a
11541
+ * cadence (D384). This is never the `backup_destination_policies.cron`
11542
+ * column: that per-location cron has scheduled nothing since 2026-07-28
11543
+ * and reading it made a destination with a DISABLED schedule claim a
11544
+ * nightly run.
11545
+ */
11538
11546
  cron: string().optional(),
11539
- /** ms-epoch of next computed firing for this destination's cron, if any. */
11547
+ /** ms-epoch of the next firing across those schedules (earliest), if any. */
11540
11548
  nextRunAt: number().optional(),
11541
- /** ms-epoch of last successful scheduled run (mirrors policy.lastRunAt). */
11542
- lastRunAt: number().optional()
11549
+ /**
11550
+ * ms-epoch of the last time a run ATTEMPTED to write here — success or
11551
+ * failure. Never a success stamp: pair it with `lastSuccessAt` (the
11552
+ * newest archive that actually landed) and `lastError`.
11553
+ */
11554
+ lastAttemptAt: number().optional(),
11555
+ /**
11556
+ * Why the last attempt failed, verbatim. Absent when the last attempt
11557
+ * landed the archive. A destination that has never been written to has
11558
+ * neither this nor `lastAttemptAt`.
11559
+ */
11560
+ lastError: string().optional()
11543
11561
  });
11544
11562
  /**
11545
11563
  * Per-archive entry returned by `backup.listArchives({ destinationId })`.
@@ -11702,8 +11720,16 @@ var BackupScheduleSchema = object({
11702
11720
  retentionCount: number().int().min(1).max(1e3),
11703
11721
  /** Optional subset of source locations to include; omitted = all. */
11704
11722
  dataSources: array(string()).readonly().optional(),
11705
- /** ms-epoch of last successful run. */
11706
- lastRunAt: number().optional(),
11723
+ /**
11724
+ * ms-epoch of the last tick that FIRED this schedule. Stamped before the
11725
+ * archive runs (it is the dedupe anchor), so it says "attempted", never
11726
+ * "succeeded" — a run refused by every destination stamps it too.
11727
+ */
11728
+ lastAttemptAt: number().optional(),
11729
+ /** ms-epoch of the last run of this schedule that landed at ≥1 destination. */
11730
+ lastSuccessAt: number().optional(),
11731
+ /** Why the last fired run failed, verbatim. Absent when it succeeded. */
11732
+ lastError: string().optional(),
11707
11733
  /** ms-epoch of next computed firing (read-only, filled on list). */
11708
11734
  nextRunAt: number().optional()
11709
11735
  });
@@ -11752,14 +11778,7 @@ method(_void(), array(BackupDestinationInfoSchema).readonly(), { auth: "admin" }
11752
11778
  locationId: string(),
11753
11779
  enabled: boolean(),
11754
11780
  retentionCount: number().int().min(1).max(1e3),
11755
- label: string().optional(),
11756
- /**
11757
- * Per-destination cron expression. Empty string clears the
11758
- * schedule (manual-only). Validated server-side via croner;
11759
- * malformed expressions reject the upsert with an actionable
11760
- * message.
11761
- */
11762
- cron: string().optional()
11781
+ label: string().optional()
11763
11782
  }), _void(), {
11764
11783
  kind: "mutation",
11765
11784
  auth: "admin"
package/dist/addon.mjs CHANGED
@@ -11533,12 +11533,30 @@ var BackupDestinationInfoSchema = object({
11533
11533
  lastSuccessAt: number().optional(),
11534
11534
  /** Newest-archive size from `manifests.json`, or undefined. */
11535
11535
  lastSuccessSizeBytes: number().optional(),
11536
- /** Per-destination cron expression. Empty = manual-only (no schedule). */
11536
+ /**
11537
+ * Cron cadence(s) of the ENABLED schedules that fan out to this
11538
+ * destination, comma-joined. Absent when no enabled schedule targets it
11539
+ * — a destination nothing is scheduled to write to must not advertise a
11540
+ * cadence (D384). This is never the `backup_destination_policies.cron`
11541
+ * column: that per-location cron has scheduled nothing since 2026-07-28
11542
+ * and reading it made a destination with a DISABLED schedule claim a
11543
+ * nightly run.
11544
+ */
11537
11545
  cron: string().optional(),
11538
- /** ms-epoch of next computed firing for this destination's cron, if any. */
11546
+ /** ms-epoch of the next firing across those schedules (earliest), if any. */
11539
11547
  nextRunAt: number().optional(),
11540
- /** ms-epoch of last successful scheduled run (mirrors policy.lastRunAt). */
11541
- lastRunAt: number().optional()
11548
+ /**
11549
+ * ms-epoch of the last time a run ATTEMPTED to write here — success or
11550
+ * failure. Never a success stamp: pair it with `lastSuccessAt` (the
11551
+ * newest archive that actually landed) and `lastError`.
11552
+ */
11553
+ lastAttemptAt: number().optional(),
11554
+ /**
11555
+ * Why the last attempt failed, verbatim. Absent when the last attempt
11556
+ * landed the archive. A destination that has never been written to has
11557
+ * neither this nor `lastAttemptAt`.
11558
+ */
11559
+ lastError: string().optional()
11542
11560
  });
11543
11561
  /**
11544
11562
  * Per-archive entry returned by `backup.listArchives({ destinationId })`.
@@ -11701,8 +11719,16 @@ var BackupScheduleSchema = object({
11701
11719
  retentionCount: number().int().min(1).max(1e3),
11702
11720
  /** Optional subset of source locations to include; omitted = all. */
11703
11721
  dataSources: array(string()).readonly().optional(),
11704
- /** ms-epoch of last successful run. */
11705
- lastRunAt: number().optional(),
11722
+ /**
11723
+ * ms-epoch of the last tick that FIRED this schedule. Stamped before the
11724
+ * archive runs (it is the dedupe anchor), so it says "attempted", never
11725
+ * "succeeded" — a run refused by every destination stamps it too.
11726
+ */
11727
+ lastAttemptAt: number().optional(),
11728
+ /** ms-epoch of the last run of this schedule that landed at ≥1 destination. */
11729
+ lastSuccessAt: number().optional(),
11730
+ /** Why the last fired run failed, verbatim. Absent when it succeeded. */
11731
+ lastError: string().optional(),
11706
11732
  /** ms-epoch of next computed firing (read-only, filled on list). */
11707
11733
  nextRunAt: number().optional()
11708
11734
  });
@@ -11751,14 +11777,7 @@ method(_void(), array(BackupDestinationInfoSchema).readonly(), { auth: "admin" }
11751
11777
  locationId: string(),
11752
11778
  enabled: boolean(),
11753
11779
  retentionCount: number().int().min(1).max(1e3),
11754
- label: string().optional(),
11755
- /**
11756
- * Per-destination cron expression. Empty string clears the
11757
- * schedule (manual-only). Validated server-side via croner;
11758
- * malformed expressions reject the upsert with an actionable
11759
- * message.
11760
- */
11761
- cron: string().optional()
11780
+ label: string().optional()
11762
11781
  }), _void(), {
11763
11782
  kind: "mutation",
11764
11783
  auth: "admin"
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@camstack/addon-provider-rademacher",
3
- "version": "0.2.76",
3
+ "version": "0.2.77",
4
4
  "description": "Rademacher HomePilot device-provider addon for CamStack — wraps the @apocaliss92/noderademacher local-hub client (roller shutters over the cover cap)",
5
5
  "keywords": [
6
6
  "camstack",