@camstack/addon-post-analysis 1.2.276 → 1.2.278

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.
@@ -5390,7 +5390,7 @@ var ZodIssueCode = {
5390
5390
  var ZodFirstPartyTypeKind;
5391
5391
  ZodFirstPartyTypeKind || (ZodFirstPartyTypeKind = {});
5392
5392
  //#endregion
5393
- //#region ../types/dist/sleep-pM_J7YnY.mjs
5393
+ //#region ../types/dist/sleep-D_4W7xuQ.mjs
5394
5394
  /**
5395
5395
  * The audio chunk plane's byte format, and the ONE expansion from a coded
5396
5396
  * window to float samples (D455).
@@ -7452,11 +7452,17 @@ var RawStateResultSchema = object({
7452
7452
  method(object({ deviceId: number() }), array(StreamSourceEntrySchema)), method(object({ deviceId: number() }), array(ConfigEntrySchema$1)), method(object({
7453
7453
  deviceId: number(),
7454
7454
  values: record(string(), unknown())
7455
- }), _void(), { kind: "mutation" }), method(object({
7455
+ }), _void(), {
7456
+ kind: "mutation",
7457
+ auth: "admin"
7458
+ }), method(object({
7456
7459
  deviceId: number(),
7457
7460
  action: string().min(1),
7458
7461
  input: unknown()
7459
- }), unknown(), { kind: "mutation" }), method(object({ deviceId: number() }), _void(), { kind: "mutation" }), method(object({ deviceId: number() }), unknown().nullable()), method(object({ deviceId: number() }), RawStateResultSchema.nullable(), { auth: "protected" });
7462
+ }), unknown(), { kind: "mutation" }), method(object({ deviceId: number() }), _void(), {
7463
+ kind: "mutation",
7464
+ auth: "admin"
7465
+ }), method(object({ deviceId: number() }), unknown().nullable()), method(object({ deviceId: number() }), RawStateResultSchema.nullable(), { auth: "protected" });
7460
7466
  /**
7461
7467
  * AUTO-GENERATED by scripts/generate-device-scoped-caps.ts — DO NOT EDIT.
7462
7468
  *
@@ -12190,7 +12196,7 @@ method(ListInputSchema, array(BrokerInfoSchema$1)), method(GetInputSchema, Broke
12190
12196
  }), method(UnsubscribeInputSchema, _void(), {
12191
12197
  kind: "mutation",
12192
12198
  auth: "admin"
12193
- }), method(GetStateInputSchema, unknown().nullable()), method(_void(), RegistryStatusSchema);
12199
+ }), method(GetStateInputSchema, unknown().nullable(), { auth: "admin" }), method(_void(), RegistryStatusSchema);
12194
12200
  DeviceType.Camera;
12195
12201
  /** Stream delivery format. (Relocated from the retired `streaming-engine` cap.) */
12196
12202
  var StreamFormatSchema = _enum([
@@ -13377,17 +13383,20 @@ method(object({
13377
13383
  namespace: string().optional(),
13378
13384
  collection: string(),
13379
13385
  key: string()
13380
- }), unknown()), method(object({
13386
+ }), unknown(), { auth: "admin" }), method(object({
13381
13387
  namespace: string().optional(),
13382
13388
  collection: string(),
13383
13389
  key: string(),
13384
13390
  value: unknown()
13385
- }), _void(), { kind: "mutation" }), method(object({
13391
+ }), _void(), {
13392
+ kind: "mutation",
13393
+ auth: "admin"
13394
+ }), method(object({
13386
13395
  namespace: string().optional(),
13387
13396
  collection: string(),
13388
13397
  filter: QueryFilterSchema.optional(),
13389
13398
  columns: array(string()).readonly().optional()
13390
- }), array(SettingsRecordSchema).readonly()), method(object({
13399
+ }), array(SettingsRecordSchema).readonly(), { auth: "admin" }), method(object({
13391
13400
  namespace: string().optional(),
13392
13401
  collection: string(),
13393
13402
  /** Declared columns identifying the slot; must be covered by a UNIQUE
@@ -13397,7 +13406,10 @@ method(object({
13397
13406
  }), object({
13398
13407
  /** The id the row HAS: assigned by SQLite on an insert, or the existing
13399
13408
  * row's own id on an update. */
13400
- id: union([string(), number()]) }), { kind: "mutation" }), method(object({
13409
+ id: union([string(), number()]) }), {
13410
+ kind: "mutation",
13411
+ auth: "admin"
13412
+ }), method(object({
13401
13413
  namespace: string().optional(),
13402
13414
  collection: string(),
13403
13415
  record: object({
@@ -13410,38 +13422,56 @@ id: union([string(), number()]) }), { kind: "mutation" }), method(object({
13410
13422
  * for an absent one, or the ROWID SQLite assigned on an `INTEGER`
13411
13423
  * primary key — which is the only place an auto key is knowable.
13412
13424
  */
13413
- id: union([string(), number()]) }), { kind: "mutation" }), method(object({
13425
+ id: union([string(), number()]) }), {
13426
+ kind: "mutation",
13427
+ auth: "admin"
13428
+ }), method(object({
13414
13429
  namespace: string().optional(),
13415
13430
  collection: string(),
13416
13431
  records: array(BulkRecordSchema).readonly()
13417
- }), object({ inserted: number().int() }), { kind: "mutation" }), method(object({
13432
+ }), object({ inserted: number().int() }), {
13433
+ kind: "mutation",
13434
+ auth: "admin"
13435
+ }), method(object({
13418
13436
  namespace: string().optional(),
13419
13437
  collection: string(),
13420
13438
  id: string(),
13421
13439
  data: record(string(), unknown())
13422
- }), _void(), { kind: "mutation" }), method(object({
13440
+ }), _void(), {
13441
+ kind: "mutation",
13442
+ auth: "admin"
13443
+ }), method(object({
13423
13444
  namespace: string().optional(),
13424
13445
  collection: string(),
13425
13446
  key: string()
13426
- }), _void(), { kind: "mutation" }), method(object({
13447
+ }), _void(), {
13448
+ kind: "mutation",
13449
+ auth: "admin"
13450
+ }), method(object({
13427
13451
  namespace: string().optional(),
13428
13452
  collection: string(),
13429
13453
  filter: MutationFilterSchema
13430
- }), object({ deleted: number().int() }), { kind: "mutation" }), method(object({
13454
+ }), object({ deleted: number().int() }), {
13455
+ kind: "mutation",
13456
+ auth: "admin"
13457
+ }), method(object({
13431
13458
  namespace: string().optional(),
13432
13459
  collection: string(),
13433
13460
  filter: MutationFilterSchema,
13434
13461
  data: record(string(), unknown())
13435
- }), object({ updated: number().int() }), { kind: "mutation" }), method(object({
13462
+ }), object({ updated: number().int() }), {
13463
+ kind: "mutation",
13464
+ auth: "admin"
13465
+ }), method(object({
13436
13466
  namespace: string().optional(),
13437
13467
  collection: string(),
13438
13468
  filter: QueryFilterSchema.optional()
13439
- }), number()), method(object({
13469
+ }), number(), { auth: "admin" }), method(object({
13440
13470
  namespace: string().optional(),
13441
13471
  collection: string(),
13442
13472
  fields: array(AggregateFieldSchema).readonly(),
13443
13473
  filter: QueryFilterSchema.optional()
13444
- }), AggregateResultSchema), method(object({
13474
+ }), AggregateResultSchema, { auth: "admin" }), method(object({
13445
13475
  namespace: string().optional(),
13446
13476
  collection: string(),
13447
13477
  field: string(),
@@ -13451,15 +13481,18 @@ id: union([string(), number()]) }), { kind: "mutation" }), method(object({
13451
13481
  }), array(object({
13452
13482
  bucket: number().int(),
13453
13483
  count: number().int()
13454
- })).readonly()), method(object({
13484
+ })).readonly(), { auth: "admin" }), method(object({
13455
13485
  namespace: string().optional(),
13456
13486
  collection: string()
13457
- }), boolean()), method(object({
13487
+ }), boolean(), { auth: "admin" }), method(object({
13458
13488
  namespace: string().optional(),
13459
13489
  collection: string(),
13460
13490
  columns: array(CollectionColumnSchema).readonly(),
13461
13491
  indexes: array(CollectionIndexSchema).readonly().optional()
13462
- }), _void(), { kind: "mutation" });
13492
+ }), _void(), {
13493
+ kind: "mutation",
13494
+ auth: "admin"
13495
+ });
13463
13496
  /**
13464
13497
  * What one engine says about itself. The orchestrator uses `kind` to pick
13465
13498
  * a registrant for a collection; `engineId` is what a log line names when
@@ -14250,7 +14283,13 @@ var ExposeInputSchema = object({
14250
14283
  capabilities: array(string()).optional()
14251
14284
  });
14252
14285
  var UnexposeInputSchema = object({ deviceId: string() });
14253
- method(_void(), DeviceExportStatusSchema), method(_void(), array(DeviceKindSchema)), method(_void(), array(ExposedDeviceSchema)), method(ExposeInputSchema, _void(), { kind: "mutation" }), method(UnexposeInputSchema, _void(), { kind: "mutation" });
14286
+ method(_void(), DeviceExportStatusSchema), method(_void(), array(DeviceKindSchema)), method(_void(), array(ExposedDeviceSchema)), method(ExposeInputSchema, _void(), {
14287
+ kind: "mutation",
14288
+ auth: "admin"
14289
+ }), method(UnexposeInputSchema, _void(), {
14290
+ kind: "mutation",
14291
+ auth: "admin"
14292
+ });
14254
14293
  /** Wire/storage schema for one icon id. */
14255
14294
  var LocationIconIdSchema = _enum([
14256
14295
  "map-pin",
@@ -14754,7 +14793,10 @@ method(object({
14754
14793
  kind: "mutation",
14755
14794
  auth: "admin",
14756
14795
  timeoutMs: 12 * 6e4
14757
- }), method(DeviceRegisterPayloadSchema, _void(), { kind: "mutation" }), method(DeviceRemovePayloadSchema, _void(), { kind: "mutation" }), method(DevicePersistConfigPayloadSchema, _void(), { kind: "mutation" }), method(object({ deviceId: number() }), record(string(), unknown())), method(object({ deviceId: number() }), record(string(), unknown())), method(object({ deviceId: number() }), DeviceMetaSchema.nullable()), method(object({
14796
+ }), method(DeviceRegisterPayloadSchema, _void(), { kind: "mutation" }), method(DeviceRemovePayloadSchema, _void(), { kind: "mutation" }), method(DevicePersistConfigPayloadSchema, _void(), {
14797
+ kind: "mutation",
14798
+ auth: "admin"
14799
+ }), method(object({ deviceId: number() }), record(string(), unknown()), { auth: "admin" }), method(object({ deviceId: number() }), record(string(), unknown()), { auth: "admin" }), method(object({ deviceId: number() }), DeviceMetaSchema.nullable()), method(object({
14758
14800
  deviceId: number(),
14759
14801
  name: string()
14760
14802
  }), _void(), {
@@ -14959,7 +15001,7 @@ method(object({
14959
15001
  }), method(object({ deviceId: number() }), array(StreamProbeResultSchema), {
14960
15002
  kind: "mutation",
14961
15003
  auth: "admin"
14962
- }), method(object({ deviceId: number() }), DeviceBindingsForDeviceSchema), method(object({ deviceIds: array(number()) }), array(DeviceBindingsForDeviceSchema)), method(object({}), array(DeviceBindingsForDeviceSchema)), method(object({
15004
+ }), method(object({ deviceId: number() }), DeviceBindingsForDeviceSchema), method(object({ deviceIds: array(number()) }), array(DeviceBindingsForDeviceSchema)), method(object({}), array(DeviceBindingsForDeviceSchema)), method(object({ capNames: array(string().min(1)).min(1).max(16) }), array(number())), method(object({
14963
15005
  deviceId: number(),
14964
15006
  capName: string(),
14965
15007
  wrapperAddonId: string(),
@@ -16542,7 +16584,22 @@ var StatusSchema = object({
16542
16584
  brokerCount: number(),
16543
16585
  embeddedRunning: boolean()
16544
16586
  });
16545
- method(_void(), array(BrokerInfoSchema)), method(IdInputSchema, BrokerConnectionDetailsSchema), method(AddBrokerInputSchema, AddBrokerResultSchema, { kind: "mutation" }), method(IdInputSchema, _void(), { kind: "mutation" }), method(IdInputSchema, TestResultSchema$1, { kind: "mutation" }), method(StartEmbeddedInputSchema, StartEmbeddedResultSchema, { kind: "mutation" }), method(IdInputSchema, _void(), { kind: "mutation" }), method(_void(), StatusSchema);
16587
+ method(_void(), array(BrokerInfoSchema)), method(IdInputSchema, BrokerConnectionDetailsSchema, { auth: "admin" }), method(AddBrokerInputSchema, AddBrokerResultSchema, {
16588
+ kind: "mutation",
16589
+ auth: "admin"
16590
+ }), method(IdInputSchema, _void(), {
16591
+ kind: "mutation",
16592
+ auth: "admin"
16593
+ }), method(IdInputSchema, TestResultSchema$1, {
16594
+ kind: "mutation",
16595
+ auth: "admin"
16596
+ }), method(StartEmbeddedInputSchema, StartEmbeddedResultSchema, {
16597
+ kind: "mutation",
16598
+ auth: "admin"
16599
+ }), method(IdInputSchema, _void(), {
16600
+ kind: "mutation",
16601
+ auth: "admin"
16602
+ }), method(_void(), StatusSchema);
16546
16603
  var NetworkEndpointSchema = object({
16547
16604
  url: string(),
16548
16605
  hostname: string(),
@@ -16837,6 +16894,18 @@ var TargetKindSchema = object({
16837
16894
  */
16838
16895
  iconMediaType: string().optional(),
16839
16896
  configSchema: ConfigSchemaPassthrough,
16897
+ /**
16898
+ * The config keys that decide WHERE this kind's secrets are sent (server,
16899
+ * base URL, instance, chat, recipient). A save that changes any of them
16900
+ * while leaving a secret redacted is refused by the provider (D634), so an
16901
+ * editor uses this to ask for the secret on exactly those edits instead of
16902
+ * on every edit.
16903
+ *
16904
+ * Optional: absent from a provider that holds no secret (the Home Assistant
16905
+ * kinds) and from a provider older than this field — an editor that finds
16906
+ * it absent must assume ANY edit may need the secret.
16907
+ */
16908
+ destinationKeys: array(string()).optional(),
16840
16909
  supportsDiscovery: boolean(),
16841
16910
  caps: TargetKindCapsSchema
16842
16911
  });
@@ -16875,19 +16944,34 @@ var SendResultSchema = object({
16875
16944
  });
16876
16945
  /** Same shape as SendResult — kept as a distinct name for the test panel. */
16877
16946
  var TestResultSchema = SendResultSchema;
16878
- method(object({}), array(TargetKindSchema)), method(object({}), array(TargetSchema)), method(object({
16947
+ method(object({}), array(TargetKindSchema)), method(object({}), array(TargetSchema), { auth: "admin" }), method(object({
16879
16948
  kind: string(),
16880
16949
  config: record(string(), unknown()).optional()
16881
- }), array(DiscoveredTargetSchema)), method(object({
16950
+ }), array(DiscoveredTargetSchema), { auth: "admin" }), method(object({
16882
16951
  targetId: string(),
16883
16952
  notification: NotificationSchema
16884
- }), SendResultSchema, { kind: "mutation" }), method(object({
16953
+ }), SendResultSchema, {
16954
+ kind: "mutation",
16955
+ auth: "admin"
16956
+ }), method(object({
16885
16957
  targetId: string(),
16886
16958
  sample: NotificationSchema.optional()
16887
- }), TestResultSchema, { kind: "mutation" }), method(object({ target: TargetSchema }), TargetSchema, { kind: "mutation" }), method(object({ targetId: string() }), _void(), { kind: "mutation" }), method(object({
16959
+ }), TestResultSchema, {
16960
+ kind: "mutation",
16961
+ auth: "admin"
16962
+ }), method(object({ target: TargetSchema }), TargetSchema, {
16963
+ kind: "mutation",
16964
+ auth: "admin"
16965
+ }), method(object({ targetId: string() }), _void(), {
16966
+ kind: "mutation",
16967
+ auth: "admin"
16968
+ }), method(object({
16888
16969
  targetId: string(),
16889
16970
  enabled: boolean()
16890
- }), _void(), { kind: "mutation" });
16971
+ }), _void(), {
16972
+ kind: "mutation",
16973
+ auth: "admin"
16974
+ });
16891
16975
  /**
16892
16976
  * The class names a per-class COUNT can ever be keyed on — the macro ids, and
16893
16977
  * only those.
@@ -17822,6 +17906,19 @@ var NcSystemEventConditionSchema = object({
17822
17906
  * does not carry) matches no `deviceTypes` list.
17823
17907
  */
17824
17908
  deviceTypes: array(string().min(1)).min(1).optional(),
17909
+ /**
17910
+ * Devices this rule NEVER speaks about, whatever else matched. Scoped to the
17911
+ * same kind family as `deviceIds` (`systemEventFilterApplies(kind,
17912
+ * 'deviceIds')`) and applied AFTER it: include first, then exclude. A
17913
+ * consumable subject (`consumable:<id>:<key>`) is excluded by its device id.
17914
+ *
17915
+ * It never fails closed: a subject that carries no device id is not in the
17916
+ * list, so it is not excluded. "Every battery except the one thermometer that
17917
+ * reads 0 % forever" is the question this answers — expressed as an include
17918
+ * list it would have to name every other battery device, and every device
17919
+ * adopted later would be silently left out (D636).
17920
+ */
17921
+ excludeDeviceIds: array(number().int()).min(1).optional(),
17825
17922
  nodeIds: array(string().min(1)).min(1).optional(),
17826
17923
  packageNames: array(string().min(1)).min(1).optional()
17827
17924
  });
@@ -19030,6 +19127,14 @@ var NC_CONDITION_CATALOG = [
19030
19127
  value: "server-updated",
19031
19128
  label: "Server updated"
19032
19129
  },
19130
+ {
19131
+ value: "device-battery-low",
19132
+ label: "Battery low"
19133
+ },
19134
+ {
19135
+ value: "device-battery-normal",
19136
+ label: "Battery back to normal"
19137
+ },
19033
19138
  {
19034
19139
  value: "device-consumable-low",
19035
19140
  label: "Consumable low"
@@ -25745,41 +25850,65 @@ var ProviderListEntrySchema = discriminatedUnion("shouldSaveDiskSpace", [object(
25745
25850
  method(object({
25746
25851
  location: StorageLocationRefSchema,
25747
25852
  relativePath: string()
25748
- }), string()), method(object({
25853
+ }), string(), { auth: "admin" }), method(object({
25749
25854
  location: StorageLocationRefSchema,
25750
25855
  relativePath: string(),
25751
25856
  data: _instanceof(Uint8Array)
25752
- }), _void(), { kind: "mutation" }), method(object({
25857
+ }), _void(), {
25858
+ kind: "mutation",
25859
+ auth: "admin"
25860
+ }), method(object({
25753
25861
  location: StorageLocationRefSchema,
25754
25862
  relativePath: string()
25755
- }), _instanceof(Uint8Array)), method(object({
25863
+ }), _instanceof(Uint8Array), { auth: "admin" }), method(object({
25756
25864
  location: StorageLocationRefSchema,
25757
25865
  relativePath: string()
25758
- }), boolean()), method(object({
25866
+ }), boolean(), { auth: "admin" }), method(object({
25759
25867
  location: StorageLocationRefSchema,
25760
25868
  prefix: string().optional()
25761
- }), array(string()).readonly()), method(object({
25869
+ }), array(string()).readonly(), { auth: "admin" }), method(object({
25762
25870
  location: StorageLocationRefSchema,
25763
25871
  relativePath: string()
25764
- }), _void(), { kind: "mutation" }), method(object({ location: StorageLocationRefSchema }), number().nullable()), method(object({
25872
+ }), _void(), {
25873
+ kind: "mutation",
25874
+ auth: "admin"
25875
+ }), method(object({ location: StorageLocationRefSchema }), number().nullable()), method(object({
25765
25876
  location: StorageLocationRefSchema,
25766
25877
  relativePath: string(),
25767
25878
  sizeBytes: number().optional()
25768
- }), object({ uploadId: string() }), { kind: "mutation" }), method(object({
25879
+ }), object({ uploadId: string() }), {
25880
+ kind: "mutation",
25881
+ auth: "admin"
25882
+ }), method(object({
25769
25883
  uploadId: string(),
25770
25884
  offset: number(),
25771
25885
  data: _instanceof(Uint8Array)
25772
- }), _void(), { kind: "mutation" }), method(object({ uploadId: string() }), _void(), { kind: "mutation" }), method(object({ uploadId: string() }), _void(), { kind: "mutation" }), method(object({
25886
+ }), _void(), {
25887
+ kind: "mutation",
25888
+ auth: "admin"
25889
+ }), method(object({ uploadId: string() }), _void(), {
25890
+ kind: "mutation",
25891
+ auth: "admin"
25892
+ }), method(object({ uploadId: string() }), _void(), {
25893
+ kind: "mutation",
25894
+ auth: "admin"
25895
+ }), method(object({
25773
25896
  location: StorageLocationRefSchema,
25774
25897
  relativePath: string()
25775
25898
  }), object({
25776
25899
  downloadId: string(),
25777
25900
  sizeBytes: number()
25778
- }), { kind: "mutation" }), method(object({
25901
+ }), {
25902
+ kind: "mutation",
25903
+ auth: "admin"
25904
+ }), method(object({
25779
25905
  downloadId: string(),
25780
25906
  offset: number(),
25781
25907
  length: number()
25782
- }), _instanceof(Uint8Array)), method(object({ downloadId: string() }), _void(), { kind: "mutation" }), method(object({ type: StorageLocationTypeSchema.optional() }), array(StorageLocationSchema).readonly()), method(_void(), array(StorageLocationDeclarationSchema).readonly()), method(StorageLocationSchema.omit({
25908
+ }), _instanceof(Uint8Array), { auth: "admin" }), method(object({ downloadId: string() }), _void(), {
25909
+ kind: "mutation",
25910
+ auth: "admin"
25911
+ }), method(object({ type: StorageLocationTypeSchema.optional() }), array(StorageLocationSchema).readonly()), method(_void(), array(StorageLocationDeclarationSchema).readonly()), method(StorageLocationSchema.omit({
25783
25912
  createdAt: true,
25784
25913
  updatedAt: true
25785
25914
  }), StorageLocationSchema, {
@@ -27404,7 +27533,67 @@ var WebrtcLadderDecisionSchema = object({
27404
27533
  serverSending: boolean().nullable(),
27405
27534
  /** Epoch ms. The overlay prints its age; a decision from 40 minutes ago
27406
27535
  * must not read like one from this second. */
27407
- at: number()
27536
+ at: number(),
27537
+ /** The broker's own cause when it is finer than `cause` can carry, e.g.
27538
+ * `trial-revert` (reported as `stall`/`loss` for older consumers). Optional:
27539
+ * an older server strips it instead of rejecting the answer. */
27540
+ causeDetail: string().optional()
27541
+ });
27542
+ var WebrtcClimbHoldSchema = object({
27543
+ /** `stall-building` — the client receives ≪ what is sent; `delivery` — the
27544
+ * current rung is not landing whole; `no-evidence` — no receiver feedback;
27545
+ * `warming` — healthy, accumulating the streak; `cooldown` — too soon after
27546
+ * a change; `capacity` — a MEASURED probe below the next rung's bar;
27547
+ * `try-unclean` — no capacity evidence, and the path is not clean enough to
27548
+ * try; `try-backoff` — a try reverted, waiting out its backoff; `trial` —
27549
+ * this rung IS a try, reverting if it does not land; `suspended` —
27550
+ * recorded playback on the track. */
27551
+ code: string(),
27552
+ /** The rung a climb would go to. */
27553
+ nextTier: CamProfileSchema,
27554
+ /** Bytes received ÷ bytes sent over the delivery window (≥ one GOP). */
27555
+ deliveryRatio: number().nullable(),
27556
+ deliveryWindowMs: number().nullable(),
27557
+ /** The ratio a climb requires. */
27558
+ climbDeliveryRatio: number(),
27559
+ /** The receiver's bandwidth estimate (REMB), kbps. Capped by what is sent. */
27560
+ capacityKbps: number().nullable(),
27561
+ /** The viewer's downlink probe for this session, kbps. */
27562
+ probeKbps: number().nullable(),
27563
+ /** The next rung's measured bitrate, kbps. */
27564
+ nextTierKbps: number().nullable(),
27565
+ capacityMargin: number(),
27566
+ /** The capacity a climb to `nextTier` needs, kbps (bitrate × margin, or the
27567
+ * client ladder threshold when the rung has measured nothing). */
27568
+ neededKbps: number().nullable(),
27569
+ /** For `try-unclean`: which clean-path condition failed (a `WebrtcTryBlocker`,
27570
+ * carried as a string for the same reason as `code`). */
27571
+ tryBlockedBy: string().nullable(),
27572
+ /** The delivery ratio and the loss ratio a try requires / must stay under.
27573
+ * Optional, like every field added to this schema after it first shipped:
27574
+ * the router validates output, so a REQUIRED new field makes a newer server
27575
+ * reject an older broker's whole answer (review m1). */
27576
+ tryDeliveryRatio: number().optional(),
27577
+ tryMaxLossRatio: number().optional(),
27578
+ /** For `try-backoff`: time until the next try, ms. */
27579
+ retryInMs: number().nullable(),
27580
+ /** The last try that reverted in this viewer session. */
27581
+ lastRevert: object({
27582
+ tier: CamProfileSchema,
27583
+ deliveryRatio: number().nullable(),
27584
+ stalled: boolean(),
27585
+ at: number()
27586
+ }).nullable(),
27587
+ /** For `trial`: how long this rung has been on trial, and for how long it must hold. */
27588
+ trialForMs: number().nullable(),
27589
+ trialMs: number().nullable(),
27590
+ healthyForMs: number().nullable(),
27591
+ requiredHealthyMs: number().nullable(),
27592
+ /** Epoch ms this hold's code began. */
27593
+ since: number(),
27594
+ /** The same one-line account the broker logs, e.g.
27595
+ * `held: delivery 0.97 over 4.0s ok, REMB 480 kbps < mid 1800 kbps × 1.2`. */
27596
+ summary: string()
27408
27597
  });
27409
27598
  /** Per-tier count of MEASURED downgrades this viewer session has suffered. */
27410
27599
  var WebrtcTierFailureSchema = object({
@@ -27468,7 +27657,12 @@ var WebrtcSessionDebugSchema = object({
27468
27657
  tierFailures: array(WebrtcTierFailureSchema),
27469
27658
  /** Successful promotions in this viewer session (drives the progressive
27470
27659
  * healthy timer). Null when no ladder is running. */
27471
- upgradeCount: number().nullable()
27660
+ upgradeCount: number().nullable(),
27661
+ /** Why the ladder is not climbing right now. Null when no ladder runs, it
27662
+ * is at the top rung, or it just moved. Optional because this output is
27663
+ * validated by the router: a server carrying this schema must still accept
27664
+ * the answer of a stream-broker deployed before the field existed. */
27665
+ climbHold: WebrtcClimbHoldSchema.nullable().optional()
27472
27666
  });
27473
27667
  DeviceType.Camera, method(object({ deviceId: number().int().nonnegative() }), array(WebrtcStreamChoiceSchema)), method(object({
27474
27668
  deviceId: number().int().nonnegative(),
@@ -32771,6 +32965,11 @@ var ClientNetworkStatsSchema = object({
32771
32965
  jitterMs: number(),
32772
32966
  estimatedBandwidthKbps: number(),
32773
32967
  packetLossPercent: number().min(0).max(100),
32968
+ /** The viewer's latest `/adaptive-probe` reading, Mbps — whatever it read
32969
+ * (D635 I4). Absent when it never probed or the probe failed (unknown). */
32970
+ downlinkMbps: number().optional(),
32971
+ /** Age of that reading when this report was sent, ms. */
32972
+ downlinkAgeMs: number().optional(),
32774
32973
  lastUpdated: number()
32775
32974
  });
32776
32975
  var DeviceNetworkStatsSchema = object({
@@ -32783,7 +32982,11 @@ method(object({ deviceId: number() }), DeviceNetworkStatsSchema.nullable()), met
32783
32982
  rttMs: number().min(0).max(6e4),
32784
32983
  jitterMs: number().min(0).max(1e4),
32785
32984
  estimatedBandwidthKbps: number().min(0).max(1e6),
32786
- packetLossPercent: number().min(0).max(100)
32985
+ packetLossPercent: number().min(0).max(100),
32986
+ /** Latest downlink probe, Mbps, whatever it read; absent = never / failed. */
32987
+ downlinkMbps: number().min(0).max(1e5).optional(),
32988
+ /** Age of that probe when this report is sent, ms. */
32989
+ downlinkAgeMs: number().min(0).max(864e5).optional()
32787
32990
  }), _void(), { kind: "mutation" });
32788
32991
  /**
32789
32992
  * nodes — system-scoped singleton capability for cluster topology
@@ -42766,6 +42969,12 @@ Object.freeze({
42766
42969
  addonId: null,
42767
42970
  access: "view"
42768
42971
  },
42972
+ "deviceManager.listDeviceIdsByCaps": {
42973
+ capName: "device-manager",
42974
+ capScope: "system",
42975
+ addonId: null,
42976
+ access: "view"
42977
+ },
42769
42978
  "deviceManager.listLocationDescriptions": {
42770
42979
  capName: "device-manager",
42771
42980
  capScope: "system",