@camstack/addon-post-analysis 1.2.358 → 1.2.359

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.
@@ -5490,7 +5490,7 @@ var ZodIssueCode = {
5490
5490
  var ZodFirstPartyTypeKind;
5491
5491
  ZodFirstPartyTypeKind || (ZodFirstPartyTypeKind = {});
5492
5492
  //#endregion
5493
- //#region ../types/dist/sleep-Tkp9dHXv.mjs
5493
+ //#region ../types/dist/sleep-BjDbnx6-.mjs
5494
5494
  /**
5495
5495
  * The audio chunk plane's byte format, and the ONE expansion from a coded
5496
5496
  * window to float samples (D455).
@@ -12886,6 +12886,12 @@ function isRootSuppliableStepId(value) {
12886
12886
  function isLabelSupplyStepId(value) {
12887
12887
  return LABEL_SUPPLY_STEP_IDS.some((id) => id === value);
12888
12888
  }
12889
+ /** The macro a detection must carry for a label-kind step to apply to it. */
12890
+ var LABEL_SUPPLY_MACRO = {
12891
+ "animal-classifier": "animal",
12892
+ "vehicle-classifier": "vehicle",
12893
+ "package-detection": "package"
12894
+ };
12889
12895
  var CROP_SUPPLY_SOURCES = {
12890
12896
  "plate-detection": {
12891
12897
  rootLabels: ["license_plate"],
@@ -69189,6 +69195,12 @@ Object.defineProperty(exports, "FailureCounters", {
69189
69195
  return FailureCounters;
69190
69196
  }
69191
69197
  });
69198
+ Object.defineProperty(exports, "LABEL_SUPPLY_MACRO", {
69199
+ enumerable: true,
69200
+ get: function() {
69201
+ return LABEL_SUPPLY_MACRO;
69202
+ }
69203
+ });
69192
69204
  Object.defineProperty(exports, "LabelAttributionSchema", {
69193
69205
  enumerable: true,
69194
69206
  get: function() {
@@ -70107,6 +70119,12 @@ Object.defineProperty(exports, "isKnownTemplateVar", {
70107
70119
  return isKnownTemplateVar;
70108
70120
  }
70109
70121
  });
70122
+ Object.defineProperty(exports, "isLabelSupplyStepId", {
70123
+ enumerable: true,
70124
+ get: function() {
70125
+ return isLabelSupplyStepId;
70126
+ }
70127
+ });
70110
70128
  Object.defineProperty(exports, "isMediaOwnerType", {
70111
70129
  enumerable: true,
70112
70130
  get: function() {
@@ -5459,7 +5459,7 @@ var ZodIssueCode = {
5459
5459
  var ZodFirstPartyTypeKind;
5460
5460
  ZodFirstPartyTypeKind || (ZodFirstPartyTypeKind = {});
5461
5461
  //#endregion
5462
- //#region ../types/dist/sleep-Tkp9dHXv.mjs
5462
+ //#region ../types/dist/sleep-BjDbnx6-.mjs
5463
5463
  /**
5464
5464
  * The audio chunk plane's byte format, and the ONE expansion from a coded
5465
5465
  * window to float samples (D455).
@@ -12855,6 +12855,12 @@ function isRootSuppliableStepId(value) {
12855
12855
  function isLabelSupplyStepId(value) {
12856
12856
  return LABEL_SUPPLY_STEP_IDS.some((id) => id === value);
12857
12857
  }
12858
+ /** The macro a detection must carry for a label-kind step to apply to it. */
12859
+ var LABEL_SUPPLY_MACRO = {
12860
+ "animal-classifier": "animal",
12861
+ "vehicle-classifier": "vehicle",
12862
+ "package-detection": "package"
12863
+ };
12858
12864
  var CROP_SUPPLY_SOURCES = {
12859
12865
  "plate-detection": {
12860
12866
  rootLabels: ["license_plate"],
@@ -68900,4 +68906,4 @@ function buildClipModelRegistry(entries) {
68900
68906
  /** The built-in catalog's registry. */
68901
68907
  var BUILTIN_CLIP_MODELS = buildClipModelRegistry(CLIP_IMAGE_MODELS);
68902
68908
  //#endregion
68903
- export { NC_ALARM_DEFAULT_PROFILE_ID as $, embeddingRequirementsFailedError as $n, subKindsOf as $r, RECORDING_EXPORT_MAX_READ_BYTES as $t, DetectionSourceSchema as A, boolean as Ai, applyBlockingEdit as An, parseProcStatus as Ar, NcConditionsSchema as At, FailureCounters as B, templateLiteral as Bi, consumableLowPercentOf as Bn, resolveModeNotifyPolicy as Br, NcSharedSequenceSchema as Bt, CoverStateSchema as C, isDeviceScopedCap as Ci, TrackRelationSchema as Cn, isVectorIndexDimConflict as Cr, NC_TEMPLATE_VARS as Ct, DETECTION_MACRO_CLASSES as D, ZodObject as Di, addonWidgetsSourceCapability as Dn, memoizePinnedFfmpeg as Dr, NcAlarmSensorsSchema as Dt, DEFAULT_TIMELAPSE_PREVIEW_TEXT as E, sleep as Ei, activateAlarmProfile as En, mayWriteToLocation as Er, NcAlarmSensorsInputSchema as Et, EVENT_KIND_BY_CAP as F, object as Fi, audioMetricsCapability as Fn, readTimelapseGeneratedAt as Fr, NcRulePatchSchema as Ft, MAX_ARCHIVED_DEBUG_NOTES as G, deriveDetailCropRect as Gn, ruleDeviceCompatCapQueries as Gr, NcSystemEventKindSchema as Gt, ListTrackRelationsInputSchema as H, union as Hi, cosineSimilarity as Hn, rootSupplyServes as Hr, NcSnoozeSchema as Ht, EVENT_OWNER_TYPES as I, partialRecord as Ii, audioModeOf as In, renameAlarmProfile as Ir, NcRuleSchema as It, MAX_TRACK_PURITIES as J, describeSystemEventDeliveryProblem as Jn, sceneMonitorCapability as Jr, NcTemplatePreviewSchema as Jt, MAX_BIRTH_DECISION_RECORDS as K, derivePostTriggeredAction as Kn, ruleGroupingApplies as Kr, NcTaxonomySchema as Kt, EXPORT_DENSE_MAX_RANGES as L, record as Li, buildEventKindDescriptor as Ln, resolveClipSearchMinScore as Lr, NcRuleTargetSchema as Lt, EMBEDDING_REQUIREMENTS_FAILED as M, literal as Mi, applyNonBlockingEdit as Mn, plateGalleryCapability as Mr, NcRuleActionSchema as Mt, EMBEDDING_REQUIREMENTS_UNAVAILABLE as N, looseObject as Ni, applySecureOnArmEdit as Nn, readDeviceStateFrom as Nr, NcRuleActionsSchema as Nt, DETECTION_PIPELINE_CAP_NAME as O, _enum as Oi, alarmDeviceSecureOnArm as On, notificationRulesCapability as Or, NcAlarmSettingsPatchSchema as Ot, EVENT_DENSITY_BATCH_MAX as P, number as Pi, assertTimelapseCadences as Pn, readMotionTriggeredBy as Pr, NcRuleInputSchema as Pt, MotionTriggeredBySchema as Q, embeddingRefusalOf as Qn, storageOccupancyCapability as Qr, PoolMemoryWatchdog as Qt, FIRST_LEVEL_MACRO_CLASSES as R, strictObject as Ri, buildViewerLink as Rn, resolveLocationMode as Rr, NcRuleUpdateInputSchema as Rt, ClearTrackRelationResultSchema as S, hydrateSchema as Si, TrackRelationKindSchema as Sn, isSystemEventSummaryRule as Sr, NC_TAXONOMY as St, DEFAULT_EVENT_COLOR as T, normalizeNodeId as Ti, TrackSourceSchema as Tn, linkedStepOf as Tr, NcAlarmPostTriggeredActionSchema as Tt, ListTrackRelationsResultSchema as U, unknown as Ui, createAlarmProfile as Un, ruleAutoTriggersAlarm as Ur, NcSnoozeSuppressedSchema as Ut, LabelAttributionSchema as V, tuple as Vi, coreBlockIdFromAddonId as Vn, resolvePoolMemoryPolicy as Vr, NcSnoozeInputSchema as Vt, LockStateSchema as W, EventCategory as Wi, deleteAlarmProfile as Wn, ruleBelongsToAlarm as Wr, NcStateSummarySectionIdSchema as Wt, MOTION_CLOSE_AFTER_MS as X, embeddingEncoderCapability as Xn, sensorRaisedOf as Xr, OPS_LOG_DEFAULT_LIMIT as Xt, MAX_TRACK_RELATIONS as Y, describeSystemEventFamilyProblem as Yn, secureActuationFor as Yr, NcTemplateVarDescriptorSchema as Yt, MediaFileKindEnum as Z, embeddingModelFailedError as Zn, servedTemplateVars as Zr, OpsLogEntrySchema as Zt, BIRTH_DECISION_DEFAULT_LIMIT as _, BaseAddon as _i, TRACK_RELATIONS_DEFAULT_LIMIT as _n, isMediaOwnerType as _r, NC_GROUPING_MIN_SEC as _t, CLIP_EMBEDDING_STEP_ID as a, systemEventSummarySplitOf as ai, SCENE_DEFAULT_ANCHOR_THRESHOLD as an, faceGalleryCapability as ar, NC_ALARM_TRIGGERED_MAX_SEC as at, COCO_TO_MACRO as b, customAction as bi, TimelapseRuleSchema as bn, isScheduleActive as br, NC_SYSTEM_EVENT_KIND_GROUP_SPECS as bt, resolveClusterModelPin as c, vectorDimFromBase64 as ci, SCENE_DEFAULT_QUIET_SECONDS as cn, gifFromMp4Args as cr, NC_CLIP_POST_ROLL_DEFAULT_SEC as ct, APPEARANCE_BLOCKS as d, DEFAULT_FIRST_SIGHTING_FRESHNESS_MS as di, SCENE_RESET_RECAPTURES as dn, isAudioClassName as dr, NC_CONDITION_CATALOG as dt, syncActiveAlarmProfileSettings as ei, RECORDING_SOURCE_CAMSTACK_ADDON as en, embeddingRequirementsUnavailableError as er, NC_ALARM_DEFAULT_TRIGGERED_DURATION_SEC as et, APPEARANCE_RESOLVES_AMBIGUITY_DEFAULT as f, canonicalHash as fi, SceneMonitorSchema as fn, isDefaultAlarmProfileId as fr, NC_CONSUMABLE_LOW_PERCENT_DEFAULT as ft, ArchivedDebugNoteSchema as g, errMsg as gi, TIMELAPSE_DENSE_FLOOR_SEC as gn, isKnownTemplateVar as gr, NC_GROUPING_MAX_SEC as gt, AlarmArmModeSchema as h, DeviceType as hi, SetTrackRelationInputSchema as hn, isEventOwnerType as hr, NC_GROUPING_DEFAULT_SEC as ht, CLIP_TEXT_MODELS as i, systemEventSummaryScheduleOf as ii, SCENE_CONFIRM_DEFAULT_TIMEOUT_MS as in, evictionPolicyOfLocation as ir, NC_ALARM_SYSTEM_EVENT_KINDS as it, EMBEDDING_MODEL_FAILED as j, discriminatedUnion as ji, applyModeDelaysEdits as jn, pipelineAnalyticsCapability as jr, NcLegacyRuleActionSequenceSchema as jt, DeclaredDevices as k, array as ki, alarmPanelCapability as kn, occupancyScope as kr, NcConditionDescriptorSchema as kt, ALL_CAPABILITY_DEFINITIONS as l, viewerLinkBaseOf as li, SCENE_DEFAULT_UNCOVERED_POLICY as ln, isAlarmControllableCap as lr, NC_CLIP_PRE_ROLL_DEFAULT_SEC as lt, AUDIO_MACRO_LABELS as m, isSourceCap as mi, SetTrackPurityResultSchema as mn, isEventKindLabelKey as mr, NC_DEFAULT_SNOOZE_MINUTES as mt, DEFAULT_CLIP_MODEL as n, systemEventFamilyProblems as ni, RetrainStatusSchema as nn, ensureAlarmProfiles as nr, NC_ALARM_DELAY_MAX_SEC as nt, FACE_EMBEDDING_STEP_ID as o, templateCarriesSummary as oi, SCENE_DEFAULT_CHECK_INTERVAL_SEC as on, failureContributionCapability as or, NC_AUDIO_CONFIRM_HITS_DEFAULT as ot, ARCHIVED_DEBUG_NOTES_DEFAULT_LIMIT as p, evaluateSensorEdge as pi, SetTrackPurityInputSchema as pn, isDetectionMacroClass as pr, NC_CONSUMABLE_SYSTEM_EVENT_KINDS as pt, MAX_BIRTH_LATENCY_PROXY_MS as q, deriveRecordingMode as qn, ruleKindOf as qr, NcTemplatePreviewInputSchema as qt, CLIP_IMAGE_MODELS as r, systemEventFilterApplies as ri, SCENE_CONFIRM_DEFAULT_MAX_IMAGE_PX as rn, eventKindLabel as rr, NC_ALARM_NOTIFY_FIELDS as rt, readClusterModelPinStrict as s, templateVarsFor as si, SCENE_DEFAULT_OBSERVATION_SPACING_SEC as sn, gifDeriveSpeed as sr, NC_AUDIO_CONFIRM_WINDOW_SEC_DEFAULT as st, BUILTIN_CLIP_MODELS as t, systemEventDeliveryProblems as ti, RebuildObjectEmbeddingsRefusalSchema as tn, encodeVectorBase64 as tr, NC_ALARM_DELAY_FIELDS as tt, APPEARANCE_BIN_COUNT as u, zoneAnalyticsCapability as ui, SCENE_DIVERGED as un, isAppLinkBase as ur, NC_CLIP_RETENTION_MAX_SEC as ut, BaseDevice as v, CamProfileSchema as vi, TimelapseRuleInputSchema as vn, isRetiredClearKey as vr, NC_SENSOR_TRANSITION_KINDS as vt, DEFAULT_DETAIL_CROP_CONVENTION as w, nodePin as wi, TrackSideSchema as wn, kebabToCamel as wr, NcAlarmConfigSchema as wt, ClearTrackRelationInputSchema as x, defineCustomActions as xi, TrackPuritySchema as xn, isSystemDelivery as xr, NC_TANK_SYSTEM_EVENT_KINDS as xt, BirthDecisionRecordSchema as y, createEvent as yi, TimelapseRulePatchSchema as yn, isRootSuppliableStepId as yr, NC_SNOOZE_MAX_MINUTES as yt, FULL_IMAGE_BBOX as z, string as zi, cloneAlarmSettings as zn, resolveModeDelays as zr, NcScheduleSchema as zt };
68909
+ export { MotionTriggeredBySchema as $, embeddingRefusalOf as $n, servedTemplateVars as $r, PoolMemoryWatchdog as $t, DetectionSourceSchema as A, _enum as Ai, alarmPanelCapability as An, notificationRulesCapability as Ar, NcConditionDescriptorSchema as At, FailureCounters as B, strictObject as Bi, cloneAlarmSettings as Bn, resolveLocationMode as Br, NcScheduleSchema as Bt, CoverStateSchema as C, defineCustomActions as Ci, TrackRelationKindSchema as Cn, isSystemDelivery as Cr, NC_TAXONOMY as Ct, DETECTION_MACRO_CLASSES as D, normalizeNodeId as Di, activateAlarmProfile as Dn, linkedStepOf as Dr, NcAlarmSensorsInputSchema as Dt, DEFAULT_TIMELAPSE_PREVIEW_TEXT as E, nodePin as Ei, TrackSourceSchema as En, kebabToCamel as Er, NcAlarmPostTriggeredActionSchema as Et, EVENT_KIND_BY_CAP as F, looseObject as Fi, assertTimelapseCadences as Fn, readDeviceStateFrom as Fr, NcRuleInputSchema as Ft, LockStateSchema as G, unknown as Gi, deleteAlarmProfile as Gn, ruleAutoTriggersAlarm as Gr, NcStateSummarySectionIdSchema as Gt, LabelAttributionSchema as H, templateLiteral as Hi, coreBlockIdFromAddonId as Hn, resolveModeNotifyPolicy as Hr, NcSnoozeInputSchema as Ht, EVENT_OWNER_TYPES as I, number as Ii, audioMetricsCapability as In, readMotionTriggeredBy as Ir, NcRulePatchSchema as It, MAX_BIRTH_LATENCY_PROXY_MS as J, deriveRecordingMode as Jn, ruleGroupingApplies as Jr, NcTemplatePreviewInputSchema as Jt, MAX_ARCHIVED_DEBUG_NOTES as K, EventCategory as Ki, deriveDetailCropRect as Kn, ruleBelongsToAlarm as Kr, NcSystemEventKindSchema as Kt, EXPORT_DENSE_MAX_RANGES as L, object as Li, audioModeOf as Ln, readTimelapseGeneratedAt as Lr, NcRuleSchema as Lt, EMBEDDING_REQUIREMENTS_FAILED as M, boolean as Mi, applyModeDelaysEdits as Mn, parseProcStatus as Mr, NcLegacyRuleActionSequenceSchema as Mt, EMBEDDING_REQUIREMENTS_UNAVAILABLE as N, discriminatedUnion as Ni, applyNonBlockingEdit as Nn, pipelineAnalyticsCapability as Nr, NcRuleActionSchema as Nt, DETECTION_PIPELINE_CAP_NAME as O, sleep as Oi, addonWidgetsSourceCapability as On, mayWriteToLocation as Or, NcAlarmSensorsSchema as Ot, EVENT_DENSITY_BATCH_MAX as P, literal as Pi, applySecureOnArmEdit as Pn, plateGalleryCapability as Pr, NcRuleActionsSchema as Pt, MediaFileKindEnum as Q, embeddingModelFailedError as Qn, sensorRaisedOf as Qr, OpsLogEntrySchema as Qt, FIRST_LEVEL_MACRO_CLASSES as R, partialRecord as Ri, buildEventKindDescriptor as Rn, renameAlarmProfile as Rr, NcRuleTargetSchema as Rt, ClearTrackRelationResultSchema as S, customAction as Si, TrackPuritySchema as Sn, isScheduleActive as Sr, NC_TANK_SYSTEM_EVENT_KINDS as St, DEFAULT_EVENT_COLOR as T, isDeviceScopedCap as Ti, TrackSideSchema as Tn, isVectorIndexDimConflict as Tr, NcAlarmConfigSchema as Tt, ListTrackRelationsInputSchema as U, tuple as Ui, cosineSimilarity as Un, resolvePoolMemoryPolicy as Ur, NcSnoozeSchema as Ut, LABEL_SUPPLY_MACRO as V, string as Vi, consumableLowPercentOf as Vn, resolveModeDelays as Vr, NcSharedSequenceSchema as Vt, ListTrackRelationsResultSchema as W, union as Wi, createAlarmProfile as Wn, rootSupplyServes as Wr, NcSnoozeSuppressedSchema as Wt, MAX_TRACK_RELATIONS as X, describeSystemEventFamilyProblem as Xn, sceneMonitorCapability as Xr, NcTemplateVarDescriptorSchema as Xt, MAX_TRACK_PURITIES as Y, describeSystemEventDeliveryProblem as Yn, ruleKindOf as Yr, NcTemplatePreviewSchema as Yt, MOTION_CLOSE_AFTER_MS as Z, embeddingEncoderCapability as Zn, secureActuationFor as Zr, OPS_LOG_DEFAULT_LIMIT as Zt, BIRTH_DECISION_DEFAULT_LIMIT as _, DeviceType as _i, TIMELAPSE_DENSE_FLOOR_SEC as _n, isKnownTemplateVar as _r, NC_GROUPING_MAX_SEC as _t, CLIP_EMBEDDING_STEP_ID as a, systemEventFilterApplies as ai, SCENE_CONFIRM_DEFAULT_TIMEOUT_MS as an, evictionPolicyOfLocation as ar, NC_ALARM_SYSTEM_EVENT_KINDS as at, COCO_TO_MACRO as b, CamProfileSchema as bi, TimelapseRulePatchSchema as bn, isRetiredClearKey as br, NC_SNOOZE_MAX_MINUTES as bt, resolveClusterModelPin as c, templateCarriesSummary as ci, SCENE_DEFAULT_OBSERVATION_SPACING_SEC as cn, gifDeriveSpeed as cr, NC_AUDIO_CONFIRM_WINDOW_SEC_DEFAULT as ct, APPEARANCE_BLOCKS as d, viewerLinkBaseOf as di, SCENE_DIVERGED as dn, isAppLinkBase as dr, NC_CLIP_RETENTION_MAX_SEC as dt, storageOccupancyCapability as ei, RECORDING_EXPORT_MAX_READ_BYTES as en, embeddingRequirementsFailedError as er, NC_ALARM_DEFAULT_PROFILE_ID as et, APPEARANCE_RESOLVES_AMBIGUITY_DEFAULT as f, zoneAnalyticsCapability as fi, SCENE_RESET_RECAPTURES as fn, isAudioClassName as fr, NC_CONDITION_CATALOG as ft, ArchivedDebugNoteSchema as g, isSourceCap as gi, SetTrackRelationInputSchema as gn, isEventOwnerType as gr, NC_GROUPING_DEFAULT_SEC as gt, AlarmArmModeSchema as h, evaluateSensorEdge as hi, SetTrackPurityResultSchema as hn, isEventKindLabelKey as hr, NC_DEFAULT_SNOOZE_MINUTES as ht, CLIP_TEXT_MODELS as i, systemEventFamilyProblems as ii, SCENE_CONFIRM_DEFAULT_MAX_IMAGE_PX as in, eventKindLabel as ir, NC_ALARM_NOTIFY_FIELDS as it, EMBEDDING_MODEL_FAILED as j, array as ji, applyBlockingEdit as jn, occupancyScope as jr, NcConditionsSchema as jt, DeclaredDevices as k, ZodObject as ki, alarmDeviceSecureOnArm as kn, memoizePinnedFfmpeg as kr, NcAlarmSettingsPatchSchema as kt, ALL_CAPABILITY_DEFINITIONS as l, templateVarsFor as li, SCENE_DEFAULT_QUIET_SECONDS as ln, gifFromMp4Args as lr, NC_CLIP_POST_ROLL_DEFAULT_SEC as lt, AUDIO_MACRO_LABELS as m, canonicalHash as mi, SetTrackPurityInputSchema as mn, isDetectionMacroClass as mr, NC_CONSUMABLE_SYSTEM_EVENT_KINDS as mt, DEFAULT_CLIP_MODEL as n, syncActiveAlarmProfileSettings as ni, RebuildObjectEmbeddingsRefusalSchema as nn, encodeVectorBase64 as nr, NC_ALARM_DELAY_FIELDS as nt, FACE_EMBEDDING_STEP_ID as o, systemEventSummaryScheduleOf as oi, SCENE_DEFAULT_ANCHOR_THRESHOLD as on, faceGalleryCapability as or, NC_ALARM_TRIGGERED_MAX_SEC as ot, ARCHIVED_DEBUG_NOTES_DEFAULT_LIMIT as p, DEFAULT_FIRST_SIGHTING_FRESHNESS_MS as pi, SceneMonitorSchema as pn, isDefaultAlarmProfileId as pr, NC_CONSUMABLE_LOW_PERCENT_DEFAULT as pt, MAX_BIRTH_DECISION_RECORDS as q, derivePostTriggeredAction as qn, ruleDeviceCompatCapQueries as qr, NcTaxonomySchema as qt, CLIP_IMAGE_MODELS as r, systemEventDeliveryProblems as ri, RetrainStatusSchema as rn, ensureAlarmProfiles as rr, NC_ALARM_DELAY_MAX_SEC as rt, readClusterModelPinStrict as s, systemEventSummarySplitOf as si, SCENE_DEFAULT_CHECK_INTERVAL_SEC as sn, failureContributionCapability as sr, NC_AUDIO_CONFIRM_HITS_DEFAULT as st, BUILTIN_CLIP_MODELS as t, subKindsOf as ti, RECORDING_SOURCE_CAMSTACK_ADDON as tn, embeddingRequirementsUnavailableError as tr, NC_ALARM_DEFAULT_TRIGGERED_DURATION_SEC as tt, APPEARANCE_BIN_COUNT as u, vectorDimFromBase64 as ui, SCENE_DEFAULT_UNCOVERED_POLICY as un, isAlarmControllableCap as ur, NC_CLIP_PRE_ROLL_DEFAULT_SEC as ut, BaseDevice as v, errMsg as vi, TRACK_RELATIONS_DEFAULT_LIMIT as vn, isLabelSupplyStepId as vr, NC_GROUPING_MIN_SEC as vt, DEFAULT_DETAIL_CROP_CONVENTION as w, hydrateSchema as wi, TrackRelationSchema as wn, isSystemEventSummaryRule as wr, NC_TEMPLATE_VARS as wt, ClearTrackRelationInputSchema as x, createEvent as xi, TimelapseRuleSchema as xn, isRootSuppliableStepId as xr, NC_SYSTEM_EVENT_KIND_GROUP_SPECS as xt, BirthDecisionRecordSchema as y, BaseAddon as yi, TimelapseRuleInputSchema as yn, isMediaOwnerType as yr, NC_SENSOR_TRANSITION_KINDS as yt, FULL_IMAGE_BBOX as z, record as zi, buildViewerLink as zn, resolveClipSearchMinScore as zr, NcRuleUpdateInputSchema as zt };
@@ -2,7 +2,7 @@ Object.defineProperties(exports, {
2
2
  __esModule: { value: true },
3
3
  [Symbol.toStringTag]: { value: "Module" }
4
4
  });
5
- const require_clip_model_registry = require("../clip-model-registry-DbrFhdoY.js");
5
+ const require_clip_model_registry = require("../clip-model-registry-DyP97b8e.js");
6
6
  let node_fs = require("node:fs");
7
7
  node_fs = require_clip_model_registry.__toESM(node_fs);
8
8
  let node_path = require("node:path");
@@ -1,4 +1,4 @@
1
- import { $n as embeddingRequirementsFailedError, Ar as parseProcStatus, Qt as PoolMemoryWatchdog, Ti as normalizeNodeId, Vr as resolvePoolMemoryPolicy, Xn as embeddingEncoderCapability, Zn as embeddingModelFailedError, _i as BaseAddon, a as CLIP_EMBEDDING_STEP_ID, c as resolveClusterModelPin, er as embeddingRequirementsUnavailableError, i as CLIP_TEXT_MODELS, n as DEFAULT_CLIP_MODEL, r as CLIP_IMAGE_MODELS, t as BUILTIN_CLIP_MODELS } from "../clip-model-registry-Cj7a4Cxs.mjs";
1
+ import { $t as PoolMemoryWatchdog, Di as normalizeNodeId, Mr as parseProcStatus, Qn as embeddingModelFailedError, Ur as resolvePoolMemoryPolicy, Zn as embeddingEncoderCapability, a as CLIP_EMBEDDING_STEP_ID, c as resolveClusterModelPin, er as embeddingRequirementsFailedError, i as CLIP_TEXT_MODELS, n as DEFAULT_CLIP_MODEL, r as CLIP_IMAGE_MODELS, t as BUILTIN_CLIP_MODELS, tr as embeddingRequirementsUnavailableError, yi as BaseAddon } from "../clip-model-registry-LnBofk4d.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";
@@ -18,7 +18,7 @@ var e = {
18
18
  },
19
19
  "@camstack/types": {
20
20
  name: "@camstack/types",
21
- version: "1.2.354",
21
+ version: "1.2.355",
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.354",
39
+ version: "1.2.355",
40
40
  scope: "default",
41
41
  shareConfig: {
42
42
  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_clip_model_registry = require("../clip-model-registry-DbrFhdoY.js");
5
+ const require_clip_model_registry = require("../clip-model-registry-DyP97b8e.js");
6
6
  let node_fs = require("node:fs");
7
7
  node_fs = require_clip_model_registry.__toESM(node_fs, 1);
8
8
  let node_path = require("node:path");
@@ -10744,6 +10744,47 @@ function resolveDetectionLabelCandidate(input) {
10744
10744
  //#endregion
10745
10745
  //#region src/pipeline-analytics/pipeline/label-tier.ts
10746
10746
  /**
10747
+ * The ONE tiered-label write rule (roadmap 4g).
10748
+ *
10749
+ * Before this file there were four writers and no rule. The frame path stamped
10750
+ * a label at track birth; `applyTrackEnrichmentLabel` wrote the classifier /
10751
+ * plate answer onto the track AND back-patched every already-emitted event; the
10752
+ * face recognizer wrote an identity; the plate gallery wrote a vehicle name.
10753
+ * Each of them was a bare `label = text` on a single column, so the LAST writer
10754
+ * won — which is how `9c05543f` (592), a `person` track, ended up labelled
10755
+ * `animal`, and how `7d1dc71e` (636) could hold `Turdus migratorius` with no
10756
+ * way to also say `bird`.
10757
+ *
10758
+ * The model is two independent slots (see `LabelTierSchema` in
10759
+ * `pipeline-analytics.cap.ts`):
10760
+ *
10761
+ * - tier 1 (`label`) — the SUB-CLASS: `dog`, `bird`, `van`.
10762
+ * - tier 2 (`subLabel`) — the INSTANCE: `Turdus migratorius`, `Alice`, a plate.
10763
+ *
10764
+ * **A higher tier is never overwritten by a lower one — structurally.** The two
10765
+ * live in different columns, so a tier-1 write physically cannot touch a
10766
+ * tier-2 value. That is the whole reason for two scalars rather than one
10767
+ * best-effort slot: the guarantee is a consequence of the shape, not of a
10768
+ * comparison somebody has to remember to write.
10769
+ *
10770
+ * **Within a tier, the higher score wins**, strictly — an equal score leaves
10771
+ * the incumbent in place, so a step that re-offers the same answer every frame
10772
+ * does not churn the row. The one exception is an incumbent attributed to
10773
+ * {@link MIGRATION_STEP_ID}: a value the 4g migration moved out of the old
10774
+ * single-slot column has no provenance and no comparable score, so ANY
10775
+ * properly-attributed write of its tier replaces it.
10776
+ *
10777
+ * **A candidate whose tier is not DECLARED is refused**, never guessed. The
10778
+ * tier is declared on `StepDefinition.labelTier` and travels on the wire
10779
+ * (`DetailResult.labelTier`, `ScoredLabel.tier`). Inferring it here from the
10780
+ * text or from the step's name is precisely the failure this model exists to
10781
+ * remove: the shape of a string cannot tell `Bird` the surname from `bird` the
10782
+ * sub-class.
10783
+ *
10784
+ * Every refusal is RETURNED, not swallowed — a branch that drops work says so
10785
+ * (`label write refused`, with `tags: { deviceId }`).
10786
+ */
10787
+ /**
10747
10788
  * `stepId` stamped on a tier the 4g migration filled from the pre-4g single
10748
10789
  * `label` column. It marks a value with NO provenance: nothing recorded which
10749
10790
  * step decided it, so its score is unknown and its tier was assigned by the
@@ -10904,6 +10945,17 @@ function resolveTieredLabelWrite(state, candidate) {
10904
10945
  className: state.className
10905
10946
  }
10906
10947
  };
10948
+ const expectedClass = stepInputClass(candidate.stepId);
10949
+ if (expectedClass !== void 0 && expectedClass !== state.className) return {
10950
+ kind: "refused",
10951
+ reason: {
10952
+ kind: "class-mismatch",
10953
+ text,
10954
+ stepId: candidate.stepId,
10955
+ className: state.className,
10956
+ expectedClass
10957
+ }
10958
+ };
10907
10959
  if (candidate.tier === void 0) return {
10908
10960
  kind: "refused",
10909
10961
  reason: {
@@ -10948,6 +11000,16 @@ function resolveTieredLabelWrite(state, candidate) {
10948
11000
  patch
10949
11001
  };
10950
11002
  }
11003
+ /**
11004
+ * The macro class a label-supply step (or its `detector-link:` stand-in) takes
11005
+ * as input, or `undefined` for a writer with no class contract (identity, plate
11006
+ * text, the raw class).
11007
+ */
11008
+ function stepInputClass(stepId) {
11009
+ const linked = require_clip_model_registry.linkedStepOf(stepId);
11010
+ if (linked !== void 0) return require_clip_model_registry.LABEL_SUPPLY_MACRO[linked];
11011
+ return require_clip_model_registry.isLabelSupplyStepId(stepId) ? require_clip_model_registry.LABEL_SUPPLY_MACRO[stepId] : void 0;
11012
+ }
10951
11013
  /** One-line `meta` bag for the refusal log — the shape every caller logs. */
10952
11014
  function refusalLogMeta(reason) {
10953
11015
  switch (reason.kind) {
@@ -10961,6 +11023,13 @@ function refusalLogMeta(reason) {
10961
11023
  rejected: reason.text,
10962
11024
  stepId: reason.stepId
10963
11025
  };
11026
+ case "class-mismatch": return {
11027
+ refusal: reason.kind,
11028
+ rejected: reason.text,
11029
+ stepId: reason.stepId,
11030
+ className: reason.className,
11031
+ expectedClass: reason.expectedClass
11032
+ };
10964
11033
  case "macro-class":
10965
11034
  case "equals-class": return {
10966
11035
  refusal: reason.kind,
@@ -61903,6 +61972,7 @@ var FrameProcessor = class {
61903
61972
  const frameWidth = frame.width;
61904
61973
  const frameHeight = frame.height;
61905
61974
  const labelsByBbox = /* @__PURE__ */ new Map();
61975
+ const detectionClassByBbox = /* @__PURE__ */ new Map();
61906
61976
  const originalClassTierByBbox = /* @__PURE__ */ new Map();
61907
61977
  const embeddingByBbox = /* @__PURE__ */ new Map();
61908
61978
  const firstLevelBboxById = /* @__PURE__ */ new Map();
@@ -61934,6 +62004,7 @@ var FrameProcessor = class {
61934
62004
  if (det.nativeRecovery !== void 0) nativeRecoveryByBbox.set(bbox, det.nativeRecovery);
61935
62005
  if (det.birthEvidence !== void 0) birthEvidenceByBbox.set(bbox, det.birthEvidence);
61936
62006
  if (det.labels.length > 0) labelsByBbox.set(bbox, det.labels);
62007
+ detectionClassByBbox.set(bbox, det.macroClass);
61937
62008
  if (det.debug?.originalClassTier !== void 0) originalClassTierByBbox.set(bbox, det.debug.originalClassTier);
61938
62009
  if (det.embedding !== void 0) embeddingByBbox.set(bbox, {
61939
62010
  embedding: det.embedding,
@@ -62271,7 +62342,18 @@ var FrameProcessor = class {
62271
62342
  labels: labelsByBbox.get(td.bbox),
62272
62343
  decidedAt: timestamp
62273
62344
  });
62274
- const decision = candidate === void 0 ? void 0 : resolveTieredLabelWrite({ className: td.class }, candidate);
62345
+ const ownClass = detectionClassByBbox.get(td.bbox);
62346
+ const ruled = candidate === void 0 ? void 0 : resolveTieredLabelWrite({ className: td.class }, candidate);
62347
+ const decision = candidate !== void 0 && ruled?.kind === "write" && ownClass !== void 0 && ownClass !== td.class ? {
62348
+ kind: "refused",
62349
+ reason: {
62350
+ kind: "class-mismatch",
62351
+ text: candidate.text,
62352
+ stepId: candidate.stepId,
62353
+ className: td.class,
62354
+ expectedClass: ownClass
62355
+ }
62356
+ } : ruled;
62275
62357
  const labelPatch = decision?.kind === "write" ? decision.patch : void 0;
62276
62358
  if (labelPatch !== void 0) labelPatchByTrack.set(td.trackId, labelPatch);
62277
62359
  if (decision?.kind === "refused" && candidate !== void 0) {
@@ -1,4 +1,4 @@
1
- import { $ as NC_ALARM_DEFAULT_PROFILE_ID, $r as subKindsOf, $t as RECORDING_EXPORT_MAX_READ_BYTES, A as DetectionSourceSchema, Ai as boolean, An as applyBlockingEdit, At as NcConditionsSchema, B as FailureCounters, Bi as templateLiteral, Bn as consumableLowPercentOf, Br as resolveModeNotifyPolicy, Bt as NcSharedSequenceSchema, C as CoverStateSchema, Ci as isDeviceScopedCap, Cn as TrackRelationSchema, Cr as isVectorIndexDimConflict, Ct as NC_TEMPLATE_VARS, D as DETECTION_MACRO_CLASSES, Di as ZodObject, Dn as addonWidgetsSourceCapability, Dr as memoizePinnedFfmpeg, Dt as NcAlarmSensorsSchema, E as DEFAULT_TIMELAPSE_PREVIEW_TEXT, Ei as sleep$1, En as activateAlarmProfile, Er as mayWriteToLocation, Et as NcAlarmSensorsInputSchema, F as EVENT_KIND_BY_CAP, Fi as object, Fn as audioMetricsCapability, Fr as readTimelapseGeneratedAt, Ft as NcRulePatchSchema, G as MAX_ARCHIVED_DEBUG_NOTES, Gn as deriveDetailCropRect, Gr as ruleDeviceCompatCapQueries, Gt as NcSystemEventKindSchema, H as ListTrackRelationsInputSchema, Hi as union, Hn as cosineSimilarity$1, Hr as rootSupplyServes, Ht as NcSnoozeSchema, I as EVENT_OWNER_TYPES, Ii as partialRecord, In as audioModeOf, Ir as renameAlarmProfile, It as NcRuleSchema, J as MAX_TRACK_PURITIES, Jn as describeSystemEventDeliveryProblem, Jr as sceneMonitorCapability, Jt as NcTemplatePreviewSchema, K as MAX_BIRTH_DECISION_RECORDS, Kn as derivePostTriggeredAction, Kr as ruleGroupingApplies, Kt as NcTaxonomySchema, L as EXPORT_DENSE_MAX_RANGES, Li as record, Ln as buildEventKindDescriptor, Lr as resolveClipSearchMinScore, Lt as NcRuleTargetSchema, M as EMBEDDING_REQUIREMENTS_FAILED, Mi as literal, Mn as applyNonBlockingEdit, Mr as plateGalleryCapability, Mt as NcRuleActionSchema, N as EMBEDDING_REQUIREMENTS_UNAVAILABLE, Ni as looseObject, Nn as applySecureOnArmEdit, Nr as readDeviceStateFrom, Nt as NcRuleActionsSchema, O as DETECTION_PIPELINE_CAP_NAME, Oi as _enum, On as alarmDeviceSecureOnArm, Or as notificationRulesCapability, Ot as NcAlarmSettingsPatchSchema, P as EVENT_DENSITY_BATCH_MAX, Pi as number, Pn as assertTimelapseCadences, Pr as readMotionTriggeredBy, Pt as NcRuleInputSchema, Q as MotionTriggeredBySchema, Qn as embeddingRefusalOf, Qr as storageOccupancyCapability, R as FIRST_LEVEL_MACRO_CLASSES, Ri as strictObject, Rn as buildViewerLink, Rr as resolveLocationMode, Rt as NcRuleUpdateInputSchema, S as ClearTrackRelationResultSchema, Si as hydrateSchema, Sn as TrackRelationKindSchema, Sr as isSystemEventSummaryRule, St as NC_TAXONOMY, T as DEFAULT_EVENT_COLOR, Tn as TrackSourceSchema, Tr as linkedStepOf, Tt as NcAlarmPostTriggeredActionSchema, U as ListTrackRelationsResultSchema, Ui as unknown, Un as createAlarmProfile, Ur as ruleAutoTriggersAlarm, Ut as NcSnoozeSuppressedSchema, V as LabelAttributionSchema, Vi as tuple, Vn as coreBlockIdFromAddonId, Vt as NcSnoozeInputSchema, W as LockStateSchema, Wi as EventCategory, Wn as deleteAlarmProfile, Wr as ruleBelongsToAlarm$1, Wt as NcStateSummarySectionIdSchema, X as MOTION_CLOSE_AFTER_MS, Xr as sensorRaisedOf, Xt as OPS_LOG_DEFAULT_LIMIT, Y as MAX_TRACK_RELATIONS, Yn as describeSystemEventFamilyProblem, Yr as secureActuationFor, Yt as NcTemplateVarDescriptorSchema, Z as MediaFileKindEnum, Zr as servedTemplateVars, Zt as OpsLogEntrySchema, _ as BIRTH_DECISION_DEFAULT_LIMIT, _i as BaseAddon, _n as TRACK_RELATIONS_DEFAULT_LIMIT, _r as isMediaOwnerType, _t as NC_GROUPING_MIN_SEC, a as CLIP_EMBEDDING_STEP_ID, ai as systemEventSummarySplitOf, an as SCENE_DEFAULT_ANCHOR_THRESHOLD, ar as faceGalleryCapability, at as NC_ALARM_TRIGGERED_MAX_SEC, b as COCO_TO_MACRO, bi as customAction, bn as TimelapseRuleSchema, br as isScheduleActive, bt as NC_SYSTEM_EVENT_KIND_GROUP_SPECS, c as resolveClusterModelPin, ci as vectorDimFromBase64, cn as SCENE_DEFAULT_QUIET_SECONDS, cr as gifFromMp4Args, ct as NC_CLIP_POST_ROLL_DEFAULT_SEC, d as APPEARANCE_BLOCKS, di as DEFAULT_FIRST_SIGHTING_FRESHNESS_MS, dn as SCENE_RESET_RECAPTURES, dr as isAudioClassName, dt as NC_CONDITION_CATALOG, ei as syncActiveAlarmProfileSettings, en as RECORDING_SOURCE_CAMSTACK_ADDON, et as NC_ALARM_DEFAULT_TRIGGERED_DURATION_SEC, f as APPEARANCE_RESOLVES_AMBIGUITY_DEFAULT, fi as canonicalHash, fn as SceneMonitorSchema, fr as isDefaultAlarmProfileId, ft as NC_CONSUMABLE_LOW_PERCENT_DEFAULT, g as ArchivedDebugNoteSchema, gi as errMsg, gn as TIMELAPSE_DENSE_FLOOR_SEC, gr as isKnownTemplateVar, gt as NC_GROUPING_MAX_SEC, h as AlarmArmModeSchema, hi as DeviceType, hn as SetTrackRelationInputSchema, hr as isEventOwnerType, ht as NC_GROUPING_DEFAULT_SEC, ii as systemEventSummaryScheduleOf, in as SCENE_CONFIRM_DEFAULT_TIMEOUT_MS, ir as evictionPolicyOfLocation, it as NC_ALARM_SYSTEM_EVENT_KINDS, j as EMBEDDING_MODEL_FAILED, ji as discriminatedUnion, jn as applyModeDelaysEdits, jr as pipelineAnalyticsCapability, jt as NcLegacyRuleActionSequenceSchema, k as DeclaredDevices, ki as array, kn as alarmPanelCapability, kr as occupancyScope, kt as NcConditionDescriptorSchema, l as ALL_CAPABILITY_DEFINITIONS, li as viewerLinkBaseOf, ln as SCENE_DEFAULT_UNCOVERED_POLICY, lr as isAlarmControllableCap, lt as NC_CLIP_PRE_ROLL_DEFAULT_SEC, m as AUDIO_MACRO_LABELS, mi as isSourceCap, mn as SetTrackPurityResultSchema, mr as isEventKindLabelKey, mt as NC_DEFAULT_SNOOZE_MINUTES, ni as systemEventFamilyProblems, nn as RetrainStatusSchema, nr as ensureAlarmProfiles, nt as NC_ALARM_DELAY_MAX_SEC, o as FACE_EMBEDDING_STEP_ID, oi as templateCarriesSummary, on as SCENE_DEFAULT_CHECK_INTERVAL_SEC, or as failureContributionCapability, ot as NC_AUDIO_CONFIRM_HITS_DEFAULT, p as ARCHIVED_DEBUG_NOTES_DEFAULT_LIMIT, pi as evaluateSensorEdge, pn as SetTrackPurityInputSchema, pr as isDetectionMacroClass, pt as NC_CONSUMABLE_SYSTEM_EVENT_KINDS, q as MAX_BIRTH_LATENCY_PROXY_MS, qn as deriveRecordingMode, qr as ruleKindOf, qt as NcTemplatePreviewInputSchema, ri as systemEventFilterApplies, rn as SCENE_CONFIRM_DEFAULT_MAX_IMAGE_PX, rr as eventKindLabel, rt as NC_ALARM_NOTIFY_FIELDS, s as readClusterModelPinStrict, si as templateVarsFor, sn as SCENE_DEFAULT_OBSERVATION_SPACING_SEC, sr as gifDeriveSpeed, st as NC_AUDIO_CONFIRM_WINDOW_SEC_DEFAULT, t as BUILTIN_CLIP_MODELS, ti as systemEventDeliveryProblems, tn as RebuildObjectEmbeddingsRefusalSchema, tr as encodeVectorBase64, tt as NC_ALARM_DELAY_FIELDS, u as APPEARANCE_BIN_COUNT, ui as zoneAnalyticsCapability, un as SCENE_DIVERGED, ur as isAppLinkBase, ut as NC_CLIP_RETENTION_MAX_SEC, v as BaseDevice, vi as CamProfileSchema, vn as TimelapseRuleInputSchema, vr as isRetiredClearKey, vt as NC_SENSOR_TRANSITION_KINDS, w as DEFAULT_DETAIL_CROP_CONVENTION, wi as nodePin, wn as TrackSideSchema, wr as kebabToCamel, wt as NcAlarmConfigSchema, x as ClearTrackRelationInputSchema, xi as defineCustomActions, xn as TrackPuritySchema, xr as isSystemDelivery, xt as NC_TANK_SYSTEM_EVENT_KINDS, y as BirthDecisionRecordSchema, yi as createEvent, yn as TimelapseRulePatchSchema, yr as isRootSuppliableStepId, yt as NC_SNOOZE_MAX_MINUTES, z as FULL_IMAGE_BBOX, zi as string, zn as cloneAlarmSettings, zr as resolveModeDelays, zt as NcScheduleSchema } from "../clip-model-registry-Cj7a4Cxs.mjs";
1
+ import { $ as MotionTriggeredBySchema, $n as embeddingRefusalOf, $r as servedTemplateVars, A as DetectionSourceSchema, Ai as _enum, An as alarmPanelCapability, Ar as notificationRulesCapability, At as NcConditionDescriptorSchema, B as FailureCounters, Bi as strictObject, Bn as cloneAlarmSettings, Br as resolveLocationMode, Bt as NcScheduleSchema, C as CoverStateSchema, Ci as defineCustomActions, Cn as TrackRelationKindSchema, Cr as isSystemDelivery, Ct as NC_TAXONOMY, D as DETECTION_MACRO_CLASSES, Dn as activateAlarmProfile, Dr as linkedStepOf, Dt as NcAlarmSensorsInputSchema, E as DEFAULT_TIMELAPSE_PREVIEW_TEXT, Ei as nodePin, En as TrackSourceSchema, Er as kebabToCamel, Et as NcAlarmPostTriggeredActionSchema, F as EVENT_KIND_BY_CAP, Fi as looseObject, Fn as assertTimelapseCadences, Fr as readDeviceStateFrom, Ft as NcRuleInputSchema, G as LockStateSchema, Gi as unknown, Gn as deleteAlarmProfile, Gr as ruleAutoTriggersAlarm, Gt as NcStateSummarySectionIdSchema, H as LabelAttributionSchema, Hi as templateLiteral, Hn as coreBlockIdFromAddonId, Hr as resolveModeNotifyPolicy, Ht as NcSnoozeInputSchema, I as EVENT_OWNER_TYPES, Ii as number, In as audioMetricsCapability, Ir as readMotionTriggeredBy, It as NcRulePatchSchema, J as MAX_BIRTH_LATENCY_PROXY_MS, Jn as deriveRecordingMode, Jr as ruleGroupingApplies, Jt as NcTemplatePreviewInputSchema, K as MAX_ARCHIVED_DEBUG_NOTES, Ki as EventCategory, Kn as deriveDetailCropRect, Kr as ruleBelongsToAlarm$1, Kt as NcSystemEventKindSchema, L as EXPORT_DENSE_MAX_RANGES, Li as object, Ln as audioModeOf, Lr as readTimelapseGeneratedAt, Lt as NcRuleSchema, M as EMBEDDING_REQUIREMENTS_FAILED, Mi as boolean, Mn as applyModeDelaysEdits, Mt as NcLegacyRuleActionSequenceSchema, N as EMBEDDING_REQUIREMENTS_UNAVAILABLE, Ni as discriminatedUnion, Nn as applyNonBlockingEdit, Nr as pipelineAnalyticsCapability, Nt as NcRuleActionSchema, O as DETECTION_PIPELINE_CAP_NAME, Oi as sleep$1, On as addonWidgetsSourceCapability, Or as mayWriteToLocation, Ot as NcAlarmSensorsSchema, P as EVENT_DENSITY_BATCH_MAX, Pi as literal, Pn as applySecureOnArmEdit, Pr as plateGalleryCapability, Pt as NcRuleActionsSchema, Q as MediaFileKindEnum, Qr as sensorRaisedOf, Qt as OpsLogEntrySchema, R as FIRST_LEVEL_MACRO_CLASSES, Ri as partialRecord, Rn as buildEventKindDescriptor, Rr as renameAlarmProfile, Rt as NcRuleTargetSchema, S as ClearTrackRelationResultSchema, Si as customAction, Sn as TrackPuritySchema, Sr as isScheduleActive, St as NC_TANK_SYSTEM_EVENT_KINDS, T as DEFAULT_EVENT_COLOR, Ti as isDeviceScopedCap, Tn as TrackSideSchema, Tr as isVectorIndexDimConflict, Tt as NcAlarmConfigSchema, U as ListTrackRelationsInputSchema, Ui as tuple, Un as cosineSimilarity$1, Ut as NcSnoozeSchema, V as LABEL_SUPPLY_MACRO, Vi as string, Vn as consumableLowPercentOf, Vr as resolveModeDelays, Vt as NcSharedSequenceSchema, W as ListTrackRelationsResultSchema, Wi as union, Wn as createAlarmProfile, Wr as rootSupplyServes, Wt as NcSnoozeSuppressedSchema, X as MAX_TRACK_RELATIONS, Xn as describeSystemEventFamilyProblem, Xr as sceneMonitorCapability, Xt as NcTemplateVarDescriptorSchema, Y as MAX_TRACK_PURITIES, Yn as describeSystemEventDeliveryProblem, Yr as ruleKindOf, Yt as NcTemplatePreviewSchema, Z as MOTION_CLOSE_AFTER_MS, Zr as secureActuationFor, Zt as OPS_LOG_DEFAULT_LIMIT, _ as BIRTH_DECISION_DEFAULT_LIMIT, _i as DeviceType, _n as TIMELAPSE_DENSE_FLOOR_SEC, _r as isKnownTemplateVar, _t as NC_GROUPING_MAX_SEC, a as CLIP_EMBEDDING_STEP_ID, ai as systemEventFilterApplies, an as SCENE_CONFIRM_DEFAULT_TIMEOUT_MS, ar as evictionPolicyOfLocation, at as NC_ALARM_SYSTEM_EVENT_KINDS, b as COCO_TO_MACRO, bi as CamProfileSchema, bn as TimelapseRulePatchSchema, br as isRetiredClearKey, bt as NC_SNOOZE_MAX_MINUTES, c as resolveClusterModelPin, ci as templateCarriesSummary, cn as SCENE_DEFAULT_OBSERVATION_SPACING_SEC, cr as gifDeriveSpeed, ct as NC_AUDIO_CONFIRM_WINDOW_SEC_DEFAULT, d as APPEARANCE_BLOCKS, di as viewerLinkBaseOf, dn as SCENE_DIVERGED, dr as isAppLinkBase, dt as NC_CLIP_RETENTION_MAX_SEC, ei as storageOccupancyCapability, en as RECORDING_EXPORT_MAX_READ_BYTES, et as NC_ALARM_DEFAULT_PROFILE_ID, f as APPEARANCE_RESOLVES_AMBIGUITY_DEFAULT, fi as zoneAnalyticsCapability, fn as SCENE_RESET_RECAPTURES, fr as isAudioClassName, ft as NC_CONDITION_CATALOG, g as ArchivedDebugNoteSchema, gi as isSourceCap, gn as SetTrackRelationInputSchema, gr as isEventOwnerType, gt as NC_GROUPING_DEFAULT_SEC, h as AlarmArmModeSchema, hi as evaluateSensorEdge, hn as SetTrackPurityResultSchema, hr as isEventKindLabelKey, ht as NC_DEFAULT_SNOOZE_MINUTES, ii as systemEventFamilyProblems, in as SCENE_CONFIRM_DEFAULT_MAX_IMAGE_PX, ir as eventKindLabel, it as NC_ALARM_NOTIFY_FIELDS, j as EMBEDDING_MODEL_FAILED, ji as array, jn as applyBlockingEdit, jr as occupancyScope, jt as NcConditionsSchema, k as DeclaredDevices, ki as ZodObject, kn as alarmDeviceSecureOnArm, kr as memoizePinnedFfmpeg, kt as NcAlarmSettingsPatchSchema, l as ALL_CAPABILITY_DEFINITIONS, li as templateVarsFor, ln as SCENE_DEFAULT_QUIET_SECONDS, lr as gifFromMp4Args, lt as NC_CLIP_POST_ROLL_DEFAULT_SEC, m as AUDIO_MACRO_LABELS, mi as canonicalHash, mn as SetTrackPurityInputSchema, mr as isDetectionMacroClass, mt as NC_CONSUMABLE_SYSTEM_EVENT_KINDS, ni as syncActiveAlarmProfileSettings, nn as RebuildObjectEmbeddingsRefusalSchema, nr as encodeVectorBase64, nt as NC_ALARM_DELAY_FIELDS, o as FACE_EMBEDDING_STEP_ID, oi as systemEventSummaryScheduleOf, on as SCENE_DEFAULT_ANCHOR_THRESHOLD, or as faceGalleryCapability, ot as NC_ALARM_TRIGGERED_MAX_SEC, p as ARCHIVED_DEBUG_NOTES_DEFAULT_LIMIT, pi as DEFAULT_FIRST_SIGHTING_FRESHNESS_MS, pn as SceneMonitorSchema, pr as isDefaultAlarmProfileId, pt as NC_CONSUMABLE_LOW_PERCENT_DEFAULT, q as MAX_BIRTH_DECISION_RECORDS, qn as derivePostTriggeredAction, qr as ruleDeviceCompatCapQueries, qt as NcTaxonomySchema, ri as systemEventDeliveryProblems, rn as RetrainStatusSchema, rr as ensureAlarmProfiles, rt as NC_ALARM_DELAY_MAX_SEC, s as readClusterModelPinStrict, si as systemEventSummarySplitOf, sn as SCENE_DEFAULT_CHECK_INTERVAL_SEC, sr as failureContributionCapability, st as NC_AUDIO_CONFIRM_HITS_DEFAULT, t as BUILTIN_CLIP_MODELS, ti as subKindsOf, tn as RECORDING_SOURCE_CAMSTACK_ADDON, tt as NC_ALARM_DEFAULT_TRIGGERED_DURATION_SEC, u as APPEARANCE_BIN_COUNT, ui as vectorDimFromBase64, un as SCENE_DEFAULT_UNCOVERED_POLICY, ur as isAlarmControllableCap, ut as NC_CLIP_PRE_ROLL_DEFAULT_SEC, v as BaseDevice, vi as errMsg, vn as TRACK_RELATIONS_DEFAULT_LIMIT, vr as isLabelSupplyStepId, vt as NC_GROUPING_MIN_SEC, w as DEFAULT_DETAIL_CROP_CONVENTION, wi as hydrateSchema, wn as TrackRelationSchema, wr as isSystemEventSummaryRule, wt as NC_TEMPLATE_VARS, x as ClearTrackRelationInputSchema, xi as createEvent, xn as TimelapseRuleSchema, xr as isRootSuppliableStepId, xt as NC_SYSTEM_EVENT_KIND_GROUP_SPECS, y as BirthDecisionRecordSchema, yi as BaseAddon, yn as TimelapseRuleInputSchema, yr as isMediaOwnerType, yt as NC_SENSOR_TRANSITION_KINDS, z as FULL_IMAGE_BBOX, zi as record, zn as buildViewerLink, zr as resolveClipSearchMinScore, zt as NcRuleUpdateInputSchema } from "../clip-model-registry-LnBofk4d.mjs";
2
2
  import { t as __exportAll } from "../embedding-encoder/index.mjs";
3
3
  import * as fs$1 from "node:fs";
4
4
  import { createWriteStream, promises } from "node:fs";
@@ -10736,6 +10736,47 @@ function resolveDetectionLabelCandidate(input) {
10736
10736
  //#endregion
10737
10737
  //#region src/pipeline-analytics/pipeline/label-tier.ts
10738
10738
  /**
10739
+ * The ONE tiered-label write rule (roadmap 4g).
10740
+ *
10741
+ * Before this file there were four writers and no rule. The frame path stamped
10742
+ * a label at track birth; `applyTrackEnrichmentLabel` wrote the classifier /
10743
+ * plate answer onto the track AND back-patched every already-emitted event; the
10744
+ * face recognizer wrote an identity; the plate gallery wrote a vehicle name.
10745
+ * Each of them was a bare `label = text` on a single column, so the LAST writer
10746
+ * won — which is how `9c05543f` (592), a `person` track, ended up labelled
10747
+ * `animal`, and how `7d1dc71e` (636) could hold `Turdus migratorius` with no
10748
+ * way to also say `bird`.
10749
+ *
10750
+ * The model is two independent slots (see `LabelTierSchema` in
10751
+ * `pipeline-analytics.cap.ts`):
10752
+ *
10753
+ * - tier 1 (`label`) — the SUB-CLASS: `dog`, `bird`, `van`.
10754
+ * - tier 2 (`subLabel`) — the INSTANCE: `Turdus migratorius`, `Alice`, a plate.
10755
+ *
10756
+ * **A higher tier is never overwritten by a lower one — structurally.** The two
10757
+ * live in different columns, so a tier-1 write physically cannot touch a
10758
+ * tier-2 value. That is the whole reason for two scalars rather than one
10759
+ * best-effort slot: the guarantee is a consequence of the shape, not of a
10760
+ * comparison somebody has to remember to write.
10761
+ *
10762
+ * **Within a tier, the higher score wins**, strictly — an equal score leaves
10763
+ * the incumbent in place, so a step that re-offers the same answer every frame
10764
+ * does not churn the row. The one exception is an incumbent attributed to
10765
+ * {@link MIGRATION_STEP_ID}: a value the 4g migration moved out of the old
10766
+ * single-slot column has no provenance and no comparable score, so ANY
10767
+ * properly-attributed write of its tier replaces it.
10768
+ *
10769
+ * **A candidate whose tier is not DECLARED is refused**, never guessed. The
10770
+ * tier is declared on `StepDefinition.labelTier` and travels on the wire
10771
+ * (`DetailResult.labelTier`, `ScoredLabel.tier`). Inferring it here from the
10772
+ * text or from the step's name is precisely the failure this model exists to
10773
+ * remove: the shape of a string cannot tell `Bird` the surname from `bird` the
10774
+ * sub-class.
10775
+ *
10776
+ * Every refusal is RETURNED, not swallowed — a branch that drops work says so
10777
+ * (`label write refused`, with `tags: { deviceId }`).
10778
+ */
10779
+ /**
10739
10780
  * `stepId` stamped on a tier the 4g migration filled from the pre-4g single
10740
10781
  * `label` column. It marks a value with NO provenance: nothing recorded which
10741
10782
  * step decided it, so its score is unknown and its tier was assigned by the
@@ -10896,6 +10937,17 @@ function resolveTieredLabelWrite(state, candidate) {
10896
10937
  className: state.className
10897
10938
  }
10898
10939
  };
10940
+ const expectedClass = stepInputClass(candidate.stepId);
10941
+ if (expectedClass !== void 0 && expectedClass !== state.className) return {
10942
+ kind: "refused",
10943
+ reason: {
10944
+ kind: "class-mismatch",
10945
+ text,
10946
+ stepId: candidate.stepId,
10947
+ className: state.className,
10948
+ expectedClass
10949
+ }
10950
+ };
10899
10951
  if (candidate.tier === void 0) return {
10900
10952
  kind: "refused",
10901
10953
  reason: {
@@ -10940,6 +10992,16 @@ function resolveTieredLabelWrite(state, candidate) {
10940
10992
  patch
10941
10993
  };
10942
10994
  }
10995
+ /**
10996
+ * The macro class a label-supply step (or its `detector-link:` stand-in) takes
10997
+ * as input, or `undefined` for a writer with no class contract (identity, plate
10998
+ * text, the raw class).
10999
+ */
11000
+ function stepInputClass(stepId) {
11001
+ const linked = linkedStepOf(stepId);
11002
+ if (linked !== void 0) return LABEL_SUPPLY_MACRO[linked];
11003
+ return isLabelSupplyStepId(stepId) ? LABEL_SUPPLY_MACRO[stepId] : void 0;
11004
+ }
10943
11005
  /** One-line `meta` bag for the refusal log — the shape every caller logs. */
10944
11006
  function refusalLogMeta(reason) {
10945
11007
  switch (reason.kind) {
@@ -10953,6 +11015,13 @@ function refusalLogMeta(reason) {
10953
11015
  rejected: reason.text,
10954
11016
  stepId: reason.stepId
10955
11017
  };
11018
+ case "class-mismatch": return {
11019
+ refusal: reason.kind,
11020
+ rejected: reason.text,
11021
+ stepId: reason.stepId,
11022
+ className: reason.className,
11023
+ expectedClass: reason.expectedClass
11024
+ };
10956
11025
  case "macro-class":
10957
11026
  case "equals-class": return {
10958
11027
  refusal: reason.kind,
@@ -61859,6 +61928,7 @@ var FrameProcessor = class {
61859
61928
  const frameWidth = frame.width;
61860
61929
  const frameHeight = frame.height;
61861
61930
  const labelsByBbox = /* @__PURE__ */ new Map();
61931
+ const detectionClassByBbox = /* @__PURE__ */ new Map();
61862
61932
  const originalClassTierByBbox = /* @__PURE__ */ new Map();
61863
61933
  const embeddingByBbox = /* @__PURE__ */ new Map();
61864
61934
  const firstLevelBboxById = /* @__PURE__ */ new Map();
@@ -61890,6 +61960,7 @@ var FrameProcessor = class {
61890
61960
  if (det.nativeRecovery !== void 0) nativeRecoveryByBbox.set(bbox, det.nativeRecovery);
61891
61961
  if (det.birthEvidence !== void 0) birthEvidenceByBbox.set(bbox, det.birthEvidence);
61892
61962
  if (det.labels.length > 0) labelsByBbox.set(bbox, det.labels);
61963
+ detectionClassByBbox.set(bbox, det.macroClass);
61893
61964
  if (det.debug?.originalClassTier !== void 0) originalClassTierByBbox.set(bbox, det.debug.originalClassTier);
61894
61965
  if (det.embedding !== void 0) embeddingByBbox.set(bbox, {
61895
61966
  embedding: det.embedding,
@@ -62227,7 +62298,18 @@ var FrameProcessor = class {
62227
62298
  labels: labelsByBbox.get(td.bbox),
62228
62299
  decidedAt: timestamp
62229
62300
  });
62230
- const decision = candidate === void 0 ? void 0 : resolveTieredLabelWrite({ className: td.class }, candidate);
62301
+ const ownClass = detectionClassByBbox.get(td.bbox);
62302
+ const ruled = candidate === void 0 ? void 0 : resolveTieredLabelWrite({ className: td.class }, candidate);
62303
+ const decision = candidate !== void 0 && ruled?.kind === "write" && ownClass !== void 0 && ownClass !== td.class ? {
62304
+ kind: "refused",
62305
+ reason: {
62306
+ kind: "class-mismatch",
62307
+ text: candidate.text,
62308
+ stepId: candidate.stepId,
62309
+ className: td.class,
62310
+ expectedClass: ownClass
62311
+ }
62312
+ } : ruled;
62231
62313
  const labelPatch = decision?.kind === "write" ? decision.patch : void 0;
62232
62314
  if (labelPatch !== void 0) labelPatchByTrack.set(td.trackId, labelPatch);
62233
62315
  if (decision?.kind === "refused" && candidate !== void 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_pipeline_analytics_widgets-CrucOVLl.mjs")).catch((e) => {
33
+ return l ||= d(() => import("./_virtual_mf-localSharedImportMap___mfe_internal__addon_pipeline_analytics_widgets-C3Xtsu5Z.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.358",
3
+ "version": "1.2.359",
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",