@camstack/addon-google-services 0.2.24 → 0.2.25

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",
@@ -55007,6 +55031,16 @@ object({
55007
55031
  powerState: string().nullable(),
55008
55032
  saltLevel: DishwasherConsumableLevelSchema.nullable(),
55009
55033
  rinseAidLevel: DishwasherConsumableLevelSchema.nullable(),
55034
+ /**
55035
+ * True while the appliance asks for its filter to be cleaned (smart-filter, filter-system or
55036
+ * combined care-and-filter reminder raised); false when every such reminder reads clear; null
55037
+ * when none is reported. A cleared reminder is not an unknown one.
55038
+ */
55039
+ filterCleaningDue: boolean().nullable(),
55040
+ /** True while the machine-care (descaling / cleaning-program) reminder is raised; false when clear; null when not reported. */
55041
+ machineCareDue: boolean().nullable(),
55042
+ /** Program runs left before the machine-care reminder is due; null when the appliance does not say. */
55043
+ machineCareRemainingRuns: number().int().nonnegative().nullable(),
55010
55044
  /** Option states: null when the appliance does not expose the option or has not said. */
55011
55045
  halfLoad: boolean().nullable(),
55012
55046
  hygienePlus: boolean().nullable(),
@@ -61624,16 +61658,6 @@ var UpdateUserInputSchema = object({
61624
61658
  allowedDevices: record(string(), union([array(string()), literal("*")])).optional(),
61625
61659
  scopes: array(TokenScopeSchema).optional()
61626
61660
  });
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
61661
  var OauthSessionSummarySchema = object({
61638
61662
  id: string(),
61639
61663
  userId: string(),
@@ -61655,8 +61679,7 @@ var TotpStatusSchema = object({
61655
61679
  confirmedAt: number().nullable()
61656
61680
  });
61657
61681
  /**
61658
- * user-management — singleton capability for user accounts and the
61659
- * legacy API-key rows.
61682
+ * user-management — singleton capability for user accounts.
61660
61683
  *
61661
61684
  * v2 model: every method gated by `auth: 'admin'`. Admin-only delegation
61662
61685
  * — the subset check on `setUserScopes` is moot
@@ -61712,10 +61735,6 @@ method(_void(), array(UserSummarySchema), { auth: "admin" }), method(CreateUserI
61712
61735
  }), UserSummarySchema.extend({ passwordHash: string() }).nullable(), {
61713
61736
  kind: "mutation",
61714
61737
  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
61738
  }), method(object({ userId: string() }), TotpSetupResultSchema, {
61720
61739
  kind: "mutation",
61721
61740
  auth: "admin",
@@ -69228,6 +69247,12 @@ Object.freeze({
69228
69247
  addonId: null,
69229
69248
  access: "view"
69230
69249
  },
69250
+ "records.transact": {
69251
+ capName: "records",
69252
+ capScope: "system",
69253
+ addonId: null,
69254
+ access: "create"
69255
+ },
69231
69256
  "sceneMonitor.captureReference": {
69232
69257
  capName: "scene-monitor",
69233
69258
  capScope: "device",
@@ -70560,12 +70585,6 @@ Object.freeze({
70560
70585
  addonId: null,
70561
70586
  access: "view"
70562
70587
  },
70563
- "userManagement.listApiKeys": {
70564
- capName: "user-management",
70565
- capScope: "system",
70566
- addonId: null,
70567
- access: "view"
70568
- },
70569
70588
  "userManagement.listExternalIdentities": {
70570
70589
  capName: "user-management",
70571
70590
  capScope: "system",
@@ -70620,12 +70639,6 @@ Object.freeze({
70620
70639
  addonId: null,
70621
70640
  access: "create"
70622
70641
  },
70623
- "userManagement.revokeApiKey": {
70624
- capName: "user-management",
70625
- capScope: "system",
70626
- addonId: null,
70627
- access: "delete"
70628
- },
70629
70642
  "userManagement.revokeOauthSession": {
70630
70643
  capName: "user-management",
70631
70644
  capScope: "system",
@@ -73990,9 +74003,13 @@ new Map(Object.entries({
73990
74003
  "stream-online": "device-events",
73991
74004
  "stream-offline": "device-events",
73992
74005
  "detection-blind": "device-events",
74006
+ "motion-noisy": "device-events",
74007
+ "motion-calm": "device-events",
73993
74008
  "recording-stalled": "device-events",
73994
74009
  "recording-healthy": "device-events",
73995
74010
  "recording-degraded": "device-events",
74011
+ "device-attention-required": "device-events",
74012
+ "device-attention-resolved": "device-events",
73996
74013
  "node-online": "system",
73997
74014
  "node-offline": "system",
73998
74015
  "node-restarting": "system",
@@ -74075,6 +74092,12 @@ var NC_SYSTEM_EVENT_KIND_GROUP_SPECS = [
74075
74092
  label: "Detecting nothing",
74076
74093
  kinds: ["detection-blind"]
74077
74094
  },
74095
+ {
74096
+ id: "motion-noise",
74097
+ family: "device-events",
74098
+ label: "Motion without a subject",
74099
+ kinds: ["motion-noisy", "motion-calm"]
74100
+ },
74078
74101
  {
74079
74102
  id: "recording",
74080
74103
  family: "device-events",
@@ -74085,6 +74108,12 @@ var NC_SYSTEM_EVENT_KIND_GROUP_SPECS = [
74085
74108
  "recording-degraded"
74086
74109
  ]
74087
74110
  },
74111
+ {
74112
+ id: "device-attention",
74113
+ family: "device-events",
74114
+ label: "Needs attention",
74115
+ kinds: ["device-attention-required", "device-attention-resolved"]
74116
+ },
74088
74117
  {
74089
74118
  id: "nodes",
74090
74119
  family: "system",
@@ -74224,6 +74253,7 @@ var ALERT_EPISODE = [
74224
74253
  "alert-error",
74225
74254
  "alert-critical-resolved"
74226
74255
  ];
74256
+ var DEVICE_ATTENTION = ["device-attention-required", "device-attention-resolved"];
74227
74257
  var UPDATES = [
74228
74258
  "addon-update-available",
74229
74259
  "server-update-available",
@@ -74253,9 +74283,12 @@ var DEVICE_EVENTS = [
74253
74283
  "stream-online",
74254
74284
  "stream-offline",
74255
74285
  "detection-blind",
74286
+ "motion-noisy",
74287
+ "motion-calm",
74256
74288
  "recording-stalled",
74257
74289
  "recording-healthy",
74258
74290
  "recording-degraded",
74291
+ ...DEVICE_ATTENTION,
74259
74292
  ...ALARM
74260
74293
  ];
74261
74294
  /** Every kind a summary may speak about — the two summarisable families. */
@@ -74423,7 +74456,9 @@ var STATE_SUMMARY_VARS = [
74423
74456
  [...RULE_TEXT],
74424
74457
  [...RULE_TEXT],
74425
74458
  [...RULE_TEXT],
74426
- ([...RULE_TEXT], [...ALERT_EPISODE]),
74459
+ [...RULE_TEXT],
74460
+ [...RULE_TEXT],
74461
+ ([...RULE_TEXT], [...DEVICE_ATTENTION, ...ALERT_EPISODE]),
74427
74462
  [...RULE_TEXT],
74428
74463
  [...RULE_TEXT],
74429
74464
  [...RULE_TEXT],
@@ -74445,11 +74480,11 @@ var STATE_SUMMARY_VARS = [
74445
74480
  [...RULE_TEXT],
74446
74481
  [...RULE_TEXT],
74447
74482
  [...RULE_TEXT],
74483
+ ([...RULE_TEXT], [...DEVICE_ATTENTION, ...ALERT_EPISODE]),
74448
74484
  ([...RULE_TEXT], [...ALERT_EPISODE]),
74485
+ ([...RULE_TEXT], [...DEVICE_ATTENTION, ...ALERT_EPISODE]),
74449
74486
  ([...RULE_TEXT], [...ALERT_EPISODE]),
74450
- ([...RULE_TEXT], [...ALERT_EPISODE]),
74451
- ([...RULE_TEXT], [...ALERT_EPISODE]),
74452
- ([...RULE_TEXT], [...ALERT_EPISODE]),
74487
+ ([...RULE_TEXT], [...DEVICE_ATTENTION, ...ALERT_EPISODE]),
74453
74488
  [...RULE_TEXT],
74454
74489
  [...RULE_TEXT],
74455
74490
  [...RULE_TEXT],
@@ -74525,6 +74560,15 @@ new Map([
74525
74560
  snapshotLabel: "Tanks low or full now",
74526
74561
  snapshotSection: "tanks"
74527
74562
  },
74563
+ {
74564
+ id: "motion-noise",
74565
+ family: "device-events",
74566
+ label: "Motion without a subject (constant / calm again)",
74567
+ bad: ["motion-noisy"],
74568
+ recovery: ["motion-calm"],
74569
+ snapshotLabel: "Cameras with constant motion now",
74570
+ snapshotSection: null
74571
+ },
74528
74572
  {
74529
74573
  id: "recording-health",
74530
74574
  family: "device-events",
@@ -74534,6 +74578,15 @@ new Map([
74534
74578
  snapshotLabel: "Recordings stalled now",
74535
74579
  snapshotSection: null
74536
74580
  },
74581
+ {
74582
+ id: "device-attention",
74583
+ family: "device-events",
74584
+ label: "Device needs attention (raised / resolved)",
74585
+ bad: ["device-attention-required"],
74586
+ recovery: ["device-attention-resolved"],
74587
+ snapshotLabel: "Devices needing attention now",
74588
+ snapshotSection: null
74589
+ },
74537
74590
  {
74538
74591
  id: "node-connectivity",
74539
74592
  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",
@@ -55003,6 +55027,16 @@ object({
55003
55027
  powerState: string().nullable(),
55004
55028
  saltLevel: DishwasherConsumableLevelSchema.nullable(),
55005
55029
  rinseAidLevel: DishwasherConsumableLevelSchema.nullable(),
55030
+ /**
55031
+ * True while the appliance asks for its filter to be cleaned (smart-filter, filter-system or
55032
+ * combined care-and-filter reminder raised); false when every such reminder reads clear; null
55033
+ * when none is reported. A cleared reminder is not an unknown one.
55034
+ */
55035
+ filterCleaningDue: boolean().nullable(),
55036
+ /** True while the machine-care (descaling / cleaning-program) reminder is raised; false when clear; null when not reported. */
55037
+ machineCareDue: boolean().nullable(),
55038
+ /** Program runs left before the machine-care reminder is due; null when the appliance does not say. */
55039
+ machineCareRemainingRuns: number().int().nonnegative().nullable(),
55006
55040
  /** Option states: null when the appliance does not expose the option or has not said. */
55007
55041
  halfLoad: boolean().nullable(),
55008
55042
  hygienePlus: boolean().nullable(),
@@ -61620,16 +61654,6 @@ var UpdateUserInputSchema = object({
61620
61654
  allowedDevices: record(string(), union([array(string()), literal("*")])).optional(),
61621
61655
  scopes: array(TokenScopeSchema).optional()
61622
61656
  });
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
61657
  var OauthSessionSummarySchema = object({
61634
61658
  id: string(),
61635
61659
  userId: string(),
@@ -61651,8 +61675,7 @@ var TotpStatusSchema = object({
61651
61675
  confirmedAt: number().nullable()
61652
61676
  });
61653
61677
  /**
61654
- * user-management — singleton capability for user accounts and the
61655
- * legacy API-key rows.
61678
+ * user-management — singleton capability for user accounts.
61656
61679
  *
61657
61680
  * v2 model: every method gated by `auth: 'admin'`. Admin-only delegation
61658
61681
  * — the subset check on `setUserScopes` is moot
@@ -61708,10 +61731,6 @@ method(_void(), array(UserSummarySchema), { auth: "admin" }), method(CreateUserI
61708
61731
  }), UserSummarySchema.extend({ passwordHash: string() }).nullable(), {
61709
61732
  kind: "mutation",
61710
61733
  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
61734
  }), method(object({ userId: string() }), TotpSetupResultSchema, {
61716
61735
  kind: "mutation",
61717
61736
  auth: "admin",
@@ -69224,6 +69243,12 @@ Object.freeze({
69224
69243
  addonId: null,
69225
69244
  access: "view"
69226
69245
  },
69246
+ "records.transact": {
69247
+ capName: "records",
69248
+ capScope: "system",
69249
+ addonId: null,
69250
+ access: "create"
69251
+ },
69227
69252
  "sceneMonitor.captureReference": {
69228
69253
  capName: "scene-monitor",
69229
69254
  capScope: "device",
@@ -70556,12 +70581,6 @@ Object.freeze({
70556
70581
  addonId: null,
70557
70582
  access: "view"
70558
70583
  },
70559
- "userManagement.listApiKeys": {
70560
- capName: "user-management",
70561
- capScope: "system",
70562
- addonId: null,
70563
- access: "view"
70564
- },
70565
70584
  "userManagement.listExternalIdentities": {
70566
70585
  capName: "user-management",
70567
70586
  capScope: "system",
@@ -70616,12 +70635,6 @@ Object.freeze({
70616
70635
  addonId: null,
70617
70636
  access: "create"
70618
70637
  },
70619
- "userManagement.revokeApiKey": {
70620
- capName: "user-management",
70621
- capScope: "system",
70622
- addonId: null,
70623
- access: "delete"
70624
- },
70625
70638
  "userManagement.revokeOauthSession": {
70626
70639
  capName: "user-management",
70627
70640
  capScope: "system",
@@ -73986,9 +73999,13 @@ new Map(Object.entries({
73986
73999
  "stream-online": "device-events",
73987
74000
  "stream-offline": "device-events",
73988
74001
  "detection-blind": "device-events",
74002
+ "motion-noisy": "device-events",
74003
+ "motion-calm": "device-events",
73989
74004
  "recording-stalled": "device-events",
73990
74005
  "recording-healthy": "device-events",
73991
74006
  "recording-degraded": "device-events",
74007
+ "device-attention-required": "device-events",
74008
+ "device-attention-resolved": "device-events",
73992
74009
  "node-online": "system",
73993
74010
  "node-offline": "system",
73994
74011
  "node-restarting": "system",
@@ -74071,6 +74088,12 @@ var NC_SYSTEM_EVENT_KIND_GROUP_SPECS = [
74071
74088
  label: "Detecting nothing",
74072
74089
  kinds: ["detection-blind"]
74073
74090
  },
74091
+ {
74092
+ id: "motion-noise",
74093
+ family: "device-events",
74094
+ label: "Motion without a subject",
74095
+ kinds: ["motion-noisy", "motion-calm"]
74096
+ },
74074
74097
  {
74075
74098
  id: "recording",
74076
74099
  family: "device-events",
@@ -74081,6 +74104,12 @@ var NC_SYSTEM_EVENT_KIND_GROUP_SPECS = [
74081
74104
  "recording-degraded"
74082
74105
  ]
74083
74106
  },
74107
+ {
74108
+ id: "device-attention",
74109
+ family: "device-events",
74110
+ label: "Needs attention",
74111
+ kinds: ["device-attention-required", "device-attention-resolved"]
74112
+ },
74084
74113
  {
74085
74114
  id: "nodes",
74086
74115
  family: "system",
@@ -74220,6 +74249,7 @@ var ALERT_EPISODE = [
74220
74249
  "alert-error",
74221
74250
  "alert-critical-resolved"
74222
74251
  ];
74252
+ var DEVICE_ATTENTION = ["device-attention-required", "device-attention-resolved"];
74223
74253
  var UPDATES = [
74224
74254
  "addon-update-available",
74225
74255
  "server-update-available",
@@ -74249,9 +74279,12 @@ var DEVICE_EVENTS = [
74249
74279
  "stream-online",
74250
74280
  "stream-offline",
74251
74281
  "detection-blind",
74282
+ "motion-noisy",
74283
+ "motion-calm",
74252
74284
  "recording-stalled",
74253
74285
  "recording-healthy",
74254
74286
  "recording-degraded",
74287
+ ...DEVICE_ATTENTION,
74255
74288
  ...ALARM
74256
74289
  ];
74257
74290
  /** Every kind a summary may speak about — the two summarisable families. */
@@ -74419,7 +74452,9 @@ var STATE_SUMMARY_VARS = [
74419
74452
  [...RULE_TEXT],
74420
74453
  [...RULE_TEXT],
74421
74454
  [...RULE_TEXT],
74422
- ([...RULE_TEXT], [...ALERT_EPISODE]),
74455
+ [...RULE_TEXT],
74456
+ [...RULE_TEXT],
74457
+ ([...RULE_TEXT], [...DEVICE_ATTENTION, ...ALERT_EPISODE]),
74423
74458
  [...RULE_TEXT],
74424
74459
  [...RULE_TEXT],
74425
74460
  [...RULE_TEXT],
@@ -74441,11 +74476,11 @@ var STATE_SUMMARY_VARS = [
74441
74476
  [...RULE_TEXT],
74442
74477
  [...RULE_TEXT],
74443
74478
  [...RULE_TEXT],
74479
+ ([...RULE_TEXT], [...DEVICE_ATTENTION, ...ALERT_EPISODE]),
74444
74480
  ([...RULE_TEXT], [...ALERT_EPISODE]),
74481
+ ([...RULE_TEXT], [...DEVICE_ATTENTION, ...ALERT_EPISODE]),
74445
74482
  ([...RULE_TEXT], [...ALERT_EPISODE]),
74446
- ([...RULE_TEXT], [...ALERT_EPISODE]),
74447
- ([...RULE_TEXT], [...ALERT_EPISODE]),
74448
- ([...RULE_TEXT], [...ALERT_EPISODE]),
74483
+ ([...RULE_TEXT], [...DEVICE_ATTENTION, ...ALERT_EPISODE]),
74449
74484
  [...RULE_TEXT],
74450
74485
  [...RULE_TEXT],
74451
74486
  [...RULE_TEXT],
@@ -74521,6 +74556,15 @@ new Map([
74521
74556
  snapshotLabel: "Tanks low or full now",
74522
74557
  snapshotSection: "tanks"
74523
74558
  },
74559
+ {
74560
+ id: "motion-noise",
74561
+ family: "device-events",
74562
+ label: "Motion without a subject (constant / calm again)",
74563
+ bad: ["motion-noisy"],
74564
+ recovery: ["motion-calm"],
74565
+ snapshotLabel: "Cameras with constant motion now",
74566
+ snapshotSection: null
74567
+ },
74524
74568
  {
74525
74569
  id: "recording-health",
74526
74570
  family: "device-events",
@@ -74530,6 +74574,15 @@ new Map([
74530
74574
  snapshotLabel: "Recordings stalled now",
74531
74575
  snapshotSection: null
74532
74576
  },
74577
+ {
74578
+ id: "device-attention",
74579
+ family: "device-events",
74580
+ label: "Device needs attention (raised / resolved)",
74581
+ bad: ["device-attention-required"],
74582
+ recovery: ["device-attention-resolved"],
74583
+ snapshotLabel: "Devices needing attention now",
74584
+ snapshotSection: null
74585
+ },
74533
74586
  {
74534
74587
  id: "node-connectivity",
74535
74588
  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.25",
4
4
  "description": "Google Services — Google brokers (OAuth2): Calendar as calendar-source, Gmail send as smtp-provider.",
5
5
  "keywords": [
6
6
  "camstack",