@camstack/addon-auth 1.2.161 → 1.2.163

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.
@@ -32,7 +32,7 @@ var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__ge
32
32
  }) : target, mod));
33
33
  var __toCommonJS = (mod) => __hasOwnProp.call(mod, "module.exports") ? mod["module.exports"] : __copyProps(__defProp({}, "__esModule", { value: true }), mod);
34
34
  require("node:crypto");
35
- //#region ../types/dist/event-category-DOl51-Ij.mjs
35
+ //#region ../types/dist/event-category-BfJwUd2S.mjs
36
36
  var EventCategory = /* @__PURE__ */ function(EventCategory) {
37
37
  EventCategory["SystemBoot"] = "system.boot";
38
38
  EventCategory["SystemAddonsReady"] = "system.addons-ready";
@@ -349,6 +349,15 @@ var EventCategory = /* @__PURE__ */ function(EventCategory) {
349
349
  */
350
350
  EventCategory["PipelineDetectionBlind"] = "pipeline.detection-blind";
351
351
  /**
352
+ * A camera's motion source has fired constantly with no subject for an hour
353
+ * (motion duty or session count over the bar, zero detections) — it is not
354
+ * blind, its motion zones or sensitivity want tuning (D907). Paired with
355
+ * {@link PipelineMotionCalm}.
356
+ */
357
+ EventCategory["PipelineMotionNoisy"] = "pipeline.motion-noisy";
358
+ /** The recovery edge of {@link PipelineMotionNoisy}: the motion fell back, or a detection arrived. */
359
+ EventCategory["PipelineMotionCalm"] = "pipeline.motion-calm";
360
+ /**
352
361
  * Per-camera pipeline config was mutated by the orchestrator
353
362
  * (3-level settings change via `setAgentAddonDefaults` /
354
363
  * `setCameraStepToggle` / `setCameraPipelineForAgent` or a
@@ -720,6 +729,14 @@ var EventCategory = /* @__PURE__ */ function(EventCategory) {
720
729
  EventCategory["BackupRestored"] = "backup.restored";
721
730
  EventCategory["NotificationDispatched"] = "notification.dispatched";
722
731
  EventCategory["NotificationFailed"] = "notification.failed";
732
+ /**
733
+ * A notification rule that cannot work (D905): its stored row does not load,
734
+ * or it still names a device / delivery target the prune CONFIRMED deleted.
735
+ * One edge per rule per distinct set of reasons; never on an unanswered read.
736
+ */
737
+ EventCategory["NotificationRuleBroken"] = "notification.rule-broken";
738
+ /** The clear of {@link NotificationRuleBroken}: the rule loads and names nothing deleted. */
739
+ EventCategory["NotificationRuleRepaired"] = "notification.rule-repaired";
723
740
  EventCategory["DeviceUpdated"] = "device.updated";
724
741
  /**
725
742
  * Transport-level connectivity. Emitted by the device driver when
@@ -5580,7 +5597,7 @@ var ZodIssueCode = {
5580
5597
  var ZodFirstPartyTypeKind;
5581
5598
  ZodFirstPartyTypeKind || (ZodFirstPartyTypeKind = {});
5582
5599
  //#endregion
5583
- //#region ../types/dist/sleep-_sV1BE2f.mjs
5600
+ //#region ../types/dist/sleep-DJFUfKvA.mjs
5584
5601
  /**
5585
5602
  * The audio chunk plane's byte format, and the ONE expansion from a coded
5586
5603
  * window to float samples (D455).
@@ -8179,7 +8196,7 @@ var EntryDescriptorSchema = object({
8179
8196
  /** JSON Schema of the entry body; `secret: true` marks a password field. */
8180
8197
  fields: record(string(), unknown())
8181
8198
  }).strict();
8182
- /** What crosses the wire and sits in the engine's catalog: JSON only, no Zod. */
8199
+ /** What crosses the wire from an addon: JSON only, no Zod. An unknown key is refused. */
8183
8200
  var RecordKindDeclarationSchema = object({
8184
8201
  database: _enum(RECORD_DATABASES).default("settings"),
8185
8202
  class: _enum(RECORD_CLASSES),
@@ -8198,14 +8215,6 @@ var RecordKindDeclarationSchema = object({
8198
8215
  secretPaths: array(string().min(1)).default([]),
8199
8216
  /** The id key of each array that carries a secret (`{ headers: 'name' }`). */
8200
8217
  secretArrayKeys: record(string(), string()).default({}),
8201
- /**
8202
- * RETIRED (D900): the legacy table a kind adopted from during the records
8203
- * migration. Nothing declares it any more and nothing reads it; the schema
8204
- * still ACCEPTS it because the catalog rows the migration wrote carry it
8205
- * (an orphaned kind is never redeclared) and an addon built before the
8206
- * removal still sends it. Never set it.
8207
- */
8208
- adoptsFrom: string().min(1).optional(),
8209
8218
  /** Kinds that must agree through `transact` sit in one file under one family name. */
8210
8219
  transactFamily: string().min(1).optional(),
8211
8220
  entry: EntryDescriptorSchema.optional()
@@ -13100,17 +13109,6 @@ object({
13100
13109
  createdAt: number(),
13101
13110
  updatedAt: number()
13102
13111
  });
13103
- object({
13104
- id: string(),
13105
- label: string(),
13106
- isAdmin: boolean().default(false),
13107
- allowedProviders: AllowedProviderSchema,
13108
- allowedDevices: AllowedDevicesSchema,
13109
- tokenHash: string(),
13110
- tokenPrefix: string(),
13111
- createdAt: number(),
13112
- lastUsedAt: number().optional()
13113
- });
13114
13112
  object({
13115
13113
  id: string(),
13116
13114
  userId: string(),
@@ -17245,16 +17243,36 @@ var RecordKindStateSchema = _enum([
17245
17243
  var DeclareKindResultSchema = object({
17246
17244
  kindId: number().int(),
17247
17245
  state: RecordKindStateSchema,
17248
- createdIndexes: array(string()),
17249
- /**
17250
- * RETIRED (D900): always `null`. It carried the records-migration boot guard;
17251
- * it stays on the wire, null, because an addon built before the removal reads
17252
- * an ABSENT field as "adoption pending" and refuses to start.
17253
- */
17254
- adoptionPending: _null()
17246
+ createdIndexes: array(string())
17255
17247
  });
17256
17248
  /** Keychain refs a write released (the old marker is gone from the row): the owner deletes the values. */
17257
17249
  var SecretRefsList = array(string());
17250
+ /**
17251
+ * One op of a `transact`: the single-row writes, each on a kind of the caller.
17252
+ * All ops of one call share ONE database file and ONE `transactFamily`.
17253
+ */
17254
+ var RecordTransactOpSchema = discriminatedUnion("op", [
17255
+ object({
17256
+ op: literal("put"),
17257
+ kind: RecordKindNameSchema,
17258
+ record: RecordInputSchema,
17259
+ ifRev: number().int().min(0).optional()
17260
+ }),
17261
+ object({
17262
+ op: literal("patch"),
17263
+ kind: RecordKindNameSchema,
17264
+ id: RecordIdSchema,
17265
+ data: RecordBodySchema,
17266
+ at: number().int().nullable().optional(),
17267
+ expiresAt: number().int().nullable().optional(),
17268
+ ifRev: number().int().min(1).optional()
17269
+ }),
17270
+ object({
17271
+ op: literal("delete"),
17272
+ kind: RecordKindNameSchema,
17273
+ id: RecordIdSchema
17274
+ })
17275
+ ]);
17258
17276
  var RecordSecretRefsSchema = record(string(), record(string(), string()));
17259
17277
  method(object({ kinds: record(RecordKindNameSchema, RecordKindDeclarationSchema) }), object({ kinds: record(string(), DeclareKindResultSchema) }), {
17260
17278
  kind: "mutation",
@@ -17361,6 +17379,16 @@ method(object({ kinds: record(RecordKindNameSchema, RecordKindDeclarationSchema)
17361
17379
  }), {
17362
17380
  kind: "mutation",
17363
17381
  auth: "admin"
17382
+ }), method(object({ ops: array(RecordTransactOpSchema).min(1).max(RECORD_BATCH_MAX) }), object({
17383
+ results: array(object({
17384
+ rev: number().int().nullable(),
17385
+ deleted: boolean()
17386
+ })),
17387
+ releasedRefs: SecretRefsList,
17388
+ secretRefs: SecretRefsList
17389
+ }), {
17390
+ kind: "mutation",
17391
+ auth: "admin"
17364
17392
  }), method(object({
17365
17393
  deviceId: number().int(),
17366
17394
  kinds: array(RecordKindNameSchema).optional()
@@ -42745,9 +42773,13 @@ var NcSystemEventKindSchema = _enum([
42745
42773
  "node-updating",
42746
42774
  "node-inference-unavailable",
42747
42775
  "detection-blind",
42776
+ "motion-noisy",
42777
+ "motion-calm",
42748
42778
  "recording-stalled",
42749
42779
  "recording-healthy",
42750
42780
  "recording-degraded",
42781
+ "device-attention-required",
42782
+ "device-attention-resolved",
42751
42783
  "storage-location-low",
42752
42784
  "storage-location-critical",
42753
42785
  "storage-location-ok",
@@ -42771,6 +42803,8 @@ var NcSystemEventKindSchema = _enum([
42771
42803
  "alert-critical",
42772
42804
  "alert-error",
42773
42805
  "alert-critical-resolved",
42806
+ "rule-broken",
42807
+ "rule-repaired",
42774
42808
  "camera-online",
42775
42809
  "camera-offline",
42776
42810
  "camera-disabled",
@@ -55253,6 +55287,16 @@ object({
55253
55287
  powerState: string().nullable(),
55254
55288
  saltLevel: DishwasherConsumableLevelSchema.nullable(),
55255
55289
  rinseAidLevel: DishwasherConsumableLevelSchema.nullable(),
55290
+ /**
55291
+ * True while the appliance asks for its filter to be cleaned (smart-filter, filter-system or
55292
+ * combined care-and-filter reminder raised); false when every such reminder reads clear; null
55293
+ * when none is reported. A cleared reminder is not an unknown one.
55294
+ */
55295
+ filterCleaningDue: boolean().nullable(),
55296
+ /** True while the machine-care (descaling / cleaning-program) reminder is raised; false when clear; null when not reported. */
55297
+ machineCareDue: boolean().nullable(),
55298
+ /** Program runs left before the machine-care reminder is due; null when the appliance does not say. */
55299
+ machineCareRemainingRuns: number().int().nonnegative().nullable(),
55256
55300
  /** Option states: null when the appliance does not expose the option or has not said. */
55257
55301
  halfLoad: boolean().nullable(),
55258
55302
  hygienePlus: boolean().nullable(),
@@ -61870,16 +61914,6 @@ var UpdateUserInputSchema = object({
61870
61914
  allowedDevices: record(string(), union([array(string()), literal("*")])).optional(),
61871
61915
  scopes: array(TokenScopeSchema).optional()
61872
61916
  });
61873
- var ApiKeySummarySchema = object({
61874
- id: string(),
61875
- label: string(),
61876
- isAdmin: boolean().default(false),
61877
- allowedProviders: union([array(string()), literal("*")]).optional(),
61878
- allowedDevices: record(string(), union([array(string()), literal("*")])).optional(),
61879
- tokenPrefix: string(),
61880
- createdAt: number(),
61881
- lastUsedAt: number().optional()
61882
- });
61883
61917
  var OauthSessionSummarySchema = object({
61884
61918
  id: string(),
61885
61919
  userId: string(),
@@ -61901,8 +61935,7 @@ var TotpStatusSchema = object({
61901
61935
  confirmedAt: number().nullable()
61902
61936
  });
61903
61937
  /**
61904
- * user-management — singleton capability for user accounts and the
61905
- * legacy API-key rows.
61938
+ * user-management — singleton capability for user accounts.
61906
61939
  *
61907
61940
  * v2 model: every method gated by `auth: 'admin'`. Admin-only delegation
61908
61941
  * — the subset check on `setUserScopes` is moot
@@ -61958,10 +61991,6 @@ method(_void(), array(UserSummarySchema), { auth: "admin" }), method(CreateUserI
61958
61991
  }), UserSummarySchema.extend({ passwordHash: string() }).nullable(), {
61959
61992
  kind: "mutation",
61960
61993
  access: "view"
61961
- }), method(_void(), array(ApiKeySummarySchema), { auth: "admin" }), method(object({ id: string() }), object({ success: literal(true) }), {
61962
- kind: "mutation",
61963
- auth: "admin",
61964
- access: "delete"
61965
61994
  }), method(object({ userId: string() }), TotpSetupResultSchema, {
61966
61995
  kind: "mutation",
61967
61996
  auth: "admin",
@@ -69474,6 +69503,12 @@ Object.freeze({
69474
69503
  addonId: null,
69475
69504
  access: "view"
69476
69505
  },
69506
+ "records.transact": {
69507
+ capName: "records",
69508
+ capScope: "system",
69509
+ addonId: null,
69510
+ access: "create"
69511
+ },
69477
69512
  "sceneMonitor.captureReference": {
69478
69513
  capName: "scene-monitor",
69479
69514
  capScope: "device",
@@ -70806,12 +70841,6 @@ Object.freeze({
70806
70841
  addonId: null,
70807
70842
  access: "view"
70808
70843
  },
70809
- "userManagement.listApiKeys": {
70810
- capName: "user-management",
70811
- capScope: "system",
70812
- addonId: null,
70813
- access: "view"
70814
- },
70815
70844
  "userManagement.listExternalIdentities": {
70816
70845
  capName: "user-management",
70817
70846
  capScope: "system",
@@ -70866,12 +70895,6 @@ Object.freeze({
70866
70895
  addonId: null,
70867
70896
  access: "create"
70868
70897
  },
70869
- "userManagement.revokeApiKey": {
70870
- capName: "user-management",
70871
- capScope: "system",
70872
- addonId: null,
70873
- access: "delete"
70874
- },
70875
70898
  "userManagement.revokeOauthSession": {
70876
70899
  capName: "user-management",
70877
70900
  capScope: "system",
@@ -74236,9 +74259,13 @@ new Map(Object.entries({
74236
74259
  "stream-online": "device-events",
74237
74260
  "stream-offline": "device-events",
74238
74261
  "detection-blind": "device-events",
74262
+ "motion-noisy": "device-events",
74263
+ "motion-calm": "device-events",
74239
74264
  "recording-stalled": "device-events",
74240
74265
  "recording-healthy": "device-events",
74241
74266
  "recording-degraded": "device-events",
74267
+ "device-attention-required": "device-events",
74268
+ "device-attention-resolved": "device-events",
74242
74269
  "node-online": "system",
74243
74270
  "node-offline": "system",
74244
74271
  "node-restarting": "system",
@@ -74255,6 +74282,8 @@ new Map(Object.entries({
74255
74282
  "alert-critical": "system",
74256
74283
  "alert-error": "system",
74257
74284
  "alert-critical-resolved": "system",
74285
+ "rule-broken": "system",
74286
+ "rule-repaired": "system",
74258
74287
  "storage-location-low": "system",
74259
74288
  "storage-location-critical": "system",
74260
74289
  "storage-location-ok": "system",
@@ -74319,6 +74348,12 @@ var NC_SYSTEM_EVENT_KIND_GROUP_SPECS = [
74319
74348
  label: "Detecting nothing",
74320
74349
  kinds: ["detection-blind"]
74321
74350
  },
74351
+ {
74352
+ id: "motion-noise",
74353
+ family: "device-events",
74354
+ label: "Motion without a subject",
74355
+ kinds: ["motion-noisy", "motion-calm"]
74356
+ },
74322
74357
  {
74323
74358
  id: "recording",
74324
74359
  family: "device-events",
@@ -74329,6 +74364,12 @@ var NC_SYSTEM_EVENT_KIND_GROUP_SPECS = [
74329
74364
  "recording-degraded"
74330
74365
  ]
74331
74366
  },
74367
+ {
74368
+ id: "device-attention",
74369
+ family: "device-events",
74370
+ label: "Needs attention",
74371
+ kinds: ["device-attention-required", "device-attention-resolved"]
74372
+ },
74332
74373
  {
74333
74374
  id: "nodes",
74334
74375
  family: "system",
@@ -74389,6 +74430,12 @@ var NC_SYSTEM_EVENT_KIND_GROUP_SPECS = [
74389
74430
  "alert-critical-resolved"
74390
74431
  ]
74391
74432
  },
74433
+ {
74434
+ id: "rule-health",
74435
+ family: "system",
74436
+ label: "Notification rules",
74437
+ kinds: ["rule-broken", "rule-repaired"]
74438
+ },
74392
74439
  {
74393
74440
  id: "alarm",
74394
74441
  family: "alarm",
@@ -74462,6 +74509,7 @@ var ALERT_EPISODE = [
74462
74509
  "alert-error",
74463
74510
  "alert-critical-resolved"
74464
74511
  ];
74512
+ var DEVICE_ATTENTION = ["device-attention-required", "device-attention-resolved"];
74465
74513
  var UPDATES = [
74466
74514
  "addon-update-available",
74467
74515
  "server-update-available",
@@ -74491,9 +74539,12 @@ var DEVICE_EVENTS = [
74491
74539
  "stream-online",
74492
74540
  "stream-offline",
74493
74541
  "detection-blind",
74542
+ "motion-noisy",
74543
+ "motion-calm",
74494
74544
  "recording-stalled",
74495
74545
  "recording-healthy",
74496
74546
  "recording-degraded",
74547
+ ...DEVICE_ATTENTION,
74497
74548
  ...ALARM
74498
74549
  ];
74499
74550
  /** Every kind a summary may speak about — the two summarisable families. */
@@ -74661,7 +74712,13 @@ var STATE_SUMMARY_VARS = [
74661
74712
  [...RULE_TEXT],
74662
74713
  [...RULE_TEXT],
74663
74714
  [...RULE_TEXT],
74664
- ([...RULE_TEXT], [...ALERT_EPISODE]),
74715
+ [...RULE_TEXT],
74716
+ [...RULE_TEXT],
74717
+ ([...RULE_TEXT], [...DEVICE_ATTENTION, ...ALERT_EPISODE]),
74718
+ [...RULE_TEXT],
74719
+ [...RULE_TEXT],
74720
+ [...RULE_TEXT],
74721
+ [...RULE_TEXT],
74665
74722
  [...RULE_TEXT],
74666
74723
  [...RULE_TEXT],
74667
74724
  [...RULE_TEXT],
@@ -74679,11 +74736,11 @@ var STATE_SUMMARY_VARS = [
74679
74736
  [...RULE_TEXT],
74680
74737
  [...RULE_TEXT],
74681
74738
  [...RULE_TEXT],
74739
+ ([...RULE_TEXT], [...DEVICE_ATTENTION, ...ALERT_EPISODE]),
74682
74740
  ([...RULE_TEXT], [...ALERT_EPISODE]),
74741
+ ([...RULE_TEXT], [...DEVICE_ATTENTION, ...ALERT_EPISODE]),
74683
74742
  ([...RULE_TEXT], [...ALERT_EPISODE]),
74684
- ([...RULE_TEXT], [...ALERT_EPISODE]),
74685
- ([...RULE_TEXT], [...ALERT_EPISODE]),
74686
- ([...RULE_TEXT], [...ALERT_EPISODE]),
74743
+ ([...RULE_TEXT], [...DEVICE_ATTENTION, ...ALERT_EPISODE]),
74687
74744
  [...RULE_TEXT],
74688
74745
  [...RULE_TEXT],
74689
74746
  [...RULE_TEXT],
@@ -74704,6 +74761,125 @@ var STATE_SUMMARY_VARS = [
74704
74761
  [...RULE_TEXT],
74705
74762
  ...STATE_SUMMARY_VARS
74706
74763
  ];
74764
+ new Map([
74765
+ {
74766
+ id: "device-connectivity",
74767
+ family: "device-events",
74768
+ label: "Device connectivity (offline / back online)",
74769
+ bad: ["device-offline"],
74770
+ recovery: ["device-online"],
74771
+ snapshotLabel: "Devices offline now",
74772
+ snapshotSection: "device-state"
74773
+ },
74774
+ {
74775
+ id: "device-switch",
74776
+ family: "device-events",
74777
+ label: "Device switched off / back on",
74778
+ bad: ["device-disabled"],
74779
+ recovery: ["device-enabled"],
74780
+ snapshotLabel: "Devices switched off now",
74781
+ snapshotSection: "device-state"
74782
+ },
74783
+ {
74784
+ id: "stream-connectivity",
74785
+ family: "device-events",
74786
+ label: "Stream connectivity (offline / back online)",
74787
+ bad: ["stream-offline"],
74788
+ recovery: ["stream-online"],
74789
+ snapshotLabel: "Streams offline now",
74790
+ snapshotSection: "streams"
74791
+ },
74792
+ {
74793
+ id: "battery",
74794
+ family: "device-events",
74795
+ label: "Battery (low / back to normal)",
74796
+ bad: ["device-battery-low"],
74797
+ recovery: ["device-battery-normal"],
74798
+ snapshotLabel: "Batteries low now",
74799
+ snapshotSection: "battery"
74800
+ },
74801
+ {
74802
+ id: "consumables",
74803
+ family: "device-events",
74804
+ label: "Consumables (low / replaced)",
74805
+ bad: ["device-consumable-low"],
74806
+ recovery: ["device-consumable-normal"],
74807
+ snapshotLabel: "Consumables low now",
74808
+ snapshotSection: "consumables"
74809
+ },
74810
+ {
74811
+ id: "tanks",
74812
+ family: "device-events",
74813
+ label: "Tanks (low or full / back to normal)",
74814
+ bad: ["device-tank-low", "device-tank-full"],
74815
+ recovery: ["device-tank-normal"],
74816
+ snapshotLabel: "Tanks low or full now",
74817
+ snapshotSection: "tanks"
74818
+ },
74819
+ {
74820
+ id: "motion-noise",
74821
+ family: "device-events",
74822
+ label: "Motion without a subject (constant / calm again)",
74823
+ bad: ["motion-noisy"],
74824
+ recovery: ["motion-calm"],
74825
+ snapshotLabel: "Cameras with constant motion now",
74826
+ snapshotSection: null
74827
+ },
74828
+ {
74829
+ id: "recording-health",
74830
+ family: "device-events",
74831
+ label: "Recording health (stalled or degraded / recording again)",
74832
+ bad: ["recording-stalled", "recording-degraded"],
74833
+ recovery: ["recording-healthy"],
74834
+ snapshotLabel: "Recordings stalled now",
74835
+ snapshotSection: null
74836
+ },
74837
+ {
74838
+ id: "device-attention",
74839
+ family: "device-events",
74840
+ label: "Device needs attention (raised / resolved)",
74841
+ bad: ["device-attention-required"],
74842
+ recovery: ["device-attention-resolved"],
74843
+ snapshotLabel: "Devices needing attention now",
74844
+ snapshotSection: null
74845
+ },
74846
+ {
74847
+ id: "node-connectivity",
74848
+ family: "system",
74849
+ label: "Node connectivity (offline / back online)",
74850
+ bad: ["node-offline"],
74851
+ recovery: ["node-online"],
74852
+ snapshotLabel: "Nodes offline now",
74853
+ snapshotSection: "nodes"
74854
+ },
74855
+ {
74856
+ id: "storage-space",
74857
+ family: "system",
74858
+ label: "Storage space (low or critical / ok again)",
74859
+ bad: ["storage-location-low", "storage-location-critical"],
74860
+ recovery: ["storage-location-ok"],
74861
+ snapshotLabel: "Storage locations low now",
74862
+ snapshotSection: null
74863
+ },
74864
+ {
74865
+ id: "critical-alerts",
74866
+ family: "system",
74867
+ label: "Critical alerts (raised / resolved)",
74868
+ bad: ["alert-critical"],
74869
+ recovery: ["alert-critical-resolved"],
74870
+ snapshotLabel: "Critical alerts open now",
74871
+ snapshotSection: null
74872
+ },
74873
+ {
74874
+ id: "rule-health",
74875
+ family: "system",
74876
+ label: "Rule health (broken / repaired)",
74877
+ bad: ["rule-broken"],
74878
+ recovery: ["rule-repaired"],
74879
+ snapshotLabel: "Notification rules broken now",
74880
+ snapshotSection: null
74881
+ }
74882
+ ].flatMap((spec) => [...spec.bad, ...spec.recovery].map((kind) => [kind, spec])));
74707
74883
  new Set([
74708
74884
  "disarmed",
74709
74885
  "armed_home",