@camstack/addon-import-alexa 0.2.142 → 0.2.144

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 -67
  2. package/dist/addon.mjs +114 -67
  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",
@@ -48482,7 +48506,6 @@ var RecommendationReasonSchema = discriminatedUnion("kind", [
48482
48506
  modelId: string()
48483
48507
  }),
48484
48508
  object({ kind: literal("cpu-device") }),
48485
- object({ kind: literal("coral-untouched") }),
48486
48509
  object({ kind: literal("device-disabled") }),
48487
48510
  object({ kind: literal("device-unavailable") }),
48488
48511
  object({ kind: literal("node-offline") }),
@@ -48580,11 +48603,6 @@ var AutoTuneWarningSchema = discriminatedUnion("kind", [
48580
48603
  kind: literal("detector-store-unreadable"),
48581
48604
  error: string()
48582
48605
  }),
48583
- object({
48584
- kind: literal("coral-enabled"),
48585
- nodeId: string(),
48586
- deviceKey: string()
48587
- }),
48588
48606
  object({
48589
48607
  kind: literal("custom-pin-kept"),
48590
48608
  nodeId: string(),
@@ -56262,6 +56280,16 @@ var DishwasherStatusSchema = object({
56262
56280
  powerState: string().nullable(),
56263
56281
  saltLevel: DishwasherConsumableLevelSchema.nullable(),
56264
56282
  rinseAidLevel: DishwasherConsumableLevelSchema.nullable(),
56283
+ /**
56284
+ * True while the appliance asks for its filter to be cleaned (smart-filter, filter-system or
56285
+ * combined care-and-filter reminder raised); false when every such reminder reads clear; null
56286
+ * when none is reported. A cleared reminder is not an unknown one.
56287
+ */
56288
+ filterCleaningDue: boolean().nullable(),
56289
+ /** True while the machine-care (descaling / cleaning-program) reminder is raised; false when clear; null when not reported. */
56290
+ machineCareDue: boolean().nullable(),
56291
+ /** Program runs left before the machine-care reminder is due; null when the appliance does not say. */
56292
+ machineCareRemainingRuns: number().int().nonnegative().nullable(),
56265
56293
  /** Option states: null when the appliance does not expose the option or has not said. */
56266
56294
  halfLoad: boolean().nullable(),
56267
56295
  hygienePlus: boolean().nullable(),
@@ -64912,16 +64940,6 @@ var UpdateUserInputSchema = object({
64912
64940
  allowedDevices: record(string(), union([array(string()), literal("*")])).optional(),
64913
64941
  scopes: array(TokenScopeSchema).optional()
64914
64942
  });
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
64943
  var OauthSessionSummarySchema = object({
64926
64944
  id: string(),
64927
64945
  userId: string(),
@@ -64943,8 +64961,7 @@ var TotpStatusSchema = object({
64943
64961
  confirmedAt: number().nullable()
64944
64962
  });
64945
64963
  /**
64946
- * user-management — singleton capability for user accounts and the
64947
- * legacy API-key rows.
64964
+ * user-management — singleton capability for user accounts.
64948
64965
  *
64949
64966
  * v2 model: every method gated by `auth: 'admin'`. Admin-only delegation
64950
64967
  * — the subset check on `setUserScopes` is moot
@@ -65000,10 +65017,6 @@ method(_void(), array(UserSummarySchema), { auth: "admin" }), method(CreateUserI
65000
65017
  }), UserSummarySchema.extend({ passwordHash: string() }).nullable(), {
65001
65018
  kind: "mutation",
65002
65019
  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
65020
  }), method(object({ userId: string() }), TotpSetupResultSchema, {
65008
65021
  kind: "mutation",
65009
65022
  auth: "admin",
@@ -74459,6 +74472,12 @@ Object.freeze({
74459
74472
  addonId: null,
74460
74473
  access: "view"
74461
74474
  },
74475
+ "records.transact": {
74476
+ capName: "records",
74477
+ capScope: "system",
74478
+ addonId: null,
74479
+ access: "create"
74480
+ },
74462
74481
  "sceneMonitor.captureReference": {
74463
74482
  capName: "scene-monitor",
74464
74483
  capScope: "device",
@@ -75791,12 +75810,6 @@ Object.freeze({
75791
75810
  addonId: null,
75792
75811
  access: "view"
75793
75812
  },
75794
- "userManagement.listApiKeys": {
75795
- capName: "user-management",
75796
- capScope: "system",
75797
- addonId: null,
75798
- access: "view"
75799
- },
75800
75813
  "userManagement.listExternalIdentities": {
75801
75814
  capName: "user-management",
75802
75815
  capScope: "system",
@@ -75851,12 +75864,6 @@ Object.freeze({
75851
75864
  addonId: null,
75852
75865
  access: "create"
75853
75866
  },
75854
- "userManagement.revokeApiKey": {
75855
- capName: "user-management",
75856
- capScope: "system",
75857
- addonId: null,
75858
- access: "delete"
75859
- },
75860
75867
  "userManagement.revokeOauthSession": {
75861
75868
  capName: "user-management",
75862
75869
  capScope: "system",
@@ -79221,9 +79228,13 @@ new Map(Object.entries({
79221
79228
  "stream-online": "device-events",
79222
79229
  "stream-offline": "device-events",
79223
79230
  "detection-blind": "device-events",
79231
+ "motion-noisy": "device-events",
79232
+ "motion-calm": "device-events",
79224
79233
  "recording-stalled": "device-events",
79225
79234
  "recording-healthy": "device-events",
79226
79235
  "recording-degraded": "device-events",
79236
+ "device-attention-required": "device-events",
79237
+ "device-attention-resolved": "device-events",
79227
79238
  "node-online": "system",
79228
79239
  "node-offline": "system",
79229
79240
  "node-restarting": "system",
@@ -79306,6 +79317,12 @@ var NC_SYSTEM_EVENT_KIND_GROUP_SPECS = [
79306
79317
  label: "Detecting nothing",
79307
79318
  kinds: ["detection-blind"]
79308
79319
  },
79320
+ {
79321
+ id: "motion-noise",
79322
+ family: "device-events",
79323
+ label: "Motion without a subject",
79324
+ kinds: ["motion-noisy", "motion-calm"]
79325
+ },
79309
79326
  {
79310
79327
  id: "recording",
79311
79328
  family: "device-events",
@@ -79316,6 +79333,12 @@ var NC_SYSTEM_EVENT_KIND_GROUP_SPECS = [
79316
79333
  "recording-degraded"
79317
79334
  ]
79318
79335
  },
79336
+ {
79337
+ id: "device-attention",
79338
+ family: "device-events",
79339
+ label: "Needs attention",
79340
+ kinds: ["device-attention-required", "device-attention-resolved"]
79341
+ },
79319
79342
  {
79320
79343
  id: "nodes",
79321
79344
  family: "system",
@@ -79455,6 +79478,7 @@ var ALERT_EPISODE = [
79455
79478
  "alert-error",
79456
79479
  "alert-critical-resolved"
79457
79480
  ];
79481
+ var DEVICE_ATTENTION = ["device-attention-required", "device-attention-resolved"];
79458
79482
  var UPDATES = [
79459
79483
  "addon-update-available",
79460
79484
  "server-update-available",
@@ -79484,9 +79508,12 @@ var DEVICE_EVENTS = [
79484
79508
  "stream-online",
79485
79509
  "stream-offline",
79486
79510
  "detection-blind",
79511
+ "motion-noisy",
79512
+ "motion-calm",
79487
79513
  "recording-stalled",
79488
79514
  "recording-healthy",
79489
79515
  "recording-degraded",
79516
+ ...DEVICE_ATTENTION,
79490
79517
  ...ALARM
79491
79518
  ];
79492
79519
  /** Every kind a summary may speak about — the two summarisable families. */
@@ -79654,7 +79681,9 @@ var STATE_SUMMARY_VARS = [
79654
79681
  [...RULE_TEXT],
79655
79682
  [...RULE_TEXT],
79656
79683
  [...RULE_TEXT],
79657
- ([...RULE_TEXT], [...ALERT_EPISODE]),
79684
+ [...RULE_TEXT],
79685
+ [...RULE_TEXT],
79686
+ ([...RULE_TEXT], [...DEVICE_ATTENTION, ...ALERT_EPISODE]),
79658
79687
  [...RULE_TEXT],
79659
79688
  [...RULE_TEXT],
79660
79689
  [...RULE_TEXT],
@@ -79676,11 +79705,11 @@ var STATE_SUMMARY_VARS = [
79676
79705
  [...RULE_TEXT],
79677
79706
  [...RULE_TEXT],
79678
79707
  [...RULE_TEXT],
79708
+ ([...RULE_TEXT], [...DEVICE_ATTENTION, ...ALERT_EPISODE]),
79679
79709
  ([...RULE_TEXT], [...ALERT_EPISODE]),
79710
+ ([...RULE_TEXT], [...DEVICE_ATTENTION, ...ALERT_EPISODE]),
79680
79711
  ([...RULE_TEXT], [...ALERT_EPISODE]),
79681
- ([...RULE_TEXT], [...ALERT_EPISODE]),
79682
- ([...RULE_TEXT], [...ALERT_EPISODE]),
79683
- ([...RULE_TEXT], [...ALERT_EPISODE]),
79712
+ ([...RULE_TEXT], [...DEVICE_ATTENTION, ...ALERT_EPISODE]),
79684
79713
  [...RULE_TEXT],
79685
79714
  [...RULE_TEXT],
79686
79715
  [...RULE_TEXT],
@@ -79756,6 +79785,15 @@ new Map([
79756
79785
  snapshotLabel: "Tanks low or full now",
79757
79786
  snapshotSection: "tanks"
79758
79787
  },
79788
+ {
79789
+ id: "motion-noise",
79790
+ family: "device-events",
79791
+ label: "Motion without a subject (constant / calm again)",
79792
+ bad: ["motion-noisy"],
79793
+ recovery: ["motion-calm"],
79794
+ snapshotLabel: "Cameras with constant motion now",
79795
+ snapshotSection: null
79796
+ },
79759
79797
  {
79760
79798
  id: "recording-health",
79761
79799
  family: "device-events",
@@ -79765,6 +79803,15 @@ new Map([
79765
79803
  snapshotLabel: "Recordings stalled now",
79766
79804
  snapshotSection: null
79767
79805
  },
79806
+ {
79807
+ id: "device-attention",
79808
+ family: "device-events",
79809
+ label: "Device needs attention (raised / resolved)",
79810
+ bad: ["device-attention-required"],
79811
+ recovery: ["device-attention-resolved"],
79812
+ snapshotLabel: "Devices needing attention now",
79813
+ snapshotSection: null
79814
+ },
79768
79815
  {
79769
79816
  id: "node-connectivity",
79770
79817
  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",
@@ -48482,7 +48506,6 @@ var RecommendationReasonSchema = discriminatedUnion("kind", [
48482
48506
  modelId: string()
48483
48507
  }),
48484
48508
  object({ kind: literal("cpu-device") }),
48485
- object({ kind: literal("coral-untouched") }),
48486
48509
  object({ kind: literal("device-disabled") }),
48487
48510
  object({ kind: literal("device-unavailable") }),
48488
48511
  object({ kind: literal("node-offline") }),
@@ -48580,11 +48603,6 @@ var AutoTuneWarningSchema = discriminatedUnion("kind", [
48580
48603
  kind: literal("detector-store-unreadable"),
48581
48604
  error: string()
48582
48605
  }),
48583
- object({
48584
- kind: literal("coral-enabled"),
48585
- nodeId: string(),
48586
- deviceKey: string()
48587
- }),
48588
48606
  object({
48589
48607
  kind: literal("custom-pin-kept"),
48590
48608
  nodeId: string(),
@@ -56262,6 +56280,16 @@ var DishwasherStatusSchema = object({
56262
56280
  powerState: string().nullable(),
56263
56281
  saltLevel: DishwasherConsumableLevelSchema.nullable(),
56264
56282
  rinseAidLevel: DishwasherConsumableLevelSchema.nullable(),
56283
+ /**
56284
+ * True while the appliance asks for its filter to be cleaned (smart-filter, filter-system or
56285
+ * combined care-and-filter reminder raised); false when every such reminder reads clear; null
56286
+ * when none is reported. A cleared reminder is not an unknown one.
56287
+ */
56288
+ filterCleaningDue: boolean().nullable(),
56289
+ /** True while the machine-care (descaling / cleaning-program) reminder is raised; false when clear; null when not reported. */
56290
+ machineCareDue: boolean().nullable(),
56291
+ /** Program runs left before the machine-care reminder is due; null when the appliance does not say. */
56292
+ machineCareRemainingRuns: number().int().nonnegative().nullable(),
56265
56293
  /** Option states: null when the appliance does not expose the option or has not said. */
56266
56294
  halfLoad: boolean().nullable(),
56267
56295
  hygienePlus: boolean().nullable(),
@@ -64912,16 +64940,6 @@ var UpdateUserInputSchema = object({
64912
64940
  allowedDevices: record(string(), union([array(string()), literal("*")])).optional(),
64913
64941
  scopes: array(TokenScopeSchema).optional()
64914
64942
  });
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
64943
  var OauthSessionSummarySchema = object({
64926
64944
  id: string(),
64927
64945
  userId: string(),
@@ -64943,8 +64961,7 @@ var TotpStatusSchema = object({
64943
64961
  confirmedAt: number().nullable()
64944
64962
  });
64945
64963
  /**
64946
- * user-management — singleton capability for user accounts and the
64947
- * legacy API-key rows.
64964
+ * user-management — singleton capability for user accounts.
64948
64965
  *
64949
64966
  * v2 model: every method gated by `auth: 'admin'`. Admin-only delegation
64950
64967
  * — the subset check on `setUserScopes` is moot
@@ -65000,10 +65017,6 @@ method(_void(), array(UserSummarySchema), { auth: "admin" }), method(CreateUserI
65000
65017
  }), UserSummarySchema.extend({ passwordHash: string() }).nullable(), {
65001
65018
  kind: "mutation",
65002
65019
  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
65020
  }), method(object({ userId: string() }), TotpSetupResultSchema, {
65008
65021
  kind: "mutation",
65009
65022
  auth: "admin",
@@ -74459,6 +74472,12 @@ Object.freeze({
74459
74472
  addonId: null,
74460
74473
  access: "view"
74461
74474
  },
74475
+ "records.transact": {
74476
+ capName: "records",
74477
+ capScope: "system",
74478
+ addonId: null,
74479
+ access: "create"
74480
+ },
74462
74481
  "sceneMonitor.captureReference": {
74463
74482
  capName: "scene-monitor",
74464
74483
  capScope: "device",
@@ -75791,12 +75810,6 @@ Object.freeze({
75791
75810
  addonId: null,
75792
75811
  access: "view"
75793
75812
  },
75794
- "userManagement.listApiKeys": {
75795
- capName: "user-management",
75796
- capScope: "system",
75797
- addonId: null,
75798
- access: "view"
75799
- },
75800
75813
  "userManagement.listExternalIdentities": {
75801
75814
  capName: "user-management",
75802
75815
  capScope: "system",
@@ -75851,12 +75864,6 @@ Object.freeze({
75851
75864
  addonId: null,
75852
75865
  access: "create"
75853
75866
  },
75854
- "userManagement.revokeApiKey": {
75855
- capName: "user-management",
75856
- capScope: "system",
75857
- addonId: null,
75858
- access: "delete"
75859
- },
75860
75867
  "userManagement.revokeOauthSession": {
75861
75868
  capName: "user-management",
75862
75869
  capScope: "system",
@@ -79221,9 +79228,13 @@ new Map(Object.entries({
79221
79228
  "stream-online": "device-events",
79222
79229
  "stream-offline": "device-events",
79223
79230
  "detection-blind": "device-events",
79231
+ "motion-noisy": "device-events",
79232
+ "motion-calm": "device-events",
79224
79233
  "recording-stalled": "device-events",
79225
79234
  "recording-healthy": "device-events",
79226
79235
  "recording-degraded": "device-events",
79236
+ "device-attention-required": "device-events",
79237
+ "device-attention-resolved": "device-events",
79227
79238
  "node-online": "system",
79228
79239
  "node-offline": "system",
79229
79240
  "node-restarting": "system",
@@ -79306,6 +79317,12 @@ var NC_SYSTEM_EVENT_KIND_GROUP_SPECS = [
79306
79317
  label: "Detecting nothing",
79307
79318
  kinds: ["detection-blind"]
79308
79319
  },
79320
+ {
79321
+ id: "motion-noise",
79322
+ family: "device-events",
79323
+ label: "Motion without a subject",
79324
+ kinds: ["motion-noisy", "motion-calm"]
79325
+ },
79309
79326
  {
79310
79327
  id: "recording",
79311
79328
  family: "device-events",
@@ -79316,6 +79333,12 @@ var NC_SYSTEM_EVENT_KIND_GROUP_SPECS = [
79316
79333
  "recording-degraded"
79317
79334
  ]
79318
79335
  },
79336
+ {
79337
+ id: "device-attention",
79338
+ family: "device-events",
79339
+ label: "Needs attention",
79340
+ kinds: ["device-attention-required", "device-attention-resolved"]
79341
+ },
79319
79342
  {
79320
79343
  id: "nodes",
79321
79344
  family: "system",
@@ -79455,6 +79478,7 @@ var ALERT_EPISODE = [
79455
79478
  "alert-error",
79456
79479
  "alert-critical-resolved"
79457
79480
  ];
79481
+ var DEVICE_ATTENTION = ["device-attention-required", "device-attention-resolved"];
79458
79482
  var UPDATES = [
79459
79483
  "addon-update-available",
79460
79484
  "server-update-available",
@@ -79484,9 +79508,12 @@ var DEVICE_EVENTS = [
79484
79508
  "stream-online",
79485
79509
  "stream-offline",
79486
79510
  "detection-blind",
79511
+ "motion-noisy",
79512
+ "motion-calm",
79487
79513
  "recording-stalled",
79488
79514
  "recording-healthy",
79489
79515
  "recording-degraded",
79516
+ ...DEVICE_ATTENTION,
79490
79517
  ...ALARM
79491
79518
  ];
79492
79519
  /** Every kind a summary may speak about — the two summarisable families. */
@@ -79654,7 +79681,9 @@ var STATE_SUMMARY_VARS = [
79654
79681
  [...RULE_TEXT],
79655
79682
  [...RULE_TEXT],
79656
79683
  [...RULE_TEXT],
79657
- ([...RULE_TEXT], [...ALERT_EPISODE]),
79684
+ [...RULE_TEXT],
79685
+ [...RULE_TEXT],
79686
+ ([...RULE_TEXT], [...DEVICE_ATTENTION, ...ALERT_EPISODE]),
79658
79687
  [...RULE_TEXT],
79659
79688
  [...RULE_TEXT],
79660
79689
  [...RULE_TEXT],
@@ -79676,11 +79705,11 @@ var STATE_SUMMARY_VARS = [
79676
79705
  [...RULE_TEXT],
79677
79706
  [...RULE_TEXT],
79678
79707
  [...RULE_TEXT],
79708
+ ([...RULE_TEXT], [...DEVICE_ATTENTION, ...ALERT_EPISODE]),
79679
79709
  ([...RULE_TEXT], [...ALERT_EPISODE]),
79710
+ ([...RULE_TEXT], [...DEVICE_ATTENTION, ...ALERT_EPISODE]),
79680
79711
  ([...RULE_TEXT], [...ALERT_EPISODE]),
79681
- ([...RULE_TEXT], [...ALERT_EPISODE]),
79682
- ([...RULE_TEXT], [...ALERT_EPISODE]),
79683
- ([...RULE_TEXT], [...ALERT_EPISODE]),
79712
+ ([...RULE_TEXT], [...DEVICE_ATTENTION, ...ALERT_EPISODE]),
79684
79713
  [...RULE_TEXT],
79685
79714
  [...RULE_TEXT],
79686
79715
  [...RULE_TEXT],
@@ -79756,6 +79785,15 @@ new Map([
79756
79785
  snapshotLabel: "Tanks low or full now",
79757
79786
  snapshotSection: "tanks"
79758
79787
  },
79788
+ {
79789
+ id: "motion-noise",
79790
+ family: "device-events",
79791
+ label: "Motion without a subject (constant / calm again)",
79792
+ bad: ["motion-noisy"],
79793
+ recovery: ["motion-calm"],
79794
+ snapshotLabel: "Cameras with constant motion now",
79795
+ snapshotSection: null
79796
+ },
79759
79797
  {
79760
79798
  id: "recording-health",
79761
79799
  family: "device-events",
@@ -79765,6 +79803,15 @@ new Map([
79765
79803
  snapshotLabel: "Recordings stalled now",
79766
79804
  snapshotSection: null
79767
79805
  },
79806
+ {
79807
+ id: "device-attention",
79808
+ family: "device-events",
79809
+ label: "Device needs attention (raised / resolved)",
79810
+ bad: ["device-attention-required"],
79811
+ recovery: ["device-attention-resolved"],
79812
+ snapshotLabel: "Devices needing attention now",
79813
+ snapshotSection: null
79814
+ },
79768
79815
  {
79769
79816
  id: "node-connectivity",
79770
79817
  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.144",
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",