@camstack/addon-admin-ui 1.2.418 → 1.2.420

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 (111) hide show
  1. package/dist/assets/{AddonAssetIcon-C62yJZFm.js → AddonAssetIcon-CUwwTa-R.js} +1 -1
  2. package/dist/assets/{Addons-VQS109cZ.js → Addons-BxDL_z8K.js} +1 -1
  3. package/dist/assets/{AdminPage-BEqLIsOo.js → AdminPage-CeuyYsCA.js} +1 -1
  4. package/dist/assets/{AdminSectionedPage-CP474cGo.js → AdminSectionedPage-DTUh9Cod.js} +1 -1
  5. package/dist/assets/{AiProfiles-u256UZct.js → AiProfiles-y6zIS3pT.js} +1 -1
  6. package/dist/assets/{BrokerForm-DUkw19ji.js → BrokerForm-_lvmLM2q.js} +1 -1
  7. package/dist/assets/{Build-Brgeliww.js → Build-D1UFnKKy.js} +1 -1
  8. package/dist/assets/{Calendars-BMPzJO5T.js → Calendars-DIf4uwcB.js} +1 -1
  9. package/dist/assets/{Cluster-BP84zI8m.js → Cluster-CDw7Cr8z.js} +1 -1
  10. package/dist/assets/{ClusterStepModel-DSV_DDrS.js → ClusterStepModel-zcaZRIvK.js} +1 -1
  11. package/dist/assets/{CompositionEditor-DCgWv0b9.js → CompositionEditor-BWpcmpg6.js} +1 -1
  12. package/dist/assets/{CompositionEditorPage-DQRfGqD9.js → CompositionEditorPage-CDMHjuJR.js} +1 -1
  13. package/dist/assets/{Data-TTszkqiw.js → Data-DYDabIHg.js} +1 -1
  14. package/dist/assets/{DeviceDetail-CPVXc0Fg.js → DeviceDetail-GGBbMdyL.js} +1 -1
  15. package/dist/assets/{DeviceDoActionFields-BlMeNa6S.js → DeviceDoActionFields-CRdtYlvP.js} +1 -1
  16. package/dist/assets/{Devices-Ba_o53OS.js → Devices-CyiSENRc.js} +1 -1
  17. package/dist/assets/{EmbedPlayerPage-DyvatXBm.js → EmbedPlayerPage-CB66n6Ce.js} +1 -1
  18. package/dist/assets/{Identity-Bi5h3d3K.js → Identity-C7nTQ5HW.js} +1 -1
  19. package/dist/assets/{IntegrationDetail-vZ_Lj86F.js → IntegrationDetail-C7V2Lw2t.js} +1 -1
  20. package/dist/assets/{IntegrationHub-COkGQeyK.js → IntegrationHub-I34k6eMx.js} +1 -1
  21. package/dist/assets/{Integrations-D9x4MZdn.js → Integrations-Btt92q19.js} +1 -1
  22. package/dist/assets/{Integrations-CxF_Vsv7.js → Integrations-DtRziEii.js} +1 -1
  23. package/dist/assets/{Library-DyV2ZDM-.js → Library-CmIVJCQ-.js} +1 -1
  24. package/dist/assets/{Locations-CKf9yfhF.js → Locations-CMXlnF3m.js} +1 -1
  25. package/dist/assets/{Logs-0kTIclt1.js → Logs-BzzOnW8m.js} +1 -1
  26. package/dist/assets/{MotionZonesSettings-DXSMGb_y.js → MotionZonesSettings-BAPe5lDr.js} +1 -1
  27. package/dist/assets/{MyAccess-CwmClt12.js → MyAccess-DsKtQazv.js} +1 -1
  28. package/dist/assets/{Network-DGIx_W_h.js → Network-B8KllZ1y.js} +1 -1
  29. package/dist/assets/{NodeAddonsSettingsPanel-C_CcgSpF.js → NodeAddonsSettingsPanel-B69iZTJL.js} +1 -1
  30. package/dist/assets/{Notifications-GsY_0ici.js → Notifications-3e9mrTSh.js} +1 -1
  31. package/dist/assets/{PrivacyMaskSettings-C_Lloo6m.js → PrivacyMaskSettings-3MxMW9V1.js} +1 -1
  32. package/dist/assets/{Recordings-DwSSrKQD.js → Recordings-C1GA_K_d.js} +1 -1
  33. package/dist/assets/{ScanNetworkModal-Dq_ea9P_.js → ScanNetworkModal-CZD2XMwr.js} +1 -1
  34. package/dist/assets/{SceneMonitorEditor-C_Ar3-bY.js → SceneMonitorEditor-BTWYSCY4.js} +1 -1
  35. package/dist/assets/{SessionsList-DvSyxvxt.js → SessionsList-BsZ4138t.js} +1 -1
  36. package/dist/assets/{Showroom-BA-v1np-.js → Showroom-B84zCph9.js} +1 -1
  37. package/dist/assets/{System-CwL0iIg6.js → System-Bs16FRnw.js} +1 -1
  38. package/dist/assets/{Terminal-D6KTXuAz.js → Terminal-Dtpd7dA2.js} +1 -1
  39. package/dist/assets/{Viewer-DkQKIrd8.js → Viewer-5St3Etot.js} +1 -1
  40. package/dist/assets/{_virtual_mf-localSharedImportMap___mfe_internal__admin_ui_host-CCPefcbR.js → _virtual_mf-localSharedImportMap___mfe_internal__admin_ui_host-fgk3R2YA.js} +1 -1
  41. package/dist/assets/{addon-icons-context-DjDIqnLX.js → addon-icons-context-DGSjQzW5.js} +1 -1
  42. package/dist/assets/{archive-CPl948Xw.js → archive-4K83r_1n.js} +1 -1
  43. package/dist/assets/{authed-media-BUdhZkQX.js → authed-media-wMr1ui8w.js} +1 -1
  44. package/dist/assets/{bell-off-KhA1gUdX.js → bell-off-BHt33UBf.js} +1 -1
  45. package/dist/assets/{boxes-BJT46V9Z.js → boxes-BZgI7Qpt.js} +1 -1
  46. package/dist/assets/circle-slash-Blsoe4DV.js +1 -0
  47. package/dist/assets/client-CKGZv6zJ.js +358 -0
  48. package/dist/assets/{cloud-upload-ssmNKdHW.js → cloud-upload-5ZRXO4G8.js} +1 -1
  49. package/dist/assets/crop-gRMkMnnt.js +1 -0
  50. package/dist/assets/{device-integration-icon-DFhPmm5v.js → device-integration-icon-DNbEWHFM.js} +1 -1
  51. package/dist/assets/device-picker-model-y0YT4n_j.js +1 -0
  52. package/dist/assets/dist-B51fr1vo.js +358 -0
  53. package/dist/assets/{dist-CCZlk2eE.js → dist-DtKcnSMJ.js} +1 -1
  54. package/dist/assets/{eraser-DRyBUKNh.js → eraser-Bgk8Dzm-.js} +1 -1
  55. package/dist/assets/{file-up-wQjYsgvp.js → file-up-BDHV-8n7.js} +1 -1
  56. package/dist/assets/{hard-drive-download-HQYBHoiD.js → hard-drive-download-Cf7DR1zn.js} +1 -1
  57. package/dist/assets/{history-oLd0L9rZ.js → history-BThcfo0X.js} +1 -1
  58. package/dist/assets/{hostInit-D90L9qfj.js → hostInit-BSsVPy9C.js} +1 -1
  59. package/dist/assets/{icons-DuIMQjz-.js → icons-hV-aAVBh.js} +1 -1
  60. package/dist/assets/index-Xr95RVN2.js +4 -0
  61. package/dist/assets/{key-DzVMR4fY.js → key-DKkIyX9P.js} +1 -1
  62. package/dist/assets/{key-round-D1FkABXg.js → key-round-Dzvj04Ko.js} +1 -1
  63. package/dist/assets/{layers-DoFyMFF3.js → layers-D6sO1vTO.js} +1 -1
  64. package/dist/assets/{list-ordered-6N9kB8SV.js → list-ordered-B8fDKjS-.js} +1 -1
  65. package/dist/assets/{location-owned-usage-CbWvLYTm.js → location-owned-usage-DLdsU-mZ.js} +1 -1
  66. package/dist/assets/{log-in-DMf-S1KW.js → log-in-lHSUE2pa.js} +1 -1
  67. package/dist/assets/{memory-stick-DSGFkyDx.js → memory-stick-CttSJTx_.js} +1 -1
  68. package/dist/assets/{message-square-plus-M4i6DeFo.js → message-square-plus-CwcMKafs.js} +1 -1
  69. package/dist/assets/{mf-entry-bootstrap-0-e96294f3.js → mf-entry-bootstrap-0-e96bc771.js} +2 -2
  70. package/dist/assets/{mic-off-Bz-qzGUm.js → mic-off-Ip3w_Vtm.js} +1 -1
  71. package/dist/assets/{monitor-off-CeMF_Mpo.js → monitor-off-BZ83JVg4.js} +1 -1
  72. package/dist/assets/{monitor-smartphone-Xhzlx_89.js → monitor-smartphone-yIys4K1P.js} +1 -1
  73. package/dist/assets/mount-y0YT4n_j.js +1 -0
  74. package/dist/assets/{notification-schedule-field-BEC_PxdH.js → notification-schedule-field-DyI7heJv.js} +1 -1
  75. package/dist/assets/{octagon-alert-Drdzfe0m.js → octagon-alert-B71ohghx.js} +1 -1
  76. package/dist/assets/{player-overlays-CT0Sya8x.js → player-overlays-C20AJTgs.js} +1 -1
  77. package/dist/assets/{recycle-oKcI9-Qf.js → recycle-DhAxCder.js} +1 -1
  78. package/dist/assets/remoteEntry-ClveP_Ct.js +1 -0
  79. package/dist/assets/{scan-eye-PgVPskUP.js → scan-eye-BbXV25vz.js} +1 -1
  80. package/dist/assets/{scissors-CmocAATr.js → scissors-WSGBgAVG.js} +1 -1
  81. package/dist/assets/{search-x-DBBZ90V1.js → search-x-CaqrjMNZ.js} +1 -1
  82. package/dist/assets/{send-DrOGIOSA.js → send-B-4ijiWE.js} +1 -1
  83. package/dist/assets/{settings-2-YgshzBDH.js → settings-2-BjwKRpE2.js} +1 -1
  84. package/dist/assets/{speaker-5mQMtqrA.js → speaker-__2EFvIp.js} +1 -1
  85. package/dist/assets/src-Bqr9lpc6.js +67 -0
  86. package/dist/assets/{timer-reset-7vZp4A1n.js → timer-reset-CkaW1pT6.js} +1 -1
  87. package/dist/assets/{ungroup-Cj812Fu5.js → ungroup-CqbpWLek.js} +1 -1
  88. package/dist/assets/{unlink-CH_DjMZS.js → unlink-2_Gor_ZF.js} +1 -1
  89. package/dist/assets/{usb-JbE9Gq0u.js → usb-Dbv88fxf.js} +1 -1
  90. package/dist/assets/{use-scenes-feed-rhcS_kPu.js → use-scenes-feed-BD8OoH8Z.js} +1 -1
  91. package/dist/assets/{use-stationary-objects-HzWVsNGW.js → use-stationary-objects-CaqT07d1.js} +1 -1
  92. package/dist/assets/useEventInvalidation-y0YT4n_j.js +1 -0
  93. package/dist/assets/{useNodeUrlSelection-DF6nhFoG.js → useNodeUrlSelection-DqPmoZO2.js} +1 -1
  94. package/dist/assets/user-round-tDoKxf4s.js +1 -0
  95. package/dist/assets/{user-x-Bwwio4kh.js → user-x-D3HnF7fF.js} +1 -1
  96. package/dist/assets/{video-tqpr2hW0.js → video-Bkjg9omB.js} +1 -1
  97. package/dist/assets/{virtual_mf-REMOTE_ENTRY_ID___mfe_internal__admin_ui_host__remoteEntry-_hash_-TrZv_3YK.js → virtual_mf-REMOTE_ENTRY_ID___mfe_internal__admin_ui_host__remoteEntry-_hash_-Dd8x1dBQ.js} +2 -2
  98. package/dist/index.html +9 -9
  99. package/dist/server/addon.js +385 -3
  100. package/package.json +1 -1
  101. package/dist/assets/circle-slash-BLuQVjBj.js +0 -1
  102. package/dist/assets/client-BuR_k4TQ.js +0 -357
  103. package/dist/assets/crop-CZqa0EdU.js +0 -1
  104. package/dist/assets/device-picker-model-DP3NSKXl.js +0 -1
  105. package/dist/assets/dist-CtWVWsbl.js +0 -357
  106. package/dist/assets/index-BilrpIGQ.js +0 -4
  107. package/dist/assets/mount-DP3NSKXl.js +0 -1
  108. package/dist/assets/remoteEntry-D6CE2qGW.js +0 -1
  109. package/dist/assets/src-BN3mx6i3.js +0 -67
  110. package/dist/assets/useEventInvalidation-DP3NSKXl.js +0 -1
  111. package/dist/assets/user-round-t6VEn5sR.js +0 -1
@@ -5388,7 +5388,7 @@ var ZodIssueCode = {
5388
5388
  var ZodFirstPartyTypeKind;
5389
5389
  ZodFirstPartyTypeKind || (ZodFirstPartyTypeKind = {});
5390
5390
  //#endregion
5391
- //#region ../types/dist/sleep-BBF1iXUi.mjs
5391
+ //#region ../types/dist/sleep-DxJdzHni.mjs
5392
5392
  /**
5393
5393
  * The audio chunk plane's byte format, and the ONE expansion from a coded
5394
5394
  * window to float samples (D455).
@@ -12171,6 +12171,167 @@ var ConvertResultSchema = object({
12171
12171
  files: array(string()).readonly()
12172
12172
  })).readonly()
12173
12173
  });
12174
+ /**
12175
+ * Device certificates (D855) — the wire contract shared by the hub, the admin
12176
+ * UI and the native viewer.
12177
+ *
12178
+ * A device (a phone) generates its OWN P-256 key pair in hardware (Secure
12179
+ * Enclave / Android Keystore / a non-extractable WebCrypto key). The private
12180
+ * key never travels. The hub signs the PUBLIC key into an X.509 leaf under a
12181
+ * dedicated device CA; the device later proves possession of the key by
12182
+ * signing a hub-issued nonce, and the hub answers with the same session a
12183
+ * password login opens.
12184
+ *
12185
+ * Everything on the wire is a small string (a PEM, a base64url signature):
12186
+ * D613 is about bulk bytes, and a certificate is ~600 bytes.
12187
+ */
12188
+ /** Signature algorithm of every device credential: ECDSA, curve P-256, SHA-256. */
12189
+ var DEVICE_CERT_SIGNATURE = "ecdsa-p256-sha256";
12190
+ /** First line of every signed message; a change of format bumps the version. */
12191
+ var DEVICE_SIGNATURE_MESSAGE_VERSION = "camstack-device-cert-v1";
12192
+ _enum([
12193
+ "login",
12194
+ "renew",
12195
+ "revoke"
12196
+ ]);
12197
+ var DevicePlatformSchema = _enum([
12198
+ "ios",
12199
+ "android",
12200
+ "web",
12201
+ "other"
12202
+ ]);
12203
+ var Base64UrlSchema = string().min(1).max(4096).regex(/^[A-Za-z0-9_-]+$/);
12204
+ var PemSchema = string().min(1).max(16384);
12205
+ /**
12206
+ * Why a device-certificate endpoint said no. Distinct from a transport / 5xx
12207
+ * failure: those carry no reason and mean "try again", never "the credential is
12208
+ * dead". The viewer switches on this exhaustively.
12209
+ */
12210
+ var DeviceRefusalReasonSchema = _enum([
12211
+ "revoked",
12212
+ "unknown-credential",
12213
+ "expired",
12214
+ "bad-signature",
12215
+ "nonce-invalid",
12216
+ "rate-limited",
12217
+ "invalid-certificate",
12218
+ "superseded",
12219
+ "user-gone",
12220
+ "unavailable",
12221
+ "code-invalid",
12222
+ "self-enrollment-disabled",
12223
+ "step-up-required",
12224
+ "bad-public-key"
12225
+ ]);
12226
+ var DeviceRefusalSchema = object({
12227
+ ok: literal(false),
12228
+ reason: DeviceRefusalReasonSchema,
12229
+ definitive: boolean(),
12230
+ retryAfterSeconds: number().optional()
12231
+ });
12232
+ object({
12233
+ code: string().min(1).max(256),
12234
+ /** SubjectPublicKeyInfo DER of the device's P-256 public key, base64url. */
12235
+ publicKeySpki: Base64UrlSchema,
12236
+ deviceName: string().min(1).max(80).optional(),
12237
+ platform: DevicePlatformSchema
12238
+ });
12239
+ discriminatedUnion("ok", [object({
12240
+ credentialId: string(),
12241
+ certPem: PemSchema,
12242
+ /** The device CA certificate the leaf chains to. */
12243
+ chainPem: PemSchema,
12244
+ notAfter: number(),
12245
+ user: object({
12246
+ id: string(),
12247
+ username: string()
12248
+ })
12249
+ }).extend({ ok: literal(true) }), DeviceRefusalSchema]);
12250
+ object({
12251
+ /** The single-use step-up proof (`auth.deviceEnrollProofFrom…`). */
12252
+ proof: string().min(1).max(512),
12253
+ publicKeySpki: Base64UrlSchema,
12254
+ deviceName: string().min(1).max(80),
12255
+ platform: DevicePlatformSchema
12256
+ });
12257
+ object({
12258
+ proof: string(),
12259
+ expiresAt: number()
12260
+ });
12261
+ discriminatedUnion("ok", [object({
12262
+ nonce: string(),
12263
+ /** The origin to put in the signed message. The app compares it to the hub it dialled. */
12264
+ origin: string(),
12265
+ expiresAt: number(),
12266
+ signature: literal(DEVICE_CERT_SIGNATURE)
12267
+ }).extend({ ok: literal(true) }), DeviceRefusalSchema]);
12268
+ object({
12269
+ certPem: PemSchema,
12270
+ nonce: string().min(1).max(256),
12271
+ /** ECDSA P-256 SHA-256 over {@link buildDeviceSignatureMessage}; raw r||s or DER, base64url. */
12272
+ signature: Base64UrlSchema
12273
+ });
12274
+ discriminatedUnion("ok", [object({
12275
+ credentialId: string(),
12276
+ certPem: PemSchema,
12277
+ chainPem: PemSchema,
12278
+ notAfter: number()
12279
+ }).extend({ ok: literal(true) }), DeviceRefusalSchema]);
12280
+ discriminatedUnion("ok", [object({
12281
+ ok: literal(true),
12282
+ credentialId: string(),
12283
+ sessionsEnded: number().int()
12284
+ }), DeviceRefusalSchema]);
12285
+ var DeviceCredentialStatusSchema = _enum([
12286
+ "active",
12287
+ "expired",
12288
+ "revoked"
12289
+ ]);
12290
+ var DeviceCredentialSchema = object({
12291
+ id: string(),
12292
+ userId: string(),
12293
+ username: string().nullable(),
12294
+ deviceName: string(),
12295
+ platform: DevicePlatformSchema,
12296
+ enrolledVia: _enum(["qr", "self"]),
12297
+ /** SHA-256 of the leaf certificate DER, colon-hex. */
12298
+ fingerprint: string(),
12299
+ issuedAt: number(),
12300
+ expiresAt: number(),
12301
+ lastUsedAt: number().nullable(),
12302
+ lastUsedFrom: string().nullable(),
12303
+ revokedAt: number().nullable(),
12304
+ /** `admin:<userId>` | `user:<userId>` | `device` | `user-deleted`. */
12305
+ revokedBy: string().nullable(),
12306
+ status: DeviceCredentialStatusSchema
12307
+ });
12308
+ var StartEnrollmentOutputSchema = object({
12309
+ /** Shown once; only its hash is kept. */
12310
+ code: string(),
12311
+ expiresAt: number(),
12312
+ /** `camstack://enroll?hub=…&code=…` — what the QR encodes. */
12313
+ enrollUrl: string(),
12314
+ /** The hub origin in the link, or `null` when the hub could not name one (the link then has no `hub`). */
12315
+ hubOrigin: string().nullable(),
12316
+ /** Every origin the apps may try (role `appConnections`). */
12317
+ hubOrigins: array(string())
12318
+ });
12319
+ object({
12320
+ kind: literal("device-certificate"),
12321
+ id: literal("device-certificate"),
12322
+ label: string(),
12323
+ stage: literal("primary"),
12324
+ /** tRPC paths under the hub's `auth` router, so a client names no literal. */
12325
+ challengePath: literal("auth.getDeviceChallenge"),
12326
+ revokePath: literal("auth.revokeOwnDeviceCertificate"),
12327
+ enrollSelfPath: literal("auth.enrollSelf"),
12328
+ loginPath: literal("auth.loginWithDeviceCertificate"),
12329
+ renewPath: literal("auth.renewDeviceCertificate"),
12330
+ signature: literal(DEVICE_CERT_SIGNATURE),
12331
+ messageVersion: literal(DEVICE_SIGNATURE_MESSAGE_VERSION),
12332
+ /** Which clients can execute it: a native app silently, a browser with a non-extractable WebCrypto key. */
12333
+ clients: array(_enum(["native", "web"]))
12334
+ });
12174
12335
  var ExpressionBindingSourceSchema = union([
12175
12336
  object({
12176
12337
  kind: literal("field").optional(),
@@ -15726,6 +15887,136 @@ method(object({
15726
15887
  kind: "mutation",
15727
15888
  auth: "admin"
15728
15889
  }), method(object({}), array(KeychainSecretMetaSchema).readonly(), { auth: "admin" }), method(object({}), KeychainStateSchema, { auth: "admin" });
15890
+ var DeviceCaStatusSchema = discriminatedUnion("state", [
15891
+ object({ state: literal("absent") }),
15892
+ object({
15893
+ state: literal("ready"),
15894
+ subject: string(),
15895
+ fingerprintSha256: string(),
15896
+ validTo: string()
15897
+ }),
15898
+ object({
15899
+ state: literal("unavailable"),
15900
+ reason: string()
15901
+ })
15902
+ ]);
15903
+ var DeviceCertificateSettingsSchema = object({ selfEnrollment: _enum(["allowed", "disabled"]) });
15904
+ method(object({
15905
+ userId: string().min(1).optional(),
15906
+ includeRevoked: boolean().default(false)
15907
+ }), array(DeviceCredentialSchema).readonly(), { auth: "admin" }), method(object({
15908
+ userId: string().min(1),
15909
+ deviceName: string().min(1).max(80)
15910
+ }), StartEnrollmentOutputSchema, {
15911
+ kind: "mutation",
15912
+ auth: "admin",
15913
+ caller: "required"
15914
+ }), method(object({ id: string().min(1) }), object({
15915
+ revoked: boolean(),
15916
+ sessionsEnded: number().int(),
15917
+ status: DeviceCredentialStatusSchema
15918
+ }), {
15919
+ kind: "mutation",
15920
+ auth: "admin",
15921
+ caller: "required"
15922
+ }), method(object({}), DeviceCertificateSettingsSchema, { auth: "admin" }), method(DeviceCertificateSettingsSchema, DeviceCertificateSettingsSchema, {
15923
+ kind: "mutation",
15924
+ auth: "admin"
15925
+ }), method(object({ id: string().min(1) }), object({ result: _enum([
15926
+ "deleted",
15927
+ "live",
15928
+ "unknown"
15929
+ ]) }), {
15930
+ kind: "mutation",
15931
+ auth: "admin",
15932
+ caller: "required"
15933
+ }), method(object({}), DeviceCaStatusSchema, { auth: "admin" }), method(object({
15934
+ id: string().min(1),
15935
+ deviceName: string().min(1).max(80)
15936
+ }), object({ renamed: boolean() }), {
15937
+ kind: "mutation",
15938
+ auth: "admin"
15939
+ });
15940
+ /**
15941
+ * `node-certificates` - what a node holds and the two renewals the hub drives
15942
+ * (D856): the node's MESH leaf (mutual TLS to the hub) and its HTTPS leaf (issued
15943
+ * from the hub's local CA so a device that trusts the hub root trusts the node).
15944
+ *
15945
+ * Provided by the AGENT RUNTIME (the synthetic `agent-runtime` addon id, like
15946
+ * `server-management`): the hub reaches it through the ordinary node-pinned
15947
+ * capability call - no new Moleculer action. The hub's own certificates are
15948
+ * handled in-process by the hub (`certificates` router), so this cap has no hub
15949
+ * provider.
15950
+ *
15951
+ * No private key ever crosses the mesh: the node generates its key pair, sends a
15952
+ * CSR, and the hub returns only the signed certificate.
15953
+ */
15954
+ var MeshLeafInfoSchema = object({
15955
+ cn: string(),
15956
+ serial: string(),
15957
+ fingerprintSha256: string(),
15958
+ notBefore: number(),
15959
+ notAfter: number()
15960
+ });
15961
+ var HttpsLeafInfoSchema = object({
15962
+ fingerprintSha256: string(),
15963
+ issuer: string(),
15964
+ sans: array(string()),
15965
+ notBefore: number(),
15966
+ notAfter: number()
15967
+ });
15968
+ var NodeHttpsStateSchema = discriminatedUnion("state", [object({
15969
+ state: literal("served"),
15970
+ leaf: HttpsLeafInfoSchema
15971
+ }), object({
15972
+ state: literal("not-issued"),
15973
+ reason: string()
15974
+ })]);
15975
+ method(object({}), object({
15976
+ nodeId: string(),
15977
+ mesh: MeshLeafInfoSchema.nullable(),
15978
+ https: NodeHttpsStateSchema
15979
+ }), { auth: "admin" }), method(object({}), object({ csrPem: string() }), {
15980
+ kind: "mutation",
15981
+ auth: "admin"
15982
+ }), method(object({
15983
+ certPem: string().min(1),
15984
+ caCertPem: string().min(1),
15985
+ confirmWithinMs: number().int().min(1e4).max(6e5)
15986
+ }), object({
15987
+ fingerprintSha256: string(),
15988
+ serial: string()
15989
+ }), {
15990
+ kind: "mutation",
15991
+ auth: "admin"
15992
+ }), method(object({ fingerprintSha256: string() }), object({ confirmed: boolean() }), {
15993
+ kind: "mutation",
15994
+ auth: "admin"
15995
+ }), method(object({}), object({ rolledBack: boolean() }), {
15996
+ kind: "mutation",
15997
+ auth: "admin"
15998
+ }), method(object({}), object({
15999
+ csrPem: string(),
16000
+ hostnames: array(string()),
16001
+ addresses: array(string()),
16002
+ /** SHA-256 of the hub local CA this node pinned at its first install; `null` before one. */
16003
+ pinnedCaFingerprintSha256: string().nullable()
16004
+ }), {
16005
+ kind: "mutation",
16006
+ auth: "admin"
16007
+ }), method(object({
16008
+ certPem: string().min(1),
16009
+ caCertPem: string().min(1),
16010
+ /**
16011
+ * The hub signals that its local CA was rotated (D227) and this leaf chains to the NEW
16012
+ * one. Only the hub, over the authenticated mesh, can say so; a leaf with a different CA
16013
+ * and no signal is refused.
16014
+ */
16015
+ caRotation: boolean().optional()
16016
+ }), HttpsLeafInfoSchema, {
16017
+ kind: "mutation",
16018
+ auth: "admin"
16019
+ });
15729
16020
  var KeychainKeySourceSchema = object({
15730
16021
  kind: _enum([
15731
16022
  "config-file",
@@ -54422,7 +54713,7 @@ var MotionOnMotionChangedDataSchema = object({
54422
54713
  /** Who started it (D672). Absent = the camera itself. Only `onboard` carries `sensor`. */
54423
54714
  triggeredBy: MotionTriggeredBySchema.optional()
54424
54715
  });
54425
- DeviceType.Camera, DeviceType.Sensor, method(object({ deviceId: number() }), boolean());
54716
+ DeviceType.Camera, DeviceType.Sensor, method(object({ deviceId: number() }), boolean()), DeviceType.Camera;
54426
54717
  object({
54427
54718
  enabled: boolean(),
54428
54719
  /** Ms epoch of the last operator-driven change. */
@@ -61629,6 +61920,54 @@ Object.freeze({
61629
61920
  addonId: null,
61630
61921
  access: "create"
61631
61922
  },
61923
+ "deviceCredentials.deleteDeviceCredential": {
61924
+ capName: "device-credentials",
61925
+ capScope: "system",
61926
+ addonId: null,
61927
+ access: "delete"
61928
+ },
61929
+ "deviceCredentials.getDeviceCaStatus": {
61930
+ capName: "device-credentials",
61931
+ capScope: "system",
61932
+ addonId: null,
61933
+ access: "view"
61934
+ },
61935
+ "deviceCredentials.getDeviceCertificateSettings": {
61936
+ capName: "device-credentials",
61937
+ capScope: "system",
61938
+ addonId: null,
61939
+ access: "view"
61940
+ },
61941
+ "deviceCredentials.listDeviceCredentials": {
61942
+ capName: "device-credentials",
61943
+ capScope: "system",
61944
+ addonId: null,
61945
+ access: "view"
61946
+ },
61947
+ "deviceCredentials.renameDeviceCredential": {
61948
+ capName: "device-credentials",
61949
+ capScope: "system",
61950
+ addonId: null,
61951
+ access: "create"
61952
+ },
61953
+ "deviceCredentials.revokeDeviceCredential": {
61954
+ capName: "device-credentials",
61955
+ capScope: "system",
61956
+ addonId: null,
61957
+ access: "delete"
61958
+ },
61959
+ "deviceCredentials.setDeviceCertificateSettings": {
61960
+ capName: "device-credentials",
61961
+ capScope: "system",
61962
+ addonId: null,
61963
+ access: "create"
61964
+ },
61965
+ "deviceCredentials.startEnrollment": {
61966
+ capName: "device-credentials",
61967
+ capScope: "system",
61968
+ addonId: null,
61969
+ access: "create"
61970
+ },
61632
61971
  "deviceDiscovery.adoptDevice": {
61633
61972
  capName: "device-discovery",
61634
61973
  capScope: "device",
@@ -63789,6 +64128,48 @@ Object.freeze({
63789
64128
  addonId: null,
63790
64129
  access: "create"
63791
64130
  },
64131
+ "nodeCertificates.confirmMeshLeaf": {
64132
+ capName: "node-certificates",
64133
+ capScope: "system",
64134
+ addonId: null,
64135
+ access: "create"
64136
+ },
64137
+ "nodeCertificates.getCertificates": {
64138
+ capName: "node-certificates",
64139
+ capScope: "system",
64140
+ addonId: null,
64141
+ access: "view"
64142
+ },
64143
+ "nodeCertificates.installHttpsCertificate": {
64144
+ capName: "node-certificates",
64145
+ capScope: "system",
64146
+ addonId: null,
64147
+ access: "create"
64148
+ },
64149
+ "nodeCertificates.installMeshLeaf": {
64150
+ capName: "node-certificates",
64151
+ capScope: "system",
64152
+ addonId: null,
64153
+ access: "create"
64154
+ },
64155
+ "nodeCertificates.prepareHttpsCertificate": {
64156
+ capName: "node-certificates",
64157
+ capScope: "system",
64158
+ addonId: null,
64159
+ access: "create"
64160
+ },
64161
+ "nodeCertificates.prepareMeshRenewal": {
64162
+ capName: "node-certificates",
64163
+ capScope: "system",
64164
+ addonId: null,
64165
+ access: "create"
64166
+ },
64167
+ "nodeCertificates.rollbackMeshLeaf": {
64168
+ capName: "node-certificates",
64169
+ capScope: "system",
64170
+ addonId: null,
64171
+ access: "create"
64172
+ },
63792
64173
  "nodes.clusterAddonStatus": {
63793
64174
  capName: "nodes",
63794
64175
  capScope: "system",
@@ -70658,6 +71039,7 @@ Object.freeze({
70658
71039
  "network-access": "ingress",
70659
71040
  "smtp-provider": "email"
70660
71041
  });
71042
+ DeviceType.Camera;
70661
71043
  var G711_SCALE_CORRECTION_DB = {
70662
71044
  PCMU: 20 * Math.log10(4),
70663
71045
  PCMA: 20 * Math.log10(8)
@@ -71742,7 +72124,7 @@ var AdminUIAddon = class extends BaseAddon {
71742
72124
  capability: adminUiCapability,
71743
72125
  provider: {
71744
72126
  getStaticDir: async () => ({ staticDir: resolveAdminUiDistDir() }),
71745
- getVersion: async () => ({ version: "1.2.418" })
72127
+ getVersion: async () => ({ version: "1.2.420" })
71746
72128
  }
71747
72129
  }];
71748
72130
  }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@camstack/addon-admin-ui",
3
- "version": "1.2.418",
3
+ "version": "1.2.420",
4
4
  "private": false,
5
5
  "type": "module",
6
6
  "description": "Admin UI — Vite frontend build and server-side addon",
@@ -1 +0,0 @@
1
- import{$i as e}from"./player-overlays-CT0Sya8x.js";var t=e(`circle-slash`,[[`circle`,{cx:`12`,cy:`12`,r:`10`,key:`1mglay`}],[`line`,{x1:`9`,x2:`15`,y1:`15`,y2:`9`,key:`1dfufj`}]]);export{t};