@camstack/addon-smtp-nodemailer 1.2.87 → 1.2.89

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.
@@ -20365,6 +20365,22 @@ var occupancyRecheckFramesField = {
20365
20365
  step: 1
20366
20366
  };
20367
20367
  /**
20368
+ * Frames one PRE-ROLL catch-up burst may send to inference at session open.
20369
+ *
20370
+ * The default of 12 over a ~4 s retained window is one frame per ~333 ms of
20371
+ * footage, and costs ~480 ms of ONE inference permit at the 40 ms/frame this
20372
+ * fleet measures — one-shot, and only ever taken while a permit would still be
20373
+ * spare for live. `0` turns the burst off entirely (the history is still
20374
+ * decoded, because that is how the dial reaches a decodable GOP, and is then
20375
+ * discarded — the pre-D411 behaviour).
20376
+ */
20377
+ var preRollInferenceFramesField = {
20378
+ min: 0,
20379
+ max: 30,
20380
+ default: 12,
20381
+ step: 1
20382
+ };
20383
+ /**
20368
20384
  * Source enum for motion signals fed to the runner. Extensible — add
20369
20385
  * new variants here when new motion-trigger paths are wired in
20370
20386
  * (`wasm-cross-camera`, `event-bus-relay`, etc.). The runner uses
@@ -20605,6 +20621,31 @@ var RunnerCameraConfigSchema = object({
20605
20621
  * to every occupancy rule until something moved in front of it. The churn is
20606
20622
  * now paid on the interval instead — see `occupancyRecheckSecField`.
20607
20623
  */
20624
+ /**
20625
+ * Infer the session's PRE-ROLL — the retained history the restreamer replays
20626
+ * at session open — instead of decoding it and throwing it away.
20627
+ *
20628
+ * DEFAULT `true`, and the default is the argument. This is not a new
20629
+ * capability being offered cautiously: the pre-roll is ALREADY requested,
20630
+ * already served, already decoded and already paid for on every on-motion
20631
+ * detection session that asks for history. What shipped was a last-moment
20632
+ * discard — `FrameSlot`'s throttle compares wall clocks, and ~4 s of media
20633
+ * arriving inside a few hundred ms of wall clock looks to it like one frame's
20634
+ * worth. Device 617, 2026-09-08: a re-run of the SAME model over the stored
20635
+ * recording scored the subject `vehicle 0.5669` — above the 0.50 floor —
20636
+ * 1.68 s BEFORE the live track was born, on a frame that was in the pre-roll,
20637
+ * was decoded, and was freed.
20638
+ *
20639
+ * Shipping that as opt-in would ship the bug: an operator cannot discover a
20640
+ * setting whose absence looks exactly like a camera that noticed the cyclist
20641
+ * late. What makes ON safe is not a switch but the BOUND —
20642
+ * `preRollInferenceFrames`, a wall-clock ceiling, and a lane that never takes
20643
+ * the last inference permit — so the switch exists for the camera where the
20644
+ * history is worthless (a doorbell whose subject is always already at the
20645
+ * door), not as a hedge against the feature.
20646
+ */
20647
+ preRollInferenceEnabled: boolean().default(true),
20648
+ preRollInferenceFrames: number().min(preRollInferenceFramesField.min).max(preRollInferenceFramesField.max).default(preRollInferenceFramesField.default),
20608
20649
  occupancyRecheckEnabled: boolean().default(true),
20609
20650
  occupancyRecheckSec: number().min(occupancyRecheckSecField.min).max(occupancyRecheckSecField.max).default(occupancyRecheckSecField.default),
20610
20651
  occupancyRecheckFrames: number().min(occupancyRecheckFramesField.min).max(occupancyRecheckFramesField.max).default(occupancyRecheckFramesField.default),
@@ -20633,7 +20674,7 @@ var RunnerCameraConfigSchema = object({
20633
20674
  */
20634
20675
  inferenceDevices: array(RunnerInferenceDeviceSchema).readonly().optional()
20635
20676
  });
20636
- motionFpsField.min, motionFpsField.max, motionFpsField.step, motionFpsField.default, detectionFpsField.min, detectionFpsField.max, detectionFpsField.step, detectionFpsField.default, motionCooldownMsField.min, motionCooldownMsField.max, motionCooldownMsField.step, motionCooldownMsField.default, maxSessionHoldMsField.min, maxSessionHoldMsField.max, maxSessionHoldMsField.step, maxSessionHoldMsField.default, audioMotionWindowMsField.min, audioMotionWindowMsField.max, audioMotionWindowMsField.step, audioMotionWindowMsField.default, occupancyRecheckSecField.min, occupancyRecheckSecField.max, occupancyRecheckSecField.step, occupancyRecheckSecField.default, occupancyRecheckFramesField.min, occupancyRecheckFramesField.max, occupancyRecheckFramesField.step, occupancyRecheckFramesField.default;
20677
+ motionFpsField.min, motionFpsField.max, motionFpsField.step, motionFpsField.default, detectionFpsField.min, detectionFpsField.max, detectionFpsField.step, detectionFpsField.default, motionCooldownMsField.min, motionCooldownMsField.max, motionCooldownMsField.step, motionCooldownMsField.default, maxSessionHoldMsField.min, maxSessionHoldMsField.max, maxSessionHoldMsField.step, maxSessionHoldMsField.default, audioMotionWindowMsField.min, audioMotionWindowMsField.max, audioMotionWindowMsField.step, audioMotionWindowMsField.default, preRollInferenceFramesField.min, preRollInferenceFramesField.max, preRollInferenceFramesField.step, preRollInferenceFramesField.default, occupancyRecheckSecField.min, occupancyRecheckSecField.max, occupancyRecheckSecField.step, occupancyRecheckSecField.default, occupancyRecheckFramesField.min, occupancyRecheckFramesField.max, occupancyRecheckFramesField.step, occupancyRecheckFramesField.default;
20637
20678
  /**
20638
20679
  * Runtime load summary returned by `getLocalLoad`. Used by the orchestrator's
20639
20680
  * load-balancing levels (L2 capacity-based, L3 hardware-aware) to decide
@@ -20363,6 +20363,22 @@ var occupancyRecheckFramesField = {
20363
20363
  step: 1
20364
20364
  };
20365
20365
  /**
20366
+ * Frames one PRE-ROLL catch-up burst may send to inference at session open.
20367
+ *
20368
+ * The default of 12 over a ~4 s retained window is one frame per ~333 ms of
20369
+ * footage, and costs ~480 ms of ONE inference permit at the 40 ms/frame this
20370
+ * fleet measures — one-shot, and only ever taken while a permit would still be
20371
+ * spare for live. `0` turns the burst off entirely (the history is still
20372
+ * decoded, because that is how the dial reaches a decodable GOP, and is then
20373
+ * discarded — the pre-D411 behaviour).
20374
+ */
20375
+ var preRollInferenceFramesField = {
20376
+ min: 0,
20377
+ max: 30,
20378
+ default: 12,
20379
+ step: 1
20380
+ };
20381
+ /**
20366
20382
  * Source enum for motion signals fed to the runner. Extensible — add
20367
20383
  * new variants here when new motion-trigger paths are wired in
20368
20384
  * (`wasm-cross-camera`, `event-bus-relay`, etc.). The runner uses
@@ -20603,6 +20619,31 @@ var RunnerCameraConfigSchema = object({
20603
20619
  * to every occupancy rule until something moved in front of it. The churn is
20604
20620
  * now paid on the interval instead — see `occupancyRecheckSecField`.
20605
20621
  */
20622
+ /**
20623
+ * Infer the session's PRE-ROLL — the retained history the restreamer replays
20624
+ * at session open — instead of decoding it and throwing it away.
20625
+ *
20626
+ * DEFAULT `true`, and the default is the argument. This is not a new
20627
+ * capability being offered cautiously: the pre-roll is ALREADY requested,
20628
+ * already served, already decoded and already paid for on every on-motion
20629
+ * detection session that asks for history. What shipped was a last-moment
20630
+ * discard — `FrameSlot`'s throttle compares wall clocks, and ~4 s of media
20631
+ * arriving inside a few hundred ms of wall clock looks to it like one frame's
20632
+ * worth. Device 617, 2026-09-08: a re-run of the SAME model over the stored
20633
+ * recording scored the subject `vehicle 0.5669` — above the 0.50 floor —
20634
+ * 1.68 s BEFORE the live track was born, on a frame that was in the pre-roll,
20635
+ * was decoded, and was freed.
20636
+ *
20637
+ * Shipping that as opt-in would ship the bug: an operator cannot discover a
20638
+ * setting whose absence looks exactly like a camera that noticed the cyclist
20639
+ * late. What makes ON safe is not a switch but the BOUND —
20640
+ * `preRollInferenceFrames`, a wall-clock ceiling, and a lane that never takes
20641
+ * the last inference permit — so the switch exists for the camera where the
20642
+ * history is worthless (a doorbell whose subject is always already at the
20643
+ * door), not as a hedge against the feature.
20644
+ */
20645
+ preRollInferenceEnabled: boolean().default(true),
20646
+ preRollInferenceFrames: number().min(preRollInferenceFramesField.min).max(preRollInferenceFramesField.max).default(preRollInferenceFramesField.default),
20606
20647
  occupancyRecheckEnabled: boolean().default(true),
20607
20648
  occupancyRecheckSec: number().min(occupancyRecheckSecField.min).max(occupancyRecheckSecField.max).default(occupancyRecheckSecField.default),
20608
20649
  occupancyRecheckFrames: number().min(occupancyRecheckFramesField.min).max(occupancyRecheckFramesField.max).default(occupancyRecheckFramesField.default),
@@ -20631,7 +20672,7 @@ var RunnerCameraConfigSchema = object({
20631
20672
  */
20632
20673
  inferenceDevices: array(RunnerInferenceDeviceSchema).readonly().optional()
20633
20674
  });
20634
- motionFpsField.min, motionFpsField.max, motionFpsField.step, motionFpsField.default, detectionFpsField.min, detectionFpsField.max, detectionFpsField.step, detectionFpsField.default, motionCooldownMsField.min, motionCooldownMsField.max, motionCooldownMsField.step, motionCooldownMsField.default, maxSessionHoldMsField.min, maxSessionHoldMsField.max, maxSessionHoldMsField.step, maxSessionHoldMsField.default, audioMotionWindowMsField.min, audioMotionWindowMsField.max, audioMotionWindowMsField.step, audioMotionWindowMsField.default, occupancyRecheckSecField.min, occupancyRecheckSecField.max, occupancyRecheckSecField.step, occupancyRecheckSecField.default, occupancyRecheckFramesField.min, occupancyRecheckFramesField.max, occupancyRecheckFramesField.step, occupancyRecheckFramesField.default;
20675
+ motionFpsField.min, motionFpsField.max, motionFpsField.step, motionFpsField.default, detectionFpsField.min, detectionFpsField.max, detectionFpsField.step, detectionFpsField.default, motionCooldownMsField.min, motionCooldownMsField.max, motionCooldownMsField.step, motionCooldownMsField.default, maxSessionHoldMsField.min, maxSessionHoldMsField.max, maxSessionHoldMsField.step, maxSessionHoldMsField.default, audioMotionWindowMsField.min, audioMotionWindowMsField.max, audioMotionWindowMsField.step, audioMotionWindowMsField.default, preRollInferenceFramesField.min, preRollInferenceFramesField.max, preRollInferenceFramesField.step, preRollInferenceFramesField.default, occupancyRecheckSecField.min, occupancyRecheckSecField.max, occupancyRecheckSecField.step, occupancyRecheckSecField.default, occupancyRecheckFramesField.min, occupancyRecheckFramesField.max, occupancyRecheckFramesField.step, occupancyRecheckFramesField.default;
20635
20676
  /**
20636
20677
  * Runtime load summary returned by `getLocalLoad`. Used by the orchestrator's
20637
20678
  * load-balancing levels (L2 capacity-based, L3 hardware-aware) to decide
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@camstack/addon-smtp-nodemailer",
3
- "version": "1.2.87",
3
+ "version": "1.2.89",
4
4
  "description": "SMTP email provider addon for CamStack — wraps `nodemailer` and registers a `smtp-provider` cap collection entry. Used by magic-link login + notifier addons.",
5
5
  "keywords": [
6
6
  "camstack",