@chrisalvir1/camera-ui-homekit-4k 0.6.14 → 0.6.17

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 (394) hide show
  1. package/CHANGELOG.md +49 -4
  2. package/LICENSE.md +19 -6
  3. package/README.md +20 -20
  4. package/bundle.zip +0 -0
  5. package/package.json +25 -44
  6. package/LICENSE +0 -21
  7. package/dist/accessories/AccessoryConfigStore.d.ts +0 -36
  8. package/dist/accessories/AccessoryConfigStore.js +0 -79
  9. package/dist/accessories/CameraAccessoryManager.d.ts +0 -125
  10. package/dist/accessories/CameraAccessoryManager.js +0 -1501
  11. package/dist/accessories/DetectionMotion.d.ts +0 -20
  12. package/dist/accessories/DetectionMotion.js +0 -38
  13. package/dist/accessories/HapCameraAccessory.d.ts +0 -99
  14. package/dist/accessories/HapCameraAccessory.js +0 -366
  15. package/dist/accessories/RecordingAudioDefaults.d.ts +0 -12
  16. package/dist/accessories/RecordingAudioDefaults.js +0 -11
  17. package/dist/admin/AdminController.d.ts +0 -96
  18. package/dist/admin/AdminController.js +0 -494
  19. package/dist/admin/AdminModels.d.ts +0 -124
  20. package/dist/admin/AdminModels.js +0 -1
  21. package/dist/audio/AacConfiguration.d.ts +0 -7
  22. package/dist/audio/AacConfiguration.js +0 -23
  23. package/dist/audio/AacEldRtpTranscoder.d.ts +0 -22
  24. package/dist/audio/AacEldRtpTranscoder.js +0 -118
  25. package/dist/audio/AacRtpPacket.d.ts +0 -2
  26. package/dist/audio/AacRtpPacket.js +0 -23
  27. package/dist/audio/AudioCapabilityResolver.d.ts +0 -6
  28. package/dist/audio/AudioCapabilityResolver.js +0 -27
  29. package/dist/audio/AudioClockVerifier.d.ts +0 -4
  30. package/dist/audio/AudioClockVerifier.js +0 -45
  31. package/dist/audio/AudioFixtureProvenance.d.ts +0 -8
  32. package/dist/audio/AudioFixtureProvenance.js +0 -23
  33. package/dist/audio/AudioRecordingInspector.d.ts +0 -22
  34. package/dist/audio/AudioRecordingInspector.js +0 -189
  35. package/dist/audio/AudioRecordingMuxer.d.ts +0 -1
  36. package/dist/audio/AudioRecordingMuxer.js +0 -41
  37. package/dist/audio/AudioRtpInspector.d.ts +0 -40
  38. package/dist/audio/AudioRtpInspector.js +0 -66
  39. package/dist/audio/AudioSessionEvidence.d.ts +0 -86
  40. package/dist/audio/AudioSessionEvidence.js +0 -29
  41. package/dist/audio/AudioSignalVerifier.d.ts +0 -13
  42. package/dist/audio/AudioSignalVerifier.js +0 -47
  43. package/dist/audio/AudioSourceInspector.d.ts +0 -6
  44. package/dist/audio/AudioSourceInspector.js +0 -29
  45. package/dist/audio/AudioTranscodePlan.d.ts +0 -2
  46. package/dist/audio/AudioTranscodePlan.js +0 -8
  47. package/dist/audio/AudioTypes.d.ts +0 -81
  48. package/dist/audio/AudioTypes.js +0 -1
  49. package/dist/audio/G711.d.ts +0 -4
  50. package/dist/audio/G711.js +0 -18
  51. package/dist/audio/IsoBmff.d.ts +0 -15
  52. package/dist/audio/IsoBmff.js +0 -33
  53. package/dist/audio/NativeAudioEngine.d.ts +0 -48
  54. package/dist/audio/NativeAudioEngine.js +0 -55
  55. package/dist/audio/OpusPacket.d.ts +0 -6
  56. package/dist/audio/OpusPacket.js +0 -15
  57. package/dist/audio/RtpAudioPacket.d.ts +0 -9
  58. package/dist/audio/RtpAudioPacket.js +0 -16
  59. package/dist/audio/SyntheticOpusOgg.d.ts +0 -2
  60. package/dist/audio/SyntheticOpusOgg.js +0 -40
  61. package/dist/camera-ui/CameraUiAdapter.d.ts +0 -227
  62. package/dist/camera-ui/CameraUiAdapter.js +0 -693
  63. package/dist/camera-ui/CameraUiAudioAdapter.d.ts +0 -13
  64. package/dist/camera-ui/CameraUiAudioAdapter.js +0 -258
  65. package/dist/camera-ui/RuntimeMetadata.d.ts +0 -9
  66. package/dist/camera-ui/RuntimeMetadata.js +0 -31
  67. package/dist/camera-ui/adminSchema.d.ts +0 -4
  68. package/dist/camera-ui/adminSchema.js +0 -69
  69. package/dist/camera-ui/cameraSettingsSchema.d.ts +0 -4
  70. package/dist/camera-ui/cameraSettingsSchema.js +0 -77
  71. package/dist/capabilities/CapabilityResolver.d.ts +0 -21
  72. package/dist/capabilities/CapabilityResolver.js +0 -12
  73. package/dist/config/FeatureFlagStore.d.ts +0 -16
  74. package/dist/config/FeatureFlagStore.js +0 -43
  75. package/dist/diagnostics/DiagnosticBundleExporter.d.ts +0 -23
  76. package/dist/diagnostics/DiagnosticBundleExporter.js +0 -57
  77. package/dist/diagnostics/DiagnosticModeStore.d.ts +0 -20
  78. package/dist/diagnostics/DiagnosticModeStore.js +0 -53
  79. package/dist/diagnostics/Diagnostics.d.ts +0 -18
  80. package/dist/diagnostics/Diagnostics.js +0 -44
  81. package/dist/diagnostics/RateLimitedLogger.d.ts +0 -24
  82. package/dist/diagnostics/RateLimitedLogger.js +0 -55
  83. package/dist/diagnostics/SecretRedactor.d.ts +0 -4
  84. package/dist/diagnostics/SecretRedactor.js +0 -55
  85. package/dist/diagnostics/StructuredLogger.d.ts +0 -12
  86. package/dist/diagnostics/StructuredLogger.js +0 -23
  87. package/dist/errors/errors.d.ts +0 -28
  88. package/dist/errors/errors.js +0 -25
  89. package/dist/generated/build-info.d.ts +0 -12
  90. package/dist/generated/build-info.js +0 -227
  91. package/dist/h264/AudioRuntime.d.ts +0 -21
  92. package/dist/h264/AudioRuntime.js +0 -130
  93. package/dist/h264/H264CameraStreamDelegate.d.ts +0 -46
  94. package/dist/h264/H264CameraStreamDelegate.js +0 -419
  95. package/dist/h264/H264RecordingSession.d.ts +0 -50
  96. package/dist/h264/H264RecordingSession.js +0 -247
  97. package/dist/h264/LiveRtpSession.d.ts +0 -59
  98. package/dist/h264/LiveRtpSession.js +0 -230
  99. package/dist/h264/NetworkEndpoint.d.ts +0 -6
  100. package/dist/h264/NetworkEndpoint.js +0 -49
  101. package/dist/h264/RtpContinuity.d.ts +0 -12
  102. package/dist/h264/RtpContinuity.js +0 -31
  103. package/dist/h264/VideoProcessing.d.ts +0 -13
  104. package/dist/h264/VideoProcessing.js +0 -21
  105. package/dist/hap/HapAdapter.d.ts +0 -29
  106. package/dist/hap/HapAdapter.js +0 -73
  107. package/dist/hap/SrtpContext.d.ts +0 -34
  108. package/dist/hap/SrtpContext.js +0 -184
  109. package/dist/hksv3/ConcurrentTierProbe.d.ts +0 -29
  110. package/dist/hksv3/ConcurrentTierProbe.js +0 -82
  111. package/dist/hksv3/Fmp4TierMeasurement.d.ts +0 -4
  112. package/dist/hksv3/Fmp4TierMeasurement.js +0 -17
  113. package/dist/hksv3/H264RtpTranscoder.d.ts +0 -21
  114. package/dist/hksv3/H264RtpTranscoder.js +0 -154
  115. package/dist/hksv3/HapWebRtcDelegate.d.ts +0 -79
  116. package/dist/hksv3/HapWebRtcDelegate.js +0 -92
  117. package/dist/hksv3/LocalRtpDelegate.d.ts +0 -68
  118. package/dist/hksv3/LocalRtpDelegate.js +0 -699
  119. package/dist/hksv3/LocalRtpProtocol.d.ts +0 -89
  120. package/dist/hksv3/LocalRtpProtocol.js +0 -239
  121. package/dist/hksv3/OpusRtpTranscoder.d.ts +0 -39
  122. package/dist/hksv3/OpusRtpTranscoder.js +0 -227
  123. package/dist/hksv3/SFrame.d.ts +0 -71
  124. package/dist/hksv3/SFrame.js +0 -326
  125. package/dist/hksv3/SFrameRtp.d.ts +0 -38
  126. package/dist/hksv3/SFrameRtp.js +0 -137
  127. package/dist/hksv3/VideoTierResolver.d.ts +0 -49
  128. package/dist/hksv3/VideoTierResolver.js +0 -86
  129. package/dist/hksv3/WebRtcSecureVideoSession.d.ts +0 -94
  130. package/dist/hksv3/WebRtcSecureVideoSession.js +0 -493
  131. package/dist/identity/IdentityStore.d.ts +0 -16
  132. package/dist/identity/IdentityStore.js +0 -46
  133. package/dist/index.d.ts +0 -46
  134. package/dist/index.js +0 -206
  135. package/dist/media/AccessUnitDigest.d.ts +0 -10
  136. package/dist/media/AccessUnitDigest.js +0 -59
  137. package/dist/media/AccessUnitMatcher.d.ts +0 -43
  138. package/dist/media/AccessUnitMatcher.js +0 -80
  139. package/dist/media/AudioPolicy.d.ts +0 -7
  140. package/dist/media/AudioPolicy.js +0 -19
  141. package/dist/media/CameraMediaProfile.d.ts +0 -13
  142. package/dist/media/CameraMediaProfile.js +0 -25
  143. package/dist/media/FixtureProvenance.d.ts +0 -79
  144. package/dist/media/FixtureProvenance.js +0 -100
  145. package/dist/media/Fmp4Inspector.d.ts +0 -27
  146. package/dist/media/Fmp4Inspector.js +0 -253
  147. package/dist/media/H264RtpAssembler.d.ts +0 -43
  148. package/dist/media/H264RtpAssembler.js +0 -184
  149. package/dist/media/HevcRtpAssembler.d.ts +0 -49
  150. package/dist/media/HevcRtpAssembler.js +0 -203
  151. package/dist/media/MediaPolicy.d.ts +0 -12
  152. package/dist/media/MediaPolicy.js +0 -13
  153. package/dist/media/NativePassthroughVerifier.d.ts +0 -20
  154. package/dist/media/NativePassthroughVerifier.js +0 -53
  155. package/dist/media/NativeVideoEngine.d.ts +0 -38
  156. package/dist/media/NativeVideoEngine.js +0 -93
  157. package/dist/media/Phase3Evidence.d.ts +0 -36
  158. package/dist/media/Phase3Evidence.js +0 -170
  159. package/dist/media/SourceBitstreamExtractor.d.ts +0 -27
  160. package/dist/media/SourceBitstreamExtractor.js +0 -302
  161. package/dist/media/SourceInspector.d.ts +0 -15
  162. package/dist/media/SourceInspector.js +0 -224
  163. package/dist/media/SourceSelector.d.ts +0 -13
  164. package/dist/media/SourceSelector.js +0 -31
  165. package/dist/media/VideoCapabilityResolver.d.ts +0 -5
  166. package/dist/media/VideoCapabilityResolver.js +0 -10
  167. package/dist/media/VideoEvidenceCollector.d.ts +0 -12
  168. package/dist/media/VideoEvidenceCollector.js +0 -34
  169. package/dist/media/VideoPolicy.d.ts +0 -8
  170. package/dist/media/VideoPolicy.js +0 -43
  171. package/dist/media/VideoSessionManager.d.ts +0 -16
  172. package/dist/media/VideoSessionManager.js +0 -61
  173. package/dist/mqtt/MqttEntityMapper.d.ts +0 -23
  174. package/dist/mqtt/MqttEntityMapper.js +0 -120
  175. package/dist/mqtt/MqttPtzBridge.d.ts +0 -51
  176. package/dist/mqtt/MqttPtzBridge.js +0 -349
  177. package/dist/mqtt/MqttSettingsStore.d.ts +0 -18
  178. package/dist/mqtt/MqttSettingsStore.js +0 -56
  179. package/dist/pairing/PairingPresenter.d.ts +0 -7
  180. package/dist/pairing/PairingPresenter.js +0 -6
  181. package/dist/persistence/AtomicJsonStore.d.ts +0 -12
  182. package/dist/persistence/AtomicJsonStore.js +0 -62
  183. package/dist/recording/AudioOnlyFmp4Session.d.ts +0 -46
  184. package/dist/recording/AudioOnlyFmp4Session.js +0 -276
  185. package/dist/recording/CameraUiHdsRecordingDelegate.d.ts +0 -47
  186. package/dist/recording/CameraUiHdsRecordingDelegate.js +0 -334
  187. package/dist/recording/HevcOpusCmafDelegate.d.ts +0 -34
  188. package/dist/recording/HevcOpusCmafDelegate.js +0 -267
  189. package/dist/recording/RecordingAdapter.d.ts +0 -8
  190. package/dist/recording/RecordingAdapter.js +0 -4
  191. package/dist/recording/RecordingTiming.d.ts +0 -4
  192. package/dist/recording/RecordingTiming.js +0 -107
  193. package/dist/services/ServiceMapper.d.ts +0 -11
  194. package/dist/services/ServiceMapper.js +0 -9
  195. package/dist/sessions/LiveSessionManager.d.ts +0 -2
  196. package/dist/sessions/LiveSessionManager.js +0 -2
  197. package/dist/sessions/SessionContext.d.ts +0 -1
  198. package/dist/sessions/SessionContext.js +0 -1
  199. package/dist/sessions/SessionId.d.ts +0 -1
  200. package/dist/sessions/SessionId.js +0 -2
  201. package/dist/sessions/SessionManager.d.ts +0 -24
  202. package/dist/sessions/SessionManager.js +0 -60
  203. package/dist/sessions/resilience.d.ts +0 -3
  204. package/dist/sessions/resilience.js +0 -29
  205. package/dist/types/diagnostics.d.ts +0 -21
  206. package/dist/types/diagnostics.js +0 -1
  207. package/dist/types/media.d.ts +0 -163
  208. package/dist/types/media.js +0 -9
  209. package/dist/types/sessions.d.ts +0 -11
  210. package/dist/types/sessions.js +0 -1
  211. package/dist/version/LocalRegistryServer.d.ts +0 -12
  212. package/dist/version/LocalRegistryServer.js +0 -165
  213. package/dist/version/VersionManager.d.ts +0 -12
  214. package/dist/version/VersionManager.js +0 -15
  215. package/docs/CONFIRMED_CHANGES_AND_VERSIONING.md +0 -527
  216. package/docs/HKSV3_HEVC_CHANGES.md +0 -25
  217. package/docs/architecture.md +0 -192
  218. package/docs/atomic-rule-hevc-hksv3.md +0 -74
  219. package/docs/audio-fixtures-manifest.json +0 -105
  220. package/docs/bidirectional-audio.md +0 -19
  221. package/docs/capability-audit-plan.md +0 -53
  222. package/docs/deployment-0.6.12.md +0 -56
  223. package/docs/detection-bridge-policy.md +0 -120
  224. package/docs/development.md +0 -181
  225. package/docs/diagnostics.md +0 -87
  226. package/docs/file-tree.txt +0 -83
  227. package/docs/fixture-determinism.json +0 -30
  228. package/docs/fixtures-manifest.json +0 -525
  229. package/docs/h264-audio-normalization.md +0 -97
  230. package/docs/h264-wifi-validation.md +0 -68
  231. package/docs/hksv3-ios27-audit-plan.md +0 -133
  232. package/docs/hksv3-ios27-checkpoint.md +0 -328
  233. package/docs/hksv3-phase-1-audit.md +0 -76
  234. package/docs/hksv3-readiness-audit-2026-10-16.md +0 -54
  235. package/docs/home-assistant-mqtt.md +0 -103
  236. package/docs/live-hevc-preserved-settings.md +0 -11
  237. package/docs/npm-publication-readiness.md +0 -55
  238. package/docs/phase-1-validation.md +0 -108
  239. package/docs/phase-2-validation.md +0 -222
  240. package/docs/phase-3-evidence-history.json +0 -854
  241. package/docs/phase-3-evidence.json +0 -2877
  242. package/docs/phase-3-validation.md +0 -345
  243. package/docs/phase-4-checkpoint.md +0 -96
  244. package/docs/phase-4-harness.json +0 -1499
  245. package/docs/phase-4-runtime-evidence.json +0 -904
  246. package/docs/phase-4-validation.md +0 -217
  247. package/docs/security.md +0 -124
  248. package/docs/tapo-c402-current-checkpoint.md +0 -168
  249. package/vendor/hap-nodejs/LICENSE +0 -176
  250. package/vendor/hap-nodejs/PATCH.md +0 -37
  251. package/vendor/hap-nodejs/README.md +0 -86
  252. package/vendor/hap-nodejs/dist/accessories/AirConditioner_accessory.d.ts +0 -2
  253. package/vendor/hap-nodejs/dist/accessories/AirConditioner_accessory.js +0 -128
  254. package/vendor/hap-nodejs/dist/accessories/AppleTVRemote_accessory.d.ts +0 -2
  255. package/vendor/hap-nodejs/dist/accessories/AppleTVRemote_accessory.js +0 -159
  256. package/vendor/hap-nodejs/dist/accessories/Camera_accessory.d.ts +0 -2
  257. package/vendor/hap-nodejs/dist/accessories/Camera_accessory.js +0 -545
  258. package/vendor/hap-nodejs/dist/accessories/Fan_accessory.d.ts +0 -2
  259. package/vendor/hap-nodejs/dist/accessories/Fan_accessory.js +0 -74
  260. package/vendor/hap-nodejs/dist/accessories/GarageDoorOpener_accessory.d.ts +0 -2
  261. package/vendor/hap-nodejs/dist/accessories/GarageDoorOpener_accessory.js +0 -78
  262. package/vendor/hap-nodejs/dist/accessories/Light-AdaptiveLighting_accessory.d.ts +0 -2
  263. package/vendor/hap-nodejs/dist/accessories/Light-AdaptiveLighting_accessory.js +0 -106
  264. package/vendor/hap-nodejs/dist/accessories/Light_accessory.d.ts +0 -2
  265. package/vendor/hap-nodejs/dist/accessories/Light_accessory.js +0 -145
  266. package/vendor/hap-nodejs/dist/accessories/Lock_accessory.d.ts +0 -2
  267. package/vendor/hap-nodejs/dist/accessories/Lock_accessory.js +0 -76
  268. package/vendor/hap-nodejs/dist/accessories/MotionSensor_accessory.d.ts +0 -2
  269. package/vendor/hap-nodejs/dist/accessories/MotionSensor_accessory.js +0 -45
  270. package/vendor/hap-nodejs/dist/accessories/Outlet_accessory.d.ts +0 -2
  271. package/vendor/hap-nodejs/dist/accessories/Outlet_accessory.js +0 -79
  272. package/vendor/hap-nodejs/dist/accessories/SmartSpeaker_accessory.d.ts +0 -2
  273. package/vendor/hap-nodejs/dist/accessories/SmartSpeaker_accessory.js +0 -44
  274. package/vendor/hap-nodejs/dist/accessories/Sprinkler_accessory.d.ts +0 -2
  275. package/vendor/hap-nodejs/dist/accessories/Sprinkler_accessory.js +0 -128
  276. package/vendor/hap-nodejs/dist/accessories/TV_accessory.d.ts +0 -2
  277. package/vendor/hap-nodejs/dist/accessories/TV_accessory.js +0 -101
  278. package/vendor/hap-nodejs/dist/accessories/TemperatureSensor_accessory.d.ts +0 -2
  279. package/vendor/hap-nodejs/dist/accessories/TemperatureSensor_accessory.js +0 -44
  280. package/vendor/hap-nodejs/dist/accessories/Wi-FiRouter_accessory.d.ts +0 -3
  281. package/vendor/hap-nodejs/dist/accessories/Wi-FiRouter_accessory.js +0 -17
  282. package/vendor/hap-nodejs/dist/accessories/Wi-FiSatellite_accessory.d.ts +0 -3
  283. package/vendor/hap-nodejs/dist/accessories/Wi-FiSatellite_accessory.js +0 -19
  284. package/vendor/hap-nodejs/dist/accessories/gstreamer-audioProducer.d.ts +0 -25
  285. package/vendor/hap-nodejs/dist/accessories/gstreamer-audioProducer.js +0 -145
  286. package/vendor/hap-nodejs/dist/accessories/types.d.ts +0 -78
  287. package/vendor/hap-nodejs/dist/accessories/types.js +0 -88
  288. package/vendor/hap-nodejs/dist/index.d.ts +0 -50
  289. package/vendor/hap-nodejs/dist/index.js +0 -54
  290. package/vendor/hap-nodejs/dist/internal-types.d.ts +0 -76
  291. package/vendor/hap-nodejs/dist/internal-types.js +0 -80
  292. package/vendor/hap-nodejs/dist/lib/Accessory.d.ts +0 -521
  293. package/vendor/hap-nodejs/dist/lib/Accessory.js +0 -1762
  294. package/vendor/hap-nodejs/dist/lib/Advertiser.d.ts +0 -190
  295. package/vendor/hap-nodejs/dist/lib/Advertiser.js +0 -592
  296. package/vendor/hap-nodejs/dist/lib/Bridge.d.ts +0 -12
  297. package/vendor/hap-nodejs/dist/lib/Bridge.js +0 -19
  298. package/vendor/hap-nodejs/dist/lib/Characteristic.d.ts +0 -1768
  299. package/vendor/hap-nodejs/dist/lib/Characteristic.js +0 -2532
  300. package/vendor/hap-nodejs/dist/lib/HAPServer.d.ts +0 -299
  301. package/vendor/hap-nodejs/dist/lib/HAPServer.js +0 -968
  302. package/vendor/hap-nodejs/dist/lib/Service.d.ts +0 -598
  303. package/vendor/hap-nodejs/dist/lib/Service.js +0 -797
  304. package/vendor/hap-nodejs/dist/lib/camera/CMAFIngest.d.ts +0 -102
  305. package/vendor/hap-nodejs/dist/lib/camera/CMAFIngest.js +0 -317
  306. package/vendor/hap-nodejs/dist/lib/camera/HDSSnapshotTransport.d.ts +0 -38
  307. package/vendor/hap-nodejs/dist/lib/camera/HDSSnapshotTransport.js +0 -174
  308. package/vendor/hap-nodejs/dist/lib/camera/RTPProxy.d.ts +0 -59
  309. package/vendor/hap-nodejs/dist/lib/camera/RTPProxy.js +0 -267
  310. package/vendor/hap-nodejs/dist/lib/camera/RTPStreamManagement.d.ts +0 -379
  311. package/vendor/hap-nodejs/dist/lib/camera/RTPStreamManagement.js +0 -1021
  312. package/vendor/hap-nodejs/dist/lib/camera/RecordingManagement.d.ts +0 -325
  313. package/vendor/hap-nodejs/dist/lib/camera/RecordingManagement.js +0 -800
  314. package/vendor/hap-nodejs/dist/lib/camera/SecureVideoCredentials.d.ts +0 -20
  315. package/vendor/hap-nodejs/dist/lib/camera/SecureVideoCredentials.js +0 -48
  316. package/vendor/hap-nodejs/dist/lib/camera/SecureVideoTypes.d.ts +0 -618
  317. package/vendor/hap-nodejs/dist/lib/camera/SecureVideoTypes.js +0 -911
  318. package/vendor/hap-nodejs/dist/lib/camera/index.d.ts +0 -8
  319. package/vendor/hap-nodejs/dist/lib/camera/index.js +0 -11
  320. package/vendor/hap-nodejs/dist/lib/controller/AdaptiveLightingController.d.ts +0 -452
  321. package/vendor/hap-nodejs/dist/lib/controller/AdaptiveLightingController.js +0 -868
  322. package/vendor/hap-nodejs/dist/lib/controller/CameraController.d.ts +0 -410
  323. package/vendor/hap-nodejs/dist/lib/controller/CameraController.js +0 -658
  324. package/vendor/hap-nodejs/dist/lib/controller/Controller.d.ts +0 -197
  325. package/vendor/hap-nodejs/dist/lib/controller/Controller.js +0 -32
  326. package/vendor/hap-nodejs/dist/lib/controller/DoorbellController.d.ts +0 -59
  327. package/vendor/hap-nodejs/dist/lib/controller/DoorbellController.js +0 -102
  328. package/vendor/hap-nodejs/dist/lib/controller/RemoteController.d.ts +0 -434
  329. package/vendor/hap-nodejs/dist/lib/controller/RemoteController.js +0 -1178
  330. package/vendor/hap-nodejs/dist/lib/controller/SecureVideoController.d.ts +0 -380
  331. package/vendor/hap-nodejs/dist/lib/controller/SecureVideoController.js +0 -947
  332. package/vendor/hap-nodejs/dist/lib/controller/index.d.ts +0 -7
  333. package/vendor/hap-nodejs/dist/lib/controller/index.js +0 -10
  334. package/vendor/hap-nodejs/dist/lib/datastream/DataStreamManagement.d.ts +0 -73
  335. package/vendor/hap-nodejs/dist/lib/datastream/DataStreamManagement.js +0 -205
  336. package/vendor/hap-nodejs/dist/lib/datastream/DataStreamParser.d.ts +0 -186
  337. package/vendor/hap-nodejs/dist/lib/datastream/DataStreamParser.js +0 -880
  338. package/vendor/hap-nodejs/dist/lib/datastream/DataStreamServer.d.ts +0 -351
  339. package/vendor/hap-nodejs/dist/lib/datastream/DataStreamServer.js +0 -878
  340. package/vendor/hap-nodejs/dist/lib/datastream/index.d.ts +0 -4
  341. package/vendor/hap-nodejs/dist/lib/datastream/index.js +0 -7
  342. package/vendor/hap-nodejs/dist/lib/definitions/CharacteristicDefinitions.d.ts +0 -2245
  343. package/vendor/hap-nodejs/dist/lib/definitions/CharacteristicDefinitions.js +0 -4957
  344. package/vendor/hap-nodejs/dist/lib/definitions/ServiceDefinitions.d.ts +0 -584
  345. package/vendor/hap-nodejs/dist/lib/definitions/ServiceDefinitions.js +0 -1518
  346. package/vendor/hap-nodejs/dist/lib/definitions/generate-definitions.d.ts +0 -34
  347. package/vendor/hap-nodejs/dist/lib/definitions/generate-definitions.js +0 -624
  348. package/vendor/hap-nodejs/dist/lib/definitions/generator-configuration.d.ts +0 -22
  349. package/vendor/hap-nodejs/dist/lib/definitions/generator-configuration.js +0 -734
  350. package/vendor/hap-nodejs/dist/lib/definitions/index.d.ts +0 -3
  351. package/vendor/hap-nodejs/dist/lib/definitions/index.js +0 -6
  352. package/vendor/hap-nodejs/dist/lib/gen/HomeKit.d.ts +0 -8
  353. package/vendor/hap-nodejs/dist/lib/gen/HomeKit.js +0 -9
  354. package/vendor/hap-nodejs/dist/lib/model/AccessoryInfo.d.ts +0 -91
  355. package/vendor/hap-nodejs/dist/lib/model/AccessoryInfo.js +0 -311
  356. package/vendor/hap-nodejs/dist/lib/model/ControllerStorage.d.ts +0 -46
  357. package/vendor/hap-nodejs/dist/lib/model/ControllerStorage.js +0 -277
  358. package/vendor/hap-nodejs/dist/lib/model/HAPFileStorage.d.ts +0 -75
  359. package/vendor/hap-nodejs/dist/lib/model/HAPFileStorage.js +0 -190
  360. package/vendor/hap-nodejs/dist/lib/model/HAPStorage.d.ts +0 -26
  361. package/vendor/hap-nodejs/dist/lib/model/HAPStorage.js +0 -79
  362. package/vendor/hap-nodejs/dist/lib/model/IdentifierCache.d.ts +0 -33
  363. package/vendor/hap-nodejs/dist/lib/model/IdentifierCache.js +0 -114
  364. package/vendor/hap-nodejs/dist/lib/tv/AccessControlManagement.d.ts +0 -83
  365. package/vendor/hap-nodejs/dist/lib/tv/AccessControlManagement.js +0 -127
  366. package/vendor/hap-nodejs/dist/lib/util/checkName.d.ts +0 -8
  367. package/vendor/hap-nodejs/dist/lib/util/checkName.js +0 -28
  368. package/vendor/hap-nodejs/dist/lib/util/clone.d.ts +0 -7
  369. package/vendor/hap-nodejs/dist/lib/util/clone.js +0 -22
  370. package/vendor/hap-nodejs/dist/lib/util/color-utils.d.ts +0 -18
  371. package/vendor/hap-nodejs/dist/lib/util/color-utils.js +0 -442
  372. package/vendor/hap-nodejs/dist/lib/util/eventedhttp.d.ts +0 -251
  373. package/vendor/hap-nodejs/dist/lib/util/eventedhttp.js +0 -714
  374. package/vendor/hap-nodejs/dist/lib/util/hapCrypto.d.ts +0 -50
  375. package/vendor/hap-nodejs/dist/lib/util/hapCrypto.js +0 -185
  376. package/vendor/hap-nodejs/dist/lib/util/hapStatusError.d.ts +0 -16
  377. package/vendor/hap-nodejs/dist/lib/util/hapStatusError.js +0 -29
  378. package/vendor/hap-nodejs/dist/lib/util/net-utils.d.ts +0 -21
  379. package/vendor/hap-nodejs/dist/lib/util/net-utils.js +0 -79
  380. package/vendor/hap-nodejs/dist/lib/util/once.d.ts +0 -7
  381. package/vendor/hap-nodejs/dist/lib/util/once.js +0 -22
  382. package/vendor/hap-nodejs/dist/lib/util/promise-utils.d.ts +0 -14
  383. package/vendor/hap-nodejs/dist/lib/util/promise-utils.js +0 -29
  384. package/vendor/hap-nodejs/dist/lib/util/request-util.d.ts +0 -36
  385. package/vendor/hap-nodejs/dist/lib/util/request-util.js +0 -108
  386. package/vendor/hap-nodejs/dist/lib/util/time.d.ts +0 -9
  387. package/vendor/hap-nodejs/dist/lib/util/time.js +0 -23
  388. package/vendor/hap-nodejs/dist/lib/util/tlv.d.ts +0 -90
  389. package/vendor/hap-nodejs/dist/lib/util/tlv.js +0 -318
  390. package/vendor/hap-nodejs/dist/lib/util/uuid.d.ts +0 -23
  391. package/vendor/hap-nodejs/dist/lib/util/uuid.js +0 -78
  392. package/vendor/hap-nodejs/dist/types.d.ts +0 -276
  393. package/vendor/hap-nodejs/dist/types.js +0 -11
  394. package/vendor/hap-nodejs/package.json +0 -93
package/CHANGELOG.md CHANGED
@@ -1,5 +1,47 @@
1
1
  # Changelog
2
2
 
3
+ ## [0.6.17] — LAN-aware HomeKit advertisement
4
+
5
+ - Bind HomeKit/mDNS publication to detected private IPv4 interfaces, so
6
+ accessories resolve to the Camera.UI host's LAN address instead of loopback.
7
+ Interface names are selected dynamically to follow Wi-Fi/Ethernet address
8
+ changes; when no private IPv4 interface exists, HAP keeps its default
9
+ interface selection. This changes discovery/advertisement only; video, audio,
10
+ HKSV/HKSV3, detection, and pairing data are untouched.
11
+ - Validate LAN binding with unit coverage, runtime mDNS resolution, build,
12
+ typecheck, lint, tests, and Camera.UI bundle smoke checks.
13
+
14
+ ## [0.6.16] — Shared codec profiles for newly assigned cameras
15
+
16
+ - Removed the embedded loopback npm registry from plugin startup. Public installs
17
+ leave each user's npm configuration untouched and use Camera.UI/npm's normal
18
+ package update path.
19
+
20
+ - Apply codec-specific shared defaults to newly assigned cameras that have a
21
+ usable source: H.264 selects HKSV and HEVC selects HKSV3. A camera explicitly
22
+ stopped by its user is not auto-published again. Recording audio is enabled
23
+ once per codec after HAP restores state; later Home settings are preserved.
24
+ - Keep H.264 and HEVC media paths isolated. Codec and dimensions are re-probed
25
+ on reconnect; failed source detection leaves the accessory unpublished and
26
+ can be retried from that camera's settings. Camera.UI still owns OpenCV/CoreML
27
+ installation and sensor assignment; this plugin forwards assigned sensors.
28
+
29
+ ## [0.6.15] — Camera.UI platform install targets
30
+
31
+ - Declare macOS, Windows, and Linux on x64 and ARM64 as npm install targets,
32
+ matching Camera.UI's supported server platforms. Runtime testing remains
33
+ verified on macOS ARM64 only; the other targets require host-specific checks.
34
+ - Keep the official logo in the published bundle and assert the install target
35
+ matrix and package version in the bundle smoke test.
36
+ - Publish the Camera.UI-generated `bundle/` artifact rather than the source
37
+ repository root. This removes source-only runtime dependencies from the npm
38
+ install path and ships the `cameraui` metadata, `bundle.zip`, and logo that
39
+ Camera.UI consumes.
40
+ - Embed the pinned HAP runtime and its complete production dependency tree in
41
+ `bundle.zip`. Camera.UI therefore performs no dependency download after
42
+ extracting the npm package, avoiding installation failures caused by a
43
+ user-owned npm cache with incorrect permissions.
44
+
3
45
  ## [0.6.14] — npm account scope correction
4
46
 
5
47
  - Rename the public package from `@chrisalvir/camera-ui-homekit-4k` to
@@ -36,6 +78,7 @@
36
78
 
37
79
  - H.264 live and HKSV use measured source dimensions: video up to 1920×1080 is passed through; larger sources use a verified H.264 encoder at 1920×1080. Existing negotiated audio routes are retained.
38
80
  - Shared Camera.UI detection bridge accepts visual object labels such as car, truck, dog and cat from assigned detectors, including future camera exports. Aggregate event end always releases motion even when closing metadata is empty.
81
+ - Camera.UI sensor/plugin assignments remain host-owned. The plugin forwards events from sensors already assigned to a camera; it cannot install OpenCV/CoreML or assign their sensors on the user's behalf.
39
82
  - HEVC/HKSV3 recording audio receives its persistent one-time first-export default after HAP restores state. Later HomeKit audio choices are retained.
40
83
  - HEVC video/audio transport, its recording implementation and pairing identities are preserved. A worker reload briefly interrupts every accessory served by that worker.
41
84
 
@@ -60,11 +103,13 @@
60
103
 
61
104
  ## [0.6.3]
62
105
 
63
- - **Universal HEVC & HKSV3 Configuration Parity (IPCAM IPC Blueprint):** All Vimtag cameras (SALA, OFICINA, JARDIN, COCHERA, AREA DE CAFE, RECAMARA) and any newly added HEVC cameras automatically adopt the exact configuration established on IPCAM IPC. Automatically assigns `@chrisalvir/camera-ui-homekit-4k`, `@camera.ui/camera-ui-coreml`, and `@camera.ui/camera-ui-opencv` for full motion, object, face, person, and clip detection.
106
+ > Correction: the automatic detector assignment and automatic export described
107
+ > here were not implemented in 0.6.3. Version 0.6.16 adds automatic HomeKit
108
+ > export for assigned cameras with a usable, confirmed source, but detector
109
+ > plugins and their sensor assignments remain controlled by Camera.UI.
110
+
64
111
  - **Go2RTC Stream Preload & Elimination of Audio Teardown Collision:** Configured persistent Go2RTC stream preloading (`preload: audio=&video=`) and disabled RTSP backchannel handshakes (`backchannelDisabled: true`, `#backchannel=0#noBackchannel`) on Vimtag cloud relay sources, preventing WAN timeout disconnects (`i/o timeout`) and resolving Go2RTC's `error="start from CONN state"`.
65
112
  - **RTSP Direct Resolution Fallback for Multiplexed Sources:** Refined `resolveDirectCameraRtspUrl` to strictly return direct URLs only for verified private LAN IP addresses (`192.168.x.x`, `10.x.x.x`, `172.16-31.x.x`). For cloud and plugin cameras, gracefully falls back to Camera.UI multiplexed endpoints with proper query parameters (`?video&audio`), guaranteeing that FFmpeg HDS recordings generate complete `moov` initialization segments containing both video and AAC-LC audio tracks.
66
- - **Auto-Provisioning on Camera Addition (`CameraAutoConfig`):** Added automated configuration synchronization upon camera addition (`onCameraAdded`) and startup (`configureCameras`). Newly added HEVC cameras immediately receive HKSV3 configuration, continuous recording settings, and automatic HomeKit export without manual intervention.
67
- - **Permanent H.264 & Tapo Isolation:** Kept Tapo and all existing H.264 logic strictly untouched (`src/h264/*` unchanged); future H.264 cameras automatically inherit Tapo's standard H.264 configuration.
68
113
  - **FirmwareRevision Update:** Incremented firmware revision to `0.6.3`.
69
114
 
70
115
  ## [0.6.2]
@@ -78,7 +123,7 @@
78
123
 
79
124
  ## [0.6.1]
80
125
 
81
- - **Automatic Camera Export & Removal of Manual Button:** Cameras assigned to the HOMEKIT 4K plugin are now automatically exported to Apple Home upon activation alongside other plugins (CoreML, OpenCV), eliminating the need for manual button clicks. Removed the redundant «Exportar esta cámara» button from the UI. Pre-warmed pairing QR generation renders the branded setup QR code and manual PIN immediately when entering the pairing section.
126
+ > Correction: this release does not automatically assign cameras to detector plugins or export every camera to Apple Home. Camera.UI owns sensor assignments, and export is done from the per-camera HomeKit settings.
82
127
  - **HEVC HKSV3 Audio Clock Synchronization (16 kHz):** Scaled Opus RTP timestamps by $16\text{k} / 48\text{k}$ (320 ticks per 20ms frame) to match HomeKit's negotiated 16 kHz audio sample rate (`sampleRate: 1`), eliminating the 3x timestamp forward surge and completely resolving the cyclic 1-second audio / mute stutter.
83
128
  - **Parasitic Microphone Whine & Artifact Elimination:** Implemented a specialized Butterworth 2-pole bandpass filter (`highpass=f=150:poles=2,lowpass=f=3500:poles=2`), FFT adaptive noise reduction (`afftdn=nf=-40`), clean gain boost, and switched Opus encoding to `-application voip -b:a 48k -vbr off`, completely eliminating the 6.28 kHz hardware whistle, background cricket buzz, and metallic CELT ringing across all HEVC live streams and recordings.
84
129
  - **Independent Audio Jitter Buffer Operation:** Omitted periodic audio RTCP Sender Reports in HKSV3 Multi-Tier RTP so HomeKit plays live audio continuously without inter-stream clock clashes against video.
package/LICENSE.md CHANGED
@@ -1,8 +1,21 @@
1
- # Licensing status
1
+ HOMEKIT 4K PROPRIETARY SOFTWARE LICENSE
2
2
 
3
- Copyright Chrisalvir. All rights reserved.
3
+ Copyright (c) 2026 Chrisalvir. All rights reserved.
4
4
 
5
- No public license is granted for the original HOMEKIT 4K implementation during
6
- Phase 1. package.json declares UNLICENSED. A distribution license must be chosen
7
- by the author before public release. Third-party dependencies retain their own
8
- licenses and notices; this file does not change those licenses.
5
+ Permission is granted to download, install, and run an unmodified copy of
6
+ HOMEKIT 4K with Camera.UI for lawful personal or commercial use. This permission
7
+ does not transfer ownership of the software.
8
+
9
+ You may not modify, adapt, translate, or create derivative works from HOMEKIT
10
+ 4K. You may not redistribute, sublicense, republish, or sell copies of the
11
+ software. Any permission beyond downloading, installing, and running an
12
+ unmodified copy requires prior written permission from the copyright holder.
13
+
14
+ The copyright notice and this license must accompany any permitted unmodified
15
+ copy.
16
+
17
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
18
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
19
+ FITNESS FOR A PARTICULAR PURPOSE, AND NONINFRINGEMENT. IN NO EVENT SHALL THE
20
+ AUTHOR OR COPYRIGHT HOLDER BE LIABLE FOR ANY CLAIM, DAMAGES, OR OTHER LIABILITY
21
+ ARISING FROM, OUT OF, OR IN CONNECTION WITH THE SOFTWARE OR ITS USE.
package/README.md CHANGED
@@ -6,11 +6,15 @@ HomeKit 4K exports cameras assigned to the plugin in Camera.UI as separate
6
6
  Apple Home accessories. Camera.UI remains the source of camera streams,
7
7
  capabilities, sensors, and detector configuration.
8
8
 
9
- **Version 0.6.14.** Runtime behavior was validated on the developer MacBook
10
- with Camera.UI 2.3.0 using the previous package, 0.6.12. Version 0.6.14 fixes
11
- the npm scope to match the owner's npm account and does not change camera runtime
12
- behavior. Runtime evidence and limits are in
13
- [`docs/deployment-0.6.12.md`](docs/deployment-0.6.12.md).
9
+ When Camera.UI assigns a camera to this plugin, the plugin probes its available
10
+ source and publishes it automatically once it can confirm H.264 or HEVC. A user
11
+ can stop a camera's export in that camera's settings; this choice persists and
12
+ prevents automatic republication. An unavailable/unknown source is retried a
13
+ few times; selecting a different source in that camera's settings retries it.
14
+
15
+ **Release 0.6.17** adds LAN-aware HomeKit/mDNS advertisement. Runtime behavior
16
+ was validated on the developer MacBook with Camera.UI 2.3.0; see the changelog
17
+ for the scope of each release and its validation evidence.
14
18
 
15
19
  ## Current behavior
16
20
 
@@ -33,14 +37,12 @@ behavior. Runtime evidence and limits are in
33
37
 
34
38
  ## Requirements and installation
35
39
 
36
- The package currently declares Camera.UI >=2.3.0 and Node.js >=22.18.0. The
37
- development validation used Camera.UI's official local bundle installer. Public
38
- npm installation is not available yet; use Camera.UI's supported plugin
39
- installer after a public release is announced.
40
-
41
- The current package manifest restricts installation to macOS ARM64. That limit
42
- must be confirmed or removed before promising support for other Camera.UI
43
- platforms.
40
+ The package declares Camera.UI >=2.3.0 and Node.js >=22.18.0. Starting with
41
+ 0.6.15, npm allows installation on macOS, Windows, and Linux on x64 or ARM64.
42
+ The runtime has only been exercised on macOS ARM64; Windows, Linux, and macOS
43
+ Intel still need real-host validation before they can be called verified.
44
+ In Camera.UI's plugin store, search for the shorter text `camera-ui-homekit-4k`
45
+ and select the scoped package `@chrisalvir1/camera-ui-homekit-4k`.
44
46
 
45
47
  ## Development
46
48
 
@@ -54,13 +56,11 @@ pnpm smoke:bundle
54
56
 
55
57
  Automated checks and real-host evidence are different: test results do not
56
58
  replace playback, recording, or detection confirmation in Apple Home. See the
57
- validation documents under [`docs/`](docs/).
59
+ [public codec-profile notes](https://github.com/Chrisalvir1/homekit-4k/blob/main/docs/HKSV3_HEVC_CHANGES.md).
58
60
 
59
61
  ## Public release status
60
62
 
61
- The package uses a proprietary license: users may download, install, and run an
62
- unmodified copy; modifying or redistributing it is not permitted without the
63
- author's written permission. Check npm for the first public release and use
64
- Camera.UI's supported plugin installer when the package becomes available
65
- there. See
66
- [`docs/npm-publication-readiness.md`](docs/npm-publication-readiness.md).
63
+ The package is public on npm under a proprietary license: users may download,
64
+ install, and run an unmodified copy; modifying or redistributing it is not
65
+ permitted without the author's written permission. Version 0.6.17 is the current release.
66
+ Use Camera.UI's supported plugin installer to install the latest public release.
package/bundle.zip ADDED
Binary file
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@chrisalvir1/camera-ui-homekit-4k",
3
3
  "displayName": "HOMEKIT 4K — by Chrisalvir",
4
- "version": "0.6.14",
4
+ "version": "0.6.17",
5
5
  "description": "Exports Camera.UI cameras to Apple Home with H.264/HKSV and HEVC/HKSV3 streaming paths.",
6
6
  "homepage": "https://github.com/Chrisalvir1/homekit-4k",
7
7
  "repository": {
@@ -12,63 +12,31 @@
12
12
  "url": "https://github.com/Chrisalvir1/homekit-4k/issues"
13
13
  },
14
14
  "author": "Chrisalvir",
15
- "license": "SEE LICENSE IN LICENSE",
15
+ "license": "SEE LICENSE IN LICENSE.md",
16
16
  "publishConfig": {
17
17
  "access": "public",
18
18
  "registry": "https://registry.npmjs.org/"
19
19
  },
20
- "type": "module",
20
+ "type": "commonjs",
21
21
  "main": "./dist/index.js",
22
22
  "types": "./dist/index.d.ts",
23
23
  "files": [
24
- "dist/**/*.js",
25
- "dist/**/*.d.ts",
26
- "vendor/hap-nodejs/dist/**/*.js",
27
- "vendor/hap-nodejs/dist/**/*.d.ts",
28
- "vendor/hap-nodejs/package.json",
29
- "vendor/hap-nodejs/LICENSE",
30
- "vendor/hap-nodejs/PATCH.md",
31
- "vendor/hap-nodejs/README.md",
32
- "docs",
33
- "LICENSE",
34
- "logo.png",
35
- "README.md",
36
- "CHANGELOG.md"
24
+ "bundle.zip",
25
+ "CHANGELOG.md",
26
+ "logo.png"
37
27
  ],
38
28
  "engines": {
39
29
  "node": ">=22.18.0",
40
30
  "camera.ui": ">=2.3.0"
41
31
  },
42
32
  "os": [
43
- "darwin"
33
+ "darwin",
34
+ "linux",
35
+ "win32"
44
36
  ],
45
37
  "cpu": [
46
- "arm64"
47
- ],
48
- "dependencies": {
49
- "@camera.ui/sdk": "1.4.1",
50
- "@homebridge/hap-nodejs": "file:vendor/hap-nodejs",
51
- "@noble/ciphers": "2.4.0",
52
- "fflate": "0.8.3",
53
- "mqtt": "5.16.0",
54
- "qrcode": "1.5.4",
55
- "werift": "0.23.0"
56
- },
57
- "devDependencies": {
58
- "@camera.ui/cli": "0.0.116",
59
- "@types/node": "24.10.0",
60
- "@types/qrcode": "1.5.6",
61
- "eslint": "10.11.0",
62
- "typescript": "5.9.3",
63
- "typescript-eslint": "8.71.0"
64
- },
65
- "homekit4k": {
66
- "releaseChannel": "stable"
67
- },
68
- "keywords": [
69
- "camera-ui-plugin",
70
- "camera-ui",
71
- "homekit"
38
+ "arm64",
39
+ "x64"
72
40
  ],
73
41
  "scripts": {
74
42
  "build": "node scripts/build-vendored-hap.mjs && node scripts/build.mjs",
@@ -84,6 +52,19 @@
84
52
  "smoke:bundle": "node scripts/smoke-bundle.mjs",
85
53
  "examples": "pnpm build && node scripts/examples.mjs",
86
54
  "bundle:camera-ui": "pnpm build && cui bundle && node scripts/finalize-camera-ui-bundle.mjs",
55
+ "publish:camera-ui": "pnpm bundle:camera-ui && npm publish ./bundle --access public --registry=https://registry.npmjs.org/",
87
56
  "test:audio": "pnpm build && node scripts/audio-lab/test-audio.mjs"
57
+ },
58
+ "homekit4k": {
59
+ "releaseChannel": "stable"
60
+ },
61
+ "packageManager": "pnpm@11.25.0",
62
+ "keywords": [
63
+ "camera-ui-plugin",
64
+ "camera-ui",
65
+ "homekit"
66
+ ],
67
+ "cameraui": {
68
+ "protocolLevel": 2
88
69
  }
89
- }
70
+ }
package/LICENSE DELETED
@@ -1,21 +0,0 @@
1
- HOMEKIT 4K PROPRIETARY SOFTWARE LICENSE
2
-
3
- Copyright (c) 2026 Chrisalvir. All rights reserved.
4
-
5
- Permission is granted to download, install, and run an unmodified copy of
6
- HOMEKIT 4K with Camera.UI for lawful personal or commercial use. This permission
7
- does not transfer ownership of the software.
8
-
9
- You may not modify, adapt, translate, or create derivative works from HOMEKIT
10
- 4K. You may not redistribute, sublicense, republish, or sell copies of the
11
- software. Any permission beyond downloading, installing, and running an
12
- unmodified copy requires prior written permission from the copyright holder.
13
-
14
- The copyright notice and this license must accompany any permitted unmodified
15
- copy.
16
-
17
- THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
18
- IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
19
- FITNESS FOR A PARTICULAR PURPOSE, AND NONINFRINGEMENT. IN NO EVENT SHALL THE
20
- AUTHOR OR COPYRIGHT HOLDER BE LIABLE FOR ANY CLAIM, DAMAGES, OR OTHER LIABILITY
21
- ARISING FROM, OUT OF, OR IN CONNECTION WITH THE SOFTWARE OR ITS USE.
@@ -1,36 +0,0 @@
1
- export interface StoredPtzPosition {
2
- pan: number;
3
- tilt: number;
4
- zoom: number;
5
- }
6
- export interface StoredPtzPreset {
7
- name: string;
8
- position: StoredPtzPosition;
9
- savedAt: string;
10
- includeInPatrol: boolean;
11
- }
12
- export type HomeKitVideoMode = 'CLASSIC_H264' | 'HKSV3_LOCAL_HEVC';
13
- export interface CameraAccessoryConfig {
14
- exportEnabled: boolean;
15
- /** True after the one-time first-export default for HEVC/HKSV3 recording audio was applied. */
16
- recordingAudioDefaultInitialized: boolean;
17
- sourceId?: string;
18
- videoMode: HomeKitVideoMode;
19
- ptzEnabled: boolean;
20
- patrolEnabled: boolean;
21
- patrolIntervalSeconds: number;
22
- presets: Array<StoredPtzPreset | null>;
23
- defaultPreset?: number;
24
- tracking: {
25
- person: boolean;
26
- animal: boolean;
27
- vehicle: boolean;
28
- };
29
- }
30
- export declare class AccessoryConfigStore {
31
- private readonly store;
32
- constructor(root: string);
33
- get(cameraId: string): Promise<CameraAccessoryConfig>;
34
- update(cameraId: string, change: (current: CameraAccessoryConfig) => CameraAccessoryConfig): Promise<CameraAccessoryConfig>;
35
- exportEnabled(): Promise<string[]>;
36
- }
@@ -1,79 +0,0 @@
1
- import { join } from 'node:path';
2
- import { AtomicJsonStore, record } from "../persistence/AtomicJsonStore.js";
3
- const initialCamera = () => ({ exportEnabled: false, recordingAudioDefaultInitialized: false,
4
- videoMode: 'CLASSIC_H264', ptzEnabled: false, patrolEnabled: false, patrolIntervalSeconds: 15,
5
- presets: [null, null, null, null, null],
6
- tracking: { person: false, animal: false, vehicle: false } });
7
- function decode(value) {
8
- if (!record(value) || value.schemaVersion !== 1 || !record(value.cameras))
9
- throw new Error('Invalid accessory configuration schema');
10
- const cameras = Object.create(null);
11
- for (const [cameraId, raw] of Object.entries(value.cameras)) {
12
- if (!cameraId || !record(raw) || typeof raw.exportEnabled !== 'boolean' || typeof raw.ptzEnabled !== 'boolean' ||
13
- !Array.isArray(raw.presets) || raw.presets.length !== 5 || !record(raw.tracking) ||
14
- typeof raw.tracking.person !== 'boolean' || typeof raw.tracking.animal !== 'boolean' || typeof raw.tracking.vehicle !== 'boolean') {
15
- throw new Error('Invalid per-camera accessory configuration');
16
- }
17
- const presets = raw.presets.map(preset => {
18
- if (preset === null)
19
- return null;
20
- if (!record(preset) || typeof preset.name !== 'string' || !preset.name.trim() || typeof preset.savedAt !== 'string' ||
21
- !record(preset.position) || typeof preset.position.pan !== 'number' || typeof preset.position.tilt !== 'number' ||
22
- typeof preset.position.zoom !== 'number' || ![preset.position.pan, preset.position.tilt, preset.position.zoom].every(Number.isFinite)) {
23
- throw new Error('Invalid PTZ preset');
24
- }
25
- const pan = preset.position.pan;
26
- const tilt = preset.position.tilt;
27
- const zoom = preset.position.zoom;
28
- if (pan < -1 || pan > 1 || tilt < -1 || tilt > 1 || zoom < 0 || zoom > 1)
29
- throw new Error('PTZ position is outside normalized limits');
30
- return { name: preset.name.trim().slice(0, 48), savedAt: preset.savedAt,
31
- position: { pan, tilt, zoom }, includeInPatrol: typeof preset.includeInPatrol === 'boolean' ? preset.includeInPatrol : true };
32
- });
33
- const defaultPreset = raw.defaultPreset;
34
- if (defaultPreset !== undefined && (typeof defaultPreset !== 'number' || !Number.isInteger(defaultPreset) || defaultPreset < 0 ||
35
- defaultPreset >= 5 || presets[defaultPreset] === null)) {
36
- throw new Error('Invalid default PTZ preset');
37
- }
38
- if (!record(raw.tracking) || typeof raw.tracking.person !== 'boolean' || typeof raw.tracking.animal !== 'boolean' ||
39
- typeof raw.tracking.vehicle !== 'boolean')
40
- throw new Error('Invalid tracking flags');
41
- cameras[cameraId] = { exportEnabled: raw.exportEnabled,
42
- // Older saved camera configs predate the default. Initialize HEVC/HKSV3
43
- // once after HAP restore, then persist the marker so later user choices stick.
44
- recordingAudioDefaultInitialized: typeof raw.recordingAudioDefaultInitialized === 'boolean'
45
- ? raw.recordingAudioDefaultInitialized : false,
46
- videoMode: raw.videoMode === 'HKSV3_LOCAL_HEVC' ? 'HKSV3_LOCAL_HEVC' : 'CLASSIC_H264', ptzEnabled: raw.ptzEnabled,
47
- patrolEnabled: typeof raw.patrolEnabled === 'boolean' ? raw.patrolEnabled : false,
48
- ...(typeof raw.sourceId === 'string' && raw.sourceId ? { sourceId: raw.sourceId } : {}), presets,
49
- patrolIntervalSeconds: typeof raw.patrolIntervalSeconds === 'number' && Number.isInteger(raw.patrolIntervalSeconds) &&
50
- raw.patrolIntervalSeconds >= 5 && raw.patrolIntervalSeconds <= 300 ? raw.patrolIntervalSeconds : 15,
51
- ...(typeof defaultPreset === 'number' ? { defaultPreset } : {}),
52
- tracking: { person: raw.tracking.person, animal: raw.tracking.animal, vehicle: raw.tracking.vehicle } };
53
- }
54
- return { schemaVersion: 1, cameras };
55
- }
56
- export class AccessoryConfigStore {
57
- store;
58
- constructor(root) {
59
- this.store = new AtomicJsonStore(join(root, 'accessories', 'config.json'), () => ({ schemaVersion: 1, cameras: {} }), decode);
60
- }
61
- async get(cameraId) {
62
- const value = (await this.store.read()).cameras[cameraId];
63
- return structuredClone(value ?? initialCamera());
64
- }
65
- async update(cameraId, change) {
66
- if (!cameraId.trim())
67
- throw new Error('Camera ID required');
68
- const state = await this.store.update(current => {
69
- const previous = current.cameras[cameraId] ?? initialCamera();
70
- const updated = change(structuredClone(previous));
71
- return { schemaVersion: 1, cameras: { ...current.cameras, [cameraId]: updated } };
72
- });
73
- return structuredClone(state.cameras[cameraId]);
74
- }
75
- async exportEnabled() {
76
- const state = await this.store.read();
77
- return Object.entries(state.cameras).filter(([, config]) => config.exportEnabled).map(([cameraId]) => cameraId);
78
- }
79
- }
@@ -1,125 +0,0 @@
1
- import type { CameraUiAdapter } from '../camera-ui/CameraUiAdapter.ts';
2
- import type { IdentityStore } from '../identity/IdentityStore.ts';
3
- import type { NativeVideoEngine } from '../media/NativeVideoEngine.ts';
4
- import type { Diagnostics } from '../diagnostics/Diagnostics.ts';
5
- import type { InspectableHapAdapter } from '../hap/HapAdapter.ts';
6
- import { AccessoryConfigStore, type HomeKitVideoMode } from './AccessoryConfigStore.ts';
7
- import { type H264AudioRuntime } from '../h264/AudioRuntime.ts';
8
- export interface AccessoryView {
9
- cameraId: string;
10
- name: string;
11
- published: boolean;
12
- paired: boolean;
13
- sourceId?: string;
14
- videoCodec?: string;
15
- width?: number;
16
- height?: number;
17
- processing: 'UNKNOWN_NOT_VERIFIED';
18
- audio: 'H264_NORMALIZED_AUDIO_UNVERIFIED' | 'PCMA_8KHZ_ADVERTISED_UNVERIFIED' | 'OPUS_48KHZ_20MS_FROM_PCMA_8KHZ_UNVERIFIED' | 'OPUS_48KHZ_OR_AAC_ELD_24KHZ_20MS_FROM_PCMA_8KHZ_UNVERIFIED';
19
- entities: Array<{
20
- id: string;
21
- type: string;
22
- name: string;
23
- capabilities: string[];
24
- }>;
25
- ptz?: {
26
- available: boolean;
27
- enabled: boolean;
28
- patrolEnabled: boolean;
29
- capabilities: string[];
30
- nativePresets?: string[];
31
- positions: Array<({
32
- name: string;
33
- position: {
34
- pan: number;
35
- tilt: number;
36
- zoom: number;
37
- };
38
- includeInPatrol: boolean;
39
- } | null)>;
40
- defaultPositionSlot?: number;
41
- patrolIntervalSeconds: number;
42
- position?: {
43
- pan: number;
44
- tilt: number;
45
- zoom: number;
46
- };
47
- };
48
- error?: string;
49
- }
50
- export interface PairingView {
51
- setupUri: string;
52
- manualCode: string;
53
- paired: false;
54
- }
55
- export declare function brandedHomeKitSetupQr(setupUri: string, manualCode?: string, accessoryName?: string): Promise<string>;
56
- export declare function brandedHomeKitPlaceholderQr(statusBadge: string, lines: string[], footerBadge?: string, accessoryName?: string, variant?: 'info' | 'success' | 'warn'): string;
57
- export declare function formatHomeKitPin(value: number): string;
58
- /** Publishes one independent classic HAP camera accessory for an explicitly selected Camera.UI camera. */
59
- export declare class CameraAccessoryManager {
60
- private readonly host;
61
- private readonly hapAdapter;
62
- private readonly identities;
63
- private readonly video;
64
- private readonly diagnostics;
65
- private readonly storagePath;
66
- private readonly h264AudioRuntime;
67
- readonly config: AccessoryConfigStore;
68
- private readonly live;
69
- private readonly statuses;
70
- private readonly serial;
71
- private closed;
72
- private readonly patrolJobs;
73
- private readonly pendingPositionMoves;
74
- private readonly stoppingPtz;
75
- private readonly ptzStateListeners;
76
- constructor(host: CameraUiAdapter, hapAdapter: InspectableHapAdapter, identities: IdentityStore, video: NativeVideoEngine, diagnostics: Diagnostics, storagePath: string, h264AudioRuntime?: () => Promise<H264AudioRuntime>);
77
- start(): Promise<void>;
78
- cameraAvailable(cameraId: string): Promise<void>;
79
- cameraUnavailable(cameraId: string): Promise<void>;
80
- sensorsChanged(): Promise<void>;
81
- onPtzPatrolStateChanged(listener: (cameraId: string, enabled: boolean) => void): () => void;
82
- enable(cameraId: string, sourceId: string, videoMode?: HomeKitVideoMode): Promise<void>;
83
- disable(cameraId: string): Promise<void>;
84
- /** Clears this accessory's local HAP pairing records. The Home app may also require removal on the iPhone. */
85
- unlink(cameraId: string): Promise<void>;
86
- ptzInfo(cameraId: string): Promise<AccessoryView['ptz']>;
87
- setPtzEnabled(cameraId: string, enabled: boolean): Promise<void>;
88
- setPtzPatrolEnabled(cameraId: string, enabled: boolean): Promise<void>;
89
- savePtzPreset(cameraId: string, slot: number, name: string): Promise<void>;
90
- setDefaultPtzPreset(cameraId: string, slot: number): Promise<void>;
91
- setPtzPresetIncludedInPatrol(cameraId: string, slot: number, included: boolean): Promise<void>;
92
- deletePtzPreset(cameraId: string, slot: number): Promise<void>;
93
- movePtzRelative(cameraId: string, panDelta: number, tiltDelta: number, zoomDelta: number): Promise<void>;
94
- jogPtz(cameraId: string, pan: number, tilt: number, zoom: number): Promise<void>;
95
- stopPtz(cameraId: string): Promise<void>;
96
- moveToPtzPreset(cameraId: string, slot: number): Promise<void>;
97
- moveToDefaultPtzPreset(cameraId: string): Promise<void>;
98
- pairing(cameraId: string): Promise<PairingView | undefined>;
99
- pairingQr(cameraId: string): Promise<string>;
100
- snapshot(): Promise<AccessoryView[]>;
101
- close(): Promise<void>;
102
- private publish;
103
- private measuredSecureVideoTiers;
104
- private updateMotionState;
105
- private bindMotion;
106
- private bindCameraEntities;
107
- private entityView;
108
- private storedPairingState;
109
- private rotatePin;
110
- private unpublish;
111
- private disposeLive;
112
- private refreshStatus;
113
- private findPtz;
114
- private presetNames;
115
- private schedulePatrol;
116
- private advancePatrol;
117
- private failPatrol;
118
- private clearPatrol;
119
- private requirePtz;
120
- private moveToSavedPosition;
121
- private stopPtzMovement;
122
- private validPosition;
123
- private runtime;
124
- private queue;
125
- }