@camstack/addon-provider-rademacher 0.2.75 → 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 +52 -18
- package/dist/addon.mjs +52 -18
- package/package.json +1 -1
package/dist/addon.js
CHANGED
|
@@ -8936,13 +8936,28 @@ var RecordingBandSchema = object({
|
|
|
8936
8936
|
end: string().regex(HHMM),
|
|
8937
8937
|
mode: RecordingBandModeSchema,
|
|
8938
8938
|
triggers: RecordingBandTriggersSchema.optional(),
|
|
8939
|
+
/**
|
|
8940
|
+
* RETIRED (D381). A band no longer carries a pre-buffer of its own.
|
|
8941
|
+
*
|
|
8942
|
+
* It was the retroactive KEEP bound — which already-written segments survive
|
|
8943
|
+
* a trigger — and it had to be at least as wide as the widest pre-roll the
|
|
8944
|
+
* broker could serve, or the gate would delete the seconds the ring had just
|
|
8945
|
+
* handed the writer. That "at least as wide as" is the tell: it was a second
|
|
8946
|
+
* expression of the broker's retention, in different units, in a different
|
|
8947
|
+
* addon, with an invariant the operator had to maintain by hand. The keep
|
|
8948
|
+
* bound is now derived from the one prebuffer ceiling and there is nothing
|
|
8949
|
+
* left to configure here.
|
|
8950
|
+
*
|
|
8951
|
+
* The key survives in the SHAPE so a config written before that record still
|
|
8952
|
+
* parses and can be migrated deliberately — `RecordingBandSchema` is not
|
|
8953
|
+
* strict, so simply deleting it would strip an operator's value in silence on
|
|
8954
|
+
* the next save (the failure D380 came one commit from shipping). Nothing
|
|
8955
|
+
* reads it: {@link stripRetiredBandPreBufferSec} removes it on load.
|
|
8956
|
+
*/
|
|
8939
8957
|
preBufferSec: number().min(0).optional(),
|
|
8940
8958
|
postBufferSec: number().min(0).optional()
|
|
8941
8959
|
});
|
|
8942
|
-
({
|
|
8943
|
-
preBufferSec: 15,
|
|
8944
|
-
postBufferSec: 30
|
|
8945
|
-
}).postBufferSec * 1e3;
|
|
8960
|
+
({ postBufferSec: 30 }).postBufferSec * 1e3;
|
|
8946
8961
|
/**
|
|
8947
8962
|
* Per-device retention overrides. Every field is optional; an unset or `0`
|
|
8948
8963
|
* value inherits the node-wide recorder default. Only footage-lifetime limits
|
|
@@ -11519,12 +11534,30 @@ var BackupDestinationInfoSchema = object({
|
|
|
11519
11534
|
lastSuccessAt: number().optional(),
|
|
11520
11535
|
/** Newest-archive size from `manifests.json`, or undefined. */
|
|
11521
11536
|
lastSuccessSizeBytes: number().optional(),
|
|
11522
|
-
/**
|
|
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
|
+
*/
|
|
11523
11546
|
cron: string().optional(),
|
|
11524
|
-
/** ms-epoch of next
|
|
11547
|
+
/** ms-epoch of the next firing across those schedules (earliest), if any. */
|
|
11525
11548
|
nextRunAt: number().optional(),
|
|
11526
|
-
/**
|
|
11527
|
-
|
|
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()
|
|
11528
11561
|
});
|
|
11529
11562
|
/**
|
|
11530
11563
|
* Per-archive entry returned by `backup.listArchives({ destinationId })`.
|
|
@@ -11687,8 +11720,16 @@ var BackupScheduleSchema = object({
|
|
|
11687
11720
|
retentionCount: number().int().min(1).max(1e3),
|
|
11688
11721
|
/** Optional subset of source locations to include; omitted = all. */
|
|
11689
11722
|
dataSources: array(string()).readonly().optional(),
|
|
11690
|
-
/**
|
|
11691
|
-
|
|
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(),
|
|
11692
11733
|
/** ms-epoch of next computed firing (read-only, filled on list). */
|
|
11693
11734
|
nextRunAt: number().optional()
|
|
11694
11735
|
});
|
|
@@ -11737,14 +11778,7 @@ method(_void(), array(BackupDestinationInfoSchema).readonly(), { auth: "admin" }
|
|
|
11737
11778
|
locationId: string(),
|
|
11738
11779
|
enabled: boolean(),
|
|
11739
11780
|
retentionCount: number().int().min(1).max(1e3),
|
|
11740
|
-
label: string().optional()
|
|
11741
|
-
/**
|
|
11742
|
-
* Per-destination cron expression. Empty string clears the
|
|
11743
|
-
* schedule (manual-only). Validated server-side via croner;
|
|
11744
|
-
* malformed expressions reject the upsert with an actionable
|
|
11745
|
-
* message.
|
|
11746
|
-
*/
|
|
11747
|
-
cron: string().optional()
|
|
11781
|
+
label: string().optional()
|
|
11748
11782
|
}), _void(), {
|
|
11749
11783
|
kind: "mutation",
|
|
11750
11784
|
auth: "admin"
|
package/dist/addon.mjs
CHANGED
|
@@ -8935,13 +8935,28 @@ var RecordingBandSchema = object({
|
|
|
8935
8935
|
end: string().regex(HHMM),
|
|
8936
8936
|
mode: RecordingBandModeSchema,
|
|
8937
8937
|
triggers: RecordingBandTriggersSchema.optional(),
|
|
8938
|
+
/**
|
|
8939
|
+
* RETIRED (D381). A band no longer carries a pre-buffer of its own.
|
|
8940
|
+
*
|
|
8941
|
+
* It was the retroactive KEEP bound — which already-written segments survive
|
|
8942
|
+
* a trigger — and it had to be at least as wide as the widest pre-roll the
|
|
8943
|
+
* broker could serve, or the gate would delete the seconds the ring had just
|
|
8944
|
+
* handed the writer. That "at least as wide as" is the tell: it was a second
|
|
8945
|
+
* expression of the broker's retention, in different units, in a different
|
|
8946
|
+
* addon, with an invariant the operator had to maintain by hand. The keep
|
|
8947
|
+
* bound is now derived from the one prebuffer ceiling and there is nothing
|
|
8948
|
+
* left to configure here.
|
|
8949
|
+
*
|
|
8950
|
+
* The key survives in the SHAPE so a config written before that record still
|
|
8951
|
+
* parses and can be migrated deliberately — `RecordingBandSchema` is not
|
|
8952
|
+
* strict, so simply deleting it would strip an operator's value in silence on
|
|
8953
|
+
* the next save (the failure D380 came one commit from shipping). Nothing
|
|
8954
|
+
* reads it: {@link stripRetiredBandPreBufferSec} removes it on load.
|
|
8955
|
+
*/
|
|
8938
8956
|
preBufferSec: number().min(0).optional(),
|
|
8939
8957
|
postBufferSec: number().min(0).optional()
|
|
8940
8958
|
});
|
|
8941
|
-
({
|
|
8942
|
-
preBufferSec: 15,
|
|
8943
|
-
postBufferSec: 30
|
|
8944
|
-
}).postBufferSec * 1e3;
|
|
8959
|
+
({ postBufferSec: 30 }).postBufferSec * 1e3;
|
|
8945
8960
|
/**
|
|
8946
8961
|
* Per-device retention overrides. Every field is optional; an unset or `0`
|
|
8947
8962
|
* value inherits the node-wide recorder default. Only footage-lifetime limits
|
|
@@ -11518,12 +11533,30 @@ var BackupDestinationInfoSchema = object({
|
|
|
11518
11533
|
lastSuccessAt: number().optional(),
|
|
11519
11534
|
/** Newest-archive size from `manifests.json`, or undefined. */
|
|
11520
11535
|
lastSuccessSizeBytes: number().optional(),
|
|
11521
|
-
/**
|
|
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
|
+
*/
|
|
11522
11545
|
cron: string().optional(),
|
|
11523
|
-
/** ms-epoch of next
|
|
11546
|
+
/** ms-epoch of the next firing across those schedules (earliest), if any. */
|
|
11524
11547
|
nextRunAt: number().optional(),
|
|
11525
|
-
/**
|
|
11526
|
-
|
|
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()
|
|
11527
11560
|
});
|
|
11528
11561
|
/**
|
|
11529
11562
|
* Per-archive entry returned by `backup.listArchives({ destinationId })`.
|
|
@@ -11686,8 +11719,16 @@ var BackupScheduleSchema = object({
|
|
|
11686
11719
|
retentionCount: number().int().min(1).max(1e3),
|
|
11687
11720
|
/** Optional subset of source locations to include; omitted = all. */
|
|
11688
11721
|
dataSources: array(string()).readonly().optional(),
|
|
11689
|
-
/**
|
|
11690
|
-
|
|
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(),
|
|
11691
11732
|
/** ms-epoch of next computed firing (read-only, filled on list). */
|
|
11692
11733
|
nextRunAt: number().optional()
|
|
11693
11734
|
});
|
|
@@ -11736,14 +11777,7 @@ method(_void(), array(BackupDestinationInfoSchema).readonly(), { auth: "admin" }
|
|
|
11736
11777
|
locationId: string(),
|
|
11737
11778
|
enabled: boolean(),
|
|
11738
11779
|
retentionCount: number().int().min(1).max(1e3),
|
|
11739
|
-
label: string().optional()
|
|
11740
|
-
/**
|
|
11741
|
-
* Per-destination cron expression. Empty string clears the
|
|
11742
|
-
* schedule (manual-only). Validated server-side via croner;
|
|
11743
|
-
* malformed expressions reject the upsert with an actionable
|
|
11744
|
-
* message.
|
|
11745
|
-
*/
|
|
11746
|
-
cron: string().optional()
|
|
11780
|
+
label: string().optional()
|
|
11747
11781
|
}), _void(), {
|
|
11748
11782
|
kind: "mutation",
|
|
11749
11783
|
auth: "admin"
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@camstack/addon-provider-rademacher",
|
|
3
|
-
"version": "0.2.
|
|
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",
|