@camstack/addon-post-analysis 1.2.45 → 1.2.47

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.
@@ -15508,14 +15508,6 @@ var RebuildObjectEmbeddingsInput = object({
15508
15508
  deviceId: number().optional(),
15509
15509
  since: number().optional(),
15510
15510
  until: number().optional(),
15511
- /**
15512
- * Fraction added on EACH side of the detection box before cropping.
15513
- * ~0.2 (a 1.4x window) gives CLIP the surroundings it is trained on; 0 is
15514
- * the pixel-tight crop the first implementation used.
15515
- */
15516
- cropMargin: number().min(0).max(4).optional(),
15517
- /** Square the window before extracting, so a tall subject is not squashed. */
15518
- square: boolean().optional(),
15519
15511
  /** Stop after this many tracks; the result reports whether more remain. */
15520
15512
  maxTracks: number().int().positive().optional()
15521
15513
  });
@@ -15550,6 +15542,14 @@ var RebuildStatusSchema = object({
15550
15542
  missingKeyFrame: number(),
15551
15543
  /** Tracks with no usable detection box. */
15552
15544
  missingBbox: number(),
15545
+ /**
15546
+ * Tracks the pipeline REFUSED rather than broke on: the camera is not
15547
+ * attached, or `clip-embedding` is not enabled in its step tree. Separate
15548
+ * from `failed` because the remedy is a configuration change, not an engine
15549
+ * investigation — and because a pass over decommissioned cameras would
15550
+ * otherwise read as a total engine outage.
15551
+ */
15552
+ notRunnable: number(),
15553
15553
  failed: number(),
15554
15554
  /** Set once a pass ends: true only when EVERYTHING was covered. */
15555
15555
  complete: boolean().nullable(),
@@ -16800,6 +16800,17 @@ method(RunnerCameraConfigSchema, object({ success: literal(true) }), { kind: "mu
16800
16800
  }), NativeCropResultSchema.nullable()), method(object({
16801
16801
  deviceId: number(),
16802
16802
  frameHandle: FrameHandleSchema.optional(),
16803
+ /**
16804
+ * FULL FRAME (base64 JPEG). The runner derives the crop rectangle from
16805
+ * `parent.bbox` with the cluster crop convention and cuts it itself —
16806
+ * do NOT pre-crop for this field, that is what `cropJpeg` is.
16807
+ */
16808
+ frameJpeg: string().optional(),
16809
+ /**
16810
+ * PRE-CUT tile (base64 JPEG), used verbatim — NO padding is applied.
16811
+ * The fallback when the lease/session backing the frame is gone and the
16812
+ * caller already holds a crop.
16813
+ */
16803
16814
  cropJpeg: string().optional(),
16804
16815
  parent: DetailParentSchema,
16805
16816
  steps: array(string()).optional()
@@ -31391,6 +31402,34 @@ function encodeVectorBase64(vector) {
31391
31402
  for (let i = 0; i < floats.length; i += 1) view.setFloat32(i * 4, floats[i] ?? 0, true);
31392
31403
  return Buffer.from(bytes).toString("base64");
31393
31404
  }
31405
+ /** Vector length implied by a base64 payload, without decoding it. */
31406
+ function vectorDimFromBase64(encoded) {
31407
+ return Math.floor(Buffer.from(encoded, "base64").byteLength / 4);
31408
+ }
31409
+ object({
31410
+ /**
31411
+ * Fraction of the box's own size added on EACH side before cutting.
31412
+ *
31413
+ * CLIP is trained on natural images WITH surroundings; a pixel-tight crop
31414
+ * removes exactly the context it is strongest on (a dog cut to its outline
31415
+ * is a dark blob). The right value is an empirical question, which is why it
31416
+ * is a setting: 0 / 0.15 / 0.2 / 0.5 are the interesting points.
31417
+ */
31418
+ paddingRatio: number().min(0).max(4),
31419
+ /**
31420
+ * Square the window (in PIXELS) before cutting.
31421
+ *
31422
+ * CLIP's input is square, so a tall bbox resized straight to NxN is squashed
31423
+ * — a standing person becomes a shape the model never saw. Squaring costs
31424
+ * extra background, which is context the model wants anyway. Off by default
31425
+ * because the live path has never squared and the stored index reflects that.
31426
+ */
31427
+ square: boolean()
31428
+ });
31429
+ ({
31430
+ paddingRatio: .15,
31431
+ square: false
31432
+ }).paddingRatio;
31394
31433
  //#endregion
31395
31434
  Object.defineProperty(exports, "BaseAddon", {
31396
31435
  enumerable: true,
@@ -31710,6 +31749,12 @@ Object.defineProperty(exports, "unknown", {
31710
31749
  return unknown;
31711
31750
  }
31712
31751
  });
31752
+ Object.defineProperty(exports, "vectorDimFromBase64", {
31753
+ enumerable: true,
31754
+ get: function() {
31755
+ return vectorDimFromBase64;
31756
+ }
31757
+ });
31713
31758
  Object.defineProperty(exports, "videoclipsCapability", {
31714
31759
  enumerable: true,
31715
31760
  get: function() {
@@ -15486,14 +15486,6 @@ var RebuildObjectEmbeddingsInput = object({
15486
15486
  deviceId: number().optional(),
15487
15487
  since: number().optional(),
15488
15488
  until: number().optional(),
15489
- /**
15490
- * Fraction added on EACH side of the detection box before cropping.
15491
- * ~0.2 (a 1.4x window) gives CLIP the surroundings it is trained on; 0 is
15492
- * the pixel-tight crop the first implementation used.
15493
- */
15494
- cropMargin: number().min(0).max(4).optional(),
15495
- /** Square the window before extracting, so a tall subject is not squashed. */
15496
- square: boolean().optional(),
15497
15489
  /** Stop after this many tracks; the result reports whether more remain. */
15498
15490
  maxTracks: number().int().positive().optional()
15499
15491
  });
@@ -15528,6 +15520,14 @@ var RebuildStatusSchema = object({
15528
15520
  missingKeyFrame: number(),
15529
15521
  /** Tracks with no usable detection box. */
15530
15522
  missingBbox: number(),
15523
+ /**
15524
+ * Tracks the pipeline REFUSED rather than broke on: the camera is not
15525
+ * attached, or `clip-embedding` is not enabled in its step tree. Separate
15526
+ * from `failed` because the remedy is a configuration change, not an engine
15527
+ * investigation — and because a pass over decommissioned cameras would
15528
+ * otherwise read as a total engine outage.
15529
+ */
15530
+ notRunnable: number(),
15531
15531
  failed: number(),
15532
15532
  /** Set once a pass ends: true only when EVERYTHING was covered. */
15533
15533
  complete: boolean().nullable(),
@@ -16778,6 +16778,17 @@ method(RunnerCameraConfigSchema, object({ success: literal(true) }), { kind: "mu
16778
16778
  }), NativeCropResultSchema.nullable()), method(object({
16779
16779
  deviceId: number(),
16780
16780
  frameHandle: FrameHandleSchema.optional(),
16781
+ /**
16782
+ * FULL FRAME (base64 JPEG). The runner derives the crop rectangle from
16783
+ * `parent.bbox` with the cluster crop convention and cuts it itself —
16784
+ * do NOT pre-crop for this field, that is what `cropJpeg` is.
16785
+ */
16786
+ frameJpeg: string().optional(),
16787
+ /**
16788
+ * PRE-CUT tile (base64 JPEG), used verbatim — NO padding is applied.
16789
+ * The fallback when the lease/session backing the frame is gone and the
16790
+ * caller already holds a crop.
16791
+ */
16781
16792
  cropJpeg: string().optional(),
16782
16793
  parent: DetailParentSchema,
16783
16794
  steps: array(string()).optional()
@@ -31369,5 +31380,33 @@ function encodeVectorBase64(vector) {
31369
31380
  for (let i = 0; i < floats.length; i += 1) view.setFloat32(i * 4, floats[i] ?? 0, true);
31370
31381
  return Buffer.from(bytes).toString("base64");
31371
31382
  }
31383
+ /** Vector length implied by a base64 payload, without decoding it. */
31384
+ function vectorDimFromBase64(encoded) {
31385
+ return Math.floor(Buffer.from(encoded, "base64").byteLength / 4);
31386
+ }
31387
+ object({
31388
+ /**
31389
+ * Fraction of the box's own size added on EACH side before cutting.
31390
+ *
31391
+ * CLIP is trained on natural images WITH surroundings; a pixel-tight crop
31392
+ * removes exactly the context it is strongest on (a dog cut to its outline
31393
+ * is a dark blob). The right value is an empirical question, which is why it
31394
+ * is a setting: 0 / 0.15 / 0.2 / 0.5 are the interesting points.
31395
+ */
31396
+ paddingRatio: number().min(0).max(4),
31397
+ /**
31398
+ * Square the window (in PIXELS) before cutting.
31399
+ *
31400
+ * CLIP's input is square, so a tall bbox resized straight to NxN is squashed
31401
+ * — a standing person becomes a shape the model never saw. Squaring costs
31402
+ * extra background, which is context the model wants anyway. Off by default
31403
+ * because the live path has never squared and the stored index reflects that.
31404
+ */
31405
+ square: boolean()
31406
+ });
31407
+ ({
31408
+ paddingRatio: .15,
31409
+ square: false
31410
+ }).paddingRatio;
31372
31411
  //#endregion
31373
- export { unknown as $, kebabToCamel as A, DeviceType as B, cosineSimilarity as C, encodeVectorBase64 as D, embeddingEncoderCapability as E, subKindsOf as F, _enum as G, hydrateSchema as H, videoclipsCapability as I, literal as J, array as K, zoneAnalyticsCapability as L, pipelineAnalyticsCapability as M, plateGalleryCapability as N, faceGalleryCapability as O, readDeviceStateFrom as P, string as Q, errMsg as R, buildEventKindDescriptor as S, defineCustomActions as T, isDeviceScopedCap as U, createEvent as V, nodePin as W, object as X, number as Y, record as Z, TimelapseRuleInputSchema as _, MACRO_LABELS as a, alarmPanelCapability as b, NcConditionDescriptorSchema as c, NcRuleSchema as d, EventCategory as et, NcSnoozeInputSchema as f, OpsLogEntrySchema as g, NcTaxonomySchema as h, EVENT_PAD_MS as i, notificationRulesCapability as j, hfModelUrl as k, NcRuleInputSchema as l, NcSnoozeSuppressedSchema as m, DEFAULT_EVENT_COLOR as n, NC_CONDITION_CATALOG as o, NcSnoozeSchema as p, boolean as q, EVENT_KIND_BY_CAP as r, NC_TAXONOMY as s, BaseDevice as t, NcRulePatchSchema as u, TimelapseRuleSchema as v, customAction as w, audioMetricsCapability as x, addonWidgetsSourceCapability as y, BaseAddon as z };
31412
+ export { string as $, kebabToCamel as A, BaseAddon as B, cosineSimilarity as C, encodeVectorBase64 as D, embeddingEncoderCapability as E, subKindsOf as F, nodePin as G, createEvent as H, vectorDimFromBase64 as I, boolean as J, _enum as K, videoclipsCapability as L, pipelineAnalyticsCapability as M, plateGalleryCapability as N, faceGalleryCapability as O, readDeviceStateFrom as P, record as Q, zoneAnalyticsCapability as R, buildEventKindDescriptor as S, defineCustomActions as T, hydrateSchema as U, DeviceType as V, isDeviceScopedCap as W, number as X, literal as Y, object as Z, TimelapseRuleInputSchema as _, MACRO_LABELS as a, alarmPanelCapability as b, NcConditionDescriptorSchema as c, NcRuleSchema as d, unknown as et, NcSnoozeInputSchema as f, OpsLogEntrySchema as g, NcTaxonomySchema as h, EVENT_PAD_MS as i, notificationRulesCapability as j, hfModelUrl as k, NcRuleInputSchema as l, NcSnoozeSuppressedSchema as m, DEFAULT_EVENT_COLOR as n, NC_CONDITION_CATALOG as o, NcSnoozeSchema as p, array as q, EVENT_KIND_BY_CAP as r, NC_TAXONOMY as s, BaseDevice as t, EventCategory as tt, NcRulePatchSchema as u, TimelapseRuleSchema as v, customAction as w, audioMetricsCapability as x, addonWidgetsSourceCapability as y, errMsg as z };
@@ -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-QzgUDrwU.js");
5
+ const require_dist = require("../dist-B5O4mNmd.js");
6
6
  let node_fs = require("node:fs");
7
7
  let node_fs$1 = require_dist.__toESM(node_fs, 1);
8
8
  node_fs = require_dist.__toESM(node_fs);
@@ -1,4 +1,4 @@
1
- import { E as embeddingEncoderCapability, k as hfModelUrl, z as BaseAddon } from "../dist-BoV5RsRC.mjs";
1
+ import { B as BaseAddon, E as embeddingEncoderCapability, k as hfModelUrl } from "../dist-BHtH4Obt.mjs";
2
2
  import { createRequire } from "node:module";
3
3
  import * as fs from "node:fs";
4
4
  import "node:fs";
@@ -1,4 +1,4 @@
1
- const require_dist = require("./dist-QzgUDrwU.js");
1
+ const require_dist = require("./dist-B5O4mNmd.js");
2
2
  let node_fs = require("node:fs");
3
3
  node_fs = require_dist.__toESM(node_fs, 1);
4
4
  let node_path = require("node:path");
@@ -18,7 +18,7 @@ var e = {
18
18
  },
19
19
  "@camstack/types": {
20
20
  name: "@camstack/types",
21
- version: "1.2.40",
21
+ version: "1.2.41",
22
22
  scope: ["default"],
23
23
  loaded: !1,
24
24
  from: "addon_pipeline_analytics_widgets",
@@ -36,7 +36,7 @@ async function r() {
36
36
  }
37
37
  },
38
38
  "@camstack/types": {
39
- version: "1.2.40",
39
+ version: "1.2.41",
40
40
  scope: "default",
41
41
  shareConfig: {
42
42
  singleton: !0,