@camstack/addon-provider-petkit 0.2.76 → 0.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 +52 -18
- package/dist/addon.mjs +52 -18
- package/package.json +1 -1
package/dist/addon.js
CHANGED
|
@@ -9053,13 +9053,28 @@ var RecordingBandSchema = object({
|
|
|
9053
9053
|
end: string().regex(HHMM),
|
|
9054
9054
|
mode: RecordingBandModeSchema,
|
|
9055
9055
|
triggers: RecordingBandTriggersSchema.optional(),
|
|
9056
|
+
/**
|
|
9057
|
+
* RETIRED (D381). A band no longer carries a pre-buffer of its own.
|
|
9058
|
+
*
|
|
9059
|
+
* It was the retroactive KEEP bound — which already-written segments survive
|
|
9060
|
+
* a trigger — and it had to be at least as wide as the widest pre-roll the
|
|
9061
|
+
* broker could serve, or the gate would delete the seconds the ring had just
|
|
9062
|
+
* handed the writer. That "at least as wide as" is the tell: it was a second
|
|
9063
|
+
* expression of the broker's retention, in different units, in a different
|
|
9064
|
+
* addon, with an invariant the operator had to maintain by hand. The keep
|
|
9065
|
+
* bound is now derived from the one prebuffer ceiling and there is nothing
|
|
9066
|
+
* left to configure here.
|
|
9067
|
+
*
|
|
9068
|
+
* The key survives in the SHAPE so a config written before that record still
|
|
9069
|
+
* parses and can be migrated deliberately — `RecordingBandSchema` is not
|
|
9070
|
+
* strict, so simply deleting it would strip an operator's value in silence on
|
|
9071
|
+
* the next save (the failure D380 came one commit from shipping). Nothing
|
|
9072
|
+
* reads it: {@link stripRetiredBandPreBufferSec} removes it on load.
|
|
9073
|
+
*/
|
|
9056
9074
|
preBufferSec: number().min(0).optional(),
|
|
9057
9075
|
postBufferSec: number().min(0).optional()
|
|
9058
9076
|
});
|
|
9059
|
-
({
|
|
9060
|
-
preBufferSec: 15,
|
|
9061
|
-
postBufferSec: 30
|
|
9062
|
-
}).postBufferSec * 1e3;
|
|
9077
|
+
({ postBufferSec: 30 }).postBufferSec * 1e3;
|
|
9063
9078
|
/**
|
|
9064
9079
|
* Per-device retention overrides. Every field is optional; an unset or `0`
|
|
9065
9080
|
* value inherits the node-wide recorder default. Only footage-lifetime limits
|
|
@@ -11636,12 +11651,30 @@ var BackupDestinationInfoSchema = object({
|
|
|
11636
11651
|
lastSuccessAt: number().optional(),
|
|
11637
11652
|
/** Newest-archive size from `manifests.json`, or undefined. */
|
|
11638
11653
|
lastSuccessSizeBytes: number().optional(),
|
|
11639
|
-
/**
|
|
11654
|
+
/**
|
|
11655
|
+
* Cron cadence(s) of the ENABLED schedules that fan out to this
|
|
11656
|
+
* destination, comma-joined. Absent when no enabled schedule targets it
|
|
11657
|
+
* — a destination nothing is scheduled to write to must not advertise a
|
|
11658
|
+
* cadence (D384). This is never the `backup_destination_policies.cron`
|
|
11659
|
+
* column: that per-location cron has scheduled nothing since 2026-07-28
|
|
11660
|
+
* and reading it made a destination with a DISABLED schedule claim a
|
|
11661
|
+
* nightly run.
|
|
11662
|
+
*/
|
|
11640
11663
|
cron: string().optional(),
|
|
11641
|
-
/** ms-epoch of next
|
|
11664
|
+
/** ms-epoch of the next firing across those schedules (earliest), if any. */
|
|
11642
11665
|
nextRunAt: number().optional(),
|
|
11643
|
-
/**
|
|
11644
|
-
|
|
11666
|
+
/**
|
|
11667
|
+
* ms-epoch of the last time a run ATTEMPTED to write here — success or
|
|
11668
|
+
* failure. Never a success stamp: pair it with `lastSuccessAt` (the
|
|
11669
|
+
* newest archive that actually landed) and `lastError`.
|
|
11670
|
+
*/
|
|
11671
|
+
lastAttemptAt: number().optional(),
|
|
11672
|
+
/**
|
|
11673
|
+
* Why the last attempt failed, verbatim. Absent when the last attempt
|
|
11674
|
+
* landed the archive. A destination that has never been written to has
|
|
11675
|
+
* neither this nor `lastAttemptAt`.
|
|
11676
|
+
*/
|
|
11677
|
+
lastError: string().optional()
|
|
11645
11678
|
});
|
|
11646
11679
|
/**
|
|
11647
11680
|
* Per-archive entry returned by `backup.listArchives({ destinationId })`.
|
|
@@ -11804,8 +11837,16 @@ var BackupScheduleSchema = object({
|
|
|
11804
11837
|
retentionCount: number().int().min(1).max(1e3),
|
|
11805
11838
|
/** Optional subset of source locations to include; omitted = all. */
|
|
11806
11839
|
dataSources: array(string()).readonly().optional(),
|
|
11807
|
-
/**
|
|
11808
|
-
|
|
11840
|
+
/**
|
|
11841
|
+
* ms-epoch of the last tick that FIRED this schedule. Stamped before the
|
|
11842
|
+
* archive runs (it is the dedupe anchor), so it says "attempted", never
|
|
11843
|
+
* "succeeded" — a run refused by every destination stamps it too.
|
|
11844
|
+
*/
|
|
11845
|
+
lastAttemptAt: number().optional(),
|
|
11846
|
+
/** ms-epoch of the last run of this schedule that landed at ≥1 destination. */
|
|
11847
|
+
lastSuccessAt: number().optional(),
|
|
11848
|
+
/** Why the last fired run failed, verbatim. Absent when it succeeded. */
|
|
11849
|
+
lastError: string().optional(),
|
|
11809
11850
|
/** ms-epoch of next computed firing (read-only, filled on list). */
|
|
11810
11851
|
nextRunAt: number().optional()
|
|
11811
11852
|
});
|
|
@@ -11854,14 +11895,7 @@ method(_void(), array(BackupDestinationInfoSchema).readonly(), { auth: "admin" }
|
|
|
11854
11895
|
locationId: string(),
|
|
11855
11896
|
enabled: boolean(),
|
|
11856
11897
|
retentionCount: number().int().min(1).max(1e3),
|
|
11857
|
-
label: string().optional()
|
|
11858
|
-
/**
|
|
11859
|
-
* Per-destination cron expression. Empty string clears the
|
|
11860
|
-
* schedule (manual-only). Validated server-side via croner;
|
|
11861
|
-
* malformed expressions reject the upsert with an actionable
|
|
11862
|
-
* message.
|
|
11863
|
-
*/
|
|
11864
|
-
cron: string().optional()
|
|
11898
|
+
label: string().optional()
|
|
11865
11899
|
}), _void(), {
|
|
11866
11900
|
kind: "mutation",
|
|
11867
11901
|
auth: "admin"
|
package/dist/addon.mjs
CHANGED
|
@@ -9052,13 +9052,28 @@ var RecordingBandSchema = object({
|
|
|
9052
9052
|
end: string().regex(HHMM),
|
|
9053
9053
|
mode: RecordingBandModeSchema,
|
|
9054
9054
|
triggers: RecordingBandTriggersSchema.optional(),
|
|
9055
|
+
/**
|
|
9056
|
+
* RETIRED (D381). A band no longer carries a pre-buffer of its own.
|
|
9057
|
+
*
|
|
9058
|
+
* It was the retroactive KEEP bound — which already-written segments survive
|
|
9059
|
+
* a trigger — and it had to be at least as wide as the widest pre-roll the
|
|
9060
|
+
* broker could serve, or the gate would delete the seconds the ring had just
|
|
9061
|
+
* handed the writer. That "at least as wide as" is the tell: it was a second
|
|
9062
|
+
* expression of the broker's retention, in different units, in a different
|
|
9063
|
+
* addon, with an invariant the operator had to maintain by hand. The keep
|
|
9064
|
+
* bound is now derived from the one prebuffer ceiling and there is nothing
|
|
9065
|
+
* left to configure here.
|
|
9066
|
+
*
|
|
9067
|
+
* The key survives in the SHAPE so a config written before that record still
|
|
9068
|
+
* parses and can be migrated deliberately — `RecordingBandSchema` is not
|
|
9069
|
+
* strict, so simply deleting it would strip an operator's value in silence on
|
|
9070
|
+
* the next save (the failure D380 came one commit from shipping). Nothing
|
|
9071
|
+
* reads it: {@link stripRetiredBandPreBufferSec} removes it on load.
|
|
9072
|
+
*/
|
|
9055
9073
|
preBufferSec: number().min(0).optional(),
|
|
9056
9074
|
postBufferSec: number().min(0).optional()
|
|
9057
9075
|
});
|
|
9058
|
-
({
|
|
9059
|
-
preBufferSec: 15,
|
|
9060
|
-
postBufferSec: 30
|
|
9061
|
-
}).postBufferSec * 1e3;
|
|
9076
|
+
({ postBufferSec: 30 }).postBufferSec * 1e3;
|
|
9062
9077
|
/**
|
|
9063
9078
|
* Per-device retention overrides. Every field is optional; an unset or `0`
|
|
9064
9079
|
* value inherits the node-wide recorder default. Only footage-lifetime limits
|
|
@@ -11635,12 +11650,30 @@ var BackupDestinationInfoSchema = object({
|
|
|
11635
11650
|
lastSuccessAt: number().optional(),
|
|
11636
11651
|
/** Newest-archive size from `manifests.json`, or undefined. */
|
|
11637
11652
|
lastSuccessSizeBytes: number().optional(),
|
|
11638
|
-
/**
|
|
11653
|
+
/**
|
|
11654
|
+
* Cron cadence(s) of the ENABLED schedules that fan out to this
|
|
11655
|
+
* destination, comma-joined. Absent when no enabled schedule targets it
|
|
11656
|
+
* — a destination nothing is scheduled to write to must not advertise a
|
|
11657
|
+
* cadence (D384). This is never the `backup_destination_policies.cron`
|
|
11658
|
+
* column: that per-location cron has scheduled nothing since 2026-07-28
|
|
11659
|
+
* and reading it made a destination with a DISABLED schedule claim a
|
|
11660
|
+
* nightly run.
|
|
11661
|
+
*/
|
|
11639
11662
|
cron: string().optional(),
|
|
11640
|
-
/** ms-epoch of next
|
|
11663
|
+
/** ms-epoch of the next firing across those schedules (earliest), if any. */
|
|
11641
11664
|
nextRunAt: number().optional(),
|
|
11642
|
-
/**
|
|
11643
|
-
|
|
11665
|
+
/**
|
|
11666
|
+
* ms-epoch of the last time a run ATTEMPTED to write here — success or
|
|
11667
|
+
* failure. Never a success stamp: pair it with `lastSuccessAt` (the
|
|
11668
|
+
* newest archive that actually landed) and `lastError`.
|
|
11669
|
+
*/
|
|
11670
|
+
lastAttemptAt: number().optional(),
|
|
11671
|
+
/**
|
|
11672
|
+
* Why the last attempt failed, verbatim. Absent when the last attempt
|
|
11673
|
+
* landed the archive. A destination that has never been written to has
|
|
11674
|
+
* neither this nor `lastAttemptAt`.
|
|
11675
|
+
*/
|
|
11676
|
+
lastError: string().optional()
|
|
11644
11677
|
});
|
|
11645
11678
|
/**
|
|
11646
11679
|
* Per-archive entry returned by `backup.listArchives({ destinationId })`.
|
|
@@ -11803,8 +11836,16 @@ var BackupScheduleSchema = object({
|
|
|
11803
11836
|
retentionCount: number().int().min(1).max(1e3),
|
|
11804
11837
|
/** Optional subset of source locations to include; omitted = all. */
|
|
11805
11838
|
dataSources: array(string()).readonly().optional(),
|
|
11806
|
-
/**
|
|
11807
|
-
|
|
11839
|
+
/**
|
|
11840
|
+
* ms-epoch of the last tick that FIRED this schedule. Stamped before the
|
|
11841
|
+
* archive runs (it is the dedupe anchor), so it says "attempted", never
|
|
11842
|
+
* "succeeded" — a run refused by every destination stamps it too.
|
|
11843
|
+
*/
|
|
11844
|
+
lastAttemptAt: number().optional(),
|
|
11845
|
+
/** ms-epoch of the last run of this schedule that landed at ≥1 destination. */
|
|
11846
|
+
lastSuccessAt: number().optional(),
|
|
11847
|
+
/** Why the last fired run failed, verbatim. Absent when it succeeded. */
|
|
11848
|
+
lastError: string().optional(),
|
|
11808
11849
|
/** ms-epoch of next computed firing (read-only, filled on list). */
|
|
11809
11850
|
nextRunAt: number().optional()
|
|
11810
11851
|
});
|
|
@@ -11853,14 +11894,7 @@ method(_void(), array(BackupDestinationInfoSchema).readonly(), { auth: "admin" }
|
|
|
11853
11894
|
locationId: string(),
|
|
11854
11895
|
enabled: boolean(),
|
|
11855
11896
|
retentionCount: number().int().min(1).max(1e3),
|
|
11856
|
-
label: string().optional()
|
|
11857
|
-
/**
|
|
11858
|
-
* Per-destination cron expression. Empty string clears the
|
|
11859
|
-
* schedule (manual-only). Validated server-side via croner;
|
|
11860
|
-
* malformed expressions reject the upsert with an actionable
|
|
11861
|
-
* message.
|
|
11862
|
-
*/
|
|
11863
|
-
cron: string().optional()
|
|
11897
|
+
label: string().optional()
|
|
11864
11898
|
}), _void(), {
|
|
11865
11899
|
kind: "mutation",
|
|
11866
11900
|
auth: "admin"
|
package/package.json
CHANGED