@camstack/addon-remote-storage 1.2.62 → 1.2.64

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-61TcI1bp.js");
5
+ const require_shared = require("./shared-BrGnU2b8.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-DafV_cel.mjs";
1
+ import { c as BaseAddon, i as rearmIdleAbort, n as getOptionalBasePath, o as scheduleIdleAbort, s as storageProviderCapability, t as createSessionId } from "./shared-CjUsqSI9.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-61TcI1bp.js");
5
+ const require_shared = require("./shared-BrGnU2b8.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-DafV_cel.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-CjUsqSI9.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
@@ -12645,6 +12645,24 @@ method(_void(), _void(), { kind: "mutation" }), method(_void(), _void(), { kind:
12645
12645
  kind: "mutation",
12646
12646
  auth: "admin"
12647
12647
  });
12648
+ /**
12649
+ * Device Manager capability — hub-side singleton that unifies device persistence,
12650
+ * live registry access, and all management operations into a single tRPC surface.
12651
+ *
12652
+ * Replaces:
12653
+ * - `device-persistence` capability (persistence methods absorbed here)
12654
+ * - `device-management.router.ts` (deleted in Phase 2)
12655
+ * - `device-ops.router.ts` (compat layer — deleted; device-provider ops absorbed here)
12656
+ *
12657
+ * All device provider addons (rtsp, onvif, frigate, …) are hub-local: they may
12658
+ * fork into separate processes but never run on remote cluster agents. Therefore:
12659
+ * - No nodeId routing needed — this is a pure hub singleton.
12660
+ * - The hub's DeviceRegistry is the single source of truth for all live devices.
12661
+ * - No shadow registry or cross-node aggregation required.
12662
+ *
12663
+ * Forked workers register devices back to the hub via `ctx.devices`
12664
+ * (DeviceManagerApi → ctx.api.deviceManager.registerDevice), same as today.
12665
+ */
12648
12666
  /** One child-placement directive on a container's `childLayout`. Structurally
12649
12667
  * identical to `ChildLayoutEntry` in `device-management.ts` — the cap wire
12650
12668
  * shape for the same field. The child is identified by its re-sync-stable
@@ -12743,7 +12761,12 @@ var ConfigEntrySchema = object({
12743
12761
  value: unknown(),
12744
12762
  description: string().optional()
12745
12763
  });
12746
- var LinkedDevicesModeSchema = _enum(["auto", "manual"]);
12764
+ /**
12765
+ * Only `manual` since D356: the operator picks, nothing links itself. The
12766
+ * field survives on the wire because a viewer already OTA'd parses it —
12767
+ * drop it once no shipped client reads `mode`.
12768
+ */
12769
+ var LinkedDevicesModeSchema = _enum(["manual"]);
12747
12770
  /** One resolved linked device — the compact projection consumers need. */
12748
12771
  var LinkedDeviceSchema = object({
12749
12772
  deviceId: number(),
@@ -18293,6 +18316,9 @@ var RetrainStatusSchema = _enum([
18293
18316
  *
18294
18317
  * `debug` does NOT pin; it is attention, not durability.
18295
18318
  *
18319
+ * `debugNote` is the operator's own words about WHAT should be checked on this
18320
+ * track, and it lives and dies with `debug` — see {@link MAX_TRACK_DEBUG_NOTE_LEN}.
18321
+ *
18296
18322
  * `favourited` IS a BOOLEAN pin (durability bit), not a retrain lifecycle.
18297
18323
  * A favourited track is skipped by retention the same way `staging` is, but
18298
18324
  * it does not enter `none|staging|trained` and has no staging budget.
@@ -18303,6 +18329,21 @@ var TrackFlagFields = {
18303
18329
  markForTrain: boolean().optional(),
18304
18330
  /** Operator marked this track for diagnostic attention. */
18305
18331
  debug: boolean().optional(),
18332
+ /**
18333
+ * What the operator wants CHECKED on this track, in their own words.
18334
+ *
18335
+ * The flag alone says "look at this" and nothing about what for; a debug set
18336
+ * reviewed hours later is a list of tracks with no question attached. Bound
18337
+ * to `debug` on the WRITE side — the body clears it when `debug` goes off,
18338
+ * and refuses it on a track whose debug is off — so a note can never outlive
18339
+ * the attention it belongs to.
18340
+ *
18341
+ * `''` is a real value ("marked, nothing to add"); the ABSENT key means
18342
+ * "leave whatever is stored alone", which is what lets a surface turn debug
18343
+ * on without a note (a cancelled prompt) and what lets it edit the note
18344
+ * without touching the flag.
18345
+ */
18346
+ debugNote: string().max(500).optional(),
18306
18347
  /** Operator favourited this track. Pins it against pruning. */
18307
18348
  favourited: boolean().optional()
18308
18349
  };
@@ -18329,6 +18370,12 @@ var TrackFlagsSchema = object({
18329
18370
  trackId: string(),
18330
18371
  markForTrain: boolean(),
18331
18372
  debug: boolean(),
18373
+ /** The note as it STANDS after the write — never absent here (a track with no
18374
+ * note reports `''`), for the same reason the booleans are required: a
18375
+ * surface that has just written must be able to render the note it now owns
18376
+ * without a re-fetch, and an absent key would read as "unchanged" on a
18377
+ * screen that has no previous value to keep. */
18378
+ debugNote: string(),
18332
18379
  favourited: boolean(),
18333
18380
  /** The lifecycle state the boolean was derived from. Required here (unlike on
18334
18381
  * a track row) because this shape is only ever produced by the write body,
@@ -12622,6 +12622,24 @@ method(_void(), _void(), { kind: "mutation" }), method(_void(), _void(), { kind:
12622
12622
  kind: "mutation",
12623
12623
  auth: "admin"
12624
12624
  });
12625
+ /**
12626
+ * Device Manager capability — hub-side singleton that unifies device persistence,
12627
+ * live registry access, and all management operations into a single tRPC surface.
12628
+ *
12629
+ * Replaces:
12630
+ * - `device-persistence` capability (persistence methods absorbed here)
12631
+ * - `device-management.router.ts` (deleted in Phase 2)
12632
+ * - `device-ops.router.ts` (compat layer — deleted; device-provider ops absorbed here)
12633
+ *
12634
+ * All device provider addons (rtsp, onvif, frigate, …) are hub-local: they may
12635
+ * fork into separate processes but never run on remote cluster agents. Therefore:
12636
+ * - No nodeId routing needed — this is a pure hub singleton.
12637
+ * - The hub's DeviceRegistry is the single source of truth for all live devices.
12638
+ * - No shadow registry or cross-node aggregation required.
12639
+ *
12640
+ * Forked workers register devices back to the hub via `ctx.devices`
12641
+ * (DeviceManagerApi → ctx.api.deviceManager.registerDevice), same as today.
12642
+ */
12625
12643
  /** One child-placement directive on a container's `childLayout`. Structurally
12626
12644
  * identical to `ChildLayoutEntry` in `device-management.ts` — the cap wire
12627
12645
  * shape for the same field. The child is identified by its re-sync-stable
@@ -12720,7 +12738,12 @@ var ConfigEntrySchema = object({
12720
12738
  value: unknown(),
12721
12739
  description: string().optional()
12722
12740
  });
12723
- var LinkedDevicesModeSchema = _enum(["auto", "manual"]);
12741
+ /**
12742
+ * Only `manual` since D356: the operator picks, nothing links itself. The
12743
+ * field survives on the wire because a viewer already OTA'd parses it —
12744
+ * drop it once no shipped client reads `mode`.
12745
+ */
12746
+ var LinkedDevicesModeSchema = _enum(["manual"]);
12724
12747
  /** One resolved linked device — the compact projection consumers need. */
12725
12748
  var LinkedDeviceSchema = object({
12726
12749
  deviceId: number(),
@@ -18270,6 +18293,9 @@ var RetrainStatusSchema = _enum([
18270
18293
  *
18271
18294
  * `debug` does NOT pin; it is attention, not durability.
18272
18295
  *
18296
+ * `debugNote` is the operator's own words about WHAT should be checked on this
18297
+ * track, and it lives and dies with `debug` — see {@link MAX_TRACK_DEBUG_NOTE_LEN}.
18298
+ *
18273
18299
  * `favourited` IS a BOOLEAN pin (durability bit), not a retrain lifecycle.
18274
18300
  * A favourited track is skipped by retention the same way `staging` is, but
18275
18301
  * it does not enter `none|staging|trained` and has no staging budget.
@@ -18280,6 +18306,21 @@ var TrackFlagFields = {
18280
18306
  markForTrain: boolean().optional(),
18281
18307
  /** Operator marked this track for diagnostic attention. */
18282
18308
  debug: boolean().optional(),
18309
+ /**
18310
+ * What the operator wants CHECKED on this track, in their own words.
18311
+ *
18312
+ * The flag alone says "look at this" and nothing about what for; a debug set
18313
+ * reviewed hours later is a list of tracks with no question attached. Bound
18314
+ * to `debug` on the WRITE side — the body clears it when `debug` goes off,
18315
+ * and refuses it on a track whose debug is off — so a note can never outlive
18316
+ * the attention it belongs to.
18317
+ *
18318
+ * `''` is a real value ("marked, nothing to add"); the ABSENT key means
18319
+ * "leave whatever is stored alone", which is what lets a surface turn debug
18320
+ * on without a note (a cancelled prompt) and what lets it edit the note
18321
+ * without touching the flag.
18322
+ */
18323
+ debugNote: string().max(500).optional(),
18283
18324
  /** Operator favourited this track. Pins it against pruning. */
18284
18325
  favourited: boolean().optional()
18285
18326
  };
@@ -18306,6 +18347,12 @@ var TrackFlagsSchema = object({
18306
18347
  trackId: string(),
18307
18348
  markForTrain: boolean(),
18308
18349
  debug: boolean(),
18350
+ /** The note as it STANDS after the write — never absent here (a track with no
18351
+ * note reports `''`), for the same reason the booleans are required: a
18352
+ * surface that has just written must be able to render the note it now owns
18353
+ * without a re-fetch, and an absent key would read as "unchanged" on a
18354
+ * screen that has no previous value to keep. */
18355
+ debugNote: string(),
18309
18356
  favourited: boolean(),
18310
18357
  /** The lifecycle state the boolean was derived from. Required here (unlike on
18311
18358
  * a track row) because this shape is only ever produced by the write body,
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-61TcI1bp.js");
5
+ const require_shared = require("./shared-BrGnU2b8.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-DafV_cel.mjs";
1
+ import { c as BaseAddon, i as rearmIdleAbort, o as scheduleIdleAbort, s as storageProviderCapability } from "./shared-CjUsqSI9.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-61TcI1bp.js");
5
+ const require_shared = require("./shared-BrGnU2b8.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-DafV_cel.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-CjUsqSI9.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.62",
3
+ "version": "1.2.64",
4
4
  "description": "Remote storage providers (SFTP, S3, WebDAV, SMB) — unifies remote backends behind the storage-provider cap",
5
5
  "keywords": [
6
6
  "camstack",