@camstack/addon-post-analysis 1.2.122 → 1.2.123
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/{dist-CsMG-R4E.mjs → dist-Cplsn5Hc.mjs} +26 -4
- package/dist/{dist-jHCxxZ2_.js → dist-DaFae0Kv.js} +26 -4
- 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-u9dpdQPa.mjs → _virtual_mf-localSharedImportMap___mfe_internal__addon_pipeline_analytics_widgets-BlrCc0Y5.mjs} +1 -1
- package/dist/pipeline-analytics/{hostInit-nR5c9hhI.mjs → hostInit-CA0ufnH-.mjs} +1 -1
- package/dist/pipeline-analytics/index.js +13 -3
- package/dist/pipeline-analytics/index.mjs +13 -3
- package/dist/pipeline-analytics/remoteEntry.js +1 -1
- package/package.json +1 -1
|
@@ -27142,8 +27142,10 @@ var PlateInfoSchema = object({
|
|
|
27142
27142
|
keyFrameMediaKey: string().optional(),
|
|
27143
27143
|
base64: string().optional(),
|
|
27144
27144
|
/**
|
|
27145
|
-
* Same crop as a data-plane URL
|
|
27146
|
-
* never inlines JPEG; `listPlates`
|
|
27145
|
+
* Same crop as a data-plane URL, always present when the plate has a stored
|
|
27146
|
+
* crop. `getPlateByTrack` returns this and never inlines JPEG; `listPlates`
|
|
27147
|
+
* and `searchPlates` inline the crop only when their `includeCrops` input is
|
|
27148
|
+
* left at its `true` default.
|
|
27147
27149
|
*/
|
|
27148
27150
|
cropUrl: string().optional()
|
|
27149
27151
|
});
|
|
@@ -27176,7 +27178,25 @@ var plateGalleryCapability = {
|
|
|
27176
27178
|
methods: {
|
|
27177
27179
|
listPlates: method(object({
|
|
27178
27180
|
deviceId: number().int().optional(),
|
|
27179
|
-
limit: number().int().positive().optional()
|
|
27181
|
+
limit: number().int().positive().optional(),
|
|
27182
|
+
/**
|
|
27183
|
+
* Inline the base64 crop on every row. Default `true` — the existing
|
|
27184
|
+
* behaviour, kept so no caller breaks.
|
|
27185
|
+
*
|
|
27186
|
+
* Set `false` once the caller renders {@link PlateInfo.cropUrl}.
|
|
27187
|
+
* Measured on the live hub at the 500 rows the Plates view asks for:
|
|
27188
|
+
* 879,403 B and 27.7 s with the crops inline, against a few KiB of
|
|
27189
|
+
* metadata without them — and the browser then caches the images.
|
|
27190
|
+
*
|
|
27191
|
+
* This is the plate twin of `faceGallery.listRecentFaces`'s option;
|
|
27192
|
+
* plates were the one gallery list left without it.
|
|
27193
|
+
*
|
|
27194
|
+
* **This is an INPUT field, so it does not reach the addon until the
|
|
27195
|
+
* next train.** The hub router validates cap inputs against its own
|
|
27196
|
+
* compiled Zod and strips a key it does not know. Until the train
|
|
27197
|
+
* ships, sending `false` is harmless and keeps the crops inline.
|
|
27198
|
+
*/
|
|
27199
|
+
includeCrops: boolean().optional()
|
|
27180
27200
|
}).optional(), array(PlateInfoSchema).readonly()),
|
|
27181
27201
|
getPlateByTrack: method(object({
|
|
27182
27202
|
deviceId: number().int(),
|
|
@@ -27187,7 +27207,9 @@ var plateGalleryCapability = {
|
|
|
27187
27207
|
searchPlates: method(object({
|
|
27188
27208
|
text: string().min(1),
|
|
27189
27209
|
maxDistance: number().int().min(0).optional(),
|
|
27190
|
-
limit: number().int().positive().optional()
|
|
27210
|
+
limit: number().int().positive().optional(),
|
|
27211
|
+
/** See `listPlates.includeCrops`. Default `true`. */
|
|
27212
|
+
includeCrops: boolean().optional()
|
|
27191
27213
|
}), array(PlateInfoSchema).readonly()),
|
|
27192
27214
|
/** Suggest groups of near-identical reads (same physical plate) for review/merge. */
|
|
27193
27215
|
suggestPlateClusters: method(object({
|
|
@@ -27173,8 +27173,10 @@ var PlateInfoSchema = object({
|
|
|
27173
27173
|
keyFrameMediaKey: string().optional(),
|
|
27174
27174
|
base64: string().optional(),
|
|
27175
27175
|
/**
|
|
27176
|
-
* Same crop as a data-plane URL
|
|
27177
|
-
* never inlines JPEG; `listPlates`
|
|
27176
|
+
* Same crop as a data-plane URL, always present when the plate has a stored
|
|
27177
|
+
* crop. `getPlateByTrack` returns this and never inlines JPEG; `listPlates`
|
|
27178
|
+
* and `searchPlates` inline the crop only when their `includeCrops` input is
|
|
27179
|
+
* left at its `true` default.
|
|
27178
27180
|
*/
|
|
27179
27181
|
cropUrl: string().optional()
|
|
27180
27182
|
});
|
|
@@ -27207,7 +27209,25 @@ var plateGalleryCapability = {
|
|
|
27207
27209
|
methods: {
|
|
27208
27210
|
listPlates: method(object({
|
|
27209
27211
|
deviceId: number().int().optional(),
|
|
27210
|
-
limit: number().int().positive().optional()
|
|
27212
|
+
limit: number().int().positive().optional(),
|
|
27213
|
+
/**
|
|
27214
|
+
* Inline the base64 crop on every row. Default `true` — the existing
|
|
27215
|
+
* behaviour, kept so no caller breaks.
|
|
27216
|
+
*
|
|
27217
|
+
* Set `false` once the caller renders {@link PlateInfo.cropUrl}.
|
|
27218
|
+
* Measured on the live hub at the 500 rows the Plates view asks for:
|
|
27219
|
+
* 879,403 B and 27.7 s with the crops inline, against a few KiB of
|
|
27220
|
+
* metadata without them — and the browser then caches the images.
|
|
27221
|
+
*
|
|
27222
|
+
* This is the plate twin of `faceGallery.listRecentFaces`'s option;
|
|
27223
|
+
* plates were the one gallery list left without it.
|
|
27224
|
+
*
|
|
27225
|
+
* **This is an INPUT field, so it does not reach the addon until the
|
|
27226
|
+
* next train.** The hub router validates cap inputs against its own
|
|
27227
|
+
* compiled Zod and strips a key it does not know. Until the train
|
|
27228
|
+
* ships, sending `false` is harmless and keeps the crops inline.
|
|
27229
|
+
*/
|
|
27230
|
+
includeCrops: boolean().optional()
|
|
27211
27231
|
}).optional(), array(PlateInfoSchema).readonly()),
|
|
27212
27232
|
getPlateByTrack: method(object({
|
|
27213
27233
|
deviceId: number().int(),
|
|
@@ -27218,7 +27238,9 @@ var plateGalleryCapability = {
|
|
|
27218
27238
|
searchPlates: method(object({
|
|
27219
27239
|
text: string().min(1),
|
|
27220
27240
|
maxDistance: number().int().min(0).optional(),
|
|
27221
|
-
limit: number().int().positive().optional()
|
|
27241
|
+
limit: number().int().positive().optional(),
|
|
27242
|
+
/** See `listPlates.includeCrops`. Default `true`. */
|
|
27243
|
+
includeCrops: boolean().optional()
|
|
27222
27244
|
}), array(PlateInfoSchema).readonly()),
|
|
27223
27245
|
/** Suggest groups of near-identical reads (same physical plate) for review/merge. */
|
|
27224
27246
|
suggestPlateClusters: method(object({
|
|
@@ -2,7 +2,7 @@ Object.defineProperties(exports, {
|
|
|
2
2
|
__esModule: { value: true },
|
|
3
3
|
[Symbol.toStringTag]: { value: "Module" }
|
|
4
4
|
});
|
|
5
|
-
const require_dist = require("../dist-
|
|
5
|
+
const require_dist = require("../dist-DaFae0Kv.js");
|
|
6
6
|
let node_fs = require("node:fs");
|
|
7
7
|
let node_fs$1 = require_dist.__toESM(node_fs, 1);
|
|
8
8
|
node_fs = require_dist.__toESM(node_fs);
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { M as PoolMemoryWatchdog, at as hfModelUrl, gt as resolvePoolMemoryPolicy, nt as embeddingEncoderCapability, ut as parseProcStatus, wt as BaseAddon } from "../dist-
|
|
1
|
+
import { M as PoolMemoryWatchdog, at as hfModelUrl, gt as resolvePoolMemoryPolicy, nt as embeddingEncoderCapability, ut as parseProcStatus, wt as BaseAddon } from "../dist-Cplsn5Hc.mjs";
|
|
2
2
|
import { createRequire } from "node:module";
|
|
3
3
|
import * as fs from "node:fs";
|
|
4
4
|
import "node:fs";
|
|
@@ -2,7 +2,7 @@ Object.defineProperties(exports, {
|
|
|
2
2
|
__esModule: { value: true },
|
|
3
3
|
[Symbol.toStringTag]: { value: "Module" }
|
|
4
4
|
});
|
|
5
|
-
const require_dist = require("../dist-
|
|
5
|
+
const require_dist = require("../dist-DaFae0Kv.js");
|
|
6
6
|
let node_fs = require("node:fs");
|
|
7
7
|
node_fs = require_dist.__toESM(node_fs, 1);
|
|
8
8
|
let node_path = require("node:path");
|
|
@@ -30891,13 +30891,22 @@ var PlateGalleryProvider = class {
|
|
|
30891
30891
|
const vehicles = await this.vehicleStore.listVehicles();
|
|
30892
30892
|
return new Map(vehicles.map((v) => [v.id, v.name]));
|
|
30893
30893
|
}
|
|
30894
|
+
/**
|
|
30895
|
+
* `includeCrops` defaults to `true` — the pre-existing behaviour, kept so no
|
|
30896
|
+
* caller loses its images. Pass `false` once the caller renders
|
|
30897
|
+
* {@link PlateInfo.cropUrl}: measured on the live hub at the 500 rows the
|
|
30898
|
+
* Plates view asks for, the inline crops are 879,403 B and 27.7 s, against a
|
|
30899
|
+
* few KiB of metadata without them. This is the plate twin of
|
|
30900
|
+
* `faceGallery.listRecentFaces`'s option, which shipped first.
|
|
30901
|
+
*/
|
|
30894
30902
|
async listPlates(input) {
|
|
30895
30903
|
const rows = await this.plateStore.listRecentPlates({
|
|
30896
30904
|
...input?.deviceId !== void 0 ? { deviceId: input.deviceId } : {},
|
|
30897
30905
|
...input?.limit !== void 0 ? { limit: input.limit } : {}
|
|
30898
30906
|
});
|
|
30899
30907
|
const nameMap = await this.vehicleNameMap();
|
|
30900
|
-
|
|
30908
|
+
const includeCrops = input?.includeCrops ?? true;
|
|
30909
|
+
return Promise.all(rows.map((p) => this.toPlateInfo(p, nameMap, { includeCrops })));
|
|
30901
30910
|
}
|
|
30902
30911
|
async getPlateByTrack(input) {
|
|
30903
30912
|
const plate = await this.plateStore.get(`plate-${input.trackId}`);
|
|
@@ -30922,7 +30931,8 @@ var PlateGalleryProvider = class {
|
|
|
30922
30931
|
})).filter((x) => x.dist <= maxDistance).toSorted((a, b) => a.dist - b.dist || b.p.timestamp - a.p.timestamp);
|
|
30923
30932
|
const limited = input.limit !== void 0 ? scored.slice(0, input.limit) : scored;
|
|
30924
30933
|
const nameMap = await this.vehicleNameMap();
|
|
30925
|
-
|
|
30934
|
+
const includeCrops = input.includeCrops ?? true;
|
|
30935
|
+
return Promise.all(limited.map((x) => this.toPlateInfo(x.p, nameMap, { includeCrops })));
|
|
30926
30936
|
}
|
|
30927
30937
|
async suggestPlateClusters(input) {
|
|
30928
30938
|
const maxDistance = input?.maxDistance ?? 1;
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { $ as customAction, A as NcTaxonomySchema, At as sleep, B as TIMELAPSE_DENSE_FLOOR_SEC, Bt as string, C as NcRuleSchema, Ct as errMsg, D as NcSnoozeSchema, Dt as hydrateSchema, E as NcSnoozeInputSchema, Et as createEvent, Ft as literal, G as VISIT_MERGE_GAP_MS, H as TimelapseRulePatchSchema, Ht as EventCategory, I as SCENE_DEFAULT_ANCHOR_THRESHOLD, It as number, J as assertTimelapseCadences, K as addonWidgetsSourceCapability, L as SCENE_DEFAULT_UNCOVERED_POLICY, Lt as object, Mt as array, N as RECORDING_EXPORT_MAX_READ_BYTES, Nt as boolean, O as NcSnoozeSuppressedSchema, Ot as isDeviceScopedCap, P as RetrainStatusSchema, Pt as discriminatedUnion, Q as cosineSimilarity$1, R as SCENE_DIVERGED, Rt as partialRecord, S as NcRulePatchSchema, St as zoneAnalyticsCapability, T as NcScheduleSchema, Tt as DeviceType, U as TimelapseRuleSchema, V as TimelapseRuleInputSchema, Vt as unknown, W as TrackSourceSchema, X as audioModeOf, Y as audioMetricsCapability, Z as buildEventKindDescriptor, _ as NC_DEFAULT_SNOOZE_MINUTES, _t as sceneMonitorCapability, a as DEFAULT_EVENT_COLOR, b as NcConditionDescriptorSchema, bt as vectorDimFromBase64, ct as kebabToCamel, d as EVENT_PAD_MS, dt as pickClusterStepModels, et as defineCustomActions, f as FULL_IMAGE_BBOX, ft as pipelineAnalyticsCapability, g as NC_CONDITION_CATALOG, h as NC_ALARM_SYSTEM_EVENT_KINDS, ht as readTimelapseGeneratedAt, i as CLUSTER_MODEL_SCOPED_STEPS, it as faceGalleryCapability, j as OpsLogEntrySchema, jt as _enum, k as NcSystemEventKindSchema, kt as nodePin, l as DeclaredDevices, lt as notificationRulesCapability, m as MACRO_LABELS, mt as readDeviceStateFrom, n as AnalyticsGroupRecordSchema, ot as isDetectionMacroClass, p as LabelAttributionSchema, pt as plateGalleryCapability, q as alarmPanelCapability, r as BaseDevice, rt as encodeVectorBase64, s as DETECTION_MACRO_CLASSES, st as isScheduleActive, t as AnalyticsGroupDetailSchema, tt as deriveRecordingMode, u as EVENT_KIND_BY_CAP, vt as subKindsOf, w as NcRuleTargetSchema, wt as BaseAddon, x as NcRuleInputSchema, xt as videoclipsCapability, y as NC_TAXONOMY, yt as systemEventFilterApplies, z as SceneMonitorSchema, zt as record } from "../dist-
|
|
1
|
+
import { $ as customAction, A as NcTaxonomySchema, At as sleep, B as TIMELAPSE_DENSE_FLOOR_SEC, Bt as string, C as NcRuleSchema, Ct as errMsg, D as NcSnoozeSchema, Dt as hydrateSchema, E as NcSnoozeInputSchema, Et as createEvent, Ft as literal, G as VISIT_MERGE_GAP_MS, H as TimelapseRulePatchSchema, Ht as EventCategory, I as SCENE_DEFAULT_ANCHOR_THRESHOLD, It as number, J as assertTimelapseCadences, K as addonWidgetsSourceCapability, L as SCENE_DEFAULT_UNCOVERED_POLICY, Lt as object, Mt as array, N as RECORDING_EXPORT_MAX_READ_BYTES, Nt as boolean, O as NcSnoozeSuppressedSchema, Ot as isDeviceScopedCap, P as RetrainStatusSchema, Pt as discriminatedUnion, Q as cosineSimilarity$1, R as SCENE_DIVERGED, Rt as partialRecord, S as NcRulePatchSchema, St as zoneAnalyticsCapability, T as NcScheduleSchema, Tt as DeviceType, U as TimelapseRuleSchema, V as TimelapseRuleInputSchema, Vt as unknown, W as TrackSourceSchema, X as audioModeOf, Y as audioMetricsCapability, Z as buildEventKindDescriptor, _ as NC_DEFAULT_SNOOZE_MINUTES, _t as sceneMonitorCapability, a as DEFAULT_EVENT_COLOR, b as NcConditionDescriptorSchema, bt as vectorDimFromBase64, ct as kebabToCamel, d as EVENT_PAD_MS, dt as pickClusterStepModels, et as defineCustomActions, f as FULL_IMAGE_BBOX, ft as pipelineAnalyticsCapability, g as NC_CONDITION_CATALOG, h as NC_ALARM_SYSTEM_EVENT_KINDS, ht as readTimelapseGeneratedAt, i as CLUSTER_MODEL_SCOPED_STEPS, it as faceGalleryCapability, j as OpsLogEntrySchema, jt as _enum, k as NcSystemEventKindSchema, kt as nodePin, l as DeclaredDevices, lt as notificationRulesCapability, m as MACRO_LABELS, mt as readDeviceStateFrom, n as AnalyticsGroupRecordSchema, ot as isDetectionMacroClass, p as LabelAttributionSchema, pt as plateGalleryCapability, q as alarmPanelCapability, r as BaseDevice, rt as encodeVectorBase64, s as DETECTION_MACRO_CLASSES, st as isScheduleActive, t as AnalyticsGroupDetailSchema, tt as deriveRecordingMode, u as EVENT_KIND_BY_CAP, vt as subKindsOf, w as NcRuleTargetSchema, wt as BaseAddon, x as NcRuleInputSchema, xt as videoclipsCapability, y as NC_TAXONOMY, yt as systemEventFilterApplies, z as SceneMonitorSchema, zt as record } from "../dist-Cplsn5Hc.mjs";
|
|
2
2
|
import { t as __exportAll } from "../embedding-encoder/index.mjs";
|
|
3
3
|
import * as fs from "node:fs";
|
|
4
4
|
import { promises } from "node:fs";
|
|
@@ -30867,13 +30867,22 @@ var PlateGalleryProvider = class {
|
|
|
30867
30867
|
const vehicles = await this.vehicleStore.listVehicles();
|
|
30868
30868
|
return new Map(vehicles.map((v) => [v.id, v.name]));
|
|
30869
30869
|
}
|
|
30870
|
+
/**
|
|
30871
|
+
* `includeCrops` defaults to `true` — the pre-existing behaviour, kept so no
|
|
30872
|
+
* caller loses its images. Pass `false` once the caller renders
|
|
30873
|
+
* {@link PlateInfo.cropUrl}: measured on the live hub at the 500 rows the
|
|
30874
|
+
* Plates view asks for, the inline crops are 879,403 B and 27.7 s, against a
|
|
30875
|
+
* few KiB of metadata without them. This is the plate twin of
|
|
30876
|
+
* `faceGallery.listRecentFaces`'s option, which shipped first.
|
|
30877
|
+
*/
|
|
30870
30878
|
async listPlates(input) {
|
|
30871
30879
|
const rows = await this.plateStore.listRecentPlates({
|
|
30872
30880
|
...input?.deviceId !== void 0 ? { deviceId: input.deviceId } : {},
|
|
30873
30881
|
...input?.limit !== void 0 ? { limit: input.limit } : {}
|
|
30874
30882
|
});
|
|
30875
30883
|
const nameMap = await this.vehicleNameMap();
|
|
30876
|
-
|
|
30884
|
+
const includeCrops = input?.includeCrops ?? true;
|
|
30885
|
+
return Promise.all(rows.map((p) => this.toPlateInfo(p, nameMap, { includeCrops })));
|
|
30877
30886
|
}
|
|
30878
30887
|
async getPlateByTrack(input) {
|
|
30879
30888
|
const plate = await this.plateStore.get(`plate-${input.trackId}`);
|
|
@@ -30898,7 +30907,8 @@ var PlateGalleryProvider = class {
|
|
|
30898
30907
|
})).filter((x) => x.dist <= maxDistance).toSorted((a, b) => a.dist - b.dist || b.p.timestamp - a.p.timestamp);
|
|
30899
30908
|
const limited = input.limit !== void 0 ? scored.slice(0, input.limit) : scored;
|
|
30900
30909
|
const nameMap = await this.vehicleNameMap();
|
|
30901
|
-
|
|
30910
|
+
const includeCrops = input.includeCrops ?? true;
|
|
30911
|
+
return Promise.all(limited.map((x) => this.toPlateInfo(x.p, nameMap, { includeCrops })));
|
|
30902
30912
|
}
|
|
30903
30913
|
async suggestPlateClusters(input) {
|
|
30904
30914
|
const maxDistance = input?.maxDistance ?? 1;
|
|
@@ -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-BlrCc0Y5.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.123",
|
|
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",
|