@camstack/server 0.1.7 → 0.1.8

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 (29) hide show
  1. package/package.json +3 -3
  2. package/src/__tests__/cap-providers/cap-providers-location-import.spec.ts +186 -0
  3. package/src/__tests__/cap-providers/integrations-delete-cascade.spec.ts +243 -0
  4. package/src/__tests__/cap-routers/broker-routing.router.spec.ts +169 -0
  5. package/src/__tests__/cap-routers/device-link-overlay.spec.ts +132 -0
  6. package/src/__tests__/moleculer/uds-unowned-call.spec.ts +209 -3
  7. package/src/api/core/__tests__/integration-markers.spec.ts +10 -0
  8. package/src/api/core/cap-providers.ts +152 -3
  9. package/src/api/core/logs.router.ts +4 -0
  10. package/src/api/trpc/__tests__/client-ip.spec.ts +27 -1
  11. package/src/api/trpc/__tests__/webrtc-session-ua-enrich.spec.ts +128 -0
  12. package/src/api/trpc/cap-mount-helpers.ts +12 -1
  13. package/src/api/trpc/client-ip.ts +17 -0
  14. package/src/api/trpc/generated-cap-mounts.ts +281 -8
  15. package/src/api/trpc/generated-cap-routers.ts +2087 -184
  16. package/src/api/trpc/trpc.router.ts +43 -7
  17. package/src/boot/__tests__/integration-id-backfill.spec.ts +116 -0
  18. package/src/boot/integration-id-backfill.ts +109 -0
  19. package/src/core/addon/__tests__/addon-row-manifest.spec.ts +62 -0
  20. package/src/core/addon/addon-registry.service.ts +89 -2
  21. package/src/core/addon/addon-row-manifest.ts +29 -0
  22. package/src/core/logging/logging.service.ts +7 -2
  23. package/src/core/moleculer/moleculer.service.ts +28 -0
  24. package/src/core/network/network-quality.service.spec.ts +2 -1
  25. package/src/main.ts +92 -0
  26. package/src/core/storage/settings-store.spec.ts +0 -213
  27. package/src/core/storage/settings-store.ts +0 -2
  28. package/src/core/storage/sql-schema.spec.ts +0 -140
  29. package/src/core/storage/sql-schema.ts +0 -3
@@ -1,7 +1,7 @@
1
1
  // AUTO-GENERATED by scripts/generate-cap-mounts.ts — DO NOT EDIT
2
2
  // Re-run: npx tsx scripts/generate-cap-mounts.ts
3
3
  //
4
- // Mounted: 81 Skipped (legacy): 6
4
+ // Mounted: 123 Skipped (legacy): 6
5
5
 
6
6
  /**
7
7
  * Single auto-mount entrypoint for every codegen'd cap router.
@@ -39,19 +39,35 @@ import {
39
39
  addonsCapability,
40
40
  adminUiCapability,
41
41
  advancedNotifierCapability,
42
+ airQualitySensorCapability,
43
+ alarmPanelCapability,
42
44
  alertsCapability,
45
+ ambientLightSensorCapability,
43
46
  audioAnalysisCapability,
44
47
  audioAnalyzerCapability,
45
48
  audioCodecCapability,
46
49
  audioMetricsCapability,
50
+ automationControlCapability,
47
51
  backupCapability,
48
52
  batteryCapability,
53
+ binaryCapability,
49
54
  brightnessCapability,
55
+ brokerCapability,
56
+ buttonCapability,
50
57
  cameraCredentialsCapability,
51
58
  cameraPipelineConfigCapability,
52
59
  cameraStreamsCapability,
60
+ carbonMonoxideCapability,
61
+ climateControlCapability,
62
+ colorCapability,
63
+ connectivityCapability,
64
+ consumablesCapability,
65
+ contactCapability,
66
+ controlCapability,
67
+ coverCapability,
53
68
  decoderCapability,
54
69
  detectionPipelineCapability,
70
+ deviceAdoptionCapability,
55
71
  deviceDiscoveryCapability,
56
72
  deviceExportCapability,
57
73
  deviceManagerCapability,
@@ -61,11 +77,22 @@ import {
61
77
  deviceStatusCapability,
62
78
  doorbellCapability,
63
79
  embeddingEncoderCapability,
80
+ enumSensorCapability,
81
+ eventEmitterCapability,
64
82
  eventsCapability,
83
+ fanControlCapability,
65
84
  featureProbeCapability,
85
+ floodCapability,
86
+ gasCapability,
87
+ humidifierCapability,
88
+ humiditySensorCapability,
89
+ imageCapability,
66
90
  integrationsCapability,
67
91
  intercomCapability,
92
+ lawnMowerControlCapability,
68
93
  localNetworkCapability,
94
+ lockControlCapability,
95
+ mediaPlayerCapability,
69
96
  meshNetworkCapability,
70
97
  metricsProviderCapability,
71
98
  motionCapability,
@@ -78,6 +105,8 @@ import {
78
105
  networkQualityCapability,
79
106
  nodesCapability,
80
107
  notificationOutputCapability,
108
+ notifierCapability,
109
+ numericSensorCapability,
81
110
  oauthIntegrationCapability,
82
111
  osdCapability,
83
112
  pipelineAnalyticsCapability,
@@ -85,28 +114,41 @@ import {
85
114
  pipelineOrchestratorCapability,
86
115
  pipelineRunnerCapability,
87
116
  platformProbeCapability,
117
+ powerMeterCapability,
118
+ presenceCapability,
119
+ pressureSensorCapability,
88
120
  privacyMaskCapability,
89
121
  ptzAutotrackCapability,
90
122
  ptzCapability,
91
123
  rebootCapability,
92
124
  recordingCapability,
93
- recordingEngineCapability,
125
+ scriptRunnerCapability,
94
126
  settingsStoreCapability,
127
+ smokeCapability,
95
128
  smtpProviderCapability,
96
129
  snapshotCapability,
97
130
  snapshotProviderCapability,
98
131
  ssoBridgeCapability,
99
132
  storageCapability,
133
+ storageEvictableCapability,
100
134
  storageProviderCapability,
101
135
  streamBrokerCapability,
102
136
  streamCatalogCapability,
103
137
  streamParamsCapability,
104
138
  switchCapability,
105
139
  systemCapability,
140
+ tamperCapability,
141
+ temperatureSensorCapability,
106
142
  toastCapability,
107
143
  turnProviderCapability,
144
+ updateCapability,
108
145
  userManagementCapability,
109
146
  userPasskeysCapability,
147
+ vacuumControlCapability,
148
+ valveCapability,
149
+ vibrationCapability,
150
+ waterHeaterCapability,
151
+ weatherCapability,
110
152
  webrtcSessionCapability,
111
153
  zoneAnalyticsCapability,
112
154
  zoneRulesCapability,
@@ -124,19 +166,35 @@ import {
124
166
  createCapRouter_addons,
125
167
  createCapRouter_adminUi,
126
168
  createCapRouter_advancedNotifier,
169
+ createCapRouter_airQualitySensor,
170
+ createCapRouter_alarmPanel,
127
171
  createCapRouter_alerts,
172
+ createCapRouter_ambientLightSensor,
128
173
  createCapRouter_audioAnalysis,
129
174
  createCapRouter_audioAnalyzer,
130
175
  createCapRouter_audioCodec,
131
176
  createCapRouter_audioMetrics,
177
+ createCapRouter_automationControl,
132
178
  createCapRouter_backup,
133
179
  createCapRouter_battery,
180
+ createCapRouter_binary,
134
181
  createCapRouter_brightness,
182
+ createCapRouter_broker,
183
+ createCapRouter_button,
135
184
  createCapRouter_cameraCredentials,
136
185
  createCapRouter_cameraPipelineConfig,
137
186
  createCapRouter_cameraStreams,
187
+ createCapRouter_carbonMonoxide,
188
+ createCapRouter_climateControl,
189
+ createCapRouter_color,
190
+ createCapRouter_connectivity,
191
+ createCapRouter_consumables,
192
+ createCapRouter_contact,
193
+ createCapRouter_control,
194
+ createCapRouter_cover,
138
195
  createCapRouter_decoder,
139
196
  createCapRouter_detectionPipeline,
197
+ createCapRouter_deviceAdoption,
140
198
  createCapRouter_deviceDiscovery,
141
199
  createCapRouter_deviceExport,
142
200
  createCapRouter_deviceManager,
@@ -146,11 +204,22 @@ import {
146
204
  createCapRouter_deviceStatus,
147
205
  createCapRouter_doorbell,
148
206
  createCapRouter_embeddingEncoder,
207
+ createCapRouter_enumSensor,
208
+ createCapRouter_eventEmitter,
149
209
  createCapRouter_events,
210
+ createCapRouter_fanControl,
150
211
  createCapRouter_featureProbe,
212
+ createCapRouter_flood,
213
+ createCapRouter_gas,
214
+ createCapRouter_humidifier,
215
+ createCapRouter_humiditySensor,
216
+ createCapRouter_image,
151
217
  createCapRouter_integrations,
152
218
  createCapRouter_intercom,
219
+ createCapRouter_lawnMowerControl,
153
220
  createCapRouter_localNetwork,
221
+ createCapRouter_lockControl,
222
+ createCapRouter_mediaPlayer,
154
223
  createCapRouter_meshNetwork,
155
224
  createCapRouter_metricsProvider,
156
225
  createCapRouter_motion,
@@ -163,6 +232,8 @@ import {
163
232
  createCapRouter_networkQuality,
164
233
  createCapRouter_nodes,
165
234
  createCapRouter_notificationOutput,
235
+ createCapRouter_notifier,
236
+ createCapRouter_numericSensor,
166
237
  createCapRouter_oauthIntegration,
167
238
  createCapRouter_osd,
168
239
  createCapRouter_pipelineAnalytics,
@@ -170,28 +241,41 @@ import {
170
241
  createCapRouter_pipelineOrchestrator,
171
242
  createCapRouter_pipelineRunner,
172
243
  createCapRouter_platformProbe,
244
+ createCapRouter_powerMeter,
245
+ createCapRouter_presence,
246
+ createCapRouter_pressureSensor,
173
247
  createCapRouter_privacyMask,
174
248
  createCapRouter_ptz,
175
249
  createCapRouter_ptzAutotrack,
176
250
  createCapRouter_reboot,
177
251
  createCapRouter_recording,
178
- createCapRouter_recordingEngine,
252
+ createCapRouter_scriptRunner,
179
253
  createCapRouter_settingsStore,
254
+ createCapRouter_smoke,
180
255
  createCapRouter_smtpProvider,
181
256
  createCapRouter_snapshot,
182
257
  createCapRouter_snapshotProvider,
183
258
  createCapRouter_ssoBridge,
184
259
  createCapRouter_storage,
260
+ createCapRouter_storageEvictable,
185
261
  createCapRouter_storageProvider,
186
262
  createCapRouter_streamBroker,
187
263
  createCapRouter_streamCatalog,
188
264
  createCapRouter_streamParams,
189
265
  createCapRouter_switch,
190
266
  createCapRouter_system,
267
+ createCapRouter_tamper,
268
+ createCapRouter_temperatureSensor,
191
269
  createCapRouter_toast,
192
270
  createCapRouter_turnProvider,
271
+ createCapRouter_update,
193
272
  createCapRouter_userManagement,
194
273
  createCapRouter_userPasskeys,
274
+ createCapRouter_vacuumControl,
275
+ createCapRouter_valve,
276
+ createCapRouter_vibration,
277
+ createCapRouter_waterHeater,
278
+ createCapRouter_weather,
195
279
  createCapRouter_webrtcSession,
196
280
  createCapRouter_zoneAnalytics,
197
281
  createCapRouter_zoneRules,
@@ -298,10 +382,22 @@ export function mountAllCaps(services: MountAllCapsServices) {
298
382
  (_ctx) => reg?.getSingleton<InferProvider<typeof advancedNotifierCapability>>('advanced-notifier') ?? null,
299
383
  remoteCapProxy,
300
384
  ),
385
+ airQualitySensor: createCapRouter_airQualitySensor(
386
+ (_ctx) => requireDeviceScoped(reg, 'air-quality-sensor') as InferProvider<typeof airQualitySensorCapability> | null,
387
+ remoteCapProxy,
388
+ ),
389
+ alarmPanel: createCapRouter_alarmPanel(
390
+ (_ctx) => requireDeviceScoped(reg, 'alarm-panel') as InferProvider<typeof alarmPanelCapability> | null,
391
+ remoteCapProxy,
392
+ ),
301
393
  alerts: createCapRouter_alerts(
302
394
  (_ctx) => reg?.getSingleton<InferProvider<typeof alertsCapability>>('alerts') ?? null,
303
395
  remoteCapProxy,
304
396
  ),
397
+ ambientLightSensor: createCapRouter_ambientLightSensor(
398
+ (_ctx) => requireDeviceScoped(reg, 'ambient-light-sensor') as InferProvider<typeof ambientLightSensorCapability> | null,
399
+ remoteCapProxy,
400
+ ),
305
401
  audioAnalysis: createCapRouter_audioAnalysis(
306
402
  (_ctx) => reg?.getSingleton<InferProvider<typeof audioAnalysisCapability>>('audio-analysis') ?? null,
307
403
  remoteCapProxy,
@@ -318,6 +414,10 @@ export function mountAllCaps(services: MountAllCapsServices) {
318
414
  (_ctx) => reg?.getSingleton<InferProvider<typeof audioMetricsCapability>>('audio-metrics') ?? null,
319
415
  remoteCapProxy,
320
416
  ),
417
+ automationControl: createCapRouter_automationControl(
418
+ (_ctx) => requireDeviceScoped(reg, 'automation-control') as InferProvider<typeof automationControlCapability> | null,
419
+ remoteCapProxy,
420
+ ),
321
421
  backup: createCapRouter_backup(
322
422
  (_ctx) => reg?.getSingleton<InferProvider<typeof backupCapability>>('backup') ?? null,
323
423
  remoteCapProxy,
@@ -326,10 +426,36 @@ export function mountAllCaps(services: MountAllCapsServices) {
326
426
  (_ctx) => requireDeviceScoped(reg, 'battery') as InferProvider<typeof batteryCapability> | null,
327
427
  remoteCapProxy,
328
428
  ),
429
+ binary: createCapRouter_binary(
430
+ (_ctx) => requireDeviceScoped(reg, 'binary') as InferProvider<typeof binaryCapability> | null,
431
+ remoteCapProxy,
432
+ ),
329
433
  brightness: createCapRouter_brightness(
330
434
  (_ctx) => requireDeviceScoped(reg, 'brightness') as InferProvider<typeof brightnessCapability> | null,
331
435
  remoteCapProxy,
332
436
  ),
437
+ broker: createCapRouter_broker(
438
+ (_ctx, addonId) => {
439
+ if (!reg) return null
440
+ if (addonId !== undefined) {
441
+ return reg.getProviderByAddonId<InferProvider<typeof brokerCapability>>('broker', addonId)
442
+ }
443
+ const entries = reg.getCollectionEntries<InferProvider<typeof brokerCapability>>('broker')
444
+ if (entries.length === 0) return null
445
+ const providers = entries.map(([, p]) => p)
446
+ const first = providers[0]!
447
+ return {
448
+ ...first,
449
+ list: concatCollection(providers, 'list') as InferProvider<typeof brokerCapability>['list'],
450
+ listProviders: concatCollection(providers, 'listProviders') as InferProvider<typeof brokerCapability>['listProviders'],
451
+ }
452
+ },
453
+ remoteCapProxy,
454
+ ),
455
+ button: createCapRouter_button(
456
+ (_ctx) => requireDeviceScoped(reg, 'button') as InferProvider<typeof buttonCapability> | null,
457
+ remoteCapProxy,
458
+ ),
333
459
  cameraCredentials: createCapRouter_cameraCredentials(
334
460
  (_ctx) => requireDeviceScoped(reg, 'camera-credentials') as InferProvider<typeof cameraCredentialsCapability> | null,
335
461
  remoteCapProxy,
@@ -342,6 +468,38 @@ export function mountAllCaps(services: MountAllCapsServices) {
342
468
  (_ctx) => reg?.getSingleton<InferProvider<typeof cameraStreamsCapability>>('camera-streams') ?? null,
343
469
  remoteCapProxy,
344
470
  ),
471
+ carbonMonoxide: createCapRouter_carbonMonoxide(
472
+ (_ctx) => requireDeviceScoped(reg, 'carbon-monoxide') as InferProvider<typeof carbonMonoxideCapability> | null,
473
+ remoteCapProxy,
474
+ ),
475
+ climateControl: createCapRouter_climateControl(
476
+ (_ctx) => requireDeviceScoped(reg, 'climate-control') as InferProvider<typeof climateControlCapability> | null,
477
+ remoteCapProxy,
478
+ ),
479
+ color: createCapRouter_color(
480
+ (_ctx) => requireDeviceScoped(reg, 'color') as InferProvider<typeof colorCapability> | null,
481
+ remoteCapProxy,
482
+ ),
483
+ connectivity: createCapRouter_connectivity(
484
+ (_ctx) => requireDeviceScoped(reg, 'connectivity') as InferProvider<typeof connectivityCapability> | null,
485
+ remoteCapProxy,
486
+ ),
487
+ consumables: createCapRouter_consumables(
488
+ (_ctx) => requireDeviceScoped(reg, 'consumables') as InferProvider<typeof consumablesCapability> | null,
489
+ remoteCapProxy,
490
+ ),
491
+ contact: createCapRouter_contact(
492
+ (_ctx) => requireDeviceScoped(reg, 'contact') as InferProvider<typeof contactCapability> | null,
493
+ remoteCapProxy,
494
+ ),
495
+ control: createCapRouter_control(
496
+ (_ctx) => requireDeviceScoped(reg, 'control') as InferProvider<typeof controlCapability> | null,
497
+ remoteCapProxy,
498
+ ),
499
+ cover: createCapRouter_cover(
500
+ (_ctx) => requireDeviceScoped(reg, 'cover') as InferProvider<typeof coverCapability> | null,
501
+ remoteCapProxy,
502
+ ),
345
503
  decoder: createCapRouter_decoder(
346
504
  (_ctx) => reg?.getSingleton<InferProvider<typeof decoderCapability>>('decoder') ?? null,
347
505
  remoteCapProxy,
@@ -350,6 +508,10 @@ export function mountAllCaps(services: MountAllCapsServices) {
350
508
  (_ctx) => reg?.getSingleton<InferProvider<typeof detectionPipelineCapability>>('detection-pipeline') ?? null,
351
509
  remoteCapProxy,
352
510
  ),
511
+ deviceAdoption: createCapRouter_deviceAdoption(
512
+ (_ctx) => reg?.getSingleton<InferProvider<typeof deviceAdoptionCapability>>('device-adoption') ?? null,
513
+ remoteCapProxy,
514
+ ),
353
515
  deviceDiscovery: createCapRouter_deviceDiscovery(
354
516
  (_ctx) => requireDeviceScoped(reg, 'device-discovery') as InferProvider<typeof deviceDiscoveryCapability> | null,
355
517
  remoteCapProxy,
@@ -377,7 +539,7 @@ export function mountAllCaps(services: MountAllCapsServices) {
377
539
  remoteCapProxy,
378
540
  ),
379
541
  deviceOps: createCapRouter_deviceOps(
380
- (_ctx) => reg?.getSingleton<InferProvider<typeof deviceOpsCapability>>('device-ops') ?? null,
542
+ (_ctx) => requireDeviceScoped(reg, 'device-ops') as InferProvider<typeof deviceOpsCapability> | null,
381
543
  remoteCapProxy,
382
544
  ),
383
545
  deviceProvider: createCapRouter_deviceProvider(
@@ -421,14 +583,46 @@ export function mountAllCaps(services: MountAllCapsServices) {
421
583
  },
422
584
  remoteCapProxy,
423
585
  ),
586
+ enumSensor: createCapRouter_enumSensor(
587
+ (_ctx) => requireDeviceScoped(reg, 'enum-sensor') as InferProvider<typeof enumSensorCapability> | null,
588
+ remoteCapProxy,
589
+ ),
590
+ eventEmitter: createCapRouter_eventEmitter(
591
+ (_ctx) => requireDeviceScoped(reg, 'event-emitter') as InferProvider<typeof eventEmitterCapability> | null,
592
+ remoteCapProxy,
593
+ ),
424
594
  events: createCapRouter_events(
425
595
  (_ctx) => reg?.getSingleton<InferProvider<typeof eventsCapability>>('events') ?? null,
426
596
  remoteCapProxy,
427
597
  ),
598
+ fanControl: createCapRouter_fanControl(
599
+ (_ctx) => requireDeviceScoped(reg, 'fan-control') as InferProvider<typeof fanControlCapability> | null,
600
+ remoteCapProxy,
601
+ ),
428
602
  featureProbe: createCapRouter_featureProbe(
429
603
  (_ctx) => requireDeviceScoped(reg, 'feature-probe') as InferProvider<typeof featureProbeCapability> | null,
430
604
  remoteCapProxy,
431
605
  ),
606
+ flood: createCapRouter_flood(
607
+ (_ctx) => requireDeviceScoped(reg, 'flood') as InferProvider<typeof floodCapability> | null,
608
+ remoteCapProxy,
609
+ ),
610
+ gas: createCapRouter_gas(
611
+ (_ctx) => requireDeviceScoped(reg, 'gas') as InferProvider<typeof gasCapability> | null,
612
+ remoteCapProxy,
613
+ ),
614
+ humidifier: createCapRouter_humidifier(
615
+ (_ctx) => requireDeviceScoped(reg, 'humidifier') as InferProvider<typeof humidifierCapability> | null,
616
+ remoteCapProxy,
617
+ ),
618
+ humiditySensor: createCapRouter_humiditySensor(
619
+ (_ctx) => requireDeviceScoped(reg, 'humidity-sensor') as InferProvider<typeof humiditySensorCapability> | null,
620
+ remoteCapProxy,
621
+ ),
622
+ image: createCapRouter_image(
623
+ (_ctx) => requireDeviceScoped(reg, 'image') as InferProvider<typeof imageCapability> | null,
624
+ remoteCapProxy,
625
+ ),
432
626
  integrations: createCapRouter_integrations(
433
627
  (_ctx) => reg?.getSingleton<InferProvider<typeof integrationsCapability>>('integrations') ?? null,
434
628
  remoteCapProxy,
@@ -437,10 +631,22 @@ export function mountAllCaps(services: MountAllCapsServices) {
437
631
  (_ctx) => requireDeviceScoped(reg, 'intercom') as InferProvider<typeof intercomCapability> | null,
438
632
  remoteCapProxy,
439
633
  ),
634
+ lawnMowerControl: createCapRouter_lawnMowerControl(
635
+ (_ctx) => requireDeviceScoped(reg, 'lawn-mower-control') as InferProvider<typeof lawnMowerControlCapability> | null,
636
+ remoteCapProxy,
637
+ ),
440
638
  localNetwork: createCapRouter_localNetwork(
441
639
  (_ctx) => reg?.getSingleton<InferProvider<typeof localNetworkCapability>>('local-network') ?? null,
442
640
  remoteCapProxy,
443
641
  ),
642
+ lockControl: createCapRouter_lockControl(
643
+ (_ctx) => requireDeviceScoped(reg, 'lock-control') as InferProvider<typeof lockControlCapability> | null,
644
+ remoteCapProxy,
645
+ ),
646
+ mediaPlayer: createCapRouter_mediaPlayer(
647
+ (_ctx) => requireDeviceScoped(reg, 'media-player') as InferProvider<typeof mediaPlayerCapability> | null,
648
+ remoteCapProxy,
649
+ ),
444
650
  meshNetwork: createCapRouter_meshNetwork(
445
651
  (_ctx, addonId) => {
446
652
  if (!reg) return null
@@ -490,7 +696,7 @@ export function mountAllCaps(services: MountAllCapsServices) {
490
696
  remoteCapProxy,
491
697
  ),
492
698
  nativeObjectDetection: createCapRouter_nativeObjectDetection(
493
- (_ctx) => reg?.getSingleton<InferProvider<typeof nativeObjectDetectionCapability>>('native-object-detection') ?? null,
699
+ (_ctx) => requireDeviceScoped(reg, 'native-object-detection') as InferProvider<typeof nativeObjectDetectionCapability> | null,
494
700
  remoteCapProxy,
495
701
  ),
496
702
  networkAccess: createCapRouter_networkAccess(
@@ -529,6 +735,14 @@ export function mountAllCaps(services: MountAllCapsServices) {
529
735
  },
530
736
  remoteCapProxy,
531
737
  ),
738
+ notifier: createCapRouter_notifier(
739
+ (_ctx) => requireDeviceScoped(reg, 'notifier') as InferProvider<typeof notifierCapability> | null,
740
+ remoteCapProxy,
741
+ ),
742
+ numericSensor: createCapRouter_numericSensor(
743
+ (_ctx) => requireDeviceScoped(reg, 'numeric-sensor') as InferProvider<typeof numericSensorCapability> | null,
744
+ remoteCapProxy,
745
+ ),
532
746
  oauthIntegration: createCapRouter_oauthIntegration(
533
747
  (_ctx, addonId) => {
534
748
  if (!reg) return null
@@ -564,6 +778,18 @@ export function mountAllCaps(services: MountAllCapsServices) {
564
778
  (_ctx) => reg?.getSingleton<InferProvider<typeof platformProbeCapability>>('platform-probe') ?? null,
565
779
  remoteCapProxy,
566
780
  ),
781
+ powerMeter: createCapRouter_powerMeter(
782
+ (_ctx) => requireDeviceScoped(reg, 'power-meter') as InferProvider<typeof powerMeterCapability> | null,
783
+ remoteCapProxy,
784
+ ),
785
+ presence: createCapRouter_presence(
786
+ (_ctx) => requireDeviceScoped(reg, 'presence') as InferProvider<typeof presenceCapability> | null,
787
+ remoteCapProxy,
788
+ ),
789
+ pressureSensor: createCapRouter_pressureSensor(
790
+ (_ctx) => requireDeviceScoped(reg, 'pressure-sensor') as InferProvider<typeof pressureSensorCapability> | null,
791
+ remoteCapProxy,
792
+ ),
567
793
  privacyMask: createCapRouter_privacyMask(
568
794
  (_ctx) => requireDeviceScoped(reg, 'privacy-mask') as InferProvider<typeof privacyMaskCapability> | null,
569
795
  remoteCapProxy,
@@ -584,14 +810,18 @@ export function mountAllCaps(services: MountAllCapsServices) {
584
810
  (_ctx) => reg?.getSingleton<InferProvider<typeof recordingCapability>>('recording') ?? null,
585
811
  remoteCapProxy,
586
812
  ),
587
- recordingEngine: createCapRouter_recordingEngine(
588
- (_ctx) => reg?.getSingleton<InferProvider<typeof recordingEngineCapability>>('recording-engine') ?? null,
813
+ scriptRunner: createCapRouter_scriptRunner(
814
+ (_ctx) => requireDeviceScoped(reg, 'script-runner') as InferProvider<typeof scriptRunnerCapability> | null,
589
815
  remoteCapProxy,
590
816
  ),
591
817
  settingsStore: createCapRouter_settingsStore(
592
818
  (_ctx) => reg?.getSingleton<InferProvider<typeof settingsStoreCapability>>('settings-store') ?? null,
593
819
  remoteCapProxy,
594
820
  ),
821
+ smoke: createCapRouter_smoke(
822
+ (_ctx) => requireDeviceScoped(reg, 'smoke') as InferProvider<typeof smokeCapability> | null,
823
+ remoteCapProxy,
824
+ ),
595
825
  smtpProvider: createCapRouter_smtpProvider(
596
826
  (_ctx, addonId) => {
597
827
  if (!reg) return null
@@ -604,7 +834,7 @@ export function mountAllCaps(services: MountAllCapsServices) {
604
834
  remoteCapProxy,
605
835
  ),
606
836
  snapshot: createCapRouter_snapshot(
607
- (_ctx) => reg?.getSingleton<InferProvider<typeof snapshotCapability>>('snapshot') ?? null,
837
+ (_ctx) => requireDeviceScoped(reg, 'snapshot') as InferProvider<typeof snapshotCapability> | null,
608
838
  remoteCapProxy,
609
839
  ),
610
840
  snapshotProvider: createCapRouter_snapshotProvider(
@@ -626,6 +856,17 @@ export function mountAllCaps(services: MountAllCapsServices) {
626
856
  (_ctx) => reg?.getSingleton<InferProvider<typeof storageCapability>>('storage') ?? null,
627
857
  remoteCapProxy,
628
858
  ),
859
+ storageEvictable: createCapRouter_storageEvictable(
860
+ (_ctx, addonId) => {
861
+ if (!reg) return null
862
+ if (addonId !== undefined) {
863
+ return reg.getProviderByAddonId<InferProvider<typeof storageEvictableCapability>>('storage-evictable', addonId)
864
+ }
865
+ const entries = reg.getCollectionEntries<InferProvider<typeof storageEvictableCapability>>('storage-evictable')
866
+ return entries[0]?.[1] ?? null
867
+ },
868
+ remoteCapProxy,
869
+ ),
629
870
  storageProvider: createCapRouter_storageProvider(
630
871
  (_ctx, addonId) => {
631
872
  if (!reg) return null
@@ -663,6 +904,14 @@ export function mountAllCaps(services: MountAllCapsServices) {
663
904
  (_ctx) => reg?.getSingleton<InferProvider<typeof systemCapability>>('system') ?? null,
664
905
  remoteCapProxy,
665
906
  ),
907
+ tamper: createCapRouter_tamper(
908
+ (_ctx) => requireDeviceScoped(reg, 'tamper') as InferProvider<typeof tamperCapability> | null,
909
+ remoteCapProxy,
910
+ ),
911
+ temperatureSensor: createCapRouter_temperatureSensor(
912
+ (_ctx) => requireDeviceScoped(reg, 'temperature-sensor') as InferProvider<typeof temperatureSensorCapability> | null,
913
+ remoteCapProxy,
914
+ ),
666
915
  toast: createCapRouter_toast(
667
916
  (_ctx) => reg?.getSingleton<InferProvider<typeof toastCapability>>('toast') ?? null,
668
917
  remoteCapProxy,
@@ -684,6 +933,10 @@ export function mountAllCaps(services: MountAllCapsServices) {
684
933
  },
685
934
  remoteCapProxy,
686
935
  ),
936
+ update: createCapRouter_update(
937
+ (_ctx) => requireDeviceScoped(reg, 'update') as InferProvider<typeof updateCapability> | null,
938
+ remoteCapProxy,
939
+ ),
687
940
  userManagement: createCapRouter_userManagement(
688
941
  (_ctx) => reg?.getSingleton<InferProvider<typeof userManagementCapability>>('user-management') ?? null,
689
942
  remoteCapProxy,
@@ -705,6 +958,26 @@ export function mountAllCaps(services: MountAllCapsServices) {
705
958
  },
706
959
  remoteCapProxy,
707
960
  ),
961
+ vacuumControl: createCapRouter_vacuumControl(
962
+ (_ctx) => requireDeviceScoped(reg, 'vacuum-control') as InferProvider<typeof vacuumControlCapability> | null,
963
+ remoteCapProxy,
964
+ ),
965
+ valve: createCapRouter_valve(
966
+ (_ctx) => requireDeviceScoped(reg, 'valve') as InferProvider<typeof valveCapability> | null,
967
+ remoteCapProxy,
968
+ ),
969
+ vibration: createCapRouter_vibration(
970
+ (_ctx) => requireDeviceScoped(reg, 'vibration') as InferProvider<typeof vibrationCapability> | null,
971
+ remoteCapProxy,
972
+ ),
973
+ waterHeater: createCapRouter_waterHeater(
974
+ (_ctx) => requireDeviceScoped(reg, 'water-heater') as InferProvider<typeof waterHeaterCapability> | null,
975
+ remoteCapProxy,
976
+ ),
977
+ weather: createCapRouter_weather(
978
+ (_ctx) => requireDeviceScoped(reg, 'weather') as InferProvider<typeof weatherCapability> | null,
979
+ remoteCapProxy,
980
+ ),
708
981
  webrtcSession: createCapRouter_webrtcSession(
709
982
  (_ctx) => reg?.getSingleton<InferProvider<typeof webrtcSessionCapability>>('webrtc-session') ?? null,
710
983
  remoteCapProxy,