@camstack/addon-post-analysis 1.1.32 → 1.1.33
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-CyyCe4TK.mjs → dist-CA0GikiM.mjs} +193 -5
- package/dist/{dist-DU_JRm-j.js → dist-V8XOHDoj.js} +198 -4
- package/dist/embedding-encoder/index.js +1 -1
- package/dist/embedding-encoder/index.mjs +1 -1
- package/dist/{node-K1C_KC3d.js → node-E-m2CYYM.js} +1 -1
- package/dist/pipeline-analytics/_stub.js +1 -1
- package/dist/pipeline-analytics/{_virtual_mf-localSharedImportMap___mfe_internal__addon_pipeline_analytics_widgets-aNR1K97R.mjs → _virtual_mf-localSharedImportMap___mfe_internal__addon_pipeline_analytics_widgets-BbAKLasA.mjs} +3 -3
- package/dist/pipeline-analytics/{_virtual_mf___mfe_internal__addon_pipeline_analytics_widgets__loadShare___mf_0_camstack_mf_1_ui_mf_2_library__loadShare__.js-D6C5R_2c.mjs → _virtual_mf___mfe_internal__addon_pipeline_analytics_widgets__loadShare___mf_0_camstack_mf_1_ui_mf_2_library__loadShare__.js-ai-NpPOn.mjs} +1 -1
- package/dist/pipeline-analytics/{hostInit-B3eluJsX.mjs → hostInit-lUENPwl7.mjs} +3 -3
- package/dist/pipeline-analytics/index.js +359 -3
- package/dist/pipeline-analytics/index.mjs +358 -2
- package/dist/pipeline-analytics/remoteEntry.js +1 -1
- package/package.json +1 -1
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
//#region ../types/dist/event-category-
|
|
1
|
+
//#region ../types/dist/event-category-D4HJq7Mw.mjs
|
|
2
2
|
var EventCategory = /* @__PURE__ */ function(EventCategory) {
|
|
3
3
|
EventCategory["SystemBoot"] = "system.boot";
|
|
4
4
|
EventCategory["SystemAddonsReady"] = "system.addons-ready";
|
|
@@ -151,6 +151,11 @@ var EventCategory = /* @__PURE__ */ function(EventCategory) {
|
|
|
151
151
|
/** Runner-sampled scrub thumbnail (~1/5 s/camera). Telemetry (D8): a lost
|
|
152
152
|
* thumb is a scrub gap the recorder's keyframe backfill covers. */
|
|
153
153
|
EventCategory["RecordingThumbSampled"] = "recording.thumb-sampled";
|
|
154
|
+
/** Export render progress (0–100). Telemetry (D8): a lost tick is a stale
|
|
155
|
+
* progress bar the client reconciles via `recordingExport.getExport`. */
|
|
156
|
+
EventCategory["RecordingExportProgress"] = "recording.export.progress";
|
|
157
|
+
EventCategory["RecordingExportCompleted"] = "recording.export.completed";
|
|
158
|
+
EventCategory["RecordingExportFailed"] = "recording.export.failed";
|
|
154
159
|
EventCategory["DetectionEvent"] = "detection.event";
|
|
155
160
|
EventCategory["SessionTrackNew"] = "session.track.new";
|
|
156
161
|
EventCategory["SessionTrackExpired"] = "session.track.expired";
|
|
@@ -440,6 +445,25 @@ var EventCategory = /* @__PURE__ */ function(EventCategory) {
|
|
|
440
445
|
*/
|
|
441
446
|
EventCategory["PipelineAnalyticsStationaryChanged"] = "pipeline-analytics.stationary-changed";
|
|
442
447
|
/**
|
|
448
|
+
* Fired by `addon-post-analysis` when a package-drop is confirmed inside
|
|
449
|
+
* a package zone — a newly-appeared stationary object of a package class
|
|
450
|
+
* that cleared the class / zone / dwell / size gates. Payload:
|
|
451
|
+
* `PipelineAnalyticsPackageDeliveredPayload` carrying `{ deviceId,
|
|
452
|
+
* entryId, className, zoneIds, keyFrameMediaKey?, bbox, timestamp }`.
|
|
453
|
+
* Telemetry (D8): the durable record is the `package-events` store row;
|
|
454
|
+
* this bus topic drives notifier rules + live UI. See
|
|
455
|
+
* docs/superpowers/specs/2026-07-17-package-zones-design.md §5.1.
|
|
456
|
+
*/
|
|
457
|
+
EventCategory["PipelineAnalyticsPackageDelivered"] = "pipeline-analytics.package-delivered";
|
|
458
|
+
/**
|
|
459
|
+
* Fired by `addon-post-analysis` when a previously-delivered package
|
|
460
|
+
* leaves its zone (the stationary entry departed — moved or swept).
|
|
461
|
+
* Payload: `PipelineAnalyticsPackagePickedUpPayload` carrying
|
|
462
|
+
* `{ deviceId, entryId, deliveredEventId, className, timestamp }`.
|
|
463
|
+
* Telemetry (D8). See package-zones-design §5.2.
|
|
464
|
+
*/
|
|
465
|
+
EventCategory["PipelineAnalyticsPackagePickedUp"] = "pipeline-analytics.package-picked-up";
|
|
466
|
+
/**
|
|
443
467
|
* Fired by `addon-post-analysis` whenever a gallery face row changes:
|
|
444
468
|
* `kind:'buffered'` a new detected face was persisted, `'assigned'` /
|
|
445
469
|
* `'unassigned'` its identity link changed, `'deleted'` the row was
|
|
@@ -5178,6 +5202,25 @@ function _instanceof(cls, params = {}) {
|
|
|
5178
5202
|
};
|
|
5179
5203
|
return inst;
|
|
5180
5204
|
}
|
|
5205
|
+
//#endregion
|
|
5206
|
+
//#region ../../node_modules/zod/v4/classic/compat.js
|
|
5207
|
+
/** @deprecated Use the raw string literal codes instead, e.g. "invalid_type". */
|
|
5208
|
+
var ZodIssueCode = {
|
|
5209
|
+
invalid_type: "invalid_type",
|
|
5210
|
+
too_big: "too_big",
|
|
5211
|
+
too_small: "too_small",
|
|
5212
|
+
invalid_format: "invalid_format",
|
|
5213
|
+
not_multiple_of: "not_multiple_of",
|
|
5214
|
+
unrecognized_keys: "unrecognized_keys",
|
|
5215
|
+
invalid_union: "invalid_union",
|
|
5216
|
+
invalid_key: "invalid_key",
|
|
5217
|
+
invalid_element: "invalid_element",
|
|
5218
|
+
invalid_value: "invalid_value",
|
|
5219
|
+
custom: "custom"
|
|
5220
|
+
};
|
|
5221
|
+
/** @deprecated Do not use. Stub definition, only included for zod-to-json-schema compatibility. */
|
|
5222
|
+
var ZodFirstPartyTypeKind;
|
|
5223
|
+
ZodFirstPartyTypeKind || (ZodFirstPartyTypeKind = {});
|
|
5181
5224
|
Object.fromEntries([
|
|
5182
5225
|
{
|
|
5183
5226
|
id: "overview",
|
|
@@ -12689,7 +12732,11 @@ array(ZoneRuleSchema).readonly();
|
|
|
12689
12732
|
* Extend the enum here when a new gating consumer comes online (audio
|
|
12690
12733
|
* gating, alert filtering, …) — no other surface needs to change.
|
|
12691
12734
|
*/
|
|
12692
|
-
var ZoneRuleStageEnum = _enum([
|
|
12735
|
+
var ZoneRuleStageEnum = _enum([
|
|
12736
|
+
"motion",
|
|
12737
|
+
"detection",
|
|
12738
|
+
"package"
|
|
12739
|
+
]);
|
|
12693
12740
|
DeviceType.Camera, method(object({
|
|
12694
12741
|
deviceId: number(),
|
|
12695
12742
|
stage: ZoneRuleStageEnum
|
|
@@ -12702,7 +12749,8 @@ DeviceType.Camera, method(object({
|
|
|
12702
12749
|
auth: "admin"
|
|
12703
12750
|
}), object({
|
|
12704
12751
|
motion: array(ZoneRuleSchema).readonly(),
|
|
12705
|
-
detection: array(ZoneRuleSchema).readonly()
|
|
12752
|
+
detection: array(ZoneRuleSchema).readonly(),
|
|
12753
|
+
package: array(ZoneRuleSchema).readonly()
|
|
12706
12754
|
});
|
|
12707
12755
|
var ProviderStatusSchema = object({
|
|
12708
12756
|
connected: boolean(),
|
|
@@ -15901,6 +15949,7 @@ var EventKindIconSchema = _enum([
|
|
|
15901
15949
|
"smoke",
|
|
15902
15950
|
"water",
|
|
15903
15951
|
"button",
|
|
15952
|
+
"package",
|
|
15904
15953
|
"generic"
|
|
15905
15954
|
]);
|
|
15906
15955
|
var EventKindCategorySchema = _enum([
|
|
@@ -15908,7 +15957,8 @@ var EventKindCategorySchema = _enum([
|
|
|
15908
15957
|
"audio",
|
|
15909
15958
|
"detection",
|
|
15910
15959
|
"sensor",
|
|
15911
|
-
"custom"
|
|
15960
|
+
"custom",
|
|
15961
|
+
"package"
|
|
15912
15962
|
]);
|
|
15913
15963
|
var EventKindDescriptorSchema = object({
|
|
15914
15964
|
/** Stable kind id (e.g. 'motion', 'person', 'contact'). */
|
|
@@ -19799,6 +19849,108 @@ method(object({
|
|
|
19799
19849
|
auth: "admin"
|
|
19800
19850
|
});
|
|
19801
19851
|
/**
|
|
19852
|
+
* `recordingExport` cap — render a footage time range into a single downloadable
|
|
19853
|
+
* MP4 (regular / accelerated / decelerated / timelapse, ± audio), kept for a
|
|
19854
|
+
* bounded lifetime with a durable history, auto-expiry, and optional
|
|
19855
|
+
* delete-after-download.
|
|
19856
|
+
*
|
|
19857
|
+
* Like `recording` this is a `scope:'system', mode:'singleton'` cap: the
|
|
19858
|
+
* recorder self-gates so exactly ONE node (the designated `recordingNodeId`,
|
|
19859
|
+
* default `hub`) registers it. Device-scoped methods carry `deviceId` in their
|
|
19860
|
+
* input and dispatch to that single provider; the render runs on the node that
|
|
19861
|
+
* owns the footage (no cross-node segment transfer). Download rides the
|
|
19862
|
+
* framework addon data-plane. State persists in a DurableState blob (NOT
|
|
19863
|
+
* SQLite); history rows survive file deletion for audit.
|
|
19864
|
+
*/
|
|
19865
|
+
/** Playback-speed multiplier for the render (1 = realtime). */
|
|
19866
|
+
var ExportSpeedSchema = number().min(.25).max(32);
|
|
19867
|
+
/** Timelapse cadence — sample one source frame per `everyMs`, output at `outputFps`. */
|
|
19868
|
+
var ExportTimelapseSchema = object({
|
|
19869
|
+
everyMs: number().int().positive(),
|
|
19870
|
+
outputFps: number().int().min(1).max(60).optional()
|
|
19871
|
+
});
|
|
19872
|
+
/**
|
|
19873
|
+
* Render options. `speed` and `timelapse` are mutually exclusive. `includeAudio`
|
|
19874
|
+
* is honoured only for a realtime-ish speed (0.5–2×); timelapse is always
|
|
19875
|
+
* silent. `maxLifeMs` bounds how long the finished file is kept;
|
|
19876
|
+
* `deleteAfterDownload` removes it shortly after the first complete download.
|
|
19877
|
+
*/
|
|
19878
|
+
var ExportOptionsSchema = object({
|
|
19879
|
+
speed: ExportSpeedSchema.optional(),
|
|
19880
|
+
timelapse: ExportTimelapseSchema.optional(),
|
|
19881
|
+
includeAudio: boolean(),
|
|
19882
|
+
maxLifeMs: number().int().positive(),
|
|
19883
|
+
deleteAfterDownload: boolean(),
|
|
19884
|
+
title: string().max(200).optional()
|
|
19885
|
+
}).superRefine((v, ctx) => {
|
|
19886
|
+
if (v.speed !== void 0 && v.timelapse !== void 0) ctx.addIssue({
|
|
19887
|
+
code: ZodIssueCode.custom,
|
|
19888
|
+
message: "speed and timelapse are mutually exclusive",
|
|
19889
|
+
path: ["timelapse"]
|
|
19890
|
+
});
|
|
19891
|
+
});
|
|
19892
|
+
var ExportStateSchema = _enum([
|
|
19893
|
+
"queued",
|
|
19894
|
+
"rendering",
|
|
19895
|
+
"ready",
|
|
19896
|
+
"failed",
|
|
19897
|
+
"expired",
|
|
19898
|
+
"deleted"
|
|
19899
|
+
]);
|
|
19900
|
+
/** One export job / history row. */
|
|
19901
|
+
var ExportRecordSchema = object({
|
|
19902
|
+
id: string(),
|
|
19903
|
+
deviceId: number(),
|
|
19904
|
+
profile: string(),
|
|
19905
|
+
fromMs: number(),
|
|
19906
|
+
toMs: number(),
|
|
19907
|
+
options: ExportOptionsSchema,
|
|
19908
|
+
state: ExportStateSchema,
|
|
19909
|
+
/** 0–100 while rendering; null otherwise. */
|
|
19910
|
+
progressPct: number().nullable(),
|
|
19911
|
+
/** File size once ready; null before. */
|
|
19912
|
+
fileBytes: number().nullable(),
|
|
19913
|
+
expiresAt: number(),
|
|
19914
|
+
deleteAfterDownload: boolean(),
|
|
19915
|
+
/** Epoch of the first complete download; null until then. */
|
|
19916
|
+
downloadedAt: number().nullable(),
|
|
19917
|
+
createdAt: number(),
|
|
19918
|
+
/** User id/name that requested the export. */
|
|
19919
|
+
createdBy: string(),
|
|
19920
|
+
/** Failure reason when state is 'failed'; null otherwise. */
|
|
19921
|
+
error: string().nullable()
|
|
19922
|
+
});
|
|
19923
|
+
/** Candidate download URLs (LAN first, then operator extra hosts). */
|
|
19924
|
+
var ExportDownloadSchema = object({
|
|
19925
|
+
url: string(),
|
|
19926
|
+
endpoints: array(string())
|
|
19927
|
+
});
|
|
19928
|
+
method(object({
|
|
19929
|
+
deviceId: number(),
|
|
19930
|
+
profile: string(),
|
|
19931
|
+
fromMs: number(),
|
|
19932
|
+
toMs: number(),
|
|
19933
|
+
options: ExportOptionsSchema
|
|
19934
|
+
}), ExportRecordSchema, {
|
|
19935
|
+
kind: "mutation",
|
|
19936
|
+
auth: "protected"
|
|
19937
|
+
}), method(object({ deviceId: number().optional() }), array(ExportRecordSchema), {
|
|
19938
|
+
kind: "query",
|
|
19939
|
+
auth: "protected"
|
|
19940
|
+
}), method(object({ exportId: string() }), ExportRecordSchema, {
|
|
19941
|
+
kind: "query",
|
|
19942
|
+
auth: "protected"
|
|
19943
|
+
}), method(object({ exportId: string() }), ExportRecordSchema, {
|
|
19944
|
+
kind: "mutation",
|
|
19945
|
+
auth: "protected"
|
|
19946
|
+
}), method(object({ exportId: string() }), ExportRecordSchema, {
|
|
19947
|
+
kind: "mutation",
|
|
19948
|
+
auth: "protected"
|
|
19949
|
+
}), method(object({ exportId: string() }), ExportDownloadSchema, {
|
|
19950
|
+
kind: "query",
|
|
19951
|
+
auth: "protected"
|
|
19952
|
+
});
|
|
19953
|
+
/**
|
|
19802
19954
|
* One publishable camera stream as its OWNING PROVIDER describes it — the same
|
|
19803
19955
|
* payload the (legacy) push `streamBroker.publishCameraStream` carried, minus
|
|
19804
19956
|
* `deviceId`.
|
|
@@ -23722,6 +23874,42 @@ Object.freeze({
|
|
|
23722
23874
|
addonId: null,
|
|
23723
23875
|
access: "create"
|
|
23724
23876
|
},
|
|
23877
|
+
"recordingExport.cancelExport": {
|
|
23878
|
+
capName: "recordingExport",
|
|
23879
|
+
capScope: "system",
|
|
23880
|
+
addonId: null,
|
|
23881
|
+
access: "create"
|
|
23882
|
+
},
|
|
23883
|
+
"recordingExport.createExport": {
|
|
23884
|
+
capName: "recordingExport",
|
|
23885
|
+
capScope: "system",
|
|
23886
|
+
addonId: null,
|
|
23887
|
+
access: "create"
|
|
23888
|
+
},
|
|
23889
|
+
"recordingExport.deleteExport": {
|
|
23890
|
+
capName: "recordingExport",
|
|
23891
|
+
capScope: "system",
|
|
23892
|
+
addonId: null,
|
|
23893
|
+
access: "delete"
|
|
23894
|
+
},
|
|
23895
|
+
"recordingExport.getDownloadUrl": {
|
|
23896
|
+
capName: "recordingExport",
|
|
23897
|
+
capScope: "system",
|
|
23898
|
+
addonId: null,
|
|
23899
|
+
access: "view"
|
|
23900
|
+
},
|
|
23901
|
+
"recordingExport.getExport": {
|
|
23902
|
+
capName: "recordingExport",
|
|
23903
|
+
capScope: "system",
|
|
23904
|
+
addonId: null,
|
|
23905
|
+
access: "view"
|
|
23906
|
+
},
|
|
23907
|
+
"recordingExport.listExports": {
|
|
23908
|
+
capName: "recordingExport",
|
|
23909
|
+
capScope: "system",
|
|
23910
|
+
addonId: null,
|
|
23911
|
+
access: "view"
|
|
23912
|
+
},
|
|
23725
23913
|
"sceneMonitor.captureReference": {
|
|
23726
23914
|
capName: "scene-monitor",
|
|
23727
23915
|
capScope: "device",
|
|
@@ -24881,4 +25069,4 @@ object({
|
|
|
24881
25069
|
schemaVersion: literal(1)
|
|
24882
25070
|
});
|
|
24883
25071
|
//#endregion
|
|
24884
|
-
export {
|
|
25072
|
+
export { string as C, object as S, createEvent as _, cosineSimilarity as a, boolean as b, hfModelUrl as c, plateGalleryCapability as d, videoclipsCapability as f, DeviceType as g, BaseAddon as h, audioMetricsCapability as i, nodePin as l, errMsg as m, EVENT_PAD_MS as n, embeddingEncoderCapability as o, zoneAnalyticsCapability as p, addonWidgetsSourceCapability as r, faceGalleryCapability as s, EVENT_KIND_BY_CAP as t, pipelineAnalyticsCapability as u, hydrateSchema as v, EventCategory as w, number as x, array as y };
|
|
@@ -20,7 +20,7 @@ var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__ge
|
|
|
20
20
|
enumerable: true
|
|
21
21
|
}) : target, mod));
|
|
22
22
|
//#endregion
|
|
23
|
-
//#region ../types/dist/event-category-
|
|
23
|
+
//#region ../types/dist/event-category-D4HJq7Mw.mjs
|
|
24
24
|
var EventCategory = /* @__PURE__ */ function(EventCategory) {
|
|
25
25
|
EventCategory["SystemBoot"] = "system.boot";
|
|
26
26
|
EventCategory["SystemAddonsReady"] = "system.addons-ready";
|
|
@@ -173,6 +173,11 @@ var EventCategory = /* @__PURE__ */ function(EventCategory) {
|
|
|
173
173
|
/** Runner-sampled scrub thumbnail (~1/5 s/camera). Telemetry (D8): a lost
|
|
174
174
|
* thumb is a scrub gap the recorder's keyframe backfill covers. */
|
|
175
175
|
EventCategory["RecordingThumbSampled"] = "recording.thumb-sampled";
|
|
176
|
+
/** Export render progress (0–100). Telemetry (D8): a lost tick is a stale
|
|
177
|
+
* progress bar the client reconciles via `recordingExport.getExport`. */
|
|
178
|
+
EventCategory["RecordingExportProgress"] = "recording.export.progress";
|
|
179
|
+
EventCategory["RecordingExportCompleted"] = "recording.export.completed";
|
|
180
|
+
EventCategory["RecordingExportFailed"] = "recording.export.failed";
|
|
176
181
|
EventCategory["DetectionEvent"] = "detection.event";
|
|
177
182
|
EventCategory["SessionTrackNew"] = "session.track.new";
|
|
178
183
|
EventCategory["SessionTrackExpired"] = "session.track.expired";
|
|
@@ -462,6 +467,25 @@ var EventCategory = /* @__PURE__ */ function(EventCategory) {
|
|
|
462
467
|
*/
|
|
463
468
|
EventCategory["PipelineAnalyticsStationaryChanged"] = "pipeline-analytics.stationary-changed";
|
|
464
469
|
/**
|
|
470
|
+
* Fired by `addon-post-analysis` when a package-drop is confirmed inside
|
|
471
|
+
* a package zone — a newly-appeared stationary object of a package class
|
|
472
|
+
* that cleared the class / zone / dwell / size gates. Payload:
|
|
473
|
+
* `PipelineAnalyticsPackageDeliveredPayload` carrying `{ deviceId,
|
|
474
|
+
* entryId, className, zoneIds, keyFrameMediaKey?, bbox, timestamp }`.
|
|
475
|
+
* Telemetry (D8): the durable record is the `package-events` store row;
|
|
476
|
+
* this bus topic drives notifier rules + live UI. See
|
|
477
|
+
* docs/superpowers/specs/2026-07-17-package-zones-design.md §5.1.
|
|
478
|
+
*/
|
|
479
|
+
EventCategory["PipelineAnalyticsPackageDelivered"] = "pipeline-analytics.package-delivered";
|
|
480
|
+
/**
|
|
481
|
+
* Fired by `addon-post-analysis` when a previously-delivered package
|
|
482
|
+
* leaves its zone (the stationary entry departed — moved or swept).
|
|
483
|
+
* Payload: `PipelineAnalyticsPackagePickedUpPayload` carrying
|
|
484
|
+
* `{ deviceId, entryId, deliveredEventId, className, timestamp }`.
|
|
485
|
+
* Telemetry (D8). See package-zones-design §5.2.
|
|
486
|
+
*/
|
|
487
|
+
EventCategory["PipelineAnalyticsPackagePickedUp"] = "pipeline-analytics.package-picked-up";
|
|
488
|
+
/**
|
|
465
489
|
* Fired by `addon-post-analysis` whenever a gallery face row changes:
|
|
466
490
|
* `kind:'buffered'` a new detected face was persisted, `'assigned'` /
|
|
467
491
|
* `'unassigned'` its identity link changed, `'deleted'` the row was
|
|
@@ -5200,6 +5224,25 @@ function _instanceof(cls, params = {}) {
|
|
|
5200
5224
|
};
|
|
5201
5225
|
return inst;
|
|
5202
5226
|
}
|
|
5227
|
+
//#endregion
|
|
5228
|
+
//#region ../../node_modules/zod/v4/classic/compat.js
|
|
5229
|
+
/** @deprecated Use the raw string literal codes instead, e.g. "invalid_type". */
|
|
5230
|
+
var ZodIssueCode = {
|
|
5231
|
+
invalid_type: "invalid_type",
|
|
5232
|
+
too_big: "too_big",
|
|
5233
|
+
too_small: "too_small",
|
|
5234
|
+
invalid_format: "invalid_format",
|
|
5235
|
+
not_multiple_of: "not_multiple_of",
|
|
5236
|
+
unrecognized_keys: "unrecognized_keys",
|
|
5237
|
+
invalid_union: "invalid_union",
|
|
5238
|
+
invalid_key: "invalid_key",
|
|
5239
|
+
invalid_element: "invalid_element",
|
|
5240
|
+
invalid_value: "invalid_value",
|
|
5241
|
+
custom: "custom"
|
|
5242
|
+
};
|
|
5243
|
+
/** @deprecated Do not use. Stub definition, only included for zod-to-json-schema compatibility. */
|
|
5244
|
+
var ZodFirstPartyTypeKind;
|
|
5245
|
+
ZodFirstPartyTypeKind || (ZodFirstPartyTypeKind = {});
|
|
5203
5246
|
Object.fromEntries([
|
|
5204
5247
|
{
|
|
5205
5248
|
id: "overview",
|
|
@@ -12711,7 +12754,11 @@ array(ZoneRuleSchema).readonly();
|
|
|
12711
12754
|
* Extend the enum here when a new gating consumer comes online (audio
|
|
12712
12755
|
* gating, alert filtering, …) — no other surface needs to change.
|
|
12713
12756
|
*/
|
|
12714
|
-
var ZoneRuleStageEnum = _enum([
|
|
12757
|
+
var ZoneRuleStageEnum = _enum([
|
|
12758
|
+
"motion",
|
|
12759
|
+
"detection",
|
|
12760
|
+
"package"
|
|
12761
|
+
]);
|
|
12715
12762
|
DeviceType.Camera, method(object({
|
|
12716
12763
|
deviceId: number(),
|
|
12717
12764
|
stage: ZoneRuleStageEnum
|
|
@@ -12724,7 +12771,8 @@ DeviceType.Camera, method(object({
|
|
|
12724
12771
|
auth: "admin"
|
|
12725
12772
|
}), object({
|
|
12726
12773
|
motion: array(ZoneRuleSchema).readonly(),
|
|
12727
|
-
detection: array(ZoneRuleSchema).readonly()
|
|
12774
|
+
detection: array(ZoneRuleSchema).readonly(),
|
|
12775
|
+
package: array(ZoneRuleSchema).readonly()
|
|
12728
12776
|
});
|
|
12729
12777
|
var ProviderStatusSchema = object({
|
|
12730
12778
|
connected: boolean(),
|
|
@@ -15923,6 +15971,7 @@ var EventKindIconSchema = _enum([
|
|
|
15923
15971
|
"smoke",
|
|
15924
15972
|
"water",
|
|
15925
15973
|
"button",
|
|
15974
|
+
"package",
|
|
15926
15975
|
"generic"
|
|
15927
15976
|
]);
|
|
15928
15977
|
var EventKindCategorySchema = _enum([
|
|
@@ -15930,7 +15979,8 @@ var EventKindCategorySchema = _enum([
|
|
|
15930
15979
|
"audio",
|
|
15931
15980
|
"detection",
|
|
15932
15981
|
"sensor",
|
|
15933
|
-
"custom"
|
|
15982
|
+
"custom",
|
|
15983
|
+
"package"
|
|
15934
15984
|
]);
|
|
15935
15985
|
var EventKindDescriptorSchema = object({
|
|
15936
15986
|
/** Stable kind id (e.g. 'motion', 'person', 'contact'). */
|
|
@@ -19821,6 +19871,108 @@ method(object({
|
|
|
19821
19871
|
auth: "admin"
|
|
19822
19872
|
});
|
|
19823
19873
|
/**
|
|
19874
|
+
* `recordingExport` cap — render a footage time range into a single downloadable
|
|
19875
|
+
* MP4 (regular / accelerated / decelerated / timelapse, ± audio), kept for a
|
|
19876
|
+
* bounded lifetime with a durable history, auto-expiry, and optional
|
|
19877
|
+
* delete-after-download.
|
|
19878
|
+
*
|
|
19879
|
+
* Like `recording` this is a `scope:'system', mode:'singleton'` cap: the
|
|
19880
|
+
* recorder self-gates so exactly ONE node (the designated `recordingNodeId`,
|
|
19881
|
+
* default `hub`) registers it. Device-scoped methods carry `deviceId` in their
|
|
19882
|
+
* input and dispatch to that single provider; the render runs on the node that
|
|
19883
|
+
* owns the footage (no cross-node segment transfer). Download rides the
|
|
19884
|
+
* framework addon data-plane. State persists in a DurableState blob (NOT
|
|
19885
|
+
* SQLite); history rows survive file deletion for audit.
|
|
19886
|
+
*/
|
|
19887
|
+
/** Playback-speed multiplier for the render (1 = realtime). */
|
|
19888
|
+
var ExportSpeedSchema = number().min(.25).max(32);
|
|
19889
|
+
/** Timelapse cadence — sample one source frame per `everyMs`, output at `outputFps`. */
|
|
19890
|
+
var ExportTimelapseSchema = object({
|
|
19891
|
+
everyMs: number().int().positive(),
|
|
19892
|
+
outputFps: number().int().min(1).max(60).optional()
|
|
19893
|
+
});
|
|
19894
|
+
/**
|
|
19895
|
+
* Render options. `speed` and `timelapse` are mutually exclusive. `includeAudio`
|
|
19896
|
+
* is honoured only for a realtime-ish speed (0.5–2×); timelapse is always
|
|
19897
|
+
* silent. `maxLifeMs` bounds how long the finished file is kept;
|
|
19898
|
+
* `deleteAfterDownload` removes it shortly after the first complete download.
|
|
19899
|
+
*/
|
|
19900
|
+
var ExportOptionsSchema = object({
|
|
19901
|
+
speed: ExportSpeedSchema.optional(),
|
|
19902
|
+
timelapse: ExportTimelapseSchema.optional(),
|
|
19903
|
+
includeAudio: boolean(),
|
|
19904
|
+
maxLifeMs: number().int().positive(),
|
|
19905
|
+
deleteAfterDownload: boolean(),
|
|
19906
|
+
title: string().max(200).optional()
|
|
19907
|
+
}).superRefine((v, ctx) => {
|
|
19908
|
+
if (v.speed !== void 0 && v.timelapse !== void 0) ctx.addIssue({
|
|
19909
|
+
code: ZodIssueCode.custom,
|
|
19910
|
+
message: "speed and timelapse are mutually exclusive",
|
|
19911
|
+
path: ["timelapse"]
|
|
19912
|
+
});
|
|
19913
|
+
});
|
|
19914
|
+
var ExportStateSchema = _enum([
|
|
19915
|
+
"queued",
|
|
19916
|
+
"rendering",
|
|
19917
|
+
"ready",
|
|
19918
|
+
"failed",
|
|
19919
|
+
"expired",
|
|
19920
|
+
"deleted"
|
|
19921
|
+
]);
|
|
19922
|
+
/** One export job / history row. */
|
|
19923
|
+
var ExportRecordSchema = object({
|
|
19924
|
+
id: string(),
|
|
19925
|
+
deviceId: number(),
|
|
19926
|
+
profile: string(),
|
|
19927
|
+
fromMs: number(),
|
|
19928
|
+
toMs: number(),
|
|
19929
|
+
options: ExportOptionsSchema,
|
|
19930
|
+
state: ExportStateSchema,
|
|
19931
|
+
/** 0–100 while rendering; null otherwise. */
|
|
19932
|
+
progressPct: number().nullable(),
|
|
19933
|
+
/** File size once ready; null before. */
|
|
19934
|
+
fileBytes: number().nullable(),
|
|
19935
|
+
expiresAt: number(),
|
|
19936
|
+
deleteAfterDownload: boolean(),
|
|
19937
|
+
/** Epoch of the first complete download; null until then. */
|
|
19938
|
+
downloadedAt: number().nullable(),
|
|
19939
|
+
createdAt: number(),
|
|
19940
|
+
/** User id/name that requested the export. */
|
|
19941
|
+
createdBy: string(),
|
|
19942
|
+
/** Failure reason when state is 'failed'; null otherwise. */
|
|
19943
|
+
error: string().nullable()
|
|
19944
|
+
});
|
|
19945
|
+
/** Candidate download URLs (LAN first, then operator extra hosts). */
|
|
19946
|
+
var ExportDownloadSchema = object({
|
|
19947
|
+
url: string(),
|
|
19948
|
+
endpoints: array(string())
|
|
19949
|
+
});
|
|
19950
|
+
method(object({
|
|
19951
|
+
deviceId: number(),
|
|
19952
|
+
profile: string(),
|
|
19953
|
+
fromMs: number(),
|
|
19954
|
+
toMs: number(),
|
|
19955
|
+
options: ExportOptionsSchema
|
|
19956
|
+
}), ExportRecordSchema, {
|
|
19957
|
+
kind: "mutation",
|
|
19958
|
+
auth: "protected"
|
|
19959
|
+
}), method(object({ deviceId: number().optional() }), array(ExportRecordSchema), {
|
|
19960
|
+
kind: "query",
|
|
19961
|
+
auth: "protected"
|
|
19962
|
+
}), method(object({ exportId: string() }), ExportRecordSchema, {
|
|
19963
|
+
kind: "query",
|
|
19964
|
+
auth: "protected"
|
|
19965
|
+
}), method(object({ exportId: string() }), ExportRecordSchema, {
|
|
19966
|
+
kind: "mutation",
|
|
19967
|
+
auth: "protected"
|
|
19968
|
+
}), method(object({ exportId: string() }), ExportRecordSchema, {
|
|
19969
|
+
kind: "mutation",
|
|
19970
|
+
auth: "protected"
|
|
19971
|
+
}), method(object({ exportId: string() }), ExportDownloadSchema, {
|
|
19972
|
+
kind: "query",
|
|
19973
|
+
auth: "protected"
|
|
19974
|
+
});
|
|
19975
|
+
/**
|
|
19824
19976
|
* One publishable camera stream as its OWNING PROVIDER describes it — the same
|
|
19825
19977
|
* payload the (legacy) push `streamBroker.publishCameraStream` carried, minus
|
|
19826
19978
|
* `deviceId`.
|
|
@@ -23744,6 +23896,42 @@ Object.freeze({
|
|
|
23744
23896
|
addonId: null,
|
|
23745
23897
|
access: "create"
|
|
23746
23898
|
},
|
|
23899
|
+
"recordingExport.cancelExport": {
|
|
23900
|
+
capName: "recordingExport",
|
|
23901
|
+
capScope: "system",
|
|
23902
|
+
addonId: null,
|
|
23903
|
+
access: "create"
|
|
23904
|
+
},
|
|
23905
|
+
"recordingExport.createExport": {
|
|
23906
|
+
capName: "recordingExport",
|
|
23907
|
+
capScope: "system",
|
|
23908
|
+
addonId: null,
|
|
23909
|
+
access: "create"
|
|
23910
|
+
},
|
|
23911
|
+
"recordingExport.deleteExport": {
|
|
23912
|
+
capName: "recordingExport",
|
|
23913
|
+
capScope: "system",
|
|
23914
|
+
addonId: null,
|
|
23915
|
+
access: "delete"
|
|
23916
|
+
},
|
|
23917
|
+
"recordingExport.getDownloadUrl": {
|
|
23918
|
+
capName: "recordingExport",
|
|
23919
|
+
capScope: "system",
|
|
23920
|
+
addonId: null,
|
|
23921
|
+
access: "view"
|
|
23922
|
+
},
|
|
23923
|
+
"recordingExport.getExport": {
|
|
23924
|
+
capName: "recordingExport",
|
|
23925
|
+
capScope: "system",
|
|
23926
|
+
addonId: null,
|
|
23927
|
+
access: "view"
|
|
23928
|
+
},
|
|
23929
|
+
"recordingExport.listExports": {
|
|
23930
|
+
capName: "recordingExport",
|
|
23931
|
+
capScope: "system",
|
|
23932
|
+
addonId: null,
|
|
23933
|
+
access: "view"
|
|
23934
|
+
},
|
|
23747
23935
|
"sceneMonitor.captureReference": {
|
|
23748
23936
|
capName: "scene-monitor",
|
|
23749
23937
|
capScope: "device",
|
|
@@ -24945,6 +25133,12 @@ Object.defineProperty(exports, "addonWidgetsSourceCapability", {
|
|
|
24945
25133
|
return addonWidgetsSourceCapability;
|
|
24946
25134
|
}
|
|
24947
25135
|
});
|
|
25136
|
+
Object.defineProperty(exports, "array", {
|
|
25137
|
+
enumerable: true,
|
|
25138
|
+
get: function() {
|
|
25139
|
+
return array;
|
|
25140
|
+
}
|
|
25141
|
+
});
|
|
24948
25142
|
Object.defineProperty(exports, "audioMetricsCapability", {
|
|
24949
25143
|
enumerable: true,
|
|
24950
25144
|
get: function() {
|
|
@@ -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-V8XOHDoj.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 { c as hfModelUrl, h as BaseAddon, o as embeddingEncoderCapability } from "../dist-
|
|
1
|
+
import { c as hfModelUrl, h as BaseAddon, o as embeddingEncoderCapability } from "../dist-CA0GikiM.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";
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { a as e, i as t, n, o as r, r as i, t as a } from "./_virtual_mf___mfe_internal__addon_pipeline_analytics_widgets__loadShare__react__loadShare__.js-C0AuF9av.mjs";
|
|
2
2
|
import { t as o } from "./_virtual_mf___mfe_internal__addon_pipeline_analytics_widgets__loadShare___mf_0_tanstack_mf_1_react_mf_2_query__loadShare__.js-B3Wx5J80.mjs";
|
|
3
|
-
import { a as s, i as c, n as l, o as u, r as d, s as f, t as p } from "./_virtual_mf___mfe_internal__addon_pipeline_analytics_widgets__loadShare___mf_0_camstack_mf_1_ui_mf_2_library__loadShare__.js-
|
|
3
|
+
import { a as s, i as c, n as l, o as u, r as d, s as f, t as p } from "./_virtual_mf___mfe_internal__addon_pipeline_analytics_widgets__loadShare___mf_0_camstack_mf_1_ui_mf_2_library__loadShare__.js-ai-NpPOn.mjs";
|
|
4
4
|
import { n as m, r as h, t as g } from "./_virtual_mf___mfe_internal__addon_pipeline_analytics_widgets__loadShare__react_mf_1_jsx_mf_2_runtime__loadShare__.js-Bm-iyjmq.mjs";
|
|
5
5
|
//#region ../../node_modules/lucide-react/dist/esm/shared/src/utils.js
|
|
6
6
|
var _ = (e) => e.replace(/([a-z0-9])([A-Z])/g, "$1-$2").toLowerCase(), v = (e) => e.replace(/^([A-Z])|[\s-_]+(\w)/g, (e, t, n) => n ? n.toUpperCase() : t.toLowerCase()), y = (e) => {
|
|
@@ -3,7 +3,7 @@ import "./dist-CYZr2fwk.mjs";
|
|
|
3
3
|
var e = {
|
|
4
4
|
"@camstack/sdk": {
|
|
5
5
|
name: "@camstack/sdk",
|
|
6
|
-
version: "1.1.
|
|
6
|
+
version: "1.1.28",
|
|
7
7
|
scope: ["default"],
|
|
8
8
|
loaded: !1,
|
|
9
9
|
from: "addon_pipeline_analytics_widgets",
|
|
@@ -18,7 +18,7 @@ var e = {
|
|
|
18
18
|
},
|
|
19
19
|
"@camstack/types": {
|
|
20
20
|
name: "@camstack/types",
|
|
21
|
-
version: "1.1.
|
|
21
|
+
version: "1.1.49",
|
|
22
22
|
scope: ["default"],
|
|
23
23
|
loaded: !1,
|
|
24
24
|
from: "addon_pipeline_analytics_widgets",
|
|
@@ -33,7 +33,7 @@ var e = {
|
|
|
33
33
|
},
|
|
34
34
|
"@camstack/ui-library": {
|
|
35
35
|
name: "@camstack/ui-library",
|
|
36
|
-
version: "1.1.
|
|
36
|
+
version: "1.1.40",
|
|
37
37
|
scope: ["default"],
|
|
38
38
|
loaded: !1,
|
|
39
39
|
from: "addon_pipeline_analytics_widgets",
|