@camstack/addon-provider-rademacher 0.2.140 → 0.2.142

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.
package/dist/addon.js CHANGED
@@ -984,7 +984,7 @@ var Rademacher = class {
984
984
  }
985
985
  };
986
986
  //#endregion
987
- //#region ../types/dist/event-category-DOl51-Ij.mjs
987
+ //#region ../types/dist/event-category-BfJwUd2S.mjs
988
988
  var EventCategory = /* @__PURE__ */ function(EventCategory) {
989
989
  EventCategory["SystemBoot"] = "system.boot";
990
990
  EventCategory["SystemAddonsReady"] = "system.addons-ready";
@@ -1301,6 +1301,15 @@ var EventCategory = /* @__PURE__ */ function(EventCategory) {
1301
1301
  */
1302
1302
  EventCategory["PipelineDetectionBlind"] = "pipeline.detection-blind";
1303
1303
  /**
1304
+ * A camera's motion source has fired constantly with no subject for an hour
1305
+ * (motion duty or session count over the bar, zero detections) — it is not
1306
+ * blind, its motion zones or sensitivity want tuning (D907). Paired with
1307
+ * {@link PipelineMotionCalm}.
1308
+ */
1309
+ EventCategory["PipelineMotionNoisy"] = "pipeline.motion-noisy";
1310
+ /** The recovery edge of {@link PipelineMotionNoisy}: the motion fell back, or a detection arrived. */
1311
+ EventCategory["PipelineMotionCalm"] = "pipeline.motion-calm";
1312
+ /**
1304
1313
  * Per-camera pipeline config was mutated by the orchestrator
1305
1314
  * (3-level settings change via `setAgentAddonDefaults` /
1306
1315
  * `setCameraStepToggle` / `setCameraPipelineForAgent` or a
@@ -1672,6 +1681,14 @@ var EventCategory = /* @__PURE__ */ function(EventCategory) {
1672
1681
  EventCategory["BackupRestored"] = "backup.restored";
1673
1682
  EventCategory["NotificationDispatched"] = "notification.dispatched";
1674
1683
  EventCategory["NotificationFailed"] = "notification.failed";
1684
+ /**
1685
+ * A notification rule that cannot work (D905): its stored row does not load,
1686
+ * or it still names a device / delivery target the prune CONFIRMED deleted.
1687
+ * One edge per rule per distinct set of reasons; never on an unanswered read.
1688
+ */
1689
+ EventCategory["NotificationRuleBroken"] = "notification.rule-broken";
1690
+ /** The clear of {@link NotificationRuleBroken}: the rule loads and names nothing deleted. */
1691
+ EventCategory["NotificationRuleRepaired"] = "notification.rule-repaired";
1675
1692
  EventCategory["DeviceUpdated"] = "device.updated";
1676
1693
  /**
1677
1694
  * Transport-level connectivity. Emitted by the device driver when
@@ -6399,7 +6416,7 @@ var ZodIssueCode = {
6399
6416
  var ZodFirstPartyTypeKind;
6400
6417
  ZodFirstPartyTypeKind || (ZodFirstPartyTypeKind = {});
6401
6418
  //#endregion
6402
- //#region ../types/dist/sleep-_sV1BE2f.mjs
6419
+ //#region ../types/dist/sleep-DJFUfKvA.mjs
6403
6420
  /**
6404
6421
  * The audio chunk plane's byte format, and the ONE expansion from a coded
6405
6422
  * window to float samples (D455).
@@ -8928,7 +8945,7 @@ var EntryDescriptorSchema = object({
8928
8945
  /** JSON Schema of the entry body; `secret: true` marks a password field. */
8929
8946
  fields: record(string(), unknown())
8930
8947
  }).strict();
8931
- /** What crosses the wire and sits in the engine's catalog: JSON only, no Zod. */
8948
+ /** What crosses the wire from an addon: JSON only, no Zod. An unknown key is refused. */
8932
8949
  var RecordKindDeclarationSchema = object({
8933
8950
  database: _enum(RECORD_DATABASES).default("settings"),
8934
8951
  class: _enum(RECORD_CLASSES),
@@ -8947,14 +8964,6 @@ var RecordKindDeclarationSchema = object({
8947
8964
  secretPaths: array(string().min(1)).default([]),
8948
8965
  /** The id key of each array that carries a secret (`{ headers: 'name' }`). */
8949
8966
  secretArrayKeys: record(string(), string()).default({}),
8950
- /**
8951
- * RETIRED (D900): the legacy table a kind adopted from during the records
8952
- * migration. Nothing declares it any more and nothing reads it; the schema
8953
- * still ACCEPTS it because the catalog rows the migration wrote carry it
8954
- * (an orphaned kind is never redeclared) and an addon built before the
8955
- * removal still sends it. Never set it.
8956
- */
8957
- adoptsFrom: string().min(1).optional(),
8958
8967
  /** Kinds that must agree through `transact` sit in one file under one family name. */
8959
8968
  transactFamily: string().min(1).optional(),
8960
8969
  entry: EntryDescriptorSchema.optional()
@@ -13632,17 +13641,6 @@ object({
13632
13641
  createdAt: number(),
13633
13642
  updatedAt: number()
13634
13643
  });
13635
- object({
13636
- id: string(),
13637
- label: string(),
13638
- isAdmin: boolean().default(false),
13639
- allowedProviders: AllowedProviderSchema,
13640
- allowedDevices: AllowedDevicesSchema,
13641
- tokenHash: string(),
13642
- tokenPrefix: string(),
13643
- createdAt: number(),
13644
- lastUsedAt: number().optional()
13645
- });
13646
13644
  object({
13647
13645
  id: string(),
13648
13646
  userId: string(),
@@ -17624,16 +17622,36 @@ var RecordKindStateSchema = _enum([
17624
17622
  var DeclareKindResultSchema = object({
17625
17623
  kindId: number().int(),
17626
17624
  state: RecordKindStateSchema,
17627
- createdIndexes: array(string()),
17628
- /**
17629
- * RETIRED (D900): always `null`. It carried the records-migration boot guard;
17630
- * it stays on the wire, null, because an addon built before the removal reads
17631
- * an ABSENT field as "adoption pending" and refuses to start.
17632
- */
17633
- adoptionPending: _null()
17625
+ createdIndexes: array(string())
17634
17626
  });
17635
17627
  /** Keychain refs a write released (the old marker is gone from the row): the owner deletes the values. */
17636
17628
  var SecretRefsList = array(string());
17629
+ /**
17630
+ * One op of a `transact`: the single-row writes, each on a kind of the caller.
17631
+ * All ops of one call share ONE database file and ONE `transactFamily`.
17632
+ */
17633
+ var RecordTransactOpSchema = discriminatedUnion("op", [
17634
+ object({
17635
+ op: literal("put"),
17636
+ kind: RecordKindNameSchema,
17637
+ record: RecordInputSchema,
17638
+ ifRev: number().int().min(0).optional()
17639
+ }),
17640
+ object({
17641
+ op: literal("patch"),
17642
+ kind: RecordKindNameSchema,
17643
+ id: RecordIdSchema,
17644
+ data: RecordBodySchema,
17645
+ at: number().int().nullable().optional(),
17646
+ expiresAt: number().int().nullable().optional(),
17647
+ ifRev: number().int().min(1).optional()
17648
+ }),
17649
+ object({
17650
+ op: literal("delete"),
17651
+ kind: RecordKindNameSchema,
17652
+ id: RecordIdSchema
17653
+ })
17654
+ ]);
17637
17655
  var RecordSecretRefsSchema = record(string(), record(string(), string()));
17638
17656
  method(object({ kinds: record(RecordKindNameSchema, RecordKindDeclarationSchema) }), object({ kinds: record(string(), DeclareKindResultSchema) }), {
17639
17657
  kind: "mutation",
@@ -17740,6 +17758,16 @@ method(object({ kinds: record(RecordKindNameSchema, RecordKindDeclarationSchema)
17740
17758
  }), {
17741
17759
  kind: "mutation",
17742
17760
  auth: "admin"
17761
+ }), method(object({ ops: array(RecordTransactOpSchema).min(1).max(RECORD_BATCH_MAX) }), object({
17762
+ results: array(object({
17763
+ rev: number().int().nullable(),
17764
+ deleted: boolean()
17765
+ })),
17766
+ releasedRefs: SecretRefsList,
17767
+ secretRefs: SecretRefsList
17768
+ }), {
17769
+ kind: "mutation",
17770
+ auth: "admin"
17743
17771
  }), method(object({
17744
17772
  deviceId: number().int(),
17745
17773
  kinds: array(RecordKindNameSchema).optional()
@@ -43447,9 +43475,13 @@ var NcSystemEventKindSchema = _enum([
43447
43475
  "node-updating",
43448
43476
  "node-inference-unavailable",
43449
43477
  "detection-blind",
43478
+ "motion-noisy",
43479
+ "motion-calm",
43450
43480
  "recording-stalled",
43451
43481
  "recording-healthy",
43452
43482
  "recording-degraded",
43483
+ "device-attention-required",
43484
+ "device-attention-resolved",
43453
43485
  "storage-location-low",
43454
43486
  "storage-location-critical",
43455
43487
  "storage-location-ok",
@@ -43473,6 +43505,8 @@ var NcSystemEventKindSchema = _enum([
43473
43505
  "alert-critical",
43474
43506
  "alert-error",
43475
43507
  "alert-critical-resolved",
43508
+ "rule-broken",
43509
+ "rule-repaired",
43476
43510
  "camera-online",
43477
43511
  "camera-offline",
43478
43512
  "camera-disabled",
@@ -56771,6 +56805,16 @@ var DishwasherStatusSchema = object({
56771
56805
  powerState: string().nullable(),
56772
56806
  saltLevel: DishwasherConsumableLevelSchema.nullable(),
56773
56807
  rinseAidLevel: DishwasherConsumableLevelSchema.nullable(),
56808
+ /**
56809
+ * True while the appliance asks for its filter to be cleaned (smart-filter, filter-system or
56810
+ * combined care-and-filter reminder raised); false when every such reminder reads clear; null
56811
+ * when none is reported. A cleared reminder is not an unknown one.
56812
+ */
56813
+ filterCleaningDue: boolean().nullable(),
56814
+ /** True while the machine-care (descaling / cleaning-program) reminder is raised; false when clear; null when not reported. */
56815
+ machineCareDue: boolean().nullable(),
56816
+ /** Program runs left before the machine-care reminder is due; null when the appliance does not say. */
56817
+ machineCareRemainingRuns: number().int().nonnegative().nullable(),
56774
56818
  /** Option states: null when the appliance does not expose the option or has not said. */
56775
56819
  halfLoad: boolean().nullable(),
56776
56820
  hygienePlus: boolean().nullable(),
@@ -65421,16 +65465,6 @@ var UpdateUserInputSchema = object({
65421
65465
  allowedDevices: record(string(), union([array(string()), literal("*")])).optional(),
65422
65466
  scopes: array(TokenScopeSchema).optional()
65423
65467
  });
65424
- var ApiKeySummarySchema = object({
65425
- id: string(),
65426
- label: string(),
65427
- isAdmin: boolean().default(false),
65428
- allowedProviders: union([array(string()), literal("*")]).optional(),
65429
- allowedDevices: record(string(), union([array(string()), literal("*")])).optional(),
65430
- tokenPrefix: string(),
65431
- createdAt: number(),
65432
- lastUsedAt: number().optional()
65433
- });
65434
65468
  var OauthSessionSummarySchema = object({
65435
65469
  id: string(),
65436
65470
  userId: string(),
@@ -65452,8 +65486,7 @@ var TotpStatusSchema = object({
65452
65486
  confirmedAt: number().nullable()
65453
65487
  });
65454
65488
  /**
65455
- * user-management — singleton capability for user accounts and the
65456
- * legacy API-key rows.
65489
+ * user-management — singleton capability for user accounts.
65457
65490
  *
65458
65491
  * v2 model: every method gated by `auth: 'admin'`. Admin-only delegation
65459
65492
  * — the subset check on `setUserScopes` is moot
@@ -65509,10 +65542,6 @@ method(_void(), array(UserSummarySchema), { auth: "admin" }), method(CreateUserI
65509
65542
  }), UserSummarySchema.extend({ passwordHash: string() }).nullable(), {
65510
65543
  kind: "mutation",
65511
65544
  access: "view"
65512
- }), method(_void(), array(ApiKeySummarySchema), { auth: "admin" }), method(object({ id: string() }), object({ success: literal(true) }), {
65513
- kind: "mutation",
65514
- auth: "admin",
65515
- access: "delete"
65516
65545
  }), method(object({ userId: string() }), TotpSetupResultSchema, {
65517
65546
  kind: "mutation",
65518
65547
  auth: "admin",
@@ -74968,6 +74997,12 @@ Object.freeze({
74968
74997
  addonId: null,
74969
74998
  access: "view"
74970
74999
  },
75000
+ "records.transact": {
75001
+ capName: "records",
75002
+ capScope: "system",
75003
+ addonId: null,
75004
+ access: "create"
75005
+ },
74971
75006
  "sceneMonitor.captureReference": {
74972
75007
  capName: "scene-monitor",
74973
75008
  capScope: "device",
@@ -76300,12 +76335,6 @@ Object.freeze({
76300
76335
  addonId: null,
76301
76336
  access: "view"
76302
76337
  },
76303
- "userManagement.listApiKeys": {
76304
- capName: "user-management",
76305
- capScope: "system",
76306
- addonId: null,
76307
- access: "view"
76308
- },
76309
76338
  "userManagement.listExternalIdentities": {
76310
76339
  capName: "user-management",
76311
76340
  capScope: "system",
@@ -76360,12 +76389,6 @@ Object.freeze({
76360
76389
  addonId: null,
76361
76390
  access: "create"
76362
76391
  },
76363
- "userManagement.revokeApiKey": {
76364
- capName: "user-management",
76365
- capScope: "system",
76366
- addonId: null,
76367
- access: "delete"
76368
- },
76369
76392
  "userManagement.revokeOauthSession": {
76370
76393
  capName: "user-management",
76371
76394
  capScope: "system",
@@ -79730,9 +79753,13 @@ new Map(Object.entries({
79730
79753
  "stream-online": "device-events",
79731
79754
  "stream-offline": "device-events",
79732
79755
  "detection-blind": "device-events",
79756
+ "motion-noisy": "device-events",
79757
+ "motion-calm": "device-events",
79733
79758
  "recording-stalled": "device-events",
79734
79759
  "recording-healthy": "device-events",
79735
79760
  "recording-degraded": "device-events",
79761
+ "device-attention-required": "device-events",
79762
+ "device-attention-resolved": "device-events",
79736
79763
  "node-online": "system",
79737
79764
  "node-offline": "system",
79738
79765
  "node-restarting": "system",
@@ -79749,6 +79776,8 @@ new Map(Object.entries({
79749
79776
  "alert-critical": "system",
79750
79777
  "alert-error": "system",
79751
79778
  "alert-critical-resolved": "system",
79779
+ "rule-broken": "system",
79780
+ "rule-repaired": "system",
79752
79781
  "storage-location-low": "system",
79753
79782
  "storage-location-critical": "system",
79754
79783
  "storage-location-ok": "system",
@@ -79813,6 +79842,12 @@ var NC_SYSTEM_EVENT_KIND_GROUP_SPECS = [
79813
79842
  label: "Detecting nothing",
79814
79843
  kinds: ["detection-blind"]
79815
79844
  },
79845
+ {
79846
+ id: "motion-noise",
79847
+ family: "device-events",
79848
+ label: "Motion without a subject",
79849
+ kinds: ["motion-noisy", "motion-calm"]
79850
+ },
79816
79851
  {
79817
79852
  id: "recording",
79818
79853
  family: "device-events",
@@ -79823,6 +79858,12 @@ var NC_SYSTEM_EVENT_KIND_GROUP_SPECS = [
79823
79858
  "recording-degraded"
79824
79859
  ]
79825
79860
  },
79861
+ {
79862
+ id: "device-attention",
79863
+ family: "device-events",
79864
+ label: "Needs attention",
79865
+ kinds: ["device-attention-required", "device-attention-resolved"]
79866
+ },
79826
79867
  {
79827
79868
  id: "nodes",
79828
79869
  family: "system",
@@ -79883,6 +79924,12 @@ var NC_SYSTEM_EVENT_KIND_GROUP_SPECS = [
79883
79924
  "alert-critical-resolved"
79884
79925
  ]
79885
79926
  },
79927
+ {
79928
+ id: "rule-health",
79929
+ family: "system",
79930
+ label: "Notification rules",
79931
+ kinds: ["rule-broken", "rule-repaired"]
79932
+ },
79886
79933
  {
79887
79934
  id: "alarm",
79888
79935
  family: "alarm",
@@ -79956,6 +80003,7 @@ var ALERT_EPISODE = [
79956
80003
  "alert-error",
79957
80004
  "alert-critical-resolved"
79958
80005
  ];
80006
+ var DEVICE_ATTENTION = ["device-attention-required", "device-attention-resolved"];
79959
80007
  var UPDATES = [
79960
80008
  "addon-update-available",
79961
80009
  "server-update-available",
@@ -79985,9 +80033,12 @@ var DEVICE_EVENTS = [
79985
80033
  "stream-online",
79986
80034
  "stream-offline",
79987
80035
  "detection-blind",
80036
+ "motion-noisy",
80037
+ "motion-calm",
79988
80038
  "recording-stalled",
79989
80039
  "recording-healthy",
79990
80040
  "recording-degraded",
80041
+ ...DEVICE_ATTENTION,
79991
80042
  ...ALARM
79992
80043
  ];
79993
80044
  /** Every kind a summary may speak about — the two summarisable families. */
@@ -80155,7 +80206,13 @@ var STATE_SUMMARY_VARS = [
80155
80206
  [...RULE_TEXT],
80156
80207
  [...RULE_TEXT],
80157
80208
  [...RULE_TEXT],
80158
- ([...RULE_TEXT], [...ALERT_EPISODE]),
80209
+ [...RULE_TEXT],
80210
+ [...RULE_TEXT],
80211
+ ([...RULE_TEXT], [...DEVICE_ATTENTION, ...ALERT_EPISODE]),
80212
+ [...RULE_TEXT],
80213
+ [...RULE_TEXT],
80214
+ [...RULE_TEXT],
80215
+ [...RULE_TEXT],
80159
80216
  [...RULE_TEXT],
80160
80217
  [...RULE_TEXT],
80161
80218
  [...RULE_TEXT],
@@ -80173,11 +80230,11 @@ var STATE_SUMMARY_VARS = [
80173
80230
  [...RULE_TEXT],
80174
80231
  [...RULE_TEXT],
80175
80232
  [...RULE_TEXT],
80233
+ ([...RULE_TEXT], [...DEVICE_ATTENTION, ...ALERT_EPISODE]),
80176
80234
  ([...RULE_TEXT], [...ALERT_EPISODE]),
80235
+ ([...RULE_TEXT], [...DEVICE_ATTENTION, ...ALERT_EPISODE]),
80177
80236
  ([...RULE_TEXT], [...ALERT_EPISODE]),
80178
- ([...RULE_TEXT], [...ALERT_EPISODE]),
80179
- ([...RULE_TEXT], [...ALERT_EPISODE]),
80180
- ([...RULE_TEXT], [...ALERT_EPISODE]),
80237
+ ([...RULE_TEXT], [...DEVICE_ATTENTION, ...ALERT_EPISODE]),
80181
80238
  [...RULE_TEXT],
80182
80239
  [...RULE_TEXT],
80183
80240
  [...RULE_TEXT],
@@ -80198,6 +80255,125 @@ var STATE_SUMMARY_VARS = [
80198
80255
  [...RULE_TEXT],
80199
80256
  ...STATE_SUMMARY_VARS
80200
80257
  ];
80258
+ new Map([
80259
+ {
80260
+ id: "device-connectivity",
80261
+ family: "device-events",
80262
+ label: "Device connectivity (offline / back online)",
80263
+ bad: ["device-offline"],
80264
+ recovery: ["device-online"],
80265
+ snapshotLabel: "Devices offline now",
80266
+ snapshotSection: "device-state"
80267
+ },
80268
+ {
80269
+ id: "device-switch",
80270
+ family: "device-events",
80271
+ label: "Device switched off / back on",
80272
+ bad: ["device-disabled"],
80273
+ recovery: ["device-enabled"],
80274
+ snapshotLabel: "Devices switched off now",
80275
+ snapshotSection: "device-state"
80276
+ },
80277
+ {
80278
+ id: "stream-connectivity",
80279
+ family: "device-events",
80280
+ label: "Stream connectivity (offline / back online)",
80281
+ bad: ["stream-offline"],
80282
+ recovery: ["stream-online"],
80283
+ snapshotLabel: "Streams offline now",
80284
+ snapshotSection: "streams"
80285
+ },
80286
+ {
80287
+ id: "battery",
80288
+ family: "device-events",
80289
+ label: "Battery (low / back to normal)",
80290
+ bad: ["device-battery-low"],
80291
+ recovery: ["device-battery-normal"],
80292
+ snapshotLabel: "Batteries low now",
80293
+ snapshotSection: "battery"
80294
+ },
80295
+ {
80296
+ id: "consumables",
80297
+ family: "device-events",
80298
+ label: "Consumables (low / replaced)",
80299
+ bad: ["device-consumable-low"],
80300
+ recovery: ["device-consumable-normal"],
80301
+ snapshotLabel: "Consumables low now",
80302
+ snapshotSection: "consumables"
80303
+ },
80304
+ {
80305
+ id: "tanks",
80306
+ family: "device-events",
80307
+ label: "Tanks (low or full / back to normal)",
80308
+ bad: ["device-tank-low", "device-tank-full"],
80309
+ recovery: ["device-tank-normal"],
80310
+ snapshotLabel: "Tanks low or full now",
80311
+ snapshotSection: "tanks"
80312
+ },
80313
+ {
80314
+ id: "motion-noise",
80315
+ family: "device-events",
80316
+ label: "Motion without a subject (constant / calm again)",
80317
+ bad: ["motion-noisy"],
80318
+ recovery: ["motion-calm"],
80319
+ snapshotLabel: "Cameras with constant motion now",
80320
+ snapshotSection: null
80321
+ },
80322
+ {
80323
+ id: "recording-health",
80324
+ family: "device-events",
80325
+ label: "Recording health (stalled or degraded / recording again)",
80326
+ bad: ["recording-stalled", "recording-degraded"],
80327
+ recovery: ["recording-healthy"],
80328
+ snapshotLabel: "Recordings stalled now",
80329
+ snapshotSection: null
80330
+ },
80331
+ {
80332
+ id: "device-attention",
80333
+ family: "device-events",
80334
+ label: "Device needs attention (raised / resolved)",
80335
+ bad: ["device-attention-required"],
80336
+ recovery: ["device-attention-resolved"],
80337
+ snapshotLabel: "Devices needing attention now",
80338
+ snapshotSection: null
80339
+ },
80340
+ {
80341
+ id: "node-connectivity",
80342
+ family: "system",
80343
+ label: "Node connectivity (offline / back online)",
80344
+ bad: ["node-offline"],
80345
+ recovery: ["node-online"],
80346
+ snapshotLabel: "Nodes offline now",
80347
+ snapshotSection: "nodes"
80348
+ },
80349
+ {
80350
+ id: "storage-space",
80351
+ family: "system",
80352
+ label: "Storage space (low or critical / ok again)",
80353
+ bad: ["storage-location-low", "storage-location-critical"],
80354
+ recovery: ["storage-location-ok"],
80355
+ snapshotLabel: "Storage locations low now",
80356
+ snapshotSection: null
80357
+ },
80358
+ {
80359
+ id: "critical-alerts",
80360
+ family: "system",
80361
+ label: "Critical alerts (raised / resolved)",
80362
+ bad: ["alert-critical"],
80363
+ recovery: ["alert-critical-resolved"],
80364
+ snapshotLabel: "Critical alerts open now",
80365
+ snapshotSection: null
80366
+ },
80367
+ {
80368
+ id: "rule-health",
80369
+ family: "system",
80370
+ label: "Rule health (broken / repaired)",
80371
+ bad: ["rule-broken"],
80372
+ recovery: ["rule-repaired"],
80373
+ snapshotLabel: "Notification rules broken now",
80374
+ snapshotSection: null
80375
+ }
80376
+ ].flatMap((spec) => [...spec.bad, ...spec.recovery].map((kind) => [kind, spec])));
80201
80377
  new Set([
80202
80378
  "disarmed",
80203
80379
  "armed_home",
@@ -80805,7 +80981,7 @@ function buildConnectionFormSchema() {
80805
80981
  id: "connection",
80806
80982
  title: "Connection",
80807
80983
  titleKey: "provider-rademacher:connection.s_connection.title",
80808
- description: "CamStack polls the HomePilot / Start2Smart hub over the local network. Leave the password blank for an unprotected hub. The API base path is auto-probed unless you override it.",
80984
+ description: "Leave the password blank for an unprotected hub.",
80809
80985
  descriptionKey: "provider-rademacher:connection.s_connection.description",
80810
80986
  columns: 2,
80811
80987
  fields: [
package/dist/addon.mjs CHANGED
@@ -983,7 +983,7 @@ var Rademacher = class {
983
983
  }
984
984
  };
985
985
  //#endregion
986
- //#region ../types/dist/event-category-DOl51-Ij.mjs
986
+ //#region ../types/dist/event-category-BfJwUd2S.mjs
987
987
  var EventCategory = /* @__PURE__ */ function(EventCategory) {
988
988
  EventCategory["SystemBoot"] = "system.boot";
989
989
  EventCategory["SystemAddonsReady"] = "system.addons-ready";
@@ -1300,6 +1300,15 @@ var EventCategory = /* @__PURE__ */ function(EventCategory) {
1300
1300
  */
1301
1301
  EventCategory["PipelineDetectionBlind"] = "pipeline.detection-blind";
1302
1302
  /**
1303
+ * A camera's motion source has fired constantly with no subject for an hour
1304
+ * (motion duty or session count over the bar, zero detections) — it is not
1305
+ * blind, its motion zones or sensitivity want tuning (D907). Paired with
1306
+ * {@link PipelineMotionCalm}.
1307
+ */
1308
+ EventCategory["PipelineMotionNoisy"] = "pipeline.motion-noisy";
1309
+ /** The recovery edge of {@link PipelineMotionNoisy}: the motion fell back, or a detection arrived. */
1310
+ EventCategory["PipelineMotionCalm"] = "pipeline.motion-calm";
1311
+ /**
1303
1312
  * Per-camera pipeline config was mutated by the orchestrator
1304
1313
  * (3-level settings change via `setAgentAddonDefaults` /
1305
1314
  * `setCameraStepToggle` / `setCameraPipelineForAgent` or a
@@ -1671,6 +1680,14 @@ var EventCategory = /* @__PURE__ */ function(EventCategory) {
1671
1680
  EventCategory["BackupRestored"] = "backup.restored";
1672
1681
  EventCategory["NotificationDispatched"] = "notification.dispatched";
1673
1682
  EventCategory["NotificationFailed"] = "notification.failed";
1683
+ /**
1684
+ * A notification rule that cannot work (D905): its stored row does not load,
1685
+ * or it still names a device / delivery target the prune CONFIRMED deleted.
1686
+ * One edge per rule per distinct set of reasons; never on an unanswered read.
1687
+ */
1688
+ EventCategory["NotificationRuleBroken"] = "notification.rule-broken";
1689
+ /** The clear of {@link NotificationRuleBroken}: the rule loads and names nothing deleted. */
1690
+ EventCategory["NotificationRuleRepaired"] = "notification.rule-repaired";
1674
1691
  EventCategory["DeviceUpdated"] = "device.updated";
1675
1692
  /**
1676
1693
  * Transport-level connectivity. Emitted by the device driver when
@@ -6398,7 +6415,7 @@ var ZodIssueCode = {
6398
6415
  var ZodFirstPartyTypeKind;
6399
6416
  ZodFirstPartyTypeKind || (ZodFirstPartyTypeKind = {});
6400
6417
  //#endregion
6401
- //#region ../types/dist/sleep-_sV1BE2f.mjs
6418
+ //#region ../types/dist/sleep-DJFUfKvA.mjs
6402
6419
  /**
6403
6420
  * The audio chunk plane's byte format, and the ONE expansion from a coded
6404
6421
  * window to float samples (D455).
@@ -8927,7 +8944,7 @@ var EntryDescriptorSchema = object({
8927
8944
  /** JSON Schema of the entry body; `secret: true` marks a password field. */
8928
8945
  fields: record(string(), unknown())
8929
8946
  }).strict();
8930
- /** What crosses the wire and sits in the engine's catalog: JSON only, no Zod. */
8947
+ /** What crosses the wire from an addon: JSON only, no Zod. An unknown key is refused. */
8931
8948
  var RecordKindDeclarationSchema = object({
8932
8949
  database: _enum(RECORD_DATABASES).default("settings"),
8933
8950
  class: _enum(RECORD_CLASSES),
@@ -8946,14 +8963,6 @@ var RecordKindDeclarationSchema = object({
8946
8963
  secretPaths: array(string().min(1)).default([]),
8947
8964
  /** The id key of each array that carries a secret (`{ headers: 'name' }`). */
8948
8965
  secretArrayKeys: record(string(), string()).default({}),
8949
- /**
8950
- * RETIRED (D900): the legacy table a kind adopted from during the records
8951
- * migration. Nothing declares it any more and nothing reads it; the schema
8952
- * still ACCEPTS it because the catalog rows the migration wrote carry it
8953
- * (an orphaned kind is never redeclared) and an addon built before the
8954
- * removal still sends it. Never set it.
8955
- */
8956
- adoptsFrom: string().min(1).optional(),
8957
8966
  /** Kinds that must agree through `transact` sit in one file under one family name. */
8958
8967
  transactFamily: string().min(1).optional(),
8959
8968
  entry: EntryDescriptorSchema.optional()
@@ -13631,17 +13640,6 @@ object({
13631
13640
  createdAt: number(),
13632
13641
  updatedAt: number()
13633
13642
  });
13634
- object({
13635
- id: string(),
13636
- label: string(),
13637
- isAdmin: boolean().default(false),
13638
- allowedProviders: AllowedProviderSchema,
13639
- allowedDevices: AllowedDevicesSchema,
13640
- tokenHash: string(),
13641
- tokenPrefix: string(),
13642
- createdAt: number(),
13643
- lastUsedAt: number().optional()
13644
- });
13645
13643
  object({
13646
13644
  id: string(),
13647
13645
  userId: string(),
@@ -17623,16 +17621,36 @@ var RecordKindStateSchema = _enum([
17623
17621
  var DeclareKindResultSchema = object({
17624
17622
  kindId: number().int(),
17625
17623
  state: RecordKindStateSchema,
17626
- createdIndexes: array(string()),
17627
- /**
17628
- * RETIRED (D900): always `null`. It carried the records-migration boot guard;
17629
- * it stays on the wire, null, because an addon built before the removal reads
17630
- * an ABSENT field as "adoption pending" and refuses to start.
17631
- */
17632
- adoptionPending: _null()
17624
+ createdIndexes: array(string())
17633
17625
  });
17634
17626
  /** Keychain refs a write released (the old marker is gone from the row): the owner deletes the values. */
17635
17627
  var SecretRefsList = array(string());
17628
+ /**
17629
+ * One op of a `transact`: the single-row writes, each on a kind of the caller.
17630
+ * All ops of one call share ONE database file and ONE `transactFamily`.
17631
+ */
17632
+ var RecordTransactOpSchema = discriminatedUnion("op", [
17633
+ object({
17634
+ op: literal("put"),
17635
+ kind: RecordKindNameSchema,
17636
+ record: RecordInputSchema,
17637
+ ifRev: number().int().min(0).optional()
17638
+ }),
17639
+ object({
17640
+ op: literal("patch"),
17641
+ kind: RecordKindNameSchema,
17642
+ id: RecordIdSchema,
17643
+ data: RecordBodySchema,
17644
+ at: number().int().nullable().optional(),
17645
+ expiresAt: number().int().nullable().optional(),
17646
+ ifRev: number().int().min(1).optional()
17647
+ }),
17648
+ object({
17649
+ op: literal("delete"),
17650
+ kind: RecordKindNameSchema,
17651
+ id: RecordIdSchema
17652
+ })
17653
+ ]);
17636
17654
  var RecordSecretRefsSchema = record(string(), record(string(), string()));
17637
17655
  method(object({ kinds: record(RecordKindNameSchema, RecordKindDeclarationSchema) }), object({ kinds: record(string(), DeclareKindResultSchema) }), {
17638
17656
  kind: "mutation",
@@ -17739,6 +17757,16 @@ method(object({ kinds: record(RecordKindNameSchema, RecordKindDeclarationSchema)
17739
17757
  }), {
17740
17758
  kind: "mutation",
17741
17759
  auth: "admin"
17760
+ }), method(object({ ops: array(RecordTransactOpSchema).min(1).max(RECORD_BATCH_MAX) }), object({
17761
+ results: array(object({
17762
+ rev: number().int().nullable(),
17763
+ deleted: boolean()
17764
+ })),
17765
+ releasedRefs: SecretRefsList,
17766
+ secretRefs: SecretRefsList
17767
+ }), {
17768
+ kind: "mutation",
17769
+ auth: "admin"
17742
17770
  }), method(object({
17743
17771
  deviceId: number().int(),
17744
17772
  kinds: array(RecordKindNameSchema).optional()
@@ -43446,9 +43474,13 @@ var NcSystemEventKindSchema = _enum([
43446
43474
  "node-updating",
43447
43475
  "node-inference-unavailable",
43448
43476
  "detection-blind",
43477
+ "motion-noisy",
43478
+ "motion-calm",
43449
43479
  "recording-stalled",
43450
43480
  "recording-healthy",
43451
43481
  "recording-degraded",
43482
+ "device-attention-required",
43483
+ "device-attention-resolved",
43452
43484
  "storage-location-low",
43453
43485
  "storage-location-critical",
43454
43486
  "storage-location-ok",
@@ -43472,6 +43504,8 @@ var NcSystemEventKindSchema = _enum([
43472
43504
  "alert-critical",
43473
43505
  "alert-error",
43474
43506
  "alert-critical-resolved",
43507
+ "rule-broken",
43508
+ "rule-repaired",
43475
43509
  "camera-online",
43476
43510
  "camera-offline",
43477
43511
  "camera-disabled",
@@ -56770,6 +56804,16 @@ var DishwasherStatusSchema = object({
56770
56804
  powerState: string().nullable(),
56771
56805
  saltLevel: DishwasherConsumableLevelSchema.nullable(),
56772
56806
  rinseAidLevel: DishwasherConsumableLevelSchema.nullable(),
56807
+ /**
56808
+ * True while the appliance asks for its filter to be cleaned (smart-filter, filter-system or
56809
+ * combined care-and-filter reminder raised); false when every such reminder reads clear; null
56810
+ * when none is reported. A cleared reminder is not an unknown one.
56811
+ */
56812
+ filterCleaningDue: boolean().nullable(),
56813
+ /** True while the machine-care (descaling / cleaning-program) reminder is raised; false when clear; null when not reported. */
56814
+ machineCareDue: boolean().nullable(),
56815
+ /** Program runs left before the machine-care reminder is due; null when the appliance does not say. */
56816
+ machineCareRemainingRuns: number().int().nonnegative().nullable(),
56773
56817
  /** Option states: null when the appliance does not expose the option or has not said. */
56774
56818
  halfLoad: boolean().nullable(),
56775
56819
  hygienePlus: boolean().nullable(),
@@ -65420,16 +65464,6 @@ var UpdateUserInputSchema = object({
65420
65464
  allowedDevices: record(string(), union([array(string()), literal("*")])).optional(),
65421
65465
  scopes: array(TokenScopeSchema).optional()
65422
65466
  });
65423
- var ApiKeySummarySchema = object({
65424
- id: string(),
65425
- label: string(),
65426
- isAdmin: boolean().default(false),
65427
- allowedProviders: union([array(string()), literal("*")]).optional(),
65428
- allowedDevices: record(string(), union([array(string()), literal("*")])).optional(),
65429
- tokenPrefix: string(),
65430
- createdAt: number(),
65431
- lastUsedAt: number().optional()
65432
- });
65433
65467
  var OauthSessionSummarySchema = object({
65434
65468
  id: string(),
65435
65469
  userId: string(),
@@ -65451,8 +65485,7 @@ var TotpStatusSchema = object({
65451
65485
  confirmedAt: number().nullable()
65452
65486
  });
65453
65487
  /**
65454
- * user-management — singleton capability for user accounts and the
65455
- * legacy API-key rows.
65488
+ * user-management — singleton capability for user accounts.
65456
65489
  *
65457
65490
  * v2 model: every method gated by `auth: 'admin'`. Admin-only delegation
65458
65491
  * — the subset check on `setUserScopes` is moot
@@ -65508,10 +65541,6 @@ method(_void(), array(UserSummarySchema), { auth: "admin" }), method(CreateUserI
65508
65541
  }), UserSummarySchema.extend({ passwordHash: string() }).nullable(), {
65509
65542
  kind: "mutation",
65510
65543
  access: "view"
65511
- }), method(_void(), array(ApiKeySummarySchema), { auth: "admin" }), method(object({ id: string() }), object({ success: literal(true) }), {
65512
- kind: "mutation",
65513
- auth: "admin",
65514
- access: "delete"
65515
65544
  }), method(object({ userId: string() }), TotpSetupResultSchema, {
65516
65545
  kind: "mutation",
65517
65546
  auth: "admin",
@@ -74967,6 +74996,12 @@ Object.freeze({
74967
74996
  addonId: null,
74968
74997
  access: "view"
74969
74998
  },
74999
+ "records.transact": {
75000
+ capName: "records",
75001
+ capScope: "system",
75002
+ addonId: null,
75003
+ access: "create"
75004
+ },
74970
75005
  "sceneMonitor.captureReference": {
74971
75006
  capName: "scene-monitor",
74972
75007
  capScope: "device",
@@ -76299,12 +76334,6 @@ Object.freeze({
76299
76334
  addonId: null,
76300
76335
  access: "view"
76301
76336
  },
76302
- "userManagement.listApiKeys": {
76303
- capName: "user-management",
76304
- capScope: "system",
76305
- addonId: null,
76306
- access: "view"
76307
- },
76308
76337
  "userManagement.listExternalIdentities": {
76309
76338
  capName: "user-management",
76310
76339
  capScope: "system",
@@ -76359,12 +76388,6 @@ Object.freeze({
76359
76388
  addonId: null,
76360
76389
  access: "create"
76361
76390
  },
76362
- "userManagement.revokeApiKey": {
76363
- capName: "user-management",
76364
- capScope: "system",
76365
- addonId: null,
76366
- access: "delete"
76367
- },
76368
76391
  "userManagement.revokeOauthSession": {
76369
76392
  capName: "user-management",
76370
76393
  capScope: "system",
@@ -79729,9 +79752,13 @@ new Map(Object.entries({
79729
79752
  "stream-online": "device-events",
79730
79753
  "stream-offline": "device-events",
79731
79754
  "detection-blind": "device-events",
79755
+ "motion-noisy": "device-events",
79756
+ "motion-calm": "device-events",
79732
79757
  "recording-stalled": "device-events",
79733
79758
  "recording-healthy": "device-events",
79734
79759
  "recording-degraded": "device-events",
79760
+ "device-attention-required": "device-events",
79761
+ "device-attention-resolved": "device-events",
79735
79762
  "node-online": "system",
79736
79763
  "node-offline": "system",
79737
79764
  "node-restarting": "system",
@@ -79748,6 +79775,8 @@ new Map(Object.entries({
79748
79775
  "alert-critical": "system",
79749
79776
  "alert-error": "system",
79750
79777
  "alert-critical-resolved": "system",
79778
+ "rule-broken": "system",
79779
+ "rule-repaired": "system",
79751
79780
  "storage-location-low": "system",
79752
79781
  "storage-location-critical": "system",
79753
79782
  "storage-location-ok": "system",
@@ -79812,6 +79841,12 @@ var NC_SYSTEM_EVENT_KIND_GROUP_SPECS = [
79812
79841
  label: "Detecting nothing",
79813
79842
  kinds: ["detection-blind"]
79814
79843
  },
79844
+ {
79845
+ id: "motion-noise",
79846
+ family: "device-events",
79847
+ label: "Motion without a subject",
79848
+ kinds: ["motion-noisy", "motion-calm"]
79849
+ },
79815
79850
  {
79816
79851
  id: "recording",
79817
79852
  family: "device-events",
@@ -79822,6 +79857,12 @@ var NC_SYSTEM_EVENT_KIND_GROUP_SPECS = [
79822
79857
  "recording-degraded"
79823
79858
  ]
79824
79859
  },
79860
+ {
79861
+ id: "device-attention",
79862
+ family: "device-events",
79863
+ label: "Needs attention",
79864
+ kinds: ["device-attention-required", "device-attention-resolved"]
79865
+ },
79825
79866
  {
79826
79867
  id: "nodes",
79827
79868
  family: "system",
@@ -79882,6 +79923,12 @@ var NC_SYSTEM_EVENT_KIND_GROUP_SPECS = [
79882
79923
  "alert-critical-resolved"
79883
79924
  ]
79884
79925
  },
79926
+ {
79927
+ id: "rule-health",
79928
+ family: "system",
79929
+ label: "Notification rules",
79930
+ kinds: ["rule-broken", "rule-repaired"]
79931
+ },
79885
79932
  {
79886
79933
  id: "alarm",
79887
79934
  family: "alarm",
@@ -79955,6 +80002,7 @@ var ALERT_EPISODE = [
79955
80002
  "alert-error",
79956
80003
  "alert-critical-resolved"
79957
80004
  ];
80005
+ var DEVICE_ATTENTION = ["device-attention-required", "device-attention-resolved"];
79958
80006
  var UPDATES = [
79959
80007
  "addon-update-available",
79960
80008
  "server-update-available",
@@ -79984,9 +80032,12 @@ var DEVICE_EVENTS = [
79984
80032
  "stream-online",
79985
80033
  "stream-offline",
79986
80034
  "detection-blind",
80035
+ "motion-noisy",
80036
+ "motion-calm",
79987
80037
  "recording-stalled",
79988
80038
  "recording-healthy",
79989
80039
  "recording-degraded",
80040
+ ...DEVICE_ATTENTION,
79990
80041
  ...ALARM
79991
80042
  ];
79992
80043
  /** Every kind a summary may speak about — the two summarisable families. */
@@ -80154,7 +80205,13 @@ var STATE_SUMMARY_VARS = [
80154
80205
  [...RULE_TEXT],
80155
80206
  [...RULE_TEXT],
80156
80207
  [...RULE_TEXT],
80157
- ([...RULE_TEXT], [...ALERT_EPISODE]),
80208
+ [...RULE_TEXT],
80209
+ [...RULE_TEXT],
80210
+ ([...RULE_TEXT], [...DEVICE_ATTENTION, ...ALERT_EPISODE]),
80211
+ [...RULE_TEXT],
80212
+ [...RULE_TEXT],
80213
+ [...RULE_TEXT],
80214
+ [...RULE_TEXT],
80158
80215
  [...RULE_TEXT],
80159
80216
  [...RULE_TEXT],
80160
80217
  [...RULE_TEXT],
@@ -80172,11 +80229,11 @@ var STATE_SUMMARY_VARS = [
80172
80229
  [...RULE_TEXT],
80173
80230
  [...RULE_TEXT],
80174
80231
  [...RULE_TEXT],
80232
+ ([...RULE_TEXT], [...DEVICE_ATTENTION, ...ALERT_EPISODE]),
80175
80233
  ([...RULE_TEXT], [...ALERT_EPISODE]),
80234
+ ([...RULE_TEXT], [...DEVICE_ATTENTION, ...ALERT_EPISODE]),
80176
80235
  ([...RULE_TEXT], [...ALERT_EPISODE]),
80177
- ([...RULE_TEXT], [...ALERT_EPISODE]),
80178
- ([...RULE_TEXT], [...ALERT_EPISODE]),
80179
- ([...RULE_TEXT], [...ALERT_EPISODE]),
80236
+ ([...RULE_TEXT], [...DEVICE_ATTENTION, ...ALERT_EPISODE]),
80180
80237
  [...RULE_TEXT],
80181
80238
  [...RULE_TEXT],
80182
80239
  [...RULE_TEXT],
@@ -80197,6 +80254,125 @@ var STATE_SUMMARY_VARS = [
80197
80254
  [...RULE_TEXT],
80198
80255
  ...STATE_SUMMARY_VARS
80199
80256
  ];
80257
+ new Map([
80258
+ {
80259
+ id: "device-connectivity",
80260
+ family: "device-events",
80261
+ label: "Device connectivity (offline / back online)",
80262
+ bad: ["device-offline"],
80263
+ recovery: ["device-online"],
80264
+ snapshotLabel: "Devices offline now",
80265
+ snapshotSection: "device-state"
80266
+ },
80267
+ {
80268
+ id: "device-switch",
80269
+ family: "device-events",
80270
+ label: "Device switched off / back on",
80271
+ bad: ["device-disabled"],
80272
+ recovery: ["device-enabled"],
80273
+ snapshotLabel: "Devices switched off now",
80274
+ snapshotSection: "device-state"
80275
+ },
80276
+ {
80277
+ id: "stream-connectivity",
80278
+ family: "device-events",
80279
+ label: "Stream connectivity (offline / back online)",
80280
+ bad: ["stream-offline"],
80281
+ recovery: ["stream-online"],
80282
+ snapshotLabel: "Streams offline now",
80283
+ snapshotSection: "streams"
80284
+ },
80285
+ {
80286
+ id: "battery",
80287
+ family: "device-events",
80288
+ label: "Battery (low / back to normal)",
80289
+ bad: ["device-battery-low"],
80290
+ recovery: ["device-battery-normal"],
80291
+ snapshotLabel: "Batteries low now",
80292
+ snapshotSection: "battery"
80293
+ },
80294
+ {
80295
+ id: "consumables",
80296
+ family: "device-events",
80297
+ label: "Consumables (low / replaced)",
80298
+ bad: ["device-consumable-low"],
80299
+ recovery: ["device-consumable-normal"],
80300
+ snapshotLabel: "Consumables low now",
80301
+ snapshotSection: "consumables"
80302
+ },
80303
+ {
80304
+ id: "tanks",
80305
+ family: "device-events",
80306
+ label: "Tanks (low or full / back to normal)",
80307
+ bad: ["device-tank-low", "device-tank-full"],
80308
+ recovery: ["device-tank-normal"],
80309
+ snapshotLabel: "Tanks low or full now",
80310
+ snapshotSection: "tanks"
80311
+ },
80312
+ {
80313
+ id: "motion-noise",
80314
+ family: "device-events",
80315
+ label: "Motion without a subject (constant / calm again)",
80316
+ bad: ["motion-noisy"],
80317
+ recovery: ["motion-calm"],
80318
+ snapshotLabel: "Cameras with constant motion now",
80319
+ snapshotSection: null
80320
+ },
80321
+ {
80322
+ id: "recording-health",
80323
+ family: "device-events",
80324
+ label: "Recording health (stalled or degraded / recording again)",
80325
+ bad: ["recording-stalled", "recording-degraded"],
80326
+ recovery: ["recording-healthy"],
80327
+ snapshotLabel: "Recordings stalled now",
80328
+ snapshotSection: null
80329
+ },
80330
+ {
80331
+ id: "device-attention",
80332
+ family: "device-events",
80333
+ label: "Device needs attention (raised / resolved)",
80334
+ bad: ["device-attention-required"],
80335
+ recovery: ["device-attention-resolved"],
80336
+ snapshotLabel: "Devices needing attention now",
80337
+ snapshotSection: null
80338
+ },
80339
+ {
80340
+ id: "node-connectivity",
80341
+ family: "system",
80342
+ label: "Node connectivity (offline / back online)",
80343
+ bad: ["node-offline"],
80344
+ recovery: ["node-online"],
80345
+ snapshotLabel: "Nodes offline now",
80346
+ snapshotSection: "nodes"
80347
+ },
80348
+ {
80349
+ id: "storage-space",
80350
+ family: "system",
80351
+ label: "Storage space (low or critical / ok again)",
80352
+ bad: ["storage-location-low", "storage-location-critical"],
80353
+ recovery: ["storage-location-ok"],
80354
+ snapshotLabel: "Storage locations low now",
80355
+ snapshotSection: null
80356
+ },
80357
+ {
80358
+ id: "critical-alerts",
80359
+ family: "system",
80360
+ label: "Critical alerts (raised / resolved)",
80361
+ bad: ["alert-critical"],
80362
+ recovery: ["alert-critical-resolved"],
80363
+ snapshotLabel: "Critical alerts open now",
80364
+ snapshotSection: null
80365
+ },
80366
+ {
80367
+ id: "rule-health",
80368
+ family: "system",
80369
+ label: "Rule health (broken / repaired)",
80370
+ bad: ["rule-broken"],
80371
+ recovery: ["rule-repaired"],
80372
+ snapshotLabel: "Notification rules broken now",
80373
+ snapshotSection: null
80374
+ }
80375
+ ].flatMap((spec) => [...spec.bad, ...spec.recovery].map((kind) => [kind, spec])));
80200
80376
  new Set([
80201
80377
  "disarmed",
80202
80378
  "armed_home",
@@ -80804,7 +80980,7 @@ function buildConnectionFormSchema() {
80804
80980
  id: "connection",
80805
80981
  title: "Connection",
80806
80982
  titleKey: "provider-rademacher:connection.s_connection.title",
80807
- description: "CamStack polls the HomePilot / Start2Smart hub over the local network. Leave the password blank for an unprotected hub. The API base path is auto-probed unless you override it.",
80983
+ description: "Leave the password blank for an unprotected hub.",
80808
80984
  descriptionKey: "provider-rademacher:connection.s_connection.description",
80809
80985
  columns: 2,
80810
80986
  fields: [
package/i18n/en.json CHANGED
@@ -2,7 +2,7 @@
2
2
  "connection.s_identity.title": "Hub",
3
3
  "connection.s_identity.name.label": "Name",
4
4
  "connection.s_connection.title": "Connection",
5
- "connection.s_connection.description": "CamStack polls the HomePilot / Start2Smart hub over the local network. Leave the password blank for an unprotected hub. The API base path is auto-probed unless you override it.",
5
+ "connection.s_connection.description": "Leave the password blank for an unprotected hub.",
6
6
  "connection.s_connection.host.label": "Hub host / IP",
7
7
  "connection.s_connection.password.label": "Password (optional)",
8
8
  "connection.s_connection.pollIntervalMs.label": "Poll interval (ms)",
package/i18n/it.json CHANGED
@@ -2,7 +2,7 @@
2
2
  "connection.s_identity.title": "Hub",
3
3
  "connection.s_identity.name.label": "Nome",
4
4
  "connection.s_connection.title": "Connessione",
5
- "connection.s_connection.description": "CamStack legge l'hub HomePilot / Start2Smart in rete locale. Lascia vuota la password per un hub senza protezione. Il percorso base dell'API viene rilevato automaticamente, salvo che tu lo imposti.",
5
+ "connection.s_connection.description": "Lascia vuota la password per un hub non protetto.",
6
6
  "connection.s_connection.host.label": "Host / IP dell'hub",
7
7
  "connection.s_connection.password.label": "Password (facoltativa)",
8
8
  "connection.s_connection.pollIntervalMs.label": "Intervallo di lettura (ms)",
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@camstack/addon-provider-rademacher",
3
- "version": "0.2.140",
3
+ "version": "0.2.142",
4
4
  "description": "Rademacher HomePilot device-provider addon for CamStack — wraps the @apocaliss92/noderademacher local-hub client (roller shutters over the cover cap)",
5
5
  "keywords": [
6
6
  "camstack",