@camstack/addon-terminal 0.1.81 → 0.1.83
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
|
@@ -8050,13 +8050,28 @@ var RecordingBandSchema = object({
|
|
|
8050
8050
|
end: string().regex(HHMM),
|
|
8051
8051
|
mode: RecordingBandModeSchema,
|
|
8052
8052
|
triggers: RecordingBandTriggersSchema.optional(),
|
|
8053
|
+
/**
|
|
8054
|
+
* RETIRED (D381). A band no longer carries a pre-buffer of its own.
|
|
8055
|
+
*
|
|
8056
|
+
* It was the retroactive KEEP bound — which already-written segments survive
|
|
8057
|
+
* a trigger — and it had to be at least as wide as the widest pre-roll the
|
|
8058
|
+
* broker could serve, or the gate would delete the seconds the ring had just
|
|
8059
|
+
* handed the writer. That "at least as wide as" is the tell: it was a second
|
|
8060
|
+
* expression of the broker's retention, in different units, in a different
|
|
8061
|
+
* addon, with an invariant the operator had to maintain by hand. The keep
|
|
8062
|
+
* bound is now derived from the one prebuffer ceiling and there is nothing
|
|
8063
|
+
* left to configure here.
|
|
8064
|
+
*
|
|
8065
|
+
* The key survives in the SHAPE so a config written before that record still
|
|
8066
|
+
* parses and can be migrated deliberately — `RecordingBandSchema` is not
|
|
8067
|
+
* strict, so simply deleting it would strip an operator's value in silence on
|
|
8068
|
+
* the next save (the failure D380 came one commit from shipping). Nothing
|
|
8069
|
+
* reads it: {@link stripRetiredBandPreBufferSec} removes it on load.
|
|
8070
|
+
*/
|
|
8053
8071
|
preBufferSec: number().min(0).optional(),
|
|
8054
8072
|
postBufferSec: number().min(0).optional()
|
|
8055
8073
|
});
|
|
8056
|
-
({
|
|
8057
|
-
preBufferSec: 15,
|
|
8058
|
-
postBufferSec: 30
|
|
8059
|
-
}).postBufferSec * 1e3;
|
|
8074
|
+
({ postBufferSec: 30 }).postBufferSec * 1e3;
|
|
8060
8075
|
/**
|
|
8061
8076
|
* Per-device retention overrides. Every field is optional; an unset or `0`
|
|
8062
8077
|
* value inherits the node-wide recorder default. Only footage-lifetime limits
|
|
@@ -10633,12 +10648,30 @@ var BackupDestinationInfoSchema = object({
|
|
|
10633
10648
|
lastSuccessAt: number().optional(),
|
|
10634
10649
|
/** Newest-archive size from `manifests.json`, or undefined. */
|
|
10635
10650
|
lastSuccessSizeBytes: number().optional(),
|
|
10636
|
-
/**
|
|
10651
|
+
/**
|
|
10652
|
+
* Cron cadence(s) of the ENABLED schedules that fan out to this
|
|
10653
|
+
* destination, comma-joined. Absent when no enabled schedule targets it
|
|
10654
|
+
* — a destination nothing is scheduled to write to must not advertise a
|
|
10655
|
+
* cadence (D384). This is never the `backup_destination_policies.cron`
|
|
10656
|
+
* column: that per-location cron has scheduled nothing since 2026-07-28
|
|
10657
|
+
* and reading it made a destination with a DISABLED schedule claim a
|
|
10658
|
+
* nightly run.
|
|
10659
|
+
*/
|
|
10637
10660
|
cron: string().optional(),
|
|
10638
|
-
/** ms-epoch of next
|
|
10661
|
+
/** ms-epoch of the next firing across those schedules (earliest), if any. */
|
|
10639
10662
|
nextRunAt: number().optional(),
|
|
10640
|
-
/**
|
|
10641
|
-
|
|
10663
|
+
/**
|
|
10664
|
+
* ms-epoch of the last time a run ATTEMPTED to write here — success or
|
|
10665
|
+
* failure. Never a success stamp: pair it with `lastSuccessAt` (the
|
|
10666
|
+
* newest archive that actually landed) and `lastError`.
|
|
10667
|
+
*/
|
|
10668
|
+
lastAttemptAt: number().optional(),
|
|
10669
|
+
/**
|
|
10670
|
+
* Why the last attempt failed, verbatim. Absent when the last attempt
|
|
10671
|
+
* landed the archive. A destination that has never been written to has
|
|
10672
|
+
* neither this nor `lastAttemptAt`.
|
|
10673
|
+
*/
|
|
10674
|
+
lastError: string().optional()
|
|
10642
10675
|
});
|
|
10643
10676
|
/**
|
|
10644
10677
|
* Per-archive entry returned by `backup.listArchives({ destinationId })`.
|
|
@@ -10801,8 +10834,16 @@ var BackupScheduleSchema = object({
|
|
|
10801
10834
|
retentionCount: number().int().min(1).max(1e3),
|
|
10802
10835
|
/** Optional subset of source locations to include; omitted = all. */
|
|
10803
10836
|
dataSources: array(string()).readonly().optional(),
|
|
10804
|
-
/**
|
|
10805
|
-
|
|
10837
|
+
/**
|
|
10838
|
+
* ms-epoch of the last tick that FIRED this schedule. Stamped before the
|
|
10839
|
+
* archive runs (it is the dedupe anchor), so it says "attempted", never
|
|
10840
|
+
* "succeeded" — a run refused by every destination stamps it too.
|
|
10841
|
+
*/
|
|
10842
|
+
lastAttemptAt: number().optional(),
|
|
10843
|
+
/** ms-epoch of the last run of this schedule that landed at ≥1 destination. */
|
|
10844
|
+
lastSuccessAt: number().optional(),
|
|
10845
|
+
/** Why the last fired run failed, verbatim. Absent when it succeeded. */
|
|
10846
|
+
lastError: string().optional(),
|
|
10806
10847
|
/** ms-epoch of next computed firing (read-only, filled on list). */
|
|
10807
10848
|
nextRunAt: number().optional()
|
|
10808
10849
|
});
|
|
@@ -10851,14 +10892,7 @@ method(_void(), array(BackupDestinationInfoSchema).readonly(), { auth: "admin" }
|
|
|
10851
10892
|
locationId: string(),
|
|
10852
10893
|
enabled: boolean(),
|
|
10853
10894
|
retentionCount: number().int().min(1).max(1e3),
|
|
10854
|
-
label: string().optional()
|
|
10855
|
-
/**
|
|
10856
|
-
* Per-destination cron expression. Empty string clears the
|
|
10857
|
-
* schedule (manual-only). Validated server-side via croner;
|
|
10858
|
-
* malformed expressions reject the upsert with an actionable
|
|
10859
|
-
* message.
|
|
10860
|
-
*/
|
|
10861
|
-
cron: string().optional()
|
|
10895
|
+
label: string().optional()
|
|
10862
10896
|
}), _void(), {
|
|
10863
10897
|
kind: "mutation",
|
|
10864
10898
|
auth: "admin"
|
package/dist/addon.mjs
CHANGED
|
@@ -8027,13 +8027,28 @@ var RecordingBandSchema = object({
|
|
|
8027
8027
|
end: string().regex(HHMM),
|
|
8028
8028
|
mode: RecordingBandModeSchema,
|
|
8029
8029
|
triggers: RecordingBandTriggersSchema.optional(),
|
|
8030
|
+
/**
|
|
8031
|
+
* RETIRED (D381). A band no longer carries a pre-buffer of its own.
|
|
8032
|
+
*
|
|
8033
|
+
* It was the retroactive KEEP bound — which already-written segments survive
|
|
8034
|
+
* a trigger — and it had to be at least as wide as the widest pre-roll the
|
|
8035
|
+
* broker could serve, or the gate would delete the seconds the ring had just
|
|
8036
|
+
* handed the writer. That "at least as wide as" is the tell: it was a second
|
|
8037
|
+
* expression of the broker's retention, in different units, in a different
|
|
8038
|
+
* addon, with an invariant the operator had to maintain by hand. The keep
|
|
8039
|
+
* bound is now derived from the one prebuffer ceiling and there is nothing
|
|
8040
|
+
* left to configure here.
|
|
8041
|
+
*
|
|
8042
|
+
* The key survives in the SHAPE so a config written before that record still
|
|
8043
|
+
* parses and can be migrated deliberately — `RecordingBandSchema` is not
|
|
8044
|
+
* strict, so simply deleting it would strip an operator's value in silence on
|
|
8045
|
+
* the next save (the failure D380 came one commit from shipping). Nothing
|
|
8046
|
+
* reads it: {@link stripRetiredBandPreBufferSec} removes it on load.
|
|
8047
|
+
*/
|
|
8030
8048
|
preBufferSec: number().min(0).optional(),
|
|
8031
8049
|
postBufferSec: number().min(0).optional()
|
|
8032
8050
|
});
|
|
8033
|
-
({
|
|
8034
|
-
preBufferSec: 15,
|
|
8035
|
-
postBufferSec: 30
|
|
8036
|
-
}).postBufferSec * 1e3;
|
|
8051
|
+
({ postBufferSec: 30 }).postBufferSec * 1e3;
|
|
8037
8052
|
/**
|
|
8038
8053
|
* Per-device retention overrides. Every field is optional; an unset or `0`
|
|
8039
8054
|
* value inherits the node-wide recorder default. Only footage-lifetime limits
|
|
@@ -10610,12 +10625,30 @@ var BackupDestinationInfoSchema = object({
|
|
|
10610
10625
|
lastSuccessAt: number().optional(),
|
|
10611
10626
|
/** Newest-archive size from `manifests.json`, or undefined. */
|
|
10612
10627
|
lastSuccessSizeBytes: number().optional(),
|
|
10613
|
-
/**
|
|
10628
|
+
/**
|
|
10629
|
+
* Cron cadence(s) of the ENABLED schedules that fan out to this
|
|
10630
|
+
* destination, comma-joined. Absent when no enabled schedule targets it
|
|
10631
|
+
* — a destination nothing is scheduled to write to must not advertise a
|
|
10632
|
+
* cadence (D384). This is never the `backup_destination_policies.cron`
|
|
10633
|
+
* column: that per-location cron has scheduled nothing since 2026-07-28
|
|
10634
|
+
* and reading it made a destination with a DISABLED schedule claim a
|
|
10635
|
+
* nightly run.
|
|
10636
|
+
*/
|
|
10614
10637
|
cron: string().optional(),
|
|
10615
|
-
/** ms-epoch of next
|
|
10638
|
+
/** ms-epoch of the next firing across those schedules (earliest), if any. */
|
|
10616
10639
|
nextRunAt: number().optional(),
|
|
10617
|
-
/**
|
|
10618
|
-
|
|
10640
|
+
/**
|
|
10641
|
+
* ms-epoch of the last time a run ATTEMPTED to write here — success or
|
|
10642
|
+
* failure. Never a success stamp: pair it with `lastSuccessAt` (the
|
|
10643
|
+
* newest archive that actually landed) and `lastError`.
|
|
10644
|
+
*/
|
|
10645
|
+
lastAttemptAt: number().optional(),
|
|
10646
|
+
/**
|
|
10647
|
+
* Why the last attempt failed, verbatim. Absent when the last attempt
|
|
10648
|
+
* landed the archive. A destination that has never been written to has
|
|
10649
|
+
* neither this nor `lastAttemptAt`.
|
|
10650
|
+
*/
|
|
10651
|
+
lastError: string().optional()
|
|
10619
10652
|
});
|
|
10620
10653
|
/**
|
|
10621
10654
|
* Per-archive entry returned by `backup.listArchives({ destinationId })`.
|
|
@@ -10778,8 +10811,16 @@ var BackupScheduleSchema = object({
|
|
|
10778
10811
|
retentionCount: number().int().min(1).max(1e3),
|
|
10779
10812
|
/** Optional subset of source locations to include; omitted = all. */
|
|
10780
10813
|
dataSources: array(string()).readonly().optional(),
|
|
10781
|
-
/**
|
|
10782
|
-
|
|
10814
|
+
/**
|
|
10815
|
+
* ms-epoch of the last tick that FIRED this schedule. Stamped before the
|
|
10816
|
+
* archive runs (it is the dedupe anchor), so it says "attempted", never
|
|
10817
|
+
* "succeeded" — a run refused by every destination stamps it too.
|
|
10818
|
+
*/
|
|
10819
|
+
lastAttemptAt: number().optional(),
|
|
10820
|
+
/** ms-epoch of the last run of this schedule that landed at ≥1 destination. */
|
|
10821
|
+
lastSuccessAt: number().optional(),
|
|
10822
|
+
/** Why the last fired run failed, verbatim. Absent when it succeeded. */
|
|
10823
|
+
lastError: string().optional(),
|
|
10783
10824
|
/** ms-epoch of next computed firing (read-only, filled on list). */
|
|
10784
10825
|
nextRunAt: number().optional()
|
|
10785
10826
|
});
|
|
@@ -10828,14 +10869,7 @@ method(_void(), array(BackupDestinationInfoSchema).readonly(), { auth: "admin" }
|
|
|
10828
10869
|
locationId: string(),
|
|
10829
10870
|
enabled: boolean(),
|
|
10830
10871
|
retentionCount: number().int().min(1).max(1e3),
|
|
10831
|
-
label: string().optional()
|
|
10832
|
-
/**
|
|
10833
|
-
* Per-destination cron expression. Empty string clears the
|
|
10834
|
-
* schedule (manual-only). Validated server-side via croner;
|
|
10835
|
-
* malformed expressions reject the upsert with an actionable
|
|
10836
|
-
* message.
|
|
10837
|
-
*/
|
|
10838
|
-
cron: string().optional()
|
|
10872
|
+
label: string().optional()
|
|
10839
10873
|
}), _void(), {
|
|
10840
10874
|
kind: "mutation",
|
|
10841
10875
|
auth: "admin"
|