@camstack/addon-mqtt-broker 1.2.140 → 1.2.141

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",
@@ -54896,6 +54920,16 @@ object({
54896
54920
  powerState: string().nullable(),
54897
54921
  saltLevel: DishwasherConsumableLevelSchema.nullable(),
54898
54922
  rinseAidLevel: DishwasherConsumableLevelSchema.nullable(),
54923
+ /**
54924
+ * True while the appliance asks for its filter to be cleaned (smart-filter, filter-system or
54925
+ * combined care-and-filter reminder raised); false when every such reminder reads clear; null
54926
+ * when none is reported. A cleared reminder is not an unknown one.
54927
+ */
54928
+ filterCleaningDue: boolean().nullable(),
54929
+ /** True while the machine-care (descaling / cleaning-program) reminder is raised; false when clear; null when not reported. */
54930
+ machineCareDue: boolean().nullable(),
54931
+ /** Program runs left before the machine-care reminder is due; null when the appliance does not say. */
54932
+ machineCareRemainingRuns: number().int().nonnegative().nullable(),
54899
54933
  /** Option states: null when the appliance does not expose the option or has not said. */
54900
54934
  halfLoad: boolean().nullable(),
54901
54935
  hygienePlus: boolean().nullable(),
@@ -61513,16 +61547,6 @@ var UpdateUserInputSchema = object({
61513
61547
  allowedDevices: record(string(), union([array(string()), literal("*")])).optional(),
61514
61548
  scopes: array(TokenScopeSchema).optional()
61515
61549
  });
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
61550
  var OauthSessionSummarySchema = object({
61527
61551
  id: string(),
61528
61552
  userId: string(),
@@ -61544,8 +61568,7 @@ var TotpStatusSchema = object({
61544
61568
  confirmedAt: number().nullable()
61545
61569
  });
61546
61570
  /**
61547
- * user-management — singleton capability for user accounts and the
61548
- * legacy API-key rows.
61571
+ * user-management — singleton capability for user accounts.
61549
61572
  *
61550
61573
  * v2 model: every method gated by `auth: 'admin'`. Admin-only delegation
61551
61574
  * — the subset check on `setUserScopes` is moot
@@ -61601,10 +61624,6 @@ method(_void(), array(UserSummarySchema), { auth: "admin" }), method(CreateUserI
61601
61624
  }), UserSummarySchema.extend({ passwordHash: string() }).nullable(), {
61602
61625
  kind: "mutation",
61603
61626
  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
61627
  }), method(object({ userId: string() }), TotpSetupResultSchema, {
61609
61628
  kind: "mutation",
61610
61629
  auth: "admin",
@@ -69117,6 +69136,12 @@ Object.freeze({
69117
69136
  addonId: null,
69118
69137
  access: "view"
69119
69138
  },
69139
+ "records.transact": {
69140
+ capName: "records",
69141
+ capScope: "system",
69142
+ addonId: null,
69143
+ access: "create"
69144
+ },
69120
69145
  "sceneMonitor.captureReference": {
69121
69146
  capName: "scene-monitor",
69122
69147
  capScope: "device",
@@ -70449,12 +70474,6 @@ Object.freeze({
70449
70474
  addonId: null,
70450
70475
  access: "view"
70451
70476
  },
70452
- "userManagement.listApiKeys": {
70453
- capName: "user-management",
70454
- capScope: "system",
70455
- addonId: null,
70456
- access: "view"
70457
- },
70458
70477
  "userManagement.listExternalIdentities": {
70459
70478
  capName: "user-management",
70460
70479
  capScope: "system",
@@ -70509,12 +70528,6 @@ Object.freeze({
70509
70528
  addonId: null,
70510
70529
  access: "create"
70511
70530
  },
70512
- "userManagement.revokeApiKey": {
70513
- capName: "user-management",
70514
- capScope: "system",
70515
- addonId: null,
70516
- access: "delete"
70517
- },
70518
70531
  "userManagement.revokeOauthSession": {
70519
70532
  capName: "user-management",
70520
70533
  capScope: "system",
@@ -73879,9 +73892,13 @@ new Map(Object.entries({
73879
73892
  "stream-online": "device-events",
73880
73893
  "stream-offline": "device-events",
73881
73894
  "detection-blind": "device-events",
73895
+ "motion-noisy": "device-events",
73896
+ "motion-calm": "device-events",
73882
73897
  "recording-stalled": "device-events",
73883
73898
  "recording-healthy": "device-events",
73884
73899
  "recording-degraded": "device-events",
73900
+ "device-attention-required": "device-events",
73901
+ "device-attention-resolved": "device-events",
73885
73902
  "node-online": "system",
73886
73903
  "node-offline": "system",
73887
73904
  "node-restarting": "system",
@@ -73964,6 +73981,12 @@ var NC_SYSTEM_EVENT_KIND_GROUP_SPECS = [
73964
73981
  label: "Detecting nothing",
73965
73982
  kinds: ["detection-blind"]
73966
73983
  },
73984
+ {
73985
+ id: "motion-noise",
73986
+ family: "device-events",
73987
+ label: "Motion without a subject",
73988
+ kinds: ["motion-noisy", "motion-calm"]
73989
+ },
73967
73990
  {
73968
73991
  id: "recording",
73969
73992
  family: "device-events",
@@ -73974,6 +73997,12 @@ var NC_SYSTEM_EVENT_KIND_GROUP_SPECS = [
73974
73997
  "recording-degraded"
73975
73998
  ]
73976
73999
  },
74000
+ {
74001
+ id: "device-attention",
74002
+ family: "device-events",
74003
+ label: "Needs attention",
74004
+ kinds: ["device-attention-required", "device-attention-resolved"]
74005
+ },
73977
74006
  {
73978
74007
  id: "nodes",
73979
74008
  family: "system",
@@ -74113,6 +74142,7 @@ var ALERT_EPISODE = [
74113
74142
  "alert-error",
74114
74143
  "alert-critical-resolved"
74115
74144
  ];
74145
+ var DEVICE_ATTENTION = ["device-attention-required", "device-attention-resolved"];
74116
74146
  var UPDATES = [
74117
74147
  "addon-update-available",
74118
74148
  "server-update-available",
@@ -74142,9 +74172,12 @@ var DEVICE_EVENTS = [
74142
74172
  "stream-online",
74143
74173
  "stream-offline",
74144
74174
  "detection-blind",
74175
+ "motion-noisy",
74176
+ "motion-calm",
74145
74177
  "recording-stalled",
74146
74178
  "recording-healthy",
74147
74179
  "recording-degraded",
74180
+ ...DEVICE_ATTENTION,
74148
74181
  ...ALARM
74149
74182
  ];
74150
74183
  /** Every kind a summary may speak about — the two summarisable families. */
@@ -74312,7 +74345,9 @@ var STATE_SUMMARY_VARS = [
74312
74345
  [...RULE_TEXT],
74313
74346
  [...RULE_TEXT],
74314
74347
  [...RULE_TEXT],
74315
- ([...RULE_TEXT], [...ALERT_EPISODE]),
74348
+ [...RULE_TEXT],
74349
+ [...RULE_TEXT],
74350
+ ([...RULE_TEXT], [...DEVICE_ATTENTION, ...ALERT_EPISODE]),
74316
74351
  [...RULE_TEXT],
74317
74352
  [...RULE_TEXT],
74318
74353
  [...RULE_TEXT],
@@ -74334,11 +74369,11 @@ var STATE_SUMMARY_VARS = [
74334
74369
  [...RULE_TEXT],
74335
74370
  [...RULE_TEXT],
74336
74371
  [...RULE_TEXT],
74372
+ ([...RULE_TEXT], [...DEVICE_ATTENTION, ...ALERT_EPISODE]),
74337
74373
  ([...RULE_TEXT], [...ALERT_EPISODE]),
74374
+ ([...RULE_TEXT], [...DEVICE_ATTENTION, ...ALERT_EPISODE]),
74338
74375
  ([...RULE_TEXT], [...ALERT_EPISODE]),
74339
- ([...RULE_TEXT], [...ALERT_EPISODE]),
74340
- ([...RULE_TEXT], [...ALERT_EPISODE]),
74341
- ([...RULE_TEXT], [...ALERT_EPISODE]),
74376
+ ([...RULE_TEXT], [...DEVICE_ATTENTION, ...ALERT_EPISODE]),
74342
74377
  [...RULE_TEXT],
74343
74378
  [...RULE_TEXT],
74344
74379
  [...RULE_TEXT],
@@ -74414,6 +74449,15 @@ new Map([
74414
74449
  snapshotLabel: "Tanks low or full now",
74415
74450
  snapshotSection: "tanks"
74416
74451
  },
74452
+ {
74453
+ id: "motion-noise",
74454
+ family: "device-events",
74455
+ label: "Motion without a subject (constant / calm again)",
74456
+ bad: ["motion-noisy"],
74457
+ recovery: ["motion-calm"],
74458
+ snapshotLabel: "Cameras with constant motion now",
74459
+ snapshotSection: null
74460
+ },
74417
74461
  {
74418
74462
  id: "recording-health",
74419
74463
  family: "device-events",
@@ -74423,6 +74467,15 @@ new Map([
74423
74467
  snapshotLabel: "Recordings stalled now",
74424
74468
  snapshotSection: null
74425
74469
  },
74470
+ {
74471
+ id: "device-attention",
74472
+ family: "device-events",
74473
+ label: "Device needs attention (raised / resolved)",
74474
+ bad: ["device-attention-required"],
74475
+ recovery: ["device-attention-resolved"],
74476
+ snapshotLabel: "Devices needing attention now",
74477
+ snapshotSection: null
74478
+ },
74426
74479
  {
74427
74480
  id: "node-connectivity",
74428
74481
  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",
@@ -54889,6 +54913,16 @@ object({
54889
54913
  powerState: string().nullable(),
54890
54914
  saltLevel: DishwasherConsumableLevelSchema.nullable(),
54891
54915
  rinseAidLevel: DishwasherConsumableLevelSchema.nullable(),
54916
+ /**
54917
+ * True while the appliance asks for its filter to be cleaned (smart-filter, filter-system or
54918
+ * combined care-and-filter reminder raised); false when every such reminder reads clear; null
54919
+ * when none is reported. A cleared reminder is not an unknown one.
54920
+ */
54921
+ filterCleaningDue: boolean().nullable(),
54922
+ /** True while the machine-care (descaling / cleaning-program) reminder is raised; false when clear; null when not reported. */
54923
+ machineCareDue: boolean().nullable(),
54924
+ /** Program runs left before the machine-care reminder is due; null when the appliance does not say. */
54925
+ machineCareRemainingRuns: number().int().nonnegative().nullable(),
54892
54926
  /** Option states: null when the appliance does not expose the option or has not said. */
54893
54927
  halfLoad: boolean().nullable(),
54894
54928
  hygienePlus: boolean().nullable(),
@@ -61506,16 +61540,6 @@ var UpdateUserInputSchema = object({
61506
61540
  allowedDevices: record(string(), union([array(string()), literal("*")])).optional(),
61507
61541
  scopes: array(TokenScopeSchema).optional()
61508
61542
  });
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
61543
  var OauthSessionSummarySchema = object({
61520
61544
  id: string(),
61521
61545
  userId: string(),
@@ -61537,8 +61561,7 @@ var TotpStatusSchema = object({
61537
61561
  confirmedAt: number().nullable()
61538
61562
  });
61539
61563
  /**
61540
- * user-management — singleton capability for user accounts and the
61541
- * legacy API-key rows.
61564
+ * user-management — singleton capability for user accounts.
61542
61565
  *
61543
61566
  * v2 model: every method gated by `auth: 'admin'`. Admin-only delegation
61544
61567
  * — the subset check on `setUserScopes` is moot
@@ -61594,10 +61617,6 @@ method(_void(), array(UserSummarySchema), { auth: "admin" }), method(CreateUserI
61594
61617
  }), UserSummarySchema.extend({ passwordHash: string() }).nullable(), {
61595
61618
  kind: "mutation",
61596
61619
  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
61620
  }), method(object({ userId: string() }), TotpSetupResultSchema, {
61602
61621
  kind: "mutation",
61603
61622
  auth: "admin",
@@ -69110,6 +69129,12 @@ Object.freeze({
69110
69129
  addonId: null,
69111
69130
  access: "view"
69112
69131
  },
69132
+ "records.transact": {
69133
+ capName: "records",
69134
+ capScope: "system",
69135
+ addonId: null,
69136
+ access: "create"
69137
+ },
69113
69138
  "sceneMonitor.captureReference": {
69114
69139
  capName: "scene-monitor",
69115
69140
  capScope: "device",
@@ -70442,12 +70467,6 @@ Object.freeze({
70442
70467
  addonId: null,
70443
70468
  access: "view"
70444
70469
  },
70445
- "userManagement.listApiKeys": {
70446
- capName: "user-management",
70447
- capScope: "system",
70448
- addonId: null,
70449
- access: "view"
70450
- },
70451
70470
  "userManagement.listExternalIdentities": {
70452
70471
  capName: "user-management",
70453
70472
  capScope: "system",
@@ -70502,12 +70521,6 @@ Object.freeze({
70502
70521
  addonId: null,
70503
70522
  access: "create"
70504
70523
  },
70505
- "userManagement.revokeApiKey": {
70506
- capName: "user-management",
70507
- capScope: "system",
70508
- addonId: null,
70509
- access: "delete"
70510
- },
70511
70524
  "userManagement.revokeOauthSession": {
70512
70525
  capName: "user-management",
70513
70526
  capScope: "system",
@@ -73872,9 +73885,13 @@ new Map(Object.entries({
73872
73885
  "stream-online": "device-events",
73873
73886
  "stream-offline": "device-events",
73874
73887
  "detection-blind": "device-events",
73888
+ "motion-noisy": "device-events",
73889
+ "motion-calm": "device-events",
73875
73890
  "recording-stalled": "device-events",
73876
73891
  "recording-healthy": "device-events",
73877
73892
  "recording-degraded": "device-events",
73893
+ "device-attention-required": "device-events",
73894
+ "device-attention-resolved": "device-events",
73878
73895
  "node-online": "system",
73879
73896
  "node-offline": "system",
73880
73897
  "node-restarting": "system",
@@ -73957,6 +73974,12 @@ var NC_SYSTEM_EVENT_KIND_GROUP_SPECS = [
73957
73974
  label: "Detecting nothing",
73958
73975
  kinds: ["detection-blind"]
73959
73976
  },
73977
+ {
73978
+ id: "motion-noise",
73979
+ family: "device-events",
73980
+ label: "Motion without a subject",
73981
+ kinds: ["motion-noisy", "motion-calm"]
73982
+ },
73960
73983
  {
73961
73984
  id: "recording",
73962
73985
  family: "device-events",
@@ -73967,6 +73990,12 @@ var NC_SYSTEM_EVENT_KIND_GROUP_SPECS = [
73967
73990
  "recording-degraded"
73968
73991
  ]
73969
73992
  },
73993
+ {
73994
+ id: "device-attention",
73995
+ family: "device-events",
73996
+ label: "Needs attention",
73997
+ kinds: ["device-attention-required", "device-attention-resolved"]
73998
+ },
73970
73999
  {
73971
74000
  id: "nodes",
73972
74001
  family: "system",
@@ -74106,6 +74135,7 @@ var ALERT_EPISODE = [
74106
74135
  "alert-error",
74107
74136
  "alert-critical-resolved"
74108
74137
  ];
74138
+ var DEVICE_ATTENTION = ["device-attention-required", "device-attention-resolved"];
74109
74139
  var UPDATES = [
74110
74140
  "addon-update-available",
74111
74141
  "server-update-available",
@@ -74135,9 +74165,12 @@ var DEVICE_EVENTS = [
74135
74165
  "stream-online",
74136
74166
  "stream-offline",
74137
74167
  "detection-blind",
74168
+ "motion-noisy",
74169
+ "motion-calm",
74138
74170
  "recording-stalled",
74139
74171
  "recording-healthy",
74140
74172
  "recording-degraded",
74173
+ ...DEVICE_ATTENTION,
74141
74174
  ...ALARM
74142
74175
  ];
74143
74176
  /** Every kind a summary may speak about — the two summarisable families. */
@@ -74305,7 +74338,9 @@ var STATE_SUMMARY_VARS = [
74305
74338
  [...RULE_TEXT],
74306
74339
  [...RULE_TEXT],
74307
74340
  [...RULE_TEXT],
74308
- ([...RULE_TEXT], [...ALERT_EPISODE]),
74341
+ [...RULE_TEXT],
74342
+ [...RULE_TEXT],
74343
+ ([...RULE_TEXT], [...DEVICE_ATTENTION, ...ALERT_EPISODE]),
74309
74344
  [...RULE_TEXT],
74310
74345
  [...RULE_TEXT],
74311
74346
  [...RULE_TEXT],
@@ -74327,11 +74362,11 @@ var STATE_SUMMARY_VARS = [
74327
74362
  [...RULE_TEXT],
74328
74363
  [...RULE_TEXT],
74329
74364
  [...RULE_TEXT],
74365
+ ([...RULE_TEXT], [...DEVICE_ATTENTION, ...ALERT_EPISODE]),
74330
74366
  ([...RULE_TEXT], [...ALERT_EPISODE]),
74367
+ ([...RULE_TEXT], [...DEVICE_ATTENTION, ...ALERT_EPISODE]),
74331
74368
  ([...RULE_TEXT], [...ALERT_EPISODE]),
74332
- ([...RULE_TEXT], [...ALERT_EPISODE]),
74333
- ([...RULE_TEXT], [...ALERT_EPISODE]),
74334
- ([...RULE_TEXT], [...ALERT_EPISODE]),
74369
+ ([...RULE_TEXT], [...DEVICE_ATTENTION, ...ALERT_EPISODE]),
74335
74370
  [...RULE_TEXT],
74336
74371
  [...RULE_TEXT],
74337
74372
  [...RULE_TEXT],
@@ -74407,6 +74442,15 @@ new Map([
74407
74442
  snapshotLabel: "Tanks low or full now",
74408
74443
  snapshotSection: "tanks"
74409
74444
  },
74445
+ {
74446
+ id: "motion-noise",
74447
+ family: "device-events",
74448
+ label: "Motion without a subject (constant / calm again)",
74449
+ bad: ["motion-noisy"],
74450
+ recovery: ["motion-calm"],
74451
+ snapshotLabel: "Cameras with constant motion now",
74452
+ snapshotSection: null
74453
+ },
74410
74454
  {
74411
74455
  id: "recording-health",
74412
74456
  family: "device-events",
@@ -74416,6 +74460,15 @@ new Map([
74416
74460
  snapshotLabel: "Recordings stalled now",
74417
74461
  snapshotSection: null
74418
74462
  },
74463
+ {
74464
+ id: "device-attention",
74465
+ family: "device-events",
74466
+ label: "Device needs attention (raised / resolved)",
74467
+ bad: ["device-attention-required"],
74468
+ recovery: ["device-attention-resolved"],
74469
+ snapshotLabel: "Devices needing attention now",
74470
+ snapshotSection: null
74471
+ },
74419
74472
  {
74420
74473
  id: "node-connectivity",
74421
74474
  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.141",
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",