@camstack/addon-osd-manager 0.1.233 → 0.1.235

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 (18) hide show
  1. package/dist/{MotionZonesSettings-BGTzmty7.mjs → MotionZonesSettings-CXYmJeEj.mjs} +2 -2
  2. package/dist/{PrivacyMaskSettings-wElvVviL.mjs → PrivacyMaskSettings-s1lxaThA.mjs} +4 -4
  3. package/dist/{SceneMonitorEditor-DsYkgb5P.mjs → SceneMonitorEditor-DVTGOyG4.mjs} +3 -3
  4. package/dist/_stub.js +22 -11
  5. package/dist/{_virtual_mf-localSharedImportMap___mfe_internal__addon_osd_manager_page-CoDHKGxB.mjs → _virtual_mf-localSharedImportMap___mfe_internal__addon_osd_manager_page-HPUeQ2rW.mjs} +3 -3
  6. package/dist/_virtual_mf___mfe_internal__addon_osd_manager_page__loadShare___mf_0_camstack_mf_1_types__loadShare__.js-M-4Jyqe4.mjs +26 -0
  7. package/dist/{hostInit-DWuTgdTp.mjs → hostInit-CVNfJUNs.mjs} +2 -2
  8. package/dist/index.js +677 -2
  9. package/dist/index.mjs +677 -2
  10. package/dist/{player-overlays-g5nnMIf3.mjs → player-overlays-Dww91Wz6.mjs} +1 -1
  11. package/dist/remoteEntry.js +1 -1
  12. package/dist/{responsive-BAd3l1Cq.mjs → responsive-Hqunukz5.mjs} +1 -1
  13. package/dist/{scene-monitor-copy-D_UXd-vB.mjs → scene-monitor-copy-Cg3vheyc.mjs} +1 -1
  14. package/dist/{square-CnHXcvE6.mjs → square-DLF3YKUK.mjs} +1 -1
  15. package/dist/{trash-2-Bl0J0QJm.mjs → trash-2-DZZ-mygA.mjs} +1 -1
  16. package/dist/{virtual_mf-REMOTE_ENTRY_ID___mfe_internal__addon_osd_manager_page__remoteEntry_js-Dar1zAug.mjs → virtual_mf-REMOTE_ENTRY_ID___mfe_internal__addon_osd_manager_page__remoteEntry_js-D4ppKOBm.mjs} +1 -1
  17. package/package.json +1 -1
  18. package/dist/_virtual_mf___mfe_internal__addon_osd_manager_page__loadShare___mf_0_camstack_mf_1_types__loadShare__.js-DTIq2p4w.mjs +0 -26
package/dist/index.mjs CHANGED
@@ -5386,7 +5386,7 @@ var ZodIssueCode = {
5386
5386
  var ZodFirstPartyTypeKind;
5387
5387
  ZodFirstPartyTypeKind || (ZodFirstPartyTypeKind = {});
5388
5388
  //#endregion
5389
- //#region ../types/dist/sleep-BBF1iXUi.mjs
5389
+ //#region ../types/dist/sleep--g-h2_c_.mjs
5390
5390
  /**
5391
5391
  * The audio chunk plane's byte format, and the ONE expansion from a coded
5392
5392
  * window to float samples (D455).
@@ -12151,6 +12151,167 @@ var ConvertResultSchema = object({
12151
12151
  files: array(string()).readonly()
12152
12152
  })).readonly()
12153
12153
  });
12154
+ /**
12155
+ * Device certificates (D855) — the wire contract shared by the hub, the admin
12156
+ * UI and the native viewer.
12157
+ *
12158
+ * A device (a phone) generates its OWN P-256 key pair in hardware (Secure
12159
+ * Enclave / Android Keystore / a non-extractable WebCrypto key). The private
12160
+ * key never travels. The hub signs the PUBLIC key into an X.509 leaf under a
12161
+ * dedicated device CA; the device later proves possession of the key by
12162
+ * signing a hub-issued nonce, and the hub answers with the same session a
12163
+ * password login opens.
12164
+ *
12165
+ * Everything on the wire is a small string (a PEM, a base64url signature):
12166
+ * D613 is about bulk bytes, and a certificate is ~600 bytes.
12167
+ */
12168
+ /** Signature algorithm of every device credential: ECDSA, curve P-256, SHA-256. */
12169
+ var DEVICE_CERT_SIGNATURE = "ecdsa-p256-sha256";
12170
+ /** First line of every signed message; a change of format bumps the version. */
12171
+ var DEVICE_SIGNATURE_MESSAGE_VERSION = "camstack-device-cert-v1";
12172
+ _enum([
12173
+ "login",
12174
+ "renew",
12175
+ "revoke"
12176
+ ]);
12177
+ var DevicePlatformSchema = _enum([
12178
+ "ios",
12179
+ "android",
12180
+ "web",
12181
+ "other"
12182
+ ]);
12183
+ var Base64UrlSchema = string().min(1).max(4096).regex(/^[A-Za-z0-9_-]+$/);
12184
+ var PemSchema = string().min(1).max(16384);
12185
+ /**
12186
+ * Why a device-certificate endpoint said no. Distinct from a transport / 5xx
12187
+ * failure: those carry no reason and mean "try again", never "the credential is
12188
+ * dead". The viewer switches on this exhaustively.
12189
+ */
12190
+ var DeviceRefusalReasonSchema = _enum([
12191
+ "revoked",
12192
+ "unknown-credential",
12193
+ "expired",
12194
+ "bad-signature",
12195
+ "nonce-invalid",
12196
+ "rate-limited",
12197
+ "invalid-certificate",
12198
+ "superseded",
12199
+ "user-gone",
12200
+ "unavailable",
12201
+ "code-invalid",
12202
+ "self-enrollment-disabled",
12203
+ "step-up-required",
12204
+ "bad-public-key"
12205
+ ]);
12206
+ var DeviceRefusalSchema = object({
12207
+ ok: literal(false),
12208
+ reason: DeviceRefusalReasonSchema,
12209
+ definitive: boolean(),
12210
+ retryAfterSeconds: number().optional()
12211
+ });
12212
+ object({
12213
+ code: string().min(1).max(256),
12214
+ /** SubjectPublicKeyInfo DER of the device's P-256 public key, base64url. */
12215
+ publicKeySpki: Base64UrlSchema,
12216
+ deviceName: string().min(1).max(80).optional(),
12217
+ platform: DevicePlatformSchema
12218
+ });
12219
+ discriminatedUnion("ok", [object({
12220
+ credentialId: string(),
12221
+ certPem: PemSchema,
12222
+ /** The device CA certificate the leaf chains to. */
12223
+ chainPem: PemSchema,
12224
+ notAfter: number(),
12225
+ user: object({
12226
+ id: string(),
12227
+ username: string()
12228
+ })
12229
+ }).extend({ ok: literal(true) }), DeviceRefusalSchema]);
12230
+ object({
12231
+ /** The single-use step-up proof (`auth.deviceEnrollProofFrom…`). */
12232
+ proof: string().min(1).max(512),
12233
+ publicKeySpki: Base64UrlSchema,
12234
+ deviceName: string().min(1).max(80),
12235
+ platform: DevicePlatformSchema
12236
+ });
12237
+ object({
12238
+ proof: string(),
12239
+ expiresAt: number()
12240
+ });
12241
+ discriminatedUnion("ok", [object({
12242
+ nonce: string(),
12243
+ /** The origin to put in the signed message. The app compares it to the hub it dialled. */
12244
+ origin: string(),
12245
+ expiresAt: number(),
12246
+ signature: literal(DEVICE_CERT_SIGNATURE)
12247
+ }).extend({ ok: literal(true) }), DeviceRefusalSchema]);
12248
+ object({
12249
+ certPem: PemSchema,
12250
+ nonce: string().min(1).max(256),
12251
+ /** ECDSA P-256 SHA-256 over {@link buildDeviceSignatureMessage}; raw r||s or DER, base64url. */
12252
+ signature: Base64UrlSchema
12253
+ });
12254
+ discriminatedUnion("ok", [object({
12255
+ credentialId: string(),
12256
+ certPem: PemSchema,
12257
+ chainPem: PemSchema,
12258
+ notAfter: number()
12259
+ }).extend({ ok: literal(true) }), DeviceRefusalSchema]);
12260
+ discriminatedUnion("ok", [object({
12261
+ ok: literal(true),
12262
+ credentialId: string(),
12263
+ sessionsEnded: number().int()
12264
+ }), DeviceRefusalSchema]);
12265
+ var DeviceCredentialStatusSchema = _enum([
12266
+ "active",
12267
+ "expired",
12268
+ "revoked"
12269
+ ]);
12270
+ var DeviceCredentialSchema = object({
12271
+ id: string(),
12272
+ userId: string(),
12273
+ username: string().nullable(),
12274
+ deviceName: string(),
12275
+ platform: DevicePlatformSchema,
12276
+ enrolledVia: _enum(["qr", "self"]),
12277
+ /** SHA-256 of the leaf certificate DER, colon-hex. */
12278
+ fingerprint: string(),
12279
+ issuedAt: number(),
12280
+ expiresAt: number(),
12281
+ lastUsedAt: number().nullable(),
12282
+ lastUsedFrom: string().nullable(),
12283
+ revokedAt: number().nullable(),
12284
+ /** `admin:<userId>` | `user:<userId>` | `device` | `user-deleted`. */
12285
+ revokedBy: string().nullable(),
12286
+ status: DeviceCredentialStatusSchema
12287
+ });
12288
+ var StartEnrollmentOutputSchema = object({
12289
+ /** Shown once; only its hash is kept. */
12290
+ code: string(),
12291
+ expiresAt: number(),
12292
+ /** `camstack://enroll?hub=…&code=…` — what the QR encodes. */
12293
+ enrollUrl: string(),
12294
+ /** The hub origin in the link, or `null` when the hub could not name one (the link then has no `hub`). */
12295
+ hubOrigin: string().nullable(),
12296
+ /** Every origin the apps may try (role `appConnections`). */
12297
+ hubOrigins: array(string())
12298
+ });
12299
+ object({
12300
+ kind: literal("device-certificate"),
12301
+ id: literal("device-certificate"),
12302
+ label: string(),
12303
+ stage: literal("primary"),
12304
+ /** tRPC paths under the hub's `auth` router, so a client names no literal. */
12305
+ challengePath: literal("auth.getDeviceChallenge"),
12306
+ revokePath: literal("auth.revokeOwnDeviceCertificate"),
12307
+ enrollSelfPath: literal("auth.enrollSelf"),
12308
+ loginPath: literal("auth.loginWithDeviceCertificate"),
12309
+ renewPath: literal("auth.renewDeviceCertificate"),
12310
+ signature: literal(DEVICE_CERT_SIGNATURE),
12311
+ messageVersion: literal(DEVICE_SIGNATURE_MESSAGE_VERSION),
12312
+ /** Which clients can execute it: a native app silently, a browser with a non-extractable WebCrypto key. */
12313
+ clients: array(_enum(["native", "web"]))
12314
+ });
12154
12315
  var ExpressionBindingSourceSchema = union([
12155
12316
  object({
12156
12317
  kind: literal("field").optional(),
@@ -15723,6 +15884,338 @@ method(object({
15723
15884
  kind: "mutation",
15724
15885
  auth: "admin"
15725
15886
  }), method(object({}), array(KeychainSecretMetaSchema).readonly(), { auth: "admin" }), method(object({}), KeychainStateSchema, { auth: "admin" });
15887
+ /**
15888
+ * device-history — the ONE mechanism for numeric history (D850).
15889
+ *
15890
+ * A device value is recorded because its capability says so (the `history`
15891
+ * block of a `*.cap.ts`, captured hub-side from `DeviceStateChanged`); any
15892
+ * other series is DECLARED by the addon that produces it and fed with points
15893
+ * (`record`) or closed five-minute buckets (`recordBuckets`). Rollups 5m / 1h /
15894
+ * 1d are computed here and nowhere else. Storage is `history.db` (D851).
15895
+ *
15896
+ * Who the PRODUCER is: `declareSeries`, `record` and `recordBuckets` are owner
15897
+ * checked against the `callerAddonId` the transport stamps into a call that
15898
+ * crossed a process (never in an input schema, so a session cannot supply it).
15899
+ * A call with no stamp is refused `not-owner`. The methods are `admin` so a
15900
+ * non-admin session never reaches them; an addon's `ctx.api` call bypasses the
15901
+ * tier by design.
15902
+ */
15903
+ /** Whose history: a real device, or a cluster node (load, memory). */
15904
+ var DeviceHistorySubjectSchema = discriminatedUnion("kind", [object({
15905
+ kind: literal("device"),
15906
+ deviceId: number().int()
15907
+ }), object({
15908
+ kind: literal("node"),
15909
+ nodeId: string().min(1)
15910
+ })]);
15911
+ var DeviceHistoryKindSchema = _enum([
15912
+ "gauge",
15913
+ "counter",
15914
+ "boolean"
15915
+ ]);
15916
+ var DeviceHistoryResolutionSchema = _enum([
15917
+ "raw",
15918
+ "5m",
15919
+ "1h",
15920
+ "1d"
15921
+ ]);
15922
+ /** Why a producer's point or bucket was not stored. Counted, never silent (D391). */
15923
+ var DeviceHistoryRefusalReasonSchema = _enum([
15924
+ "undeclared",
15925
+ "not-owner",
15926
+ "opted-out",
15927
+ "not-a-real-device",
15928
+ "rate",
15929
+ "ingest-mismatch",
15930
+ "out-of-range"
15931
+ ]);
15932
+ var RefusalSchema = object({
15933
+ key: string(),
15934
+ reason: DeviceHistoryRefusalReasonSchema,
15935
+ count: number().int()
15936
+ });
15937
+ var IngestResultSchema = object({
15938
+ accepted: number().int(),
15939
+ refused: array(RefusalSchema).readonly()
15940
+ });
15941
+ var SeriesInfoSchema = object({
15942
+ key: string(),
15943
+ scope: string(),
15944
+ kind: DeviceHistoryKindSchema,
15945
+ /** `null` is unknown (a `unitFrom` series whose device does not state a unit right now), never a guess. */
15946
+ unit: string().nullable(),
15947
+ displayName: string(),
15948
+ source: _enum(["cap", "addon"]),
15949
+ firstTs: number(),
15950
+ lastTs: number()
15951
+ });
15952
+ var QueryPointSchema = object({
15953
+ /** Raw: the point's time. Rollup: the bucket start. */
15954
+ t: number(),
15955
+ samples: number().int(),
15956
+ /** `sum / samples`. */
15957
+ mean: number().nullable(),
15958
+ /** Time-weighted mean (`tw_sum / tw_ms`); `null` for bucket-ingested series. For a boolean: the fraction of time true. */
15959
+ twMean: number().nullable(),
15960
+ min: number(),
15961
+ max: number(),
15962
+ /** `null` is unknown, never zero (D393). */
15963
+ last: number().nullable()
15964
+ });
15965
+ var QuerySeriesSchema = object({
15966
+ scope: string(),
15967
+ /** The last point STRICTLY BEFORE `from` in the chosen tier, so a step chart can start at the held value. */
15968
+ before: object({
15969
+ t: number(),
15970
+ value: number().nullable()
15971
+ }).nullable(),
15972
+ points: array(QueryPointSchema).readonly()
15973
+ });
15974
+ /** The window part of a query, shared by the device and node forms. */
15975
+ var QueryWindowShape = {
15976
+ key: string(),
15977
+ scope: string().optional(),
15978
+ from: number(),
15979
+ to: number(),
15980
+ resolution: union([DeviceHistoryResolutionSchema, literal("auto")]).default("auto"),
15981
+ maxPoints: number().int().positive().max(5e3).default(1e3)
15982
+ };
15983
+ var QueryResultSchema = object({
15984
+ resolution: DeviceHistoryResolutionSchema,
15985
+ series: array(QuerySeriesSchema).readonly(),
15986
+ truncated: boolean()
15987
+ });
15988
+ var TierStatusSchema = object({
15989
+ tier: DeviceHistoryResolutionSchema,
15990
+ /** `null` until the first background count answered. */
15991
+ rows: number().int().nullable(),
15992
+ /** `rows` times a fixed per-row estimate — approximate, labelled so. */
15993
+ approxBytes: number().nullable(),
15994
+ countedAt: number().nullable()
15995
+ });
15996
+ /** Operator/diagnostic view: rows per tier, last runs, refusals and drops since boot. */
15997
+ var DeviceHistoryStatusSchema = object({
15998
+ startedAt: number(),
15999
+ /** The store is declared, series loaded and the first reconcile has answered. */
16000
+ ready: boolean(),
16001
+ series: number().int(),
16002
+ metrics: number().int(),
16003
+ optedOutDevices: number().int(),
16004
+ tiers: array(TierStatusSchema).readonly(),
16005
+ capture: object({
16006
+ eventsSeen: number().int(),
16007
+ pointsEmitted: number().int(),
16008
+ pointsWritten: number().int(),
16009
+ pointsDropped: number().int(),
16010
+ bufferDepth: number().int(),
16011
+ trailingEmitted: number().int(),
16012
+ reconciledPoints: number().int(),
16013
+ reconcileRuns: number().int(),
16014
+ reconcileFailures: number().int(),
16015
+ lastReconcileAt: number().nullable(),
16016
+ lastFlushAt: number().nullable(),
16017
+ flushFailures: number().int(),
16018
+ skipped: record(string(), number().int())
16019
+ }),
16020
+ ingest: object({
16021
+ accepted: number().int(),
16022
+ refused: record(string(), number().int())
16023
+ }),
16024
+ rollup: object({
16025
+ last5mAt: number().nullable(),
16026
+ last1hAt: number().nullable(),
16027
+ last1dAt: number().nullable(),
16028
+ errors: number().int(),
16029
+ dirty5m: number().int(),
16030
+ dirty1h: number().int(),
16031
+ dirty1d: number().int()
16032
+ }),
16033
+ retention: object({
16034
+ lastRunAt: number().nullable(),
16035
+ deleted: record(string(), number().int()),
16036
+ purgedSeries: number().int()
16037
+ }),
16038
+ directory: object({
16039
+ devices: number().int(),
16040
+ lastRefreshAt: number().nullable()
16041
+ })
16042
+ });
16043
+ method(object({ deviceId: number().int() }), array(SeriesInfoSchema).readonly()), method(object({ nodeId: string().min(1) }), array(SeriesInfoSchema).readonly(), { auth: "admin" }), method(object({
16044
+ deviceId: number().int(),
16045
+ ...QueryWindowShape
16046
+ }), QueryResultSchema), method(object({
16047
+ nodeId: string().min(1),
16048
+ ...QueryWindowShape
16049
+ }), QueryResultSchema, { auth: "admin" }), method(object({
16050
+ name: string().regex(/^[a-z0-9-]+$/),
16051
+ subjectKind: _enum(["device", "node"]),
16052
+ kind: DeviceHistoryKindSchema,
16053
+ unit: string().optional(),
16054
+ displayName: string().min(1),
16055
+ ingest: _enum(["points", "buckets"])
16056
+ }), object({ key: string() }), {
16057
+ kind: "mutation",
16058
+ auth: "admin"
16059
+ }), method(object({ points: array(object({
16060
+ key: string(),
16061
+ subject: DeviceHistorySubjectSchema,
16062
+ scope: string().default(""),
16063
+ ts: number(),
16064
+ value: number()
16065
+ })).max(5e3) }), IngestResultSchema, {
16066
+ kind: "mutation",
16067
+ auth: "admin"
16068
+ }), method(object({ buckets: array(object({
16069
+ key: string(),
16070
+ subject: DeviceHistorySubjectSchema,
16071
+ scope: string().default(""),
16072
+ bucketStart: number(),
16073
+ samples: number().int().positive(),
16074
+ sum: number(),
16075
+ min: number(),
16076
+ max: number(),
16077
+ last: number().nullable(),
16078
+ lastTs: number().nullable()
16079
+ })).max(5e3) }), IngestResultSchema, {
16080
+ kind: "mutation",
16081
+ auth: "admin"
16082
+ }), method(object({ deviceId: number().int() }), object({ enabled: boolean() })), method(object({
16083
+ deviceId: number().int(),
16084
+ enabled: boolean()
16085
+ }), object({ enabled: boolean() }), {
16086
+ kind: "mutation",
16087
+ auth: "admin"
16088
+ }), method(object({}), DeviceHistoryStatusSchema, { auth: "admin" });
16089
+ var DeviceCaStatusSchema = discriminatedUnion("state", [
16090
+ object({ state: literal("absent") }),
16091
+ object({
16092
+ state: literal("ready"),
16093
+ subject: string(),
16094
+ fingerprintSha256: string(),
16095
+ validTo: string()
16096
+ }),
16097
+ object({
16098
+ state: literal("unavailable"),
16099
+ reason: string()
16100
+ })
16101
+ ]);
16102
+ var DeviceCertificateSettingsSchema = object({ selfEnrollment: _enum(["allowed", "disabled"]) });
16103
+ method(object({
16104
+ userId: string().min(1).optional(),
16105
+ includeRevoked: boolean().default(false)
16106
+ }), array(DeviceCredentialSchema).readonly(), { auth: "admin" }), method(object({
16107
+ userId: string().min(1),
16108
+ deviceName: string().min(1).max(80)
16109
+ }), StartEnrollmentOutputSchema, {
16110
+ kind: "mutation",
16111
+ auth: "admin",
16112
+ caller: "required"
16113
+ }), method(object({ id: string().min(1) }), object({
16114
+ revoked: boolean(),
16115
+ sessionsEnded: number().int(),
16116
+ status: DeviceCredentialStatusSchema
16117
+ }), {
16118
+ kind: "mutation",
16119
+ auth: "admin",
16120
+ caller: "required"
16121
+ }), method(object({}), DeviceCertificateSettingsSchema, { auth: "admin" }), method(DeviceCertificateSettingsSchema, DeviceCertificateSettingsSchema, {
16122
+ kind: "mutation",
16123
+ auth: "admin"
16124
+ }), method(object({ id: string().min(1) }), object({ result: _enum([
16125
+ "deleted",
16126
+ "live",
16127
+ "unknown"
16128
+ ]) }), {
16129
+ kind: "mutation",
16130
+ auth: "admin",
16131
+ caller: "required"
16132
+ }), method(object({}), DeviceCaStatusSchema, { auth: "admin" }), method(object({
16133
+ id: string().min(1),
16134
+ deviceName: string().min(1).max(80)
16135
+ }), object({ renamed: boolean() }), {
16136
+ kind: "mutation",
16137
+ auth: "admin"
16138
+ });
16139
+ /**
16140
+ * `node-certificates` - what a node holds and the two renewals the hub drives
16141
+ * (D856): the node's MESH leaf (mutual TLS to the hub) and its HTTPS leaf (issued
16142
+ * from the hub's local CA so a device that trusts the hub root trusts the node).
16143
+ *
16144
+ * Provided by the AGENT RUNTIME (the synthetic `agent-runtime` addon id, like
16145
+ * `server-management`): the hub reaches it through the ordinary node-pinned
16146
+ * capability call - no new Moleculer action. The hub's own certificates are
16147
+ * handled in-process by the hub (`certificates` router), so this cap has no hub
16148
+ * provider.
16149
+ *
16150
+ * No private key ever crosses the mesh: the node generates its key pair, sends a
16151
+ * CSR, and the hub returns only the signed certificate.
16152
+ */
16153
+ var MeshLeafInfoSchema = object({
16154
+ cn: string(),
16155
+ serial: string(),
16156
+ fingerprintSha256: string(),
16157
+ notBefore: number(),
16158
+ notAfter: number()
16159
+ });
16160
+ var HttpsLeafInfoSchema = object({
16161
+ fingerprintSha256: string(),
16162
+ issuer: string(),
16163
+ sans: array(string()),
16164
+ notBefore: number(),
16165
+ notAfter: number()
16166
+ });
16167
+ var NodeHttpsStateSchema = discriminatedUnion("state", [object({
16168
+ state: literal("served"),
16169
+ leaf: HttpsLeafInfoSchema
16170
+ }), object({
16171
+ state: literal("not-issued"),
16172
+ reason: string()
16173
+ })]);
16174
+ method(object({}), object({
16175
+ nodeId: string(),
16176
+ mesh: MeshLeafInfoSchema.nullable(),
16177
+ https: NodeHttpsStateSchema
16178
+ }), { auth: "admin" }), method(object({}), object({ csrPem: string() }), {
16179
+ kind: "mutation",
16180
+ auth: "admin"
16181
+ }), method(object({
16182
+ certPem: string().min(1),
16183
+ caCertPem: string().min(1),
16184
+ confirmWithinMs: number().int().min(1e4).max(6e5)
16185
+ }), object({
16186
+ fingerprintSha256: string(),
16187
+ serial: string()
16188
+ }), {
16189
+ kind: "mutation",
16190
+ auth: "admin"
16191
+ }), method(object({ fingerprintSha256: string() }), object({ confirmed: boolean() }), {
16192
+ kind: "mutation",
16193
+ auth: "admin"
16194
+ }), method(object({}), object({ rolledBack: boolean() }), {
16195
+ kind: "mutation",
16196
+ auth: "admin"
16197
+ }), method(object({}), object({
16198
+ csrPem: string(),
16199
+ hostnames: array(string()),
16200
+ addresses: array(string()),
16201
+ /** SHA-256 of the hub local CA this node pinned at its first install; `null` before one. */
16202
+ pinnedCaFingerprintSha256: string().nullable()
16203
+ }), {
16204
+ kind: "mutation",
16205
+ auth: "admin"
16206
+ }), method(object({
16207
+ certPem: string().min(1),
16208
+ caCertPem: string().min(1),
16209
+ /**
16210
+ * The hub signals that its local CA was rotated (D227) and this leaf chains to the NEW
16211
+ * one. Only the hub, over the authenticated mesh, can say so; a leaf with a different CA
16212
+ * and no signal is refused.
16213
+ */
16214
+ caRotation: boolean().optional()
16215
+ }), HttpsLeafInfoSchema, {
16216
+ kind: "mutation",
16217
+ auth: "admin"
16218
+ });
15726
16219
  var KeychainKeySourceSchema = object({
15727
16220
  kind: _enum([
15728
16221
  "config-file",
@@ -55032,7 +55525,7 @@ var MotionOnMotionChangedDataSchema = object({
55032
55525
  /** Who started it (D672). Absent = the camera itself. Only `onboard` carries `sensor`. */
55033
55526
  triggeredBy: MotionTriggeredBySchema.optional()
55034
55527
  });
55035
- DeviceType.Camera, DeviceType.Sensor, method(object({ deviceId: number() }), boolean());
55528
+ DeviceType.Camera, DeviceType.Sensor, method(object({ deviceId: number() }), boolean()), DeviceType.Camera;
55036
55529
  object({
55037
55530
  enabled: boolean(),
55038
55531
  /** Ms epoch of the last operator-driven change. */
@@ -62617,6 +63110,54 @@ Object.freeze({
62617
63110
  addonId: null,
62618
63111
  access: "create"
62619
63112
  },
63113
+ "deviceCredentials.deleteDeviceCredential": {
63114
+ capName: "device-credentials",
63115
+ capScope: "system",
63116
+ addonId: null,
63117
+ access: "delete"
63118
+ },
63119
+ "deviceCredentials.getDeviceCaStatus": {
63120
+ capName: "device-credentials",
63121
+ capScope: "system",
63122
+ addonId: null,
63123
+ access: "view"
63124
+ },
63125
+ "deviceCredentials.getDeviceCertificateSettings": {
63126
+ capName: "device-credentials",
63127
+ capScope: "system",
63128
+ addonId: null,
63129
+ access: "view"
63130
+ },
63131
+ "deviceCredentials.listDeviceCredentials": {
63132
+ capName: "device-credentials",
63133
+ capScope: "system",
63134
+ addonId: null,
63135
+ access: "view"
63136
+ },
63137
+ "deviceCredentials.renameDeviceCredential": {
63138
+ capName: "device-credentials",
63139
+ capScope: "system",
63140
+ addonId: null,
63141
+ access: "create"
63142
+ },
63143
+ "deviceCredentials.revokeDeviceCredential": {
63144
+ capName: "device-credentials",
63145
+ capScope: "system",
63146
+ addonId: null,
63147
+ access: "delete"
63148
+ },
63149
+ "deviceCredentials.setDeviceCertificateSettings": {
63150
+ capName: "device-credentials",
63151
+ capScope: "system",
63152
+ addonId: null,
63153
+ access: "create"
63154
+ },
63155
+ "deviceCredentials.startEnrollment": {
63156
+ capName: "device-credentials",
63157
+ capScope: "system",
63158
+ addonId: null,
63159
+ access: "create"
63160
+ },
62620
63161
  "deviceDiscovery.adoptDevice": {
62621
63162
  capName: "device-discovery",
62622
63163
  capScope: "device",
@@ -62719,6 +63260,66 @@ Object.freeze({
62719
63260
  addonId: null,
62720
63261
  access: "create"
62721
63262
  },
63263
+ "deviceHistory.declareSeries": {
63264
+ capName: "device-history",
63265
+ capScope: "system",
63266
+ addonId: null,
63267
+ access: "create"
63268
+ },
63269
+ "deviceHistory.getDeviceEnabled": {
63270
+ capName: "device-history",
63271
+ capScope: "system",
63272
+ addonId: null,
63273
+ access: "view"
63274
+ },
63275
+ "deviceHistory.getStatus": {
63276
+ capName: "device-history",
63277
+ capScope: "system",
63278
+ addonId: null,
63279
+ access: "view"
63280
+ },
63281
+ "deviceHistory.listNodeSeries": {
63282
+ capName: "device-history",
63283
+ capScope: "system",
63284
+ addonId: null,
63285
+ access: "view"
63286
+ },
63287
+ "deviceHistory.listSeries": {
63288
+ capName: "device-history",
63289
+ capScope: "system",
63290
+ addonId: null,
63291
+ access: "view"
63292
+ },
63293
+ "deviceHistory.query": {
63294
+ capName: "device-history",
63295
+ capScope: "system",
63296
+ addonId: null,
63297
+ access: "view"
63298
+ },
63299
+ "deviceHistory.queryNode": {
63300
+ capName: "device-history",
63301
+ capScope: "system",
63302
+ addonId: null,
63303
+ access: "view"
63304
+ },
63305
+ "deviceHistory.record": {
63306
+ capName: "device-history",
63307
+ capScope: "system",
63308
+ addonId: null,
63309
+ access: "create"
63310
+ },
63311
+ "deviceHistory.recordBuckets": {
63312
+ capName: "device-history",
63313
+ capScope: "system",
63314
+ addonId: null,
63315
+ access: "create"
63316
+ },
63317
+ "deviceHistory.setDeviceEnabled": {
63318
+ capName: "device-history",
63319
+ capScope: "system",
63320
+ addonId: null,
63321
+ access: "create"
63322
+ },
62722
63323
  "deviceManager.addLocation": {
62723
63324
  capName: "device-manager",
62724
63325
  capScope: "system",
@@ -64777,6 +65378,48 @@ Object.freeze({
64777
65378
  addonId: null,
64778
65379
  access: "create"
64779
65380
  },
65381
+ "nodeCertificates.confirmMeshLeaf": {
65382
+ capName: "node-certificates",
65383
+ capScope: "system",
65384
+ addonId: null,
65385
+ access: "create"
65386
+ },
65387
+ "nodeCertificates.getCertificates": {
65388
+ capName: "node-certificates",
65389
+ capScope: "system",
65390
+ addonId: null,
65391
+ access: "view"
65392
+ },
65393
+ "nodeCertificates.installHttpsCertificate": {
65394
+ capName: "node-certificates",
65395
+ capScope: "system",
65396
+ addonId: null,
65397
+ access: "create"
65398
+ },
65399
+ "nodeCertificates.installMeshLeaf": {
65400
+ capName: "node-certificates",
65401
+ capScope: "system",
65402
+ addonId: null,
65403
+ access: "create"
65404
+ },
65405
+ "nodeCertificates.prepareHttpsCertificate": {
65406
+ capName: "node-certificates",
65407
+ capScope: "system",
65408
+ addonId: null,
65409
+ access: "create"
65410
+ },
65411
+ "nodeCertificates.prepareMeshRenewal": {
65412
+ capName: "node-certificates",
65413
+ capScope: "system",
65414
+ addonId: null,
65415
+ access: "create"
65416
+ },
65417
+ "nodeCertificates.rollbackMeshLeaf": {
65418
+ capName: "node-certificates",
65419
+ capScope: "system",
65420
+ addonId: null,
65421
+ access: "create"
65422
+ },
64780
65423
  "nodes.clusterAddonStatus": {
64781
65424
  capName: "nodes",
64782
65425
  capScope: "system",
@@ -69468,6 +70111,26 @@ Object.freeze({
69468
70111
  form: "single",
69469
70112
  optional: false
69470
70113
  }],
70114
+ "deviceHistory.getDeviceEnabled": [{
70115
+ name: "deviceId",
70116
+ form: "single",
70117
+ optional: false
70118
+ }],
70119
+ "deviceHistory.listSeries": [{
70120
+ name: "deviceId",
70121
+ form: "single",
70122
+ optional: false
70123
+ }],
70124
+ "deviceHistory.query": [{
70125
+ name: "deviceId",
70126
+ form: "single",
70127
+ optional: false
70128
+ }],
70129
+ "deviceHistory.setDeviceEnabled": [{
70130
+ name: "deviceId",
70131
+ form: "single",
70132
+ optional: false
70133
+ }],
69471
70134
  "deviceManager.adoptionRelease": [{
69472
70135
  name: "camDeviceId",
69473
70136
  form: "single",
@@ -71646,6 +72309,7 @@ Object.freeze({
71646
72309
  "network-access": "ingress",
71647
72310
  "smtp-provider": "email"
71648
72311
  });
72312
+ DeviceType.Camera;
71649
72313
  var G711_SCALE_CORRECTION_DB = {
71650
72314
  PCMU: 20 * Math.log10(4),
71651
72315
  PCMA: 20 * Math.log10(8)
@@ -73489,6 +74153,17 @@ Object.freeze({
73489
74153
  "page": 1,
73490
74154
  "pageSize": 50
73491
74155
  } },
74156
+ "device-credentials": { "listDeviceCredentials": { "includeRevoked": false } },
74157
+ "device-history": {
74158
+ "query": {
74159
+ "resolution": "auto",
74160
+ "maxPoints": 1e3
74161
+ },
74162
+ "queryNode": {
74163
+ "resolution": "auto",
74164
+ "maxPoints": 1e3
74165
+ }
74166
+ },
73492
74167
  "device-manager": { "adoptionListCandidates": {
73493
74168
  "page": 1,
73494
74169
  "pageSize": 50