@camstack/server 0.2.2 → 1.0.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.
Files changed (234) hide show
  1. package/{src/agent-status-page.ts → dist/agent-status-page.js} +30 -45
  2. package/dist/api/addon-upload.js +441 -0
  3. package/dist/api/addons-custom.router.js +91 -0
  4. package/dist/api/auth-whoami.js +55 -0
  5. package/dist/api/bridge-addons.router.js +109 -0
  6. package/dist/api/capabilities.router.js +229 -0
  7. package/dist/api/core/addon-settings.router.js +117 -0
  8. package/dist/api/core/agents.router.js +73 -0
  9. package/dist/api/core/auth.router.js +286 -0
  10. package/dist/api/core/bulk-update-coordinator.js +229 -0
  11. package/dist/api/core/cap-providers.js +1124 -0
  12. package/dist/api/core/capabilities.router.js +138 -0
  13. package/dist/api/core/collection-preference.js +17 -0
  14. package/dist/api/core/event-bus-proxy.router.js +45 -0
  15. package/dist/api/core/hwaccel.router.js +91 -0
  16. package/dist/api/core/live-events.router.js +61 -0
  17. package/dist/api/core/logs.router.js +172 -0
  18. package/dist/api/core/notifications.router.js +67 -0
  19. package/dist/api/core/repl.router.js +35 -0
  20. package/dist/api/core/settings-backend.router.js +121 -0
  21. package/dist/api/core/stream-probe.router.js +58 -0
  22. package/dist/api/core/system-events.router.js +100 -0
  23. package/dist/api/health/health.routes.js +68 -0
  24. package/{src/api/oauth2/consent-page.ts → dist/api/oauth2/consent-page.js} +11 -20
  25. package/dist/api/oauth2/oauth2-routes.js +219 -0
  26. package/dist/api/trpc/cap-mount-helpers.js +194 -0
  27. package/dist/api/trpc/cap-route-error-formatter.js +133 -0
  28. package/dist/api/trpc/client-ip.js +147 -0
  29. package/dist/api/trpc/core-cap-bridge.js +115 -0
  30. package/dist/api/trpc/generated-cap-mounts.js +388 -0
  31. package/dist/api/trpc/generated-cap-routers.js +7635 -0
  32. package/dist/api/trpc/scope-access.js +93 -0
  33. package/dist/api/trpc/trpc.context.js +184 -0
  34. package/dist/api/trpc/trpc.middleware.js +139 -0
  35. package/dist/api/trpc/trpc.router.js +188 -0
  36. package/dist/auth/session-cookie.js +47 -0
  37. package/dist/boot/boot-config.js +241 -0
  38. package/dist/boot/integration-id-backfill.js +76 -0
  39. package/dist/boot/post-boot.service.js +85 -0
  40. package/dist/core/addon/addon-call-gateway.js +99 -0
  41. package/dist/core/addon/addon-package.service.js +1560 -0
  42. package/dist/core/addon/addon-registry.service.js +2739 -0
  43. package/{src/core/addon/addon-row-manifest.ts → dist/core/addon/addon-row-manifest.js} +5 -5
  44. package/dist/core/addon/addon-search.service.js +62 -0
  45. package/dist/core/addon/addon-settings-provider.js +102 -0
  46. package/dist/core/addon/addon.tokens.js +5 -0
  47. package/dist/core/addon-bridge/addon-bridge.service.js +145 -0
  48. package/dist/core/addon-pages/addon-pages.service.js +107 -0
  49. package/dist/core/addon-widgets/addon-widgets.service.js +120 -0
  50. package/dist/core/agent/agent-registry.service.js +477 -0
  51. package/dist/core/auth/auth.service.js +10 -0
  52. package/dist/core/capability/capability.service.js +58 -0
  53. package/dist/core/config/config.schema.js +7 -0
  54. package/dist/core/config/config.service.js +10 -0
  55. package/dist/core/events/event-bus.service.js +83 -0
  56. package/dist/core/feature/feature.service.js +10 -0
  57. package/dist/core/lifecycle/lifecycle-state-machine.js +6 -0
  58. package/dist/core/logging/log-ring-buffer.js +6 -0
  59. package/dist/core/logging/logging.service.js +130 -0
  60. package/dist/core/logging/scoped-logger.js +6 -0
  61. package/dist/core/moleculer/cap-call-fn.js +50 -0
  62. package/dist/core/moleculer/cap-route-authority.js +122 -0
  63. package/dist/core/moleculer/moleculer.service.js +898 -0
  64. package/dist/core/network/network-quality.service.js +7 -0
  65. package/dist/core/notification/notification-wrapper.service.js +33 -0
  66. package/dist/core/notification/toast-wrapper.service.js +25 -0
  67. package/dist/core/provider/provider.tokens.js +4 -0
  68. package/dist/core/repl/repl-engine.service.js +140 -0
  69. package/dist/core/storage/fs-storage-backend.js +6 -0
  70. package/dist/core/storage/storage-location-manager.js +6 -0
  71. package/dist/core/storage/storage.service.js +7 -0
  72. package/dist/core/streaming/stream-probe.service.js +209 -0
  73. package/dist/core/topology/topology-emitter.service.js +106 -0
  74. package/dist/launcher.js +325 -0
  75. package/dist/main.js +1098 -0
  76. package/dist/manual-boot.js +227 -0
  77. package/package.json +5 -1
  78. package/src/__tests__/addon-install-e2e.test.ts +0 -74
  79. package/src/__tests__/addon-pages-e2e.test.ts +0 -200
  80. package/src/__tests__/addon-route-session.test.ts +0 -17
  81. package/src/__tests__/addon-settings-router.spec.ts +0 -67
  82. package/src/__tests__/addon-upload.spec.ts +0 -475
  83. package/src/__tests__/agent-registry.spec.ts +0 -179
  84. package/src/__tests__/agent-status-page.spec.ts +0 -82
  85. package/src/__tests__/auth-session-cookie.test.ts +0 -48
  86. package/src/__tests__/bulk-update-coordinator.spec.ts +0 -303
  87. package/src/__tests__/cap-ownership-authority.spec.ts +0 -431
  88. package/src/__tests__/cap-providers/cap-providers-location-import.spec.ts +0 -206
  89. package/src/__tests__/cap-providers/cap-usage-graph.spec.ts +0 -37
  90. package/src/__tests__/cap-providers/compute-topology-categories.spec.ts +0 -110
  91. package/src/__tests__/cap-providers/integrations-delete-cascade.spec.ts +0 -292
  92. package/src/__tests__/cap-providers-bulk-update.spec.ts +0 -408
  93. package/src/__tests__/cap-route-adapter.spec.ts +0 -302
  94. package/src/__tests__/cap-routers/_meta.spec.ts +0 -199
  95. package/src/__tests__/cap-routers/addon-settings.router.spec.ts +0 -115
  96. package/src/__tests__/cap-routers/broker-routing.router.spec.ts +0 -177
  97. package/src/__tests__/cap-routers/cap-route-error-formatter.spec.ts +0 -125
  98. package/src/__tests__/cap-routers/capabilities-node.spec.ts +0 -68
  99. package/src/__tests__/cap-routers/device-link-overlay.spec.ts +0 -137
  100. package/src/__tests__/cap-routers/device-manager-aggregate.router.spec.ts +0 -194
  101. package/src/__tests__/cap-routers/harness.ts +0 -163
  102. package/src/__tests__/cap-routers/metrics-provider.router.spec.ts +0 -133
  103. package/src/__tests__/cap-routers/null-provider-guard.spec.ts +0 -64
  104. package/src/__tests__/cap-routers/pipeline-executor.router.spec.ts +0 -159
  105. package/src/__tests__/cap-routers/settings-store.router.spec.ts +0 -291
  106. package/src/__tests__/capability-e2e.test.ts +0 -384
  107. package/src/__tests__/cli-e2e.test.ts +0 -150
  108. package/src/__tests__/core-cap-bridge.spec.ts +0 -91
  109. package/src/__tests__/dev-bootstrap-shm-ring.spec.ts +0 -40
  110. package/src/__tests__/device-settings-contribution-dispatch.spec.ts +0 -280
  111. package/src/__tests__/embedded-deps-e2e.test.ts +0 -125
  112. package/src/__tests__/event-bus-proxy-router.spec.ts +0 -75
  113. package/src/__tests__/fixtures/mock-analysis-addon-a.ts +0 -37
  114. package/src/__tests__/fixtures/mock-analysis-addon-b.ts +0 -37
  115. package/src/__tests__/fixtures/mock-log-addon.ts +0 -37
  116. package/src/__tests__/fixtures/mock-storage-addon.ts +0 -40
  117. package/src/__tests__/framework-allowlist.spec.ts +0 -96
  118. package/src/__tests__/framework-installer-defer-restart.spec.ts +0 -165
  119. package/src/__tests__/https-e2e.test.ts +0 -124
  120. package/src/__tests__/lifecycle-e2e.test.ts +0 -189
  121. package/src/__tests__/live-events-subscription.spec.ts +0 -149
  122. package/src/__tests__/moleculer/uds-readiness.spec.ts +0 -150
  123. package/src/__tests__/moleculer/uds-topology.spec.ts +0 -418
  124. package/src/__tests__/moleculer/uds-unowned-call.spec.ts +0 -383
  125. package/src/__tests__/moleculer-register-node-idempotency.spec.ts +0 -273
  126. package/src/__tests__/native-cap-route.spec.ts +0 -427
  127. package/src/__tests__/oauth2-account-linking.spec.ts +0 -867
  128. package/src/__tests__/post-boot-restart.spec.ts +0 -161
  129. package/src/__tests__/singleton-contention.test.ts +0 -499
  130. package/src/__tests__/streaming-diagnostic.test.ts +0 -615
  131. package/src/__tests__/streaming-scale.test.ts +0 -314
  132. package/src/__tests__/uds-addon-call-wiring.spec.ts +0 -242
  133. package/src/__tests__/uds-log-ingest.spec.ts +0 -183
  134. package/src/api/__tests__/addons-custom.spec.ts +0 -148
  135. package/src/api/__tests__/capabilities.router.test.ts +0 -56
  136. package/src/api/addon-upload.ts +0 -529
  137. package/src/api/addons-custom.router.ts +0 -101
  138. package/src/api/auth-whoami.ts +0 -101
  139. package/src/api/bridge-addons.router.ts +0 -122
  140. package/src/api/capabilities.router.ts +0 -265
  141. package/src/api/core/__tests__/auth-router-totp.spec.ts +0 -297
  142. package/src/api/core/__tests__/integration-markers.spec.ts +0 -10
  143. package/src/api/core/addon-settings.router.ts +0 -127
  144. package/src/api/core/agents.router.ts +0 -86
  145. package/src/api/core/auth.router.ts +0 -322
  146. package/src/api/core/bulk-update-coordinator.ts +0 -305
  147. package/src/api/core/cap-providers.ts +0 -1339
  148. package/src/api/core/capabilities.router.ts +0 -149
  149. package/src/api/core/collection-preference.ts +0 -40
  150. package/src/api/core/event-bus-proxy.router.ts +0 -45
  151. package/src/api/core/hwaccel.router.ts +0 -108
  152. package/src/api/core/live-events.router.ts +0 -67
  153. package/src/api/core/logs.router.ts +0 -195
  154. package/src/api/core/notifications.router.ts +0 -66
  155. package/src/api/core/repl.router.ts +0 -39
  156. package/src/api/core/settings-backend.router.ts +0 -140
  157. package/src/api/core/stream-probe.router.ts +0 -57
  158. package/src/api/core/system-events.router.ts +0 -125
  159. package/src/api/health/health.routes.ts +0 -117
  160. package/src/api/oauth2/__tests__/oauth2-routes.spec.ts +0 -62
  161. package/src/api/oauth2/oauth2-routes.ts +0 -281
  162. package/src/api/trpc/__tests__/client-ip.spec.ts +0 -146
  163. package/src/api/trpc/__tests__/scope-access-device.spec.ts +0 -268
  164. package/src/api/trpc/__tests__/scope-access.spec.ts +0 -102
  165. package/src/api/trpc/__tests__/webrtc-session-ua-enrich.spec.ts +0 -136
  166. package/src/api/trpc/cap-mount-helpers.ts +0 -245
  167. package/src/api/trpc/cap-route-error-formatter.ts +0 -171
  168. package/src/api/trpc/client-ip.ts +0 -147
  169. package/src/api/trpc/core-cap-bridge.ts +0 -154
  170. package/src/api/trpc/generated-cap-mounts.ts +0 -1240
  171. package/src/api/trpc/generated-cap-routers.ts +0 -11523
  172. package/src/api/trpc/scope-access.ts +0 -110
  173. package/src/api/trpc/trpc.context.ts +0 -258
  174. package/src/api/trpc/trpc.middleware.ts +0 -146
  175. package/src/api/trpc/trpc.router.ts +0 -389
  176. package/src/auth/session-cookie.ts +0 -54
  177. package/src/boot/__tests__/integration-id-backfill.spec.ts +0 -131
  178. package/src/boot/boot-config.ts +0 -259
  179. package/src/boot/integration-id-backfill.ts +0 -109
  180. package/src/boot/post-boot.service.ts +0 -105
  181. package/src/core/addon/__tests__/addon-registry-capability.test.ts +0 -62
  182. package/src/core/addon/__tests__/addon-row-manifest.spec.ts +0 -62
  183. package/src/core/addon/addon-call-gateway.ts +0 -171
  184. package/src/core/addon/addon-package.service.ts +0 -1787
  185. package/src/core/addon/addon-registry.service.ts +0 -3130
  186. package/src/core/addon/addon-search.service.ts +0 -91
  187. package/src/core/addon/addon-settings-provider.ts +0 -220
  188. package/src/core/addon/addon.tokens.ts +0 -2
  189. package/src/core/addon-bridge/addon-bridge.service.ts +0 -130
  190. package/src/core/addon-pages/addon-pages.service.spec.ts +0 -117
  191. package/src/core/addon-pages/addon-pages.service.ts +0 -82
  192. package/src/core/addon-widgets/addon-widgets.service.ts +0 -95
  193. package/src/core/agent/agent-registry.service.ts +0 -529
  194. package/src/core/auth/auth.service.spec.ts +0 -86
  195. package/src/core/auth/auth.service.ts +0 -8
  196. package/src/core/capability/capability.service.ts +0 -66
  197. package/src/core/config/config.schema.ts +0 -3
  198. package/src/core/config/config.service.spec.ts +0 -175
  199. package/src/core/config/config.service.ts +0 -7
  200. package/src/core/events/event-bus.service.spec.ts +0 -235
  201. package/src/core/events/event-bus.service.ts +0 -89
  202. package/src/core/feature/feature.service.spec.ts +0 -99
  203. package/src/core/feature/feature.service.ts +0 -8
  204. package/src/core/lifecycle/lifecycle-state-machine.spec.ts +0 -166
  205. package/src/core/lifecycle/lifecycle-state-machine.ts +0 -3
  206. package/src/core/logging/log-ring-buffer.ts +0 -3
  207. package/src/core/logging/logging.service.spec.ts +0 -287
  208. package/src/core/logging/logging.service.ts +0 -143
  209. package/src/core/logging/scoped-logger.ts +0 -3
  210. package/src/core/moleculer/cap-call-fn.spec.ts +0 -173
  211. package/src/core/moleculer/cap-call-fn.ts +0 -107
  212. package/src/core/moleculer/cap-route-authority.ts +0 -194
  213. package/src/core/moleculer/moleculer.service.ts +0 -1072
  214. package/src/core/network/network-quality.service.spec.ts +0 -53
  215. package/src/core/network/network-quality.service.ts +0 -5
  216. package/src/core/notification/notification-wrapper.service.ts +0 -34
  217. package/src/core/notification/toast-wrapper.service.ts +0 -27
  218. package/src/core/provider/provider.tokens.ts +0 -1
  219. package/src/core/repl/repl-engine.service.spec.ts +0 -444
  220. package/src/core/repl/repl-engine.service.ts +0 -155
  221. package/src/core/storage/fs-storage-backend.spec.ts +0 -70
  222. package/src/core/storage/fs-storage-backend.ts +0 -3
  223. package/src/core/storage/storage-location-manager.spec.ts +0 -130
  224. package/src/core/storage/storage-location-manager.ts +0 -3
  225. package/src/core/storage/storage.service.spec.ts +0 -73
  226. package/src/core/storage/storage.service.ts +0 -3
  227. package/src/core/streaming/stream-probe.service.ts +0 -221
  228. package/src/core/topology/topology-emitter.service.ts +0 -105
  229. package/src/launcher.ts +0 -314
  230. package/src/main.ts +0 -1245
  231. package/src/manual-boot.ts +0 -301
  232. package/tsconfig.build.json +0 -8
  233. package/tsconfig.json +0 -33
  234. package/vitest.config.ts +0 -26
@@ -1,1240 +0,0 @@
1
- // AUTO-GENERATED by scripts/generate-cap-mounts.ts — DO NOT EDIT
2
- // Re-run: npx tsx scripts/generate-cap-mounts.ts
3
- //
4
- // Mounted: 127 Skipped (legacy): 6
5
-
6
- /**
7
- * Single auto-mount entrypoint for every codegen'd cap router.
8
- * Spread the result into the AppRouter assembly:
9
- *
10
- * const router = trpcRouter({
11
- * ...mountAllCaps(t, services),
12
- * // … manual overrides + non-cap core routers below
13
- * })
14
- *
15
- * Override-by-spread: a manual `<capName>: createCapRouter_X(...)`
16
- * entry placed AFTER the spread overrides the auto-mount, which is
17
- * how service-backed caps (`system`, `nodes`, `integrations`,
18
- * `addons`, `network-quality`, `toast`) get their non-registry
19
- * providers wired without dropping out of the auto-mount inventory.
20
- *
21
- * Skipped caps (provider has non-canonical legacy shape — task #195):
22
- * - addon-routes — legacy provider shape (task #195)
23
- * - auth-provider — legacy provider shape (task #195)
24
- * - log-destination — legacy provider shape (task #195)
25
- * - restreamer — legacy provider shape (task #195)
26
- * - streaming-engine — legacy provider shape (task #195)
27
- * - webrtc — legacy provider shape (task #195)
28
- */
29
-
30
- import type { CapabilityRegistry } from '@camstack/kernel'
31
- import type { InferProvider } from '@camstack/types'
32
- import {
33
- accessoriesCapability,
34
- addonPagesCapability,
35
- addonPagesSourceCapability,
36
- addonSettingsCapability,
37
- addonWidgetsCapability,
38
- addonWidgetsSourceCapability,
39
- addonsCapability,
40
- adminUiCapability,
41
- advancedNotifierCapability,
42
- airQualitySensorCapability,
43
- alarmPanelCapability,
44
- alertsCapability,
45
- ambientLightSensorCapability,
46
- audioAnalysisCapability,
47
- audioAnalyzerCapability,
48
- audioCodecCapability,
49
- audioMetricsCapability,
50
- automationControlCapability,
51
- backupCapability,
52
- batteryCapability,
53
- binaryCapability,
54
- brightnessCapability,
55
- brokerCapability,
56
- buttonCapability,
57
- cameraCredentialsCapability,
58
- cameraPipelineConfigCapability,
59
- cameraStreamsCapability,
60
- carbonMonoxideCapability,
61
- climateControlCapability,
62
- colorCapability,
63
- connectivityCapability,
64
- consumablesCapability,
65
- contactCapability,
66
- controlCapability,
67
- coverCapability,
68
- decoderCapability,
69
- detectionPipelineCapability,
70
- deviceAdoptionCapability,
71
- deviceDiscoveryCapability,
72
- deviceExportCapability,
73
- deviceManagerCapability,
74
- deviceOpsCapability,
75
- deviceProviderCapability,
76
- deviceStateCapability,
77
- deviceStatusCapability,
78
- doorbellCapability,
79
- embeddingEncoderCapability,
80
- enumSensorCapability,
81
- eventEmitterCapability,
82
- eventsCapability,
83
- faceGalleryCapability,
84
- fanControlCapability,
85
- featureProbeCapability,
86
- filesystemBrowseCapability,
87
- floodCapability,
88
- gasCapability,
89
- humidifierCapability,
90
- humiditySensorCapability,
91
- imageCapability,
92
- integrationsCapability,
93
- intercomCapability,
94
- lawnMowerControlCapability,
95
- localNetworkCapability,
96
- lockControlCapability,
97
- mediaPlayerCapability,
98
- meshNetworkCapability,
99
- metricsProviderCapability,
100
- motionCapability,
101
- motionDetectionCapability,
102
- motionTriggerCapability,
103
- motionZonesCapability,
104
- mqttBrokerCapability,
105
- nativeObjectDetectionCapability,
106
- networkAccessCapability,
107
- networkQualityCapability,
108
- nodesCapability,
109
- notificationOutputCapability,
110
- notifierCapability,
111
- numericSensorCapability,
112
- oauthIntegrationCapability,
113
- osdCapability,
114
- pipelineAnalyticsCapability,
115
- pipelineExecutorCapability,
116
- pipelineOrchestratorCapability,
117
- pipelineRunnerCapability,
118
- plateGalleryCapability,
119
- platformProbeCapability,
120
- powerMeterCapability,
121
- presenceCapability,
122
- pressureSensorCapability,
123
- privacyMaskCapability,
124
- ptzAutotrackCapability,
125
- ptzCapability,
126
- rebootCapability,
127
- recordingCapability,
128
- scriptRunnerCapability,
129
- settingsStoreCapability,
130
- smokeCapability,
131
- smtpProviderCapability,
132
- snapshotCapability,
133
- snapshotProviderCapability,
134
- ssoBridgeCapability,
135
- storageCapability,
136
- storageEvictableCapability,
137
- storageProviderCapability,
138
- streamBrokerCapability,
139
- streamCatalogCapability,
140
- streamParamsCapability,
141
- switchCapability,
142
- systemCapability,
143
- tamperCapability,
144
- temperatureSensorCapability,
145
- toastCapability,
146
- turnProviderCapability,
147
- updateCapability,
148
- userManagementCapability,
149
- userPasskeysCapability,
150
- vacuumControlCapability,
151
- valveCapability,
152
- vibrationCapability,
153
- videoclipsCapability,
154
- waterHeaterCapability,
155
- weatherCapability,
156
- webrtcSessionCapability,
157
- zoneAnalyticsCapability,
158
- zoneRulesCapability,
159
- zonesCapability,
160
- } from '@camstack/types'
161
- import type { MoleculerService } from '../../core/moleculer/moleculer.service.js'
162
- import { concatCollection, requireDeviceScoped } from './cap-mount-helpers.js'
163
- import {
164
- createCapRouter_accessories,
165
- createCapRouter_addonPages,
166
- createCapRouter_addonPagesSource,
167
- createCapRouter_addonSettings,
168
- createCapRouter_addonWidgets,
169
- createCapRouter_addonWidgetsSource,
170
- createCapRouter_addons,
171
- createCapRouter_adminUi,
172
- createCapRouter_advancedNotifier,
173
- createCapRouter_airQualitySensor,
174
- createCapRouter_alarmPanel,
175
- createCapRouter_alerts,
176
- createCapRouter_ambientLightSensor,
177
- createCapRouter_audioAnalysis,
178
- createCapRouter_audioAnalyzer,
179
- createCapRouter_audioCodec,
180
- createCapRouter_audioMetrics,
181
- createCapRouter_automationControl,
182
- createCapRouter_backup,
183
- createCapRouter_battery,
184
- createCapRouter_binary,
185
- createCapRouter_brightness,
186
- createCapRouter_broker,
187
- createCapRouter_button,
188
- createCapRouter_cameraCredentials,
189
- createCapRouter_cameraPipelineConfig,
190
- createCapRouter_cameraStreams,
191
- createCapRouter_carbonMonoxide,
192
- createCapRouter_climateControl,
193
- createCapRouter_color,
194
- createCapRouter_connectivity,
195
- createCapRouter_consumables,
196
- createCapRouter_contact,
197
- createCapRouter_control,
198
- createCapRouter_cover,
199
- createCapRouter_decoder,
200
- createCapRouter_detectionPipeline,
201
- createCapRouter_deviceAdoption,
202
- createCapRouter_deviceDiscovery,
203
- createCapRouter_deviceExport,
204
- createCapRouter_deviceManager,
205
- createCapRouter_deviceOps,
206
- createCapRouter_deviceProvider,
207
- createCapRouter_deviceState,
208
- createCapRouter_deviceStatus,
209
- createCapRouter_doorbell,
210
- createCapRouter_embeddingEncoder,
211
- createCapRouter_enumSensor,
212
- createCapRouter_eventEmitter,
213
- createCapRouter_events,
214
- createCapRouter_faceGallery,
215
- createCapRouter_fanControl,
216
- createCapRouter_featureProbe,
217
- createCapRouter_filesystemBrowse,
218
- createCapRouter_flood,
219
- createCapRouter_gas,
220
- createCapRouter_humidifier,
221
- createCapRouter_humiditySensor,
222
- createCapRouter_image,
223
- createCapRouter_integrations,
224
- createCapRouter_intercom,
225
- createCapRouter_lawnMowerControl,
226
- createCapRouter_localNetwork,
227
- createCapRouter_lockControl,
228
- createCapRouter_mediaPlayer,
229
- createCapRouter_meshNetwork,
230
- createCapRouter_metricsProvider,
231
- createCapRouter_motion,
232
- createCapRouter_motionDetection,
233
- createCapRouter_motionTrigger,
234
- createCapRouter_motionZones,
235
- createCapRouter_mqttBroker,
236
- createCapRouter_nativeObjectDetection,
237
- createCapRouter_networkAccess,
238
- createCapRouter_networkQuality,
239
- createCapRouter_nodes,
240
- createCapRouter_notificationOutput,
241
- createCapRouter_notifier,
242
- createCapRouter_numericSensor,
243
- createCapRouter_oauthIntegration,
244
- createCapRouter_osd,
245
- createCapRouter_pipelineAnalytics,
246
- createCapRouter_pipelineExecutor,
247
- createCapRouter_pipelineOrchestrator,
248
- createCapRouter_pipelineRunner,
249
- createCapRouter_plateGallery,
250
- createCapRouter_platformProbe,
251
- createCapRouter_powerMeter,
252
- createCapRouter_presence,
253
- createCapRouter_pressureSensor,
254
- createCapRouter_privacyMask,
255
- createCapRouter_ptz,
256
- createCapRouter_ptzAutotrack,
257
- createCapRouter_reboot,
258
- createCapRouter_recording,
259
- createCapRouter_scriptRunner,
260
- createCapRouter_settingsStore,
261
- createCapRouter_smoke,
262
- createCapRouter_smtpProvider,
263
- createCapRouter_snapshot,
264
- createCapRouter_snapshotProvider,
265
- createCapRouter_ssoBridge,
266
- createCapRouter_storage,
267
- createCapRouter_storageEvictable,
268
- createCapRouter_storageProvider,
269
- createCapRouter_streamBroker,
270
- createCapRouter_streamCatalog,
271
- createCapRouter_streamParams,
272
- createCapRouter_switch,
273
- createCapRouter_system,
274
- createCapRouter_tamper,
275
- createCapRouter_temperatureSensor,
276
- createCapRouter_toast,
277
- createCapRouter_turnProvider,
278
- createCapRouter_update,
279
- createCapRouter_userManagement,
280
- createCapRouter_userPasskeys,
281
- createCapRouter_vacuumControl,
282
- createCapRouter_valve,
283
- createCapRouter_vibration,
284
- createCapRouter_videoclips,
285
- createCapRouter_waterHeater,
286
- createCapRouter_weather,
287
- createCapRouter_webrtcSession,
288
- createCapRouter_zoneAnalytics,
289
- createCapRouter_zoneRules,
290
- createCapRouter_zones,
291
- } from './generated-cap-routers.js'
292
-
293
- /**
294
- * Names of caps whose mount entry is OMITTED here because their
295
- * provider implementation does not match the canonical
296
- * `InferProvider<typeof xCap>` contract. Exported so the drift guard
297
- * in `scripts/codegen.ts` can verify the union of {mounted, skipped}
298
- * covers every `createCapRouter_X` in `generated-cap-routers.ts`.
299
- */
300
- export const LEGACY_SHAPE_SKIP: ReadonlySet<string> = new Set<string>([
301
- 'addonRoutes',
302
- 'authProvider',
303
- 'logDestination',
304
- 'restreamer',
305
- 'streamingEngine',
306
- 'webrtc',
307
- ])
308
-
309
- export interface MountAllCapsServices {
310
- readonly capabilityRegistry: CapabilityRegistry | null
311
- readonly moleculer: MoleculerService
312
- }
313
-
314
- /**
315
- * Build the auto-mount map. `services` carries the registry handle
316
- * + Moleculer service so the per-cap remote-proxy factory can route
317
- * cross-process calls when the incoming request carries `nodeId`.
318
- */
319
- export function mountAllCaps(services: MountAllCapsServices) {
320
- const reg = services.capabilityRegistry
321
- // Cross-process cap routing: when a request carries a non-'hub'
322
- // `nodeId` (DeviceProxy injects `entry.providerNodeId` for native
323
- // device caps on forked workers) the cap-router calls this factory
324
- // to materialise a Moleculer-bridged proxy. The factory return
325
- // type is parametric — the runtime Proxy is structurally
326
- // compatible with every `InferProvider<typeof cap>` shape so a
327
- // single generic helper covers every mount.
328
- const remoteCapProxy = <T>(capName: string, nodeId: string): T | null =>
329
- services.moleculer.createCapabilityProxy(capName, nodeId) as unknown as T | null
330
- return {
331
- accessories: createCapRouter_accessories(
332
- (_ctx) =>
333
- requireDeviceScoped(reg, 'accessories') as InferProvider<
334
- typeof accessoriesCapability
335
- > | null,
336
- remoteCapProxy,
337
- ),
338
- addonPages: createCapRouter_addonPages(
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),
365
- addonSettings: createCapRouter_addonSettings(
366
- (_ctx) =>
367
- reg?.getSingleton<InferProvider<typeof addonSettingsCapability>>('addon-settings') ?? null,
368
- remoteCapProxy,
369
- ),
370
- addonWidgets: createCapRouter_addonWidgets(
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),
397
- addons: createCapRouter_addons(
398
- (_ctx) => reg?.getSingleton<InferProvider<typeof addonsCapability>>('addons') ?? null,
399
- remoteCapProxy,
400
- ),
401
- adminUi: createCapRouter_adminUi(
402
- (_ctx) => reg?.getSingleton<InferProvider<typeof adminUiCapability>>('admin-ui') ?? null,
403
- remoteCapProxy,
404
- ),
405
- advancedNotifier: createCapRouter_advancedNotifier(
406
- (_ctx) =>
407
- reg?.getSingleton<InferProvider<typeof advancedNotifierCapability>>('advanced-notifier') ??
408
- null,
409
- remoteCapProxy,
410
- ),
411
- airQualitySensor: createCapRouter_airQualitySensor(
412
- (_ctx) =>
413
- requireDeviceScoped(reg, 'air-quality-sensor') as InferProvider<
414
- typeof airQualitySensorCapability
415
- > | null,
416
- remoteCapProxy,
417
- ),
418
- alarmPanel: createCapRouter_alarmPanel(
419
- (_ctx) =>
420
- requireDeviceScoped(reg, 'alarm-panel') as InferProvider<
421
- typeof alarmPanelCapability
422
- > | null,
423
- remoteCapProxy,
424
- ),
425
- alerts: createCapRouter_alerts(
426
- (_ctx) => reg?.getSingleton<InferProvider<typeof alertsCapability>>('alerts') ?? null,
427
- remoteCapProxy,
428
- ),
429
- ambientLightSensor: createCapRouter_ambientLightSensor(
430
- (_ctx) =>
431
- requireDeviceScoped(reg, 'ambient-light-sensor') as InferProvider<
432
- typeof ambientLightSensorCapability
433
- > | null,
434
- remoteCapProxy,
435
- ),
436
- audioAnalysis: createCapRouter_audioAnalysis(
437
- (_ctx) =>
438
- reg?.getSingleton<InferProvider<typeof audioAnalysisCapability>>('audio-analysis') ?? null,
439
- remoteCapProxy,
440
- ),
441
- audioAnalyzer: createCapRouter_audioAnalyzer(
442
- (_ctx) =>
443
- reg?.getSingleton<InferProvider<typeof audioAnalyzerCapability>>('audio-analyzer') ?? null,
444
- remoteCapProxy,
445
- ),
446
- audioCodec: createCapRouter_audioCodec(
447
- (_ctx) =>
448
- reg?.getSingleton<InferProvider<typeof audioCodecCapability>>('audio-codec') ?? null,
449
- remoteCapProxy,
450
- ),
451
- audioMetrics: createCapRouter_audioMetrics(
452
- (_ctx) =>
453
- reg?.getSingleton<InferProvider<typeof audioMetricsCapability>>('audio-metrics') ?? null,
454
- remoteCapProxy,
455
- ),
456
- automationControl: createCapRouter_automationControl(
457
- (_ctx) =>
458
- requireDeviceScoped(reg, 'automation-control') as InferProvider<
459
- typeof automationControlCapability
460
- > | null,
461
- remoteCapProxy,
462
- ),
463
- backup: createCapRouter_backup(
464
- (_ctx) => reg?.getSingleton<InferProvider<typeof backupCapability>>('backup') ?? null,
465
- remoteCapProxy,
466
- ),
467
- battery: createCapRouter_battery(
468
- (_ctx) =>
469
- requireDeviceScoped(reg, 'battery') as InferProvider<typeof batteryCapability> | null,
470
- remoteCapProxy,
471
- ),
472
- binary: createCapRouter_binary(
473
- (_ctx) => requireDeviceScoped(reg, 'binary') as InferProvider<typeof binaryCapability> | null,
474
- remoteCapProxy,
475
- ),
476
- brightness: createCapRouter_brightness(
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),
498
- button: createCapRouter_button(
499
- (_ctx) => requireDeviceScoped(reg, 'button') as InferProvider<typeof buttonCapability> | null,
500
- remoteCapProxy,
501
- ),
502
- cameraCredentials: createCapRouter_cameraCredentials(
503
- (_ctx) =>
504
- requireDeviceScoped(reg, 'camera-credentials') as InferProvider<
505
- typeof cameraCredentialsCapability
506
- > | null,
507
- remoteCapProxy,
508
- ),
509
- cameraPipelineConfig: createCapRouter_cameraPipelineConfig(
510
- (_ctx) =>
511
- reg?.getSingleton<InferProvider<typeof cameraPipelineConfigCapability>>(
512
- 'camera-pipeline-config',
513
- ) ?? null,
514
- remoteCapProxy,
515
- ),
516
- cameraStreams: createCapRouter_cameraStreams(
517
- (_ctx) =>
518
- reg?.getSingleton<InferProvider<typeof cameraStreamsCapability>>('camera-streams') ?? null,
519
- remoteCapProxy,
520
- ),
521
- carbonMonoxide: createCapRouter_carbonMonoxide(
522
- (_ctx) =>
523
- requireDeviceScoped(reg, 'carbon-monoxide') as InferProvider<
524
- typeof carbonMonoxideCapability
525
- > | null,
526
- remoteCapProxy,
527
- ),
528
- climateControl: createCapRouter_climateControl(
529
- (_ctx) =>
530
- requireDeviceScoped(reg, 'climate-control') as InferProvider<
531
- typeof climateControlCapability
532
- > | null,
533
- remoteCapProxy,
534
- ),
535
- color: createCapRouter_color(
536
- (_ctx) => requireDeviceScoped(reg, 'color') as InferProvider<typeof colorCapability> | null,
537
- remoteCapProxy,
538
- ),
539
- connectivity: createCapRouter_connectivity(
540
- (_ctx) =>
541
- requireDeviceScoped(reg, 'connectivity') as InferProvider<
542
- typeof connectivityCapability
543
- > | null,
544
- remoteCapProxy,
545
- ),
546
- consumables: createCapRouter_consumables(
547
- (_ctx) =>
548
- requireDeviceScoped(reg, 'consumables') as InferProvider<
549
- typeof consumablesCapability
550
- > | null,
551
- remoteCapProxy,
552
- ),
553
- contact: createCapRouter_contact(
554
- (_ctx) =>
555
- requireDeviceScoped(reg, 'contact') as InferProvider<typeof contactCapability> | null,
556
- remoteCapProxy,
557
- ),
558
- control: createCapRouter_control(
559
- (_ctx) =>
560
- requireDeviceScoped(reg, 'control') as InferProvider<typeof controlCapability> | null,
561
- remoteCapProxy,
562
- ),
563
- cover: createCapRouter_cover(
564
- (_ctx) => requireDeviceScoped(reg, 'cover') as InferProvider<typeof coverCapability> | null,
565
- remoteCapProxy,
566
- ),
567
- decoder: createCapRouter_decoder(
568
- (_ctx) => reg?.getSingleton<InferProvider<typeof decoderCapability>>('decoder') ?? null,
569
- remoteCapProxy,
570
- ),
571
- detectionPipeline: createCapRouter_detectionPipeline(
572
- (_ctx) =>
573
- reg?.getSingleton<InferProvider<typeof detectionPipelineCapability>>(
574
- 'detection-pipeline',
575
- ) ?? null,
576
- remoteCapProxy,
577
- ),
578
- deviceAdoption: createCapRouter_deviceAdoption(
579
- (_ctx) =>
580
- reg?.getSingleton<InferProvider<typeof deviceAdoptionCapability>>('device-adoption') ??
581
- null,
582
- remoteCapProxy,
583
- ),
584
- deviceDiscovery: createCapRouter_deviceDiscovery(
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),
615
- deviceManager: createCapRouter_deviceManager(
616
- (_ctx) =>
617
- reg?.getSingleton<InferProvider<typeof deviceManagerCapability>>('device-manager') ?? null,
618
- remoteCapProxy,
619
- ),
620
- deviceOps: createCapRouter_deviceOps(
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),
648
- deviceState: createCapRouter_deviceState(
649
- (_ctx) =>
650
- reg?.getSingleton<InferProvider<typeof deviceStateCapability>>('device-state') ?? null,
651
- remoteCapProxy,
652
- ),
653
- deviceStatus: createCapRouter_deviceStatus(
654
- (_ctx) =>
655
- requireDeviceScoped(reg, 'device-status') as InferProvider<
656
- typeof deviceStatusCapability
657
- > | null,
658
- remoteCapProxy,
659
- ),
660
- doorbell: createCapRouter_doorbell(
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),
679
- enumSensor: createCapRouter_enumSensor(
680
- (_ctx) =>
681
- requireDeviceScoped(reg, 'enum-sensor') as InferProvider<
682
- typeof enumSensorCapability
683
- > | null,
684
- remoteCapProxy,
685
- ),
686
- eventEmitter: createCapRouter_eventEmitter(
687
- (_ctx) =>
688
- requireDeviceScoped(reg, 'event-emitter') as InferProvider<
689
- typeof eventEmitterCapability
690
- > | null,
691
- remoteCapProxy,
692
- ),
693
- events: createCapRouter_events(
694
- (_ctx) => reg?.getSingleton<InferProvider<typeof eventsCapability>>('events') ?? null,
695
- remoteCapProxy,
696
- ),
697
- faceGallery: createCapRouter_faceGallery(
698
- (_ctx) =>
699
- reg?.getSingleton<InferProvider<typeof faceGalleryCapability>>('face-gallery') ?? null,
700
- remoteCapProxy,
701
- ),
702
- fanControl: createCapRouter_fanControl(
703
- (_ctx) =>
704
- requireDeviceScoped(reg, 'fan-control') as InferProvider<
705
- typeof fanControlCapability
706
- > | null,
707
- remoteCapProxy,
708
- ),
709
- featureProbe: createCapRouter_featureProbe(
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,
720
- remoteCapProxy,
721
- ),
722
- flood: createCapRouter_flood(
723
- (_ctx) => requireDeviceScoped(reg, 'flood') as InferProvider<typeof floodCapability> | null,
724
- remoteCapProxy,
725
- ),
726
- gas: createCapRouter_gas(
727
- (_ctx) => requireDeviceScoped(reg, 'gas') as InferProvider<typeof gasCapability> | null,
728
- remoteCapProxy,
729
- ),
730
- humidifier: createCapRouter_humidifier(
731
- (_ctx) =>
732
- requireDeviceScoped(reg, 'humidifier') as InferProvider<typeof humidifierCapability> | null,
733
- remoteCapProxy,
734
- ),
735
- humiditySensor: createCapRouter_humiditySensor(
736
- (_ctx) =>
737
- requireDeviceScoped(reg, 'humidity-sensor') as InferProvider<
738
- typeof humiditySensorCapability
739
- > | null,
740
- remoteCapProxy,
741
- ),
742
- image: createCapRouter_image(
743
- (_ctx) => requireDeviceScoped(reg, 'image') as InferProvider<typeof imageCapability> | null,
744
- remoteCapProxy,
745
- ),
746
- integrations: createCapRouter_integrations(
747
- (_ctx) =>
748
- reg?.getSingleton<InferProvider<typeof integrationsCapability>>('integrations') ?? null,
749
- remoteCapProxy,
750
- ),
751
- intercom: createCapRouter_intercom(
752
- (_ctx) =>
753
- requireDeviceScoped(reg, 'intercom') as InferProvider<typeof intercomCapability> | null,
754
- remoteCapProxy,
755
- ),
756
- lawnMowerControl: createCapRouter_lawnMowerControl(
757
- (_ctx) =>
758
- requireDeviceScoped(reg, 'lawn-mower-control') as InferProvider<
759
- typeof lawnMowerControlCapability
760
- > | null,
761
- remoteCapProxy,
762
- ),
763
- localNetwork: createCapRouter_localNetwork(
764
- (_ctx) =>
765
- reg?.getSingleton<InferProvider<typeof localNetworkCapability>>('local-network') ?? null,
766
- remoteCapProxy,
767
- ),
768
- lockControl: createCapRouter_lockControl(
769
- (_ctx) =>
770
- requireDeviceScoped(reg, 'lock-control') as InferProvider<
771
- typeof lockControlCapability
772
- > | null,
773
- remoteCapProxy,
774
- ),
775
- mediaPlayer: createCapRouter_mediaPlayer(
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),
794
- metricsProvider: createCapRouter_metricsProvider(
795
- (_ctx) =>
796
- reg?.getSingleton<InferProvider<typeof metricsProviderCapability>>('metrics-provider') ??
797
- null,
798
- remoteCapProxy,
799
- ),
800
- motion: createCapRouter_motion(
801
- (_ctx) => reg?.getSingleton<InferProvider<typeof motionCapability>>('motion') ?? null,
802
- remoteCapProxy,
803
- ),
804
- motionDetection: createCapRouter_motionDetection(
805
- (_ctx) =>
806
- reg?.getSingleton<InferProvider<typeof motionDetectionCapability>>('motion-detection') ??
807
- null,
808
- remoteCapProxy,
809
- ),
810
- motionTrigger: createCapRouter_motionTrigger(
811
- (_ctx) =>
812
- requireDeviceScoped(reg, 'motion-trigger') as InferProvider<
813
- typeof motionTriggerCapability
814
- > | null,
815
- remoteCapProxy,
816
- ),
817
- motionZones: createCapRouter_motionZones(
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),
844
- nativeObjectDetection: createCapRouter_nativeObjectDetection(
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),
871
- networkQuality: createCapRouter_networkQuality(
872
- (_ctx) =>
873
- reg?.getSingleton<InferProvider<typeof networkQualityCapability>>('network-quality') ??
874
- null,
875
- remoteCapProxy,
876
- ),
877
- nodes: createCapRouter_nodes(
878
- (_ctx) => reg?.getSingleton<InferProvider<typeof nodesCapability>>('nodes') ?? null,
879
- remoteCapProxy,
880
- ),
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),
895
- notifier: createCapRouter_notifier(
896
- (_ctx) =>
897
- requireDeviceScoped(reg, 'notifier') as InferProvider<typeof notifierCapability> | null,
898
- remoteCapProxy,
899
- ),
900
- numericSensor: createCapRouter_numericSensor(
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),
921
- osd: createCapRouter_osd(
922
- (_ctx) => requireDeviceScoped(reg, 'osd') as InferProvider<typeof osdCapability> | null,
923
- remoteCapProxy,
924
- ),
925
- pipelineAnalytics: createCapRouter_pipelineAnalytics(
926
- (_ctx) =>
927
- reg?.getSingleton<InferProvider<typeof pipelineAnalyticsCapability>>(
928
- 'pipeline-analytics',
929
- ) ?? null,
930
- remoteCapProxy,
931
- ),
932
- pipelineExecutor: createCapRouter_pipelineExecutor(
933
- (_ctx) =>
934
- reg?.getSingleton<InferProvider<typeof pipelineExecutorCapability>>('pipeline-executor') ??
935
- null,
936
- remoteCapProxy,
937
- ),
938
- pipelineOrchestrator: createCapRouter_pipelineOrchestrator(
939
- (_ctx) =>
940
- reg?.getSingleton<InferProvider<typeof pipelineOrchestratorCapability>>(
941
- 'pipeline-orchestrator',
942
- ) ?? null,
943
- remoteCapProxy,
944
- ),
945
- pipelineRunner: createCapRouter_pipelineRunner(
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,
954
- remoteCapProxy,
955
- ),
956
- platformProbe: createCapRouter_platformProbe(
957
- (_ctx) =>
958
- reg?.getSingleton<InferProvider<typeof platformProbeCapability>>('platform-probe') ?? null,
959
- remoteCapProxy,
960
- ),
961
- powerMeter: createCapRouter_powerMeter(
962
- (_ctx) =>
963
- requireDeviceScoped(reg, 'power-meter') as InferProvider<
964
- typeof powerMeterCapability
965
- > | null,
966
- remoteCapProxy,
967
- ),
968
- presence: createCapRouter_presence(
969
- (_ctx) =>
970
- requireDeviceScoped(reg, 'presence') as InferProvider<typeof presenceCapability> | null,
971
- remoteCapProxy,
972
- ),
973
- pressureSensor: createCapRouter_pressureSensor(
974
- (_ctx) =>
975
- requireDeviceScoped(reg, 'pressure-sensor') as InferProvider<
976
- typeof pressureSensorCapability
977
- > | null,
978
- remoteCapProxy,
979
- ),
980
- privacyMask: createCapRouter_privacyMask(
981
- (_ctx) =>
982
- requireDeviceScoped(reg, 'privacy-mask') as InferProvider<
983
- typeof privacyMaskCapability
984
- > | null,
985
- remoteCapProxy,
986
- ),
987
- ptz: createCapRouter_ptz(
988
- (_ctx) => requireDeviceScoped(reg, 'ptz') as InferProvider<typeof ptzCapability> | null,
989
- remoteCapProxy,
990
- ),
991
- ptzAutotrack: createCapRouter_ptzAutotrack(
992
- (_ctx) =>
993
- requireDeviceScoped(reg, 'ptz-autotrack') as InferProvider<
994
- typeof ptzAutotrackCapability
995
- > | null,
996
- remoteCapProxy,
997
- ),
998
- reboot: createCapRouter_reboot(
999
- (_ctx) => requireDeviceScoped(reg, 'reboot') as InferProvider<typeof rebootCapability> | null,
1000
- remoteCapProxy,
1001
- ),
1002
- recording: createCapRouter_recording(
1003
- (_ctx) => reg?.getSingleton<InferProvider<typeof recordingCapability>>('recording') ?? null,
1004
- remoteCapProxy,
1005
- ),
1006
- scriptRunner: createCapRouter_scriptRunner(
1007
- (_ctx) =>
1008
- requireDeviceScoped(reg, 'script-runner') as InferProvider<
1009
- typeof scriptRunnerCapability
1010
- > | null,
1011
- remoteCapProxy,
1012
- ),
1013
- settingsStore: createCapRouter_settingsStore(
1014
- (_ctx) =>
1015
- reg?.getSingleton<InferProvider<typeof settingsStoreCapability>>('settings-store') ?? null,
1016
- remoteCapProxy,
1017
- ),
1018
- smoke: createCapRouter_smoke(
1019
- (_ctx) => requireDeviceScoped(reg, 'smoke') as InferProvider<typeof smokeCapability> | null,
1020
- remoteCapProxy,
1021
- ),
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),
1034
- snapshot: createCapRouter_snapshot(
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),
1053
- ssoBridge: createCapRouter_ssoBridge(
1054
- (_ctx) => reg?.getSingleton<InferProvider<typeof ssoBridgeCapability>>('sso-bridge') ?? null,
1055
- remoteCapProxy,
1056
- ),
1057
- storage: createCapRouter_storage(
1058
- (_ctx) => reg?.getSingleton<InferProvider<typeof storageCapability>>('storage') ?? null,
1059
- remoteCapProxy,
1060
- ),
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),
1097
- streamBroker: createCapRouter_streamBroker(
1098
- (_ctx) =>
1099
- reg?.getSingleton<InferProvider<typeof streamBrokerCapability>>('stream-broker') ?? null,
1100
- remoteCapProxy,
1101
- ),
1102
- streamCatalog: createCapRouter_streamCatalog(
1103
- (_ctx) =>
1104
- requireDeviceScoped(reg, 'stream-catalog') as InferProvider<
1105
- typeof streamCatalogCapability
1106
- > | null,
1107
- remoteCapProxy,
1108
- ),
1109
- streamParams: createCapRouter_streamParams(
1110
- (_ctx) =>
1111
- requireDeviceScoped(reg, 'stream-params') as InferProvider<
1112
- typeof streamParamsCapability
1113
- > | null,
1114
- remoteCapProxy,
1115
- ),
1116
- switch: createCapRouter_switch(
1117
- (_ctx) => requireDeviceScoped(reg, 'switch') as InferProvider<typeof switchCapability> | null,
1118
- remoteCapProxy,
1119
- ),
1120
- system: createCapRouter_system(
1121
- (_ctx) => reg?.getSingleton<InferProvider<typeof systemCapability>>('system') ?? null,
1122
- remoteCapProxy,
1123
- ),
1124
- tamper: createCapRouter_tamper(
1125
- (_ctx) => requireDeviceScoped(reg, 'tamper') as InferProvider<typeof tamperCapability> | null,
1126
- remoteCapProxy,
1127
- ),
1128
- temperatureSensor: createCapRouter_temperatureSensor(
1129
- (_ctx) =>
1130
- requireDeviceScoped(reg, 'temperature-sensor') as InferProvider<
1131
- typeof temperatureSensorCapability
1132
- > | null,
1133
- remoteCapProxy,
1134
- ),
1135
- toast: createCapRouter_toast(
1136
- (_ctx) => reg?.getSingleton<InferProvider<typeof toastCapability>>('toast') ?? null,
1137
- remoteCapProxy,
1138
- ),
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),
1159
- update: createCapRouter_update(
1160
- (_ctx) => requireDeviceScoped(reg, 'update') as InferProvider<typeof updateCapability> | null,
1161
- remoteCapProxy,
1162
- ),
1163
- userManagement: createCapRouter_userManagement(
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),
1189
- vacuumControl: createCapRouter_vacuumControl(
1190
- (_ctx) =>
1191
- requireDeviceScoped(reg, 'vacuum-control') as InferProvider<
1192
- typeof vacuumControlCapability
1193
- > | null,
1194
- remoteCapProxy,
1195
- ),
1196
- valve: createCapRouter_valve(
1197
- (_ctx) => requireDeviceScoped(reg, 'valve') as InferProvider<typeof valveCapability> | null,
1198
- remoteCapProxy,
1199
- ),
1200
- vibration: createCapRouter_vibration(
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,
1207
- remoteCapProxy,
1208
- ),
1209
- waterHeater: createCapRouter_waterHeater(
1210
- (_ctx) =>
1211
- requireDeviceScoped(reg, 'water-heater') as InferProvider<
1212
- typeof waterHeaterCapability
1213
- > | null,
1214
- remoteCapProxy,
1215
- ),
1216
- weather: createCapRouter_weather(
1217
- (_ctx) =>
1218
- requireDeviceScoped(reg, 'weather') as InferProvider<typeof weatherCapability> | null,
1219
- remoteCapProxy,
1220
- ),
1221
- webrtcSession: createCapRouter_webrtcSession(
1222
- (_ctx) =>
1223
- reg?.getSingleton<InferProvider<typeof webrtcSessionCapability>>('webrtc-session') ?? null,
1224
- remoteCapProxy,
1225
- ),
1226
- zoneAnalytics: createCapRouter_zoneAnalytics(
1227
- (_ctx) =>
1228
- reg?.getSingleton<InferProvider<typeof zoneAnalyticsCapability>>('zone-analytics') ?? null,
1229
- remoteCapProxy,
1230
- ),
1231
- zoneRules: createCapRouter_zoneRules(
1232
- (_ctx) => reg?.getSingleton<InferProvider<typeof zoneRulesCapability>>('zone-rules') ?? null,
1233
- remoteCapProxy,
1234
- ),
1235
- zones: createCapRouter_zones(
1236
- (_ctx) => reg?.getSingleton<InferProvider<typeof zonesCapability>>('zones') ?? null,
1237
- remoteCapProxy,
1238
- ),
1239
- } as const
1240
- }