@camstack/addon-post-analysis 1.2.364 → 1.2.366
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-B69Mktce.mjs → clip-model-registry-Bsj2t3Ec.mjs} +375 -4
- package/dist/{clip-model-registry-D8XeJhT4.js → clip-model-registry-CfYSfakK.js} +404 -3
- 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-CUQTWug8.mjs → _virtual_mf-localSharedImportMap___mfe_internal__addon_pipeline_analytics_widgets-CBiuAq6S.mjs} +2 -2
- package/dist/pipeline-analytics/{_virtual_mf___mfe_internal__addon_pipeline_analytics_widgets__loadShare___mf_0_camstack_mf_1_types__loadShare__.js-B3Ko_8Ah.mjs → _virtual_mf___mfe_internal__addon_pipeline_analytics_widgets__loadShare___mf_0_camstack_mf_1_types__loadShare__.js-Cul2786X.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-DTg0F1dD.mjs +26 -0
- package/dist/pipeline-analytics/{hostInit-Be7_ixng.mjs → hostInit-6daqknJk.mjs} +2 -2
- package/dist/pipeline-analytics/index.js +519 -41
- package/dist/pipeline-analytics/index.mjs +519 -41
- 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-DOcfQnib.mjs +0 -26
|
@@ -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-BBF1iXUi.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).
|
|
@@ -10758,6 +10758,189 @@ discriminatedUnion("type", [
|
|
|
10758
10758
|
message: string()
|
|
10759
10759
|
})
|
|
10760
10760
|
]);
|
|
10761
|
+
/** Every status, in the order a summary lists them. */
|
|
10762
|
+
var RETRAIN_REVIEW_STATUSES = [
|
|
10763
|
+
"unchanged",
|
|
10764
|
+
"adjusted",
|
|
10765
|
+
"reclassified",
|
|
10766
|
+
"added",
|
|
10767
|
+
"removed",
|
|
10768
|
+
"model-error"
|
|
10769
|
+
];
|
|
10770
|
+
/** Two boxes this close on every edge are the same rectangle (an exact match). */
|
|
10771
|
+
var EXACT_EDGE_EPSILON = 1e-6;
|
|
10772
|
+
var optLabel = (label) => label !== void 0 ? { label } : {};
|
|
10773
|
+
/** Intersection over union of two normalised rectangles. */
|
|
10774
|
+
function retrainBoxIou(a, b) {
|
|
10775
|
+
const inter = Math.max(0, Math.min(a.x + a.w, b.x + b.w) - Math.max(a.x, b.x)) * Math.max(0, Math.min(a.y + a.h, b.y + b.h) - Math.max(a.y, b.y));
|
|
10776
|
+
const union = a.w * a.h + b.w * b.h - inter;
|
|
10777
|
+
return union > 0 ? inter / union : 0;
|
|
10778
|
+
}
|
|
10779
|
+
function sameRect(a, b) {
|
|
10780
|
+
return Math.abs(a.x - b.x) <= EXACT_EDGE_EPSILON && Math.abs(a.y - b.y) <= EXACT_EDGE_EPSILON && Math.abs(a.w - b.w) <= EXACT_EDGE_EPSILON && Math.abs(a.h - b.h) <= EXACT_EDGE_EPSILON;
|
|
10781
|
+
}
|
|
10782
|
+
function labelField(value) {
|
|
10783
|
+
return value?.trim() ?? "";
|
|
10784
|
+
}
|
|
10785
|
+
/** Kept box versus its baseline: class/label first, then geometry. */
|
|
10786
|
+
function compareKept(saved, baseline, adjustedIou) {
|
|
10787
|
+
const iou = retrainBoxIou(saved.bbox, baseline.bbox);
|
|
10788
|
+
if (saved.macroClass !== baseline.macroClass || labelField(saved.label) !== labelField(baseline.label)) return {
|
|
10789
|
+
status: "reclassified",
|
|
10790
|
+
iou
|
|
10791
|
+
};
|
|
10792
|
+
return {
|
|
10793
|
+
status: iou < adjustedIou ? "adjusted" : "unchanged",
|
|
10794
|
+
iou
|
|
10795
|
+
};
|
|
10796
|
+
}
|
|
10797
|
+
/**
|
|
10798
|
+
* Pair legacy rows with proposals: exact rectangles first, then by descending
|
|
10799
|
+
* overlap, one proposal per row. Greedy on a sorted list so the result does not
|
|
10800
|
+
* depend on the order the rows were listed in.
|
|
10801
|
+
*/
|
|
10802
|
+
function pairLegacy(saved, legacyIndexes, origins, matchIou) {
|
|
10803
|
+
const candidates = [];
|
|
10804
|
+
for (const savedIndex of legacyIndexes) {
|
|
10805
|
+
const box = saved[savedIndex];
|
|
10806
|
+
if (box === void 0) continue;
|
|
10807
|
+
origins.forEach((origin, originIndex) => {
|
|
10808
|
+
const exact = sameRect(box.bbox, origin.bbox);
|
|
10809
|
+
const iou = exact ? 1 : retrainBoxIou(box.bbox, origin.bbox);
|
|
10810
|
+
if (exact || iou >= matchIou) candidates.push({
|
|
10811
|
+
savedIndex,
|
|
10812
|
+
originIndex,
|
|
10813
|
+
iou,
|
|
10814
|
+
exact
|
|
10815
|
+
});
|
|
10816
|
+
});
|
|
10817
|
+
}
|
|
10818
|
+
candidates.sort((a, b) => Number(b.exact) - Number(a.exact) || b.iou - a.iou);
|
|
10819
|
+
const pairs = /* @__PURE__ */ new Map();
|
|
10820
|
+
const takenOrigins = /* @__PURE__ */ new Set();
|
|
10821
|
+
for (const c of candidates) {
|
|
10822
|
+
if (pairs.has(c.savedIndex) || takenOrigins.has(c.originIndex)) continue;
|
|
10823
|
+
pairs.set(c.savedIndex, c.originIndex);
|
|
10824
|
+
takenOrigins.add(c.originIndex);
|
|
10825
|
+
}
|
|
10826
|
+
return pairs;
|
|
10827
|
+
}
|
|
10828
|
+
/**
|
|
10829
|
+
* Classify what the operator did on ONE frame.
|
|
10830
|
+
*
|
|
10831
|
+
* @param saved the frame's saved boxes.
|
|
10832
|
+
* @param origins the proposals known now (the pipeline's boxes, re-derived) —
|
|
10833
|
+
* consulted ONLY for rows that carry no origin snapshot.
|
|
10834
|
+
* @param dismissed the proposals the operator deleted, with their snapshots.
|
|
10835
|
+
*/
|
|
10836
|
+
function classifyRetrainReview(saved, origins, dismissed, opts = {}) {
|
|
10837
|
+
const matchIou = opts.matchIou ?? .5;
|
|
10838
|
+
const adjustedIou = opts.adjustedIou ?? .95;
|
|
10839
|
+
const claimedRefs = /* @__PURE__ */ new Set();
|
|
10840
|
+
const boxes = [];
|
|
10841
|
+
const legacyIndexes = [];
|
|
10842
|
+
saved.forEach((box, index) => {
|
|
10843
|
+
if (box.origin === null) legacyIndexes.push(index);
|
|
10844
|
+
else claimedRefs.add(box.origin.ref);
|
|
10845
|
+
});
|
|
10846
|
+
for (const entry of dismissed) claimedRefs.add(entry.ref);
|
|
10847
|
+
const legacyPairs = pairLegacy(saved, legacyIndexes, origins, matchIou);
|
|
10848
|
+
for (const originIndex of legacyPairs.values()) {
|
|
10849
|
+
const origin = origins[originIndex];
|
|
10850
|
+
if (origin !== void 0) claimedRefs.add(origin.ref);
|
|
10851
|
+
}
|
|
10852
|
+
saved.forEach((box, index) => {
|
|
10853
|
+
const exactBaseline = box.origin;
|
|
10854
|
+
const pairedOrigin = exactBaseline === null ? origins[legacyPairs.get(index) ?? -1] : void 0;
|
|
10855
|
+
const baseline = exactBaseline ?? pairedOrigin ?? null;
|
|
10856
|
+
const approximate = exactBaseline === null;
|
|
10857
|
+
if (box.kind === "model_error") {
|
|
10858
|
+
boxes.push({
|
|
10859
|
+
ref: box.id,
|
|
10860
|
+
savedId: box.id,
|
|
10861
|
+
status: "model-error",
|
|
10862
|
+
approximate: false,
|
|
10863
|
+
macroClass: box.macroClass,
|
|
10864
|
+
...optLabel(box.label),
|
|
10865
|
+
...baseline !== null ? {
|
|
10866
|
+
origin: baseline,
|
|
10867
|
+
iou: retrainBoxIou(box.bbox, baseline.bbox)
|
|
10868
|
+
} : {}
|
|
10869
|
+
});
|
|
10870
|
+
return;
|
|
10871
|
+
}
|
|
10872
|
+
if (baseline === null || baseline.source === "operator") {
|
|
10873
|
+
boxes.push({
|
|
10874
|
+
ref: box.id,
|
|
10875
|
+
savedId: box.id,
|
|
10876
|
+
status: "added",
|
|
10877
|
+
approximate: approximate && baseline === null,
|
|
10878
|
+
macroClass: box.macroClass,
|
|
10879
|
+
...optLabel(box.label),
|
|
10880
|
+
...baseline !== null ? { origin: baseline } : {}
|
|
10881
|
+
});
|
|
10882
|
+
return;
|
|
10883
|
+
}
|
|
10884
|
+
const verdict = compareKept(box, baseline, adjustedIou);
|
|
10885
|
+
boxes.push({
|
|
10886
|
+
ref: box.id,
|
|
10887
|
+
savedId: box.id,
|
|
10888
|
+
status: verdict.status,
|
|
10889
|
+
approximate,
|
|
10890
|
+
macroClass: box.macroClass,
|
|
10891
|
+
...optLabel(box.label),
|
|
10892
|
+
origin: baseline,
|
|
10893
|
+
iou: verdict.iou
|
|
10894
|
+
});
|
|
10895
|
+
});
|
|
10896
|
+
for (const entry of dismissed) boxes.push({
|
|
10897
|
+
ref: entry.ref,
|
|
10898
|
+
status: "removed",
|
|
10899
|
+
approximate: false,
|
|
10900
|
+
macroClass: entry.snapshot.macroClass,
|
|
10901
|
+
...optLabel(entry.snapshot.label),
|
|
10902
|
+
origin: entry.snapshot
|
|
10903
|
+
});
|
|
10904
|
+
if (opts.inferRemoved === true) for (const origin of origins) {
|
|
10905
|
+
if (claimedRefs.has(origin.ref)) continue;
|
|
10906
|
+
boxes.push({
|
|
10907
|
+
ref: origin.ref,
|
|
10908
|
+
status: "removed",
|
|
10909
|
+
approximate: true,
|
|
10910
|
+
macroClass: origin.macroClass,
|
|
10911
|
+
...optLabel(origin.label),
|
|
10912
|
+
origin
|
|
10913
|
+
});
|
|
10914
|
+
}
|
|
10915
|
+
return {
|
|
10916
|
+
boxes,
|
|
10917
|
+
approximate: boxes.some((b) => b.approximate)
|
|
10918
|
+
};
|
|
10919
|
+
}
|
|
10920
|
+
/** Counts per status, plus the totals a list row shows. */
|
|
10921
|
+
function summarizeReview(review) {
|
|
10922
|
+
const counts = {
|
|
10923
|
+
unchanged: 0,
|
|
10924
|
+
adjusted: 0,
|
|
10925
|
+
reclassified: 0,
|
|
10926
|
+
added: 0,
|
|
10927
|
+
removed: 0,
|
|
10928
|
+
"model-error": 0
|
|
10929
|
+
};
|
|
10930
|
+
for (const box of review.boxes) counts[box.status] += 1;
|
|
10931
|
+
return {
|
|
10932
|
+
counts,
|
|
10933
|
+
total: review.boxes.length,
|
|
10934
|
+
changed: review.boxes.length - counts.unchanged,
|
|
10935
|
+
approximate: review.approximate
|
|
10936
|
+
};
|
|
10937
|
+
}
|
|
10938
|
+
/** The prefix of the error a stale `expectedRevision` save is refused with. */
|
|
10939
|
+
var RETRAIN_REVISION_CONFLICT = "retrain-revision-conflict";
|
|
10940
|
+
/** The message a refused save carries — `parseRetrainRevisionConflict` reads it back. */
|
|
10941
|
+
function retrainRevisionConflictMessage(frameId, conflict) {
|
|
10942
|
+
return `${RETRAIN_REVISION_CONFLICT}: frame ${frameId} moved on — it is at revision ${String(conflict.currentRevision)}, the save expected ${String(conflict.expectedRevision)} (current=${String(conflict.currentRevision)} expected=${String(conflict.expectedRevision)})`;
|
|
10943
|
+
}
|
|
10761
10944
|
/**
|
|
10762
10945
|
* Birth-decision ledger — one durable row per track-birth VERDICT (D409).
|
|
10763
10946
|
*
|
|
@@ -16395,6 +16578,38 @@ var BulkRecordSchema = object({
|
|
|
16395
16578
|
data: record(string(), unknown())
|
|
16396
16579
|
});
|
|
16397
16580
|
/**
|
|
16581
|
+
* One write inside a {@link settingsStoreCapability.methods.transact} call.
|
|
16582
|
+
* Only the three that a "replace this set, bump that revision" write needs.
|
|
16583
|
+
*/
|
|
16584
|
+
var TransactOpSchema = discriminatedUnion("op", [
|
|
16585
|
+
object({
|
|
16586
|
+
op: literal("deleteWhere"),
|
|
16587
|
+
collection: string(),
|
|
16588
|
+
filter: MutationFilterSchema
|
|
16589
|
+
}),
|
|
16590
|
+
object({
|
|
16591
|
+
op: literal("insertMany"),
|
|
16592
|
+
collection: string(),
|
|
16593
|
+
records: array(BulkRecordSchema).readonly()
|
|
16594
|
+
}),
|
|
16595
|
+
object({
|
|
16596
|
+
op: literal("update"),
|
|
16597
|
+
collection: string(),
|
|
16598
|
+
id: string(),
|
|
16599
|
+
data: record(string(), unknown())
|
|
16600
|
+
})
|
|
16601
|
+
]);
|
|
16602
|
+
/**
|
|
16603
|
+
* The precondition of a transaction: the row `key` of `collection` must hold
|
|
16604
|
+
* `equals` in `column`, read INSIDE the transaction.
|
|
16605
|
+
*/
|
|
16606
|
+
var TransactGuardSchema = object({
|
|
16607
|
+
collection: string(),
|
|
16608
|
+
key: string(),
|
|
16609
|
+
column: string(),
|
|
16610
|
+
equals: unknown()
|
|
16611
|
+
});
|
|
16612
|
+
/**
|
|
16398
16613
|
* Column declaration for a structured (SQL-backed) collection.
|
|
16399
16614
|
*
|
|
16400
16615
|
* Logical types — the backend translates each to the matching SQLite
|
|
@@ -16485,6 +16700,16 @@ id: union([string(), number()]) }), {
|
|
|
16485
16700
|
}), object({ inserted: number().int() }), {
|
|
16486
16701
|
kind: "mutation",
|
|
16487
16702
|
auth: "admin"
|
|
16703
|
+
}), method(object({
|
|
16704
|
+
namespace: string().optional(),
|
|
16705
|
+
guard: TransactGuardSchema.optional(),
|
|
16706
|
+
ops: array(TransactOpSchema).readonly()
|
|
16707
|
+
}), object({
|
|
16708
|
+
applied: boolean(),
|
|
16709
|
+
current: unknown().optional()
|
|
16710
|
+
}), {
|
|
16711
|
+
kind: "mutation",
|
|
16712
|
+
auth: "admin"
|
|
16488
16713
|
}), method(object({
|
|
16489
16714
|
namespace: string().optional(),
|
|
16490
16715
|
collection: string(),
|
|
@@ -16633,6 +16858,16 @@ id: union([string(), number()]) }), {
|
|
|
16633
16858
|
}), object({ inserted: number().int() }), {
|
|
16634
16859
|
kind: "mutation",
|
|
16635
16860
|
auth: "admin"
|
|
16861
|
+
}), method(object({
|
|
16862
|
+
namespace: string().optional(),
|
|
16863
|
+
guard: TransactGuardSchema.optional(),
|
|
16864
|
+
ops: array(TransactOpSchema).readonly()
|
|
16865
|
+
}), object({
|
|
16866
|
+
applied: boolean(),
|
|
16867
|
+
current: unknown().optional()
|
|
16868
|
+
}), {
|
|
16869
|
+
kind: "mutation",
|
|
16870
|
+
auth: "admin"
|
|
16636
16871
|
}), method(object({
|
|
16637
16872
|
namespace: string().optional(),
|
|
16638
16873
|
collection: string(),
|
|
@@ -26366,6 +26601,58 @@ var RetrainBboxSchema = object({
|
|
|
26366
26601
|
h: number()
|
|
26367
26602
|
});
|
|
26368
26603
|
/**
|
|
26604
|
+
* What a box LOOKED LIKE when it was offered, snapshotted at the moment the
|
|
26605
|
+
* operator accepted it. The saved row keeps only the final rectangle; this is
|
|
26606
|
+
* the other half of the pair, and the pair is what says whether the operator
|
|
26607
|
+
* accepted, nudged, relabelled or replaced a proposal (`retrain-review.ts`).
|
|
26608
|
+
*
|
|
26609
|
+
* `ref` names the proposal inside its frame: `pipeline:<trackId>` for a box the
|
|
26610
|
+
* live pipeline drew, `assist:<n>` for the n-th box of a detector or LLM run,
|
|
26611
|
+
* and anything unique for an operator-drawn box (`operator:<n>`). Re-derived
|
|
26612
|
+
* pipeline boxes carry the same ref every time, which is what lets a dismissal
|
|
26613
|
+
* stay dismissed.
|
|
26614
|
+
*/
|
|
26615
|
+
var RetrainOriginSchema = object({
|
|
26616
|
+
source: RetrainAnnotationSourceSchema,
|
|
26617
|
+
ref: string().min(1),
|
|
26618
|
+
bbox: RetrainBboxSchema,
|
|
26619
|
+
macroClass: RetrainMacroClassSchema,
|
|
26620
|
+
label: string().optional(),
|
|
26621
|
+
score: number().optional(),
|
|
26622
|
+
modelId: string().optional()
|
|
26623
|
+
});
|
|
26624
|
+
/**
|
|
26625
|
+
* A proposal the operator deleted. Durable on the frame, so a deleted pipeline
|
|
26626
|
+
* box does not come back as a draft every time the frame is reopened, and so
|
|
26627
|
+
* the deletion itself is a recorded fact rather than an absence.
|
|
26628
|
+
*/
|
|
26629
|
+
var RetrainDismissedSchema = object({
|
|
26630
|
+
ref: string().min(1),
|
|
26631
|
+
snapshot: RetrainOriginSchema
|
|
26632
|
+
});
|
|
26633
|
+
/** What the operator did with a proposal (see `retrain-review.ts`). */
|
|
26634
|
+
var RetrainReviewStatusSchema = _enum(RETRAIN_REVIEW_STATUSES);
|
|
26635
|
+
var RetrainFrameReviewSchema = object({
|
|
26636
|
+
boxes: array(object({
|
|
26637
|
+
ref: string(),
|
|
26638
|
+
savedId: string().optional(),
|
|
26639
|
+
status: RetrainReviewStatusSchema,
|
|
26640
|
+
/** The baseline was re-derived, not snapshotted (a pre-origin row). */
|
|
26641
|
+
approximate: boolean(),
|
|
26642
|
+
origin: RetrainOriginSchema.optional(),
|
|
26643
|
+
/** The class / label the box carries NOW (a removed box: its origin's). Absent on an older hub. */
|
|
26644
|
+
macroClass: RetrainMacroClassSchema.optional(),
|
|
26645
|
+
label: string().optional(),
|
|
26646
|
+
iou: number().optional()
|
|
26647
|
+
})).readonly(),
|
|
26648
|
+
summary: object({
|
|
26649
|
+
counts: record(RetrainReviewStatusSchema, number().int()),
|
|
26650
|
+
total: number().int(),
|
|
26651
|
+
changed: number().int(),
|
|
26652
|
+
approximate: boolean()
|
|
26653
|
+
})
|
|
26654
|
+
});
|
|
26655
|
+
/**
|
|
26369
26656
|
* One annotated subject.
|
|
26370
26657
|
*
|
|
26371
26658
|
* `bbox` is normalised against the full frame, ALWAYS. The per-model shapes
|
|
@@ -26389,6 +26676,9 @@ var RetrainAnnotationSchema = object({
|
|
|
26389
26676
|
/** Which model proposed this box — or, on a `model_error`, drew the phantom. */
|
|
26390
26677
|
assistModelId: string().optional(),
|
|
26391
26678
|
assistScore: number().optional(),
|
|
26679
|
+
/** The proposal this box started from, snapshotted at accept time. `null` on
|
|
26680
|
+
* a row saved before origins existed; absent on a draft nobody snapshotted. */
|
|
26681
|
+
origin: RetrainOriginSchema.nullable().optional(),
|
|
26392
26682
|
exportedInBatch: string().optional(),
|
|
26393
26683
|
createdAt: number()
|
|
26394
26684
|
});
|
|
@@ -26481,7 +26771,19 @@ var RetrainFrameSchema = object({
|
|
|
26481
26771
|
* empty when nothing the track store holds can be placed on it. */
|
|
26482
26772
|
pipelineBoxes: array(RetrainPipelineBoxSchema).readonly().optional(),
|
|
26483
26773
|
/** The named collections this frame belongs to. Present on list answers. */
|
|
26484
|
-
collectionIds: array(string()).readonly().optional()
|
|
26774
|
+
collectionIds: array(string()).readonly().optional(),
|
|
26775
|
+
/** Bumped by every annotation save. A save that names a stale
|
|
26776
|
+
* `expectedRevision` is refused, so two surfaces cannot overwrite each other. */
|
|
26777
|
+
revision: number().int().optional(),
|
|
26778
|
+
/** Proposals the operator deleted — never re-seeded as drafts. */
|
|
26779
|
+
dismissed: array(RetrainDismissedSchema).readonly().optional(),
|
|
26780
|
+
/** What the operator did with the proposals, computed by the server. */
|
|
26781
|
+
review: RetrainFrameReviewSchema.optional(),
|
|
26782
|
+
/** The frame's pixels over the admin data plane (full size). Fetch with the
|
|
26783
|
+
* admin bearer token; relative to the hub root. */
|
|
26784
|
+
imageUrl: string().optional(),
|
|
26785
|
+
/** The same, as a ~480 px thumbnail for grids. */
|
|
26786
|
+
thumbnailUrl: string().optional()
|
|
26485
26787
|
});
|
|
26486
26788
|
/** Why a copy-on-select could not be honoured — named, never a silent skip. */
|
|
26487
26789
|
var RetrainCopyRefusalSchema = _enum([
|
|
@@ -28048,6 +28350,11 @@ var pipelineAnalyticsCapability = {
|
|
|
28048
28350
|
/**
|
|
28049
28351
|
* The pixels of ONE copied frame, base64.
|
|
28050
28352
|
*
|
|
28353
|
+
* @deprecated Use `RetrainFrame.imageUrl` / `thumbnailUrl` (the admin
|
|
28354
|
+
* `retrain-frame` data plane, D613). A base64 envelope holds the frame
|
|
28355
|
+
* whole in the producer AND the caller, and a grid of tiles paid that for
|
|
28356
|
+
* every tile. Kept for one release for callers that cannot fetch a URL.
|
|
28357
|
+
*
|
|
28051
28358
|
* Through the cap rather than a data plane because it is genuinely one
|
|
28052
28359
|
* frame at a time, on demand, at human speed — the shape D9/D18 permit
|
|
28053
28360
|
* (what they forbid is frames crossing a boundary at frame RATE). The
|
|
@@ -28110,18 +28417,59 @@ var pipelineAnalyticsCapability = {
|
|
|
28110
28417
|
* Refuses a macro class typed into `label` or `subLabel` — the tiers are
|
|
28111
28418
|
* separate and the guard is at the WRITE, because a mixed taxonomy cannot
|
|
28112
28419
|
* be un-mixed by reading it.
|
|
28420
|
+
*
|
|
28421
|
+
* ATOMIC and REVISIONED: the replaced rows, the frame's `dismissed` set and
|
|
28422
|
+
* its `revision` move in one transaction, guarded by the revision the
|
|
28423
|
+
* caller saw. A stale `expectedRevision` writes nothing and throws
|
|
28424
|
+
* `retrain-revision-conflict` (parse it with `parseRetrainRevisionConflict`);
|
|
28425
|
+
* the UI and an MCP agent no longer overwrite each other silently.
|
|
28113
28426
|
*/
|
|
28114
28427
|
saveRetrainAnnotations: method(object({
|
|
28115
28428
|
deviceId: number(),
|
|
28116
28429
|
/** The frame's track, when it has one — checked against the frame. */
|
|
28117
28430
|
trackId: string().optional(),
|
|
28118
28431
|
frameId: string(),
|
|
28119
|
-
annotations: array(RetrainAnnotationDraftSchema)
|
|
28432
|
+
annotations: array(RetrainAnnotationDraftSchema),
|
|
28433
|
+
/** The frame's `revision` the caller saw. A different current revision
|
|
28434
|
+
* refuses the save with a `retrain-revision-conflict` error
|
|
28435
|
+
* (`parseRetrainRevisionConflict`). Absent ⇒ last write wins. */
|
|
28436
|
+
expectedRevision: number().int().optional(),
|
|
28437
|
+
/** The proposals the operator deleted. Absent ⇒ keep the frame's
|
|
28438
|
+
* current set; present ⇒ replace it (an empty array un-dismisses). */
|
|
28439
|
+
dismissed: array(RetrainDismissedSchema).optional()
|
|
28120
28440
|
}), array(RetrainAnnotationSchema).readonly(), {
|
|
28121
28441
|
kind: "mutation",
|
|
28122
28442
|
auth: "admin"
|
|
28123
28443
|
}),
|
|
28124
28444
|
/**
|
|
28445
|
+
* Give annotations saved BEFORE origins existed the origin a caller
|
|
28446
|
+
* reconstructed for them (the MCP `track_review_backfill_origin` tool
|
|
28447
|
+
* matches each row to the pipeline box it equals).
|
|
28448
|
+
*
|
|
28449
|
+
* Writes `origin` and nothing else: ids, creation time and the export stamp
|
|
28450
|
+
* are untouched (a re-save through `saveRetrainAnnotations` would reset all
|
|
28451
|
+
* three). A row that already has an origin is SKIPPED — a snapshot taken at
|
|
28452
|
+
* accept time is evidence, a reconstruction is a guess. Atomic and
|
|
28453
|
+
* revision-guarded like the save; bumps the frame's `revision`.
|
|
28454
|
+
*/
|
|
28455
|
+
backfillRetrainOrigins: method(object({
|
|
28456
|
+
deviceId: number(),
|
|
28457
|
+
trackId: string().optional(),
|
|
28458
|
+
frameId: string(),
|
|
28459
|
+
expectedRevision: number().int().optional(),
|
|
28460
|
+
origins: array(object({
|
|
28461
|
+
annotationId: string(),
|
|
28462
|
+
origin: RetrainOriginSchema
|
|
28463
|
+
})).min(1).max(500)
|
|
28464
|
+
}), object({
|
|
28465
|
+
updated: number().int(),
|
|
28466
|
+
skipped: number().int(),
|
|
28467
|
+
revision: number().int()
|
|
28468
|
+
}), {
|
|
28469
|
+
kind: "mutation",
|
|
28470
|
+
auth: "admin"
|
|
28471
|
+
}),
|
|
28472
|
+
/**
|
|
28125
28473
|
* Finish with a track: `staging → trained`. **The only writer of that
|
|
28126
28474
|
* state** — D81 shipped the column with it deliberately unreachable.
|
|
28127
28475
|
*
|
|
@@ -48702,6 +49050,12 @@ Object.freeze({
|
|
|
48702
49050
|
addonId: null,
|
|
48703
49051
|
access: "create"
|
|
48704
49052
|
},
|
|
49053
|
+
"dataStoreProvider.transact": {
|
|
49054
|
+
capName: "data-store-provider",
|
|
49055
|
+
capScope: "system",
|
|
49056
|
+
addonId: null,
|
|
49057
|
+
access: "create"
|
|
49058
|
+
},
|
|
48705
49059
|
"dataStoreProvider.update": {
|
|
48706
49060
|
capName: "data-store-provider",
|
|
48707
49061
|
capScope: "system",
|
|
@@ -51546,6 +51900,12 @@ Object.freeze({
|
|
|
51546
51900
|
addonId: null,
|
|
51547
51901
|
access: "create"
|
|
51548
51902
|
},
|
|
51903
|
+
"pipelineAnalytics.backfillRetrainOrigins": {
|
|
51904
|
+
capName: "pipeline-analytics",
|
|
51905
|
+
capScope: "device",
|
|
51906
|
+
addonId: null,
|
|
51907
|
+
access: "create"
|
|
51908
|
+
},
|
|
51549
51909
|
"pipelineAnalytics.cancelRelocateMedia": {
|
|
51550
51910
|
capName: "pipeline-analytics",
|
|
51551
51911
|
capScope: "device",
|
|
@@ -53538,6 +53898,12 @@ Object.freeze({
|
|
|
53538
53898
|
addonId: null,
|
|
53539
53899
|
access: "create"
|
|
53540
53900
|
},
|
|
53901
|
+
"settingsStore.transact": {
|
|
53902
|
+
capName: "settings-store",
|
|
53903
|
+
capScope: "system",
|
|
53904
|
+
addonId: null,
|
|
53905
|
+
access: "create"
|
|
53906
|
+
},
|
|
53541
53907
|
"settingsStore.update": {
|
|
53542
53908
|
capName: "settings-store",
|
|
53543
53909
|
capScope: "system",
|
|
@@ -57864,6 +58230,11 @@ Object.freeze({
|
|
|
57864
58230
|
form: "single",
|
|
57865
58231
|
optional: false
|
|
57866
58232
|
}],
|
|
58233
|
+
"pipelineAnalytics.backfillRetrainOrigins": [{
|
|
58234
|
+
name: "deviceId",
|
|
58235
|
+
form: "single",
|
|
58236
|
+
optional: false
|
|
58237
|
+
}],
|
|
57867
58238
|
"pipelineAnalytics.clearTrackRelation": [{
|
|
57868
58239
|
name: "deviceId",
|
|
57869
58240
|
form: "single",
|
|
@@ -63143,4 +63514,4 @@ function buildClipModelRegistry(entries) {
|
|
|
63143
63514
|
/** The built-in catalog's registry. */
|
|
63144
63515
|
var BUILTIN_CLIP_MODELS = buildClipModelRegistry(CLIP_IMAGE_MODELS);
|
|
63145
63516
|
//#endregion
|
|
63146
|
-
export { NC_ALARM_DEFAULT_PROFILE_ID as $,
|
|
63517
|
+
export { NC_ALARM_DEFAULT_PROFILE_ID as $, embeddingEncoderCapability as $n, sceneMonitorCapability as $r, RECORDING_EXPORT_MAX_READ_BYTES as $t, EMBEDDING_MODEL_FAILED as A, nodePin as Ai, alarmDeviceSecureOnArm as An, mayWriteToLocation as Ar, NcConditionsSchema as At, LABEL_SUPPLY_MACRO as B, number as Bi, buildViewerLink as Bn, renameAlarmProfile as Br, NcSharedSequenceSchema as Bt, DEFAULT_DETAIL_CROP_CONVENTION as C, BaseAddon as Ci, TrackPuritySchema as Cn, isRootSuppliableStepId as Cr, NC_TEMPLATE_VARS as Ct, DETECTION_PIPELINE_CAP_NAME as D, defineCustomActions as Di, TrackSourceSchema as Dn, isVectorIndexDimConflict as Dr, NcAlarmSensorsSchema as Dt, DETECTION_MACRO_CLASSES as E, customAction as Ei, TrackSideSchema as En, isSystemEventSummaryRule as Er, NcAlarmSensorsInputSchema as Et, EVENT_OWNER_TYPES as F, array as Fi, applySecureOnArmEdit as Fn, pipelineAnalyticsCapability as Fr, NcRulePatchSchema as Ft, MAX_ARCHIVED_DEBUG_NOTES as G, string as Gi, cosineSimilarity as Gn, resolvePoolMemoryPolicy as Gr, NcSystemEventKindSchema as Gt, ListTrackRelationsInputSchema as H, partialRecord as Hi, cloneAlarmSettings as Hn, resolveLocationMode as Hr, NcSnoozeSchema as Ht, EXPORT_DENSE_MAX_RANGES as I, boolean as Ii, assertTimelapseCadences as In, plateGalleryCapability as Ir, NcRuleSchema as It, MAX_TRACK_PURITIES as J, union as Ji, deriveDetailCropRect as Jn, ruleAutoTriggersAlarm as Jr, NcTemplatePreviewSchema as Jt, MAX_BIRTH_DECISION_RECORDS as K, templateLiteral as Ki, createAlarmProfile as Kn, retrainRevisionConflictMessage as Kr, NcTaxonomySchema as Kt, FIRST_LEVEL_MACRO_CLASSES as L, discriminatedUnion as Li, audioMetricsCapability as Ln, readDeviceStateFrom as Lr, NcRuleTargetSchema as Lt, EMBEDDING_REQUIREMENTS_UNAVAILABLE as M, sleep as Mi, applyBlockingEdit as Mn, notificationRulesCapability as Mr, NcRuleActionSchema as Mt, EVENT_DENSITY_BATCH_MAX as N, ZodObject as Ni, applyModeDelaysEdits as Nn, occupancyScope as Nr, NcRuleActionsSchema as Nt, DeclaredDevices as O, hydrateSchema as Oi, activateAlarmProfile as On, kebabToCamel as Or, NcAlarmSettingsPatchSchema as Ot, EVENT_KIND_BY_CAP as P, _enum as Pi, applyNonBlockingEdit as Pn, parseProcStatus as Pr, NcRuleInputSchema as Pt, MotionTriggeredBySchema as Q, describeSystemEventFamilyProblem as Qn, ruleKindOf as Qr, PoolMemoryWatchdog as Qt, FULL_IMAGE_BBOX as R, literal as Ri, audioModeOf as Rn, readMotionTriggeredBy as Rr, NcRuleUpdateInputSchema as Rt, CoverStateSchema as S, errMsg as Si, TimelapseRuleSchema as Sn, isRetiredClearKey as Sr, NC_TAXONOMY as St, DEFAULT_TIMELAPSE_PREVIEW_TEXT as T, createEvent as Ti, TrackRelationSchema as Tn, isSystemDelivery as Tr, NcAlarmPostTriggeredActionSchema as Tt, ListTrackRelationsResultSchema as U, record as Ui, consumableLowPercentOf as Un, resolveModeDelays as Ur, NcSnoozeSuppressedSchema as Ut, LabelAttributionSchema as V, object as Vi, classifyRetrainReview as Vn, resolveClipSearchMinScore as Vr, NcSnoozeInputSchema as Vt, LockStateSchema as W, strictObject as Wi, coreBlockIdFromAddonId as Wn, resolveModeNotifyPolicy as Wr, NcStateSummarySectionIdSchema as Wt, MOTION_CLOSE_AFTER_MS as X, EventCategory as Xi, deriveRecordingMode as Xn, ruleDeviceCompatCapQueries as Xr, OPS_LOG_DEFAULT_LIMIT as Xt, MAX_TRACK_RELATIONS as Y, unknown as Yi, derivePostTriggeredAction as Yn, ruleBelongsToAlarm as Yr, NcTemplateVarDescriptorSchema as Yt, MediaFileKindEnum as Z, describeSystemEventDeliveryProblem as Zn, ruleGroupingApplies as Zr, OpsLogEntrySchema as Zt, BaseDevice as _, DEFAULT_FIRST_SIGHTING_FRESHNESS_MS as _i, SetTrackRelationInputSchema as _n, isEventKindLabelKey as _r, NC_GROUPING_MIN_SEC as _t, CLIP_EMBEDDING_STEP_ID as a, summarizeReview as ai, SCENE_CONFIRM_DEFAULT_MAX_IMAGE_PX as an, ensureAlarmProfiles as ar, NC_ALARM_TRIGGERED_MAX_SEC as at, ClearTrackRelationInputSchema as b, isSourceCap as bi, TimelapseRuleInputSchema as bn, isLabelSupplyStepId as br, NC_SYSTEM_EVENT_KIND_GROUP_SPECS as bt, resolveClusterModelPin as c, systemEventFamilyProblems as ci, SCENE_DEFAULT_CHECK_INTERVAL_SEC as cn, faceGalleryCapability as cr, NC_CLIP_POST_ROLL_DEFAULT_SEC as ct, APPEARANCE_RESOLVES_AMBIGUITY_DEFAULT as d, systemEventSummarySplitOf as di, SCENE_DEFAULT_UNCOVERED_POLICY as dn, gifFromMp4Args as dr, NC_CONDITION_CATALOG as dt, secureActuationFor as ei, RECORDING_SOURCE_CAMSTACK_ADDON as en, embeddingModelFailedError as er, NC_ALARM_DEFAULT_TRIGGERED_DURATION_SEC as et, ARCHIVED_DEBUG_NOTES_DEFAULT_LIMIT as f, templateCarriesSummary as fi, SCENE_DIVERGED as fn, isAlarmControllableCap as fr, NC_CONSUMABLE_LOW_PERCENT_DEFAULT as ft, BIRTH_DECISION_DEFAULT_LIMIT as g, zoneAnalyticsCapability as gi, SetTrackPurityResultSchema as gn, isDetectionMacroClass as gr, NC_GROUPING_MAX_SEC as gt, ArchivedDebugNoteSchema as h, viewerLinkBaseOf as hi, SetTrackPurityInputSchema as hn, isDefaultAlarmProfileId as hr, NC_GROUPING_DEFAULT_SEC as ht, CLIP_TEXT_MODELS as i, subKindsOf as ii, RetrainStatusSchema as in, encodeVectorBase64 as ir, NC_ALARM_SYSTEM_EVENT_KINDS as it, EMBEDDING_REQUIREMENTS_FAILED as j, normalizeNodeId as ji, alarmPanelCapability as jn, memoizePinnedFfmpeg as jr, NcLegacyRuleActionSequenceSchema as jt, DetectionSourceSchema as k, isDeviceScopedCap as ki, addonWidgetsSourceCapability as kn, linkedStepOf as kr, NcConditionDescriptorSchema as kt, APPEARANCE_BIN_COUNT as l, systemEventFilterApplies as li, SCENE_DEFAULT_OBSERVATION_SPACING_SEC as ln, failureContributionCapability as lr, NC_CLIP_PRE_ROLL_DEFAULT_SEC as lt, AlarmArmModeSchema as m, vectorDimFromBase64 as mi, SceneMonitorSchema as mn, isAudioClassName as mr, NC_DEFAULT_SNOOZE_MINUTES as mt, DEFAULT_CLIP_MODEL as n, servedTemplateVars as ni, RetrainDismissedSchema as nn, embeddingRequirementsFailedError as nr, NC_ALARM_DELAY_MAX_SEC as nt, FACE_EMBEDDING_STEP_ID as o, syncActiveAlarmProfileSettings as oi, SCENE_CONFIRM_DEFAULT_TIMEOUT_MS as on, eventKindLabel as or, NC_AUDIO_CONFIRM_HITS_DEFAULT as ot, AUDIO_MACRO_LABELS as p, templateVarsFor as pi, SCENE_RESET_RECAPTURES as pn, isAppLinkBase as pr, NC_CONSUMABLE_SYSTEM_EVENT_KINDS as pt, MAX_BIRTH_LATENCY_PROXY_MS as q, tuple as qi, deleteAlarmProfile as qn, rootSupplyServes as qr, NcTemplatePreviewInputSchema as qt, CLIP_IMAGE_MODELS as r, storageOccupancyCapability as ri, RetrainOriginSchema as rn, embeddingRequirementsUnavailableError as rr, NC_ALARM_NOTIFY_FIELDS as rt, readClusterModelPinStrict as s, systemEventDeliveryProblems as si, SCENE_DEFAULT_ANCHOR_THRESHOLD as sn, evictionPolicyOfLocation as sr, NC_AUDIO_CONFIRM_WINDOW_SEC_DEFAULT as st, BUILTIN_CLIP_MODELS as t, sensorRaisedOf as ti, RebuildObjectEmbeddingsRefusalSchema as tn, embeddingRefusalOf as tr, NC_ALARM_DELAY_FIELDS as tt, APPEARANCE_BLOCKS as u, systemEventSummaryScheduleOf as ui, SCENE_DEFAULT_QUIET_SECONDS as un, gifDeriveSpeed as ur, NC_CLIP_RETENTION_MAX_SEC as ut, BirthDecisionRecordSchema as v, canonicalHash as vi, TIMELAPSE_DENSE_FLOOR_SEC as vn, isEventOwnerType as vr, NC_SENSOR_TRANSITION_KINDS as vt, DEFAULT_EVENT_COLOR as w, CamProfileSchema as wi, TrackRelationKindSchema as wn, isScheduleActive as wr, NcAlarmConfigSchema as wt, ClearTrackRelationResultSchema as x, DeviceType as xi, TimelapseRulePatchSchema as xn, isMediaOwnerType as xr, NC_TANK_SYSTEM_EVENT_KINDS as xt, COCO_TO_MACRO as y, evaluateSensorEdge as yi, TRACK_RELATIONS_DEFAULT_LIMIT as yn, isKnownTemplateVar as yr, NC_SNOOZE_MAX_MINUTES as yt, FailureCounters as z, looseObject as zi, buildEventKindDescriptor as zn, readTimelapseGeneratedAt as zr, NcScheduleSchema as zt };
|