@camstack/addon-mqtt-broker 1.2.140 → 1.2.142

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.
@@ -46,7 +46,7 @@ let node_fs = require("node:fs");
46
46
  node_fs = __toESM(node_fs);
47
47
  let node_path = require("node:path");
48
48
  node_path = __toESM(node_path);
49
- //#region ../types/dist/event-category-7pZEBmVg.mjs
49
+ //#region ../types/dist/event-category-BfJwUd2S.mjs
50
50
  var EventCategory = /* @__PURE__ */ function(EventCategory) {
51
51
  EventCategory["SystemBoot"] = "system.boot";
52
52
  EventCategory["SystemAddonsReady"] = "system.addons-ready";
@@ -363,6 +363,15 @@ var EventCategory = /* @__PURE__ */ function(EventCategory) {
363
363
  */
364
364
  EventCategory["PipelineDetectionBlind"] = "pipeline.detection-blind";
365
365
  /**
366
+ * A camera's motion source has fired constantly with no subject for an hour
367
+ * (motion duty or session count over the bar, zero detections) — it is not
368
+ * blind, its motion zones or sensitivity want tuning (D907). Paired with
369
+ * {@link PipelineMotionCalm}.
370
+ */
371
+ EventCategory["PipelineMotionNoisy"] = "pipeline.motion-noisy";
372
+ /** The recovery edge of {@link PipelineMotionNoisy}: the motion fell back, or a detection arrived. */
373
+ EventCategory["PipelineMotionCalm"] = "pipeline.motion-calm";
374
+ /**
366
375
  * Per-camera pipeline config was mutated by the orchestrator
367
376
  * (3-level settings change via `setAgentAddonDefaults` /
368
377
  * `setCameraStepToggle` / `setCameraPipelineForAgent` or a
@@ -5602,7 +5611,7 @@ var ZodIssueCode = {
5602
5611
  var ZodFirstPartyTypeKind;
5603
5612
  ZodFirstPartyTypeKind || (ZodFirstPartyTypeKind = {});
5604
5613
  //#endregion
5605
- //#region ../types/dist/sleep-CueztlR1.mjs
5614
+ //#region ../types/dist/sleep-DJFUfKvA.mjs
5606
5615
  /**
5607
5616
  * The audio chunk plane's byte format, and the ONE expansion from a coded
5608
5617
  * window to float samples (D455).
@@ -8201,7 +8210,7 @@ var EntryDescriptorSchema = object({
8201
8210
  /** JSON Schema of the entry body; `secret: true` marks a password field. */
8202
8211
  fields: record(string(), unknown())
8203
8212
  }).strict();
8204
- /** What crosses the wire and sits in the engine's catalog: JSON only, no Zod. */
8213
+ /** What crosses the wire from an addon: JSON only, no Zod. An unknown key is refused. */
8205
8214
  var RecordKindDeclarationSchema = object({
8206
8215
  database: _enum(RECORD_DATABASES).default("settings"),
8207
8216
  class: _enum(RECORD_CLASSES),
@@ -8220,14 +8229,6 @@ var RecordKindDeclarationSchema = object({
8220
8229
  secretPaths: array(string().min(1)).default([]),
8221
8230
  /** The id key of each array that carries a secret (`{ headers: 'name' }`). */
8222
8231
  secretArrayKeys: record(string(), string()).default({}),
8223
- /**
8224
- * RETIRED (D900): the legacy table a kind adopted from during the records
8225
- * migration. Nothing declares it any more and nothing reads it; the schema
8226
- * still ACCEPTS it because the catalog rows the migration wrote carry it
8227
- * (an orphaned kind is never redeclared) and an addon built before the
8228
- * removal still sends it. Never set it.
8229
- */
8230
- adoptsFrom: string().min(1).optional(),
8231
8232
  /** Kinds that must agree through `transact` sit in one file under one family name. */
8232
8233
  transactFamily: string().min(1).optional(),
8233
8234
  entry: EntryDescriptorSchema.optional()
@@ -13009,17 +13010,6 @@ object({
13009
13010
  createdAt: number(),
13010
13011
  updatedAt: number()
13011
13012
  });
13012
- object({
13013
- id: string(),
13014
- label: string(),
13015
- isAdmin: boolean().default(false),
13016
- allowedProviders: AllowedProviderSchema,
13017
- allowedDevices: AllowedDevicesSchema,
13018
- tokenHash: string(),
13019
- tokenPrefix: string(),
13020
- createdAt: number(),
13021
- lastUsedAt: number().optional()
13022
- });
13023
13013
  object({
13024
13014
  id: string(),
13025
13015
  userId: string(),
@@ -16944,16 +16934,36 @@ var RecordKindStateSchema = _enum([
16944
16934
  var DeclareKindResultSchema = object({
16945
16935
  kindId: number().int(),
16946
16936
  state: RecordKindStateSchema,
16947
- createdIndexes: array(string()),
16948
- /**
16949
- * RETIRED (D900): always `null`. It carried the records-migration boot guard;
16950
- * it stays on the wire, null, because an addon built before the removal reads
16951
- * an ABSENT field as "adoption pending" and refuses to start.
16952
- */
16953
- adoptionPending: _null()
16937
+ createdIndexes: array(string())
16954
16938
  });
16955
16939
  /** Keychain refs a write released (the old marker is gone from the row): the owner deletes the values. */
16956
16940
  var SecretRefsList = array(string());
16941
+ /**
16942
+ * One op of a `transact`: the single-row writes, each on a kind of the caller.
16943
+ * All ops of one call share ONE database file and ONE `transactFamily`.
16944
+ */
16945
+ var RecordTransactOpSchema = discriminatedUnion("op", [
16946
+ object({
16947
+ op: literal("put"),
16948
+ kind: RecordKindNameSchema,
16949
+ record: RecordInputSchema,
16950
+ ifRev: number().int().min(0).optional()
16951
+ }),
16952
+ object({
16953
+ op: literal("patch"),
16954
+ kind: RecordKindNameSchema,
16955
+ id: RecordIdSchema,
16956
+ data: RecordBodySchema,
16957
+ at: number().int().nullable().optional(),
16958
+ expiresAt: number().int().nullable().optional(),
16959
+ ifRev: number().int().min(1).optional()
16960
+ }),
16961
+ object({
16962
+ op: literal("delete"),
16963
+ kind: RecordKindNameSchema,
16964
+ id: RecordIdSchema
16965
+ })
16966
+ ]);
16957
16967
  var RecordSecretRefsSchema = record(string(), record(string(), string()));
16958
16968
  method(object({ kinds: record(RecordKindNameSchema, RecordKindDeclarationSchema) }), object({ kinds: record(string(), DeclareKindResultSchema) }), {
16959
16969
  kind: "mutation",
@@ -17060,6 +17070,16 @@ method(object({ kinds: record(RecordKindNameSchema, RecordKindDeclarationSchema)
17060
17070
  }), {
17061
17071
  kind: "mutation",
17062
17072
  auth: "admin"
17073
+ }), method(object({ ops: array(RecordTransactOpSchema).min(1).max(RECORD_BATCH_MAX) }), object({
17074
+ results: array(object({
17075
+ rev: number().int().nullable(),
17076
+ deleted: boolean()
17077
+ })),
17078
+ releasedRefs: SecretRefsList,
17079
+ secretRefs: SecretRefsList
17080
+ }), {
17081
+ kind: "mutation",
17082
+ auth: "admin"
17063
17083
  }), method(object({
17064
17084
  deviceId: number().int(),
17065
17085
  kinds: array(RecordKindNameSchema).optional()
@@ -42437,9 +42457,13 @@ var NcSystemEventKindSchema = _enum([
42437
42457
  "node-updating",
42438
42458
  "node-inference-unavailable",
42439
42459
  "detection-blind",
42460
+ "motion-noisy",
42461
+ "motion-calm",
42440
42462
  "recording-stalled",
42441
42463
  "recording-healthy",
42442
42464
  "recording-degraded",
42465
+ "device-attention-required",
42466
+ "device-attention-resolved",
42443
42467
  "storage-location-low",
42444
42468
  "storage-location-critical",
42445
42469
  "storage-location-ok",
@@ -48000,7 +48024,6 @@ var RecommendationReasonSchema = discriminatedUnion("kind", [
48000
48024
  modelId: string()
48001
48025
  }),
48002
48026
  object({ kind: literal("cpu-device") }),
48003
- object({ kind: literal("coral-untouched") }),
48004
48027
  object({ kind: literal("device-disabled") }),
48005
48028
  object({ kind: literal("device-unavailable") }),
48006
48029
  object({ kind: literal("node-offline") }),
@@ -48098,11 +48121,6 @@ var AutoTuneWarningSchema = discriminatedUnion("kind", [
48098
48121
  kind: literal("detector-store-unreadable"),
48099
48122
  error: string()
48100
48123
  }),
48101
- object({
48102
- kind: literal("coral-enabled"),
48103
- nodeId: string(),
48104
- deviceKey: string()
48105
- }),
48106
48124
  object({
48107
48125
  kind: literal("custom-pin-kept"),
48108
48126
  nodeId: string(),
@@ -54896,6 +54914,16 @@ object({
54896
54914
  powerState: string().nullable(),
54897
54915
  saltLevel: DishwasherConsumableLevelSchema.nullable(),
54898
54916
  rinseAidLevel: DishwasherConsumableLevelSchema.nullable(),
54917
+ /**
54918
+ * True while the appliance asks for its filter to be cleaned (smart-filter, filter-system or
54919
+ * combined care-and-filter reminder raised); false when every such reminder reads clear; null
54920
+ * when none is reported. A cleared reminder is not an unknown one.
54921
+ */
54922
+ filterCleaningDue: boolean().nullable(),
54923
+ /** True while the machine-care (descaling / cleaning-program) reminder is raised; false when clear; null when not reported. */
54924
+ machineCareDue: boolean().nullable(),
54925
+ /** Program runs left before the machine-care reminder is due; null when the appliance does not say. */
54926
+ machineCareRemainingRuns: number().int().nonnegative().nullable(),
54899
54927
  /** Option states: null when the appliance does not expose the option or has not said. */
54900
54928
  halfLoad: boolean().nullable(),
54901
54929
  hygienePlus: boolean().nullable(),
@@ -61513,16 +61541,6 @@ var UpdateUserInputSchema = object({
61513
61541
  allowedDevices: record(string(), union([array(string()), literal("*")])).optional(),
61514
61542
  scopes: array(TokenScopeSchema).optional()
61515
61543
  });
61516
- var ApiKeySummarySchema = object({
61517
- id: string(),
61518
- label: string(),
61519
- isAdmin: boolean().default(false),
61520
- allowedProviders: union([array(string()), literal("*")]).optional(),
61521
- allowedDevices: record(string(), union([array(string()), literal("*")])).optional(),
61522
- tokenPrefix: string(),
61523
- createdAt: number(),
61524
- lastUsedAt: number().optional()
61525
- });
61526
61544
  var OauthSessionSummarySchema = object({
61527
61545
  id: string(),
61528
61546
  userId: string(),
@@ -61544,8 +61562,7 @@ var TotpStatusSchema = object({
61544
61562
  confirmedAt: number().nullable()
61545
61563
  });
61546
61564
  /**
61547
- * user-management — singleton capability for user accounts and the
61548
- * legacy API-key rows.
61565
+ * user-management — singleton capability for user accounts.
61549
61566
  *
61550
61567
  * v2 model: every method gated by `auth: 'admin'`. Admin-only delegation
61551
61568
  * — the subset check on `setUserScopes` is moot
@@ -61601,10 +61618,6 @@ method(_void(), array(UserSummarySchema), { auth: "admin" }), method(CreateUserI
61601
61618
  }), UserSummarySchema.extend({ passwordHash: string() }).nullable(), {
61602
61619
  kind: "mutation",
61603
61620
  access: "view"
61604
- }), method(_void(), array(ApiKeySummarySchema), { auth: "admin" }), method(object({ id: string() }), object({ success: literal(true) }), {
61605
- kind: "mutation",
61606
- auth: "admin",
61607
- access: "delete"
61608
61621
  }), method(object({ userId: string() }), TotpSetupResultSchema, {
61609
61622
  kind: "mutation",
61610
61623
  auth: "admin",
@@ -69117,6 +69130,12 @@ Object.freeze({
69117
69130
  addonId: null,
69118
69131
  access: "view"
69119
69132
  },
69133
+ "records.transact": {
69134
+ capName: "records",
69135
+ capScope: "system",
69136
+ addonId: null,
69137
+ access: "create"
69138
+ },
69120
69139
  "sceneMonitor.captureReference": {
69121
69140
  capName: "scene-monitor",
69122
69141
  capScope: "device",
@@ -70449,12 +70468,6 @@ Object.freeze({
70449
70468
  addonId: null,
70450
70469
  access: "view"
70451
70470
  },
70452
- "userManagement.listApiKeys": {
70453
- capName: "user-management",
70454
- capScope: "system",
70455
- addonId: null,
70456
- access: "view"
70457
- },
70458
70471
  "userManagement.listExternalIdentities": {
70459
70472
  capName: "user-management",
70460
70473
  capScope: "system",
@@ -70509,12 +70522,6 @@ Object.freeze({
70509
70522
  addonId: null,
70510
70523
  access: "create"
70511
70524
  },
70512
- "userManagement.revokeApiKey": {
70513
- capName: "user-management",
70514
- capScope: "system",
70515
- addonId: null,
70516
- access: "delete"
70517
- },
70518
70525
  "userManagement.revokeOauthSession": {
70519
70526
  capName: "user-management",
70520
70527
  capScope: "system",
@@ -73879,9 +73886,13 @@ new Map(Object.entries({
73879
73886
  "stream-online": "device-events",
73880
73887
  "stream-offline": "device-events",
73881
73888
  "detection-blind": "device-events",
73889
+ "motion-noisy": "device-events",
73890
+ "motion-calm": "device-events",
73882
73891
  "recording-stalled": "device-events",
73883
73892
  "recording-healthy": "device-events",
73884
73893
  "recording-degraded": "device-events",
73894
+ "device-attention-required": "device-events",
73895
+ "device-attention-resolved": "device-events",
73885
73896
  "node-online": "system",
73886
73897
  "node-offline": "system",
73887
73898
  "node-restarting": "system",
@@ -73964,6 +73975,12 @@ var NC_SYSTEM_EVENT_KIND_GROUP_SPECS = [
73964
73975
  label: "Detecting nothing",
73965
73976
  kinds: ["detection-blind"]
73966
73977
  },
73978
+ {
73979
+ id: "motion-noise",
73980
+ family: "device-events",
73981
+ label: "Motion without a subject",
73982
+ kinds: ["motion-noisy", "motion-calm"]
73983
+ },
73967
73984
  {
73968
73985
  id: "recording",
73969
73986
  family: "device-events",
@@ -73974,6 +73991,12 @@ var NC_SYSTEM_EVENT_KIND_GROUP_SPECS = [
73974
73991
  "recording-degraded"
73975
73992
  ]
73976
73993
  },
73994
+ {
73995
+ id: "device-attention",
73996
+ family: "device-events",
73997
+ label: "Needs attention",
73998
+ kinds: ["device-attention-required", "device-attention-resolved"]
73999
+ },
73977
74000
  {
73978
74001
  id: "nodes",
73979
74002
  family: "system",
@@ -74113,6 +74136,7 @@ var ALERT_EPISODE = [
74113
74136
  "alert-error",
74114
74137
  "alert-critical-resolved"
74115
74138
  ];
74139
+ var DEVICE_ATTENTION = ["device-attention-required", "device-attention-resolved"];
74116
74140
  var UPDATES = [
74117
74141
  "addon-update-available",
74118
74142
  "server-update-available",
@@ -74142,9 +74166,12 @@ var DEVICE_EVENTS = [
74142
74166
  "stream-online",
74143
74167
  "stream-offline",
74144
74168
  "detection-blind",
74169
+ "motion-noisy",
74170
+ "motion-calm",
74145
74171
  "recording-stalled",
74146
74172
  "recording-healthy",
74147
74173
  "recording-degraded",
74174
+ ...DEVICE_ATTENTION,
74148
74175
  ...ALARM
74149
74176
  ];
74150
74177
  /** Every kind a summary may speak about — the two summarisable families. */
@@ -74312,7 +74339,9 @@ var STATE_SUMMARY_VARS = [
74312
74339
  [...RULE_TEXT],
74313
74340
  [...RULE_TEXT],
74314
74341
  [...RULE_TEXT],
74315
- ([...RULE_TEXT], [...ALERT_EPISODE]),
74342
+ [...RULE_TEXT],
74343
+ [...RULE_TEXT],
74344
+ ([...RULE_TEXT], [...DEVICE_ATTENTION, ...ALERT_EPISODE]),
74316
74345
  [...RULE_TEXT],
74317
74346
  [...RULE_TEXT],
74318
74347
  [...RULE_TEXT],
@@ -74334,11 +74363,11 @@ var STATE_SUMMARY_VARS = [
74334
74363
  [...RULE_TEXT],
74335
74364
  [...RULE_TEXT],
74336
74365
  [...RULE_TEXT],
74366
+ ([...RULE_TEXT], [...DEVICE_ATTENTION, ...ALERT_EPISODE]),
74337
74367
  ([...RULE_TEXT], [...ALERT_EPISODE]),
74368
+ ([...RULE_TEXT], [...DEVICE_ATTENTION, ...ALERT_EPISODE]),
74338
74369
  ([...RULE_TEXT], [...ALERT_EPISODE]),
74339
- ([...RULE_TEXT], [...ALERT_EPISODE]),
74340
- ([...RULE_TEXT], [...ALERT_EPISODE]),
74341
- ([...RULE_TEXT], [...ALERT_EPISODE]),
74370
+ ([...RULE_TEXT], [...DEVICE_ATTENTION, ...ALERT_EPISODE]),
74342
74371
  [...RULE_TEXT],
74343
74372
  [...RULE_TEXT],
74344
74373
  [...RULE_TEXT],
@@ -74414,6 +74443,15 @@ new Map([
74414
74443
  snapshotLabel: "Tanks low or full now",
74415
74444
  snapshotSection: "tanks"
74416
74445
  },
74446
+ {
74447
+ id: "motion-noise",
74448
+ family: "device-events",
74449
+ label: "Motion without a subject (constant / calm again)",
74450
+ bad: ["motion-noisy"],
74451
+ recovery: ["motion-calm"],
74452
+ snapshotLabel: "Cameras with constant motion now",
74453
+ snapshotSection: null
74454
+ },
74417
74455
  {
74418
74456
  id: "recording-health",
74419
74457
  family: "device-events",
@@ -74423,6 +74461,15 @@ new Map([
74423
74461
  snapshotLabel: "Recordings stalled now",
74424
74462
  snapshotSection: null
74425
74463
  },
74464
+ {
74465
+ id: "device-attention",
74466
+ family: "device-events",
74467
+ label: "Device needs attention (raised / resolved)",
74468
+ bad: ["device-attention-required"],
74469
+ recovery: ["device-attention-resolved"],
74470
+ snapshotLabel: "Devices needing attention now",
74471
+ snapshotSection: null
74472
+ },
74426
74473
  {
74427
74474
  id: "node-connectivity",
74428
74475
  family: "system",
@@ -39,7 +39,7 @@ var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__ge
39
39
  var __toCommonJS = (mod) => __hasOwnProp.call(mod, "module.exports") ? mod["module.exports"] : __copyProps(__defProp({}, "__esModule", { value: true }), mod);
40
40
  var __require = /* @__PURE__ */ createRequire(import.meta.url);
41
41
  //#endregion
42
- //#region ../types/dist/event-category-7pZEBmVg.mjs
42
+ //#region ../types/dist/event-category-BfJwUd2S.mjs
43
43
  var EventCategory = /* @__PURE__ */ function(EventCategory) {
44
44
  EventCategory["SystemBoot"] = "system.boot";
45
45
  EventCategory["SystemAddonsReady"] = "system.addons-ready";
@@ -356,6 +356,15 @@ var EventCategory = /* @__PURE__ */ function(EventCategory) {
356
356
  */
357
357
  EventCategory["PipelineDetectionBlind"] = "pipeline.detection-blind";
358
358
  /**
359
+ * A camera's motion source has fired constantly with no subject for an hour
360
+ * (motion duty or session count over the bar, zero detections) — it is not
361
+ * blind, its motion zones or sensitivity want tuning (D907). Paired with
362
+ * {@link PipelineMotionCalm}.
363
+ */
364
+ EventCategory["PipelineMotionNoisy"] = "pipeline.motion-noisy";
365
+ /** The recovery edge of {@link PipelineMotionNoisy}: the motion fell back, or a detection arrived. */
366
+ EventCategory["PipelineMotionCalm"] = "pipeline.motion-calm";
367
+ /**
359
368
  * Per-camera pipeline config was mutated by the orchestrator
360
369
  * (3-level settings change via `setAgentAddonDefaults` /
361
370
  * `setCameraStepToggle` / `setCameraPipelineForAgent` or a
@@ -5595,7 +5604,7 @@ var ZodIssueCode = {
5595
5604
  var ZodFirstPartyTypeKind;
5596
5605
  ZodFirstPartyTypeKind || (ZodFirstPartyTypeKind = {});
5597
5606
  //#endregion
5598
- //#region ../types/dist/sleep-CueztlR1.mjs
5607
+ //#region ../types/dist/sleep-DJFUfKvA.mjs
5599
5608
  /**
5600
5609
  * The audio chunk plane's byte format, and the ONE expansion from a coded
5601
5610
  * window to float samples (D455).
@@ -8194,7 +8203,7 @@ var EntryDescriptorSchema = object({
8194
8203
  /** JSON Schema of the entry body; `secret: true` marks a password field. */
8195
8204
  fields: record(string(), unknown())
8196
8205
  }).strict();
8197
- /** What crosses the wire and sits in the engine's catalog: JSON only, no Zod. */
8206
+ /** What crosses the wire from an addon: JSON only, no Zod. An unknown key is refused. */
8198
8207
  var RecordKindDeclarationSchema = object({
8199
8208
  database: _enum(RECORD_DATABASES).default("settings"),
8200
8209
  class: _enum(RECORD_CLASSES),
@@ -8213,14 +8222,6 @@ var RecordKindDeclarationSchema = object({
8213
8222
  secretPaths: array(string().min(1)).default([]),
8214
8223
  /** The id key of each array that carries a secret (`{ headers: 'name' }`). */
8215
8224
  secretArrayKeys: record(string(), string()).default({}),
8216
- /**
8217
- * RETIRED (D900): the legacy table a kind adopted from during the records
8218
- * migration. Nothing declares it any more and nothing reads it; the schema
8219
- * still ACCEPTS it because the catalog rows the migration wrote carry it
8220
- * (an orphaned kind is never redeclared) and an addon built before the
8221
- * removal still sends it. Never set it.
8222
- */
8223
- adoptsFrom: string().min(1).optional(),
8224
8225
  /** Kinds that must agree through `transact` sit in one file under one family name. */
8225
8226
  transactFamily: string().min(1).optional(),
8226
8227
  entry: EntryDescriptorSchema.optional()
@@ -13002,17 +13003,6 @@ object({
13002
13003
  createdAt: number(),
13003
13004
  updatedAt: number()
13004
13005
  });
13005
- object({
13006
- id: string(),
13007
- label: string(),
13008
- isAdmin: boolean().default(false),
13009
- allowedProviders: AllowedProviderSchema,
13010
- allowedDevices: AllowedDevicesSchema,
13011
- tokenHash: string(),
13012
- tokenPrefix: string(),
13013
- createdAt: number(),
13014
- lastUsedAt: number().optional()
13015
- });
13016
13006
  object({
13017
13007
  id: string(),
13018
13008
  userId: string(),
@@ -16937,16 +16927,36 @@ var RecordKindStateSchema = _enum([
16937
16927
  var DeclareKindResultSchema = object({
16938
16928
  kindId: number().int(),
16939
16929
  state: RecordKindStateSchema,
16940
- createdIndexes: array(string()),
16941
- /**
16942
- * RETIRED (D900): always `null`. It carried the records-migration boot guard;
16943
- * it stays on the wire, null, because an addon built before the removal reads
16944
- * an ABSENT field as "adoption pending" and refuses to start.
16945
- */
16946
- adoptionPending: _null()
16930
+ createdIndexes: array(string())
16947
16931
  });
16948
16932
  /** Keychain refs a write released (the old marker is gone from the row): the owner deletes the values. */
16949
16933
  var SecretRefsList = array(string());
16934
+ /**
16935
+ * One op of a `transact`: the single-row writes, each on a kind of the caller.
16936
+ * All ops of one call share ONE database file and ONE `transactFamily`.
16937
+ */
16938
+ var RecordTransactOpSchema = discriminatedUnion("op", [
16939
+ object({
16940
+ op: literal("put"),
16941
+ kind: RecordKindNameSchema,
16942
+ record: RecordInputSchema,
16943
+ ifRev: number().int().min(0).optional()
16944
+ }),
16945
+ object({
16946
+ op: literal("patch"),
16947
+ kind: RecordKindNameSchema,
16948
+ id: RecordIdSchema,
16949
+ data: RecordBodySchema,
16950
+ at: number().int().nullable().optional(),
16951
+ expiresAt: number().int().nullable().optional(),
16952
+ ifRev: number().int().min(1).optional()
16953
+ }),
16954
+ object({
16955
+ op: literal("delete"),
16956
+ kind: RecordKindNameSchema,
16957
+ id: RecordIdSchema
16958
+ })
16959
+ ]);
16950
16960
  var RecordSecretRefsSchema = record(string(), record(string(), string()));
16951
16961
  method(object({ kinds: record(RecordKindNameSchema, RecordKindDeclarationSchema) }), object({ kinds: record(string(), DeclareKindResultSchema) }), {
16952
16962
  kind: "mutation",
@@ -17053,6 +17063,16 @@ method(object({ kinds: record(RecordKindNameSchema, RecordKindDeclarationSchema)
17053
17063
  }), {
17054
17064
  kind: "mutation",
17055
17065
  auth: "admin"
17066
+ }), method(object({ ops: array(RecordTransactOpSchema).min(1).max(RECORD_BATCH_MAX) }), object({
17067
+ results: array(object({
17068
+ rev: number().int().nullable(),
17069
+ deleted: boolean()
17070
+ })),
17071
+ releasedRefs: SecretRefsList,
17072
+ secretRefs: SecretRefsList
17073
+ }), {
17074
+ kind: "mutation",
17075
+ auth: "admin"
17056
17076
  }), method(object({
17057
17077
  deviceId: number().int(),
17058
17078
  kinds: array(RecordKindNameSchema).optional()
@@ -42430,9 +42450,13 @@ var NcSystemEventKindSchema = _enum([
42430
42450
  "node-updating",
42431
42451
  "node-inference-unavailable",
42432
42452
  "detection-blind",
42453
+ "motion-noisy",
42454
+ "motion-calm",
42433
42455
  "recording-stalled",
42434
42456
  "recording-healthy",
42435
42457
  "recording-degraded",
42458
+ "device-attention-required",
42459
+ "device-attention-resolved",
42436
42460
  "storage-location-low",
42437
42461
  "storage-location-critical",
42438
42462
  "storage-location-ok",
@@ -47993,7 +48017,6 @@ var RecommendationReasonSchema = discriminatedUnion("kind", [
47993
48017
  modelId: string()
47994
48018
  }),
47995
48019
  object({ kind: literal("cpu-device") }),
47996
- object({ kind: literal("coral-untouched") }),
47997
48020
  object({ kind: literal("device-disabled") }),
47998
48021
  object({ kind: literal("device-unavailable") }),
47999
48022
  object({ kind: literal("node-offline") }),
@@ -48091,11 +48114,6 @@ var AutoTuneWarningSchema = discriminatedUnion("kind", [
48091
48114
  kind: literal("detector-store-unreadable"),
48092
48115
  error: string()
48093
48116
  }),
48094
- object({
48095
- kind: literal("coral-enabled"),
48096
- nodeId: string(),
48097
- deviceKey: string()
48098
- }),
48099
48117
  object({
48100
48118
  kind: literal("custom-pin-kept"),
48101
48119
  nodeId: string(),
@@ -54889,6 +54907,16 @@ object({
54889
54907
  powerState: string().nullable(),
54890
54908
  saltLevel: DishwasherConsumableLevelSchema.nullable(),
54891
54909
  rinseAidLevel: DishwasherConsumableLevelSchema.nullable(),
54910
+ /**
54911
+ * True while the appliance asks for its filter to be cleaned (smart-filter, filter-system or
54912
+ * combined care-and-filter reminder raised); false when every such reminder reads clear; null
54913
+ * when none is reported. A cleared reminder is not an unknown one.
54914
+ */
54915
+ filterCleaningDue: boolean().nullable(),
54916
+ /** True while the machine-care (descaling / cleaning-program) reminder is raised; false when clear; null when not reported. */
54917
+ machineCareDue: boolean().nullable(),
54918
+ /** Program runs left before the machine-care reminder is due; null when the appliance does not say. */
54919
+ machineCareRemainingRuns: number().int().nonnegative().nullable(),
54892
54920
  /** Option states: null when the appliance does not expose the option or has not said. */
54893
54921
  halfLoad: boolean().nullable(),
54894
54922
  hygienePlus: boolean().nullable(),
@@ -61506,16 +61534,6 @@ var UpdateUserInputSchema = object({
61506
61534
  allowedDevices: record(string(), union([array(string()), literal("*")])).optional(),
61507
61535
  scopes: array(TokenScopeSchema).optional()
61508
61536
  });
61509
- var ApiKeySummarySchema = object({
61510
- id: string(),
61511
- label: string(),
61512
- isAdmin: boolean().default(false),
61513
- allowedProviders: union([array(string()), literal("*")]).optional(),
61514
- allowedDevices: record(string(), union([array(string()), literal("*")])).optional(),
61515
- tokenPrefix: string(),
61516
- createdAt: number(),
61517
- lastUsedAt: number().optional()
61518
- });
61519
61537
  var OauthSessionSummarySchema = object({
61520
61538
  id: string(),
61521
61539
  userId: string(),
@@ -61537,8 +61555,7 @@ var TotpStatusSchema = object({
61537
61555
  confirmedAt: number().nullable()
61538
61556
  });
61539
61557
  /**
61540
- * user-management — singleton capability for user accounts and the
61541
- * legacy API-key rows.
61558
+ * user-management — singleton capability for user accounts.
61542
61559
  *
61543
61560
  * v2 model: every method gated by `auth: 'admin'`. Admin-only delegation
61544
61561
  * — the subset check on `setUserScopes` is moot
@@ -61594,10 +61611,6 @@ method(_void(), array(UserSummarySchema), { auth: "admin" }), method(CreateUserI
61594
61611
  }), UserSummarySchema.extend({ passwordHash: string() }).nullable(), {
61595
61612
  kind: "mutation",
61596
61613
  access: "view"
61597
- }), method(_void(), array(ApiKeySummarySchema), { auth: "admin" }), method(object({ id: string() }), object({ success: literal(true) }), {
61598
- kind: "mutation",
61599
- auth: "admin",
61600
- access: "delete"
61601
61614
  }), method(object({ userId: string() }), TotpSetupResultSchema, {
61602
61615
  kind: "mutation",
61603
61616
  auth: "admin",
@@ -69110,6 +69123,12 @@ Object.freeze({
69110
69123
  addonId: null,
69111
69124
  access: "view"
69112
69125
  },
69126
+ "records.transact": {
69127
+ capName: "records",
69128
+ capScope: "system",
69129
+ addonId: null,
69130
+ access: "create"
69131
+ },
69113
69132
  "sceneMonitor.captureReference": {
69114
69133
  capName: "scene-monitor",
69115
69134
  capScope: "device",
@@ -70442,12 +70461,6 @@ Object.freeze({
70442
70461
  addonId: null,
70443
70462
  access: "view"
70444
70463
  },
70445
- "userManagement.listApiKeys": {
70446
- capName: "user-management",
70447
- capScope: "system",
70448
- addonId: null,
70449
- access: "view"
70450
- },
70451
70464
  "userManagement.listExternalIdentities": {
70452
70465
  capName: "user-management",
70453
70466
  capScope: "system",
@@ -70502,12 +70515,6 @@ Object.freeze({
70502
70515
  addonId: null,
70503
70516
  access: "create"
70504
70517
  },
70505
- "userManagement.revokeApiKey": {
70506
- capName: "user-management",
70507
- capScope: "system",
70508
- addonId: null,
70509
- access: "delete"
70510
- },
70511
70518
  "userManagement.revokeOauthSession": {
70512
70519
  capName: "user-management",
70513
70520
  capScope: "system",
@@ -73872,9 +73879,13 @@ new Map(Object.entries({
73872
73879
  "stream-online": "device-events",
73873
73880
  "stream-offline": "device-events",
73874
73881
  "detection-blind": "device-events",
73882
+ "motion-noisy": "device-events",
73883
+ "motion-calm": "device-events",
73875
73884
  "recording-stalled": "device-events",
73876
73885
  "recording-healthy": "device-events",
73877
73886
  "recording-degraded": "device-events",
73887
+ "device-attention-required": "device-events",
73888
+ "device-attention-resolved": "device-events",
73878
73889
  "node-online": "system",
73879
73890
  "node-offline": "system",
73880
73891
  "node-restarting": "system",
@@ -73957,6 +73968,12 @@ var NC_SYSTEM_EVENT_KIND_GROUP_SPECS = [
73957
73968
  label: "Detecting nothing",
73958
73969
  kinds: ["detection-blind"]
73959
73970
  },
73971
+ {
73972
+ id: "motion-noise",
73973
+ family: "device-events",
73974
+ label: "Motion without a subject",
73975
+ kinds: ["motion-noisy", "motion-calm"]
73976
+ },
73960
73977
  {
73961
73978
  id: "recording",
73962
73979
  family: "device-events",
@@ -73967,6 +73984,12 @@ var NC_SYSTEM_EVENT_KIND_GROUP_SPECS = [
73967
73984
  "recording-degraded"
73968
73985
  ]
73969
73986
  },
73987
+ {
73988
+ id: "device-attention",
73989
+ family: "device-events",
73990
+ label: "Needs attention",
73991
+ kinds: ["device-attention-required", "device-attention-resolved"]
73992
+ },
73970
73993
  {
73971
73994
  id: "nodes",
73972
73995
  family: "system",
@@ -74106,6 +74129,7 @@ var ALERT_EPISODE = [
74106
74129
  "alert-error",
74107
74130
  "alert-critical-resolved"
74108
74131
  ];
74132
+ var DEVICE_ATTENTION = ["device-attention-required", "device-attention-resolved"];
74109
74133
  var UPDATES = [
74110
74134
  "addon-update-available",
74111
74135
  "server-update-available",
@@ -74135,9 +74159,12 @@ var DEVICE_EVENTS = [
74135
74159
  "stream-online",
74136
74160
  "stream-offline",
74137
74161
  "detection-blind",
74162
+ "motion-noisy",
74163
+ "motion-calm",
74138
74164
  "recording-stalled",
74139
74165
  "recording-healthy",
74140
74166
  "recording-degraded",
74167
+ ...DEVICE_ATTENTION,
74141
74168
  ...ALARM
74142
74169
  ];
74143
74170
  /** Every kind a summary may speak about — the two summarisable families. */
@@ -74305,7 +74332,9 @@ var STATE_SUMMARY_VARS = [
74305
74332
  [...RULE_TEXT],
74306
74333
  [...RULE_TEXT],
74307
74334
  [...RULE_TEXT],
74308
- ([...RULE_TEXT], [...ALERT_EPISODE]),
74335
+ [...RULE_TEXT],
74336
+ [...RULE_TEXT],
74337
+ ([...RULE_TEXT], [...DEVICE_ATTENTION, ...ALERT_EPISODE]),
74309
74338
  [...RULE_TEXT],
74310
74339
  [...RULE_TEXT],
74311
74340
  [...RULE_TEXT],
@@ -74327,11 +74356,11 @@ var STATE_SUMMARY_VARS = [
74327
74356
  [...RULE_TEXT],
74328
74357
  [...RULE_TEXT],
74329
74358
  [...RULE_TEXT],
74359
+ ([...RULE_TEXT], [...DEVICE_ATTENTION, ...ALERT_EPISODE]),
74330
74360
  ([...RULE_TEXT], [...ALERT_EPISODE]),
74361
+ ([...RULE_TEXT], [...DEVICE_ATTENTION, ...ALERT_EPISODE]),
74331
74362
  ([...RULE_TEXT], [...ALERT_EPISODE]),
74332
- ([...RULE_TEXT], [...ALERT_EPISODE]),
74333
- ([...RULE_TEXT], [...ALERT_EPISODE]),
74334
- ([...RULE_TEXT], [...ALERT_EPISODE]),
74363
+ ([...RULE_TEXT], [...DEVICE_ATTENTION, ...ALERT_EPISODE]),
74335
74364
  [...RULE_TEXT],
74336
74365
  [...RULE_TEXT],
74337
74366
  [...RULE_TEXT],
@@ -74407,6 +74436,15 @@ new Map([
74407
74436
  snapshotLabel: "Tanks low or full now",
74408
74437
  snapshotSection: "tanks"
74409
74438
  },
74439
+ {
74440
+ id: "motion-noise",
74441
+ family: "device-events",
74442
+ label: "Motion without a subject (constant / calm again)",
74443
+ bad: ["motion-noisy"],
74444
+ recovery: ["motion-calm"],
74445
+ snapshotLabel: "Cameras with constant motion now",
74446
+ snapshotSection: null
74447
+ },
74410
74448
  {
74411
74449
  id: "recording-health",
74412
74450
  family: "device-events",
@@ -74416,6 +74454,15 @@ new Map([
74416
74454
  snapshotLabel: "Recordings stalled now",
74417
74455
  snapshotSection: null
74418
74456
  },
74457
+ {
74458
+ id: "device-attention",
74459
+ family: "device-events",
74460
+ label: "Device needs attention (raised / resolved)",
74461
+ bad: ["device-attention-required"],
74462
+ recovery: ["device-attention-resolved"],
74463
+ snapshotLabel: "Devices needing attention now",
74464
+ snapshotSection: null
74465
+ },
74419
74466
  {
74420
74467
  id: "node-connectivity",
74421
74468
  family: "system",
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@camstack/addon-mqtt-broker",
3
- "version": "1.2.140",
3
+ "version": "1.2.142",
4
4
  "description": "MQTT broker registry addon for CamStack — manages external broker entries + an optional embedded aedes broker. Consumers spin up their own `mqtt.js` clients via the `mqtt-broker` cap.",
5
5
  "keywords": [
6
6
  "camstack",