@camstack/addon-post-analysis 1.2.342 → 1.2.343
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-ClEoe-WP.js → clip-model-registry-Cd_y9S4U.js} +301 -7
- package/dist/{clip-model-registry-Dhjpee-Q.mjs → clip-model-registry-DZz3e781.mjs} +290 -8
- 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-XzFWnlu-.mjs → _virtual_mf-localSharedImportMap___mfe_internal__addon_pipeline_analytics_widgets-DrdO3Pxp.mjs} +2 -2
- package/dist/pipeline-analytics/_virtual_mf___mfe_internal__addon_pipeline_analytics_widgets__loadShare___mf_0_camstack_mf_1_types__loadShare__.js-DEq-B6oq.mjs +26 -0
- package/dist/pipeline-analytics/_virtual_mf___mfe_internal__addon_pipeline_analytics_widgets__loadShare___mf_0_camstack_mf_1_ui_mf_2_library__loadShare__.js-CiTUMvVf.mjs +26 -0
- package/dist/pipeline-analytics/{hostInit-C6P0R93E.mjs → hostInit-DPNnWr-m.mjs} +2 -2
- package/dist/pipeline-analytics/index.js +876 -239
- package/dist/pipeline-analytics/index.mjs +868 -231
- package/dist/pipeline-analytics/remoteEntry.js +1 -1
- package/package.json +2 -2
- package/dist/pipeline-analytics/_virtual_mf___mfe_internal__addon_pipeline_analytics_widgets__loadShare___mf_0_camstack_mf_1_types__loadShare__.js-CsAksj5u.mjs +0 -26
- package/dist/pipeline-analytics/_virtual_mf___mfe_internal__addon_pipeline_analytics_widgets__loadShare___mf_0_camstack_mf_1_ui_mf_2_library__loadShare__.js-Cp4eQz57.mjs +0 -26
|
@@ -5442,7 +5442,7 @@ var ZodIssueCode = {
|
|
|
5442
5442
|
var ZodFirstPartyTypeKind;
|
|
5443
5443
|
ZodFirstPartyTypeKind || (ZodFirstPartyTypeKind = {});
|
|
5444
5444
|
//#endregion
|
|
5445
|
-
//#region ../types/dist/sleep-
|
|
5445
|
+
//#region ../types/dist/sleep-B0JG7-_F.mjs
|
|
5446
5446
|
/**
|
|
5447
5447
|
* The audio chunk plane's byte format, and the ONE expansion from a coded
|
|
5448
5448
|
* window to float samples (D455).
|
|
@@ -17406,6 +17406,10 @@ var DeviceInfoSchema = object({
|
|
|
17406
17406
|
isCamera: boolean(),
|
|
17407
17407
|
/** Current config values — serializable snapshot */
|
|
17408
17408
|
config: record(string(), unknown()),
|
|
17409
|
+
/** Paths inside `config` the device's schema declares secret (D783) —
|
|
17410
|
+
* what the non-admin redaction withholds. Paths, never values. Absent
|
|
17411
|
+
* when the owning runner has not reported them. */
|
|
17412
|
+
secretConfigPaths: array(string()).optional(),
|
|
17409
17413
|
/** Hardware + identity blob (manufacturer / model / firmware / sn /
|
|
17410
17414
|
* uid / mac / …). Populated by drivers; editable via setMetadata. */
|
|
17411
17415
|
metadata: record(string(), unknown()).nullable().optional(),
|
|
@@ -17626,7 +17630,13 @@ var DeviceRegisterPayloadSchema = object({
|
|
|
17626
17630
|
* call (workers re-register on init), so probe-driven updates
|
|
17627
17631
|
* (e.g. PTZ flag flipping after the abilities probe) propagate. */
|
|
17628
17632
|
features: array(string()).optional(),
|
|
17629
|
-
config: record(string(), unknown())
|
|
17633
|
+
config: record(string(), unknown()),
|
|
17634
|
+
/** Config paths the device's own schema DECLARES secret
|
|
17635
|
+
* (`.meta({ secret: true })` — dotted, `[]` for array items, e.g.
|
|
17636
|
+
* `connection.password`). Re-published on every register; the non-admin
|
|
17637
|
+
* redaction withholds them at any depth (D783). Optional: an older runner
|
|
17638
|
+
* omits it and the keyword backstop applies. */
|
|
17639
|
+
secretConfigPaths: array(string()).optional()
|
|
17630
17640
|
});
|
|
17631
17641
|
var DeviceRemovePayloadSchema = object({ deviceId: number() });
|
|
17632
17642
|
var DevicePersistConfigPayloadSchema = object({
|
|
@@ -20370,7 +20380,14 @@ var LoginMethodContributionSchema = discriminatedUnion("kind", [
|
|
|
20370
20380
|
icon: string().optional(),
|
|
20371
20381
|
/** Addon-owned HTTP route the button navigates to (GET). */
|
|
20372
20382
|
startUrl: string(),
|
|
20373
|
-
stage: LoginStageEnum
|
|
20383
|
+
stage: LoginStageEnum,
|
|
20384
|
+
/**
|
|
20385
|
+
* The provider names an external identity a signed-in user can link to
|
|
20386
|
+
* their own account (D782): `auth.listLinkableProviders` /
|
|
20387
|
+
* `beginExternalLink` offer exactly the redirect methods that set this,
|
|
20388
|
+
* whatever their id. Absent / false — a login button only (magic-link).
|
|
20389
|
+
*/
|
|
20390
|
+
linkable: boolean().optional()
|
|
20374
20391
|
}),
|
|
20375
20392
|
object({
|
|
20376
20393
|
kind: literal("widget"),
|
|
@@ -26955,7 +26972,13 @@ var RetrainFrameSchema = object({
|
|
|
26955
26972
|
sizeBytes: number().int(),
|
|
26956
26973
|
width: number().int(),
|
|
26957
26974
|
height: number().int(),
|
|
26958
|
-
copiedAt: number()
|
|
26975
|
+
copiedAt: number(),
|
|
26976
|
+
/** When the CAMERA captured the frame. Absent on a copy taken before D785. */
|
|
26977
|
+
capturedAt: number().optional(),
|
|
26978
|
+
/** The operator's "every subject in this frame is boxed". Detector
|
|
26979
|
+
* evaluation keeps only complete frames: an unboxed subject would count as
|
|
26980
|
+
* a false positive. */
|
|
26981
|
+
complete: boolean()
|
|
26959
26982
|
});
|
|
26960
26983
|
/** Why a copy-on-select could not be honoured — named, never a silent skip. */
|
|
26961
26984
|
var RetrainCopyRefusalSchema = _enum([
|
|
@@ -26976,6 +26999,51 @@ var RetrainFrameListSchema = object({
|
|
|
26976
26999
|
/** What the page pre-selects — the native key frame when one survives. */
|
|
26977
27000
|
autoPickMediaId: number().int().optional()
|
|
26978
27001
|
});
|
|
27002
|
+
/**
|
|
27003
|
+
* Which frames an annotated export carries. Every field narrows; an empty
|
|
27004
|
+
* filter is every annotated copy. A dataset VERSION is a frozen `frameIds`
|
|
27005
|
+
* list owned by whoever trains (the training orchestrator), so `frameIds` is
|
|
27006
|
+
* the primitive a version export uses; `batchId` re-selects what an earlier
|
|
27007
|
+
* export carried (`exportedInBatch`).
|
|
27008
|
+
*/
|
|
27009
|
+
var RetrainExportFilterSchema = object({
|
|
27010
|
+
deviceIds: array(number()).optional(),
|
|
27011
|
+
frameIds: array(string()).max(2e4).optional(),
|
|
27012
|
+
batchId: string().optional(),
|
|
27013
|
+
/** Only frames the operator marked complete (all subjects boxed). */
|
|
27014
|
+
completeOnly: boolean().optional()
|
|
27015
|
+
});
|
|
27016
|
+
/**
|
|
27017
|
+
* `frames`: the full frame copies, boxes in `annotations.json`.
|
|
27018
|
+
* `crops`: additionally one JPEG per subject, cut with the runtime detail-crop
|
|
27019
|
+
* convention — the classifier layout.
|
|
27020
|
+
*/
|
|
27021
|
+
var RetrainExportLayoutSchema = _enum(["frames", "crops"]);
|
|
27022
|
+
/**
|
|
27023
|
+
* Where `writeRetrainArchive` streams the tar: one HTTP request whose body is
|
|
27024
|
+
* the archive, sent chunk by chunk. Covers a presigned PUT and a provider
|
|
27025
|
+
* addon's data-plane upload route alike. Headers are sent verbatim and never
|
|
27026
|
+
* logged.
|
|
27027
|
+
*/
|
|
27028
|
+
var RetrainArchiveTargetSchema = object({
|
|
27029
|
+
kind: literal("http"),
|
|
27030
|
+
method: _enum(["PUT", "POST"]),
|
|
27031
|
+
url: string().url(),
|
|
27032
|
+
headers: record(string(), string()).optional()
|
|
27033
|
+
});
|
|
27034
|
+
var RetrainArchiveResultSchema = object({
|
|
27035
|
+
batchId: string(),
|
|
27036
|
+
frames: number().int(),
|
|
27037
|
+
crops: number().int(),
|
|
27038
|
+
annotations: number().int(),
|
|
27039
|
+
/** Frames planned but not shipped (unreadable copy, path too long). */
|
|
27040
|
+
missing: number().int(),
|
|
27041
|
+
bytes: number().int(),
|
|
27042
|
+
/** sha256 of the exact bytes sent. */
|
|
27043
|
+
sha256: string(),
|
|
27044
|
+
/** The target's HTTP status. */
|
|
27045
|
+
status: number().int()
|
|
27046
|
+
});
|
|
26979
27047
|
/** What the operator asked the assist to look for. */
|
|
26980
27048
|
var RetrainAssistSubjectSchema = discriminatedUnion("kind", [object({
|
|
26981
27049
|
kind: literal("package"),
|
|
@@ -28345,11 +28413,41 @@ var pipelineAnalyticsCapability = {
|
|
|
28345
28413
|
* out, so two crops of the same subject can never end up in one feature
|
|
28346
28414
|
* space (D52).
|
|
28347
28415
|
*/
|
|
28348
|
-
getRetrainExportUrl: method(
|
|
28416
|
+
getRetrainExportUrl: method(RetrainExportFilterSchema.extend({ layout: RetrainExportLayoutSchema.optional() }), object({ url: string() }), {
|
|
28349
28417
|
kind: "query",
|
|
28350
28418
|
auth: "admin"
|
|
28351
28419
|
}),
|
|
28352
28420
|
/**
|
|
28421
|
+
* The operator's "every subject in this frame is boxed" — set and cleared
|
|
28422
|
+
* by hand, never derived: a frame with no box may be a complete hard
|
|
28423
|
+
* negative, and a frame with three boxes may still miss a fourth person.
|
|
28424
|
+
*/
|
|
28425
|
+
setRetrainFrameComplete: method(object({
|
|
28426
|
+
deviceId: number(),
|
|
28427
|
+
trackId: string(),
|
|
28428
|
+
frameId: string(),
|
|
28429
|
+
complete: boolean()
|
|
28430
|
+
}), RetrainFrameSchema, {
|
|
28431
|
+
kind: "mutation",
|
|
28432
|
+
auth: "admin"
|
|
28433
|
+
}),
|
|
28434
|
+
/**
|
|
28435
|
+
* Stream the annotated archive to a TARGET instead of a browser — the
|
|
28436
|
+
* same tar `getRetrainExportUrl` serves (manifest first, one JPEG in
|
|
28437
|
+
* memory at a time, paced), written chunk by chunk into one HTTP request.
|
|
28438
|
+
* The bytes never cross this cap and never land on the hub's disk; the
|
|
28439
|
+
* answer is what was sent, with its sha256.
|
|
28440
|
+
*/
|
|
28441
|
+
writeRetrainArchive: method(object({
|
|
28442
|
+
filter: RetrainExportFilterSchema,
|
|
28443
|
+
layout: RetrainExportLayoutSchema,
|
|
28444
|
+
target: RetrainArchiveTargetSchema
|
|
28445
|
+
}), RetrainArchiveResultSchema, {
|
|
28446
|
+
kind: "mutation",
|
|
28447
|
+
auth: "admin",
|
|
28448
|
+
timeoutMs: 60 * 6e4
|
|
28449
|
+
}),
|
|
28450
|
+
/**
|
|
28353
28451
|
* The media an EVENT owns.
|
|
28354
28452
|
*
|
|
28355
28453
|
* `ownerType` is REQUIRED, and that is the whole correction (D482). An
|
|
@@ -32754,7 +32852,19 @@ var SsoBridgeClaimsSchema = object({
|
|
|
32754
32852
|
* editing a descriptor must not retroactively extend or shorten a link the
|
|
32755
32853
|
* operator already consented to.
|
|
32756
32854
|
*/
|
|
32757
|
-
refreshTtl: union([number().int().positive(), literal("never")]).optional()
|
|
32855
|
+
refreshTtl: union([number().int().positive(), literal("never")]).optional(),
|
|
32856
|
+
/**
|
|
32857
|
+
* Opaque handle of a hub-side LINK intent (D782). Set by an OIDC callback
|
|
32858
|
+
* that was started from a signed-in user's "Link" button: the finish then
|
|
32859
|
+
* links this identity to the intent's user instead of signing anyone in.
|
|
32860
|
+
* The handle carries no user id — the hub resolves it, single-use.
|
|
32861
|
+
*/
|
|
32862
|
+
linkIntent: string().optional(),
|
|
32863
|
+
/**
|
|
32864
|
+
* Verified `iss` of the id_token behind an OIDC login bridge (D782). A
|
|
32865
|
+
* subject is unique only per issuer, so a link is bound to it.
|
|
32866
|
+
*/
|
|
32867
|
+
issuer: string().optional()
|
|
32758
32868
|
});
|
|
32759
32869
|
var ssoBridgeCapability = {
|
|
32760
32870
|
name: "sso-bridge",
|
|
@@ -35297,7 +35407,22 @@ var webrtcSessionCapability = {
|
|
|
35297
35407
|
* field their hints were silently stripped by the schema and the
|
|
35298
35408
|
* adaptive ladder started blind on the client's display size.
|
|
35299
35409
|
*/
|
|
35300
|
-
hints: webrtcClientHintsSchema.optional()
|
|
35410
|
+
hints: webrtcClientHintsSchema.optional(),
|
|
35411
|
+
/**
|
|
35412
|
+
* Talk-back (D771): relay the PEER's audio to the device's speaker
|
|
35413
|
+
* through the `intercom` cap's push-talk triple. When `true` and the
|
|
35414
|
+
* offer lets the peer send audio, the answer's audio is `sendrecv`
|
|
35415
|
+
* and every inbound frame goes to `intercom.pushTalkAudio` for this
|
|
35416
|
+
* `deviceId`; absent/false answers `sendonly`, as for every viewer.
|
|
35417
|
+
*
|
|
35418
|
+
* TRUSTED-CALLER ONLY. Set by the Alexa export for an Echo on a camera
|
|
35419
|
+
* with `intercom`, when the linked user may control that camera. The
|
|
35420
|
+
* hub STRIPS it from every request-bound call (a browser), exactly as
|
|
35421
|
+
* it overwrites `relayOnly` — a viewer's talk permission is the
|
|
35422
|
+
* intercom cap's own surface (share tokens gate it there), and this
|
|
35423
|
+
* flag must not become a second door to the camera's speaker.
|
|
35424
|
+
*/
|
|
35425
|
+
talkback: boolean().optional()
|
|
35301
35426
|
}), object({
|
|
35302
35427
|
sessionId: string(),
|
|
35303
35428
|
sdpAnswer: string()
|
|
@@ -47221,6 +47346,22 @@ var TotpStatusSchema = object({
|
|
|
47221
47346
|
* delegation, structural caller-scope subset check goes inside the
|
|
47222
47347
|
* provider.
|
|
47223
47348
|
*/
|
|
47349
|
+
var ExternalIdentitySchema = object({
|
|
47350
|
+
/** Login-method id of the provider instance, e.g. `auth-oidc/authentik`. */
|
|
47351
|
+
provider: string(),
|
|
47352
|
+
/** The IdP's stable subject (`sub`) for this account. */
|
|
47353
|
+
subject: string(),
|
|
47354
|
+
/** The verified `iss` of the IdP the identity was linked under — `sub` is unique only per issuer. */
|
|
47355
|
+
issuer: string(),
|
|
47356
|
+
userId: string(),
|
|
47357
|
+
/** What the IdP called the account at link time (username / email) — display only. */
|
|
47358
|
+
label: string().optional(),
|
|
47359
|
+
linkedAt: number()
|
|
47360
|
+
});
|
|
47361
|
+
var ExternalIdentityKeySchema = object({
|
|
47362
|
+
provider: string().min(1),
|
|
47363
|
+
subject: string().min(1)
|
|
47364
|
+
});
|
|
47224
47365
|
var userManagementCapability = {
|
|
47225
47366
|
name: "user-management",
|
|
47226
47367
|
scope: "system",
|
|
@@ -47363,6 +47504,32 @@ var userManagementCapability = {
|
|
|
47363
47504
|
username: string(),
|
|
47364
47505
|
scopes: array(TokenScopeSchema)
|
|
47365
47506
|
}).nullable(), { access: "view" }),
|
|
47507
|
+
listExternalIdentities: method(object({ userId: string() }), array(ExternalIdentitySchema), { auth: "admin" }),
|
|
47508
|
+
/** The user an identity is linked to, or `null`. */
|
|
47509
|
+
findUserByExternalIdentity: method(ExternalIdentityKeySchema, object({
|
|
47510
|
+
userId: string(),
|
|
47511
|
+
issuer: string()
|
|
47512
|
+
}).nullable(), { auth: "admin" }),
|
|
47513
|
+
/**
|
|
47514
|
+
* Link `(provider, subject)` to `userId`. Idempotent for the same user;
|
|
47515
|
+
* REFUSES (throws) an identity already linked to another user, and a
|
|
47516
|
+
* user that does not exist.
|
|
47517
|
+
*/
|
|
47518
|
+
linkExternalIdentity: method(ExternalIdentityKeySchema.extend({
|
|
47519
|
+
userId: string(),
|
|
47520
|
+
issuer: string().min(1),
|
|
47521
|
+
label: string().optional()
|
|
47522
|
+
}), object({ success: literal(true) }), {
|
|
47523
|
+
kind: "mutation",
|
|
47524
|
+
auth: "admin",
|
|
47525
|
+
access: "create"
|
|
47526
|
+
}),
|
|
47527
|
+
/** Remove one link of `userId`. `success: false` when it was not linked to that user. */
|
|
47528
|
+
unlinkExternalIdentity: method(ExternalIdentityKeySchema.extend({ userId: string() }), object({ success: boolean() }), {
|
|
47529
|
+
kind: "mutation",
|
|
47530
|
+
auth: "admin",
|
|
47531
|
+
access: "delete"
|
|
47532
|
+
}),
|
|
47366
47533
|
listOauthSessions: method(_void(), array(OauthSessionSummarySchema), { auth: "admin" }),
|
|
47367
47534
|
revokeOauthSession: method(object({ id: string() }), object({ success: boolean() }), {
|
|
47368
47535
|
kind: "mutation",
|
|
@@ -53582,6 +53749,12 @@ Object.freeze({
|
|
|
53582
53749
|
addonId: null,
|
|
53583
53750
|
access: "create"
|
|
53584
53751
|
},
|
|
53752
|
+
"pipelineAnalytics.setRetrainFrameComplete": {
|
|
53753
|
+
capName: "pipeline-analytics",
|
|
53754
|
+
capScope: "device",
|
|
53755
|
+
addonId: null,
|
|
53756
|
+
access: "create"
|
|
53757
|
+
},
|
|
53585
53758
|
"pipelineAnalytics.setTrackFlags": {
|
|
53586
53759
|
capName: "pipeline-analytics",
|
|
53587
53760
|
capScope: "device",
|
|
@@ -53618,6 +53791,12 @@ Object.freeze({
|
|
|
53618
53791
|
addonId: null,
|
|
53619
53792
|
access: "delete"
|
|
53620
53793
|
},
|
|
53794
|
+
"pipelineAnalytics.writeRetrainArchive": {
|
|
53795
|
+
capName: "pipeline-analytics",
|
|
53796
|
+
capScope: "device",
|
|
53797
|
+
addonId: null,
|
|
53798
|
+
access: "create"
|
|
53799
|
+
},
|
|
53621
53800
|
"pipelineExecutor.cacheFrameInPool": {
|
|
53622
53801
|
capName: "pipeline-executor",
|
|
53623
53802
|
capScope: "system",
|
|
@@ -55970,18 +56149,36 @@ Object.freeze({
|
|
|
55970
56149
|
addonId: null,
|
|
55971
56150
|
access: "delete"
|
|
55972
56151
|
},
|
|
56152
|
+
"userManagement.findUserByExternalIdentity": {
|
|
56153
|
+
capName: "user-management",
|
|
56154
|
+
capScope: "system",
|
|
56155
|
+
addonId: null,
|
|
56156
|
+
access: "view"
|
|
56157
|
+
},
|
|
55973
56158
|
"userManagement.getTotpStatus": {
|
|
55974
56159
|
capName: "user-management",
|
|
55975
56160
|
capScope: "system",
|
|
55976
56161
|
addonId: null,
|
|
55977
56162
|
access: "view"
|
|
55978
56163
|
},
|
|
56164
|
+
"userManagement.linkExternalIdentity": {
|
|
56165
|
+
capName: "user-management",
|
|
56166
|
+
capScope: "system",
|
|
56167
|
+
addonId: null,
|
|
56168
|
+
access: "create"
|
|
56169
|
+
},
|
|
55979
56170
|
"userManagement.listApiKeys": {
|
|
55980
56171
|
capName: "user-management",
|
|
55981
56172
|
capScope: "system",
|
|
55982
56173
|
addonId: null,
|
|
55983
56174
|
access: "view"
|
|
55984
56175
|
},
|
|
56176
|
+
"userManagement.listExternalIdentities": {
|
|
56177
|
+
capName: "user-management",
|
|
56178
|
+
capScope: "system",
|
|
56179
|
+
addonId: null,
|
|
56180
|
+
access: "view"
|
|
56181
|
+
},
|
|
55985
56182
|
"userManagement.listOauthSessions": {
|
|
55986
56183
|
capName: "user-management",
|
|
55987
56184
|
capScope: "system",
|
|
@@ -56060,6 +56257,12 @@ Object.freeze({
|
|
|
56060
56257
|
addonId: null,
|
|
56061
56258
|
access: "create"
|
|
56062
56259
|
},
|
|
56260
|
+
"userManagement.unlinkExternalIdentity": {
|
|
56261
|
+
capName: "user-management",
|
|
56262
|
+
capScope: "system",
|
|
56263
|
+
addonId: null,
|
|
56264
|
+
access: "delete"
|
|
56265
|
+
},
|
|
56063
56266
|
"userManagement.updateUser": {
|
|
56064
56267
|
capName: "user-management",
|
|
56065
56268
|
capScope: "system",
|
|
@@ -59575,6 +59778,11 @@ Object.freeze({
|
|
|
59575
59778
|
form: "single",
|
|
59576
59779
|
optional: false
|
|
59577
59780
|
}],
|
|
59781
|
+
"pipelineAnalytics.setRetrainFrameComplete": [{
|
|
59782
|
+
name: "deviceId",
|
|
59783
|
+
form: "single",
|
|
59784
|
+
optional: false
|
|
59785
|
+
}],
|
|
59578
59786
|
"pipelineAnalytics.setTrackFlags": [{
|
|
59579
59787
|
name: "deviceId",
|
|
59580
59788
|
form: "single",
|
|
@@ -63618,6 +63826,80 @@ var FULL_IMAGE_BBOX = Object.freeze({
|
|
|
63618
63826
|
});
|
|
63619
63827
|
DEFAULT_DETAIL_CROP_CONVENTION.paddingRatio;
|
|
63620
63828
|
/**
|
|
63829
|
+
* Derive the crop rectangle for one parent detection.
|
|
63830
|
+
*
|
|
63831
|
+
* Order: pad by `paddingRatio` of the box's own size → optionally square in
|
|
63832
|
+
* pixel space around the padded centre → keep it inside the frame. Pure:
|
|
63833
|
+
* always returns a new rect and never mutates `bbox`.
|
|
63834
|
+
*
|
|
63835
|
+
* Edge handling differs by mode, on purpose:
|
|
63836
|
+
*
|
|
63837
|
+
* - **unsquared** — TRUNCATED at the frame border, byte-for-byte what the live
|
|
63838
|
+
* path has always done (`padAndClampFrameBbox`). A subject against the edge
|
|
63839
|
+
* gets a slightly smaller window. Changing this would silently reinterpret
|
|
63840
|
+
* every edge-touching vector already in the index.
|
|
63841
|
+
* - **squared** — SLID inward instead, because a truncated square is not
|
|
63842
|
+
* square and squaring exists precisely to preserve the aspect the model
|
|
63843
|
+
* sees. It only shrinks when the square is larger than the frame itself.
|
|
63844
|
+
*/
|
|
63845
|
+
function deriveDetailCropRect(bbox, frameWidth, frameHeight, convention) {
|
|
63846
|
+
const padX = convention.paddingRatio * bbox.w;
|
|
63847
|
+
const padY = convention.paddingRatio * bbox.h;
|
|
63848
|
+
const padded = {
|
|
63849
|
+
x: bbox.x - padX,
|
|
63850
|
+
y: bbox.y - padY,
|
|
63851
|
+
w: bbox.w + 2 * padX,
|
|
63852
|
+
h: bbox.h + 2 * padY
|
|
63853
|
+
};
|
|
63854
|
+
return convention.square ? slideInsideFrame(squareInPixels(padded, frameWidth, frameHeight), frameWidth, frameHeight) : truncateToFrame(padded, frameWidth, frameHeight);
|
|
63855
|
+
}
|
|
63856
|
+
/**
|
|
63857
|
+
* Grow the shorter side to the longer one around the window's centre, bounded
|
|
63858
|
+
* by the frame's shorter side — a square larger than the frame cannot exist,
|
|
63859
|
+
* and collapsing to the frame's short side is the most that does.
|
|
63860
|
+
*/
|
|
63861
|
+
function squareInPixels(rect, frameWidth, frameHeight) {
|
|
63862
|
+
const side = Math.min(Math.max(rect.w, rect.h), Math.min(frameWidth, frameHeight));
|
|
63863
|
+
const cx = rect.x + rect.w / 2;
|
|
63864
|
+
const cy = rect.y + rect.h / 2;
|
|
63865
|
+
return {
|
|
63866
|
+
x: cx - side / 2,
|
|
63867
|
+
y: cy - side / 2,
|
|
63868
|
+
w: side,
|
|
63869
|
+
h: side
|
|
63870
|
+
};
|
|
63871
|
+
}
|
|
63872
|
+
/**
|
|
63873
|
+
* Cut the window at the frame border — the pre-unification live behaviour,
|
|
63874
|
+
* preserved exactly so unsquared crops keep matching the stored index.
|
|
63875
|
+
*/
|
|
63876
|
+
function truncateToFrame(rect, frameWidth, frameHeight) {
|
|
63877
|
+
const x1 = Math.max(0, rect.x);
|
|
63878
|
+
const y1 = Math.max(0, rect.y);
|
|
63879
|
+
const x2 = Math.min(frameWidth, rect.x + rect.w);
|
|
63880
|
+
const y2 = Math.min(frameHeight, rect.y + rect.h);
|
|
63881
|
+
return {
|
|
63882
|
+
x: x1,
|
|
63883
|
+
y: y1,
|
|
63884
|
+
w: Math.max(0, x2 - x1),
|
|
63885
|
+
h: Math.max(0, y2 - y1)
|
|
63886
|
+
};
|
|
63887
|
+
}
|
|
63888
|
+
/**
|
|
63889
|
+
* Move the window inside the frame keeping its extent — used only for squared
|
|
63890
|
+
* windows, where truncating would destroy the squareness that is the point.
|
|
63891
|
+
*/
|
|
63892
|
+
function slideInsideFrame(rect, frameWidth, frameHeight) {
|
|
63893
|
+
const w = Math.max(0, Math.min(rect.w, frameWidth));
|
|
63894
|
+
const h = Math.max(0, Math.min(rect.h, frameHeight));
|
|
63895
|
+
return {
|
|
63896
|
+
x: Math.min(Math.max(0, rect.x), Math.max(0, frameWidth - w)),
|
|
63897
|
+
y: Math.min(Math.max(0, rect.y), Math.max(0, frameHeight - h)),
|
|
63898
|
+
w,
|
|
63899
|
+
h
|
|
63900
|
+
};
|
|
63901
|
+
}
|
|
63902
|
+
/**
|
|
63621
63903
|
* WHICH delivered frames the decode worker retains a native copy of.
|
|
63622
63904
|
*
|
|
63623
63905
|
* - `all` — every frame the worker delivered to the runner. The shipped
|
|
@@ -64400,4 +64682,4 @@ function buildClipModelRegistry(entries) {
|
|
|
64400
64682
|
/** The built-in catalog's registry. */
|
|
64401
64683
|
var BUILTIN_CLIP_MODELS = buildClipModelRegistry(CLIP_IMAGE_MODELS);
|
|
64402
64684
|
//#endregion
|
|
64403
|
-
export {
|
|
64685
|
+
export { NC_ALARM_DEFAULT_PROFILE_ID as $, embeddingRequirementsFailedError as $n, subKindsOf as $r, RECORDING_EXPORT_MAX_READ_BYTES as $t, DetectionSourceSchema as A, boolean as Ai, applyBlockingEdit as An, parseProcStatus as Ar, NcConditionsSchema as At, FailureCounters as B, templateLiteral as Bi, consumableLowPercentOf as Bn, resolveModeNotifyPolicy as Br, NcSharedSequenceSchema as Bt, CoverStateSchema as C, isDeviceScopedCap as Ci, TrackRelationSchema as Cn, isVectorIndexDimConflict as Cr, NC_TEMPLATE_VARS as Ct, DETECTION_MACRO_CLASSES as D, ZodObject as Di, addonWidgetsSourceCapability as Dn, memoizePinnedFfmpeg as Dr, NcAlarmSensorsSchema as Dt, DEFAULT_TIMELAPSE_PREVIEW_TEXT as E, sleep as Ei, activateAlarmProfile as En, mayWriteToLocation as Er, NcAlarmSensorsInputSchema as Et, EVENT_KIND_BY_CAP as F, object as Fi, audioMetricsCapability as Fn, readTimelapseGeneratedAt as Fr, NcRulePatchSchema as Ft, MAX_ARCHIVED_DEBUG_NOTES as G, deriveDetailCropRect as Gn, ruleDeviceCompatCapQueries as Gr, NcSystemEventKindSchema as Gt, ListTrackRelationsInputSchema as H, union as Hi, cosineSimilarity as Hn, rootSupplyServes as Hr, NcSnoozeSchema as Ht, EVENT_OWNER_TYPES as I, partialRecord as Ii, audioModeOf as In, renameAlarmProfile as Ir, NcRuleSchema as It, MAX_TRACK_PURITIES as J, describeSystemEventDeliveryProblem as Jn, sceneMonitorCapability as Jr, NcTemplatePreviewSchema as Jt, MAX_BIRTH_DECISION_RECORDS as K, derivePostTriggeredAction as Kn, ruleGroupingApplies as Kr, NcTaxonomySchema as Kt, EXPORT_DENSE_MAX_RANGES as L, record as Li, buildEventKindDescriptor as Ln, resolveClipSearchMinScore as Lr, NcRuleTargetSchema as Lt, EMBEDDING_REQUIREMENTS_FAILED as M, literal as Mi, applyNonBlockingEdit as Mn, plateGalleryCapability as Mr, NcRuleActionSchema as Mt, EMBEDDING_REQUIREMENTS_UNAVAILABLE as N, looseObject as Ni, applySecureOnArmEdit as Nn, readDeviceStateFrom as Nr, NcRuleActionsSchema as Nt, DETECTION_PIPELINE_CAP_NAME as O, _enum as Oi, alarmDeviceSecureOnArm as On, notificationRulesCapability as Or, NcAlarmSettingsPatchSchema as Ot, EVENT_DENSITY_BATCH_MAX as P, number as Pi, assertTimelapseCadences as Pn, readMotionTriggeredBy as Pr, NcRuleInputSchema as Pt, MotionTriggeredBySchema as Q, embeddingRefusalOf as Qn, storageOccupancyCapability as Qr, PoolMemoryWatchdog as Qt, FIRST_LEVEL_MACRO_CLASSES as R, strictObject as Ri, buildViewerLink as Rn, resolveLocationMode as Rr, NcRuleUpdateInputSchema as Rt, ClearTrackRelationResultSchema as S, hydrateSchema as Si, TrackRelationKindSchema as Sn, isSystemEventSummaryRule as Sr, NC_TAXONOMY as St, DEFAULT_EVENT_COLOR as T, normalizeNodeId as Ti, TrackSourceSchema as Tn, linkedStepOf as Tr, NcAlarmPostTriggeredActionSchema as Tt, ListTrackRelationsResultSchema as U, unknown as Ui, createAlarmProfile as Un, ruleAutoTriggersAlarm as Ur, NcSnoozeSuppressedSchema as Ut, LabelAttributionSchema as V, tuple as Vi, coreBlockIdFromAddonId as Vn, resolvePoolMemoryPolicy as Vr, NcSnoozeInputSchema as Vt, LockStateSchema as W, EventCategory as Wi, deleteAlarmProfile as Wn, ruleBelongsToAlarm as Wr, NcStateSummarySectionIdSchema as Wt, MOTION_CLOSE_AFTER_MS as X, embeddingEncoderCapability as Xn, sensorRaisedOf as Xr, OPS_LOG_DEFAULT_LIMIT as Xt, MAX_TRACK_RELATIONS as Y, describeSystemEventFamilyProblem as Yn, secureActuationFor as Yr, NcTemplateVarDescriptorSchema as Yt, MediaFileKindEnum as Z, embeddingModelFailedError as Zn, servedTemplateVars as Zr, OpsLogEntrySchema as Zt, BIRTH_DECISION_DEFAULT_LIMIT as _, BaseAddon as _i, TRACK_RELATIONS_DEFAULT_LIMIT as _n, isMediaOwnerType as _r, NC_GROUPING_MIN_SEC as _t, CLIP_EMBEDDING_STEP_ID as a, systemEventSummarySplitOf as ai, SCENE_DEFAULT_ANCHOR_THRESHOLD as an, faceGalleryCapability as ar, NC_ALARM_TRIGGERED_MAX_SEC as at, COCO_TO_MACRO as b, customAction as bi, TimelapseRuleSchema as bn, isScheduleActive as br, NC_SYSTEM_EVENT_KIND_GROUP_SPECS as bt, resolveClusterModelPin as c, vectorDimFromBase64 as ci, SCENE_DEFAULT_QUIET_SECONDS as cn, gifFromMp4Args as cr, NC_CLIP_POST_ROLL_DEFAULT_SEC as ct, APPEARANCE_BLOCKS as d, DEFAULT_FIRST_SIGHTING_FRESHNESS_MS as di, SCENE_RESET_RECAPTURES as dn, isAudioClassName as dr, NC_CONDITION_CATALOG as dt, syncActiveAlarmProfileSettings as ei, RECORDING_SOURCE_CAMSTACK_ADDON as en, embeddingRequirementsUnavailableError as er, NC_ALARM_DEFAULT_TRIGGERED_DURATION_SEC as et, APPEARANCE_RESOLVES_AMBIGUITY_DEFAULT as f, canonicalHash as fi, SceneMonitorSchema as fn, isDefaultAlarmProfileId as fr, NC_CONSUMABLE_LOW_PERCENT_DEFAULT as ft, ArchivedDebugNoteSchema as g, errMsg as gi, TIMELAPSE_DENSE_FLOOR_SEC as gn, isKnownTemplateVar as gr, NC_GROUPING_MAX_SEC as gt, AlarmArmModeSchema as h, DeviceType as hi, SetTrackRelationInputSchema as hn, isEventOwnerType as hr, NC_GROUPING_DEFAULT_SEC as ht, CLIP_TEXT_MODELS as i, systemEventSummaryScheduleOf as ii, SCENE_CONFIRM_DEFAULT_TIMEOUT_MS as in, evictionPolicyOfLocation as ir, NC_ALARM_SYSTEM_EVENT_KINDS as it, EMBEDDING_MODEL_FAILED as j, discriminatedUnion as ji, applyModeDelaysEdits as jn, pipelineAnalyticsCapability as jr, NcLegacyRuleActionSequenceSchema as jt, DeclaredDevices as k, array as ki, alarmPanelCapability as kn, occupancyScope as kr, NcConditionDescriptorSchema as kt, ALL_CAPABILITY_DEFINITIONS as l, viewerLinkBaseOf as li, SCENE_DEFAULT_UNCOVERED_POLICY as ln, isAlarmControllableCap as lr, NC_CLIP_PRE_ROLL_DEFAULT_SEC as lt, AUDIO_MACRO_LABELS as m, isSourceCap as mi, SetTrackPurityResultSchema as mn, isEventKindLabelKey as mr, NC_DEFAULT_SNOOZE_MINUTES as mt, DEFAULT_CLIP_MODEL as n, systemEventFamilyProblems as ni, RetrainStatusSchema as nn, ensureAlarmProfiles as nr, NC_ALARM_DELAY_MAX_SEC as nt, FACE_EMBEDDING_STEP_ID as o, templateCarriesSummary as oi, SCENE_DEFAULT_CHECK_INTERVAL_SEC as on, failureContributionCapability as or, NC_AUDIO_CONFIRM_HITS_DEFAULT as ot, ARCHIVED_DEBUG_NOTES_DEFAULT_LIMIT as p, evaluateSensorEdge as pi, SetTrackPurityInputSchema as pn, isDetectionMacroClass as pr, NC_CONSUMABLE_SYSTEM_EVENT_KINDS as pt, MAX_BIRTH_LATENCY_PROXY_MS as q, deriveRecordingMode as qn, ruleKindOf as qr, NcTemplatePreviewInputSchema as qt, CLIP_IMAGE_MODELS as r, systemEventFilterApplies as ri, SCENE_CONFIRM_DEFAULT_MAX_IMAGE_PX as rn, eventKindLabel as rr, NC_ALARM_NOTIFY_FIELDS as rt, readClusterModelPinStrict as s, templateVarsFor as si, SCENE_DEFAULT_OBSERVATION_SPACING_SEC as sn, gifDeriveSpeed as sr, NC_AUDIO_CONFIRM_WINDOW_SEC_DEFAULT as st, BUILTIN_CLIP_MODELS as t, systemEventDeliveryProblems as ti, RebuildObjectEmbeddingsRefusalSchema as tn, encodeVectorBase64 as tr, NC_ALARM_DELAY_FIELDS as tt, APPEARANCE_BIN_COUNT as u, zoneAnalyticsCapability as ui, SCENE_DIVERGED as un, isAppLinkBase as ur, NC_CLIP_RETENTION_MAX_SEC as ut, BaseDevice as v, CamProfileSchema as vi, TimelapseRuleInputSchema as vn, isRetiredClearKey as vr, NC_SENSOR_TRANSITION_KINDS as vt, DEFAULT_DETAIL_CROP_CONVENTION as w, nodePin as wi, TrackSideSchema as wn, kebabToCamel as wr, NcAlarmConfigSchema as wt, ClearTrackRelationInputSchema as x, defineCustomActions as xi, TrackPuritySchema as xn, isSystemDelivery as xr, NC_TANK_SYSTEM_EVENT_KINDS as xt, BirthDecisionRecordSchema as y, createEvent as yi, TimelapseRulePatchSchema as yn, isRootSuppliableStepId as yr, NC_SNOOZE_MAX_MINUTES as yt, FULL_IMAGE_BBOX as z, string as zi, cloneAlarmSettings as zn, resolveModeDelays as zr, NcScheduleSchema as zt };
|
|
@@ -2,7 +2,7 @@ Object.defineProperties(exports, {
|
|
|
2
2
|
__esModule: { value: true },
|
|
3
3
|
[Symbol.toStringTag]: { value: "Module" }
|
|
4
4
|
});
|
|
5
|
-
const require_clip_model_registry = require("../clip-model-registry-
|
|
5
|
+
const require_clip_model_registry = require("../clip-model-registry-Cd_y9S4U.js");
|
|
6
6
|
let node_fs = require("node:fs");
|
|
7
7
|
node_fs = require_clip_model_registry.__toESM(node_fs);
|
|
8
8
|
let node_path = require("node:path");
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { $n as embeddingRequirementsFailedError, Ar as parseProcStatus, Qt as PoolMemoryWatchdog, Ti as normalizeNodeId, Vr as resolvePoolMemoryPolicy, Xn as embeddingEncoderCapability, Zn as embeddingModelFailedError, _i as BaseAddon, a as CLIP_EMBEDDING_STEP_ID, c as resolveClusterModelPin, er as embeddingRequirementsUnavailableError, i as CLIP_TEXT_MODELS, n as DEFAULT_CLIP_MODEL, r as CLIP_IMAGE_MODELS, t as BUILTIN_CLIP_MODELS } from "../clip-model-registry-DZz3e781.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,8 +1,8 @@
|
|
|
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-CiTUMvVf.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
|
-
import { t as _ } from "./_virtual_mf___mfe_internal__addon_pipeline_analytics_widgets__loadShare___mf_0_camstack_mf_1_types__loadShare__.js-
|
|
5
|
+
import { t as _ } from "./_virtual_mf___mfe_internal__addon_pipeline_analytics_widgets__loadShare___mf_0_camstack_mf_1_types__loadShare__.js-DEq-B6oq.mjs";
|
|
6
6
|
//#region ../../node_modules/lucide-react/dist/esm/shared/src/utils/mergeClasses.js
|
|
7
7
|
var v = (...e) => e.filter((e, t, n) => !!e && e.trim() !== "" && n.indexOf(e) === t).join(" ").trim(), y = (e) => e.replace(/([a-z0-9])([A-Z])/g, "$1-$2").toLowerCase(), b = (e) => e.replace(/^([A-Z])|[\s-_]+(\w)/g, (e, t, n) => n ? n.toUpperCase() : t.toLowerCase()), x = (e) => {
|
|
8
8
|
let t = b(e);
|
|
@@ -18,7 +18,7 @@ var e = {
|
|
|
18
18
|
},
|
|
19
19
|
"@camstack/types": {
|
|
20
20
|
name: "@camstack/types",
|
|
21
|
-
version: "1.2.
|
|
21
|
+
version: "1.2.327",
|
|
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.2.
|
|
36
|
+
version: "1.2.249",
|
|
37
37
|
scope: ["default"],
|
|
38
38
|
loaded: !1,
|
|
39
39
|
from: "addon_pipeline_analytics_widgets",
|