@camstack/addon-pipeline 1.2.296 → 1.2.297
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/audio-analyzer/index.js +2 -2
- package/dist/audio-analyzer/index.mjs +2 -2
- package/dist/{default-detection-model-D1daTtqT.js → default-detection-model-B2n_SFXt.js} +368 -5
- package/dist/{default-detection-model-Co578D8C.mjs → default-detection-model-D6DypCkI.mjs} +339 -6
- package/dist/detection-pipeline/index.js +521 -217
- package/dist/detection-pipeline/index.mjs +520 -216
- package/dist/{dist-CCd0Q3nr.mjs → dist-CxHIpsQs.mjs} +53 -123
- package/dist/{dist-8up-f2TX.js → dist-DUqr1zyq.js} +64 -140
- package/dist/motion-wasm/index.js +1 -1
- package/dist/motion-wasm/index.mjs +1 -1
- package/dist/{node-lpQgHes9.js → node-Dx6DLQ1j.js} +1 -1
- package/dist/{node-DgMSXSWP.mjs → node-DyeWu78a.mjs} +1 -1
- package/dist/pipeline-runner/index.js +213 -203
- package/dist/pipeline-runner/index.mjs +213 -203
- package/dist/{process-memory-DFC_O5zE.mjs → process-memory-BVR4592X.mjs} +1 -1
- package/dist/{process-memory-CX_92V_r.js → process-memory-CMJ3NY-s.js} +1 -1
- package/dist/recorder/index.js +2 -2
- package/dist/recorder/index.mjs +2 -2
- package/dist/{segment-demux-js-DzBx6NN2.js → segment-demux-js-CmGIF_uK.js} +1 -1
- package/dist/{segment-demux-js-FZbBuk3F.mjs → segment-demux-js-Dzga-XgE.mjs} +1 -1
- package/dist/stream-broker/_stub.js +2 -2
- package/dist/stream-broker/{_virtual_mf-localSharedImportMap___mfe_internal__addon_stream_broker_widgets-C_i7oFBl.mjs → _virtual_mf-localSharedImportMap___mfe_internal__addon_stream_broker_widgets-P71ze8cu.mjs} +2 -2
- package/dist/stream-broker/{_virtual_mf___mfe_internal__addon_stream_broker_widgets__loadShare___mf_0_camstack_mf_1_types__loadShare__.js-DUGQKsKL.mjs → _virtual_mf___mfe_internal__addon_stream_broker_widgets__loadShare___mf_0_camstack_mf_1_types__loadShare__.js-CZkpFU-J.mjs} +1 -1
- package/dist/stream-broker/_virtual_mf___mfe_internal__addon_stream_broker_widgets__loadShare___mf_0_camstack_mf_1_ui_mf_2_library__loadShare__.js-Dti8Ex88.mjs +26 -0
- package/dist/stream-broker/demux-worker-child.js +1 -1
- package/dist/stream-broker/demux-worker-child.mjs +1 -1
- package/dist/stream-broker/{hostInit-BPtppL3W.mjs → hostInit-CRlStbz4.mjs} +2 -2
- package/dist/stream-broker/index.js +3 -3
- package/dist/stream-broker/index.mjs +3 -3
- package/dist/stream-broker/remoteEntry.js +1 -1
- package/package.json +1 -1
- package/dist/stream-broker/_virtual_mf___mfe_internal__addon_stream_broker_widgets__loadShare___mf_0_camstack_mf_1_ui_mf_2_library__loadShare__.js-CkbplMHA.mjs +0 -26
|
@@ -5360,7 +5360,7 @@ var ZodIssueCode = {
|
|
|
5360
5360
|
var ZodFirstPartyTypeKind;
|
|
5361
5361
|
ZodFirstPartyTypeKind || (ZodFirstPartyTypeKind = {});
|
|
5362
5362
|
//#endregion
|
|
5363
|
-
//#region ../types/dist/sleep-
|
|
5363
|
+
//#region ../types/dist/sleep-DC-wdyeS.mjs
|
|
5364
5364
|
/**
|
|
5365
5365
|
* The audio chunk plane's byte format, and the ONE expansion from a coded
|
|
5366
5366
|
* window to float samples (D455).
|
|
@@ -16318,8 +16318,22 @@ var LinkedDeviceSchema = object({
|
|
|
16318
16318
|
* The `linked-devices` extension slot's editable value (D648): the operator's
|
|
16319
16319
|
* pick list, exactly what `_linkedDeviceIds` persists. Tree children are NOT
|
|
16320
16320
|
* in it — they are always linked and are not a pick.
|
|
16321
|
-
|
|
16322
|
-
|
|
16321
|
+
*
|
|
16322
|
+
* `trackedDeviceIds` (D655) is the tracked-event opt-in, exactly what
|
|
16323
|
+
* `_linkedDeviceTrackedIds` persists: which linked devices materialize a
|
|
16324
|
+
* synthetic tracked event on the camera. A read always carries it AS STORED
|
|
16325
|
+
* (an absent key reads as `[]`, which is what the resolver makes of it —
|
|
16326
|
+
* NONE). On a write it is optional: absent leaves the opt-in untouched, so a
|
|
16327
|
+
* card built before D655 cannot erase it by saving the pick list. A present
|
|
16328
|
+
* list REPLACES the opt-in; each id must be a pick, a device the camera links
|
|
16329
|
+
* by structure (the row's `impliedSources`: tree children, a picked
|
|
16330
|
+
* container's child) or already stored — so what was read can always be
|
|
16331
|
+
* written back unchanged, and a NEW opt-in outside the linked set is refused.
|
|
16332
|
+
*/
|
|
16333
|
+
var LinkedDevicesSlotValueSchema = object({
|
|
16334
|
+
deviceIds: array(number().int().positive()),
|
|
16335
|
+
trackedDeviceIds: array(number().int().positive()).optional()
|
|
16336
|
+
});
|
|
16323
16337
|
DeviceType.Camera;
|
|
16324
16338
|
/** One camera's resolved linked set, tagged with the camera it belongs to.
|
|
16325
16339
|
* The batch answer needs the tag; the single-device answer already has it
|
|
@@ -22224,90 +22238,10 @@ var CLUSTER_MODEL_SCOPED_STEPS = [{
|
|
|
22224
22238
|
}
|
|
22225
22239
|
]
|
|
22226
22240
|
}];
|
|
22227
|
-
|
|
22228
|
-
* The settings key holding one step's cluster model choice.
|
|
22229
|
-
*
|
|
22230
|
-
* Step-qualified so the keys stay unique across the addon's whole schema, which
|
|
22231
|
-
* is what lets {@link pickClusterStepModels} walk every section instead of
|
|
22232
|
-
* trusting the section id.
|
|
22233
|
-
*/
|
|
22234
|
-
function clusterModelSettingKey(stepId) {
|
|
22235
|
-
return `clusterModel:${stepId}`;
|
|
22236
|
-
}
|
|
22237
|
-
/** The cluster row when nobody has configured one — today's catalog defaults. */
|
|
22238
|
-
var DEFAULT_CLUSTER_STEP_MODELS = Object.freeze(Object.fromEntries(CLUSTER_MODEL_SCOPED_STEPS.map((s) => [s.stepId, s.defaultModelId])));
|
|
22239
|
-
function interpretStoredClusterModel(raw) {
|
|
22240
|
-
if (raw === void 0 || raw === null || raw === "") return { kind: "absent" };
|
|
22241
|
-
if (typeof raw === "string") return {
|
|
22242
|
-
kind: "chosen",
|
|
22243
|
-
modelId: raw
|
|
22244
|
-
};
|
|
22245
|
-
return {
|
|
22246
|
-
kind: "invalid",
|
|
22247
|
-
value: raw
|
|
22248
|
-
};
|
|
22249
|
-
}
|
|
22250
|
-
/**
|
|
22251
|
-
* The cluster-scoped steps whose stored value is `invalid` under
|
|
22252
|
-
* {@link interpretStoredClusterModel} — for the runtime's log line, so the
|
|
22253
|
-
* default it runs on such a row is never run in silence.
|
|
22254
|
-
*/
|
|
22255
|
-
function invalidClusterStepModelEntries(config) {
|
|
22256
|
-
const out = [];
|
|
22257
|
-
for (const step of CLUSTER_MODEL_SCOPED_STEPS) {
|
|
22258
|
-
const read = interpretStoredClusterModel(config[clusterModelSettingKey(step.stepId)]);
|
|
22259
|
-
if (read.kind === "invalid") out.push({
|
|
22260
|
-
stepId: step.stepId,
|
|
22261
|
-
value: read.value
|
|
22262
|
-
});
|
|
22263
|
-
}
|
|
22264
|
-
return out;
|
|
22265
|
-
}
|
|
22266
|
-
/**
|
|
22267
|
-
* Narrow a FLAT settings record to the cluster row.
|
|
22268
|
-
*
|
|
22269
|
-
* Per-FIELD fallback, deliberately (same rule as `readDetailCropConvention`): a
|
|
22270
|
-
* junk face model must not also discard a valid clip model. An `absent` or
|
|
22271
|
-
* `invalid` value ({@link interpretStoredClusterModel}) resolves to the step's
|
|
22272
|
-
* catalog default — never to a blank id, because a blank id downstream becomes
|
|
22273
|
-
* "substitute the format default", which is precisely the substitution this
|
|
22274
|
-
* scope exists to forbid.
|
|
22275
|
-
*/
|
|
22276
|
-
function readClusterStepModels(config) {
|
|
22277
|
-
const out = {};
|
|
22278
|
-
for (const step of CLUSTER_MODEL_SCOPED_STEPS) {
|
|
22279
|
-
const read = interpretStoredClusterModel(config[clusterModelSettingKey(step.stepId)]);
|
|
22280
|
-
out[step.stepId] = read.kind === "chosen" ? read.modelId : step.defaultModelId;
|
|
22281
|
-
}
|
|
22282
|
-
return out;
|
|
22283
|
-
}
|
|
22241
|
+
Object.freeze(Object.fromEntries(CLUSTER_MODEL_SCOPED_STEPS.map((s) => [s.stepId, s.defaultModelId])));
|
|
22284
22242
|
function isHydratedField$2(entry) {
|
|
22285
22243
|
return typeof entry === "object" && entry !== null && "key" in entry;
|
|
22286
22244
|
}
|
|
22287
|
-
/**
|
|
22288
|
-
* Extract the cluster row from an `addon-settings.getGlobalSettings` payload.
|
|
22289
|
-
*
|
|
22290
|
-
* Walks EVERY section rather than looking inside {@link CLUSTER_MODEL_SECTION_ID}
|
|
22291
|
-
* alone: the keys are unique across the addon's schema, and a section rename
|
|
22292
|
-
* must not silently revert the whole cluster to the defaults. A `null` payload
|
|
22293
|
-
* (addon mid-boot) is the defaults.
|
|
22294
|
-
*/
|
|
22295
|
-
function pickClusterStepModels(view) {
|
|
22296
|
-
if (view === null) return DEFAULT_CLUSTER_STEP_MODELS;
|
|
22297
|
-
return readClusterStepModels(flattenHydratedView(view, clusterModelKeys()));
|
|
22298
|
-
}
|
|
22299
|
-
/**
|
|
22300
|
-
* The `invalid` stored cluster model values a hydrated view carries — what the
|
|
22301
|
-
* runtime logs when it runs a default on a row it could not read as a choice.
|
|
22302
|
-
* A `null` view (owner mid-boot) carries nothing to judge.
|
|
22303
|
-
*/
|
|
22304
|
-
function pickInvalidClusterStepModels(view) {
|
|
22305
|
-
if (view === null) return [];
|
|
22306
|
-
return invalidClusterStepModelEntries(flattenHydratedView(view, clusterModelKeys()));
|
|
22307
|
-
}
|
|
22308
|
-
function clusterModelKeys() {
|
|
22309
|
-
return new Set(CLUSTER_MODEL_SCOPED_STEPS.map((s) => clusterModelSettingKey(s.stepId)));
|
|
22310
|
-
}
|
|
22311
22245
|
/** The `wanted` keys of a hydrated view as one flat record, every section walked. */
|
|
22312
22246
|
function flattenHydratedView(view, wanted) {
|
|
22313
22247
|
const flat = {};
|
|
@@ -24926,7 +24860,14 @@ var pipelineExecutorCapability = {
|
|
|
24926
24860
|
*/
|
|
24927
24861
|
inferCached: method(object({
|
|
24928
24862
|
stepId: string(),
|
|
24929
|
-
frameId: number().int()
|
|
24863
|
+
frameId: number().int(),
|
|
24864
|
+
/**
|
|
24865
|
+
* The model to time — REQUIRED (D658). Without it the pool answered the
|
|
24866
|
+
* step's ACTIVE variant (the first loaded after boot), so a benchmark
|
|
24867
|
+
* of model B silently timed model A. Callers pass the `rootModelId`
|
|
24868
|
+
* their warmup `runPipeline` reported: the model that actually ran.
|
|
24869
|
+
*/
|
|
24870
|
+
modelId: string().min(1)
|
|
24930
24871
|
}), record(string(), unknown()), { kind: "mutation" }),
|
|
24931
24872
|
/**
|
|
24932
24873
|
* Release a cached frame from the Python pool's memory.
|
|
@@ -29515,7 +29456,17 @@ var ExtensionSlotRowSchema = discriminatedUnion("state", [object({
|
|
|
29515
29456
|
projects: string().nullable(),
|
|
29516
29457
|
activation: ExtensionSlotActivationSchema.nullable(),
|
|
29517
29458
|
value: ExtensionSlotValueSchema,
|
|
29518
|
-
sources: array(ExtensionSlotSourceSchema)
|
|
29459
|
+
sources: array(ExtensionSlotSourceSchema),
|
|
29460
|
+
/**
|
|
29461
|
+
* Devices the owner links to the host ON ITS OWN, by structure, and that
|
|
29462
|
+
* are therefore not in `value` (D655): a camera's device-tree children, and
|
|
29463
|
+
* the child a picked container stands for (D356 — a container is never a
|
|
29464
|
+
* pick, its children are). Read-only; the editor shows them and may offer
|
|
29465
|
+
* per-device options on them (the linked-devices tracked-event opt-in).
|
|
29466
|
+
* Absent when the owner links nothing beyond the picks, and from an owner
|
|
29467
|
+
* older than D655.
|
|
29468
|
+
*/
|
|
29469
|
+
impliedSources: array(ExtensionSlotSourceSchema).optional()
|
|
29519
29470
|
}), object({
|
|
29520
29471
|
state: literal("unreachable"),
|
|
29521
29472
|
addonId: string(),
|
|
@@ -41733,12 +41684,6 @@ Object.freeze({
|
|
|
41733
41684
|
addonId: null,
|
|
41734
41685
|
access: "create"
|
|
41735
41686
|
},
|
|
41736
|
-
"deviceManager.applyDeviceSettingsPatch": {
|
|
41737
|
-
capName: "device-manager",
|
|
41738
|
-
capScope: "system",
|
|
41739
|
-
addonId: null,
|
|
41740
|
-
access: "create"
|
|
41741
|
-
},
|
|
41742
41687
|
"deviceManager.applyInitialMeta": {
|
|
41743
41688
|
capName: "device-manager",
|
|
41744
41689
|
capScope: "system",
|
|
@@ -41841,12 +41786,6 @@ Object.freeze({
|
|
|
41841
41786
|
addonId: null,
|
|
41842
41787
|
access: "view"
|
|
41843
41788
|
},
|
|
41844
|
-
"deviceManager.getDeviceLiveContribution": {
|
|
41845
|
-
capName: "device-manager",
|
|
41846
|
-
capScope: "system",
|
|
41847
|
-
addonId: null,
|
|
41848
|
-
access: "view"
|
|
41849
|
-
},
|
|
41850
41789
|
"deviceManager.getDeviceLiveInfoAggregate": {
|
|
41851
41790
|
capName: "device-manager",
|
|
41852
41791
|
capScope: "system",
|
|
@@ -41859,12 +41798,6 @@ Object.freeze({
|
|
|
41859
41798
|
addonId: null,
|
|
41860
41799
|
access: "view"
|
|
41861
41800
|
},
|
|
41862
|
-
"deviceManager.getDeviceSettingsContribution": {
|
|
41863
|
-
capName: "device-manager",
|
|
41864
|
-
capScope: "system",
|
|
41865
|
-
addonId: null,
|
|
41866
|
-
access: "view"
|
|
41867
|
-
},
|
|
41868
41801
|
"deviceManager.getDeviceStatusAggregate": {
|
|
41869
41802
|
capName: "device-manager",
|
|
41870
41803
|
capScope: "system",
|
|
@@ -42369,24 +42302,6 @@ Object.freeze({
|
|
|
42369
42302
|
addonId: null,
|
|
42370
42303
|
access: "view"
|
|
42371
42304
|
},
|
|
42372
|
-
"doorbell.applyDeviceSettingsPatch": {
|
|
42373
|
-
capName: "doorbell",
|
|
42374
|
-
capScope: "device",
|
|
42375
|
-
addonId: null,
|
|
42376
|
-
access: "create"
|
|
42377
|
-
},
|
|
42378
|
-
"doorbell.getDeviceLiveContribution": {
|
|
42379
|
-
capName: "doorbell",
|
|
42380
|
-
capScope: "device",
|
|
42381
|
-
addonId: null,
|
|
42382
|
-
access: "view"
|
|
42383
|
-
},
|
|
42384
|
-
"doorbell.getDeviceSettingsContribution": {
|
|
42385
|
-
capName: "doorbell",
|
|
42386
|
-
capScope: "device",
|
|
42387
|
-
addonId: null,
|
|
42388
|
-
access: "view"
|
|
42389
|
-
},
|
|
42390
42305
|
"doorbell.getStatus": {
|
|
42391
42306
|
capName: "doorbell",
|
|
42392
42307
|
capScope: "device",
|
|
@@ -50111,6 +50026,21 @@ TimelapseRuleInputSchema.extend({
|
|
|
50111
50026
|
createdAt: number(),
|
|
50112
50027
|
updatedAt: number()
|
|
50113
50028
|
});
|
|
50029
|
+
/** True when `model` ships a build for `format`. */
|
|
50030
|
+
function hasBuild(model, format) {
|
|
50031
|
+
return Boolean(model.formats[format]);
|
|
50032
|
+
}
|
|
50033
|
+
/**
|
|
50034
|
+
* Can a pool of `format` run a step whose catalog is `models`, given the model
|
|
50035
|
+
* the step names (`null`/absent = unpinned, the format default)?
|
|
50036
|
+
*/
|
|
50037
|
+
function stepModelRunsOnFormat(models, modelId, format) {
|
|
50038
|
+
if (modelId !== void 0 && modelId !== null) {
|
|
50039
|
+
const named = models.find((m) => m.id === modelId);
|
|
50040
|
+
if (named !== void 0 && hasBuild(named, format)) return true;
|
|
50041
|
+
}
|
|
50042
|
+
return models.some((m) => m.legacy !== true && hasBuild(m, format));
|
|
50043
|
+
}
|
|
50114
50044
|
var DETAIL_CROP_PADDING_KEY = "detailCropPaddingRatio";
|
|
50115
50045
|
var DETAIL_CROP_SQUARE_KEY = "detailCropSquare";
|
|
50116
50046
|
/**
|
|
@@ -51311,4 +51241,4 @@ function enumerateInferenceDevices(hw) {
|
|
|
51311
51241
|
return out;
|
|
51312
51242
|
}
|
|
51313
51243
|
//#endregion
|
|
51314
|
-
export { declareLogChannel as $,
|
|
51244
|
+
export { declareLogChannel as $, webrtcSessionCapability as $t, OpsLogEntrySchema as A, lazy as An, pickDetailCropConvention as At, VIDEOCLIPS_MAX_OFFER_BYTES as B, resolveCreateExportSubject as Bt, ExportRecordSchema as C, parseProfileBrokerId as Cn, mayWriteToLocation as Ct, MOTION_CLOSE_AFTER_MS as D, array as Dn, overlayClusterStepSettings as Dt, HF_BASE_URL as E, _enum as En, motionDetectionCapability as Et, RECORDING_SOURCE_CAMSTACK as F, record as Fn, recordingArchiveCapability as Ft, audioAnalyzerCapability as G, runtimeDevices as Gt, YAMNET_TO_MACRO as H, resolveLocationMode as Ht, RECORDING_SOURCE_CAMSTACK_ADDON as I, string as In, recordingCapability as It, cameraStreamsCapability as J, storageOccupancyCapability as Jt, audioKindId as K, stepModelRunsOnFormat as Kt, RecordingConfigSchema as L, union as Ln, recordingExportCapability as Lt, RATE_CONTROL_RELAXED as M, number as Mn, pipelineExecutorCapability as Mt, RATE_CONTROL_TIGHT as N, object as Nn, pipelineRunnerCapability as Nt, NativeLeaseAdmissionSchema as O, boolean as On, parseProcStatus as Ot, RECORDING_EXPORT_MAX_READ_BYTES as P, preprocess as Pn, rankStreams as Pt, createLogChannelsProvider as Q, videoclipsCapability as Qt, RecordingSignalStatusSchema as R, EventCategory as Rn, recordingSignalCapability as Rt, EncodeProfileSchema as S, parseJsonUnknown as Sn, mayReadLocation as St, G711_SCALE_CORRECTION_DB as T, sleep as Tn, modeMayWrite as Tt, addonWidgetsSourceCapability as U, resolvePoolMemoryPolicy as Ut, VISIT_MERGE_GAP_MS as V, resolveEgressDecodeHwAccel as Vt, audioAnalysisCapability as W, resolveRecordingProfiles as Wt, clipExportFailureOf as X, stripRetiredBandPreBufferSec as Xt, clipExportFailure as Y, streamBrokerCapability as Yt, createHwAccelCache as Z, supportedRuntimes as Zt, DEFAULT_FIRST_SIGHTING_FRESHNESS_MS as _, hydrateSchema as _n, isFirstLevelMacroClass as _t, BatteryStatusSchema as a, isSoftwareDecode as an, egressTranscodeSharingKey as at, EVENT_OWNER_TYPES as b, makeSourceBrokerId as bn, mapAudioLabelToMacro as bt, CLIP_STILL_REASON_HEADER as c, CAM_PROFILE_ORDER as cn, evaluateSensorEdge as ct, COCO_80_LABELS as d, DeviceType as dn, evictionPolicyOfLocation as dt, errMsg as en, defaultDeviceFor as et, COCO_TO_MACRO as f, audioChunkBytesPerSample as fn, exportSubjectOf as ft, DEFAULT_EVENTS_BAND_BUFFER_SEC as g, expandAudioChunkToF32le as gn, inferModelProvider as gt, DEFAULT_DETAIL_CROP_CONVENTION as h, defineCustomActions as hn, hfModelUrl as ht, BackgroundRunRegistry as i, invocationFromEncodeProfile as in, detectionPipelineCapability as it, PoolMemoryWatchdog as j, literal as jn, pickNativeLeaseOverride as jt, NativeLeaseSettingsSchema as k, discriminatedUnion as kn, pickClusterStepSettings as kt, CLIP_STREAM_TRANSPORT_HEADER as l, CamProfileSchema as ln, evaluateZoneRules as lt, DEFAULT_CLUSTER_STEP_SETTINGS as m, customAction as mn, gbToBytes as mt, AUDIO_BACKEND_CHOICES as n, Fmp4BoxSplitter as nn, deriveDetailCropRect as nt, CLIP_BROKER_PACED_RATES as o, BOOT_RECOVERY_BACKOFF_MS as on, egressTransportFromRequest as ot, DEFAULT_AUDIO_ANALYZER_CONFIG as p, createEvent as pn, failureContributionCapability as pt, batteryCapability as q, storageEvictableCapability as qt, AUDIO_MACRO_LABELS as r, buildFfmpegArgs as rn, deriveRecordingMode as rt, CLIP_STILL_REASON_CODE_HEADER as s, BaseAddon as sn, enumerateInferenceDevices as st, APPLE_SA_TO_MACRO as t, AUDIO_PRESETS as tn, deriveBatteryPresence as tt, CLUSTER_MODEL_SCOPED_STEPS as u, DeviceFeature as un, evictionPolicyForMode as ut, DEFAULT_NATIVE_LEASE_SETTINGS as v, isEvent as vn, loadContributionCapability as vt, FailureCounters as w, selectAssignedProfileSlots as wn, migrateLegacyDeviceSignalConfig as wt, EVENT_PAD_MS as x, nodePin as xn, maskUrlCredentials as xt, DEVICE_BACKEND_TO_FORMAT as y, makeProfileBrokerId as yn, logChannelsCapability as yt, RingBuffer as z, resolveClusterStepModelId as zt };
|
|
@@ -5360,7 +5360,7 @@ var ZodIssueCode = {
|
|
|
5360
5360
|
var ZodFirstPartyTypeKind;
|
|
5361
5361
|
ZodFirstPartyTypeKind || (ZodFirstPartyTypeKind = {});
|
|
5362
5362
|
//#endregion
|
|
5363
|
-
//#region ../types/dist/sleep-
|
|
5363
|
+
//#region ../types/dist/sleep-DC-wdyeS.mjs
|
|
5364
5364
|
/**
|
|
5365
5365
|
* The audio chunk plane's byte format, and the ONE expansion from a coded
|
|
5366
5366
|
* window to float samples (D455).
|
|
@@ -16318,8 +16318,22 @@ var LinkedDeviceSchema = object({
|
|
|
16318
16318
|
* The `linked-devices` extension slot's editable value (D648): the operator's
|
|
16319
16319
|
* pick list, exactly what `_linkedDeviceIds` persists. Tree children are NOT
|
|
16320
16320
|
* in it — they are always linked and are not a pick.
|
|
16321
|
-
|
|
16322
|
-
|
|
16321
|
+
*
|
|
16322
|
+
* `trackedDeviceIds` (D655) is the tracked-event opt-in, exactly what
|
|
16323
|
+
* `_linkedDeviceTrackedIds` persists: which linked devices materialize a
|
|
16324
|
+
* synthetic tracked event on the camera. A read always carries it AS STORED
|
|
16325
|
+
* (an absent key reads as `[]`, which is what the resolver makes of it —
|
|
16326
|
+
* NONE). On a write it is optional: absent leaves the opt-in untouched, so a
|
|
16327
|
+
* card built before D655 cannot erase it by saving the pick list. A present
|
|
16328
|
+
* list REPLACES the opt-in; each id must be a pick, a device the camera links
|
|
16329
|
+
* by structure (the row's `impliedSources`: tree children, a picked
|
|
16330
|
+
* container's child) or already stored — so what was read can always be
|
|
16331
|
+
* written back unchanged, and a NEW opt-in outside the linked set is refused.
|
|
16332
|
+
*/
|
|
16333
|
+
var LinkedDevicesSlotValueSchema = object({
|
|
16334
|
+
deviceIds: array(number().int().positive()),
|
|
16335
|
+
trackedDeviceIds: array(number().int().positive()).optional()
|
|
16336
|
+
});
|
|
16323
16337
|
DeviceType.Camera;
|
|
16324
16338
|
/** One camera's resolved linked set, tagged with the camera it belongs to.
|
|
16325
16339
|
* The batch answer needs the tag; the single-device answer already has it
|
|
@@ -22224,90 +22238,10 @@ var CLUSTER_MODEL_SCOPED_STEPS = [{
|
|
|
22224
22238
|
}
|
|
22225
22239
|
]
|
|
22226
22240
|
}];
|
|
22227
|
-
|
|
22228
|
-
* The settings key holding one step's cluster model choice.
|
|
22229
|
-
*
|
|
22230
|
-
* Step-qualified so the keys stay unique across the addon's whole schema, which
|
|
22231
|
-
* is what lets {@link pickClusterStepModels} walk every section instead of
|
|
22232
|
-
* trusting the section id.
|
|
22233
|
-
*/
|
|
22234
|
-
function clusterModelSettingKey(stepId) {
|
|
22235
|
-
return `clusterModel:${stepId}`;
|
|
22236
|
-
}
|
|
22237
|
-
/** The cluster row when nobody has configured one — today's catalog defaults. */
|
|
22238
|
-
var DEFAULT_CLUSTER_STEP_MODELS = Object.freeze(Object.fromEntries(CLUSTER_MODEL_SCOPED_STEPS.map((s) => [s.stepId, s.defaultModelId])));
|
|
22239
|
-
function interpretStoredClusterModel(raw) {
|
|
22240
|
-
if (raw === void 0 || raw === null || raw === "") return { kind: "absent" };
|
|
22241
|
-
if (typeof raw === "string") return {
|
|
22242
|
-
kind: "chosen",
|
|
22243
|
-
modelId: raw
|
|
22244
|
-
};
|
|
22245
|
-
return {
|
|
22246
|
-
kind: "invalid",
|
|
22247
|
-
value: raw
|
|
22248
|
-
};
|
|
22249
|
-
}
|
|
22250
|
-
/**
|
|
22251
|
-
* The cluster-scoped steps whose stored value is `invalid` under
|
|
22252
|
-
* {@link interpretStoredClusterModel} — for the runtime's log line, so the
|
|
22253
|
-
* default it runs on such a row is never run in silence.
|
|
22254
|
-
*/
|
|
22255
|
-
function invalidClusterStepModelEntries(config) {
|
|
22256
|
-
const out = [];
|
|
22257
|
-
for (const step of CLUSTER_MODEL_SCOPED_STEPS) {
|
|
22258
|
-
const read = interpretStoredClusterModel(config[clusterModelSettingKey(step.stepId)]);
|
|
22259
|
-
if (read.kind === "invalid") out.push({
|
|
22260
|
-
stepId: step.stepId,
|
|
22261
|
-
value: read.value
|
|
22262
|
-
});
|
|
22263
|
-
}
|
|
22264
|
-
return out;
|
|
22265
|
-
}
|
|
22266
|
-
/**
|
|
22267
|
-
* Narrow a FLAT settings record to the cluster row.
|
|
22268
|
-
*
|
|
22269
|
-
* Per-FIELD fallback, deliberately (same rule as `readDetailCropConvention`): a
|
|
22270
|
-
* junk face model must not also discard a valid clip model. An `absent` or
|
|
22271
|
-
* `invalid` value ({@link interpretStoredClusterModel}) resolves to the step's
|
|
22272
|
-
* catalog default — never to a blank id, because a blank id downstream becomes
|
|
22273
|
-
* "substitute the format default", which is precisely the substitution this
|
|
22274
|
-
* scope exists to forbid.
|
|
22275
|
-
*/
|
|
22276
|
-
function readClusterStepModels(config) {
|
|
22277
|
-
const out = {};
|
|
22278
|
-
for (const step of CLUSTER_MODEL_SCOPED_STEPS) {
|
|
22279
|
-
const read = interpretStoredClusterModel(config[clusterModelSettingKey(step.stepId)]);
|
|
22280
|
-
out[step.stepId] = read.kind === "chosen" ? read.modelId : step.defaultModelId;
|
|
22281
|
-
}
|
|
22282
|
-
return out;
|
|
22283
|
-
}
|
|
22241
|
+
Object.freeze(Object.fromEntries(CLUSTER_MODEL_SCOPED_STEPS.map((s) => [s.stepId, s.defaultModelId])));
|
|
22284
22242
|
function isHydratedField$2(entry) {
|
|
22285
22243
|
return typeof entry === "object" && entry !== null && "key" in entry;
|
|
22286
22244
|
}
|
|
22287
|
-
/**
|
|
22288
|
-
* Extract the cluster row from an `addon-settings.getGlobalSettings` payload.
|
|
22289
|
-
*
|
|
22290
|
-
* Walks EVERY section rather than looking inside {@link CLUSTER_MODEL_SECTION_ID}
|
|
22291
|
-
* alone: the keys are unique across the addon's schema, and a section rename
|
|
22292
|
-
* must not silently revert the whole cluster to the defaults. A `null` payload
|
|
22293
|
-
* (addon mid-boot) is the defaults.
|
|
22294
|
-
*/
|
|
22295
|
-
function pickClusterStepModels(view) {
|
|
22296
|
-
if (view === null) return DEFAULT_CLUSTER_STEP_MODELS;
|
|
22297
|
-
return readClusterStepModels(flattenHydratedView(view, clusterModelKeys()));
|
|
22298
|
-
}
|
|
22299
|
-
/**
|
|
22300
|
-
* The `invalid` stored cluster model values a hydrated view carries — what the
|
|
22301
|
-
* runtime logs when it runs a default on a row it could not read as a choice.
|
|
22302
|
-
* A `null` view (owner mid-boot) carries nothing to judge.
|
|
22303
|
-
*/
|
|
22304
|
-
function pickInvalidClusterStepModels(view) {
|
|
22305
|
-
if (view === null) return [];
|
|
22306
|
-
return invalidClusterStepModelEntries(flattenHydratedView(view, clusterModelKeys()));
|
|
22307
|
-
}
|
|
22308
|
-
function clusterModelKeys() {
|
|
22309
|
-
return new Set(CLUSTER_MODEL_SCOPED_STEPS.map((s) => clusterModelSettingKey(s.stepId)));
|
|
22310
|
-
}
|
|
22311
22245
|
/** The `wanted` keys of a hydrated view as one flat record, every section walked. */
|
|
22312
22246
|
function flattenHydratedView(view, wanted) {
|
|
22313
22247
|
const flat = {};
|
|
@@ -24926,7 +24860,14 @@ var pipelineExecutorCapability = {
|
|
|
24926
24860
|
*/
|
|
24927
24861
|
inferCached: method(object({
|
|
24928
24862
|
stepId: string(),
|
|
24929
|
-
frameId: number().int()
|
|
24863
|
+
frameId: number().int(),
|
|
24864
|
+
/**
|
|
24865
|
+
* The model to time — REQUIRED (D658). Without it the pool answered the
|
|
24866
|
+
* step's ACTIVE variant (the first loaded after boot), so a benchmark
|
|
24867
|
+
* of model B silently timed model A. Callers pass the `rootModelId`
|
|
24868
|
+
* their warmup `runPipeline` reported: the model that actually ran.
|
|
24869
|
+
*/
|
|
24870
|
+
modelId: string().min(1)
|
|
24930
24871
|
}), record(string(), unknown()), { kind: "mutation" }),
|
|
24931
24872
|
/**
|
|
24932
24873
|
* Release a cached frame from the Python pool's memory.
|
|
@@ -29515,7 +29456,17 @@ var ExtensionSlotRowSchema = discriminatedUnion("state", [object({
|
|
|
29515
29456
|
projects: string().nullable(),
|
|
29516
29457
|
activation: ExtensionSlotActivationSchema.nullable(),
|
|
29517
29458
|
value: ExtensionSlotValueSchema,
|
|
29518
|
-
sources: array(ExtensionSlotSourceSchema)
|
|
29459
|
+
sources: array(ExtensionSlotSourceSchema),
|
|
29460
|
+
/**
|
|
29461
|
+
* Devices the owner links to the host ON ITS OWN, by structure, and that
|
|
29462
|
+
* are therefore not in `value` (D655): a camera's device-tree children, and
|
|
29463
|
+
* the child a picked container stands for (D356 — a container is never a
|
|
29464
|
+
* pick, its children are). Read-only; the editor shows them and may offer
|
|
29465
|
+
* per-device options on them (the linked-devices tracked-event opt-in).
|
|
29466
|
+
* Absent when the owner links nothing beyond the picks, and from an owner
|
|
29467
|
+
* older than D655.
|
|
29468
|
+
*/
|
|
29469
|
+
impliedSources: array(ExtensionSlotSourceSchema).optional()
|
|
29519
29470
|
}), object({
|
|
29520
29471
|
state: literal("unreachable"),
|
|
29521
29472
|
addonId: string(),
|
|
@@ -41733,12 +41684,6 @@ Object.freeze({
|
|
|
41733
41684
|
addonId: null,
|
|
41734
41685
|
access: "create"
|
|
41735
41686
|
},
|
|
41736
|
-
"deviceManager.applyDeviceSettingsPatch": {
|
|
41737
|
-
capName: "device-manager",
|
|
41738
|
-
capScope: "system",
|
|
41739
|
-
addonId: null,
|
|
41740
|
-
access: "create"
|
|
41741
|
-
},
|
|
41742
41687
|
"deviceManager.applyInitialMeta": {
|
|
41743
41688
|
capName: "device-manager",
|
|
41744
41689
|
capScope: "system",
|
|
@@ -41841,12 +41786,6 @@ Object.freeze({
|
|
|
41841
41786
|
addonId: null,
|
|
41842
41787
|
access: "view"
|
|
41843
41788
|
},
|
|
41844
|
-
"deviceManager.getDeviceLiveContribution": {
|
|
41845
|
-
capName: "device-manager",
|
|
41846
|
-
capScope: "system",
|
|
41847
|
-
addonId: null,
|
|
41848
|
-
access: "view"
|
|
41849
|
-
},
|
|
41850
41789
|
"deviceManager.getDeviceLiveInfoAggregate": {
|
|
41851
41790
|
capName: "device-manager",
|
|
41852
41791
|
capScope: "system",
|
|
@@ -41859,12 +41798,6 @@ Object.freeze({
|
|
|
41859
41798
|
addonId: null,
|
|
41860
41799
|
access: "view"
|
|
41861
41800
|
},
|
|
41862
|
-
"deviceManager.getDeviceSettingsContribution": {
|
|
41863
|
-
capName: "device-manager",
|
|
41864
|
-
capScope: "system",
|
|
41865
|
-
addonId: null,
|
|
41866
|
-
access: "view"
|
|
41867
|
-
},
|
|
41868
41801
|
"deviceManager.getDeviceStatusAggregate": {
|
|
41869
41802
|
capName: "device-manager",
|
|
41870
41803
|
capScope: "system",
|
|
@@ -42369,24 +42302,6 @@ Object.freeze({
|
|
|
42369
42302
|
addonId: null,
|
|
42370
42303
|
access: "view"
|
|
42371
42304
|
},
|
|
42372
|
-
"doorbell.applyDeviceSettingsPatch": {
|
|
42373
|
-
capName: "doorbell",
|
|
42374
|
-
capScope: "device",
|
|
42375
|
-
addonId: null,
|
|
42376
|
-
access: "create"
|
|
42377
|
-
},
|
|
42378
|
-
"doorbell.getDeviceLiveContribution": {
|
|
42379
|
-
capName: "doorbell",
|
|
42380
|
-
capScope: "device",
|
|
42381
|
-
addonId: null,
|
|
42382
|
-
access: "view"
|
|
42383
|
-
},
|
|
42384
|
-
"doorbell.getDeviceSettingsContribution": {
|
|
42385
|
-
capName: "doorbell",
|
|
42386
|
-
capScope: "device",
|
|
42387
|
-
addonId: null,
|
|
42388
|
-
access: "view"
|
|
42389
|
-
},
|
|
42390
42305
|
"doorbell.getStatus": {
|
|
42391
42306
|
capName: "doorbell",
|
|
42392
42307
|
capScope: "device",
|
|
@@ -50111,6 +50026,21 @@ TimelapseRuleInputSchema.extend({
|
|
|
50111
50026
|
createdAt: number(),
|
|
50112
50027
|
updatedAt: number()
|
|
50113
50028
|
});
|
|
50029
|
+
/** True when `model` ships a build for `format`. */
|
|
50030
|
+
function hasBuild(model, format) {
|
|
50031
|
+
return Boolean(model.formats[format]);
|
|
50032
|
+
}
|
|
50033
|
+
/**
|
|
50034
|
+
* Can a pool of `format` run a step whose catalog is `models`, given the model
|
|
50035
|
+
* the step names (`null`/absent = unpinned, the format default)?
|
|
50036
|
+
*/
|
|
50037
|
+
function stepModelRunsOnFormat(models, modelId, format) {
|
|
50038
|
+
if (modelId !== void 0 && modelId !== null) {
|
|
50039
|
+
const named = models.find((m) => m.id === modelId);
|
|
50040
|
+
if (named !== void 0 && hasBuild(named, format)) return true;
|
|
50041
|
+
}
|
|
50042
|
+
return models.some((m) => m.legacy !== true && hasBuild(m, format));
|
|
50043
|
+
}
|
|
50114
50044
|
var DETAIL_CROP_PADDING_KEY = "detailCropPaddingRatio";
|
|
50115
50045
|
var DETAIL_CROP_SQUARE_KEY = "detailCropSquare";
|
|
50116
50046
|
/**
|
|
@@ -51389,6 +51319,12 @@ Object.defineProperty(exports, "CLIP_STREAM_TRANSPORT_HEADER", {
|
|
|
51389
51319
|
return CLIP_STREAM_TRANSPORT_HEADER;
|
|
51390
51320
|
}
|
|
51391
51321
|
});
|
|
51322
|
+
Object.defineProperty(exports, "CLUSTER_MODEL_SCOPED_STEPS", {
|
|
51323
|
+
enumerable: true,
|
|
51324
|
+
get: function() {
|
|
51325
|
+
return CLUSTER_MODEL_SCOPED_STEPS;
|
|
51326
|
+
}
|
|
51327
|
+
});
|
|
51392
51328
|
Object.defineProperty(exports, "COCO_80_LABELS", {
|
|
51393
51329
|
enumerable: true,
|
|
51394
51330
|
get: function() {
|
|
@@ -51413,12 +51349,6 @@ Object.defineProperty(exports, "DEFAULT_AUDIO_ANALYZER_CONFIG", {
|
|
|
51413
51349
|
return DEFAULT_AUDIO_ANALYZER_CONFIG;
|
|
51414
51350
|
}
|
|
51415
51351
|
});
|
|
51416
|
-
Object.defineProperty(exports, "DEFAULT_CLUSTER_STEP_MODELS", {
|
|
51417
|
-
enumerable: true,
|
|
51418
|
-
get: function() {
|
|
51419
|
-
return DEFAULT_CLUSTER_STEP_MODELS;
|
|
51420
|
-
}
|
|
51421
|
-
});
|
|
51422
51352
|
Object.defineProperty(exports, "DEFAULT_CLUSTER_STEP_SETTINGS", {
|
|
51423
51353
|
enumerable: true,
|
|
51424
51354
|
get: function() {
|
|
@@ -52001,12 +51931,6 @@ Object.defineProperty(exports, "parseProfileBrokerId", {
|
|
|
52001
51931
|
return parseProfileBrokerId;
|
|
52002
51932
|
}
|
|
52003
51933
|
});
|
|
52004
|
-
Object.defineProperty(exports, "pickClusterStepModels", {
|
|
52005
|
-
enumerable: true,
|
|
52006
|
-
get: function() {
|
|
52007
|
-
return pickClusterStepModels;
|
|
52008
|
-
}
|
|
52009
|
-
});
|
|
52010
51934
|
Object.defineProperty(exports, "pickClusterStepSettings", {
|
|
52011
51935
|
enumerable: true,
|
|
52012
51936
|
get: function() {
|
|
@@ -52019,12 +51943,6 @@ Object.defineProperty(exports, "pickDetailCropConvention", {
|
|
|
52019
51943
|
return pickDetailCropConvention;
|
|
52020
51944
|
}
|
|
52021
51945
|
});
|
|
52022
|
-
Object.defineProperty(exports, "pickInvalidClusterStepModels", {
|
|
52023
|
-
enumerable: true,
|
|
52024
|
-
get: function() {
|
|
52025
|
-
return pickInvalidClusterStepModels;
|
|
52026
|
-
}
|
|
52027
|
-
});
|
|
52028
51946
|
Object.defineProperty(exports, "pickNativeLeaseOverride", {
|
|
52029
51947
|
enumerable: true,
|
|
52030
51948
|
get: function() {
|
|
@@ -52139,6 +52057,12 @@ Object.defineProperty(exports, "sleep", {
|
|
|
52139
52057
|
return sleep;
|
|
52140
52058
|
}
|
|
52141
52059
|
});
|
|
52060
|
+
Object.defineProperty(exports, "stepModelRunsOnFormat", {
|
|
52061
|
+
enumerable: true,
|
|
52062
|
+
get: function() {
|
|
52063
|
+
return stepModelRunsOnFormat;
|
|
52064
|
+
}
|
|
52065
|
+
});
|
|
52142
52066
|
Object.defineProperty(exports, "storageEvictableCapability", {
|
|
52143
52067
|
enumerable: true,
|
|
52144
52068
|
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-DUqr1zyq.js");
|
|
6
6
|
const require_lazy_sharp = require("../lazy-sharp-BuwKlQLR.js");
|
|
7
7
|
let node_fs = require("node:fs");
|
|
8
8
|
let node_path = require("node:path");
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { Et as motionDetectionCapability,
|
|
1
|
+
import { Et as motionDetectionCapability, _n as hydrateSchema, dn as DeviceType, lt as evaluateZoneRules, sn as BaseAddon } from "../dist-CxHIpsQs.mjs";
|
|
2
2
|
import { t as getSharp } from "../lazy-sharp-DXsqwpph.mjs";
|
|
3
3
|
import { readFileSync } from "node:fs";
|
|
4
4
|
import { join } from "node:path";
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
const require_chunk = require("./chunk-emK7D4bc.js");
|
|
2
|
-
const require_dist = require("./dist-
|
|
2
|
+
const require_dist = require("./dist-DUqr1zyq.js");
|
|
3
3
|
let node_crypto = require("node:crypto");
|
|
4
4
|
let node_fs = require("node:fs");
|
|
5
5
|
node_fs = require_chunk.__toESM(node_fs, 1);
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { an as isSoftwareDecode, en as errMsg, nn as Fmp4BoxSplitter, rn as buildFfmpegArgs } from "./dist-CxHIpsQs.mjs";
|
|
2
2
|
import { randomUUID } from "node:crypto";
|
|
3
3
|
import { realpathSync } from "node:fs";
|
|
4
4
|
import path from "node:path";
|