@camstack/addon-provider-wyze 0.2.81 → 0.2.82

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