@camstack/addon-smtp-nodemailer 1.2.136 → 1.2.138

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.
@@ -36,7 +36,7 @@ var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__ge
36
36
  }) : target, mod));
37
37
  var __toCommonJS = (mod) => __hasOwnProp.call(mod, "module.exports") ? mod["module.exports"] : __copyProps(__defProp({}, "__esModule", { value: true }), mod);
38
38
  //#endregion
39
- //#region ../types/dist/event-category-7pZEBmVg.mjs
39
+ //#region ../types/dist/event-category-BfJwUd2S.mjs
40
40
  var EventCategory = /* @__PURE__ */ function(EventCategory) {
41
41
  EventCategory["SystemBoot"] = "system.boot";
42
42
  EventCategory["SystemAddonsReady"] = "system.addons-ready";
@@ -353,6 +353,15 @@ var EventCategory = /* @__PURE__ */ function(EventCategory) {
353
353
  */
354
354
  EventCategory["PipelineDetectionBlind"] = "pipeline.detection-blind";
355
355
  /**
356
+ * A camera's motion source has fired constantly with no subject for an hour
357
+ * (motion duty or session count over the bar, zero detections) — it is not
358
+ * blind, its motion zones or sensitivity want tuning (D907). Paired with
359
+ * {@link PipelineMotionCalm}.
360
+ */
361
+ EventCategory["PipelineMotionNoisy"] = "pipeline.motion-noisy";
362
+ /** The recovery edge of {@link PipelineMotionNoisy}: the motion fell back, or a detection arrived. */
363
+ EventCategory["PipelineMotionCalm"] = "pipeline.motion-calm";
364
+ /**
356
365
  * Per-camera pipeline config was mutated by the orchestrator
357
366
  * (3-level settings change via `setAgentAddonDefaults` /
358
367
  * `setCameraStepToggle` / `setCameraPipelineForAgent` or a
@@ -5459,7 +5468,7 @@ var ZodIssueCode = {
5459
5468
  var ZodFirstPartyTypeKind;
5460
5469
  ZodFirstPartyTypeKind || (ZodFirstPartyTypeKind = {});
5461
5470
  //#endregion
5462
- //#region ../types/dist/sleep-CueztlR1.mjs
5471
+ //#region ../types/dist/sleep-DJFUfKvA.mjs
5463
5472
  /**
5464
5473
  * The audio chunk plane's byte format, and the ONE expansion from a coded
5465
5474
  * window to float samples (D455).
@@ -7921,7 +7930,7 @@ var EntryDescriptorSchema = object({
7921
7930
  /** JSON Schema of the entry body; `secret: true` marks a password field. */
7922
7931
  fields: record(string(), unknown())
7923
7932
  }).strict();
7924
- /** What crosses the wire and sits in the engine's catalog: JSON only, no Zod. */
7933
+ /** What crosses the wire from an addon: JSON only, no Zod. An unknown key is refused. */
7925
7934
  var RecordKindDeclarationSchema = object({
7926
7935
  database: _enum(RECORD_DATABASES).default("settings"),
7927
7936
  class: _enum(RECORD_CLASSES),
@@ -7940,14 +7949,6 @@ var RecordKindDeclarationSchema = object({
7940
7949
  secretPaths: array(string().min(1)).default([]),
7941
7950
  /** The id key of each array that carries a secret (`{ headers: 'name' }`). */
7942
7951
  secretArrayKeys: record(string(), string()).default({}),
7943
- /**
7944
- * RETIRED (D900): the legacy table a kind adopted from during the records
7945
- * migration. Nothing declares it any more and nothing reads it; the schema
7946
- * still ACCEPTS it because the catalog rows the migration wrote carry it
7947
- * (an orphaned kind is never redeclared) and an addon built before the
7948
- * removal still sends it. Never set it.
7949
- */
7950
- adoptsFrom: string().min(1).optional(),
7951
7952
  /** Kinds that must agree through `transact` sit in one file under one family name. */
7952
7953
  transactFamily: string().min(1).optional(),
7953
7954
  entry: EntryDescriptorSchema.optional()
@@ -12611,17 +12612,6 @@ object({
12611
12612
  createdAt: number(),
12612
12613
  updatedAt: number()
12613
12614
  });
12614
- object({
12615
- id: string(),
12616
- label: string(),
12617
- isAdmin: boolean().default(false),
12618
- allowedProviders: AllowedProviderSchema,
12619
- allowedDevices: AllowedDevicesSchema,
12620
- tokenHash: string(),
12621
- tokenPrefix: string(),
12622
- createdAt: number(),
12623
- lastUsedAt: number().optional()
12624
- });
12625
12615
  object({
12626
12616
  id: string(),
12627
12617
  userId: string(),
@@ -16497,16 +16487,36 @@ var RecordKindStateSchema = _enum([
16497
16487
  var DeclareKindResultSchema = object({
16498
16488
  kindId: number().int(),
16499
16489
  state: RecordKindStateSchema,
16500
- createdIndexes: array(string()),
16501
- /**
16502
- * RETIRED (D900): always `null`. It carried the records-migration boot guard;
16503
- * it stays on the wire, null, because an addon built before the removal reads
16504
- * an ABSENT field as "adoption pending" and refuses to start.
16505
- */
16506
- adoptionPending: _null()
16490
+ createdIndexes: array(string())
16507
16491
  });
16508
16492
  /** Keychain refs a write released (the old marker is gone from the row): the owner deletes the values. */
16509
16493
  var SecretRefsList = array(string());
16494
+ /**
16495
+ * One op of a `transact`: the single-row writes, each on a kind of the caller.
16496
+ * All ops of one call share ONE database file and ONE `transactFamily`.
16497
+ */
16498
+ var RecordTransactOpSchema = discriminatedUnion("op", [
16499
+ object({
16500
+ op: literal("put"),
16501
+ kind: RecordKindNameSchema,
16502
+ record: RecordInputSchema,
16503
+ ifRev: number().int().min(0).optional()
16504
+ }),
16505
+ object({
16506
+ op: literal("patch"),
16507
+ kind: RecordKindNameSchema,
16508
+ id: RecordIdSchema,
16509
+ data: RecordBodySchema,
16510
+ at: number().int().nullable().optional(),
16511
+ expiresAt: number().int().nullable().optional(),
16512
+ ifRev: number().int().min(1).optional()
16513
+ }),
16514
+ object({
16515
+ op: literal("delete"),
16516
+ kind: RecordKindNameSchema,
16517
+ id: RecordIdSchema
16518
+ })
16519
+ ]);
16510
16520
  var RecordSecretRefsSchema = record(string(), record(string(), string()));
16511
16521
  method(object({ kinds: record(RecordKindNameSchema, RecordKindDeclarationSchema) }), object({ kinds: record(string(), DeclareKindResultSchema) }), {
16512
16522
  kind: "mutation",
@@ -16613,6 +16623,16 @@ method(object({ kinds: record(RecordKindNameSchema, RecordKindDeclarationSchema)
16613
16623
  }), {
16614
16624
  kind: "mutation",
16615
16625
  auth: "admin"
16626
+ }), method(object({ ops: array(RecordTransactOpSchema).min(1).max(RECORD_BATCH_MAX) }), object({
16627
+ results: array(object({
16628
+ rev: number().int().nullable(),
16629
+ deleted: boolean()
16630
+ })),
16631
+ releasedRefs: SecretRefsList,
16632
+ secretRefs: SecretRefsList
16633
+ }), {
16634
+ kind: "mutation",
16635
+ auth: "admin"
16616
16636
  }), method(object({
16617
16637
  deviceId: number().int(),
16618
16638
  kinds: array(RecordKindNameSchema).optional()
@@ -41971,9 +41991,13 @@ var NcSystemEventKindSchema = _enum([
41971
41991
  "node-updating",
41972
41992
  "node-inference-unavailable",
41973
41993
  "detection-blind",
41994
+ "motion-noisy",
41995
+ "motion-calm",
41974
41996
  "recording-stalled",
41975
41997
  "recording-healthy",
41976
41998
  "recording-degraded",
41999
+ "device-attention-required",
42000
+ "device-attention-resolved",
41977
42001
  "storage-location-low",
41978
42002
  "storage-location-critical",
41979
42003
  "storage-location-ok",
@@ -47534,7 +47558,6 @@ var RecommendationReasonSchema = discriminatedUnion("kind", [
47534
47558
  modelId: string()
47535
47559
  }),
47536
47560
  object({ kind: literal("cpu-device") }),
47537
- object({ kind: literal("coral-untouched") }),
47538
47561
  object({ kind: literal("device-disabled") }),
47539
47562
  object({ kind: literal("device-unavailable") }),
47540
47563
  object({ kind: literal("node-offline") }),
@@ -47632,11 +47655,6 @@ var AutoTuneWarningSchema = discriminatedUnion("kind", [
47632
47655
  kind: literal("detector-store-unreadable"),
47633
47656
  error: string()
47634
47657
  }),
47635
- object({
47636
- kind: literal("coral-enabled"),
47637
- nodeId: string(),
47638
- deviceKey: string()
47639
- }),
47640
47658
  object({
47641
47659
  kind: literal("custom-pin-kept"),
47642
47660
  nodeId: string(),
@@ -54443,6 +54461,16 @@ object({
54443
54461
  powerState: string().nullable(),
54444
54462
  saltLevel: DishwasherConsumableLevelSchema.nullable(),
54445
54463
  rinseAidLevel: DishwasherConsumableLevelSchema.nullable(),
54464
+ /**
54465
+ * True while the appliance asks for its filter to be cleaned (smart-filter, filter-system or
54466
+ * combined care-and-filter reminder raised); false when every such reminder reads clear; null
54467
+ * when none is reported. A cleared reminder is not an unknown one.
54468
+ */
54469
+ filterCleaningDue: boolean().nullable(),
54470
+ /** True while the machine-care (descaling / cleaning-program) reminder is raised; false when clear; null when not reported. */
54471
+ machineCareDue: boolean().nullable(),
54472
+ /** Program runs left before the machine-care reminder is due; null when the appliance does not say. */
54473
+ machineCareRemainingRuns: number().int().nonnegative().nullable(),
54446
54474
  /** Option states: null when the appliance does not expose the option or has not said. */
54447
54475
  halfLoad: boolean().nullable(),
54448
54476
  hygienePlus: boolean().nullable(),
@@ -61060,16 +61088,6 @@ var UpdateUserInputSchema = object({
61060
61088
  allowedDevices: record(string(), union([array(string()), literal("*")])).optional(),
61061
61089
  scopes: array(TokenScopeSchema).optional()
61062
61090
  });
61063
- var ApiKeySummarySchema = object({
61064
- id: string(),
61065
- label: string(),
61066
- isAdmin: boolean().default(false),
61067
- allowedProviders: union([array(string()), literal("*")]).optional(),
61068
- allowedDevices: record(string(), union([array(string()), literal("*")])).optional(),
61069
- tokenPrefix: string(),
61070
- createdAt: number(),
61071
- lastUsedAt: number().optional()
61072
- });
61073
61091
  var OauthSessionSummarySchema = object({
61074
61092
  id: string(),
61075
61093
  userId: string(),
@@ -61091,8 +61109,7 @@ var TotpStatusSchema = object({
61091
61109
  confirmedAt: number().nullable()
61092
61110
  });
61093
61111
  /**
61094
- * user-management — singleton capability for user accounts and the
61095
- * legacy API-key rows.
61112
+ * user-management — singleton capability for user accounts.
61096
61113
  *
61097
61114
  * v2 model: every method gated by `auth: 'admin'`. Admin-only delegation
61098
61115
  * — the subset check on `setUserScopes` is moot
@@ -61148,10 +61165,6 @@ method(_void(), array(UserSummarySchema), { auth: "admin" }), method(CreateUserI
61148
61165
  }), UserSummarySchema.extend({ passwordHash: string() }).nullable(), {
61149
61166
  kind: "mutation",
61150
61167
  access: "view"
61151
- }), method(_void(), array(ApiKeySummarySchema), { auth: "admin" }), method(object({ id: string() }), object({ success: literal(true) }), {
61152
- kind: "mutation",
61153
- auth: "admin",
61154
- access: "delete"
61155
61168
  }), method(object({ userId: string() }), TotpSetupResultSchema, {
61156
61169
  kind: "mutation",
61157
61170
  auth: "admin",
@@ -68664,6 +68677,12 @@ Object.freeze({
68664
68677
  addonId: null,
68665
68678
  access: "view"
68666
68679
  },
68680
+ "records.transact": {
68681
+ capName: "records",
68682
+ capScope: "system",
68683
+ addonId: null,
68684
+ access: "create"
68685
+ },
68667
68686
  "sceneMonitor.captureReference": {
68668
68687
  capName: "scene-monitor",
68669
68688
  capScope: "device",
@@ -69996,12 +70015,6 @@ Object.freeze({
69996
70015
  addonId: null,
69997
70016
  access: "view"
69998
70017
  },
69999
- "userManagement.listApiKeys": {
70000
- capName: "user-management",
70001
- capScope: "system",
70002
- addonId: null,
70003
- access: "view"
70004
- },
70005
70018
  "userManagement.listExternalIdentities": {
70006
70019
  capName: "user-management",
70007
70020
  capScope: "system",
@@ -70056,12 +70069,6 @@ Object.freeze({
70056
70069
  addonId: null,
70057
70070
  access: "create"
70058
70071
  },
70059
- "userManagement.revokeApiKey": {
70060
- capName: "user-management",
70061
- capScope: "system",
70062
- addonId: null,
70063
- access: "delete"
70064
- },
70065
70072
  "userManagement.revokeOauthSession": {
70066
70073
  capName: "user-management",
70067
70074
  capScope: "system",
@@ -73426,9 +73433,13 @@ new Map(Object.entries({
73426
73433
  "stream-online": "device-events",
73427
73434
  "stream-offline": "device-events",
73428
73435
  "detection-blind": "device-events",
73436
+ "motion-noisy": "device-events",
73437
+ "motion-calm": "device-events",
73429
73438
  "recording-stalled": "device-events",
73430
73439
  "recording-healthy": "device-events",
73431
73440
  "recording-degraded": "device-events",
73441
+ "device-attention-required": "device-events",
73442
+ "device-attention-resolved": "device-events",
73432
73443
  "node-online": "system",
73433
73444
  "node-offline": "system",
73434
73445
  "node-restarting": "system",
@@ -73511,6 +73522,12 @@ var NC_SYSTEM_EVENT_KIND_GROUP_SPECS = [
73511
73522
  label: "Detecting nothing",
73512
73523
  kinds: ["detection-blind"]
73513
73524
  },
73525
+ {
73526
+ id: "motion-noise",
73527
+ family: "device-events",
73528
+ label: "Motion without a subject",
73529
+ kinds: ["motion-noisy", "motion-calm"]
73530
+ },
73514
73531
  {
73515
73532
  id: "recording",
73516
73533
  family: "device-events",
@@ -73521,6 +73538,12 @@ var NC_SYSTEM_EVENT_KIND_GROUP_SPECS = [
73521
73538
  "recording-degraded"
73522
73539
  ]
73523
73540
  },
73541
+ {
73542
+ id: "device-attention",
73543
+ family: "device-events",
73544
+ label: "Needs attention",
73545
+ kinds: ["device-attention-required", "device-attention-resolved"]
73546
+ },
73524
73547
  {
73525
73548
  id: "nodes",
73526
73549
  family: "system",
@@ -73660,6 +73683,7 @@ var ALERT_EPISODE = [
73660
73683
  "alert-error",
73661
73684
  "alert-critical-resolved"
73662
73685
  ];
73686
+ var DEVICE_ATTENTION = ["device-attention-required", "device-attention-resolved"];
73663
73687
  var UPDATES = [
73664
73688
  "addon-update-available",
73665
73689
  "server-update-available",
@@ -73689,9 +73713,12 @@ var DEVICE_EVENTS = [
73689
73713
  "stream-online",
73690
73714
  "stream-offline",
73691
73715
  "detection-blind",
73716
+ "motion-noisy",
73717
+ "motion-calm",
73692
73718
  "recording-stalled",
73693
73719
  "recording-healthy",
73694
73720
  "recording-degraded",
73721
+ ...DEVICE_ATTENTION,
73695
73722
  ...ALARM
73696
73723
  ];
73697
73724
  /** Every kind a summary may speak about — the two summarisable families. */
@@ -73859,7 +73886,9 @@ var STATE_SUMMARY_VARS = [
73859
73886
  [...RULE_TEXT],
73860
73887
  [...RULE_TEXT],
73861
73888
  [...RULE_TEXT],
73862
- ([...RULE_TEXT], [...ALERT_EPISODE]),
73889
+ [...RULE_TEXT],
73890
+ [...RULE_TEXT],
73891
+ ([...RULE_TEXT], [...DEVICE_ATTENTION, ...ALERT_EPISODE]),
73863
73892
  [...RULE_TEXT],
73864
73893
  [...RULE_TEXT],
73865
73894
  [...RULE_TEXT],
@@ -73881,11 +73910,11 @@ var STATE_SUMMARY_VARS = [
73881
73910
  [...RULE_TEXT],
73882
73911
  [...RULE_TEXT],
73883
73912
  [...RULE_TEXT],
73913
+ ([...RULE_TEXT], [...DEVICE_ATTENTION, ...ALERT_EPISODE]),
73884
73914
  ([...RULE_TEXT], [...ALERT_EPISODE]),
73915
+ ([...RULE_TEXT], [...DEVICE_ATTENTION, ...ALERT_EPISODE]),
73885
73916
  ([...RULE_TEXT], [...ALERT_EPISODE]),
73886
- ([...RULE_TEXT], [...ALERT_EPISODE]),
73887
- ([...RULE_TEXT], [...ALERT_EPISODE]),
73888
- ([...RULE_TEXT], [...ALERT_EPISODE]),
73917
+ ([...RULE_TEXT], [...DEVICE_ATTENTION, ...ALERT_EPISODE]),
73889
73918
  [...RULE_TEXT],
73890
73919
  [...RULE_TEXT],
73891
73920
  [...RULE_TEXT],
@@ -73961,6 +73990,15 @@ new Map([
73961
73990
  snapshotLabel: "Tanks low or full now",
73962
73991
  snapshotSection: "tanks"
73963
73992
  },
73993
+ {
73994
+ id: "motion-noise",
73995
+ family: "device-events",
73996
+ label: "Motion without a subject (constant / calm again)",
73997
+ bad: ["motion-noisy"],
73998
+ recovery: ["motion-calm"],
73999
+ snapshotLabel: "Cameras with constant motion now",
74000
+ snapshotSection: null
74001
+ },
73964
74002
  {
73965
74003
  id: "recording-health",
73966
74004
  family: "device-events",
@@ -73970,6 +74008,15 @@ new Map([
73970
74008
  snapshotLabel: "Recordings stalled now",
73971
74009
  snapshotSection: null
73972
74010
  },
74011
+ {
74012
+ id: "device-attention",
74013
+ family: "device-events",
74014
+ label: "Device needs attention (raised / resolved)",
74015
+ bad: ["device-attention-required"],
74016
+ recovery: ["device-attention-resolved"],
74017
+ snapshotLabel: "Devices needing attention now",
74018
+ snapshotSection: null
74019
+ },
73973
74020
  {
73974
74021
  id: "node-connectivity",
73975
74022
  family: "system",
@@ -34,7 +34,7 @@ var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__ge
34
34
  var __toCommonJS = (mod) => __hasOwnProp.call(mod, "module.exports") ? mod["module.exports"] : __copyProps(__defProp({}, "__esModule", { value: true }), mod);
35
35
  var __require = /* @__PURE__ */ createRequire(import.meta.url);
36
36
  //#endregion
37
- //#region ../types/dist/event-category-7pZEBmVg.mjs
37
+ //#region ../types/dist/event-category-BfJwUd2S.mjs
38
38
  var EventCategory = /* @__PURE__ */ function(EventCategory) {
39
39
  EventCategory["SystemBoot"] = "system.boot";
40
40
  EventCategory["SystemAddonsReady"] = "system.addons-ready";
@@ -351,6 +351,15 @@ var EventCategory = /* @__PURE__ */ function(EventCategory) {
351
351
  */
352
352
  EventCategory["PipelineDetectionBlind"] = "pipeline.detection-blind";
353
353
  /**
354
+ * A camera's motion source has fired constantly with no subject for an hour
355
+ * (motion duty or session count over the bar, zero detections) — it is not
356
+ * blind, its motion zones or sensitivity want tuning (D907). Paired with
357
+ * {@link PipelineMotionCalm}.
358
+ */
359
+ EventCategory["PipelineMotionNoisy"] = "pipeline.motion-noisy";
360
+ /** The recovery edge of {@link PipelineMotionNoisy}: the motion fell back, or a detection arrived. */
361
+ EventCategory["PipelineMotionCalm"] = "pipeline.motion-calm";
362
+ /**
354
363
  * Per-camera pipeline config was mutated by the orchestrator
355
364
  * (3-level settings change via `setAgentAddonDefaults` /
356
365
  * `setCameraStepToggle` / `setCameraPipelineForAgent` or a
@@ -5457,7 +5466,7 @@ var ZodIssueCode = {
5457
5466
  var ZodFirstPartyTypeKind;
5458
5467
  ZodFirstPartyTypeKind || (ZodFirstPartyTypeKind = {});
5459
5468
  //#endregion
5460
- //#region ../types/dist/sleep-CueztlR1.mjs
5469
+ //#region ../types/dist/sleep-DJFUfKvA.mjs
5461
5470
  /**
5462
5471
  * The audio chunk plane's byte format, and the ONE expansion from a coded
5463
5472
  * window to float samples (D455).
@@ -7919,7 +7928,7 @@ var EntryDescriptorSchema = object({
7919
7928
  /** JSON Schema of the entry body; `secret: true` marks a password field. */
7920
7929
  fields: record(string(), unknown())
7921
7930
  }).strict();
7922
- /** What crosses the wire and sits in the engine's catalog: JSON only, no Zod. */
7931
+ /** What crosses the wire from an addon: JSON only, no Zod. An unknown key is refused. */
7923
7932
  var RecordKindDeclarationSchema = object({
7924
7933
  database: _enum(RECORD_DATABASES).default("settings"),
7925
7934
  class: _enum(RECORD_CLASSES),
@@ -7938,14 +7947,6 @@ var RecordKindDeclarationSchema = object({
7938
7947
  secretPaths: array(string().min(1)).default([]),
7939
7948
  /** The id key of each array that carries a secret (`{ headers: 'name' }`). */
7940
7949
  secretArrayKeys: record(string(), string()).default({}),
7941
- /**
7942
- * RETIRED (D900): the legacy table a kind adopted from during the records
7943
- * migration. Nothing declares it any more and nothing reads it; the schema
7944
- * still ACCEPTS it because the catalog rows the migration wrote carry it
7945
- * (an orphaned kind is never redeclared) and an addon built before the
7946
- * removal still sends it. Never set it.
7947
- */
7948
- adoptsFrom: string().min(1).optional(),
7949
7950
  /** Kinds that must agree through `transact` sit in one file under one family name. */
7950
7951
  transactFamily: string().min(1).optional(),
7951
7952
  entry: EntryDescriptorSchema.optional()
@@ -12609,17 +12610,6 @@ object({
12609
12610
  createdAt: number(),
12610
12611
  updatedAt: number()
12611
12612
  });
12612
- object({
12613
- id: string(),
12614
- label: string(),
12615
- isAdmin: boolean().default(false),
12616
- allowedProviders: AllowedProviderSchema,
12617
- allowedDevices: AllowedDevicesSchema,
12618
- tokenHash: string(),
12619
- tokenPrefix: string(),
12620
- createdAt: number(),
12621
- lastUsedAt: number().optional()
12622
- });
12623
12613
  object({
12624
12614
  id: string(),
12625
12615
  userId: string(),
@@ -16495,16 +16485,36 @@ var RecordKindStateSchema = _enum([
16495
16485
  var DeclareKindResultSchema = object({
16496
16486
  kindId: number().int(),
16497
16487
  state: RecordKindStateSchema,
16498
- createdIndexes: array(string()),
16499
- /**
16500
- * RETIRED (D900): always `null`. It carried the records-migration boot guard;
16501
- * it stays on the wire, null, because an addon built before the removal reads
16502
- * an ABSENT field as "adoption pending" and refuses to start.
16503
- */
16504
- adoptionPending: _null()
16488
+ createdIndexes: array(string())
16505
16489
  });
16506
16490
  /** Keychain refs a write released (the old marker is gone from the row): the owner deletes the values. */
16507
16491
  var SecretRefsList = array(string());
16492
+ /**
16493
+ * One op of a `transact`: the single-row writes, each on a kind of the caller.
16494
+ * All ops of one call share ONE database file and ONE `transactFamily`.
16495
+ */
16496
+ var RecordTransactOpSchema = discriminatedUnion("op", [
16497
+ object({
16498
+ op: literal("put"),
16499
+ kind: RecordKindNameSchema,
16500
+ record: RecordInputSchema,
16501
+ ifRev: number().int().min(0).optional()
16502
+ }),
16503
+ object({
16504
+ op: literal("patch"),
16505
+ kind: RecordKindNameSchema,
16506
+ id: RecordIdSchema,
16507
+ data: RecordBodySchema,
16508
+ at: number().int().nullable().optional(),
16509
+ expiresAt: number().int().nullable().optional(),
16510
+ ifRev: number().int().min(1).optional()
16511
+ }),
16512
+ object({
16513
+ op: literal("delete"),
16514
+ kind: RecordKindNameSchema,
16515
+ id: RecordIdSchema
16516
+ })
16517
+ ]);
16508
16518
  var RecordSecretRefsSchema = record(string(), record(string(), string()));
16509
16519
  method(object({ kinds: record(RecordKindNameSchema, RecordKindDeclarationSchema) }), object({ kinds: record(string(), DeclareKindResultSchema) }), {
16510
16520
  kind: "mutation",
@@ -16611,6 +16621,16 @@ method(object({ kinds: record(RecordKindNameSchema, RecordKindDeclarationSchema)
16611
16621
  }), {
16612
16622
  kind: "mutation",
16613
16623
  auth: "admin"
16624
+ }), method(object({ ops: array(RecordTransactOpSchema).min(1).max(RECORD_BATCH_MAX) }), object({
16625
+ results: array(object({
16626
+ rev: number().int().nullable(),
16627
+ deleted: boolean()
16628
+ })),
16629
+ releasedRefs: SecretRefsList,
16630
+ secretRefs: SecretRefsList
16631
+ }), {
16632
+ kind: "mutation",
16633
+ auth: "admin"
16614
16634
  }), method(object({
16615
16635
  deviceId: number().int(),
16616
16636
  kinds: array(RecordKindNameSchema).optional()
@@ -41969,9 +41989,13 @@ var NcSystemEventKindSchema = _enum([
41969
41989
  "node-updating",
41970
41990
  "node-inference-unavailable",
41971
41991
  "detection-blind",
41992
+ "motion-noisy",
41993
+ "motion-calm",
41972
41994
  "recording-stalled",
41973
41995
  "recording-healthy",
41974
41996
  "recording-degraded",
41997
+ "device-attention-required",
41998
+ "device-attention-resolved",
41975
41999
  "storage-location-low",
41976
42000
  "storage-location-critical",
41977
42001
  "storage-location-ok",
@@ -47532,7 +47556,6 @@ var RecommendationReasonSchema = discriminatedUnion("kind", [
47532
47556
  modelId: string()
47533
47557
  }),
47534
47558
  object({ kind: literal("cpu-device") }),
47535
- object({ kind: literal("coral-untouched") }),
47536
47559
  object({ kind: literal("device-disabled") }),
47537
47560
  object({ kind: literal("device-unavailable") }),
47538
47561
  object({ kind: literal("node-offline") }),
@@ -47630,11 +47653,6 @@ var AutoTuneWarningSchema = discriminatedUnion("kind", [
47630
47653
  kind: literal("detector-store-unreadable"),
47631
47654
  error: string()
47632
47655
  }),
47633
- object({
47634
- kind: literal("coral-enabled"),
47635
- nodeId: string(),
47636
- deviceKey: string()
47637
- }),
47638
47656
  object({
47639
47657
  kind: literal("custom-pin-kept"),
47640
47658
  nodeId: string(),
@@ -54441,6 +54459,16 @@ object({
54441
54459
  powerState: string().nullable(),
54442
54460
  saltLevel: DishwasherConsumableLevelSchema.nullable(),
54443
54461
  rinseAidLevel: DishwasherConsumableLevelSchema.nullable(),
54462
+ /**
54463
+ * True while the appliance asks for its filter to be cleaned (smart-filter, filter-system or
54464
+ * combined care-and-filter reminder raised); false when every such reminder reads clear; null
54465
+ * when none is reported. A cleared reminder is not an unknown one.
54466
+ */
54467
+ filterCleaningDue: boolean().nullable(),
54468
+ /** True while the machine-care (descaling / cleaning-program) reminder is raised; false when clear; null when not reported. */
54469
+ machineCareDue: boolean().nullable(),
54470
+ /** Program runs left before the machine-care reminder is due; null when the appliance does not say. */
54471
+ machineCareRemainingRuns: number().int().nonnegative().nullable(),
54444
54472
  /** Option states: null when the appliance does not expose the option or has not said. */
54445
54473
  halfLoad: boolean().nullable(),
54446
54474
  hygienePlus: boolean().nullable(),
@@ -61058,16 +61086,6 @@ var UpdateUserInputSchema = object({
61058
61086
  allowedDevices: record(string(), union([array(string()), literal("*")])).optional(),
61059
61087
  scopes: array(TokenScopeSchema).optional()
61060
61088
  });
61061
- var ApiKeySummarySchema = object({
61062
- id: string(),
61063
- label: string(),
61064
- isAdmin: boolean().default(false),
61065
- allowedProviders: union([array(string()), literal("*")]).optional(),
61066
- allowedDevices: record(string(), union([array(string()), literal("*")])).optional(),
61067
- tokenPrefix: string(),
61068
- createdAt: number(),
61069
- lastUsedAt: number().optional()
61070
- });
61071
61089
  var OauthSessionSummarySchema = object({
61072
61090
  id: string(),
61073
61091
  userId: string(),
@@ -61089,8 +61107,7 @@ var TotpStatusSchema = object({
61089
61107
  confirmedAt: number().nullable()
61090
61108
  });
61091
61109
  /**
61092
- * user-management — singleton capability for user accounts and the
61093
- * legacy API-key rows.
61110
+ * user-management — singleton capability for user accounts.
61094
61111
  *
61095
61112
  * v2 model: every method gated by `auth: 'admin'`. Admin-only delegation
61096
61113
  * — the subset check on `setUserScopes` is moot
@@ -61146,10 +61163,6 @@ method(_void(), array(UserSummarySchema), { auth: "admin" }), method(CreateUserI
61146
61163
  }), UserSummarySchema.extend({ passwordHash: string() }).nullable(), {
61147
61164
  kind: "mutation",
61148
61165
  access: "view"
61149
- }), method(_void(), array(ApiKeySummarySchema), { auth: "admin" }), method(object({ id: string() }), object({ success: literal(true) }), {
61150
- kind: "mutation",
61151
- auth: "admin",
61152
- access: "delete"
61153
61166
  }), method(object({ userId: string() }), TotpSetupResultSchema, {
61154
61167
  kind: "mutation",
61155
61168
  auth: "admin",
@@ -68662,6 +68675,12 @@ Object.freeze({
68662
68675
  addonId: null,
68663
68676
  access: "view"
68664
68677
  },
68678
+ "records.transact": {
68679
+ capName: "records",
68680
+ capScope: "system",
68681
+ addonId: null,
68682
+ access: "create"
68683
+ },
68665
68684
  "sceneMonitor.captureReference": {
68666
68685
  capName: "scene-monitor",
68667
68686
  capScope: "device",
@@ -69994,12 +70013,6 @@ Object.freeze({
69994
70013
  addonId: null,
69995
70014
  access: "view"
69996
70015
  },
69997
- "userManagement.listApiKeys": {
69998
- capName: "user-management",
69999
- capScope: "system",
70000
- addonId: null,
70001
- access: "view"
70002
- },
70003
70016
  "userManagement.listExternalIdentities": {
70004
70017
  capName: "user-management",
70005
70018
  capScope: "system",
@@ -70054,12 +70067,6 @@ Object.freeze({
70054
70067
  addonId: null,
70055
70068
  access: "create"
70056
70069
  },
70057
- "userManagement.revokeApiKey": {
70058
- capName: "user-management",
70059
- capScope: "system",
70060
- addonId: null,
70061
- access: "delete"
70062
- },
70063
70070
  "userManagement.revokeOauthSession": {
70064
70071
  capName: "user-management",
70065
70072
  capScope: "system",
@@ -73424,9 +73431,13 @@ new Map(Object.entries({
73424
73431
  "stream-online": "device-events",
73425
73432
  "stream-offline": "device-events",
73426
73433
  "detection-blind": "device-events",
73434
+ "motion-noisy": "device-events",
73435
+ "motion-calm": "device-events",
73427
73436
  "recording-stalled": "device-events",
73428
73437
  "recording-healthy": "device-events",
73429
73438
  "recording-degraded": "device-events",
73439
+ "device-attention-required": "device-events",
73440
+ "device-attention-resolved": "device-events",
73430
73441
  "node-online": "system",
73431
73442
  "node-offline": "system",
73432
73443
  "node-restarting": "system",
@@ -73509,6 +73520,12 @@ var NC_SYSTEM_EVENT_KIND_GROUP_SPECS = [
73509
73520
  label: "Detecting nothing",
73510
73521
  kinds: ["detection-blind"]
73511
73522
  },
73523
+ {
73524
+ id: "motion-noise",
73525
+ family: "device-events",
73526
+ label: "Motion without a subject",
73527
+ kinds: ["motion-noisy", "motion-calm"]
73528
+ },
73512
73529
  {
73513
73530
  id: "recording",
73514
73531
  family: "device-events",
@@ -73519,6 +73536,12 @@ var NC_SYSTEM_EVENT_KIND_GROUP_SPECS = [
73519
73536
  "recording-degraded"
73520
73537
  ]
73521
73538
  },
73539
+ {
73540
+ id: "device-attention",
73541
+ family: "device-events",
73542
+ label: "Needs attention",
73543
+ kinds: ["device-attention-required", "device-attention-resolved"]
73544
+ },
73522
73545
  {
73523
73546
  id: "nodes",
73524
73547
  family: "system",
@@ -73658,6 +73681,7 @@ var ALERT_EPISODE = [
73658
73681
  "alert-error",
73659
73682
  "alert-critical-resolved"
73660
73683
  ];
73684
+ var DEVICE_ATTENTION = ["device-attention-required", "device-attention-resolved"];
73661
73685
  var UPDATES = [
73662
73686
  "addon-update-available",
73663
73687
  "server-update-available",
@@ -73687,9 +73711,12 @@ var DEVICE_EVENTS = [
73687
73711
  "stream-online",
73688
73712
  "stream-offline",
73689
73713
  "detection-blind",
73714
+ "motion-noisy",
73715
+ "motion-calm",
73690
73716
  "recording-stalled",
73691
73717
  "recording-healthy",
73692
73718
  "recording-degraded",
73719
+ ...DEVICE_ATTENTION,
73693
73720
  ...ALARM
73694
73721
  ];
73695
73722
  /** Every kind a summary may speak about — the two summarisable families. */
@@ -73857,7 +73884,9 @@ var STATE_SUMMARY_VARS = [
73857
73884
  [...RULE_TEXT],
73858
73885
  [...RULE_TEXT],
73859
73886
  [...RULE_TEXT],
73860
- ([...RULE_TEXT], [...ALERT_EPISODE]),
73887
+ [...RULE_TEXT],
73888
+ [...RULE_TEXT],
73889
+ ([...RULE_TEXT], [...DEVICE_ATTENTION, ...ALERT_EPISODE]),
73861
73890
  [...RULE_TEXT],
73862
73891
  [...RULE_TEXT],
73863
73892
  [...RULE_TEXT],
@@ -73879,11 +73908,11 @@ var STATE_SUMMARY_VARS = [
73879
73908
  [...RULE_TEXT],
73880
73909
  [...RULE_TEXT],
73881
73910
  [...RULE_TEXT],
73911
+ ([...RULE_TEXT], [...DEVICE_ATTENTION, ...ALERT_EPISODE]),
73882
73912
  ([...RULE_TEXT], [...ALERT_EPISODE]),
73913
+ ([...RULE_TEXT], [...DEVICE_ATTENTION, ...ALERT_EPISODE]),
73883
73914
  ([...RULE_TEXT], [...ALERT_EPISODE]),
73884
- ([...RULE_TEXT], [...ALERT_EPISODE]),
73885
- ([...RULE_TEXT], [...ALERT_EPISODE]),
73886
- ([...RULE_TEXT], [...ALERT_EPISODE]),
73915
+ ([...RULE_TEXT], [...DEVICE_ATTENTION, ...ALERT_EPISODE]),
73887
73916
  [...RULE_TEXT],
73888
73917
  [...RULE_TEXT],
73889
73918
  [...RULE_TEXT],
@@ -73959,6 +73988,15 @@ new Map([
73959
73988
  snapshotLabel: "Tanks low or full now",
73960
73989
  snapshotSection: "tanks"
73961
73990
  },
73991
+ {
73992
+ id: "motion-noise",
73993
+ family: "device-events",
73994
+ label: "Motion without a subject (constant / calm again)",
73995
+ bad: ["motion-noisy"],
73996
+ recovery: ["motion-calm"],
73997
+ snapshotLabel: "Cameras with constant motion now",
73998
+ snapshotSection: null
73999
+ },
73962
74000
  {
73963
74001
  id: "recording-health",
73964
74002
  family: "device-events",
@@ -73968,6 +74006,15 @@ new Map([
73968
74006
  snapshotLabel: "Recordings stalled now",
73969
74007
  snapshotSection: null
73970
74008
  },
74009
+ {
74010
+ id: "device-attention",
74011
+ family: "device-events",
74012
+ label: "Device needs attention (raised / resolved)",
74013
+ bad: ["device-attention-required"],
74014
+ recovery: ["device-attention-resolved"],
74015
+ snapshotLabel: "Devices needing attention now",
74016
+ snapshotSection: null
74017
+ },
73971
74018
  {
73972
74019
  id: "node-connectivity",
73973
74020
  family: "system",
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@camstack/addon-smtp-nodemailer",
3
- "version": "1.2.136",
3
+ "version": "1.2.138",
4
4
  "description": "SMTP email provider addon for CamStack — wraps `nodemailer` and registers a `smtp-provider` cap collection entry. Used by notifier addons.",
5
5
  "keywords": [
6
6
  "camstack",