@camstack/addon-post-analysis 1.2.208 → 1.2.210

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.
@@ -7823,6 +7823,85 @@ var CameraSwitchGroupSchema = object({
7823
7823
  */
7824
7824
  var DETECTION_PIPELINE_CAP_NAME = "detection-pipeline";
7825
7825
  /**
7826
+ * Debug-note archive — the durable corpus of what operators asked to be
7827
+ * checked, and the ONE thing about a debug note that outlives its track.
7828
+ *
7829
+ * D353 bound `debugNote` to the `debug` flag: turning the flag off clears the
7830
+ * note in the same statement, so a track can never present a question without
7831
+ * the flag that explains it. That invariant is right and stays. Its side
7832
+ * effect was not: the act of REVIEWING a debug set destroyed every note in it,
7833
+ * and the notes that survived a sweep aged out with their tracks anyway. On
7834
+ * 2026-09-08 the notes from one morning's review — 25 to 27 of them — were
7835
+ * already unreadable by the afternoon, leaving 11.
7836
+ *
7837
+ * So the clear now ARCHIVES first (D405). A row here is:
7838
+ *
7839
+ * - written ONLY by the hub, from `applyTrackFlags`, immediately before the
7840
+ * note is cleared off the track row;
7841
+ * - keyed by ITS OWN id, derived from `(sourceTrackId, note)` so reviewing
7842
+ * the same track twice cannot double the corpus;
7843
+ * - NOT a track row, NOT subject to track retention, and NOT a durability pin
7844
+ * on anything — the track it names is expected to be gone.
7845
+ *
7846
+ * `sourceTrackId` is deliberately not called `trackId`. The analytics
7847
+ * retention model derives track OWNERSHIP from a declared `trackId` column
7848
+ * (`collection-classification.ts`), and a row that the cascade would delete
7849
+ * with its track is exactly the row this table exists to keep. The name says
7850
+ * PROVENANCE — the same distinction the stationary registry draws for the same
7851
+ * reason.
7852
+ */
7853
+ /**
7854
+ * How many archived notes the cluster keeps, across every camera.
7855
+ *
7856
+ * GLOBAL, not per-device, and a COUNT, not an age. Both halves are deliberate:
7857
+ *
7858
+ * - A per-device bound multiplies by the fleet — 30 cameras at 500 each is
7859
+ * 15 000 rows to protect a corpus that only ever gets read fleet-wide (the
7860
+ * thing being mined is "what keeps going wrong", not "what goes wrong on
7861
+ * 617"). One global ceiling is one number to reason about.
7862
+ * - An AGE bound would delete the corpus for being old, which is the failure
7863
+ * being fixed: a note from six months ago is the most valuable row in the
7864
+ * table precisely because the pattern it describes has had time to repeat.
7865
+ *
7866
+ * The number is sized off the measured rate. The 2026-09-08 sweep produced
7867
+ * 25–27 notes; call a heavy day 100. 5 000 rows is roughly fifty such days,
7868
+ * and at the observed rate (a few sweeps a week) several years. The cost is
7869
+ * bounded by construction: a note is capped at `MAX_TRACK_DEBUG_NOTE_LEN`
7870
+ * (500 chars) and the metadata beside it is under 100 bytes, so the ceiling is
7871
+ * ~3 MB of text and the realistic occupancy is well under 1 MB — against a
7872
+ * `tracks` table measured at 4.6 MB for a single 501-row page.
7873
+ */
7874
+ var MAX_ARCHIVED_DEBUG_NOTES = 5e3;
7875
+ /** One archived note — the operator's words plus enough context to find what
7876
+ * they were looking at, after the track itself is gone. */
7877
+ var ArchivedDebugNoteSchema = object({
7878
+ /** Archive row id. Derived from `(sourceTrackId, note)`, so re-archiving the
7879
+ * same sentence about the same track lands on the row already there. */
7880
+ id: string(),
7881
+ /** The operator's own words, verbatim. */
7882
+ note: string(),
7883
+ /** The camera. Required — every question here is asked per-camera. */
7884
+ deviceId: number().int(),
7885
+ /** The track the note was written on. PROVENANCE, not ownership: the track
7886
+ * is expected to be gone, and this row is not a reference to it. */
7887
+ sourceTrackId: string(),
7888
+ /** Epoch ms the note was moved here, i.e. when the operator reviewed it. */
7889
+ archivedAt: number().int(),
7890
+ /** The track's `firstSeen`, when the row still knew it; `null` otherwise. */
7891
+ trackStartedAt: number().int().nullable(),
7892
+ /** The track's detector class (`person`, `car`, …); `null` when unknown. */
7893
+ trackClass: string().nullable(),
7894
+ /** The track's display label at review time; `null` when it had none. */
7895
+ trackLabel: string().nullable()
7896
+ });
7897
+ /** Query input for `listArchivedDebugNotes` — newest first, one camera or all. */
7898
+ var ArchivedDebugNoteQueryInputSchema = object({
7899
+ /** Restrict to a single camera; omit for every row. */
7900
+ deviceId: number().int().optional(),
7901
+ /** Max rows returned, newest-first. */
7902
+ limit: number().int().min(1).max(1e3).optional()
7903
+ });
7904
+ /**
7826
7905
  * Ops-log — the durable, append-only operations audit shared by the
7827
7906
  * recordings and events management surfaces.
7828
7907
  *
@@ -16569,14 +16648,14 @@ var alarmPanelCapability = {
16569
16648
  code: string().min(1).optional()
16570
16649
  }), _void(), {
16571
16650
  kind: "mutation",
16572
- auth: "admin"
16651
+ auth: "protected"
16573
16652
  }),
16574
16653
  disarm: method(object({
16575
16654
  deviceId: number().int().nonnegative(),
16576
16655
  code: string().min(1).optional()
16577
16656
  }), _void(), {
16578
16657
  kind: "mutation",
16579
- auth: "admin"
16658
+ auth: "protected"
16580
16659
  }),
16581
16660
  /**
16582
16661
  * Force the panel into the `triggered` state — used by HA
@@ -16587,7 +16666,7 @@ var alarmPanelCapability = {
16587
16666
  */
16588
16667
  trigger: method(object({ deviceId: number().int().nonnegative() }), _void(), {
16589
16668
  kind: "mutation",
16590
- auth: "admin"
16669
+ auth: "protected"
16591
16670
  })
16592
16671
  },
16593
16672
  status: {
@@ -21358,6 +21437,31 @@ var pipelineAnalyticsCapability = {
21358
21437
  flags: TrackFlagsPatchSchema
21359
21438
  }), TrackFlagsSchema, { kind: "mutation" }),
21360
21439
  /**
21440
+ * The archived debug notes, newest first — the corpus of what operators
21441
+ * have asked to be checked, across tracks that no longer exist (D405).
21442
+ *
21443
+ * `setTrackFlags` writes it: a patch carrying `debug: false` still clears
21444
+ * the note off the track row in the same statement (D353's invariant is
21445
+ * untouched), but the note is APPENDED here first. That is the whole point
21446
+ * — before D405, finishing a review destroyed every note written during it,
21447
+ * and the ones that survived aged out with their tracks. This method is the
21448
+ * only way to read what was kept.
21449
+ *
21450
+ * `auth: 'protected'`, matching `setTrackFlags` next door and for the same
21451
+ * reason: the notes are written from the viewer, by an authenticated
21452
+ * non-admin session, and a corpus only an admin can read is a corpus the
21453
+ * person who wrote it cannot use. It carries operator prose about cameras
21454
+ * and nothing else — no media, no paths, no identities beyond a track's
21455
+ * own display label.
21456
+ *
21457
+ * Newest-first, capped by `limit` (default
21458
+ * {@link ARCHIVED_DEBUG_NOTES_DEFAULT_LIMIT}), optionally one camera. The
21459
+ * table itself is bounded by row count, not by age — see
21460
+ * {@link MAX_ARCHIVED_DEBUG_NOTES} for why an age clock would be the wrong
21461
+ * bound for exactly this data.
21462
+ */
21463
+ listArchivedDebugNotes: method(ArchivedDebugNoteQueryInputSchema, array(ArchivedDebugNoteSchema).readonly(), { kind: "query" }),
21464
+ /**
21361
21465
  * Durable event-store footprint for the management UI: event rows
21362
21466
  * (motion + object + audio) counted per camera + total, plus the
21363
21467
  * event-owned media bytes on disk per camera + total. Stat/count-based,
@@ -25764,7 +25868,7 @@ var brightnessCapability = {
25764
25868
  percentage: number().min(0).max(100)
25765
25869
  }), _void(), {
25766
25870
  kind: "mutation",
25767
- auth: "admin"
25871
+ auth: "protected"
25768
25872
  }) },
25769
25873
  events: {
25770
25874
  /**
@@ -25797,7 +25901,7 @@ onBrightnessChanged: { data: object({
25797
25901
  };
25798
25902
  DeviceType.Button, method(object({ deviceId: number().int().nonnegative() }), _void(), {
25799
25903
  kind: "mutation",
25800
- auth: "admin"
25904
+ auth: "protected"
25801
25905
  });
25802
25906
  /**
25803
25907
  * camera-credentials — device-scoped cap exposing the camera's network
@@ -25989,28 +26093,28 @@ var climateControlCapability = {
25989
26093
  mode: HvacModeSchema
25990
26094
  }), _void(), {
25991
26095
  kind: "mutation",
25992
- auth: "admin"
26096
+ auth: "protected"
25993
26097
  }),
25994
26098
  setFanMode: method(object({
25995
26099
  deviceId: number().int().nonnegative(),
25996
26100
  fanMode: string().min(1)
25997
26101
  }), _void(), {
25998
26102
  kind: "mutation",
25999
- auth: "admin"
26103
+ auth: "protected"
26000
26104
  }),
26001
26105
  setPreset: method(object({
26002
26106
  deviceId: number().int().nonnegative(),
26003
26107
  preset: string().min(1)
26004
26108
  }), _void(), {
26005
26109
  kind: "mutation",
26006
- auth: "admin"
26110
+ auth: "protected"
26007
26111
  }),
26008
26112
  setTarget: method(object({
26009
26113
  deviceId: number().int().nonnegative(),
26010
26114
  target: number()
26011
26115
  }), _void(), {
26012
26116
  kind: "mutation",
26013
- auth: "admin"
26117
+ auth: "protected"
26014
26118
  }),
26015
26119
  setTargetRange: method(object({
26016
26120
  deviceId: number().int().nonnegative(),
@@ -26018,28 +26122,28 @@ var climateControlCapability = {
26018
26122
  targetHigh: number()
26019
26123
  }), _void(), {
26020
26124
  kind: "mutation",
26021
- auth: "admin"
26125
+ auth: "protected"
26022
26126
  }),
26023
26127
  setTargetHumidity: method(object({
26024
26128
  deviceId: number().int().nonnegative(),
26025
26129
  targetHumidity: number().min(0).max(100)
26026
26130
  }), _void(), {
26027
26131
  kind: "mutation",
26028
- auth: "admin"
26132
+ auth: "protected"
26029
26133
  }),
26030
26134
  setSwingVertical: method(object({
26031
26135
  deviceId: number().int().nonnegative(),
26032
26136
  on: boolean()
26033
26137
  }), _void(), {
26034
26138
  kind: "mutation",
26035
- auth: "admin"
26139
+ auth: "protected"
26036
26140
  }),
26037
26141
  setSwingHorizontal: method(object({
26038
26142
  deviceId: number().int().nonnegative(),
26039
26143
  on: boolean()
26040
26144
  }), _void(), {
26041
26145
  kind: "mutation",
26042
- auth: "admin"
26146
+ auth: "protected"
26043
26147
  })
26044
26148
  },
26045
26149
  status: {
@@ -26139,7 +26243,7 @@ var colorCapability = {
26139
26243
  color: ColorInputSchema
26140
26244
  }), _void(), {
26141
26245
  kind: "mutation",
26142
- auth: "admin"
26246
+ auth: "protected"
26143
26247
  }) },
26144
26248
  events: {
26145
26249
  /**
@@ -26468,7 +26572,7 @@ var controlCapability = {
26468
26572
  control: ControlSetValueInputSchema
26469
26573
  }), _void(), {
26470
26574
  kind: "mutation",
26471
- auth: "admin"
26575
+ auth: "protected"
26472
26576
  }) },
26473
26577
  status: {
26474
26578
  schema: ControlStatusSchema,
@@ -26514,29 +26618,29 @@ var coverCapability = {
26514
26618
  methods: {
26515
26619
  open: method(object({ deviceId: number().int().nonnegative() }), _void(), {
26516
26620
  kind: "mutation",
26517
- auth: "admin"
26621
+ auth: "protected"
26518
26622
  }),
26519
26623
  close: method(object({ deviceId: number().int().nonnegative() }), _void(), {
26520
26624
  kind: "mutation",
26521
- auth: "admin"
26625
+ auth: "protected"
26522
26626
  }),
26523
26627
  stop: method(object({ deviceId: number().int().nonnegative() }), _void(), {
26524
26628
  kind: "mutation",
26525
- auth: "admin"
26629
+ auth: "protected"
26526
26630
  }),
26527
26631
  setPosition: method(object({
26528
26632
  deviceId: number().int().nonnegative(),
26529
26633
  position: number().min(0).max(100)
26530
26634
  }), _void(), {
26531
26635
  kind: "mutation",
26532
- auth: "admin"
26636
+ auth: "protected"
26533
26637
  }),
26534
26638
  setTiltPosition: method(object({
26535
26639
  deviceId: number().int().nonnegative(),
26536
26640
  tiltPosition: number().min(0).max(100)
26537
26641
  }), _void(), {
26538
26642
  kind: "mutation",
26539
- auth: "admin"
26643
+ auth: "protected"
26540
26644
  })
26541
26645
  },
26542
26646
  status: {
@@ -27358,28 +27462,28 @@ var fanControlCapability = {
27358
27462
  percentage: number().min(0).max(100)
27359
27463
  }), _void(), {
27360
27464
  kind: "mutation",
27361
- auth: "admin"
27465
+ auth: "protected"
27362
27466
  }),
27363
27467
  setPreset: method(object({
27364
27468
  deviceId: number().int().nonnegative(),
27365
27469
  preset: string().min(1)
27366
27470
  }), _void(), {
27367
27471
  kind: "mutation",
27368
- auth: "admin"
27472
+ auth: "protected"
27369
27473
  }),
27370
27474
  setDirection: method(object({
27371
27475
  deviceId: number().int().nonnegative(),
27372
27476
  direction: FanDirectionSchema
27373
27477
  }), _void(), {
27374
27478
  kind: "mutation",
27375
- auth: "admin"
27479
+ auth: "protected"
27376
27480
  }),
27377
27481
  setOscillating: method(object({
27378
27482
  deviceId: number().int().nonnegative(),
27379
27483
  oscillating: boolean()
27380
27484
  }), _void(), {
27381
27485
  kind: "mutation",
27382
- auth: "admin"
27486
+ auth: "protected"
27383
27487
  })
27384
27488
  },
27385
27489
  status: {
@@ -27601,21 +27705,21 @@ var humidifierCapability = {
27601
27705
  on: boolean()
27602
27706
  }), _void(), {
27603
27707
  kind: "mutation",
27604
- auth: "admin"
27708
+ auth: "protected"
27605
27709
  }),
27606
27710
  setTargetHumidity: method(object({
27607
27711
  deviceId: number().int().nonnegative(),
27608
27712
  humidity: number().min(0).max(100)
27609
27713
  }), _void(), {
27610
27714
  kind: "mutation",
27611
- auth: "admin"
27715
+ auth: "protected"
27612
27716
  }),
27613
27717
  setMode: method(object({
27614
27718
  deviceId: number().int().nonnegative(),
27615
27719
  mode: string().min(1)
27616
27720
  }), _void(), {
27617
27721
  kind: "mutation",
27618
- auth: "admin"
27722
+ auth: "protected"
27619
27723
  })
27620
27724
  },
27621
27725
  status: {
@@ -28316,15 +28420,15 @@ var lawnMowerControlCapability = {
28316
28420
  methods: {
28317
28421
  startMowing: method(object({ deviceId: number().int().nonnegative() }), _void(), {
28318
28422
  kind: "mutation",
28319
- auth: "admin"
28423
+ auth: "protected"
28320
28424
  }),
28321
28425
  pause: method(object({ deviceId: number().int().nonnegative() }), _void(), {
28322
28426
  kind: "mutation",
28323
- auth: "admin"
28427
+ auth: "protected"
28324
28428
  }),
28325
28429
  dock: method(object({ deviceId: number().int().nonnegative() }), _void(), {
28326
28430
  kind: "mutation",
28327
- auth: "admin"
28431
+ auth: "protected"
28328
28432
  })
28329
28433
  },
28330
28434
  status: {
@@ -28609,18 +28713,18 @@ var lockControlCapability = {
28609
28713
  code: string().min(1).optional()
28610
28714
  }), _void(), {
28611
28715
  kind: "mutation",
28612
- auth: "admin"
28716
+ auth: "protected"
28613
28717
  }),
28614
28718
  unlock: method(object({
28615
28719
  deviceId: number().int().nonnegative(),
28616
28720
  code: string().min(1).optional()
28617
28721
  }), _void(), {
28618
28722
  kind: "mutation",
28619
- auth: "admin"
28723
+ auth: "protected"
28620
28724
  }),
28621
28725
  open: method(object({ deviceId: number().int().nonnegative() }), _void(), {
28622
28726
  kind: "mutation",
28623
- auth: "admin"
28727
+ auth: "protected"
28624
28728
  })
28625
28729
  },
28626
28730
  status: {
@@ -28723,65 +28827,65 @@ var mediaPlayerCapability = {
28723
28827
  methods: {
28724
28828
  play: method(object({ deviceId: number().int().nonnegative() }), _void(), {
28725
28829
  kind: "mutation",
28726
- auth: "admin"
28830
+ auth: "protected"
28727
28831
  }),
28728
28832
  pause: method(object({ deviceId: number().int().nonnegative() }), _void(), {
28729
28833
  kind: "mutation",
28730
- auth: "admin"
28834
+ auth: "protected"
28731
28835
  }),
28732
28836
  stop: method(object({ deviceId: number().int().nonnegative() }), _void(), {
28733
28837
  kind: "mutation",
28734
- auth: "admin"
28838
+ auth: "protected"
28735
28839
  }),
28736
28840
  next: method(object({ deviceId: number().int().nonnegative() }), _void(), {
28737
28841
  kind: "mutation",
28738
- auth: "admin"
28842
+ auth: "protected"
28739
28843
  }),
28740
28844
  previous: method(object({ deviceId: number().int().nonnegative() }), _void(), {
28741
28845
  kind: "mutation",
28742
- auth: "admin"
28846
+ auth: "protected"
28743
28847
  }),
28744
28848
  seek: method(object({
28745
28849
  deviceId: number().int().nonnegative(),
28746
28850
  positionMs: number().int().nonnegative()
28747
28851
  }), _void(), {
28748
28852
  kind: "mutation",
28749
- auth: "admin"
28853
+ auth: "protected"
28750
28854
  }),
28751
28855
  setVolume: method(object({
28752
28856
  deviceId: number().int().nonnegative(),
28753
28857
  volumeLevel: number().min(0).max(100)
28754
28858
  }), _void(), {
28755
28859
  kind: "mutation",
28756
- auth: "admin"
28860
+ auth: "protected"
28757
28861
  }),
28758
28862
  setMute: method(object({
28759
28863
  deviceId: number().int().nonnegative(),
28760
28864
  muted: boolean()
28761
28865
  }), _void(), {
28762
28866
  kind: "mutation",
28763
- auth: "admin"
28867
+ auth: "protected"
28764
28868
  }),
28765
28869
  setShuffle: method(object({
28766
28870
  deviceId: number().int().nonnegative(),
28767
28871
  shuffle: boolean()
28768
28872
  }), _void(), {
28769
28873
  kind: "mutation",
28770
- auth: "admin"
28874
+ auth: "protected"
28771
28875
  }),
28772
28876
  setRepeat: method(object({
28773
28877
  deviceId: number().int().nonnegative(),
28774
28878
  repeat: MediaPlayerRepeatSchema
28775
28879
  }), _void(), {
28776
28880
  kind: "mutation",
28777
- auth: "admin"
28881
+ auth: "protected"
28778
28882
  }),
28779
28883
  selectSource: method(object({
28780
28884
  deviceId: number().int().nonnegative(),
28781
28885
  source: string().min(1)
28782
28886
  }), _void(), {
28783
28887
  kind: "mutation",
28784
- auth: "admin"
28888
+ auth: "protected"
28785
28889
  }),
28786
28890
  playMedia: method(object({
28787
28891
  deviceId: number().int().nonnegative(),
@@ -28792,7 +28896,7 @@ var mediaPlayerCapability = {
28792
28896
  mediaType: string().min(1)
28793
28897
  }), _void(), {
28794
28898
  kind: "mutation",
28795
- auth: "admin"
28899
+ auth: "protected"
28796
28900
  })
28797
28901
  },
28798
28902
  status: {
@@ -30385,27 +30489,27 @@ var petFeederCapability = {
30385
30489
  hopper2: gramsPortion.optional()
30386
30490
  }), _void(), {
30387
30491
  kind: "mutation",
30388
- auth: "admin"
30492
+ auth: "protected"
30389
30493
  }),
30390
30494
  /** Cancel an in-progress manual feed. */
30391
30495
  cancelFeed: method(object({ deviceId: number().int().nonnegative() }), _void(), {
30392
30496
  kind: "mutation",
30393
- auth: "admin"
30497
+ auth: "protected"
30394
30498
  }),
30395
30499
  /** Reset the desiccant "days remaining" counter after replacing it. */
30396
30500
  resetDesiccant: method(object({ deviceId: number().int().nonnegative() }), _void(), {
30397
30501
  kind: "mutation",
30398
- auth: "admin"
30502
+ auth: "protected"
30399
30503
  }),
30400
30504
  /** Mark a hopper as refilled (D4H/D4S/D4SH). */
30401
30505
  markFoodReplenished: method(object({ deviceId: number().int().nonnegative() }), _void(), {
30402
30506
  kind: "mutation",
30403
- auth: "admin"
30507
+ auth: "protected"
30404
30508
  }),
30405
30509
  /** Call the pet with the recorded prompt (D3). */
30406
30510
  callPet: method(object({ deviceId: number().int().nonnegative() }), _void(), {
30407
30511
  kind: "mutation",
30408
- auth: "admin"
30512
+ auth: "protected"
30409
30513
  }),
30410
30514
  /** Play a stored sound by id (D3 / D4H / D4SH). */
30411
30515
  playSound: method(object({
@@ -30413,7 +30517,7 @@ var petFeederCapability = {
30413
30517
  soundId: number().int().nonnegative()
30414
30518
  }), _void(), {
30415
30519
  kind: "mutation",
30416
- auth: "admin"
30520
+ auth: "protected"
30417
30521
  }),
30418
30522
  /** Toggle the child-lock (manual-lock) setting. */
30419
30523
  setChildLock: method(object({
@@ -30421,7 +30525,7 @@ var petFeederCapability = {
30421
30525
  on: boolean()
30422
30526
  }), _void(), {
30423
30527
  kind: "mutation",
30424
- auth: "admin"
30528
+ auth: "protected"
30425
30529
  }),
30426
30530
  /** Toggle the front indicator light. */
30427
30531
  setIndicatorLight: method(object({
@@ -30429,7 +30533,7 @@ var petFeederCapability = {
30429
30533
  on: boolean()
30430
30534
  }), _void(), {
30431
30535
  kind: "mutation",
30432
- auth: "admin"
30536
+ auth: "protected"
30433
30537
  }),
30434
30538
  /** Toggle the dispense chime. */
30435
30539
  setFeedSound: method(object({
@@ -30437,7 +30541,7 @@ var petFeederCapability = {
30437
30541
  on: boolean()
30438
30542
  }), _void(), {
30439
30543
  kind: "mutation",
30440
- auth: "admin"
30544
+ auth: "protected"
30441
30545
  }),
30442
30546
  /** Set the speaker / prompt volume level. */
30443
30547
  setVolume: method(object({
@@ -30445,7 +30549,7 @@ var petFeederCapability = {
30445
30549
  level: number().int().nonnegative()
30446
30550
  }), _void(), {
30447
30551
  kind: "mutation",
30448
- auth: "admin"
30552
+ auth: "protected"
30449
30553
  })
30450
30554
  },
30451
30555
  status: {
@@ -32800,7 +32904,7 @@ var switchCapability = {
32800
32904
  on: boolean()
32801
32905
  }), _void(), {
32802
32906
  kind: "mutation",
32803
- auth: "admin"
32907
+ auth: "protected"
32804
32908
  }) },
32805
32909
  events: { onStateChanged: { data: object({
32806
32910
  deviceId: number(),
@@ -33788,30 +33892,30 @@ var vacuumControlCapability = {
33788
33892
  methods: {
33789
33893
  start: method(object({ deviceId: number().int().nonnegative() }), _void(), {
33790
33894
  kind: "mutation",
33791
- auth: "admin"
33895
+ auth: "protected"
33792
33896
  }),
33793
33897
  pause: method(object({ deviceId: number().int().nonnegative() }), _void(), {
33794
33898
  kind: "mutation",
33795
- auth: "admin"
33899
+ auth: "protected"
33796
33900
  }),
33797
33901
  stop: method(object({ deviceId: number().int().nonnegative() }), _void(), {
33798
33902
  kind: "mutation",
33799
- auth: "admin"
33903
+ auth: "protected"
33800
33904
  }),
33801
33905
  returnToBase: method(object({ deviceId: number().int().nonnegative() }), _void(), {
33802
33906
  kind: "mutation",
33803
- auth: "admin"
33907
+ auth: "protected"
33804
33908
  }),
33805
33909
  locate: method(object({ deviceId: number().int().nonnegative() }), _void(), {
33806
33910
  kind: "mutation",
33807
- auth: "admin"
33911
+ auth: "protected"
33808
33912
  }),
33809
33913
  setFanSpeed: method(object({
33810
33914
  deviceId: number().int().nonnegative(),
33811
33915
  speed: string().min(1)
33812
33916
  }), _void(), {
33813
33917
  kind: "mutation",
33814
- auth: "admin"
33918
+ auth: "protected"
33815
33919
  })
33816
33920
  },
33817
33921
  status: {
@@ -33855,22 +33959,22 @@ var valveCapability = {
33855
33959
  methods: {
33856
33960
  open: method(object({ deviceId: number().int().nonnegative() }), _void(), {
33857
33961
  kind: "mutation",
33858
- auth: "admin"
33962
+ auth: "protected"
33859
33963
  }),
33860
33964
  close: method(object({ deviceId: number().int().nonnegative() }), _void(), {
33861
33965
  kind: "mutation",
33862
- auth: "admin"
33966
+ auth: "protected"
33863
33967
  }),
33864
33968
  stop: method(object({ deviceId: number().int().nonnegative() }), _void(), {
33865
33969
  kind: "mutation",
33866
- auth: "admin"
33970
+ auth: "protected"
33867
33971
  }),
33868
33972
  setPosition: method(object({
33869
33973
  deviceId: number().int().nonnegative(),
33870
33974
  position: number().min(0).max(100)
33871
33975
  }), _void(), {
33872
33976
  kind: "mutation",
33873
- auth: "admin"
33977
+ auth: "protected"
33874
33978
  })
33875
33979
  },
33876
33980
  status: {
@@ -33969,21 +34073,21 @@ var waterHeaterCapability = {
33969
34073
  temp: number().finite()
33970
34074
  }), _void(), {
33971
34075
  kind: "mutation",
33972
- auth: "admin"
34076
+ auth: "protected"
33973
34077
  }),
33974
34078
  setOperationMode: method(object({
33975
34079
  deviceId: number().int().nonnegative(),
33976
34080
  mode: string().min(1)
33977
34081
  }), _void(), {
33978
34082
  kind: "mutation",
33979
- auth: "admin"
34083
+ auth: "protected"
33980
34084
  }),
33981
34085
  setAway: method(object({
33982
34086
  deviceId: number().int().nonnegative(),
33983
34087
  on: boolean()
33984
34088
  }), _void(), {
33985
34089
  kind: "mutation",
33986
- auth: "admin"
34090
+ auth: "protected"
33987
34091
  })
33988
34092
  },
33989
34093
  status: {
@@ -39029,6 +39133,12 @@ Object.freeze({
39029
39133
  addonId: null,
39030
39134
  access: "view"
39031
39135
  },
39136
+ "pipelineAnalytics.listArchivedDebugNotes": {
39137
+ capName: "pipeline-analytics",
39138
+ capScope: "device",
39139
+ addonId: null,
39140
+ access: "view"
39141
+ },
39032
39142
  "pipelineAnalytics.listEventKinds": {
39033
39143
  capName: "pipeline-analytics",
39034
39144
  capScope: "device",
@@ -42816,6 +42926,11 @@ Object.freeze({
42816
42926
  form: "array",
42817
42927
  optional: true
42818
42928
  }],
42929
+ "pipelineAnalytics.listArchivedDebugNotes": [{
42930
+ name: "deviceId",
42931
+ form: "single",
42932
+ optional: true
42933
+ }],
42819
42934
  "pipelineAnalytics.listEventKinds": [{
42820
42935
  name: "deviceId",
42821
42936
  form: "single",
@@ -44742,4 +44857,4 @@ function vectorDimFromBase64(encoded) {
44742
44857
  return Math.floor(Buffer.from(encoded, "base64").byteLength / 4);
44743
44858
  }
44744
44859
  //#endregion
44745
- export { audioModeOf as $, EventCategory as $t, NcSnoozeSchema as A, vectorDimFromBase64 as At, SCENE_DEFAULT_UNCOVERED_POLICY as B, nodePin as Bt, NcConditionDescriptorSchema as C, readTimelapseGeneratedAt as Ct, NcRuleTargetSchema as D, storageOccupancyCapability as Dt, NcRuleSchema as E, sceneMonitorCapability as Et, PoolMemoryWatchdog as F, CamProfileSchema as Ft, TimelapseRulePatchSchema as G, discriminatedUnion as Gt, SceneMonitorSchema as H, _enum as Ht, RECORDING_EXPORT_MAX_READ_BYTES as I, DeviceType as It, VISIT_MERGE_GAP_MS as J, object as Jt, TimelapseRuleSchema as K, literal as Kt, RetrainStatusSchema as L, createEvent as Lt, NcSystemEventKindSchema as M, zoneAnalyticsCapability as Mt, NcTaxonomySchema as N, errMsg as Nt, NcScheduleSchema as O, subKindsOf as Ot, OpsLogEntrySchema as P, BaseAddon as Pt, audioMetricsCapability as Q, unknown as Qt, SCENE_CONFIRM_DEFAULT_TIMEOUT_MS as R, hydrateSchema as Rt, NC_TAXONOMY as S, readDeviceStateFrom as St, NcRulePatchSchema as T, resolvePoolMemoryPolicy as Tt, TIMELAPSE_DENSE_FLOOR_SEC as U, array as Ut, SCENE_DIVERGED as V, sleep as Vt, TimelapseRuleInputSchema as W, boolean as Wt, alarmPanelCapability as X, record as Xt, addonWidgetsSourceCapability as Y, partialRecord as Yt, assertTimelapseCadences as Z, string as Zt, MediaFileKindEnum as _, notificationRulesCapability as _t, DEFAULT_EVENT_COLOR as a, embeddingEncoderCapability as at, NC_DEFAULT_SNOOZE_MINUTES as b, pipelineAnalyticsCapability as bt, DETECTION_MACRO_CLASSES as c, evictionPolicyOfLocation as ct, EVENT_KIND_BY_CAP as d, hfModelUrl as dt, buildEventKindDescriptor as et, EVENT_PAD_MS as f, isDetectionMacroClass as ft, MACRO_LABELS as g, mayWriteToLocation as gt, LabelAttributionSchema as h, kebabToCamel as ht, COCO_TO_MACRO as i, deriveRecordingMode as it, NcSnoozeSuppressedSchema as j, videoclipsCapability as jt, NcSnoozeInputSchema as k, systemEventFilterApplies as kt, DETECTION_PIPELINE_CAP_NAME as l, faceGalleryCapability as lt, FailureCounters as m, isSourceCap as mt, BaseDevice as n, customAction as nt, DEFAULT_FIRST_SIGHTING_FRESHNESS_MS as o, encodeVectorBase64 as ot, FULL_IMAGE_BBOX as p, isScheduleActive as pt, TrackSourceSchema as q, number as qt, CLUSTER_MODEL_SCOPED_STEPS as r, defineCustomActions as rt, DEFAULT_TIMELAPSE_PREVIEW_TEXT as s, evaluateSensorEdge as st, AUDIO_MACRO_LABELS as t, cosineSimilarity as tt, DeclaredDevices as u, failureContributionCapability as ut, NC_ALARM_SYSTEM_EVENT_KINDS as v, parseProcStatus as vt, NcRuleInputSchema as w, resolveLocationMode as wt, NC_SNOOZE_MAX_MINUTES as x, plateGalleryCapability as xt, NC_CONDITION_CATALOG as y, pickClusterStepModels as yt, SCENE_DEFAULT_ANCHOR_THRESHOLD as z, isDeviceScopedCap as zt };
44860
+ export { assertTimelapseCadences as $, string as $t, NcScheduleSchema as A, subKindsOf as At, SCENE_CONFIRM_DEFAULT_TIMEOUT_MS as B, hydrateSchema as Bt, NC_SNOOZE_MAX_MINUTES as C, plateGalleryCapability as Ct, NcRulePatchSchema as D, resolvePoolMemoryPolicy as Dt, NcRuleInputSchema as E, resolveLocationMode as Et, NcTaxonomySchema as F, errMsg as Ft, TIMELAPSE_DENSE_FLOOR_SEC as G, array as Gt, SCENE_DEFAULT_UNCOVERED_POLICY as H, nodePin as Ht, OpsLogEntrySchema as I, BaseAddon as It, TimelapseRuleSchema as J, literal as Jt, TimelapseRuleInputSchema as K, boolean as Kt, PoolMemoryWatchdog as L, CamProfileSchema as Lt, NcSnoozeSchema as M, vectorDimFromBase64 as Mt, NcSnoozeSuppressedSchema as N, videoclipsCapability as Nt, NcRuleSchema as O, sceneMonitorCapability as Ot, NcSystemEventKindSchema as P, zoneAnalyticsCapability as Pt, alarmPanelCapability as Q, record as Qt, RECORDING_EXPORT_MAX_READ_BYTES as R, DeviceType as Rt, NC_DEFAULT_SNOOZE_MINUTES as S, pipelineAnalyticsCapability as St, NcConditionDescriptorSchema as T, readTimelapseGeneratedAt as Tt, SCENE_DIVERGED as U, sleep as Ut, SCENE_DEFAULT_ANCHOR_THRESHOLD as V, isDeviceScopedCap as Vt, SceneMonitorSchema as W, _enum as Wt, VISIT_MERGE_GAP_MS as X, object as Xt, TrackSourceSchema as Y, number as Yt, addonWidgetsSourceCapability as Z, partialRecord as Zt, MACRO_LABELS as _, kebabToCamel as _t, COCO_TO_MACRO as a, defineCustomActions as at, NC_ALARM_SYSTEM_EVENT_KINDS as b, parseProcStatus as bt, DEFAULT_TIMELAPSE_PREVIEW_TEXT as c, encodeVectorBase64 as ct, DeclaredDevices as d, faceGalleryCapability as dt, unknown as en, audioMetricsCapability as et, EVENT_KIND_BY_CAP as f, failureContributionCapability as ft, LabelAttributionSchema as g, isSourceCap as gt, FailureCounters as h, isScheduleActive as ht, CLUSTER_MODEL_SCOPED_STEPS as i, customAction as it, NcSnoozeInputSchema as j, systemEventFilterApplies as jt, NcRuleTargetSchema as k, storageOccupancyCapability as kt, DETECTION_MACRO_CLASSES as l, evaluateSensorEdge as lt, FULL_IMAGE_BBOX as m, isDetectionMacroClass as mt, ArchivedDebugNoteSchema as n, buildEventKindDescriptor as nt, DEFAULT_EVENT_COLOR as o, deriveRecordingMode as ot, EVENT_PAD_MS as p, hfModelUrl as pt, TimelapseRulePatchSchema as q, discriminatedUnion as qt, BaseDevice as r, cosineSimilarity as rt, DEFAULT_FIRST_SIGHTING_FRESHNESS_MS as s, embeddingEncoderCapability as st, AUDIO_MACRO_LABELS as t, EventCategory as tn, audioModeOf as tt, DETECTION_PIPELINE_CAP_NAME as u, evictionPolicyOfLocation as ut, MAX_ARCHIVED_DEBUG_NOTES as v, mayWriteToLocation as vt, NC_TAXONOMY as w, readDeviceStateFrom as wt, NC_CONDITION_CATALOG as x, pickClusterStepModels as xt, MediaFileKindEnum as y, notificationRulesCapability as yt, RetrainStatusSchema as z, createEvent as zt };