@camstack/addon-smtp-nodemailer 1.2.136 → 1.2.137

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",
@@ -54443,6 +54467,16 @@ object({
54443
54467
  powerState: string().nullable(),
54444
54468
  saltLevel: DishwasherConsumableLevelSchema.nullable(),
54445
54469
  rinseAidLevel: DishwasherConsumableLevelSchema.nullable(),
54470
+ /**
54471
+ * True while the appliance asks for its filter to be cleaned (smart-filter, filter-system or
54472
+ * combined care-and-filter reminder raised); false when every such reminder reads clear; null
54473
+ * when none is reported. A cleared reminder is not an unknown one.
54474
+ */
54475
+ filterCleaningDue: boolean().nullable(),
54476
+ /** True while the machine-care (descaling / cleaning-program) reminder is raised; false when clear; null when not reported. */
54477
+ machineCareDue: boolean().nullable(),
54478
+ /** Program runs left before the machine-care reminder is due; null when the appliance does not say. */
54479
+ machineCareRemainingRuns: number().int().nonnegative().nullable(),
54446
54480
  /** Option states: null when the appliance does not expose the option or has not said. */
54447
54481
  halfLoad: boolean().nullable(),
54448
54482
  hygienePlus: boolean().nullable(),
@@ -61060,16 +61094,6 @@ var UpdateUserInputSchema = object({
61060
61094
  allowedDevices: record(string(), union([array(string()), literal("*")])).optional(),
61061
61095
  scopes: array(TokenScopeSchema).optional()
61062
61096
  });
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
61097
  var OauthSessionSummarySchema = object({
61074
61098
  id: string(),
61075
61099
  userId: string(),
@@ -61091,8 +61115,7 @@ var TotpStatusSchema = object({
61091
61115
  confirmedAt: number().nullable()
61092
61116
  });
61093
61117
  /**
61094
- * user-management — singleton capability for user accounts and the
61095
- * legacy API-key rows.
61118
+ * user-management — singleton capability for user accounts.
61096
61119
  *
61097
61120
  * v2 model: every method gated by `auth: 'admin'`. Admin-only delegation
61098
61121
  * — the subset check on `setUserScopes` is moot
@@ -61148,10 +61171,6 @@ method(_void(), array(UserSummarySchema), { auth: "admin" }), method(CreateUserI
61148
61171
  }), UserSummarySchema.extend({ passwordHash: string() }).nullable(), {
61149
61172
  kind: "mutation",
61150
61173
  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
61174
  }), method(object({ userId: string() }), TotpSetupResultSchema, {
61156
61175
  kind: "mutation",
61157
61176
  auth: "admin",
@@ -68664,6 +68683,12 @@ Object.freeze({
68664
68683
  addonId: null,
68665
68684
  access: "view"
68666
68685
  },
68686
+ "records.transact": {
68687
+ capName: "records",
68688
+ capScope: "system",
68689
+ addonId: null,
68690
+ access: "create"
68691
+ },
68667
68692
  "sceneMonitor.captureReference": {
68668
68693
  capName: "scene-monitor",
68669
68694
  capScope: "device",
@@ -69996,12 +70021,6 @@ Object.freeze({
69996
70021
  addonId: null,
69997
70022
  access: "view"
69998
70023
  },
69999
- "userManagement.listApiKeys": {
70000
- capName: "user-management",
70001
- capScope: "system",
70002
- addonId: null,
70003
- access: "view"
70004
- },
70005
70024
  "userManagement.listExternalIdentities": {
70006
70025
  capName: "user-management",
70007
70026
  capScope: "system",
@@ -70056,12 +70075,6 @@ Object.freeze({
70056
70075
  addonId: null,
70057
70076
  access: "create"
70058
70077
  },
70059
- "userManagement.revokeApiKey": {
70060
- capName: "user-management",
70061
- capScope: "system",
70062
- addonId: null,
70063
- access: "delete"
70064
- },
70065
70078
  "userManagement.revokeOauthSession": {
70066
70079
  capName: "user-management",
70067
70080
  capScope: "system",
@@ -73426,9 +73439,13 @@ new Map(Object.entries({
73426
73439
  "stream-online": "device-events",
73427
73440
  "stream-offline": "device-events",
73428
73441
  "detection-blind": "device-events",
73442
+ "motion-noisy": "device-events",
73443
+ "motion-calm": "device-events",
73429
73444
  "recording-stalled": "device-events",
73430
73445
  "recording-healthy": "device-events",
73431
73446
  "recording-degraded": "device-events",
73447
+ "device-attention-required": "device-events",
73448
+ "device-attention-resolved": "device-events",
73432
73449
  "node-online": "system",
73433
73450
  "node-offline": "system",
73434
73451
  "node-restarting": "system",
@@ -73511,6 +73528,12 @@ var NC_SYSTEM_EVENT_KIND_GROUP_SPECS = [
73511
73528
  label: "Detecting nothing",
73512
73529
  kinds: ["detection-blind"]
73513
73530
  },
73531
+ {
73532
+ id: "motion-noise",
73533
+ family: "device-events",
73534
+ label: "Motion without a subject",
73535
+ kinds: ["motion-noisy", "motion-calm"]
73536
+ },
73514
73537
  {
73515
73538
  id: "recording",
73516
73539
  family: "device-events",
@@ -73521,6 +73544,12 @@ var NC_SYSTEM_EVENT_KIND_GROUP_SPECS = [
73521
73544
  "recording-degraded"
73522
73545
  ]
73523
73546
  },
73547
+ {
73548
+ id: "device-attention",
73549
+ family: "device-events",
73550
+ label: "Needs attention",
73551
+ kinds: ["device-attention-required", "device-attention-resolved"]
73552
+ },
73524
73553
  {
73525
73554
  id: "nodes",
73526
73555
  family: "system",
@@ -73660,6 +73689,7 @@ var ALERT_EPISODE = [
73660
73689
  "alert-error",
73661
73690
  "alert-critical-resolved"
73662
73691
  ];
73692
+ var DEVICE_ATTENTION = ["device-attention-required", "device-attention-resolved"];
73663
73693
  var UPDATES = [
73664
73694
  "addon-update-available",
73665
73695
  "server-update-available",
@@ -73689,9 +73719,12 @@ var DEVICE_EVENTS = [
73689
73719
  "stream-online",
73690
73720
  "stream-offline",
73691
73721
  "detection-blind",
73722
+ "motion-noisy",
73723
+ "motion-calm",
73692
73724
  "recording-stalled",
73693
73725
  "recording-healthy",
73694
73726
  "recording-degraded",
73727
+ ...DEVICE_ATTENTION,
73695
73728
  ...ALARM
73696
73729
  ];
73697
73730
  /** Every kind a summary may speak about — the two summarisable families. */
@@ -73859,7 +73892,9 @@ var STATE_SUMMARY_VARS = [
73859
73892
  [...RULE_TEXT],
73860
73893
  [...RULE_TEXT],
73861
73894
  [...RULE_TEXT],
73862
- ([...RULE_TEXT], [...ALERT_EPISODE]),
73895
+ [...RULE_TEXT],
73896
+ [...RULE_TEXT],
73897
+ ([...RULE_TEXT], [...DEVICE_ATTENTION, ...ALERT_EPISODE]),
73863
73898
  [...RULE_TEXT],
73864
73899
  [...RULE_TEXT],
73865
73900
  [...RULE_TEXT],
@@ -73881,11 +73916,11 @@ var STATE_SUMMARY_VARS = [
73881
73916
  [...RULE_TEXT],
73882
73917
  [...RULE_TEXT],
73883
73918
  [...RULE_TEXT],
73919
+ ([...RULE_TEXT], [...DEVICE_ATTENTION, ...ALERT_EPISODE]),
73884
73920
  ([...RULE_TEXT], [...ALERT_EPISODE]),
73921
+ ([...RULE_TEXT], [...DEVICE_ATTENTION, ...ALERT_EPISODE]),
73885
73922
  ([...RULE_TEXT], [...ALERT_EPISODE]),
73886
- ([...RULE_TEXT], [...ALERT_EPISODE]),
73887
- ([...RULE_TEXT], [...ALERT_EPISODE]),
73888
- ([...RULE_TEXT], [...ALERT_EPISODE]),
73923
+ ([...RULE_TEXT], [...DEVICE_ATTENTION, ...ALERT_EPISODE]),
73889
73924
  [...RULE_TEXT],
73890
73925
  [...RULE_TEXT],
73891
73926
  [...RULE_TEXT],
@@ -73961,6 +73996,15 @@ new Map([
73961
73996
  snapshotLabel: "Tanks low or full now",
73962
73997
  snapshotSection: "tanks"
73963
73998
  },
73999
+ {
74000
+ id: "motion-noise",
74001
+ family: "device-events",
74002
+ label: "Motion without a subject (constant / calm again)",
74003
+ bad: ["motion-noisy"],
74004
+ recovery: ["motion-calm"],
74005
+ snapshotLabel: "Cameras with constant motion now",
74006
+ snapshotSection: null
74007
+ },
73964
74008
  {
73965
74009
  id: "recording-health",
73966
74010
  family: "device-events",
@@ -73970,6 +74014,15 @@ new Map([
73970
74014
  snapshotLabel: "Recordings stalled now",
73971
74015
  snapshotSection: null
73972
74016
  },
74017
+ {
74018
+ id: "device-attention",
74019
+ family: "device-events",
74020
+ label: "Device needs attention (raised / resolved)",
74021
+ bad: ["device-attention-required"],
74022
+ recovery: ["device-attention-resolved"],
74023
+ snapshotLabel: "Devices needing attention now",
74024
+ snapshotSection: null
74025
+ },
73973
74026
  {
73974
74027
  id: "node-connectivity",
73975
74028
  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",
@@ -54441,6 +54465,16 @@ object({
54441
54465
  powerState: string().nullable(),
54442
54466
  saltLevel: DishwasherConsumableLevelSchema.nullable(),
54443
54467
  rinseAidLevel: DishwasherConsumableLevelSchema.nullable(),
54468
+ /**
54469
+ * True while the appliance asks for its filter to be cleaned (smart-filter, filter-system or
54470
+ * combined care-and-filter reminder raised); false when every such reminder reads clear; null
54471
+ * when none is reported. A cleared reminder is not an unknown one.
54472
+ */
54473
+ filterCleaningDue: boolean().nullable(),
54474
+ /** True while the machine-care (descaling / cleaning-program) reminder is raised; false when clear; null when not reported. */
54475
+ machineCareDue: boolean().nullable(),
54476
+ /** Program runs left before the machine-care reminder is due; null when the appliance does not say. */
54477
+ machineCareRemainingRuns: number().int().nonnegative().nullable(),
54444
54478
  /** Option states: null when the appliance does not expose the option or has not said. */
54445
54479
  halfLoad: boolean().nullable(),
54446
54480
  hygienePlus: boolean().nullable(),
@@ -61058,16 +61092,6 @@ var UpdateUserInputSchema = object({
61058
61092
  allowedDevices: record(string(), union([array(string()), literal("*")])).optional(),
61059
61093
  scopes: array(TokenScopeSchema).optional()
61060
61094
  });
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
61095
  var OauthSessionSummarySchema = object({
61072
61096
  id: string(),
61073
61097
  userId: string(),
@@ -61089,8 +61113,7 @@ var TotpStatusSchema = object({
61089
61113
  confirmedAt: number().nullable()
61090
61114
  });
61091
61115
  /**
61092
- * user-management — singleton capability for user accounts and the
61093
- * legacy API-key rows.
61116
+ * user-management — singleton capability for user accounts.
61094
61117
  *
61095
61118
  * v2 model: every method gated by `auth: 'admin'`. Admin-only delegation
61096
61119
  * — the subset check on `setUserScopes` is moot
@@ -61146,10 +61169,6 @@ method(_void(), array(UserSummarySchema), { auth: "admin" }), method(CreateUserI
61146
61169
  }), UserSummarySchema.extend({ passwordHash: string() }).nullable(), {
61147
61170
  kind: "mutation",
61148
61171
  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
61172
  }), method(object({ userId: string() }), TotpSetupResultSchema, {
61154
61173
  kind: "mutation",
61155
61174
  auth: "admin",
@@ -68662,6 +68681,12 @@ Object.freeze({
68662
68681
  addonId: null,
68663
68682
  access: "view"
68664
68683
  },
68684
+ "records.transact": {
68685
+ capName: "records",
68686
+ capScope: "system",
68687
+ addonId: null,
68688
+ access: "create"
68689
+ },
68665
68690
  "sceneMonitor.captureReference": {
68666
68691
  capName: "scene-monitor",
68667
68692
  capScope: "device",
@@ -69994,12 +70019,6 @@ Object.freeze({
69994
70019
  addonId: null,
69995
70020
  access: "view"
69996
70021
  },
69997
- "userManagement.listApiKeys": {
69998
- capName: "user-management",
69999
- capScope: "system",
70000
- addonId: null,
70001
- access: "view"
70002
- },
70003
70022
  "userManagement.listExternalIdentities": {
70004
70023
  capName: "user-management",
70005
70024
  capScope: "system",
@@ -70054,12 +70073,6 @@ Object.freeze({
70054
70073
  addonId: null,
70055
70074
  access: "create"
70056
70075
  },
70057
- "userManagement.revokeApiKey": {
70058
- capName: "user-management",
70059
- capScope: "system",
70060
- addonId: null,
70061
- access: "delete"
70062
- },
70063
70076
  "userManagement.revokeOauthSession": {
70064
70077
  capName: "user-management",
70065
70078
  capScope: "system",
@@ -73424,9 +73437,13 @@ new Map(Object.entries({
73424
73437
  "stream-online": "device-events",
73425
73438
  "stream-offline": "device-events",
73426
73439
  "detection-blind": "device-events",
73440
+ "motion-noisy": "device-events",
73441
+ "motion-calm": "device-events",
73427
73442
  "recording-stalled": "device-events",
73428
73443
  "recording-healthy": "device-events",
73429
73444
  "recording-degraded": "device-events",
73445
+ "device-attention-required": "device-events",
73446
+ "device-attention-resolved": "device-events",
73430
73447
  "node-online": "system",
73431
73448
  "node-offline": "system",
73432
73449
  "node-restarting": "system",
@@ -73509,6 +73526,12 @@ var NC_SYSTEM_EVENT_KIND_GROUP_SPECS = [
73509
73526
  label: "Detecting nothing",
73510
73527
  kinds: ["detection-blind"]
73511
73528
  },
73529
+ {
73530
+ id: "motion-noise",
73531
+ family: "device-events",
73532
+ label: "Motion without a subject",
73533
+ kinds: ["motion-noisy", "motion-calm"]
73534
+ },
73512
73535
  {
73513
73536
  id: "recording",
73514
73537
  family: "device-events",
@@ -73519,6 +73542,12 @@ var NC_SYSTEM_EVENT_KIND_GROUP_SPECS = [
73519
73542
  "recording-degraded"
73520
73543
  ]
73521
73544
  },
73545
+ {
73546
+ id: "device-attention",
73547
+ family: "device-events",
73548
+ label: "Needs attention",
73549
+ kinds: ["device-attention-required", "device-attention-resolved"]
73550
+ },
73522
73551
  {
73523
73552
  id: "nodes",
73524
73553
  family: "system",
@@ -73658,6 +73687,7 @@ var ALERT_EPISODE = [
73658
73687
  "alert-error",
73659
73688
  "alert-critical-resolved"
73660
73689
  ];
73690
+ var DEVICE_ATTENTION = ["device-attention-required", "device-attention-resolved"];
73661
73691
  var UPDATES = [
73662
73692
  "addon-update-available",
73663
73693
  "server-update-available",
@@ -73687,9 +73717,12 @@ var DEVICE_EVENTS = [
73687
73717
  "stream-online",
73688
73718
  "stream-offline",
73689
73719
  "detection-blind",
73720
+ "motion-noisy",
73721
+ "motion-calm",
73690
73722
  "recording-stalled",
73691
73723
  "recording-healthy",
73692
73724
  "recording-degraded",
73725
+ ...DEVICE_ATTENTION,
73693
73726
  ...ALARM
73694
73727
  ];
73695
73728
  /** Every kind a summary may speak about — the two summarisable families. */
@@ -73857,7 +73890,9 @@ var STATE_SUMMARY_VARS = [
73857
73890
  [...RULE_TEXT],
73858
73891
  [...RULE_TEXT],
73859
73892
  [...RULE_TEXT],
73860
- ([...RULE_TEXT], [...ALERT_EPISODE]),
73893
+ [...RULE_TEXT],
73894
+ [...RULE_TEXT],
73895
+ ([...RULE_TEXT], [...DEVICE_ATTENTION, ...ALERT_EPISODE]),
73861
73896
  [...RULE_TEXT],
73862
73897
  [...RULE_TEXT],
73863
73898
  [...RULE_TEXT],
@@ -73879,11 +73914,11 @@ var STATE_SUMMARY_VARS = [
73879
73914
  [...RULE_TEXT],
73880
73915
  [...RULE_TEXT],
73881
73916
  [...RULE_TEXT],
73917
+ ([...RULE_TEXT], [...DEVICE_ATTENTION, ...ALERT_EPISODE]),
73882
73918
  ([...RULE_TEXT], [...ALERT_EPISODE]),
73919
+ ([...RULE_TEXT], [...DEVICE_ATTENTION, ...ALERT_EPISODE]),
73883
73920
  ([...RULE_TEXT], [...ALERT_EPISODE]),
73884
- ([...RULE_TEXT], [...ALERT_EPISODE]),
73885
- ([...RULE_TEXT], [...ALERT_EPISODE]),
73886
- ([...RULE_TEXT], [...ALERT_EPISODE]),
73921
+ ([...RULE_TEXT], [...DEVICE_ATTENTION, ...ALERT_EPISODE]),
73887
73922
  [...RULE_TEXT],
73888
73923
  [...RULE_TEXT],
73889
73924
  [...RULE_TEXT],
@@ -73959,6 +73994,15 @@ new Map([
73959
73994
  snapshotLabel: "Tanks low or full now",
73960
73995
  snapshotSection: "tanks"
73961
73996
  },
73997
+ {
73998
+ id: "motion-noise",
73999
+ family: "device-events",
74000
+ label: "Motion without a subject (constant / calm again)",
74001
+ bad: ["motion-noisy"],
74002
+ recovery: ["motion-calm"],
74003
+ snapshotLabel: "Cameras with constant motion now",
74004
+ snapshotSection: null
74005
+ },
73962
74006
  {
73963
74007
  id: "recording-health",
73964
74008
  family: "device-events",
@@ -73968,6 +74012,15 @@ new Map([
73968
74012
  snapshotLabel: "Recordings stalled now",
73969
74013
  snapshotSection: null
73970
74014
  },
74015
+ {
74016
+ id: "device-attention",
74017
+ family: "device-events",
74018
+ label: "Device needs attention (raised / resolved)",
74019
+ bad: ["device-attention-required"],
74020
+ recovery: ["device-attention-resolved"],
74021
+ snapshotLabel: "Devices needing attention now",
74022
+ snapshotSection: null
74023
+ },
73971
74024
  {
73972
74025
  id: "node-connectivity",
73973
74026
  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.137",
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",