@camstack/addon-auth 1.2.68 → 1.2.70

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.
@@ -12802,6 +12802,24 @@ method(_void(), _void(), { kind: "mutation" }), method(_void(), _void(), { kind:
12802
12802
  kind: "mutation",
12803
12803
  auth: "admin"
12804
12804
  });
12805
+ /**
12806
+ * Device Manager capability — hub-side singleton that unifies device persistence,
12807
+ * live registry access, and all management operations into a single tRPC surface.
12808
+ *
12809
+ * Replaces:
12810
+ * - `device-persistence` capability (persistence methods absorbed here)
12811
+ * - `device-management.router.ts` (deleted in Phase 2)
12812
+ * - `device-ops.router.ts` (compat layer — deleted; device-provider ops absorbed here)
12813
+ *
12814
+ * All device provider addons (rtsp, onvif, frigate, …) are hub-local: they may
12815
+ * fork into separate processes but never run on remote cluster agents. Therefore:
12816
+ * - No nodeId routing needed — this is a pure hub singleton.
12817
+ * - The hub's DeviceRegistry is the single source of truth for all live devices.
12818
+ * - No shadow registry or cross-node aggregation required.
12819
+ *
12820
+ * Forked workers register devices back to the hub via `ctx.devices`
12821
+ * (DeviceManagerApi → ctx.api.deviceManager.registerDevice), same as today.
12822
+ */
12805
12823
  /** One child-placement directive on a container's `childLayout`. Structurally
12806
12824
  * identical to `ChildLayoutEntry` in `device-management.ts` — the cap wire
12807
12825
  * shape for the same field. The child is identified by its re-sync-stable
@@ -12900,7 +12918,12 @@ var ConfigEntrySchema = object({
12900
12918
  value: unknown(),
12901
12919
  description: string().optional()
12902
12920
  });
12903
- var LinkedDevicesModeSchema = _enum(["auto", "manual"]);
12921
+ /**
12922
+ * Only `manual` since D356: the operator picks, nothing links itself. The
12923
+ * field survives on the wire because a viewer already OTA'd parses it —
12924
+ * drop it once no shipped client reads `mode`.
12925
+ */
12926
+ var LinkedDevicesModeSchema = _enum(["manual"]);
12904
12927
  /** One resolved linked device — the compact projection consumers need. */
12905
12928
  var LinkedDeviceSchema = object({
12906
12929
  deviceId: number(),
@@ -18458,6 +18481,9 @@ var RetrainStatusSchema = _enum([
18458
18481
  *
18459
18482
  * `debug` does NOT pin; it is attention, not durability.
18460
18483
  *
18484
+ * `debugNote` is the operator's own words about WHAT should be checked on this
18485
+ * track, and it lives and dies with `debug` — see {@link MAX_TRACK_DEBUG_NOTE_LEN}.
18486
+ *
18461
18487
  * `favourited` IS a BOOLEAN pin (durability bit), not a retrain lifecycle.
18462
18488
  * A favourited track is skipped by retention the same way `staging` is, but
18463
18489
  * it does not enter `none|staging|trained` and has no staging budget.
@@ -18468,6 +18494,21 @@ var TrackFlagFields = {
18468
18494
  markForTrain: boolean().optional(),
18469
18495
  /** Operator marked this track for diagnostic attention. */
18470
18496
  debug: boolean().optional(),
18497
+ /**
18498
+ * What the operator wants CHECKED on this track, in their own words.
18499
+ *
18500
+ * The flag alone says "look at this" and nothing about what for; a debug set
18501
+ * reviewed hours later is a list of tracks with no question attached. Bound
18502
+ * to `debug` on the WRITE side — the body clears it when `debug` goes off,
18503
+ * and refuses it on a track whose debug is off — so a note can never outlive
18504
+ * the attention it belongs to.
18505
+ *
18506
+ * `''` is a real value ("marked, nothing to add"); the ABSENT key means
18507
+ * "leave whatever is stored alone", which is what lets a surface turn debug
18508
+ * on without a note (a cancelled prompt) and what lets it edit the note
18509
+ * without touching the flag.
18510
+ */
18511
+ debugNote: string().max(500).optional(),
18471
18512
  /** Operator favourited this track. Pins it against pruning. */
18472
18513
  favourited: boolean().optional()
18473
18514
  };
@@ -18494,6 +18535,12 @@ var TrackFlagsSchema = object({
18494
18535
  trackId: string(),
18495
18536
  markForTrain: boolean(),
18496
18537
  debug: boolean(),
18538
+ /** The note as it STANDS after the write — never absent here (a track with no
18539
+ * note reports `''`), for the same reason the booleans are required: a
18540
+ * surface that has just written must be able to render the note it now owns
18541
+ * without a re-fetch, and an absent key would read as "unchanged" on a
18542
+ * screen that has no previous value to keep. */
18543
+ debugNote: string(),
18497
18544
  favourited: boolean(),
18498
18545
  /** The lifecycle state the boolean was derived from. Required here (unlike on
18499
18546
  * a track row) because this shape is only ever produced by the write body,
@@ -12802,6 +12802,24 @@ method(_void(), _void(), { kind: "mutation" }), method(_void(), _void(), { kind:
12802
12802
  kind: "mutation",
12803
12803
  auth: "admin"
12804
12804
  });
12805
+ /**
12806
+ * Device Manager capability — hub-side singleton that unifies device persistence,
12807
+ * live registry access, and all management operations into a single tRPC surface.
12808
+ *
12809
+ * Replaces:
12810
+ * - `device-persistence` capability (persistence methods absorbed here)
12811
+ * - `device-management.router.ts` (deleted in Phase 2)
12812
+ * - `device-ops.router.ts` (compat layer — deleted; device-provider ops absorbed here)
12813
+ *
12814
+ * All device provider addons (rtsp, onvif, frigate, …) are hub-local: they may
12815
+ * fork into separate processes but never run on remote cluster agents. Therefore:
12816
+ * - No nodeId routing needed — this is a pure hub singleton.
12817
+ * - The hub's DeviceRegistry is the single source of truth for all live devices.
12818
+ * - No shadow registry or cross-node aggregation required.
12819
+ *
12820
+ * Forked workers register devices back to the hub via `ctx.devices`
12821
+ * (DeviceManagerApi → ctx.api.deviceManager.registerDevice), same as today.
12822
+ */
12805
12823
  /** One child-placement directive on a container's `childLayout`. Structurally
12806
12824
  * identical to `ChildLayoutEntry` in `device-management.ts` — the cap wire
12807
12825
  * shape for the same field. The child is identified by its re-sync-stable
@@ -12900,7 +12918,12 @@ var ConfigEntrySchema = object({
12900
12918
  value: unknown(),
12901
12919
  description: string().optional()
12902
12920
  });
12903
- var LinkedDevicesModeSchema = _enum(["auto", "manual"]);
12921
+ /**
12922
+ * Only `manual` since D356: the operator picks, nothing links itself. The
12923
+ * field survives on the wire because a viewer already OTA'd parses it —
12924
+ * drop it once no shipped client reads `mode`.
12925
+ */
12926
+ var LinkedDevicesModeSchema = _enum(["manual"]);
12904
12927
  /** One resolved linked device — the compact projection consumers need. */
12905
12928
  var LinkedDeviceSchema = object({
12906
12929
  deviceId: number(),
@@ -18458,6 +18481,9 @@ var RetrainStatusSchema = _enum([
18458
18481
  *
18459
18482
  * `debug` does NOT pin; it is attention, not durability.
18460
18483
  *
18484
+ * `debugNote` is the operator's own words about WHAT should be checked on this
18485
+ * track, and it lives and dies with `debug` — see {@link MAX_TRACK_DEBUG_NOTE_LEN}.
18486
+ *
18461
18487
  * `favourited` IS a BOOLEAN pin (durability bit), not a retrain lifecycle.
18462
18488
  * A favourited track is skipped by retention the same way `staging` is, but
18463
18489
  * it does not enter `none|staging|trained` and has no staging budget.
@@ -18468,6 +18494,21 @@ var TrackFlagFields = {
18468
18494
  markForTrain: boolean().optional(),
18469
18495
  /** Operator marked this track for diagnostic attention. */
18470
18496
  debug: boolean().optional(),
18497
+ /**
18498
+ * What the operator wants CHECKED on this track, in their own words.
18499
+ *
18500
+ * The flag alone says "look at this" and nothing about what for; a debug set
18501
+ * reviewed hours later is a list of tracks with no question attached. Bound
18502
+ * to `debug` on the WRITE side — the body clears it when `debug` goes off,
18503
+ * and refuses it on a track whose debug is off — so a note can never outlive
18504
+ * the attention it belongs to.
18505
+ *
18506
+ * `''` is a real value ("marked, nothing to add"); the ABSENT key means
18507
+ * "leave whatever is stored alone", which is what lets a surface turn debug
18508
+ * on without a note (a cancelled prompt) and what lets it edit the note
18509
+ * without touching the flag.
18510
+ */
18511
+ debugNote: string().max(500).optional(),
18471
18512
  /** Operator favourited this track. Pins it against pruning. */
18472
18513
  favourited: boolean().optional()
18473
18514
  };
@@ -18494,6 +18535,12 @@ var TrackFlagsSchema = object({
18494
18535
  trackId: string(),
18495
18536
  markForTrain: boolean(),
18496
18537
  debug: boolean(),
18538
+ /** The note as it STANDS after the write — never absent here (a track with no
18539
+ * note reports `''`), for the same reason the booleans are required: a
18540
+ * surface that has just written must be able to render the note it now owns
18541
+ * without a re-fetch, and an absent key would read as "unchanged" on a
18542
+ * screen that has no previous value to keep. */
18543
+ debugNote: string(),
18497
18544
  favourited: boolean(),
18498
18545
  /** The lifecycle state the boolean was derived from. Required here (unlike on
18499
18546
  * a track row) because this shape is only ever produced by the write body,
@@ -3,7 +3,7 @@ Object.defineProperties(exports, {
3
3
  [Symbol.toStringTag]: { value: "Module" }
4
4
  });
5
5
  require("../chunk-Cek0wNdY.js");
6
- const require_dist = require("../dist-BUXQNhfP.js");
6
+ const require_dist = require("../dist-DP7aTL0M.js");
7
7
  //#region src/magic-link/auth-magic-link.addon.ts
8
8
  /**
9
9
  * Magic-link authentication addon.
@@ -1,4 +1,4 @@
1
- import { a as loginMethodCapability, c as BaseAddon, i as buildAddonRouteProvider, r as authProviderCapability, s as errMsg, t as addonRoutesCapability } from "../dist-BR2AQ3_b.mjs";
1
+ import { a as loginMethodCapability, c as BaseAddon, i as buildAddonRouteProvider, r as authProviderCapability, s as errMsg, t as addonRoutesCapability } from "../dist-BjnZ11H5.mjs";
2
2
  //#region src/magic-link/auth-magic-link.addon.ts
3
3
  /**
4
4
  * Magic-link authentication addon.
@@ -3,7 +3,7 @@ Object.defineProperties(exports, {
3
3
  [Symbol.toStringTag]: { value: "Module" }
4
4
  });
5
5
  const require_chunk = require("../chunk-Cek0wNdY.js");
6
- const require_dist = require("../dist-BUXQNhfP.js");
6
+ const require_dist = require("../dist-DP7aTL0M.js");
7
7
  let node_crypto = require("node:crypto");
8
8
  node_crypto = require_chunk.__toESM(node_crypto);
9
9
  //#region node_modules/jose/dist/webapi/lib/buffer_utils.js
@@ -1,4 +1,4 @@
1
- import { a as loginMethodCapability, c as BaseAddon, i as buildAddonRouteProvider, r as authProviderCapability, s as errMsg, t as addonRoutesCapability } from "../dist-BR2AQ3_b.mjs";
1
+ import { a as loginMethodCapability, c as BaseAddon, i as buildAddonRouteProvider, r as authProviderCapability, s as errMsg, t as addonRoutesCapability } from "../dist-BjnZ11H5.mjs";
2
2
  import * as crypto$1 from "node:crypto";
3
3
  //#region node_modules/jose/dist/webapi/lib/buffer_utils.js
4
4
  var encoder = new TextEncoder();
@@ -3,7 +3,7 @@ import "./dist-CYZr2fwk.mjs";
3
3
  var e = {
4
4
  "@camstack/sdk": {
5
5
  name: "@camstack/sdk",
6
- version: "1.2.66",
6
+ version: "1.2.68",
7
7
  scope: ["default"],
8
8
  loaded: !1,
9
9
  from: "addon_auth_webauthn_widgets",
@@ -18,7 +18,7 @@ var e = {
18
18
  },
19
19
  "@camstack/types": {
20
20
  name: "@camstack/types",
21
- version: "1.2.146",
21
+ version: "1.2.148",
22
22
  scope: ["default"],
23
23
  loaded: !1,
24
24
  from: "addon_auth_webauthn_widgets",
@@ -33,7 +33,7 @@ var e = {
33
33
  },
34
34
  "@camstack/ui-library": {
35
35
  name: "@camstack/ui-library",
36
- version: "1.2.112",
36
+ version: "1.2.114",
37
37
  scope: ["default"],
38
38
  loaded: !1,
39
39
  from: "addon_auth_webauthn_widgets",
@@ -3,7 +3,7 @@ Object.defineProperties(exports, {
3
3
  [Symbol.toStringTag]: { value: "Module" }
4
4
  });
5
5
  const require_chunk = require("../chunk-Cek0wNdY.js");
6
- const require_dist = require("../dist-BUXQNhfP.js");
6
+ const require_dist = require("../dist-DP7aTL0M.js");
7
7
  let stream = require("stream");
8
8
  stream = require_chunk.__toESM(stream, 1);
9
9
  let http = require("http");
@@ -1,4 +1,4 @@
1
- import { a as loginMethodCapability, c as BaseAddon, d as number, f as object, l as array, n as addonWidgetsSourceCapability, o as userPasskeysCapability, p as string, u as boolean } from "../dist-BR2AQ3_b.mjs";
1
+ import { a as loginMethodCapability, c as BaseAddon, d as number, f as object, l as array, n as addonWidgetsSourceCapability, o as userPasskeysCapability, p as string, u as boolean } from "../dist-BjnZ11H5.mjs";
2
2
  import { createRequire } from "node:module";
3
3
  import Stream from "stream";
4
4
  import http from "http";
@@ -36,7 +36,7 @@ async function r() {
36
36
  }
37
37
  },
38
38
  "@camstack/types": {
39
- version: "1.2.146",
39
+ version: "1.2.148",
40
40
  scope: "default",
41
41
  shareConfig: {
42
42
  singleton: !0,
@@ -45,7 +45,7 @@ async function r() {
45
45
  }
46
46
  },
47
47
  "@camstack/sdk": {
48
- version: "1.2.66",
48
+ version: "1.2.68",
49
49
  scope: "default",
50
50
  shareConfig: {
51
51
  singleton: !0,
@@ -81,7 +81,7 @@ async function r() {
81
81
  }
82
82
  },
83
83
  "@camstack/ui-library": {
84
- version: "1.2.112",
84
+ version: "1.2.114",
85
85
  scope: "default",
86
86
  shareConfig: {
87
87
  singleton: !0,
@@ -30,7 +30,7 @@ async function d(e) {
30
30
  }
31
31
  }
32
32
  async function f() {
33
- return l ||= d(() => import("./_virtual_mf-localSharedImportMap___mfe_internal__addon_auth_webauthn_widgets-B4Ra8ZEZ.mjs")).catch((e) => {
33
+ return l ||= d(() => import("./_virtual_mf-localSharedImportMap___mfe_internal__addon_auth_webauthn_widgets-BZ1ed24X.mjs")).catch((e) => {
34
34
  throw l = void 0, e;
35
35
  }), l;
36
36
  }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@camstack/addon-auth",
3
- "version": "1.2.68",
3
+ "version": "1.2.70",
4
4
  "description": "Authentication bundle — magic-link, OIDC, and WebAuthn/passkey. Multi-entry npm package shipping 3 addons under a single bundle; each addon keeps its own id, capabilities, and runner.",
5
5
  "keywords": [
6
6
  "camstack",