@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.
- package/dist/{clip-model-registry-DbrFhdoY.js → clip-model-registry-DyP97b8e.js} +19 -1
- package/dist/{clip-model-registry-Cj7a4Cxs.mjs → clip-model-registry-LnBofk4d.mjs} +8 -2
- package/dist/embedding-encoder/index.js +1 -1
- package/dist/embedding-encoder/index.mjs +1 -1
- package/dist/pipeline-analytics/{_virtual_mf-localSharedImportMap___mfe_internal__addon_pipeline_analytics_widgets-CrucOVLl.mjs → _virtual_mf-localSharedImportMap___mfe_internal__addon_pipeline_analytics_widgets-C3Xtsu5Z.mjs} +1 -1
- package/dist/pipeline-analytics/{hostInit-BHU1a2M0.mjs → hostInit-8DkDqLAZ.mjs} +1 -1
- package/dist/pipeline-analytics/index.js +84 -2
- package/dist/pipeline-analytics/index.mjs +84 -2
- package/dist/pipeline-analytics/remoteEntry.js +1 -1
- package/package.json +1 -1
|
@@ -5490,7 +5490,7 @@ var ZodIssueCode = {
|
|
|
5490
5490
|
var ZodFirstPartyTypeKind;
|
|
5491
5491
|
ZodFirstPartyTypeKind || (ZodFirstPartyTypeKind = {});
|
|
5492
5492
|
//#endregion
|
|
5493
|
-
//#region ../types/dist/sleep-
|
|
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-
|
|
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 {
|
|
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-
|
|
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 { $
|
|
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";
|
|
@@ -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-
|
|
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
|
|
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
|
|
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
|
|
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-
|
|
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.
|
|
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",
|