@camstack/addon-pipeline 1.2.106 → 1.2.107
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/{addon-utils-BEzVJ0xg.js → addon-utils-Vv2dCqA2.js} +1 -1
- package/dist/audio-analyzer/index.js +3 -3
- package/dist/audio-analyzer/index.mjs +2 -2
- package/dist/detection-pipeline/index.js +33 -12
- package/dist/detection-pipeline/index.mjs +31 -10
- package/dist/{dist-lITI1Bn5.mjs → dist-CkXAzTZ2.mjs} +148 -6
- package/dist/{dist-BSeR_hVv.js → dist-L-1LMGQs.js} +165 -5
- package/dist/{event-loop-stall-monitor-BNsp9k8r.js → event-loop-stall-monitor-DwAho7HD.js} +1 -1
- package/dist/{event-loop-stall-monitor-0VvjTRDP.mjs → event-loop-stall-monitor-fHkfgmlw.mjs} +1 -1
- package/dist/{lazy-sharp-CBohM8D8.js → lazy-sharp-DfbyQxET.js} +1 -1
- package/dist/motion-wasm/index.js +2 -2
- package/dist/motion-wasm/index.mjs +1 -1
- package/dist/pipeline-runner/index.js +4 -4
- package/dist/pipeline-runner/index.mjs +3 -3
- package/dist/{process-memory-C33u3tQz.js → process-memory-CgrbLo3l.js} +1 -1
- package/dist/{process-memory-CEKVKfwg.mjs → process-memory-DlSOzuHP.mjs} +1 -1
- package/dist/recorder/index.js +2 -2
- package/dist/recorder/index.mjs +1 -1
- package/dist/session-decode/decode-worker-child.js +2 -2
- package/dist/session-decode/decode-worker-child.mjs +1 -1
- package/dist/stream-broker/_stub.js +2 -2
- package/dist/stream-broker/{_virtual_mf-localSharedImportMap___mfe_internal__addon_stream_broker_widgets-w2XLD3uI.mjs → _virtual_mf-localSharedImportMap___mfe_internal__addon_stream_broker_widgets-BeL4_jgH.mjs} +3 -3
- package/dist/stream-broker/_virtual_mf___mfe_internal__addon_stream_broker_widgets__loadShare___mf_0_camstack_mf_1_types__loadShare__.js-DjndFc5V.mjs +26 -0
- package/dist/stream-broker/{_virtual_mf___mfe_internal__addon_stream_broker_widgets__loadShare___mf_0_camstack_mf_1_ui_mf_2_library__loadShare__.js-DsIi4G5Q.mjs → _virtual_mf___mfe_internal__addon_stream_broker_widgets__loadShare___mf_0_camstack_mf_1_ui_mf_2_library__loadShare__.js-CmHtm5CX.mjs} +1 -1
- package/dist/stream-broker/{hostInit-B-h24cDy.mjs → hostInit-BK9nzKAG.mjs} +3 -3
- package/dist/stream-broker/index.js +1 -1
- package/dist/stream-broker/index.mjs +1 -1
- package/dist/stream-broker/remoteEntry.js +1 -1
- package/dist/{worker-protocol-CiKfal2P.js → worker-protocol-GGnzfWu3.js} +1 -1
- package/dist/{worker-protocol-BDiL8TBm.mjs → worker-protocol-bEipQT9l.mjs} +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_types__loadShare__.js-DvZWLWk1.mjs +0 -26
|
@@ -2,9 +2,9 @@ Object.defineProperties(exports, {
|
|
|
2
2
|
__esModule: { value: true },
|
|
3
3
|
[Symbol.toStringTag]: { value: "Module" }
|
|
4
4
|
});
|
|
5
|
-
const require_dist = require("../dist-
|
|
6
|
-
const require_process_memory = require("../process-memory-
|
|
7
|
-
const require_addon_utils = require("../addon-utils-
|
|
5
|
+
const require_dist = require("../dist-L-1LMGQs.js");
|
|
6
|
+
const require_process_memory = require("../process-memory-CgrbLo3l.js");
|
|
7
|
+
const require_addon_utils = require("../addon-utils-Vv2dCqA2.js");
|
|
8
8
|
let node_path = require("node:path");
|
|
9
9
|
node_path = require_dist.__toESM(node_path);
|
|
10
10
|
let node_fs = require("node:fs");
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { n as __require } from "../chunk-DnnnRqeS.mjs";
|
|
2
|
-
import {
|
|
3
|
-
import { n as pickNodePlatformArch, t as readProcessMemory } from "../process-memory-
|
|
2
|
+
import { A as audioAnalyzerCapability, Et as hydrateSchema, _ as HF_BASE_URL, ct as resolvePoolMemoryPolicy, ht as errMsg, k as audioAnalysisCapability, n as AUDIO_BACKEND_CHOICES, q as mapAudioLabelToMacro, s as DEFAULT_AUDIO_ANALYZER_CONFIG, x as PoolMemoryWatchdog, xt as BaseAddon } from "../dist-CkXAzTZ2.mjs";
|
|
3
|
+
import { n as pickNodePlatformArch, t as readProcessMemory } from "../process-memory-DlSOzuHP.mjs";
|
|
4
4
|
import { i as downloadFile } from "../addon-utils-A2S9D7pu.mjs";
|
|
5
5
|
import * as path$1 from "node:path";
|
|
6
6
|
import * as fs from "node:fs";
|
|
@@ -2,11 +2,11 @@ Object.defineProperties(exports, {
|
|
|
2
2
|
__esModule: { value: true },
|
|
3
3
|
[Symbol.toStringTag]: { value: "Module" }
|
|
4
4
|
});
|
|
5
|
-
const require_dist = require("../dist-
|
|
6
|
-
const require_event_loop_stall_monitor = require("../event-loop-stall-monitor-
|
|
7
|
-
const require_lazy_sharp = require("../lazy-sharp-
|
|
8
|
-
const require_process_memory = require("../process-memory-
|
|
9
|
-
const require_addon_utils = require("../addon-utils-
|
|
5
|
+
const require_dist = require("../dist-L-1LMGQs.js");
|
|
6
|
+
const require_event_loop_stall_monitor = require("../event-loop-stall-monitor-DwAho7HD.js");
|
|
7
|
+
const require_lazy_sharp = require("../lazy-sharp-DfbyQxET.js");
|
|
8
|
+
const require_process_memory = require("../process-memory-CgrbLo3l.js");
|
|
9
|
+
const require_addon_utils = require("../addon-utils-Vv2dCqA2.js");
|
|
10
10
|
let sharp = require("sharp");
|
|
11
11
|
sharp = require_dist.__toESM(sharp);
|
|
12
12
|
let node_child_process = require("node:child_process");
|
|
@@ -5454,7 +5454,7 @@ function collectUnknownAddonIssues(steps, getStepDef = require_event_loop_stall_
|
|
|
5454
5454
|
* `diagnostics.substitutions` instead of happening silently. The caller
|
|
5455
5455
|
* (the provider) owns logging + dedup for both.
|
|
5456
5456
|
*/
|
|
5457
|
-
function resolveInputSteps(steps, format, engine, clusterModels) {
|
|
5457
|
+
function resolveInputSteps(steps, format, engine, clusterModels, clusterSettings) {
|
|
5458
5458
|
const resolvedSteps = [];
|
|
5459
5459
|
const unknownAddonIds = [];
|
|
5460
5460
|
const substitutions = [];
|
|
@@ -5476,12 +5476,13 @@ function resolveInputSteps(steps, format, engine, clusterModels) {
|
|
|
5476
5476
|
format: verdict.format,
|
|
5477
5477
|
formatsShipped: verdict.formatsShipped
|
|
5478
5478
|
});
|
|
5479
|
-
const childResult = s.children ? resolveInputSteps(s.children, format, engine, clusterModels) : null;
|
|
5479
|
+
const childResult = s.children ? resolveInputSteps(s.children, format, engine, clusterModels, clusterSettings) : null;
|
|
5480
5480
|
if (childResult) {
|
|
5481
5481
|
unknownAddonIds.push(...childResult.diagnostics.unknownAddonIds);
|
|
5482
5482
|
substitutions.push(...childResult.diagnostics.substitutions);
|
|
5483
5483
|
clusterRefusals.push(...childResult.diagnostics.clusterRefusals);
|
|
5484
5484
|
}
|
|
5485
|
+
const settings = require_dist.overlayClusterStepSettings(s.addonId, s.settings, clusterSettings ?? {});
|
|
5485
5486
|
resolvedSteps.push({
|
|
5486
5487
|
addonId: s.addonId,
|
|
5487
5488
|
addonName: def.name,
|
|
@@ -5491,7 +5492,7 @@ function resolveInputSteps(steps, format, engine, clusterModels) {
|
|
|
5491
5492
|
enabled: s.enabled,
|
|
5492
5493
|
modelId: verdict.modelId,
|
|
5493
5494
|
children: childResult ? childResult.steps : [],
|
|
5494
|
-
...
|
|
5495
|
+
...settings ? { settings } : {}
|
|
5495
5496
|
});
|
|
5496
5497
|
continue;
|
|
5497
5498
|
}
|
|
@@ -5504,12 +5505,13 @@ function resolveInputSteps(steps, format, engine, clusterModels) {
|
|
|
5504
5505
|
running: runningModelId,
|
|
5505
5506
|
format
|
|
5506
5507
|
});
|
|
5507
|
-
const childResult = s.children ? resolveInputSteps(s.children, format, engine, clusterModels) : null;
|
|
5508
|
+
const childResult = s.children ? resolveInputSteps(s.children, format, engine, clusterModels, clusterSettings) : null;
|
|
5508
5509
|
if (childResult) {
|
|
5509
5510
|
unknownAddonIds.push(...childResult.diagnostics.unknownAddonIds);
|
|
5510
5511
|
substitutions.push(...childResult.diagnostics.substitutions);
|
|
5511
5512
|
clusterRefusals.push(...childResult.diagnostics.clusterRefusals);
|
|
5512
5513
|
}
|
|
5514
|
+
const settings = require_dist.overlayClusterStepSettings(s.addonId, s.settings, clusterSettings ?? {});
|
|
5513
5515
|
resolvedSteps.push({
|
|
5514
5516
|
addonId: s.addonId,
|
|
5515
5517
|
addonName: def.name,
|
|
@@ -5519,7 +5521,7 @@ function resolveInputSteps(steps, format, engine, clusterModels) {
|
|
|
5519
5521
|
enabled: s.enabled,
|
|
5520
5522
|
modelId: runningModelId,
|
|
5521
5523
|
children: childResult ? childResult.steps : [],
|
|
5522
|
-
...
|
|
5524
|
+
...settings ? { settings } : {}
|
|
5523
5525
|
});
|
|
5524
5526
|
}
|
|
5525
5527
|
return {
|
|
@@ -5608,6 +5610,7 @@ var CLUSTER_MODEL_OWNER_ADDON_ID = "pipeline-orchestrator";
|
|
|
5608
5610
|
/** TTL-cached read of the cluster model row. */
|
|
5609
5611
|
var ClusterModelSource = class {
|
|
5610
5612
|
models = require_dist.DEFAULT_CLUSTER_STEP_MODELS;
|
|
5613
|
+
settings = require_dist.DEFAULT_CLUSTER_STEP_SETTINGS;
|
|
5611
5614
|
lastReadAtMs = Number.NEGATIVE_INFINITY;
|
|
5612
5615
|
inFlight = null;
|
|
5613
5616
|
logger;
|
|
@@ -5622,6 +5625,10 @@ var ClusterModelSource = class {
|
|
|
5622
5625
|
current() {
|
|
5623
5626
|
return this.models;
|
|
5624
5627
|
}
|
|
5628
|
+
/** Cluster-scoped step knobs in force right now (admission floors, …). */
|
|
5629
|
+
currentSettings() {
|
|
5630
|
+
return this.settings;
|
|
5631
|
+
}
|
|
5625
5632
|
/**
|
|
5626
5633
|
* Re-read if the cached row has expired. Concurrent callers share one
|
|
5627
5634
|
* in-flight read; a failure keeps the LAST KNOWN row.
|
|
@@ -5637,9 +5644,16 @@ var ClusterModelSource = class {
|
|
|
5637
5644
|
}
|
|
5638
5645
|
async read(api) {
|
|
5639
5646
|
try {
|
|
5640
|
-
const
|
|
5647
|
+
const view = await api.addonSettings.getGlobalSettings.query({ addonId: CLUSTER_MODEL_OWNER_ADDON_ID });
|
|
5648
|
+
const next = require_dist.pickClusterStepModels(view);
|
|
5649
|
+
const nextSettings = require_dist.pickClusterStepSettings(view);
|
|
5641
5650
|
this.lastReadAtMs = this.now();
|
|
5642
5651
|
const changed = Object.keys(next).filter((stepId) => next[stepId] !== this.models[stepId]);
|
|
5652
|
+
const settingsChanged = Object.keys(nextSettings).some((stepId) => {
|
|
5653
|
+
const from = this.settings[stepId] ?? {};
|
|
5654
|
+
const to = nextSettings[stepId] ?? {};
|
|
5655
|
+
return [...new Set([...Object.keys(from), ...Object.keys(to)])].some((key) => from[key] !== to[key]);
|
|
5656
|
+
});
|
|
5643
5657
|
if (changed.length > 0) {
|
|
5644
5658
|
this.logger.info("cluster step model changed — vectors already stored by the previous model need a re-embed pass", { meta: { changed: changed.map((stepId) => ({
|
|
5645
5659
|
stepId,
|
|
@@ -5648,6 +5662,13 @@ var ClusterModelSource = class {
|
|
|
5648
5662
|
})) } });
|
|
5649
5663
|
this.models = next;
|
|
5650
5664
|
}
|
|
5665
|
+
if (settingsChanged) {
|
|
5666
|
+
this.logger.info("cluster step settings changed", { meta: {
|
|
5667
|
+
from: { ...this.settings },
|
|
5668
|
+
to: { ...nextSettings }
|
|
5669
|
+
} });
|
|
5670
|
+
this.settings = nextSettings;
|
|
5671
|
+
}
|
|
5651
5672
|
} catch (err) {
|
|
5652
5673
|
this.logger.warn("cluster step model read failed — keeping the last known row", { meta: {
|
|
5653
5674
|
owner: CLUSTER_MODEL_OWNER_ADDON_ID,
|
|
@@ -7504,7 +7525,7 @@ var DetectionPipelineProvider = class DetectionPipelineProvider {
|
|
|
7504
7525
|
backend: this.currentEngine.backend,
|
|
7505
7526
|
device: this.currentEngine.device ?? null
|
|
7506
7527
|
}, clusterRefusalsOut) {
|
|
7507
|
-
const { steps: resolvedSteps, diagnostics } = resolveInputSteps(steps, format, engine, this.clusterModels.current());
|
|
7528
|
+
const { steps: resolvedSteps, diagnostics } = resolveInputSteps(steps, format, engine, this.clusterModels.current(), this.clusterModels.currentSettings());
|
|
7508
7529
|
if (clusterRefusalsOut) clusterRefusalsOut.push(...diagnostics.clusterRefusals);
|
|
7509
7530
|
for (const addonId of diagnostics.unknownAddonIds) this.logLiveDispatchIssueOnce(`unknown:${addonId}`, () => this.log.warn("Live pipeline step references an unknown addon — dropping step", { meta: { addonId } }));
|
|
7510
7531
|
for (const sub of diagnostics.substitutions) this.logLiveDispatchIssueOnce(`${sub.addonId}|${sub.chosen}|${sub.running}|${sub.format}`, () => this.log.info("Live pipeline step model substituted for engine format (node-local)", { meta: {
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
import { n as __require } from "../chunk-DnnnRqeS.mjs";
|
|
2
|
-
import { $ as
|
|
3
|
-
import { a as getDefaultModelForFormat, c as getStepDefinition, i as ALL_STEPS, l as resolveModelForFormat, n as startEventLoopStallMonitor, o as getDefaultModelForFormatFromDef, r as ALL_PIPELINE_STEPS, s as getStep, u as landmarkPrecisionVerdict } from "../event-loop-stall-monitor-
|
|
2
|
+
import { $ as pickClusterStepSettings, At as nodePin, D as YAMNET_TO_MACRO, Et as hydrateSchema, G as evaluateZoneRules, Gt as union, Ht as object, I as defaultDeviceFor$1, It as array, Kt as EventCategory, Pt as sleep, Q as pickClusterStepModels, Tt as createEvent, V as detectionPipelineCapability, W as enumerateInferenceDevices, Wt as string, X as overlayClusterStepSettings, c as DEFAULT_CLUSTER_STEP_MODELS, ct as resolvePoolMemoryPolicy, ht as errMsg, jt as parseJsonUnknown, l as DEFAULT_CLUSTER_STEP_SETTINGS, nt as pipelineExecutorCapability, ot as resolveClusterStepModelId, p as DEVICE_BACKEND_TO_FORMAT, pt as supportedRuntimes$1, t as APPLE_SA_TO_MACRO, ut as runtimeDevices$1, x as PoolMemoryWatchdog, xt as BaseAddon } from "../dist-CkXAzTZ2.mjs";
|
|
3
|
+
import { a as getDefaultModelForFormat, c as getStepDefinition, i as ALL_STEPS, l as resolveModelForFormat, n as startEventLoopStallMonitor, o as getDefaultModelForFormatFromDef, r as ALL_PIPELINE_STEPS, s as getStep, u as landmarkPrecisionVerdict } from "../event-loop-stall-monitor-fHkfgmlw.mjs";
|
|
4
4
|
import { t as getSharp } from "../lazy-sharp-6oymT_yf.mjs";
|
|
5
|
-
import { n as pickNodePlatformArch, t as readProcessMemory } from "../process-memory-
|
|
5
|
+
import { n as pickNodePlatformArch, t as readProcessMemory } from "../process-memory-DlSOzuHP.mjs";
|
|
6
6
|
import { a as ensureModel, o as isModelDownloaded, r as deleteModelFromDisk } from "../addon-utils-A2S9D7pu.mjs";
|
|
7
7
|
import sharp from "sharp";
|
|
8
8
|
import { spawn } from "node:child_process";
|
|
@@ -5447,7 +5447,7 @@ function collectUnknownAddonIssues(steps, getStepDef = getStepDefinition) {
|
|
|
5447
5447
|
* `diagnostics.substitutions` instead of happening silently. The caller
|
|
5448
5448
|
* (the provider) owns logging + dedup for both.
|
|
5449
5449
|
*/
|
|
5450
|
-
function resolveInputSteps(steps, format, engine, clusterModels) {
|
|
5450
|
+
function resolveInputSteps(steps, format, engine, clusterModels, clusterSettings) {
|
|
5451
5451
|
const resolvedSteps = [];
|
|
5452
5452
|
const unknownAddonIds = [];
|
|
5453
5453
|
const substitutions = [];
|
|
@@ -5469,12 +5469,13 @@ function resolveInputSteps(steps, format, engine, clusterModels) {
|
|
|
5469
5469
|
format: verdict.format,
|
|
5470
5470
|
formatsShipped: verdict.formatsShipped
|
|
5471
5471
|
});
|
|
5472
|
-
const childResult = s.children ? resolveInputSteps(s.children, format, engine, clusterModels) : null;
|
|
5472
|
+
const childResult = s.children ? resolveInputSteps(s.children, format, engine, clusterModels, clusterSettings) : null;
|
|
5473
5473
|
if (childResult) {
|
|
5474
5474
|
unknownAddonIds.push(...childResult.diagnostics.unknownAddonIds);
|
|
5475
5475
|
substitutions.push(...childResult.diagnostics.substitutions);
|
|
5476
5476
|
clusterRefusals.push(...childResult.diagnostics.clusterRefusals);
|
|
5477
5477
|
}
|
|
5478
|
+
const settings = overlayClusterStepSettings(s.addonId, s.settings, clusterSettings ?? {});
|
|
5478
5479
|
resolvedSteps.push({
|
|
5479
5480
|
addonId: s.addonId,
|
|
5480
5481
|
addonName: def.name,
|
|
@@ -5484,7 +5485,7 @@ function resolveInputSteps(steps, format, engine, clusterModels) {
|
|
|
5484
5485
|
enabled: s.enabled,
|
|
5485
5486
|
modelId: verdict.modelId,
|
|
5486
5487
|
children: childResult ? childResult.steps : [],
|
|
5487
|
-
...
|
|
5488
|
+
...settings ? { settings } : {}
|
|
5488
5489
|
});
|
|
5489
5490
|
continue;
|
|
5490
5491
|
}
|
|
@@ -5497,12 +5498,13 @@ function resolveInputSteps(steps, format, engine, clusterModels) {
|
|
|
5497
5498
|
running: runningModelId,
|
|
5498
5499
|
format
|
|
5499
5500
|
});
|
|
5500
|
-
const childResult = s.children ? resolveInputSteps(s.children, format, engine, clusterModels) : null;
|
|
5501
|
+
const childResult = s.children ? resolveInputSteps(s.children, format, engine, clusterModels, clusterSettings) : null;
|
|
5501
5502
|
if (childResult) {
|
|
5502
5503
|
unknownAddonIds.push(...childResult.diagnostics.unknownAddonIds);
|
|
5503
5504
|
substitutions.push(...childResult.diagnostics.substitutions);
|
|
5504
5505
|
clusterRefusals.push(...childResult.diagnostics.clusterRefusals);
|
|
5505
5506
|
}
|
|
5507
|
+
const settings = overlayClusterStepSettings(s.addonId, s.settings, clusterSettings ?? {});
|
|
5506
5508
|
resolvedSteps.push({
|
|
5507
5509
|
addonId: s.addonId,
|
|
5508
5510
|
addonName: def.name,
|
|
@@ -5512,7 +5514,7 @@ function resolveInputSteps(steps, format, engine, clusterModels) {
|
|
|
5512
5514
|
enabled: s.enabled,
|
|
5513
5515
|
modelId: runningModelId,
|
|
5514
5516
|
children: childResult ? childResult.steps : [],
|
|
5515
|
-
...
|
|
5517
|
+
...settings ? { settings } : {}
|
|
5516
5518
|
});
|
|
5517
5519
|
}
|
|
5518
5520
|
return {
|
|
@@ -5601,6 +5603,7 @@ var CLUSTER_MODEL_OWNER_ADDON_ID = "pipeline-orchestrator";
|
|
|
5601
5603
|
/** TTL-cached read of the cluster model row. */
|
|
5602
5604
|
var ClusterModelSource = class {
|
|
5603
5605
|
models = DEFAULT_CLUSTER_STEP_MODELS;
|
|
5606
|
+
settings = DEFAULT_CLUSTER_STEP_SETTINGS;
|
|
5604
5607
|
lastReadAtMs = Number.NEGATIVE_INFINITY;
|
|
5605
5608
|
inFlight = null;
|
|
5606
5609
|
logger;
|
|
@@ -5615,6 +5618,10 @@ var ClusterModelSource = class {
|
|
|
5615
5618
|
current() {
|
|
5616
5619
|
return this.models;
|
|
5617
5620
|
}
|
|
5621
|
+
/** Cluster-scoped step knobs in force right now (admission floors, …). */
|
|
5622
|
+
currentSettings() {
|
|
5623
|
+
return this.settings;
|
|
5624
|
+
}
|
|
5618
5625
|
/**
|
|
5619
5626
|
* Re-read if the cached row has expired. Concurrent callers share one
|
|
5620
5627
|
* in-flight read; a failure keeps the LAST KNOWN row.
|
|
@@ -5630,9 +5637,16 @@ var ClusterModelSource = class {
|
|
|
5630
5637
|
}
|
|
5631
5638
|
async read(api) {
|
|
5632
5639
|
try {
|
|
5633
|
-
const
|
|
5640
|
+
const view = await api.addonSettings.getGlobalSettings.query({ addonId: CLUSTER_MODEL_OWNER_ADDON_ID });
|
|
5641
|
+
const next = pickClusterStepModels(view);
|
|
5642
|
+
const nextSettings = pickClusterStepSettings(view);
|
|
5634
5643
|
this.lastReadAtMs = this.now();
|
|
5635
5644
|
const changed = Object.keys(next).filter((stepId) => next[stepId] !== this.models[stepId]);
|
|
5645
|
+
const settingsChanged = Object.keys(nextSettings).some((stepId) => {
|
|
5646
|
+
const from = this.settings[stepId] ?? {};
|
|
5647
|
+
const to = nextSettings[stepId] ?? {};
|
|
5648
|
+
return [...new Set([...Object.keys(from), ...Object.keys(to)])].some((key) => from[key] !== to[key]);
|
|
5649
|
+
});
|
|
5636
5650
|
if (changed.length > 0) {
|
|
5637
5651
|
this.logger.info("cluster step model changed — vectors already stored by the previous model need a re-embed pass", { meta: { changed: changed.map((stepId) => ({
|
|
5638
5652
|
stepId,
|
|
@@ -5641,6 +5655,13 @@ var ClusterModelSource = class {
|
|
|
5641
5655
|
})) } });
|
|
5642
5656
|
this.models = next;
|
|
5643
5657
|
}
|
|
5658
|
+
if (settingsChanged) {
|
|
5659
|
+
this.logger.info("cluster step settings changed", { meta: {
|
|
5660
|
+
from: { ...this.settings },
|
|
5661
|
+
to: { ...nextSettings }
|
|
5662
|
+
} });
|
|
5663
|
+
this.settings = nextSettings;
|
|
5664
|
+
}
|
|
5644
5665
|
} catch (err) {
|
|
5645
5666
|
this.logger.warn("cluster step model read failed — keeping the last known row", { meta: {
|
|
5646
5667
|
owner: CLUSTER_MODEL_OWNER_ADDON_ID,
|
|
@@ -7497,7 +7518,7 @@ var DetectionPipelineProvider = class DetectionPipelineProvider {
|
|
|
7497
7518
|
backend: this.currentEngine.backend,
|
|
7498
7519
|
device: this.currentEngine.device ?? null
|
|
7499
7520
|
}, clusterRefusalsOut) {
|
|
7500
|
-
const { steps: resolvedSteps, diagnostics } = resolveInputSteps(steps, format, engine, this.clusterModels.current());
|
|
7521
|
+
const { steps: resolvedSteps, diagnostics } = resolveInputSteps(steps, format, engine, this.clusterModels.current(), this.clusterModels.currentSettings());
|
|
7501
7522
|
if (clusterRefusalsOut) clusterRefusalsOut.push(...diagnostics.clusterRefusals);
|
|
7502
7523
|
for (const addonId of diagnostics.unknownAddonIds) this.logLiveDispatchIssueOnce(`unknown:${addonId}`, () => this.log.warn("Live pipeline step references an unknown addon — dropping step", { meta: { addonId } }));
|
|
7503
7524
|
for (const sub of diagnostics.substitutions) this.logLiveDispatchIssueOnce(`${sub.addonId}|${sub.chosen}|${sub.running}|${sub.format}`, () => this.log.info("Live pipeline step model substituted for engine format (node-local)", { meta: {
|
|
@@ -21682,7 +21682,12 @@ var TerminalSessionInfoSchema = object({
|
|
|
21682
21682
|
var TerminalProfileInfoSchema = object({
|
|
21683
21683
|
profileId: string(),
|
|
21684
21684
|
label: string(),
|
|
21685
|
-
description: string().optional()
|
|
21685
|
+
description: string().optional(),
|
|
21686
|
+
/** Spawn defaults the instance form copies on create. */
|
|
21687
|
+
executable: string().optional(),
|
|
21688
|
+
args: array(string()).readonly().optional(),
|
|
21689
|
+
cwd: string().optional(),
|
|
21690
|
+
environment: array(string()).readonly().optional()
|
|
21686
21691
|
});
|
|
21687
21692
|
/**
|
|
21688
21693
|
* A durable operator-created Terminal instance. Profiles are templates; only
|
|
@@ -21695,7 +21700,11 @@ var TerminalInstanceInfoSchema = object({
|
|
|
21695
21700
|
profileId: string(),
|
|
21696
21701
|
profileLabel: string(),
|
|
21697
21702
|
name: string(),
|
|
21698
|
-
enabled: boolean()
|
|
21703
|
+
enabled: boolean(),
|
|
21704
|
+
executable: string(),
|
|
21705
|
+
args: array(string()).readonly(),
|
|
21706
|
+
cwd: string(),
|
|
21707
|
+
environment: array(string()).readonly()
|
|
21699
21708
|
});
|
|
21700
21709
|
var TerminalLegacyCameraSchema = object({
|
|
21701
21710
|
stableId: string(),
|
|
@@ -21725,7 +21734,21 @@ var TerminalOutputBatchSchema = object({
|
|
|
21725
21734
|
method(_void(), array(TerminalProfileInfoSchema).readonly(), { auth: "admin" }), method(_void(), array(TerminalInstanceInfoSchema).readonly(), { auth: "admin" }), method(object({
|
|
21726
21735
|
targetNodeId: string().min(1),
|
|
21727
21736
|
profileId: string().min(1),
|
|
21728
|
-
name: string().trim().min(1).max(160).optional()
|
|
21737
|
+
name: string().trim().min(1).max(160).optional(),
|
|
21738
|
+
executable: string().max(1024).optional(),
|
|
21739
|
+
args: array(string().max(2048)).max(64).optional(),
|
|
21740
|
+
cwd: string().max(1024).optional(),
|
|
21741
|
+
environment: array(string().max(4096)).max(64).optional()
|
|
21742
|
+
}), TerminalInstanceInfoSchema, {
|
|
21743
|
+
kind: "mutation",
|
|
21744
|
+
auth: "admin"
|
|
21745
|
+
}), method(object({
|
|
21746
|
+
instanceId: string().min(1),
|
|
21747
|
+
name: string().trim().min(1).max(160).optional(),
|
|
21748
|
+
executable: string().max(1024).optional(),
|
|
21749
|
+
args: array(string().max(2048)).max(64).optional(),
|
|
21750
|
+
cwd: string().max(1024).optional(),
|
|
21751
|
+
environment: array(string().max(4096)).max(64).optional()
|
|
21729
21752
|
}), TerminalInstanceInfoSchema, {
|
|
21730
21753
|
kind: "mutation",
|
|
21731
21754
|
auth: "admin"
|
|
@@ -21747,7 +21770,11 @@ method(_void(), array(TerminalProfileInfoSchema).readonly(), { auth: "admin" }),
|
|
|
21747
21770
|
}), method(_void(), array(TerminalSessionInfoSchema).readonly(), { auth: "admin" }), method(object({
|
|
21748
21771
|
profileId: string(),
|
|
21749
21772
|
cols: number().int().positive(),
|
|
21750
|
-
rows: number().int().positive()
|
|
21773
|
+
rows: number().int().positive(),
|
|
21774
|
+
executable: string().max(1024).optional(),
|
|
21775
|
+
args: array(string().max(2048)).max(64).optional(),
|
|
21776
|
+
cwd: string().max(1024).optional(),
|
|
21777
|
+
environment: array(string().max(4096)).max(64).optional()
|
|
21751
21778
|
}), TerminalSessionInfoSchema, {
|
|
21752
21779
|
kind: "mutation",
|
|
21753
21780
|
auth: "admin"
|
|
@@ -24842,6 +24869,20 @@ var AllowedAddressesSchema = object({
|
|
|
24842
24869
|
* Network Addresses admin page and persisted by the addon.
|
|
24843
24870
|
*/
|
|
24844
24871
|
addresses: array(string()).readonly() });
|
|
24872
|
+
var TlsStatusSchema = object({
|
|
24873
|
+
mode: _enum([
|
|
24874
|
+
"generated",
|
|
24875
|
+
"uploaded",
|
|
24876
|
+
"disabled"
|
|
24877
|
+
]),
|
|
24878
|
+
leafFingerprintSha256: string().nullable(),
|
|
24879
|
+
caFingerprintSha256: string().nullable(),
|
|
24880
|
+
validTo: string().nullable(),
|
|
24881
|
+
sans: array(string()),
|
|
24882
|
+
caCertPem: string().nullable(),
|
|
24883
|
+
reissueError: string().nullable(),
|
|
24884
|
+
restartRequired: boolean()
|
|
24885
|
+
});
|
|
24845
24886
|
method(_void(), ListResultSchema), method(_void(), PreferredSchema), method(object({
|
|
24846
24887
|
/**
|
|
24847
24888
|
* LEGACY HINT — do not send from new code. Kept optional so clients
|
|
@@ -24861,7 +24902,20 @@ method(_void(), ListResultSchema), method(_void(), PreferredSchema), method(obje
|
|
|
24861
24902
|
* to avoid mixed-content blocks in the browser. The public
|
|
24862
24903
|
* tunnel always emits `https://` regardless. */
|
|
24863
24904
|
scheme: _enum(["http", "https"]).optional()
|
|
24864
|
-
}), GetConnectionEndpointsResultSchema), method(_void(), NotificationEndpointSchema), method(object({ baseUrl: string().nullable() }), NotificationEndpointSchema, { kind: "mutation" }), method(_void(), AllowedAddressesSchema), method(AllowedAddressesSchema, object({ success: literal(true) }), { kind: "mutation" }), method(_void(), AllowedAddressesSchema, { kind: "mutation" })
|
|
24905
|
+
}), GetConnectionEndpointsResultSchema), method(_void(), NotificationEndpointSchema), method(object({ baseUrl: string().nullable() }), NotificationEndpointSchema, { kind: "mutation" }), method(_void(), AllowedAddressesSchema), method(AllowedAddressesSchema, object({ success: literal(true) }), { kind: "mutation" }), method(_void(), AllowedAddressesSchema, { kind: "mutation" }), method(_void(), TlsStatusSchema), method(object({ reason: string().optional() }), TlsStatusSchema, {
|
|
24906
|
+
kind: "mutation",
|
|
24907
|
+
auth: "admin"
|
|
24908
|
+
}), method(object({
|
|
24909
|
+
certPem: string().min(1),
|
|
24910
|
+
keyPem: string().min(1),
|
|
24911
|
+
caPem: string().optional()
|
|
24912
|
+
}), TlsStatusSchema, {
|
|
24913
|
+
kind: "mutation",
|
|
24914
|
+
auth: "admin"
|
|
24915
|
+
}), method(_void(), object({ pem: string() })), method(_void(), TlsStatusSchema, {
|
|
24916
|
+
kind: "mutation",
|
|
24917
|
+
auth: "admin"
|
|
24918
|
+
});
|
|
24865
24919
|
object({
|
|
24866
24920
|
/** Lifecycle state of the lock. `jammed` means the motor reported
|
|
24867
24921
|
* failure to reach the target — operator intervention required. */
|
|
@@ -30796,6 +30850,12 @@ Object.freeze({
|
|
|
30796
30850
|
addonId: null,
|
|
30797
30851
|
access: "create"
|
|
30798
30852
|
},
|
|
30853
|
+
"localNetwork.downloadCa": {
|
|
30854
|
+
capName: "local-network",
|
|
30855
|
+
capScope: "system",
|
|
30856
|
+
addonId: null,
|
|
30857
|
+
access: "view"
|
|
30858
|
+
},
|
|
30799
30859
|
"localNetwork.getAllowedAddresses": {
|
|
30800
30860
|
capName: "local-network",
|
|
30801
30861
|
capScope: "system",
|
|
@@ -30820,18 +30880,36 @@ Object.freeze({
|
|
|
30820
30880
|
addonId: null,
|
|
30821
30881
|
access: "view"
|
|
30822
30882
|
},
|
|
30883
|
+
"localNetwork.getTlsStatus": {
|
|
30884
|
+
capName: "local-network",
|
|
30885
|
+
capScope: "system",
|
|
30886
|
+
addonId: null,
|
|
30887
|
+
access: "view"
|
|
30888
|
+
},
|
|
30823
30889
|
"localNetwork.list": {
|
|
30824
30890
|
capName: "local-network",
|
|
30825
30891
|
capScope: "system",
|
|
30826
30892
|
addonId: null,
|
|
30827
30893
|
access: "view"
|
|
30828
30894
|
},
|
|
30895
|
+
"localNetwork.regenerateCertificate": {
|
|
30896
|
+
capName: "local-network",
|
|
30897
|
+
capScope: "system",
|
|
30898
|
+
addonId: null,
|
|
30899
|
+
access: "create"
|
|
30900
|
+
},
|
|
30829
30901
|
"localNetwork.resetAllowlistToBestMatch": {
|
|
30830
30902
|
capName: "local-network",
|
|
30831
30903
|
capScope: "system",
|
|
30832
30904
|
addonId: null,
|
|
30833
30905
|
access: "delete"
|
|
30834
30906
|
},
|
|
30907
|
+
"localNetwork.revertToGeneratedCertificate": {
|
|
30908
|
+
capName: "local-network",
|
|
30909
|
+
capScope: "system",
|
|
30910
|
+
addonId: null,
|
|
30911
|
+
access: "create"
|
|
30912
|
+
},
|
|
30835
30913
|
"localNetwork.setAllowedAddresses": {
|
|
30836
30914
|
capName: "local-network",
|
|
30837
30915
|
capScope: "system",
|
|
@@ -30844,6 +30922,12 @@ Object.freeze({
|
|
|
30844
30922
|
addonId: null,
|
|
30845
30923
|
access: "create"
|
|
30846
30924
|
},
|
|
30925
|
+
"localNetwork.uploadCertificate": {
|
|
30926
|
+
capName: "local-network",
|
|
30927
|
+
capScope: "system",
|
|
30928
|
+
addonId: null,
|
|
30929
|
+
access: "create"
|
|
30930
|
+
},
|
|
30847
30931
|
"lockControl.lock": {
|
|
30848
30932
|
capName: "lock-control",
|
|
30849
30933
|
capScope: "device",
|
|
@@ -33724,6 +33808,12 @@ Object.freeze({
|
|
|
33724
33808
|
addonId: null,
|
|
33725
33809
|
access: "create"
|
|
33726
33810
|
},
|
|
33811
|
+
"terminalSession.updateInstance": {
|
|
33812
|
+
capName: "terminal-session",
|
|
33813
|
+
capScope: "system",
|
|
33814
|
+
addonId: null,
|
|
33815
|
+
access: "create"
|
|
33816
|
+
},
|
|
33727
33817
|
"terminalSession.writeInput": {
|
|
33728
33818
|
capName: "terminal-session",
|
|
33729
33819
|
capScope: "system",
|
|
@@ -36375,6 +36465,58 @@ function resolveClusterStepModelId(stepId, models) {
|
|
|
36375
36465
|
const chosen = models[stepId];
|
|
36376
36466
|
return chosen !== void 0 && chosen !== "" ? chosen : step.defaultModelId;
|
|
36377
36467
|
}
|
|
36468
|
+
var CLUSTER_STEP_SETTING_FIELDS = [{
|
|
36469
|
+
stepId: "face-embedding",
|
|
36470
|
+
key: "minLandmarkFaceSize",
|
|
36471
|
+
label: "Min face size for recognition (detection px)",
|
|
36472
|
+
description: "Refuse to embed a face smaller than this IN THE DETECTION FRAME. Applies to every node — the enrolled gallery is one index, and two admission floors would fill it from two policies. 0 disables the gate.",
|
|
36473
|
+
type: "slider",
|
|
36474
|
+
min: 0,
|
|
36475
|
+
max: 64,
|
|
36476
|
+
step: 2,
|
|
36477
|
+
default: 24
|
|
36478
|
+
}];
|
|
36479
|
+
function clusterStepSettingKey(stepId, fieldKey) {
|
|
36480
|
+
return `clusterStepSetting:${stepId}:${fieldKey}`;
|
|
36481
|
+
}
|
|
36482
|
+
var ClusterSettingNumberSchema = number().finite();
|
|
36483
|
+
function readClusterStepSettings(config) {
|
|
36484
|
+
const out = {};
|
|
36485
|
+
for (const field of CLUSTER_STEP_SETTING_FIELDS) {
|
|
36486
|
+
const parsed = ClusterSettingNumberSchema.safeParse(config[clusterStepSettingKey(field.stepId, field.key)]);
|
|
36487
|
+
const value = parsed.success ? parsed.data : field.default;
|
|
36488
|
+
const existing = out[field.stepId] ?? {};
|
|
36489
|
+
out[field.stepId] = {
|
|
36490
|
+
...existing,
|
|
36491
|
+
[field.key]: value
|
|
36492
|
+
};
|
|
36493
|
+
}
|
|
36494
|
+
return out;
|
|
36495
|
+
}
|
|
36496
|
+
var DEFAULT_CLUSTER_STEP_SETTINGS = readClusterStepSettings({});
|
|
36497
|
+
function pickClusterStepSettings(view) {
|
|
36498
|
+
if (view === null) return DEFAULT_CLUSTER_STEP_SETTINGS;
|
|
36499
|
+
const flat = {};
|
|
36500
|
+
const wanted = new Set(CLUSTER_STEP_SETTING_FIELDS.map((field) => clusterStepSettingKey(field.stepId, field.key)));
|
|
36501
|
+
for (const section of view.sections) for (const entry of section.fields) {
|
|
36502
|
+
if (!isHydratedField$2(entry) || typeof entry.key !== "string") continue;
|
|
36503
|
+
if (wanted.has(entry.key)) flat[entry.key] = entry.value;
|
|
36504
|
+
}
|
|
36505
|
+
return readClusterStepSettings(flat);
|
|
36506
|
+
}
|
|
36507
|
+
/**
|
|
36508
|
+
* Cluster knobs win over leftover per-device values. The cluster row is the
|
|
36509
|
+
* authority; a device-local copy is a leftover of the old per-node editor.
|
|
36510
|
+
*/
|
|
36511
|
+
function overlayClusterStepSettings(stepId, deviceSettings, cluster) {
|
|
36512
|
+
const overlay = cluster[stepId];
|
|
36513
|
+
if (overlay === void 0 || Object.keys(overlay).length === 0) return deviceSettings === void 0 ? void 0 : { ...deviceSettings };
|
|
36514
|
+
if (deviceSettings === void 0) return { ...overlay };
|
|
36515
|
+
return {
|
|
36516
|
+
...deviceSettings,
|
|
36517
|
+
...overlay
|
|
36518
|
+
};
|
|
36519
|
+
}
|
|
36378
36520
|
var DETAIL_CROP_PADDING_KEY = "detailCropPaddingRatio";
|
|
36379
36521
|
var DETAIL_CROP_SQUARE_KEY = "detailCropSquare";
|
|
36380
36522
|
/**
|
|
@@ -37434,4 +37576,4 @@ function enumerateInferenceDevices(hw) {
|
|
|
37434
37576
|
return out;
|
|
37435
37577
|
}
|
|
37436
37578
|
//#endregion
|
|
37437
|
-
export {
|
|
37579
|
+
export { pickClusterStepSettings as $, audioAnalyzerCapability as A, nodePin as At, deriveRecordingMode as B, literal as Bt, RATE_CONTROL_TIGHT as C, DeviceFeature as Ct, YAMNET_TO_MACRO as D, isEvent as Dt, RingBuffer as E, hydrateSchema as Et, customAction as F, _enum as Ft, evaluateZoneRules as G, union as Gt, egressTranscodeSharingKey as H, object as Ht, defaultDeviceFor as I, array as It, maskUrlCredentials as J, hfModelUrl as K, EventCategory as Kt, defineCustomActions as L, boolean as Lt, batteryCapability as M, parseProfileBrokerId as Mt, cameraStreamsCapability as N, selectAssignedProfileSlots as Nt, addonWidgetsSourceCapability as O, makeProfileBrokerId as Ot, createHwAccelCache as P, sleep as Pt, pickClusterStepModels as Q, deriveBatteryPresence as R, discriminatedUnion as Rt, RATE_CONTROL_RELAXED as S, CAM_PROFILE_ORDER as St, RecordingConfigSchema as T, createEvent as Tt, egressTransportFromRequest as U, record as Ut, detectionPipelineCapability as V, number as Vt, enumerateInferenceDevices as W, string as Wt, overlayClusterStepSettings as X, motionDetectionCapability as Y, parseProcStatus as Z, HF_BASE_URL as _, Fmp4BoxSplitter as _t, COCO_80_LABELS as a, recordingExportCapability as at, OpsLogEntrySchema as b, isSoftwareDecode as bt, DEFAULT_CLUSTER_STEP_MODELS as c, resolvePoolMemoryPolicy as ct, DEFAULT_EVENTS_BAND_BUFFER_SEC as d, storageEvictableCapability as dt, pickDetailCropConvention as et, DEFAULT_NATIVE_LEASE_SETTINGS as f, streamBrokerCapability as ft, ExportRecordSchema as g, AUDIO_PRESETS as gt, EncodeProfileSchema as h, errMsg as ht, BatteryStatusSchema as i, recordingCapability as it, audioKindId as j, parseJsonUnknown as jt, audioAnalysisCapability as k, makeSourceBrokerId as kt, DEFAULT_CLUSTER_STEP_SETTINGS as l, resolveRecordingProfiles as lt, EVENT_PAD_MS as m, webrtcSessionCapability as mt, AUDIO_BACKEND_CHOICES as n, pipelineExecutorCapability as nt, COCO_TO_MACRO as o, resolveClusterStepModelId as ot, DEVICE_BACKEND_TO_FORMAT as p, supportedRuntimes as pt, mapAudioLabelToMacro as q, AUDIO_MACRO_LABELS as r, pipelineRunnerCapability as rt, DEFAULT_AUDIO_ANALYZER_CONFIG as s, resolveEgressDecodeHwAccel as st, APPLE_SA_TO_MACRO as t, pickNativeLeaseOverride as tt, DEFAULT_DETAIL_CROP_CONVENTION as u, runtimeDevices as ut, NativeLeaseAdmissionSchema as v, buildFfmpegArgs as vt, RECORDING_EXPORT_MAX_READ_BYTES as w, DeviceType as wt, PoolMemoryWatchdog as x, BaseAddon as xt, NativeLeaseSettingsSchema as y, invocationFromEncodeProfile as yt, deriveDetailCropRect as z, lazy as zt };
|