@camstack/addon-import-alexa 0.2.142 → 0.2.143

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (3) hide show
  1. package/dist/addon.js +114 -61
  2. package/dist/addon.mjs +114 -61
  3. package/package.json +1 -1
package/dist/addon.js CHANGED
@@ -38,7 +38,7 @@ let node_os = require("node:os");
38
38
  let node_fs = require("node:fs");
39
39
  let node_path = require("node:path");
40
40
  node_path = __toESM(node_path);
41
- //#region ../types/dist/event-category-7pZEBmVg.mjs
41
+ //#region ../types/dist/event-category-BfJwUd2S.mjs
42
42
  var EventCategory = /* @__PURE__ */ function(EventCategory) {
43
43
  EventCategory["SystemBoot"] = "system.boot";
44
44
  EventCategory["SystemAddonsReady"] = "system.addons-ready";
@@ -355,6 +355,15 @@ var EventCategory = /* @__PURE__ */ function(EventCategory) {
355
355
  */
356
356
  EventCategory["PipelineDetectionBlind"] = "pipeline.detection-blind";
357
357
  /**
358
+ * A camera's motion source has fired constantly with no subject for an hour
359
+ * (motion duty or session count over the bar, zero detections) — it is not
360
+ * blind, its motion zones or sensitivity want tuning (D907). Paired with
361
+ * {@link PipelineMotionCalm}.
362
+ */
363
+ EventCategory["PipelineMotionNoisy"] = "pipeline.motion-noisy";
364
+ /** The recovery edge of {@link PipelineMotionNoisy}: the motion fell back, or a detection arrived. */
365
+ EventCategory["PipelineMotionCalm"] = "pipeline.motion-calm";
366
+ /**
358
367
  * Per-camera pipeline config was mutated by the orchestrator
359
368
  * (3-level settings change via `setAgentAddonDefaults` /
360
369
  * `setCameraStepToggle` / `setCameraPipelineForAgent` or a
@@ -5594,7 +5603,7 @@ var ZodIssueCode = {
5594
5603
  var ZodFirstPartyTypeKind;
5595
5604
  ZodFirstPartyTypeKind || (ZodFirstPartyTypeKind = {});
5596
5605
  //#endregion
5597
- //#region ../types/dist/sleep-CueztlR1.mjs
5606
+ //#region ../types/dist/sleep-DJFUfKvA.mjs
5598
5607
  /**
5599
5608
  * The audio chunk plane's byte format, and the ONE expansion from a coded
5600
5609
  * window to float samples (D455).
@@ -8193,7 +8202,7 @@ var EntryDescriptorSchema = object({
8193
8202
  /** JSON Schema of the entry body; `secret: true` marks a password field. */
8194
8203
  fields: record(string(), unknown())
8195
8204
  }).strict();
8196
- /** What crosses the wire and sits in the engine's catalog: JSON only, no Zod. */
8205
+ /** What crosses the wire from an addon: JSON only, no Zod. An unknown key is refused. */
8197
8206
  var RecordKindDeclarationSchema = object({
8198
8207
  database: _enum(RECORD_DATABASES).default("settings"),
8199
8208
  class: _enum(RECORD_CLASSES),
@@ -8212,14 +8221,6 @@ var RecordKindDeclarationSchema = object({
8212
8221
  secretPaths: array(string().min(1)).default([]),
8213
8222
  /** The id key of each array that carries a secret (`{ headers: 'name' }`). */
8214
8223
  secretArrayKeys: record(string(), string()).default({}),
8215
- /**
8216
- * RETIRED (D900): the legacy table a kind adopted from during the records
8217
- * migration. Nothing declares it any more and nothing reads it; the schema
8218
- * still ACCEPTS it because the catalog rows the migration wrote carry it
8219
- * (an orphaned kind is never redeclared) and an addon built before the
8220
- * removal still sends it. Never set it.
8221
- */
8222
- adoptsFrom: string().min(1).optional(),
8223
8224
  /** Kinds that must agree through `transact` sit in one file under one family name. */
8224
8225
  transactFamily: string().min(1).optional(),
8225
8226
  entry: EntryDescriptorSchema.optional()
@@ -13132,17 +13133,6 @@ object({
13132
13133
  createdAt: number(),
13133
13134
  updatedAt: number()
13134
13135
  });
13135
- object({
13136
- id: string(),
13137
- label: string(),
13138
- isAdmin: boolean().default(false),
13139
- allowedProviders: AllowedProviderSchema,
13140
- allowedDevices: AllowedDevicesSchema,
13141
- tokenHash: string(),
13142
- tokenPrefix: string(),
13143
- createdAt: number(),
13144
- lastUsedAt: number().optional()
13145
- });
13146
13136
  object({
13147
13137
  id: string(),
13148
13138
  userId: string(),
@@ -17192,16 +17182,36 @@ var RecordKindStateSchema = _enum([
17192
17182
  var DeclareKindResultSchema = object({
17193
17183
  kindId: number().int(),
17194
17184
  state: RecordKindStateSchema,
17195
- createdIndexes: array(string()),
17196
- /**
17197
- * RETIRED (D900): always `null`. It carried the records-migration boot guard;
17198
- * it stays on the wire, null, because an addon built before the removal reads
17199
- * an ABSENT field as "adoption pending" and refuses to start.
17200
- */
17201
- adoptionPending: _null()
17185
+ createdIndexes: array(string())
17202
17186
  });
17203
17187
  /** Keychain refs a write released (the old marker is gone from the row): the owner deletes the values. */
17204
17188
  var SecretRefsList = array(string());
17189
+ /**
17190
+ * One op of a `transact`: the single-row writes, each on a kind of the caller.
17191
+ * All ops of one call share ONE database file and ONE `transactFamily`.
17192
+ */
17193
+ var RecordTransactOpSchema = discriminatedUnion("op", [
17194
+ object({
17195
+ op: literal("put"),
17196
+ kind: RecordKindNameSchema,
17197
+ record: RecordInputSchema,
17198
+ ifRev: number().int().min(0).optional()
17199
+ }),
17200
+ object({
17201
+ op: literal("patch"),
17202
+ kind: RecordKindNameSchema,
17203
+ id: RecordIdSchema,
17204
+ data: RecordBodySchema,
17205
+ at: number().int().nullable().optional(),
17206
+ expiresAt: number().int().nullable().optional(),
17207
+ ifRev: number().int().min(1).optional()
17208
+ }),
17209
+ object({
17210
+ op: literal("delete"),
17211
+ kind: RecordKindNameSchema,
17212
+ id: RecordIdSchema
17213
+ })
17214
+ ]);
17205
17215
  var RecordSecretRefsSchema = record(string(), record(string(), string()));
17206
17216
  method(object({ kinds: record(RecordKindNameSchema, RecordKindDeclarationSchema) }), object({ kinds: record(string(), DeclareKindResultSchema) }), {
17207
17217
  kind: "mutation",
@@ -17308,6 +17318,16 @@ method(object({ kinds: record(RecordKindNameSchema, RecordKindDeclarationSchema)
17308
17318
  }), {
17309
17319
  kind: "mutation",
17310
17320
  auth: "admin"
17321
+ }), method(object({ ops: array(RecordTransactOpSchema).min(1).max(RECORD_BATCH_MAX) }), object({
17322
+ results: array(object({
17323
+ rev: number().int().nullable(),
17324
+ deleted: boolean()
17325
+ })),
17326
+ releasedRefs: SecretRefsList,
17327
+ secretRefs: SecretRefsList
17328
+ }), {
17329
+ kind: "mutation",
17330
+ auth: "admin"
17311
17331
  }), method(object({
17312
17332
  deviceId: number().int(),
17313
17333
  kinds: array(RecordKindNameSchema).optional()
@@ -42919,9 +42939,13 @@ var NcSystemEventKindSchema = _enum([
42919
42939
  "node-updating",
42920
42940
  "node-inference-unavailable",
42921
42941
  "detection-blind",
42942
+ "motion-noisy",
42943
+ "motion-calm",
42922
42944
  "recording-stalled",
42923
42945
  "recording-healthy",
42924
42946
  "recording-degraded",
42947
+ "device-attention-required",
42948
+ "device-attention-resolved",
42925
42949
  "storage-location-low",
42926
42950
  "storage-location-critical",
42927
42951
  "storage-location-ok",
@@ -56262,6 +56286,16 @@ var DishwasherStatusSchema = object({
56262
56286
  powerState: string().nullable(),
56263
56287
  saltLevel: DishwasherConsumableLevelSchema.nullable(),
56264
56288
  rinseAidLevel: DishwasherConsumableLevelSchema.nullable(),
56289
+ /**
56290
+ * True while the appliance asks for its filter to be cleaned (smart-filter, filter-system or
56291
+ * combined care-and-filter reminder raised); false when every such reminder reads clear; null
56292
+ * when none is reported. A cleared reminder is not an unknown one.
56293
+ */
56294
+ filterCleaningDue: boolean().nullable(),
56295
+ /** True while the machine-care (descaling / cleaning-program) reminder is raised; false when clear; null when not reported. */
56296
+ machineCareDue: boolean().nullable(),
56297
+ /** Program runs left before the machine-care reminder is due; null when the appliance does not say. */
56298
+ machineCareRemainingRuns: number().int().nonnegative().nullable(),
56265
56299
  /** Option states: null when the appliance does not expose the option or has not said. */
56266
56300
  halfLoad: boolean().nullable(),
56267
56301
  hygienePlus: boolean().nullable(),
@@ -64912,16 +64946,6 @@ var UpdateUserInputSchema = object({
64912
64946
  allowedDevices: record(string(), union([array(string()), literal("*")])).optional(),
64913
64947
  scopes: array(TokenScopeSchema).optional()
64914
64948
  });
64915
- var ApiKeySummarySchema = object({
64916
- id: string(),
64917
- label: string(),
64918
- isAdmin: boolean().default(false),
64919
- allowedProviders: union([array(string()), literal("*")]).optional(),
64920
- allowedDevices: record(string(), union([array(string()), literal("*")])).optional(),
64921
- tokenPrefix: string(),
64922
- createdAt: number(),
64923
- lastUsedAt: number().optional()
64924
- });
64925
64949
  var OauthSessionSummarySchema = object({
64926
64950
  id: string(),
64927
64951
  userId: string(),
@@ -64943,8 +64967,7 @@ var TotpStatusSchema = object({
64943
64967
  confirmedAt: number().nullable()
64944
64968
  });
64945
64969
  /**
64946
- * user-management — singleton capability for user accounts and the
64947
- * legacy API-key rows.
64970
+ * user-management — singleton capability for user accounts.
64948
64971
  *
64949
64972
  * v2 model: every method gated by `auth: 'admin'`. Admin-only delegation
64950
64973
  * — the subset check on `setUserScopes` is moot
@@ -65000,10 +65023,6 @@ method(_void(), array(UserSummarySchema), { auth: "admin" }), method(CreateUserI
65000
65023
  }), UserSummarySchema.extend({ passwordHash: string() }).nullable(), {
65001
65024
  kind: "mutation",
65002
65025
  access: "view"
65003
- }), method(_void(), array(ApiKeySummarySchema), { auth: "admin" }), method(object({ id: string() }), object({ success: literal(true) }), {
65004
- kind: "mutation",
65005
- auth: "admin",
65006
- access: "delete"
65007
65026
  }), method(object({ userId: string() }), TotpSetupResultSchema, {
65008
65027
  kind: "mutation",
65009
65028
  auth: "admin",
@@ -74459,6 +74478,12 @@ Object.freeze({
74459
74478
  addonId: null,
74460
74479
  access: "view"
74461
74480
  },
74481
+ "records.transact": {
74482
+ capName: "records",
74483
+ capScope: "system",
74484
+ addonId: null,
74485
+ access: "create"
74486
+ },
74462
74487
  "sceneMonitor.captureReference": {
74463
74488
  capName: "scene-monitor",
74464
74489
  capScope: "device",
@@ -75791,12 +75816,6 @@ Object.freeze({
75791
75816
  addonId: null,
75792
75817
  access: "view"
75793
75818
  },
75794
- "userManagement.listApiKeys": {
75795
- capName: "user-management",
75796
- capScope: "system",
75797
- addonId: null,
75798
- access: "view"
75799
- },
75800
75819
  "userManagement.listExternalIdentities": {
75801
75820
  capName: "user-management",
75802
75821
  capScope: "system",
@@ -75851,12 +75870,6 @@ Object.freeze({
75851
75870
  addonId: null,
75852
75871
  access: "create"
75853
75872
  },
75854
- "userManagement.revokeApiKey": {
75855
- capName: "user-management",
75856
- capScope: "system",
75857
- addonId: null,
75858
- access: "delete"
75859
- },
75860
75873
  "userManagement.revokeOauthSession": {
75861
75874
  capName: "user-management",
75862
75875
  capScope: "system",
@@ -79221,9 +79234,13 @@ new Map(Object.entries({
79221
79234
  "stream-online": "device-events",
79222
79235
  "stream-offline": "device-events",
79223
79236
  "detection-blind": "device-events",
79237
+ "motion-noisy": "device-events",
79238
+ "motion-calm": "device-events",
79224
79239
  "recording-stalled": "device-events",
79225
79240
  "recording-healthy": "device-events",
79226
79241
  "recording-degraded": "device-events",
79242
+ "device-attention-required": "device-events",
79243
+ "device-attention-resolved": "device-events",
79227
79244
  "node-online": "system",
79228
79245
  "node-offline": "system",
79229
79246
  "node-restarting": "system",
@@ -79306,6 +79323,12 @@ var NC_SYSTEM_EVENT_KIND_GROUP_SPECS = [
79306
79323
  label: "Detecting nothing",
79307
79324
  kinds: ["detection-blind"]
79308
79325
  },
79326
+ {
79327
+ id: "motion-noise",
79328
+ family: "device-events",
79329
+ label: "Motion without a subject",
79330
+ kinds: ["motion-noisy", "motion-calm"]
79331
+ },
79309
79332
  {
79310
79333
  id: "recording",
79311
79334
  family: "device-events",
@@ -79316,6 +79339,12 @@ var NC_SYSTEM_EVENT_KIND_GROUP_SPECS = [
79316
79339
  "recording-degraded"
79317
79340
  ]
79318
79341
  },
79342
+ {
79343
+ id: "device-attention",
79344
+ family: "device-events",
79345
+ label: "Needs attention",
79346
+ kinds: ["device-attention-required", "device-attention-resolved"]
79347
+ },
79319
79348
  {
79320
79349
  id: "nodes",
79321
79350
  family: "system",
@@ -79455,6 +79484,7 @@ var ALERT_EPISODE = [
79455
79484
  "alert-error",
79456
79485
  "alert-critical-resolved"
79457
79486
  ];
79487
+ var DEVICE_ATTENTION = ["device-attention-required", "device-attention-resolved"];
79458
79488
  var UPDATES = [
79459
79489
  "addon-update-available",
79460
79490
  "server-update-available",
@@ -79484,9 +79514,12 @@ var DEVICE_EVENTS = [
79484
79514
  "stream-online",
79485
79515
  "stream-offline",
79486
79516
  "detection-blind",
79517
+ "motion-noisy",
79518
+ "motion-calm",
79487
79519
  "recording-stalled",
79488
79520
  "recording-healthy",
79489
79521
  "recording-degraded",
79522
+ ...DEVICE_ATTENTION,
79490
79523
  ...ALARM
79491
79524
  ];
79492
79525
  /** Every kind a summary may speak about — the two summarisable families. */
@@ -79654,7 +79687,9 @@ var STATE_SUMMARY_VARS = [
79654
79687
  [...RULE_TEXT],
79655
79688
  [...RULE_TEXT],
79656
79689
  [...RULE_TEXT],
79657
- ([...RULE_TEXT], [...ALERT_EPISODE]),
79690
+ [...RULE_TEXT],
79691
+ [...RULE_TEXT],
79692
+ ([...RULE_TEXT], [...DEVICE_ATTENTION, ...ALERT_EPISODE]),
79658
79693
  [...RULE_TEXT],
79659
79694
  [...RULE_TEXT],
79660
79695
  [...RULE_TEXT],
@@ -79676,11 +79711,11 @@ var STATE_SUMMARY_VARS = [
79676
79711
  [...RULE_TEXT],
79677
79712
  [...RULE_TEXT],
79678
79713
  [...RULE_TEXT],
79714
+ ([...RULE_TEXT], [...DEVICE_ATTENTION, ...ALERT_EPISODE]),
79679
79715
  ([...RULE_TEXT], [...ALERT_EPISODE]),
79716
+ ([...RULE_TEXT], [...DEVICE_ATTENTION, ...ALERT_EPISODE]),
79680
79717
  ([...RULE_TEXT], [...ALERT_EPISODE]),
79681
- ([...RULE_TEXT], [...ALERT_EPISODE]),
79682
- ([...RULE_TEXT], [...ALERT_EPISODE]),
79683
- ([...RULE_TEXT], [...ALERT_EPISODE]),
79718
+ ([...RULE_TEXT], [...DEVICE_ATTENTION, ...ALERT_EPISODE]),
79684
79719
  [...RULE_TEXT],
79685
79720
  [...RULE_TEXT],
79686
79721
  [...RULE_TEXT],
@@ -79756,6 +79791,15 @@ new Map([
79756
79791
  snapshotLabel: "Tanks low or full now",
79757
79792
  snapshotSection: "tanks"
79758
79793
  },
79794
+ {
79795
+ id: "motion-noise",
79796
+ family: "device-events",
79797
+ label: "Motion without a subject (constant / calm again)",
79798
+ bad: ["motion-noisy"],
79799
+ recovery: ["motion-calm"],
79800
+ snapshotLabel: "Cameras with constant motion now",
79801
+ snapshotSection: null
79802
+ },
79759
79803
  {
79760
79804
  id: "recording-health",
79761
79805
  family: "device-events",
@@ -79765,6 +79809,15 @@ new Map([
79765
79809
  snapshotLabel: "Recordings stalled now",
79766
79810
  snapshotSection: null
79767
79811
  },
79812
+ {
79813
+ id: "device-attention",
79814
+ family: "device-events",
79815
+ label: "Device needs attention (raised / resolved)",
79816
+ bad: ["device-attention-required"],
79817
+ recovery: ["device-attention-resolved"],
79818
+ snapshotLabel: "Devices needing attention now",
79819
+ snapshotSection: null
79820
+ },
79768
79821
  {
79769
79822
  id: "node-connectivity",
79770
79823
  family: "system",
package/dist/addon.mjs CHANGED
@@ -38,7 +38,7 @@ var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__ge
38
38
  var __toCommonJS = (mod) => __hasOwnProp.call(mod, "module.exports") ? mod["module.exports"] : __copyProps(__defProp({}, "__esModule", { value: true }), mod);
39
39
  var __require = /* @__PURE__ */ createRequire(import.meta.url);
40
40
  //#endregion
41
- //#region ../types/dist/event-category-7pZEBmVg.mjs
41
+ //#region ../types/dist/event-category-BfJwUd2S.mjs
42
42
  var EventCategory = /* @__PURE__ */ function(EventCategory) {
43
43
  EventCategory["SystemBoot"] = "system.boot";
44
44
  EventCategory["SystemAddonsReady"] = "system.addons-ready";
@@ -355,6 +355,15 @@ var EventCategory = /* @__PURE__ */ function(EventCategory) {
355
355
  */
356
356
  EventCategory["PipelineDetectionBlind"] = "pipeline.detection-blind";
357
357
  /**
358
+ * A camera's motion source has fired constantly with no subject for an hour
359
+ * (motion duty or session count over the bar, zero detections) — it is not
360
+ * blind, its motion zones or sensitivity want tuning (D907). Paired with
361
+ * {@link PipelineMotionCalm}.
362
+ */
363
+ EventCategory["PipelineMotionNoisy"] = "pipeline.motion-noisy";
364
+ /** The recovery edge of {@link PipelineMotionNoisy}: the motion fell back, or a detection arrived. */
365
+ EventCategory["PipelineMotionCalm"] = "pipeline.motion-calm";
366
+ /**
358
367
  * Per-camera pipeline config was mutated by the orchestrator
359
368
  * (3-level settings change via `setAgentAddonDefaults` /
360
369
  * `setCameraStepToggle` / `setCameraPipelineForAgent` or a
@@ -5594,7 +5603,7 @@ var ZodIssueCode = {
5594
5603
  var ZodFirstPartyTypeKind;
5595
5604
  ZodFirstPartyTypeKind || (ZodFirstPartyTypeKind = {});
5596
5605
  //#endregion
5597
- //#region ../types/dist/sleep-CueztlR1.mjs
5606
+ //#region ../types/dist/sleep-DJFUfKvA.mjs
5598
5607
  /**
5599
5608
  * The audio chunk plane's byte format, and the ONE expansion from a coded
5600
5609
  * window to float samples (D455).
@@ -8193,7 +8202,7 @@ var EntryDescriptorSchema = object({
8193
8202
  /** JSON Schema of the entry body; `secret: true` marks a password field. */
8194
8203
  fields: record(string(), unknown())
8195
8204
  }).strict();
8196
- /** What crosses the wire and sits in the engine's catalog: JSON only, no Zod. */
8205
+ /** What crosses the wire from an addon: JSON only, no Zod. An unknown key is refused. */
8197
8206
  var RecordKindDeclarationSchema = object({
8198
8207
  database: _enum(RECORD_DATABASES).default("settings"),
8199
8208
  class: _enum(RECORD_CLASSES),
@@ -8212,14 +8221,6 @@ var RecordKindDeclarationSchema = object({
8212
8221
  secretPaths: array(string().min(1)).default([]),
8213
8222
  /** The id key of each array that carries a secret (`{ headers: 'name' }`). */
8214
8223
  secretArrayKeys: record(string(), string()).default({}),
8215
- /**
8216
- * RETIRED (D900): the legacy table a kind adopted from during the records
8217
- * migration. Nothing declares it any more and nothing reads it; the schema
8218
- * still ACCEPTS it because the catalog rows the migration wrote carry it
8219
- * (an orphaned kind is never redeclared) and an addon built before the
8220
- * removal still sends it. Never set it.
8221
- */
8222
- adoptsFrom: string().min(1).optional(),
8223
8224
  /** Kinds that must agree through `transact` sit in one file under one family name. */
8224
8225
  transactFamily: string().min(1).optional(),
8225
8226
  entry: EntryDescriptorSchema.optional()
@@ -13132,17 +13133,6 @@ object({
13132
13133
  createdAt: number(),
13133
13134
  updatedAt: number()
13134
13135
  });
13135
- object({
13136
- id: string(),
13137
- label: string(),
13138
- isAdmin: boolean().default(false),
13139
- allowedProviders: AllowedProviderSchema,
13140
- allowedDevices: AllowedDevicesSchema,
13141
- tokenHash: string(),
13142
- tokenPrefix: string(),
13143
- createdAt: number(),
13144
- lastUsedAt: number().optional()
13145
- });
13146
13136
  object({
13147
13137
  id: string(),
13148
13138
  userId: string(),
@@ -17192,16 +17182,36 @@ var RecordKindStateSchema = _enum([
17192
17182
  var DeclareKindResultSchema = object({
17193
17183
  kindId: number().int(),
17194
17184
  state: RecordKindStateSchema,
17195
- createdIndexes: array(string()),
17196
- /**
17197
- * RETIRED (D900): always `null`. It carried the records-migration boot guard;
17198
- * it stays on the wire, null, because an addon built before the removal reads
17199
- * an ABSENT field as "adoption pending" and refuses to start.
17200
- */
17201
- adoptionPending: _null()
17185
+ createdIndexes: array(string())
17202
17186
  });
17203
17187
  /** Keychain refs a write released (the old marker is gone from the row): the owner deletes the values. */
17204
17188
  var SecretRefsList = array(string());
17189
+ /**
17190
+ * One op of a `transact`: the single-row writes, each on a kind of the caller.
17191
+ * All ops of one call share ONE database file and ONE `transactFamily`.
17192
+ */
17193
+ var RecordTransactOpSchema = discriminatedUnion("op", [
17194
+ object({
17195
+ op: literal("put"),
17196
+ kind: RecordKindNameSchema,
17197
+ record: RecordInputSchema,
17198
+ ifRev: number().int().min(0).optional()
17199
+ }),
17200
+ object({
17201
+ op: literal("patch"),
17202
+ kind: RecordKindNameSchema,
17203
+ id: RecordIdSchema,
17204
+ data: RecordBodySchema,
17205
+ at: number().int().nullable().optional(),
17206
+ expiresAt: number().int().nullable().optional(),
17207
+ ifRev: number().int().min(1).optional()
17208
+ }),
17209
+ object({
17210
+ op: literal("delete"),
17211
+ kind: RecordKindNameSchema,
17212
+ id: RecordIdSchema
17213
+ })
17214
+ ]);
17205
17215
  var RecordSecretRefsSchema = record(string(), record(string(), string()));
17206
17216
  method(object({ kinds: record(RecordKindNameSchema, RecordKindDeclarationSchema) }), object({ kinds: record(string(), DeclareKindResultSchema) }), {
17207
17217
  kind: "mutation",
@@ -17308,6 +17318,16 @@ method(object({ kinds: record(RecordKindNameSchema, RecordKindDeclarationSchema)
17308
17318
  }), {
17309
17319
  kind: "mutation",
17310
17320
  auth: "admin"
17321
+ }), method(object({ ops: array(RecordTransactOpSchema).min(1).max(RECORD_BATCH_MAX) }), object({
17322
+ results: array(object({
17323
+ rev: number().int().nullable(),
17324
+ deleted: boolean()
17325
+ })),
17326
+ releasedRefs: SecretRefsList,
17327
+ secretRefs: SecretRefsList
17328
+ }), {
17329
+ kind: "mutation",
17330
+ auth: "admin"
17311
17331
  }), method(object({
17312
17332
  deviceId: number().int(),
17313
17333
  kinds: array(RecordKindNameSchema).optional()
@@ -42919,9 +42939,13 @@ var NcSystemEventKindSchema = _enum([
42919
42939
  "node-updating",
42920
42940
  "node-inference-unavailable",
42921
42941
  "detection-blind",
42942
+ "motion-noisy",
42943
+ "motion-calm",
42922
42944
  "recording-stalled",
42923
42945
  "recording-healthy",
42924
42946
  "recording-degraded",
42947
+ "device-attention-required",
42948
+ "device-attention-resolved",
42925
42949
  "storage-location-low",
42926
42950
  "storage-location-critical",
42927
42951
  "storage-location-ok",
@@ -56262,6 +56286,16 @@ var DishwasherStatusSchema = object({
56262
56286
  powerState: string().nullable(),
56263
56287
  saltLevel: DishwasherConsumableLevelSchema.nullable(),
56264
56288
  rinseAidLevel: DishwasherConsumableLevelSchema.nullable(),
56289
+ /**
56290
+ * True while the appliance asks for its filter to be cleaned (smart-filter, filter-system or
56291
+ * combined care-and-filter reminder raised); false when every such reminder reads clear; null
56292
+ * when none is reported. A cleared reminder is not an unknown one.
56293
+ */
56294
+ filterCleaningDue: boolean().nullable(),
56295
+ /** True while the machine-care (descaling / cleaning-program) reminder is raised; false when clear; null when not reported. */
56296
+ machineCareDue: boolean().nullable(),
56297
+ /** Program runs left before the machine-care reminder is due; null when the appliance does not say. */
56298
+ machineCareRemainingRuns: number().int().nonnegative().nullable(),
56265
56299
  /** Option states: null when the appliance does not expose the option or has not said. */
56266
56300
  halfLoad: boolean().nullable(),
56267
56301
  hygienePlus: boolean().nullable(),
@@ -64912,16 +64946,6 @@ var UpdateUserInputSchema = object({
64912
64946
  allowedDevices: record(string(), union([array(string()), literal("*")])).optional(),
64913
64947
  scopes: array(TokenScopeSchema).optional()
64914
64948
  });
64915
- var ApiKeySummarySchema = object({
64916
- id: string(),
64917
- label: string(),
64918
- isAdmin: boolean().default(false),
64919
- allowedProviders: union([array(string()), literal("*")]).optional(),
64920
- allowedDevices: record(string(), union([array(string()), literal("*")])).optional(),
64921
- tokenPrefix: string(),
64922
- createdAt: number(),
64923
- lastUsedAt: number().optional()
64924
- });
64925
64949
  var OauthSessionSummarySchema = object({
64926
64950
  id: string(),
64927
64951
  userId: string(),
@@ -64943,8 +64967,7 @@ var TotpStatusSchema = object({
64943
64967
  confirmedAt: number().nullable()
64944
64968
  });
64945
64969
  /**
64946
- * user-management — singleton capability for user accounts and the
64947
- * legacy API-key rows.
64970
+ * user-management — singleton capability for user accounts.
64948
64971
  *
64949
64972
  * v2 model: every method gated by `auth: 'admin'`. Admin-only delegation
64950
64973
  * — the subset check on `setUserScopes` is moot
@@ -65000,10 +65023,6 @@ method(_void(), array(UserSummarySchema), { auth: "admin" }), method(CreateUserI
65000
65023
  }), UserSummarySchema.extend({ passwordHash: string() }).nullable(), {
65001
65024
  kind: "mutation",
65002
65025
  access: "view"
65003
- }), method(_void(), array(ApiKeySummarySchema), { auth: "admin" }), method(object({ id: string() }), object({ success: literal(true) }), {
65004
- kind: "mutation",
65005
- auth: "admin",
65006
- access: "delete"
65007
65026
  }), method(object({ userId: string() }), TotpSetupResultSchema, {
65008
65027
  kind: "mutation",
65009
65028
  auth: "admin",
@@ -74459,6 +74478,12 @@ Object.freeze({
74459
74478
  addonId: null,
74460
74479
  access: "view"
74461
74480
  },
74481
+ "records.transact": {
74482
+ capName: "records",
74483
+ capScope: "system",
74484
+ addonId: null,
74485
+ access: "create"
74486
+ },
74462
74487
  "sceneMonitor.captureReference": {
74463
74488
  capName: "scene-monitor",
74464
74489
  capScope: "device",
@@ -75791,12 +75816,6 @@ Object.freeze({
75791
75816
  addonId: null,
75792
75817
  access: "view"
75793
75818
  },
75794
- "userManagement.listApiKeys": {
75795
- capName: "user-management",
75796
- capScope: "system",
75797
- addonId: null,
75798
- access: "view"
75799
- },
75800
75819
  "userManagement.listExternalIdentities": {
75801
75820
  capName: "user-management",
75802
75821
  capScope: "system",
@@ -75851,12 +75870,6 @@ Object.freeze({
75851
75870
  addonId: null,
75852
75871
  access: "create"
75853
75872
  },
75854
- "userManagement.revokeApiKey": {
75855
- capName: "user-management",
75856
- capScope: "system",
75857
- addonId: null,
75858
- access: "delete"
75859
- },
75860
75873
  "userManagement.revokeOauthSession": {
75861
75874
  capName: "user-management",
75862
75875
  capScope: "system",
@@ -79221,9 +79234,13 @@ new Map(Object.entries({
79221
79234
  "stream-online": "device-events",
79222
79235
  "stream-offline": "device-events",
79223
79236
  "detection-blind": "device-events",
79237
+ "motion-noisy": "device-events",
79238
+ "motion-calm": "device-events",
79224
79239
  "recording-stalled": "device-events",
79225
79240
  "recording-healthy": "device-events",
79226
79241
  "recording-degraded": "device-events",
79242
+ "device-attention-required": "device-events",
79243
+ "device-attention-resolved": "device-events",
79227
79244
  "node-online": "system",
79228
79245
  "node-offline": "system",
79229
79246
  "node-restarting": "system",
@@ -79306,6 +79323,12 @@ var NC_SYSTEM_EVENT_KIND_GROUP_SPECS = [
79306
79323
  label: "Detecting nothing",
79307
79324
  kinds: ["detection-blind"]
79308
79325
  },
79326
+ {
79327
+ id: "motion-noise",
79328
+ family: "device-events",
79329
+ label: "Motion without a subject",
79330
+ kinds: ["motion-noisy", "motion-calm"]
79331
+ },
79309
79332
  {
79310
79333
  id: "recording",
79311
79334
  family: "device-events",
@@ -79316,6 +79339,12 @@ var NC_SYSTEM_EVENT_KIND_GROUP_SPECS = [
79316
79339
  "recording-degraded"
79317
79340
  ]
79318
79341
  },
79342
+ {
79343
+ id: "device-attention",
79344
+ family: "device-events",
79345
+ label: "Needs attention",
79346
+ kinds: ["device-attention-required", "device-attention-resolved"]
79347
+ },
79319
79348
  {
79320
79349
  id: "nodes",
79321
79350
  family: "system",
@@ -79455,6 +79484,7 @@ var ALERT_EPISODE = [
79455
79484
  "alert-error",
79456
79485
  "alert-critical-resolved"
79457
79486
  ];
79487
+ var DEVICE_ATTENTION = ["device-attention-required", "device-attention-resolved"];
79458
79488
  var UPDATES = [
79459
79489
  "addon-update-available",
79460
79490
  "server-update-available",
@@ -79484,9 +79514,12 @@ var DEVICE_EVENTS = [
79484
79514
  "stream-online",
79485
79515
  "stream-offline",
79486
79516
  "detection-blind",
79517
+ "motion-noisy",
79518
+ "motion-calm",
79487
79519
  "recording-stalled",
79488
79520
  "recording-healthy",
79489
79521
  "recording-degraded",
79522
+ ...DEVICE_ATTENTION,
79490
79523
  ...ALARM
79491
79524
  ];
79492
79525
  /** Every kind a summary may speak about — the two summarisable families. */
@@ -79654,7 +79687,9 @@ var STATE_SUMMARY_VARS = [
79654
79687
  [...RULE_TEXT],
79655
79688
  [...RULE_TEXT],
79656
79689
  [...RULE_TEXT],
79657
- ([...RULE_TEXT], [...ALERT_EPISODE]),
79690
+ [...RULE_TEXT],
79691
+ [...RULE_TEXT],
79692
+ ([...RULE_TEXT], [...DEVICE_ATTENTION, ...ALERT_EPISODE]),
79658
79693
  [...RULE_TEXT],
79659
79694
  [...RULE_TEXT],
79660
79695
  [...RULE_TEXT],
@@ -79676,11 +79711,11 @@ var STATE_SUMMARY_VARS = [
79676
79711
  [...RULE_TEXT],
79677
79712
  [...RULE_TEXT],
79678
79713
  [...RULE_TEXT],
79714
+ ([...RULE_TEXT], [...DEVICE_ATTENTION, ...ALERT_EPISODE]),
79679
79715
  ([...RULE_TEXT], [...ALERT_EPISODE]),
79716
+ ([...RULE_TEXT], [...DEVICE_ATTENTION, ...ALERT_EPISODE]),
79680
79717
  ([...RULE_TEXT], [...ALERT_EPISODE]),
79681
- ([...RULE_TEXT], [...ALERT_EPISODE]),
79682
- ([...RULE_TEXT], [...ALERT_EPISODE]),
79683
- ([...RULE_TEXT], [...ALERT_EPISODE]),
79718
+ ([...RULE_TEXT], [...DEVICE_ATTENTION, ...ALERT_EPISODE]),
79684
79719
  [...RULE_TEXT],
79685
79720
  [...RULE_TEXT],
79686
79721
  [...RULE_TEXT],
@@ -79756,6 +79791,15 @@ new Map([
79756
79791
  snapshotLabel: "Tanks low or full now",
79757
79792
  snapshotSection: "tanks"
79758
79793
  },
79794
+ {
79795
+ id: "motion-noise",
79796
+ family: "device-events",
79797
+ label: "Motion without a subject (constant / calm again)",
79798
+ bad: ["motion-noisy"],
79799
+ recovery: ["motion-calm"],
79800
+ snapshotLabel: "Cameras with constant motion now",
79801
+ snapshotSection: null
79802
+ },
79759
79803
  {
79760
79804
  id: "recording-health",
79761
79805
  family: "device-events",
@@ -79765,6 +79809,15 @@ new Map([
79765
79809
  snapshotLabel: "Recordings stalled now",
79766
79810
  snapshotSection: null
79767
79811
  },
79812
+ {
79813
+ id: "device-attention",
79814
+ family: "device-events",
79815
+ label: "Device needs attention (raised / resolved)",
79816
+ bad: ["device-attention-required"],
79817
+ recovery: ["device-attention-resolved"],
79818
+ snapshotLabel: "Devices needing attention now",
79819
+ snapshotSection: null
79820
+ },
79768
79821
  {
79769
79822
  id: "node-connectivity",
79770
79823
  family: "system",
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@camstack/addon-import-alexa",
3
- "version": "0.2.142",
3
+ "version": "0.2.143",
4
4
  "description": "Alexa device-import provider for CamStack — imports the smart-home devices in a user's Alexa account via the unofficial alexa-remote2 cookie/token client (the inverse of the Alexa exporter)",
5
5
  "keywords": [
6
6
  "camstack",