@camstack/system 1.2.285 → 1.2.287

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 (55) hide show
  1. package/dist/builtins/addon-pages-aggregator/addon-pages-aggregator.addon.js +1 -1
  2. package/dist/builtins/addon-pages-aggregator/addon-pages-aggregator.addon.mjs +1 -1
  3. package/dist/builtins/addon-widgets-aggregator/addon-widgets-aggregator.addon.js +1 -1
  4. package/dist/builtins/addon-widgets-aggregator/addon-widgets-aggregator.addon.mjs +1 -1
  5. package/dist/builtins/alerts/alerts.addon.js +1 -1
  6. package/dist/builtins/alerts/alerts.addon.mjs +1 -1
  7. package/dist/builtins/autotrack/index.js +1 -1
  8. package/dist/builtins/autotrack/index.mjs +1 -1
  9. package/dist/builtins/backup-orchestrator/backup-orchestrator.addon.js +1 -1
  10. package/dist/builtins/backup-orchestrator/backup-orchestrator.addon.mjs +1 -1
  11. package/dist/builtins/camera-grid/index.js +1 -1
  12. package/dist/builtins/camera-grid/index.mjs +1 -1
  13. package/dist/builtins/console-logging/index.js +1 -1
  14. package/dist/builtins/console-logging/index.mjs +1 -1
  15. package/dist/builtins/core-blocks/core-blocks.addon.js +1 -1
  16. package/dist/builtins/core-blocks/core-blocks.addon.mjs +1 -1
  17. package/dist/builtins/device-manager/device-manager.addon.js +2 -2
  18. package/dist/builtins/device-manager/device-manager.addon.mjs +2 -2
  19. package/dist/builtins/doorbell/virtual-doorbell.addon.js +1 -1
  20. package/dist/builtins/doorbell/virtual-doorbell.addon.mjs +1 -1
  21. package/dist/builtins/hub-forwarder/index.js +1 -1
  22. package/dist/builtins/hub-forwarder/index.mjs +1 -1
  23. package/dist/builtins/liveness-monitor/liveness-monitor.addon.js +1 -1
  24. package/dist/builtins/liveness-monitor/liveness-monitor.addon.mjs +1 -1
  25. package/dist/builtins/local-auth/local-auth.addon.js +1 -1
  26. package/dist/builtins/local-auth/local-auth.addon.mjs +1 -1
  27. package/dist/builtins/local-network/local-network.addon.js +1 -1
  28. package/dist/builtins/local-network/local-network.addon.mjs +1 -1
  29. package/dist/builtins/loki-logging/index.js +1 -1
  30. package/dist/builtins/loki-logging/index.mjs +1 -1
  31. package/dist/builtins/native-metrics/native-metrics.addon.js +1 -1
  32. package/dist/builtins/native-metrics/native-metrics.addon.mjs +1 -1
  33. package/dist/builtins/platform-probe/index.js +1 -1
  34. package/dist/builtins/platform-probe/index.mjs +1 -1
  35. package/dist/builtins/remote-access-orchestrator/remote-access-orchestrator.addon.js +1 -1
  36. package/dist/builtins/remote-access-orchestrator/remote-access-orchestrator.addon.mjs +1 -1
  37. package/dist/builtins/snapshot/index.js +1 -1
  38. package/dist/builtins/snapshot/index.mjs +1 -1
  39. package/dist/builtins/sqlite-storage/filesystem-storage.addon.js +1 -1
  40. package/dist/builtins/sqlite-storage/filesystem-storage.addon.mjs +1 -1
  41. package/dist/builtins/sqlite-storage/sqlite-settings.addon.js +0 -0
  42. package/dist/builtins/sqlite-storage/sqlite-settings.addon.mjs +0 -0
  43. package/dist/builtins/storage-orchestrator/storage-orchestrator.addon.js +1 -1
  44. package/dist/builtins/storage-orchestrator/storage-orchestrator.addon.mjs +1 -1
  45. package/dist/builtins/system-config/system-config.addon.js +1 -1
  46. package/dist/builtins/system-config/system-config.addon.mjs +1 -1
  47. package/dist/builtins/winston-logging/index.js +1 -1
  48. package/dist/builtins/winston-logging/index.mjs +1 -1
  49. package/dist/{dist-CNptqdlE.js → dist-C51Z6L6t.js} +1493 -3
  50. package/dist/{dist-DfPOZFAK.mjs → dist-jv1aoo9E.mjs} +1493 -3
  51. package/dist/index.js +1 -1
  52. package/dist/index.mjs +1 -1
  53. package/dist/{retired-settings-keys-BgFiyrY0.js → retired-settings-keys-BFeJh5E7.js} +1 -1
  54. package/dist/{retired-settings-keys-Dz2SokeO.mjs → retired-settings-keys-Bulcwqkz.mjs} +1 -1
  55. package/package.json +1 -1
@@ -691,7 +691,7 @@ var EventCategory = /* @__PURE__ */ function(EventCategory) {
691
691
  return EventCategory;
692
692
  }({});
693
693
  //#endregion
694
- //#region ../types/dist/sleep-CUmLTud7.mjs
694
+ //#region ../types/dist/sleep-De1BvmWo.mjs
695
695
  /**
696
696
  * The audio chunk plane's byte format, and the ONE expansion from a coded
697
697
  * window to float samples (D455).
@@ -4329,10 +4329,20 @@ var CameraSwitchAuthoritySchema = z.discriminatedUnion("kind", [
4329
4329
  var CameraSwitchUnavailableReasonSchema = z.enum([
4330
4330
  "no-provider",
4331
4331
  "source-unreachable",
4332
- "not-configured",
4333
4332
  "device-disabled"
4334
4333
  ]);
4335
4334
  /**
4335
+ * Something true about a switch that is nonetheless OFFERED.
4336
+ *
4337
+ * The distinction from {@link CameraSwitchUnavailableReasonSchema} is the
4338
+ * whole point: a reason replaces the control, a warning travels WITH it. The
4339
+ * privacy mask taught us the difference — greying the one button that starts
4340
+ * the feature teaches the operator the feature is broken, while a live toggle
4341
+ * that flips nothing teaches them the switch is broken. Neither is true; the
4342
+ * honest surface is a working toggle that says what is missing.
4343
+ */
4344
+ var CameraSwitchWarningSchema = z.enum(["no-privacy-zones"]);
4345
+ /**
4336
4346
  * One switch, resolved for one camera.
4337
4347
  *
4338
4348
  * `label` and `costWhenOff` travel ON THE WIRE rather than being looked up
@@ -4351,6 +4361,11 @@ var CameraSwitchSchema = z.object({
4351
4361
  /** False = do not render a control. `unavailableReason` says why. */
4352
4362
  available: z.boolean(),
4353
4363
  unavailableReason: CameraSwitchUnavailableReasonSchema.optional(),
4364
+ /**
4365
+ * Present on an AVAILABLE switch only. Rendered beside the live control;
4366
+ * never a substitute for one.
4367
+ */
4368
+ warning: CameraSwitchWarningSchema.optional(),
4354
4369
  /** Current state. Meaningless when `available` is false — read it as `true`. */
4355
4370
  enabled: z.boolean(),
4356
4371
  authority: CameraSwitchAuthoritySchema
@@ -26279,6 +26294,82 @@ var ClipBytesSchema = z.object({
26279
26294
  */
26280
26295
  durationMs: z.number().positive().optional()
26281
26296
  });
26297
+ /**
26298
+ * Where a clip's STREAM can be dialled (D597) — the answer to
26299
+ * {@link videoclipsCapability.methods.dialClipStream}.
26300
+ *
26301
+ * `url` is plain `http://` on the provider's own token-gated listener, one
26302
+ * shot, short-lived. It is NOT the hub-proxied `/addon/<id>/clip-stream/…`
26303
+ * path: that plane takes only a user credential, which an addon does not
26304
+ * hold, and the framework offers no addon→addon byte transport — the one
26305
+ * precedent is the broker's own restream URLs (`getStreamWithCodec`), which
26306
+ * a consumer dials directly, and this is that precedent one addon over.
26307
+ */
26308
+ /**
26309
+ * The audio a clip stream can be asked for, and the audio it carries.
26310
+ *
26311
+ * The camera stores AAC and no WebRTC session speaks it, so a stream that
26312
+ * carries sound carries it TRANSCODED, muxed as a second track beside the
26313
+ * video by the one ffmpeg the provider already runs (D600). `opus` is
26314
+ * 48 kHz mono, `pcmu` is 8 kHz µ-law — the two codecs a broker session
26315
+ * negotiates — and `none` is a stream asked for, or served, without sound.
26316
+ */
26317
+ var ClipStreamAudioSchema = z.enum([
26318
+ "opus",
26319
+ "pcmu",
26320
+ "none"
26321
+ ]);
26322
+ /**
26323
+ * Why a stream that was ASKED for sound is not carrying it (D600).
26324
+ *
26325
+ * Only ever set beside `servedAudio: 'none'` after a non-`none` ask. Absent
26326
+ * means the ask was honoured, or there was no ask.
26327
+ *
26328
+ * - `not-requested` — the caller asked for `none`.
26329
+ * - `unsupported-ask` — the provider cannot produce that codec.
26330
+ *
26331
+ * Whether the RECORDING has sound at all is not knowable here: the camera
26332
+ * declares no audio track before its first frame arrives. That answer is in
26333
+ * the stream itself — an fMP4 with no audio track — and the broker reads it
26334
+ * there. A dial that says `opus` promises the codec, never the content.
26335
+ */
26336
+ var ClipStreamAudioReasonSchema = z.enum(["not-requested", "unsupported-ask"]);
26337
+ var ClipStreamDialSchema = z.object({
26338
+ url: z.string().min(1),
26339
+ /** After this the token is gone and the URL answers 404 `dial-expired`. */
26340
+ expiresAtMs: z.number(),
26341
+ /** What the stream IS — a consumer that cannot honour it must not dial. */
26342
+ transport: z.literal("forward-only"),
26343
+ /**
26344
+ * Which twin the stream ACTUALLY carries — not what was asked for.
26345
+ *
26346
+ * The stream serves every profile (D599), and a recording whose main twin
26347
+ * does not exist is streamed as its sub copy, which this field reports as
26348
+ * `low`. That is the whole reason the dial no longer refuses `high`:
26349
+ * stating what was served is what makes accepting honest, where a silent
26350
+ * substitution would be the 33x lie D576 forbids. Stated rather than
26351
+ * assumed, the way {@link ClipPlaybackSchema.served} is (D549 15).
26352
+ */
26353
+ served: CamProfileSchema,
26354
+ /**
26355
+ * Which audio the stream will ACTUALLY carry — `served`'s companion for
26356
+ * sound, and the same reasoning (D599, D600).
26357
+ *
26358
+ * The broker asks for the codec its WebRTC session negotiated, and the
26359
+ * provider either muxes that codec or carries none. Stating it is what
26360
+ * lets the broker wire the matching sink before the first byte, and what
26361
+ * keeps a session from being handed a codec it cannot send — the audio
26362
+ * shape of the substitution `served` exists to prevent.
26363
+ *
26364
+ * It is a promise about the CODEC, not about the content: a recording with
26365
+ * no microphone track answers `opus` here and then arrives with no audio
26366
+ * track at all. That second answer is in the stream, and the broker reads
26367
+ * it from the `moov`.
26368
+ */
26369
+ servedAudio: ClipStreamAudioSchema,
26370
+ /** Why `servedAudio` is `none` although sound was asked for. */
26371
+ audioReason: ClipStreamAudioReasonSchema.optional()
26372
+ });
26282
26373
  var ClipSourceAvailabilitySchema = z.object({
26283
26374
  state: z.enum([
26284
26375
  "ok",
@@ -26529,6 +26620,44 @@ var videoclipsCapability = {
26529
26620
  }), ClipBytesSchema, {
26530
26621
  kind: "query",
26531
26622
  auth: "protected"
26623
+ }),
26624
+ /**
26625
+ * Where this clip's STREAM can be dialled (D597) — the forward-only
26626
+ * fMP4 the provider writes from the first muxed byte, for the broker to
26627
+ * play through the same WebRTC session as recorded footage, with the
26628
+ * first frame at the first fragment instead of after the last byte.
26629
+ *
26630
+ * Nothing is fetched here: the answer is a one-shot URL on the
26631
+ * provider's own listener, and the camera is touched when it is dialled.
26632
+ * The gates the file path runs (`readClipBytes`) run on the dial too —
26633
+ * the id, the row, a clip still being written — and refuse in the same
26634
+ * vocabulary, THROWN with `clipExportFailure(<token>, <prose>)`. Every
26635
+ * profile is served (D599) and the answer states which twin it carries;
26636
+ * `high` is not refused. Optional on the provider for the same reason
26637
+ * `readClipBytes` is: a source with no camera socket behind it (the
26638
+ * recorder's analytics window, a HomeKit tee) has no stream.
26639
+ */
26640
+ dialClipStream: optionalMethod(z.object({
26641
+ deviceId: z.number(),
26642
+ clipId: z.string().min(1),
26643
+ /** WHICH provider holds the camera — see `readClipBytes.provider`. */
26644
+ provider: z.string().min(1),
26645
+ /** Which twin — `high` → the main file, everything else the sub (D599). */
26646
+ profile: CamProfileSchema.optional(),
26647
+ /**
26648
+ * Which audio codec the caller's session negotiated, so the provider
26649
+ * can mux it (D600). The ask travels on the DIAL because the mux is
26650
+ * spawned once, before the first byte, and cannot gain a track later.
26651
+ *
26652
+ * ABSENT IS `none`, never a guess: a caller that does not state an
26653
+ * ask is served the video-only stream that shipped first, so a broker
26654
+ * older than this field keeps working unchanged (D382 — an unstated
26655
+ * ask is zero).
26656
+ */
26657
+ audio: ClipStreamAudioSchema.optional()
26658
+ }), ClipStreamDialSchema, {
26659
+ kind: "query",
26660
+ auth: "protected"
26532
26661
  })
26533
26662
  }
26534
26663
  };
@@ -39976,12 +40105,39 @@ function rank(type) {
39976
40105
  * must decide what an empty container means for it, rather than being handed a
39977
40106
  * child that is not there.
39978
40107
  */
40108
+ /**
40109
+ * Two names for the same thing, compared the way an integration writes them.
40110
+ *
40111
+ * An exact case-insensitive match was not enough, and the failure was total
40112
+ * rather than marginal. An ESPHome shutter arrives as a container named
40113
+ * `Tapparella-Cucina` whose children include the COVER, named `Tapparella
40114
+ * cucina`, and a device-presence entity carrying the slug verbatim,
40115
+ * `tapparella-cucina`. The slug matched the container exactly and the cover
40116
+ * did not, so the namesake tie-break handed the container to a connectivity
40117
+ * indicator — and the viewer's accessory panel, which correctly shows only
40118
+ * children with an actuating control, then rendered NOTHING. The operator saw
40119
+ * no shutters at all on cucina, studio and both veranda cameras (2026-09-22).
40120
+ *
40121
+ * `Markise` was the control case that proved the mechanism: there the cover
40122
+ * really is called exactly like its container, so it won and appeared.
40123
+ *
40124
+ * Separators are therefore normalised — `-`, `_` and whitespace are the same
40125
+ * character for this comparison, and runs of them collapse. The two candidates
40126
+ * then tie on the namesake and the decision falls through to `rank(type)`,
40127
+ * where `cover` is eighth and a `presence` entity is not listed at all. The
40128
+ * criterion keeps doing its job for a container whose child IS the namesake;
40129
+ * it stops being decided by which integration used a hyphen.
40130
+ */
40131
+ function sameName(childName, containerName) {
40132
+ const flatten = (v) => v.toLowerCase().replace(/[-_\s]+/g, " ").trim();
40133
+ return flatten(childName) === flatten(containerName);
40134
+ }
39979
40135
  function resolveContainerPrimaryChild(children, overrideEntityId, containerName) {
39980
40136
  if (overrideEntityId !== void 0 && overrideEntityId !== null) {
39981
40137
  const picked = children.find((c) => c.stableId === overrideEntityId) ?? children.find((c) => c.entityId !== void 0 && c.entityId === overrideEntityId);
39982
40138
  if (picked !== void 0) return picked;
39983
40139
  }
39984
- const namesake = (c) => containerName !== void 0 && containerName.length > 0 && c.name !== void 0 && c.name.toLowerCase() === containerName.toLowerCase() ? 0 : 1;
40140
+ const namesake = (c) => containerName !== void 0 && containerName.length > 0 && c.name !== void 0 && sameName(c.name, containerName) ? 0 : 1;
39985
40141
  return [...children].toSorted((a, b) => roleRank(a.role) - roleRank(b.role) || namesake(a) - namesake(b) || rank(a.type) - rank(b.type))[0] ?? null;
39986
40142
  }
39987
40143
  /** Marker written to a declared integration's `info`. */
@@ -40225,6 +40381,1329 @@ var DeclaredDevices = class {
40225
40381
  DeviceType.Cover, DeviceType.Valve, DeviceType.Humidifier, DeviceType.WaterHeater, DeviceType.Camera, DeviceType.Hub, DeviceType.Switch, DeviceType.Siren, DeviceType.Light, DeviceType.Fan, DeviceType.Sensor, DeviceType.Thermostat, DeviceType.Climate, DeviceType.Button, DeviceType.EventEmitter, DeviceType.Update, DeviceType.Generic, DeviceType.Notifier, DeviceType.Script, DeviceType.Automation, DeviceType.Lock, DeviceType.MediaPlayer, DeviceType.AlarmPanel, DeviceType.Control, DeviceType.Presence, DeviceType.Weather, DeviceType.Vacuum, DeviceType.LawnMower, DeviceType.Container, DeviceType.Image, DeviceType.PetFeeder;
40226
40382
  new Set(Object.values(DeviceType));
40227
40383
  DeviceFeature.BatteryOperated;
40384
+ /**
40385
+ * The vocabulary, in the order a picker offers it.
40386
+ *
40387
+ * Adding a key here is not enough to make it pickable: both glyph tables must
40388
+ * gain it too, and their tests fail until they do. That is the intended
40389
+ * friction — it is the only thing that keeps the two surfaces honest.
40390
+ */
40391
+ var DISPLAY_ICON_VOCABULARY = [
40392
+ {
40393
+ key: "camera",
40394
+ group: "device",
40395
+ synonyms: [
40396
+ "telecamera",
40397
+ "videocamera",
40398
+ "camera",
40399
+ "cam"
40400
+ ]
40401
+ },
40402
+ {
40403
+ key: "network",
40404
+ group: "device",
40405
+ synonyms: [
40406
+ "rete",
40407
+ "network",
40408
+ "lan"
40409
+ ]
40410
+ },
40411
+ {
40412
+ key: "toggle-left",
40413
+ group: "device",
40414
+ synonyms: [
40415
+ "interruttore",
40416
+ "switch",
40417
+ "toggle"
40418
+ ]
40419
+ },
40420
+ {
40421
+ key: "toggle-right",
40422
+ group: "device",
40423
+ synonyms: [
40424
+ "interruttore",
40425
+ "switch",
40426
+ "toggle",
40427
+ "acceso"
40428
+ ]
40429
+ },
40430
+ {
40431
+ key: "circle-dot",
40432
+ group: "device",
40433
+ synonyms: [
40434
+ "pulsante",
40435
+ "bottone",
40436
+ "button",
40437
+ "dot"
40438
+ ]
40439
+ },
40440
+ {
40441
+ key: "refresh-cw",
40442
+ group: "device",
40443
+ synonyms: [
40444
+ "aggiorna",
40445
+ "ricarica",
40446
+ "refresh",
40447
+ "reload",
40448
+ "ciclo"
40449
+ ]
40450
+ },
40451
+ {
40452
+ key: "box",
40453
+ group: "device",
40454
+ synonyms: [
40455
+ "scatola",
40456
+ "box",
40457
+ "contenitore"
40458
+ ]
40459
+ },
40460
+ {
40461
+ key: "scroll-text",
40462
+ group: "device",
40463
+ synonyms: [
40464
+ "registro",
40465
+ "log",
40466
+ "testo"
40467
+ ]
40468
+ },
40469
+ {
40470
+ key: "workflow",
40471
+ group: "device",
40472
+ synonyms: [
40473
+ "automazione",
40474
+ "flusso",
40475
+ "workflow",
40476
+ "scenario"
40477
+ ]
40478
+ },
40479
+ {
40480
+ key: "lock",
40481
+ group: "device",
40482
+ synonyms: [
40483
+ "serratura",
40484
+ "chiave",
40485
+ "lucchetto",
40486
+ "chiuso",
40487
+ "locked"
40488
+ ]
40489
+ },
40490
+ {
40491
+ key: "lock-open",
40492
+ group: "device",
40493
+ synonyms: [
40494
+ "serratura",
40495
+ "aperta",
40496
+ "sbloccato",
40497
+ "unlocked"
40498
+ ]
40499
+ },
40500
+ {
40501
+ key: "blinds",
40502
+ group: "device",
40503
+ synonyms: [
40504
+ "tapparella",
40505
+ "persiana",
40506
+ "serranda",
40507
+ "avvolgibile",
40508
+ "shutter",
40509
+ "blind",
40510
+ "veneziana"
40511
+ ]
40512
+ },
40513
+ {
40514
+ key: "air-vent",
40515
+ group: "device",
40516
+ synonyms: [
40517
+ "bocchetta",
40518
+ "aria",
40519
+ "ventilazione",
40520
+ "condizionatore",
40521
+ "vent"
40522
+ ]
40523
+ },
40524
+ {
40525
+ key: "monitor-play",
40526
+ group: "device",
40527
+ synonyms: [
40528
+ "schermo",
40529
+ "riproduzione",
40530
+ "player",
40531
+ "display"
40532
+ ]
40533
+ },
40534
+ {
40535
+ key: "sliders-horizontal",
40536
+ group: "device",
40537
+ synonyms: [
40538
+ "regolazione",
40539
+ "cursori",
40540
+ "impostazioni",
40541
+ "slider"
40542
+ ]
40543
+ },
40544
+ {
40545
+ key: "map-pin",
40546
+ group: "device",
40547
+ synonyms: [
40548
+ "posizione",
40549
+ "luogo",
40550
+ "mappa",
40551
+ "pin"
40552
+ ]
40553
+ },
40554
+ {
40555
+ key: "bot",
40556
+ group: "device",
40557
+ synonyms: [
40558
+ "robot",
40559
+ "aspirapolvere",
40560
+ "bot"
40561
+ ]
40562
+ },
40563
+ {
40564
+ key: "tractor",
40565
+ group: "device",
40566
+ synonyms: [
40567
+ "trattore",
40568
+ "tosaerba",
40569
+ "giardino"
40570
+ ]
40571
+ },
40572
+ {
40573
+ key: "image",
40574
+ group: "device",
40575
+ synonyms: [
40576
+ "immagine",
40577
+ "foto",
40578
+ "snapshot"
40579
+ ]
40580
+ },
40581
+ {
40582
+ key: "bone",
40583
+ group: "device",
40584
+ synonyms: ["osso", "cane"]
40585
+ },
40586
+ {
40587
+ key: "door-closed",
40588
+ group: "device",
40589
+ synonyms: [
40590
+ "porta",
40591
+ "chiusa",
40592
+ "contatto"
40593
+ ]
40594
+ },
40595
+ {
40596
+ key: "door-open",
40597
+ group: "device",
40598
+ synonyms: [
40599
+ "porta",
40600
+ "aperta",
40601
+ "contatto",
40602
+ "ingresso",
40603
+ "uscita"
40604
+ ]
40605
+ },
40606
+ {
40607
+ key: "crosshair",
40608
+ group: "device",
40609
+ synonyms: [
40610
+ "mirino",
40611
+ "puntamento",
40612
+ "centro"
40613
+ ]
40614
+ },
40615
+ {
40616
+ key: "eye",
40617
+ group: "device",
40618
+ synonyms: [
40619
+ "occhio",
40620
+ "visibile",
40621
+ "visto"
40622
+ ]
40623
+ },
40624
+ {
40625
+ key: "eye-off",
40626
+ group: "device",
40627
+ synonyms: [
40628
+ "privacy",
40629
+ "nascosto",
40630
+ "oscurato",
40631
+ "mascherato",
40632
+ "invisibile"
40633
+ ]
40634
+ },
40635
+ {
40636
+ key: "smartphone",
40637
+ group: "device",
40638
+ synonyms: [
40639
+ "telefono",
40640
+ "cellulare",
40641
+ "smartphone"
40642
+ ]
40643
+ },
40644
+ {
40645
+ key: "phone",
40646
+ group: "device",
40647
+ synonyms: ["telefono", "chiamata"]
40648
+ },
40649
+ {
40650
+ key: "tablet",
40651
+ group: "device",
40652
+ synonyms: ["tablet", "ipad"]
40653
+ },
40654
+ {
40655
+ key: "laptop",
40656
+ group: "device",
40657
+ synonyms: [
40658
+ "portatile",
40659
+ "laptop",
40660
+ "notebook"
40661
+ ]
40662
+ },
40663
+ {
40664
+ key: "monitor",
40665
+ group: "device",
40666
+ synonyms: ["monitor", "schermo"]
40667
+ },
40668
+ {
40669
+ key: "tv",
40670
+ group: "device",
40671
+ synonyms: ["televisore", "tv"]
40672
+ },
40673
+ {
40674
+ key: "speaker",
40675
+ group: "device",
40676
+ synonyms: [
40677
+ "altoparlante",
40678
+ "cassa",
40679
+ "speaker"
40680
+ ]
40681
+ },
40682
+ {
40683
+ key: "printer",
40684
+ group: "device",
40685
+ synonyms: ["stampante"]
40686
+ },
40687
+ {
40688
+ key: "projector",
40689
+ group: "device",
40690
+ synonyms: ["proiettore"]
40691
+ },
40692
+ {
40693
+ key: "gamepad-2",
40694
+ group: "device",
40695
+ synonyms: [
40696
+ "console",
40697
+ "gioco",
40698
+ "joystick"
40699
+ ]
40700
+ },
40701
+ {
40702
+ key: "radio",
40703
+ group: "device",
40704
+ synonyms: ["radio"]
40705
+ },
40706
+ {
40707
+ key: "router",
40708
+ group: "device",
40709
+ synonyms: ["router", "modem"]
40710
+ },
40711
+ {
40712
+ key: "bluetooth",
40713
+ group: "device",
40714
+ synonyms: ["bluetooth"]
40715
+ },
40716
+ {
40717
+ key: "cpu",
40718
+ group: "device",
40719
+ synonyms: [
40720
+ "processore",
40721
+ "cpu",
40722
+ "chip",
40723
+ "dispositivo"
40724
+ ]
40725
+ },
40726
+ {
40727
+ key: "hard-drive",
40728
+ group: "device",
40729
+ synonyms: [
40730
+ "disco",
40731
+ "hdd",
40732
+ "archiviazione",
40733
+ "storage"
40734
+ ]
40735
+ },
40736
+ {
40737
+ key: "server",
40738
+ group: "device",
40739
+ synonyms: ["server", "nas"]
40740
+ },
40741
+ {
40742
+ key: "mic",
40743
+ group: "device",
40744
+ synonyms: ["microfono", "audio"]
40745
+ },
40746
+ {
40747
+ key: "mic-off",
40748
+ group: "device",
40749
+ synonyms: [
40750
+ "microfono",
40751
+ "spento",
40752
+ "muto"
40753
+ ]
40754
+ },
40755
+ {
40756
+ key: "video",
40757
+ group: "device",
40758
+ synonyms: ["video"]
40759
+ },
40760
+ {
40761
+ key: "video-off",
40762
+ group: "device",
40763
+ synonyms: ["video", "spento"]
40764
+ },
40765
+ {
40766
+ key: "music",
40767
+ group: "device",
40768
+ synonyms: ["musica"]
40769
+ },
40770
+ {
40771
+ key: "plug",
40772
+ group: "device",
40773
+ synonyms: [
40774
+ "presa",
40775
+ "spina",
40776
+ "plug"
40777
+ ]
40778
+ },
40779
+ {
40780
+ key: "plug-zap",
40781
+ group: "device",
40782
+ synonyms: ["presa", "alimentata"]
40783
+ },
40784
+ {
40785
+ key: "power",
40786
+ group: "device",
40787
+ synonyms: [
40788
+ "accensione",
40789
+ "alimentazione",
40790
+ "power"
40791
+ ]
40792
+ },
40793
+ {
40794
+ key: "power-off",
40795
+ group: "device",
40796
+ synonyms: ["spegnimento", "spento"]
40797
+ },
40798
+ {
40799
+ key: "cable",
40800
+ group: "device",
40801
+ synonyms: ["cavo"]
40802
+ },
40803
+ {
40804
+ key: "battery",
40805
+ group: "device",
40806
+ synonyms: ["batteria"]
40807
+ },
40808
+ {
40809
+ key: "battery-charging",
40810
+ group: "device",
40811
+ synonyms: [
40812
+ "batteria",
40813
+ "carica",
40814
+ "ricarica"
40815
+ ]
40816
+ },
40817
+ {
40818
+ key: "battery-full",
40819
+ group: "device",
40820
+ synonyms: [
40821
+ "batteria",
40822
+ "carica",
40823
+ "piena"
40824
+ ]
40825
+ },
40826
+ {
40827
+ key: "battery-low",
40828
+ group: "device",
40829
+ synonyms: ["batteria", "scarica"]
40830
+ },
40831
+ {
40832
+ key: "key",
40833
+ group: "device",
40834
+ synonyms: ["chiave"]
40835
+ },
40836
+ {
40837
+ key: "key-round",
40838
+ group: "device",
40839
+ synonyms: ["chiave", "tonda"]
40840
+ },
40841
+ {
40842
+ key: "mailbox",
40843
+ group: "device",
40844
+ synonyms: [
40845
+ "cassetta",
40846
+ "postale",
40847
+ "posta"
40848
+ ]
40849
+ },
40850
+ {
40851
+ key: "package",
40852
+ group: "device",
40853
+ synonyms: ["pacco", "consegna"]
40854
+ },
40855
+ {
40856
+ key: "shield",
40857
+ group: "device",
40858
+ synonyms: [
40859
+ "scudo",
40860
+ "protezione",
40861
+ "sicurezza",
40862
+ "allarme"
40863
+ ]
40864
+ },
40865
+ {
40866
+ key: "shield-check",
40867
+ group: "device",
40868
+ synonyms: [
40869
+ "protetto",
40870
+ "sicuro",
40871
+ "armato"
40872
+ ]
40873
+ },
40874
+ {
40875
+ key: "shield-off",
40876
+ group: "device",
40877
+ synonyms: [
40878
+ "protezione",
40879
+ "disattivata",
40880
+ "disarmato"
40881
+ ]
40882
+ },
40883
+ {
40884
+ key: "briefcase",
40885
+ group: "device",
40886
+ synonyms: [
40887
+ "ufficio",
40888
+ "lavoro",
40889
+ "valigetta",
40890
+ "studio"
40891
+ ]
40892
+ },
40893
+ {
40894
+ key: "lightbulb",
40895
+ group: "lighting",
40896
+ synonyms: [
40897
+ "luce",
40898
+ "lampadina",
40899
+ "lampada",
40900
+ "light"
40901
+ ]
40902
+ },
40903
+ {
40904
+ key: "lamp",
40905
+ group: "lighting",
40906
+ synonyms: ["lampada", "abatjour"]
40907
+ },
40908
+ {
40909
+ key: "lamp-ceiling",
40910
+ group: "lighting",
40911
+ synonyms: [
40912
+ "plafoniera",
40913
+ "lampadario",
40914
+ "luce",
40915
+ "soffitto"
40916
+ ]
40917
+ },
40918
+ {
40919
+ key: "lamp-desk",
40920
+ group: "lighting",
40921
+ synonyms: [
40922
+ "lampada",
40923
+ "scrivania",
40924
+ "abatjour"
40925
+ ]
40926
+ },
40927
+ {
40928
+ key: "lamp-floor",
40929
+ group: "lighting",
40930
+ synonyms: [
40931
+ "piantana",
40932
+ "lampada",
40933
+ "terra"
40934
+ ]
40935
+ },
40936
+ {
40937
+ key: "flashlight",
40938
+ group: "lighting",
40939
+ synonyms: [
40940
+ "faretto",
40941
+ "torcia",
40942
+ "spot",
40943
+ "faro"
40944
+ ]
40945
+ },
40946
+ {
40947
+ key: "heater",
40948
+ group: "lighting",
40949
+ synonyms: [
40950
+ "riscaldamento",
40951
+ "termosifone",
40952
+ "stufa",
40953
+ "calore"
40954
+ ]
40955
+ },
40956
+ {
40957
+ key: "snowflake",
40958
+ group: "lighting",
40959
+ synonyms: [
40960
+ "freddo",
40961
+ "raffrescamento",
40962
+ "aria",
40963
+ "condizionata",
40964
+ "neve"
40965
+ ]
40966
+ },
40967
+ {
40968
+ key: "thermometer-sun",
40969
+ group: "lighting",
40970
+ synonyms: [
40971
+ "caldo",
40972
+ "temperatura",
40973
+ "alta"
40974
+ ]
40975
+ },
40976
+ {
40977
+ key: "thermometer-snowflake",
40978
+ group: "lighting",
40979
+ synonyms: [
40980
+ "freddo",
40981
+ "temperatura",
40982
+ "bassa"
40983
+ ]
40984
+ },
40985
+ {
40986
+ key: "refrigerator",
40987
+ group: "lighting",
40988
+ synonyms: ["frigorifero", "frigo"]
40989
+ },
40990
+ {
40991
+ key: "microwave",
40992
+ group: "lighting",
40993
+ synonyms: ["microonde", "forno"]
40994
+ },
40995
+ {
40996
+ key: "washing-machine",
40997
+ group: "lighting",
40998
+ synonyms: [
40999
+ "lavatrice",
41000
+ "lavastoviglie",
41001
+ "asciugatrice"
41002
+ ]
41003
+ },
41004
+ {
41005
+ key: "cooking-pot",
41006
+ group: "lighting",
41007
+ synonyms: [
41008
+ "pentola",
41009
+ "cucina",
41010
+ "fornello"
41011
+ ]
41012
+ },
41013
+ {
41014
+ key: "utensils",
41015
+ group: "lighting",
41016
+ synonyms: [
41017
+ "cucina",
41018
+ "posate",
41019
+ "sala",
41020
+ "pranzo"
41021
+ ]
41022
+ },
41023
+ {
41024
+ key: "thermometer",
41025
+ group: "sensing",
41026
+ synonyms: [
41027
+ "temperatura",
41028
+ "termometro",
41029
+ "termostato"
41030
+ ]
41031
+ },
41032
+ {
41033
+ key: "droplets",
41034
+ group: "sensing",
41035
+ synonyms: [
41036
+ "umidita",
41037
+ "acqua",
41038
+ "allagamento",
41039
+ "perdita"
41040
+ ]
41041
+ },
41042
+ {
41043
+ key: "droplet",
41044
+ group: "sensing",
41045
+ synonyms: [
41046
+ "goccia",
41047
+ "acqua",
41048
+ "perdita",
41049
+ "allagamento"
41050
+ ]
41051
+ },
41052
+ {
41053
+ key: "gauge",
41054
+ group: "sensing",
41055
+ synonyms: [
41056
+ "misura",
41057
+ "livello",
41058
+ "pressione",
41059
+ "indicatore"
41060
+ ]
41061
+ },
41062
+ {
41063
+ key: "gauge2",
41064
+ group: "sensing",
41065
+ synonyms: [
41066
+ "misura",
41067
+ "livello",
41068
+ "pressione",
41069
+ "indicatore"
41070
+ ],
41071
+ aliasOf: "gauge"
41072
+ },
41073
+ {
41074
+ key: "sun",
41075
+ group: "sensing",
41076
+ synonyms: [
41077
+ "sole",
41078
+ "luminosita",
41079
+ "giorno",
41080
+ "esterno"
41081
+ ]
41082
+ },
41083
+ {
41084
+ key: "sun-medium",
41085
+ group: "sensing",
41086
+ synonyms: ["sole", "luminosita"]
41087
+ },
41088
+ {
41089
+ key: "sunrise",
41090
+ group: "sensing",
41091
+ synonyms: ["alba"]
41092
+ },
41093
+ {
41094
+ key: "moon",
41095
+ group: "sensing",
41096
+ synonyms: [
41097
+ "notte",
41098
+ "luna",
41099
+ "notturna",
41100
+ "nightvision"
41101
+ ]
41102
+ },
41103
+ {
41104
+ key: "wind",
41105
+ group: "sensing",
41106
+ synonyms: [
41107
+ "vento",
41108
+ "aria",
41109
+ "gas",
41110
+ "monossido",
41111
+ "co"
41112
+ ]
41113
+ },
41114
+ {
41115
+ key: "cloud",
41116
+ group: "sensing",
41117
+ synonyms: ["nuvola", "nuvoloso"]
41118
+ },
41119
+ {
41120
+ key: "cloud-rain",
41121
+ group: "sensing",
41122
+ synonyms: ["pioggia"]
41123
+ },
41124
+ {
41125
+ key: "cloud-sun",
41126
+ group: "sensing",
41127
+ synonyms: [
41128
+ "variabile",
41129
+ "sole",
41130
+ "nuvole"
41131
+ ]
41132
+ },
41133
+ {
41134
+ key: "waves",
41135
+ group: "sensing",
41136
+ synonyms: [
41137
+ "onde",
41138
+ "acqua",
41139
+ "vibrazione"
41140
+ ]
41141
+ },
41142
+ {
41143
+ key: "sprout",
41144
+ group: "sensing",
41145
+ synonyms: [
41146
+ "irrigazione",
41147
+ "pianta",
41148
+ "germoglio",
41149
+ "orto"
41150
+ ]
41151
+ },
41152
+ {
41153
+ key: "leaf",
41154
+ group: "sensing",
41155
+ synonyms: [
41156
+ "foglia",
41157
+ "pianta",
41158
+ "verde"
41159
+ ]
41160
+ },
41161
+ {
41162
+ key: "flower",
41163
+ group: "sensing",
41164
+ synonyms: ["fiore", "pianta"]
41165
+ },
41166
+ {
41167
+ key: "zap",
41168
+ group: "sensing",
41169
+ synonyms: [
41170
+ "energia",
41171
+ "corrente",
41172
+ "consumo",
41173
+ "watt",
41174
+ "elettricita"
41175
+ ]
41176
+ },
41177
+ {
41178
+ key: "flame",
41179
+ group: "sensing",
41180
+ synonyms: [
41181
+ "fiamma",
41182
+ "gas",
41183
+ "fuoco",
41184
+ "incendio"
41185
+ ]
41186
+ },
41187
+ {
41188
+ key: "bell",
41189
+ group: "sensing",
41190
+ synonyms: [
41191
+ "campanello",
41192
+ "suoneria",
41193
+ "notifica",
41194
+ "bell",
41195
+ "chime"
41196
+ ]
41197
+ },
41198
+ {
41199
+ key: "bell-ring",
41200
+ group: "sensing",
41201
+ synonyms: [
41202
+ "campanello",
41203
+ "suona",
41204
+ "doorbell",
41205
+ "notifica"
41206
+ ]
41207
+ },
41208
+ {
41209
+ key: "bell-off",
41210
+ group: "sensing",
41211
+ synonyms: [
41212
+ "silenzioso",
41213
+ "notifiche",
41214
+ "disattivate",
41215
+ "muto"
41216
+ ]
41217
+ },
41218
+ {
41219
+ key: "siren",
41220
+ group: "sensing",
41221
+ synonyms: ["sirena", "allarme"]
41222
+ },
41223
+ {
41224
+ key: "radar",
41225
+ group: "sensing",
41226
+ synonyms: [
41227
+ "movimento",
41228
+ "presenza",
41229
+ "pir",
41230
+ "rilevamento",
41231
+ "radar"
41232
+ ]
41233
+ },
41234
+ {
41235
+ key: "activity",
41236
+ group: "sensing",
41237
+ synonyms: [
41238
+ "attivita",
41239
+ "sensore",
41240
+ "generico"
41241
+ ]
41242
+ },
41243
+ {
41244
+ key: "hash",
41245
+ group: "sensing",
41246
+ synonyms: [
41247
+ "numero",
41248
+ "contatore",
41249
+ "valore"
41250
+ ]
41251
+ },
41252
+ {
41253
+ key: "clock",
41254
+ group: "sensing",
41255
+ synonyms: [
41256
+ "orologio",
41257
+ "ora",
41258
+ "tempo"
41259
+ ]
41260
+ },
41261
+ {
41262
+ key: "timer",
41263
+ group: "sensing",
41264
+ synonyms: [
41265
+ "timer",
41266
+ "conto",
41267
+ "rovescia"
41268
+ ]
41269
+ },
41270
+ {
41271
+ key: "calendar",
41272
+ group: "sensing",
41273
+ synonyms: [
41274
+ "calendario",
41275
+ "data",
41276
+ "pianificazione"
41277
+ ]
41278
+ },
41279
+ {
41280
+ key: "pipette",
41281
+ group: "sensing",
41282
+ synonyms: [
41283
+ "qualita",
41284
+ "aria",
41285
+ "misura",
41286
+ "campione"
41287
+ ]
41288
+ },
41289
+ {
41290
+ key: "fan",
41291
+ group: "sensing",
41292
+ synonyms: [
41293
+ "ventilatore",
41294
+ "ventola",
41295
+ "aria"
41296
+ ]
41297
+ },
41298
+ {
41299
+ key: "bath",
41300
+ group: "sensing",
41301
+ synonyms: [
41302
+ "bagno",
41303
+ "vasca",
41304
+ "doccia"
41305
+ ]
41306
+ },
41307
+ {
41308
+ key: "footprints",
41309
+ group: "sensing",
41310
+ synonyms: [
41311
+ "movimento",
41312
+ "passi",
41313
+ "presenza",
41314
+ "motion"
41315
+ ]
41316
+ },
41317
+ {
41318
+ key: "alarm-smoke",
41319
+ group: "sensing",
41320
+ synonyms: [
41321
+ "fumo",
41322
+ "antincendio",
41323
+ "rilevatore"
41324
+ ]
41325
+ },
41326
+ {
41327
+ key: "shield-alert",
41328
+ group: "sensing",
41329
+ synonyms: [
41330
+ "manomissione",
41331
+ "allarme",
41332
+ "tamper",
41333
+ "avviso"
41334
+ ]
41335
+ },
41336
+ {
41337
+ key: "vibrate",
41338
+ group: "sensing",
41339
+ synonyms: [
41340
+ "vibrazione",
41341
+ "urto",
41342
+ "tamper"
41343
+ ]
41344
+ },
41345
+ {
41346
+ key: "wifi",
41347
+ group: "sensing",
41348
+ synonyms: [
41349
+ "wifi",
41350
+ "rete",
41351
+ "segnale"
41352
+ ]
41353
+ },
41354
+ {
41355
+ key: "wifi-off",
41356
+ group: "sensing",
41357
+ synonyms: [
41358
+ "wifi",
41359
+ "assente",
41360
+ "offline",
41361
+ "disconnesso"
41362
+ ]
41363
+ },
41364
+ {
41365
+ key: "volume-2",
41366
+ group: "sensing",
41367
+ synonyms: [
41368
+ "volume",
41369
+ "audio",
41370
+ "altoparlante",
41371
+ "suono"
41372
+ ]
41373
+ },
41374
+ {
41375
+ key: "volume-x",
41376
+ group: "sensing",
41377
+ synonyms: [
41378
+ "muto",
41379
+ "silenziato",
41380
+ "volume",
41381
+ "spento"
41382
+ ]
41383
+ },
41384
+ {
41385
+ key: "heart",
41386
+ group: "sensing",
41387
+ synonyms: [
41388
+ "cuore",
41389
+ "preferito",
41390
+ "salute"
41391
+ ]
41392
+ },
41393
+ {
41394
+ key: "heart-pulse",
41395
+ group: "sensing",
41396
+ synonyms: [
41397
+ "battito",
41398
+ "salute",
41399
+ "monitoraggio"
41400
+ ]
41401
+ },
41402
+ {
41403
+ key: "star",
41404
+ group: "sensing",
41405
+ synonyms: [
41406
+ "preferito",
41407
+ "stella",
41408
+ "importante"
41409
+ ]
41410
+ },
41411
+ {
41412
+ key: "sparkles",
41413
+ group: "sensing",
41414
+ synonyms: [
41415
+ "automatico",
41416
+ "intelligente",
41417
+ "ai",
41418
+ "scena"
41419
+ ]
41420
+ },
41421
+ {
41422
+ key: "house",
41423
+ group: "place",
41424
+ synonyms: [
41425
+ "casa",
41426
+ "abitazione",
41427
+ "home"
41428
+ ]
41429
+ },
41430
+ {
41431
+ key: "sofa",
41432
+ group: "place",
41433
+ synonyms: [
41434
+ "salone",
41435
+ "soggiorno",
41436
+ "divano",
41437
+ "living"
41438
+ ]
41439
+ },
41440
+ {
41441
+ key: "bed-double",
41442
+ group: "place",
41443
+ synonyms: [
41444
+ "camera",
41445
+ "letto",
41446
+ "matrimoniale"
41447
+ ]
41448
+ },
41449
+ {
41450
+ key: "bed",
41451
+ group: "place",
41452
+ synonyms: [
41453
+ "cameretta",
41454
+ "letto",
41455
+ "singolo"
41456
+ ]
41457
+ },
41458
+ {
41459
+ key: "warehouse",
41460
+ group: "place",
41461
+ synonyms: [
41462
+ "magazzino",
41463
+ "capanno",
41464
+ "deposito",
41465
+ "cantina"
41466
+ ]
41467
+ },
41468
+ {
41469
+ key: "trees",
41470
+ group: "place",
41471
+ synonyms: [
41472
+ "giardino",
41473
+ "alberi",
41474
+ "esterno",
41475
+ "parco"
41476
+ ]
41477
+ },
41478
+ {
41479
+ key: "tree-pine",
41480
+ group: "place",
41481
+ synonyms: [
41482
+ "albero",
41483
+ "pino",
41484
+ "giardino"
41485
+ ]
41486
+ },
41487
+ {
41488
+ key: "fence",
41489
+ group: "place",
41490
+ synonyms: [
41491
+ "recinto",
41492
+ "cancello",
41493
+ "staccionata",
41494
+ "perimetro"
41495
+ ]
41496
+ },
41497
+ {
41498
+ key: "store",
41499
+ group: "place",
41500
+ synonyms: [
41501
+ "negozio",
41502
+ "ingresso",
41503
+ "vetrina"
41504
+ ]
41505
+ },
41506
+ {
41507
+ key: "building",
41508
+ group: "place",
41509
+ synonyms: ["edificio", "palazzo"]
41510
+ },
41511
+ {
41512
+ key: "building-2",
41513
+ group: "place",
41514
+ synonyms: [
41515
+ "edificio",
41516
+ "uffici",
41517
+ "condominio"
41518
+ ]
41519
+ },
41520
+ {
41521
+ key: "mountain",
41522
+ group: "place",
41523
+ synonyms: [
41524
+ "montagna",
41525
+ "esterno",
41526
+ "panorama"
41527
+ ]
41528
+ },
41529
+ {
41530
+ key: "umbrella",
41531
+ group: "place",
41532
+ synonyms: [
41533
+ "tenda",
41534
+ "markise",
41535
+ "ombrellone",
41536
+ "pergola",
41537
+ "veranda"
41538
+ ]
41539
+ },
41540
+ {
41541
+ key: "dumbbell",
41542
+ group: "place",
41543
+ synonyms: ["palestra", "attrezzi"]
41544
+ },
41545
+ {
41546
+ key: "wrench",
41547
+ group: "place",
41548
+ synonyms: [
41549
+ "officina",
41550
+ "manutenzione",
41551
+ "attrezzi",
41552
+ "utenze"
41553
+ ]
41554
+ },
41555
+ {
41556
+ key: "hammer",
41557
+ group: "place",
41558
+ synonyms: [
41559
+ "officina",
41560
+ "martello",
41561
+ "lavori"
41562
+ ]
41563
+ },
41564
+ {
41565
+ key: "drill",
41566
+ group: "place",
41567
+ synonyms: [
41568
+ "officina",
41569
+ "trapano",
41570
+ "lavori"
41571
+ ]
41572
+ },
41573
+ {
41574
+ key: "waves-ladder",
41575
+ group: "place",
41576
+ synonyms: ["piscina", "vasca"]
41577
+ },
41578
+ {
41579
+ key: "circle-parking",
41580
+ group: "place",
41581
+ synonyms: [
41582
+ "parcheggio",
41583
+ "posto",
41584
+ "auto",
41585
+ "garage"
41586
+ ]
41587
+ },
41588
+ {
41589
+ key: "route",
41590
+ group: "place",
41591
+ synonyms: [
41592
+ "percorso",
41593
+ "strada",
41594
+ "vialetto",
41595
+ "tragitto"
41596
+ ]
41597
+ },
41598
+ {
41599
+ key: "car",
41600
+ group: "life",
41601
+ synonyms: [
41602
+ "auto",
41603
+ "macchina",
41604
+ "veicolo",
41605
+ "parcheggio"
41606
+ ]
41607
+ },
41608
+ {
41609
+ key: "bike",
41610
+ group: "life",
41611
+ synonyms: [
41612
+ "bicicletta",
41613
+ "bici",
41614
+ "moto"
41615
+ ]
41616
+ },
41617
+ {
41618
+ key: "bus",
41619
+ group: "life",
41620
+ synonyms: ["autobus", "pullman"]
41621
+ },
41622
+ {
41623
+ key: "truck",
41624
+ group: "life",
41625
+ synonyms: [
41626
+ "camion",
41627
+ "furgone",
41628
+ "consegna"
41629
+ ]
41630
+ },
41631
+ {
41632
+ key: "plane",
41633
+ group: "life",
41634
+ synonyms: ["aereo"]
41635
+ },
41636
+ {
41637
+ key: "train-front",
41638
+ group: "life",
41639
+ synonyms: ["treno"]
41640
+ },
41641
+ {
41642
+ key: "sailboat",
41643
+ group: "life",
41644
+ synonyms: ["barca", "imbarcazione"]
41645
+ },
41646
+ {
41647
+ key: "dog",
41648
+ group: "life",
41649
+ synonyms: ["cane", "animale"]
41650
+ },
41651
+ {
41652
+ key: "cat",
41653
+ group: "life",
41654
+ synonyms: ["gatto", "animale"]
41655
+ },
41656
+ {
41657
+ key: "bird",
41658
+ group: "life",
41659
+ synonyms: ["uccello", "animale"]
41660
+ },
41661
+ {
41662
+ key: "paw-print",
41663
+ group: "life",
41664
+ synonyms: [
41665
+ "animale",
41666
+ "zampa",
41667
+ "pet"
41668
+ ]
41669
+ },
41670
+ {
41671
+ key: "baby",
41672
+ group: "life",
41673
+ synonyms: [
41674
+ "neonato",
41675
+ "bimbo",
41676
+ "cameretta",
41677
+ "babymonitor"
41678
+ ]
41679
+ },
41680
+ {
41681
+ key: "user",
41682
+ group: "life",
41683
+ synonyms: ["persona", "utente"]
41684
+ },
41685
+ {
41686
+ key: "users",
41687
+ group: "life",
41688
+ synonyms: [
41689
+ "persone",
41690
+ "gruppo",
41691
+ "famiglia"
41692
+ ]
41693
+ },
41694
+ {
41695
+ key: "person-standing",
41696
+ group: "life",
41697
+ synonyms: [
41698
+ "persona",
41699
+ "piedi",
41700
+ "presenza"
41701
+ ]
41702
+ }
41703
+ ];
41704
+ DISPLAY_ICON_VOCABULARY.map((e) => e.key);
41705
+ DISPLAY_ICON_VOCABULARY.filter((e) => e.aliasOf === void 0).map((e) => e.key);
41706
+ new Map(DISPLAY_ICON_VOCABULARY.map((e) => [e.key, e]));
40228
41707
  /** Unwrap ZodNullable / ZodOptional / ZodDefault wrappers to reach the inner type.
40229
41708
  * Zod v4 exposes `.unwrap()` on all three wrapper classes. */
40230
41709
  function unwrap(schema) {
@@ -47319,6 +48798,12 @@ var METHOD_ACCESS_MAP = Object.freeze({
47319
48798
  addonId: null,
47320
48799
  access: "view"
47321
48800
  },
48801
+ "videoclips.dialClipStream": {
48802
+ capName: "videoclips",
48803
+ capScope: "device",
48804
+ addonId: null,
48805
+ access: "view"
48806
+ },
47322
48807
  "videoclips.getClipPlayback": {
47323
48808
  capName: "videoclips",
47324
48809
  capScope: "device",
@@ -49358,6 +50843,11 @@ Object.freeze({
49358
50843
  form: "single",
49359
50844
  optional: false
49360
50845
  }],
50846
+ "videoclips.dialClipStream": [{
50847
+ name: "deviceId",
50848
+ form: "single",
50849
+ optional: false
50850
+ }],
49361
50851
  "videoclips.getClipPlayback": [{
49362
50852
  name: "deviceId",
49363
50853
  form: "single",