@camstack/system 1.2.333 → 1.2.335

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.
Files changed (70) hide show
  1. package/dist/addon-runner.js +1 -1
  2. package/dist/addon-runner.mjs +1 -1
  3. package/dist/addon-utils.js +1 -1
  4. package/dist/addon-utils.mjs +1 -1
  5. package/dist/builtins/addon-pages-aggregator/addon-pages-aggregator.addon.js +1 -1
  6. package/dist/builtins/addon-pages-aggregator/addon-pages-aggregator.addon.mjs +1 -1
  7. package/dist/builtins/addon-widgets-aggregator/addon-widgets-aggregator.addon.js +1 -1
  8. package/dist/builtins/addon-widgets-aggregator/addon-widgets-aggregator.addon.mjs +1 -1
  9. package/dist/builtins/alerts/alerts.addon.js +1 -1
  10. package/dist/builtins/alerts/alerts.addon.mjs +1 -1
  11. package/dist/builtins/autotrack/autotrack-cameras.d.ts +1 -1
  12. package/dist/builtins/autotrack/index.js +1 -1
  13. package/dist/builtins/autotrack/index.mjs +1 -1
  14. package/dist/builtins/backup-orchestrator/backup-orchestrator.addon.js +1 -1
  15. package/dist/builtins/backup-orchestrator/backup-orchestrator.addon.mjs +1 -1
  16. package/dist/builtins/camera-grid/grid-sentry-sources.d.ts +1 -1
  17. package/dist/builtins/camera-grid/index.js +2 -2
  18. package/dist/builtins/camera-grid/index.mjs +2 -2
  19. package/dist/builtins/composer/composer.addon.js +2 -2
  20. package/dist/builtins/composer/composer.addon.mjs +2 -2
  21. package/dist/builtins/console-logging/index.js +1 -1
  22. package/dist/builtins/console-logging/index.mjs +1 -1
  23. package/dist/builtins/core-blocks/core-blocks.addon.js +2 -2
  24. package/dist/builtins/core-blocks/core-blocks.addon.mjs +2 -2
  25. package/dist/builtins/device-manager/device-manager.addon.js +2 -2
  26. package/dist/builtins/device-manager/device-manager.addon.mjs +2 -2
  27. package/dist/builtins/device-manager/device-meta-types.d.ts +1 -1
  28. package/dist/builtins/hub-forwarder/index.js +1 -1
  29. package/dist/builtins/hub-forwarder/index.mjs +1 -1
  30. package/dist/builtins/liveness-monitor/liveness-monitor.addon.js +1 -1
  31. package/dist/builtins/liveness-monitor/liveness-monitor.addon.mjs +1 -1
  32. package/dist/builtins/local-auth/local-auth.addon.js +1 -1
  33. package/dist/builtins/local-auth/local-auth.addon.mjs +1 -1
  34. package/dist/builtins/local-network/local-network.addon.js +1 -1
  35. package/dist/builtins/local-network/local-network.addon.mjs +1 -1
  36. package/dist/builtins/loki-logging/index.js +1 -1
  37. package/dist/builtins/loki-logging/index.mjs +1 -1
  38. package/dist/builtins/native-metrics/native-metrics.addon.js +1 -1
  39. package/dist/builtins/native-metrics/native-metrics.addon.mjs +1 -1
  40. package/dist/builtins/platform-probe/index.js +1 -1
  41. package/dist/builtins/platform-probe/index.mjs +1 -1
  42. package/dist/builtins/remote-access-orchestrator/remote-access-orchestrator.addon.js +1 -1
  43. package/dist/builtins/remote-access-orchestrator/remote-access-orchestrator.addon.mjs +1 -1
  44. package/dist/builtins/snapshot/index.js +3 -3
  45. package/dist/builtins/snapshot/index.mjs +3 -3
  46. package/dist/builtins/snapshot/snapshot-courtesy.d.ts +1 -1
  47. package/dist/builtins/sqlite-storage/filesystem-storage.addon.js +1 -1
  48. package/dist/builtins/sqlite-storage/filesystem-storage.addon.mjs +1 -1
  49. package/dist/builtins/sqlite-storage/sqlite-settings.addon.js +0 -0
  50. package/dist/builtins/sqlite-storage/sqlite-settings.addon.mjs +0 -0
  51. package/dist/builtins/storage-orchestrator/storage-orchestrator.addon.js +1 -1
  52. package/dist/builtins/storage-orchestrator/storage-orchestrator.addon.mjs +1 -1
  53. package/dist/builtins/system-config/system-config.addon.js +1 -1
  54. package/dist/builtins/system-config/system-config.addon.mjs +1 -1
  55. package/dist/builtins/winston-logging/index.js +1 -1
  56. package/dist/builtins/winston-logging/index.mjs +1 -1
  57. package/dist/{child-cap-dispatch-D_vavR92.js → child-cap-dispatch-D4-EtkM5.js} +1 -1
  58. package/dist/{child-cap-dispatch-DZBRtBiY.mjs → child-cap-dispatch-GtAYO1FW.mjs} +1 -1
  59. package/dist/{composition-sources-pkS2rTOz.mjs → composition-sources-C-6E3zhK.mjs} +1 -1
  60. package/dist/{composition-sources-BOmLYV5s.js → composition-sources-CjBIfHcg.js} +1 -1
  61. package/dist/{dist-Dl2VFsPg.js → dist-C-gMv11x.js} +566 -66
  62. package/dist/{dist-DxkeG_0w.mjs → dist-DhOLNyKN.mjs} +566 -66
  63. package/dist/index.js +4 -4
  64. package/dist/index.mjs +4 -4
  65. package/dist/kernel/capability-registry.d.ts +1 -1
  66. package/dist/{retired-settings-keys-D1iqJKR8.js → retired-settings-keys-C61ypFes.js} +1 -1
  67. package/dist/{retired-settings-keys-BPWzEXW3.mjs → retired-settings-keys-osBtrId_.mjs} +1 -1
  68. package/dist/{snapshot-courtesy-CZPvteq2.mjs → snapshot-courtesy-CyFs1M3I.mjs} +1 -1
  69. package/dist/{snapshot-courtesy-Cqs7GkOV.js → snapshot-courtesy-D_C5-nC0.js} +1 -1
  70. package/package.json +1 -1
@@ -3521,7 +3521,7 @@ function errMsg(err) {
3521
3521
  return String(err);
3522
3522
  }
3523
3523
  //#endregion
3524
- //#region ../types/dist/composition-43aqsZQj.mjs
3524
+ //#region ../types/dist/composition-D7ULvLdD.mjs
3525
3525
  var AUDIO_ENCODER_BY_CODEC = {
3526
3526
  opus: "libopus",
3527
3527
  aac: "aac",
@@ -3967,20 +3967,20 @@ function portable(target) {
3967
3967
  }
3968
3968
  portable("linux64"), portable("linuxarm64"), portable("macarm64"), portable("mac64");
3969
3969
  /**
3970
- * LA tabella "quale booleano di questo tipo di device conta come ALTO", e il
3971
- * valutatore puro del suo FRONTE.
3970
+ * THE table "which boolean of this device type counts as HIGH", and the
3971
+ * pure evaluator of its EDGE.
3972
3972
  *
3973
- * UNA tabella per tutti quelli che chiedono "questo device è ALTO?": il
3974
- * trigger `RecordingTriggers.sensorDeviceIds` del recorder, i marker dei
3975
- * sensori della post-analysis, il bridge camera-sensors dell'orchestratore e
3976
- * le sorgenti di un campanello composto (`doorbellFeatureSources`, D671).
3977
- * Una seconda copia divergerebbe alla prima cap aggiunta, e il sintomo — "il
3978
- * sensore fa suonare il campanello ma non registra" — è esattamente D62.
3973
+ * ONE table for everyone who asks "is this device HIGH?": the
3974
+ * recorder's `RecordingTriggers.sensorDeviceIds` trigger, the post-analysis
3975
+ * sensor markers, the orchestrator's camera-sensors bridge and
3976
+ * the sources of a composite doorbell (`doorbellFeatureSources`, D671).
3977
+ * A second copy would diverge at the first cap added, and the symptom — "the
3978
+ * sensor rings the doorbell but does not record" — is exactly D62.
3979
3979
  *
3980
- * ⚠ NON è `DEVICE_STATE_READERS` (`catalogs/device-state-vocabulary.ts`), e le
3981
- * due non vanno unificate: quella risponde a "qual è la PAROLA di stato per una
3982
- * regola" (e include `presence`, `cover`, `alarm-panel`), questa a "qual è il
3983
- * booleano il cui FRONTE conta". Vocabolari deliberatamente diversi.
3980
+ * ⚠ NOT `DEVICE_STATE_READERS` (`catalogs/device-state-vocabulary.ts`), and the
3981
+ * two must not be unified: that one answers "what is the state WORD for a
3982
+ * rule" (and includes `presence`, `cover`, `alarm-panel`), this one "which
3983
+ * boolean's EDGE counts". Deliberately different vocabularies.
3984
3984
  */
3985
3985
  /**
3986
3986
  * Known binary / switch source caps → the boolean slice field whose
@@ -6149,22 +6149,22 @@ var CLASS_MAP_MACRO_TARGETS = [
6149
6149
  "package"
6150
6150
  ];
6151
6151
  /**
6152
- * Le macro classi di PRIMO LIVELLO: quelle che un object detector emette e che
6153
- * un operatore può selezionare.
6152
+ * The FIRST-LEVEL macro classes: those an object detector emits and that
6153
+ * an operator can select.
6154
6154
  *
6155
- * Sono le tre offerte dallo step `object-detection`
6155
+ * They are the three offered by the `object-detection` step
6156
6156
  * (`addon-pipeline/src/detection-pipeline/registry/step-definitions.ts`,
6157
- * `enabledMacroClasses`). `package` sta in {@link CLASS_MAP_MACRO_TARGETS} e in
6158
- * `MACRO_LABELS` — è una macro vera — ma NON qui: appartiene allo step
6159
- * `package-detection`, la cui abilitazione è guidata dalle zone, e offrire la
6160
- * stessa parola due volte ha già fatto accendere a un operatore il proxy COCO
6157
+ * `enabledMacroClasses`). `package` is in {@link CLASS_MAP_MACRO_TARGETS} and in
6158
+ * `MACRO_LABELS` — it is a true macro — but NOT here: it belongs to the step
6159
+ * `package-detection`, whose enablement is driven by zones, and offering the
6160
+ * same word twice has already made an operator turn on the COCO proxy
6161
6161
  * (suitcase/backpack/handbag) lasciando spento il detector dedicato.
6162
6162
  *
6163
- * UNA lista. Prima di oggi le stesse tre erano scritte a mano nell'offerta
6164
- * dello step e una seconda volta come union `FirstLevelMacro`
6165
- * (`types/detection.ts`); una terza copia per il trigger di registrazione
6166
- * (`RecordingTriggers.objectClasses`) avrebbe reso invisibile la divergenza
6167
- * successiva.
6163
+ * ONE list. Before today the same three were hand-written in the step's offer
6164
+ * and a second time as the union `FirstLevelMacro`
6165
+ * (`types/detection.ts`); a third copy for the recording trigger
6166
+ * (`RecordingTriggers.objectClasses`) would have made the later divergence
6167
+ * invisible.
6168
6168
  */
6169
6169
  var FIRST_LEVEL_MACRO_CLASSES = [
6170
6170
  "person",
@@ -6229,17 +6229,17 @@ var RecordingStorageModeSchema = z.enum([
6229
6229
  "on-device-decision"
6230
6230
  ]);
6231
6231
  /**
6232
- * Le macro classi che possono aprire una finestra di registrazione — le stesse
6233
- * tre offerte dallo step `object-detection`, da UNA lista
6232
+ * The macro classes that can open a recording window — the same
6233
+ * three offered by the `object-detection` step, from ONE list
6234
6234
  * ({@link FIRST_LEVEL_MACRO_CLASSES}).
6235
6235
  */
6236
6236
  var RecordingObjectTriggerClassSchema = z.enum(FIRST_LEVEL_MACRO_CLASSES);
6237
6237
  /**
6238
- * True quando `values` non ripete un elemento.
6238
+ * True when `values` does not repeat an element.
6239
6239
  *
6240
- * Un duplicato non è innocuo: ogni voce di `objectClasses` / `sensorDeviceIds`
6241
- * diventa una SORGENTE in `bandTriggerSources`, e la stessa sorgente due volte
6242
- * conterebbe due volte le sue finestre in `segmentMissedByMs`.
6240
+ * A duplicate is not harmless: every entry of `objectClasses` / `sensorDeviceIds`
6241
+ * becomes a SOURCE in `bandTriggerSources`, and the same source twice
6242
+ * would count its windows twice in `segmentMissedByMs`.
6243
6243
  */
6244
6244
  var noDuplicates = (values) => new Set(values).size === values.length;
6245
6245
  /** Which detectors trigger an `events`-mode band. */
@@ -6247,34 +6247,34 @@ var RecordingTriggersSchema = z.object({
6247
6247
  motion: z.boolean().optional(),
6248
6248
  audioThresholdDbfs: z.number().optional(),
6249
6249
  /**
6250
- * Le macro classi la cui detection apre una finestra. ASSENTE = la sorgente
6251
- * non è ascoltata; un array VUOTO è rifiutato, perché "banda events, trigger
6252
- * object acceso, nessuna classe" è la stessa forma "abilitata e non registra
6253
- * nulla, per sempre" contro cui è scritto `eventsBandCanEverDemand`.
6250
+ * The macro classes whose detection opens a window. ABSENT = the source
6251
+ * is not listened to; an EMPTY array is rejected, because "events band, object
6252
+ * trigger on, no class" is the same shape "enabled and records
6253
+ * nothing, forever" that `eventsBandCanEverDemand` is written against.
6254
6254
  *
6255
- * Il segnale letto è GIÀ FILTRATO: solo detection `source: 'pipeline'`, cioè
6256
- * quelle che hanno attraversato `enabledMacroClasses`, i
6257
- * `minConfidence<Macro>` e il full-frame guard. L'AI a bordo camera
6258
- * (`source: 'onboard'`) non attraversa nessuno di quei gate e NON apre
6259
- * finestre — vedi `recorder/object-trigger.ts`.
6255
+ * The signal read is ALREADY FILTERED: only `source: 'pipeline'` detections, i.e.
6256
+ * those that went through `enabledMacroClasses`, the
6257
+ * `minConfidence<Macro>` and the full-frame guard. The camera's onboard AI
6258
+ * (`source: 'onboard'`) goes through none of those gates and does NOT open
6259
+ * windows — see `recorder/object-trigger.ts`.
6260
6260
  */
6261
6261
  objectClasses: z.array(RecordingObjectTriggerClassSchema).min(1).refine(noDuplicates, { message: "objectClasses must not repeat a class" }).optional(),
6262
6262
  /**
6263
- * I device LINKED il cui FRONTE ALTO apre una finestra. Assente = la sorgente
6264
- * non è ascoltata; un array vuoto è rifiutato per la stessa ragione di
6263
+ * The LINKED devices whose RISING EDGE opens a window. Absent = the source
6264
+ * is not listened to; an empty array is rejected for the same reason as
6265
6265
  * `objectClasses`.
6266
6266
  *
6267
- * Sono id di device SORGENTE, non camere: la banda li nomina, quindi il
6268
- * percorso caldo (`DeviceStateChanged`, a ritmo di bus su tutta la flotta)
6269
- * non fa RPC. L'OFFERTA da cui l'operatore li sceglie è un'altra domanda, e
6270
- * si risolve con `deviceManager.getLinkedDevices` + `getBindingsBatch` per
6271
- * device (D12) — mai un elenco globale di cap.
6267
+ * These are SOURCE device ids, not cameras: the band names them, so the
6268
+ * hot path (`DeviceStateChanged`, at bus rate across the whole fleet)
6269
+ * does no RPC. The OFFER from which the operator picks them is another question, and
6270
+ * is resolved with `deviceManager.getLinkedDevices` + `getBindingsBatch` per
6271
+ * device (D12) — never a global list of caps.
6272
6272
  *
6273
- * Cosa vuol dire "alto" dipende dal TIPO di device e non è deciso qui:
6274
- * `SOURCE_CAP_ACTIVE_FIELD` (`catalogs/sensor-active-state.ts`) è LA tabella,
6275
- * la stessa del campanello composto (D671). Ed è il FRONTE, non
6276
- * il livello: un contatto trovato già aperto al riavvio del runner non fa
6277
- * registrare.
6273
+ * What "high" means depends on the device TYPE and is not decided here:
6274
+ * `SOURCE_CAP_ACTIVE_FIELD` (`catalogs/sensor-active-state.ts`) is THE table,
6275
+ * the same one as the composite doorbell (D671). And it is the EDGE, not
6276
+ * the level: a contact found already open at runner restart does not
6277
+ * record.
6278
6278
  */
6279
6279
  sensorDeviceIds: z.array(z.number().int().positive()).min(1).max(16).refine(noDuplicates, { message: "sensorDeviceIds must not repeat a device" }).optional()
6280
6280
  });
@@ -7545,7 +7545,7 @@ var DecoderSessionConfigSchema = z.object({
7545
7545
  * - **VALUE** — at which level, for which scope, until when. That stays ONE
7546
7546
  * thing: the logging settings document on the `system` cap. Two authorities
7547
7547
  * over the values is the exact defect
7548
- * `docs/design/plans/2026-08-26-logging-per-componente.md` was written to
7548
+ * `docs/design/plans/2026-08-26-per-component-logging.md` was written to
7549
7549
  * remove; re-introducing it from the cure side would be grotesque.
7550
7550
  *
7551
7551
  * Nothing in this file reads a clock, an env var or a store. The registry is
@@ -13660,7 +13660,7 @@ var dataStoreProviderCapability = {
13660
13660
  *
13661
13661
  * ⚠ An earlier version of this comment blamed Zod stripping, and that
13662
13662
  * was wrong — corrected 2026-08-26 after the hop map
13663
- * (`docs/design/2026-08-26-mappa-hop-argomenti.md`) traced the path.
13663
+ * (`docs/design/2026-08-26-topic-hop-map.md`) traced the path.
13664
13664
  * There is **no Zod parse at all** between the door and the engine: the
13665
13665
  * dispatcher forwards the payload verbatim and UDS carries it whole. A
13666
13666
  * field declared here reaches `SqliteSettingsBackend` either way.
@@ -15947,7 +15947,7 @@ var deviceManagerCapability = {
15947
15947
  * sources could be switched off without switching off the rest (D556, then
15948
15948
  * D555's re-key by source). The operator removed the whole idea the same
15949
15949
  * day: *"tutti i providers funzionano sempre, non serve
15950
- * disattivarli/attivarli … loro vivono lì"* (D557 amended, third). A
15950
+ * disattivarli/attivarli … loro vivono lì"* [all the providers always work, there is no need to deactivate/activate them … they live there] (D557 amended, third). A
15951
15951
  * collection cap's providers are a DERIVED set — every addon that provides
15952
15952
  * the cap for this device type, computed on every read and persisted
15953
15953
  * nowhere — so there is nothing here to activate, and a verb that accepted
@@ -16799,7 +16799,7 @@ var embeddingEncoderCapability = {
16799
16799
  * per-device window, `KeyFrameCaptureLog`, `bumpCropMetric`. Every one of them
16800
16800
  * ends in a log line, and a log line is the thing the operator asked to stop
16801
16801
  * needing: *"possiamo armare questi errori intanto? Così al prossimo giro
16802
- * ricontrolliamo tutti questi punti"*. Reading them meant grepping Loki and
16802
+ * ricontrolliamo tutti questi punti"* [can we instrument these errors in the meantime? That way next round we recheck all these points]. Reading them meant grepping Loki and
16803
16803
  * hand-correlating timestamps, which is how a 22% thumbnail gap and a 3-hour
16804
16804
  * media blackout were both diagnosed. The counters stay; this is where they can
16805
16805
  * be READ.
@@ -23070,14 +23070,14 @@ var TrackSchema = z.object({
23070
23070
  * `derive-returned-null tile=standin`,
23071
23071
  * `native-tile tile=native no-key-frame-at-close`, …) written at close and
23072
23072
  * CLEARED by the late-keyFrame upgrade when a native tile lands after all.
23073
- * The operator-facing answer to "perché manca l'immagine?" on a track whose
23073
+ * The operator-facing answer to "perché manca l'immagine?" [why is the image missing?] on a track whose
23074
23074
  * tile is a face/plate stand-in, a raster crop, or an icon.
23075
23075
  *
23076
23076
  * **`no-key-frame-at-close` (D400).** The line used to be written ONLY when
23077
23077
  * the TILE ranked below native, so a track whose thumbnail landed natively
23078
23078
  * while its key frame missed carried no reason at all — three of the four
23079
23079
  * `MISSING_KEYFRAME` tracks in the 2026-09-07 operator audit were exactly
23080
- * that shape, and their "niente ultimo" had no cause anywhere on the row.
23080
+ * that shape, and their "niente ultimo" [no last frame] had no cause anywhere on the row.
23081
23081
  * The key frame is the head of a cascade (`keyFrame ⇒ keyFrameSmall ⇒ the
23082
23082
  * lastFrame copy source`), so its absence is now on this line whatever the
23083
23083
  * tile ended up being.
@@ -23164,7 +23164,7 @@ var MotionEventSchema = z.object({
23164
23164
  /**
23165
23165
  * Ms offsets from `timestamp` (the episode's own first rising edge, so the
23166
23166
  * first entry is always `0`) of every genuine off→on transition the
23167
- * episode saw — "ogni evento on si deve salvare" (D475). NOT one entry per
23167
+ * episode saw — "ogni evento on si deve salvare" [every ON event must be saved] (D475). NOT one entry per
23168
23168
  * push: a firmware source that keepalives at ~1 Hz for the whole burst
23169
23169
  * (Reolink, Hikvision) produces exactly one edge; a source that reports an
23170
23170
  * explicit `false` mid-episode and then resumes before the quiet window
@@ -30493,7 +30493,7 @@ var ClipPlaybackSchema = z.object({
30493
30493
  * **One authorised yes is one wake.** `next-natural` — take the clip the next
30494
30494
  * time the camera is awake for its own reasons — is deliberately not a member:
30495
30495
  * it was proposed, it is free on the battery, and the operator declined it on
30496
- * 2026-09-20 (*"Quando un export viene richiesto si sveglia la camera."*,
30496
+ * 2026-09-20 (*"Quando un export viene richiesto si sveglia la camera."* [When an export is requested the camera wakes up],
30497
30497
  * D558 "Considered and not taken").
30498
30498
  */
30499
30499
  var ClipWakeSchema = z.enum(["authorised"]);
@@ -30738,7 +30738,7 @@ var videoclipsCapability = {
30738
30738
  * **It is a SECTION of the Recording tab, at the end of it — not a tab of
30739
30739
  * its own.** It shipped as a `clips` top-tab and the operator rejected the
30740
30740
  * placement: *"utilizzerei la stessa tab recordings, lì abbiamo già tutto il
30741
- * necessario, una nuova sezione alla fine per le clips"*. The Recording tab
30741
+ * necessario, una nuova sezione alla fine per le clips"* [I would use the same recordings tab, there we already have everything necessary, a new section at the end for the clips]. The Recording tab
30742
30742
  * already holds the recorder's panel, the schedule bands and the unified
30743
30743
  * retention policy; footage the camera itself holds is the same question,
30744
30744
  * asked of a different store. `order: 100` puts it after all of them with
@@ -30799,7 +30799,7 @@ var videoclipsCapability = {
30799
30799
  * It replaced `sources?: string[]`, a VIEW filter over source ids that
30800
30800
  * assumed the answer was a fan-out over everything a camera has. The
30801
30801
  * operator settled otherwise on 2026-09-20 — *"l'utilizzatore è uno
30802
- * solo"* — so the list is asked of one provider at a time and there is
30802
+ * solo"* [there is only one user] — so the list is asked of one provider at a time and there is
30803
30803
  * nothing to filter out of it.
30804
30804
  */
30805
30805
  provider: z.string().min(1)
@@ -36466,7 +36466,7 @@ authKey: z.string().optional() }), z.object({
36466
36466
  */
36467
36467
  /**
36468
36468
  * How long after a camera's last rising edge `pipeline-analytics` closes the
36469
- * motion EPISODE row it kept open for it (D475) — "il delay della cap", in
36469
+ * motion EPISODE row it kept open for it (D475) — "il delay della cap" [the cap's delay], in
36470
36470
  * the operator's words. One authority for the whole system: the writer of a
36471
36471
  * `Camera` device's slice (the orchestrator, D696) writes this SAME constant
36472
36472
  * in `autoClearAfterMs` while `detected: true` (never a camera's own clock —
@@ -40089,7 +40089,7 @@ var ReadGopBytesResultSchema = z.object({
40089
40089
  /**
40090
40090
  * A time WINDOW of one finalized segment, cut by byte range — the multi-GOP
40091
40091
  * twin of {@link ReadGopBytesResultSchema}'s single instant. Built for the
40092
- * replay clip's `recording` source (`docs/design/plans/2026-08-26-replay-clip-su-pipeline.md`):
40092
+ * replay clip's `recording` source (`docs/design/plans/2026-08-26-clip-replay-on-pipeline.md`):
40093
40093
  * a replay needs several seconds of native pixels, not one frame.
40094
40094
  *
40095
40095
  * `ok.data` is standalone-demuxable, same as a GOP read. `ok.reachesRequestedEnd`
@@ -43041,7 +43041,7 @@ var systemCapability = {
43041
43041
  *
43042
43042
  * This is the surface the operator asked for on 2026-08-28 (*"possiamo
43043
43043
  * armare questi errori intanto? Così al prossimo giro ricontrolliamo tutti
43044
- * questi punti"*). Before it, four live failure modes could only be counted
43044
+ * questi punti"* [can we instrument these errors in the meantime? That way next round we recheck all these points]). Before it, four live failure modes could only be counted
43045
43045
  * by grepping Loki and hand-correlating timestamps, which is exactly how a
43046
43046
  * 22% thumbnail gap and a 3-hour media blackout were diagnosed — twice.
43047
43047
  *
@@ -54856,6 +54856,11 @@ var METHOD_ACCESS_MAP = Object.freeze({
54856
54856
  }
54857
54857
  });
54858
54858
  Object.freeze({
54859
+ "accessories.getStatus": [{
54860
+ name: "deviceId",
54861
+ form: "single",
54862
+ optional: false
54863
+ }],
54859
54864
  "accessories.setChildHidden": [{
54860
54865
  name: "childDeviceId",
54861
54866
  form: "single",
@@ -54875,6 +54880,11 @@ Object.freeze({
54875
54880
  form: "single",
54876
54881
  optional: false
54877
54882
  }],
54883
+ "airQualitySensor.getStatus": [{
54884
+ name: "deviceId",
54885
+ form: "single",
54886
+ optional: false
54887
+ }],
54878
54888
  "alarmPanel.arm": [{
54879
54889
  name: "deviceId",
54880
54890
  form: "single",
@@ -54885,11 +54895,36 @@ Object.freeze({
54885
54895
  form: "single",
54886
54896
  optional: false
54887
54897
  }],
54898
+ "alarmPanel.getStatus": [{
54899
+ name: "deviceId",
54900
+ form: "single",
54901
+ optional: false
54902
+ }],
54888
54903
  "alarmPanel.trigger": [{
54889
54904
  name: "deviceId",
54890
54905
  form: "single",
54891
54906
  optional: false
54892
54907
  }],
54908
+ "ambientLightSensor.getStatus": [{
54909
+ name: "deviceId",
54910
+ form: "single",
54911
+ optional: false
54912
+ }],
54913
+ "audioAnalysis.applyDeviceSettingsPatch": [{
54914
+ name: "deviceId",
54915
+ form: "single",
54916
+ optional: false
54917
+ }],
54918
+ "audioAnalysis.getDeviceLiveContribution": [{
54919
+ name: "deviceId",
54920
+ form: "single",
54921
+ optional: false
54922
+ }],
54923
+ "audioAnalysis.getDeviceSettingsContribution": [{
54924
+ name: "deviceId",
54925
+ form: "single",
54926
+ optional: false
54927
+ }],
54893
54928
  "audioAnalysis.resolveDeviceSettings": [{
54894
54929
  name: "deviceId",
54895
54930
  form: "single",
@@ -54930,16 +54965,36 @@ Object.freeze({
54930
54965
  form: "single",
54931
54966
  optional: false
54932
54967
  }],
54968
+ "automationControl.getStatus": [{
54969
+ name: "deviceId",
54970
+ form: "single",
54971
+ optional: false
54972
+ }],
54933
54973
  "automationControl.trigger": [{
54934
54974
  name: "deviceId",
54935
54975
  form: "single",
54936
54976
  optional: false
54937
54977
  }],
54978
+ "battery.getStatus": [{
54979
+ name: "deviceId",
54980
+ form: "single",
54981
+ optional: false
54982
+ }],
54938
54983
  "battery.wakeForStream": [{
54939
54984
  name: "deviceId",
54940
54985
  form: "single",
54941
54986
  optional: false
54942
54987
  }],
54988
+ "binary.getStatus": [{
54989
+ name: "deviceId",
54990
+ form: "single",
54991
+ optional: false
54992
+ }],
54993
+ "brightness.getStatus": [{
54994
+ name: "deviceId",
54995
+ form: "single",
54996
+ optional: false
54997
+ }],
54943
54998
  "brightness.setBrightness": [{
54944
54999
  name: "deviceId",
54945
55000
  form: "single",
@@ -54955,6 +55010,26 @@ Object.freeze({
54955
55010
  form: "single",
54956
55011
  optional: false
54957
55012
  }],
55013
+ "cameraCredentials.getStatus": [{
55014
+ name: "deviceId",
55015
+ form: "single",
55016
+ optional: false
55017
+ }],
55018
+ "cameraGridLayout.applyDeviceSettingsPatch": [{
55019
+ name: "deviceId",
55020
+ form: "single",
55021
+ optional: false
55022
+ }],
55023
+ "cameraGridLayout.getDeviceLiveContribution": [{
55024
+ name: "deviceId",
55025
+ form: "single",
55026
+ optional: false
55027
+ }],
55028
+ "cameraGridLayout.getDeviceSettingsContribution": [{
55029
+ name: "deviceId",
55030
+ form: "single",
55031
+ optional: false
55032
+ }],
54958
55033
  "cameraGridLayout.getLayout": [{
54959
55034
  name: "deviceId",
54960
55035
  form: "single",
@@ -54970,6 +55045,21 @@ Object.freeze({
54970
55045
  form: "single",
54971
55046
  optional: false
54972
55047
  }],
55048
+ "cameraPipelineConfig.applyDeviceSettingsPatch": [{
55049
+ name: "deviceId",
55050
+ form: "single",
55051
+ optional: false
55052
+ }],
55053
+ "cameraPipelineConfig.getDeviceLiveContribution": [{
55054
+ name: "deviceId",
55055
+ form: "single",
55056
+ optional: false
55057
+ }],
55058
+ "cameraPipelineConfig.getDeviceSettingsContribution": [{
55059
+ name: "deviceId",
55060
+ form: "single",
55061
+ optional: false
55062
+ }],
54973
55063
  "cameraStreams.getBrokerStreams": [{
54974
55064
  name: "deviceId",
54975
55065
  form: "single",
@@ -54995,6 +55085,16 @@ Object.freeze({
54995
55085
  form: "single",
54996
55086
  optional: false
54997
55087
  }],
55088
+ "carbonMonoxide.getStatus": [{
55089
+ name: "deviceId",
55090
+ form: "single",
55091
+ optional: false
55092
+ }],
55093
+ "climateControl.getStatus": [{
55094
+ name: "deviceId",
55095
+ form: "single",
55096
+ optional: false
55097
+ }],
54998
55098
  "climateControl.setFanMode": [{
54999
55099
  name: "deviceId",
55000
55100
  form: "single",
@@ -55035,16 +55135,41 @@ Object.freeze({
55035
55135
  form: "single",
55036
55136
  optional: false
55037
55137
  }],
55138
+ "color.getStatus": [{
55139
+ name: "deviceId",
55140
+ form: "single",
55141
+ optional: false
55142
+ }],
55038
55143
  "color.setColor": [{
55039
55144
  name: "deviceId",
55040
55145
  form: "single",
55041
55146
  optional: false
55042
55147
  }],
55148
+ "connectivity.getStatus": [{
55149
+ name: "deviceId",
55150
+ form: "single",
55151
+ optional: false
55152
+ }],
55153
+ "consumables.getStatus": [{
55154
+ name: "deviceId",
55155
+ form: "single",
55156
+ optional: false
55157
+ }],
55043
55158
  "consumables.reset": [{
55044
55159
  name: "deviceId",
55045
55160
  form: "single",
55046
55161
  optional: false
55047
55162
  }],
55163
+ "contact.getStatus": [{
55164
+ name: "deviceId",
55165
+ form: "single",
55166
+ optional: false
55167
+ }],
55168
+ "control.getStatus": [{
55169
+ name: "deviceId",
55170
+ form: "single",
55171
+ optional: false
55172
+ }],
55048
55173
  "control.setValue": [{
55049
55174
  name: "deviceId",
55050
55175
  form: "single",
@@ -55055,6 +55180,11 @@ Object.freeze({
55055
55180
  form: "single",
55056
55181
  optional: false
55057
55182
  }],
55183
+ "cover.getStatus": [{
55184
+ name: "deviceId",
55185
+ form: "single",
55186
+ optional: false
55187
+ }],
55058
55188
  "cover.open": [{
55059
55189
  name: "deviceId",
55060
55190
  form: "single",
@@ -55080,6 +55210,11 @@ Object.freeze({
55080
55210
  form: "single",
55081
55211
  optional: false
55082
55212
  }],
55213
+ "dayNight.getStatus": [{
55214
+ name: "deviceId",
55215
+ form: "single",
55216
+ optional: false
55217
+ }],
55083
55218
  "dayNight.setSettings": [{
55084
55219
  name: "deviceId",
55085
55220
  form: "single",
@@ -55090,11 +55225,31 @@ Object.freeze({
55090
55225
  form: "single",
55091
55226
  optional: true
55092
55227
  }],
55228
+ "detectionPipeline.applyDeviceSettingsPatch": [{
55229
+ name: "deviceId",
55230
+ form: "single",
55231
+ optional: false
55232
+ }],
55233
+ "detectionPipeline.getDeviceLiveContribution": [{
55234
+ name: "deviceId",
55235
+ form: "single",
55236
+ optional: false
55237
+ }],
55238
+ "detectionPipeline.getDeviceSettingsContribution": [{
55239
+ name: "deviceId",
55240
+ form: "single",
55241
+ optional: false
55242
+ }],
55093
55243
  "deviceAdminLink.getAdminLink": [{
55094
55244
  name: "deviceId",
55095
55245
  form: "single",
55096
55246
  optional: false
55097
55247
  }],
55248
+ "deviceAdoption.getStatus": [{
55249
+ name: "deviceId",
55250
+ form: "single",
55251
+ optional: false
55252
+ }],
55098
55253
  "deviceAdoption.release": [{
55099
55254
  name: "camDeviceId",
55100
55255
  form: "single",
@@ -55110,6 +55265,11 @@ Object.freeze({
55110
55265
  form: "single",
55111
55266
  optional: false
55112
55267
  }],
55268
+ "deviceDiscovery.getStatus": [{
55269
+ name: "deviceId",
55270
+ form: "single",
55271
+ optional: false
55272
+ }],
55113
55273
  "deviceDiscovery.listDiscovered": [{
55114
55274
  name: "deviceId",
55115
55275
  form: "single",
@@ -55129,6 +55289,21 @@ Object.freeze({
55129
55289
  form: "single",
55130
55290
  optional: false
55131
55291
  }],
55292
+ "deviceExport.applyDeviceSettingsPatch": [{
55293
+ name: "deviceId",
55294
+ form: "single",
55295
+ optional: false
55296
+ }],
55297
+ "deviceExport.getDeviceLiveContribution": [{
55298
+ name: "deviceId",
55299
+ form: "single",
55300
+ optional: false
55301
+ }],
55302
+ "deviceExport.getDeviceSettingsContribution": [{
55303
+ name: "deviceId",
55304
+ form: "single",
55305
+ optional: false
55306
+ }],
55132
55307
  "deviceExtension.listCandidates": [{
55133
55308
  name: "deviceId",
55134
55309
  form: "single",
@@ -55477,6 +55652,26 @@ Object.freeze({
55477
55652
  form: "single",
55478
55653
  optional: false
55479
55654
  }],
55655
+ "deviceStatus.getStatus": [{
55656
+ name: "deviceId",
55657
+ form: "single",
55658
+ optional: false
55659
+ }],
55660
+ "doorbell.getStatus": [{
55661
+ name: "deviceId",
55662
+ form: "single",
55663
+ optional: false
55664
+ }],
55665
+ "enumSensor.getStatus": [{
55666
+ name: "deviceId",
55667
+ form: "single",
55668
+ optional: false
55669
+ }],
55670
+ "eventEmitter.getStatus": [{
55671
+ name: "deviceId",
55672
+ form: "single",
55673
+ optional: false
55674
+ }],
55480
55675
  "faceGallery.getFaceByTrack": [{
55481
55676
  name: "deviceId",
55482
55677
  form: "single",
@@ -55491,6 +55686,11 @@ Object.freeze({
55491
55686
  form: "array",
55492
55687
  optional: true
55493
55688
  }],
55689
+ "fanControl.getStatus": [{
55690
+ name: "deviceId",
55691
+ form: "single",
55692
+ optional: false
55693
+ }],
55494
55694
  "fanControl.setDirection": [{
55495
55695
  name: "deviceId",
55496
55696
  form: "single",
@@ -55511,6 +55711,26 @@ Object.freeze({
55511
55711
  form: "single",
55512
55712
  optional: false
55513
55713
  }],
55714
+ "featureProbe.getStatus": [{
55715
+ name: "deviceId",
55716
+ form: "single",
55717
+ optional: false
55718
+ }],
55719
+ "flood.getStatus": [{
55720
+ name: "deviceId",
55721
+ form: "single",
55722
+ optional: false
55723
+ }],
55724
+ "gas.getStatus": [{
55725
+ name: "deviceId",
55726
+ form: "single",
55727
+ optional: false
55728
+ }],
55729
+ "humidifier.getStatus": [{
55730
+ name: "deviceId",
55731
+ form: "single",
55732
+ optional: false
55733
+ }],
55514
55734
  "humidifier.setMode": [{
55515
55735
  name: "deviceId",
55516
55736
  form: "single",
@@ -55526,11 +55746,26 @@ Object.freeze({
55526
55746
  form: "single",
55527
55747
  optional: false
55528
55748
  }],
55749
+ "humiditySensor.getStatus": [{
55750
+ name: "deviceId",
55751
+ form: "single",
55752
+ optional: false
55753
+ }],
55754
+ "image.getStatus": [{
55755
+ name: "deviceId",
55756
+ form: "single",
55757
+ optional: false
55758
+ }],
55529
55759
  "imageSettings.getOptions": [{
55530
55760
  name: "deviceId",
55531
55761
  form: "single",
55532
55762
  optional: false
55533
55763
  }],
55764
+ "imageSettings.getStatus": [{
55765
+ name: "deviceId",
55766
+ form: "single",
55767
+ optional: false
55768
+ }],
55534
55769
  "imageSettings.setSettings": [{
55535
55770
  name: "deviceId",
55536
55771
  form: "single",
@@ -55541,6 +55776,11 @@ Object.freeze({
55541
55776
  form: "single",
55542
55777
  optional: false
55543
55778
  }],
55779
+ "intercom.getStatus": [{
55780
+ name: "deviceId",
55781
+ form: "single",
55782
+ optional: false
55783
+ }],
55544
55784
  "intercom.handleAnswer": [{
55545
55785
  name: "deviceId",
55546
55786
  form: "single",
@@ -55571,6 +55811,11 @@ Object.freeze({
55571
55811
  form: "single",
55572
55812
  optional: false
55573
55813
  }],
55814
+ "lawnMowerControl.getStatus": [{
55815
+ name: "deviceId",
55816
+ form: "single",
55817
+ optional: false
55818
+ }],
55574
55819
  "lawnMowerControl.pause": [{
55575
55820
  name: "deviceId",
55576
55821
  form: "single",
@@ -55581,6 +55826,11 @@ Object.freeze({
55581
55826
  form: "single",
55582
55827
  optional: false
55583
55828
  }],
55829
+ "lockControl.getStatus": [{
55830
+ name: "deviceId",
55831
+ form: "single",
55832
+ optional: false
55833
+ }],
55584
55834
  "lockControl.lock": [{
55585
55835
  name: "deviceId",
55586
55836
  form: "single",
@@ -55596,6 +55846,11 @@ Object.freeze({
55596
55846
  form: "single",
55597
55847
  optional: false
55598
55848
  }],
55849
+ "mediaPlayer.getStatus": [{
55850
+ name: "deviceId",
55851
+ form: "single",
55852
+ optional: false
55853
+ }],
55599
55854
  "mediaPlayer.next": [{
55600
55855
  name: "deviceId",
55601
55856
  form: "single",
@@ -55656,6 +55911,11 @@ Object.freeze({
55656
55911
  form: "single",
55657
55912
  optional: false
55658
55913
  }],
55914
+ "motion.getStatus": [{
55915
+ name: "deviceId",
55916
+ form: "single",
55917
+ optional: false
55918
+ }],
55659
55919
  "motion.isDetected": [{
55660
55920
  name: "deviceId",
55661
55921
  form: "single",
@@ -55666,11 +55926,31 @@ Object.freeze({
55666
55926
  form: "single",
55667
55927
  optional: false
55668
55928
  }],
55929
+ "motionDetection.applyDeviceSettingsPatch": [{
55930
+ name: "deviceId",
55931
+ form: "single",
55932
+ optional: false
55933
+ }],
55934
+ "motionDetection.getDeviceLiveContribution": [{
55935
+ name: "deviceId",
55936
+ form: "single",
55937
+ optional: false
55938
+ }],
55939
+ "motionDetection.getDeviceSettingsContribution": [{
55940
+ name: "deviceId",
55941
+ form: "single",
55942
+ optional: false
55943
+ }],
55669
55944
  "motionDetection.removeCamera": [{
55670
55945
  name: "deviceId",
55671
55946
  form: "single",
55672
55947
  optional: false
55673
55948
  }],
55949
+ "motionTrigger.getStatus": [{
55950
+ name: "deviceId",
55951
+ form: "single",
55952
+ optional: false
55953
+ }],
55674
55954
  "motionTrigger.setMotionTrigger": [{
55675
55955
  name: "deviceId",
55676
55956
  form: "single",
@@ -55681,6 +55961,11 @@ Object.freeze({
55681
55961
  form: "single",
55682
55962
  optional: false
55683
55963
  }],
55964
+ "motionZones.getStatus": [{
55965
+ name: "deviceId",
55966
+ form: "single",
55967
+ optional: false
55968
+ }],
55684
55969
  "motionZones.setZone": [{
55685
55970
  name: "deviceId",
55686
55971
  form: "single",
@@ -55691,6 +55976,11 @@ Object.freeze({
55691
55976
  form: "single",
55692
55977
  optional: false
55693
55978
  }],
55979
+ "nativeObjectDetection.getStatus": [{
55980
+ name: "deviceId",
55981
+ form: "single",
55982
+ optional: false
55983
+ }],
55694
55984
  "nativeObjectDetection.setEnabled": [{
55695
55985
  name: "deviceId",
55696
55986
  form: "single",
@@ -55706,6 +55996,11 @@ Object.freeze({
55706
55996
  form: "single",
55707
55997
  optional: false
55708
55998
  }],
55999
+ "navigation.getStatus": [{
56000
+ name: "deviceId",
56001
+ form: "single",
56002
+ optional: false
56003
+ }],
55709
56004
  "navigation.goToPoint": [{
55710
56005
  name: "deviceId",
55711
56006
  form: "single",
@@ -55751,6 +56046,11 @@ Object.freeze({
55751
56046
  form: "single",
55752
56047
  optional: false
55753
56048
  }],
56049
+ "networkLink.getStatus": [{
56050
+ name: "deviceId",
56051
+ form: "single",
56052
+ optional: false
56053
+ }],
55754
56054
  "networkQuality.getDeviceStats": [{
55755
56055
  name: "deviceId",
55756
56056
  form: "single",
@@ -55776,11 +56076,26 @@ Object.freeze({
55776
56076
  form: "single",
55777
56077
  optional: false
55778
56078
  }],
56079
+ "notifier.getStatus": [{
56080
+ name: "deviceId",
56081
+ form: "single",
56082
+ optional: false
56083
+ }],
55779
56084
  "notifier.send": [{
55780
56085
  name: "deviceId",
55781
56086
  form: "single",
55782
56087
  optional: false
55783
56088
  }],
56089
+ "numericSensor.getStatus": [{
56090
+ name: "deviceId",
56091
+ form: "single",
56092
+ optional: false
56093
+ }],
56094
+ "osd.getStatus": [{
56095
+ name: "deviceId",
56096
+ form: "single",
56097
+ optional: false
56098
+ }],
55784
56099
  "osd.setOverlay": [{
55785
56100
  name: "deviceId",
55786
56101
  form: "single",
@@ -55840,6 +56155,11 @@ Object.freeze({
55840
56155
  form: "single",
55841
56156
  optional: false
55842
56157
  }],
56158
+ "petFeeder.getStatus": [{
56159
+ name: "deviceId",
56160
+ form: "single",
56161
+ optional: false
56162
+ }],
55843
56163
  "petFeeder.markFoodReplenished": [{
55844
56164
  name: "deviceId",
55845
56165
  form: "single",
@@ -55875,6 +56195,11 @@ Object.freeze({
55875
56195
  form: "single",
55876
56196
  optional: false
55877
56197
  }],
56198
+ "pipelineAnalytics.applyDeviceSettingsPatch": [{
56199
+ name: "deviceId",
56200
+ form: "single",
56201
+ optional: false
56202
+ }],
55878
56203
  "pipelineAnalytics.clearTrackRelation": [{
55879
56204
  name: "deviceId",
55880
56205
  form: "single",
@@ -55915,6 +56240,16 @@ Object.freeze({
55915
56240
  form: "single",
55916
56241
  optional: false
55917
56242
  }],
56243
+ "pipelineAnalytics.getDeviceLiveContribution": [{
56244
+ name: "deviceId",
56245
+ form: "single",
56246
+ optional: false
56247
+ }],
56248
+ "pipelineAnalytics.getDeviceSettingsContribution": [{
56249
+ name: "deviceId",
56250
+ form: "single",
56251
+ optional: false
56252
+ }],
55918
56253
  "pipelineAnalytics.getEventDensity": [{
55919
56254
  name: "deviceId",
55920
56255
  form: "single",
@@ -56130,6 +56465,11 @@ Object.freeze({
56130
56465
  form: "single",
56131
56466
  optional: true
56132
56467
  }],
56468
+ "pipelineOrchestrator.applyDeviceSettingsPatch": [{
56469
+ name: "deviceId",
56470
+ form: "single",
56471
+ optional: false
56472
+ }],
56133
56473
  "pipelineOrchestrator.assignAudio": [{
56134
56474
  name: "deviceId",
56135
56475
  form: "single",
@@ -56175,6 +56515,16 @@ Object.freeze({
56175
56515
  form: "single",
56176
56516
  optional: false
56177
56517
  }],
56518
+ "pipelineOrchestrator.getDeviceLiveContribution": [{
56519
+ name: "deviceId",
56520
+ form: "single",
56521
+ optional: false
56522
+ }],
56523
+ "pipelineOrchestrator.getDeviceSettingsContribution": [{
56524
+ name: "deviceId",
56525
+ form: "single",
56526
+ optional: false
56527
+ }],
56178
56528
  "pipelineOrchestrator.getPipelineAssignment": [{
56179
56529
  name: "deviceId",
56180
56530
  form: "single",
@@ -56295,11 +56645,31 @@ Object.freeze({
56295
56645
  form: "single",
56296
56646
  optional: true
56297
56647
  }],
56648
+ "powerMeter.getStatus": [{
56649
+ name: "deviceId",
56650
+ form: "single",
56651
+ optional: false
56652
+ }],
56653
+ "presence.getStatus": [{
56654
+ name: "deviceId",
56655
+ form: "single",
56656
+ optional: false
56657
+ }],
56658
+ "pressureSensor.getStatus": [{
56659
+ name: "deviceId",
56660
+ form: "single",
56661
+ optional: false
56662
+ }],
56298
56663
  "privacyMask.getOptions": [{
56299
56664
  name: "deviceId",
56300
56665
  form: "single",
56301
56666
  optional: false
56302
56667
  }],
56668
+ "privacyMask.getStatus": [{
56669
+ name: "deviceId",
56670
+ form: "single",
56671
+ optional: false
56672
+ }],
56303
56673
  "privacyMask.setAudioEnabled": [{
56304
56674
  name: "deviceId",
56305
56675
  form: "single",
@@ -56350,6 +56720,11 @@ Object.freeze({
56350
56720
  form: "single",
56351
56721
  optional: false
56352
56722
  }],
56723
+ "ptz.getStatus": [{
56724
+ name: "deviceId",
56725
+ form: "single",
56726
+ optional: false
56727
+ }],
56353
56728
  "ptz.goHome": [{
56354
56729
  name: "deviceId",
56355
56730
  form: "single",
@@ -56440,6 +56815,11 @@ Object.freeze({
56440
56815
  form: "single",
56441
56816
  optional: false
56442
56817
  }],
56818
+ "recordingArchive.applyDeviceSettingsPatch": [{
56819
+ name: "deviceId",
56820
+ form: "single",
56821
+ optional: false
56822
+ }],
56443
56823
  "recordingArchive.deleteFootprint": [{
56444
56824
  name: "deviceId",
56445
56825
  form: "single",
@@ -56460,6 +56840,21 @@ Object.freeze({
56460
56840
  form: "single",
56461
56841
  optional: false
56462
56842
  }],
56843
+ "recordingArchive.getDeviceLiveContribution": [{
56844
+ name: "deviceId",
56845
+ form: "single",
56846
+ optional: false
56847
+ }],
56848
+ "recordingArchive.getDeviceSettingsContribution": [{
56849
+ name: "deviceId",
56850
+ form: "single",
56851
+ optional: false
56852
+ }],
56853
+ "recordingArchive.getStatus": [{
56854
+ name: "deviceId",
56855
+ form: "single",
56856
+ optional: false
56857
+ }],
56463
56858
  "recordingArchive.listOpsLog": [{
56464
56859
  name: "deviceId",
56465
56860
  form: "single",
@@ -56545,6 +56940,11 @@ Object.freeze({
56545
56940
  form: "single",
56546
56941
  optional: false
56547
56942
  }],
56943
+ "recordingOnboard.getStatus": [{
56944
+ name: "deviceId",
56945
+ form: "single",
56946
+ optional: false
56947
+ }],
56548
56948
  "recordingOnboard.setSettings": [{
56549
56949
  name: "deviceId",
56550
56950
  form: "single",
@@ -56575,6 +56975,11 @@ Object.freeze({
56575
56975
  form: "single",
56576
56976
  optional: false
56577
56977
  }],
56978
+ "sceneMonitor.getStatus": [{
56979
+ name: "deviceId",
56980
+ form: "single",
56981
+ optional: false
56982
+ }],
56578
56983
  "sceneMonitor.listScenes": [{
56579
56984
  name: "deviceId",
56580
56985
  form: "single",
@@ -56600,6 +57005,11 @@ Object.freeze({
56600
57005
  form: "single",
56601
57006
  optional: false
56602
57007
  }],
57008
+ "scriptRunner.getStatus": [{
57009
+ name: "deviceId",
57010
+ form: "single",
57011
+ optional: false
57012
+ }],
56603
57013
  "scriptRunner.run": [{
56604
57014
  name: "deviceId",
56605
57015
  form: "single",
@@ -56610,11 +57020,31 @@ Object.freeze({
56610
57020
  form: "single",
56611
57021
  optional: false
56612
57022
  }],
57023
+ "smoke.getStatus": [{
57024
+ name: "deviceId",
57025
+ form: "single",
57026
+ optional: false
57027
+ }],
57028
+ "snapshot.applyDeviceSettingsPatch": [{
57029
+ name: "deviceId",
57030
+ form: "single",
57031
+ optional: false
57032
+ }],
56613
57033
  "snapshot.getDebugState": [{
56614
57034
  name: "deviceId",
56615
57035
  form: "single",
56616
57036
  optional: false
56617
57037
  }],
57038
+ "snapshot.getDeviceLiveContribution": [{
57039
+ name: "deviceId",
57040
+ form: "single",
57041
+ optional: false
57042
+ }],
57043
+ "snapshot.getDeviceSettingsContribution": [{
57044
+ name: "deviceId",
57045
+ form: "single",
57046
+ optional: false
57047
+ }],
56618
57048
  "snapshot.getSnapshot": [{
56619
57049
  name: "deviceId",
56620
57050
  form: "single",
@@ -56631,6 +57061,11 @@ Object.freeze({
56631
57061
  form: "array",
56632
57062
  optional: false
56633
57063
  }],
57064
+ "snapshot.getStatus": [{
57065
+ name: "deviceId",
57066
+ form: "single",
57067
+ optional: false
57068
+ }],
56634
57069
  "snapshot.invalidateCache": [{
56635
57070
  name: "deviceId",
56636
57071
  form: "single",
@@ -56641,6 +57076,11 @@ Object.freeze({
56641
57076
  form: "single",
56642
57077
  optional: false
56643
57078
  }],
57079
+ "streamBroker.applyDeviceSettingsPatch": [{
57080
+ name: "deviceId",
57081
+ form: "single",
57082
+ optional: false
57083
+ }],
56644
57084
  "streamBroker.assignProfile": [{
56645
57085
  name: "deviceId",
56646
57086
  form: "single",
@@ -56656,6 +57096,16 @@ Object.freeze({
56656
57096
  form: "single",
56657
57097
  optional: false
56658
57098
  }],
57099
+ "streamBroker.getDeviceLiveContribution": [{
57100
+ name: "deviceId",
57101
+ form: "single",
57102
+ optional: false
57103
+ }],
57104
+ "streamBroker.getDeviceSettingsContribution": [{
57105
+ name: "deviceId",
57106
+ form: "single",
57107
+ optional: false
57108
+ }],
56659
57109
  "streamBroker.getStreamWithCodec": [{
56660
57110
  name: "deviceId",
56661
57111
  form: "single",
@@ -56716,16 +57166,46 @@ Object.freeze({
56716
57166
  form: "single",
56717
57167
  optional: false
56718
57168
  }],
57169
+ "streamParams.getStatus": [{
57170
+ name: "deviceId",
57171
+ form: "single",
57172
+ optional: false
57173
+ }],
56719
57174
  "streamParams.setProfile": [{
56720
57175
  name: "deviceId",
56721
57176
  form: "single",
56722
57177
  optional: false
56723
57178
  }],
57179
+ "switch.getStatus": [{
57180
+ name: "deviceId",
57181
+ form: "single",
57182
+ optional: false
57183
+ }],
56724
57184
  "switch.setState": [{
56725
57185
  name: "deviceId",
56726
57186
  form: "single",
56727
57187
  optional: false
56728
57188
  }],
57189
+ "tamper.getStatus": [{
57190
+ name: "deviceId",
57191
+ form: "single",
57192
+ optional: false
57193
+ }],
57194
+ "temperatureSensor.getStatus": [{
57195
+ name: "deviceId",
57196
+ form: "single",
57197
+ optional: false
57198
+ }],
57199
+ "update.getStatus": [{
57200
+ name: "deviceId",
57201
+ form: "single",
57202
+ optional: false
57203
+ }],
57204
+ "vacuumControl.getStatus": [{
57205
+ name: "deviceId",
57206
+ form: "single",
57207
+ optional: false
57208
+ }],
56729
57209
  "vacuumControl.locate": [{
56730
57210
  name: "deviceId",
56731
57211
  form: "single",
@@ -56761,6 +57241,11 @@ Object.freeze({
56761
57241
  form: "single",
56762
57242
  optional: false
56763
57243
  }],
57244
+ "valve.getStatus": [{
57245
+ name: "deviceId",
57246
+ form: "single",
57247
+ optional: false
57248
+ }],
56764
57249
  "valve.open": [{
56765
57250
  name: "deviceId",
56766
57251
  form: "single",
@@ -56776,6 +57261,11 @@ Object.freeze({
56776
57261
  form: "single",
56777
57262
  optional: false
56778
57263
  }],
57264
+ "vibration.getStatus": [{
57265
+ name: "deviceId",
57266
+ form: "single",
57267
+ optional: false
57268
+ }],
56779
57269
  "videoclips.dialClipStream": [{
56780
57270
  name: "deviceId",
56781
57271
  form: "single",
@@ -56811,6 +57301,11 @@ Object.freeze({
56811
57301
  form: "single",
56812
57302
  optional: false
56813
57303
  }],
57304
+ "waterHeater.getStatus": [{
57305
+ name: "deviceId",
57306
+ form: "single",
57307
+ optional: false
57308
+ }],
56814
57309
  "waterHeater.setAway": [{
56815
57310
  name: "deviceId",
56816
57311
  form: "single",
@@ -56826,6 +57321,11 @@ Object.freeze({
56826
57321
  form: "single",
56827
57322
  optional: false
56828
57323
  }],
57324
+ "weather.getStatus": [{
57325
+ name: "deviceId",
57326
+ form: "single",
57327
+ optional: false
57328
+ }],
56829
57329
  "webrtcSession.addIceCandidate": [{
56830
57330
  name: "deviceId",
56831
57331
  form: "single",
@@ -57863,7 +58363,7 @@ var PreviewTextField = z.string().max(200);
57863
58363
  * Whether the notification's preview is a STILL or a short animation.
57864
58364
  *
57865
58365
  * The operator's ask, verbatim: *"inviato come gif o video (come per le altre
57866
- * rule)"* — the other rules already offer an animated preview, and a ten-hour
58366
+ * rule)"* [sent as a gif or video (as for the other rules)] — the other rules already offer an animated preview, and a ten-hour
57867
58367
  * night reads better as three seconds of motion than as one frame of it. Both
57868
58368
  * modes get the SAME treatment (blurred frame, large centred title); `'gif'`
57869
58369
  * simply applies it to a dozen frames sampled across the render and assembles