@camstack/server 0.1.6 → 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 (60) hide show
  1. package/package.json +3 -3
  2. package/src/__tests__/addon-upload.spec.ts +58 -0
  3. package/src/__tests__/bulk-update-coordinator.spec.ts +286 -0
  4. package/src/__tests__/cap-ownership-authority.spec.ts +400 -0
  5. package/src/__tests__/cap-providers/cap-providers-location-import.spec.ts +186 -0
  6. package/src/__tests__/cap-providers/integrations-delete-cascade.spec.ts +243 -0
  7. package/src/__tests__/cap-providers-bulk-update.spec.ts +388 -0
  8. package/src/__tests__/cap-route-adapter.spec.ts +289 -0
  9. package/src/__tests__/cap-routers/broker-routing.router.spec.ts +169 -0
  10. package/src/__tests__/cap-routers/cap-route-error-formatter.spec.ts +123 -0
  11. package/src/__tests__/cap-routers/capabilities-node.spec.ts +55 -0
  12. package/src/__tests__/cap-routers/device-link-overlay.spec.ts +132 -0
  13. package/src/__tests__/dev-bootstrap-shm-ring.spec.ts +30 -0
  14. package/src/__tests__/device-settings-contribution-dispatch.spec.ts +249 -0
  15. package/src/__tests__/framework-installer-defer-restart.spec.ts +165 -0
  16. package/src/__tests__/moleculer/uds-readiness.spec.ts +143 -0
  17. package/src/__tests__/moleculer/uds-topology.spec.ts +390 -0
  18. package/src/__tests__/moleculer/uds-unowned-call.spec.ts +329 -0
  19. package/src/__tests__/moleculer-register-node-idempotency.spec.ts +39 -4
  20. package/src/__tests__/native-cap-route.spec.ts +404 -0
  21. package/src/__tests__/oauth2-account-linking.spec.ts +85 -0
  22. package/src/__tests__/uds-addon-call-wiring.spec.ts +237 -0
  23. package/src/__tests__/uds-log-ingest.spec.ts +183 -0
  24. package/src/api/addon-upload.ts +27 -1
  25. package/src/api/capabilities.router.ts +1 -1
  26. package/src/api/core/__tests__/integration-markers.spec.ts +10 -0
  27. package/src/api/core/bulk-update-coordinator.ts +302 -0
  28. package/src/api/core/cap-providers.ts +211 -9
  29. package/src/api/core/capabilities.router.ts +26 -3
  30. package/src/api/core/logs.router.ts +4 -0
  31. package/src/api/oauth2/oauth2-routes.ts +5 -1
  32. package/src/api/trpc/__tests__/client-ip.spec.ts +146 -0
  33. package/src/api/trpc/__tests__/webrtc-session-ua-enrich.spec.ts +128 -0
  34. package/src/api/trpc/cap-mount-helpers.ts +12 -1
  35. package/src/api/trpc/cap-route-error-formatter.ts +163 -0
  36. package/src/api/trpc/client-ip.ts +147 -0
  37. package/src/api/trpc/generated-cap-mounts.ts +299 -8
  38. package/src/api/trpc/generated-cap-routers.ts +2384 -302
  39. package/src/api/trpc/trpc.middleware.ts +5 -1
  40. package/src/api/trpc/trpc.router.ts +84 -3
  41. package/src/boot/__tests__/integration-id-backfill.spec.ts +116 -0
  42. package/src/boot/integration-id-backfill.ts +109 -0
  43. package/src/core/addon/__tests__/addon-row-manifest.spec.ts +62 -0
  44. package/src/core/addon/addon-call-gateway.ts +157 -0
  45. package/src/core/addon/addon-package.service.ts +9 -0
  46. package/src/core/addon/addon-registry.service.ts +453 -107
  47. package/src/core/addon/addon-row-manifest.ts +29 -0
  48. package/src/core/addon/addon-settings-provider.ts +40 -116
  49. package/src/core/capability/capability.service.ts +9 -0
  50. package/src/core/logging/logging.service.ts +7 -2
  51. package/src/core/moleculer/cap-call-fn.spec.ts +166 -0
  52. package/src/core/moleculer/cap-call-fn.ts +103 -0
  53. package/src/core/moleculer/cap-route-authority.ts +182 -0
  54. package/src/core/moleculer/moleculer.service.ts +408 -36
  55. package/src/core/network/network-quality.service.spec.ts +2 -1
  56. package/src/main.ts +137 -12
  57. package/src/core/storage/settings-store.spec.ts +0 -213
  58. package/src/core/storage/settings-store.ts +0 -2
  59. package/src/core/storage/sql-schema.spec.ts +0 -140
  60. 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: 78 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,18 +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,
58
+ cameraPipelineConfigCapability,
51
59
  cameraStreamsCapability,
60
+ carbonMonoxideCapability,
61
+ climateControlCapability,
62
+ colorCapability,
63
+ connectivityCapability,
64
+ consumablesCapability,
65
+ contactCapability,
66
+ controlCapability,
67
+ coverCapability,
52
68
  decoderCapability,
53
69
  detectionPipelineCapability,
70
+ deviceAdoptionCapability,
54
71
  deviceDiscoveryCapability,
55
72
  deviceExportCapability,
56
73
  deviceManagerCapability,
@@ -60,11 +77,22 @@ import {
60
77
  deviceStatusCapability,
61
78
  doorbellCapability,
62
79
  embeddingEncoderCapability,
80
+ enumSensorCapability,
81
+ eventEmitterCapability,
63
82
  eventsCapability,
83
+ fanControlCapability,
64
84
  featureProbeCapability,
85
+ floodCapability,
86
+ gasCapability,
87
+ humidifierCapability,
88
+ humiditySensorCapability,
89
+ imageCapability,
65
90
  integrationsCapability,
66
91
  intercomCapability,
92
+ lawnMowerControlCapability,
67
93
  localNetworkCapability,
94
+ lockControlCapability,
95
+ mediaPlayerCapability,
68
96
  meshNetworkCapability,
69
97
  metricsProviderCapability,
70
98
  motionCapability,
@@ -77,6 +105,8 @@ import {
77
105
  networkQualityCapability,
78
106
  nodesCapability,
79
107
  notificationOutputCapability,
108
+ notifierCapability,
109
+ numericSensorCapability,
80
110
  oauthIntegrationCapability,
81
111
  osdCapability,
82
112
  pipelineAnalyticsCapability,
@@ -84,26 +114,41 @@ import {
84
114
  pipelineOrchestratorCapability,
85
115
  pipelineRunnerCapability,
86
116
  platformProbeCapability,
117
+ powerMeterCapability,
118
+ presenceCapability,
119
+ pressureSensorCapability,
120
+ privacyMaskCapability,
87
121
  ptzAutotrackCapability,
88
122
  ptzCapability,
89
123
  rebootCapability,
90
124
  recordingCapability,
91
- recordingEngineCapability,
125
+ scriptRunnerCapability,
92
126
  settingsStoreCapability,
127
+ smokeCapability,
93
128
  smtpProviderCapability,
94
129
  snapshotCapability,
95
130
  snapshotProviderCapability,
96
131
  ssoBridgeCapability,
97
132
  storageCapability,
133
+ storageEvictableCapability,
98
134
  storageProviderCapability,
99
135
  streamBrokerCapability,
136
+ streamCatalogCapability,
100
137
  streamParamsCapability,
101
138
  switchCapability,
102
139
  systemCapability,
140
+ tamperCapability,
141
+ temperatureSensorCapability,
103
142
  toastCapability,
104
143
  turnProviderCapability,
144
+ updateCapability,
105
145
  userManagementCapability,
106
146
  userPasskeysCapability,
147
+ vacuumControlCapability,
148
+ valveCapability,
149
+ vibrationCapability,
150
+ waterHeaterCapability,
151
+ weatherCapability,
107
152
  webrtcSessionCapability,
108
153
  zoneAnalyticsCapability,
109
154
  zoneRulesCapability,
@@ -121,18 +166,35 @@ import {
121
166
  createCapRouter_addons,
122
167
  createCapRouter_adminUi,
123
168
  createCapRouter_advancedNotifier,
169
+ createCapRouter_airQualitySensor,
170
+ createCapRouter_alarmPanel,
124
171
  createCapRouter_alerts,
172
+ createCapRouter_ambientLightSensor,
125
173
  createCapRouter_audioAnalysis,
126
174
  createCapRouter_audioAnalyzer,
127
175
  createCapRouter_audioCodec,
128
176
  createCapRouter_audioMetrics,
177
+ createCapRouter_automationControl,
129
178
  createCapRouter_backup,
130
179
  createCapRouter_battery,
180
+ createCapRouter_binary,
131
181
  createCapRouter_brightness,
182
+ createCapRouter_broker,
183
+ createCapRouter_button,
132
184
  createCapRouter_cameraCredentials,
185
+ createCapRouter_cameraPipelineConfig,
133
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,
134
195
  createCapRouter_decoder,
135
196
  createCapRouter_detectionPipeline,
197
+ createCapRouter_deviceAdoption,
136
198
  createCapRouter_deviceDiscovery,
137
199
  createCapRouter_deviceExport,
138
200
  createCapRouter_deviceManager,
@@ -142,11 +204,22 @@ import {
142
204
  createCapRouter_deviceStatus,
143
205
  createCapRouter_doorbell,
144
206
  createCapRouter_embeddingEncoder,
207
+ createCapRouter_enumSensor,
208
+ createCapRouter_eventEmitter,
145
209
  createCapRouter_events,
210
+ createCapRouter_fanControl,
146
211
  createCapRouter_featureProbe,
212
+ createCapRouter_flood,
213
+ createCapRouter_gas,
214
+ createCapRouter_humidifier,
215
+ createCapRouter_humiditySensor,
216
+ createCapRouter_image,
147
217
  createCapRouter_integrations,
148
218
  createCapRouter_intercom,
219
+ createCapRouter_lawnMowerControl,
149
220
  createCapRouter_localNetwork,
221
+ createCapRouter_lockControl,
222
+ createCapRouter_mediaPlayer,
150
223
  createCapRouter_meshNetwork,
151
224
  createCapRouter_metricsProvider,
152
225
  createCapRouter_motion,
@@ -159,6 +232,8 @@ import {
159
232
  createCapRouter_networkQuality,
160
233
  createCapRouter_nodes,
161
234
  createCapRouter_notificationOutput,
235
+ createCapRouter_notifier,
236
+ createCapRouter_numericSensor,
162
237
  createCapRouter_oauthIntegration,
163
238
  createCapRouter_osd,
164
239
  createCapRouter_pipelineAnalytics,
@@ -166,26 +241,41 @@ import {
166
241
  createCapRouter_pipelineOrchestrator,
167
242
  createCapRouter_pipelineRunner,
168
243
  createCapRouter_platformProbe,
244
+ createCapRouter_powerMeter,
245
+ createCapRouter_presence,
246
+ createCapRouter_pressureSensor,
247
+ createCapRouter_privacyMask,
169
248
  createCapRouter_ptz,
170
249
  createCapRouter_ptzAutotrack,
171
250
  createCapRouter_reboot,
172
251
  createCapRouter_recording,
173
- createCapRouter_recordingEngine,
252
+ createCapRouter_scriptRunner,
174
253
  createCapRouter_settingsStore,
254
+ createCapRouter_smoke,
175
255
  createCapRouter_smtpProvider,
176
256
  createCapRouter_snapshot,
177
257
  createCapRouter_snapshotProvider,
178
258
  createCapRouter_ssoBridge,
179
259
  createCapRouter_storage,
260
+ createCapRouter_storageEvictable,
180
261
  createCapRouter_storageProvider,
181
262
  createCapRouter_streamBroker,
263
+ createCapRouter_streamCatalog,
182
264
  createCapRouter_streamParams,
183
265
  createCapRouter_switch,
184
266
  createCapRouter_system,
267
+ createCapRouter_tamper,
268
+ createCapRouter_temperatureSensor,
185
269
  createCapRouter_toast,
186
270
  createCapRouter_turnProvider,
271
+ createCapRouter_update,
187
272
  createCapRouter_userManagement,
188
273
  createCapRouter_userPasskeys,
274
+ createCapRouter_vacuumControl,
275
+ createCapRouter_valve,
276
+ createCapRouter_vibration,
277
+ createCapRouter_waterHeater,
278
+ createCapRouter_weather,
189
279
  createCapRouter_webrtcSession,
190
280
  createCapRouter_zoneAnalytics,
191
281
  createCapRouter_zoneRules,
@@ -292,10 +382,22 @@ export function mountAllCaps(services: MountAllCapsServices) {
292
382
  (_ctx) => reg?.getSingleton<InferProvider<typeof advancedNotifierCapability>>('advanced-notifier') ?? null,
293
383
  remoteCapProxy,
294
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
+ ),
295
393
  alerts: createCapRouter_alerts(
296
394
  (_ctx) => reg?.getSingleton<InferProvider<typeof alertsCapability>>('alerts') ?? null,
297
395
  remoteCapProxy,
298
396
  ),
397
+ ambientLightSensor: createCapRouter_ambientLightSensor(
398
+ (_ctx) => requireDeviceScoped(reg, 'ambient-light-sensor') as InferProvider<typeof ambientLightSensorCapability> | null,
399
+ remoteCapProxy,
400
+ ),
299
401
  audioAnalysis: createCapRouter_audioAnalysis(
300
402
  (_ctx) => reg?.getSingleton<InferProvider<typeof audioAnalysisCapability>>('audio-analysis') ?? null,
301
403
  remoteCapProxy,
@@ -312,6 +414,10 @@ export function mountAllCaps(services: MountAllCapsServices) {
312
414
  (_ctx) => reg?.getSingleton<InferProvider<typeof audioMetricsCapability>>('audio-metrics') ?? null,
313
415
  remoteCapProxy,
314
416
  ),
417
+ automationControl: createCapRouter_automationControl(
418
+ (_ctx) => requireDeviceScoped(reg, 'automation-control') as InferProvider<typeof automationControlCapability> | null,
419
+ remoteCapProxy,
420
+ ),
315
421
  backup: createCapRouter_backup(
316
422
  (_ctx) => reg?.getSingleton<InferProvider<typeof backupCapability>>('backup') ?? null,
317
423
  remoteCapProxy,
@@ -320,18 +426,80 @@ export function mountAllCaps(services: MountAllCapsServices) {
320
426
  (_ctx) => requireDeviceScoped(reg, 'battery') as InferProvider<typeof batteryCapability> | null,
321
427
  remoteCapProxy,
322
428
  ),
429
+ binary: createCapRouter_binary(
430
+ (_ctx) => requireDeviceScoped(reg, 'binary') as InferProvider<typeof binaryCapability> | null,
431
+ remoteCapProxy,
432
+ ),
323
433
  brightness: createCapRouter_brightness(
324
434
  (_ctx) => requireDeviceScoped(reg, 'brightness') as InferProvider<typeof brightnessCapability> | null,
325
435
  remoteCapProxy,
326
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
+ ),
327
459
  cameraCredentials: createCapRouter_cameraCredentials(
328
460
  (_ctx) => requireDeviceScoped(reg, 'camera-credentials') as InferProvider<typeof cameraCredentialsCapability> | null,
329
461
  remoteCapProxy,
330
462
  ),
463
+ cameraPipelineConfig: createCapRouter_cameraPipelineConfig(
464
+ (_ctx) => reg?.getSingleton<InferProvider<typeof cameraPipelineConfigCapability>>('camera-pipeline-config') ?? null,
465
+ remoteCapProxy,
466
+ ),
331
467
  cameraStreams: createCapRouter_cameraStreams(
332
468
  (_ctx) => reg?.getSingleton<InferProvider<typeof cameraStreamsCapability>>('camera-streams') ?? null,
333
469
  remoteCapProxy,
334
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
+ ),
335
503
  decoder: createCapRouter_decoder(
336
504
  (_ctx) => reg?.getSingleton<InferProvider<typeof decoderCapability>>('decoder') ?? null,
337
505
  remoteCapProxy,
@@ -340,6 +508,10 @@ export function mountAllCaps(services: MountAllCapsServices) {
340
508
  (_ctx) => reg?.getSingleton<InferProvider<typeof detectionPipelineCapability>>('detection-pipeline') ?? null,
341
509
  remoteCapProxy,
342
510
  ),
511
+ deviceAdoption: createCapRouter_deviceAdoption(
512
+ (_ctx) => reg?.getSingleton<InferProvider<typeof deviceAdoptionCapability>>('device-adoption') ?? null,
513
+ remoteCapProxy,
514
+ ),
343
515
  deviceDiscovery: createCapRouter_deviceDiscovery(
344
516
  (_ctx) => requireDeviceScoped(reg, 'device-discovery') as InferProvider<typeof deviceDiscoveryCapability> | null,
345
517
  remoteCapProxy,
@@ -367,7 +539,7 @@ export function mountAllCaps(services: MountAllCapsServices) {
367
539
  remoteCapProxy,
368
540
  ),
369
541
  deviceOps: createCapRouter_deviceOps(
370
- (_ctx) => reg?.getSingleton<InferProvider<typeof deviceOpsCapability>>('device-ops') ?? null,
542
+ (_ctx) => requireDeviceScoped(reg, 'device-ops') as InferProvider<typeof deviceOpsCapability> | null,
371
543
  remoteCapProxy,
372
544
  ),
373
545
  deviceProvider: createCapRouter_deviceProvider(
@@ -411,14 +583,46 @@ export function mountAllCaps(services: MountAllCapsServices) {
411
583
  },
412
584
  remoteCapProxy,
413
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
+ ),
414
594
  events: createCapRouter_events(
415
595
  (_ctx) => reg?.getSingleton<InferProvider<typeof eventsCapability>>('events') ?? null,
416
596
  remoteCapProxy,
417
597
  ),
598
+ fanControl: createCapRouter_fanControl(
599
+ (_ctx) => requireDeviceScoped(reg, 'fan-control') as InferProvider<typeof fanControlCapability> | null,
600
+ remoteCapProxy,
601
+ ),
418
602
  featureProbe: createCapRouter_featureProbe(
419
603
  (_ctx) => requireDeviceScoped(reg, 'feature-probe') as InferProvider<typeof featureProbeCapability> | null,
420
604
  remoteCapProxy,
421
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
+ ),
422
626
  integrations: createCapRouter_integrations(
423
627
  (_ctx) => reg?.getSingleton<InferProvider<typeof integrationsCapability>>('integrations') ?? null,
424
628
  remoteCapProxy,
@@ -427,10 +631,22 @@ export function mountAllCaps(services: MountAllCapsServices) {
427
631
  (_ctx) => requireDeviceScoped(reg, 'intercom') as InferProvider<typeof intercomCapability> | null,
428
632
  remoteCapProxy,
429
633
  ),
634
+ lawnMowerControl: createCapRouter_lawnMowerControl(
635
+ (_ctx) => requireDeviceScoped(reg, 'lawn-mower-control') as InferProvider<typeof lawnMowerControlCapability> | null,
636
+ remoteCapProxy,
637
+ ),
430
638
  localNetwork: createCapRouter_localNetwork(
431
639
  (_ctx) => reg?.getSingleton<InferProvider<typeof localNetworkCapability>>('local-network') ?? null,
432
640
  remoteCapProxy,
433
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
+ ),
434
650
  meshNetwork: createCapRouter_meshNetwork(
435
651
  (_ctx, addonId) => {
436
652
  if (!reg) return null
@@ -480,7 +696,7 @@ export function mountAllCaps(services: MountAllCapsServices) {
480
696
  remoteCapProxy,
481
697
  ),
482
698
  nativeObjectDetection: createCapRouter_nativeObjectDetection(
483
- (_ctx) => reg?.getSingleton<InferProvider<typeof nativeObjectDetectionCapability>>('native-object-detection') ?? null,
699
+ (_ctx) => requireDeviceScoped(reg, 'native-object-detection') as InferProvider<typeof nativeObjectDetectionCapability> | null,
484
700
  remoteCapProxy,
485
701
  ),
486
702
  networkAccess: createCapRouter_networkAccess(
@@ -519,6 +735,14 @@ export function mountAllCaps(services: MountAllCapsServices) {
519
735
  },
520
736
  remoteCapProxy,
521
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
+ ),
522
746
  oauthIntegration: createCapRouter_oauthIntegration(
523
747
  (_ctx, addonId) => {
524
748
  if (!reg) return null
@@ -554,6 +778,22 @@ export function mountAllCaps(services: MountAllCapsServices) {
554
778
  (_ctx) => reg?.getSingleton<InferProvider<typeof platformProbeCapability>>('platform-probe') ?? null,
555
779
  remoteCapProxy,
556
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
+ ),
793
+ privacyMask: createCapRouter_privacyMask(
794
+ (_ctx) => requireDeviceScoped(reg, 'privacy-mask') as InferProvider<typeof privacyMaskCapability> | null,
795
+ remoteCapProxy,
796
+ ),
557
797
  ptz: createCapRouter_ptz(
558
798
  (_ctx) => requireDeviceScoped(reg, 'ptz') as InferProvider<typeof ptzCapability> | null,
559
799
  remoteCapProxy,
@@ -570,14 +810,18 @@ export function mountAllCaps(services: MountAllCapsServices) {
570
810
  (_ctx) => reg?.getSingleton<InferProvider<typeof recordingCapability>>('recording') ?? null,
571
811
  remoteCapProxy,
572
812
  ),
573
- recordingEngine: createCapRouter_recordingEngine(
574
- (_ctx) => reg?.getSingleton<InferProvider<typeof recordingEngineCapability>>('recording-engine') ?? null,
813
+ scriptRunner: createCapRouter_scriptRunner(
814
+ (_ctx) => requireDeviceScoped(reg, 'script-runner') as InferProvider<typeof scriptRunnerCapability> | null,
575
815
  remoteCapProxy,
576
816
  ),
577
817
  settingsStore: createCapRouter_settingsStore(
578
818
  (_ctx) => reg?.getSingleton<InferProvider<typeof settingsStoreCapability>>('settings-store') ?? null,
579
819
  remoteCapProxy,
580
820
  ),
821
+ smoke: createCapRouter_smoke(
822
+ (_ctx) => requireDeviceScoped(reg, 'smoke') as InferProvider<typeof smokeCapability> | null,
823
+ remoteCapProxy,
824
+ ),
581
825
  smtpProvider: createCapRouter_smtpProvider(
582
826
  (_ctx, addonId) => {
583
827
  if (!reg) return null
@@ -590,7 +834,7 @@ export function mountAllCaps(services: MountAllCapsServices) {
590
834
  remoteCapProxy,
591
835
  ),
592
836
  snapshot: createCapRouter_snapshot(
593
- (_ctx) => reg?.getSingleton<InferProvider<typeof snapshotCapability>>('snapshot') ?? null,
837
+ (_ctx) => requireDeviceScoped(reg, 'snapshot') as InferProvider<typeof snapshotCapability> | null,
594
838
  remoteCapProxy,
595
839
  ),
596
840
  snapshotProvider: createCapRouter_snapshotProvider(
@@ -612,6 +856,17 @@ export function mountAllCaps(services: MountAllCapsServices) {
612
856
  (_ctx) => reg?.getSingleton<InferProvider<typeof storageCapability>>('storage') ?? null,
613
857
  remoteCapProxy,
614
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
+ ),
615
870
  storageProvider: createCapRouter_storageProvider(
616
871
  (_ctx, addonId) => {
617
872
  if (!reg) return null
@@ -633,6 +888,10 @@ export function mountAllCaps(services: MountAllCapsServices) {
633
888
  (_ctx) => reg?.getSingleton<InferProvider<typeof streamBrokerCapability>>('stream-broker') ?? null,
634
889
  remoteCapProxy,
635
890
  ),
891
+ streamCatalog: createCapRouter_streamCatalog(
892
+ (_ctx) => requireDeviceScoped(reg, 'stream-catalog') as InferProvider<typeof streamCatalogCapability> | null,
893
+ remoteCapProxy,
894
+ ),
636
895
  streamParams: createCapRouter_streamParams(
637
896
  (_ctx) => requireDeviceScoped(reg, 'stream-params') as InferProvider<typeof streamParamsCapability> | null,
638
897
  remoteCapProxy,
@@ -645,6 +904,14 @@ export function mountAllCaps(services: MountAllCapsServices) {
645
904
  (_ctx) => reg?.getSingleton<InferProvider<typeof systemCapability>>('system') ?? null,
646
905
  remoteCapProxy,
647
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
+ ),
648
915
  toast: createCapRouter_toast(
649
916
  (_ctx) => reg?.getSingleton<InferProvider<typeof toastCapability>>('toast') ?? null,
650
917
  remoteCapProxy,
@@ -666,6 +933,10 @@ export function mountAllCaps(services: MountAllCapsServices) {
666
933
  },
667
934
  remoteCapProxy,
668
935
  ),
936
+ update: createCapRouter_update(
937
+ (_ctx) => requireDeviceScoped(reg, 'update') as InferProvider<typeof updateCapability> | null,
938
+ remoteCapProxy,
939
+ ),
669
940
  userManagement: createCapRouter_userManagement(
670
941
  (_ctx) => reg?.getSingleton<InferProvider<typeof userManagementCapability>>('user-management') ?? null,
671
942
  remoteCapProxy,
@@ -687,6 +958,26 @@ export function mountAllCaps(services: MountAllCapsServices) {
687
958
  },
688
959
  remoteCapProxy,
689
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
+ ),
690
981
  webrtcSession: createCapRouter_webrtcSession(
691
982
  (_ctx) => reg?.getSingleton<InferProvider<typeof webrtcSessionCapability>>('webrtc-session') ?? null,
692
983
  remoteCapProxy,