@camstack/addon-post-analysis 1.2.664 → 1.2.666

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.
Files changed (16) hide show
  1. package/CHANGELOG.md +17 -0
  2. package/dist/{clip-model-registry-TeNUAAPP.js → clip-model-registry-BIhYJRFt.js} +324 -132
  3. package/dist/{clip-model-registry-Ch9Sz-Qb.mjs → clip-model-registry-Uc_C1x81.mjs} +319 -133
  4. package/dist/embedding-encoder/index.js +1 -1
  5. package/dist/embedding-encoder/index.mjs +1 -1
  6. package/dist/pipeline-analytics/_stub.js +2 -2
  7. package/dist/pipeline-analytics/{_virtual_mf-localSharedImportMap___mfe_internal__addon_pipeline_analytics_widgets-CXG7YPYq.mjs → _virtual_mf-localSharedImportMap___mfe_internal__addon_pipeline_analytics_widgets-FkeZoNXj.mjs} +2 -2
  8. package/dist/pipeline-analytics/_virtual_mf___mfe_internal__addon_pipeline_analytics_widgets__loadShare___mf_0_camstack_mf_1_types__loadShare__.js-CnYZAdvw.mjs +26 -0
  9. package/dist/pipeline-analytics/_virtual_mf___mfe_internal__addon_pipeline_analytics_widgets__loadShare___mf_0_camstack_mf_1_ui_mf_2_library__loadShare__.js-Br6eWzp_.mjs +26 -0
  10. package/dist/pipeline-analytics/{hostInit-BZ_D3_sF.mjs → hostInit-BBhgVoNl.mjs} +2 -2
  11. package/dist/pipeline-analytics/index.js +430 -46
  12. package/dist/pipeline-analytics/index.mjs +430 -46
  13. package/dist/pipeline-analytics/remoteEntry.js +1 -1
  14. package/package.json +2 -2
  15. package/dist/pipeline-analytics/_virtual_mf___mfe_internal__addon_pipeline_analytics_widgets__loadShare___mf_0_camstack_mf_1_types__loadShare__.js-CIt_RDlm.mjs +0 -26
  16. package/dist/pipeline-analytics/_virtual_mf___mfe_internal__addon_pipeline_analytics_widgets__loadShare___mf_0_camstack_mf_1_ui_mf_2_library__loadShare__.js-4TTlyJ66.mjs +0 -26
@@ -6032,7 +6032,7 @@ var ZodIssueCode = {
6032
6032
  var ZodFirstPartyTypeKind;
6033
6033
  ZodFirstPartyTypeKind || (ZodFirstPartyTypeKind = {});
6034
6034
  //#endregion
6035
- //#region ../types/dist/sleep-QsoHs66J.mjs
6035
+ //#region ../types/dist/sleep-C6LqREpb.mjs
6036
6036
  /**
6037
6037
  * The audio chunk plane's byte format, and the ONE expansion from a coded
6038
6038
  * window to float samples (D455).
@@ -6111,6 +6111,22 @@ function buildAlawTable() {
6111
6111
  }
6112
6112
  buildUlawTable();
6113
6113
  buildAlawTable();
6114
+ /**
6115
+ * An addon whose own migrations did not apply refuses to initialise (D987). The error is typed
6116
+ * so a runner hosting several addons can tell "this addon is blocked" from a crash and keep its
6117
+ * co-located siblings running. Recognised by NAME and shape, never `instanceof`: a forked addon
6118
+ * bundles its own copy of this module, so the class the runner sees is not the one that threw.
6119
+ */
6120
+ var MIGRATIONS_BLOCKED_ERROR_NAME = "AddonMigrationsBlockedError";
6121
+ var AddonMigrationsBlockedError = class extends Error {
6122
+ /** The ledger ids that did not apply and block the owner. */
6123
+ migrationIds;
6124
+ constructor(migrationIds) {
6125
+ super(`migration(s) ${migrationIds.join(", ")} did not apply and block this addon — fix or retry them (migrations.retry), then restart it`);
6126
+ this.name = MIGRATIONS_BLOCKED_ERROR_NAME;
6127
+ this.migrationIds = migrationIds;
6128
+ }
6129
+ };
6114
6130
  /** Is this field's stored value a credential? */
6115
6131
  function isSecretConfigField(field) {
6116
6132
  if (field.type === "password") return true;
@@ -7764,7 +7780,7 @@ var BaseAddon = class {
7764
7780
  startMigration: (input) => api.startMigration.mutate(input),
7765
7781
  finishMigration: (input) => api.finishMigration.mutate(input)
7766
7782
  }, migrations, this.ctx.logger);
7767
- if (report.blockOwner.length > 0) throw new Error(`migration(s) ${report.blockOwner.join(", ")} did not apply and block this addon — fix or retry them (migrations.retry), then restart it`);
7783
+ if (report.blockOwner.length > 0) throw new AddonMigrationsBlockedError(report.blockOwner);
7768
7784
  return report;
7769
7785
  }
7770
7786
  /**
@@ -9799,6 +9815,7 @@ var CAP_NAMES = Object.freeze([
9799
9815
  "backup",
9800
9816
  "battery",
9801
9817
  "binary",
9818
+ "board-key-source",
9802
9819
  "brightness",
9803
9820
  "broker",
9804
9821
  "button",
@@ -9920,6 +9937,7 @@ var CAP_NAMES = Object.freeze([
9920
9937
  "privacy-mask",
9921
9938
  "ptz",
9922
9939
  "ptz-autotrack",
9940
+ "pump-cycle",
9923
9941
  "reboot",
9924
9942
  "record-entries",
9925
9943
  "recording",
@@ -11212,18 +11230,6 @@ Object.freeze({
11212
11230
  "path": "pumpRunning",
11213
11231
  "valueType": "boolean"
11214
11232
  },
11215
- {
11216
- "path": "pumpIntervalEnabled",
11217
- "valueType": "boolean"
11218
- },
11219
- {
11220
- "path": "pumpOnTime",
11221
- "valueType": "number"
11222
- },
11223
- {
11224
- "path": "pumpOffTime",
11225
- "valueType": "number"
11226
- },
11227
11233
  {
11228
11234
  "path": "lastDrink",
11229
11235
  "valueType": "number"
@@ -11347,6 +11353,20 @@ Object.freeze({
11347
11353
  "valueType": "number"
11348
11354
  }
11349
11355
  ],
11356
+ "pump-cycle": [
11357
+ {
11358
+ "path": "enabled",
11359
+ "valueType": "boolean"
11360
+ },
11361
+ {
11362
+ "path": "onTime",
11363
+ "valueType": "number"
11364
+ },
11365
+ {
11366
+ "path": "offTime",
11367
+ "valueType": "number"
11368
+ }
11369
+ ],
11350
11370
  "recording-archive": [
11351
11371
  {
11352
11372
  "path": "deviceId",
@@ -11798,7 +11818,7 @@ Object.freeze({
11798
11818
  * can answer "may a rule actuate this?" without importing the schema barrel
11799
11819
  * (~144MB RSS per runner, D28).
11800
11820
  *
11801
- * Coverage: 101 device-scoped capabilities.
11821
+ * Coverage: 102 device-scoped capabilities.
11802
11822
  */
11803
11823
  var DEVICE_SCOPED_CAPS = new Set([
11804
11824
  "accessories",
@@ -11875,6 +11895,7 @@ var DEVICE_SCOPED_CAPS = new Set([
11875
11895
  "privacy-mask",
11876
11896
  "ptz",
11877
11897
  "ptz-autotrack",
11898
+ "pump-cycle",
11878
11899
  "reboot",
11879
11900
  "recording",
11880
11901
  "recording-onboard",
@@ -20420,24 +20441,52 @@ var APPLIANCE_CAP_VOCABULARY = {
20420
20441
  args: { on: false }
20421
20442
  },
20422
20443
  {
20423
- id: "petFountain.intervalOn",
20424
- method: "setPumpInterval",
20444
+ id: "petFountain.resetDailyConsumption",
20445
+ method: "resetDailyConsumption",
20446
+ label: t("Clear daily consumption", "Azzera il consumo giornaliero"),
20447
+ phrase: t("Clear the daily water consumption of {device}", "Azzera il consumo giornaliero di acqua di {device}"),
20448
+ icon: "rotate-ccw"
20449
+ }
20450
+ ],
20451
+ state: [{
20452
+ kind: "boolean",
20453
+ field: "empty",
20454
+ label: t("Tank empty", "Serbatoio vuoto"),
20455
+ whenTrue: t("When the tank of {device} is empty", "Quando il serbatoio di {device} è vuoto"),
20456
+ whenFalse: t("When the tank of {device} is refilled", "Quando il serbatoio di {device} viene riempito"),
20457
+ icon: "droplet"
20458
+ }, {
20459
+ kind: "numeric",
20460
+ field: "waterLevel",
20461
+ quantity: t("the water level", "il livello dell’acqua"),
20462
+ label: t("Water level", "Livello dell’acqua"),
20463
+ unit: "%",
20464
+ icon: "droplets"
20465
+ }]
20466
+ },
20467
+ "pump-cycle": {
20468
+ scope: "device",
20469
+ noun: t("Pump cycle", "Ciclo della pompa"),
20470
+ actions: [
20471
+ {
20472
+ id: "pumpCycle.on",
20473
+ method: "setEnabled",
20425
20474
  label: t("Pump cycle on", "Ciclo pompa attivo"),
20426
20475
  phrase: t("Run the pump of {device} on its on/off cycle", "Fai lavorare la pompa di {device} a ciclo acceso/spento"),
20427
20476
  icon: "timer",
20428
20477
  args: { on: true }
20429
20478
  },
20430
20479
  {
20431
- id: "petFountain.intervalOff",
20432
- method: "setPumpInterval",
20480
+ id: "pumpCycle.off",
20481
+ method: "setEnabled",
20433
20482
  label: t("Pump cycle off", "Ciclo pompa spento"),
20434
20483
  phrase: t("Run the pump of {device} continuously", "Fai lavorare la pompa di {device} in continuo"),
20435
20484
  icon: "timer-off",
20436
20485
  args: { on: false }
20437
20486
  },
20438
20487
  {
20439
- id: "petFountain.pumpOnMinutes",
20440
- method: "setPumpOnMinutes",
20488
+ id: "pumpCycle.onMinutes",
20489
+ method: "setOnMinutes",
20441
20490
  label: t("Set pump run time", "Imposta il tempo di lavoro della pompa"),
20442
20491
  phrase: t("Set the pump of {device} to run {minutes} minutes per cycle", "Imposta la pompa di {device} a lavorare {minutes} minuti per ciclo"),
20443
20492
  icon: "timer",
@@ -20453,8 +20502,8 @@ var APPLIANCE_CAP_VOCABULARY = {
20453
20502
  }]
20454
20503
  },
20455
20504
  {
20456
- id: "petFountain.pumpOffMinutes",
20457
- method: "setPumpOffMinutes",
20505
+ id: "pumpCycle.offMinutes",
20506
+ method: "setOffMinutes",
20458
20507
  label: t("Set pump rest time", "Imposta il tempo di riposo della pompa"),
20459
20508
  phrase: t("Set the pump of {device} to rest {minutes} minutes per cycle", "Imposta la pompa di {device} a riposare {minutes} minuti per ciclo"),
20460
20509
  icon: "timer-off",
@@ -20468,29 +20517,15 @@ var APPLIANCE_CAP_VOCABULARY = {
20468
20517
  unit: "min"
20469
20518
  }
20470
20519
  }]
20471
- },
20472
- {
20473
- id: "petFountain.resetDailyConsumption",
20474
- method: "resetDailyConsumption",
20475
- label: t("Clear daily consumption", "Azzera il consumo giornaliero"),
20476
- phrase: t("Clear the daily water consumption of {device}", "Azzera il consumo giornaliero di acqua di {device}"),
20477
- icon: "rotate-ccw"
20478
20520
  }
20479
20521
  ],
20480
20522
  state: [{
20481
20523
  kind: "boolean",
20482
- field: "empty",
20483
- label: t("Tank empty", "Serbatoio vuoto"),
20484
- whenTrue: t("When the tank of {device} is empty", "Quando il serbatoio di {device} è vuoto"),
20485
- whenFalse: t("When the tank of {device} is refilled", "Quando il serbatoio di {device} viene riempito"),
20486
- icon: "droplet"
20487
- }, {
20488
- kind: "numeric",
20489
- field: "waterLevel",
20490
- quantity: t("the water level", "il livello dell’acqua"),
20491
- label: t("Water level", "Livello dell’acqua"),
20492
- unit: "%",
20493
- icon: "droplets"
20524
+ field: "enabled",
20525
+ label: t("Pump cycle", "Ciclo pompa"),
20526
+ whenTrue: t("When {device} starts running its pump on a cycle", "Quando {device} inizia a far lavorare la pompa a ciclo"),
20527
+ whenFalse: t("When {device} runs its pump continuously", "Quando {device} fa lavorare la pompa in continuo"),
20528
+ icon: "timer"
20494
20529
  }]
20495
20530
  },
20496
20531
  "media-player": {
@@ -22383,6 +22418,7 @@ var SYSTEM_CAP_VOCABULARY = {
22383
22418
  "audio-analyzer": system(PIPELINE),
22384
22419
  "audio-codec": system(INTERNAL),
22385
22420
  "auth-provider": system(IDENTITY),
22421
+ "board-key-source": system(INTERNAL),
22386
22422
  backup: system("system backups — run and restored from the Backups page"),
22387
22423
  broker: system("message-broker connections — configured, not actuated"),
22388
22424
  "calendar-source": system(INTERNAL),
@@ -47533,6 +47569,49 @@ var binaryCapability = {
47533
47569
  volatileStateFields: ["lastChangedAt"]
47534
47570
  };
47535
47571
  /**
47572
+ * Why a board key could not be read. Typed so a caller reports the cause and
47573
+ * never treats "could not read" as "has no key" (D49).
47574
+ */
47575
+ var BoardKeyFailureReasonSchema = _enum([
47576
+ "unknown-source",
47577
+ "not-admin",
47578
+ "no-builder",
47579
+ "no-ingress-url",
47580
+ "unreachable",
47581
+ "unknown-board",
47582
+ "no-encryption-key",
47583
+ "unreadable-config"
47584
+ ]);
47585
+ var BoardKeySourceSchema = object({
47586
+ sourceId: string(),
47587
+ name: string()
47588
+ });
47589
+ var BoardKeyBoardSchema = object({
47590
+ /** The builder's file name, e.g. `kitchen.yaml`: the handle `getBoardKey` takes. */
47591
+ configuration: string(),
47592
+ /** The node name the builder gives the board. */
47593
+ name: string(),
47594
+ /** The address the builder knows the board by, when it has one. */
47595
+ address: string().nullable()
47596
+ });
47597
+ var BoardKeyFailureSchema = object({
47598
+ ok: literal(false),
47599
+ reason: BoardKeyFailureReasonSchema,
47600
+ detail: string().optional()
47601
+ });
47602
+ var ListBoardsResultSchema = discriminatedUnion("ok", [object({
47603
+ ok: literal(true),
47604
+ boards: array(BoardKeyBoardSchema).readonly()
47605
+ }), BoardKeyFailureSchema]);
47606
+ var GetBoardKeyResultSchema = discriminatedUnion("ok", [object({
47607
+ ok: literal(true),
47608
+ key: string()
47609
+ }), BoardKeyFailureSchema]);
47610
+ method(_void(), array(BoardKeySourceSchema).readonly(), { auth: "admin" }), method(object({ sourceId: string().min(1) }), ListBoardsResultSchema, { auth: "admin" }), method(object({
47611
+ sourceId: string().min(1),
47612
+ configuration: string().min(1)
47613
+ }), GetBoardKeyResultSchema, { auth: "admin" });
47614
+ /**
47536
47615
  * Dimmable-light brightness control. Co-exists with `switch` on the
47537
47616
  * same device — the switch toggles on/off, this cap sets the level
47538
47617
  * applied when the light is on. Drivers map their per-vendor dim
@@ -54114,7 +54193,7 @@ var DishwasherStatusSchema = object({
54114
54193
  /** Ms epoch of the last value received from the appliance; 0 = never. */
54115
54194
  lastFetchedAt: number()
54116
54195
  });
54117
- var DeviceIdSchema$1 = number().int().nonnegative();
54196
+ var DeviceIdSchema$2 = number().int().nonnegative();
54118
54197
  /** A value a program option or setting can take. */
54119
54198
  var DishwasherValueSchema = union([
54120
54199
  boolean(),
@@ -54189,77 +54268,77 @@ var dishwasherCapability = {
54189
54268
  * option feature keys; each is checked against the program's constraints.
54190
54269
  */
54191
54270
  start: method(object({
54192
- deviceId: DeviceIdSchema$1,
54271
+ deviceId: DeviceIdSchema$2,
54193
54272
  program: string().min(1).optional(),
54194
54273
  options: record(string(), DishwasherValueSchema).optional()
54195
54274
  }), _void(), {
54196
54275
  kind: "mutation",
54197
54276
  auth: "protected"
54198
54277
  }),
54199
- pause: method(object({ deviceId: DeviceIdSchema$1 }), _void(), {
54278
+ pause: method(object({ deviceId: DeviceIdSchema$2 }), _void(), {
54200
54279
  kind: "mutation",
54201
54280
  auth: "protected"
54202
54281
  }),
54203
- resume: method(object({ deviceId: DeviceIdSchema$1 }), _void(), {
54282
+ resume: method(object({ deviceId: DeviceIdSchema$2 }), _void(), {
54204
54283
  kind: "mutation",
54205
54284
  auth: "protected"
54206
54285
  }),
54207
- stop: method(object({ deviceId: DeviceIdSchema$1 }), _void(), {
54286
+ stop: method(object({ deviceId: DeviceIdSchema$2 }), _void(), {
54208
54287
  kind: "mutation",
54209
54288
  auth: "protected"
54210
54289
  }),
54211
54290
  /** Select (not start) a program; refused when the appliance does not offer it. */
54212
54291
  setProgram: method(object({
54213
- deviceId: DeviceIdSchema$1,
54292
+ deviceId: DeviceIdSchema$2,
54214
54293
  program: string().min(1)
54215
54294
  }), _void(), {
54216
54295
  kind: "mutation",
54217
54296
  auth: "protected"
54218
54297
  }),
54219
54298
  setPower: method(object({
54220
- deviceId: DeviceIdSchema$1,
54299
+ deviceId: DeviceIdSchema$2,
54221
54300
  on: boolean()
54222
54301
  }), _void(), {
54223
54302
  kind: "mutation",
54224
54303
  auth: "protected"
54225
54304
  }),
54226
54305
  setHalfLoad: method(object({
54227
- deviceId: DeviceIdSchema$1,
54306
+ deviceId: DeviceIdSchema$2,
54228
54307
  on: boolean()
54229
54308
  }), _void(), {
54230
54309
  kind: "mutation",
54231
54310
  auth: "protected"
54232
54311
  }),
54233
54312
  setHygienePlus: method(object({
54234
- deviceId: DeviceIdSchema$1,
54313
+ deviceId: DeviceIdSchema$2,
54235
54314
  on: boolean()
54236
54315
  }), _void(), {
54237
54316
  kind: "mutation",
54238
54317
  auth: "protected"
54239
54318
  }),
54240
54319
  setExtraDry: method(object({
54241
- deviceId: DeviceIdSchema$1,
54320
+ deviceId: DeviceIdSchema$2,
54242
54321
  on: boolean()
54243
54322
  }), _void(), {
54244
54323
  kind: "mutation",
54245
54324
  auth: "protected"
54246
54325
  }),
54247
54326
  setIntensiveZone: method(object({
54248
- deviceId: DeviceIdSchema$1,
54327
+ deviceId: DeviceIdSchema$2,
54249
54328
  on: boolean()
54250
54329
  }), _void(), {
54251
54330
  kind: "mutation",
54252
54331
  auth: "protected"
54253
54332
  }),
54254
54333
  setVarioSpeedPlus: method(object({
54255
- deviceId: DeviceIdSchema$1,
54334
+ deviceId: DeviceIdSchema$2,
54256
54335
  on: boolean()
54257
54336
  }), _void(), {
54258
54337
  kind: "mutation",
54259
54338
  auth: "protected"
54260
54339
  }),
54261
54340
  setChildLock: method(object({
54262
- deviceId: DeviceIdSchema$1,
54341
+ deviceId: DeviceIdSchema$2,
54263
54342
  on: boolean()
54264
54343
  }), _void(), {
54265
54344
  kind: "mutation",
@@ -54271,7 +54350,7 @@ var dishwasherCapability = {
54271
54350
  * its declared range / members.
54272
54351
  */
54273
54352
  setOption: method(object({
54274
- deviceId: DeviceIdSchema$1,
54353
+ deviceId: DeviceIdSchema$2,
54275
54354
  key: string().min(1),
54276
54355
  value: DishwasherValueSchema
54277
54356
  }), _void(), {
@@ -54279,7 +54358,7 @@ var dishwasherCapability = {
54279
54358
  auth: "protected"
54280
54359
  }),
54281
54360
  /** What this appliance can do, from its own description — the UI is derived from it. */
54282
- getOptions: method(object({ deviceId: DeviceIdSchema$1 }), DishwasherOptionsSchema, { auth: "protected" })
54361
+ getOptions: method(object({ deviceId: DeviceIdSchema$2 }), DishwasherOptionsSchema, { auth: "protected" })
54283
54362
  },
54284
54363
  status: {
54285
54364
  schema: DishwasherStatusSchema,
@@ -69105,6 +69184,21 @@ var NcTemplateVarKindSchema = _enum([
69105
69184
  "sound",
69106
69185
  "system"
69107
69186
  ]);
69187
+ /**
69188
+ * The default title/body a rule of one SITUATION is delivered with when the
69189
+ * operator wrote no template — served so an editor can pre-fill it (and the
69190
+ * operator can rebuild it from placeholders) instead of starting from a blank
69191
+ * box that, once saved, silently replaces it. `id` names the situation inside
69192
+ * a rule `kind`: `appliance-cycle` is a `sensor` rule whose device is an
69193
+ * appliance finishing a cycle. Texts are raw templates (`{{var}}` intact), in
69194
+ * the hub's current language and with its overrides applied.
69195
+ */
69196
+ var NcTemplateDefaultSchema = object({
69197
+ id: _enum(["appliance-cycle"]),
69198
+ kind: NcRuleKindSchema,
69199
+ title: string(),
69200
+ body: string()
69201
+ });
69108
69202
  /** Which producer renders a template: an ordinary rule, a timelapse, a digest. */
69109
69203
  var NcTemplateFamilySchema = _enum([
69110
69204
  "rule",
@@ -70667,7 +70761,11 @@ var notificationRulesCapability = {
70667
70761
  taxonomy: NcTaxonomySchema.optional()
70668
70762
  })),
70669
70763
  /** The declared `{{var}}` vocabulary; editors filter it with `templateVarsFor`. */
70670
- getTemplateCatalog: method(object({}), object({ vars: array(NcTemplateVarDescriptorSchema) })),
70764
+ getTemplateCatalog: method(object({}), object({
70765
+ vars: array(NcTemplateVarDescriptorSchema),
70766
+ /** Per-situation default texts; absent on a hub that predates them. */
70767
+ defaults: array(NcTemplateDefaultSchema)
70768
+ })),
70671
70769
  /**
70672
70770
  * Render a template with example values, through the hub's text catalog.
70673
70771
  * Pure: sends nothing. A MUTATION only for transport — a 2.5k-char draft in
@@ -71677,7 +71775,7 @@ var petFeederCapability = {
71677
71775
  /**
71678
71776
  * Pet water-fountain cap. Models the telemetry and the control surface of a
71679
71777
  * circulating drinking fountain: how much water is in the tank, how much the
71680
- * pet drank, whether the pump runs and on what duty cycle.
71778
+ * pet drank, whether the pump runs.
71681
71779
  *
71682
71780
  * It has no native vendor provider of its own: a fountain reaches CamStack as
71683
71781
  * a container of loose entities (a pump switch, two number boxes, a "filter
@@ -71693,8 +71791,10 @@ var petFeederCapability = {
71693
71791
  * never here. Every reading may be `null`: a source that is offline or does
71694
71792
  * not report is unknown, never zero.
71695
71793
  *
71696
- * The filter is not a field of this cap: it is an item of the `consumables`
71697
- * cap on the same device (kind `wear`), reset by the same forward mechanism.
71794
+ * The pump's on/off duty cycle is model-specific and lives in the optional
71795
+ * `pump-cycle` cap. The filter, the cleaning and the water change are not
71796
+ * fields of this cap: they are items of the `consumables` cap on the same
71797
+ * device (kind `wear`), reset by the same forward mechanism.
71698
71798
  */
71699
71799
  var PetFountainStatusSchema = object({
71700
71800
  /** Water in the tank, 0..100 (%). Null while the source has not reported. */
@@ -71705,27 +71805,20 @@ var PetFountainStatusSchema = object({
71705
71805
  empty: boolean().nullable(),
71706
71806
  /** True while the pump is running. Null while unknown. */
71707
71807
  pumpRunning: boolean().nullable(),
71708
- /** True when the pump works on an on/off duty cycle rather than continuously. */
71709
- pumpIntervalEnabled: boolean().nullable(),
71710
- /** How long the pump runs per cycle, in seconds. */
71711
- pumpOnTime: number().min(0).nullable().meta(readingMeta("duration")),
71712
- /** How long the pump rests per cycle, in seconds. */
71713
- pumpOffTime: number().min(0).nullable().meta(readingMeta("duration")),
71714
71808
  /** Water drunk in the last drink, in litres. */
71715
71809
  lastDrink: number().min(0).nullable().meta(readingMeta("volume")),
71716
71810
  /** Water drunk in the current hour, in litres. */
71717
71811
  currentHourDrink: number().min(0).nullable().meta(readingMeta("volume")),
71718
71812
  /** Water drunk over the last 24 hours (rolling), in litres. */
71719
71813
  last24hDrink: number().min(0).nullable().meta(readingMeta("volume")),
71720
- /** Water drunk since local midnight, in litres. */
71814
+ /** Water drunk since local midnight, in litres. Null when the fountain has no such sensor. */
71721
71815
  todayDrink: number().min(0).nullable().meta(readingMeta("volume")),
71722
71816
  /** Decoded fault message. Null means healthy; a non-null string is an active fault. */
71723
71817
  error: string().nullable(),
71724
71818
  /** Ms epoch when the slice was last refreshed. */
71725
71819
  lastFetchedAt: number()
71726
71820
  });
71727
- var DeviceIdSchema = number().int().nonnegative();
71728
- var MinutesSchema = number().int().min(0);
71821
+ var DeviceIdSchema$1 = number().int().nonnegative();
71729
71822
  var petFountainCapability = {
71730
71823
  name: "pet-fountain",
71731
71824
  scope: "device",
@@ -71735,38 +71828,14 @@ var petFountainCapability = {
71735
71828
  methods: {
71736
71829
  /** Start or stop the pump. */
71737
71830
  setPump: method(object({
71738
- deviceId: DeviceIdSchema,
71739
- on: boolean()
71740
- }), _void(), {
71741
- kind: "mutation",
71742
- auth: "protected"
71743
- }),
71744
- /** Switch the on/off duty cycle on or off (off = the pump runs continuously). */
71745
- setPumpInterval: method(object({
71746
- deviceId: DeviceIdSchema,
71831
+ deviceId: DeviceIdSchema$1,
71747
71832
  on: boolean()
71748
71833
  }), _void(), {
71749
71834
  kind: "mutation",
71750
71835
  auth: "protected"
71751
71836
  }),
71752
- /** Set how many minutes the pump runs per cycle. */
71753
- setPumpOnMinutes: method(object({
71754
- deviceId: DeviceIdSchema,
71755
- minutes: MinutesSchema
71756
- }), _void(), {
71757
- kind: "mutation",
71758
- auth: "protected"
71759
- }),
71760
- /** Set how many minutes the pump rests per cycle. */
71761
- setPumpOffMinutes: method(object({
71762
- deviceId: DeviceIdSchema,
71763
- minutes: MinutesSchema
71764
- }), _void(), {
71765
- kind: "mutation",
71766
- auth: "protected"
71767
- }),
71768
71837
  /** Clear the rolling daily consumption counters on the device. */
71769
- resetDailyConsumption: method(object({ deviceId: DeviceIdSchema }), _void(), {
71838
+ resetDailyConsumption: method(object({ deviceId: DeviceIdSchema$1 }), _void(), {
71770
71839
  kind: "mutation",
71771
71840
  auth: "protected"
71772
71841
  })
@@ -74134,6 +74203,79 @@ var ptzAutotrackCapability = {
74134
74203
  */
74135
74204
  history: "none"
74136
74205
  };
74206
+ /**
74207
+ * The on/off duty cycle of a pet fountain's pump. Some models run the pump
74208
+ * continuously and have nothing to configure; others can alternate a run time
74209
+ * and a rest time. That is model-specific, so it is its own optional cap on the
74210
+ * fountain device: a fountain without cycle entities simply never composes it
74211
+ * (planning#366), and the `pet-fountain` cap stays the model-independent core.
74212
+ *
74213
+ * Like `pet-fountain` it has no native vendor provider: an operator BUILDS the
74214
+ * cycle from loose entities (a cycle switch and two number boxes) and every
74215
+ * method is a forward to one source entity (D659, D967). Durations are stored
74216
+ * in SECONDS (D944); a number box that cannot be read back leaves them `null`
74217
+ * — unknown, never zero (D393).
74218
+ */
74219
+ var PumpCycleStatusSchema = object({
74220
+ /** True when the pump works on the on/off cycle, false when it runs continuously. Null while unknown. */
74221
+ enabled: boolean().nullable(),
74222
+ /** How long the pump runs per cycle, in seconds. Null while unknown. */
74223
+ onTime: number().min(0).nullable().meta(readingMeta("duration")),
74224
+ /** How long the pump rests per cycle, in seconds. Null while unknown. */
74225
+ offTime: number().min(0).nullable().meta(readingMeta("duration")),
74226
+ /** Ms epoch when the slice was last refreshed. */
74227
+ lastFetchedAt: number()
74228
+ });
74229
+ var DeviceIdSchema = number().int().nonnegative();
74230
+ var MinutesSchema = number().int().min(0);
74231
+ var pumpCycleCapability = {
74232
+ name: "pump-cycle",
74233
+ scope: "device",
74234
+ deviceNative: true,
74235
+ mode: "singleton",
74236
+ deviceTypes: [DeviceType.PetFountain],
74237
+ methods: {
74238
+ /** Switch the on/off duty cycle on or off (off = the pump runs continuously). */
74239
+ setEnabled: method(object({
74240
+ deviceId: DeviceIdSchema,
74241
+ on: boolean()
74242
+ }), _void(), {
74243
+ kind: "mutation",
74244
+ auth: "protected"
74245
+ }),
74246
+ /** Set how many minutes the pump runs per cycle. */
74247
+ setOnMinutes: method(object({
74248
+ deviceId: DeviceIdSchema,
74249
+ minutes: MinutesSchema
74250
+ }), _void(), {
74251
+ kind: "mutation",
74252
+ auth: "protected"
74253
+ }),
74254
+ /** Set how many minutes the pump rests per cycle. */
74255
+ setOffMinutes: method(object({
74256
+ deviceId: DeviceIdSchema,
74257
+ minutes: MinutesSchema
74258
+ }), _void(), {
74259
+ kind: "mutation",
74260
+ auth: "protected"
74261
+ })
74262
+ },
74263
+ status: {
74264
+ schema: PumpCycleStatusSchema,
74265
+ kind: "push"
74266
+ },
74267
+ /** Runtime-state slice — mirrored by the kernel; the hero card reads it whole. */
74268
+ runtimeState: PumpCycleStatusSchema,
74269
+ /**
74270
+ * Runtime-state durability: **session** — live appliance state re-published on connect.
74271
+ *
74272
+ * See `RuntimeStateDurability`. Enforced by
74273
+ * `scripts/check-runtime-state-durability.ts`.
74274
+ */
74275
+ durability: "session",
74276
+ /** History (D850): a duty-cycle setting is not a series worth recording. */
74277
+ history: "none"
74278
+ };
74137
74279
  DeviceType.Camera, DeviceType.Sensor, DeviceType.Switch, DeviceType.Gateway, method(object({ deviceId: number().int().nonnegative() }), object({ success: literal(true) }), {
74138
74280
  kind: "mutation",
74139
74281
  auth: "admin"
@@ -83428,6 +83570,7 @@ var DEVICE_LOCAL_STATE_CAPS = {
83428
83570
  pressureSensor: pressureSensorCapability,
83429
83571
  privacyMask: privacyMaskCapability,
83430
83572
  ptzAutotrack: ptzAutotrackCapability,
83573
+ pumpCycle: pumpCycleCapability,
83431
83574
  recordingOnboard: recordingOnboardCapability,
83432
83575
  recordingSignal: recordingSignalCapability,
83433
83576
  runningState: runningStateCapability,
@@ -85118,6 +85261,27 @@ Object.freeze({
85118
85261
  access: "view",
85119
85262
  role: "viewer"
85120
85263
  },
85264
+ "boardKeySource.getBoardKey": {
85265
+ capName: "board-key-source",
85266
+ capScope: "system",
85267
+ addonId: null,
85268
+ access: "view",
85269
+ role: "admin"
85270
+ },
85271
+ "boardKeySource.listBoards": {
85272
+ capName: "board-key-source",
85273
+ capScope: "system",
85274
+ addonId: null,
85275
+ access: "view",
85276
+ role: "admin"
85277
+ },
85278
+ "boardKeySource.listSources": {
85279
+ capName: "board-key-source",
85280
+ capScope: "system",
85281
+ addonId: null,
85282
+ access: "view",
85283
+ role: "admin"
85284
+ },
85121
85285
  "brightness.getStatus": {
85122
85286
  capName: "brightness",
85123
85287
  capScope: "device",
@@ -89941,27 +90105,6 @@ Object.freeze({
89941
90105
  access: "create",
89942
90106
  role: "viewer"
89943
90107
  },
89944
- "petFountain.setPumpInterval": {
89945
- capName: "pet-fountain",
89946
- capScope: "device",
89947
- addonId: null,
89948
- access: "create",
89949
- role: "viewer"
89950
- },
89951
- "petFountain.setPumpOffMinutes": {
89952
- capName: "pet-fountain",
89953
- capScope: "device",
89954
- addonId: null,
89955
- access: "create",
89956
- role: "viewer"
89957
- },
89958
- "petFountain.setPumpOnMinutes": {
89959
- capName: "pet-fountain",
89960
- capScope: "device",
89961
- addonId: null,
89962
- access: "create",
89963
- role: "viewer"
89964
- },
89965
90108
  "pipelineAnalytics.addRetrainFrameFromRecording": {
89966
90109
  capName: "pipeline-analytics",
89967
90110
  capScope: "device",
@@ -91740,6 +91883,34 @@ Object.freeze({
91740
91883
  access: "create",
91741
91884
  role: "admin"
91742
91885
  },
91886
+ "pumpCycle.getStatus": {
91887
+ capName: "pump-cycle",
91888
+ capScope: "device",
91889
+ addonId: null,
91890
+ access: "view",
91891
+ role: "viewer"
91892
+ },
91893
+ "pumpCycle.setEnabled": {
91894
+ capName: "pump-cycle",
91895
+ capScope: "device",
91896
+ addonId: null,
91897
+ access: "create",
91898
+ role: "viewer"
91899
+ },
91900
+ "pumpCycle.setOffMinutes": {
91901
+ capName: "pump-cycle",
91902
+ capScope: "device",
91903
+ addonId: null,
91904
+ access: "create",
91905
+ role: "viewer"
91906
+ },
91907
+ "pumpCycle.setOnMinutes": {
91908
+ capName: "pump-cycle",
91909
+ capScope: "device",
91910
+ addonId: null,
91911
+ access: "create",
91912
+ role: "viewer"
91913
+ },
91743
91914
  "reboot.reboot": {
91744
91915
  capName: "reboot",
91745
91916
  capScope: "device",
@@ -96284,21 +96455,6 @@ Object.freeze({
96284
96455
  form: "single",
96285
96456
  optional: false
96286
96457
  }],
96287
- "petFountain.setPumpInterval": [{
96288
- name: "deviceId",
96289
- form: "single",
96290
- optional: false
96291
- }],
96292
- "petFountain.setPumpOffMinutes": [{
96293
- name: "deviceId",
96294
- form: "single",
96295
- optional: false
96296
- }],
96297
- "petFountain.setPumpOnMinutes": [{
96298
- name: "deviceId",
96299
- form: "single",
96300
- optional: false
96301
- }],
96302
96458
  "pipelineAnalytics.addRetrainFrameFromRecording": [{
96303
96459
  name: "deviceId",
96304
96460
  form: "single",
@@ -96934,6 +97090,26 @@ Object.freeze({
96934
97090
  form: "single",
96935
97091
  optional: false
96936
97092
  }],
97093
+ "pumpCycle.getStatus": [{
97094
+ name: "deviceId",
97095
+ form: "single",
97096
+ optional: false
97097
+ }],
97098
+ "pumpCycle.setEnabled": [{
97099
+ name: "deviceId",
97100
+ form: "single",
97101
+ optional: false
97102
+ }],
97103
+ "pumpCycle.setOffMinutes": [{
97104
+ name: "deviceId",
97105
+ form: "single",
97106
+ optional: false
97107
+ }],
97108
+ "pumpCycle.setOnMinutes": [{
97109
+ name: "deviceId",
97110
+ form: "single",
97111
+ optional: false
97112
+ }],
96937
97113
  "reboot.reboot": [{
96938
97114
  name: "deviceId",
96939
97115
  form: "single",
@@ -100203,6 +100379,16 @@ var NC_TEMPLATE_VARS = [
100203
100379
  kinds: ["system"],
100204
100380
  systemEventKinds: [...COMBINED_ALARM]
100205
100381
  },
100382
+ {
100383
+ name: "changes",
100384
+ label: "Intrusion changes",
100385
+ example: "Laundry lock unlocked, Back door open",
100386
+ group: "system",
100387
+ families: ["rule"],
100388
+ fields: [...RULE_TEXT],
100389
+ kinds: ["system"],
100390
+ systemEventKinds: [...COMBINED_ALARM]
100391
+ },
100206
100392
  {
100207
100393
  name: "deviceId",
100208
100394
  label: "Device id",
@@ -103017,4 +103203,4 @@ function buildClipModelRegistry(entries) {
103017
103203
  /** The built-in catalog's registry. */
103018
103204
  var BUILTIN_CLIP_MODELS = buildClipModelRegistry(CLIP_IMAGE_MODELS);
103019
103205
  //#endregion
103020
- export { MAX_TRACK_RELATIONS as $, DEFAULT_FIRST_SIGHTING_FRESHNESS_MS as $i, bundledCamstack as $n, normalizeNcAction as $r, NcTemplateVarDescriptorSchema as $t, DETECTION_MACRO_CLASSES as A, strictObject as Aa, sceneMonitorCapability as Ai, TrackPuritySchema as An, isAlertEpisodeOpen as Ar, NcAlarmConfigSchema as At, EXPORT_DENSE_MAX_RANGES as B, sunTimes as Bi, alertEpisodeKind as Bn, isLabelSupplyStepId as Br, NcRuleSchema as Bt, COCO_TO_MACRO as C, discriminatedUnion as Ca, retrainRevisionConflictMessage as Ci, SetTrackRelationInputSchema as Cn, eventKindLabel as Cr, NC_GROUPING_MIN_SEC as Ct, DEFAULT_DETAIL_CROP_CONVENTION as D, object as Da, ruleDeviceCompatCapQueries as Di, TimelapseRulePatchSchema as Dn, gifDeriveSpeed as Dr, NC_SYSTEM_EVENT_KIND_GROUP_SPECS as Dt, CoverStateSchema as E, number as Ea, ruleBelongsToAlarm as Ei, TimelapseRuleInputSchema as En, failureContributionCapability as Er, NC_STATE_SUMMARY_SECTION_IDS as Et, EMBEDDING_REQUIREMENTS_FAILED as F, unknown as Fa, storageOccupancyCapability as Fi, activateAlarmProfile as Fn, isDetectionMacroClass as Fr, NcConditionDescriptorSchema as Ft, LabelAttributionSchema as G, systemEventSummaryScheduleOf as Gi, applySecureOnArmEdit as Gn, isSystemDelivery as Gr, NcSnoozeInputSchema as Gt, FULL_IMAGE_BBOX as H, systemEventDeliveryProblems as Hi, applyBlockingEdit as Hn, isRetiredClearKey as Hr, NcRuleUpdateInputSchema as Ht, EMBEDDING_REQUIREMENTS_UNAVAILABLE as I, DeviceType as Ia, subKindsOf as Ii, addonWidgetsSourceCapability as In, isDrawableSubjectPath as Ir, NcConditionsSchema as It, LockStateSchema as J, templateVarsFor as Ji, audioMetricsCapability as Jn, kebabToCamel as Jr, NcStateSummarySectionIdSchema as Jt, ListTrackRelationsInputSchema as K, systemEventSummarySplitOf as Ki, armRemovalReconcile as Kn, isSystemEventSummaryRule as Kr, NcSnoozeSchema as Kt, EVENT_DENSITY_BATCH_MAX as L, errMsg as La, subjectPathSampleFromBox as Li, alarmDeviceSecureOnArm as Ln, isEventKindLabelKey as Lr, NcRuleActionSchema as Lt, DeclaredDevices as M, templateLiteral as Ma, sensorRaisedOf as Mi, TrackRelationSchema as Mn, isAppLinkBase as Mr, NcAlarmSensorsInputSchema as Mt, DetectionSourceSchema as N, tuple as Na, servedTemplateVars as Ni, TrackSideSchema as Nn, isAudioClassName as Nr, NcAlarmSensorsSchema as Nt, DEFAULT_EVENT_COLOR as O, partialRecord as Oa, ruleGroupingApplies as Oi, TimelapseRuleSchema as On, gifFromMp4Args as Or, NC_TAXONOMY as Ot, EMBEDDING_MODEL_FAILED as P, union as Pa, startMoverUnderClearance as Pi, TrackSourceSchema as Pn, isDefaultAlarmProfileId as Pr, NcAlarmSettingsPatchSchema as Pt, MAX_TRACK_PURITIES as Q, zoneAnalyticsCapability as Qi, buildViewerLink as Qn, ncMediaPolicyError as Qr, NcTemplatePreviewSchema as Qt, EVENT_KIND_BY_CAP as R, EventCategory as Ra, subjectPathSvgPoints as Ri, alarmPanelCapability as Rn, isEventOwnerType as Rr, NcRuleInputSchema as Rt, BucketAccumulator as S, boolean as Sa, resolvePoolMemoryPolicy as Si, SetTrackPurityResultSchema as Sn, ensureAlarmProfiles as Sr, NC_GROUPING_MAX_SEC as St, ClearTrackRelationResultSchema as T, looseObject as Ta, ruleAutoTriggersAlarm as Ti, TRACK_RELATIONS_DEFAULT_LIMIT as Tn, faceGalleryCapability as Tr, NC_SNOOZE_MAX_MINUTES as Tt, FailureCounters as U, systemEventFamilyProblems as Ui, applyModeDelaysEdits as Un, isRootSuppliableStepId as Ur, NcScheduleSchema as Ut, FIRST_LEVEL_MACRO_CLASSES as V, syncActiveAlarmProfileSettings as Vi, alertEpisodePayload as Vn, isMediaOwnerType as Vr, NcRuleTargetSchema as Vt, LABEL_SUPPLY_MACRO as W, systemEventFilterApplies as Wi, applyNonBlockingEdit as Wn, isScheduleActive as Wr, NcSharedSequenceSchema as Wt, MAX_BIRTH_DECISION_RECORDS as X, viewerLinkBaseOf as Xi, buildEventKindDescriptor as Xn, mayWriteToLocation as Xr, NcTaxonomySchema as Xt, MAX_ARCHIVED_DEBUG_NOTES as Y, vectorDimFromBase64 as Yi, audioModeOf as Yn, linkedStepOf as Yr, NcSystemEventKindSchema as Yt, MAX_BIRTH_LATENCY_PROXY_MS as Z, withSystemEventClasses as Zi, buildSubjectPath as Zn, memoizePinnedFfmpeg as Zr, NcTemplatePreviewInputSchema as Zt, AlarmArmModeSchema as _, normalizeNodeId as _a, resolveDeliveryParams as _i, SCENE_DEFAULT_UNCOVERED_POLICY as _n, embeddingModelFailedError as _r, NC_CONFIRM_DEFAULT_TIMEOUT_MS as _t, CLIP_EMBEDDING_STEP_ID as a, CamProfileSchema as aa, paletteResultSchema as ai, RECORDING_SOURCE_CAMSTACK_ADDON as an, coreBlockIdFromAddonId as ar, NC_ALARM_DELAY_FIELDS as at, BaseDevice as b, _enum as ba, resolveModeNotifyPolicy as bi, SceneMonitorSchema as bn, embeddingRequirementsUnavailableError as br, NC_DEFAULT_SNOOZE_MINUTES as bt, readClusterModelPinStrict as c, RECORD_QUERY_MAX as ca, pickFaceRescoreIntervalMinutes as ci, RetrainOriginSchema as cn, deleteAlarmProfile as cr, NC_ALARM_SYSTEM_EVENT_KINDS as ct, APPEARANCE_BIN_COUNT as d, defineAddonMigrations as da, projectSubjectPath as di, SCENE_CONFIRM_DEFAULT_MAX_IMAGE_PX as dn, deriveRecordingMode as dr, NC_AUDIO_CONFIRM_WINDOW_SEC_DEFAULT as dt, canonicalHash as ea, normalizeNcCapTarget as ei, OPS_LOG_DEFAULT_LIMIT as en, calendarEventLocalSpan as er, MOTION_CLOSE_AFTER_MS as et, APPEARANCE_BLOCKS as f, defineCustomActions as fa, readDeviceStateFrom as fi, SCENE_CONFIRM_DEFAULT_TIMEOUT_MS as fn, describeSystemEventDeliveryProblem as fr, NC_CLIP_POST_ROLL_DEFAULT_SEC as ft, ActionTargetResolver as g, nodePin as ga, resolveClipSearchMinScore as gi, SCENE_DEFAULT_QUIET_SECONDS as gn, embeddingEncoderCapability as gr, NC_CONFIRM_DEFAULT_MAX_IMAGE_PX as gt, AUDIO_MACRO_LABELS as h, isDeviceScopedCap as ha, renameAlarmProfile as hi, SCENE_DEFAULT_OBSERVATION_SPACING_SEC as hn, deviceRemovalHookCapability as hr, NC_CONDITION_CATALOG as ht, CLIP_TEXT_MODELS as i, CAP_ADVANCE_FIELDS as ia, paintHex as ii, RECORDING_EXPORT_MAX_READ_BYTES as in, consumableLowPercentOf as ir, NC_ALARM_DEFAULT_TRIGGERED_DURATION_SEC as it, DETECTION_PIPELINE_CAP_NAME as j, string as ja, secureActuationFor as ji, TrackRelationKindSchema as jn, isAlertEpisodeSeverity as jr, NcAlarmPostTriggeredActionSchema as jt, DEFAULT_TIMELAPSE_PREVIEW_TEXT as k, record as ka, ruleKindOf as ki, TrackPlacementSchema as kn, isAlarmControllableCap as kr, NC_TEMPLATE_VARS as kt, resolveClusterModelPin as l, createEvent as la, pipelineAnalyticsCapability as li, RetrainStatusSchema as ln, deriveDetailCropRect as lr, NC_ALARM_TRIGGERED_MAX_SEC as lt, ARCHIVED_DEBUG_NOTES_DEFAULT_LIMIT as m, hydrateSchema as ma, readTimelapseGeneratedAt as mi, SCENE_DEFAULT_CHECK_INTERVAL_SEC as mn, deviceAttentionKind as mr, NC_CLIP_RETENTION_MAX_SEC as mt, DEFAULT_CLIP_MODEL as n, isSourceCap as na, notificationRulesCapability as ni, PackageLlmVerdictSchema as nn, cloneAlarmSettings as nr, MotionTriggeredBySchema as nt, CLUSTER_MODEL_OWNER_ADDON_ID as o, InvalidRecordError as oa, parseAlertEpisodePayload as oi, RebuildObjectEmbeddingsRefusalSchema as on, cosineSimilarity as or, NC_ALARM_DELAY_MAX_SEC as ot, APPEARANCE_RESOLVES_AMBIGUITY_DEFAULT as p, defineRecordKinds as pa, readMotionTriggeredBy as pi, SCENE_DEFAULT_ANCHOR_THRESHOLD as pn, describeSystemEventFamilyProblem as pr, NC_CLIP_PRE_ROLL_DEFAULT_SEC as pt, ListTrackRelationsResultSchema as q, templateCarriesSummary as qi, assertTimelapseCadences as qn, isVectorIndexDimConflict as qr, NcSnoozeSuppressedSchema as qt, CLIP_IMAGE_MODELS as r, BaseAddon as ra, occupancyScope as ri, PoolMemoryWatchdog as rn, consumableFormOf as rr, NC_ALARM_DEFAULT_PROFILE_ID as rt, FACE_EMBEDDING_STEP_ID as s, RECORD_MAX_DATA_BYTES as sa, parseProcStatus as si, RetrainDismissedSchema as sn, createAlarmProfile as sr, NC_ALARM_NOTIFY_FIELDS as st, BUILTIN_CLIP_MODELS as t, evaluateSensorEdge as ta, normalizeNcMediaPolicy as ti, OpsLogEntrySchema as tn, classifyRetrainReview as tr, MediaFileKindEnum as tt, ACTION_TARGET_INVALIDATION_EVENTS as u, customAction as ua, plateGalleryCapability as ui, RetrainVerdictSubjectSchema as un, derivePostTriggeredAction as ur, NC_AUDIO_CONFIRM_HITS_DEFAULT as ut, ArchivedDebugNoteSchema as v, sleep as va, resolveLocationMode as vi, SCENE_DIVERGED as vn, embeddingRefusalOf as vr, NC_CONSUMABLE_LOW_PERCENT_DEFAULT as vt, ClearTrackRelationInputSchema as w, literal as wa, rootSupplyServes as wi, TIMELAPSE_DENSE_FLOOR_SEC as wn, evictionPolicyOfLocation as wr, NC_SENSOR_TRANSITION_KINDS as wt, BirthDecisionRecordSchema as x, array as xa, resolveNcMediaImage as xi, SetTrackPurityInputSchema as xn, encodeVectorBase64 as xr, NC_GROUPING_DEFAULT_SEC as xt, BIRTH_DECISION_DEFAULT_LIMIT as y, ZodObject as ya, resolveModeDelays as yi, SCENE_RESET_RECAPTURES as yn, embeddingRequirementsFailedError as yr, NC_CONSUMABLE_SYSTEM_EVENT_KINDS as yt, EVENT_OWNER_TYPES as z, summarizeReview as zi, alertEpisodeId as zn, isKnownTemplateVar as zr, NcRulePatchSchema as zt };
103206
+ export { MAX_TRACK_RELATIONS as $, zoneAnalyticsCapability as $i, buildViewerLink as $n, ncMediaPolicyError as $r, NcTemplatePreviewSchema as $t, DETECTION_MACRO_CLASSES as A, record as Aa, ruleKindOf as Ai, TrackPlacementSchema as An, isAlarmControllableCap as Ar, NcAlarmConfigSchema as At, EXPORT_DENSE_MAX_RANGES as B, summarizeReview as Bi, alertEpisodeId as Bn, isKnownTemplateVar as Br, NcRuleSchema as Bt, COCO_TO_MACRO as C, boolean as Ca, resolvePoolMemoryPolicy as Ci, SetTrackPurityResultSchema as Cn, ensureAlarmProfiles as Cr, NC_GROUPING_MIN_SEC as Ct, DEFAULT_DETAIL_CROP_CONVENTION as D, number as Da, ruleBelongsToAlarm as Di, TimelapseRuleInputSchema as Dn, failureContributionCapability as Dr, NC_SYSTEM_EVENT_KIND_GROUP_SPECS as Dt, CoverStateSchema as E, looseObject as Ea, ruleAutoTriggersAlarm as Ei, TRACK_RELATIONS_DEFAULT_LIMIT as En, faceGalleryCapability as Er, NC_STATE_SUMMARY_SECTION_IDS as Et, EMBEDDING_REQUIREMENTS_FAILED as F, union as Fa, startMoverUnderClearance as Fi, TrackSourceSchema as Fn, isDefaultAlarmProfileId as Fr, NcConditionDescriptorSchema as Ft, LabelAttributionSchema as G, systemEventFilterApplies as Gi, applyNonBlockingEdit as Gn, isScheduleActive as Gr, NcSnoozeInputSchema as Gt, FULL_IMAGE_BBOX as H, syncActiveAlarmProfileSettings as Hi, alertEpisodePayload as Hn, isMediaOwnerType as Hr, NcRuleUpdateInputSchema as Ht, EMBEDDING_REQUIREMENTS_UNAVAILABLE as I, unknown as Ia, storageOccupancyCapability as Ii, activateAlarmProfile as In, isDetectionMacroClass as Ir, NcConditionsSchema as It, LockStateSchema as J, templateCarriesSummary as Ji, assertTimelapseCadences as Jn, isVectorIndexDimConflict as Jr, NcStateSummarySectionIdSchema as Jt, ListTrackRelationsInputSchema as K, systemEventSummaryScheduleOf as Ki, applySecureOnArmEdit as Kn, isSystemDelivery as Kr, NcSnoozeSchema as Kt, EVENT_DENSITY_BATCH_MAX as L, DeviceType as La, subKindsOf as Li, addonWidgetsSourceCapability as Ln, isDrawableSubjectPath as Lr, NcRuleActionSchema as Lt, DeclaredDevices as M, string as Ma, secureActuationFor as Mi, TrackRelationKindSchema as Mn, isAlertEpisodeSeverity as Mr, NcAlarmSensorsInputSchema as Mt, DetectionSourceSchema as N, templateLiteral as Na, sensorRaisedOf as Ni, TrackRelationSchema as Nn, isAppLinkBase as Nr, NcAlarmSensorsSchema as Nt, DEFAULT_EVENT_COLOR as O, object as Oa, ruleDeviceCompatCapQueries as Oi, TimelapseRulePatchSchema as On, gifDeriveSpeed as Or, NC_TAXONOMY as Ot, EMBEDDING_MODEL_FAILED as P, tuple as Pa, servedTemplateVars as Pi, TrackSideSchema as Pn, isAudioClassName as Pr, NcAlarmSettingsPatchSchema as Pt, MAX_TRACK_PURITIES as Q, withSystemEventClasses as Qi, buildSubjectPath as Qn, memoizePinnedFfmpeg as Qr, NcTemplatePreviewInputSchema as Qt, EVENT_KIND_BY_CAP as R, errMsg as Ra, subjectPathSampleFromBox as Ri, alarmDeviceSecureOnArm as Rn, isEventKindLabelKey as Rr, NcRuleInputSchema as Rt, BucketAccumulator as S, array as Sa, resolveNcMediaImage as Si, SetTrackPurityInputSchema as Sn, encodeVectorBase64 as Sr, NC_GROUPING_MAX_SEC as St, ClearTrackRelationResultSchema as T, literal as Ta, rootSupplyServes as Ti, TIMELAPSE_DENSE_FLOOR_SEC as Tn, evictionPolicyOfLocation as Tr, NC_SNOOZE_MAX_MINUTES as Tt, FailureCounters as U, systemEventDeliveryProblems as Ui, applyBlockingEdit as Un, isRetiredClearKey as Ur, NcScheduleSchema as Ut, FIRST_LEVEL_MACRO_CLASSES as V, sunTimes as Vi, alertEpisodeKind as Vn, isLabelSupplyStepId as Vr, NcRuleTargetSchema as Vt, LABEL_SUPPLY_MACRO as W, systemEventFamilyProblems as Wi, applyModeDelaysEdits as Wn, isRootSuppliableStepId as Wr, NcSharedSequenceSchema as Wt, MAX_BIRTH_DECISION_RECORDS as X, vectorDimFromBase64 as Xi, audioModeOf as Xn, linkedStepOf as Xr, NcTaxonomySchema as Xt, MAX_ARCHIVED_DEBUG_NOTES as Y, templateVarsFor as Yi, audioMetricsCapability as Yn, kebabToCamel as Yr, NcSystemEventKindSchema as Yt, MAX_BIRTH_LATENCY_PROXY_MS as Z, viewerLinkBaseOf as Zi, buildEventKindDescriptor as Zn, mayWriteToLocation as Zr, NcTemplateDefaultSchema as Zt, AlarmArmModeSchema as _, nodePin as _a, resolveClipSearchMinScore as _i, SCENE_DEFAULT_QUIET_SECONDS as _n, embeddingEncoderCapability as _r, NC_CONFIRM_DEFAULT_TIMEOUT_MS as _t, CLIP_EMBEDDING_STEP_ID as a, CAP_ADVANCE_FIELDS as aa, paintHex as ai, RECORDING_EXPORT_MAX_READ_BYTES as an, consumableLowPercentOf as ar, NC_ALARM_DELAY_FIELDS as at, BaseDevice as b, ZodObject as ba, resolveModeDelays as bi, SCENE_RESET_RECAPTURES as bn, embeddingRequirementsFailedError as br, NC_DEFAULT_SNOOZE_MINUTES as bt, readClusterModelPinStrict as c, RECORD_MAX_DATA_BYTES as ca, parseProcStatus as ci, RetrainDismissedSchema as cn, createAlarmProfile as cr, NC_ALARM_SYSTEM_EVENT_KINDS as ct, APPEARANCE_BIN_COUNT as d, customAction as da, plateGalleryCapability as di, RetrainVerdictSubjectSchema as dn, derivePostTriggeredAction as dr, NC_AUDIO_CONFIRM_WINDOW_SEC_DEFAULT as dt, DEFAULT_FIRST_SIGHTING_FRESHNESS_MS as ea, normalizeNcAction as ei, NcTemplateVarDescriptorSchema as en, bundledCamstack as er, MOTION_CLOSE_AFTER_MS as et, APPEARANCE_BLOCKS as f, defineAddonMigrations as fa, projectSubjectPath as fi, SCENE_CONFIRM_DEFAULT_MAX_IMAGE_PX as fn, deriveRecordingMode as fr, NC_CLIP_POST_ROLL_DEFAULT_SEC as ft, ActionTargetResolver as g, isDeviceScopedCap as ga, renameAlarmProfile as gi, SCENE_DEFAULT_OBSERVATION_SPACING_SEC as gn, deviceRemovalHookCapability as gr, NC_CONFIRM_DEFAULT_MAX_IMAGE_PX as gt, AUDIO_MACRO_LABELS as h, hydrateSchema as ha, readTimelapseGeneratedAt as hi, SCENE_DEFAULT_CHECK_INTERVAL_SEC as hn, deviceAttentionKind as hr, NC_CONDITION_CATALOG as ht, CLIP_TEXT_MODELS as i, BaseAddon as ia, occupancyScope as ii, PoolMemoryWatchdog as in, consumableFormOf as ir, NC_ALARM_DEFAULT_TRIGGERED_DURATION_SEC as it, DETECTION_PIPELINE_CAP_NAME as j, strictObject as ja, sceneMonitorCapability as ji, TrackPuritySchema as jn, isAlertEpisodeOpen as jr, NcAlarmPostTriggeredActionSchema as jt, DEFAULT_TIMELAPSE_PREVIEW_TEXT as k, partialRecord as ka, ruleGroupingApplies as ki, TimelapseRuleSchema as kn, gifFromMp4Args as kr, NC_TEMPLATE_VARS as kt, resolveClusterModelPin as l, RECORD_QUERY_MAX as la, pickFaceRescoreIntervalMinutes as li, RetrainOriginSchema as ln, deleteAlarmProfile as lr, NC_ALARM_TRIGGERED_MAX_SEC as lt, ARCHIVED_DEBUG_NOTES_DEFAULT_LIMIT as m, defineRecordKinds as ma, readMotionTriggeredBy as mi, SCENE_DEFAULT_ANCHOR_THRESHOLD as mn, describeSystemEventFamilyProblem as mr, NC_CLIP_RETENTION_MAX_SEC as mt, DEFAULT_CLIP_MODEL as n, evaluateSensorEdge as na, normalizeNcMediaPolicy as ni, OpsLogEntrySchema as nn, classifyRetrainReview as nr, MotionTriggeredBySchema as nt, CLUSTER_MODEL_OWNER_ADDON_ID as o, CamProfileSchema as oa, paletteResultSchema as oi, RECORDING_SOURCE_CAMSTACK_ADDON as on, coreBlockIdFromAddonId as or, NC_ALARM_DELAY_MAX_SEC as ot, APPEARANCE_RESOLVES_AMBIGUITY_DEFAULT as p, defineCustomActions as pa, readDeviceStateFrom as pi, SCENE_CONFIRM_DEFAULT_TIMEOUT_MS as pn, describeSystemEventDeliveryProblem as pr, NC_CLIP_PRE_ROLL_DEFAULT_SEC as pt, ListTrackRelationsResultSchema as q, systemEventSummarySplitOf as qi, armRemovalReconcile as qn, isSystemEventSummaryRule as qr, NcSnoozeSuppressedSchema as qt, CLIP_IMAGE_MODELS as r, isSourceCap as ra, notificationRulesCapability as ri, PackageLlmVerdictSchema as rn, cloneAlarmSettings as rr, NC_ALARM_DEFAULT_PROFILE_ID as rt, FACE_EMBEDDING_STEP_ID as s, InvalidRecordError as sa, parseAlertEpisodePayload as si, RebuildObjectEmbeddingsRefusalSchema as sn, cosineSimilarity as sr, NC_ALARM_NOTIFY_FIELDS as st, BUILTIN_CLIP_MODELS as t, canonicalHash as ta, normalizeNcCapTarget as ti, OPS_LOG_DEFAULT_LIMIT as tn, calendarEventLocalSpan as tr, MediaFileKindEnum as tt, ACTION_TARGET_INVALIDATION_EVENTS as u, createEvent as ua, pipelineAnalyticsCapability as ui, RetrainStatusSchema as un, deriveDetailCropRect as ur, NC_AUDIO_CONFIRM_HITS_DEFAULT as ut, ArchivedDebugNoteSchema as v, normalizeNodeId as va, resolveDeliveryParams as vi, SCENE_DEFAULT_UNCOVERED_POLICY as vn, embeddingModelFailedError as vr, NC_CONSUMABLE_LOW_PERCENT_DEFAULT as vt, ClearTrackRelationInputSchema as w, discriminatedUnion as wa, retrainRevisionConflictMessage as wi, SetTrackRelationInputSchema as wn, eventKindLabel as wr, NC_SENSOR_TRANSITION_KINDS as wt, BirthDecisionRecordSchema as x, _enum as xa, resolveModeNotifyPolicy as xi, SceneMonitorSchema as xn, embeddingRequirementsUnavailableError as xr, NC_GROUPING_DEFAULT_SEC as xt, BIRTH_DECISION_DEFAULT_LIMIT as y, sleep as ya, resolveLocationMode as yi, SCENE_DIVERGED as yn, embeddingRefusalOf as yr, NC_CONSUMABLE_SYSTEM_EVENT_KINDS as yt, EVENT_OWNER_TYPES as z, EventCategory as za, subjectPathSvgPoints as zi, alarmPanelCapability as zn, isEventOwnerType as zr, NcRulePatchSchema as zt };