@camstack/addon-post-analysis 1.2.618 → 1.2.619
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-CYWuH4Rx.js → clip-model-registry-B4VtQ3mk.js} +232 -24
- package/dist/{clip-model-registry-D6yfX_Xq.mjs → clip-model-registry-Clb51mcj.mjs} +203 -19
- package/dist/embedding-encoder/index.js +1 -1
- package/dist/embedding-encoder/index.mjs +1 -1
- package/dist/pipeline-analytics/_stub.js +2 -2
- package/dist/pipeline-analytics/{_virtual_mf-localSharedImportMap___mfe_internal__addon_pipeline_analytics_widgets-B0Kz5Uye.mjs → _virtual_mf-localSharedImportMap___mfe_internal__addon_pipeline_analytics_widgets-BGo4IMTT.mjs} +3 -3
- package/dist/pipeline-analytics/{_virtual_mf___mfe_internal__addon_pipeline_analytics_widgets__loadShare___mf_0_camstack_mf_1_types__loadShare__.js-CSQBGkvs.mjs → _virtual_mf___mfe_internal__addon_pipeline_analytics_widgets__loadShare___mf_0_camstack_mf_1_types__loadShare__.js-BSMSev-b.mjs} +1 -1
- package/dist/pipeline-analytics/_virtual_mf___mfe_internal__addon_pipeline_analytics_widgets__loadShare___mf_0_camstack_mf_1_ui_mf_2_library__loadShare__.js-CssYIiFD.mjs +26 -0
- package/dist/pipeline-analytics/{hostInit-DjzBKo20.mjs → hostInit-p9APfKsm.mjs} +3 -3
- package/dist/pipeline-analytics/index.js +146 -209
- package/dist/pipeline-analytics/index.mjs +146 -208
- package/dist/pipeline-analytics/remoteEntry.js +1 -1
- package/package.json +1 -1
- package/dist/pipeline-analytics/_virtual_mf___mfe_internal__addon_pipeline_analytics_widgets__loadShare___mf_0_camstack_mf_1_ui_mf_2_library__loadShare__.js-BB2kgLY1.mjs +0 -26
|
@@ -18349,15 +18349,6 @@ var StorageKindSchema = object({
|
|
|
18349
18349
|
declaration: RecordKindDeclarationSchema
|
|
18350
18350
|
});
|
|
18351
18351
|
method(object({ ownerPrefix: string().min(1).optional() }), object({ tables: array(StorageTableSchema) }), { auth: "admin" }), method(object({
|
|
18352
|
-
collection: string().min(1),
|
|
18353
|
-
expectRows: number().int().nonnegative()
|
|
18354
|
-
}), object({
|
|
18355
|
-
dropped: literal(true),
|
|
18356
|
-
rows: number().int().nonnegative()
|
|
18357
|
-
}), {
|
|
18358
|
-
kind: "mutation",
|
|
18359
|
-
auth: "admin"
|
|
18360
|
-
}), method(object({
|
|
18361
18352
|
owner: string().min(1).optional(),
|
|
18362
18353
|
/** `false` skips the per-kind row count (a catalog read only). Default true. */
|
|
18363
18354
|
counts: boolean().optional()
|
|
@@ -44924,6 +44915,15 @@ var NcMediaPolicySchema = object({
|
|
|
44924
44915
|
* Replaces `zoneCrop`.
|
|
44925
44916
|
*/
|
|
44926
44917
|
showTriggerZone: boolean().optional(),
|
|
44918
|
+
/**
|
|
44919
|
+
* Draw the SUBJECT'S PATH on the picture — a line in the subject's colour
|
|
44920
|
+
* through the track's positions up to the frame shown, the same path the
|
|
44921
|
+
* debug views draw (`buildSubjectPath`, D903). Every picture mode a subject
|
|
44922
|
+
* is drawn on: a `crop` maps the path into the crop and clips it. Valid only
|
|
44923
|
+
* on a rule whose subject is a tracked object (refused on a sound rule);
|
|
44924
|
+
* dropped on `image: 'none'`. Absent = off.
|
|
44925
|
+
*/
|
|
44926
|
+
showSubjectPath: boolean().optional(),
|
|
44927
44927
|
/** @deprecated D897 — accepted from an editor that predates `image`, folded into it on save. */
|
|
44928
44928
|
attach: _enum([
|
|
44929
44929
|
"best",
|
|
@@ -77621,12 +77621,6 @@ Object.freeze({
|
|
|
77621
77621
|
addonId: null,
|
|
77622
77622
|
access: "create"
|
|
77623
77623
|
},
|
|
77624
|
-
"storageAdmin.dropCollection": {
|
|
77625
|
-
capName: "storage-admin",
|
|
77626
|
-
capScope: "system",
|
|
77627
|
-
addonId: null,
|
|
77628
|
-
access: "delete"
|
|
77629
|
-
},
|
|
77630
77624
|
"storageAdmin.listKinds": {
|
|
77631
77625
|
capName: "storage-admin",
|
|
77632
77626
|
capScope: "system",
|
|
@@ -82687,22 +82681,35 @@ function resolveNcMediaImage(media, kind) {
|
|
|
82687
82681
|
}
|
|
82688
82682
|
/**
|
|
82689
82683
|
* The stored shape of a media policy: `image` set, the legacy triple gone.
|
|
82684
|
+
* `showSubjectPath` survives on a kind with a tracked subject and a picture.
|
|
82690
82685
|
* `showTriggerZone` survives only where it can be drawn — a zone trigger and a
|
|
82691
82686
|
* mode other than `crop`/`none`; a legacy `zoneCrop` on a zone rule becomes it.
|
|
82692
82687
|
* Every other field (gif, clip, rolls, speed, profile, linked cameras) is
|
|
82693
82688
|
* carried through untouched. Pure; never throws.
|
|
82694
82689
|
*/
|
|
82695
82690
|
function normalizeNcMediaPolicy(media, rule) {
|
|
82696
|
-
const
|
|
82697
|
-
const
|
|
82691
|
+
const kind = ruleKindOf(rule);
|
|
82692
|
+
const image = resolveNcMediaImage(media, kind);
|
|
82693
|
+
const { attach: _attach, frame: _frame, zoneCrop, showTriggerZone, showSubjectPath, image: _image, ...rest } = media;
|
|
82698
82694
|
const drawable = (showTriggerZone === true || media.image === void 0 && zoneCrop === true) && image !== "crop" && image !== "none" && ruleTriggerZoneIds(rule.conditions).length > 0;
|
|
82695
|
+
const pathDrawable = showSubjectPath === true && image !== "none" && subjectHasPath(kind);
|
|
82699
82696
|
return {
|
|
82700
82697
|
...rest,
|
|
82701
82698
|
image,
|
|
82702
|
-
...drawable ? { showTriggerZone: true } : {}
|
|
82699
|
+
...drawable ? { showTriggerZone: true } : {},
|
|
82700
|
+
...pathDrawable ? { showSubjectPath: true } : {}
|
|
82703
82701
|
};
|
|
82704
82702
|
}
|
|
82705
82703
|
/**
|
|
82704
|
+
* True when a rule of this kind has a TRACKED subject whose path can be drawn
|
|
82705
|
+
* (`showSubjectPath`): the kinds whose subject owns a region of the frame. A
|
|
82706
|
+
* sound owns none, and a kind that carries no media has no picture.
|
|
82707
|
+
*/
|
|
82708
|
+
function subjectHasPath(kind) {
|
|
82709
|
+
const spec = ruleKindSpec(kind);
|
|
82710
|
+
return spec.carriesMedia && spec.carriesSubjectCrop;
|
|
82711
|
+
}
|
|
82712
|
+
/**
|
|
82706
82713
|
* Why a media policy cannot be SAVED on this rule, or null. Server-side and
|
|
82707
82714
|
* editor alike: `showTriggerZone` on a rule whose trigger is not a zone, and a
|
|
82708
82715
|
* mode the rule's kind cannot honour.
|
|
@@ -82714,6 +82721,7 @@ function ncMediaPolicyError(media, rule) {
|
|
|
82714
82721
|
if (offered.length > 0 && !offered.includes(media.image)) return `media.image '${media.image}' is not available for a ${kind} rule (offered: ${offered.join(", ")})`;
|
|
82715
82722
|
}
|
|
82716
82723
|
if (media.showTriggerZone === true && ruleTriggerZoneIds(rule.conditions).length === 0) return "media.showTriggerZone needs a rule triggered by a zone (a zones condition or an occupancy zone)";
|
|
82724
|
+
if (media.showSubjectPath === true && !subjectHasPath(kind)) return `media.showSubjectPath needs a rule whose subject is a tracked object (not a ${kind} rule)`;
|
|
82717
82725
|
return null;
|
|
82718
82726
|
}
|
|
82719
82727
|
var WEEKDAY_TO_DAY = {
|
|
@@ -82796,6 +82804,182 @@ function isScheduleActive(schedule, atMs) {
|
|
|
82796
82804
|
}
|
|
82797
82805
|
return schedule.invert === true ? !inside : inside;
|
|
82798
82806
|
}
|
|
82807
|
+
var clamp01 = (n) => n < 0 ? 0 : n > 1 ? 1 : n;
|
|
82808
|
+
/** The sample of a normalised box: its centre, its extent. */
|
|
82809
|
+
function subjectPathSampleFromBox(bbox, timestamp) {
|
|
82810
|
+
return {
|
|
82811
|
+
x: bbox.x + bbox.w / 2,
|
|
82812
|
+
y: bbox.y + bbox.h / 2,
|
|
82813
|
+
w: bbox.w,
|
|
82814
|
+
h: bbox.h,
|
|
82815
|
+
...timestamp !== void 0 ? { timestamp } : {}
|
|
82816
|
+
};
|
|
82817
|
+
}
|
|
82818
|
+
function isPlaceholder(s) {
|
|
82819
|
+
return s.w !== void 0 && s.h !== void 0 && s.w >= .85 && s.h >= .85;
|
|
82820
|
+
}
|
|
82821
|
+
function downsample(xs, max) {
|
|
82822
|
+
if (xs.length <= max || max < 2) return xs;
|
|
82823
|
+
const step = (xs.length - 1) / (max - 1);
|
|
82824
|
+
const out = [];
|
|
82825
|
+
for (let i = 0; i < max - 1; i++) {
|
|
82826
|
+
const x = xs[Math.round(i * step)];
|
|
82827
|
+
if (x !== void 0) out.push(x);
|
|
82828
|
+
}
|
|
82829
|
+
const last = xs[xs.length - 1];
|
|
82830
|
+
if (last !== void 0) out.push(last);
|
|
82831
|
+
return out;
|
|
82832
|
+
}
|
|
82833
|
+
function isFiniteSample(s) {
|
|
82834
|
+
return Number.isFinite(s.x) && Number.isFinite(s.y);
|
|
82835
|
+
}
|
|
82836
|
+
/**
|
|
82837
|
+
* The path of one track from its samples (normalised, oldest → newest).
|
|
82838
|
+
* Pure; never throws; malformed samples are skipped.
|
|
82839
|
+
*/
|
|
82840
|
+
function buildSubjectPath(samples, opts) {
|
|
82841
|
+
const until = opts?.untilTimestamp;
|
|
82842
|
+
const nodes = [];
|
|
82843
|
+
let unlocalized = 0;
|
|
82844
|
+
let tail = null;
|
|
82845
|
+
for (let index = 0; index < samples.length; index++) {
|
|
82846
|
+
const s = samples[index];
|
|
82847
|
+
if (s === void 0 || !isFiniteSample(s)) continue;
|
|
82848
|
+
if (until !== void 0 && s.timestamp !== void 0 && s.timestamp > until) continue;
|
|
82849
|
+
if (isPlaceholder(s)) {
|
|
82850
|
+
unlocalized += 1;
|
|
82851
|
+
continue;
|
|
82852
|
+
}
|
|
82853
|
+
const ts = s.timestamp !== void 0 && Number.isFinite(s.timestamp) ? s.timestamp : index;
|
|
82854
|
+
const x = clamp01(s.x);
|
|
82855
|
+
const y = clamp01(s.y);
|
|
82856
|
+
const prev = nodes[nodes.length - 1];
|
|
82857
|
+
if (prev !== void 0 && Math.hypot(x - prev.x, y - prev.y) < .005) {
|
|
82858
|
+
nodes[nodes.length - 1] = {
|
|
82859
|
+
...prev,
|
|
82860
|
+
samples: prev.samples + 1,
|
|
82861
|
+
lastTs: Math.max(prev.lastTs, ts)
|
|
82862
|
+
};
|
|
82863
|
+
tail = {
|
|
82864
|
+
x,
|
|
82865
|
+
y,
|
|
82866
|
+
samples: 1,
|
|
82867
|
+
firstTs: ts,
|
|
82868
|
+
lastTs: ts
|
|
82869
|
+
};
|
|
82870
|
+
continue;
|
|
82871
|
+
}
|
|
82872
|
+
tail = null;
|
|
82873
|
+
nodes.push({
|
|
82874
|
+
x,
|
|
82875
|
+
y,
|
|
82876
|
+
samples: 1,
|
|
82877
|
+
firstTs: ts,
|
|
82878
|
+
lastTs: ts
|
|
82879
|
+
});
|
|
82880
|
+
}
|
|
82881
|
+
const end = nodes[nodes.length - 1];
|
|
82882
|
+
if (tail !== null && end !== void 0 && end.samples > 1 && (tail.x !== end.x || tail.y !== end.y)) {
|
|
82883
|
+
nodes[nodes.length - 1] = {
|
|
82884
|
+
...end,
|
|
82885
|
+
samples: end.samples - 1
|
|
82886
|
+
};
|
|
82887
|
+
nodes.push(tail);
|
|
82888
|
+
}
|
|
82889
|
+
return {
|
|
82890
|
+
nodes: downsample(nodes, opts?.maxPoints ?? 120),
|
|
82891
|
+
unlocalized
|
|
82892
|
+
};
|
|
82893
|
+
}
|
|
82894
|
+
/** True when the path has something to draw (two nodes or more). */
|
|
82895
|
+
function isDrawableSubjectPath(path) {
|
|
82896
|
+
return path.nodes.length >= 2;
|
|
82897
|
+
}
|
|
82898
|
+
function inside(p) {
|
|
82899
|
+
return p.x >= 0 && p.x <= 1 && p.y >= 0 && p.y <= 1;
|
|
82900
|
+
}
|
|
82901
|
+
/** Liang–Barsky: the part of segment a→b inside the unit square, or null. */
|
|
82902
|
+
function clipSegment(a, b) {
|
|
82903
|
+
const dx = b.x - a.x;
|
|
82904
|
+
const dy = b.y - a.y;
|
|
82905
|
+
let t0 = 0;
|
|
82906
|
+
let t1 = 1;
|
|
82907
|
+
const edges = [
|
|
82908
|
+
[-dx, a.x],
|
|
82909
|
+
[dx, 1 - a.x],
|
|
82910
|
+
[-dy, a.y],
|
|
82911
|
+
[dy, 1 - a.y]
|
|
82912
|
+
];
|
|
82913
|
+
for (const [p, q] of edges) {
|
|
82914
|
+
if (p === 0) {
|
|
82915
|
+
if (q < 0) return null;
|
|
82916
|
+
continue;
|
|
82917
|
+
}
|
|
82918
|
+
const r = q / p;
|
|
82919
|
+
if (p < 0) {
|
|
82920
|
+
if (r > t1) return null;
|
|
82921
|
+
if (r > t0) t0 = r;
|
|
82922
|
+
} else {
|
|
82923
|
+
if (r < t0) return null;
|
|
82924
|
+
if (r < t1) t1 = r;
|
|
82925
|
+
}
|
|
82926
|
+
}
|
|
82927
|
+
return [{
|
|
82928
|
+
x: a.x + t0 * dx,
|
|
82929
|
+
y: a.y + t0 * dy
|
|
82930
|
+
}, {
|
|
82931
|
+
x: a.x + t1 * dx,
|
|
82932
|
+
y: a.y + t1 * dy
|
|
82933
|
+
}];
|
|
82934
|
+
}
|
|
82935
|
+
function samePoint(a, b) {
|
|
82936
|
+
return Math.abs(a.x - b.x) < 1e-9 && Math.abs(a.y - b.y) < 1e-9;
|
|
82937
|
+
}
|
|
82938
|
+
/**
|
|
82939
|
+
* The path as seen through `view` — a normalised rectangle of the frame (the
|
|
82940
|
+
* whole frame `{0,0,1,1}`, or the rectangle a crop cut). Points are re-mapped
|
|
82941
|
+
* into the view's own 0..1 space and the line is CLIPPED to it: a path that
|
|
82942
|
+
* leaves the crop and comes back is two runs. Runs of fewer than two points
|
|
82943
|
+
* are dropped, so an empty result means "nothing to draw".
|
|
82944
|
+
*/
|
|
82945
|
+
function projectSubjectPath(points, view) {
|
|
82946
|
+
if (points.length < 2 || !(view.w > 0) || !(view.h > 0)) return [];
|
|
82947
|
+
const local = points.map((p) => ({
|
|
82948
|
+
x: (p.x - view.x) / view.w,
|
|
82949
|
+
y: (p.y - view.y) / view.h
|
|
82950
|
+
}));
|
|
82951
|
+
const runs = [];
|
|
82952
|
+
let run = [];
|
|
82953
|
+
for (let i = 1; i < local.length; i++) {
|
|
82954
|
+
const a = local[i - 1];
|
|
82955
|
+
const b = local[i];
|
|
82956
|
+
if (a === void 0 || b === void 0) continue;
|
|
82957
|
+
const seg = clipSegment(a, b);
|
|
82958
|
+
if (seg === null) {
|
|
82959
|
+
if (run.length >= 2) runs.push(run);
|
|
82960
|
+
run = [];
|
|
82961
|
+
continue;
|
|
82962
|
+
}
|
|
82963
|
+
const [from, to] = seg;
|
|
82964
|
+
const last = run[run.length - 1];
|
|
82965
|
+
if (last === void 0 || !samePoint(last, from)) {
|
|
82966
|
+
if (run.length >= 2) runs.push(run);
|
|
82967
|
+
run = [from];
|
|
82968
|
+
}
|
|
82969
|
+
run.push(to);
|
|
82970
|
+
if (!inside(b)) {
|
|
82971
|
+
if (run.length >= 2) runs.push(run);
|
|
82972
|
+
run = [];
|
|
82973
|
+
}
|
|
82974
|
+
}
|
|
82975
|
+
if (run.length >= 2) runs.push(run);
|
|
82976
|
+
return runs;
|
|
82977
|
+
}
|
|
82978
|
+
/** An SVG `points` attribute for a run in a `width` × `height` drawing ("x,y x,y …"). */
|
|
82979
|
+
function subjectPathSvgPoints(run, width, height) {
|
|
82980
|
+
const fmt = (v) => String(Math.round(v * 100) / 100);
|
|
82981
|
+
return run.map((p) => `${fmt(p.x * width)},${fmt(p.y * height)}`).join(" ");
|
|
82982
|
+
}
|
|
82799
82983
|
var ARMED_WORD_PREFIX = "armed_";
|
|
82800
82984
|
var ALARM_PANEL_CAP = "alarm-panel";
|
|
82801
82985
|
var ALARM_PANEL_TRIGGER_METHOD = "trigger";
|
|
@@ -87097,12 +87281,6 @@ Object.defineProperty(exports, "RebuildObjectEmbeddingsRefusalSchema", {
|
|
|
87097
87281
|
return RebuildObjectEmbeddingsRefusalSchema;
|
|
87098
87282
|
}
|
|
87099
87283
|
});
|
|
87100
|
-
Object.defineProperty(exports, "RecordsError", {
|
|
87101
|
-
enumerable: true,
|
|
87102
|
-
get: function() {
|
|
87103
|
-
return RecordsError;
|
|
87104
|
-
}
|
|
87105
|
-
});
|
|
87106
87284
|
Object.defineProperty(exports, "RetrainDismissedSchema", {
|
|
87107
87285
|
enumerable: true,
|
|
87108
87286
|
get: function() {
|
|
@@ -87391,6 +87569,12 @@ Object.defineProperty(exports, "buildEventKindDescriptor", {
|
|
|
87391
87569
|
return buildEventKindDescriptor;
|
|
87392
87570
|
}
|
|
87393
87571
|
});
|
|
87572
|
+
Object.defineProperty(exports, "buildSubjectPath", {
|
|
87573
|
+
enumerable: true,
|
|
87574
|
+
get: function() {
|
|
87575
|
+
return buildSubjectPath;
|
|
87576
|
+
}
|
|
87577
|
+
});
|
|
87394
87578
|
Object.defineProperty(exports, "buildViewerLink", {
|
|
87395
87579
|
enumerable: true,
|
|
87396
87580
|
get: function() {
|
|
@@ -87661,6 +87845,12 @@ Object.defineProperty(exports, "isDeviceScopedCap", {
|
|
|
87661
87845
|
return isDeviceScopedCap;
|
|
87662
87846
|
}
|
|
87663
87847
|
});
|
|
87848
|
+
Object.defineProperty(exports, "isDrawableSubjectPath", {
|
|
87849
|
+
enumerable: true,
|
|
87850
|
+
get: function() {
|
|
87851
|
+
return isDrawableSubjectPath;
|
|
87852
|
+
}
|
|
87853
|
+
});
|
|
87664
87854
|
Object.defineProperty(exports, "isEventKindLabelKey", {
|
|
87665
87855
|
enumerable: true,
|
|
87666
87856
|
get: function() {
|
|
@@ -87853,6 +88043,12 @@ Object.defineProperty(exports, "plateGalleryCapability", {
|
|
|
87853
88043
|
return plateGalleryCapability;
|
|
87854
88044
|
}
|
|
87855
88045
|
});
|
|
88046
|
+
Object.defineProperty(exports, "projectSubjectPath", {
|
|
88047
|
+
enumerable: true,
|
|
88048
|
+
get: function() {
|
|
88049
|
+
return projectSubjectPath;
|
|
88050
|
+
}
|
|
88051
|
+
});
|
|
87856
88052
|
Object.defineProperty(exports, "readClusterModelPinStrict", {
|
|
87857
88053
|
enumerable: true,
|
|
87858
88054
|
get: function() {
|
|
@@ -88033,6 +88229,18 @@ Object.defineProperty(exports, "subKindsOf", {
|
|
|
88033
88229
|
return subKindsOf;
|
|
88034
88230
|
}
|
|
88035
88231
|
});
|
|
88232
|
+
Object.defineProperty(exports, "subjectPathSampleFromBox", {
|
|
88233
|
+
enumerable: true,
|
|
88234
|
+
get: function() {
|
|
88235
|
+
return subjectPathSampleFromBox;
|
|
88236
|
+
}
|
|
88237
|
+
});
|
|
88238
|
+
Object.defineProperty(exports, "subjectPathSvgPoints", {
|
|
88239
|
+
enumerable: true,
|
|
88240
|
+
get: function() {
|
|
88241
|
+
return subjectPathSvgPoints;
|
|
88242
|
+
}
|
|
88243
|
+
});
|
|
88036
88244
|
Object.defineProperty(exports, "summarizeReview", {
|
|
88037
88245
|
enumerable: true,
|
|
88038
88246
|
get: function() {
|
|
@@ -18318,15 +18318,6 @@ var StorageKindSchema = object({
|
|
|
18318
18318
|
declaration: RecordKindDeclarationSchema
|
|
18319
18319
|
});
|
|
18320
18320
|
method(object({ ownerPrefix: string().min(1).optional() }), object({ tables: array(StorageTableSchema) }), { auth: "admin" }), method(object({
|
|
18321
|
-
collection: string().min(1),
|
|
18322
|
-
expectRows: number().int().nonnegative()
|
|
18323
|
-
}), object({
|
|
18324
|
-
dropped: literal(true),
|
|
18325
|
-
rows: number().int().nonnegative()
|
|
18326
|
-
}), {
|
|
18327
|
-
kind: "mutation",
|
|
18328
|
-
auth: "admin"
|
|
18329
|
-
}), method(object({
|
|
18330
18321
|
owner: string().min(1).optional(),
|
|
18331
18322
|
/** `false` skips the per-kind row count (a catalog read only). Default true. */
|
|
18332
18323
|
counts: boolean().optional()
|
|
@@ -44893,6 +44884,15 @@ var NcMediaPolicySchema = object({
|
|
|
44893
44884
|
* Replaces `zoneCrop`.
|
|
44894
44885
|
*/
|
|
44895
44886
|
showTriggerZone: boolean().optional(),
|
|
44887
|
+
/**
|
|
44888
|
+
* Draw the SUBJECT'S PATH on the picture — a line in the subject's colour
|
|
44889
|
+
* through the track's positions up to the frame shown, the same path the
|
|
44890
|
+
* debug views draw (`buildSubjectPath`, D903). Every picture mode a subject
|
|
44891
|
+
* is drawn on: a `crop` maps the path into the crop and clips it. Valid only
|
|
44892
|
+
* on a rule whose subject is a tracked object (refused on a sound rule);
|
|
44893
|
+
* dropped on `image: 'none'`. Absent = off.
|
|
44894
|
+
*/
|
|
44895
|
+
showSubjectPath: boolean().optional(),
|
|
44896
44896
|
/** @deprecated D897 — accepted from an editor that predates `image`, folded into it on save. */
|
|
44897
44897
|
attach: _enum([
|
|
44898
44898
|
"best",
|
|
@@ -77590,12 +77590,6 @@ Object.freeze({
|
|
|
77590
77590
|
addonId: null,
|
|
77591
77591
|
access: "create"
|
|
77592
77592
|
},
|
|
77593
|
-
"storageAdmin.dropCollection": {
|
|
77594
|
-
capName: "storage-admin",
|
|
77595
|
-
capScope: "system",
|
|
77596
|
-
addonId: null,
|
|
77597
|
-
access: "delete"
|
|
77598
|
-
},
|
|
77599
77593
|
"storageAdmin.listKinds": {
|
|
77600
77594
|
capName: "storage-admin",
|
|
77601
77595
|
capScope: "system",
|
|
@@ -82656,22 +82650,35 @@ function resolveNcMediaImage(media, kind) {
|
|
|
82656
82650
|
}
|
|
82657
82651
|
/**
|
|
82658
82652
|
* The stored shape of a media policy: `image` set, the legacy triple gone.
|
|
82653
|
+
* `showSubjectPath` survives on a kind with a tracked subject and a picture.
|
|
82659
82654
|
* `showTriggerZone` survives only where it can be drawn — a zone trigger and a
|
|
82660
82655
|
* mode other than `crop`/`none`; a legacy `zoneCrop` on a zone rule becomes it.
|
|
82661
82656
|
* Every other field (gif, clip, rolls, speed, profile, linked cameras) is
|
|
82662
82657
|
* carried through untouched. Pure; never throws.
|
|
82663
82658
|
*/
|
|
82664
82659
|
function normalizeNcMediaPolicy(media, rule) {
|
|
82665
|
-
const
|
|
82666
|
-
const
|
|
82660
|
+
const kind = ruleKindOf(rule);
|
|
82661
|
+
const image = resolveNcMediaImage(media, kind);
|
|
82662
|
+
const { attach: _attach, frame: _frame, zoneCrop, showTriggerZone, showSubjectPath, image: _image, ...rest } = media;
|
|
82667
82663
|
const drawable = (showTriggerZone === true || media.image === void 0 && zoneCrop === true) && image !== "crop" && image !== "none" && ruleTriggerZoneIds(rule.conditions).length > 0;
|
|
82664
|
+
const pathDrawable = showSubjectPath === true && image !== "none" && subjectHasPath(kind);
|
|
82668
82665
|
return {
|
|
82669
82666
|
...rest,
|
|
82670
82667
|
image,
|
|
82671
|
-
...drawable ? { showTriggerZone: true } : {}
|
|
82668
|
+
...drawable ? { showTriggerZone: true } : {},
|
|
82669
|
+
...pathDrawable ? { showSubjectPath: true } : {}
|
|
82672
82670
|
};
|
|
82673
82671
|
}
|
|
82674
82672
|
/**
|
|
82673
|
+
* True when a rule of this kind has a TRACKED subject whose path can be drawn
|
|
82674
|
+
* (`showSubjectPath`): the kinds whose subject owns a region of the frame. A
|
|
82675
|
+
* sound owns none, and a kind that carries no media has no picture.
|
|
82676
|
+
*/
|
|
82677
|
+
function subjectHasPath(kind) {
|
|
82678
|
+
const spec = ruleKindSpec(kind);
|
|
82679
|
+
return spec.carriesMedia && spec.carriesSubjectCrop;
|
|
82680
|
+
}
|
|
82681
|
+
/**
|
|
82675
82682
|
* Why a media policy cannot be SAVED on this rule, or null. Server-side and
|
|
82676
82683
|
* editor alike: `showTriggerZone` on a rule whose trigger is not a zone, and a
|
|
82677
82684
|
* mode the rule's kind cannot honour.
|
|
@@ -82683,6 +82690,7 @@ function ncMediaPolicyError(media, rule) {
|
|
|
82683
82690
|
if (offered.length > 0 && !offered.includes(media.image)) return `media.image '${media.image}' is not available for a ${kind} rule (offered: ${offered.join(", ")})`;
|
|
82684
82691
|
}
|
|
82685
82692
|
if (media.showTriggerZone === true && ruleTriggerZoneIds(rule.conditions).length === 0) return "media.showTriggerZone needs a rule triggered by a zone (a zones condition or an occupancy zone)";
|
|
82693
|
+
if (media.showSubjectPath === true && !subjectHasPath(kind)) return `media.showSubjectPath needs a rule whose subject is a tracked object (not a ${kind} rule)`;
|
|
82686
82694
|
return null;
|
|
82687
82695
|
}
|
|
82688
82696
|
var WEEKDAY_TO_DAY = {
|
|
@@ -82765,6 +82773,182 @@ function isScheduleActive(schedule, atMs) {
|
|
|
82765
82773
|
}
|
|
82766
82774
|
return schedule.invert === true ? !inside : inside;
|
|
82767
82775
|
}
|
|
82776
|
+
var clamp01 = (n) => n < 0 ? 0 : n > 1 ? 1 : n;
|
|
82777
|
+
/** The sample of a normalised box: its centre, its extent. */
|
|
82778
|
+
function subjectPathSampleFromBox(bbox, timestamp) {
|
|
82779
|
+
return {
|
|
82780
|
+
x: bbox.x + bbox.w / 2,
|
|
82781
|
+
y: bbox.y + bbox.h / 2,
|
|
82782
|
+
w: bbox.w,
|
|
82783
|
+
h: bbox.h,
|
|
82784
|
+
...timestamp !== void 0 ? { timestamp } : {}
|
|
82785
|
+
};
|
|
82786
|
+
}
|
|
82787
|
+
function isPlaceholder(s) {
|
|
82788
|
+
return s.w !== void 0 && s.h !== void 0 && s.w >= .85 && s.h >= .85;
|
|
82789
|
+
}
|
|
82790
|
+
function downsample(xs, max) {
|
|
82791
|
+
if (xs.length <= max || max < 2) return xs;
|
|
82792
|
+
const step = (xs.length - 1) / (max - 1);
|
|
82793
|
+
const out = [];
|
|
82794
|
+
for (let i = 0; i < max - 1; i++) {
|
|
82795
|
+
const x = xs[Math.round(i * step)];
|
|
82796
|
+
if (x !== void 0) out.push(x);
|
|
82797
|
+
}
|
|
82798
|
+
const last = xs[xs.length - 1];
|
|
82799
|
+
if (last !== void 0) out.push(last);
|
|
82800
|
+
return out;
|
|
82801
|
+
}
|
|
82802
|
+
function isFiniteSample(s) {
|
|
82803
|
+
return Number.isFinite(s.x) && Number.isFinite(s.y);
|
|
82804
|
+
}
|
|
82805
|
+
/**
|
|
82806
|
+
* The path of one track from its samples (normalised, oldest → newest).
|
|
82807
|
+
* Pure; never throws; malformed samples are skipped.
|
|
82808
|
+
*/
|
|
82809
|
+
function buildSubjectPath(samples, opts) {
|
|
82810
|
+
const until = opts?.untilTimestamp;
|
|
82811
|
+
const nodes = [];
|
|
82812
|
+
let unlocalized = 0;
|
|
82813
|
+
let tail = null;
|
|
82814
|
+
for (let index = 0; index < samples.length; index++) {
|
|
82815
|
+
const s = samples[index];
|
|
82816
|
+
if (s === void 0 || !isFiniteSample(s)) continue;
|
|
82817
|
+
if (until !== void 0 && s.timestamp !== void 0 && s.timestamp > until) continue;
|
|
82818
|
+
if (isPlaceholder(s)) {
|
|
82819
|
+
unlocalized += 1;
|
|
82820
|
+
continue;
|
|
82821
|
+
}
|
|
82822
|
+
const ts = s.timestamp !== void 0 && Number.isFinite(s.timestamp) ? s.timestamp : index;
|
|
82823
|
+
const x = clamp01(s.x);
|
|
82824
|
+
const y = clamp01(s.y);
|
|
82825
|
+
const prev = nodes[nodes.length - 1];
|
|
82826
|
+
if (prev !== void 0 && Math.hypot(x - prev.x, y - prev.y) < .005) {
|
|
82827
|
+
nodes[nodes.length - 1] = {
|
|
82828
|
+
...prev,
|
|
82829
|
+
samples: prev.samples + 1,
|
|
82830
|
+
lastTs: Math.max(prev.lastTs, ts)
|
|
82831
|
+
};
|
|
82832
|
+
tail = {
|
|
82833
|
+
x,
|
|
82834
|
+
y,
|
|
82835
|
+
samples: 1,
|
|
82836
|
+
firstTs: ts,
|
|
82837
|
+
lastTs: ts
|
|
82838
|
+
};
|
|
82839
|
+
continue;
|
|
82840
|
+
}
|
|
82841
|
+
tail = null;
|
|
82842
|
+
nodes.push({
|
|
82843
|
+
x,
|
|
82844
|
+
y,
|
|
82845
|
+
samples: 1,
|
|
82846
|
+
firstTs: ts,
|
|
82847
|
+
lastTs: ts
|
|
82848
|
+
});
|
|
82849
|
+
}
|
|
82850
|
+
const end = nodes[nodes.length - 1];
|
|
82851
|
+
if (tail !== null && end !== void 0 && end.samples > 1 && (tail.x !== end.x || tail.y !== end.y)) {
|
|
82852
|
+
nodes[nodes.length - 1] = {
|
|
82853
|
+
...end,
|
|
82854
|
+
samples: end.samples - 1
|
|
82855
|
+
};
|
|
82856
|
+
nodes.push(tail);
|
|
82857
|
+
}
|
|
82858
|
+
return {
|
|
82859
|
+
nodes: downsample(nodes, opts?.maxPoints ?? 120),
|
|
82860
|
+
unlocalized
|
|
82861
|
+
};
|
|
82862
|
+
}
|
|
82863
|
+
/** True when the path has something to draw (two nodes or more). */
|
|
82864
|
+
function isDrawableSubjectPath(path) {
|
|
82865
|
+
return path.nodes.length >= 2;
|
|
82866
|
+
}
|
|
82867
|
+
function inside(p) {
|
|
82868
|
+
return p.x >= 0 && p.x <= 1 && p.y >= 0 && p.y <= 1;
|
|
82869
|
+
}
|
|
82870
|
+
/** Liang–Barsky: the part of segment a→b inside the unit square, or null. */
|
|
82871
|
+
function clipSegment(a, b) {
|
|
82872
|
+
const dx = b.x - a.x;
|
|
82873
|
+
const dy = b.y - a.y;
|
|
82874
|
+
let t0 = 0;
|
|
82875
|
+
let t1 = 1;
|
|
82876
|
+
const edges = [
|
|
82877
|
+
[-dx, a.x],
|
|
82878
|
+
[dx, 1 - a.x],
|
|
82879
|
+
[-dy, a.y],
|
|
82880
|
+
[dy, 1 - a.y]
|
|
82881
|
+
];
|
|
82882
|
+
for (const [p, q] of edges) {
|
|
82883
|
+
if (p === 0) {
|
|
82884
|
+
if (q < 0) return null;
|
|
82885
|
+
continue;
|
|
82886
|
+
}
|
|
82887
|
+
const r = q / p;
|
|
82888
|
+
if (p < 0) {
|
|
82889
|
+
if (r > t1) return null;
|
|
82890
|
+
if (r > t0) t0 = r;
|
|
82891
|
+
} else {
|
|
82892
|
+
if (r < t0) return null;
|
|
82893
|
+
if (r < t1) t1 = r;
|
|
82894
|
+
}
|
|
82895
|
+
}
|
|
82896
|
+
return [{
|
|
82897
|
+
x: a.x + t0 * dx,
|
|
82898
|
+
y: a.y + t0 * dy
|
|
82899
|
+
}, {
|
|
82900
|
+
x: a.x + t1 * dx,
|
|
82901
|
+
y: a.y + t1 * dy
|
|
82902
|
+
}];
|
|
82903
|
+
}
|
|
82904
|
+
function samePoint(a, b) {
|
|
82905
|
+
return Math.abs(a.x - b.x) < 1e-9 && Math.abs(a.y - b.y) < 1e-9;
|
|
82906
|
+
}
|
|
82907
|
+
/**
|
|
82908
|
+
* The path as seen through `view` — a normalised rectangle of the frame (the
|
|
82909
|
+
* whole frame `{0,0,1,1}`, or the rectangle a crop cut). Points are re-mapped
|
|
82910
|
+
* into the view's own 0..1 space and the line is CLIPPED to it: a path that
|
|
82911
|
+
* leaves the crop and comes back is two runs. Runs of fewer than two points
|
|
82912
|
+
* are dropped, so an empty result means "nothing to draw".
|
|
82913
|
+
*/
|
|
82914
|
+
function projectSubjectPath(points, view) {
|
|
82915
|
+
if (points.length < 2 || !(view.w > 0) || !(view.h > 0)) return [];
|
|
82916
|
+
const local = points.map((p) => ({
|
|
82917
|
+
x: (p.x - view.x) / view.w,
|
|
82918
|
+
y: (p.y - view.y) / view.h
|
|
82919
|
+
}));
|
|
82920
|
+
const runs = [];
|
|
82921
|
+
let run = [];
|
|
82922
|
+
for (let i = 1; i < local.length; i++) {
|
|
82923
|
+
const a = local[i - 1];
|
|
82924
|
+
const b = local[i];
|
|
82925
|
+
if (a === void 0 || b === void 0) continue;
|
|
82926
|
+
const seg = clipSegment(a, b);
|
|
82927
|
+
if (seg === null) {
|
|
82928
|
+
if (run.length >= 2) runs.push(run);
|
|
82929
|
+
run = [];
|
|
82930
|
+
continue;
|
|
82931
|
+
}
|
|
82932
|
+
const [from, to] = seg;
|
|
82933
|
+
const last = run[run.length - 1];
|
|
82934
|
+
if (last === void 0 || !samePoint(last, from)) {
|
|
82935
|
+
if (run.length >= 2) runs.push(run);
|
|
82936
|
+
run = [from];
|
|
82937
|
+
}
|
|
82938
|
+
run.push(to);
|
|
82939
|
+
if (!inside(b)) {
|
|
82940
|
+
if (run.length >= 2) runs.push(run);
|
|
82941
|
+
run = [];
|
|
82942
|
+
}
|
|
82943
|
+
}
|
|
82944
|
+
if (run.length >= 2) runs.push(run);
|
|
82945
|
+
return runs;
|
|
82946
|
+
}
|
|
82947
|
+
/** An SVG `points` attribute for a run in a `width` × `height` drawing ("x,y x,y …"). */
|
|
82948
|
+
function subjectPathSvgPoints(run, width, height) {
|
|
82949
|
+
const fmt = (v) => String(Math.round(v * 100) / 100);
|
|
82950
|
+
return run.map((p) => `${fmt(p.x * width)},${fmt(p.y * height)}`).join(" ");
|
|
82951
|
+
}
|
|
82768
82952
|
var ARMED_WORD_PREFIX = "armed_";
|
|
82769
82953
|
var ALARM_PANEL_CAP = "alarm-panel";
|
|
82770
82954
|
var ALARM_PANEL_TRIGGER_METHOD = "trigger";
|
|
@@ -86358,4 +86542,4 @@ function buildClipModelRegistry(entries) {
|
|
|
86358
86542
|
/** The built-in catalog's registry. */
|
|
86359
86543
|
var BUILTIN_CLIP_MODELS = buildClipModelRegistry(CLIP_IMAGE_MODELS);
|
|
86360
86544
|
//#endregion
|
|
86361
|
-
export { MediaFileKindEnum as $,
|
|
86545
|
+
export { MediaFileKindEnum as $, defineRecordKinds as $i, consumableLowPercentOf as $n, pipelineAnalyticsCapability as $r, NcTemplateVarDescriptorSchema as $t, DeclaredDevices as A, systemEventDeliveryProblems as Ai, TrackSideSchema as An, isDrawableSubjectPath as Ar, NcAlarmSensorsInputSchema as At, FULL_IMAGE_BBOX as B, DEFAULT_FIRST_SIGHTING_FRESHNESS_MS as Bi, applyModeDelaysEdits as Bn, isSystemEventSummaryRule as Br, NcRuleSchema as Bt, ClearTrackRelationResultSchema as C, startMoverUnderClearance as Ci, TRACK_RELATIONS_DEFAULT_LIMIT as Cn, isAlarmControllableCap as Cr, NC_SNOOZE_MAX_MINUTES as Ct, DEFAULT_TIMELAPSE_PREVIEW_TEXT as D, subjectPathSvgPoints as Di, TrackPuritySchema as Dn, isAudioClassName as Dr, NC_TEMPLATE_VARS as Dt, DEFAULT_EVENT_COLOR as E, subjectPathSampleFromBox as Ei, TimelapseRuleSchema as En, isAppLinkBase as Er, NC_TAXONOMY as Et, EVENT_DENSITY_BATCH_MAX as F, templateCarriesSummary as Fi, alarmPanelCapability as Fn, isMediaOwnerType as Fr, NcLegacyRuleActionSequenceSchema as Ft, ListTrackRelationsResultSchema as G, errMsg as Gi, audioMetricsCapability as Gn, memoizePinnedFfmpeg as Gr, NcSnoozeInputSchema as Gt, LABEL_SUPPLY_MACRO as H, evaluateSensorEdge as Hi, applySecureOnArmEdit as Hn, kebabToCamel as Hr, NcRuleUpdateInputSchema as Ht, EVENT_KIND_BY_CAP as I, templateVarsFor as Ii, alertEpisodeId as In, isRetiredClearKey as Ir, NcRuleActionSchema as It, MAX_BIRTH_DECISION_RECORDS as J, RECORD_MAX_DATA_BYTES as Ji, buildSubjectPath as Jn, notificationRulesCapability as Jr, NcStateSummarySectionIdSchema as Jt, LockStateSchema as K, BaseAddon as Ki, audioModeOf as Kn, ncMediaPolicyError as Kr, NcSnoozeSchema as Kt, EVENT_OWNER_TYPES as L, vectorDimFromBase64 as Li, alertEpisodeKind as Ln, isRootSuppliableStepId as Lr, NcRuleActionsSchema as Lt, EMBEDDING_MODEL_FAILED as M, systemEventFilterApplies as Mi, activateAlarmProfile as Mn, isEventOwnerType as Mr, NcAlarmSettingsPatchSchema as Mt, EMBEDDING_REQUIREMENTS_FAILED as N, systemEventSummaryScheduleOf as Ni, addonWidgetsSourceCapability as Nn, isKnownTemplateVar as Nr, NcConditionDescriptorSchema as Nt, DETECTION_MACRO_CLASSES as O, summarizeReview as Oi, TrackRelationKindSchema as On, isDefaultAlarmProfileId as Or, NcAlarmConfigSchema as Ot, EMBEDDING_REQUIREMENTS_UNAVAILABLE as P, systemEventSummarySplitOf as Pi, alarmDeviceSecureOnArm as Pn, isLabelSupplyStepId as Pr, NcConditionsSchema as Pt, MOTION_CLOSE_AFTER_MS as Q, defineCustomActions as Qi, cloneAlarmSettings as Qn, pickFaceRescoreIntervalMinutes as Qr, NcTemplatePreviewSchema as Qt, EXPORT_DENSE_MAX_RANGES as R, viewerLinkBaseOf as Ri, alertEpisodePayload as Rn, isScheduleActive as Rr, NcRuleInputSchema as Rt, ClearTrackRelationInputSchema as S, EventCategory as Sa, servedTemplateVars as Si, TIMELAPSE_DENSE_FLOOR_SEC as Sn, gifFromMp4Args as Sr, NC_SENSOR_TRANSITION_KINDS as St, DEFAULT_DETAIL_CROP_CONVENTION as T, subKindsOf as Ti, TimelapseRulePatchSchema as Tn, isAlertEpisodeSeverity as Tr, NC_TANK_SYSTEM_EVENT_KINDS as Tt, LabelAttributionSchema as U, isSourceCap as Ui, armRemovalReconcile as Un, linkedStepOf as Ur, NcScheduleSchema as Ut, FailureCounters as V, canonicalHash as Vi, applyNonBlockingEdit as Vn, isVectorIndexDimConflict as Vr, NcRuleTargetSchema as Vt, ListTrackRelationsInputSchema as W, DeviceType as Wi, assertTimelapseCadences as Wn, mayWriteToLocation as Wr, NcSharedSequenceSchema as Wt, MAX_TRACK_PURITIES as X, createEvent as Xi, calendarEventLocalSpan as Xn, parseAlertEpisodePayload as Xr, NcTaxonomySchema as Xt, MAX_BIRTH_LATENCY_PROXY_MS as Y, RECORD_QUERY_MAX as Yi, buildViewerLink as Yn, occupancyScope as Yr, NcSystemEventKindSchema as Yt, MAX_TRACK_RELATIONS as Z, customAction as Zi, classifyRetrainReview as Zn, parseProcStatus as Zr, NcTemplatePreviewInputSchema as Zt, BIRTH_DECISION_DEFAULT_LIMIT as _, string as _a, ruleGroupingApplies as _i, SCENE_RESET_RECAPTURES as _n, eventKindLabel as _r, NC_CONSUMABLE_SYSTEM_EVENT_KINDS as _t, CLIP_EMBEDDING_STEP_ID as a, ZodObject as aa, renameAlarmProfile as ai, RebuildObjectEmbeddingsRefusalSchema as an, derivePostTriggeredAction as ar, NC_ALARM_NOTIFY_FIELDS as at, BucketAccumulator as b, union as ba, secureActuationFor as bi, SetTrackPurityResultSchema as bn, failureContributionCapability as br, NC_GROUPING_MAX_SEC as bt, readClusterModelPinStrict as c, boolean as ca, resolveModeDelays as ci, RetrainStatusSchema as cn, describeSystemEventFamilyProblem as cr, NC_AUDIO_CONFIRM_HITS_DEFAULT as ct, APPEARANCE_BLOCKS as d, looseObject as da, resolvePoolMemoryPolicy as di, SCENE_DEFAULT_ANCHOR_THRESHOLD as dn, embeddingModelFailedError as dr, NC_CLIP_PRE_ROLL_DEFAULT_SEC as dt, hydrateSchema as ea, plateGalleryCapability as ei, OPS_LOG_DEFAULT_LIMIT as en, coreBlockIdFromAddonId as er, MotionTriggeredBySchema as et, APPEARANCE_RESOLVES_AMBIGUITY_DEFAULT as f, number as fa, retrainRevisionConflictMessage as fi, SCENE_DEFAULT_CHECK_INTERVAL_SEC as fn, embeddingRefusalOf as fr, NC_CLIP_RETENTION_MAX_SEC as ft, ArchivedDebugNoteSchema as g, strictObject as ga, ruleDeviceCompatCapQueries as gi, SCENE_DIVERGED as gn, ensureAlarmProfiles as gr, NC_CONSUMABLE_LOW_PERCENT_DEFAULT as gt, AlarmArmModeSchema as h, record as ha, ruleBelongsToAlarm as hi, SCENE_DEFAULT_UNCOVERED_POLICY as hn, encodeVectorBase64 as hr, NC_CONFIRM_DEFAULT_TIMEOUT_MS as ht, CLIP_TEXT_MODELS as i, sleep as ia, readTimelapseGeneratedAt as ii, RECORDING_SOURCE_CAMSTACK_ADDON as in, deriveDetailCropRect as ir, NC_ALARM_DELAY_MAX_SEC as it, DetectionSourceSchema as j, systemEventFamilyProblems as ji, TrackSourceSchema as jn, isEventKindLabelKey as jr, NcAlarmSensorsSchema as jt, DETECTION_PIPELINE_CAP_NAME as k, syncActiveAlarmProfileSettings as ki, TrackRelationSchema as kn, isDetectionMacroClass as kr, NcAlarmPostTriggeredActionSchema as kt, resolveClusterModelPin as l, discriminatedUnion as la, resolveModeNotifyPolicy as li, SCENE_CONFIRM_DEFAULT_MAX_IMAGE_PX as ln, deviceRemovalHookCapability as lr, NC_AUDIO_CONFIRM_WINDOW_SEC_DEFAULT as lt, AUDIO_MACRO_LABELS as m, partialRecord as ma, ruleAutoTriggersAlarm as mi, SCENE_DEFAULT_QUIET_SECONDS as mn, embeddingRequirementsUnavailableError as mr, NC_CONFIRM_DEFAULT_MAX_IMAGE_PX as mt, DEFAULT_CLIP_MODEL as n, nodePin as na, readDeviceStateFrom as ni, PoolMemoryWatchdog as nn, createAlarmProfile as nr, NC_ALARM_DEFAULT_TRIGGERED_DURATION_SEC as nt, CLUSTER_MODEL_OWNER_ADDON_ID as o, _enum as oa, resolveClipSearchMinScore as oi, RetrainDismissedSchema as on, deriveRecordingMode as or, NC_ALARM_SYSTEM_EVENT_KINDS as ot, ARCHIVED_DEBUG_NOTES_DEFAULT_LIMIT as p, object as pa, rootSupplyServes as pi, SCENE_DEFAULT_OBSERVATION_SPACING_SEC as pn, embeddingRequirementsFailedError as pr, NC_CONDITION_CATALOG as pt, MAX_ARCHIVED_DEBUG_NOTES as q, CamProfileSchema as qi, buildEventKindDescriptor as qn, normalizeNcMediaPolicy as qr, NcSnoozeSuppressedSchema as qt, CLIP_IMAGE_MODELS as r, normalizeNodeId as ra, readMotionTriggeredBy as ri, RECORDING_EXPORT_MAX_READ_BYTES as rn, deleteAlarmProfile as rr, NC_ALARM_DELAY_FIELDS as rt, FACE_EMBEDDING_STEP_ID as s, array as sa, resolveLocationMode as si, RetrainOriginSchema as sn, describeSystemEventDeliveryProblem as sr, NC_ALARM_TRIGGERED_MAX_SEC as st, BUILTIN_CLIP_MODELS as t, isDeviceScopedCap as ta, projectSubjectPath as ti, OpsLogEntrySchema as tn, cosineSimilarity as tr, NC_ALARM_DEFAULT_PROFILE_ID as tt, APPEARANCE_BIN_COUNT as u, literal as ua, resolveNcMediaImage as ui, SCENE_CONFIRM_DEFAULT_TIMEOUT_MS as un, embeddingEncoderCapability as ur, NC_CLIP_POST_ROLL_DEFAULT_SEC as ut, BaseDevice as v, templateLiteral as va, ruleKindOf as vi, SceneMonitorSchema as vn, evictionPolicyOfLocation as vr, NC_DEFAULT_SNOOZE_MINUTES as vt, CoverStateSchema as w, storageOccupancyCapability as wi, TimelapseRuleInputSchema as wn, isAlertEpisodeOpen as wr, NC_SYSTEM_EVENT_KIND_GROUP_SPECS as wt, COCO_TO_MACRO as x, unknown as xa, sensorRaisedOf as xi, SetTrackRelationInputSchema as xn, gifDeriveSpeed as xr, NC_GROUPING_MIN_SEC as xt, BirthDecisionRecordSchema as y, tuple as ya, sceneMonitorCapability as yi, SetTrackPurityInputSchema as yn, faceGalleryCapability as yr, NC_GROUPING_DEFAULT_SEC as yt, FIRST_LEVEL_MACRO_CLASSES as z, zoneAnalyticsCapability as zi, applyBlockingEdit as zn, isSystemDelivery as zr, NcRulePatchSchema 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-B4VtQ3mk.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 { Ki as BaseAddon, Zr as parseProcStatus, a as CLIP_EMBEDDING_STEP_ID, di as resolvePoolMemoryPolicy, dr as embeddingModelFailedError, i as CLIP_TEXT_MODELS, l as resolveClusterModelPin, mr as embeddingRequirementsUnavailableError, n as DEFAULT_CLIP_MODEL, nn as PoolMemoryWatchdog, pr as embeddingRequirementsFailedError, r as CLIP_IMAGE_MODELS, ra as normalizeNodeId, t as BUILTIN_CLIP_MODELS, ur as embeddingEncoderCapability } from "../clip-model-registry-Clb51mcj.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";
|