@camstack/addon-google-services 0.2.24 → 0.2.26

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.
@@ -3,7 +3,7 @@ Object.defineProperties(exports, {
3
3
  [Symbol.toStringTag]: { value: "Module" }
4
4
  });
5
5
  let node_crypto = require("node:crypto");
6
- //#region ../types/dist/event-category-7pZEBmVg.mjs
6
+ //#region ../types/dist/event-category-BfJwUd2S.mjs
7
7
  var EventCategory = /* @__PURE__ */ function(EventCategory) {
8
8
  EventCategory["SystemBoot"] = "system.boot";
9
9
  EventCategory["SystemAddonsReady"] = "system.addons-ready";
@@ -320,6 +320,15 @@ var EventCategory = /* @__PURE__ */ function(EventCategory) {
320
320
  */
321
321
  EventCategory["PipelineDetectionBlind"] = "pipeline.detection-blind";
322
322
  /**
323
+ * A camera's motion source has fired constantly with no subject for an hour
324
+ * (motion duty or session count over the bar, zero detections) — it is not
325
+ * blind, its motion zones or sensitivity want tuning (D907). Paired with
326
+ * {@link PipelineMotionCalm}.
327
+ */
328
+ EventCategory["PipelineMotionNoisy"] = "pipeline.motion-noisy";
329
+ /** The recovery edge of {@link PipelineMotionNoisy}: the motion fell back, or a detection arrived. */
330
+ EventCategory["PipelineMotionCalm"] = "pipeline.motion-calm";
331
+ /**
323
332
  * Per-camera pipeline config was mutated by the orchestrator
324
333
  * (3-level settings change via `setAgentAddonDefaults` /
325
334
  * `setCameraStepToggle` / `setCameraPipelineForAgent` or a
@@ -5559,7 +5568,7 @@ var ZodIssueCode = {
5559
5568
  var ZodFirstPartyTypeKind;
5560
5569
  ZodFirstPartyTypeKind || (ZodFirstPartyTypeKind = {});
5561
5570
  //#endregion
5562
- //#region ../types/dist/sleep-CueztlR1.mjs
5571
+ //#region ../types/dist/sleep-DJFUfKvA.mjs
5563
5572
  /**
5564
5573
  * The audio chunk plane's byte format, and the ONE expansion from a coded
5565
5574
  * window to float samples (D455).
@@ -8158,7 +8167,7 @@ var EntryDescriptorSchema = object({
8158
8167
  /** JSON Schema of the entry body; `secret: true` marks a password field. */
8159
8168
  fields: record(string(), unknown())
8160
8169
  }).strict();
8161
- /** What crosses the wire and sits in the engine's catalog: JSON only, no Zod. */
8170
+ /** What crosses the wire from an addon: JSON only, no Zod. An unknown key is refused. */
8162
8171
  var RecordKindDeclarationSchema = object({
8163
8172
  database: _enum(RECORD_DATABASES).default("settings"),
8164
8173
  class: _enum(RECORD_CLASSES),
@@ -8177,14 +8186,6 @@ var RecordKindDeclarationSchema = object({
8177
8186
  secretPaths: array(string().min(1)).default([]),
8178
8187
  /** The id key of each array that carries a secret (`{ headers: 'name' }`). */
8179
8188
  secretArrayKeys: record(string(), string()).default({}),
8180
- /**
8181
- * RETIRED (D900): the legacy table a kind adopted from during the records
8182
- * migration. Nothing declares it any more and nothing reads it; the schema
8183
- * still ACCEPTS it because the catalog rows the migration wrote carry it
8184
- * (an orphaned kind is never redeclared) and an addon built before the
8185
- * removal still sends it. Never set it.
8186
- */
8187
- adoptsFrom: string().min(1).optional(),
8188
8189
  /** Kinds that must agree through `transact` sit in one file under one family name. */
8189
8190
  transactFamily: string().min(1).optional(),
8190
8191
  entry: EntryDescriptorSchema.optional()
@@ -13097,17 +13098,6 @@ object({
13097
13098
  createdAt: number(),
13098
13099
  updatedAt: number()
13099
13100
  });
13100
- object({
13101
- id: string(),
13102
- label: string(),
13103
- isAdmin: boolean().default(false),
13104
- allowedProviders: AllowedProviderSchema,
13105
- allowedDevices: AllowedDevicesSchema,
13106
- tokenHash: string(),
13107
- tokenPrefix: string(),
13108
- createdAt: number(),
13109
- lastUsedAt: number().optional()
13110
- });
13111
13101
  object({
13112
13102
  id: string(),
13113
13103
  userId: string(),
@@ -17051,16 +17041,36 @@ var RecordKindStateSchema = _enum([
17051
17041
  var DeclareKindResultSchema = object({
17052
17042
  kindId: number().int(),
17053
17043
  state: RecordKindStateSchema,
17054
- createdIndexes: array(string()),
17055
- /**
17056
- * RETIRED (D900): always `null`. It carried the records-migration boot guard;
17057
- * it stays on the wire, null, because an addon built before the removal reads
17058
- * an ABSENT field as "adoption pending" and refuses to start.
17059
- */
17060
- adoptionPending: _null()
17044
+ createdIndexes: array(string())
17061
17045
  });
17062
17046
  /** Keychain refs a write released (the old marker is gone from the row): the owner deletes the values. */
17063
17047
  var SecretRefsList = array(string());
17048
+ /**
17049
+ * One op of a `transact`: the single-row writes, each on a kind of the caller.
17050
+ * All ops of one call share ONE database file and ONE `transactFamily`.
17051
+ */
17052
+ var RecordTransactOpSchema = discriminatedUnion("op", [
17053
+ object({
17054
+ op: literal("put"),
17055
+ kind: RecordKindNameSchema,
17056
+ record: RecordInputSchema,
17057
+ ifRev: number().int().min(0).optional()
17058
+ }),
17059
+ object({
17060
+ op: literal("patch"),
17061
+ kind: RecordKindNameSchema,
17062
+ id: RecordIdSchema,
17063
+ data: RecordBodySchema,
17064
+ at: number().int().nullable().optional(),
17065
+ expiresAt: number().int().nullable().optional(),
17066
+ ifRev: number().int().min(1).optional()
17067
+ }),
17068
+ object({
17069
+ op: literal("delete"),
17070
+ kind: RecordKindNameSchema,
17071
+ id: RecordIdSchema
17072
+ })
17073
+ ]);
17064
17074
  var RecordSecretRefsSchema = record(string(), record(string(), string()));
17065
17075
  method(object({ kinds: record(RecordKindNameSchema, RecordKindDeclarationSchema) }), object({ kinds: record(string(), DeclareKindResultSchema) }), {
17066
17076
  kind: "mutation",
@@ -17167,6 +17177,16 @@ method(object({ kinds: record(RecordKindNameSchema, RecordKindDeclarationSchema)
17167
17177
  }), {
17168
17178
  kind: "mutation",
17169
17179
  auth: "admin"
17180
+ }), method(object({ ops: array(RecordTransactOpSchema).min(1).max(RECORD_BATCH_MAX) }), object({
17181
+ results: array(object({
17182
+ rev: number().int().nullable(),
17183
+ deleted: boolean()
17184
+ })),
17185
+ releasedRefs: SecretRefsList,
17186
+ secretRefs: SecretRefsList
17187
+ }), {
17188
+ kind: "mutation",
17189
+ auth: "admin"
17170
17190
  }), method(object({
17171
17191
  deviceId: number().int(),
17172
17192
  kinds: array(RecordKindNameSchema).optional()
@@ -42525,9 +42545,13 @@ var NcSystemEventKindSchema = _enum([
42525
42545
  "node-updating",
42526
42546
  "node-inference-unavailable",
42527
42547
  "detection-blind",
42548
+ "motion-noisy",
42549
+ "motion-calm",
42528
42550
  "recording-stalled",
42529
42551
  "recording-healthy",
42530
42552
  "recording-degraded",
42553
+ "device-attention-required",
42554
+ "device-attention-resolved",
42531
42555
  "storage-location-low",
42532
42556
  "storage-location-critical",
42533
42557
  "storage-location-ok",
@@ -48088,7 +48112,6 @@ var RecommendationReasonSchema = discriminatedUnion("kind", [
48088
48112
  modelId: string()
48089
48113
  }),
48090
48114
  object({ kind: literal("cpu-device") }),
48091
- object({ kind: literal("coral-untouched") }),
48092
48115
  object({ kind: literal("device-disabled") }),
48093
48116
  object({ kind: literal("device-unavailable") }),
48094
48117
  object({ kind: literal("node-offline") }),
@@ -48186,11 +48209,6 @@ var AutoTuneWarningSchema = discriminatedUnion("kind", [
48186
48209
  kind: literal("detector-store-unreadable"),
48187
48210
  error: string()
48188
48211
  }),
48189
- object({
48190
- kind: literal("coral-enabled"),
48191
- nodeId: string(),
48192
- deviceKey: string()
48193
- }),
48194
48212
  object({
48195
48213
  kind: literal("custom-pin-kept"),
48196
48214
  nodeId: string(),
@@ -55007,6 +55025,16 @@ object({
55007
55025
  powerState: string().nullable(),
55008
55026
  saltLevel: DishwasherConsumableLevelSchema.nullable(),
55009
55027
  rinseAidLevel: DishwasherConsumableLevelSchema.nullable(),
55028
+ /**
55029
+ * True while the appliance asks for its filter to be cleaned (smart-filter, filter-system or
55030
+ * combined care-and-filter reminder raised); false when every such reminder reads clear; null
55031
+ * when none is reported. A cleared reminder is not an unknown one.
55032
+ */
55033
+ filterCleaningDue: boolean().nullable(),
55034
+ /** True while the machine-care (descaling / cleaning-program) reminder is raised; false when clear; null when not reported. */
55035
+ machineCareDue: boolean().nullable(),
55036
+ /** Program runs left before the machine-care reminder is due; null when the appliance does not say. */
55037
+ machineCareRemainingRuns: number().int().nonnegative().nullable(),
55010
55038
  /** Option states: null when the appliance does not expose the option or has not said. */
55011
55039
  halfLoad: boolean().nullable(),
55012
55040
  hygienePlus: boolean().nullable(),
@@ -61624,16 +61652,6 @@ var UpdateUserInputSchema = object({
61624
61652
  allowedDevices: record(string(), union([array(string()), literal("*")])).optional(),
61625
61653
  scopes: array(TokenScopeSchema).optional()
61626
61654
  });
61627
- var ApiKeySummarySchema = object({
61628
- id: string(),
61629
- label: string(),
61630
- isAdmin: boolean().default(false),
61631
- allowedProviders: union([array(string()), literal("*")]).optional(),
61632
- allowedDevices: record(string(), union([array(string()), literal("*")])).optional(),
61633
- tokenPrefix: string(),
61634
- createdAt: number(),
61635
- lastUsedAt: number().optional()
61636
- });
61637
61655
  var OauthSessionSummarySchema = object({
61638
61656
  id: string(),
61639
61657
  userId: string(),
@@ -61655,8 +61673,7 @@ var TotpStatusSchema = object({
61655
61673
  confirmedAt: number().nullable()
61656
61674
  });
61657
61675
  /**
61658
- * user-management — singleton capability for user accounts and the
61659
- * legacy API-key rows.
61676
+ * user-management — singleton capability for user accounts.
61660
61677
  *
61661
61678
  * v2 model: every method gated by `auth: 'admin'`. Admin-only delegation
61662
61679
  * — the subset check on `setUserScopes` is moot
@@ -61712,10 +61729,6 @@ method(_void(), array(UserSummarySchema), { auth: "admin" }), method(CreateUserI
61712
61729
  }), UserSummarySchema.extend({ passwordHash: string() }).nullable(), {
61713
61730
  kind: "mutation",
61714
61731
  access: "view"
61715
- }), method(_void(), array(ApiKeySummarySchema), { auth: "admin" }), method(object({ id: string() }), object({ success: literal(true) }), {
61716
- kind: "mutation",
61717
- auth: "admin",
61718
- access: "delete"
61719
61732
  }), method(object({ userId: string() }), TotpSetupResultSchema, {
61720
61733
  kind: "mutation",
61721
61734
  auth: "admin",
@@ -69228,6 +69241,12 @@ Object.freeze({
69228
69241
  addonId: null,
69229
69242
  access: "view"
69230
69243
  },
69244
+ "records.transact": {
69245
+ capName: "records",
69246
+ capScope: "system",
69247
+ addonId: null,
69248
+ access: "create"
69249
+ },
69231
69250
  "sceneMonitor.captureReference": {
69232
69251
  capName: "scene-monitor",
69233
69252
  capScope: "device",
@@ -70560,12 +70579,6 @@ Object.freeze({
70560
70579
  addonId: null,
70561
70580
  access: "view"
70562
70581
  },
70563
- "userManagement.listApiKeys": {
70564
- capName: "user-management",
70565
- capScope: "system",
70566
- addonId: null,
70567
- access: "view"
70568
- },
70569
70582
  "userManagement.listExternalIdentities": {
70570
70583
  capName: "user-management",
70571
70584
  capScope: "system",
@@ -70620,12 +70633,6 @@ Object.freeze({
70620
70633
  addonId: null,
70621
70634
  access: "create"
70622
70635
  },
70623
- "userManagement.revokeApiKey": {
70624
- capName: "user-management",
70625
- capScope: "system",
70626
- addonId: null,
70627
- access: "delete"
70628
- },
70629
70636
  "userManagement.revokeOauthSession": {
70630
70637
  capName: "user-management",
70631
70638
  capScope: "system",
@@ -73990,9 +73997,13 @@ new Map(Object.entries({
73990
73997
  "stream-online": "device-events",
73991
73998
  "stream-offline": "device-events",
73992
73999
  "detection-blind": "device-events",
74000
+ "motion-noisy": "device-events",
74001
+ "motion-calm": "device-events",
73993
74002
  "recording-stalled": "device-events",
73994
74003
  "recording-healthy": "device-events",
73995
74004
  "recording-degraded": "device-events",
74005
+ "device-attention-required": "device-events",
74006
+ "device-attention-resolved": "device-events",
73996
74007
  "node-online": "system",
73997
74008
  "node-offline": "system",
73998
74009
  "node-restarting": "system",
@@ -74075,6 +74086,12 @@ var NC_SYSTEM_EVENT_KIND_GROUP_SPECS = [
74075
74086
  label: "Detecting nothing",
74076
74087
  kinds: ["detection-blind"]
74077
74088
  },
74089
+ {
74090
+ id: "motion-noise",
74091
+ family: "device-events",
74092
+ label: "Motion without a subject",
74093
+ kinds: ["motion-noisy", "motion-calm"]
74094
+ },
74078
74095
  {
74079
74096
  id: "recording",
74080
74097
  family: "device-events",
@@ -74085,6 +74102,12 @@ var NC_SYSTEM_EVENT_KIND_GROUP_SPECS = [
74085
74102
  "recording-degraded"
74086
74103
  ]
74087
74104
  },
74105
+ {
74106
+ id: "device-attention",
74107
+ family: "device-events",
74108
+ label: "Needs attention",
74109
+ kinds: ["device-attention-required", "device-attention-resolved"]
74110
+ },
74088
74111
  {
74089
74112
  id: "nodes",
74090
74113
  family: "system",
@@ -74224,6 +74247,7 @@ var ALERT_EPISODE = [
74224
74247
  "alert-error",
74225
74248
  "alert-critical-resolved"
74226
74249
  ];
74250
+ var DEVICE_ATTENTION = ["device-attention-required", "device-attention-resolved"];
74227
74251
  var UPDATES = [
74228
74252
  "addon-update-available",
74229
74253
  "server-update-available",
@@ -74253,9 +74277,12 @@ var DEVICE_EVENTS = [
74253
74277
  "stream-online",
74254
74278
  "stream-offline",
74255
74279
  "detection-blind",
74280
+ "motion-noisy",
74281
+ "motion-calm",
74256
74282
  "recording-stalled",
74257
74283
  "recording-healthy",
74258
74284
  "recording-degraded",
74285
+ ...DEVICE_ATTENTION,
74259
74286
  ...ALARM
74260
74287
  ];
74261
74288
  /** Every kind a summary may speak about — the two summarisable families. */
@@ -74423,7 +74450,9 @@ var STATE_SUMMARY_VARS = [
74423
74450
  [...RULE_TEXT],
74424
74451
  [...RULE_TEXT],
74425
74452
  [...RULE_TEXT],
74426
- ([...RULE_TEXT], [...ALERT_EPISODE]),
74453
+ [...RULE_TEXT],
74454
+ [...RULE_TEXT],
74455
+ ([...RULE_TEXT], [...DEVICE_ATTENTION, ...ALERT_EPISODE]),
74427
74456
  [...RULE_TEXT],
74428
74457
  [...RULE_TEXT],
74429
74458
  [...RULE_TEXT],
@@ -74445,11 +74474,11 @@ var STATE_SUMMARY_VARS = [
74445
74474
  [...RULE_TEXT],
74446
74475
  [...RULE_TEXT],
74447
74476
  [...RULE_TEXT],
74477
+ ([...RULE_TEXT], [...DEVICE_ATTENTION, ...ALERT_EPISODE]),
74448
74478
  ([...RULE_TEXT], [...ALERT_EPISODE]),
74479
+ ([...RULE_TEXT], [...DEVICE_ATTENTION, ...ALERT_EPISODE]),
74449
74480
  ([...RULE_TEXT], [...ALERT_EPISODE]),
74450
- ([...RULE_TEXT], [...ALERT_EPISODE]),
74451
- ([...RULE_TEXT], [...ALERT_EPISODE]),
74452
- ([...RULE_TEXT], [...ALERT_EPISODE]),
74481
+ ([...RULE_TEXT], [...DEVICE_ATTENTION, ...ALERT_EPISODE]),
74453
74482
  [...RULE_TEXT],
74454
74483
  [...RULE_TEXT],
74455
74484
  [...RULE_TEXT],
@@ -74525,6 +74554,15 @@ new Map([
74525
74554
  snapshotLabel: "Tanks low or full now",
74526
74555
  snapshotSection: "tanks"
74527
74556
  },
74557
+ {
74558
+ id: "motion-noise",
74559
+ family: "device-events",
74560
+ label: "Motion without a subject (constant / calm again)",
74561
+ bad: ["motion-noisy"],
74562
+ recovery: ["motion-calm"],
74563
+ snapshotLabel: "Cameras with constant motion now",
74564
+ snapshotSection: null
74565
+ },
74528
74566
  {
74529
74567
  id: "recording-health",
74530
74568
  family: "device-events",
@@ -74534,6 +74572,15 @@ new Map([
74534
74572
  snapshotLabel: "Recordings stalled now",
74535
74573
  snapshotSection: null
74536
74574
  },
74575
+ {
74576
+ id: "device-attention",
74577
+ family: "device-events",
74578
+ label: "Device needs attention (raised / resolved)",
74579
+ bad: ["device-attention-required"],
74580
+ recovery: ["device-attention-resolved"],
74581
+ snapshotLabel: "Devices needing attention now",
74582
+ snapshotSection: null
74583
+ },
74537
74584
  {
74538
74585
  id: "node-connectivity",
74539
74586
  family: "system",
@@ -1,5 +1,5 @@
1
1
  import { randomBytes } from "node:crypto";
2
- //#region ../types/dist/event-category-7pZEBmVg.mjs
2
+ //#region ../types/dist/event-category-BfJwUd2S.mjs
3
3
  var EventCategory = /* @__PURE__ */ function(EventCategory) {
4
4
  EventCategory["SystemBoot"] = "system.boot";
5
5
  EventCategory["SystemAddonsReady"] = "system.addons-ready";
@@ -316,6 +316,15 @@ var EventCategory = /* @__PURE__ */ function(EventCategory) {
316
316
  */
317
317
  EventCategory["PipelineDetectionBlind"] = "pipeline.detection-blind";
318
318
  /**
319
+ * A camera's motion source has fired constantly with no subject for an hour
320
+ * (motion duty or session count over the bar, zero detections) — it is not
321
+ * blind, its motion zones or sensitivity want tuning (D907). Paired with
322
+ * {@link PipelineMotionCalm}.
323
+ */
324
+ EventCategory["PipelineMotionNoisy"] = "pipeline.motion-noisy";
325
+ /** The recovery edge of {@link PipelineMotionNoisy}: the motion fell back, or a detection arrived. */
326
+ EventCategory["PipelineMotionCalm"] = "pipeline.motion-calm";
327
+ /**
319
328
  * Per-camera pipeline config was mutated by the orchestrator
320
329
  * (3-level settings change via `setAgentAddonDefaults` /
321
330
  * `setCameraStepToggle` / `setCameraPipelineForAgent` or a
@@ -5555,7 +5564,7 @@ var ZodIssueCode = {
5555
5564
  var ZodFirstPartyTypeKind;
5556
5565
  ZodFirstPartyTypeKind || (ZodFirstPartyTypeKind = {});
5557
5566
  //#endregion
5558
- //#region ../types/dist/sleep-CueztlR1.mjs
5567
+ //#region ../types/dist/sleep-DJFUfKvA.mjs
5559
5568
  /**
5560
5569
  * The audio chunk plane's byte format, and the ONE expansion from a coded
5561
5570
  * window to float samples (D455).
@@ -8154,7 +8163,7 @@ var EntryDescriptorSchema = object({
8154
8163
  /** JSON Schema of the entry body; `secret: true` marks a password field. */
8155
8164
  fields: record(string(), unknown())
8156
8165
  }).strict();
8157
- /** What crosses the wire and sits in the engine's catalog: JSON only, no Zod. */
8166
+ /** What crosses the wire from an addon: JSON only, no Zod. An unknown key is refused. */
8158
8167
  var RecordKindDeclarationSchema = object({
8159
8168
  database: _enum(RECORD_DATABASES).default("settings"),
8160
8169
  class: _enum(RECORD_CLASSES),
@@ -8173,14 +8182,6 @@ var RecordKindDeclarationSchema = object({
8173
8182
  secretPaths: array(string().min(1)).default([]),
8174
8183
  /** The id key of each array that carries a secret (`{ headers: 'name' }`). */
8175
8184
  secretArrayKeys: record(string(), string()).default({}),
8176
- /**
8177
- * RETIRED (D900): the legacy table a kind adopted from during the records
8178
- * migration. Nothing declares it any more and nothing reads it; the schema
8179
- * still ACCEPTS it because the catalog rows the migration wrote carry it
8180
- * (an orphaned kind is never redeclared) and an addon built before the
8181
- * removal still sends it. Never set it.
8182
- */
8183
- adoptsFrom: string().min(1).optional(),
8184
8185
  /** Kinds that must agree through `transact` sit in one file under one family name. */
8185
8186
  transactFamily: string().min(1).optional(),
8186
8187
  entry: EntryDescriptorSchema.optional()
@@ -13093,17 +13094,6 @@ object({
13093
13094
  createdAt: number(),
13094
13095
  updatedAt: number()
13095
13096
  });
13096
- object({
13097
- id: string(),
13098
- label: string(),
13099
- isAdmin: boolean().default(false),
13100
- allowedProviders: AllowedProviderSchema,
13101
- allowedDevices: AllowedDevicesSchema,
13102
- tokenHash: string(),
13103
- tokenPrefix: string(),
13104
- createdAt: number(),
13105
- lastUsedAt: number().optional()
13106
- });
13107
13097
  object({
13108
13098
  id: string(),
13109
13099
  userId: string(),
@@ -17047,16 +17037,36 @@ var RecordKindStateSchema = _enum([
17047
17037
  var DeclareKindResultSchema = object({
17048
17038
  kindId: number().int(),
17049
17039
  state: RecordKindStateSchema,
17050
- createdIndexes: array(string()),
17051
- /**
17052
- * RETIRED (D900): always `null`. It carried the records-migration boot guard;
17053
- * it stays on the wire, null, because an addon built before the removal reads
17054
- * an ABSENT field as "adoption pending" and refuses to start.
17055
- */
17056
- adoptionPending: _null()
17040
+ createdIndexes: array(string())
17057
17041
  });
17058
17042
  /** Keychain refs a write released (the old marker is gone from the row): the owner deletes the values. */
17059
17043
  var SecretRefsList = array(string());
17044
+ /**
17045
+ * One op of a `transact`: the single-row writes, each on a kind of the caller.
17046
+ * All ops of one call share ONE database file and ONE `transactFamily`.
17047
+ */
17048
+ var RecordTransactOpSchema = discriminatedUnion("op", [
17049
+ object({
17050
+ op: literal("put"),
17051
+ kind: RecordKindNameSchema,
17052
+ record: RecordInputSchema,
17053
+ ifRev: number().int().min(0).optional()
17054
+ }),
17055
+ object({
17056
+ op: literal("patch"),
17057
+ kind: RecordKindNameSchema,
17058
+ id: RecordIdSchema,
17059
+ data: RecordBodySchema,
17060
+ at: number().int().nullable().optional(),
17061
+ expiresAt: number().int().nullable().optional(),
17062
+ ifRev: number().int().min(1).optional()
17063
+ }),
17064
+ object({
17065
+ op: literal("delete"),
17066
+ kind: RecordKindNameSchema,
17067
+ id: RecordIdSchema
17068
+ })
17069
+ ]);
17060
17070
  var RecordSecretRefsSchema = record(string(), record(string(), string()));
17061
17071
  method(object({ kinds: record(RecordKindNameSchema, RecordKindDeclarationSchema) }), object({ kinds: record(string(), DeclareKindResultSchema) }), {
17062
17072
  kind: "mutation",
@@ -17163,6 +17173,16 @@ method(object({ kinds: record(RecordKindNameSchema, RecordKindDeclarationSchema)
17163
17173
  }), {
17164
17174
  kind: "mutation",
17165
17175
  auth: "admin"
17176
+ }), method(object({ ops: array(RecordTransactOpSchema).min(1).max(RECORD_BATCH_MAX) }), object({
17177
+ results: array(object({
17178
+ rev: number().int().nullable(),
17179
+ deleted: boolean()
17180
+ })),
17181
+ releasedRefs: SecretRefsList,
17182
+ secretRefs: SecretRefsList
17183
+ }), {
17184
+ kind: "mutation",
17185
+ auth: "admin"
17166
17186
  }), method(object({
17167
17187
  deviceId: number().int(),
17168
17188
  kinds: array(RecordKindNameSchema).optional()
@@ -42521,9 +42541,13 @@ var NcSystemEventKindSchema = _enum([
42521
42541
  "node-updating",
42522
42542
  "node-inference-unavailable",
42523
42543
  "detection-blind",
42544
+ "motion-noisy",
42545
+ "motion-calm",
42524
42546
  "recording-stalled",
42525
42547
  "recording-healthy",
42526
42548
  "recording-degraded",
42549
+ "device-attention-required",
42550
+ "device-attention-resolved",
42527
42551
  "storage-location-low",
42528
42552
  "storage-location-critical",
42529
42553
  "storage-location-ok",
@@ -48084,7 +48108,6 @@ var RecommendationReasonSchema = discriminatedUnion("kind", [
48084
48108
  modelId: string()
48085
48109
  }),
48086
48110
  object({ kind: literal("cpu-device") }),
48087
- object({ kind: literal("coral-untouched") }),
48088
48111
  object({ kind: literal("device-disabled") }),
48089
48112
  object({ kind: literal("device-unavailable") }),
48090
48113
  object({ kind: literal("node-offline") }),
@@ -48182,11 +48205,6 @@ var AutoTuneWarningSchema = discriminatedUnion("kind", [
48182
48205
  kind: literal("detector-store-unreadable"),
48183
48206
  error: string()
48184
48207
  }),
48185
- object({
48186
- kind: literal("coral-enabled"),
48187
- nodeId: string(),
48188
- deviceKey: string()
48189
- }),
48190
48208
  object({
48191
48209
  kind: literal("custom-pin-kept"),
48192
48210
  nodeId: string(),
@@ -55003,6 +55021,16 @@ object({
55003
55021
  powerState: string().nullable(),
55004
55022
  saltLevel: DishwasherConsumableLevelSchema.nullable(),
55005
55023
  rinseAidLevel: DishwasherConsumableLevelSchema.nullable(),
55024
+ /**
55025
+ * True while the appliance asks for its filter to be cleaned (smart-filter, filter-system or
55026
+ * combined care-and-filter reminder raised); false when every such reminder reads clear; null
55027
+ * when none is reported. A cleared reminder is not an unknown one.
55028
+ */
55029
+ filterCleaningDue: boolean().nullable(),
55030
+ /** True while the machine-care (descaling / cleaning-program) reminder is raised; false when clear; null when not reported. */
55031
+ machineCareDue: boolean().nullable(),
55032
+ /** Program runs left before the machine-care reminder is due; null when the appliance does not say. */
55033
+ machineCareRemainingRuns: number().int().nonnegative().nullable(),
55006
55034
  /** Option states: null when the appliance does not expose the option or has not said. */
55007
55035
  halfLoad: boolean().nullable(),
55008
55036
  hygienePlus: boolean().nullable(),
@@ -61620,16 +61648,6 @@ var UpdateUserInputSchema = object({
61620
61648
  allowedDevices: record(string(), union([array(string()), literal("*")])).optional(),
61621
61649
  scopes: array(TokenScopeSchema).optional()
61622
61650
  });
61623
- var ApiKeySummarySchema = object({
61624
- id: string(),
61625
- label: string(),
61626
- isAdmin: boolean().default(false),
61627
- allowedProviders: union([array(string()), literal("*")]).optional(),
61628
- allowedDevices: record(string(), union([array(string()), literal("*")])).optional(),
61629
- tokenPrefix: string(),
61630
- createdAt: number(),
61631
- lastUsedAt: number().optional()
61632
- });
61633
61651
  var OauthSessionSummarySchema = object({
61634
61652
  id: string(),
61635
61653
  userId: string(),
@@ -61651,8 +61669,7 @@ var TotpStatusSchema = object({
61651
61669
  confirmedAt: number().nullable()
61652
61670
  });
61653
61671
  /**
61654
- * user-management — singleton capability for user accounts and the
61655
- * legacy API-key rows.
61672
+ * user-management — singleton capability for user accounts.
61656
61673
  *
61657
61674
  * v2 model: every method gated by `auth: 'admin'`. Admin-only delegation
61658
61675
  * — the subset check on `setUserScopes` is moot
@@ -61708,10 +61725,6 @@ method(_void(), array(UserSummarySchema), { auth: "admin" }), method(CreateUserI
61708
61725
  }), UserSummarySchema.extend({ passwordHash: string() }).nullable(), {
61709
61726
  kind: "mutation",
61710
61727
  access: "view"
61711
- }), method(_void(), array(ApiKeySummarySchema), { auth: "admin" }), method(object({ id: string() }), object({ success: literal(true) }), {
61712
- kind: "mutation",
61713
- auth: "admin",
61714
- access: "delete"
61715
61728
  }), method(object({ userId: string() }), TotpSetupResultSchema, {
61716
61729
  kind: "mutation",
61717
61730
  auth: "admin",
@@ -69224,6 +69237,12 @@ Object.freeze({
69224
69237
  addonId: null,
69225
69238
  access: "view"
69226
69239
  },
69240
+ "records.transact": {
69241
+ capName: "records",
69242
+ capScope: "system",
69243
+ addonId: null,
69244
+ access: "create"
69245
+ },
69227
69246
  "sceneMonitor.captureReference": {
69228
69247
  capName: "scene-monitor",
69229
69248
  capScope: "device",
@@ -70556,12 +70575,6 @@ Object.freeze({
70556
70575
  addonId: null,
70557
70576
  access: "view"
70558
70577
  },
70559
- "userManagement.listApiKeys": {
70560
- capName: "user-management",
70561
- capScope: "system",
70562
- addonId: null,
70563
- access: "view"
70564
- },
70565
70578
  "userManagement.listExternalIdentities": {
70566
70579
  capName: "user-management",
70567
70580
  capScope: "system",
@@ -70616,12 +70629,6 @@ Object.freeze({
70616
70629
  addonId: null,
70617
70630
  access: "create"
70618
70631
  },
70619
- "userManagement.revokeApiKey": {
70620
- capName: "user-management",
70621
- capScope: "system",
70622
- addonId: null,
70623
- access: "delete"
70624
- },
70625
70632
  "userManagement.revokeOauthSession": {
70626
70633
  capName: "user-management",
70627
70634
  capScope: "system",
@@ -73986,9 +73993,13 @@ new Map(Object.entries({
73986
73993
  "stream-online": "device-events",
73987
73994
  "stream-offline": "device-events",
73988
73995
  "detection-blind": "device-events",
73996
+ "motion-noisy": "device-events",
73997
+ "motion-calm": "device-events",
73989
73998
  "recording-stalled": "device-events",
73990
73999
  "recording-healthy": "device-events",
73991
74000
  "recording-degraded": "device-events",
74001
+ "device-attention-required": "device-events",
74002
+ "device-attention-resolved": "device-events",
73992
74003
  "node-online": "system",
73993
74004
  "node-offline": "system",
73994
74005
  "node-restarting": "system",
@@ -74071,6 +74082,12 @@ var NC_SYSTEM_EVENT_KIND_GROUP_SPECS = [
74071
74082
  label: "Detecting nothing",
74072
74083
  kinds: ["detection-blind"]
74073
74084
  },
74085
+ {
74086
+ id: "motion-noise",
74087
+ family: "device-events",
74088
+ label: "Motion without a subject",
74089
+ kinds: ["motion-noisy", "motion-calm"]
74090
+ },
74074
74091
  {
74075
74092
  id: "recording",
74076
74093
  family: "device-events",
@@ -74081,6 +74098,12 @@ var NC_SYSTEM_EVENT_KIND_GROUP_SPECS = [
74081
74098
  "recording-degraded"
74082
74099
  ]
74083
74100
  },
74101
+ {
74102
+ id: "device-attention",
74103
+ family: "device-events",
74104
+ label: "Needs attention",
74105
+ kinds: ["device-attention-required", "device-attention-resolved"]
74106
+ },
74084
74107
  {
74085
74108
  id: "nodes",
74086
74109
  family: "system",
@@ -74220,6 +74243,7 @@ var ALERT_EPISODE = [
74220
74243
  "alert-error",
74221
74244
  "alert-critical-resolved"
74222
74245
  ];
74246
+ var DEVICE_ATTENTION = ["device-attention-required", "device-attention-resolved"];
74223
74247
  var UPDATES = [
74224
74248
  "addon-update-available",
74225
74249
  "server-update-available",
@@ -74249,9 +74273,12 @@ var DEVICE_EVENTS = [
74249
74273
  "stream-online",
74250
74274
  "stream-offline",
74251
74275
  "detection-blind",
74276
+ "motion-noisy",
74277
+ "motion-calm",
74252
74278
  "recording-stalled",
74253
74279
  "recording-healthy",
74254
74280
  "recording-degraded",
74281
+ ...DEVICE_ATTENTION,
74255
74282
  ...ALARM
74256
74283
  ];
74257
74284
  /** Every kind a summary may speak about — the two summarisable families. */
@@ -74419,7 +74446,9 @@ var STATE_SUMMARY_VARS = [
74419
74446
  [...RULE_TEXT],
74420
74447
  [...RULE_TEXT],
74421
74448
  [...RULE_TEXT],
74422
- ([...RULE_TEXT], [...ALERT_EPISODE]),
74449
+ [...RULE_TEXT],
74450
+ [...RULE_TEXT],
74451
+ ([...RULE_TEXT], [...DEVICE_ATTENTION, ...ALERT_EPISODE]),
74423
74452
  [...RULE_TEXT],
74424
74453
  [...RULE_TEXT],
74425
74454
  [...RULE_TEXT],
@@ -74441,11 +74470,11 @@ var STATE_SUMMARY_VARS = [
74441
74470
  [...RULE_TEXT],
74442
74471
  [...RULE_TEXT],
74443
74472
  [...RULE_TEXT],
74473
+ ([...RULE_TEXT], [...DEVICE_ATTENTION, ...ALERT_EPISODE]),
74444
74474
  ([...RULE_TEXT], [...ALERT_EPISODE]),
74475
+ ([...RULE_TEXT], [...DEVICE_ATTENTION, ...ALERT_EPISODE]),
74445
74476
  ([...RULE_TEXT], [...ALERT_EPISODE]),
74446
- ([...RULE_TEXT], [...ALERT_EPISODE]),
74447
- ([...RULE_TEXT], [...ALERT_EPISODE]),
74448
- ([...RULE_TEXT], [...ALERT_EPISODE]),
74477
+ ([...RULE_TEXT], [...DEVICE_ATTENTION, ...ALERT_EPISODE]),
74449
74478
  [...RULE_TEXT],
74450
74479
  [...RULE_TEXT],
74451
74480
  [...RULE_TEXT],
@@ -74521,6 +74550,15 @@ new Map([
74521
74550
  snapshotLabel: "Tanks low or full now",
74522
74551
  snapshotSection: "tanks"
74523
74552
  },
74553
+ {
74554
+ id: "motion-noise",
74555
+ family: "device-events",
74556
+ label: "Motion without a subject (constant / calm again)",
74557
+ bad: ["motion-noisy"],
74558
+ recovery: ["motion-calm"],
74559
+ snapshotLabel: "Cameras with constant motion now",
74560
+ snapshotSection: null
74561
+ },
74524
74562
  {
74525
74563
  id: "recording-health",
74526
74564
  family: "device-events",
@@ -74530,6 +74568,15 @@ new Map([
74530
74568
  snapshotLabel: "Recordings stalled now",
74531
74569
  snapshotSection: null
74532
74570
  },
74571
+ {
74572
+ id: "device-attention",
74573
+ family: "device-events",
74574
+ label: "Device needs attention (raised / resolved)",
74575
+ bad: ["device-attention-required"],
74576
+ recovery: ["device-attention-resolved"],
74577
+ snapshotLabel: "Devices needing attention now",
74578
+ snapshotSection: null
74579
+ },
74533
74580
  {
74534
74581
  id: "node-connectivity",
74535
74582
  family: "system",
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@camstack/addon-google-services",
3
- "version": "0.2.24",
3
+ "version": "0.2.26",
4
4
  "description": "Google Services — Google brokers (OAuth2): Calendar as calendar-source, Gmail send as smtp-provider.",
5
5
  "keywords": [
6
6
  "camstack",