@camstack/addon-post-analysis 1.2.297 → 1.2.299
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-BP_o2Oi4.mjs → clip-model-registry-DCztUu1G.mjs} +101 -165
- package/dist/{clip-model-registry-BTpYUJzK.js → clip-model-registry-hTbsQ-z7.js} +112 -164
- 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-C9vZfpmu.mjs → _virtual_mf-localSharedImportMap___mfe_internal__addon_pipeline_analytics_widgets-thT_ff8Z.mjs} +2 -2
- package/dist/pipeline-analytics/{_virtual_mf___mfe_internal__addon_pipeline_analytics_widgets__loadShare___mf_0_camstack_mf_1_types__loadShare__.js-BVgWHpfo.mjs → _virtual_mf___mfe_internal__addon_pipeline_analytics_widgets__loadShare___mf_0_camstack_mf_1_types__loadShare__.js-C3QGV7zb.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-KXwf-qxG.mjs → _virtual_mf___mfe_internal__addon_pipeline_analytics_widgets__loadShare___mf_0_camstack_mf_1_ui_mf_2_library__loadShare__.js-Ckt8VrEv.mjs} +1 -1
- package/dist/pipeline-analytics/{hostInit-BwZmL8b9.mjs → hostInit-D9z3Da9D.mjs} +2 -2
- package/dist/pipeline-analytics/index.js +474 -2527
- package/dist/pipeline-analytics/index.mjs +552 -2606
- package/dist/pipeline-analytics/remoteEntry.js +1 -1
- package/package.json +1 -1
|
@@ -5370,7 +5370,7 @@ var ZodIssueCode = {
|
|
|
5370
5370
|
var ZodFirstPartyTypeKind;
|
|
5371
5371
|
ZodFirstPartyTypeKind || (ZodFirstPartyTypeKind = {});
|
|
5372
5372
|
//#endregion
|
|
5373
|
-
//#region ../types/dist/sleep-
|
|
5373
|
+
//#region ../types/dist/sleep-C-v96WpE.mjs
|
|
5374
5374
|
/**
|
|
5375
5375
|
* The audio chunk plane's byte format, and the ONE expansion from a coded
|
|
5376
5376
|
* window to float samples (D455).
|
|
@@ -8595,7 +8595,6 @@ var CompositionSchema = object({
|
|
|
8595
8595
|
});
|
|
8596
8596
|
var OWNER_TYPES = new Set([
|
|
8597
8597
|
"track",
|
|
8598
|
-
"summary",
|
|
8599
8598
|
"face",
|
|
8600
8599
|
"identity",
|
|
8601
8600
|
"plate",
|
|
@@ -8751,6 +8750,90 @@ var BASE_LIVE_EGRESS_PROFILE = {
|
|
|
8751
8750
|
({ ...BASE_LIVE_EGRESS_PROFILE }), { ...BASE_LIVE_EGRESS_PROFILE.video };
|
|
8752
8751
|
({ ...BASE_LIVE_EGRESS_PROFILE }), { ...BASE_LIVE_EGRESS_PROFILE.video };
|
|
8753
8752
|
/**
|
|
8753
|
+
* The notification GIF's filter chain and argv — ONE definition for every
|
|
8754
|
+
* process that derives a gif from a notification video.
|
|
8755
|
+
*
|
|
8756
|
+
* ## Why this lives in `@camstack/types`
|
|
8757
|
+
*
|
|
8758
|
+
* Two addons derive a notification gif from an mp4, and they may never import
|
|
8759
|
+
* each other:
|
|
8760
|
+
*
|
|
8761
|
+
* - the stream broker (`addon-pipeline`), from the clip it just cut out of its
|
|
8762
|
+
* own ring (`gif-from-mp4.ts`);
|
|
8763
|
+
* - the notification centre (`addon-post-analysis`), from a clip cut out of
|
|
8764
|
+
* the RECORDINGS when the moment is older than any ring holds
|
|
8765
|
+
* ([D682](../../../../docs/decisions/adr-0682-a-pick-ups-footage-is-cut-around-the-pick-up.md)).
|
|
8766
|
+
*
|
|
8767
|
+
* Two copies of this chain would be two gifs of the same kind of moment that
|
|
8768
|
+
* look different depending on how old the moment was — the class of defect
|
|
8769
|
+
* D85/D91 already paid for once. So the chain is here, pure and dependency
|
|
8770
|
+
* free, and each caller owns only its own process lifecycle.
|
|
8771
|
+
*
|
|
8772
|
+
* ## The palette was never the problem
|
|
8773
|
+
*
|
|
8774
|
+
* The `split` + `palettegen(stats_mode=diff)` + `paletteuse(bayer)` pair is
|
|
8775
|
+
* right and stays. The measured cause of "the gif looks de-pixellated" was a
|
|
8776
|
+
* 640×360 substream scaled DOWN to 480 px, upstream of the palette. The `split`
|
|
8777
|
+
* form is a single READ of the input, not a lesser two-pass.
|
|
8778
|
+
*/
|
|
8779
|
+
/**
|
|
8780
|
+
* Format a frame rate for an ffmpeg filter argument.
|
|
8781
|
+
*
|
|
8782
|
+
* `12 / 4` must reach the filter as `3` and `15 / 4` as `3.75`, not as a float
|
|
8783
|
+
* tail that `av_parse_video_rate` then has to guess at.
|
|
8784
|
+
*/
|
|
8785
|
+
function ffmpegRate(rate) {
|
|
8786
|
+
return String(Math.round(rate * 1e3) / 1e3);
|
|
8787
|
+
}
|
|
8788
|
+
/**
|
|
8789
|
+
* The factor the derive must apply ON TOP of the speed the mp4 already carries.
|
|
8790
|
+
*
|
|
8791
|
+
* The gif is derived from a muxed mp4, so if that mux already ran `setpts` at
|
|
8792
|
+
* the caller's `speed`, applying the absolute gif rate again would compound
|
|
8793
|
+
* them — a 4× gif beside a 2× video would come out at 8×. Discounting here is
|
|
8794
|
+
* what keeps the gif rate ABSOLUTE against real time whatever the video does.
|
|
8795
|
+
*/
|
|
8796
|
+
function gifDeriveSpeed(gifSpeed, videoSpeed) {
|
|
8797
|
+
if (!Number.isFinite(videoSpeed) || videoSpeed <= 0) return gifSpeed;
|
|
8798
|
+
return gifSpeed / videoSpeed;
|
|
8799
|
+
}
|
|
8800
|
+
/**
|
|
8801
|
+
* The filter chain. Extracted so a test can assert the palette pair without
|
|
8802
|
+
* spawning ffmpeg — an argv test cannot see quality, but it can see a filter
|
|
8803
|
+
* that somebody deleted.
|
|
8804
|
+
*
|
|
8805
|
+
* `fps` BEFORE `setpts`: decimating an already sped-up timeline yields `speed`
|
|
8806
|
+
* times the frames asked for, and a gif pays for every one. So the decimation
|
|
8807
|
+
* runs at `fps / speed` in SOURCE time and `setpts` multiplies what survived.
|
|
8808
|
+
* The trailing `fps` re-declares the rate, which is NOT redundant: `setpts`
|
|
8809
|
+
* leaves the filter link advertising the sampled rate and the gif muxer
|
|
8810
|
+
* believes the link — measured on 615 as a 3.01 s gif of ten frames.
|
|
8811
|
+
*/
|
|
8812
|
+
function gifFilterComplex(input) {
|
|
8813
|
+
const speed = input.speed > 0 ? input.speed : 1;
|
|
8814
|
+
if (speed === 1) return `[0:v]fps=${ffmpegRate(input.fps)},scale=${input.maxWidth}:-2:flags=lanczos,split[a][b];[a]palettegen=stats_mode=diff[p];[b][p]paletteuse=dither=bayer:bayer_scale=5:diff_mode=rectangle`;
|
|
8815
|
+
return `[0:v]fps=${ffmpegRate(input.fps / speed)},setpts=PTS/${speed},fps=${ffmpegRate(input.fps)},scale=${input.maxWidth}:-2:flags=lanczos,split[a][b];[a]palettegen=stats_mode=diff[p];[b][p]paletteuse=dither=bayer:bayer_scale=5:diff_mode=rectangle`;
|
|
8816
|
+
}
|
|
8817
|
+
/** The full argv: mp4 in, gif on stdout. */
|
|
8818
|
+
function gifFromMp4Args(input) {
|
|
8819
|
+
return [
|
|
8820
|
+
"-y",
|
|
8821
|
+
"-v",
|
|
8822
|
+
"error",
|
|
8823
|
+
"-f",
|
|
8824
|
+
"mp4",
|
|
8825
|
+
"-i",
|
|
8826
|
+
input.input ?? "pipe:0",
|
|
8827
|
+
"-filter_complex",
|
|
8828
|
+
gifFilterComplex(input),
|
|
8829
|
+
"-loop",
|
|
8830
|
+
"0",
|
|
8831
|
+
"-f",
|
|
8832
|
+
"gif",
|
|
8833
|
+
"pipe:1"
|
|
8834
|
+
];
|
|
8835
|
+
}
|
|
8836
|
+
/**
|
|
8754
8837
|
* Deep wiring healthcheck — snapshot of active reachability probes across
|
|
8755
8838
|
* every declared capability + widget of every installed plugin, on every
|
|
8756
8839
|
* node. Produced by the backend `WiringHealthService` and surfaced via
|
|
@@ -22982,6 +23065,21 @@ var ObjectEventSchema = object({
|
|
|
22982
23065
|
keyFrameMediaId: number().int().optional(),
|
|
22983
23066
|
/** Populated by B5 (recording playback URL for this event). */
|
|
22984
23067
|
mediaUrl: string().optional(),
|
|
23068
|
+
/**
|
|
23069
|
+
* When the change this row records HAPPENED, epoch ms, when that is earlier
|
|
23070
|
+
* than {@link timestamp} and the producer could date it (D684).
|
|
23071
|
+
*
|
|
23072
|
+
* Set on a package PICK-UP row only: its `timestamp` is when the departure
|
|
23073
|
+
* was CONCLUDED — five minutes of unseen observed time after the parcel went
|
|
23074
|
+
* — and a notification's footage has to be cut around the pick-up, not the
|
|
23075
|
+
* empty doormat after it (D682). Stored so every path that rebuilds a
|
|
23076
|
+
* notification subject from the row (the boot reconcile, a dry-run) anchors
|
|
23077
|
+
* on the same instant the live hook did.
|
|
23078
|
+
*
|
|
23079
|
+
* `timestamp` keeps its meaning. Absent on every other row and on every
|
|
23080
|
+
* pick-up written before D684 — UNKNOWN, never 0 and never `timestamp`.
|
|
23081
|
+
*/
|
|
23082
|
+
observedAt: number().optional(),
|
|
22985
23083
|
/** The parent track's key-event importance [0,1], propagated to every object
|
|
22986
23084
|
* event of the track (so an event row can be sorted by importance without a
|
|
22987
23085
|
* track join). Absent on legacy rows / before the track was scored. */
|
|
@@ -23317,131 +23415,6 @@ var RecentTracksQueryInput = object({
|
|
|
23317
23415
|
/** See {@link ExcludeSourcesDoc}. */
|
|
23318
23416
|
excludeSources: array(TrackSourceSchema).optional()
|
|
23319
23417
|
});
|
|
23320
|
-
/**
|
|
23321
|
-
* A Summary (D359): the per-camera session envelope that references tracks.
|
|
23322
|
-
* `groupShotMediaId` is the media ROW id of its group shot (`ownerKind:
|
|
23323
|
-
* 'summary'`, served by the event-media plane at `/m/<id>`), null until the
|
|
23324
|
-
* first frame with a member visible has been materialised (D482 — it was the
|
|
23325
|
-
* row's composite key, which embedded the owner and could name another table's
|
|
23326
|
-
* row once event ids became per-table rowids).
|
|
23327
|
-
*/
|
|
23328
|
-
var SummarySchema = object({
|
|
23329
|
-
id: string(),
|
|
23330
|
-
deviceId: number(),
|
|
23331
|
-
openedAt: number(),
|
|
23332
|
-
lastActiveAt: number(),
|
|
23333
|
-
sealedAt: number().nullable(),
|
|
23334
|
-
memberCount: number().int().nonnegative(),
|
|
23335
|
-
groupShotMediaId: number().int().nullable()
|
|
23336
|
-
});
|
|
23337
|
-
var SummariesQueryInput = object({
|
|
23338
|
-
deviceIds: array(number()).min(1),
|
|
23339
|
-
since: number().optional(),
|
|
23340
|
-
until: number().optional(),
|
|
23341
|
-
limit: number().int().min(1).max(200).default(50),
|
|
23342
|
-
/** The same member-wise filter {@link listRecentSummaries} takes — one
|
|
23343
|
-
* meaning of "dog" on every summary surface. */
|
|
23344
|
-
classes: array(string().min(1).max(60)).max(40).optional()
|
|
23345
|
-
});
|
|
23346
|
-
var SummaryDetailSchema = object({
|
|
23347
|
-
summary: SummarySchema,
|
|
23348
|
-
/** Members in absorption order, oldest join first. */
|
|
23349
|
-
members: array(object({
|
|
23350
|
-
trackId: string(),
|
|
23351
|
-
/**
|
|
23352
|
-
* The track's class at the time it JOINED, or `null` when it was unresolved
|
|
23353
|
-
* and the track no longer exists to fill it.
|
|
23354
|
-
*
|
|
23355
|
-
* The join, not the latest opinion: class voting can re-decide a track's
|
|
23356
|
-
* class afterwards, and a group's composition is the history of who came
|
|
23357
|
-
* together. A consumer counts these to badge a thumbnail — "two people and a
|
|
23358
|
-
* dog" — rather than being handed a second, denormalised tally that would
|
|
23359
|
-
* drift from the members it claims to describe.
|
|
23360
|
-
*/
|
|
23361
|
-
className: string().nullable(),
|
|
23362
|
-
/** `primary` is the one member that carries the group's identity. */
|
|
23363
|
-
role: _enum([
|
|
23364
|
-
"primary",
|
|
23365
|
-
"sibling",
|
|
23366
|
-
"child"
|
|
23367
|
-
]).nullable(),
|
|
23368
|
-
joinedAt: number(),
|
|
23369
|
-
/** Tier 1 — the sub-class (`dog`, `van`), resolved from the member's track
|
|
23370
|
-
* at read time. Absent when nothing resolved, never an empty string. */
|
|
23371
|
-
label: string().optional(),
|
|
23372
|
-
/** Tier 2 — the instance: a person's name, a plate. Absent when the pipeline
|
|
23373
|
-
* recognised nobody, and absent for a member whose track has been pruned —
|
|
23374
|
-
* a thumbnail that names the wrong person is worse than one naming nobody. */
|
|
23375
|
-
subLabel: string().optional()
|
|
23376
|
-
})).readonly()
|
|
23377
|
-
});
|
|
23378
|
-
/**
|
|
23379
|
-
* What a LIST of groups carries: the envelope plus what it is MADE OF.
|
|
23380
|
-
*
|
|
23381
|
-
* Coarse on purpose — the operator's rule is "only the rough data on the list,
|
|
23382
|
-
* we extend when we notice we need more". Enough to draw the card ("two people
|
|
23383
|
-
* and a dog") and no more. The MEMBERS, their names and the per-member links
|
|
23384
|
-
* are on {@link getSummary}: shipping every member of every group so a client
|
|
23385
|
-
* can count them turns a page of two hundred groups into a thousand records to
|
|
23386
|
-
* draw two hundred badges.
|
|
23387
|
-
*/
|
|
23388
|
-
var SummaryListItemSchema = object({
|
|
23389
|
-
summary: SummarySchema,
|
|
23390
|
-
/** Class counts, most numerous first; `className: null` is a member whose
|
|
23391
|
-
* class never resolved, counted so the counts add up to `memberCount`. */
|
|
23392
|
-
classes: array(object({
|
|
23393
|
-
className: string().nullable(),
|
|
23394
|
-
count: number().int().positive()
|
|
23395
|
-
})).readonly()
|
|
23396
|
-
});
|
|
23397
|
-
var SummariesPageSchema = object({ summaries: array(SummaryListItemSchema).readonly() });
|
|
23398
|
-
/**
|
|
23399
|
-
* The paged feed, deliberately the SAME shape as {@link RecentTracksQueryInput}.
|
|
23400
|
-
*
|
|
23401
|
-
* The reel on the cameras page and the Events gallery both ride a cursor, so a
|
|
23402
|
-
* summaries feed that could only answer "the last N for these cameras"
|
|
23403
|
-
* (`listSummaries`) would make groups available in the timeline and nowhere
|
|
23404
|
-
* else. Two feeds with different ordering contracts would be two ideas of what
|
|
23405
|
-
* "newest" means, on one screen.
|
|
23406
|
-
*/
|
|
23407
|
-
var RecentSummariesQueryInput = object({
|
|
23408
|
-
/** Devices to merge. An empty array yields an empty page. */
|
|
23409
|
-
deviceIds: array(number()),
|
|
23410
|
-
/** Window lower bound on `lastActiveAt` (inclusive). */
|
|
23411
|
-
since: number().optional(),
|
|
23412
|
-
/** Window upper bound on `lastActiveAt` (inclusive). */
|
|
23413
|
-
until: number().optional(),
|
|
23414
|
-
limit: number().int().min(1).max(500).default(100),
|
|
23415
|
-
/** Opaque continuation cursor from a previous page's `nextCursor`. */
|
|
23416
|
-
cursor: string().optional(),
|
|
23417
|
-
/**
|
|
23418
|
-
* Restrict to these classes — THE SAME FIELD `listRecentTracks` takes, and
|
|
23419
|
-
* deliberately the same name: the events filter tree emits one list of ticked
|
|
23420
|
-
* taxonomy nodes, and a summaries feed that called it something else would
|
|
23421
|
-
* make the operator's one filter component produce two shapes.
|
|
23422
|
-
*
|
|
23423
|
-
* A question about the MEMBERS: a group matches when ANY of them does. "Show
|
|
23424
|
-
* me the arrivals with a dog" has to return the group of four people who had
|
|
23425
|
-
* one with them; a filter on the group's own fields could only ever answer
|
|
23426
|
-
* about its primary.
|
|
23427
|
-
*
|
|
23428
|
-
* Matched against all THREE tiers of a member — the class (`animal`), the
|
|
23429
|
-
* sub-class (`dog`) and the instance (a name, a plate) — because which tier a
|
|
23430
|
-
* ticked node lives on is the taxonomy's business, not the caller's. `dog` is
|
|
23431
|
-
* an event kind in the tree and a tier-1 label on an `animal` track; a filter
|
|
23432
|
-
* that read only the class would answer "animal" and never "dog".
|
|
23433
|
-
*
|
|
23434
|
-
* ABSENT or EMPTY means no filter — absent is not a selection of none.
|
|
23435
|
-
*/
|
|
23436
|
-
classes: array(string().min(1).max(60)).max(40).optional()
|
|
23437
|
-
});
|
|
23438
|
-
var RecentSummariesPageSchema = object({
|
|
23439
|
-
/** Ordered by (`lastActiveAt` DESC, id DESC). Same light item as
|
|
23440
|
-
* {@link listSummaries} — one list shape, so a card renders the same
|
|
23441
|
-
* whichever feed drew it. */
|
|
23442
|
-
summaries: array(SummaryListItemSchema).readonly(),
|
|
23443
|
-
nextCursor: string().nullable()
|
|
23444
|
-
});
|
|
23445
23418
|
var RecentTracksPageSchema = object({
|
|
23446
23419
|
/** Merged page, ordered by (`lastSeen` DESC, `trackId` DESC). */
|
|
23447
23420
|
tracks: array(TrackSchema).readonly(),
|
|
@@ -23994,15 +23967,6 @@ var pipelineAnalyticsCapability = {
|
|
|
23994
23967
|
* are not included (same contract as `listTracks`).
|
|
23995
23968
|
*/
|
|
23996
23969
|
listRecentTracks: method(RecentTracksQueryInput, RecentTracksPageSchema),
|
|
23997
|
-
/** Newest first by `openedAt`, for a camera set, inside an optional window. */
|
|
23998
|
-
listSummaries: method(SummariesQueryInput, SummariesPageSchema),
|
|
23999
|
-
/**
|
|
24000
|
-
* The PAGED feed — the reel and the Events gallery. Same cursor contract as
|
|
24001
|
-
* {@link listRecentTracks}, so one screen cannot hold two ideas of newest.
|
|
24002
|
-
*/
|
|
24003
|
-
listRecentSummaries: method(RecentSummariesQueryInput, RecentSummariesPageSchema),
|
|
24004
|
-
/** One summary with its member track ids; `null` for an id nobody wrote. */
|
|
24005
|
-
getSummary: method(object({ id: string() }), SummaryDetailSchema.nullable()),
|
|
24006
23970
|
clearTracks: method(object({ deviceId: number() }), _void(), {
|
|
24007
23971
|
kind: "mutation",
|
|
24008
23972
|
auth: "admin"
|
|
@@ -47374,12 +47338,6 @@ Object.freeze({
|
|
|
47374
47338
|
addonId: null,
|
|
47375
47339
|
access: "view"
|
|
47376
47340
|
},
|
|
47377
|
-
"pipelineAnalytics.getSummary": {
|
|
47378
|
-
capName: "pipeline-analytics",
|
|
47379
|
-
capScope: "device",
|
|
47380
|
-
addonId: null,
|
|
47381
|
-
access: "view"
|
|
47382
|
-
},
|
|
47383
47341
|
"pipelineAnalytics.getTrack": {
|
|
47384
47342
|
capName: "pipeline-analytics",
|
|
47385
47343
|
capScope: "device",
|
|
@@ -47440,12 +47398,6 @@ Object.freeze({
|
|
|
47440
47398
|
addonId: null,
|
|
47441
47399
|
access: "view"
|
|
47442
47400
|
},
|
|
47443
|
-
"pipelineAnalytics.listRecentSummaries": {
|
|
47444
|
-
capName: "pipeline-analytics",
|
|
47445
|
-
capScope: "device",
|
|
47446
|
-
addonId: null,
|
|
47447
|
-
access: "view"
|
|
47448
|
-
},
|
|
47449
47401
|
"pipelineAnalytics.listRecentTracks": {
|
|
47450
47402
|
capName: "pipeline-analytics",
|
|
47451
47403
|
capScope: "device",
|
|
@@ -47476,12 +47428,6 @@ Object.freeze({
|
|
|
47476
47428
|
addonId: null,
|
|
47477
47429
|
access: "view"
|
|
47478
47430
|
},
|
|
47479
|
-
"pipelineAnalytics.listSummaries": {
|
|
47480
|
-
capName: "pipeline-analytics",
|
|
47481
|
-
capScope: "device",
|
|
47482
|
-
addonId: null,
|
|
47483
|
-
access: "view"
|
|
47484
|
-
},
|
|
47485
47431
|
"pipelineAnalytics.listTrackMedia": {
|
|
47486
47432
|
capName: "pipeline-analytics",
|
|
47487
47433
|
capScope: "device",
|
|
@@ -51651,11 +51597,6 @@ Object.freeze({
|
|
|
51651
51597
|
form: "single",
|
|
51652
51598
|
optional: true
|
|
51653
51599
|
}],
|
|
51654
|
-
"pipelineAnalytics.listRecentSummaries": [{
|
|
51655
|
-
name: "deviceIds",
|
|
51656
|
-
form: "array",
|
|
51657
|
-
optional: false
|
|
51658
|
-
}],
|
|
51659
51600
|
"pipelineAnalytics.listRecentTracks": [{
|
|
51660
51601
|
name: "deviceIds",
|
|
51661
51602
|
form: "array",
|
|
@@ -51666,11 +51607,6 @@ Object.freeze({
|
|
|
51666
51607
|
form: "array",
|
|
51667
51608
|
optional: true
|
|
51668
51609
|
}],
|
|
51669
|
-
"pipelineAnalytics.listSummaries": [{
|
|
51670
|
-
name: "deviceIds",
|
|
51671
|
-
form: "array",
|
|
51672
|
-
optional: false
|
|
51673
|
-
}],
|
|
51674
51610
|
"pipelineAnalytics.listTrackMedia": [{
|
|
51675
51611
|
name: "deviceId",
|
|
51676
51612
|
form: "single",
|
|
@@ -55415,4 +55351,4 @@ function buildClipModelRegistry(entries) {
|
|
|
55415
55351
|
/** The built-in catalog's registry. */
|
|
55416
55352
|
var BUILTIN_CLIP_MODELS = buildClipModelRegistry(CLIP_IMAGE_MODELS);
|
|
55417
55353
|
//#endregion
|
|
55418
|
-
export { NcRuleSchema as $,
|
|
55354
|
+
export { NcRuleSchema as $, partialRecord as $n, isScheduleActive as $t, LockStateSchema as A, DEFAULT_FIRST_SIGHTING_FRESHNESS_MS as An, audioMetricsCapability as At, NC_DEFAULT_SNOOZE_MINUTES as B, defineCustomActions as Bn, embeddingRefusalOf as Bt, EMBEDDING_REQUIREMENTS_UNAVAILABLE as C, systemEventFamilyProblems as Cn, TimelapseRuleInputSchema as Ct, FULL_IMAGE_BBOX as D, templateVarsFor as Dn, addonWidgetsSourceCapability as Dt, FIRST_LEVEL_MACRO_CLASSES as E, templateCarriesSummary as En, TrackSourceSchema as Et, MediaFileKindEnum as F, errMsg as Fn, deriveRecordingMode as Ft, NC_TAXONOMY as G, sleep as Gn, faceGalleryCapability as Gt, NC_SNOOZE_MAX_MINUTES as H, isDeviceScopedCap as Hn, embeddingRequirementsUnavailableError as Ht, MotionTriggeredBySchema as I, BaseAddon as In, describeSystemEventDeliveryProblem as It, NcAlarmSettingsPatchSchema as J, boolean as Jn, gifFromMp4Args as Jt, NC_TEMPLATE_VARS as K, _enum as Kn, failureContributionCapability as Kt, NC_ALARM_SYSTEM_EVENT_KINDS as L, CamProfileSchema as Ln, describeSystemEventFamilyProblem as Lt, MAX_BIRTH_DECISION_RECORDS as M, evaluateSensorEdge as Mn, buildEventKindDescriptor as Mt, MAX_BIRTH_LATENCY_PROXY_MS as N, isSourceCap as Nn, consumableLowPercentOf as Nt, FailureCounters as O, vectorDimFromBase64 as On, alarmPanelCapability as Ot, MOTION_CLOSE_AFTER_MS as P, DeviceType as Pn, cosineSimilarity as Pt, NcRulePatchSchema as Q, object as Qn, isMediaOwnerType as Qt, NC_CONDITION_CATALOG as R, createEvent as Rn, embeddingEncoderCapability as Rt, EMBEDDING_REQUIREMENTS_FAILED as S, systemEventDeliveryProblems as Sn, TIMELAPSE_DENSE_FLOOR_SEC as St, EVENT_OWNER_TYPES as T, systemEventSummaryScheduleOf as Tn, TimelapseRuleSchema as Tt, NC_SYSTEM_EVENT_KIND_GROUP_SPECS as U, nodePin as Un, encodeVectorBase64 as Ut, NC_SENSOR_TRANSITION_KINDS as V, hydrateSchema as Vn, embeddingRequirementsFailedError as Vt, NC_TANK_SYSTEM_EVENT_KINDS as W, normalizeNodeId as Wn, evictionPolicyOfLocation as Wt, NcConditionsSchema as X, literal as Xn, isEventOwnerType as Xt, NcConditionDescriptorSchema as Y, discriminatedUnion as Yn, isDetectionMacroClass as Yt, NcRuleInputSchema as Z, number as Zn, isKnownTemplateVar as Zt, DEFAULT_TIMELAPSE_PREVIEW_TEXT as _, sceneMonitorCapability as _n, SCENE_CONFIRM_DEFAULT_TIMEOUT_MS as _t, CLIP_EMBEDDING_STEP_ID as a, notificationRulesCapability as an, NcSnoozeSuppressedSchema as at, DeclaredDevices as b, storageOccupancyCapability as bn, SCENE_DIVERGED as bt, resolveClusterModelPin as c, pipelineAnalyticsCapability as cn, NcTemplatePreviewInputSchema as ct, ArchivedDebugNoteSchema as d, readMotionTriggeredBy as dn, OpsLogEntrySchema as dt, isSystemDelivery as en, record as er, NcRuleTargetSchema as et, BaseDevice as f, readTimelapseGeneratedAt as fn, PoolMemoryWatchdog as ft, DEFAULT_EVENT_COLOR as g, ruleBelongsToAlarm as gn, RetrainStatusSchema as gt, CoverStateSchema as h, resolvePoolMemoryPolicy as hn, RebuildObjectEmbeddingsRefusalSchema as ht, CLIP_TEXT_MODELS as i, mayWriteToLocation as in, NcSnoozeSchema as it, MAX_ARCHIVED_DEBUG_NOTES as j, canonicalHash as jn, audioModeOf as jt, LabelAttributionSchema as k, zoneAnalyticsCapability as kn, assertTimelapseCadences as kt, AUDIO_MACRO_LABELS as l, plateGalleryCapability as ln, NcTemplatePreviewSchema as lt, COCO_TO_MACRO as m, resolveLocationMode as mn, RECORDING_SOURCE_CAMSTACK_ADDON as mt, DEFAULT_CLIP_MODEL as n, isVectorIndexDimConflict as nn, unknown as nr, NcScheduleSchema as nt, FACE_EMBEDDING_STEP_ID as o, occupancyScope as on, NcSystemEventKindSchema as ot, BirthDecisionRecordSchema as p, resolveClipSearchMinScore as pn, RECORDING_EXPORT_MAX_READ_BYTES as pt, NcAlarmConfigSchema as q, array as qn, gifDeriveSpeed as qt, CLIP_IMAGE_MODELS as r, kebabToCamel as rn, EventCategory as rr, NcSnoozeInputSchema as rt, readClusterModelPinStrict as s, parseProcStatus as sn, NcTaxonomySchema as st, BUILTIN_CLIP_MODELS as t, isSystemEventSummaryRule as tn, string as tr, NcRuleUpdateInputSchema as tt, AlarmArmModeSchema as u, readDeviceStateFrom as un, NcTemplateVarDescriptorSchema as ut, DETECTION_MACRO_CLASSES as v, sensorRaisedOf as vn, SCENE_DEFAULT_ANCHOR_THRESHOLD as vt, EVENT_KIND_BY_CAP as w, systemEventFilterApplies as wn, TimelapseRulePatchSchema as wt, EMBEDDING_MODEL_FAILED as x, subKindsOf as xn, SceneMonitorSchema as xt, DETECTION_PIPELINE_CAP_NAME as y, servedTemplateVars as yn, SCENE_DEFAULT_UNCOVERED_POLICY as yt, NC_CONSUMABLE_SYSTEM_EVENT_KINDS as z, customAction as zn, embeddingModelFailedError as zt };
|