@camstack/addon-remote-storage 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.
package/dist/s3.addon.js CHANGED
@@ -2,7 +2,7 @@ Object.defineProperties(exports, {
2
2
  __esModule: { value: true },
3
3
  [Symbol.toStringTag]: { value: "Module" }
4
4
  });
5
- const require_shared = require("./shared-DDmz_SlX.js");
5
+ const require_shared = require("./shared-DGPc5-3O.js");
6
6
  let node_stream = require("node:stream");
7
7
  let _aws_sdk_client_s3 = require("@aws-sdk/client-s3");
8
8
  let _aws_sdk_lib_storage = require("@aws-sdk/lib-storage");
package/dist/s3.addon.mjs CHANGED
@@ -1,4 +1,4 @@
1
- import { c as BaseAddon, i as rearmIdleAbort, n as getOptionalBasePath, o as scheduleIdleAbort, s as storageProviderCapability, t as createSessionId } from "./shared-DHIG1I7o.mjs";
1
+ import { c as BaseAddon, i as rearmIdleAbort, n as getOptionalBasePath, o as scheduleIdleAbort, s as storageProviderCapability, t as createSessionId } from "./shared-B2_dMV3o.mjs";
2
2
  import { PassThrough } from "node:stream";
3
3
  import { DeleteObjectCommand, GetObjectCommand, HeadBucketCommand, HeadObjectCommand, ListObjectsV2Command, PutObjectCommand, S3Client } from "@aws-sdk/client-s3";
4
4
  import { Upload } from "@aws-sdk/lib-storage";
@@ -2,7 +2,7 @@ Object.defineProperties(exports, {
2
2
  __esModule: { value: true },
3
3
  [Symbol.toStringTag]: { value: "Module" }
4
4
  });
5
- const require_shared = require("./shared-DDmz_SlX.js");
5
+ const require_shared = require("./shared-DGPc5-3O.js");
6
6
  let ssh2 = require("ssh2");
7
7
  let node_path = require("node:path");
8
8
  node_path = require_shared.__toESM(node_path);
@@ -1,4 +1,4 @@
1
- import { a as safeJoinRemotePath, c as BaseAddon, i as rearmIdleAbort, o as scheduleIdleAbort, r as getRequiredBasePath, s as storageProviderCapability, t as createSessionId } from "./shared-DHIG1I7o.mjs";
1
+ import { a as safeJoinRemotePath, c as BaseAddon, i as rearmIdleAbort, o as scheduleIdleAbort, r as getRequiredBasePath, s as storageProviderCapability, t as createSessionId } from "./shared-B2_dMV3o.mjs";
2
2
  import { Client } from "ssh2";
3
3
  import * as path from "node:path";
4
4
  //#region src/providers/sftp/sftp-config-schema.ts
@@ -20329,6 +20329,22 @@ var occupancyRecheckFramesField = {
20329
20329
  step: 1
20330
20330
  };
20331
20331
  /**
20332
+ * Frames one PRE-ROLL catch-up burst may send to inference at session open.
20333
+ *
20334
+ * The default of 12 over a ~4 s retained window is one frame per ~333 ms of
20335
+ * footage, and costs ~480 ms of ONE inference permit at the 40 ms/frame this
20336
+ * fleet measures — one-shot, and only ever taken while a permit would still be
20337
+ * spare for live. `0` turns the burst off entirely (the history is still
20338
+ * decoded, because that is how the dial reaches a decodable GOP, and is then
20339
+ * discarded — the pre-D411 behaviour).
20340
+ */
20341
+ var preRollInferenceFramesField = {
20342
+ min: 0,
20343
+ max: 30,
20344
+ default: 12,
20345
+ step: 1
20346
+ };
20347
+ /**
20332
20348
  * Source enum for motion signals fed to the runner. Extensible — add
20333
20349
  * new variants here when new motion-trigger paths are wired in
20334
20350
  * (`wasm-cross-camera`, `event-bus-relay`, etc.). The runner uses
@@ -20569,6 +20585,31 @@ var RunnerCameraConfigSchema = object({
20569
20585
  * to every occupancy rule until something moved in front of it. The churn is
20570
20586
  * now paid on the interval instead — see `occupancyRecheckSecField`.
20571
20587
  */
20588
+ /**
20589
+ * Infer the session's PRE-ROLL — the retained history the restreamer replays
20590
+ * at session open — instead of decoding it and throwing it away.
20591
+ *
20592
+ * DEFAULT `true`, and the default is the argument. This is not a new
20593
+ * capability being offered cautiously: the pre-roll is ALREADY requested,
20594
+ * already served, already decoded and already paid for on every on-motion
20595
+ * detection session that asks for history. What shipped was a last-moment
20596
+ * discard — `FrameSlot`'s throttle compares wall clocks, and ~4 s of media
20597
+ * arriving inside a few hundred ms of wall clock looks to it like one frame's
20598
+ * worth. Device 617, 2026-09-08: a re-run of the SAME model over the stored
20599
+ * recording scored the subject `vehicle 0.5669` — above the 0.50 floor —
20600
+ * 1.68 s BEFORE the live track was born, on a frame that was in the pre-roll,
20601
+ * was decoded, and was freed.
20602
+ *
20603
+ * Shipping that as opt-in would ship the bug: an operator cannot discover a
20604
+ * setting whose absence looks exactly like a camera that noticed the cyclist
20605
+ * late. What makes ON safe is not a switch but the BOUND —
20606
+ * `preRollInferenceFrames`, a wall-clock ceiling, and a lane that never takes
20607
+ * the last inference permit — so the switch exists for the camera where the
20608
+ * history is worthless (a doorbell whose subject is always already at the
20609
+ * door), not as a hedge against the feature.
20610
+ */
20611
+ preRollInferenceEnabled: boolean().default(true),
20612
+ preRollInferenceFrames: number().min(preRollInferenceFramesField.min).max(preRollInferenceFramesField.max).default(preRollInferenceFramesField.default),
20572
20613
  occupancyRecheckEnabled: boolean().default(true),
20573
20614
  occupancyRecheckSec: number().min(occupancyRecheckSecField.min).max(occupancyRecheckSecField.max).default(occupancyRecheckSecField.default),
20574
20615
  occupancyRecheckFrames: number().min(occupancyRecheckFramesField.min).max(occupancyRecheckFramesField.max).default(occupancyRecheckFramesField.default),
@@ -20597,7 +20638,7 @@ var RunnerCameraConfigSchema = object({
20597
20638
  */
20598
20639
  inferenceDevices: array(RunnerInferenceDeviceSchema).readonly().optional()
20599
20640
  });
20600
- 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;
20641
+ 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;
20601
20642
  /**
20602
20643
  * Runtime load summary returned by `getLocalLoad`. Used by the orchestrator's
20603
20644
  * load-balancing levels (L2 capacity-based, L3 hardware-aware) to decide
@@ -20352,6 +20352,22 @@ var occupancyRecheckFramesField = {
20352
20352
  step: 1
20353
20353
  };
20354
20354
  /**
20355
+ * Frames one PRE-ROLL catch-up burst may send to inference at session open.
20356
+ *
20357
+ * The default of 12 over a ~4 s retained window is one frame per ~333 ms of
20358
+ * footage, and costs ~480 ms of ONE inference permit at the 40 ms/frame this
20359
+ * fleet measures — one-shot, and only ever taken while a permit would still be
20360
+ * spare for live. `0` turns the burst off entirely (the history is still
20361
+ * decoded, because that is how the dial reaches a decodable GOP, and is then
20362
+ * discarded — the pre-D411 behaviour).
20363
+ */
20364
+ var preRollInferenceFramesField = {
20365
+ min: 0,
20366
+ max: 30,
20367
+ default: 12,
20368
+ step: 1
20369
+ };
20370
+ /**
20355
20371
  * Source enum for motion signals fed to the runner. Extensible — add
20356
20372
  * new variants here when new motion-trigger paths are wired in
20357
20373
  * (`wasm-cross-camera`, `event-bus-relay`, etc.). The runner uses
@@ -20592,6 +20608,31 @@ var RunnerCameraConfigSchema = object({
20592
20608
  * to every occupancy rule until something moved in front of it. The churn is
20593
20609
  * now paid on the interval instead — see `occupancyRecheckSecField`.
20594
20610
  */
20611
+ /**
20612
+ * Infer the session's PRE-ROLL — the retained history the restreamer replays
20613
+ * at session open — instead of decoding it and throwing it away.
20614
+ *
20615
+ * DEFAULT `true`, and the default is the argument. This is not a new
20616
+ * capability being offered cautiously: the pre-roll is ALREADY requested,
20617
+ * already served, already decoded and already paid for on every on-motion
20618
+ * detection session that asks for history. What shipped was a last-moment
20619
+ * discard — `FrameSlot`'s throttle compares wall clocks, and ~4 s of media
20620
+ * arriving inside a few hundred ms of wall clock looks to it like one frame's
20621
+ * worth. Device 617, 2026-09-08: a re-run of the SAME model over the stored
20622
+ * recording scored the subject `vehicle 0.5669` — above the 0.50 floor —
20623
+ * 1.68 s BEFORE the live track was born, on a frame that was in the pre-roll,
20624
+ * was decoded, and was freed.
20625
+ *
20626
+ * Shipping that as opt-in would ship the bug: an operator cannot discover a
20627
+ * setting whose absence looks exactly like a camera that noticed the cyclist
20628
+ * late. What makes ON safe is not a switch but the BOUND —
20629
+ * `preRollInferenceFrames`, a wall-clock ceiling, and a lane that never takes
20630
+ * the last inference permit — so the switch exists for the camera where the
20631
+ * history is worthless (a doorbell whose subject is always already at the
20632
+ * door), not as a hedge against the feature.
20633
+ */
20634
+ preRollInferenceEnabled: boolean().default(true),
20635
+ preRollInferenceFrames: number().min(preRollInferenceFramesField.min).max(preRollInferenceFramesField.max).default(preRollInferenceFramesField.default),
20595
20636
  occupancyRecheckEnabled: boolean().default(true),
20596
20637
  occupancyRecheckSec: number().min(occupancyRecheckSecField.min).max(occupancyRecheckSecField.max).default(occupancyRecheckSecField.default),
20597
20638
  occupancyRecheckFrames: number().min(occupancyRecheckFramesField.min).max(occupancyRecheckFramesField.max).default(occupancyRecheckFramesField.default),
@@ -20620,7 +20661,7 @@ var RunnerCameraConfigSchema = object({
20620
20661
  */
20621
20662
  inferenceDevices: array(RunnerInferenceDeviceSchema).readonly().optional()
20622
20663
  });
20623
- 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;
20664
+ 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;
20624
20665
  /**
20625
20666
  * Runtime load summary returned by `getLocalLoad`. Used by the orchestrator's
20626
20667
  * load-balancing levels (L2 capacity-based, L3 hardware-aware) to decide
package/dist/smb.addon.js CHANGED
@@ -2,7 +2,7 @@ Object.defineProperties(exports, {
2
2
  __esModule: { value: true },
3
3
  [Symbol.toStringTag]: { value: "Module" }
4
4
  });
5
- const require_shared = require("./shared-DDmz_SlX.js");
5
+ const require_shared = require("./shared-DGPc5-3O.js");
6
6
  let node_crypto = require("node:crypto");
7
7
  let node_path = require("node:path");
8
8
  node_path = require_shared.__toESM(node_path);
@@ -1,4 +1,4 @@
1
- import { c as BaseAddon, i as rearmIdleAbort, o as scheduleIdleAbort, s as storageProviderCapability } from "./shared-DHIG1I7o.mjs";
1
+ import { c as BaseAddon, i as rearmIdleAbort, o as scheduleIdleAbort, s as storageProviderCapability } from "./shared-B2_dMV3o.mjs";
2
2
  import { randomUUID } from "node:crypto";
3
3
  import * as path from "node:path";
4
4
  import * as fsp from "node:fs/promises";
@@ -2,7 +2,7 @@ Object.defineProperties(exports, {
2
2
  __esModule: { value: true },
3
3
  [Symbol.toStringTag]: { value: "Module" }
4
4
  });
5
- const require_shared = require("./shared-DDmz_SlX.js");
5
+ const require_shared = require("./shared-DGPc5-3O.js");
6
6
  let node_stream = require("node:stream");
7
7
  let webdav = require("webdav");
8
8
  //#region src/providers/webdav/webdav-config-schema.ts
@@ -1,4 +1,4 @@
1
- import { a as safeJoinRemotePath, c as BaseAddon, i as rearmIdleAbort, o as scheduleIdleAbort, r as getRequiredBasePath, s as storageProviderCapability, t as createSessionId } from "./shared-DHIG1I7o.mjs";
1
+ import { a as safeJoinRemotePath, c as BaseAddon, i as rearmIdleAbort, o as scheduleIdleAbort, r as getRequiredBasePath, s as storageProviderCapability, t as createSessionId } from "./shared-B2_dMV3o.mjs";
2
2
  import { PassThrough } from "node:stream";
3
3
  import { AuthType, createClient } from "webdav";
4
4
  //#region src/providers/webdav/webdav-config-schema.ts
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@camstack/addon-remote-storage",
3
- "version": "1.2.87",
3
+ "version": "1.2.89",
4
4
  "description": "Remote storage providers (SFTP, S3, WebDAV, SMB) — unifies remote backends behind the storage-provider cap",
5
5
  "keywords": [
6
6
  "camstack",