@camstack/addon-post-analysis 1.2.143 → 1.2.145

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.
@@ -26449,6 +26449,33 @@ var intercomCapability = {
26449
26449
  deviceNative: true,
26450
26450
  mode: "singleton",
26451
26451
  deviceTypes: [DeviceType.Camera],
26452
+ /**
26453
+ * **Auth tier: `protected` on every method — deliberate, and load-bearing.**
26454
+ *
26455
+ * Talking through a camera is an OPERATE action, not a CONFIGURE one. This
26456
+ * cap has no configuration surface at all: all six methods open, feed and
26457
+ * close one live audio session against one `deviceId`. That is the same
26458
+ * authority as `ptz.move` or `snapshot.getSnapshot`, both `protected` — and
26459
+ * the opposite of `ptz.savePreset` / `snapshot.invalidateCache`, which are
26460
+ * `admin` because they change what the device IS.
26461
+ *
26462
+ * `protected` does not mean ungated: `protectedProcedure` runs the
26463
+ * `METHOD_ACCESS_MAP` scope check, and every method here is `scope: 'device'`
26464
+ * with `access: 'create'` and a `deviceId` in its input. So a caller needs a
26465
+ * grant that covers THAT camera at `create` — a `camera-viewer` (`view`
26466
+ * only) still cannot talk, and a grant on camera 5 cannot talk through
26467
+ * camera 7.
26468
+ *
26469
+ * Every method was `auth: 'admin'` from the initial commit, which made the
26470
+ * cap unreachable by every non-admin principal — `adminProcedure` throws
26471
+ * `FORBIDDEN: Admin required` BEFORE the scope check runs, so the scope
26472
+ * machinery generated for this cap (`METHOD_ACCESS_MAP`,
26473
+ * `DEVICE_SCOPED_CAPS`, `METHOD_DEVICE_SELECTORS`) was complete and dead. The
26474
+ * `camera-operator` scope preset has promised "PTZ control, intercom,
26475
+ * snapshots" since that same commit; the promise could not be kept. Recorded
26476
+ * as D289; `scripts/check-scope-preset-promises.ts` now fails the build if a
26477
+ * preset promises a cap no row of that preset can reach.
26478
+ */
26452
26479
  methods: {
26453
26480
  /**
26454
26481
  * Open a server-side WebRTC audio-only session. Returns an SDP
@@ -26461,7 +26488,7 @@ var intercomCapability = {
26461
26488
  sdpOffer: string()
26462
26489
  }), {
26463
26490
  kind: "mutation",
26464
- auth: "admin"
26491
+ auth: "protected"
26465
26492
  }),
26466
26493
  handleAnswer: method(object({
26467
26494
  deviceId: number(),
@@ -26469,7 +26496,7 @@ var intercomCapability = {
26469
26496
  sdpAnswer: string()
26470
26497
  }), _void(), {
26471
26498
  kind: "mutation",
26472
- auth: "admin"
26499
+ auth: "protected"
26473
26500
  }),
26474
26501
  /** Close explicitly. Server also auto-closes on 30s idle. */
26475
26502
  stopSession: method(object({
@@ -26477,7 +26504,7 @@ var intercomCapability = {
26477
26504
  sessionId: string()
26478
26505
  }), _void(), {
26479
26506
  kind: "mutation",
26480
- auth: "admin"
26507
+ auth: "protected"
26481
26508
  }),
26482
26509
  /**
26483
26510
  * Open a raw-PCM talk session (no WebRTC SDP plumbing). Used by
@@ -26490,7 +26517,7 @@ var intercomCapability = {
26490
26517
  */
26491
26518
  startTalkSession: method(object({ deviceId: number() }), object({ sessionId: string() }), {
26492
26519
  kind: "mutation",
26493
- auth: "admin"
26520
+ auth: "protected"
26494
26521
  }),
26495
26522
  /**
26496
26523
  * Push one chunk of talk-back audio onto the active talk session.
@@ -26525,12 +26552,12 @@ var intercomCapability = {
26525
26552
  sequenceNumber: number().int()
26526
26553
  }), object({ accepted: boolean() }), {
26527
26554
  kind: "mutation",
26528
- auth: "admin"
26555
+ auth: "protected"
26529
26556
  }),
26530
26557
  /** Close the raw-PCM talk session. Idempotent. */
26531
26558
  endTalkSession: method(object({ deviceId: number() }), _void(), {
26532
26559
  kind: "mutation",
26533
- auth: "admin"
26560
+ auth: "protected"
26534
26561
  })
26535
26562
  },
26536
26563
  events: { onStatusChanged: { data: object({
@@ -26480,6 +26480,33 @@ var intercomCapability = {
26480
26480
  deviceNative: true,
26481
26481
  mode: "singleton",
26482
26482
  deviceTypes: [DeviceType.Camera],
26483
+ /**
26484
+ * **Auth tier: `protected` on every method — deliberate, and load-bearing.**
26485
+ *
26486
+ * Talking through a camera is an OPERATE action, not a CONFIGURE one. This
26487
+ * cap has no configuration surface at all: all six methods open, feed and
26488
+ * close one live audio session against one `deviceId`. That is the same
26489
+ * authority as `ptz.move` or `snapshot.getSnapshot`, both `protected` — and
26490
+ * the opposite of `ptz.savePreset` / `snapshot.invalidateCache`, which are
26491
+ * `admin` because they change what the device IS.
26492
+ *
26493
+ * `protected` does not mean ungated: `protectedProcedure` runs the
26494
+ * `METHOD_ACCESS_MAP` scope check, and every method here is `scope: 'device'`
26495
+ * with `access: 'create'` and a `deviceId` in its input. So a caller needs a
26496
+ * grant that covers THAT camera at `create` — a `camera-viewer` (`view`
26497
+ * only) still cannot talk, and a grant on camera 5 cannot talk through
26498
+ * camera 7.
26499
+ *
26500
+ * Every method was `auth: 'admin'` from the initial commit, which made the
26501
+ * cap unreachable by every non-admin principal — `adminProcedure` throws
26502
+ * `FORBIDDEN: Admin required` BEFORE the scope check runs, so the scope
26503
+ * machinery generated for this cap (`METHOD_ACCESS_MAP`,
26504
+ * `DEVICE_SCOPED_CAPS`, `METHOD_DEVICE_SELECTORS`) was complete and dead. The
26505
+ * `camera-operator` scope preset has promised "PTZ control, intercom,
26506
+ * snapshots" since that same commit; the promise could not be kept. Recorded
26507
+ * as D289; `scripts/check-scope-preset-promises.ts` now fails the build if a
26508
+ * preset promises a cap no row of that preset can reach.
26509
+ */
26483
26510
  methods: {
26484
26511
  /**
26485
26512
  * Open a server-side WebRTC audio-only session. Returns an SDP
@@ -26492,7 +26519,7 @@ var intercomCapability = {
26492
26519
  sdpOffer: string()
26493
26520
  }), {
26494
26521
  kind: "mutation",
26495
- auth: "admin"
26522
+ auth: "protected"
26496
26523
  }),
26497
26524
  handleAnswer: method(object({
26498
26525
  deviceId: number(),
@@ -26500,7 +26527,7 @@ var intercomCapability = {
26500
26527
  sdpAnswer: string()
26501
26528
  }), _void(), {
26502
26529
  kind: "mutation",
26503
- auth: "admin"
26530
+ auth: "protected"
26504
26531
  }),
26505
26532
  /** Close explicitly. Server also auto-closes on 30s idle. */
26506
26533
  stopSession: method(object({
@@ -26508,7 +26535,7 @@ var intercomCapability = {
26508
26535
  sessionId: string()
26509
26536
  }), _void(), {
26510
26537
  kind: "mutation",
26511
- auth: "admin"
26538
+ auth: "protected"
26512
26539
  }),
26513
26540
  /**
26514
26541
  * Open a raw-PCM talk session (no WebRTC SDP plumbing). Used by
@@ -26521,7 +26548,7 @@ var intercomCapability = {
26521
26548
  */
26522
26549
  startTalkSession: method(object({ deviceId: number() }), object({ sessionId: string() }), {
26523
26550
  kind: "mutation",
26524
- auth: "admin"
26551
+ auth: "protected"
26525
26552
  }),
26526
26553
  /**
26527
26554
  * Push one chunk of talk-back audio onto the active talk session.
@@ -26556,12 +26583,12 @@ var intercomCapability = {
26556
26583
  sequenceNumber: number().int()
26557
26584
  }), object({ accepted: boolean() }), {
26558
26585
  kind: "mutation",
26559
- auth: "admin"
26586
+ auth: "protected"
26560
26587
  }),
26561
26588
  /** Close the raw-PCM talk session. Idempotent. */
26562
26589
  endTalkSession: method(object({ deviceId: number() }), _void(), {
26563
26590
  kind: "mutation",
26564
- auth: "admin"
26591
+ auth: "protected"
26565
26592
  })
26566
26593
  },
26567
26594
  events: { onStatusChanged: { data: object({
@@ -2,7 +2,7 @@ Object.defineProperties(exports, {
2
2
  __esModule: { value: true },
3
3
  [Symbol.toStringTag]: { value: "Module" }
4
4
  });
5
- const require_dist = require("../dist-BBDJh7ln.js");
5
+ const require_dist = require("../dist-C8RL0Hzy.js");
6
6
  let node_fs = require("node:fs");
7
7
  node_fs = require_dist.__toESM(node_fs);
8
8
  let node_path = require("node:path");
@@ -1,4 +1,4 @@
1
- import { Dt as BaseAddon, P as PoolMemoryWatchdog, ct as hfModelUrl, it as embeddingEncoderCapability, pt as parseProcStatus, yt as resolvePoolMemoryPolicy } from "../dist-J3TQ_8D1.mjs";
1
+ import { Dt as BaseAddon, P as PoolMemoryWatchdog, ct as hfModelUrl, it as embeddingEncoderCapability, pt as parseProcStatus, yt as resolvePoolMemoryPolicy } from "../dist-3FJkk7Mx.mjs";
2
2
  import { createRequire } from "node:module";
3
3
  import * as fs from "node:fs";
4
4
  import * as path$1 from "node:path";
@@ -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.44",
6
+ version: "1.2.45",
7
7
  scope: ["default"],
8
8
  loaded: !1,
9
9
  from: "addon_pipeline_analytics_widgets",
@@ -18,7 +18,7 @@ var e = {
18
18
  },
19
19
  "@camstack/types": {
20
20
  name: "@camstack/types",
21
- version: "1.2.122",
21
+ version: "1.2.123",
22
22
  scope: ["default"],
23
23
  loaded: !1,
24
24
  from: "addon_pipeline_analytics_widgets",
@@ -33,7 +33,7 @@ var e = {
33
33
  },
34
34
  "@camstack/ui-library": {
35
35
  name: "@camstack/ui-library",
36
- version: "1.2.85",
36
+ version: "1.2.86",
37
37
  scope: ["default"],
38
38
  loaded: !1,
39
39
  from: "addon_pipeline_analytics_widgets",
@@ -36,7 +36,7 @@ async function r() {
36
36
  }
37
37
  },
38
38
  "@camstack/types": {
39
- version: "1.2.122",
39
+ version: "1.2.123",
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.44",
48
+ version: "1.2.45",
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.85",
84
+ version: "1.2.86",
85
85
  scope: "default",
86
86
  shareConfig: {
87
87
  singleton: !0,
@@ -2,7 +2,7 @@ Object.defineProperties(exports, {
2
2
  __esModule: { value: true },
3
3
  [Symbol.toStringTag]: { value: "Module" }
4
4
  });
5
- const require_dist = require("../dist-BBDJh7ln.js");
5
+ const require_dist = require("../dist-C8RL0Hzy.js");
6
6
  let node_fs = require("node:fs");
7
7
  node_fs = require_dist.__toESM(node_fs, 1);
8
8
  let node_path = require("node:path");
@@ -1,4 +1,4 @@
1
- import { $ as buildEventKindDescriptor, A as NcSnoozeSuppressedSchema, At as hydrateSchema, B as SCENE_DIVERGED, Bt as object, C as NcRuleInputSchema, Ct as vectorDimFromBase64, D as NcScheduleSchema, Dt as BaseAddon, E as NcRuleTargetSchema, Et as errMsg, F as RECORDING_EXPORT_MAX_READ_BYTES, Ft as array, G as TimelapseRuleSchema, Gt as EventCategory, H as TIMELAPSE_DENSE_FLOOR_SEC, Ht as record, I as RetrainStatusSchema, It as boolean, J as addonWidgetsSourceCapability, K as TrackSourceSchema, Lt as discriminatedUnion, M as NcTaxonomySchema, Mt as nodePin, N as OpsLogEntrySchema, Nt as sleep, O as NcSnoozeInputSchema, Ot as DeviceType, Pt as _enum, Q as audioModeOf, R as SCENE_DEFAULT_ANCHOR_THRESHOLD, Rt as literal, S as NcConditionDescriptorSchema, St as systemEventFilterApplies, T as NcRuleSchema, Tt as zoneAnalyticsCapability, U as TimelapseRuleInputSchema, Ut as string, V as SceneMonitorSchema, Vt as partialRecord, W as TimelapseRulePatchSchema, Wt as unknown, X as assertTimelapseCadences, Y as alarmPanelCapability, Z as audioMetricsCapability, _ as NC_ALARM_SYSTEM_EVENT_KINDS, _t as readDeviceStateFrom, a as COCO_TO_MACRO, at as encodeVectorBase64, bt as sceneMonitorCapability, c as DETECTION_MACRO_CLASSES, d as EVENT_KIND_BY_CAP, dt as kebabToCamel, et as cosineSimilarity$1, f as EVENT_PAD_MS, ft as notificationRulesCapability, g as MACRO_LABELS, gt as plateGalleryCapability, h as LabelAttributionSchema, ht as pipelineAnalyticsCapability, i as CLUSTER_MODEL_SCOPED_STEPS, j as NcSystemEventKindSchema, jt as isDeviceScopedCap, k as NcSnoozeSchema, kt as createEvent, lt as isDetectionMacroClass, m as FailureCounters, mt as pickClusterStepModels, n as AnalyticsGroupRecordSchema, nt as defineCustomActions, o as DEFAULT_EVENT_COLOR, ot as faceGalleryCapability, p as FULL_IMAGE_BBOX, q as VISIT_MERGE_GAP_MS, r as BaseDevice, rt as deriveRecordingMode, st as failureContributionCapability, t as AnalyticsGroupDetailSchema, tt as customAction, u as DeclaredDevices, ut as isScheduleActive, v as NC_CONDITION_CATALOG, vt as readTimelapseGeneratedAt, w as NcRulePatchSchema, wt as videoclipsCapability, x as NC_TAXONOMY, xt as subKindsOf, y as NC_DEFAULT_SNOOZE_MINUTES, z as SCENE_DEFAULT_UNCOVERED_POLICY, zt as number } from "../dist-J3TQ_8D1.mjs";
1
+ import { $ as buildEventKindDescriptor, A as NcSnoozeSuppressedSchema, At as hydrateSchema, B as SCENE_DIVERGED, Bt as object, C as NcRuleInputSchema, Ct as vectorDimFromBase64, D as NcScheduleSchema, Dt as BaseAddon, E as NcRuleTargetSchema, Et as errMsg, F as RECORDING_EXPORT_MAX_READ_BYTES, Ft as array, G as TimelapseRuleSchema, Gt as EventCategory, H as TIMELAPSE_DENSE_FLOOR_SEC, Ht as record, I as RetrainStatusSchema, It as boolean, J as addonWidgetsSourceCapability, K as TrackSourceSchema, Lt as discriminatedUnion, M as NcTaxonomySchema, Mt as nodePin, N as OpsLogEntrySchema, Nt as sleep, O as NcSnoozeInputSchema, Ot as DeviceType, Pt as _enum, Q as audioModeOf, R as SCENE_DEFAULT_ANCHOR_THRESHOLD, Rt as literal, S as NcConditionDescriptorSchema, St as systemEventFilterApplies, T as NcRuleSchema, Tt as zoneAnalyticsCapability, U as TimelapseRuleInputSchema, Ut as string, V as SceneMonitorSchema, Vt as partialRecord, W as TimelapseRulePatchSchema, Wt as unknown, X as assertTimelapseCadences, Y as alarmPanelCapability, Z as audioMetricsCapability, _ as NC_ALARM_SYSTEM_EVENT_KINDS, _t as readDeviceStateFrom, a as COCO_TO_MACRO, at as encodeVectorBase64, bt as sceneMonitorCapability, c as DETECTION_MACRO_CLASSES, d as EVENT_KIND_BY_CAP, dt as kebabToCamel, et as cosineSimilarity$1, f as EVENT_PAD_MS, ft as notificationRulesCapability, g as MACRO_LABELS, gt as plateGalleryCapability, h as LabelAttributionSchema, ht as pipelineAnalyticsCapability, i as CLUSTER_MODEL_SCOPED_STEPS, j as NcSystemEventKindSchema, jt as isDeviceScopedCap, k as NcSnoozeSchema, kt as createEvent, lt as isDetectionMacroClass, m as FailureCounters, mt as pickClusterStepModels, n as AnalyticsGroupRecordSchema, nt as defineCustomActions, o as DEFAULT_EVENT_COLOR, ot as faceGalleryCapability, p as FULL_IMAGE_BBOX, q as VISIT_MERGE_GAP_MS, r as BaseDevice, rt as deriveRecordingMode, st as failureContributionCapability, t as AnalyticsGroupDetailSchema, tt as customAction, u as DeclaredDevices, ut as isScheduleActive, v as NC_CONDITION_CATALOG, vt as readTimelapseGeneratedAt, w as NcRulePatchSchema, wt as videoclipsCapability, x as NC_TAXONOMY, xt as subKindsOf, y as NC_DEFAULT_SNOOZE_MINUTES, z as SCENE_DEFAULT_UNCOVERED_POLICY, zt as number } from "../dist-3FJkk7Mx.mjs";
2
2
  import { t as __exportAll } from "../embedding-encoder/index.mjs";
3
3
  import * as fs from "node:fs";
4
4
  import { promises } from "node:fs";
@@ -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_pipeline_analytics_widgets-BjletSHg.mjs")).catch((e) => {
33
+ return l ||= d(() => import("./_virtual_mf-localSharedImportMap___mfe_internal__addon_pipeline_analytics_widgets-Bb5cXFSY.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-post-analysis",
3
- "version": "1.2.143",
3
+ "version": "1.2.145",
4
4
  "description": "Post-Analysis bundle — enrichment, embedding-encoder, pipeline-analytics. Multi-entry npm package shipping addons that consume pipeline output.",
5
5
  "keywords": [
6
6
  "camstack",