@camstack/server 0.1.8 → 0.2.1
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.
- package/package.json +9 -7
- package/src/__tests__/addon-install-e2e.test.ts +0 -1
- package/src/__tests__/addon-pages-e2e.test.ts +40 -18
- package/src/__tests__/addon-settings-router.spec.ts +6 -1
- package/src/__tests__/addon-upload.spec.ts +91 -29
- package/src/__tests__/agent-registry.spec.ts +26 -9
- package/src/__tests__/agent-status-page.spec.ts +1 -3
- package/src/__tests__/auth-session-cookie.test.ts +28 -1
- package/src/__tests__/bulk-update-coordinator.spec.ts +48 -31
- package/src/__tests__/cap-ownership-authority.spec.ts +39 -8
- package/src/__tests__/cap-providers/cap-providers-location-import.spec.ts +24 -4
- package/src/__tests__/cap-providers/cap-usage-graph.spec.ts +17 -3
- package/src/__tests__/cap-providers/compute-topology-categories.spec.ts +57 -11
- package/src/__tests__/cap-providers/integrations-delete-cascade.spec.ts +64 -15
- package/src/__tests__/cap-providers-bulk-update.spec.ts +27 -7
- package/src/__tests__/cap-route-adapter.spec.ts +28 -15
- package/src/__tests__/cap-routers/_meta.spec.ts +6 -7
- package/src/__tests__/cap-routers/addon-settings.router.spec.ts +19 -10
- package/src/__tests__/cap-routers/broker-routing.router.spec.ts +14 -6
- package/src/__tests__/cap-routers/cap-route-error-formatter.spec.ts +3 -1
- package/src/__tests__/cap-routers/capabilities-node.spec.ts +18 -5
- package/src/__tests__/cap-routers/device-link-overlay.spec.ts +11 -6
- package/src/__tests__/cap-routers/device-manager-aggregate.router.spec.ts +72 -20
- package/src/__tests__/cap-routers/harness.ts +11 -7
- package/src/__tests__/cap-routers/metrics-provider.router.spec.ts +17 -3
- package/src/__tests__/cap-routers/null-provider-guard.spec.ts +5 -7
- package/src/__tests__/cap-routers/pipeline-executor.router.spec.ts +35 -11
- package/src/__tests__/cap-routers/settings-store.router.spec.ts +59 -15
- package/src/__tests__/capability-e2e.test.ts +9 -11
- package/src/__tests__/cli-e2e.test.ts +80 -59
- package/src/__tests__/core-cap-bridge.spec.ts +3 -1
- package/src/__tests__/dev-bootstrap-shm-ring.spec.ts +12 -2
- package/src/__tests__/device-settings-contribution-dispatch.spec.ts +61 -30
- package/src/__tests__/embedded-deps-e2e.test.ts +35 -19
- package/src/__tests__/event-bus-proxy-router.spec.ts +3 -0
- package/src/__tests__/framework-allowlist.spec.ts +5 -4
- package/src/__tests__/https-e2e.test.ts +12 -6
- package/src/__tests__/lifecycle-e2e.test.ts +60 -11
- package/src/__tests__/live-events-subscription.spec.ts +17 -18
- package/src/__tests__/moleculer/uds-readiness.spec.ts +11 -4
- package/src/__tests__/moleculer/uds-topology.spec.ts +39 -11
- package/src/__tests__/moleculer/uds-unowned-call.spec.ts +71 -17
- package/src/__tests__/moleculer-register-node-idempotency.spec.ts +16 -7
- package/src/__tests__/native-cap-route.spec.ts +42 -19
- package/src/__tests__/oauth2-account-linking.spec.ts +63 -17
- package/src/__tests__/singleton-contention.test.ts +23 -11
- package/src/__tests__/streaming-diagnostic.test.ts +156 -53
- package/src/__tests__/streaming-scale.test.ts +69 -35
- package/src/__tests__/uds-addon-call-wiring.spec.ts +6 -1
- package/src/agent-status-page.ts +4 -3
- package/src/api/__tests__/addons-custom.spec.ts +22 -8
- package/src/api/__tests__/capabilities.router.test.ts +18 -9
- package/src/api/addon-upload.ts +46 -15
- package/src/api/addons-custom.router.ts +7 -6
- package/src/api/auth-whoami.ts +3 -1
- package/src/api/bridge-addons.router.ts +3 -1
- package/src/api/capabilities.router.ts +117 -78
- package/src/api/core/__tests__/auth-router-totp.spec.ts +57 -16
- package/src/api/core/addon-settings.router.ts +4 -1
- package/src/api/core/agents.router.ts +52 -53
- package/src/api/core/auth.router.ts +55 -36
- package/src/api/core/bulk-update-coordinator.ts +25 -22
- package/src/api/core/cap-providers.ts +346 -202
- package/src/api/core/capabilities.router.ts +30 -23
- package/src/api/core/hwaccel.router.ts +37 -10
- package/src/api/core/live-events.router.ts +16 -9
- package/src/api/core/logs.router.ts +54 -25
- package/src/api/core/notifications.router.ts +2 -1
- package/src/api/core/repl.router.ts +1 -3
- package/src/api/core/settings-backend.router.ts +68 -70
- package/src/api/core/system-events.router.ts +41 -32
- package/src/api/health/health.routes.ts +7 -13
- package/src/api/oauth2/__tests__/oauth2-routes.spec.ts +12 -2
- package/src/api/oauth2/consent-page.ts +4 -3
- package/src/api/oauth2/oauth2-routes.ts +41 -12
- package/src/api/trpc/__tests__/scope-access-device.spec.ts +68 -23
- package/src/api/trpc/__tests__/scope-access.spec.ts +8 -13
- package/src/api/trpc/__tests__/webrtc-session-ua-enrich.spec.ts +10 -2
- package/src/api/trpc/cap-mount-helpers.ts +64 -55
- package/src/api/trpc/cap-route-error-formatter.ts +17 -9
- package/src/api/trpc/core-cap-bridge.ts +3 -1
- package/src/api/trpc/generated-cap-mounts.ts +593 -351
- package/src/api/trpc/generated-cap-routers.ts +3680 -579
- package/src/api/trpc/scope-access.ts +7 -7
- package/src/api/trpc/trpc.context.ts +7 -4
- package/src/api/trpc/trpc.middleware.ts +4 -2
- package/src/api/trpc/trpc.router.ts +79 -46
- package/src/auth/session-cookie.ts +10 -0
- package/src/boot/__tests__/integration-id-backfill.spec.ts +21 -6
- package/src/boot/boot-config.ts +103 -122
- package/src/boot/post-boot.service.ts +5 -3
- package/src/core/addon/__tests__/addon-registry-capability.test.ts +12 -3
- package/src/core/addon/addon-call-gateway.ts +20 -6
- package/src/core/addon/addon-package.service.ts +183 -89
- package/src/core/addon/addon-registry.service.ts +1163 -1305
- package/src/core/addon/addon-search.service.ts +2 -1
- package/src/core/addon/addon-settings-provider.ts +27 -7
- package/src/core/addon-bridge/addon-bridge.service.ts +11 -6
- package/src/core/addon-pages/addon-pages.service.ts +3 -1
- package/src/core/addon-widgets/addon-widgets.service.ts +5 -2
- package/src/core/agent/agent-registry.service.ts +60 -38
- package/src/core/auth/auth.service.spec.ts +6 -8
- package/src/core/config/config.service.spec.ts +1 -1
- package/src/core/events/event-bus.service.spec.ts +44 -21
- package/src/core/events/event-bus.service.ts +5 -1
- package/src/core/feature/feature.service.spec.ts +4 -1
- package/src/core/lifecycle/lifecycle-state-machine.spec.ts +8 -10
- package/src/core/logging/logging.service.spec.ts +61 -21
- package/src/core/logging/logging.service.ts +12 -3
- package/src/core/moleculer/cap-call-fn.spec.ts +17 -10
- package/src/core/moleculer/cap-call-fn.ts +5 -1
- package/src/core/moleculer/cap-route-authority.ts +18 -6
- package/src/core/moleculer/moleculer.service.ts +120 -32
- package/src/core/network/network-quality.service.spec.ts +6 -1
- package/src/core/notification/notification-wrapper.service.ts +1 -3
- package/src/core/notification/toast-wrapper.service.ts +1 -5
- package/src/core/repl/repl-engine.service.spec.ts +66 -39
- package/src/core/repl/repl-engine.service.ts +11 -12
- package/src/core/storage/storage-location-manager.spec.ts +12 -3
- package/src/core/streaming/stream-probe.service.ts +22 -13
- package/src/core/topology/topology-emitter.service.ts +5 -1
- package/src/launcher.ts +14 -9
- package/src/main.ts +602 -531
- package/src/manual-boot.ts +133 -154
- package/tsconfig.json +20 -8
|
@@ -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:
|
|
4
|
+
// Mounted: 127 Skipped (legacy): 6
|
|
5
5
|
|
|
6
6
|
/**
|
|
7
7
|
* Single auto-mount entrypoint for every codegen'd cap router.
|
|
@@ -80,8 +80,10 @@ import {
|
|
|
80
80
|
enumSensorCapability,
|
|
81
81
|
eventEmitterCapability,
|
|
82
82
|
eventsCapability,
|
|
83
|
+
faceGalleryCapability,
|
|
83
84
|
fanControlCapability,
|
|
84
85
|
featureProbeCapability,
|
|
86
|
+
filesystemBrowseCapability,
|
|
85
87
|
floodCapability,
|
|
86
88
|
gasCapability,
|
|
87
89
|
humidifierCapability,
|
|
@@ -113,6 +115,7 @@ import {
|
|
|
113
115
|
pipelineExecutorCapability,
|
|
114
116
|
pipelineOrchestratorCapability,
|
|
115
117
|
pipelineRunnerCapability,
|
|
118
|
+
plateGalleryCapability,
|
|
116
119
|
platformProbeCapability,
|
|
117
120
|
powerMeterCapability,
|
|
118
121
|
presenceCapability,
|
|
@@ -147,6 +150,7 @@ import {
|
|
|
147
150
|
vacuumControlCapability,
|
|
148
151
|
valveCapability,
|
|
149
152
|
vibrationCapability,
|
|
153
|
+
videoclipsCapability,
|
|
150
154
|
waterHeaterCapability,
|
|
151
155
|
weatherCapability,
|
|
152
156
|
webrtcSessionCapability,
|
|
@@ -207,8 +211,10 @@ import {
|
|
|
207
211
|
createCapRouter_enumSensor,
|
|
208
212
|
createCapRouter_eventEmitter,
|
|
209
213
|
createCapRouter_events,
|
|
214
|
+
createCapRouter_faceGallery,
|
|
210
215
|
createCapRouter_fanControl,
|
|
211
216
|
createCapRouter_featureProbe,
|
|
217
|
+
createCapRouter_filesystemBrowse,
|
|
212
218
|
createCapRouter_flood,
|
|
213
219
|
createCapRouter_gas,
|
|
214
220
|
createCapRouter_humidifier,
|
|
@@ -240,6 +246,7 @@ import {
|
|
|
240
246
|
createCapRouter_pipelineExecutor,
|
|
241
247
|
createCapRouter_pipelineOrchestrator,
|
|
242
248
|
createCapRouter_pipelineRunner,
|
|
249
|
+
createCapRouter_plateGallery,
|
|
243
250
|
createCapRouter_platformProbe,
|
|
244
251
|
createCapRouter_powerMeter,
|
|
245
252
|
createCapRouter_presence,
|
|
@@ -274,6 +281,7 @@ import {
|
|
|
274
281
|
createCapRouter_vacuumControl,
|
|
275
282
|
createCapRouter_valve,
|
|
276
283
|
createCapRouter_vibration,
|
|
284
|
+
createCapRouter_videoclips,
|
|
277
285
|
createCapRouter_waterHeater,
|
|
278
286
|
createCapRouter_weather,
|
|
279
287
|
createCapRouter_webrtcSession,
|
|
@@ -321,55 +329,71 @@ export function mountAllCaps(services: MountAllCapsServices) {
|
|
|
321
329
|
services.moleculer.createCapabilityProxy(capName, nodeId) as unknown as T | null
|
|
322
330
|
return {
|
|
323
331
|
accessories: createCapRouter_accessories(
|
|
324
|
-
(_ctx) =>
|
|
332
|
+
(_ctx) =>
|
|
333
|
+
requireDeviceScoped(reg, 'accessories') as InferProvider<
|
|
334
|
+
typeof accessoriesCapability
|
|
335
|
+
> | null,
|
|
325
336
|
remoteCapProxy,
|
|
326
337
|
),
|
|
327
338
|
addonPages: createCapRouter_addonPages(
|
|
328
|
-
(_ctx) =>
|
|
329
|
-
|
|
330
|
-
|
|
331
|
-
|
|
332
|
-
|
|
333
|
-
|
|
334
|
-
|
|
335
|
-
|
|
336
|
-
|
|
337
|
-
|
|
338
|
-
|
|
339
|
-
|
|
340
|
-
|
|
341
|
-
|
|
342
|
-
|
|
343
|
-
|
|
344
|
-
|
|
345
|
-
|
|
346
|
-
|
|
347
|
-
|
|
339
|
+
(_ctx) =>
|
|
340
|
+
reg?.getSingleton<InferProvider<typeof addonPagesCapability>>('addon-pages') ?? null,
|
|
341
|
+
remoteCapProxy,
|
|
342
|
+
),
|
|
343
|
+
addonPagesSource: createCapRouter_addonPagesSource((_ctx, addonId) => {
|
|
344
|
+
if (!reg) return null
|
|
345
|
+
if (addonId !== undefined) {
|
|
346
|
+
return reg.getProviderByAddonId<InferProvider<typeof addonPagesSourceCapability>>(
|
|
347
|
+
'addon-pages-source',
|
|
348
|
+
addonId,
|
|
349
|
+
)
|
|
350
|
+
}
|
|
351
|
+
const entries =
|
|
352
|
+
reg.getCollectionEntries<InferProvider<typeof addonPagesSourceCapability>>(
|
|
353
|
+
'addon-pages-source',
|
|
354
|
+
)
|
|
355
|
+
if (entries.length === 0) return null
|
|
356
|
+
const providers = entries.map(([, p]) => p)
|
|
357
|
+
const first = providers[0]!
|
|
358
|
+
return {
|
|
359
|
+
...first,
|
|
360
|
+
listPages: concatCollection(providers, 'listPages') as InferProvider<
|
|
361
|
+
typeof addonPagesSourceCapability
|
|
362
|
+
>['listPages'],
|
|
363
|
+
}
|
|
364
|
+
}, remoteCapProxy),
|
|
348
365
|
addonSettings: createCapRouter_addonSettings(
|
|
349
|
-
(_ctx) =>
|
|
366
|
+
(_ctx) =>
|
|
367
|
+
reg?.getSingleton<InferProvider<typeof addonSettingsCapability>>('addon-settings') ?? null,
|
|
350
368
|
remoteCapProxy,
|
|
351
369
|
),
|
|
352
370
|
addonWidgets: createCapRouter_addonWidgets(
|
|
353
|
-
(_ctx) =>
|
|
354
|
-
|
|
355
|
-
|
|
356
|
-
|
|
357
|
-
|
|
358
|
-
|
|
359
|
-
|
|
360
|
-
|
|
361
|
-
|
|
362
|
-
|
|
363
|
-
|
|
364
|
-
|
|
365
|
-
|
|
366
|
-
|
|
367
|
-
|
|
368
|
-
|
|
369
|
-
|
|
370
|
-
|
|
371
|
-
|
|
372
|
-
|
|
371
|
+
(_ctx) =>
|
|
372
|
+
reg?.getSingleton<InferProvider<typeof addonWidgetsCapability>>('addon-widgets') ?? null,
|
|
373
|
+
remoteCapProxy,
|
|
374
|
+
),
|
|
375
|
+
addonWidgetsSource: createCapRouter_addonWidgetsSource((_ctx, addonId) => {
|
|
376
|
+
if (!reg) return null
|
|
377
|
+
if (addonId !== undefined) {
|
|
378
|
+
return reg.getProviderByAddonId<InferProvider<typeof addonWidgetsSourceCapability>>(
|
|
379
|
+
'addon-widgets-source',
|
|
380
|
+
addonId,
|
|
381
|
+
)
|
|
382
|
+
}
|
|
383
|
+
const entries =
|
|
384
|
+
reg.getCollectionEntries<InferProvider<typeof addonWidgetsSourceCapability>>(
|
|
385
|
+
'addon-widgets-source',
|
|
386
|
+
)
|
|
387
|
+
if (entries.length === 0) return null
|
|
388
|
+
const providers = entries.map(([, p]) => p)
|
|
389
|
+
const first = providers[0]!
|
|
390
|
+
return {
|
|
391
|
+
...first,
|
|
392
|
+
listWidgets: concatCollection(providers, 'listWidgets') as InferProvider<
|
|
393
|
+
typeof addonWidgetsSourceCapability
|
|
394
|
+
>['listWidgets'],
|
|
395
|
+
}
|
|
396
|
+
}, remoteCapProxy),
|
|
373
397
|
addons: createCapRouter_addons(
|
|
374
398
|
(_ctx) => reg?.getSingleton<InferProvider<typeof addonsCapability>>('addons') ?? null,
|
|
375
399
|
remoteCapProxy,
|
|
@@ -379,15 +403,23 @@ export function mountAllCaps(services: MountAllCapsServices) {
|
|
|
379
403
|
remoteCapProxy,
|
|
380
404
|
),
|
|
381
405
|
advancedNotifier: createCapRouter_advancedNotifier(
|
|
382
|
-
(_ctx) =>
|
|
406
|
+
(_ctx) =>
|
|
407
|
+
reg?.getSingleton<InferProvider<typeof advancedNotifierCapability>>('advanced-notifier') ??
|
|
408
|
+
null,
|
|
383
409
|
remoteCapProxy,
|
|
384
410
|
),
|
|
385
411
|
airQualitySensor: createCapRouter_airQualitySensor(
|
|
386
|
-
(_ctx) =>
|
|
412
|
+
(_ctx) =>
|
|
413
|
+
requireDeviceScoped(reg, 'air-quality-sensor') as InferProvider<
|
|
414
|
+
typeof airQualitySensorCapability
|
|
415
|
+
> | null,
|
|
387
416
|
remoteCapProxy,
|
|
388
417
|
),
|
|
389
418
|
alarmPanel: createCapRouter_alarmPanel(
|
|
390
|
-
(_ctx) =>
|
|
419
|
+
(_ctx) =>
|
|
420
|
+
requireDeviceScoped(reg, 'alarm-panel') as InferProvider<
|
|
421
|
+
typeof alarmPanelCapability
|
|
422
|
+
> | null,
|
|
391
423
|
remoteCapProxy,
|
|
392
424
|
),
|
|
393
425
|
alerts: createCapRouter_alerts(
|
|
@@ -395,27 +427,37 @@ export function mountAllCaps(services: MountAllCapsServices) {
|
|
|
395
427
|
remoteCapProxy,
|
|
396
428
|
),
|
|
397
429
|
ambientLightSensor: createCapRouter_ambientLightSensor(
|
|
398
|
-
(_ctx) =>
|
|
430
|
+
(_ctx) =>
|
|
431
|
+
requireDeviceScoped(reg, 'ambient-light-sensor') as InferProvider<
|
|
432
|
+
typeof ambientLightSensorCapability
|
|
433
|
+
> | null,
|
|
399
434
|
remoteCapProxy,
|
|
400
435
|
),
|
|
401
436
|
audioAnalysis: createCapRouter_audioAnalysis(
|
|
402
|
-
(_ctx) =>
|
|
437
|
+
(_ctx) =>
|
|
438
|
+
reg?.getSingleton<InferProvider<typeof audioAnalysisCapability>>('audio-analysis') ?? null,
|
|
403
439
|
remoteCapProxy,
|
|
404
440
|
),
|
|
405
441
|
audioAnalyzer: createCapRouter_audioAnalyzer(
|
|
406
|
-
(_ctx) =>
|
|
442
|
+
(_ctx) =>
|
|
443
|
+
reg?.getSingleton<InferProvider<typeof audioAnalyzerCapability>>('audio-analyzer') ?? null,
|
|
407
444
|
remoteCapProxy,
|
|
408
445
|
),
|
|
409
446
|
audioCodec: createCapRouter_audioCodec(
|
|
410
|
-
(_ctx) =>
|
|
447
|
+
(_ctx) =>
|
|
448
|
+
reg?.getSingleton<InferProvider<typeof audioCodecCapability>>('audio-codec') ?? null,
|
|
411
449
|
remoteCapProxy,
|
|
412
450
|
),
|
|
413
451
|
audioMetrics: createCapRouter_audioMetrics(
|
|
414
|
-
(_ctx) =>
|
|
452
|
+
(_ctx) =>
|
|
453
|
+
reg?.getSingleton<InferProvider<typeof audioMetricsCapability>>('audio-metrics') ?? null,
|
|
415
454
|
remoteCapProxy,
|
|
416
455
|
),
|
|
417
456
|
automationControl: createCapRouter_automationControl(
|
|
418
|
-
(_ctx) =>
|
|
457
|
+
(_ctx) =>
|
|
458
|
+
requireDeviceScoped(reg, 'automation-control') as InferProvider<
|
|
459
|
+
typeof automationControlCapability
|
|
460
|
+
> | null,
|
|
419
461
|
remoteCapProxy,
|
|
420
462
|
),
|
|
421
463
|
backup: createCapRouter_backup(
|
|
@@ -423,7 +465,8 @@ export function mountAllCaps(services: MountAllCapsServices) {
|
|
|
423
465
|
remoteCapProxy,
|
|
424
466
|
),
|
|
425
467
|
battery: createCapRouter_battery(
|
|
426
|
-
(_ctx) =>
|
|
468
|
+
(_ctx) =>
|
|
469
|
+
requireDeviceScoped(reg, 'battery') as InferProvider<typeof batteryCapability> | null,
|
|
427
470
|
remoteCapProxy,
|
|
428
471
|
),
|
|
429
472
|
binary: createCapRouter_binary(
|
|
@@ -431,49 +474,62 @@ export function mountAllCaps(services: MountAllCapsServices) {
|
|
|
431
474
|
remoteCapProxy,
|
|
432
475
|
),
|
|
433
476
|
brightness: createCapRouter_brightness(
|
|
434
|
-
(_ctx) =>
|
|
435
|
-
|
|
436
|
-
|
|
437
|
-
|
|
438
|
-
|
|
439
|
-
|
|
440
|
-
|
|
441
|
-
|
|
442
|
-
|
|
443
|
-
|
|
444
|
-
|
|
445
|
-
|
|
446
|
-
|
|
447
|
-
|
|
448
|
-
|
|
449
|
-
|
|
450
|
-
|
|
451
|
-
|
|
452
|
-
|
|
453
|
-
|
|
454
|
-
),
|
|
477
|
+
(_ctx) =>
|
|
478
|
+
requireDeviceScoped(reg, 'brightness') as InferProvider<typeof brightnessCapability> | null,
|
|
479
|
+
remoteCapProxy,
|
|
480
|
+
),
|
|
481
|
+
broker: createCapRouter_broker((_ctx, addonId) => {
|
|
482
|
+
if (!reg) return null
|
|
483
|
+
if (addonId !== undefined) {
|
|
484
|
+
return reg.getProviderByAddonId<InferProvider<typeof brokerCapability>>('broker', addonId)
|
|
485
|
+
}
|
|
486
|
+
const entries = reg.getCollectionEntries<InferProvider<typeof brokerCapability>>('broker')
|
|
487
|
+
if (entries.length === 0) return null
|
|
488
|
+
const providers = entries.map(([, p]) => p)
|
|
489
|
+
const first = providers[0]!
|
|
490
|
+
return {
|
|
491
|
+
...first,
|
|
492
|
+
list: concatCollection(providers, 'list') as InferProvider<typeof brokerCapability>['list'],
|
|
493
|
+
listProviders: concatCollection(providers, 'listProviders') as InferProvider<
|
|
494
|
+
typeof brokerCapability
|
|
495
|
+
>['listProviders'],
|
|
496
|
+
}
|
|
497
|
+
}, remoteCapProxy),
|
|
455
498
|
button: createCapRouter_button(
|
|
456
499
|
(_ctx) => requireDeviceScoped(reg, 'button') as InferProvider<typeof buttonCapability> | null,
|
|
457
500
|
remoteCapProxy,
|
|
458
501
|
),
|
|
459
502
|
cameraCredentials: createCapRouter_cameraCredentials(
|
|
460
|
-
(_ctx) =>
|
|
503
|
+
(_ctx) =>
|
|
504
|
+
requireDeviceScoped(reg, 'camera-credentials') as InferProvider<
|
|
505
|
+
typeof cameraCredentialsCapability
|
|
506
|
+
> | null,
|
|
461
507
|
remoteCapProxy,
|
|
462
508
|
),
|
|
463
509
|
cameraPipelineConfig: createCapRouter_cameraPipelineConfig(
|
|
464
|
-
(_ctx) =>
|
|
510
|
+
(_ctx) =>
|
|
511
|
+
reg?.getSingleton<InferProvider<typeof cameraPipelineConfigCapability>>(
|
|
512
|
+
'camera-pipeline-config',
|
|
513
|
+
) ?? null,
|
|
465
514
|
remoteCapProxy,
|
|
466
515
|
),
|
|
467
516
|
cameraStreams: createCapRouter_cameraStreams(
|
|
468
|
-
(_ctx) =>
|
|
517
|
+
(_ctx) =>
|
|
518
|
+
reg?.getSingleton<InferProvider<typeof cameraStreamsCapability>>('camera-streams') ?? null,
|
|
469
519
|
remoteCapProxy,
|
|
470
520
|
),
|
|
471
521
|
carbonMonoxide: createCapRouter_carbonMonoxide(
|
|
472
|
-
(_ctx) =>
|
|
522
|
+
(_ctx) =>
|
|
523
|
+
requireDeviceScoped(reg, 'carbon-monoxide') as InferProvider<
|
|
524
|
+
typeof carbonMonoxideCapability
|
|
525
|
+
> | null,
|
|
473
526
|
remoteCapProxy,
|
|
474
527
|
),
|
|
475
528
|
climateControl: createCapRouter_climateControl(
|
|
476
|
-
(_ctx) =>
|
|
529
|
+
(_ctx) =>
|
|
530
|
+
requireDeviceScoped(reg, 'climate-control') as InferProvider<
|
|
531
|
+
typeof climateControlCapability
|
|
532
|
+
> | null,
|
|
477
533
|
remoteCapProxy,
|
|
478
534
|
),
|
|
479
535
|
color: createCapRouter_color(
|
|
@@ -481,19 +537,27 @@ export function mountAllCaps(services: MountAllCapsServices) {
|
|
|
481
537
|
remoteCapProxy,
|
|
482
538
|
),
|
|
483
539
|
connectivity: createCapRouter_connectivity(
|
|
484
|
-
(_ctx) =>
|
|
540
|
+
(_ctx) =>
|
|
541
|
+
requireDeviceScoped(reg, 'connectivity') as InferProvider<
|
|
542
|
+
typeof connectivityCapability
|
|
543
|
+
> | null,
|
|
485
544
|
remoteCapProxy,
|
|
486
545
|
),
|
|
487
546
|
consumables: createCapRouter_consumables(
|
|
488
|
-
(_ctx) =>
|
|
547
|
+
(_ctx) =>
|
|
548
|
+
requireDeviceScoped(reg, 'consumables') as InferProvider<
|
|
549
|
+
typeof consumablesCapability
|
|
550
|
+
> | null,
|
|
489
551
|
remoteCapProxy,
|
|
490
552
|
),
|
|
491
553
|
contact: createCapRouter_contact(
|
|
492
|
-
(_ctx) =>
|
|
554
|
+
(_ctx) =>
|
|
555
|
+
requireDeviceScoped(reg, 'contact') as InferProvider<typeof contactCapability> | null,
|
|
493
556
|
remoteCapProxy,
|
|
494
557
|
),
|
|
495
558
|
control: createCapRouter_control(
|
|
496
|
-
(_ctx) =>
|
|
559
|
+
(_ctx) =>
|
|
560
|
+
requireDeviceScoped(reg, 'control') as InferProvider<typeof controlCapability> | null,
|
|
497
561
|
remoteCapProxy,
|
|
498
562
|
),
|
|
499
563
|
cover: createCapRouter_cover(
|
|
@@ -505,102 +569,154 @@ export function mountAllCaps(services: MountAllCapsServices) {
|
|
|
505
569
|
remoteCapProxy,
|
|
506
570
|
),
|
|
507
571
|
detectionPipeline: createCapRouter_detectionPipeline(
|
|
508
|
-
(_ctx) =>
|
|
572
|
+
(_ctx) =>
|
|
573
|
+
reg?.getSingleton<InferProvider<typeof detectionPipelineCapability>>(
|
|
574
|
+
'detection-pipeline',
|
|
575
|
+
) ?? null,
|
|
509
576
|
remoteCapProxy,
|
|
510
577
|
),
|
|
511
578
|
deviceAdoption: createCapRouter_deviceAdoption(
|
|
512
|
-
(_ctx) =>
|
|
579
|
+
(_ctx) =>
|
|
580
|
+
reg?.getSingleton<InferProvider<typeof deviceAdoptionCapability>>('device-adoption') ??
|
|
581
|
+
null,
|
|
513
582
|
remoteCapProxy,
|
|
514
583
|
),
|
|
515
584
|
deviceDiscovery: createCapRouter_deviceDiscovery(
|
|
516
|
-
(_ctx) =>
|
|
517
|
-
|
|
518
|
-
|
|
519
|
-
|
|
520
|
-
|
|
521
|
-
|
|
522
|
-
|
|
523
|
-
|
|
524
|
-
|
|
525
|
-
|
|
526
|
-
|
|
527
|
-
|
|
528
|
-
|
|
529
|
-
|
|
530
|
-
|
|
531
|
-
|
|
532
|
-
|
|
533
|
-
|
|
534
|
-
|
|
535
|
-
|
|
536
|
-
|
|
585
|
+
(_ctx) =>
|
|
586
|
+
requireDeviceScoped(reg, 'device-discovery') as InferProvider<
|
|
587
|
+
typeof deviceDiscoveryCapability
|
|
588
|
+
> | null,
|
|
589
|
+
remoteCapProxy,
|
|
590
|
+
),
|
|
591
|
+
deviceExport: createCapRouter_deviceExport((_ctx, addonId) => {
|
|
592
|
+
if (!reg) return null
|
|
593
|
+
if (addonId !== undefined) {
|
|
594
|
+
return reg.getProviderByAddonId<InferProvider<typeof deviceExportCapability>>(
|
|
595
|
+
'device-export',
|
|
596
|
+
addonId,
|
|
597
|
+
)
|
|
598
|
+
}
|
|
599
|
+
const entries =
|
|
600
|
+
reg.getCollectionEntries<InferProvider<typeof deviceExportCapability>>('device-export')
|
|
601
|
+
if (entries.length === 0) return null
|
|
602
|
+
const providers = entries.map(([, p]) => p)
|
|
603
|
+
const first = providers[0]!
|
|
604
|
+
return {
|
|
605
|
+
...first,
|
|
606
|
+
listSupportedDeviceKinds: concatCollection(
|
|
607
|
+
providers,
|
|
608
|
+
'listSupportedDeviceKinds',
|
|
609
|
+
) as InferProvider<typeof deviceExportCapability>['listSupportedDeviceKinds'],
|
|
610
|
+
listExposedDevices: concatCollection(providers, 'listExposedDevices') as InferProvider<
|
|
611
|
+
typeof deviceExportCapability
|
|
612
|
+
>['listExposedDevices'],
|
|
613
|
+
}
|
|
614
|
+
}, remoteCapProxy),
|
|
537
615
|
deviceManager: createCapRouter_deviceManager(
|
|
538
|
-
(_ctx) =>
|
|
616
|
+
(_ctx) =>
|
|
617
|
+
reg?.getSingleton<InferProvider<typeof deviceManagerCapability>>('device-manager') ?? null,
|
|
539
618
|
remoteCapProxy,
|
|
540
619
|
),
|
|
541
620
|
deviceOps: createCapRouter_deviceOps(
|
|
542
|
-
(_ctx) =>
|
|
543
|
-
|
|
544
|
-
|
|
545
|
-
|
|
546
|
-
|
|
547
|
-
|
|
548
|
-
|
|
549
|
-
|
|
550
|
-
|
|
551
|
-
|
|
552
|
-
|
|
553
|
-
|
|
554
|
-
|
|
555
|
-
|
|
556
|
-
|
|
557
|
-
|
|
558
|
-
|
|
559
|
-
|
|
560
|
-
|
|
561
|
-
|
|
562
|
-
|
|
621
|
+
(_ctx) =>
|
|
622
|
+
requireDeviceScoped(reg, 'device-ops') as InferProvider<typeof deviceOpsCapability> | null,
|
|
623
|
+
remoteCapProxy,
|
|
624
|
+
),
|
|
625
|
+
deviceProvider: createCapRouter_deviceProvider((_ctx, addonId) => {
|
|
626
|
+
if (!reg) return null
|
|
627
|
+
if (addonId !== undefined) {
|
|
628
|
+
return reg.getProviderByAddonId<InferProvider<typeof deviceProviderCapability>>(
|
|
629
|
+
'device-provider',
|
|
630
|
+
addonId,
|
|
631
|
+
)
|
|
632
|
+
}
|
|
633
|
+
const entries =
|
|
634
|
+
reg.getCollectionEntries<InferProvider<typeof deviceProviderCapability>>('device-provider')
|
|
635
|
+
if (entries.length === 0) return null
|
|
636
|
+
const providers = entries.map(([, p]) => p)
|
|
637
|
+
const first = providers[0]!
|
|
638
|
+
return {
|
|
639
|
+
...first,
|
|
640
|
+
getDevices: concatCollection(providers, 'getDevices') as InferProvider<
|
|
641
|
+
typeof deviceProviderCapability
|
|
642
|
+
>['getDevices'],
|
|
643
|
+
discoverDevices: concatCollection(providers, 'discoverDevices') as InferProvider<
|
|
644
|
+
typeof deviceProviderCapability
|
|
645
|
+
>['discoverDevices'],
|
|
646
|
+
}
|
|
647
|
+
}, remoteCapProxy),
|
|
563
648
|
deviceState: createCapRouter_deviceState(
|
|
564
|
-
(_ctx) =>
|
|
649
|
+
(_ctx) =>
|
|
650
|
+
reg?.getSingleton<InferProvider<typeof deviceStateCapability>>('device-state') ?? null,
|
|
565
651
|
remoteCapProxy,
|
|
566
652
|
),
|
|
567
653
|
deviceStatus: createCapRouter_deviceStatus(
|
|
568
|
-
(_ctx) =>
|
|
654
|
+
(_ctx) =>
|
|
655
|
+
requireDeviceScoped(reg, 'device-status') as InferProvider<
|
|
656
|
+
typeof deviceStatusCapability
|
|
657
|
+
> | null,
|
|
569
658
|
remoteCapProxy,
|
|
570
659
|
),
|
|
571
660
|
doorbell: createCapRouter_doorbell(
|
|
572
|
-
(_ctx) =>
|
|
573
|
-
|
|
574
|
-
|
|
575
|
-
|
|
576
|
-
|
|
577
|
-
|
|
578
|
-
|
|
579
|
-
|
|
580
|
-
|
|
581
|
-
|
|
582
|
-
|
|
583
|
-
}
|
|
584
|
-
|
|
585
|
-
|
|
661
|
+
(_ctx) =>
|
|
662
|
+
requireDeviceScoped(reg, 'doorbell') as InferProvider<typeof doorbellCapability> | null,
|
|
663
|
+
remoteCapProxy,
|
|
664
|
+
),
|
|
665
|
+
embeddingEncoder: createCapRouter_embeddingEncoder((_ctx, addonId) => {
|
|
666
|
+
if (!reg) return null
|
|
667
|
+
if (addonId !== undefined) {
|
|
668
|
+
return reg.getProviderByAddonId<InferProvider<typeof embeddingEncoderCapability>>(
|
|
669
|
+
'embedding-encoder',
|
|
670
|
+
addonId,
|
|
671
|
+
)
|
|
672
|
+
}
|
|
673
|
+
const entries =
|
|
674
|
+
reg.getCollectionEntries<InferProvider<typeof embeddingEncoderCapability>>(
|
|
675
|
+
'embedding-encoder',
|
|
676
|
+
)
|
|
677
|
+
return entries[0]?.[1] ?? null
|
|
678
|
+
}, remoteCapProxy),
|
|
586
679
|
enumSensor: createCapRouter_enumSensor(
|
|
587
|
-
(_ctx) =>
|
|
680
|
+
(_ctx) =>
|
|
681
|
+
requireDeviceScoped(reg, 'enum-sensor') as InferProvider<
|
|
682
|
+
typeof enumSensorCapability
|
|
683
|
+
> | null,
|
|
588
684
|
remoteCapProxy,
|
|
589
685
|
),
|
|
590
686
|
eventEmitter: createCapRouter_eventEmitter(
|
|
591
|
-
(_ctx) =>
|
|
687
|
+
(_ctx) =>
|
|
688
|
+
requireDeviceScoped(reg, 'event-emitter') as InferProvider<
|
|
689
|
+
typeof eventEmitterCapability
|
|
690
|
+
> | null,
|
|
592
691
|
remoteCapProxy,
|
|
593
692
|
),
|
|
594
693
|
events: createCapRouter_events(
|
|
595
694
|
(_ctx) => reg?.getSingleton<InferProvider<typeof eventsCapability>>('events') ?? null,
|
|
596
695
|
remoteCapProxy,
|
|
597
696
|
),
|
|
697
|
+
faceGallery: createCapRouter_faceGallery(
|
|
698
|
+
(_ctx) =>
|
|
699
|
+
reg?.getSingleton<InferProvider<typeof faceGalleryCapability>>('face-gallery') ?? null,
|
|
700
|
+
remoteCapProxy,
|
|
701
|
+
),
|
|
598
702
|
fanControl: createCapRouter_fanControl(
|
|
599
|
-
(_ctx) =>
|
|
703
|
+
(_ctx) =>
|
|
704
|
+
requireDeviceScoped(reg, 'fan-control') as InferProvider<
|
|
705
|
+
typeof fanControlCapability
|
|
706
|
+
> | null,
|
|
600
707
|
remoteCapProxy,
|
|
601
708
|
),
|
|
602
709
|
featureProbe: createCapRouter_featureProbe(
|
|
603
|
-
(_ctx) =>
|
|
710
|
+
(_ctx) =>
|
|
711
|
+
requireDeviceScoped(reg, 'feature-probe') as InferProvider<
|
|
712
|
+
typeof featureProbeCapability
|
|
713
|
+
> | null,
|
|
714
|
+
remoteCapProxy,
|
|
715
|
+
),
|
|
716
|
+
filesystemBrowse: createCapRouter_filesystemBrowse(
|
|
717
|
+
(_ctx) =>
|
|
718
|
+
reg?.getSingleton<InferProvider<typeof filesystemBrowseCapability>>('filesystem-browse') ??
|
|
719
|
+
null,
|
|
604
720
|
remoteCapProxy,
|
|
605
721
|
),
|
|
606
722
|
flood: createCapRouter_flood(
|
|
@@ -612,11 +728,15 @@ export function mountAllCaps(services: MountAllCapsServices) {
|
|
|
612
728
|
remoteCapProxy,
|
|
613
729
|
),
|
|
614
730
|
humidifier: createCapRouter_humidifier(
|
|
615
|
-
(_ctx) =>
|
|
731
|
+
(_ctx) =>
|
|
732
|
+
requireDeviceScoped(reg, 'humidifier') as InferProvider<typeof humidifierCapability> | null,
|
|
616
733
|
remoteCapProxy,
|
|
617
734
|
),
|
|
618
735
|
humiditySensor: createCapRouter_humiditySensor(
|
|
619
|
-
(_ctx) =>
|
|
736
|
+
(_ctx) =>
|
|
737
|
+
requireDeviceScoped(reg, 'humidity-sensor') as InferProvider<
|
|
738
|
+
typeof humiditySensorCapability
|
|
739
|
+
> | null,
|
|
620
740
|
remoteCapProxy,
|
|
621
741
|
),
|
|
622
742
|
image: createCapRouter_image(
|
|
@@ -624,42 +744,57 @@ export function mountAllCaps(services: MountAllCapsServices) {
|
|
|
624
744
|
remoteCapProxy,
|
|
625
745
|
),
|
|
626
746
|
integrations: createCapRouter_integrations(
|
|
627
|
-
(_ctx) =>
|
|
747
|
+
(_ctx) =>
|
|
748
|
+
reg?.getSingleton<InferProvider<typeof integrationsCapability>>('integrations') ?? null,
|
|
628
749
|
remoteCapProxy,
|
|
629
750
|
),
|
|
630
751
|
intercom: createCapRouter_intercom(
|
|
631
|
-
(_ctx) =>
|
|
752
|
+
(_ctx) =>
|
|
753
|
+
requireDeviceScoped(reg, 'intercom') as InferProvider<typeof intercomCapability> | null,
|
|
632
754
|
remoteCapProxy,
|
|
633
755
|
),
|
|
634
756
|
lawnMowerControl: createCapRouter_lawnMowerControl(
|
|
635
|
-
(_ctx) =>
|
|
757
|
+
(_ctx) =>
|
|
758
|
+
requireDeviceScoped(reg, 'lawn-mower-control') as InferProvider<
|
|
759
|
+
typeof lawnMowerControlCapability
|
|
760
|
+
> | null,
|
|
636
761
|
remoteCapProxy,
|
|
637
762
|
),
|
|
638
763
|
localNetwork: createCapRouter_localNetwork(
|
|
639
|
-
(_ctx) =>
|
|
764
|
+
(_ctx) =>
|
|
765
|
+
reg?.getSingleton<InferProvider<typeof localNetworkCapability>>('local-network') ?? null,
|
|
640
766
|
remoteCapProxy,
|
|
641
767
|
),
|
|
642
768
|
lockControl: createCapRouter_lockControl(
|
|
643
|
-
(_ctx) =>
|
|
769
|
+
(_ctx) =>
|
|
770
|
+
requireDeviceScoped(reg, 'lock-control') as InferProvider<
|
|
771
|
+
typeof lockControlCapability
|
|
772
|
+
> | null,
|
|
644
773
|
remoteCapProxy,
|
|
645
774
|
),
|
|
646
775
|
mediaPlayer: createCapRouter_mediaPlayer(
|
|
647
|
-
(_ctx) =>
|
|
648
|
-
|
|
649
|
-
|
|
650
|
-
|
|
651
|
-
|
|
652
|
-
|
|
653
|
-
|
|
654
|
-
|
|
655
|
-
|
|
656
|
-
|
|
657
|
-
|
|
658
|
-
|
|
659
|
-
|
|
660
|
-
|
|
776
|
+
(_ctx) =>
|
|
777
|
+
requireDeviceScoped(reg, 'media-player') as InferProvider<
|
|
778
|
+
typeof mediaPlayerCapability
|
|
779
|
+
> | null,
|
|
780
|
+
remoteCapProxy,
|
|
781
|
+
),
|
|
782
|
+
meshNetwork: createCapRouter_meshNetwork((_ctx, addonId) => {
|
|
783
|
+
if (!reg) return null
|
|
784
|
+
if (addonId !== undefined) {
|
|
785
|
+
return reg.getProviderByAddonId<InferProvider<typeof meshNetworkCapability>>(
|
|
786
|
+
'mesh-network',
|
|
787
|
+
addonId,
|
|
788
|
+
)
|
|
789
|
+
}
|
|
790
|
+
const entries =
|
|
791
|
+
reg.getCollectionEntries<InferProvider<typeof meshNetworkCapability>>('mesh-network')
|
|
792
|
+
return entries[0]?.[1] ?? null
|
|
793
|
+
}, remoteCapProxy),
|
|
661
794
|
metricsProvider: createCapRouter_metricsProvider(
|
|
662
|
-
(_ctx) =>
|
|
795
|
+
(_ctx) =>
|
|
796
|
+
reg?.getSingleton<InferProvider<typeof metricsProviderCapability>>('metrics-provider') ??
|
|
797
|
+
null,
|
|
663
798
|
remoteCapProxy,
|
|
664
799
|
),
|
|
665
800
|
motion: createCapRouter_motion(
|
|
@@ -667,131 +802,186 @@ export function mountAllCaps(services: MountAllCapsServices) {
|
|
|
667
802
|
remoteCapProxy,
|
|
668
803
|
),
|
|
669
804
|
motionDetection: createCapRouter_motionDetection(
|
|
670
|
-
(_ctx) =>
|
|
805
|
+
(_ctx) =>
|
|
806
|
+
reg?.getSingleton<InferProvider<typeof motionDetectionCapability>>('motion-detection') ??
|
|
807
|
+
null,
|
|
671
808
|
remoteCapProxy,
|
|
672
809
|
),
|
|
673
810
|
motionTrigger: createCapRouter_motionTrigger(
|
|
674
|
-
(_ctx) =>
|
|
811
|
+
(_ctx) =>
|
|
812
|
+
requireDeviceScoped(reg, 'motion-trigger') as InferProvider<
|
|
813
|
+
typeof motionTriggerCapability
|
|
814
|
+
> | null,
|
|
675
815
|
remoteCapProxy,
|
|
676
816
|
),
|
|
677
817
|
motionZones: createCapRouter_motionZones(
|
|
678
|
-
(_ctx) =>
|
|
679
|
-
|
|
680
|
-
|
|
681
|
-
|
|
682
|
-
|
|
683
|
-
|
|
684
|
-
|
|
685
|
-
|
|
686
|
-
|
|
687
|
-
|
|
688
|
-
|
|
689
|
-
|
|
690
|
-
|
|
691
|
-
|
|
692
|
-
|
|
693
|
-
|
|
694
|
-
|
|
695
|
-
|
|
696
|
-
|
|
697
|
-
|
|
818
|
+
(_ctx) =>
|
|
819
|
+
requireDeviceScoped(reg, 'motion-zones') as InferProvider<
|
|
820
|
+
typeof motionZonesCapability
|
|
821
|
+
> | null,
|
|
822
|
+
remoteCapProxy,
|
|
823
|
+
),
|
|
824
|
+
mqttBroker: createCapRouter_mqttBroker((_ctx, addonId) => {
|
|
825
|
+
if (!reg) return null
|
|
826
|
+
if (addonId !== undefined) {
|
|
827
|
+
return reg.getProviderByAddonId<InferProvider<typeof mqttBrokerCapability>>(
|
|
828
|
+
'mqtt-broker',
|
|
829
|
+
addonId,
|
|
830
|
+
)
|
|
831
|
+
}
|
|
832
|
+
const entries =
|
|
833
|
+
reg.getCollectionEntries<InferProvider<typeof mqttBrokerCapability>>('mqtt-broker')
|
|
834
|
+
if (entries.length === 0) return null
|
|
835
|
+
const providers = entries.map(([, p]) => p)
|
|
836
|
+
const first = providers[0]!
|
|
837
|
+
return {
|
|
838
|
+
...first,
|
|
839
|
+
listBrokers: concatCollection(providers, 'listBrokers') as InferProvider<
|
|
840
|
+
typeof mqttBrokerCapability
|
|
841
|
+
>['listBrokers'],
|
|
842
|
+
}
|
|
843
|
+
}, remoteCapProxy),
|
|
698
844
|
nativeObjectDetection: createCapRouter_nativeObjectDetection(
|
|
699
|
-
(_ctx) =>
|
|
700
|
-
|
|
701
|
-
|
|
702
|
-
|
|
703
|
-
|
|
704
|
-
|
|
705
|
-
|
|
706
|
-
|
|
707
|
-
|
|
708
|
-
|
|
709
|
-
|
|
710
|
-
|
|
711
|
-
|
|
712
|
-
|
|
713
|
-
|
|
714
|
-
|
|
715
|
-
|
|
716
|
-
|
|
717
|
-
|
|
718
|
-
|
|
845
|
+
(_ctx) =>
|
|
846
|
+
requireDeviceScoped(reg, 'native-object-detection') as InferProvider<
|
|
847
|
+
typeof nativeObjectDetectionCapability
|
|
848
|
+
> | null,
|
|
849
|
+
remoteCapProxy,
|
|
850
|
+
),
|
|
851
|
+
networkAccess: createCapRouter_networkAccess((_ctx, addonId) => {
|
|
852
|
+
if (!reg) return null
|
|
853
|
+
if (addonId !== undefined) {
|
|
854
|
+
return reg.getProviderByAddonId<InferProvider<typeof networkAccessCapability>>(
|
|
855
|
+
'network-access',
|
|
856
|
+
addonId,
|
|
857
|
+
)
|
|
858
|
+
}
|
|
859
|
+
const entries =
|
|
860
|
+
reg.getCollectionEntries<InferProvider<typeof networkAccessCapability>>('network-access')
|
|
861
|
+
if (entries.length === 0) return null
|
|
862
|
+
const providers = entries.map(([, p]) => p)
|
|
863
|
+
const first = providers[0]!
|
|
864
|
+
return {
|
|
865
|
+
...first,
|
|
866
|
+
listEndpoints: concatCollection(providers, 'listEndpoints') as InferProvider<
|
|
867
|
+
typeof networkAccessCapability
|
|
868
|
+
>['listEndpoints'],
|
|
869
|
+
}
|
|
870
|
+
}, remoteCapProxy),
|
|
719
871
|
networkQuality: createCapRouter_networkQuality(
|
|
720
|
-
(_ctx) =>
|
|
872
|
+
(_ctx) =>
|
|
873
|
+
reg?.getSingleton<InferProvider<typeof networkQualityCapability>>('network-quality') ??
|
|
874
|
+
null,
|
|
721
875
|
remoteCapProxy,
|
|
722
876
|
),
|
|
723
877
|
nodes: createCapRouter_nodes(
|
|
724
878
|
(_ctx) => reg?.getSingleton<InferProvider<typeof nodesCapability>>('nodes') ?? null,
|
|
725
879
|
remoteCapProxy,
|
|
726
880
|
),
|
|
727
|
-
notificationOutput: createCapRouter_notificationOutput(
|
|
728
|
-
(
|
|
729
|
-
|
|
730
|
-
|
|
731
|
-
|
|
732
|
-
|
|
733
|
-
|
|
734
|
-
|
|
735
|
-
|
|
736
|
-
|
|
737
|
-
|
|
881
|
+
notificationOutput: createCapRouter_notificationOutput((_ctx, addonId) => {
|
|
882
|
+
if (!reg) return null
|
|
883
|
+
if (addonId !== undefined) {
|
|
884
|
+
return reg.getProviderByAddonId<InferProvider<typeof notificationOutputCapability>>(
|
|
885
|
+
'notification-output',
|
|
886
|
+
addonId,
|
|
887
|
+
)
|
|
888
|
+
}
|
|
889
|
+
const entries =
|
|
890
|
+
reg.getCollectionEntries<InferProvider<typeof notificationOutputCapability>>(
|
|
891
|
+
'notification-output',
|
|
892
|
+
)
|
|
893
|
+
return entries[0]?.[1] ?? null
|
|
894
|
+
}, remoteCapProxy),
|
|
738
895
|
notifier: createCapRouter_notifier(
|
|
739
|
-
(_ctx) =>
|
|
896
|
+
(_ctx) =>
|
|
897
|
+
requireDeviceScoped(reg, 'notifier') as InferProvider<typeof notifierCapability> | null,
|
|
740
898
|
remoteCapProxy,
|
|
741
899
|
),
|
|
742
900
|
numericSensor: createCapRouter_numericSensor(
|
|
743
|
-
(_ctx) =>
|
|
744
|
-
|
|
745
|
-
|
|
746
|
-
|
|
747
|
-
|
|
748
|
-
|
|
749
|
-
|
|
750
|
-
|
|
751
|
-
|
|
752
|
-
|
|
753
|
-
|
|
754
|
-
|
|
755
|
-
|
|
756
|
-
|
|
901
|
+
(_ctx) =>
|
|
902
|
+
requireDeviceScoped(reg, 'numeric-sensor') as InferProvider<
|
|
903
|
+
typeof numericSensorCapability
|
|
904
|
+
> | null,
|
|
905
|
+
remoteCapProxy,
|
|
906
|
+
),
|
|
907
|
+
oauthIntegration: createCapRouter_oauthIntegration((_ctx, addonId) => {
|
|
908
|
+
if (!reg) return null
|
|
909
|
+
if (addonId !== undefined) {
|
|
910
|
+
return reg.getProviderByAddonId<InferProvider<typeof oauthIntegrationCapability>>(
|
|
911
|
+
'oauth-integration',
|
|
912
|
+
addonId,
|
|
913
|
+
)
|
|
914
|
+
}
|
|
915
|
+
const entries =
|
|
916
|
+
reg.getCollectionEntries<InferProvider<typeof oauthIntegrationCapability>>(
|
|
917
|
+
'oauth-integration',
|
|
918
|
+
)
|
|
919
|
+
return entries[0]?.[1] ?? null
|
|
920
|
+
}, remoteCapProxy),
|
|
757
921
|
osd: createCapRouter_osd(
|
|
758
922
|
(_ctx) => requireDeviceScoped(reg, 'osd') as InferProvider<typeof osdCapability> | null,
|
|
759
923
|
remoteCapProxy,
|
|
760
924
|
),
|
|
761
925
|
pipelineAnalytics: createCapRouter_pipelineAnalytics(
|
|
762
|
-
(_ctx) =>
|
|
926
|
+
(_ctx) =>
|
|
927
|
+
reg?.getSingleton<InferProvider<typeof pipelineAnalyticsCapability>>(
|
|
928
|
+
'pipeline-analytics',
|
|
929
|
+
) ?? null,
|
|
763
930
|
remoteCapProxy,
|
|
764
931
|
),
|
|
765
932
|
pipelineExecutor: createCapRouter_pipelineExecutor(
|
|
766
|
-
(_ctx) =>
|
|
933
|
+
(_ctx) =>
|
|
934
|
+
reg?.getSingleton<InferProvider<typeof pipelineExecutorCapability>>('pipeline-executor') ??
|
|
935
|
+
null,
|
|
767
936
|
remoteCapProxy,
|
|
768
937
|
),
|
|
769
938
|
pipelineOrchestrator: createCapRouter_pipelineOrchestrator(
|
|
770
|
-
(_ctx) =>
|
|
939
|
+
(_ctx) =>
|
|
940
|
+
reg?.getSingleton<InferProvider<typeof pipelineOrchestratorCapability>>(
|
|
941
|
+
'pipeline-orchestrator',
|
|
942
|
+
) ?? null,
|
|
771
943
|
remoteCapProxy,
|
|
772
944
|
),
|
|
773
945
|
pipelineRunner: createCapRouter_pipelineRunner(
|
|
774
|
-
(_ctx) =>
|
|
946
|
+
(_ctx) =>
|
|
947
|
+
reg?.getSingleton<InferProvider<typeof pipelineRunnerCapability>>('pipeline-runner') ??
|
|
948
|
+
null,
|
|
949
|
+
remoteCapProxy,
|
|
950
|
+
),
|
|
951
|
+
plateGallery: createCapRouter_plateGallery(
|
|
952
|
+
(_ctx) =>
|
|
953
|
+
reg?.getSingleton<InferProvider<typeof plateGalleryCapability>>('plate-gallery') ?? null,
|
|
775
954
|
remoteCapProxy,
|
|
776
955
|
),
|
|
777
956
|
platformProbe: createCapRouter_platformProbe(
|
|
778
|
-
(_ctx) =>
|
|
957
|
+
(_ctx) =>
|
|
958
|
+
reg?.getSingleton<InferProvider<typeof platformProbeCapability>>('platform-probe') ?? null,
|
|
779
959
|
remoteCapProxy,
|
|
780
960
|
),
|
|
781
961
|
powerMeter: createCapRouter_powerMeter(
|
|
782
|
-
(_ctx) =>
|
|
962
|
+
(_ctx) =>
|
|
963
|
+
requireDeviceScoped(reg, 'power-meter') as InferProvider<
|
|
964
|
+
typeof powerMeterCapability
|
|
965
|
+
> | null,
|
|
783
966
|
remoteCapProxy,
|
|
784
967
|
),
|
|
785
968
|
presence: createCapRouter_presence(
|
|
786
|
-
(_ctx) =>
|
|
969
|
+
(_ctx) =>
|
|
970
|
+
requireDeviceScoped(reg, 'presence') as InferProvider<typeof presenceCapability> | null,
|
|
787
971
|
remoteCapProxy,
|
|
788
972
|
),
|
|
789
973
|
pressureSensor: createCapRouter_pressureSensor(
|
|
790
|
-
(_ctx) =>
|
|
974
|
+
(_ctx) =>
|
|
975
|
+
requireDeviceScoped(reg, 'pressure-sensor') as InferProvider<
|
|
976
|
+
typeof pressureSensorCapability
|
|
977
|
+
> | null,
|
|
791
978
|
remoteCapProxy,
|
|
792
979
|
),
|
|
793
980
|
privacyMask: createCapRouter_privacyMask(
|
|
794
|
-
(_ctx) =>
|
|
981
|
+
(_ctx) =>
|
|
982
|
+
requireDeviceScoped(reg, 'privacy-mask') as InferProvider<
|
|
983
|
+
typeof privacyMaskCapability
|
|
984
|
+
> | null,
|
|
795
985
|
remoteCapProxy,
|
|
796
986
|
),
|
|
797
987
|
ptz: createCapRouter_ptz(
|
|
@@ -799,7 +989,10 @@ export function mountAllCaps(services: MountAllCapsServices) {
|
|
|
799
989
|
remoteCapProxy,
|
|
800
990
|
),
|
|
801
991
|
ptzAutotrack: createCapRouter_ptzAutotrack(
|
|
802
|
-
(_ctx) =>
|
|
992
|
+
(_ctx) =>
|
|
993
|
+
requireDeviceScoped(reg, 'ptz-autotrack') as InferProvider<
|
|
994
|
+
typeof ptzAutotrackCapability
|
|
995
|
+
> | null,
|
|
803
996
|
remoteCapProxy,
|
|
804
997
|
),
|
|
805
998
|
reboot: createCapRouter_reboot(
|
|
@@ -811,43 +1004,52 @@ export function mountAllCaps(services: MountAllCapsServices) {
|
|
|
811
1004
|
remoteCapProxy,
|
|
812
1005
|
),
|
|
813
1006
|
scriptRunner: createCapRouter_scriptRunner(
|
|
814
|
-
(_ctx) =>
|
|
1007
|
+
(_ctx) =>
|
|
1008
|
+
requireDeviceScoped(reg, 'script-runner') as InferProvider<
|
|
1009
|
+
typeof scriptRunnerCapability
|
|
1010
|
+
> | null,
|
|
815
1011
|
remoteCapProxy,
|
|
816
1012
|
),
|
|
817
1013
|
settingsStore: createCapRouter_settingsStore(
|
|
818
|
-
(_ctx) =>
|
|
1014
|
+
(_ctx) =>
|
|
1015
|
+
reg?.getSingleton<InferProvider<typeof settingsStoreCapability>>('settings-store') ?? null,
|
|
819
1016
|
remoteCapProxy,
|
|
820
1017
|
),
|
|
821
1018
|
smoke: createCapRouter_smoke(
|
|
822
1019
|
(_ctx) => requireDeviceScoped(reg, 'smoke') as InferProvider<typeof smokeCapability> | null,
|
|
823
1020
|
remoteCapProxy,
|
|
824
1021
|
),
|
|
825
|
-
smtpProvider: createCapRouter_smtpProvider(
|
|
826
|
-
(
|
|
827
|
-
|
|
828
|
-
|
|
829
|
-
|
|
830
|
-
|
|
831
|
-
|
|
832
|
-
|
|
833
|
-
|
|
834
|
-
|
|
835
|
-
|
|
1022
|
+
smtpProvider: createCapRouter_smtpProvider((_ctx, addonId) => {
|
|
1023
|
+
if (!reg) return null
|
|
1024
|
+
if (addonId !== undefined) {
|
|
1025
|
+
return reg.getProviderByAddonId<InferProvider<typeof smtpProviderCapability>>(
|
|
1026
|
+
'smtp-provider',
|
|
1027
|
+
addonId,
|
|
1028
|
+
)
|
|
1029
|
+
}
|
|
1030
|
+
const entries =
|
|
1031
|
+
reg.getCollectionEntries<InferProvider<typeof smtpProviderCapability>>('smtp-provider')
|
|
1032
|
+
return entries[0]?.[1] ?? null
|
|
1033
|
+
}, remoteCapProxy),
|
|
836
1034
|
snapshot: createCapRouter_snapshot(
|
|
837
|
-
(_ctx) =>
|
|
838
|
-
|
|
839
|
-
|
|
840
|
-
|
|
841
|
-
|
|
842
|
-
|
|
843
|
-
|
|
844
|
-
|
|
845
|
-
|
|
846
|
-
|
|
847
|
-
|
|
848
|
-
}
|
|
849
|
-
|
|
850
|
-
|
|
1035
|
+
(_ctx) =>
|
|
1036
|
+
requireDeviceScoped(reg, 'snapshot') as InferProvider<typeof snapshotCapability> | null,
|
|
1037
|
+
remoteCapProxy,
|
|
1038
|
+
),
|
|
1039
|
+
snapshotProvider: createCapRouter_snapshotProvider((_ctx, addonId) => {
|
|
1040
|
+
if (!reg) return null
|
|
1041
|
+
if (addonId !== undefined) {
|
|
1042
|
+
return reg.getProviderByAddonId<InferProvider<typeof snapshotProviderCapability>>(
|
|
1043
|
+
'snapshot-provider',
|
|
1044
|
+
addonId,
|
|
1045
|
+
)
|
|
1046
|
+
}
|
|
1047
|
+
const entries =
|
|
1048
|
+
reg.getCollectionEntries<InferProvider<typeof snapshotProviderCapability>>(
|
|
1049
|
+
'snapshot-provider',
|
|
1050
|
+
)
|
|
1051
|
+
return entries[0]?.[1] ?? null
|
|
1052
|
+
}, remoteCapProxy),
|
|
851
1053
|
ssoBridge: createCapRouter_ssoBridge(
|
|
852
1054
|
(_ctx) => reg?.getSingleton<InferProvider<typeof ssoBridgeCapability>>('sso-bridge') ?? null,
|
|
853
1055
|
remoteCapProxy,
|
|
@@ -856,44 +1058,59 @@ export function mountAllCaps(services: MountAllCapsServices) {
|
|
|
856
1058
|
(_ctx) => reg?.getSingleton<InferProvider<typeof storageCapability>>('storage') ?? null,
|
|
857
1059
|
remoteCapProxy,
|
|
858
1060
|
),
|
|
859
|
-
storageEvictable: createCapRouter_storageEvictable(
|
|
860
|
-
(
|
|
861
|
-
|
|
862
|
-
|
|
863
|
-
|
|
864
|
-
|
|
865
|
-
|
|
866
|
-
|
|
867
|
-
|
|
868
|
-
|
|
869
|
-
|
|
870
|
-
|
|
871
|
-
|
|
872
|
-
|
|
873
|
-
|
|
874
|
-
|
|
875
|
-
|
|
876
|
-
|
|
877
|
-
|
|
878
|
-
|
|
879
|
-
|
|
880
|
-
|
|
881
|
-
|
|
882
|
-
|
|
883
|
-
|
|
884
|
-
|
|
885
|
-
|
|
886
|
-
|
|
1061
|
+
storageEvictable: createCapRouter_storageEvictable((_ctx, addonId) => {
|
|
1062
|
+
if (!reg) return null
|
|
1063
|
+
if (addonId !== undefined) {
|
|
1064
|
+
return reg.getProviderByAddonId<InferProvider<typeof storageEvictableCapability>>(
|
|
1065
|
+
'storage-evictable',
|
|
1066
|
+
addonId,
|
|
1067
|
+
)
|
|
1068
|
+
}
|
|
1069
|
+
const entries =
|
|
1070
|
+
reg.getCollectionEntries<InferProvider<typeof storageEvictableCapability>>(
|
|
1071
|
+
'storage-evictable',
|
|
1072
|
+
)
|
|
1073
|
+
return entries[0]?.[1] ?? null
|
|
1074
|
+
}, remoteCapProxy),
|
|
1075
|
+
storageProvider: createCapRouter_storageProvider((_ctx, addonId) => {
|
|
1076
|
+
if (!reg) return null
|
|
1077
|
+
if (addonId !== undefined) {
|
|
1078
|
+
return reg.getProviderByAddonId<InferProvider<typeof storageProviderCapability>>(
|
|
1079
|
+
'storage-provider',
|
|
1080
|
+
addonId,
|
|
1081
|
+
)
|
|
1082
|
+
}
|
|
1083
|
+
const entries =
|
|
1084
|
+
reg.getCollectionEntries<InferProvider<typeof storageProviderCapability>>(
|
|
1085
|
+
'storage-provider',
|
|
1086
|
+
)
|
|
1087
|
+
if (entries.length === 0) return null
|
|
1088
|
+
const providers = entries.map(([, p]) => p)
|
|
1089
|
+
const first = providers[0]!
|
|
1090
|
+
return {
|
|
1091
|
+
...first,
|
|
1092
|
+
list: concatCollection(providers, 'list') as InferProvider<
|
|
1093
|
+
typeof storageProviderCapability
|
|
1094
|
+
>['list'],
|
|
1095
|
+
}
|
|
1096
|
+
}, remoteCapProxy),
|
|
887
1097
|
streamBroker: createCapRouter_streamBroker(
|
|
888
|
-
(_ctx) =>
|
|
1098
|
+
(_ctx) =>
|
|
1099
|
+
reg?.getSingleton<InferProvider<typeof streamBrokerCapability>>('stream-broker') ?? null,
|
|
889
1100
|
remoteCapProxy,
|
|
890
1101
|
),
|
|
891
1102
|
streamCatalog: createCapRouter_streamCatalog(
|
|
892
|
-
(_ctx) =>
|
|
1103
|
+
(_ctx) =>
|
|
1104
|
+
requireDeviceScoped(reg, 'stream-catalog') as InferProvider<
|
|
1105
|
+
typeof streamCatalogCapability
|
|
1106
|
+
> | null,
|
|
893
1107
|
remoteCapProxy,
|
|
894
1108
|
),
|
|
895
1109
|
streamParams: createCapRouter_streamParams(
|
|
896
|
-
(_ctx) =>
|
|
1110
|
+
(_ctx) =>
|
|
1111
|
+
requireDeviceScoped(reg, 'stream-params') as InferProvider<
|
|
1112
|
+
typeof streamParamsCapability
|
|
1113
|
+
> | null,
|
|
897
1114
|
remoteCapProxy,
|
|
898
1115
|
),
|
|
899
1116
|
switch: createCapRouter_switch(
|
|
@@ -909,57 +1126,71 @@ export function mountAllCaps(services: MountAllCapsServices) {
|
|
|
909
1126
|
remoteCapProxy,
|
|
910
1127
|
),
|
|
911
1128
|
temperatureSensor: createCapRouter_temperatureSensor(
|
|
912
|
-
(_ctx) =>
|
|
1129
|
+
(_ctx) =>
|
|
1130
|
+
requireDeviceScoped(reg, 'temperature-sensor') as InferProvider<
|
|
1131
|
+
typeof temperatureSensorCapability
|
|
1132
|
+
> | null,
|
|
913
1133
|
remoteCapProxy,
|
|
914
1134
|
),
|
|
915
1135
|
toast: createCapRouter_toast(
|
|
916
1136
|
(_ctx) => reg?.getSingleton<InferProvider<typeof toastCapability>>('toast') ?? null,
|
|
917
1137
|
remoteCapProxy,
|
|
918
1138
|
),
|
|
919
|
-
turnProvider: createCapRouter_turnProvider(
|
|
920
|
-
(
|
|
921
|
-
|
|
922
|
-
|
|
923
|
-
|
|
924
|
-
|
|
925
|
-
|
|
926
|
-
|
|
927
|
-
|
|
928
|
-
|
|
929
|
-
|
|
930
|
-
|
|
931
|
-
|
|
932
|
-
|
|
933
|
-
|
|
934
|
-
|
|
935
|
-
|
|
1139
|
+
turnProvider: createCapRouter_turnProvider((_ctx, addonId) => {
|
|
1140
|
+
if (!reg) return null
|
|
1141
|
+
if (addonId !== undefined) {
|
|
1142
|
+
return reg.getProviderByAddonId<InferProvider<typeof turnProviderCapability>>(
|
|
1143
|
+
'turn-provider',
|
|
1144
|
+
addonId,
|
|
1145
|
+
)
|
|
1146
|
+
}
|
|
1147
|
+
const entries =
|
|
1148
|
+
reg.getCollectionEntries<InferProvider<typeof turnProviderCapability>>('turn-provider')
|
|
1149
|
+
if (entries.length === 0) return null
|
|
1150
|
+
const providers = entries.map(([, p]) => p)
|
|
1151
|
+
const first = providers[0]!
|
|
1152
|
+
return {
|
|
1153
|
+
...first,
|
|
1154
|
+
getTurnServers: concatCollection(providers, 'getTurnServers') as InferProvider<
|
|
1155
|
+
typeof turnProviderCapability
|
|
1156
|
+
>['getTurnServers'],
|
|
1157
|
+
}
|
|
1158
|
+
}, remoteCapProxy),
|
|
936
1159
|
update: createCapRouter_update(
|
|
937
1160
|
(_ctx) => requireDeviceScoped(reg, 'update') as InferProvider<typeof updateCapability> | null,
|
|
938
1161
|
remoteCapProxy,
|
|
939
1162
|
),
|
|
940
1163
|
userManagement: createCapRouter_userManagement(
|
|
941
|
-
(_ctx) =>
|
|
942
|
-
|
|
943
|
-
|
|
944
|
-
|
|
945
|
-
|
|
946
|
-
|
|
947
|
-
|
|
948
|
-
|
|
949
|
-
|
|
950
|
-
|
|
951
|
-
|
|
952
|
-
|
|
953
|
-
|
|
954
|
-
|
|
955
|
-
|
|
956
|
-
|
|
957
|
-
|
|
958
|
-
|
|
959
|
-
|
|
960
|
-
|
|
1164
|
+
(_ctx) =>
|
|
1165
|
+
reg?.getSingleton<InferProvider<typeof userManagementCapability>>('user-management') ??
|
|
1166
|
+
null,
|
|
1167
|
+
remoteCapProxy,
|
|
1168
|
+
),
|
|
1169
|
+
userPasskeys: createCapRouter_userPasskeys((_ctx, addonId) => {
|
|
1170
|
+
if (!reg) return null
|
|
1171
|
+
if (addonId !== undefined) {
|
|
1172
|
+
return reg.getProviderByAddonId<InferProvider<typeof userPasskeysCapability>>(
|
|
1173
|
+
'user-passkeys',
|
|
1174
|
+
addonId,
|
|
1175
|
+
)
|
|
1176
|
+
}
|
|
1177
|
+
const entries =
|
|
1178
|
+
reg.getCollectionEntries<InferProvider<typeof userPasskeysCapability>>('user-passkeys')
|
|
1179
|
+
if (entries.length === 0) return null
|
|
1180
|
+
const providers = entries.map(([, p]) => p)
|
|
1181
|
+
const first = providers[0]!
|
|
1182
|
+
return {
|
|
1183
|
+
...first,
|
|
1184
|
+
listPasskeys: concatCollection(providers, 'listPasskeys') as InferProvider<
|
|
1185
|
+
typeof userPasskeysCapability
|
|
1186
|
+
>['listPasskeys'],
|
|
1187
|
+
}
|
|
1188
|
+
}, remoteCapProxy),
|
|
961
1189
|
vacuumControl: createCapRouter_vacuumControl(
|
|
962
|
-
(_ctx) =>
|
|
1190
|
+
(_ctx) =>
|
|
1191
|
+
requireDeviceScoped(reg, 'vacuum-control') as InferProvider<
|
|
1192
|
+
typeof vacuumControlCapability
|
|
1193
|
+
> | null,
|
|
963
1194
|
remoteCapProxy,
|
|
964
1195
|
),
|
|
965
1196
|
valve: createCapRouter_valve(
|
|
@@ -967,23 +1198,34 @@ export function mountAllCaps(services: MountAllCapsServices) {
|
|
|
967
1198
|
remoteCapProxy,
|
|
968
1199
|
),
|
|
969
1200
|
vibration: createCapRouter_vibration(
|
|
970
|
-
(_ctx) =>
|
|
1201
|
+
(_ctx) =>
|
|
1202
|
+
requireDeviceScoped(reg, 'vibration') as InferProvider<typeof vibrationCapability> | null,
|
|
1203
|
+
remoteCapProxy,
|
|
1204
|
+
),
|
|
1205
|
+
videoclips: createCapRouter_videoclips(
|
|
1206
|
+
(_ctx) => reg?.getSingleton<InferProvider<typeof videoclipsCapability>>('videoclips') ?? null,
|
|
971
1207
|
remoteCapProxy,
|
|
972
1208
|
),
|
|
973
1209
|
waterHeater: createCapRouter_waterHeater(
|
|
974
|
-
(_ctx) =>
|
|
1210
|
+
(_ctx) =>
|
|
1211
|
+
requireDeviceScoped(reg, 'water-heater') as InferProvider<
|
|
1212
|
+
typeof waterHeaterCapability
|
|
1213
|
+
> | null,
|
|
975
1214
|
remoteCapProxy,
|
|
976
1215
|
),
|
|
977
1216
|
weather: createCapRouter_weather(
|
|
978
|
-
(_ctx) =>
|
|
1217
|
+
(_ctx) =>
|
|
1218
|
+
requireDeviceScoped(reg, 'weather') as InferProvider<typeof weatherCapability> | null,
|
|
979
1219
|
remoteCapProxy,
|
|
980
1220
|
),
|
|
981
1221
|
webrtcSession: createCapRouter_webrtcSession(
|
|
982
|
-
(_ctx) =>
|
|
1222
|
+
(_ctx) =>
|
|
1223
|
+
reg?.getSingleton<InferProvider<typeof webrtcSessionCapability>>('webrtc-session') ?? null,
|
|
983
1224
|
remoteCapProxy,
|
|
984
1225
|
),
|
|
985
1226
|
zoneAnalytics: createCapRouter_zoneAnalytics(
|
|
986
|
-
(_ctx) =>
|
|
1227
|
+
(_ctx) =>
|
|
1228
|
+
reg?.getSingleton<InferProvider<typeof zoneAnalyticsCapability>>('zone-analytics') ?? null,
|
|
987
1229
|
remoteCapProxy,
|
|
988
1230
|
),
|
|
989
1231
|
zoneRules: createCapRouter_zoneRules(
|