@camstack/addon-model-studio 1.1.169 → 1.1.170

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 (18) hide show
  1. package/dist/{MotionZonesSettings-WwZvrN_o.mjs → MotionZonesSettings-BQUO-o7V.mjs} +2 -2
  2. package/dist/{PrivacyMaskSettings-eoz9NK5G.mjs → PrivacyMaskSettings-DNTptTqU.mjs} +4 -4
  3. package/dist/{SceneMonitorEditor-BV4pet19.mjs → SceneMonitorEditor-DlFCIgLK.mjs} +3 -3
  4. package/dist/_stub.js +10 -10
  5. package/dist/{_virtual_mf-localSharedImportMap___mfe_internal__addon_model_studio_page-B1nK3YSf.mjs → _virtual_mf-localSharedImportMap___mfe_internal__addon_model_studio_page-CzKIbASt.mjs} +3 -3
  6. package/dist/_virtual_mf___mfe_internal__addon_model_studio_page__loadShare___mf_0_camstack_mf_1_types__loadShare__.js-wbtR-IuO.mjs +26 -0
  7. package/dist/{hostInit-Cud424l-.mjs → hostInit-CqNbveFJ.mjs} +2 -2
  8. package/dist/model-studio.addon.js +242 -41
  9. package/dist/model-studio.addon.mjs +242 -41
  10. package/dist/{player-overlays-Cxpzecy1.mjs → player-overlays-BQcXFid_.mjs} +1 -1
  11. package/dist/remoteEntry.js +1 -1
  12. package/dist/{responsive-C1StxoX1.mjs → responsive-jf0lxp6K.mjs} +1 -1
  13. package/dist/{scene-monitor-copy-b4S8KzJH.mjs → scene-monitor-copy-CncglTT-.mjs} +1 -1
  14. package/dist/{square-BzuCtKO-.mjs → square-CKSQ7rAe.mjs} +1 -1
  15. package/dist/{trash-2-CWtVmull.mjs → trash-2-h_VbLaR6.mjs} +1 -1
  16. package/dist/{virtual_mf-REMOTE_ENTRY_ID___mfe_internal__addon_model_studio_page__remoteEntry_js-CgCMXxAb.mjs → virtual_mf-REMOTE_ENTRY_ID___mfe_internal__addon_model_studio_page__remoteEntry_js-CxcjtoPK.mjs} +1 -1
  17. package/package.json +1 -1
  18. package/dist/_virtual_mf___mfe_internal__addon_model_studio_page__loadShare___mf_0_camstack_mf_1_types__loadShare__.js-BvVNN6qP.mjs +0 -26
@@ -5884,7 +5884,7 @@ var ZodIssueCode = {
5884
5884
  var ZodFirstPartyTypeKind;
5885
5885
  ZodFirstPartyTypeKind || (ZodFirstPartyTypeKind = {});
5886
5886
  //#endregion
5887
- //#region ../types/dist/sleep-pM_J7YnY.mjs
5887
+ //#region ../types/dist/sleep-D_4W7xuQ.mjs
5888
5888
  /**
5889
5889
  * The audio chunk plane's byte format, and the ONE expansion from a coded
5890
5890
  * window to float samples (D455).
@@ -7942,11 +7942,17 @@ var RawStateResultSchema = object({
7942
7942
  method(object({ deviceId: number() }), array(StreamSourceEntrySchema)), method(object({ deviceId: number() }), array(ConfigEntrySchema$1)), method(object({
7943
7943
  deviceId: number(),
7944
7944
  values: record(string(), unknown())
7945
- }), _void(), { kind: "mutation" }), method(object({
7945
+ }), _void(), {
7946
+ kind: "mutation",
7947
+ auth: "admin"
7948
+ }), method(object({
7946
7949
  deviceId: number(),
7947
7950
  action: string().min(1),
7948
7951
  input: unknown()
7949
- }), unknown(), { kind: "mutation" }), method(object({ deviceId: number() }), _void(), { kind: "mutation" }), method(object({ deviceId: number() }), unknown().nullable()), method(object({ deviceId: number() }), RawStateResultSchema.nullable(), { auth: "protected" });
7952
+ }), unknown(), { kind: "mutation" }), method(object({ deviceId: number() }), _void(), {
7953
+ kind: "mutation",
7954
+ auth: "admin"
7955
+ }), method(object({ deviceId: number() }), unknown().nullable()), method(object({ deviceId: number() }), RawStateResultSchema.nullable(), { auth: "protected" });
7950
7956
  new Set([
7951
7957
  "track",
7952
7958
  "summary",
@@ -12188,7 +12194,7 @@ method(ListInputSchema, array(BrokerInfoSchema$1)), method(GetInputSchema, Broke
12188
12194
  }), method(UnsubscribeInputSchema, _void(), {
12189
12195
  kind: "mutation",
12190
12196
  auth: "admin"
12191
- }), method(GetStateInputSchema, unknown().nullable()), method(_void(), RegistryStatusSchema);
12197
+ }), method(GetStateInputSchema, unknown().nullable(), { auth: "admin" }), method(_void(), RegistryStatusSchema);
12192
12198
  DeviceType.Camera;
12193
12199
  /** Stream delivery format. (Relocated from the retired `streaming-engine` cap.) */
12194
12200
  var StreamFormatSchema = _enum([
@@ -13285,17 +13291,20 @@ method(object({
13285
13291
  namespace: string().optional(),
13286
13292
  collection: string(),
13287
13293
  key: string()
13288
- }), unknown()), method(object({
13294
+ }), unknown(), { auth: "admin" }), method(object({
13289
13295
  namespace: string().optional(),
13290
13296
  collection: string(),
13291
13297
  key: string(),
13292
13298
  value: unknown()
13293
- }), _void(), { kind: "mutation" }), method(object({
13299
+ }), _void(), {
13300
+ kind: "mutation",
13301
+ auth: "admin"
13302
+ }), method(object({
13294
13303
  namespace: string().optional(),
13295
13304
  collection: string(),
13296
13305
  filter: QueryFilterSchema.optional(),
13297
13306
  columns: array(string()).readonly().optional()
13298
- }), array(SettingsRecordSchema).readonly()), method(object({
13307
+ }), array(SettingsRecordSchema).readonly(), { auth: "admin" }), method(object({
13299
13308
  namespace: string().optional(),
13300
13309
  collection: string(),
13301
13310
  /** Declared columns identifying the slot; must be covered by a UNIQUE
@@ -13305,7 +13314,10 @@ method(object({
13305
13314
  }), object({
13306
13315
  /** The id the row HAS: assigned by SQLite on an insert, or the existing
13307
13316
  * row's own id on an update. */
13308
- id: union([string(), number()]) }), { kind: "mutation" }), method(object({
13317
+ id: union([string(), number()]) }), {
13318
+ kind: "mutation",
13319
+ auth: "admin"
13320
+ }), method(object({
13309
13321
  namespace: string().optional(),
13310
13322
  collection: string(),
13311
13323
  record: object({
@@ -13318,38 +13330,56 @@ id: union([string(), number()]) }), { kind: "mutation" }), method(object({
13318
13330
  * for an absent one, or the ROWID SQLite assigned on an `INTEGER`
13319
13331
  * primary key — which is the only place an auto key is knowable.
13320
13332
  */
13321
- id: union([string(), number()]) }), { kind: "mutation" }), method(object({
13333
+ id: union([string(), number()]) }), {
13334
+ kind: "mutation",
13335
+ auth: "admin"
13336
+ }), method(object({
13322
13337
  namespace: string().optional(),
13323
13338
  collection: string(),
13324
13339
  records: array(BulkRecordSchema).readonly()
13325
- }), object({ inserted: number().int() }), { kind: "mutation" }), method(object({
13340
+ }), object({ inserted: number().int() }), {
13341
+ kind: "mutation",
13342
+ auth: "admin"
13343
+ }), method(object({
13326
13344
  namespace: string().optional(),
13327
13345
  collection: string(),
13328
13346
  id: string(),
13329
13347
  data: record(string(), unknown())
13330
- }), _void(), { kind: "mutation" }), method(object({
13348
+ }), _void(), {
13349
+ kind: "mutation",
13350
+ auth: "admin"
13351
+ }), method(object({
13331
13352
  namespace: string().optional(),
13332
13353
  collection: string(),
13333
13354
  key: string()
13334
- }), _void(), { kind: "mutation" }), method(object({
13355
+ }), _void(), {
13356
+ kind: "mutation",
13357
+ auth: "admin"
13358
+ }), method(object({
13335
13359
  namespace: string().optional(),
13336
13360
  collection: string(),
13337
13361
  filter: MutationFilterSchema
13338
- }), object({ deleted: number().int() }), { kind: "mutation" }), method(object({
13362
+ }), object({ deleted: number().int() }), {
13363
+ kind: "mutation",
13364
+ auth: "admin"
13365
+ }), method(object({
13339
13366
  namespace: string().optional(),
13340
13367
  collection: string(),
13341
13368
  filter: MutationFilterSchema,
13342
13369
  data: record(string(), unknown())
13343
- }), object({ updated: number().int() }), { kind: "mutation" }), method(object({
13370
+ }), object({ updated: number().int() }), {
13371
+ kind: "mutation",
13372
+ auth: "admin"
13373
+ }), method(object({
13344
13374
  namespace: string().optional(),
13345
13375
  collection: string(),
13346
13376
  filter: QueryFilterSchema.optional()
13347
- }), number()), method(object({
13377
+ }), number(), { auth: "admin" }), method(object({
13348
13378
  namespace: string().optional(),
13349
13379
  collection: string(),
13350
13380
  fields: array(AggregateFieldSchema).readonly(),
13351
13381
  filter: QueryFilterSchema.optional()
13352
- }), AggregateResultSchema), method(object({
13382
+ }), AggregateResultSchema, { auth: "admin" }), method(object({
13353
13383
  namespace: string().optional(),
13354
13384
  collection: string(),
13355
13385
  field: string(),
@@ -13359,15 +13389,18 @@ id: union([string(), number()]) }), { kind: "mutation" }), method(object({
13359
13389
  }), array(object({
13360
13390
  bucket: number().int(),
13361
13391
  count: number().int()
13362
- })).readonly()), method(object({
13392
+ })).readonly(), { auth: "admin" }), method(object({
13363
13393
  namespace: string().optional(),
13364
13394
  collection: string()
13365
- }), boolean()), method(object({
13395
+ }), boolean(), { auth: "admin" }), method(object({
13366
13396
  namespace: string().optional(),
13367
13397
  collection: string(),
13368
13398
  columns: array(CollectionColumnSchema).readonly(),
13369
13399
  indexes: array(CollectionIndexSchema).readonly().optional()
13370
- }), _void(), { kind: "mutation" });
13400
+ }), _void(), {
13401
+ kind: "mutation",
13402
+ auth: "admin"
13403
+ });
13371
13404
  /**
13372
13405
  * What one engine says about itself. The orchestrator uses `kind` to pick
13373
13406
  * a registrant for a collection; `engineId` is what a log line names when
@@ -14051,7 +14084,13 @@ var ExposeInputSchema = object({
14051
14084
  capabilities: array(string()).optional()
14052
14085
  });
14053
14086
  var UnexposeInputSchema = object({ deviceId: string() });
14054
- method(_void(), DeviceExportStatusSchema), method(_void(), array(DeviceKindSchema)), method(_void(), array(ExposedDeviceSchema)), method(ExposeInputSchema, _void(), { kind: "mutation" }), method(UnexposeInputSchema, _void(), { kind: "mutation" });
14087
+ method(_void(), DeviceExportStatusSchema), method(_void(), array(DeviceKindSchema)), method(_void(), array(ExposedDeviceSchema)), method(ExposeInputSchema, _void(), {
14088
+ kind: "mutation",
14089
+ auth: "admin"
14090
+ }), method(UnexposeInputSchema, _void(), {
14091
+ kind: "mutation",
14092
+ auth: "admin"
14093
+ });
14055
14094
  /** Wire/storage schema for one icon id. */
14056
14095
  var LocationIconIdSchema = _enum([
14057
14096
  "map-pin",
@@ -14555,7 +14594,10 @@ method(object({
14555
14594
  kind: "mutation",
14556
14595
  auth: "admin",
14557
14596
  timeoutMs: 12 * 6e4
14558
- }), 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({
14597
+ }), method(DeviceRegisterPayloadSchema, _void(), { kind: "mutation" }), method(DeviceRemovePayloadSchema, _void(), { kind: "mutation" }), method(DevicePersistConfigPayloadSchema, _void(), {
14598
+ kind: "mutation",
14599
+ auth: "admin"
14600
+ }), 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({
14559
14601
  deviceId: number(),
14560
14602
  name: string()
14561
14603
  }), _void(), {
@@ -14760,7 +14802,7 @@ method(object({
14760
14802
  }), method(object({ deviceId: number() }), array(StreamProbeResultSchema), {
14761
14803
  kind: "mutation",
14762
14804
  auth: "admin"
14763
- }), method(object({ deviceId: number() }), DeviceBindingsForDeviceSchema), method(object({ deviceIds: array(number()) }), array(DeviceBindingsForDeviceSchema)), method(object({}), array(DeviceBindingsForDeviceSchema)), method(object({
14805
+ }), 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({
14764
14806
  deviceId: number(),
14765
14807
  capName: string(),
14766
14808
  wrapperAddonId: string(),
@@ -16313,7 +16355,22 @@ var StatusSchema = object({
16313
16355
  brokerCount: number(),
16314
16356
  embeddedRunning: boolean()
16315
16357
  });
16316
- 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);
16358
+ method(_void(), array(BrokerInfoSchema)), method(IdInputSchema, BrokerConnectionDetailsSchema, { auth: "admin" }), method(AddBrokerInputSchema, AddBrokerResultSchema, {
16359
+ kind: "mutation",
16360
+ auth: "admin"
16361
+ }), method(IdInputSchema, _void(), {
16362
+ kind: "mutation",
16363
+ auth: "admin"
16364
+ }), method(IdInputSchema, TestResultSchema$1, {
16365
+ kind: "mutation",
16366
+ auth: "admin"
16367
+ }), method(StartEmbeddedInputSchema, StartEmbeddedResultSchema, {
16368
+ kind: "mutation",
16369
+ auth: "admin"
16370
+ }), method(IdInputSchema, _void(), {
16371
+ kind: "mutation",
16372
+ auth: "admin"
16373
+ }), method(_void(), StatusSchema);
16317
16374
  var NetworkEndpointSchema = object({
16318
16375
  url: string(),
16319
16376
  hostname: string(),
@@ -16608,6 +16665,18 @@ var TargetKindSchema = object({
16608
16665
  */
16609
16666
  iconMediaType: string().optional(),
16610
16667
  configSchema: ConfigSchemaPassthrough,
16668
+ /**
16669
+ * The config keys that decide WHERE this kind's secrets are sent (server,
16670
+ * base URL, instance, chat, recipient). A save that changes any of them
16671
+ * while leaving a secret redacted is refused by the provider (D634), so an
16672
+ * editor uses this to ask for the secret on exactly those edits instead of
16673
+ * on every edit.
16674
+ *
16675
+ * Optional: absent from a provider that holds no secret (the Home Assistant
16676
+ * kinds) and from a provider older than this field — an editor that finds
16677
+ * it absent must assume ANY edit may need the secret.
16678
+ */
16679
+ destinationKeys: array(string()).optional(),
16611
16680
  supportsDiscovery: boolean(),
16612
16681
  caps: TargetKindCapsSchema
16613
16682
  });
@@ -16646,19 +16715,34 @@ var SendResultSchema = object({
16646
16715
  });
16647
16716
  /** Same shape as SendResult — kept as a distinct name for the test panel. */
16648
16717
  var TestResultSchema = SendResultSchema;
16649
- method(object({}), array(TargetKindSchema)), method(object({}), array(TargetSchema)), method(object({
16718
+ method(object({}), array(TargetKindSchema)), method(object({}), array(TargetSchema), { auth: "admin" }), method(object({
16650
16719
  kind: string(),
16651
16720
  config: record(string(), unknown()).optional()
16652
- }), array(DiscoveredTargetSchema)), method(object({
16721
+ }), array(DiscoveredTargetSchema), { auth: "admin" }), method(object({
16653
16722
  targetId: string(),
16654
16723
  notification: NotificationSchema
16655
- }), SendResultSchema, { kind: "mutation" }), method(object({
16724
+ }), SendResultSchema, {
16725
+ kind: "mutation",
16726
+ auth: "admin"
16727
+ }), method(object({
16656
16728
  targetId: string(),
16657
16729
  sample: NotificationSchema.optional()
16658
- }), TestResultSchema, { kind: "mutation" }), method(object({ target: TargetSchema }), TargetSchema, { kind: "mutation" }), method(object({ targetId: string() }), _void(), { kind: "mutation" }), method(object({
16730
+ }), TestResultSchema, {
16731
+ kind: "mutation",
16732
+ auth: "admin"
16733
+ }), method(object({ target: TargetSchema }), TargetSchema, {
16734
+ kind: "mutation",
16735
+ auth: "admin"
16736
+ }), method(object({ targetId: string() }), _void(), {
16737
+ kind: "mutation",
16738
+ auth: "admin"
16739
+ }), method(object({
16659
16740
  targetId: string(),
16660
16741
  enabled: boolean()
16661
- }), _void(), { kind: "mutation" });
16742
+ }), _void(), {
16743
+ kind: "mutation",
16744
+ auth: "admin"
16745
+ });
16662
16746
  new Set([
16663
16747
  {
16664
16748
  id: "person",
@@ -17501,6 +17585,19 @@ var NcSystemEventConditionSchema = object({
17501
17585
  * does not carry) matches no `deviceTypes` list.
17502
17586
  */
17503
17587
  deviceTypes: array(string().min(1)).min(1).optional(),
17588
+ /**
17589
+ * Devices this rule NEVER speaks about, whatever else matched. Scoped to the
17590
+ * same kind family as `deviceIds` (`systemEventFilterApplies(kind,
17591
+ * 'deviceIds')`) and applied AFTER it: include first, then exclude. A
17592
+ * consumable subject (`consumable:<id>:<key>`) is excluded by its device id.
17593
+ *
17594
+ * It never fails closed: a subject that carries no device id is not in the
17595
+ * list, so it is not excluded. "Every battery except the one thermometer that
17596
+ * reads 0 % forever" is the question this answers — expressed as an include
17597
+ * list it would have to name every other battery device, and every device
17598
+ * adopted later would be silently left out (D636).
17599
+ */
17600
+ excludeDeviceIds: array(number().int()).min(1).optional(),
17504
17601
  nodeIds: array(string().min(1)).min(1).optional(),
17505
17602
  packageNames: array(string().min(1)).min(1).optional()
17506
17603
  });
@@ -24034,41 +24131,65 @@ var ProviderListEntrySchema = discriminatedUnion("shouldSaveDiskSpace", [object(
24034
24131
  method(object({
24035
24132
  location: StorageLocationRefSchema,
24036
24133
  relativePath: string()
24037
- }), string()), method(object({
24134
+ }), string(), { auth: "admin" }), method(object({
24038
24135
  location: StorageLocationRefSchema,
24039
24136
  relativePath: string(),
24040
24137
  data: _instanceof(Uint8Array)
24041
- }), _void(), { kind: "mutation" }), method(object({
24138
+ }), _void(), {
24139
+ kind: "mutation",
24140
+ auth: "admin"
24141
+ }), method(object({
24042
24142
  location: StorageLocationRefSchema,
24043
24143
  relativePath: string()
24044
- }), _instanceof(Uint8Array)), method(object({
24144
+ }), _instanceof(Uint8Array), { auth: "admin" }), method(object({
24045
24145
  location: StorageLocationRefSchema,
24046
24146
  relativePath: string()
24047
- }), boolean()), method(object({
24147
+ }), boolean(), { auth: "admin" }), method(object({
24048
24148
  location: StorageLocationRefSchema,
24049
24149
  prefix: string().optional()
24050
- }), array(string()).readonly()), method(object({
24150
+ }), array(string()).readonly(), { auth: "admin" }), method(object({
24051
24151
  location: StorageLocationRefSchema,
24052
24152
  relativePath: string()
24053
- }), _void(), { kind: "mutation" }), method(object({ location: StorageLocationRefSchema }), number().nullable()), method(object({
24153
+ }), _void(), {
24154
+ kind: "mutation",
24155
+ auth: "admin"
24156
+ }), method(object({ location: StorageLocationRefSchema }), number().nullable()), method(object({
24054
24157
  location: StorageLocationRefSchema,
24055
24158
  relativePath: string(),
24056
24159
  sizeBytes: number().optional()
24057
- }), object({ uploadId: string() }), { kind: "mutation" }), method(object({
24160
+ }), object({ uploadId: string() }), {
24161
+ kind: "mutation",
24162
+ auth: "admin"
24163
+ }), method(object({
24058
24164
  uploadId: string(),
24059
24165
  offset: number(),
24060
24166
  data: _instanceof(Uint8Array)
24061
- }), _void(), { kind: "mutation" }), method(object({ uploadId: string() }), _void(), { kind: "mutation" }), method(object({ uploadId: string() }), _void(), { kind: "mutation" }), method(object({
24167
+ }), _void(), {
24168
+ kind: "mutation",
24169
+ auth: "admin"
24170
+ }), method(object({ uploadId: string() }), _void(), {
24171
+ kind: "mutation",
24172
+ auth: "admin"
24173
+ }), method(object({ uploadId: string() }), _void(), {
24174
+ kind: "mutation",
24175
+ auth: "admin"
24176
+ }), method(object({
24062
24177
  location: StorageLocationRefSchema,
24063
24178
  relativePath: string()
24064
24179
  }), object({
24065
24180
  downloadId: string(),
24066
24181
  sizeBytes: number()
24067
- }), { kind: "mutation" }), method(object({
24182
+ }), {
24183
+ kind: "mutation",
24184
+ auth: "admin"
24185
+ }), method(object({
24068
24186
  downloadId: string(),
24069
24187
  offset: number(),
24070
24188
  length: number()
24071
- }), _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({
24189
+ }), _instanceof(Uint8Array), { auth: "admin" }), method(object({ downloadId: string() }), _void(), {
24190
+ kind: "mutation",
24191
+ auth: "admin"
24192
+ }), method(object({ type: StorageLocationTypeSchema.optional() }), array(StorageLocationSchema).readonly()), method(_void(), array(StorageLocationDeclarationSchema).readonly()), method(StorageLocationSchema.omit({
24072
24193
  createdAt: true,
24073
24194
  updatedAt: true
24074
24195
  }), StorageLocationSchema, {
@@ -25644,7 +25765,67 @@ var WebrtcLadderDecisionSchema = object({
25644
25765
  serverSending: boolean().nullable(),
25645
25766
  /** Epoch ms. The overlay prints its age; a decision from 40 minutes ago
25646
25767
  * must not read like one from this second. */
25647
- at: number()
25768
+ at: number(),
25769
+ /** The broker's own cause when it is finer than `cause` can carry, e.g.
25770
+ * `trial-revert` (reported as `stall`/`loss` for older consumers). Optional:
25771
+ * an older server strips it instead of rejecting the answer. */
25772
+ causeDetail: string().optional()
25773
+ });
25774
+ var WebrtcClimbHoldSchema = object({
25775
+ /** `stall-building` — the client receives ≪ what is sent; `delivery` — the
25776
+ * current rung is not landing whole; `no-evidence` — no receiver feedback;
25777
+ * `warming` — healthy, accumulating the streak; `cooldown` — too soon after
25778
+ * a change; `capacity` — a MEASURED probe below the next rung's bar;
25779
+ * `try-unclean` — no capacity evidence, and the path is not clean enough to
25780
+ * try; `try-backoff` — a try reverted, waiting out its backoff; `trial` —
25781
+ * this rung IS a try, reverting if it does not land; `suspended` —
25782
+ * recorded playback on the track. */
25783
+ code: string(),
25784
+ /** The rung a climb would go to. */
25785
+ nextTier: CamProfileSchema,
25786
+ /** Bytes received ÷ bytes sent over the delivery window (≥ one GOP). */
25787
+ deliveryRatio: number().nullable(),
25788
+ deliveryWindowMs: number().nullable(),
25789
+ /** The ratio a climb requires. */
25790
+ climbDeliveryRatio: number(),
25791
+ /** The receiver's bandwidth estimate (REMB), kbps. Capped by what is sent. */
25792
+ capacityKbps: number().nullable(),
25793
+ /** The viewer's downlink probe for this session, kbps. */
25794
+ probeKbps: number().nullable(),
25795
+ /** The next rung's measured bitrate, kbps. */
25796
+ nextTierKbps: number().nullable(),
25797
+ capacityMargin: number(),
25798
+ /** The capacity a climb to `nextTier` needs, kbps (bitrate × margin, or the
25799
+ * client ladder threshold when the rung has measured nothing). */
25800
+ neededKbps: number().nullable(),
25801
+ /** For `try-unclean`: which clean-path condition failed (a `WebrtcTryBlocker`,
25802
+ * carried as a string for the same reason as `code`). */
25803
+ tryBlockedBy: string().nullable(),
25804
+ /** The delivery ratio and the loss ratio a try requires / must stay under.
25805
+ * Optional, like every field added to this schema after it first shipped:
25806
+ * the router validates output, so a REQUIRED new field makes a newer server
25807
+ * reject an older broker's whole answer (review m1). */
25808
+ tryDeliveryRatio: number().optional(),
25809
+ tryMaxLossRatio: number().optional(),
25810
+ /** For `try-backoff`: time until the next try, ms. */
25811
+ retryInMs: number().nullable(),
25812
+ /** The last try that reverted in this viewer session. */
25813
+ lastRevert: object({
25814
+ tier: CamProfileSchema,
25815
+ deliveryRatio: number().nullable(),
25816
+ stalled: boolean(),
25817
+ at: number()
25818
+ }).nullable(),
25819
+ /** For `trial`: how long this rung has been on trial, and for how long it must hold. */
25820
+ trialForMs: number().nullable(),
25821
+ trialMs: number().nullable(),
25822
+ healthyForMs: number().nullable(),
25823
+ requiredHealthyMs: number().nullable(),
25824
+ /** Epoch ms this hold's code began. */
25825
+ since: number(),
25826
+ /** The same one-line account the broker logs, e.g.
25827
+ * `held: delivery 0.97 over 4.0s ok, REMB 480 kbps < mid 1800 kbps × 1.2`. */
25828
+ summary: string()
25648
25829
  });
25649
25830
  /** Per-tier count of MEASURED downgrades this viewer session has suffered. */
25650
25831
  var WebrtcTierFailureSchema = object({
@@ -25708,7 +25889,12 @@ var WebrtcSessionDebugSchema = object({
25708
25889
  tierFailures: array(WebrtcTierFailureSchema),
25709
25890
  /** Successful promotions in this viewer session (drives the progressive
25710
25891
  * healthy timer). Null when no ladder is running. */
25711
- upgradeCount: number().nullable()
25892
+ upgradeCount: number().nullable(),
25893
+ /** Why the ladder is not climbing right now. Null when no ladder runs, it
25894
+ * is at the top rung, or it just moved. Optional because this output is
25895
+ * validated by the router: a server carrying this schema must still accept
25896
+ * the answer of a stream-broker deployed before the field existed. */
25897
+ climbHold: WebrtcClimbHoldSchema.nullable().optional()
25712
25898
  });
25713
25899
  DeviceType.Camera, method(object({ deviceId: number().int().nonnegative() }), array(WebrtcStreamChoiceSchema)), method(object({
25714
25900
  deviceId: number().int().nonnegative(),
@@ -29400,6 +29586,11 @@ var ClientNetworkStatsSchema = object({
29400
29586
  jitterMs: number(),
29401
29587
  estimatedBandwidthKbps: number(),
29402
29588
  packetLossPercent: number().min(0).max(100),
29589
+ /** The viewer's latest `/adaptive-probe` reading, Mbps — whatever it read
29590
+ * (D635 I4). Absent when it never probed or the probe failed (unknown). */
29591
+ downlinkMbps: number().optional(),
29592
+ /** Age of that reading when this report was sent, ms. */
29593
+ downlinkAgeMs: number().optional(),
29403
29594
  lastUpdated: number()
29404
29595
  });
29405
29596
  var DeviceNetworkStatsSchema = object({
@@ -29412,7 +29603,11 @@ method(object({ deviceId: number() }), DeviceNetworkStatsSchema.nullable()), met
29412
29603
  rttMs: number().min(0).max(6e4),
29413
29604
  jitterMs: number().min(0).max(1e4),
29414
29605
  estimatedBandwidthKbps: number().min(0).max(1e6),
29415
- packetLossPercent: number().min(0).max(100)
29606
+ packetLossPercent: number().min(0).max(100),
29607
+ /** Latest downlink probe, Mbps, whatever it read; absent = never / failed. */
29608
+ downlinkMbps: number().min(0).max(1e5).optional(),
29609
+ /** Age of that probe when this report is sent, ms. */
29610
+ downlinkAgeMs: number().min(0).max(864e5).optional()
29416
29611
  }), _void(), { kind: "mutation" });
29417
29612
  /**
29418
29613
  * nodes — system-scoped singleton capability for cluster topology
@@ -36994,6 +37189,12 @@ Object.freeze({
36994
37189
  addonId: null,
36995
37190
  access: "view"
36996
37191
  },
37192
+ "deviceManager.listDeviceIdsByCaps": {
37193
+ capName: "device-manager",
37194
+ capScope: "system",
37195
+ addonId: null,
37196
+ access: "view"
37197
+ },
36997
37198
  "deviceManager.listLocationDescriptions": {
36998
37199
  capName: "device-manager",
36999
37200
  capScope: "system",