@camstack/addon-waste-collections 0.1.22 → 0.1.24

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.
@@ -6,7 +6,7 @@ let node_fs = require("node:fs");
6
6
  let node_path = require("node:path");
7
7
  let node_child_process = require("node:child_process");
8
8
  let node_url = require("node:url");
9
- //#region ../types/dist/event-category-7pZEBmVg.mjs
9
+ //#region ../types/dist/event-category-BfJwUd2S.mjs
10
10
  var EventCategory = /* @__PURE__ */ function(EventCategory) {
11
11
  EventCategory["SystemBoot"] = "system.boot";
12
12
  EventCategory["SystemAddonsReady"] = "system.addons-ready";
@@ -323,6 +323,15 @@ var EventCategory = /* @__PURE__ */ function(EventCategory) {
323
323
  */
324
324
  EventCategory["PipelineDetectionBlind"] = "pipeline.detection-blind";
325
325
  /**
326
+ * A camera's motion source has fired constantly with no subject for an hour
327
+ * (motion duty or session count over the bar, zero detections) — it is not
328
+ * blind, its motion zones or sensitivity want tuning (D907). Paired with
329
+ * {@link PipelineMotionCalm}.
330
+ */
331
+ EventCategory["PipelineMotionNoisy"] = "pipeline.motion-noisy";
332
+ /** The recovery edge of {@link PipelineMotionNoisy}: the motion fell back, or a detection arrived. */
333
+ EventCategory["PipelineMotionCalm"] = "pipeline.motion-calm";
334
+ /**
326
335
  * Per-camera pipeline config was mutated by the orchestrator
327
336
  * (3-level settings change via `setAgentAddonDefaults` /
328
337
  * `setCameraStepToggle` / `setCameraPipelineForAgent` or a
@@ -5562,7 +5571,7 @@ var ZodIssueCode = {
5562
5571
  var ZodFirstPartyTypeKind;
5563
5572
  ZodFirstPartyTypeKind || (ZodFirstPartyTypeKind = {});
5564
5573
  //#endregion
5565
- //#region ../types/dist/sleep-CueztlR1.mjs
5574
+ //#region ../types/dist/sleep-DJFUfKvA.mjs
5566
5575
  /**
5567
5576
  * The audio chunk plane's byte format, and the ONE expansion from a coded
5568
5577
  * window to float samples (D455).
@@ -8171,7 +8180,7 @@ var EntryDescriptorSchema = object({
8171
8180
  /** JSON Schema of the entry body; `secret: true` marks a password field. */
8172
8181
  fields: record(string(), unknown())
8173
8182
  }).strict();
8174
- /** What crosses the wire and sits in the engine's catalog: JSON only, no Zod. */
8183
+ /** What crosses the wire from an addon: JSON only, no Zod. An unknown key is refused. */
8175
8184
  var RecordKindDeclarationSchema = object({
8176
8185
  database: _enum(RECORD_DATABASES).default("settings"),
8177
8186
  class: _enum(RECORD_CLASSES),
@@ -8190,14 +8199,6 @@ var RecordKindDeclarationSchema = object({
8190
8199
  secretPaths: array(string().min(1)).default([]),
8191
8200
  /** The id key of each array that carries a secret (`{ headers: 'name' }`). */
8192
8201
  secretArrayKeys: record(string(), string()).default({}),
8193
- /**
8194
- * RETIRED (D900): the legacy table a kind adopted from during the records
8195
- * migration. Nothing declares it any more and nothing reads it; the schema
8196
- * still ACCEPTS it because the catalog rows the migration wrote carry it
8197
- * (an orphaned kind is never redeclared) and an addon built before the
8198
- * removal still sends it. Never set it.
8199
- */
8200
- adoptsFrom: string().min(1).optional(),
8201
8202
  /** Kinds that must agree through `transact` sit in one file under one family name. */
8202
8203
  transactFamily: string().min(1).optional(),
8203
8204
  entry: EntryDescriptorSchema.optional()
@@ -13001,17 +13002,6 @@ object({
13001
13002
  createdAt: number(),
13002
13003
  updatedAt: number()
13003
13004
  });
13004
- object({
13005
- id: string(),
13006
- label: string(),
13007
- isAdmin: boolean().default(false),
13008
- allowedProviders: AllowedProviderSchema,
13009
- allowedDevices: AllowedDevicesSchema,
13010
- tokenHash: string(),
13011
- tokenPrefix: string(),
13012
- createdAt: number(),
13013
- lastUsedAt: number().optional()
13014
- });
13015
13005
  object({
13016
13006
  id: string(),
13017
13007
  userId: string(),
@@ -16887,16 +16877,36 @@ var RecordKindStateSchema = _enum([
16887
16877
  var DeclareKindResultSchema = object({
16888
16878
  kindId: number().int(),
16889
16879
  state: RecordKindStateSchema,
16890
- createdIndexes: array(string()),
16891
- /**
16892
- * RETIRED (D900): always `null`. It carried the records-migration boot guard;
16893
- * it stays on the wire, null, because an addon built before the removal reads
16894
- * an ABSENT field as "adoption pending" and refuses to start.
16895
- */
16896
- adoptionPending: _null()
16880
+ createdIndexes: array(string())
16897
16881
  });
16898
16882
  /** Keychain refs a write released (the old marker is gone from the row): the owner deletes the values. */
16899
16883
  var SecretRefsList = array(string());
16884
+ /**
16885
+ * One op of a `transact`: the single-row writes, each on a kind of the caller.
16886
+ * All ops of one call share ONE database file and ONE `transactFamily`.
16887
+ */
16888
+ var RecordTransactOpSchema = discriminatedUnion("op", [
16889
+ object({
16890
+ op: literal("put"),
16891
+ kind: RecordKindNameSchema,
16892
+ record: RecordInputSchema,
16893
+ ifRev: number().int().min(0).optional()
16894
+ }),
16895
+ object({
16896
+ op: literal("patch"),
16897
+ kind: RecordKindNameSchema,
16898
+ id: RecordIdSchema,
16899
+ data: RecordBodySchema,
16900
+ at: number().int().nullable().optional(),
16901
+ expiresAt: number().int().nullable().optional(),
16902
+ ifRev: number().int().min(1).optional()
16903
+ }),
16904
+ object({
16905
+ op: literal("delete"),
16906
+ kind: RecordKindNameSchema,
16907
+ id: RecordIdSchema
16908
+ })
16909
+ ]);
16900
16910
  var RecordSecretRefsSchema = record(string(), record(string(), string()));
16901
16911
  method(object({ kinds: record(RecordKindNameSchema, RecordKindDeclarationSchema) }), object({ kinds: record(string(), DeclareKindResultSchema) }), {
16902
16912
  kind: "mutation",
@@ -17003,6 +17013,16 @@ method(object({ kinds: record(RecordKindNameSchema, RecordKindDeclarationSchema)
17003
17013
  }), {
17004
17014
  kind: "mutation",
17005
17015
  auth: "admin"
17016
+ }), method(object({ ops: array(RecordTransactOpSchema).min(1).max(RECORD_BATCH_MAX) }), object({
17017
+ results: array(object({
17018
+ rev: number().int().nullable(),
17019
+ deleted: boolean()
17020
+ })),
17021
+ releasedRefs: SecretRefsList,
17022
+ secretRefs: SecretRefsList
17023
+ }), {
17024
+ kind: "mutation",
17025
+ auth: "admin"
17006
17026
  }), method(object({
17007
17027
  deviceId: number().int(),
17008
17028
  kinds: array(RecordKindNameSchema).optional()
@@ -42361,9 +42381,13 @@ var NcSystemEventKindSchema = _enum([
42361
42381
  "node-updating",
42362
42382
  "node-inference-unavailable",
42363
42383
  "detection-blind",
42384
+ "motion-noisy",
42385
+ "motion-calm",
42364
42386
  "recording-stalled",
42365
42387
  "recording-healthy",
42366
42388
  "recording-degraded",
42389
+ "device-attention-required",
42390
+ "device-attention-resolved",
42367
42391
  "storage-location-low",
42368
42392
  "storage-location-critical",
42369
42393
  "storage-location-ok",
@@ -47924,7 +47948,6 @@ var RecommendationReasonSchema = discriminatedUnion("kind", [
47924
47948
  modelId: string()
47925
47949
  }),
47926
47950
  object({ kind: literal("cpu-device") }),
47927
- object({ kind: literal("coral-untouched") }),
47928
47951
  object({ kind: literal("device-disabled") }),
47929
47952
  object({ kind: literal("device-unavailable") }),
47930
47953
  object({ kind: literal("node-offline") }),
@@ -48022,11 +48045,6 @@ var AutoTuneWarningSchema = discriminatedUnion("kind", [
48022
48045
  kind: literal("detector-store-unreadable"),
48023
48046
  error: string()
48024
48047
  }),
48025
- object({
48026
- kind: literal("coral-enabled"),
48027
- nodeId: string(),
48028
- deviceKey: string()
48029
- }),
48030
48048
  object({
48031
48049
  kind: literal("custom-pin-kept"),
48032
48050
  nodeId: string(),
@@ -54830,6 +54848,16 @@ object({
54830
54848
  powerState: string().nullable(),
54831
54849
  saltLevel: DishwasherConsumableLevelSchema.nullable(),
54832
54850
  rinseAidLevel: DishwasherConsumableLevelSchema.nullable(),
54851
+ /**
54852
+ * True while the appliance asks for its filter to be cleaned (smart-filter, filter-system or
54853
+ * combined care-and-filter reminder raised); false when every such reminder reads clear; null
54854
+ * when none is reported. A cleared reminder is not an unknown one.
54855
+ */
54856
+ filterCleaningDue: boolean().nullable(),
54857
+ /** True while the machine-care (descaling / cleaning-program) reminder is raised; false when clear; null when not reported. */
54858
+ machineCareDue: boolean().nullable(),
54859
+ /** Program runs left before the machine-care reminder is due; null when the appliance does not say. */
54860
+ machineCareRemainingRuns: number().int().nonnegative().nullable(),
54833
54861
  /** Option states: null when the appliance does not expose the option or has not said. */
54834
54862
  halfLoad: boolean().nullable(),
54835
54863
  hygienePlus: boolean().nullable(),
@@ -61447,16 +61475,6 @@ var UpdateUserInputSchema = object({
61447
61475
  allowedDevices: record(string(), union([array(string()), literal("*")])).optional(),
61448
61476
  scopes: array(TokenScopeSchema).optional()
61449
61477
  });
61450
- var ApiKeySummarySchema = object({
61451
- id: string(),
61452
- label: string(),
61453
- isAdmin: boolean().default(false),
61454
- allowedProviders: union([array(string()), literal("*")]).optional(),
61455
- allowedDevices: record(string(), union([array(string()), literal("*")])).optional(),
61456
- tokenPrefix: string(),
61457
- createdAt: number(),
61458
- lastUsedAt: number().optional()
61459
- });
61460
61478
  var OauthSessionSummarySchema = object({
61461
61479
  id: string(),
61462
61480
  userId: string(),
@@ -61478,8 +61496,7 @@ var TotpStatusSchema = object({
61478
61496
  confirmedAt: number().nullable()
61479
61497
  });
61480
61498
  /**
61481
- * user-management — singleton capability for user accounts and the
61482
- * legacy API-key rows.
61499
+ * user-management — singleton capability for user accounts.
61483
61500
  *
61484
61501
  * v2 model: every method gated by `auth: 'admin'`. Admin-only delegation
61485
61502
  * — the subset check on `setUserScopes` is moot
@@ -61535,10 +61552,6 @@ method(_void(), array(UserSummarySchema), { auth: "admin" }), method(CreateUserI
61535
61552
  }), UserSummarySchema.extend({ passwordHash: string() }).nullable(), {
61536
61553
  kind: "mutation",
61537
61554
  access: "view"
61538
- }), method(_void(), array(ApiKeySummarySchema), { auth: "admin" }), method(object({ id: string() }), object({ success: literal(true) }), {
61539
- kind: "mutation",
61540
- auth: "admin",
61541
- access: "delete"
61542
61555
  }), method(object({ userId: string() }), TotpSetupResultSchema, {
61543
61556
  kind: "mutation",
61544
61557
  auth: "admin",
@@ -69051,6 +69064,12 @@ Object.freeze({
69051
69064
  addonId: null,
69052
69065
  access: "view"
69053
69066
  },
69067
+ "records.transact": {
69068
+ capName: "records",
69069
+ capScope: "system",
69070
+ addonId: null,
69071
+ access: "create"
69072
+ },
69054
69073
  "sceneMonitor.captureReference": {
69055
69074
  capName: "scene-monitor",
69056
69075
  capScope: "device",
@@ -70383,12 +70402,6 @@ Object.freeze({
70383
70402
  addonId: null,
70384
70403
  access: "view"
70385
70404
  },
70386
- "userManagement.listApiKeys": {
70387
- capName: "user-management",
70388
- capScope: "system",
70389
- addonId: null,
70390
- access: "view"
70391
- },
70392
70405
  "userManagement.listExternalIdentities": {
70393
70406
  capName: "user-management",
70394
70407
  capScope: "system",
@@ -70443,12 +70456,6 @@ Object.freeze({
70443
70456
  addonId: null,
70444
70457
  access: "create"
70445
70458
  },
70446
- "userManagement.revokeApiKey": {
70447
- capName: "user-management",
70448
- capScope: "system",
70449
- addonId: null,
70450
- access: "delete"
70451
- },
70452
70459
  "userManagement.revokeOauthSession": {
70453
70460
  capName: "user-management",
70454
70461
  capScope: "system",
@@ -73813,9 +73820,13 @@ new Map(Object.entries({
73813
73820
  "stream-online": "device-events",
73814
73821
  "stream-offline": "device-events",
73815
73822
  "detection-blind": "device-events",
73823
+ "motion-noisy": "device-events",
73824
+ "motion-calm": "device-events",
73816
73825
  "recording-stalled": "device-events",
73817
73826
  "recording-healthy": "device-events",
73818
73827
  "recording-degraded": "device-events",
73828
+ "device-attention-required": "device-events",
73829
+ "device-attention-resolved": "device-events",
73819
73830
  "node-online": "system",
73820
73831
  "node-offline": "system",
73821
73832
  "node-restarting": "system",
@@ -73898,6 +73909,12 @@ var NC_SYSTEM_EVENT_KIND_GROUP_SPECS = [
73898
73909
  label: "Detecting nothing",
73899
73910
  kinds: ["detection-blind"]
73900
73911
  },
73912
+ {
73913
+ id: "motion-noise",
73914
+ family: "device-events",
73915
+ label: "Motion without a subject",
73916
+ kinds: ["motion-noisy", "motion-calm"]
73917
+ },
73901
73918
  {
73902
73919
  id: "recording",
73903
73920
  family: "device-events",
@@ -73908,6 +73925,12 @@ var NC_SYSTEM_EVENT_KIND_GROUP_SPECS = [
73908
73925
  "recording-degraded"
73909
73926
  ]
73910
73927
  },
73928
+ {
73929
+ id: "device-attention",
73930
+ family: "device-events",
73931
+ label: "Needs attention",
73932
+ kinds: ["device-attention-required", "device-attention-resolved"]
73933
+ },
73911
73934
  {
73912
73935
  id: "nodes",
73913
73936
  family: "system",
@@ -74047,6 +74070,7 @@ var ALERT_EPISODE = [
74047
74070
  "alert-error",
74048
74071
  "alert-critical-resolved"
74049
74072
  ];
74073
+ var DEVICE_ATTENTION = ["device-attention-required", "device-attention-resolved"];
74050
74074
  var UPDATES = [
74051
74075
  "addon-update-available",
74052
74076
  "server-update-available",
@@ -74076,9 +74100,12 @@ var DEVICE_EVENTS = [
74076
74100
  "stream-online",
74077
74101
  "stream-offline",
74078
74102
  "detection-blind",
74103
+ "motion-noisy",
74104
+ "motion-calm",
74079
74105
  "recording-stalled",
74080
74106
  "recording-healthy",
74081
74107
  "recording-degraded",
74108
+ ...DEVICE_ATTENTION,
74082
74109
  ...ALARM
74083
74110
  ];
74084
74111
  /** Every kind a summary may speak about — the two summarisable families. */
@@ -74246,7 +74273,9 @@ var STATE_SUMMARY_VARS = [
74246
74273
  [...RULE_TEXT],
74247
74274
  [...RULE_TEXT],
74248
74275
  [...RULE_TEXT],
74249
- ([...RULE_TEXT], [...ALERT_EPISODE]),
74276
+ [...RULE_TEXT],
74277
+ [...RULE_TEXT],
74278
+ ([...RULE_TEXT], [...DEVICE_ATTENTION, ...ALERT_EPISODE]),
74250
74279
  [...RULE_TEXT],
74251
74280
  [...RULE_TEXT],
74252
74281
  [...RULE_TEXT],
@@ -74268,11 +74297,11 @@ var STATE_SUMMARY_VARS = [
74268
74297
  [...RULE_TEXT],
74269
74298
  [...RULE_TEXT],
74270
74299
  [...RULE_TEXT],
74300
+ ([...RULE_TEXT], [...DEVICE_ATTENTION, ...ALERT_EPISODE]),
74271
74301
  ([...RULE_TEXT], [...ALERT_EPISODE]),
74302
+ ([...RULE_TEXT], [...DEVICE_ATTENTION, ...ALERT_EPISODE]),
74272
74303
  ([...RULE_TEXT], [...ALERT_EPISODE]),
74273
- ([...RULE_TEXT], [...ALERT_EPISODE]),
74274
- ([...RULE_TEXT], [...ALERT_EPISODE]),
74275
- ([...RULE_TEXT], [...ALERT_EPISODE]),
74304
+ ([...RULE_TEXT], [...DEVICE_ATTENTION, ...ALERT_EPISODE]),
74276
74305
  [...RULE_TEXT],
74277
74306
  [...RULE_TEXT],
74278
74307
  [...RULE_TEXT],
@@ -74348,6 +74377,15 @@ new Map([
74348
74377
  snapshotLabel: "Tanks low or full now",
74349
74378
  snapshotSection: "tanks"
74350
74379
  },
74380
+ {
74381
+ id: "motion-noise",
74382
+ family: "device-events",
74383
+ label: "Motion without a subject (constant / calm again)",
74384
+ bad: ["motion-noisy"],
74385
+ recovery: ["motion-calm"],
74386
+ snapshotLabel: "Cameras with constant motion now",
74387
+ snapshotSection: null
74388
+ },
74351
74389
  {
74352
74390
  id: "recording-health",
74353
74391
  family: "device-events",
@@ -74357,6 +74395,15 @@ new Map([
74357
74395
  snapshotLabel: "Recordings stalled now",
74358
74396
  snapshotSection: null
74359
74397
  },
74398
+ {
74399
+ id: "device-attention",
74400
+ family: "device-events",
74401
+ label: "Device needs attention (raised / resolved)",
74402
+ bad: ["device-attention-required"],
74403
+ recovery: ["device-attention-resolved"],
74404
+ snapshotLabel: "Devices needing attention now",
74405
+ snapshotSection: null
74406
+ },
74360
74407
  {
74361
74408
  id: "node-connectivity",
74362
74409
  family: "system",
@@ -2,7 +2,7 @@ import { existsSync, mkdirSync, readFileSync, writeFileSync } from "node:fs";
2
2
  import { dirname, join } from "node:path";
3
3
  import { spawn } from "node:child_process";
4
4
  import { fileURLToPath } from "node:url";
5
- //#region ../types/dist/event-category-7pZEBmVg.mjs
5
+ //#region ../types/dist/event-category-BfJwUd2S.mjs
6
6
  var EventCategory = /* @__PURE__ */ function(EventCategory) {
7
7
  EventCategory["SystemBoot"] = "system.boot";
8
8
  EventCategory["SystemAddonsReady"] = "system.addons-ready";
@@ -319,6 +319,15 @@ var EventCategory = /* @__PURE__ */ function(EventCategory) {
319
319
  */
320
320
  EventCategory["PipelineDetectionBlind"] = "pipeline.detection-blind";
321
321
  /**
322
+ * A camera's motion source has fired constantly with no subject for an hour
323
+ * (motion duty or session count over the bar, zero detections) — it is not
324
+ * blind, its motion zones or sensitivity want tuning (D907). Paired with
325
+ * {@link PipelineMotionCalm}.
326
+ */
327
+ EventCategory["PipelineMotionNoisy"] = "pipeline.motion-noisy";
328
+ /** The recovery edge of {@link PipelineMotionNoisy}: the motion fell back, or a detection arrived. */
329
+ EventCategory["PipelineMotionCalm"] = "pipeline.motion-calm";
330
+ /**
322
331
  * Per-camera pipeline config was mutated by the orchestrator
323
332
  * (3-level settings change via `setAgentAddonDefaults` /
324
333
  * `setCameraStepToggle` / `setCameraPipelineForAgent` or a
@@ -5558,7 +5567,7 @@ var ZodIssueCode = {
5558
5567
  var ZodFirstPartyTypeKind;
5559
5568
  ZodFirstPartyTypeKind || (ZodFirstPartyTypeKind = {});
5560
5569
  //#endregion
5561
- //#region ../types/dist/sleep-CueztlR1.mjs
5570
+ //#region ../types/dist/sleep-DJFUfKvA.mjs
5562
5571
  /**
5563
5572
  * The audio chunk plane's byte format, and the ONE expansion from a coded
5564
5573
  * window to float samples (D455).
@@ -8167,7 +8176,7 @@ var EntryDescriptorSchema = object({
8167
8176
  /** JSON Schema of the entry body; `secret: true` marks a password field. */
8168
8177
  fields: record(string(), unknown())
8169
8178
  }).strict();
8170
- /** What crosses the wire and sits in the engine's catalog: JSON only, no Zod. */
8179
+ /** What crosses the wire from an addon: JSON only, no Zod. An unknown key is refused. */
8171
8180
  var RecordKindDeclarationSchema = object({
8172
8181
  database: _enum(RECORD_DATABASES).default("settings"),
8173
8182
  class: _enum(RECORD_CLASSES),
@@ -8186,14 +8195,6 @@ var RecordKindDeclarationSchema = object({
8186
8195
  secretPaths: array(string().min(1)).default([]),
8187
8196
  /** The id key of each array that carries a secret (`{ headers: 'name' }`). */
8188
8197
  secretArrayKeys: record(string(), string()).default({}),
8189
- /**
8190
- * RETIRED (D900): the legacy table a kind adopted from during the records
8191
- * migration. Nothing declares it any more and nothing reads it; the schema
8192
- * still ACCEPTS it because the catalog rows the migration wrote carry it
8193
- * (an orphaned kind is never redeclared) and an addon built before the
8194
- * removal still sends it. Never set it.
8195
- */
8196
- adoptsFrom: string().min(1).optional(),
8197
8198
  /** Kinds that must agree through `transact` sit in one file under one family name. */
8198
8199
  transactFamily: string().min(1).optional(),
8199
8200
  entry: EntryDescriptorSchema.optional()
@@ -12997,17 +12998,6 @@ object({
12997
12998
  createdAt: number(),
12998
12999
  updatedAt: number()
12999
13000
  });
13000
- object({
13001
- id: string(),
13002
- label: string(),
13003
- isAdmin: boolean().default(false),
13004
- allowedProviders: AllowedProviderSchema,
13005
- allowedDevices: AllowedDevicesSchema,
13006
- tokenHash: string(),
13007
- tokenPrefix: string(),
13008
- createdAt: number(),
13009
- lastUsedAt: number().optional()
13010
- });
13011
13001
  object({
13012
13002
  id: string(),
13013
13003
  userId: string(),
@@ -16883,16 +16873,36 @@ var RecordKindStateSchema = _enum([
16883
16873
  var DeclareKindResultSchema = object({
16884
16874
  kindId: number().int(),
16885
16875
  state: RecordKindStateSchema,
16886
- createdIndexes: array(string()),
16887
- /**
16888
- * RETIRED (D900): always `null`. It carried the records-migration boot guard;
16889
- * it stays on the wire, null, because an addon built before the removal reads
16890
- * an ABSENT field as "adoption pending" and refuses to start.
16891
- */
16892
- adoptionPending: _null()
16876
+ createdIndexes: array(string())
16893
16877
  });
16894
16878
  /** Keychain refs a write released (the old marker is gone from the row): the owner deletes the values. */
16895
16879
  var SecretRefsList = array(string());
16880
+ /**
16881
+ * One op of a `transact`: the single-row writes, each on a kind of the caller.
16882
+ * All ops of one call share ONE database file and ONE `transactFamily`.
16883
+ */
16884
+ var RecordTransactOpSchema = discriminatedUnion("op", [
16885
+ object({
16886
+ op: literal("put"),
16887
+ kind: RecordKindNameSchema,
16888
+ record: RecordInputSchema,
16889
+ ifRev: number().int().min(0).optional()
16890
+ }),
16891
+ object({
16892
+ op: literal("patch"),
16893
+ kind: RecordKindNameSchema,
16894
+ id: RecordIdSchema,
16895
+ data: RecordBodySchema,
16896
+ at: number().int().nullable().optional(),
16897
+ expiresAt: number().int().nullable().optional(),
16898
+ ifRev: number().int().min(1).optional()
16899
+ }),
16900
+ object({
16901
+ op: literal("delete"),
16902
+ kind: RecordKindNameSchema,
16903
+ id: RecordIdSchema
16904
+ })
16905
+ ]);
16896
16906
  var RecordSecretRefsSchema = record(string(), record(string(), string()));
16897
16907
  method(object({ kinds: record(RecordKindNameSchema, RecordKindDeclarationSchema) }), object({ kinds: record(string(), DeclareKindResultSchema) }), {
16898
16908
  kind: "mutation",
@@ -16999,6 +17009,16 @@ method(object({ kinds: record(RecordKindNameSchema, RecordKindDeclarationSchema)
16999
17009
  }), {
17000
17010
  kind: "mutation",
17001
17011
  auth: "admin"
17012
+ }), method(object({ ops: array(RecordTransactOpSchema).min(1).max(RECORD_BATCH_MAX) }), object({
17013
+ results: array(object({
17014
+ rev: number().int().nullable(),
17015
+ deleted: boolean()
17016
+ })),
17017
+ releasedRefs: SecretRefsList,
17018
+ secretRefs: SecretRefsList
17019
+ }), {
17020
+ kind: "mutation",
17021
+ auth: "admin"
17002
17022
  }), method(object({
17003
17023
  deviceId: number().int(),
17004
17024
  kinds: array(RecordKindNameSchema).optional()
@@ -42357,9 +42377,13 @@ var NcSystemEventKindSchema = _enum([
42357
42377
  "node-updating",
42358
42378
  "node-inference-unavailable",
42359
42379
  "detection-blind",
42380
+ "motion-noisy",
42381
+ "motion-calm",
42360
42382
  "recording-stalled",
42361
42383
  "recording-healthy",
42362
42384
  "recording-degraded",
42385
+ "device-attention-required",
42386
+ "device-attention-resolved",
42363
42387
  "storage-location-low",
42364
42388
  "storage-location-critical",
42365
42389
  "storage-location-ok",
@@ -47920,7 +47944,6 @@ var RecommendationReasonSchema = discriminatedUnion("kind", [
47920
47944
  modelId: string()
47921
47945
  }),
47922
47946
  object({ kind: literal("cpu-device") }),
47923
- object({ kind: literal("coral-untouched") }),
47924
47947
  object({ kind: literal("device-disabled") }),
47925
47948
  object({ kind: literal("device-unavailable") }),
47926
47949
  object({ kind: literal("node-offline") }),
@@ -48018,11 +48041,6 @@ var AutoTuneWarningSchema = discriminatedUnion("kind", [
48018
48041
  kind: literal("detector-store-unreadable"),
48019
48042
  error: string()
48020
48043
  }),
48021
- object({
48022
- kind: literal("coral-enabled"),
48023
- nodeId: string(),
48024
- deviceKey: string()
48025
- }),
48026
48044
  object({
48027
48045
  kind: literal("custom-pin-kept"),
48028
48046
  nodeId: string(),
@@ -54826,6 +54844,16 @@ object({
54826
54844
  powerState: string().nullable(),
54827
54845
  saltLevel: DishwasherConsumableLevelSchema.nullable(),
54828
54846
  rinseAidLevel: DishwasherConsumableLevelSchema.nullable(),
54847
+ /**
54848
+ * True while the appliance asks for its filter to be cleaned (smart-filter, filter-system or
54849
+ * combined care-and-filter reminder raised); false when every such reminder reads clear; null
54850
+ * when none is reported. A cleared reminder is not an unknown one.
54851
+ */
54852
+ filterCleaningDue: boolean().nullable(),
54853
+ /** True while the machine-care (descaling / cleaning-program) reminder is raised; false when clear; null when not reported. */
54854
+ machineCareDue: boolean().nullable(),
54855
+ /** Program runs left before the machine-care reminder is due; null when the appliance does not say. */
54856
+ machineCareRemainingRuns: number().int().nonnegative().nullable(),
54829
54857
  /** Option states: null when the appliance does not expose the option or has not said. */
54830
54858
  halfLoad: boolean().nullable(),
54831
54859
  hygienePlus: boolean().nullable(),
@@ -61443,16 +61471,6 @@ var UpdateUserInputSchema = object({
61443
61471
  allowedDevices: record(string(), union([array(string()), literal("*")])).optional(),
61444
61472
  scopes: array(TokenScopeSchema).optional()
61445
61473
  });
61446
- var ApiKeySummarySchema = object({
61447
- id: string(),
61448
- label: string(),
61449
- isAdmin: boolean().default(false),
61450
- allowedProviders: union([array(string()), literal("*")]).optional(),
61451
- allowedDevices: record(string(), union([array(string()), literal("*")])).optional(),
61452
- tokenPrefix: string(),
61453
- createdAt: number(),
61454
- lastUsedAt: number().optional()
61455
- });
61456
61474
  var OauthSessionSummarySchema = object({
61457
61475
  id: string(),
61458
61476
  userId: string(),
@@ -61474,8 +61492,7 @@ var TotpStatusSchema = object({
61474
61492
  confirmedAt: number().nullable()
61475
61493
  });
61476
61494
  /**
61477
- * user-management — singleton capability for user accounts and the
61478
- * legacy API-key rows.
61495
+ * user-management — singleton capability for user accounts.
61479
61496
  *
61480
61497
  * v2 model: every method gated by `auth: 'admin'`. Admin-only delegation
61481
61498
  * — the subset check on `setUserScopes` is moot
@@ -61531,10 +61548,6 @@ method(_void(), array(UserSummarySchema), { auth: "admin" }), method(CreateUserI
61531
61548
  }), UserSummarySchema.extend({ passwordHash: string() }).nullable(), {
61532
61549
  kind: "mutation",
61533
61550
  access: "view"
61534
- }), method(_void(), array(ApiKeySummarySchema), { auth: "admin" }), method(object({ id: string() }), object({ success: literal(true) }), {
61535
- kind: "mutation",
61536
- auth: "admin",
61537
- access: "delete"
61538
61551
  }), method(object({ userId: string() }), TotpSetupResultSchema, {
61539
61552
  kind: "mutation",
61540
61553
  auth: "admin",
@@ -69047,6 +69060,12 @@ Object.freeze({
69047
69060
  addonId: null,
69048
69061
  access: "view"
69049
69062
  },
69063
+ "records.transact": {
69064
+ capName: "records",
69065
+ capScope: "system",
69066
+ addonId: null,
69067
+ access: "create"
69068
+ },
69050
69069
  "sceneMonitor.captureReference": {
69051
69070
  capName: "scene-monitor",
69052
69071
  capScope: "device",
@@ -70379,12 +70398,6 @@ Object.freeze({
70379
70398
  addonId: null,
70380
70399
  access: "view"
70381
70400
  },
70382
- "userManagement.listApiKeys": {
70383
- capName: "user-management",
70384
- capScope: "system",
70385
- addonId: null,
70386
- access: "view"
70387
- },
70388
70401
  "userManagement.listExternalIdentities": {
70389
70402
  capName: "user-management",
70390
70403
  capScope: "system",
@@ -70439,12 +70452,6 @@ Object.freeze({
70439
70452
  addonId: null,
70440
70453
  access: "create"
70441
70454
  },
70442
- "userManagement.revokeApiKey": {
70443
- capName: "user-management",
70444
- capScope: "system",
70445
- addonId: null,
70446
- access: "delete"
70447
- },
70448
70455
  "userManagement.revokeOauthSession": {
70449
70456
  capName: "user-management",
70450
70457
  capScope: "system",
@@ -73809,9 +73816,13 @@ new Map(Object.entries({
73809
73816
  "stream-online": "device-events",
73810
73817
  "stream-offline": "device-events",
73811
73818
  "detection-blind": "device-events",
73819
+ "motion-noisy": "device-events",
73820
+ "motion-calm": "device-events",
73812
73821
  "recording-stalled": "device-events",
73813
73822
  "recording-healthy": "device-events",
73814
73823
  "recording-degraded": "device-events",
73824
+ "device-attention-required": "device-events",
73825
+ "device-attention-resolved": "device-events",
73815
73826
  "node-online": "system",
73816
73827
  "node-offline": "system",
73817
73828
  "node-restarting": "system",
@@ -73894,6 +73905,12 @@ var NC_SYSTEM_EVENT_KIND_GROUP_SPECS = [
73894
73905
  label: "Detecting nothing",
73895
73906
  kinds: ["detection-blind"]
73896
73907
  },
73908
+ {
73909
+ id: "motion-noise",
73910
+ family: "device-events",
73911
+ label: "Motion without a subject",
73912
+ kinds: ["motion-noisy", "motion-calm"]
73913
+ },
73897
73914
  {
73898
73915
  id: "recording",
73899
73916
  family: "device-events",
@@ -73904,6 +73921,12 @@ var NC_SYSTEM_EVENT_KIND_GROUP_SPECS = [
73904
73921
  "recording-degraded"
73905
73922
  ]
73906
73923
  },
73924
+ {
73925
+ id: "device-attention",
73926
+ family: "device-events",
73927
+ label: "Needs attention",
73928
+ kinds: ["device-attention-required", "device-attention-resolved"]
73929
+ },
73907
73930
  {
73908
73931
  id: "nodes",
73909
73932
  family: "system",
@@ -74043,6 +74066,7 @@ var ALERT_EPISODE = [
74043
74066
  "alert-error",
74044
74067
  "alert-critical-resolved"
74045
74068
  ];
74069
+ var DEVICE_ATTENTION = ["device-attention-required", "device-attention-resolved"];
74046
74070
  var UPDATES = [
74047
74071
  "addon-update-available",
74048
74072
  "server-update-available",
@@ -74072,9 +74096,12 @@ var DEVICE_EVENTS = [
74072
74096
  "stream-online",
74073
74097
  "stream-offline",
74074
74098
  "detection-blind",
74099
+ "motion-noisy",
74100
+ "motion-calm",
74075
74101
  "recording-stalled",
74076
74102
  "recording-healthy",
74077
74103
  "recording-degraded",
74104
+ ...DEVICE_ATTENTION,
74078
74105
  ...ALARM
74079
74106
  ];
74080
74107
  /** Every kind a summary may speak about — the two summarisable families. */
@@ -74242,7 +74269,9 @@ var STATE_SUMMARY_VARS = [
74242
74269
  [...RULE_TEXT],
74243
74270
  [...RULE_TEXT],
74244
74271
  [...RULE_TEXT],
74245
- ([...RULE_TEXT], [...ALERT_EPISODE]),
74272
+ [...RULE_TEXT],
74273
+ [...RULE_TEXT],
74274
+ ([...RULE_TEXT], [...DEVICE_ATTENTION, ...ALERT_EPISODE]),
74246
74275
  [...RULE_TEXT],
74247
74276
  [...RULE_TEXT],
74248
74277
  [...RULE_TEXT],
@@ -74264,11 +74293,11 @@ var STATE_SUMMARY_VARS = [
74264
74293
  [...RULE_TEXT],
74265
74294
  [...RULE_TEXT],
74266
74295
  [...RULE_TEXT],
74296
+ ([...RULE_TEXT], [...DEVICE_ATTENTION, ...ALERT_EPISODE]),
74267
74297
  ([...RULE_TEXT], [...ALERT_EPISODE]),
74298
+ ([...RULE_TEXT], [...DEVICE_ATTENTION, ...ALERT_EPISODE]),
74268
74299
  ([...RULE_TEXT], [...ALERT_EPISODE]),
74269
- ([...RULE_TEXT], [...ALERT_EPISODE]),
74270
- ([...RULE_TEXT], [...ALERT_EPISODE]),
74271
- ([...RULE_TEXT], [...ALERT_EPISODE]),
74300
+ ([...RULE_TEXT], [...DEVICE_ATTENTION, ...ALERT_EPISODE]),
74272
74301
  [...RULE_TEXT],
74273
74302
  [...RULE_TEXT],
74274
74303
  [...RULE_TEXT],
@@ -74344,6 +74373,15 @@ new Map([
74344
74373
  snapshotLabel: "Tanks low or full now",
74345
74374
  snapshotSection: "tanks"
74346
74375
  },
74376
+ {
74377
+ id: "motion-noise",
74378
+ family: "device-events",
74379
+ label: "Motion without a subject (constant / calm again)",
74380
+ bad: ["motion-noisy"],
74381
+ recovery: ["motion-calm"],
74382
+ snapshotLabel: "Cameras with constant motion now",
74383
+ snapshotSection: null
74384
+ },
74347
74385
  {
74348
74386
  id: "recording-health",
74349
74387
  family: "device-events",
@@ -74353,6 +74391,15 @@ new Map([
74353
74391
  snapshotLabel: "Recordings stalled now",
74354
74392
  snapshotSection: null
74355
74393
  },
74394
+ {
74395
+ id: "device-attention",
74396
+ family: "device-events",
74397
+ label: "Device needs attention (raised / resolved)",
74398
+ bad: ["device-attention-required"],
74399
+ recovery: ["device-attention-resolved"],
74400
+ snapshotLabel: "Devices needing attention now",
74401
+ snapshotSection: null
74402
+ },
74356
74403
  {
74357
74404
  id: "node-connectivity",
74358
74405
  family: "system",
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@camstack/addon-waste-collections",
3
- "version": "0.1.22",
3
+ "version": "0.1.24",
4
4
  "description": "Waste collection schedules via the vendored HACS waste_collection_schedule Python core — full source catalog as calendar-source.",
5
5
  "keywords": [
6
6
  "camstack",