@camstack/addon-export-alexa 1.2.160 → 1.2.161

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.
@@ -34,7 +34,7 @@ let node_path = require("node:path");
34
34
  node_path = __toESM(node_path, 1);
35
35
  require("node:child_process");
36
36
  require("node:zlib");
37
- //#region ../types/dist/event-category-7pZEBmVg.mjs
37
+ //#region ../types/dist/event-category-BfJwUd2S.mjs
38
38
  var EventCategory = /* @__PURE__ */ function(EventCategory) {
39
39
  EventCategory["SystemBoot"] = "system.boot";
40
40
  EventCategory["SystemAddonsReady"] = "system.addons-ready";
@@ -351,6 +351,15 @@ var EventCategory = /* @__PURE__ */ function(EventCategory) {
351
351
  */
352
352
  EventCategory["PipelineDetectionBlind"] = "pipeline.detection-blind";
353
353
  /**
354
+ * A camera's motion source has fired constantly with no subject for an hour
355
+ * (motion duty or session count over the bar, zero detections) — it is not
356
+ * blind, its motion zones or sensitivity want tuning (D907). Paired with
357
+ * {@link PipelineMotionCalm}.
358
+ */
359
+ EventCategory["PipelineMotionNoisy"] = "pipeline.motion-noisy";
360
+ /** The recovery edge of {@link PipelineMotionNoisy}: the motion fell back, or a detection arrived. */
361
+ EventCategory["PipelineMotionCalm"] = "pipeline.motion-calm";
362
+ /**
354
363
  * Per-camera pipeline config was mutated by the orchestrator
355
364
  * (3-level settings change via `setAgentAddonDefaults` /
356
365
  * `setCameraStepToggle` / `setCameraPipelineForAgent` or a
@@ -5457,7 +5466,7 @@ var ZodIssueCode = {
5457
5466
  var ZodFirstPartyTypeKind;
5458
5467
  ZodFirstPartyTypeKind || (ZodFirstPartyTypeKind = {});
5459
5468
  //#endregion
5460
- //#region ../types/dist/sleep-CueztlR1.mjs
5469
+ //#region ../types/dist/sleep-DJFUfKvA.mjs
5461
5470
  /**
5462
5471
  * The audio chunk plane's byte format, and the ONE expansion from a coded
5463
5472
  * window to float samples (D455).
@@ -7919,7 +7928,7 @@ var EntryDescriptorSchema = object({
7919
7928
  /** JSON Schema of the entry body; `secret: true` marks a password field. */
7920
7929
  fields: record(string(), unknown())
7921
7930
  }).strict();
7922
- /** What crosses the wire and sits in the engine's catalog: JSON only, no Zod. */
7931
+ /** What crosses the wire from an addon: JSON only, no Zod. An unknown key is refused. */
7923
7932
  var RecordKindDeclarationSchema = object({
7924
7933
  database: _enum(RECORD_DATABASES).default("settings"),
7925
7934
  class: _enum(RECORD_CLASSES),
@@ -7938,14 +7947,6 @@ var RecordKindDeclarationSchema = object({
7938
7947
  secretPaths: array(string().min(1)).default([]),
7939
7948
  /** The id key of each array that carries a secret (`{ headers: 'name' }`). */
7940
7949
  secretArrayKeys: record(string(), string()).default({}),
7941
- /**
7942
- * RETIRED (D900): the legacy table a kind adopted from during the records
7943
- * migration. Nothing declares it any more and nothing reads it; the schema
7944
- * still ACCEPTS it because the catalog rows the migration wrote carry it
7945
- * (an orphaned kind is never redeclared) and an addon built before the
7946
- * removal still sends it. Never set it.
7947
- */
7948
- adoptsFrom: string().min(1).optional(),
7949
7950
  /** Kinds that must agree through `transact` sit in one file under one family name. */
7950
7951
  transactFamily: string().min(1).optional(),
7951
7952
  entry: EntryDescriptorSchema.optional()
@@ -12905,17 +12906,6 @@ object({
12905
12906
  createdAt: number(),
12906
12907
  updatedAt: number()
12907
12908
  });
12908
- object({
12909
- id: string(),
12910
- label: string(),
12911
- isAdmin: boolean().default(false),
12912
- allowedProviders: AllowedProviderSchema,
12913
- allowedDevices: AllowedDevicesSchema,
12914
- tokenHash: string(),
12915
- tokenPrefix: string(),
12916
- createdAt: number(),
12917
- lastUsedAt: number().optional()
12918
- });
12919
12909
  object({
12920
12910
  id: string(),
12921
12911
  userId: string(),
@@ -16810,16 +16800,36 @@ var RecordKindStateSchema = _enum([
16810
16800
  var DeclareKindResultSchema = object({
16811
16801
  kindId: number().int(),
16812
16802
  state: RecordKindStateSchema,
16813
- createdIndexes: array(string()),
16814
- /**
16815
- * RETIRED (D900): always `null`. It carried the records-migration boot guard;
16816
- * it stays on the wire, null, because an addon built before the removal reads
16817
- * an ABSENT field as "adoption pending" and refuses to start.
16818
- */
16819
- adoptionPending: _null()
16803
+ createdIndexes: array(string())
16820
16804
  });
16821
16805
  /** Keychain refs a write released (the old marker is gone from the row): the owner deletes the values. */
16822
16806
  var SecretRefsList = array(string());
16807
+ /**
16808
+ * One op of a `transact`: the single-row writes, each on a kind of the caller.
16809
+ * All ops of one call share ONE database file and ONE `transactFamily`.
16810
+ */
16811
+ var RecordTransactOpSchema = discriminatedUnion("op", [
16812
+ object({
16813
+ op: literal("put"),
16814
+ kind: RecordKindNameSchema,
16815
+ record: RecordInputSchema,
16816
+ ifRev: number().int().min(0).optional()
16817
+ }),
16818
+ object({
16819
+ op: literal("patch"),
16820
+ kind: RecordKindNameSchema,
16821
+ id: RecordIdSchema,
16822
+ data: RecordBodySchema,
16823
+ at: number().int().nullable().optional(),
16824
+ expiresAt: number().int().nullable().optional(),
16825
+ ifRev: number().int().min(1).optional()
16826
+ }),
16827
+ object({
16828
+ op: literal("delete"),
16829
+ kind: RecordKindNameSchema,
16830
+ id: RecordIdSchema
16831
+ })
16832
+ ]);
16823
16833
  var RecordSecretRefsSchema = record(string(), record(string(), string()));
16824
16834
  method(object({ kinds: record(RecordKindNameSchema, RecordKindDeclarationSchema) }), object({ kinds: record(string(), DeclareKindResultSchema) }), {
16825
16835
  kind: "mutation",
@@ -16926,6 +16936,16 @@ method(object({ kinds: record(RecordKindNameSchema, RecordKindDeclarationSchema)
16926
16936
  }), {
16927
16937
  kind: "mutation",
16928
16938
  auth: "admin"
16939
+ }), method(object({ ops: array(RecordTransactOpSchema).min(1).max(RECORD_BATCH_MAX) }), object({
16940
+ results: array(object({
16941
+ rev: number().int().nullable(),
16942
+ deleted: boolean()
16943
+ })),
16944
+ releasedRefs: SecretRefsList,
16945
+ secretRefs: SecretRefsList
16946
+ }), {
16947
+ kind: "mutation",
16948
+ auth: "admin"
16929
16949
  }), method(object({
16930
16950
  deviceId: number().int(),
16931
16951
  kinds: array(RecordKindNameSchema).optional()
@@ -42309,9 +42329,13 @@ var NcSystemEventKindSchema = _enum([
42309
42329
  "node-updating",
42310
42330
  "node-inference-unavailable",
42311
42331
  "detection-blind",
42332
+ "motion-noisy",
42333
+ "motion-calm",
42312
42334
  "recording-stalled",
42313
42335
  "recording-healthy",
42314
42336
  "recording-degraded",
42337
+ "device-attention-required",
42338
+ "device-attention-resolved",
42315
42339
  "storage-location-low",
42316
42340
  "storage-location-critical",
42317
42341
  "storage-location-ok",
@@ -54808,6 +54832,16 @@ object({
54808
54832
  powerState: string().nullable(),
54809
54833
  saltLevel: DishwasherConsumableLevelSchema.nullable(),
54810
54834
  rinseAidLevel: DishwasherConsumableLevelSchema.nullable(),
54835
+ /**
54836
+ * True while the appliance asks for its filter to be cleaned (smart-filter, filter-system or
54837
+ * combined care-and-filter reminder raised); false when every such reminder reads clear; null
54838
+ * when none is reported. A cleared reminder is not an unknown one.
54839
+ */
54840
+ filterCleaningDue: boolean().nullable(),
54841
+ /** True while the machine-care (descaling / cleaning-program) reminder is raised; false when clear; null when not reported. */
54842
+ machineCareDue: boolean().nullable(),
54843
+ /** Program runs left before the machine-care reminder is due; null when the appliance does not say. */
54844
+ machineCareRemainingRuns: number().int().nonnegative().nullable(),
54811
54845
  /** Option states: null when the appliance does not expose the option or has not said. */
54812
54846
  halfLoad: boolean().nullable(),
54813
54847
  hygienePlus: boolean().nullable(),
@@ -61456,16 +61490,6 @@ var UpdateUserInputSchema = object({
61456
61490
  allowedDevices: record(string(), union([array(string()), literal("*")])).optional(),
61457
61491
  scopes: array(TokenScopeSchema).optional()
61458
61492
  });
61459
- var ApiKeySummarySchema = object({
61460
- id: string(),
61461
- label: string(),
61462
- isAdmin: boolean().default(false),
61463
- allowedProviders: union([array(string()), literal("*")]).optional(),
61464
- allowedDevices: record(string(), union([array(string()), literal("*")])).optional(),
61465
- tokenPrefix: string(),
61466
- createdAt: number(),
61467
- lastUsedAt: number().optional()
61468
- });
61469
61493
  var OauthSessionSummarySchema = object({
61470
61494
  id: string(),
61471
61495
  userId: string(),
@@ -61487,8 +61511,7 @@ var TotpStatusSchema = object({
61487
61511
  confirmedAt: number().nullable()
61488
61512
  });
61489
61513
  /**
61490
- * user-management — singleton capability for user accounts and the
61491
- * legacy API-key rows.
61514
+ * user-management — singleton capability for user accounts.
61492
61515
  *
61493
61516
  * v2 model: every method gated by `auth: 'admin'`. Admin-only delegation
61494
61517
  * — the subset check on `setUserScopes` is moot
@@ -61544,10 +61567,6 @@ method(_void(), array(UserSummarySchema), { auth: "admin" }), method(CreateUserI
61544
61567
  }), UserSummarySchema.extend({ passwordHash: string() }).nullable(), {
61545
61568
  kind: "mutation",
61546
61569
  access: "view"
61547
- }), method(_void(), array(ApiKeySummarySchema), { auth: "admin" }), method(object({ id: string() }), object({ success: literal(true) }), {
61548
- kind: "mutation",
61549
- auth: "admin",
61550
- access: "delete"
61551
61570
  }), method(object({ userId: string() }), TotpSetupResultSchema, {
61552
61571
  kind: "mutation",
61553
61572
  auth: "admin",
@@ -69060,6 +69079,12 @@ Object.freeze({
69060
69079
  addonId: null,
69061
69080
  access: "view"
69062
69081
  },
69082
+ "records.transact": {
69083
+ capName: "records",
69084
+ capScope: "system",
69085
+ addonId: null,
69086
+ access: "create"
69087
+ },
69063
69088
  "sceneMonitor.captureReference": {
69064
69089
  capName: "scene-monitor",
69065
69090
  capScope: "device",
@@ -70392,12 +70417,6 @@ Object.freeze({
70392
70417
  addonId: null,
70393
70418
  access: "view"
70394
70419
  },
70395
- "userManagement.listApiKeys": {
70396
- capName: "user-management",
70397
- capScope: "system",
70398
- addonId: null,
70399
- access: "view"
70400
- },
70401
70420
  "userManagement.listExternalIdentities": {
70402
70421
  capName: "user-management",
70403
70422
  capScope: "system",
@@ -70452,12 +70471,6 @@ Object.freeze({
70452
70471
  addonId: null,
70453
70472
  access: "create"
70454
70473
  },
70455
- "userManagement.revokeApiKey": {
70456
- capName: "user-management",
70457
- capScope: "system",
70458
- addonId: null,
70459
- access: "delete"
70460
- },
70461
70474
  "userManagement.revokeOauthSession": {
70462
70475
  capName: "user-management",
70463
70476
  capScope: "system",
@@ -73822,9 +73835,13 @@ new Map(Object.entries({
73822
73835
  "stream-online": "device-events",
73823
73836
  "stream-offline": "device-events",
73824
73837
  "detection-blind": "device-events",
73838
+ "motion-noisy": "device-events",
73839
+ "motion-calm": "device-events",
73825
73840
  "recording-stalled": "device-events",
73826
73841
  "recording-healthy": "device-events",
73827
73842
  "recording-degraded": "device-events",
73843
+ "device-attention-required": "device-events",
73844
+ "device-attention-resolved": "device-events",
73828
73845
  "node-online": "system",
73829
73846
  "node-offline": "system",
73830
73847
  "node-restarting": "system",
@@ -73907,6 +73924,12 @@ var NC_SYSTEM_EVENT_KIND_GROUP_SPECS = [
73907
73924
  label: "Detecting nothing",
73908
73925
  kinds: ["detection-blind"]
73909
73926
  },
73927
+ {
73928
+ id: "motion-noise",
73929
+ family: "device-events",
73930
+ label: "Motion without a subject",
73931
+ kinds: ["motion-noisy", "motion-calm"]
73932
+ },
73910
73933
  {
73911
73934
  id: "recording",
73912
73935
  family: "device-events",
@@ -73917,6 +73940,12 @@ var NC_SYSTEM_EVENT_KIND_GROUP_SPECS = [
73917
73940
  "recording-degraded"
73918
73941
  ]
73919
73942
  },
73943
+ {
73944
+ id: "device-attention",
73945
+ family: "device-events",
73946
+ label: "Needs attention",
73947
+ kinds: ["device-attention-required", "device-attention-resolved"]
73948
+ },
73920
73949
  {
73921
73950
  id: "nodes",
73922
73951
  family: "system",
@@ -74056,6 +74085,7 @@ var ALERT_EPISODE = [
74056
74085
  "alert-error",
74057
74086
  "alert-critical-resolved"
74058
74087
  ];
74088
+ var DEVICE_ATTENTION = ["device-attention-required", "device-attention-resolved"];
74059
74089
  var UPDATES = [
74060
74090
  "addon-update-available",
74061
74091
  "server-update-available",
@@ -74085,9 +74115,12 @@ var DEVICE_EVENTS = [
74085
74115
  "stream-online",
74086
74116
  "stream-offline",
74087
74117
  "detection-blind",
74118
+ "motion-noisy",
74119
+ "motion-calm",
74088
74120
  "recording-stalled",
74089
74121
  "recording-healthy",
74090
74122
  "recording-degraded",
74123
+ ...DEVICE_ATTENTION,
74091
74124
  ...ALARM
74092
74125
  ];
74093
74126
  /** Every kind a summary may speak about — the two summarisable families. */
@@ -74255,7 +74288,9 @@ var STATE_SUMMARY_VARS = [
74255
74288
  [...RULE_TEXT],
74256
74289
  [...RULE_TEXT],
74257
74290
  [...RULE_TEXT],
74258
- ([...RULE_TEXT], [...ALERT_EPISODE]),
74291
+ [...RULE_TEXT],
74292
+ [...RULE_TEXT],
74293
+ ([...RULE_TEXT], [...DEVICE_ATTENTION, ...ALERT_EPISODE]),
74259
74294
  [...RULE_TEXT],
74260
74295
  [...RULE_TEXT],
74261
74296
  [...RULE_TEXT],
@@ -74277,11 +74312,11 @@ var STATE_SUMMARY_VARS = [
74277
74312
  [...RULE_TEXT],
74278
74313
  [...RULE_TEXT],
74279
74314
  [...RULE_TEXT],
74315
+ ([...RULE_TEXT], [...DEVICE_ATTENTION, ...ALERT_EPISODE]),
74280
74316
  ([...RULE_TEXT], [...ALERT_EPISODE]),
74317
+ ([...RULE_TEXT], [...DEVICE_ATTENTION, ...ALERT_EPISODE]),
74281
74318
  ([...RULE_TEXT], [...ALERT_EPISODE]),
74282
- ([...RULE_TEXT], [...ALERT_EPISODE]),
74283
- ([...RULE_TEXT], [...ALERT_EPISODE]),
74284
- ([...RULE_TEXT], [...ALERT_EPISODE]),
74319
+ ([...RULE_TEXT], [...DEVICE_ATTENTION, ...ALERT_EPISODE]),
74285
74320
  [...RULE_TEXT],
74286
74321
  [...RULE_TEXT],
74287
74322
  [...RULE_TEXT],
@@ -74357,6 +74392,15 @@ new Map([
74357
74392
  snapshotLabel: "Tanks low or full now",
74358
74393
  snapshotSection: "tanks"
74359
74394
  },
74395
+ {
74396
+ id: "motion-noise",
74397
+ family: "device-events",
74398
+ label: "Motion without a subject (constant / calm again)",
74399
+ bad: ["motion-noisy"],
74400
+ recovery: ["motion-calm"],
74401
+ snapshotLabel: "Cameras with constant motion now",
74402
+ snapshotSection: null
74403
+ },
74360
74404
  {
74361
74405
  id: "recording-health",
74362
74406
  family: "device-events",
@@ -74366,6 +74410,15 @@ new Map([
74366
74410
  snapshotLabel: "Recordings stalled now",
74367
74411
  snapshotSection: null
74368
74412
  },
74413
+ {
74414
+ id: "device-attention",
74415
+ family: "device-events",
74416
+ label: "Device needs attention (raised / resolved)",
74417
+ bad: ["device-attention-required"],
74418
+ recovery: ["device-attention-resolved"],
74419
+ snapshotLabel: "Devices needing attention now",
74420
+ snapshotSection: null
74421
+ },
74369
74422
  {
74370
74423
  id: "node-connectivity",
74371
74424
  family: "system",
@@ -5,7 +5,7 @@ import "node:fs";
5
5
  import "node:path";
6
6
  import "node:child_process";
7
7
  import "node:zlib";
8
- //#region ../types/dist/event-category-7pZEBmVg.mjs
8
+ //#region ../types/dist/event-category-BfJwUd2S.mjs
9
9
  var EventCategory = /* @__PURE__ */ function(EventCategory) {
10
10
  EventCategory["SystemBoot"] = "system.boot";
11
11
  EventCategory["SystemAddonsReady"] = "system.addons-ready";
@@ -322,6 +322,15 @@ var EventCategory = /* @__PURE__ */ function(EventCategory) {
322
322
  */
323
323
  EventCategory["PipelineDetectionBlind"] = "pipeline.detection-blind";
324
324
  /**
325
+ * A camera's motion source has fired constantly with no subject for an hour
326
+ * (motion duty or session count over the bar, zero detections) — it is not
327
+ * blind, its motion zones or sensitivity want tuning (D907). Paired with
328
+ * {@link PipelineMotionCalm}.
329
+ */
330
+ EventCategory["PipelineMotionNoisy"] = "pipeline.motion-noisy";
331
+ /** The recovery edge of {@link PipelineMotionNoisy}: the motion fell back, or a detection arrived. */
332
+ EventCategory["PipelineMotionCalm"] = "pipeline.motion-calm";
333
+ /**
325
334
  * Per-camera pipeline config was mutated by the orchestrator
326
335
  * (3-level settings change via `setAgentAddonDefaults` /
327
336
  * `setCameraStepToggle` / `setCameraPipelineForAgent` or a
@@ -5428,7 +5437,7 @@ var ZodIssueCode = {
5428
5437
  var ZodFirstPartyTypeKind;
5429
5438
  ZodFirstPartyTypeKind || (ZodFirstPartyTypeKind = {});
5430
5439
  //#endregion
5431
- //#region ../types/dist/sleep-CueztlR1.mjs
5440
+ //#region ../types/dist/sleep-DJFUfKvA.mjs
5432
5441
  /**
5433
5442
  * The audio chunk plane's byte format, and the ONE expansion from a coded
5434
5443
  * window to float samples (D455).
@@ -7890,7 +7899,7 @@ var EntryDescriptorSchema = object({
7890
7899
  /** JSON Schema of the entry body; `secret: true` marks a password field. */
7891
7900
  fields: record(string(), unknown())
7892
7901
  }).strict();
7893
- /** What crosses the wire and sits in the engine's catalog: JSON only, no Zod. */
7902
+ /** What crosses the wire from an addon: JSON only, no Zod. An unknown key is refused. */
7894
7903
  var RecordKindDeclarationSchema = object({
7895
7904
  database: _enum(RECORD_DATABASES).default("settings"),
7896
7905
  class: _enum(RECORD_CLASSES),
@@ -7909,14 +7918,6 @@ var RecordKindDeclarationSchema = object({
7909
7918
  secretPaths: array(string().min(1)).default([]),
7910
7919
  /** The id key of each array that carries a secret (`{ headers: 'name' }`). */
7911
7920
  secretArrayKeys: record(string(), string()).default({}),
7912
- /**
7913
- * RETIRED (D900): the legacy table a kind adopted from during the records
7914
- * migration. Nothing declares it any more and nothing reads it; the schema
7915
- * still ACCEPTS it because the catalog rows the migration wrote carry it
7916
- * (an orphaned kind is never redeclared) and an addon built before the
7917
- * removal still sends it. Never set it.
7918
- */
7919
- adoptsFrom: string().min(1).optional(),
7920
7921
  /** Kinds that must agree through `transact` sit in one file under one family name. */
7921
7922
  transactFamily: string().min(1).optional(),
7922
7923
  entry: EntryDescriptorSchema.optional()
@@ -12876,17 +12877,6 @@ object({
12876
12877
  createdAt: number(),
12877
12878
  updatedAt: number()
12878
12879
  });
12879
- object({
12880
- id: string(),
12881
- label: string(),
12882
- isAdmin: boolean().default(false),
12883
- allowedProviders: AllowedProviderSchema,
12884
- allowedDevices: AllowedDevicesSchema,
12885
- tokenHash: string(),
12886
- tokenPrefix: string(),
12887
- createdAt: number(),
12888
- lastUsedAt: number().optional()
12889
- });
12890
12880
  object({
12891
12881
  id: string(),
12892
12882
  userId: string(),
@@ -16781,16 +16771,36 @@ var RecordKindStateSchema = _enum([
16781
16771
  var DeclareKindResultSchema = object({
16782
16772
  kindId: number().int(),
16783
16773
  state: RecordKindStateSchema,
16784
- createdIndexes: array(string()),
16785
- /**
16786
- * RETIRED (D900): always `null`. It carried the records-migration boot guard;
16787
- * it stays on the wire, null, because an addon built before the removal reads
16788
- * an ABSENT field as "adoption pending" and refuses to start.
16789
- */
16790
- adoptionPending: _null()
16774
+ createdIndexes: array(string())
16791
16775
  });
16792
16776
  /** Keychain refs a write released (the old marker is gone from the row): the owner deletes the values. */
16793
16777
  var SecretRefsList = array(string());
16778
+ /**
16779
+ * One op of a `transact`: the single-row writes, each on a kind of the caller.
16780
+ * All ops of one call share ONE database file and ONE `transactFamily`.
16781
+ */
16782
+ var RecordTransactOpSchema = discriminatedUnion("op", [
16783
+ object({
16784
+ op: literal("put"),
16785
+ kind: RecordKindNameSchema,
16786
+ record: RecordInputSchema,
16787
+ ifRev: number().int().min(0).optional()
16788
+ }),
16789
+ object({
16790
+ op: literal("patch"),
16791
+ kind: RecordKindNameSchema,
16792
+ id: RecordIdSchema,
16793
+ data: RecordBodySchema,
16794
+ at: number().int().nullable().optional(),
16795
+ expiresAt: number().int().nullable().optional(),
16796
+ ifRev: number().int().min(1).optional()
16797
+ }),
16798
+ object({
16799
+ op: literal("delete"),
16800
+ kind: RecordKindNameSchema,
16801
+ id: RecordIdSchema
16802
+ })
16803
+ ]);
16794
16804
  var RecordSecretRefsSchema = record(string(), record(string(), string()));
16795
16805
  method(object({ kinds: record(RecordKindNameSchema, RecordKindDeclarationSchema) }), object({ kinds: record(string(), DeclareKindResultSchema) }), {
16796
16806
  kind: "mutation",
@@ -16897,6 +16907,16 @@ method(object({ kinds: record(RecordKindNameSchema, RecordKindDeclarationSchema)
16897
16907
  }), {
16898
16908
  kind: "mutation",
16899
16909
  auth: "admin"
16910
+ }), method(object({ ops: array(RecordTransactOpSchema).min(1).max(RECORD_BATCH_MAX) }), object({
16911
+ results: array(object({
16912
+ rev: number().int().nullable(),
16913
+ deleted: boolean()
16914
+ })),
16915
+ releasedRefs: SecretRefsList,
16916
+ secretRefs: SecretRefsList
16917
+ }), {
16918
+ kind: "mutation",
16919
+ auth: "admin"
16900
16920
  }), method(object({
16901
16921
  deviceId: number().int(),
16902
16922
  kinds: array(RecordKindNameSchema).optional()
@@ -42280,9 +42300,13 @@ var NcSystemEventKindSchema = _enum([
42280
42300
  "node-updating",
42281
42301
  "node-inference-unavailable",
42282
42302
  "detection-blind",
42303
+ "motion-noisy",
42304
+ "motion-calm",
42283
42305
  "recording-stalled",
42284
42306
  "recording-healthy",
42285
42307
  "recording-degraded",
42308
+ "device-attention-required",
42309
+ "device-attention-resolved",
42286
42310
  "storage-location-low",
42287
42311
  "storage-location-critical",
42288
42312
  "storage-location-ok",
@@ -54779,6 +54803,16 @@ object({
54779
54803
  powerState: string().nullable(),
54780
54804
  saltLevel: DishwasherConsumableLevelSchema.nullable(),
54781
54805
  rinseAidLevel: DishwasherConsumableLevelSchema.nullable(),
54806
+ /**
54807
+ * True while the appliance asks for its filter to be cleaned (smart-filter, filter-system or
54808
+ * combined care-and-filter reminder raised); false when every such reminder reads clear; null
54809
+ * when none is reported. A cleared reminder is not an unknown one.
54810
+ */
54811
+ filterCleaningDue: boolean().nullable(),
54812
+ /** True while the machine-care (descaling / cleaning-program) reminder is raised; false when clear; null when not reported. */
54813
+ machineCareDue: boolean().nullable(),
54814
+ /** Program runs left before the machine-care reminder is due; null when the appliance does not say. */
54815
+ machineCareRemainingRuns: number().int().nonnegative().nullable(),
54782
54816
  /** Option states: null when the appliance does not expose the option or has not said. */
54783
54817
  halfLoad: boolean().nullable(),
54784
54818
  hygienePlus: boolean().nullable(),
@@ -61427,16 +61461,6 @@ var UpdateUserInputSchema = object({
61427
61461
  allowedDevices: record(string(), union([array(string()), literal("*")])).optional(),
61428
61462
  scopes: array(TokenScopeSchema).optional()
61429
61463
  });
61430
- var ApiKeySummarySchema = object({
61431
- id: string(),
61432
- label: string(),
61433
- isAdmin: boolean().default(false),
61434
- allowedProviders: union([array(string()), literal("*")]).optional(),
61435
- allowedDevices: record(string(), union([array(string()), literal("*")])).optional(),
61436
- tokenPrefix: string(),
61437
- createdAt: number(),
61438
- lastUsedAt: number().optional()
61439
- });
61440
61464
  var OauthSessionSummarySchema = object({
61441
61465
  id: string(),
61442
61466
  userId: string(),
@@ -61458,8 +61482,7 @@ var TotpStatusSchema = object({
61458
61482
  confirmedAt: number().nullable()
61459
61483
  });
61460
61484
  /**
61461
- * user-management — singleton capability for user accounts and the
61462
- * legacy API-key rows.
61485
+ * user-management — singleton capability for user accounts.
61463
61486
  *
61464
61487
  * v2 model: every method gated by `auth: 'admin'`. Admin-only delegation
61465
61488
  * — the subset check on `setUserScopes` is moot
@@ -61515,10 +61538,6 @@ method(_void(), array(UserSummarySchema), { auth: "admin" }), method(CreateUserI
61515
61538
  }), UserSummarySchema.extend({ passwordHash: string() }).nullable(), {
61516
61539
  kind: "mutation",
61517
61540
  access: "view"
61518
- }), method(_void(), array(ApiKeySummarySchema), { auth: "admin" }), method(object({ id: string() }), object({ success: literal(true) }), {
61519
- kind: "mutation",
61520
- auth: "admin",
61521
- access: "delete"
61522
61541
  }), method(object({ userId: string() }), TotpSetupResultSchema, {
61523
61542
  kind: "mutation",
61524
61543
  auth: "admin",
@@ -69031,6 +69050,12 @@ Object.freeze({
69031
69050
  addonId: null,
69032
69051
  access: "view"
69033
69052
  },
69053
+ "records.transact": {
69054
+ capName: "records",
69055
+ capScope: "system",
69056
+ addonId: null,
69057
+ access: "create"
69058
+ },
69034
69059
  "sceneMonitor.captureReference": {
69035
69060
  capName: "scene-monitor",
69036
69061
  capScope: "device",
@@ -70363,12 +70388,6 @@ Object.freeze({
70363
70388
  addonId: null,
70364
70389
  access: "view"
70365
70390
  },
70366
- "userManagement.listApiKeys": {
70367
- capName: "user-management",
70368
- capScope: "system",
70369
- addonId: null,
70370
- access: "view"
70371
- },
70372
70391
  "userManagement.listExternalIdentities": {
70373
70392
  capName: "user-management",
70374
70393
  capScope: "system",
@@ -70423,12 +70442,6 @@ Object.freeze({
70423
70442
  addonId: null,
70424
70443
  access: "create"
70425
70444
  },
70426
- "userManagement.revokeApiKey": {
70427
- capName: "user-management",
70428
- capScope: "system",
70429
- addonId: null,
70430
- access: "delete"
70431
- },
70432
70445
  "userManagement.revokeOauthSession": {
70433
70446
  capName: "user-management",
70434
70447
  capScope: "system",
@@ -73793,9 +73806,13 @@ new Map(Object.entries({
73793
73806
  "stream-online": "device-events",
73794
73807
  "stream-offline": "device-events",
73795
73808
  "detection-blind": "device-events",
73809
+ "motion-noisy": "device-events",
73810
+ "motion-calm": "device-events",
73796
73811
  "recording-stalled": "device-events",
73797
73812
  "recording-healthy": "device-events",
73798
73813
  "recording-degraded": "device-events",
73814
+ "device-attention-required": "device-events",
73815
+ "device-attention-resolved": "device-events",
73799
73816
  "node-online": "system",
73800
73817
  "node-offline": "system",
73801
73818
  "node-restarting": "system",
@@ -73878,6 +73895,12 @@ var NC_SYSTEM_EVENT_KIND_GROUP_SPECS = [
73878
73895
  label: "Detecting nothing",
73879
73896
  kinds: ["detection-blind"]
73880
73897
  },
73898
+ {
73899
+ id: "motion-noise",
73900
+ family: "device-events",
73901
+ label: "Motion without a subject",
73902
+ kinds: ["motion-noisy", "motion-calm"]
73903
+ },
73881
73904
  {
73882
73905
  id: "recording",
73883
73906
  family: "device-events",
@@ -73888,6 +73911,12 @@ var NC_SYSTEM_EVENT_KIND_GROUP_SPECS = [
73888
73911
  "recording-degraded"
73889
73912
  ]
73890
73913
  },
73914
+ {
73915
+ id: "device-attention",
73916
+ family: "device-events",
73917
+ label: "Needs attention",
73918
+ kinds: ["device-attention-required", "device-attention-resolved"]
73919
+ },
73891
73920
  {
73892
73921
  id: "nodes",
73893
73922
  family: "system",
@@ -74027,6 +74056,7 @@ var ALERT_EPISODE = [
74027
74056
  "alert-error",
74028
74057
  "alert-critical-resolved"
74029
74058
  ];
74059
+ var DEVICE_ATTENTION = ["device-attention-required", "device-attention-resolved"];
74030
74060
  var UPDATES = [
74031
74061
  "addon-update-available",
74032
74062
  "server-update-available",
@@ -74056,9 +74086,12 @@ var DEVICE_EVENTS = [
74056
74086
  "stream-online",
74057
74087
  "stream-offline",
74058
74088
  "detection-blind",
74089
+ "motion-noisy",
74090
+ "motion-calm",
74059
74091
  "recording-stalled",
74060
74092
  "recording-healthy",
74061
74093
  "recording-degraded",
74094
+ ...DEVICE_ATTENTION,
74062
74095
  ...ALARM
74063
74096
  ];
74064
74097
  /** Every kind a summary may speak about — the two summarisable families. */
@@ -74226,7 +74259,9 @@ var STATE_SUMMARY_VARS = [
74226
74259
  [...RULE_TEXT],
74227
74260
  [...RULE_TEXT],
74228
74261
  [...RULE_TEXT],
74229
- ([...RULE_TEXT], [...ALERT_EPISODE]),
74262
+ [...RULE_TEXT],
74263
+ [...RULE_TEXT],
74264
+ ([...RULE_TEXT], [...DEVICE_ATTENTION, ...ALERT_EPISODE]),
74230
74265
  [...RULE_TEXT],
74231
74266
  [...RULE_TEXT],
74232
74267
  [...RULE_TEXT],
@@ -74248,11 +74283,11 @@ var STATE_SUMMARY_VARS = [
74248
74283
  [...RULE_TEXT],
74249
74284
  [...RULE_TEXT],
74250
74285
  [...RULE_TEXT],
74286
+ ([...RULE_TEXT], [...DEVICE_ATTENTION, ...ALERT_EPISODE]),
74251
74287
  ([...RULE_TEXT], [...ALERT_EPISODE]),
74288
+ ([...RULE_TEXT], [...DEVICE_ATTENTION, ...ALERT_EPISODE]),
74252
74289
  ([...RULE_TEXT], [...ALERT_EPISODE]),
74253
- ([...RULE_TEXT], [...ALERT_EPISODE]),
74254
- ([...RULE_TEXT], [...ALERT_EPISODE]),
74255
- ([...RULE_TEXT], [...ALERT_EPISODE]),
74290
+ ([...RULE_TEXT], [...DEVICE_ATTENTION, ...ALERT_EPISODE]),
74256
74291
  [...RULE_TEXT],
74257
74292
  [...RULE_TEXT],
74258
74293
  [...RULE_TEXT],
@@ -74328,6 +74363,15 @@ new Map([
74328
74363
  snapshotLabel: "Tanks low or full now",
74329
74364
  snapshotSection: "tanks"
74330
74365
  },
74366
+ {
74367
+ id: "motion-noise",
74368
+ family: "device-events",
74369
+ label: "Motion without a subject (constant / calm again)",
74370
+ bad: ["motion-noisy"],
74371
+ recovery: ["motion-calm"],
74372
+ snapshotLabel: "Cameras with constant motion now",
74373
+ snapshotSection: null
74374
+ },
74331
74375
  {
74332
74376
  id: "recording-health",
74333
74377
  family: "device-events",
@@ -74337,6 +74381,15 @@ new Map([
74337
74381
  snapshotLabel: "Recordings stalled now",
74338
74382
  snapshotSection: null
74339
74383
  },
74384
+ {
74385
+ id: "device-attention",
74386
+ family: "device-events",
74387
+ label: "Device needs attention (raised / resolved)",
74388
+ bad: ["device-attention-required"],
74389
+ recovery: ["device-attention-resolved"],
74390
+ snapshotLabel: "Devices needing attention now",
74391
+ snapshotSection: null
74392
+ },
74340
74393
  {
74341
74394
  id: "node-connectivity",
74342
74395
  family: "system",
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@camstack/addon-export-alexa",
3
- "version": "1.2.160",
3
+ "version": "1.2.161",
4
4
  "description": "Alexa Smart Home Skill export — hub-side OAuth provider + directive handler. The companion AWS Lambda forwards Alexa directives to this addon's /addon/export-alexa/directive endpoint.",
5
5
  "keywords": [
6
6
  "camstack",