camstack 1.2.179 → 1.2.181
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.
|
@@ -8,7 +8,7 @@ import * as dgram from "dgram";
|
|
|
8
8
|
import * as os from "os";
|
|
9
9
|
import { parseArgs } from "util";
|
|
10
10
|
|
|
11
|
-
// ../types/dist/event-category-
|
|
11
|
+
// ../types/dist/event-category-DaIZi00R.mjs
|
|
12
12
|
var EventCategory = /* @__PURE__ */ (function(EventCategory2) {
|
|
13
13
|
EventCategory2["SystemBoot"] = "system.boot";
|
|
14
14
|
EventCategory2["SystemAddonsReady"] = "system.addons-ready";
|
|
@@ -29,6 +29,7 @@ var EventCategory = /* @__PURE__ */ (function(EventCategory2) {
|
|
|
29
29
|
EventCategory2["AddonPageReady"] = "addon.page-ready";
|
|
30
30
|
EventCategory2["AddonWidgetReady"] = "addon.widget-ready";
|
|
31
31
|
EventCategory2["AddonLoadFailed"] = "addon.load-failed";
|
|
32
|
+
EventCategory2["KeychainChanged"] = "keychain.changed";
|
|
32
33
|
EventCategory2["AddonLoadRecovered"] = "addon.load-recovered";
|
|
33
34
|
EventCategory2["AddonRetryScheduled"] = "addon.retry-scheduled";
|
|
34
35
|
EventCategory2["SystemLivenessFailed"] = "system.liveness-failed";
|
|
@@ -116,7 +117,6 @@ var EventCategory = /* @__PURE__ */ (function(EventCategory2) {
|
|
|
116
117
|
EventCategory2["AgentWsDisconnected"] = "agent.ws.disconnected";
|
|
117
118
|
EventCategory2["AgentBackupActivated"] = "agent.backup.activated";
|
|
118
119
|
EventCategory2["OrchestrationSettingsUpdated"] = "orchestration.settings-updated";
|
|
119
|
-
EventCategory2["PipelineAgentHwaccelChanged"] = "pipeline.agent-hwaccel-changed";
|
|
120
120
|
EventCategory2["MotionAnalysis"] = "detection.motion-analysis";
|
|
121
121
|
EventCategory2["MotionZonesRaw"] = "detection.motion-zones-raw";
|
|
122
122
|
EventCategory2["MotionOnMotionChanged"] = "motion.on-motion-changed";
|
|
@@ -14681,7 +14681,7 @@ function date4(params) {
|
|
|
14681
14681
|
// ../../node_modules/zod/v4/classic/external.js
|
|
14682
14682
|
config(en_default());
|
|
14683
14683
|
|
|
14684
|
-
// ../types/dist/sleep-
|
|
14684
|
+
// ../types/dist/sleep-DujUvOcb.mjs
|
|
14685
14685
|
var AUDIO_CHUNK_FORMATS = [
|
|
14686
14686
|
"f32le",
|
|
14687
14687
|
"pcmu",
|
|
@@ -14875,6 +14875,7 @@ var WELL_KNOWN_TABS = [
|
|
|
14875
14875
|
}
|
|
14876
14876
|
];
|
|
14877
14877
|
var WELL_KNOWN_TAB_MAP = Object.fromEntries(WELL_KNOWN_TABS.map((t) => [t.id, t]));
|
|
14878
|
+
var SECRET_RETRY_MAX_MS = 5 * 6e4;
|
|
14878
14879
|
var PEER_BYTES_CHUNK_BYTES = 256 * 1024;
|
|
14879
14880
|
var PeerBytesTicketSchema = external_exports.object({
|
|
14880
14881
|
/** `http://127.0.0.1:<port>/<token>`. One `GET` takes it. */
|
|
@@ -14893,6 +14894,7 @@ var PeerBytesTicketSchema = external_exports.object({
|
|
|
14893
14894
|
*/
|
|
14894
14895
|
declaredBytes: external_exports.number().int().nonnegative().nullable()
|
|
14895
14896
|
});
|
|
14897
|
+
var REVALIDATE_AFTER_MS = 15 * 6e4;
|
|
14896
14898
|
var CamProfileSchema = external_exports.enum([
|
|
14897
14899
|
"high",
|
|
14898
14900
|
"mid",
|
|
@@ -15019,27 +15021,6 @@ var StreamSourceSchema = external_exports.object({
|
|
|
15019
15021
|
audioCodec: external_exports.string().optional(),
|
|
15020
15022
|
metadata: external_exports.record(external_exports.string(), external_exports.unknown()).readonly().optional()
|
|
15021
15023
|
});
|
|
15022
|
-
var EncodedPacketSchema = external_exports.object({
|
|
15023
|
-
type: external_exports.enum(["video", "audio"]),
|
|
15024
|
-
data: external_exports.instanceof(Uint8Array),
|
|
15025
|
-
pts: external_exports.number(),
|
|
15026
|
-
dts: external_exports.number(),
|
|
15027
|
-
keyframe: external_exports.boolean(),
|
|
15028
|
-
codec: external_exports.string()
|
|
15029
|
-
});
|
|
15030
|
-
var DecodedFrameSchema = external_exports.object({
|
|
15031
|
-
data: external_exports.instanceof(Uint8Array),
|
|
15032
|
-
width: external_exports.number(),
|
|
15033
|
-
height: external_exports.number(),
|
|
15034
|
-
format: external_exports.enum([
|
|
15035
|
-
"jpeg",
|
|
15036
|
-
"rgb",
|
|
15037
|
-
"bgr",
|
|
15038
|
-
"yuv420",
|
|
15039
|
-
"gray"
|
|
15040
|
-
]),
|
|
15041
|
-
timestamp: external_exports.number()
|
|
15042
|
-
});
|
|
15043
15024
|
var FrameHandleSchema = external_exports.object({
|
|
15044
15025
|
shmId: external_exports.string(),
|
|
15045
15026
|
slot: external_exports.number().int().nonnegative(),
|
|
@@ -15058,31 +15039,6 @@ var FrameHandleSchema = external_exports.object({
|
|
|
15058
15039
|
nodeId: external_exports.string(),
|
|
15059
15040
|
slotCount: external_exports.number().int().positive()
|
|
15060
15041
|
});
|
|
15061
|
-
var FrameHandleFormatSchema = external_exports.enum([
|
|
15062
|
-
"rgb",
|
|
15063
|
-
"bgr",
|
|
15064
|
-
"yuv420",
|
|
15065
|
-
"gray"
|
|
15066
|
-
]);
|
|
15067
|
-
var SubscribeFramesInputSchema = external_exports.object({
|
|
15068
|
-
brokerId: external_exports.string(),
|
|
15069
|
-
format: FrameHandleFormatSchema,
|
|
15070
|
-
/**
|
|
15071
|
-
* Optional reader-side cadence hint in frames per second. The broker does
|
|
15072
|
-
* NOT throttle — latest-wins ring reads drop frames implicitly for a slow
|
|
15073
|
-
* consumer. The value is echoed back in `SubscribeFramesResult.maxFps` so
|
|
15074
|
-
* the consumer can pace its own `pullFrameHandles` polling.
|
|
15075
|
-
*/
|
|
15076
|
-
maxFps: external_exports.number().positive().optional(),
|
|
15077
|
-
/** Short caller-identity tag (`motion`, `detection`, …) for diagnostics. */
|
|
15078
|
-
tag: external_exports.string().optional()
|
|
15079
|
-
});
|
|
15080
|
-
var SubscribeFramesResultSchema = external_exports.object({
|
|
15081
|
-
/** Opaque id the consumer passes to `pullFrameHandles` / `unsubscribeFrames`. */
|
|
15082
|
-
subscriptionId: external_exports.string(),
|
|
15083
|
-
/** Reader-side cadence hint (frames/s) — echoes `SubscribeFramesInput.maxFps`. */
|
|
15084
|
-
maxFps: external_exports.number().nonnegative()
|
|
15085
|
-
});
|
|
15086
15042
|
var AudioChunkFormatSchema = external_exports.enum(AUDIO_CHUNK_FORMATS);
|
|
15087
15043
|
var DecodedAudioChunkSchema = external_exports.object({
|
|
15088
15044
|
data: external_exports.instanceof(Uint8Array),
|
|
@@ -15128,9 +15084,7 @@ var BrokerStatusSchema = external_exports.enum([
|
|
|
15128
15084
|
var BrokerStatsSchema = external_exports.object({
|
|
15129
15085
|
status: BrokerStatusSchema,
|
|
15130
15086
|
inputFps: external_exports.number(),
|
|
15131
|
-
decodeFps: external_exports.number(),
|
|
15132
15087
|
encodedSubscribers: external_exports.number(),
|
|
15133
|
-
decodedSubscribers: external_exports.number(),
|
|
15134
15088
|
uptimeMs: external_exports.number(),
|
|
15135
15089
|
bitrateKbps: external_exports.number(),
|
|
15136
15090
|
idrIntervalMs: external_exports.number(),
|
|
@@ -15143,14 +15097,6 @@ var BrokerStatsSchema = external_exports.object({
|
|
|
15143
15097
|
preBufferMs: external_exports.number(),
|
|
15144
15098
|
preBufferPackets: external_exports.number(),
|
|
15145
15099
|
/**
|
|
15146
|
-
* Moleculer node id of the decoder provider currently servicing this
|
|
15147
|
-
* stream's decoded subscribers. `null` until the deferred decoder is
|
|
15148
|
-
* created (no decoded clients yet, or codec not detected). Surfaces the
|
|
15149
|
-
* runtime decoder placement so the UI can show "Decoder: <agent>" without
|
|
15150
|
-
* a separate cap call per broker.
|
|
15151
|
-
*/
|
|
15152
|
-
decoderNodeId: external_exports.string().nullable(),
|
|
15153
|
-
/**
|
|
15154
15100
|
* Detected audio track parameters from the RTSP DESCRIBE / SDP. `null`
|
|
15155
15101
|
* when the stream has no audio track or the broker is in cold start.
|
|
15156
15102
|
* `supported = false` means the codec was detected but the local
|
|
@@ -17592,70 +17538,6 @@ var StorageLocationDeclarationSchema = external_exports.object({
|
|
|
17592
17538
|
"backup"
|
|
17593
17539
|
]).optional()
|
|
17594
17540
|
});
|
|
17595
|
-
var DecoderStatsSchema = external_exports.object({
|
|
17596
|
-
inputFps: external_exports.number(),
|
|
17597
|
-
outputFps: external_exports.number(),
|
|
17598
|
-
avgDecodeTimeMs: external_exports.number(),
|
|
17599
|
-
droppedFrames: external_exports.number(),
|
|
17600
|
-
/**
|
|
17601
|
-
* Pull-mode adaptive-fps telemetry (optional — only pull sessions run the
|
|
17602
|
-
* lag-driven controller; push sessions omit these). `lagMs` is the EWMA of
|
|
17603
|
-
* the decoder's real-time drift (rising = falling behind live); `adaptiveFps`
|
|
17604
|
-
* is the current lag-throttled emit rate (≤ `effectiveFps` ceiling).
|
|
17605
|
-
*/
|
|
17606
|
-
lagMs: external_exports.number().optional(),
|
|
17607
|
-
effectiveFps: external_exports.number().optional(),
|
|
17608
|
-
adaptiveFps: external_exports.number().optional()
|
|
17609
|
-
});
|
|
17610
|
-
var DecoderSessionConfigSchema = external_exports.object({
|
|
17611
|
-
codec: external_exports.string(),
|
|
17612
|
-
maxFps: external_exports.number().default(0),
|
|
17613
|
-
outputFormat: external_exports.enum([
|
|
17614
|
-
"jpeg",
|
|
17615
|
-
"rgb",
|
|
17616
|
-
"bgr",
|
|
17617
|
-
"yuv420",
|
|
17618
|
-
"gray"
|
|
17619
|
-
]).default("jpeg"),
|
|
17620
|
-
scale: external_exports.number().default(1),
|
|
17621
|
-
width: external_exports.number().optional(),
|
|
17622
|
-
height: external_exports.number().optional(),
|
|
17623
|
-
/**
|
|
17624
|
-
* Identifier of the camera this decoder session serves. Optional
|
|
17625
|
-
* because the cap is generic (any caller could request decode), but
|
|
17626
|
-
* stream-broker passes it so decoder logs include `deviceId` for
|
|
17627
|
-
* per-camera filtering when diagnosing failures (e.g. node-av
|
|
17628
|
-
* sendPacket errors on a single hung camera).
|
|
17629
|
-
*/
|
|
17630
|
-
deviceId: external_exports.number().int().nonnegative().optional(),
|
|
17631
|
-
/**
|
|
17632
|
-
* Free-form tag for log scoping. Stream-broker uses
|
|
17633
|
-
* `broker:<deviceId>/<profile>`. Decoder session logger surfaces it
|
|
17634
|
-
* on every line so `grep tag=broker:5/high` filters one camera
|
|
17635
|
-
* profile cleanly.
|
|
17636
|
-
*/
|
|
17637
|
-
tag: external_exports.string().optional(),
|
|
17638
|
-
/**
|
|
17639
|
-
* Where the session delivers decoded frames (Phase 5 / D9):
|
|
17640
|
-
*
|
|
17641
|
-
* - `'callback'` (default) — the legacy pixel path: decoded frames are
|
|
17642
|
-
* buffered as `DecodedFrame`s and drained via `pullFrames`.
|
|
17643
|
-
* - `'shm'` — the shared-memory frame plane: decoded frames are written
|
|
17644
|
-
* into an OS shared-memory ring and drained as zero-pixel
|
|
17645
|
-
* `FrameHandle`s via `pullHandles`. A session is one mode or the
|
|
17646
|
-
* other — `pullFrames` returns nothing for an `'shm'` session and
|
|
17647
|
-
* `pullHandles` returns nothing for a `'callback'` session.
|
|
17648
|
-
*/
|
|
17649
|
-
frameSink: external_exports.enum(["callback", "shm"]).default("callback"),
|
|
17650
|
-
/**
|
|
17651
|
-
* Per-camera decoder DEBUG facility. When `true`, a pull-mode session emits
|
|
17652
|
-
* a throttled (~1Hz) structured `decoder debug` line (effective/adaptive fps,
|
|
17653
|
-
* real-time lag, dropped-frame delta, avg decode time, hwaccel). Mirrors the
|
|
17654
|
-
* stream-broker's `streamingDebug` gate — off by default so production logs
|
|
17655
|
-
* stay quiet and the emit path pays zero per-frame cost when disabled.
|
|
17656
|
-
*/
|
|
17657
|
-
debug: external_exports.boolean().optional()
|
|
17658
|
-
});
|
|
17659
17541
|
var LogChannelLevelSchema = external_exports.enum([
|
|
17660
17542
|
"info",
|
|
17661
17543
|
"warn",
|
|
@@ -17735,6 +17617,18 @@ var CLIP_SEARCH_STRICTNESS = [
|
|
|
17735
17617
|
"strict"
|
|
17736
17618
|
];
|
|
17737
17619
|
var ClipSearchStrictnessSchema = external_exports.enum(CLIP_SEARCH_STRICTNESS);
|
|
17620
|
+
var LABEL_SUPPLY_STEP_IDS = [
|
|
17621
|
+
"animal-classifier",
|
|
17622
|
+
"vehicle-classifier",
|
|
17623
|
+
"package-detection"
|
|
17624
|
+
];
|
|
17625
|
+
var CROP_SUPPLY_STEP_IDS = ["plate-detection", "face-detection"];
|
|
17626
|
+
var MASK_SUPPLY_STEP_IDS = ["segmentation"];
|
|
17627
|
+
var ROOT_SUPPLIABLE_STEP_IDS = [
|
|
17628
|
+
...LABEL_SUPPLY_STEP_IDS,
|
|
17629
|
+
...CROP_SUPPLY_STEP_IDS,
|
|
17630
|
+
...MASK_SUPPLY_STEP_IDS
|
|
17631
|
+
];
|
|
17738
17632
|
var MODEL_FORMATS = [
|
|
17739
17633
|
"onnx",
|
|
17740
17634
|
"coreml",
|
|
@@ -17751,7 +17645,35 @@ var ModelFormatEntrySchema = external_exports.object({
|
|
|
17751
17645
|
/** Multi-file payload (directory members or sibling files). */
|
|
17752
17646
|
files: external_exports.array(external_exports.string()).readonly().optional(),
|
|
17753
17647
|
/** Runtime(s) that can use this format. If omitted, inferred from ModelFormat key */
|
|
17754
|
-
runtimes: external_exports.array(external_exports.enum(["python"])).readonly().optional()
|
|
17648
|
+
runtimes: external_exports.array(external_exports.enum(["python"])).readonly().optional(),
|
|
17649
|
+
/**
|
|
17650
|
+
* Content revision of the artefact, for one hosted OFF the CamStack mirror.
|
|
17651
|
+
* A format on the mirror leaves it unset: its revision (the sha256 of its
|
|
17652
|
+
* weight file) comes from the downloader's generated table, kept in step
|
|
17653
|
+
* with the mirror by `scripts/check-hosted-model-revisions.ts` (D744). A
|
|
17654
|
+
* node records the revision it downloaded next to the file
|
|
17655
|
+
* (`<file>.revision`); a copy with no record or a different one is stale
|
|
17656
|
+
* unless its weight file hashes to the revision, and a stale copy is
|
|
17657
|
+
* downloaded again, the old one serving until the new one is complete. No
|
|
17658
|
+
* revision at all ⇒ a file on disk is current, whatever it holds (D743).
|
|
17659
|
+
*/
|
|
17660
|
+
revision: external_exports.string().min(1).optional()
|
|
17661
|
+
});
|
|
17662
|
+
var ModelOnDiskStateSchema = external_exports.enum([
|
|
17663
|
+
"current",
|
|
17664
|
+
"stale",
|
|
17665
|
+
"missing"
|
|
17666
|
+
]);
|
|
17667
|
+
var ModelFormatPrecisionSchema = external_exports.enum([
|
|
17668
|
+
"fp32",
|
|
17669
|
+
"fp16",
|
|
17670
|
+
"int8"
|
|
17671
|
+
]);
|
|
17672
|
+
var PipelineModelFormatStatusSchema = external_exports.object({
|
|
17673
|
+
downloaded: external_exports.boolean(),
|
|
17674
|
+
sizeMB: external_exports.number(),
|
|
17675
|
+
onDisk: ModelOnDiskStateSchema.optional(),
|
|
17676
|
+
precision: ModelFormatPrecisionSchema.optional()
|
|
17755
17677
|
});
|
|
17756
17678
|
var ModelExtraFileSchema = external_exports.object({
|
|
17757
17679
|
url: external_exports.string(),
|
|
@@ -17828,6 +17750,31 @@ var ModelLicenseRecordSchema = external_exports.object({
|
|
|
17828
17750
|
nonCommercial: external_exports.boolean().optional()
|
|
17829
17751
|
});
|
|
17830
17752
|
var ModelLicenseSchema = external_exports.preprocess((value) => typeof value === "string" ? { weights: value } : value, ModelLicenseRecordSchema);
|
|
17753
|
+
var RootStepSupplySchema = external_exports.discriminatedUnion("kind", [
|
|
17754
|
+
external_exports.object({
|
|
17755
|
+
kind: external_exports.literal("label"),
|
|
17756
|
+
stepId: external_exports.enum(LABEL_SUPPLY_STEP_IDS),
|
|
17757
|
+
labelToEffect: external_exports.record(external_exports.string(), external_exports.string()),
|
|
17758
|
+
uncovered: external_exports.array(external_exports.string()).readonly()
|
|
17759
|
+
}),
|
|
17760
|
+
external_exports.object({
|
|
17761
|
+
kind: external_exports.literal("crop"),
|
|
17762
|
+
stepId: external_exports.enum(CROP_SUPPLY_STEP_IDS),
|
|
17763
|
+
rootLabels: external_exports.array(external_exports.string()).readonly(),
|
|
17764
|
+
parentMacro: external_exports.enum(["vehicle", "person"]),
|
|
17765
|
+
childClass: external_exports.enum(["plate", "face"]),
|
|
17766
|
+
/**
|
|
17767
|
+
* The root's smaller input side, stamped on read by `rootSuppliesOf` from
|
|
17768
|
+
* the model entry — what a step's `minRootInputPx` gate judges. Never
|
|
17769
|
+
* stored by an import.
|
|
17770
|
+
*/
|
|
17771
|
+
rootInputPx: external_exports.number().int().positive().optional()
|
|
17772
|
+
}),
|
|
17773
|
+
external_exports.object({
|
|
17774
|
+
kind: external_exports.literal("mask"),
|
|
17775
|
+
stepId: external_exports.enum(MASK_SUPPLY_STEP_IDS)
|
|
17776
|
+
})
|
|
17777
|
+
]);
|
|
17831
17778
|
var ModelCatalogEntrySchema = external_exports.object({
|
|
17832
17779
|
id: external_exports.string(),
|
|
17833
17780
|
name: external_exports.string(),
|
|
@@ -17893,6 +17840,35 @@ var ModelCatalogEntrySchema = external_exports.object({
|
|
|
17893
17840
|
*/
|
|
17894
17841
|
defaultConfidence: external_exports.number().min(0).max(1).optional(),
|
|
17895
17842
|
/**
|
|
17843
|
+
* Per-MODEL default of the per-class confidence floors (`minConfidence<Macro>`
|
|
17844
|
+
* on a detector step), keyed by macro class: `{ person: 0.45 }`. A class
|
|
17845
|
+
* absent here runs at the step slider's global default. The same row shape
|
|
17846
|
+
* the floor measurement produces (`model-floors.json`: modelId → floors), so
|
|
17847
|
+
* a measured table is copied in as-is. An operator override is bound to the
|
|
17848
|
+
* model it was made for and does not survive a model change (D738). A custom
|
|
17849
|
+
* / imported model may declare it; without it, the global defaults apply.
|
|
17850
|
+
*/
|
|
17851
|
+
defaultClassFloors: external_exports.record(external_exports.string(), external_exports.number().min(0).max(1)).optional(),
|
|
17852
|
+
/**
|
|
17853
|
+
* The inference precision this model's OpenVINO IR needs on an Intel GPU.
|
|
17854
|
+
* Absent ⇒ the device default (f16 on a GPU). Set to `'f32'` for an FP32 IR
|
|
17855
|
+
* that produces invalid output at f16 — measured 2026-10-07 for YOLO26
|
|
17856
|
+
* base IRs (`yolo26s`: 0 true / 146 false positives; `yolo26m*`: NaN
|
|
17857
|
+
* scores) on the Core Ultra iGPU and the N100. Threaded to the pool as
|
|
17858
|
+
* `PoolModelConfig.gpuInferencePrecision`; the pool sets
|
|
17859
|
+
* INFERENCE_PRECISION_HINT on a GPU only. Costs ~60% latency on the GPU.
|
|
17860
|
+
*/
|
|
17861
|
+
gpuInferencePrecision: external_exports.enum(["f32", "f16"]).optional(),
|
|
17862
|
+
/**
|
|
17863
|
+
* ROOT detectors only: per supplied step (`animal-classifier`, …), the
|
|
17864
|
+
* minimum DETECTION score from which this root's own fine label (species,
|
|
17865
|
+
* vehicle type — D736 root supply) is taken (D741). Below it the detection
|
|
17866
|
+
* keeps its macro class without the fine label. `1` = never take it from
|
|
17867
|
+
* this root. Absent ⇒ no floor beyond the macro floor. The supplied step's
|
|
17868
|
+
* `minConfidence` slider, bound to the ROOT model, overrides it.
|
|
17869
|
+
*/
|
|
17870
|
+
suppliedLabelFloors: external_exports.record(external_exports.string(), external_exports.number().min(0).max(1)).optional(),
|
|
17871
|
+
/**
|
|
17896
17872
|
* When true, the executor produces a landmark-aligned crop (similarity warp
|
|
17897
17873
|
* onto the canonical template) before this step runs, instead of a plain
|
|
17898
17874
|
* axis-aligned bbox crop. Required for face-recognition embedders (ArcFace):
|
|
@@ -17954,6 +17930,16 @@ var ModelCatalogEntrySchema = external_exports.object({
|
|
|
17954
17930
|
*/
|
|
17955
17931
|
classMap: DetectionCatalogClassMapSchema.optional(),
|
|
17956
17932
|
/**
|
|
17933
|
+
* The pipeline steps this ROOT detector can supply from its own output
|
|
17934
|
+
* (D730): its labels name a step's effect (`deer` for `animal-classifier`)
|
|
17935
|
+
* or draw a step's box (`license_plate` for `plate-detection`). Computed at
|
|
17936
|
+
* import from THIS model's labelmap by `deriveRootSupplies`, never written
|
|
17937
|
+
* by hand and never assumed per family; a row without it is derived on read
|
|
17938
|
+
* (`rootSuppliesOf`). Whether a camera uses it is the step's own
|
|
17939
|
+
* `useRootModel` flag (`resolveRootSupply`).
|
|
17940
|
+
*/
|
|
17941
|
+
suppliesSteps: external_exports.array(RootStepSupplySchema).readonly().optional(),
|
|
17942
|
+
/**
|
|
17957
17943
|
* The model's CLIP feature-space contract (text encoder, dimension, vector
|
|
17958
17944
|
* index, token window, search floor) — see `clip-model.ts`. Present ONLY on a
|
|
17959
17945
|
* CLIP image encoder; its absence is what "not a CLIP model" means to the
|
|
@@ -19556,13 +19542,6 @@ var BrokerRtspClientSchema = external_exports.object({
|
|
|
19556
19542
|
lastRtpAt: external_exports.number(),
|
|
19557
19543
|
bytesSent: external_exports.number()
|
|
19558
19544
|
});
|
|
19559
|
-
var BrokerDecodedClientSchema = external_exports.object({
|
|
19560
|
-
tag: external_exports.string(),
|
|
19561
|
-
subscribedAt: external_exports.number(),
|
|
19562
|
-
maxFps: external_exports.number(),
|
|
19563
|
-
framesDelivered: external_exports.number(),
|
|
19564
|
-
framesDropped: external_exports.number()
|
|
19565
|
-
});
|
|
19566
19545
|
var BrokerAudioClientSchema = external_exports.object({
|
|
19567
19546
|
tag: external_exports.string(),
|
|
19568
19547
|
subscribedAt: external_exports.number(),
|
|
@@ -19655,7 +19634,6 @@ var BrokerEncodedClientSchema = external_exports.object({
|
|
|
19655
19634
|
});
|
|
19656
19635
|
var BrokerClientsSchema = external_exports.object({
|
|
19657
19636
|
rtsp: external_exports.array(BrokerRtspClientSchema).readonly(),
|
|
19658
|
-
decoded: external_exports.array(BrokerDecodedClientSchema).readonly(),
|
|
19659
19637
|
audio: external_exports.array(BrokerAudioClientSchema).readonly(),
|
|
19660
19638
|
encoded: external_exports.array(BrokerEncodedClientSchema).readonly(),
|
|
19661
19639
|
pipeClients: external_exports.number(),
|
|
@@ -20126,11 +20104,7 @@ var streamBrokerCapability = {
|
|
|
20126
20104
|
listClients: method(external_exports.object({ brokerId: external_exports.string() }), BrokerClientsSchema),
|
|
20127
20105
|
killClient: method(external_exports.object({
|
|
20128
20106
|
brokerId: external_exports.string(),
|
|
20129
|
-
channel: external_exports.enum([
|
|
20130
|
-
"rtsp",
|
|
20131
|
-
"decoded",
|
|
20132
|
-
"audio"
|
|
20133
|
-
]),
|
|
20107
|
+
channel: external_exports.enum(["rtsp", "audio"]),
|
|
20134
20108
|
handle: external_exports.string()
|
|
20135
20109
|
}), external_exports.object({ killed: external_exports.boolean() }), {
|
|
20136
20110
|
kind: "mutation",
|
|
@@ -20229,31 +20203,6 @@ var streamBrokerCapability = {
|
|
|
20229
20203
|
maxCount: external_exports.number().int().positive().default(8)
|
|
20230
20204
|
}), external_exports.array(DecodedAudioChunkSchema).readonly()),
|
|
20231
20205
|
unsubscribeAudioChunks: method(external_exports.object({ subscriptionId: external_exports.string() }), external_exports.object({ released: external_exports.boolean() }), { kind: "mutation" }),
|
|
20232
|
-
/**
|
|
20233
|
-
* ── Shared-memory frame plane (Phase 5 / D9) ──────────────────────
|
|
20234
|
-
*
|
|
20235
|
-
* The handle-based replacement for the live-object `IStreamBroker.
|
|
20236
|
-
* onDecodedFrame` callback path. A consumer:
|
|
20237
|
-
*
|
|
20238
|
-
* 1. `subscribeFrames({ brokerId, format })` — the broker spins up
|
|
20239
|
-
* (or reuses) a `frameSink: 'shm'` decoder session producing that
|
|
20240
|
-
* `format` and returns a `subscriptionId`.
|
|
20241
|
-
* 2. polls `pullFrameHandles({ subscriptionId, maxCount })` — drains
|
|
20242
|
-
* zero-pixel `FrameHandle[]`; each handle is fed to a
|
|
20243
|
-
* `FrameRingReader` that opens the named shm segment and reads the
|
|
20244
|
-
* pixels back zero-copy.
|
|
20245
|
-
* 3. `unsubscribeFrames({ subscriptionId })` on teardown.
|
|
20246
|
-
*
|
|
20247
|
-
* The broker keeps one shm ring per `(brokerId, format)` actually
|
|
20248
|
-
* requested — no broker-side `sharp` conversion. fps throttling is
|
|
20249
|
-
* implicit (latest-wins ring reads drop frames for a slow consumer).
|
|
20250
|
-
*/
|
|
20251
|
-
subscribeFrames: method(SubscribeFramesInputSchema, SubscribeFramesResultSchema, { kind: "mutation" }),
|
|
20252
|
-
pullFrameHandles: method(external_exports.object({
|
|
20253
|
-
subscriptionId: external_exports.string(),
|
|
20254
|
-
maxCount: external_exports.number().int().positive().default(4)
|
|
20255
|
-
}), external_exports.array(FrameHandleSchema).readonly()),
|
|
20256
|
-
unsubscribeFrames: method(external_exports.object({ subscriptionId: external_exports.string() }), external_exports.object({ released: external_exports.boolean() }), { kind: "mutation" }),
|
|
20257
20206
|
setPreBufferDuration: method(external_exports.object({
|
|
20258
20207
|
brokerId: external_exports.string(),
|
|
20259
20208
|
seconds: external_exports.number().min(0).max(30)
|
|
@@ -21733,67 +21682,255 @@ var dataStoreProviderCapability = {
|
|
|
21733
21682
|
})
|
|
21734
21683
|
}
|
|
21735
21684
|
};
|
|
21736
|
-
var
|
|
21737
|
-
|
|
21738
|
-
|
|
21739
|
-
|
|
21740
|
-
|
|
21741
|
-
|
|
21742
|
-
|
|
21743
|
-
|
|
21744
|
-
|
|
21745
|
-
|
|
21685
|
+
var KeychainUnavailableReasonSchema = external_exports.enum([
|
|
21686
|
+
"key-missing",
|
|
21687
|
+
"wrong-key",
|
|
21688
|
+
"key-file-unreadable",
|
|
21689
|
+
"store-unavailable",
|
|
21690
|
+
"not-initialized",
|
|
21691
|
+
"decrypt-failed"
|
|
21692
|
+
]);
|
|
21693
|
+
var KeychainStateSchema = external_exports.discriminatedUnion("state", [external_exports.object({ state: external_exports.literal("ready") }), external_exports.object({
|
|
21694
|
+
state: external_exports.literal("locked"),
|
|
21695
|
+
reason: KeychainUnavailableReasonSchema
|
|
21696
|
+
})]);
|
|
21697
|
+
var KeychainResolveEntrySchema = external_exports.discriminatedUnion("kind", [
|
|
21698
|
+
external_exports.object({
|
|
21699
|
+
kind: external_exports.literal("value"),
|
|
21700
|
+
value: external_exports.string(),
|
|
21701
|
+
version: external_exports.number().int()
|
|
21702
|
+
}),
|
|
21703
|
+
external_exports.object({ kind: external_exports.literal("missing") }),
|
|
21704
|
+
external_exports.object({
|
|
21705
|
+
kind: external_exports.literal("unavailable"),
|
|
21706
|
+
reason: KeychainUnavailableReasonSchema
|
|
21707
|
+
}),
|
|
21708
|
+
external_exports.object({ kind: external_exports.literal("forbidden") })
|
|
21709
|
+
]);
|
|
21710
|
+
var KeychainResolveResultSchema = external_exports.record(external_exports.string(), KeychainResolveEntrySchema);
|
|
21711
|
+
var KeychainSecretMetaSchema = external_exports.object({
|
|
21712
|
+
ref: external_exports.string(),
|
|
21713
|
+
owner: external_exports.string(),
|
|
21714
|
+
/** Formatted scope (`global`, `node/<id>`, `device/<id>`, …). */
|
|
21715
|
+
scope: external_exports.string(),
|
|
21716
|
+
fieldPath: external_exports.string(),
|
|
21717
|
+
version: external_exports.number().int(),
|
|
21718
|
+
createdAt: external_exports.number(),
|
|
21719
|
+
updatedAt: external_exports.number(),
|
|
21720
|
+
/** `addon:<id>` | `user:<id>` | `system`. */
|
|
21721
|
+
updatedBy: external_exports.string(),
|
|
21722
|
+
/** Coarse — written at most once an hour per ref. `null` = never read. */
|
|
21723
|
+
lastReadAt: external_exports.number().nullable()
|
|
21724
|
+
});
|
|
21725
|
+
var RefListSchema = external_exports.array(external_exports.string().min(1)).max(512);
|
|
21726
|
+
var keychainCapability = {
|
|
21727
|
+
name: "keychain",
|
|
21728
|
+
scope: "system",
|
|
21729
|
+
mode: "singleton",
|
|
21730
|
+
internal: true,
|
|
21731
|
+
methods: {
|
|
21732
|
+
/** Store (or replace) the caller's value at `ref`. Refused while locked. */
|
|
21733
|
+
put: method(external_exports.object({
|
|
21734
|
+
ref: external_exports.string().min(1),
|
|
21735
|
+
value: external_exports.string().min(1)
|
|
21736
|
+
}), external_exports.object({
|
|
21737
|
+
ref: external_exports.string(),
|
|
21738
|
+
version: external_exports.number().int()
|
|
21739
|
+
}), {
|
|
21740
|
+
kind: "mutation",
|
|
21741
|
+
auth: "admin"
|
|
21742
|
+
}),
|
|
21743
|
+
/**
|
|
21744
|
+
* Resolve the caller's refs in one round-trip. A locked keychain answers
|
|
21745
|
+
* `unavailable` per ref — never `missing`, never an empty value.
|
|
21746
|
+
*/
|
|
21747
|
+
resolve: method(external_exports.object({ refs: RefListSchema }), KeychainResolveResultSchema, { auth: "admin" }),
|
|
21748
|
+
/** Remove the caller's refs. Unknown refs are ignored. */
|
|
21749
|
+
delete: method(external_exports.object({ refs: RefListSchema }), external_exports.object({ deleted: external_exports.number().int() }), {
|
|
21750
|
+
kind: "mutation",
|
|
21751
|
+
auth: "admin"
|
|
21752
|
+
}),
|
|
21753
|
+
/** The caller's own refs, metadata only. */
|
|
21754
|
+
listMeta: method(external_exports.object({}), external_exports.array(KeychainSecretMetaSchema).readonly(), { auth: "admin" }),
|
|
21755
|
+
/** Whether values can be served — the save path refuses a write while locked. */
|
|
21756
|
+
getState: method(external_exports.object({}), KeychainStateSchema, { auth: "admin" })
|
|
21757
|
+
}
|
|
21758
|
+
};
|
|
21759
|
+
var KeychainKeySourceKindSchema = external_exports.enum([
|
|
21760
|
+
"config-file",
|
|
21761
|
+
"previous-config-file",
|
|
21762
|
+
"platform",
|
|
21763
|
+
"default-file"
|
|
21764
|
+
]);
|
|
21765
|
+
var KeychainKeySourceSchema = external_exports.object({
|
|
21766
|
+
kind: KeychainKeySourceKindSchema,
|
|
21767
|
+
/** File sources only — a path is not a secret. */
|
|
21768
|
+
path: external_exports.string().optional(),
|
|
21769
|
+
/**
|
|
21770
|
+
* True when a whole-volume backup of the data directory carries this key
|
|
21771
|
+
* next to the database it protects (the default file). The page warns.
|
|
21772
|
+
*/
|
|
21773
|
+
sharesBackupWithDatabase: external_exports.boolean()
|
|
21774
|
+
});
|
|
21775
|
+
var KeychainStatusSchema = external_exports.object({
|
|
21776
|
+
keychain: KeychainStateSchema,
|
|
21777
|
+
/** The source of the master key in use; `null` while locked. */
|
|
21778
|
+
keySource: KeychainKeySourceSchema.nullable(),
|
|
21779
|
+
/** The source configured to be primary — differs from `keySource` while a rotation is pending. */
|
|
21780
|
+
configuredSource: KeychainKeySourceSchema,
|
|
21781
|
+
/** Short fingerprint of the master key in use (`HMAC(KEK, label)`, 16 hex). */
|
|
21782
|
+
fingerprint: external_exports.string().nullable(),
|
|
21783
|
+
activeKeyId: external_exports.string().nullable(),
|
|
21784
|
+
/**
|
|
21785
|
+
* The keychain unlocked with a NON-primary source: the configured primary
|
|
21786
|
+
* key is not the one that wraps the data key yet. `rotateMasterKey` moves it.
|
|
21787
|
+
*/
|
|
21788
|
+
rotationPending: external_exports.boolean(),
|
|
21789
|
+
/** Wrapped copies of the data key under a previous master key, kept until purged. */
|
|
21790
|
+
retiredWraps: external_exports.number().int(),
|
|
21791
|
+
recoveryKeyDownloadedAt: external_exports.number().nullable(),
|
|
21792
|
+
secretCount: external_exports.number().int()
|
|
21793
|
+
});
|
|
21794
|
+
var KeychainSecretUsageSchema = external_exports.enum([
|
|
21795
|
+
"in-use",
|
|
21796
|
+
"orphan",
|
|
21797
|
+
"unknown"
|
|
21798
|
+
]);
|
|
21799
|
+
var KeychainAdminSecretSchema = KeychainSecretMetaSchema.extend({ usage: KeychainSecretUsageSchema });
|
|
21800
|
+
var KeychainAuditActionSchema = external_exports.enum([
|
|
21801
|
+
"put",
|
|
21802
|
+
"delete",
|
|
21803
|
+
"reveal",
|
|
21804
|
+
"rotate-master-key",
|
|
21805
|
+
"purge-retired-keys",
|
|
21806
|
+
"download-recovery-key",
|
|
21807
|
+
"delete-orphans",
|
|
21808
|
+
"reset",
|
|
21809
|
+
"initialize"
|
|
21810
|
+
]);
|
|
21811
|
+
var KeychainAuditEntrySchema = external_exports.object({
|
|
21812
|
+
id: external_exports.string(),
|
|
21813
|
+
at: external_exports.number(),
|
|
21814
|
+
action: KeychainAuditActionSchema,
|
|
21815
|
+
/** `addon:<id>` | `user:<id>` | `system`. */
|
|
21816
|
+
actor: external_exports.string(),
|
|
21817
|
+
ref: external_exports.string().nullable(),
|
|
21818
|
+
detail: external_exports.string().nullable()
|
|
21819
|
+
});
|
|
21820
|
+
var KEYCHAIN_RESET_CONFIRMATION = "RESET KEYCHAIN";
|
|
21821
|
+
var SystemHeldSecretNameSchema = external_exports.enum(["jwt-signing-key"]);
|
|
21822
|
+
var keychainAdminCapability = {
|
|
21823
|
+
name: "keychain-admin",
|
|
21824
|
+
scope: "system",
|
|
21825
|
+
mode: "singleton",
|
|
21826
|
+
methods: {
|
|
21827
|
+
status: method(external_exports.object({}), KeychainStatusSchema, { auth: "admin" }),
|
|
21828
|
+
listSecrets: method(external_exports.object({}), external_exports.array(KeychainAdminSecretSchema).readonly(), { auth: "admin" }),
|
|
21829
|
+
listAudit: method(external_exports.object({ limit: external_exports.number().int().min(1).max(500).optional() }), external_exports.array(KeychainAuditEntrySchema).readonly(), { auth: "admin" }),
|
|
21830
|
+
/**
|
|
21831
|
+
* Show one value to the operator. Audited. The UI hides it again after a
|
|
21832
|
+
* few seconds; nothing caches it.
|
|
21833
|
+
*/
|
|
21834
|
+
reveal: method(external_exports.object({ ref: external_exports.string().min(1) }), external_exports.object({
|
|
21835
|
+
value: external_exports.string(),
|
|
21836
|
+
version: external_exports.number().int()
|
|
21837
|
+
}), {
|
|
21838
|
+
kind: "mutation",
|
|
21839
|
+
auth: "admin",
|
|
21840
|
+
caller: "required"
|
|
21841
|
+
}),
|
|
21842
|
+
/**
|
|
21843
|
+
* Replace a system-held secret (no form edits it) with an operator-supplied
|
|
21844
|
+
* value — e.g. importing the session signing key a pre-keychain hub kept in
|
|
21845
|
+
* config.yaml, so the tokens it signed stay valid. Audited as the operator.
|
|
21846
|
+
* Replacing the session signing key invalidates every token signed with the
|
|
21847
|
+
* previous one.
|
|
21848
|
+
*/
|
|
21849
|
+
setSystemSecret: method(external_exports.object({
|
|
21850
|
+
name: SystemHeldSecretNameSchema,
|
|
21851
|
+
value: external_exports.string().min(16)
|
|
21852
|
+
}), external_exports.object({
|
|
21853
|
+
ref: external_exports.string(),
|
|
21854
|
+
version: external_exports.number().int()
|
|
21855
|
+
}), {
|
|
21856
|
+
kind: "mutation",
|
|
21857
|
+
auth: "admin",
|
|
21858
|
+
caller: "required"
|
|
21859
|
+
}),
|
|
21860
|
+
/** Delete refs no owner points at any more. Re-checked here; `unknown` is kept. */
|
|
21861
|
+
deleteOrphans: method(external_exports.object({ refs: external_exports.array(external_exports.string().min(1)).max(1e3) }), external_exports.object({
|
|
21862
|
+
deleted: external_exports.array(external_exports.string()).readonly(),
|
|
21863
|
+
kept: external_exports.array(external_exports.object({
|
|
21864
|
+
ref: external_exports.string(),
|
|
21865
|
+
usage: KeychainSecretUsageSchema
|
|
21866
|
+
})).readonly()
|
|
21867
|
+
}), {
|
|
21868
|
+
kind: "mutation",
|
|
21869
|
+
auth: "admin",
|
|
21870
|
+
caller: "required"
|
|
21871
|
+
}),
|
|
21872
|
+
/**
|
|
21873
|
+
* Wrap the data key under the configured primary master key.
|
|
21874
|
+
*
|
|
21875
|
+
* Pending rotation (the keychain unlocked with a previous source): re-wrap
|
|
21876
|
+
* under the primary. Otherwise, with the default file as primary: generate
|
|
21877
|
+
* a new master key, write it there, re-wrap. A file or OS-keychain primary
|
|
21878
|
+
* that is already in use cannot be replaced from here — put the new key at
|
|
21879
|
+
* the source, keep the old one as `keychain.previousKeyFile`, restart, and
|
|
21880
|
+
* rotate. No value is re-encrypted either way; the previous wrap is kept
|
|
21881
|
+
* (retired) until purged.
|
|
21882
|
+
*/
|
|
21883
|
+
rotateMasterKey: method(external_exports.object({}), external_exports.object({
|
|
21884
|
+
fingerprint: external_exports.string(),
|
|
21885
|
+
keySource: KeychainKeySourceSchema
|
|
21886
|
+
}), {
|
|
21887
|
+
kind: "mutation",
|
|
21888
|
+
auth: "admin",
|
|
21889
|
+
caller: "required"
|
|
21890
|
+
}),
|
|
21891
|
+
purgeRetiredKeys: method(external_exports.object({}), external_exports.object({ purged: external_exports.number().int() }), {
|
|
21892
|
+
kind: "mutation",
|
|
21893
|
+
auth: "admin",
|
|
21894
|
+
caller: "required"
|
|
21895
|
+
}),
|
|
21896
|
+
/** The master key, base64. Audited; marks the recovery copy as taken. */
|
|
21897
|
+
downloadRecoveryKey: method(external_exports.object({}), external_exports.object({
|
|
21898
|
+
key: external_exports.string(),
|
|
21899
|
+
fingerprint: external_exports.string(),
|
|
21900
|
+
keySource: KeychainKeySourceSchema
|
|
21901
|
+
}), {
|
|
21902
|
+
kind: "mutation",
|
|
21903
|
+
auth: "admin",
|
|
21904
|
+
caller: "required"
|
|
21905
|
+
}),
|
|
21906
|
+
/**
|
|
21907
|
+
* Lost-key recovery: archive every stored value into a
|
|
21908
|
+
* `keychain:secrets-orphaned-<ts>` table and start over with a new data
|
|
21909
|
+
* key. Every secret field then reads "not set". Requires the typed
|
|
21910
|
+
* confirmation {@link KEYCHAIN_RESET_CONFIRMATION}.
|
|
21911
|
+
*/
|
|
21912
|
+
resetKeychain: method(external_exports.object({ confirm: external_exports.literal(KEYCHAIN_RESET_CONFIRMATION) }), external_exports.object({
|
|
21913
|
+
archivedCollection: external_exports.string().nullable(),
|
|
21914
|
+
archived: external_exports.number().int()
|
|
21915
|
+
}), {
|
|
21916
|
+
kind: "mutation",
|
|
21917
|
+
auth: "admin",
|
|
21918
|
+
caller: "required"
|
|
21919
|
+
})
|
|
21920
|
+
}
|
|
21921
|
+
};
|
|
21746
21922
|
var decoderCapability = {
|
|
21747
21923
|
name: "decoder",
|
|
21748
21924
|
scope: "system",
|
|
21749
21925
|
mode: "singleton",
|
|
21750
21926
|
preferredProvider: "decoder-nodeav",
|
|
21751
21927
|
methods: {
|
|
21752
|
-
supportsCodec: method(external_exports.object({ codec: external_exports.string() }), external_exports.boolean()),
|
|
21753
21928
|
getInfo: method(external_exports.void(), external_exports.object({
|
|
21754
21929
|
id: external_exports.string(),
|
|
21755
21930
|
name: external_exports.string(),
|
|
21756
|
-
isPullMode: external_exports.boolean().optional(),
|
|
21757
|
-
priority: external_exports.number().optional(),
|
|
21758
21931
|
hwaccel: external_exports.string().optional(),
|
|
21759
21932
|
probedBestHwaccel: external_exports.string().optional()
|
|
21760
21933
|
})),
|
|
21761
|
-
createSession: method(DecoderSessionConfigSchema, external_exports.object({
|
|
21762
|
-
sessionId: external_exports.string(),
|
|
21763
|
-
nodeId: external_exports.string()
|
|
21764
|
-
})),
|
|
21765
|
-
destroySession: method(external_exports.object({ sessionId: external_exports.string() }), external_exports.void()),
|
|
21766
|
-
pushPacket: method(external_exports.object({
|
|
21767
|
-
sessionId: external_exports.string(),
|
|
21768
|
-
packet: EncodedPacketSchema
|
|
21769
|
-
}), external_exports.void()),
|
|
21770
|
-
openStream: method(external_exports.object({
|
|
21771
|
-
sessionId: external_exports.string(),
|
|
21772
|
-
url: external_exports.string()
|
|
21773
|
-
}), external_exports.void()),
|
|
21774
|
-
pullFrames: method(external_exports.object({
|
|
21775
|
-
sessionId: external_exports.string(),
|
|
21776
|
-
maxCount: external_exports.number().default(1),
|
|
21777
|
-
waitMs: external_exports.number().optional()
|
|
21778
|
-
}), external_exports.array(DecodedFrameSchema)),
|
|
21779
|
-
pullHandles: method(external_exports.object({
|
|
21780
|
-
sessionId: external_exports.string(),
|
|
21781
|
-
maxCount: external_exports.number().default(1),
|
|
21782
|
-
waitMs: external_exports.number().optional()
|
|
21783
|
-
}), external_exports.array(FrameHandleSchema)),
|
|
21784
|
-
getFrame: method(external_exports.object({ handle: FrameHandleSchema }), DecodedFrameSchema.nullable()),
|
|
21785
|
-
getShmStats: method(external_exports.object({ sessionId: external_exports.string() }), ShmRingStatsSchema.nullable()),
|
|
21786
|
-
updateConfig: method(external_exports.object({
|
|
21787
|
-
sessionId: external_exports.string(),
|
|
21788
|
-
config: DecoderSessionConfigSchema.partial()
|
|
21789
|
-
}), external_exports.void()),
|
|
21790
|
-
getStats: method(external_exports.object({ sessionId: external_exports.string() }), DecoderStatsSchema),
|
|
21791
|
-
listActiveSessions: method(external_exports.void(), external_exports.array(external_exports.object({
|
|
21792
|
-
sessionId: external_exports.string(),
|
|
21793
|
-
codec: external_exports.string(),
|
|
21794
|
-
outputFormat: external_exports.string(),
|
|
21795
|
-
createdAtMs: external_exports.number()
|
|
21796
|
-
})).readonly()),
|
|
21797
21934
|
/**
|
|
21798
21935
|
* Re-run the host platform-probe for the decoder's hwaccel backend
|
|
21799
21936
|
* and write the detected value into the addon's own global
|
|
@@ -22503,6 +22640,10 @@ var DeviceInfoSchema = external_exports.object({
|
|
|
22503
22640
|
isCamera: external_exports.boolean(),
|
|
22504
22641
|
/** Current config values — serializable snapshot */
|
|
22505
22642
|
config: external_exports.record(external_exports.string(), external_exports.unknown()),
|
|
22643
|
+
/** Paths inside `config` the device's schema declares secret (D783) —
|
|
22644
|
+
* what the non-admin redaction withholds. Paths, never values. Absent
|
|
22645
|
+
* when the owning runner has not reported them. */
|
|
22646
|
+
secretConfigPaths: external_exports.array(external_exports.string()).optional(),
|
|
22506
22647
|
/** Hardware + identity blob (manufacturer / model / firmware / sn /
|
|
22507
22648
|
* uid / mac / …). Populated by drivers; editable via setMetadata. */
|
|
22508
22649
|
metadata: external_exports.record(external_exports.string(), external_exports.unknown()).nullable().optional(),
|
|
@@ -22667,12 +22808,22 @@ var DeviceRegisterPayloadSchema = external_exports.object({
|
|
|
22667
22808
|
* call (workers re-register on init), so probe-driven updates
|
|
22668
22809
|
* (e.g. PTZ flag flipping after the abilities probe) propagate. */
|
|
22669
22810
|
features: external_exports.array(external_exports.string()).optional(),
|
|
22670
|
-
config: external_exports.record(external_exports.string(), external_exports.unknown())
|
|
22811
|
+
config: external_exports.record(external_exports.string(), external_exports.unknown()),
|
|
22812
|
+
/** Config paths the device's own schema DECLARES secret
|
|
22813
|
+
* (`.meta({ secret: true })` — dotted, `[]` for array items, e.g.
|
|
22814
|
+
* `connection.password`). Re-published on every register; the non-admin
|
|
22815
|
+
* redaction withholds them at any depth (D783). Optional: an older runner
|
|
22816
|
+
* omits it and the keyword backstop applies. */
|
|
22817
|
+
secretConfigPaths: external_exports.array(external_exports.string()).optional()
|
|
22671
22818
|
});
|
|
22672
22819
|
var DeviceRemovePayloadSchema = external_exports.object({ deviceId: external_exports.number() });
|
|
22673
22820
|
var DevicePersistConfigPayloadSchema = external_exports.object({
|
|
22674
22821
|
deviceId: external_exports.number(),
|
|
22675
|
-
data: external_exports.record(external_exports.string(), external_exports.unknown())
|
|
22822
|
+
data: external_exports.record(external_exports.string(), external_exports.unknown()),
|
|
22823
|
+
/** The paths the device's schema declares secret (D783), when the caller
|
|
22824
|
+
* knows them — those values are kept in the keychain, not the blob (D787).
|
|
22825
|
+
* Absent: the paths the device last reported at `registerDevice` apply. */
|
|
22826
|
+
secretConfigPaths: external_exports.array(external_exports.string()).optional()
|
|
22676
22827
|
});
|
|
22677
22828
|
var MigrateSwitchOutcomeSchema = external_exports.enum([
|
|
22678
22829
|
"off",
|
|
@@ -24153,6 +24304,12 @@ var filesystemBrowseCapability = {
|
|
|
24153
24304
|
})
|
|
24154
24305
|
}
|
|
24155
24306
|
};
|
|
24307
|
+
var HUB_ADDRESS_ROLES = [
|
|
24308
|
+
"appConnections",
|
|
24309
|
+
"notificationTaps",
|
|
24310
|
+
"internal",
|
|
24311
|
+
"publicEndpoint"
|
|
24312
|
+
];
|
|
24156
24313
|
var AI_CAP_TRANSPORT_TIMEOUT_MS = 6e5;
|
|
24157
24314
|
var AI_MODEL_INSTALL_TIMEOUT_MS = 60 * 6e4;
|
|
24158
24315
|
var LlmUsageSchema = external_exports.object({
|
|
@@ -24904,7 +25061,14 @@ var RedirectLoginMethodSchema = external_exports.object({
|
|
|
24904
25061
|
icon: external_exports.string().optional(),
|
|
24905
25062
|
/** Addon-owned HTTP route the button navigates to (GET). */
|
|
24906
25063
|
startUrl: external_exports.string(),
|
|
24907
|
-
stage: LoginStageEnum
|
|
25064
|
+
stage: LoginStageEnum,
|
|
25065
|
+
/**
|
|
25066
|
+
* The provider names an external identity a signed-in user can link to
|
|
25067
|
+
* their own account (D782): `auth.listLinkableProviders` /
|
|
25068
|
+
* `beginExternalLink` offer exactly the redirect methods that set this,
|
|
25069
|
+
* whatever their id. Absent / false — a login button only (magic-link).
|
|
25070
|
+
*/
|
|
25071
|
+
linkable: external_exports.boolean().optional()
|
|
24908
25072
|
});
|
|
24909
25073
|
var WidgetLoginMethodSchema = external_exports.object({
|
|
24910
25074
|
kind: external_exports.literal("widget"),
|
|
@@ -26535,6 +26699,8 @@ var NcSystemEventKindSchema = external_exports.enum([
|
|
|
26535
26699
|
"stream-offline",
|
|
26536
26700
|
"node-online",
|
|
26537
26701
|
"node-offline",
|
|
26702
|
+
"node-restarting",
|
|
26703
|
+
"node-updating",
|
|
26538
26704
|
"node-inference-unavailable",
|
|
26539
26705
|
"detection-blind",
|
|
26540
26706
|
"addon-crash-loop",
|
|
@@ -27715,7 +27881,13 @@ var NcAlarmModeDelaysSchema = external_exports.object({
|
|
|
27715
27881
|
* Absent = false (logged, not sent). Even when true it is not sent when that same sensor
|
|
27716
27882
|
* is the one that starts the entry delay — the entry-delay notification already names it.
|
|
27717
27883
|
*/
|
|
27718
|
-
notifySensorRewatched: external_exports.boolean().optional()
|
|
27884
|
+
notifySensorRewatched: external_exports.boolean().optional(),
|
|
27885
|
+
/**
|
|
27886
|
+
* D735: notify "ignored" when a sensor this arm bypassed really MOVED while armed (its own
|
|
27887
|
+
* change time is after the arm) and set nothing off. Absent = false (logged, not sent). A
|
|
27888
|
+
* re-sync, a recovery from `unavailable` or a duplicate is never announced, switch or not.
|
|
27889
|
+
*/
|
|
27890
|
+
notifySensorIgnored: external_exports.boolean().optional()
|
|
27719
27891
|
});
|
|
27720
27892
|
var NcAlarmModeDelaysListSchema = external_exports.array(NcAlarmModeDelaysSchema).max(8).refine(uniqueModes, { message: "modeDelays: at most one entry per arm mode" });
|
|
27721
27893
|
var NcAlarmModeDelaysEditSchema = external_exports.object({
|
|
@@ -27729,7 +27901,9 @@ var NcAlarmModeDelaysEditSchema = external_exports.object({
|
|
|
27729
27901
|
/** D706: set the switch, or `null` to clear it (back to the default, false). */
|
|
27730
27902
|
notifyDuringEntryDelay: external_exports.boolean().nullable().optional(),
|
|
27731
27903
|
/** D706: set the switch, or `null` to clear it (back to the default, false). */
|
|
27732
|
-
notifySensorRewatched: external_exports.boolean().nullable().optional()
|
|
27904
|
+
notifySensorRewatched: external_exports.boolean().nullable().optional(),
|
|
27905
|
+
/** D735: set the switch, or `null` to clear it (back to the default, false). */
|
|
27906
|
+
notifySensorIgnored: external_exports.boolean().nullable().optional()
|
|
27733
27907
|
});
|
|
27734
27908
|
var NcAlarmModeDelaysEditListSchema = external_exports.array(NcAlarmModeDelaysEditSchema).max(8).refine(uniqueModes, { message: "modeDelays: at most one edit per arm mode" });
|
|
27735
27909
|
var NcAlarmNonBlockingEditSchema = external_exports.object({
|
|
@@ -28587,8 +28761,8 @@ var DEFAULT_CLUSTER_STEP_MODELS = Object.freeze(Object.fromEntries(CLUSTER_MODEL
|
|
|
28587
28761
|
var CLUSTER_STEP_SETTING_FIELDS = [{
|
|
28588
28762
|
stepId: "face-embedding",
|
|
28589
28763
|
key: "minLandmarkFaceSize",
|
|
28590
|
-
label: "Min face size
|
|
28591
|
-
description: "
|
|
28764
|
+
label: "Min face size to embed (detection-frame px)",
|
|
28765
|
+
description: "Faces smaller than this in the small frame the detector sees are not embedded, so they can never be recognised. Below it the face cannot be aligned reliably and a bad embedding matches everyone. Same value on every node. 0 = no limit.",
|
|
28592
28766
|
type: "slider",
|
|
28593
28767
|
min: 0,
|
|
28594
28768
|
max: 64,
|
|
@@ -29278,7 +29452,12 @@ var RetrainMacroClassSchema = external_exports.enum([
|
|
|
29278
29452
|
"plate"
|
|
29279
29453
|
]);
|
|
29280
29454
|
var RetrainAnnotationKindSchema = external_exports.enum(["subject", "model_error"]);
|
|
29281
|
-
var RetrainAnnotationSourceSchema = external_exports.enum([
|
|
29455
|
+
var RetrainAnnotationSourceSchema = external_exports.enum([
|
|
29456
|
+
"operator",
|
|
29457
|
+
"assist",
|
|
29458
|
+
"pipeline",
|
|
29459
|
+
"llm"
|
|
29460
|
+
]);
|
|
29282
29461
|
var RetrainBboxSchema = external_exports.object({
|
|
29283
29462
|
x: external_exports.number(),
|
|
29284
29463
|
y: external_exports.number(),
|
|
@@ -29287,7 +29466,8 @@ var RetrainBboxSchema = external_exports.object({
|
|
|
29287
29466
|
});
|
|
29288
29467
|
var RetrainAnnotationSchema = external_exports.object({
|
|
29289
29468
|
id: external_exports.string(),
|
|
29290
|
-
|
|
29469
|
+
/** The frame's track. Absent on a recording still, which has none. */
|
|
29470
|
+
trackId: external_exports.string().optional(),
|
|
29291
29471
|
deviceId: external_exports.number(),
|
|
29292
29472
|
/** The COPY in retrain storage — never the source track's media key. */
|
|
29293
29473
|
mediaKey: external_exports.string(),
|
|
@@ -29333,17 +29513,50 @@ var RetrainFrameCandidateSchema = external_exports.object({
|
|
|
29333
29513
|
* fail, whatever became of the original. */
|
|
29334
29514
|
copied: external_exports.boolean()
|
|
29335
29515
|
});
|
|
29516
|
+
var RetrainPipelineBoxSchema = external_exports.object({
|
|
29517
|
+
/** Normalised `[0,1]` against the full frame. */
|
|
29518
|
+
bbox: RetrainBboxSchema,
|
|
29519
|
+
macroClass: RetrainMacroClassSchema,
|
|
29520
|
+
label: external_exports.string().optional(),
|
|
29521
|
+
subLabel: external_exports.string().optional(),
|
|
29522
|
+
/** The detection score of the position used, when it was recorded. */
|
|
29523
|
+
score: external_exports.number().optional(),
|
|
29524
|
+
/** The root model that produced the track, when it was recorded. */
|
|
29525
|
+
modelId: external_exports.string().optional(),
|
|
29526
|
+
trackId: external_exports.string(),
|
|
29527
|
+
/** `subject-box`: recorded on this very frame. `position`: the track's
|
|
29528
|
+
* position nearest the capture time, `deltaMs` away. */
|
|
29529
|
+
basis: external_exports.enum(["subject-box", "position"]),
|
|
29530
|
+
deltaMs: external_exports.number()
|
|
29531
|
+
});
|
|
29532
|
+
var RetrainFrameOriginSchema = external_exports.enum(["track", "recording"]);
|
|
29336
29533
|
var RetrainFrameSchema = external_exports.object({
|
|
29337
29534
|
frameId: external_exports.string(),
|
|
29338
29535
|
deviceId: external_exports.number(),
|
|
29339
|
-
|
|
29340
|
-
/**
|
|
29341
|
-
|
|
29536
|
+
origin: RetrainFrameOriginSchema,
|
|
29537
|
+
/** The track it was copied from. Absent on a recording still. */
|
|
29538
|
+
trackId: external_exports.string().optional(),
|
|
29539
|
+
/** Provenance only. It may already point at nothing — that is expected.
|
|
29540
|
+
* Absent on a recording still. */
|
|
29541
|
+
sourceMediaId: external_exports.number().int().optional(),
|
|
29542
|
+
/** A recording still: the playhead instant it was taken at. */
|
|
29543
|
+
epochMs: external_exports.number().optional(),
|
|
29342
29544
|
sourceKind: MediaFileKindEnum,
|
|
29343
29545
|
sizeBytes: external_exports.number().int(),
|
|
29344
29546
|
width: external_exports.number().int(),
|
|
29345
29547
|
height: external_exports.number().int(),
|
|
29346
|
-
copiedAt: external_exports.number()
|
|
29548
|
+
copiedAt: external_exports.number(),
|
|
29549
|
+
/** When the CAMERA captured the frame. Absent on a copy taken before D785. */
|
|
29550
|
+
capturedAt: external_exports.number().optional(),
|
|
29551
|
+
/** The operator's "every subject in this frame is boxed". Detector
|
|
29552
|
+
* evaluation keeps only complete frames: an unboxed subject would count as
|
|
29553
|
+
* a false positive. */
|
|
29554
|
+
complete: external_exports.boolean(),
|
|
29555
|
+
/** The boxes the pipeline drew on this frame. Present on list answers;
|
|
29556
|
+
* empty when nothing the track store holds can be placed on it. */
|
|
29557
|
+
pipelineBoxes: external_exports.array(RetrainPipelineBoxSchema).readonly().optional(),
|
|
29558
|
+
/** The named collections this frame belongs to. Present on list answers. */
|
|
29559
|
+
collectionIds: external_exports.array(external_exports.string()).readonly().optional()
|
|
29347
29560
|
});
|
|
29348
29561
|
var RetrainCopyRefusalSchema = external_exports.enum([
|
|
29349
29562
|
"source-missing",
|
|
@@ -29363,6 +29576,38 @@ var RetrainFrameListSchema = external_exports.object({
|
|
|
29363
29576
|
/** What the page pre-selects — the native key frame when one survives. */
|
|
29364
29577
|
autoPickMediaId: external_exports.number().int().optional()
|
|
29365
29578
|
});
|
|
29579
|
+
var RetrainExportFilterSchema = external_exports.object({
|
|
29580
|
+
deviceIds: external_exports.array(external_exports.number()).optional(),
|
|
29581
|
+
frameIds: external_exports.array(external_exports.string()).max(2e4).optional(),
|
|
29582
|
+
/** Only frames in at least one of these named collections. */
|
|
29583
|
+
collectionIds: external_exports.array(external_exports.string()).max(200).optional(),
|
|
29584
|
+
/** Exactly the frames of this dataset version (and its completeOnly). An
|
|
29585
|
+
* unknown id selects nothing. */
|
|
29586
|
+
datasetVersionId: external_exports.string().optional(),
|
|
29587
|
+
batchId: external_exports.string().optional(),
|
|
29588
|
+
/** Only frames the operator marked complete (all subjects boxed). */
|
|
29589
|
+
completeOnly: external_exports.boolean().optional()
|
|
29590
|
+
});
|
|
29591
|
+
var RetrainExportLayoutSchema = external_exports.enum(["frames", "crops"]);
|
|
29592
|
+
var RetrainArchiveTargetSchema = external_exports.object({
|
|
29593
|
+
kind: external_exports.literal("http"),
|
|
29594
|
+
method: external_exports.enum(["PUT", "POST"]),
|
|
29595
|
+
url: external_exports.string().url(),
|
|
29596
|
+
headers: external_exports.record(external_exports.string(), external_exports.string()).optional()
|
|
29597
|
+
});
|
|
29598
|
+
var RetrainArchiveResultSchema = external_exports.object({
|
|
29599
|
+
batchId: external_exports.string(),
|
|
29600
|
+
frames: external_exports.number().int(),
|
|
29601
|
+
crops: external_exports.number().int(),
|
|
29602
|
+
annotations: external_exports.number().int(),
|
|
29603
|
+
/** Frames planned but not shipped (unreadable copy, path too long). */
|
|
29604
|
+
missing: external_exports.number().int(),
|
|
29605
|
+
bytes: external_exports.number().int(),
|
|
29606
|
+
/** sha256 of the exact bytes sent. */
|
|
29607
|
+
sha256: external_exports.string(),
|
|
29608
|
+
/** The target's HTTP status. */
|
|
29609
|
+
status: external_exports.number().int()
|
|
29610
|
+
});
|
|
29366
29611
|
var RetrainAssistSubjectSchema = external_exports.discriminatedUnion("kind", [external_exports.object({
|
|
29367
29612
|
kind: external_exports.literal("package"),
|
|
29368
29613
|
zone: RetrainBboxSchema.optional()
|
|
@@ -29386,6 +29631,151 @@ var RetrainAssistResultSchema = external_exports.discriminatedUnion("kind", [ext
|
|
|
29386
29631
|
reason: external_exports.string(),
|
|
29387
29632
|
detail: external_exports.string().optional()
|
|
29388
29633
|
})]);
|
|
29634
|
+
var RetrainCollectionSchema = external_exports.object({
|
|
29635
|
+
id: external_exports.string(),
|
|
29636
|
+
name: external_exports.string(),
|
|
29637
|
+
createdAt: external_exports.number(),
|
|
29638
|
+
frameCount: external_exports.number().int()
|
|
29639
|
+
});
|
|
29640
|
+
var RetrainCollectionCreateResultSchema = external_exports.discriminatedUnion("kind", [external_exports.object({
|
|
29641
|
+
kind: external_exports.literal("created"),
|
|
29642
|
+
collection: RetrainCollectionSchema
|
|
29643
|
+
}), external_exports.object({
|
|
29644
|
+
kind: external_exports.literal("refused"),
|
|
29645
|
+
reason: external_exports.enum(["empty-name", "duplicate-name"])
|
|
29646
|
+
})]);
|
|
29647
|
+
var RetrainCollectionRenameResultSchema = external_exports.discriminatedUnion("kind", [external_exports.object({
|
|
29648
|
+
kind: external_exports.literal("renamed"),
|
|
29649
|
+
collection: RetrainCollectionSchema
|
|
29650
|
+
}), external_exports.object({
|
|
29651
|
+
kind: external_exports.literal("refused"),
|
|
29652
|
+
reason: external_exports.enum([
|
|
29653
|
+
"empty-name",
|
|
29654
|
+
"duplicate-name",
|
|
29655
|
+
"unknown-collection"
|
|
29656
|
+
])
|
|
29657
|
+
})]);
|
|
29658
|
+
var AddRetrainFrameFromRecordingResultSchema = external_exports.discriminatedUnion("kind", [external_exports.object({
|
|
29659
|
+
kind: external_exports.literal("added"),
|
|
29660
|
+
collectionId: external_exports.string(),
|
|
29661
|
+
frame: RetrainFrameSchema,
|
|
29662
|
+
/** The moment was already in the dataset; nothing was decoded. */
|
|
29663
|
+
reused: external_exports.boolean()
|
|
29664
|
+
}), external_exports.object({
|
|
29665
|
+
kind: external_exports.literal("refused"),
|
|
29666
|
+
reason: external_exports.enum([
|
|
29667
|
+
"unknown-collection",
|
|
29668
|
+
"still-unavailable",
|
|
29669
|
+
"still-busy",
|
|
29670
|
+
"unreadable-image",
|
|
29671
|
+
"write-failed"
|
|
29672
|
+
]),
|
|
29673
|
+
detail: external_exports.string().optional()
|
|
29674
|
+
})]);
|
|
29675
|
+
var RetrainAssistProfileSchema = external_exports.object({
|
|
29676
|
+
id: external_exports.string(),
|
|
29677
|
+
name: external_exports.string(),
|
|
29678
|
+
model: external_exports.string(),
|
|
29679
|
+
kind: external_exports.string(),
|
|
29680
|
+
/** `true` when the frame would leave the house (a cloud vendor, or an
|
|
29681
|
+
* endpoint that is not on the local network). The page confirms each such
|
|
29682
|
+
* run, and the provider refuses one without `allowCloud`. */
|
|
29683
|
+
leavesHouse: external_exports.boolean()
|
|
29684
|
+
});
|
|
29685
|
+
var RetrainLlmProposalSchema = RetrainAnnotationDraftSchema.extend({ reason: external_exports.string() });
|
|
29686
|
+
var RetrainLlmReviewSchema = external_exports.object({
|
|
29687
|
+
/** The `ref` the page sent the box under. */
|
|
29688
|
+
ref: external_exports.string(),
|
|
29689
|
+
verdict: external_exports.enum([
|
|
29690
|
+
"confirmed",
|
|
29691
|
+
"wrong-class",
|
|
29692
|
+
"not-an-object",
|
|
29693
|
+
"uncertain"
|
|
29694
|
+
]),
|
|
29695
|
+
suggestedClass: RetrainMacroClassSchema.optional(),
|
|
29696
|
+
reason: external_exports.string()
|
|
29697
|
+
});
|
|
29698
|
+
var RetrainLlmAssistResultSchema = external_exports.discriminatedUnion("kind", [external_exports.object({
|
|
29699
|
+
kind: external_exports.literal("proposed"),
|
|
29700
|
+
profileId: external_exports.string(),
|
|
29701
|
+
model: external_exports.string(),
|
|
29702
|
+
/** The frame was sent outside the house for this answer. */
|
|
29703
|
+
leftHouse: external_exports.boolean(),
|
|
29704
|
+
proposals: external_exports.array(RetrainLlmProposalSchema).readonly(),
|
|
29705
|
+
reviews: external_exports.array(RetrainLlmReviewSchema).readonly(),
|
|
29706
|
+
rejected: external_exports.number().int()
|
|
29707
|
+
}), external_exports.object({
|
|
29708
|
+
kind: external_exports.literal("refused"),
|
|
29709
|
+
reason: external_exports.enum([
|
|
29710
|
+
"unknown-frame",
|
|
29711
|
+
"unreadable-frame",
|
|
29712
|
+
"unknown-profile",
|
|
29713
|
+
"profile-disabled",
|
|
29714
|
+
"no-vision",
|
|
29715
|
+
"cloud-not-confirmed",
|
|
29716
|
+
"llm-error",
|
|
29717
|
+
"malformed-answer"
|
|
29718
|
+
]),
|
|
29719
|
+
detail: external_exports.string().optional()
|
|
29720
|
+
})]);
|
|
29721
|
+
var RetrainDatasetSelectionSchema = external_exports.object({
|
|
29722
|
+
deviceIds: external_exports.array(external_exports.number()).readonly().optional(),
|
|
29723
|
+
collectionIds: external_exports.array(external_exports.string()).max(200).readonly().optional(),
|
|
29724
|
+
frameIds: external_exports.array(external_exports.string()).max(2e4).readonly().optional()
|
|
29725
|
+
});
|
|
29726
|
+
var RetrainDatasetStatsSchema = external_exports.object({
|
|
29727
|
+
frames: external_exports.number().int(),
|
|
29728
|
+
completeFrames: external_exports.number().int(),
|
|
29729
|
+
/** `completeFrames / frames`, 0..1. */
|
|
29730
|
+
completeness: external_exports.number(),
|
|
29731
|
+
/** Boxes to learn (model errors excluded). */
|
|
29732
|
+
subjects: external_exports.number().int(),
|
|
29733
|
+
modelErrors: external_exports.number().int(),
|
|
29734
|
+
/** Complete frames with no subject. */
|
|
29735
|
+
hardNegatives: external_exports.number().int(),
|
|
29736
|
+
/** Subjects per class × camera × day/night. */
|
|
29737
|
+
cells: external_exports.array(external_exports.object({
|
|
29738
|
+
macroClass: external_exports.string(),
|
|
29739
|
+
deviceId: external_exports.number(),
|
|
29740
|
+
lighting: external_exports.enum([
|
|
29741
|
+
"day",
|
|
29742
|
+
"night",
|
|
29743
|
+
"unknown"
|
|
29744
|
+
]),
|
|
29745
|
+
subjects: external_exports.number().int(),
|
|
29746
|
+
frames: external_exports.number().int()
|
|
29747
|
+
})).readonly(),
|
|
29748
|
+
cameras: external_exports.array(external_exports.object({
|
|
29749
|
+
deviceId: external_exports.number(),
|
|
29750
|
+
frames: external_exports.number().int(),
|
|
29751
|
+
completeFrames: external_exports.number().int()
|
|
29752
|
+
})).readonly()
|
|
29753
|
+
});
|
|
29754
|
+
var RetrainDatasetVersionSchema = external_exports.object({
|
|
29755
|
+
id: external_exports.string(),
|
|
29756
|
+
name: external_exports.string(),
|
|
29757
|
+
createdAt: external_exports.number(),
|
|
29758
|
+
selection: RetrainDatasetSelectionSchema,
|
|
29759
|
+
layout: RetrainExportLayoutSchema,
|
|
29760
|
+
completeOnly: external_exports.boolean(),
|
|
29761
|
+
frameCount: external_exports.number().int(),
|
|
29762
|
+
/** sha256 of what the frames taught when the version was frozen. */
|
|
29763
|
+
annotationHash: external_exports.string(),
|
|
29764
|
+
/** The export manifest schema the version was cut under. */
|
|
29765
|
+
manifestSchema: external_exports.string(),
|
|
29766
|
+
stats: RetrainDatasetStatsSchema
|
|
29767
|
+
});
|
|
29768
|
+
var CreateRetrainDatasetVersionResultSchema = external_exports.discriminatedUnion("kind", [external_exports.object({
|
|
29769
|
+
kind: external_exports.literal("created"),
|
|
29770
|
+
version: RetrainDatasetVersionSchema
|
|
29771
|
+
}), external_exports.object({
|
|
29772
|
+
kind: external_exports.literal("refused"),
|
|
29773
|
+
reason: external_exports.enum([
|
|
29774
|
+
"empty-name",
|
|
29775
|
+
"duplicate-name",
|
|
29776
|
+
"no-frames"
|
|
29777
|
+
])
|
|
29778
|
+
})]);
|
|
29389
29779
|
var RetrainTransitionResultSchema = external_exports.object({
|
|
29390
29780
|
trackId: external_exports.string(),
|
|
29391
29781
|
/** Where the track ended up, whatever happened. */
|
|
@@ -30447,7 +30837,7 @@ var pipelineAnalyticsCapability = {
|
|
|
30447
30837
|
* a frame leaves the dataset before export. */
|
|
30448
30838
|
deselectRetrainFrame: method(external_exports.object({
|
|
30449
30839
|
deviceId: external_exports.number(),
|
|
30450
|
-
trackId: external_exports.string(),
|
|
30840
|
+
trackId: external_exports.string().optional(),
|
|
30451
30841
|
frameId: external_exports.string()
|
|
30452
30842
|
}), external_exports.object({
|
|
30453
30843
|
removed: external_exports.boolean(),
|
|
@@ -30490,7 +30880,8 @@ var pipelineAnalyticsCapability = {
|
|
|
30490
30880
|
*/
|
|
30491
30881
|
proposeRetrainAnnotations: method(external_exports.object({
|
|
30492
30882
|
deviceId: external_exports.number(),
|
|
30493
|
-
|
|
30883
|
+
/** The frame's track, when it has one — checked against the frame. */
|
|
30884
|
+
trackId: external_exports.string().optional(),
|
|
30494
30885
|
frameId: external_exports.string(),
|
|
30495
30886
|
subject: RetrainAssistSubjectSchema,
|
|
30496
30887
|
/** Which node runs it. Absent ⇒ wherever an unowned call lands. */
|
|
@@ -30499,8 +30890,12 @@ var pipelineAnalyticsCapability = {
|
|
|
30499
30890
|
kind: "mutation",
|
|
30500
30891
|
auth: "admin"
|
|
30501
30892
|
}),
|
|
30502
|
-
/** Every annotation on a track,
|
|
30503
|
-
|
|
30893
|
+
/** Every annotation on a track, or on named frames (a recording still has
|
|
30894
|
+
* no track), oldest first. One of the two is required. */
|
|
30895
|
+
listRetrainAnnotations: method(external_exports.object({
|
|
30896
|
+
trackId: external_exports.string().optional(),
|
|
30897
|
+
frameIds: external_exports.array(external_exports.string()).max(2e3).optional()
|
|
30898
|
+
}), external_exports.array(RetrainAnnotationSchema).readonly(), {
|
|
30504
30899
|
kind: "query",
|
|
30505
30900
|
auth: "admin"
|
|
30506
30901
|
}),
|
|
@@ -30519,7 +30914,8 @@ var pipelineAnalyticsCapability = {
|
|
|
30519
30914
|
*/
|
|
30520
30915
|
saveRetrainAnnotations: method(external_exports.object({
|
|
30521
30916
|
deviceId: external_exports.number(),
|
|
30522
|
-
|
|
30917
|
+
/** The frame's track, when it has one — checked against the frame. */
|
|
30918
|
+
trackId: external_exports.string().optional(),
|
|
30523
30919
|
frameId: external_exports.string(),
|
|
30524
30920
|
annotations: external_exports.array(RetrainAnnotationDraftSchema)
|
|
30525
30921
|
}), external_exports.array(RetrainAnnotationSchema).readonly(), {
|
|
@@ -30571,7 +30967,193 @@ var pipelineAnalyticsCapability = {
|
|
|
30571
30967
|
* out, so two crops of the same subject can never end up in one feature
|
|
30572
30968
|
* space (D52).
|
|
30573
30969
|
*/
|
|
30574
|
-
getRetrainExportUrl: method(
|
|
30970
|
+
getRetrainExportUrl: method(RetrainExportFilterSchema.extend({ layout: RetrainExportLayoutSchema.optional() }), external_exports.object({ url: external_exports.string() }), {
|
|
30971
|
+
kind: "query",
|
|
30972
|
+
auth: "admin"
|
|
30973
|
+
}),
|
|
30974
|
+
/**
|
|
30975
|
+
* The operator's "every subject in this frame is boxed" — set and cleared
|
|
30976
|
+
* by hand, never derived: a frame with no box may be a complete hard
|
|
30977
|
+
* negative, and a frame with three boxes may still miss a fourth person.
|
|
30978
|
+
*/
|
|
30979
|
+
setRetrainFrameComplete: method(external_exports.object({
|
|
30980
|
+
deviceId: external_exports.number(),
|
|
30981
|
+
trackId: external_exports.string().optional(),
|
|
30982
|
+
frameId: external_exports.string(),
|
|
30983
|
+
complete: external_exports.boolean()
|
|
30984
|
+
}), RetrainFrameSchema, {
|
|
30985
|
+
kind: "mutation",
|
|
30986
|
+
auth: "admin"
|
|
30987
|
+
}),
|
|
30988
|
+
/**
|
|
30989
|
+
* Stream the annotated archive to a TARGET instead of a browser — the
|
|
30990
|
+
* same tar `getRetrainExportUrl` serves (manifest first, one JPEG in
|
|
30991
|
+
* memory at a time, paced), written chunk by chunk into one HTTP request.
|
|
30992
|
+
* The bytes never cross this cap and never land on the hub's disk; the
|
|
30993
|
+
* answer is what was sent, with its sha256.
|
|
30994
|
+
*/
|
|
30995
|
+
writeRetrainArchive: method(external_exports.object({
|
|
30996
|
+
filter: RetrainExportFilterSchema,
|
|
30997
|
+
layout: RetrainExportLayoutSchema,
|
|
30998
|
+
target: RetrainArchiveTargetSchema
|
|
30999
|
+
}), RetrainArchiveResultSchema, {
|
|
31000
|
+
kind: "mutation",
|
|
31001
|
+
auth: "admin",
|
|
31002
|
+
timeoutMs: 60 * 6e4
|
|
31003
|
+
}),
|
|
31004
|
+
/** The counts a selection would freeze — class × camera × day/night,
|
|
31005
|
+
* completeness — without freezing anything. Index reads only. */
|
|
31006
|
+
previewRetrainDataset: method(external_exports.object({
|
|
31007
|
+
selection: RetrainDatasetSelectionSchema,
|
|
31008
|
+
completeOnly: external_exports.boolean().optional()
|
|
31009
|
+
}), RetrainDatasetStatsSchema, {
|
|
31010
|
+
kind: "query",
|
|
31011
|
+
auth: "admin"
|
|
31012
|
+
}),
|
|
31013
|
+
/**
|
|
31014
|
+
* Freeze a dataset version: the frames the selection yields (the same plan
|
|
31015
|
+
* the annotated export builds), the hash of what they teach, the export
|
|
31016
|
+
* parameters and the counts. Immutable — a different selection is a new
|
|
31017
|
+
* version. Export it with `getRetrainExportUrl({ datasetVersionId })`.
|
|
31018
|
+
*/
|
|
31019
|
+
createRetrainDatasetVersion: method(external_exports.object({
|
|
31020
|
+
name: external_exports.string().max(120),
|
|
31021
|
+
selection: RetrainDatasetSelectionSchema,
|
|
31022
|
+
layout: RetrainExportLayoutSchema,
|
|
31023
|
+
completeOnly: external_exports.boolean()
|
|
31024
|
+
}), CreateRetrainDatasetVersionResultSchema, {
|
|
31025
|
+
kind: "mutation",
|
|
31026
|
+
auth: "admin",
|
|
31027
|
+
timeoutMs: 12e4
|
|
31028
|
+
}),
|
|
31029
|
+
/** Every dataset version, newest first. */
|
|
31030
|
+
listRetrainDatasetVersions: method(external_exports.object({}), external_exports.array(RetrainDatasetVersionSchema).readonly(), {
|
|
31031
|
+
kind: "query",
|
|
31032
|
+
auth: "admin"
|
|
31033
|
+
}),
|
|
31034
|
+
/** Delete a version. Its frames stay in the dataset. */
|
|
31035
|
+
deleteRetrainDatasetVersion: method(external_exports.object({ id: external_exports.string() }), external_exports.object({ deleted: external_exports.boolean() }), {
|
|
31036
|
+
kind: "mutation",
|
|
31037
|
+
auth: "admin"
|
|
31038
|
+
}),
|
|
31039
|
+
/** Does the corpus still teach what the version froze? `missingFrames`
|
|
31040
|
+
* counts frames that left the dataset (or lost every box and tick). */
|
|
31041
|
+
verifyRetrainDatasetVersion: method(external_exports.object({ id: external_exports.string() }), external_exports.object({
|
|
31042
|
+
found: external_exports.boolean(),
|
|
31043
|
+
annotationHash: external_exports.string(),
|
|
31044
|
+
matches: external_exports.boolean(),
|
|
31045
|
+
missingFrames: external_exports.number().int()
|
|
31046
|
+
}), {
|
|
31047
|
+
kind: "query",
|
|
31048
|
+
auth: "admin",
|
|
31049
|
+
timeoutMs: 12e4
|
|
31050
|
+
}),
|
|
31051
|
+
/** The enabled, vision-capable LLM profiles, each saying whether a frame
|
|
31052
|
+
* sent to it leaves the house. */
|
|
31053
|
+
listRetrainAssistProfiles: method(external_exports.object({}), external_exports.array(RetrainAssistProfileSchema).readonly(), {
|
|
31054
|
+
kind: "query",
|
|
31055
|
+
auth: "admin"
|
|
31056
|
+
}),
|
|
31057
|
+
/**
|
|
31058
|
+
* Ask a vision LLM (the `llm` capability) about ONE copied frame: list the
|
|
31059
|
+
* objects of `classes` with boxes, and review the boxes already on the
|
|
31060
|
+
* canvas (sent by `ref`). Answers drafts (`source: 'llm'`) and reviews —
|
|
31061
|
+
* nothing is stored, nothing is accepted. A profile that sends the frame
|
|
31062
|
+
* outside the house is refused unless `allowCloud` says the operator
|
|
31063
|
+
* confirmed this run.
|
|
31064
|
+
*/
|
|
31065
|
+
proposeRetrainAnnotationsWithLlm: method(external_exports.object({
|
|
31066
|
+
deviceId: external_exports.number(),
|
|
31067
|
+
trackId: external_exports.string().optional(),
|
|
31068
|
+
frameId: external_exports.string(),
|
|
31069
|
+
profileId: external_exports.string(),
|
|
31070
|
+
classes: external_exports.array(RetrainMacroClassSchema).min(1),
|
|
31071
|
+
boxes: external_exports.array(external_exports.object({
|
|
31072
|
+
ref: external_exports.string(),
|
|
31073
|
+
bbox: RetrainBboxSchema,
|
|
31074
|
+
macroClass: RetrainMacroClassSchema,
|
|
31075
|
+
label: external_exports.string().optional()
|
|
31076
|
+
})).max(50),
|
|
31077
|
+
allowCloud: external_exports.boolean()
|
|
31078
|
+
}), RetrainLlmAssistResultSchema, {
|
|
31079
|
+
kind: "mutation",
|
|
31080
|
+
auth: "admin",
|
|
31081
|
+
timeoutMs: 18e4
|
|
31082
|
+
}),
|
|
31083
|
+
/**
|
|
31084
|
+
* Create a named collection — a set over the retrain corpus ("packages
|
|
31085
|
+
* porch night"). Names are unique case-insensitively and never empty;
|
|
31086
|
+
* both refusals are named.
|
|
31087
|
+
*/
|
|
31088
|
+
createRetrainCollection: method(external_exports.object({ name: external_exports.string().max(120) }), RetrainCollectionCreateResultSchema, {
|
|
31089
|
+
kind: "mutation",
|
|
31090
|
+
auth: "admin"
|
|
31091
|
+
}),
|
|
31092
|
+
/** Every collection, newest first, with its frame count. */
|
|
31093
|
+
listRetrainCollections: method(external_exports.object({}), external_exports.array(RetrainCollectionSchema).readonly(), {
|
|
31094
|
+
kind: "query",
|
|
31095
|
+
auth: "admin"
|
|
31096
|
+
}),
|
|
31097
|
+
renameRetrainCollection: method(external_exports.object({
|
|
31098
|
+
id: external_exports.string(),
|
|
31099
|
+
name: external_exports.string().max(120)
|
|
31100
|
+
}), RetrainCollectionRenameResultSchema, {
|
|
31101
|
+
kind: "mutation",
|
|
31102
|
+
auth: "admin"
|
|
31103
|
+
}),
|
|
31104
|
+
/**
|
|
31105
|
+
* Delete a collection. Its recording stills that no other collection
|
|
31106
|
+
* holds are deleted with their annotations (nothing else reaches them);
|
|
31107
|
+
* frames copied from tracks always stay in the dataset.
|
|
31108
|
+
*/
|
|
31109
|
+
deleteRetrainCollection: method(external_exports.object({ id: external_exports.string() }), external_exports.object({
|
|
31110
|
+
deleted: external_exports.boolean(),
|
|
31111
|
+
removedFrames: external_exports.number().int()
|
|
31112
|
+
}), {
|
|
31113
|
+
kind: "mutation",
|
|
31114
|
+
auth: "admin"
|
|
31115
|
+
}),
|
|
31116
|
+
/**
|
|
31117
|
+
* Add the frame at a recording instant to a collection — the frame the
|
|
31118
|
+
* model may have seen NOTHING in. The recorder re-decodes the native
|
|
31119
|
+
* frame at `epochMs`; the dataset copies it (trackless, durable). The same
|
|
31120
|
+
* moment twice is one copy. Every refusal is named.
|
|
31121
|
+
*/
|
|
31122
|
+
addRetrainFrameFromRecording: method(external_exports.object({
|
|
31123
|
+
collectionId: external_exports.string(),
|
|
31124
|
+
deviceId: external_exports.number(),
|
|
31125
|
+
epochMs: external_exports.number()
|
|
31126
|
+
}), AddRetrainFrameFromRecordingResultSchema, {
|
|
31127
|
+
kind: "mutation",
|
|
31128
|
+
auth: "admin",
|
|
31129
|
+
timeoutMs: 6e4
|
|
31130
|
+
}),
|
|
31131
|
+
/** Add frames already in the dataset to a collection. */
|
|
31132
|
+
addRetrainFramesToCollection: method(external_exports.object({
|
|
31133
|
+
collectionId: external_exports.string(),
|
|
31134
|
+
frameIds: external_exports.array(external_exports.string()).min(1).max(500)
|
|
31135
|
+
}), external_exports.object({
|
|
31136
|
+
added: external_exports.number().int(),
|
|
31137
|
+
alreadyMember: external_exports.number().int(),
|
|
31138
|
+
unknownFrameIds: external_exports.array(external_exports.string()).readonly()
|
|
31139
|
+
}), {
|
|
31140
|
+
kind: "mutation",
|
|
31141
|
+
auth: "admin"
|
|
31142
|
+
}),
|
|
31143
|
+
/** Remove a frame from a collection. A recording still left in no
|
|
31144
|
+
* collection is deleted with its annotations (`deletedFrame`). */
|
|
31145
|
+
removeRetrainFrameFromCollection: method(external_exports.object({
|
|
31146
|
+
collectionId: external_exports.string(),
|
|
31147
|
+
frameId: external_exports.string()
|
|
31148
|
+
}), external_exports.object({
|
|
31149
|
+
removed: external_exports.boolean(),
|
|
31150
|
+
deletedFrame: external_exports.boolean()
|
|
31151
|
+
}), {
|
|
31152
|
+
kind: "mutation",
|
|
31153
|
+
auth: "admin"
|
|
31154
|
+
}),
|
|
31155
|
+
/** The frames of a collection, with their pipeline boxes. */
|
|
31156
|
+
listRetrainCollectionFrames: method(external_exports.object({ collectionId: external_exports.string() }), external_exports.array(RetrainFrameSchema).readonly(), {
|
|
30575
31157
|
kind: "query",
|
|
30576
31158
|
auth: "admin"
|
|
30577
31159
|
}),
|
|
@@ -30738,6 +31320,30 @@ var pipelineAnalyticsCapability = {
|
|
|
30738
31320
|
}) }
|
|
30739
31321
|
}
|
|
30740
31322
|
};
|
|
31323
|
+
var SuppliedRootOutputSchema = external_exports.object({
|
|
31324
|
+
stepId: external_exports.string(),
|
|
31325
|
+
/** The root model that drew the boxes — stamped on the result. */
|
|
31326
|
+
modelId: external_exports.string(),
|
|
31327
|
+
detections: external_exports.array(external_exports.object({
|
|
31328
|
+
/** `[x1, y1, x2, y2]` in the pixels of the call's image. */
|
|
31329
|
+
bbox: external_exports.tuple([
|
|
31330
|
+
external_exports.number(),
|
|
31331
|
+
external_exports.number(),
|
|
31332
|
+
external_exports.number(),
|
|
31333
|
+
external_exports.number()
|
|
31334
|
+
]),
|
|
31335
|
+
score: external_exports.number(),
|
|
31336
|
+
/**
|
|
31337
|
+
* Five facial landmarks in the same pixels — a face the step's own
|
|
31338
|
+
* detector already re-found inside a root face box (D730), so its
|
|
31339
|
+
* embedder child aligns it exactly as it aligns any detected face.
|
|
31340
|
+
*/
|
|
31341
|
+
landmarks: external_exports.array(external_exports.object({
|
|
31342
|
+
x: external_exports.number(),
|
|
31343
|
+
y: external_exports.number()
|
|
31344
|
+
})).optional()
|
|
31345
|
+
})).min(1)
|
|
31346
|
+
});
|
|
30741
31347
|
var NativeCropRefSchema = external_exports.object({
|
|
30742
31348
|
/** Handle keying the retained native surface (node-pinned to its owner). */
|
|
30743
31349
|
handle: FrameHandleSchema,
|
|
@@ -30776,7 +31382,7 @@ var FrameRefSchema = external_exports.object({
|
|
|
30776
31382
|
timestamp: external_exports.number(),
|
|
30777
31383
|
capturedAt: external_exports.number().optional()
|
|
30778
31384
|
});
|
|
30779
|
-
var ModelFormatSchema$
|
|
31385
|
+
var ModelFormatSchema$2 = external_exports.enum([
|
|
30780
31386
|
"onnx",
|
|
30781
31387
|
"coreml",
|
|
30782
31388
|
"openvino",
|
|
@@ -30794,7 +31400,7 @@ var PipelineSlotSchema = external_exports.enum([
|
|
|
30794
31400
|
var PipelineEngineChoiceSchema = external_exports.object({
|
|
30795
31401
|
runtime: external_exports.literal("python"),
|
|
30796
31402
|
backend: external_exports.string(),
|
|
30797
|
-
format: ModelFormatSchema$
|
|
31403
|
+
format: ModelFormatSchema$2,
|
|
30798
31404
|
device: external_exports.string().optional()
|
|
30799
31405
|
});
|
|
30800
31406
|
var EffectiveTuningSchema = external_exports.object({
|
|
@@ -30828,32 +31434,15 @@ var PipelineDefaultStepSchema = external_exports.lazy(() => external_exports.obj
|
|
|
30828
31434
|
group: external_exports.string().optional(),
|
|
30829
31435
|
settings: external_exports.record(external_exports.string(), external_exports.unknown()).optional()
|
|
30830
31436
|
}));
|
|
30831
|
-
var PipelineTemplateStepSchema = external_exports.lazy(() => external_exports.object({
|
|
30832
|
-
addonId: external_exports.string(),
|
|
30833
|
-
enabled: external_exports.boolean(),
|
|
30834
|
-
modelId: external_exports.string(),
|
|
30835
|
-
children: external_exports.array(PipelineTemplateStepSchema).readonly(),
|
|
30836
|
-
settings: external_exports.record(external_exports.string(), external_exports.unknown()).optional()
|
|
30837
|
-
}));
|
|
30838
|
-
var PipelineTemplateSchema$1 = external_exports.object({
|
|
30839
|
-
id: external_exports.string(),
|
|
30840
|
-
name: external_exports.string(),
|
|
30841
|
-
createdAt: external_exports.string(),
|
|
30842
|
-
updatedAt: external_exports.string(),
|
|
30843
|
-
engine: PipelineEngineChoiceSchema,
|
|
30844
|
-
steps: external_exports.array(PipelineTemplateStepSchema).readonly()
|
|
30845
|
-
});
|
|
30846
31437
|
var PipelineModelOptionSchema = external_exports.object({
|
|
30847
31438
|
id: external_exports.string(),
|
|
30848
31439
|
name: external_exports.string(),
|
|
30849
|
-
formats: external_exports.record(external_exports.string(),
|
|
30850
|
-
downloaded: external_exports.boolean(),
|
|
30851
|
-
sizeMB: external_exports.number()
|
|
30852
|
-
})),
|
|
31440
|
+
formats: external_exports.record(external_exports.string(), PipelineModelFormatStatusSchema),
|
|
30853
31441
|
group: ModelVariantGroupSchema.optional(),
|
|
30854
31442
|
legacy: external_exports.boolean().optional(),
|
|
30855
31443
|
provider: ModelProviderIdSchema.optional(),
|
|
30856
|
-
defaultConfidence: external_exports.number().optional()
|
|
31444
|
+
defaultConfidence: external_exports.number().optional(),
|
|
31445
|
+
suppliesSteps: external_exports.array(RootStepSupplySchema).readonly().optional()
|
|
30857
31446
|
});
|
|
30858
31447
|
var ConfigFieldBridge = external_exports.custom();
|
|
30859
31448
|
var PipelineAddonSchemaSchema = external_exports.object({
|
|
@@ -31041,6 +31630,32 @@ var pipelineExecutorCapability = {
|
|
|
31041
31630
|
auth: "admin"
|
|
31042
31631
|
}),
|
|
31043
31632
|
/**
|
|
31633
|
+
* Auto tune (D745): the MODEL-BOUND thresholds (`bindsToModel` keys of
|
|
31634
|
+
* the object-detection root, and their binding keys) stored in THIS node's
|
|
31635
|
+
* per-camera detector settings — and, unless `dryRun`, remove them so the
|
|
31636
|
+
* running model's own defaults apply. Every other key of a camera's store
|
|
31637
|
+
* is kept. `nodeId` is the ROUTING key. `deviceIds` absent ⇒ every camera
|
|
31638
|
+
* with a store. A camera whose store could not be read is `refused`, never
|
|
31639
|
+
* reported as clean.
|
|
31640
|
+
*/
|
|
31641
|
+
clearModelBoundDeviceOverrides: method(external_exports.object({
|
|
31642
|
+
nodeId: external_exports.string(),
|
|
31643
|
+
deviceIds: external_exports.array(external_exports.number()).readonly().optional(),
|
|
31644
|
+
dryRun: external_exports.boolean()
|
|
31645
|
+
}), external_exports.object({
|
|
31646
|
+
entries: external_exports.array(external_exports.object({
|
|
31647
|
+
deviceId: external_exports.number(),
|
|
31648
|
+
keys: external_exports.array(external_exports.string()).readonly()
|
|
31649
|
+
})).readonly(),
|
|
31650
|
+
refused: external_exports.array(external_exports.object({
|
|
31651
|
+
deviceId: external_exports.number(),
|
|
31652
|
+
reason: external_exports.string()
|
|
31653
|
+
})).readonly()
|
|
31654
|
+
}), {
|
|
31655
|
+
kind: "mutation",
|
|
31656
|
+
auth: "admin"
|
|
31657
|
+
}),
|
|
31658
|
+
/**
|
|
31044
31659
|
* Which of THIS node's inference devices the executor currently refuses,
|
|
31045
31660
|
* and why. `nodeId` is the ROUTING key (stripped by the generated router).
|
|
31046
31661
|
*
|
|
@@ -31118,29 +31733,17 @@ var pipelineExecutorCapability = {
|
|
|
31118
31733
|
steps: external_exports.array(PipelineStepInputSchema),
|
|
31119
31734
|
deviceKey: external_exports.string().optional()
|
|
31120
31735
|
}), PipelineValidationResultSchema),
|
|
31121
|
-
listTemplates: method(external_exports.void(), external_exports.array(PipelineTemplateSchema$1).readonly()),
|
|
31122
|
-
saveTemplate: method(external_exports.object({
|
|
31123
|
-
name: external_exports.string(),
|
|
31124
|
-
steps: external_exports.array(PipelineTemplateStepSchema).readonly(),
|
|
31125
|
-
engine: PipelineEngineChoiceSchema
|
|
31126
|
-
}), PipelineTemplateSchema$1, { kind: "mutation" }),
|
|
31127
|
-
updateTemplate: method(external_exports.object({
|
|
31128
|
-
id: external_exports.string(),
|
|
31129
|
-
name: external_exports.string().optional(),
|
|
31130
|
-
steps: external_exports.array(PipelineTemplateStepSchema).readonly().optional()
|
|
31131
|
-
}), PipelineTemplateSchema$1, { kind: "mutation" }),
|
|
31132
|
-
deleteTemplate: method(external_exports.object({ id: external_exports.string() }), external_exports.void(), { kind: "mutation" }),
|
|
31133
31736
|
getCapabilities: method(external_exports.void(), InferenceCapabilitiesBridge),
|
|
31134
31737
|
getAddonModels: method(external_exports.object({ addonId: external_exports.string() }), ModelAvailabilityListBridge),
|
|
31135
31738
|
downloadModel: method(external_exports.object({
|
|
31136
31739
|
addonId: external_exports.string(),
|
|
31137
31740
|
modelId: external_exports.string(),
|
|
31138
|
-
format: ModelFormatSchema$
|
|
31741
|
+
format: ModelFormatSchema$2
|
|
31139
31742
|
}), DownloadModelResultSchema, { kind: "mutation" }),
|
|
31140
31743
|
deleteModel: method(external_exports.object({
|
|
31141
31744
|
addonId: external_exports.string(),
|
|
31142
31745
|
modelId: external_exports.string(),
|
|
31143
|
-
format: ModelFormatSchema$
|
|
31746
|
+
format: ModelFormatSchema$2
|
|
31144
31747
|
}), external_exports.object({ success: external_exports.literal(true) }), { kind: "mutation" }),
|
|
31145
31748
|
/**
|
|
31146
31749
|
* Stateless single-frame execution. Callers (runner, benchmark) pass
|
|
@@ -31235,7 +31838,16 @@ var pipelineExecutorCapability = {
|
|
|
31235
31838
|
* `device-not-servable`), and nothing reaches the camera's live
|
|
31236
31839
|
* trace stream. Absent ⇒ unchanged behaviour.
|
|
31237
31840
|
*/
|
|
31238
|
-
replay: external_exports.literal(true).optional()
|
|
31841
|
+
replay: external_exports.literal(true).optional(),
|
|
31842
|
+
/**
|
|
31843
|
+
* Root-supplied detections for the tree's ROOT step (D730). Set by
|
|
31844
|
+
* `runDetailSubtree` when the camera's root model supplies a crop-kind
|
|
31845
|
+
* step (a Frigate+ `license_plate` for `plate-detection`): the step is
|
|
31846
|
+
* NOT inferred, these boxes are its output, and its children (the plate
|
|
31847
|
+
* reader) run on them through their own crop policy. Boxes are in the
|
|
31848
|
+
* PIXELS of the image this call carries. Absent ⇒ the root step runs.
|
|
31849
|
+
*/
|
|
31850
|
+
suppliedRoot: SuppliedRootOutputSchema.optional()
|
|
31239
31851
|
}), PipelineRunResultBridge, { kind: "mutation" }),
|
|
31240
31852
|
/**
|
|
31241
31853
|
* Batched run — N raw frames packed into one cap call. The provider
|
|
@@ -31377,6 +31989,677 @@ var pipelineExecutorCapability = {
|
|
|
31377
31989
|
getDetectionConfigSchema: method(external_exports.void(), ConfigUISchemaNullableBridge)
|
|
31378
31990
|
}
|
|
31379
31991
|
};
|
|
31992
|
+
var ModelFormatSchema$1 = external_exports.enum(MODEL_FORMATS);
|
|
31993
|
+
var MIN_SESSIONS_PER_DEVICE_RANGE = {
|
|
31994
|
+
min: 1,
|
|
31995
|
+
max: 8
|
|
31996
|
+
};
|
|
31997
|
+
var HardwareClassIdSchema = external_exports.enum([
|
|
31998
|
+
"intel-core-ultra",
|
|
31999
|
+
"intel-n-series",
|
|
32000
|
+
"apple-m-base",
|
|
32001
|
+
"apple-m-pro",
|
|
32002
|
+
"unknown"
|
|
32003
|
+
]);
|
|
32004
|
+
var AcceleratorKindSchema = external_exports.enum([
|
|
32005
|
+
"intel-npu",
|
|
32006
|
+
"intel-igpu",
|
|
32007
|
+
"x86-cpu",
|
|
32008
|
+
"arm-cpu",
|
|
32009
|
+
"apple-ane",
|
|
32010
|
+
"coral"
|
|
32011
|
+
]);
|
|
32012
|
+
var RecommendationReasonSchema = external_exports.discriminatedUnion("kind", [
|
|
32013
|
+
external_exports.object({
|
|
32014
|
+
kind: external_exports.literal("capacity"),
|
|
32015
|
+
sessions: external_exports.number(),
|
|
32016
|
+
minSessions: external_exports.number()
|
|
32017
|
+
}),
|
|
32018
|
+
external_exports.object({
|
|
32019
|
+
kind: external_exports.literal("tie-faster"),
|
|
32020
|
+
over: external_exports.string(),
|
|
32021
|
+
recallDelta: external_exports.number()
|
|
32022
|
+
}),
|
|
32023
|
+
external_exports.object({
|
|
32024
|
+
kind: external_exports.literal("stepped-down"),
|
|
32025
|
+
from: external_exports.string(),
|
|
32026
|
+
to: external_exports.string(),
|
|
32027
|
+
limitedBy: external_exports.string()
|
|
32028
|
+
}),
|
|
32029
|
+
external_exports.object({
|
|
32030
|
+
kind: external_exports.literal("no-fit-lightest"),
|
|
32031
|
+
sessions: external_exports.number(),
|
|
32032
|
+
minSessions: external_exports.number()
|
|
32033
|
+
}),
|
|
32034
|
+
external_exports.object({
|
|
32035
|
+
kind: external_exports.literal("derived-latency"),
|
|
32036
|
+
modelId: external_exports.string()
|
|
32037
|
+
}),
|
|
32038
|
+
external_exports.object({ kind: external_exports.literal("cpu-device") }),
|
|
32039
|
+
external_exports.object({ kind: external_exports.literal("coral-untouched") }),
|
|
32040
|
+
external_exports.object({ kind: external_exports.literal("device-disabled") }),
|
|
32041
|
+
external_exports.object({ kind: external_exports.literal("device-unavailable") }),
|
|
32042
|
+
external_exports.object({ kind: external_exports.literal("node-offline") }),
|
|
32043
|
+
external_exports.object({ kind: external_exports.literal("no-hardware-facts") }),
|
|
32044
|
+
external_exports.object({
|
|
32045
|
+
kind: external_exports.literal("no-measured-data"),
|
|
32046
|
+
hardwareClass: HardwareClassIdSchema
|
|
32047
|
+
}),
|
|
32048
|
+
external_exports.object({
|
|
32049
|
+
kind: external_exports.literal("no-family-build"),
|
|
32050
|
+
format: ModelFormatSchema$1
|
|
32051
|
+
}),
|
|
32052
|
+
external_exports.object({
|
|
32053
|
+
kind: external_exports.literal("kept-custom-pin"),
|
|
32054
|
+
modelId: external_exports.string(),
|
|
32055
|
+
deviceKey: external_exports.string()
|
|
32056
|
+
})
|
|
32057
|
+
]);
|
|
32058
|
+
var KeptReasonSchema = external_exports.enum(["custom-pin"]);
|
|
32059
|
+
var LatencySourceSchema = external_exports.discriminatedUnion("kind", [external_exports.object({ kind: external_exports.literal("table") }), external_exports.object({
|
|
32060
|
+
kind: external_exports.literal("node-benchmark"),
|
|
32061
|
+
resultId: external_exports.string(),
|
|
32062
|
+
measuredAtMs: external_exports.number()
|
|
32063
|
+
})]);
|
|
32064
|
+
var DeviceModelChoiceSchema = external_exports.object({
|
|
32065
|
+
modelId: external_exports.string(),
|
|
32066
|
+
p50Ms: external_exports.number(),
|
|
32067
|
+
fps: external_exports.number(),
|
|
32068
|
+
measured: external_exports.boolean(),
|
|
32069
|
+
/** Absent on a plan from before D791 — read as the table. */
|
|
32070
|
+
source: LatencySourceSchema.optional(),
|
|
32071
|
+
/** Parallel sessions at the camera rate with the headroom kept free: ⌊fps × (1 − headroom) / camera fps⌋. */
|
|
32072
|
+
capacitySessions: external_exports.number(),
|
|
32073
|
+
personRecall: external_exports.number()
|
|
32074
|
+
});
|
|
32075
|
+
var DeviceRecommendationSchema = external_exports.object({
|
|
32076
|
+
deviceKey: external_exports.string(),
|
|
32077
|
+
accelerator: AcceleratorKindSchema.nullable(),
|
|
32078
|
+
enabled: external_exports.boolean(),
|
|
32079
|
+
available: external_exports.boolean(),
|
|
32080
|
+
chosen: DeviceModelChoiceSchema.nullable(),
|
|
32081
|
+
/** Present when the device is kept as is: Apply writes nothing on it. */
|
|
32082
|
+
kept: KeptReasonSchema.optional(),
|
|
32083
|
+
reasons: external_exports.array(RecommendationReasonSchema).readonly()
|
|
32084
|
+
});
|
|
32085
|
+
var NodeRecommendationSchema = external_exports.object({
|
|
32086
|
+
nodeId: external_exports.string(),
|
|
32087
|
+
reachable: external_exports.boolean(),
|
|
32088
|
+
hardwareClass: HardwareClassIdSchema.nullable(),
|
|
32089
|
+
cpuModel: external_exports.string().nullable(),
|
|
32090
|
+
skipped: external_exports.boolean(),
|
|
32091
|
+
acceleratorModelId: external_exports.string().nullable(),
|
|
32092
|
+
devices: external_exports.array(DeviceRecommendationSchema).readonly(),
|
|
32093
|
+
reasons: external_exports.array(RecommendationReasonSchema).readonly()
|
|
32094
|
+
});
|
|
32095
|
+
var ModelPinChangeSchema = external_exports.object({
|
|
32096
|
+
stepId: external_exports.string(),
|
|
32097
|
+
before: external_exports.string().nullable(),
|
|
32098
|
+
after: external_exports.string().nullable()
|
|
32099
|
+
});
|
|
32100
|
+
var NodeDeviceChangeSchema = external_exports.object({
|
|
32101
|
+
nodeId: external_exports.string(),
|
|
32102
|
+
deviceKey: external_exports.string(),
|
|
32103
|
+
madeExplicit: external_exports.boolean(),
|
|
32104
|
+
modelPins: external_exports.array(ModelPinChangeSchema).readonly(),
|
|
32105
|
+
thresholds: external_exports.array(external_exports.object({
|
|
32106
|
+
stepId: external_exports.string(),
|
|
32107
|
+
keys: external_exports.array(external_exports.string()).readonly()
|
|
32108
|
+
})).readonly()
|
|
32109
|
+
});
|
|
32110
|
+
var CameraOverrideClearSchema = external_exports.object({
|
|
32111
|
+
deviceId: external_exports.number(),
|
|
32112
|
+
source: external_exports.enum(["step-override", "wholesale"]),
|
|
32113
|
+
nodeId: external_exports.string(),
|
|
32114
|
+
deviceKey: external_exports.string().nullable(),
|
|
32115
|
+
stepId: external_exports.string(),
|
|
32116
|
+
modelIdBefore: external_exports.string().nullable(),
|
|
32117
|
+
keys: external_exports.array(external_exports.string()).readonly()
|
|
32118
|
+
});
|
|
32119
|
+
var DetectorStoreClearSchema = external_exports.object({
|
|
32120
|
+
deviceId: external_exports.number(),
|
|
32121
|
+
keys: external_exports.array(external_exports.string()).readonly()
|
|
32122
|
+
});
|
|
32123
|
+
var AutoTuneWarningSchema = external_exports.discriminatedUnion("kind", [
|
|
32124
|
+
external_exports.object({
|
|
32125
|
+
kind: external_exports.literal("detector-store-cluster-wide"),
|
|
32126
|
+
skippedNodes: external_exports.array(external_exports.string()).readonly()
|
|
32127
|
+
}),
|
|
32128
|
+
external_exports.object({
|
|
32129
|
+
kind: external_exports.literal("detector-store-unreadable"),
|
|
32130
|
+
error: external_exports.string()
|
|
32131
|
+
}),
|
|
32132
|
+
external_exports.object({
|
|
32133
|
+
kind: external_exports.literal("coral-enabled"),
|
|
32134
|
+
nodeId: external_exports.string(),
|
|
32135
|
+
deviceKey: external_exports.string()
|
|
32136
|
+
}),
|
|
32137
|
+
external_exports.object({
|
|
32138
|
+
kind: external_exports.literal("custom-pin-kept"),
|
|
32139
|
+
nodeId: external_exports.string(),
|
|
32140
|
+
deviceKey: external_exports.string().nullable(),
|
|
32141
|
+
deviceId: external_exports.number().nullable(),
|
|
32142
|
+
modelId: external_exports.string()
|
|
32143
|
+
}),
|
|
32144
|
+
external_exports.object({
|
|
32145
|
+
kind: external_exports.literal("custom-registry-unreadable"),
|
|
32146
|
+
error: external_exports.string()
|
|
32147
|
+
})
|
|
32148
|
+
]);
|
|
32149
|
+
var AutoTuneOptionsSchema = external_exports.object({
|
|
32150
|
+
/** Share of each accelerator's throughput kept free (0.3–0.5). */
|
|
32151
|
+
headroom: external_exports.number().min(0.3).max(0.5).default(0.4),
|
|
32152
|
+
/**
|
|
32153
|
+
* The least number of parallel sessions every device must sustain at the
|
|
32154
|
+
* camera rate with the headroom kept free (D755). The most accurate model
|
|
32155
|
+
* that reaches it wins.
|
|
32156
|
+
*/
|
|
32157
|
+
minSessionsPerDevice: external_exports.number().int().min(MIN_SESSIONS_PER_DEVICE_RANGE.min).max(MIN_SESSIONS_PER_DEVICE_RANGE.max).default(2)
|
|
32158
|
+
});
|
|
32159
|
+
var AutoTunePlanSchema = external_exports.object({
|
|
32160
|
+
/** Hash of everything the apply will write — the apply refuses a different one. */
|
|
32161
|
+
planHash: external_exports.string(),
|
|
32162
|
+
family: external_exports.literal("yolov9"),
|
|
32163
|
+
headroom: external_exports.number(),
|
|
32164
|
+
minSessionsPerDevice: external_exports.number(),
|
|
32165
|
+
/** The detection rate a session is counted at (the fastest camera running the pipeline root). */
|
|
32166
|
+
cameraFps: external_exports.number(),
|
|
32167
|
+
generatedAt: external_exports.number(),
|
|
32168
|
+
nodes: external_exports.array(NodeRecommendationSchema).readonly(),
|
|
32169
|
+
nodeChanges: external_exports.array(NodeDeviceChangeSchema).readonly(),
|
|
32170
|
+
cameraClears: external_exports.array(CameraOverrideClearSchema).readonly(),
|
|
32171
|
+
detectorStoreClears: external_exports.array(DetectorStoreClearSchema).readonly(),
|
|
32172
|
+
warnings: external_exports.array(AutoTuneWarningSchema).readonly()
|
|
32173
|
+
});
|
|
32174
|
+
var AutoTuneApplyInputSchema = external_exports.object({
|
|
32175
|
+
planHash: external_exports.string(),
|
|
32176
|
+
headroom: external_exports.number().min(0.3).max(0.5).default(0.4),
|
|
32177
|
+
minSessionsPerDevice: external_exports.number().int().min(MIN_SESSIONS_PER_DEVICE_RANGE.min).max(MIN_SESSIONS_PER_DEVICE_RANGE.max).default(2)
|
|
32178
|
+
});
|
|
32179
|
+
var AutoTunePhaseResultSchema = external_exports.object({
|
|
32180
|
+
phase: external_exports.enum([
|
|
32181
|
+
"download",
|
|
32182
|
+
"camera-overrides",
|
|
32183
|
+
"detector-thresholds",
|
|
32184
|
+
"node-models",
|
|
32185
|
+
"redispatch"
|
|
32186
|
+
]),
|
|
32187
|
+
ok: external_exports.boolean(),
|
|
32188
|
+
detail: external_exports.string()
|
|
32189
|
+
});
|
|
32190
|
+
var AutoTuneApplyResultSchema = external_exports.discriminatedUnion("kind", [
|
|
32191
|
+
external_exports.object({
|
|
32192
|
+
kind: external_exports.literal("applied"),
|
|
32193
|
+
planHash: external_exports.string(),
|
|
32194
|
+
phases: external_exports.array(AutoTunePhaseResultSchema).readonly()
|
|
32195
|
+
}),
|
|
32196
|
+
external_exports.object({
|
|
32197
|
+
kind: external_exports.literal("aborted"),
|
|
32198
|
+
phases: external_exports.array(AutoTunePhaseResultSchema).readonly()
|
|
32199
|
+
}),
|
|
32200
|
+
external_exports.object({
|
|
32201
|
+
kind: external_exports.literal("stale"),
|
|
32202
|
+
plan: AutoTunePlanSchema
|
|
32203
|
+
}),
|
|
32204
|
+
external_exports.object({
|
|
32205
|
+
kind: external_exports.literal("refused"),
|
|
32206
|
+
reason: external_exports.enum(["apply-in-progress"])
|
|
32207
|
+
})
|
|
32208
|
+
]);
|
|
32209
|
+
var SessionPlacementPolicySchema = external_exports.enum(["least-loaded", "share"]);
|
|
32210
|
+
var LoadBalancingSharesInputSchema = external_exports.object({
|
|
32211
|
+
/** nodeId → share (> 0). A node left out keeps its weight. */
|
|
32212
|
+
nodes: external_exports.record(external_exports.string(), external_exports.number().positive()).default({}),
|
|
32213
|
+
/** nodeId → deviceKey → share (> 0). A device left out keeps its weight. */
|
|
32214
|
+
devices: external_exports.record(external_exports.string(), external_exports.record(external_exports.string(), external_exports.number().positive())).default({})
|
|
32215
|
+
});
|
|
32216
|
+
var PlacementStatsInputSchema = external_exports.object({
|
|
32217
|
+
/** Window the observed shares are averaged over (default 1 h, max 24 h). */
|
|
32218
|
+
windowMs: external_exports.number().int().min(6e4).max(1440 * 60 * 1e3).default(3600 * 1e3)
|
|
32219
|
+
});
|
|
32220
|
+
var PlacementDeviceStatsSchema = external_exports.object({
|
|
32221
|
+
deviceKey: external_exports.string(),
|
|
32222
|
+
/** Sessions running on this device now. */
|
|
32223
|
+
sessionsNow: external_exports.number(),
|
|
32224
|
+
/** Sessions started on this device inside the window. */
|
|
32225
|
+
sessionsStarted: external_exports.number(),
|
|
32226
|
+
/** Time-weighted share of the node's parallel sessions over the window (0–1); null = no session ran. */
|
|
32227
|
+
observedShare: external_exports.number().nullable()
|
|
32228
|
+
});
|
|
32229
|
+
var PlacementNodeStatsSchema = external_exports.object({
|
|
32230
|
+
nodeId: external_exports.string(),
|
|
32231
|
+
sessionsNow: external_exports.number(),
|
|
32232
|
+
sessionsStarted: external_exports.number(),
|
|
32233
|
+
/** Time-weighted share of the cluster's parallel sessions over the window (0–1); null = none ran. */
|
|
32234
|
+
observedShare: external_exports.number().nullable(),
|
|
32235
|
+
/** Most sessions this node ran at once inside the window. */
|
|
32236
|
+
peakSessions: external_exports.number(),
|
|
32237
|
+
/** Sessions a share election handed elsewhere because this node was full or drowning. */
|
|
32238
|
+
yieldsAway: external_exports.number(),
|
|
32239
|
+
devices: external_exports.array(PlacementDeviceStatsSchema).readonly()
|
|
32240
|
+
});
|
|
32241
|
+
var StaleDevicePinSchema = external_exports.object({
|
|
32242
|
+
deviceId: external_exports.number(),
|
|
32243
|
+
deviceKey: external_exports.string(),
|
|
32244
|
+
/** `disabled` — the key exists on some node but is not enabled anywhere; `absent` — no node has it. */
|
|
32245
|
+
reason: external_exports.enum(["disabled", "absent"])
|
|
32246
|
+
});
|
|
32247
|
+
var PlacementStatsSchema = external_exports.object({
|
|
32248
|
+
policy: SessionPlacementPolicySchema,
|
|
32249
|
+
windowMs: external_exports.number(),
|
|
32250
|
+
/** How much of the window was actually observed (the hub keeps it in memory). */
|
|
32251
|
+
observedForMs: external_exports.number(),
|
|
32252
|
+
sessionsNow: external_exports.number(),
|
|
32253
|
+
/** Most parallel sessions across the cluster inside the window. */
|
|
32254
|
+
clusterPeakSessions: external_exports.number(),
|
|
32255
|
+
nodes: external_exports.array(PlacementNodeStatsSchema).readonly(),
|
|
32256
|
+
stalePins: external_exports.array(StaleDevicePinSchema).readonly()
|
|
32257
|
+
});
|
|
32258
|
+
var CapacitySourceSchema = external_exports.enum(["hardware", "benchmark"]);
|
|
32259
|
+
var CapacityFallbackSchema = external_exports.enum(["no-benchmark-results", "partial-benchmark-results"]);
|
|
32260
|
+
var SuggestSharesInputSchema = external_exports.object({
|
|
32261
|
+
headroom: external_exports.number().min(0.3).max(0.5).default(0.4),
|
|
32262
|
+
/** Default `hardware`. */
|
|
32263
|
+
source: CapacitySourceSchema.default("hardware")
|
|
32264
|
+
});
|
|
32265
|
+
var SuggestedDeviceShareSchema = external_exports.object({
|
|
32266
|
+
deviceKey: external_exports.string(),
|
|
32267
|
+
/** Share of the node (0–100, rounded). */
|
|
32268
|
+
share: external_exports.number(),
|
|
32269
|
+
modelId: external_exports.string().nullable(),
|
|
32270
|
+
/** Inferences per second at that model, from the measured table; null when sized by a benchmark. */
|
|
32271
|
+
fps: external_exports.number().nullable(),
|
|
32272
|
+
/** False for a table cell derived from another chip; true for a measured cell or a benchmark. */
|
|
32273
|
+
measured: external_exports.boolean(),
|
|
32274
|
+
/**
|
|
32275
|
+
* Advisory session cap: ⌊fps × (1 − headroom) / camera fps⌋ from the table,
|
|
32276
|
+
* or the benchmark's measured max sessions. Never enforced.
|
|
32277
|
+
*/
|
|
32278
|
+
suggestedMaxSessions: external_exports.number().nullable()
|
|
32279
|
+
});
|
|
32280
|
+
var SuggestedNodeShareSchema = external_exports.object({
|
|
32281
|
+
nodeId: external_exports.string(),
|
|
32282
|
+
/** Share of the cluster (0–100, rounded); null = node skipped (offline, unknown hardware). */
|
|
32283
|
+
share: external_exports.number().nullable(),
|
|
32284
|
+
/** Parallel sessions the node sustains at the suggested models with the headroom kept free. */
|
|
32285
|
+
capacitySessions: external_exports.number(),
|
|
32286
|
+
devices: external_exports.array(SuggestedDeviceShareSchema).readonly(),
|
|
32287
|
+
skippedReason: external_exports.string().nullable(),
|
|
32288
|
+
/** What this node's capacity was read from; null when the node is skipped. */
|
|
32289
|
+
capacitySource: CapacitySourceSchema.nullable(),
|
|
32290
|
+
/** Set when the `benchmark` source was asked for and this node used `hardware`. */
|
|
32291
|
+
capacityFallback: CapacityFallbackSchema.nullable()
|
|
32292
|
+
});
|
|
32293
|
+
var SuggestSharesResultSchema = external_exports.object({
|
|
32294
|
+
headroom: external_exports.number(),
|
|
32295
|
+
/** The source asked for; each node says what it actually used. */
|
|
32296
|
+
source: CapacitySourceSchema,
|
|
32297
|
+
/** Camera detection rate the capacity is counted in (the fastest camera's fps). */
|
|
32298
|
+
cameraFps: external_exports.number(),
|
|
32299
|
+
/** The Auto tune capacity floor the models were picked at. */
|
|
32300
|
+
minSessionsPerDevice: external_exports.number(),
|
|
32301
|
+
nodes: external_exports.array(SuggestedNodeShareSchema).readonly()
|
|
32302
|
+
});
|
|
32303
|
+
var ShareSourceSchema = external_exports.enum([
|
|
32304
|
+
"hardware",
|
|
32305
|
+
"benchmark",
|
|
32306
|
+
"manual"
|
|
32307
|
+
]);
|
|
32308
|
+
var SetShareSourceInputSchema = external_exports.object({ source: ShareSourceSchema });
|
|
32309
|
+
var ShareWeightsSchema = external_exports.object({
|
|
32310
|
+
nodes: external_exports.record(external_exports.string(), external_exports.number()),
|
|
32311
|
+
devices: external_exports.record(external_exports.string(), external_exports.record(external_exports.string(), external_exports.number()))
|
|
32312
|
+
});
|
|
32313
|
+
var EffectiveDeviceShareSchema = external_exports.object({
|
|
32314
|
+
deviceKey: external_exports.string(),
|
|
32315
|
+
/** Can take sessions now (enabled, available, can run the root). */
|
|
32316
|
+
eligible: external_exports.boolean(),
|
|
32317
|
+
/** The share the source assigns, as a percentage of the node's devices. */
|
|
32318
|
+
configuredPct: external_exports.number(),
|
|
32319
|
+
/** The share actually used, after an ineligible device's share went to the others. */
|
|
32320
|
+
effectivePct: external_exports.number()
|
|
32321
|
+
});
|
|
32322
|
+
var EffectiveNodeShareSchema = external_exports.object({
|
|
32323
|
+
nodeId: external_exports.string(),
|
|
32324
|
+
eligible: external_exports.boolean(),
|
|
32325
|
+
configuredPct: external_exports.number(),
|
|
32326
|
+
effectivePct: external_exports.number(),
|
|
32327
|
+
/** Automatic sources: what this node's share was computed from; null under `manual` or before the first answer. */
|
|
32328
|
+
capacitySource: CapacitySourceSchema.nullable(),
|
|
32329
|
+
/** Automatic `benchmark`: why this node used `hardware` instead. */
|
|
32330
|
+
capacityFallback: CapacityFallbackSchema.nullable(),
|
|
32331
|
+
devices: external_exports.array(EffectiveDeviceShareSchema).readonly()
|
|
32332
|
+
});
|
|
32333
|
+
var EffectiveSharesSchema = external_exports.object({
|
|
32334
|
+
source: ShareSourceSchema,
|
|
32335
|
+
policy: SessionPlacementPolicySchema,
|
|
32336
|
+
/** An automatic source with no computed answer yet: the stored sliders are used meanwhile. */
|
|
32337
|
+
autoPending: external_exports.boolean(),
|
|
32338
|
+
/** When the automatic shares were last computed (ms epoch); null = never. */
|
|
32339
|
+
computedAt: external_exports.number().nullable(),
|
|
32340
|
+
/** What made the system recompute them last. */
|
|
32341
|
+
trigger: external_exports.string().nullable(),
|
|
32342
|
+
nodes: external_exports.array(EffectiveNodeShareSchema).readonly(),
|
|
32343
|
+
/** The relative weights the election reads (before eligibility). */
|
|
32344
|
+
nodeWeights: external_exports.record(external_exports.string(), external_exports.number()),
|
|
32345
|
+
deviceWeights: external_exports.record(external_exports.string(), external_exports.record(external_exports.string(), external_exports.number()))
|
|
32346
|
+
});
|
|
32347
|
+
var NODE_BENCHMARK_DEFAULTS = {
|
|
32348
|
+
fpsPerStream: 10,
|
|
32349
|
+
budgetMinutes: 45,
|
|
32350
|
+
minBudgetMinutes: 10,
|
|
32351
|
+
maxBudgetMinutes: 120,
|
|
32352
|
+
/** A result older than this no longer beats the table. */
|
|
32353
|
+
staleAfterDays: 30,
|
|
32354
|
+
/** Warm-in per ramp step (not accounted). */
|
|
32355
|
+
settleSec: 5,
|
|
32356
|
+
/** Accounted window per ramp step. */
|
|
32357
|
+
measureSec: 20,
|
|
32358
|
+
/** Longest the drain may take before the run is refused. */
|
|
32359
|
+
drainTimeoutSec: 120,
|
|
32360
|
+
/** Candidate models per device in one run. */
|
|
32361
|
+
maxModelsPerDevice: 6
|
|
32362
|
+
};
|
|
32363
|
+
var NodeBenchmarkPhaseSchema = external_exports.enum(["device", "pipeline"]);
|
|
32364
|
+
var NodeBenchmarkDevicePlanSchema = external_exports.object({
|
|
32365
|
+
/** `<backend>:<device>` — `openvino:npu`, `coreml:all`, `cpu`. */
|
|
32366
|
+
deviceKey: external_exports.string().min(1),
|
|
32367
|
+
/**
|
|
32368
|
+
* Root detector candidates for the `device` measurement, in the order
|
|
32369
|
+
* measured. The FIRST is the one the `pipeline` measurement runs.
|
|
32370
|
+
*/
|
|
32371
|
+
modelIds: external_exports.array(external_exports.string().min(1)).min(1).max(NODE_BENCHMARK_DEFAULTS.maxModelsPerDevice)
|
|
32372
|
+
});
|
|
32373
|
+
var NodeBenchmarkPlanSchema = external_exports.object({
|
|
32374
|
+
nodeId: external_exports.string().min(1),
|
|
32375
|
+
devices: external_exports.array(NodeBenchmarkDevicePlanSchema).min(1),
|
|
32376
|
+
/** Which measurements run. At least one. */
|
|
32377
|
+
phases: external_exports.array(NodeBenchmarkPhaseSchema).min(1).default(["device", "pipeline"]),
|
|
32378
|
+
/**
|
|
32379
|
+
* Detail steps (catalog step ids under the root: faces, plates,
|
|
32380
|
+
* classifiers, CLIP…) the `pipeline` measurement enables. The root
|
|
32381
|
+
* detector always runs.
|
|
32382
|
+
*/
|
|
32383
|
+
steps: external_exports.array(external_exports.string().min(1)).default([]),
|
|
32384
|
+
/** Offered rate of one stream / session. */
|
|
32385
|
+
fpsPerStream: external_exports.number().int().min(1).max(30).default(NODE_BENCHMARK_DEFAULTS.fpsPerStream),
|
|
32386
|
+
/** Hard deadline: the mode ends and the cluster is restored when it passes. */
|
|
32387
|
+
budgetMinutes: external_exports.number().int().min(NODE_BENCHMARK_DEFAULTS.minBudgetMinutes).max(NODE_BENCHMARK_DEFAULTS.maxBudgetMinutes).default(NODE_BENCHMARK_DEFAULTS.budgetMinutes),
|
|
32388
|
+
/** Keep the models the run downloaded (default: delete what was not installed before). */
|
|
32389
|
+
keepDownloadedModels: external_exports.boolean().default(false),
|
|
32390
|
+
/** Start although the other nodes' capacity does not cover the sessions running now. */
|
|
32391
|
+
acceptInsufficientHeadroom: external_exports.boolean().default(false)
|
|
32392
|
+
});
|
|
32393
|
+
var NodeBenchmarkRefusalKindSchema = external_exports.enum([
|
|
32394
|
+
"benchmark-active",
|
|
32395
|
+
"node-offline",
|
|
32396
|
+
"unknown-device",
|
|
32397
|
+
"no-phase",
|
|
32398
|
+
"insufficient-headroom"
|
|
32399
|
+
]);
|
|
32400
|
+
var NodeBenchmarkRefusalSchema = external_exports.object({
|
|
32401
|
+
kind: NodeBenchmarkRefusalKindSchema,
|
|
32402
|
+
detail: external_exports.string(),
|
|
32403
|
+
overridable: external_exports.boolean()
|
|
32404
|
+
});
|
|
32405
|
+
var NodeBenchmarkMovingCameraSchema = external_exports.object({
|
|
32406
|
+
deviceId: external_exports.number(),
|
|
32407
|
+
/** Placed on the node now (a standing attach or a running session). */
|
|
32408
|
+
placedOnNode: external_exports.boolean(),
|
|
32409
|
+
/** A node pin naming this node, ignored for the run. */
|
|
32410
|
+
pinnedToNode: external_exports.boolean()
|
|
32411
|
+
});
|
|
32412
|
+
var NodeBenchmarkStayingCameraSchema = external_exports.object({
|
|
32413
|
+
deviceId: external_exports.number(),
|
|
32414
|
+
reason: external_exports.literal("only-frame-source")
|
|
32415
|
+
});
|
|
32416
|
+
var NodeBenchmarkPreflightSchema = external_exports.object({
|
|
32417
|
+
nodeId: external_exports.string(),
|
|
32418
|
+
online: external_exports.boolean(),
|
|
32419
|
+
moving: external_exports.array(NodeBenchmarkMovingCameraSchema).readonly(),
|
|
32420
|
+
/** Keep running on the node during the run; the result is flagged contaminated. */
|
|
32421
|
+
staying: external_exports.array(NodeBenchmarkStayingCameraSchema).readonly(),
|
|
32422
|
+
estimatedDurationMs: external_exports.number(),
|
|
32423
|
+
/** The run ends and the cluster is restored at the latest after this long. */
|
|
32424
|
+
budgetMs: external_exports.number(),
|
|
32425
|
+
phases: external_exports.array(NodeBenchmarkPhaseSchema).readonly(),
|
|
32426
|
+
steps: external_exports.array(external_exports.string()).readonly(),
|
|
32427
|
+
devices: external_exports.array(NodeBenchmarkDevicePlanSchema).readonly(),
|
|
32428
|
+
/** Parallel sessions the cluster runs now, and what the other nodes can carry. */
|
|
32429
|
+
headroom: external_exports.object({
|
|
32430
|
+
sessionsNow: external_exports.number(),
|
|
32431
|
+
otherNodesCapacitySessions: external_exports.number().nullable()
|
|
32432
|
+
}),
|
|
32433
|
+
refusals: external_exports.array(NodeBenchmarkRefusalSchema).readonly(),
|
|
32434
|
+
canStart: external_exports.boolean()
|
|
32435
|
+
});
|
|
32436
|
+
var NodeBenchProgressSchema = external_exports.object({
|
|
32437
|
+
phase: external_exports.enum([
|
|
32438
|
+
"preparing",
|
|
32439
|
+
"device",
|
|
32440
|
+
"pipeline",
|
|
32441
|
+
"cleanup"
|
|
32442
|
+
]),
|
|
32443
|
+
deviceKey: external_exports.string().nullable(),
|
|
32444
|
+
modelId: external_exports.string().nullable(),
|
|
32445
|
+
/** Streams (device) or sessions (pipeline) of the step running now. */
|
|
32446
|
+
load: external_exports.number().nullable(),
|
|
32447
|
+
cellsDone: external_exports.number(),
|
|
32448
|
+
cellsTotal: external_exports.number(),
|
|
32449
|
+
message: external_exports.string()
|
|
32450
|
+
});
|
|
32451
|
+
var NodeBenchLimitSchema = external_exports.enum([
|
|
32452
|
+
"p95",
|
|
32453
|
+
"drops",
|
|
32454
|
+
"errors",
|
|
32455
|
+
"stall",
|
|
32456
|
+
"cpu",
|
|
32457
|
+
"ram",
|
|
32458
|
+
"none"
|
|
32459
|
+
]);
|
|
32460
|
+
var NodeBenchRampStepSchema = external_exports.object({
|
|
32461
|
+
load: external_exports.number(),
|
|
32462
|
+
pass: external_exports.boolean(),
|
|
32463
|
+
p95Ms: external_exports.number(),
|
|
32464
|
+
dropRatio: external_exports.number(),
|
|
32465
|
+
/** Completed frames per second over the accounted window. */
|
|
32466
|
+
fps: external_exports.number(),
|
|
32467
|
+
cpuPct: external_exports.number().nullable(),
|
|
32468
|
+
ramFreePct: external_exports.number().nullable(),
|
|
32469
|
+
failReasons: external_exports.array(external_exports.string()).readonly()
|
|
32470
|
+
});
|
|
32471
|
+
var NodeBenchDeviceCellSchema = external_exports.object({
|
|
32472
|
+
phase: external_exports.literal("device"),
|
|
32473
|
+
deviceKey: external_exports.string(),
|
|
32474
|
+
modelId: external_exports.string(),
|
|
32475
|
+
/** Single-stream latency (the K = 1 step). */
|
|
32476
|
+
p50Ms: external_exports.number(),
|
|
32477
|
+
p95Ms: external_exports.number(),
|
|
32478
|
+
p99Ms: external_exports.number(),
|
|
32479
|
+
/** Frames per second sustained at the last passing step. */
|
|
32480
|
+
fps: external_exports.number(),
|
|
32481
|
+
/** Streams at the camera rate the device carried inside the frame interval; 0 = not even one. */
|
|
32482
|
+
kMax: external_exports.number(),
|
|
32483
|
+
limitedBy: NodeBenchLimitSchema,
|
|
32484
|
+
/** First call (model load + warm-up). */
|
|
32485
|
+
warmupMs: external_exports.number(),
|
|
32486
|
+
ramp: external_exports.array(NodeBenchRampStepSchema).readonly()
|
|
32487
|
+
});
|
|
32488
|
+
var NodeBenchPipelineCellSchema = external_exports.object({
|
|
32489
|
+
phase: external_exports.literal("pipeline"),
|
|
32490
|
+
deviceKey: external_exports.string(),
|
|
32491
|
+
modelId: external_exports.string(),
|
|
32492
|
+
steps: external_exports.array(external_exports.string()).readonly(),
|
|
32493
|
+
/** Parallel sessions at the camera rate the node carried; 0 = not even one. */
|
|
32494
|
+
maxSessions: external_exports.number(),
|
|
32495
|
+
limitedBy: NodeBenchLimitSchema,
|
|
32496
|
+
/** Detail steps that produced at least one result on the clip — a step that never fired measured nothing. */
|
|
32497
|
+
stepsFired: external_exports.array(external_exports.string()).readonly(),
|
|
32498
|
+
warmupMs: external_exports.number(),
|
|
32499
|
+
ramp: external_exports.array(NodeBenchRampStepSchema).readonly()
|
|
32500
|
+
});
|
|
32501
|
+
var NodeBenchCellSchema = external_exports.discriminatedUnion("phase", [NodeBenchDeviceCellSchema, NodeBenchPipelineCellSchema]);
|
|
32502
|
+
var NodeBenchFingerprintSchema = external_exports.object({
|
|
32503
|
+
pipelineVersion: external_exports.string().nullable(),
|
|
32504
|
+
cpuModel: external_exports.string().nullable(),
|
|
32505
|
+
ramGb: external_exports.number().nullable(),
|
|
32506
|
+
os: external_exports.string().nullable(),
|
|
32507
|
+
/** Per device: the pool the cells ran on (runtime + tuning). */
|
|
32508
|
+
pools: external_exports.record(external_exports.string(), external_exports.object({
|
|
32509
|
+
runtime: external_exports.string(),
|
|
32510
|
+
numWorkers: external_exports.number(),
|
|
32511
|
+
concurrency: external_exports.number(),
|
|
32512
|
+
batchMode: external_exports.string()
|
|
32513
|
+
})).default({})
|
|
32514
|
+
});
|
|
32515
|
+
var NodeBenchClipSchema = external_exports.object({
|
|
32516
|
+
/** `camstack-bench-v1` or `reference-images` (the fallback when the clip is not reachable). */
|
|
32517
|
+
id: external_exports.string(),
|
|
32518
|
+
revision: external_exports.string().nullable(),
|
|
32519
|
+
frames: external_exports.number(),
|
|
32520
|
+
width: external_exports.number(),
|
|
32521
|
+
height: external_exports.number()
|
|
32522
|
+
});
|
|
32523
|
+
var NodeBenchRunnerInputSchema = external_exports.object({
|
|
32524
|
+
runId: external_exports.string().min(1),
|
|
32525
|
+
devices: external_exports.array(NodeBenchmarkDevicePlanSchema).min(1),
|
|
32526
|
+
phases: external_exports.array(NodeBenchmarkPhaseSchema).min(1),
|
|
32527
|
+
/** The full detail step tree root for the `pipeline` measurement is built on the node from these ids. */
|
|
32528
|
+
steps: external_exports.array(external_exports.string()).default([]),
|
|
32529
|
+
fpsPerStream: external_exports.number().int().min(1).max(30),
|
|
32530
|
+
/** The runner stops on its own past this instant, whatever the hub does. */
|
|
32531
|
+
deadlineAtMs: external_exports.number(),
|
|
32532
|
+
settleSec: external_exports.number().min(0).max(60).default(NODE_BENCHMARK_DEFAULTS.settleSec),
|
|
32533
|
+
measureSec: external_exports.number().min(2).max(300).default(NODE_BENCHMARK_DEFAULTS.measureSec),
|
|
32534
|
+
keepDownloadedModels: external_exports.boolean().default(false)
|
|
32535
|
+
});
|
|
32536
|
+
var NodeBenchRunnerStateSchema = external_exports.enum([
|
|
32537
|
+
"running",
|
|
32538
|
+
"done",
|
|
32539
|
+
"failed",
|
|
32540
|
+
"aborted"
|
|
32541
|
+
]);
|
|
32542
|
+
var NodeBenchRunnerStatusSchema = external_exports.object({
|
|
32543
|
+
runId: external_exports.string(),
|
|
32544
|
+
nodeId: external_exports.string(),
|
|
32545
|
+
state: NodeBenchRunnerStateSchema,
|
|
32546
|
+
progress: NodeBenchProgressSchema.nullable(),
|
|
32547
|
+
/** Every finished cell so far — a run stopped half way keeps what it measured. */
|
|
32548
|
+
cells: external_exports.array(NodeBenchCellSchema).readonly(),
|
|
32549
|
+
fingerprint: NodeBenchFingerprintSchema.nullable(),
|
|
32550
|
+
clip: NodeBenchClipSchema.nullable(),
|
|
32551
|
+
/** Cameras seen running on the node during the run (they share its pools). */
|
|
32552
|
+
activeCameraIds: external_exports.array(external_exports.number()).readonly(),
|
|
32553
|
+
/** Models the run downloaded and then deleted (not installed before). */
|
|
32554
|
+
deletedModels: external_exports.array(external_exports.string()).readonly(),
|
|
32555
|
+
error: external_exports.string().nullable(),
|
|
32556
|
+
startedAtMs: external_exports.number(),
|
|
32557
|
+
finishedAtMs: external_exports.number().nullable()
|
|
32558
|
+
});
|
|
32559
|
+
var NodeBenchmarkStateSchema = external_exports.enum([
|
|
32560
|
+
"draining",
|
|
32561
|
+
"measuring",
|
|
32562
|
+
"restoring",
|
|
32563
|
+
"done",
|
|
32564
|
+
"failed",
|
|
32565
|
+
"aborted"
|
|
32566
|
+
]);
|
|
32567
|
+
var NodeBenchmarkEndReasonSchema = external_exports.enum([
|
|
32568
|
+
"completed",
|
|
32569
|
+
"operator-abort",
|
|
32570
|
+
"deadline",
|
|
32571
|
+
"node-lost",
|
|
32572
|
+
"runner-lost",
|
|
32573
|
+
"hub-restart",
|
|
32574
|
+
"drain-timeout",
|
|
32575
|
+
"failed"
|
|
32576
|
+
]);
|
|
32577
|
+
var NodeBenchmarkRunSchema = external_exports.object({
|
|
32578
|
+
runId: external_exports.string(),
|
|
32579
|
+
nodeId: external_exports.string(),
|
|
32580
|
+
state: NodeBenchmarkStateSchema,
|
|
32581
|
+
plan: NodeBenchmarkPlanSchema,
|
|
32582
|
+
startedAtMs: external_exports.number(),
|
|
32583
|
+
deadlineAtMs: external_exports.number(),
|
|
32584
|
+
finishedAtMs: external_exports.number().nullable(),
|
|
32585
|
+
endReason: NodeBenchmarkEndReasonSchema.nullable(),
|
|
32586
|
+
error: external_exports.string().nullable(),
|
|
32587
|
+
/** Cameras moved off the node for the run. */
|
|
32588
|
+
moved: external_exports.array(external_exports.number()).readonly(),
|
|
32589
|
+
/** Cameras that stayed (their only frame source is the node). */
|
|
32590
|
+
staying: external_exports.array(external_exports.number()).readonly(),
|
|
32591
|
+
/** Something else ran on the node's pools during the run. */
|
|
32592
|
+
contaminated: external_exports.boolean(),
|
|
32593
|
+
progress: NodeBenchProgressSchema.nullable(),
|
|
32594
|
+
resultIds: external_exports.array(external_exports.string()).readonly()
|
|
32595
|
+
});
|
|
32596
|
+
var NodeBenchmarkStatusSchema = external_exports.object({
|
|
32597
|
+
/** The node the cluster is in benchmark mode for; null = none. */
|
|
32598
|
+
modeNodeId: external_exports.string().nullable(),
|
|
32599
|
+
run: NodeBenchmarkRunSchema.nullable()
|
|
32600
|
+
});
|
|
32601
|
+
var NodeBenchmarkResultSchema = external_exports.object({
|
|
32602
|
+
id: external_exports.string(),
|
|
32603
|
+
runId: external_exports.string(),
|
|
32604
|
+
nodeId: external_exports.string(),
|
|
32605
|
+
cell: NodeBenchCellSchema,
|
|
32606
|
+
fpsPerStream: external_exports.number(),
|
|
32607
|
+
fingerprint: NodeBenchFingerprintSchema.nullable(),
|
|
32608
|
+
clip: NodeBenchClipSchema.nullable(),
|
|
32609
|
+
/** Other work shared the node's pools (a camera that could not move, or the hub's own duties). */
|
|
32610
|
+
contaminated: external_exports.boolean(),
|
|
32611
|
+
stayingCameras: external_exports.array(external_exports.number()).readonly(),
|
|
32612
|
+
/** The run ended early; the cell itself completed. */
|
|
32613
|
+
partialRun: external_exports.boolean(),
|
|
32614
|
+
measuredAtMs: external_exports.number()
|
|
32615
|
+
});
|
|
32616
|
+
var ListNodeBenchmarkResultsInputSchema = external_exports.object({
|
|
32617
|
+
nodeId: external_exports.string().optional(),
|
|
32618
|
+
deviceKey: external_exports.string().optional()
|
|
32619
|
+
});
|
|
32620
|
+
var NodeBenchmarkResultViewSchema = NodeBenchmarkResultSchema.extend({
|
|
32621
|
+
/** `fresh` beats the table; `stale` falls back to it; `superseded` = a newer row covers the same cell. */
|
|
32622
|
+
standing: external_exports.enum([
|
|
32623
|
+
"fresh",
|
|
32624
|
+
"stale",
|
|
32625
|
+
"superseded"
|
|
32626
|
+
]),
|
|
32627
|
+
staleWhy: external_exports.enum([
|
|
32628
|
+
"age",
|
|
32629
|
+
"runtime",
|
|
32630
|
+
"pool-tuning"
|
|
32631
|
+
]).nullable()
|
|
32632
|
+
});
|
|
32633
|
+
var NodeBenchmarkManifestSchema = external_exports.object({
|
|
32634
|
+
runId: external_exports.string(),
|
|
32635
|
+
nodeId: external_exports.string(),
|
|
32636
|
+
startedAtMs: external_exports.number(),
|
|
32637
|
+
deadlineAtMs: external_exports.number(),
|
|
32638
|
+
plan: NodeBenchmarkPlanSchema,
|
|
32639
|
+
moved: external_exports.array(external_exports.number()).readonly(),
|
|
32640
|
+
staying: external_exports.array(external_exports.number()).readonly()
|
|
32641
|
+
});
|
|
32642
|
+
var NodeBenchmarkCandidatesSchema = external_exports.object({
|
|
32643
|
+
nodeId: external_exports.string(),
|
|
32644
|
+
reachable: external_exports.boolean(),
|
|
32645
|
+
devices: external_exports.array(external_exports.object({
|
|
32646
|
+
deviceKey: external_exports.string(),
|
|
32647
|
+
enabled: external_exports.boolean(),
|
|
32648
|
+
available: external_exports.boolean(),
|
|
32649
|
+
/** Ordered: what Auto tune would pick first, then the rest of the family by accuracy. */
|
|
32650
|
+
suggested: external_exports.array(external_exports.string()).readonly(),
|
|
32651
|
+
/** Every root detector the device has a build for. */
|
|
32652
|
+
all: external_exports.array(external_exports.string()).readonly(),
|
|
32653
|
+
/** The model the device runs now, when pinned. */
|
|
32654
|
+
currentModelId: external_exports.string().nullable()
|
|
32655
|
+
})).readonly(),
|
|
32656
|
+
/** Detail steps the node's catalog offers under the root (for the `pipeline` measurement). */
|
|
32657
|
+
steps: external_exports.array(external_exports.object({
|
|
32658
|
+
id: external_exports.string(),
|
|
32659
|
+
name: external_exports.string(),
|
|
32660
|
+
slot: external_exports.string()
|
|
32661
|
+
})).readonly()
|
|
32662
|
+
});
|
|
31380
32663
|
var OrchestratorMetricsSchema = external_exports.object({
|
|
31381
32664
|
activeCameras: external_exports.number(),
|
|
31382
32665
|
throttledCameras: external_exports.number(),
|
|
@@ -32188,14 +33471,15 @@ var RunnerLocalLoadSchema = external_exports.object({
|
|
|
32188
33471
|
* Per-inference-device live load (multi-device C4). One entry per deviceKey
|
|
32189
33472
|
* this runner currently has attached cameras on, so the orchestrator's second
|
|
32190
33473
|
* `balance()` pass (over a node's devices) weights on real per-pool session
|
|
32191
|
-
* counts. Empty on single-device / pre-multi-device runners.
|
|
32192
|
-
* per
|
|
33474
|
+
* counts. Empty on single-device / pre-multi-device runners. There is no
|
|
33475
|
+
* per-device queue depth: the inference pool's backlog has no accessor, and
|
|
33476
|
+
* a field that always read 0 was removed rather than shown as a measurement
|
|
33477
|
+
* (D762).
|
|
32193
33478
|
*/
|
|
32194
33479
|
devices: external_exports.array(external_exports.object({
|
|
32195
33480
|
deviceKey: external_exports.string(),
|
|
32196
33481
|
backend: external_exports.string(),
|
|
32197
|
-
attachedCameras: external_exports.number()
|
|
32198
|
-
queueDepthTotal: external_exports.number()
|
|
33482
|
+
attachedCameras: external_exports.number()
|
|
32199
33483
|
})).default([]),
|
|
32200
33484
|
/** Hardware capability flags reported by this node. */
|
|
32201
33485
|
hardware: external_exports.object({
|
|
@@ -32417,7 +33701,22 @@ var pipelineRunnerCapability = {
|
|
|
32417
33701
|
*/
|
|
32418
33702
|
cropJpeg: external_exports.string().optional(),
|
|
32419
33703
|
parent: DetailParentSchema,
|
|
32420
|
-
steps: external_exports.array(external_exports.string()).optional()
|
|
33704
|
+
steps: external_exports.array(external_exports.string()).optional(),
|
|
33705
|
+
/**
|
|
33706
|
+
* The camera's root model already drew this step's boxes (D730): a
|
|
33707
|
+
* `license_plate` inside the parent vehicle. The named step is NOT
|
|
33708
|
+
* inferred — these FRAME-space boxes are its output — and its
|
|
33709
|
+
* requested children (the plate reader) run on them. Absent ⇒ every
|
|
33710
|
+
* requested step infers as before.
|
|
33711
|
+
*/
|
|
33712
|
+
supplied: external_exports.object({
|
|
33713
|
+
stepId: external_exports.string(),
|
|
33714
|
+
modelId: external_exports.string(),
|
|
33715
|
+
boxes: external_exports.array(external_exports.object({
|
|
33716
|
+
bbox: NativeCropBboxSchema,
|
|
33717
|
+
score: external_exports.number()
|
|
33718
|
+
})).min(1)
|
|
33719
|
+
}).optional()
|
|
32421
33720
|
}), external_exports.object({ details: external_exports.array(DetailResultSchema) }).nullable(), { kind: "mutation" }),
|
|
32422
33721
|
/**
|
|
32423
33722
|
* Run ONE enrichment step against caller-supplied pixels, with NO camera
|
|
@@ -32548,7 +33847,30 @@ var pipelineRunnerCapability = {
|
|
|
32548
33847
|
releaseParkedTrackFrames: method(external_exports.object({
|
|
32549
33848
|
deviceId: external_exports.number(),
|
|
32550
33849
|
trackId: external_exports.string()
|
|
32551
|
-
}), external_exports.object({ released: external_exports.number().int().nonnegative() }), { kind: "mutation" })
|
|
33850
|
+
}), external_exports.object({ released: external_exports.number().int().nonnegative() }), { kind: "mutation" }),
|
|
33851
|
+
/**
|
|
33852
|
+
* Start measuring THIS node for the orchestrator's node benchmark: the
|
|
33853
|
+
* bench clip decoded once into RAM, each device × candidate detector on an
|
|
33854
|
+
* open-loop ramp (`device`), then the chosen pipeline with the requested
|
|
33855
|
+
* detail steps (`pipeline`). Everything runs in-process with the executor
|
|
33856
|
+
* — no frame crosses a node (D9) — and writes nothing: no track, event,
|
|
33857
|
+
* media or notification. Reached by `nodePin(nodeId)`. Answers at once;
|
|
33858
|
+
* one run per node; the run stops itself at `deadlineAtMs`.
|
|
33859
|
+
*/
|
|
33860
|
+
startNodeBench: method(NodeBenchRunnerInputSchema, external_exports.object({
|
|
33861
|
+
accepted: external_exports.literal(true),
|
|
33862
|
+
runId: external_exports.string()
|
|
33863
|
+
}), {
|
|
33864
|
+
kind: "mutation",
|
|
33865
|
+
auth: "admin"
|
|
33866
|
+
}),
|
|
33867
|
+
/** The run's progress and every finished cell; null when this runner does not know `runId`. */
|
|
33868
|
+
getNodeBenchStatus: method(external_exports.object({ runId: external_exports.string() }), NodeBenchRunnerStatusSchema.nullable(), { auth: "admin" }),
|
|
33869
|
+
/** Stop the run; what it finished is kept. */
|
|
33870
|
+
abortNodeBench: method(external_exports.object({ runId: external_exports.string() }), external_exports.object({ aborted: external_exports.boolean() }), {
|
|
33871
|
+
kind: "mutation",
|
|
33872
|
+
auth: "admin"
|
|
33873
|
+
})
|
|
32552
33874
|
}
|
|
32553
33875
|
};
|
|
32554
33876
|
var CameraPipelineConfigSchema = external_exports.object({
|
|
@@ -32561,14 +33883,6 @@ var CameraPipelineConfigSchema = external_exports.object({
|
|
|
32561
33883
|
settings: external_exports.record(external_exports.string(), external_exports.unknown()).readonly().optional()
|
|
32562
33884
|
}).nullable().optional()
|
|
32563
33885
|
});
|
|
32564
|
-
var PipelineTemplateSchema = external_exports.object({
|
|
32565
|
-
id: external_exports.string(),
|
|
32566
|
-
name: external_exports.string(),
|
|
32567
|
-
description: external_exports.string().optional(),
|
|
32568
|
-
config: CameraPipelineConfigSchema,
|
|
32569
|
-
createdAt: external_exports.string(),
|
|
32570
|
-
updatedAt: external_exports.string()
|
|
32571
|
-
});
|
|
32572
33886
|
var DeviceStepConfigSchema = external_exports.object({
|
|
32573
33887
|
modelId: external_exports.string().optional(),
|
|
32574
33888
|
settings: external_exports.record(external_exports.string(), external_exports.unknown()).optional(),
|
|
@@ -32642,9 +33956,10 @@ var CameraStepOverridePatchSchema = external_exports.object({
|
|
|
32642
33956
|
modelId: external_exports.string().optional(),
|
|
32643
33957
|
settings: external_exports.record(external_exports.string(), external_exports.unknown()).readonly().optional()
|
|
32644
33958
|
});
|
|
33959
|
+
var CameraStepSettingsSchema = external_exports.record(external_exports.string(), external_exports.record(external_exports.string(), external_exports.unknown()).readonly());
|
|
32645
33960
|
var CameraPipelineSettingsSchema = external_exports.object({
|
|
32646
|
-
pinnedAgentNodeId: external_exports.string().optional(),
|
|
32647
33961
|
stepToggles: external_exports.record(external_exports.string(), external_exports.boolean()).optional(),
|
|
33962
|
+
stepSettings: CameraStepSettingsSchema.optional(),
|
|
32648
33963
|
stepOverridesByDevice: external_exports.record(external_exports.string(), external_exports.record(external_exports.string(), external_exports.record(external_exports.string(), CameraStepOverridePatchSchema))).optional(),
|
|
32649
33964
|
pipelineByAgent: external_exports.record(external_exports.string(), CameraPipelineForAgentSchema).optional()
|
|
32650
33965
|
});
|
|
@@ -32731,26 +34046,21 @@ var CameraBrokerProfileSchema = external_exports.object({
|
|
|
32731
34046
|
width: external_exports.number(),
|
|
32732
34047
|
height: external_exports.number(),
|
|
32733
34048
|
subscribers: external_exports.number(),
|
|
32734
|
-
|
|
32735
|
-
|
|
34049
|
+
/**
|
|
34050
|
+
* Encoded packets/s the broker receives from the camera. null when the
|
|
34051
|
+
* broker's stats read failed — unknown, never 0 (a 0 here reads as a stall).
|
|
34052
|
+
* There is no output rate: decoding runs in the session decode workers, not
|
|
34053
|
+
* in the broker, so the broker's own decoded-frame rate is 0 on every live
|
|
34054
|
+
* camera and is not served (D758).
|
|
34055
|
+
*/
|
|
34056
|
+
inFps: external_exports.number().nullable()
|
|
32736
34057
|
});
|
|
32737
34058
|
var CameraBrokerStatusSchema = external_exports.object({
|
|
32738
34059
|
profiles: external_exports.array(CameraBrokerProfileSchema).readonly(),
|
|
32739
34060
|
webrtcSessions: external_exports.number(),
|
|
32740
34061
|
rtspRestream: external_exports.boolean()
|
|
32741
34062
|
});
|
|
32742
|
-
var
|
|
32743
|
-
framesWritten: external_exports.number(),
|
|
32744
|
-
getFrameHits: external_exports.number(),
|
|
32745
|
-
getFrameMisses: external_exports.number(),
|
|
32746
|
-
budgetMb: external_exports.number()
|
|
32747
|
-
});
|
|
32748
|
-
var CameraDecoderStatusSchema = external_exports.object({
|
|
32749
|
-
nodeId: external_exports.string(),
|
|
32750
|
-
formats: external_exports.array(external_exports.string()).readonly(),
|
|
32751
|
-
sessionCount: external_exports.number(),
|
|
32752
|
-
shm: CameraDecoderShmSchema
|
|
32753
|
-
});
|
|
34063
|
+
var CameraDecoderStatusSchema = external_exports.object({ nodeId: external_exports.string() });
|
|
32754
34064
|
var CameraMotionStatusSchema = external_exports.object({
|
|
32755
34065
|
enabled: external_exports.boolean(),
|
|
32756
34066
|
fps: external_exports.number()
|
|
@@ -33210,18 +34520,6 @@ var pipelineOrchestratorCapability = {
|
|
|
33210
34520
|
auth: "admin"
|
|
33211
34521
|
}),
|
|
33212
34522
|
/**
|
|
33213
|
-
* Set a node's detection WEIGHT (relative share for the quota balancer).
|
|
33214
|
-
* `null` clears it (back to the implicit weight 1). Unpinned cameras
|
|
33215
|
-
* distribute proportionally to weight; `maxCameras` still clamps on top.
|
|
33216
|
-
*/
|
|
33217
|
-
setAgentDetectWeight: method(external_exports.object({
|
|
33218
|
-
agentNodeId: external_exports.string(),
|
|
33219
|
-
detectWeight: external_exports.number().positive().nullable()
|
|
33220
|
-
}), external_exports.object({ success: external_exports.literal(true) }), {
|
|
33221
|
-
kind: "mutation",
|
|
33222
|
-
auth: "admin"
|
|
33223
|
-
}),
|
|
33224
|
-
/**
|
|
33225
34523
|
* Set one node's placement CAPABILITIES — the per-node record that
|
|
33226
34524
|
* replaced the four flat orchestrator lists (`enabledNodes`,
|
|
33227
34525
|
* `enabledDecoderNodes`, `enabledAudioNodes`, `remoteSourcingNodes`).
|
|
@@ -33340,6 +34638,121 @@ var pipelineOrchestratorCapability = {
|
|
|
33340
34638
|
kind: "mutation",
|
|
33341
34639
|
auth: "admin"
|
|
33342
34640
|
}),
|
|
34641
|
+
/**
|
|
34642
|
+
* Auto tune (D745, D755) — DRY RUN. Recommends ONE detector family
|
|
34643
|
+
* (YOLOv9) for the whole cluster from each node's static hardware class
|
|
34644
|
+
* and the measured latency table: per device, the most accurate model
|
|
34645
|
+
* that sustains at least `minSessionsPerDevice` parallel sessions at the
|
|
34646
|
+
* camera rate with the headroom kept free (no load input), and lists every write
|
|
34647
|
+
* the apply would make: the node model pins set, the enrichment pins and
|
|
34648
|
+
* model-bound thresholds removed (node level and per camera), and the
|
|
34649
|
+
* per-camera detector thresholds cleared. Writes nothing. Step
|
|
34650
|
+
* enablement, device enablement, pins, recording, notifications, zones and
|
|
34651
|
+
* rules are never part of it. `planHash` names exactly this diff.
|
|
34652
|
+
*/
|
|
34653
|
+
planAutoTune: method(AutoTuneOptionsSchema, AutoTunePlanSchema, { auth: "admin" }),
|
|
34654
|
+
/**
|
|
34655
|
+
* Auto tune (D745) — APPLY the plan the operator confirmed. Recomputes
|
|
34656
|
+
* the plan and refuses (`stale`, with the fresh plan) when its hash is not
|
|
34657
|
+
* `planHash`, so what is written is exactly the confirmed diff. Offline
|
|
34658
|
+
* nodes are skipped; there is no undo.
|
|
34659
|
+
*/
|
|
34660
|
+
applyAutoTune: method(AutoTuneApplyInputSchema, AutoTuneApplyResultSchema, {
|
|
34661
|
+
kind: "mutation",
|
|
34662
|
+
auth: "admin"
|
|
34663
|
+
}),
|
|
34664
|
+
/**
|
|
34665
|
+
* Load balancing (D748) — write node shares (`detectWeight`) and per-node
|
|
34666
|
+
* device shares (inference-device `weight`) in ONE atomic read-modify-write
|
|
34667
|
+
* of the agent settings — the only writer of node shares (the per-node
|
|
34668
|
+
* `setAgentDetectWeight` it replaced raced its siblings, one RMW each).
|
|
34669
|
+
* A node or device left out keeps its weight. Never changes the
|
|
34670
|
+
* `sessionPlacement` policy.
|
|
34671
|
+
*/
|
|
34672
|
+
setLoadBalancingShares: method(LoadBalancingSharesInputSchema, external_exports.object({ success: external_exports.literal(true) }), {
|
|
34673
|
+
kind: "mutation",
|
|
34674
|
+
auth: "admin"
|
|
34675
|
+
}),
|
|
34676
|
+
/**
|
|
34677
|
+
* Load balancing (D748) — what placement actually did: per node and
|
|
34678
|
+
* device, sessions now, sessions started and the time-weighted share of
|
|
34679
|
+
* PARALLEL sessions over `windowMs`; the cluster's parallel peak; yields
|
|
34680
|
+
* a share election made; and every device pin the session path cannot
|
|
34681
|
+
* honour. In memory on the hub — a restart starts a new window.
|
|
34682
|
+
*/
|
|
34683
|
+
getPlacementStats: method(PlacementStatsInputSchema, PlacementStatsSchema, { auth: "admin" }),
|
|
34684
|
+
/**
|
|
34685
|
+
* Load balancing (D748, D755) — shares proportional to each node's
|
|
34686
|
+
* capacity in parallel sessions: from the latency table at the models
|
|
34687
|
+
* Auto tune picks (`hardware`), or from node benchmark results
|
|
34688
|
+
* (`benchmark`, each node without results falling back to `hardware` and
|
|
34689
|
+
* saying so). The automatic shares are exactly this answer. Per device,
|
|
34690
|
+
* an ADVISORY session cap. Writes nothing.
|
|
34691
|
+
*/
|
|
34692
|
+
suggestShares: method(SuggestSharesInputSchema, SuggestSharesResultSchema, { auth: "admin" }),
|
|
34693
|
+
/**
|
|
34694
|
+
* Load balancing (D750) — the shares placement reads now: the source
|
|
34695
|
+
* (automatic capacity shares or the operator's sliders), each node's and
|
|
34696
|
+
* device's configured share, and the effective share after a node or
|
|
34697
|
+
* device that cannot take sessions gave its share to the others.
|
|
34698
|
+
*/
|
|
34699
|
+
getEffectiveShares: method(external_exports.void(), EffectiveSharesSchema, { auth: "admin" }),
|
|
34700
|
+
/**
|
|
34701
|
+
* Load balancing (D750, D755) — switch the share source: `hardware`
|
|
34702
|
+
* (automatic, from static capacity), `benchmark` (automatic, from node
|
|
34703
|
+
* benchmark results) or `manual`. Going manual seeds the sliders with the
|
|
34704
|
+
* current automatic shares (one atomic write), so nothing jumps; going
|
|
34705
|
+
* to an automatic source recomputes at once.
|
|
34706
|
+
*/
|
|
34707
|
+
setShareSource: method(SetShareSourceInputSchema, external_exports.object({ success: external_exports.literal(true) }), {
|
|
34708
|
+
kind: "mutation",
|
|
34709
|
+
auth: "admin"
|
|
34710
|
+
}),
|
|
34711
|
+
/**
|
|
34712
|
+
* Node benchmark — what a run of this plan would do, without doing it:
|
|
34713
|
+
* the cameras that leave the node, those that cannot (the node is their
|
|
34714
|
+
* only frame source; they stay and flag the run), the estimated duration
|
|
34715
|
+
* and every reason it may not start. The confirmation shows this.
|
|
34716
|
+
*/
|
|
34717
|
+
getNodeBenchmarkPreflight: method(NodeBenchmarkPlanSchema, NodeBenchmarkPreflightSchema, { auth: "admin" }),
|
|
34718
|
+
/**
|
|
34719
|
+
* Node benchmark — start ONE run (cluster-wide lock). The orchestrator
|
|
34720
|
+
* persists a restore manifest, enters benchmark mode for the node (out of
|
|
34721
|
+
* placement, its camera pins ignored, nothing rewritten), drains it, drives
|
|
34722
|
+
* the node's own runner, then restores — always, including after an
|
|
34723
|
+
* abort, a lost node or a hub restart. Answers at once; poll
|
|
34724
|
+
* `getNodeBenchmarkStatus`. Refused runs carry the preflight.
|
|
34725
|
+
*/
|
|
34726
|
+
startNodeBenchmark: method(NodeBenchmarkPlanSchema, external_exports.discriminatedUnion("kind", [external_exports.object({
|
|
34727
|
+
kind: external_exports.literal("started"),
|
|
34728
|
+
runId: external_exports.string()
|
|
34729
|
+
}), external_exports.object({
|
|
34730
|
+
kind: external_exports.literal("refused"),
|
|
34731
|
+
preflight: NodeBenchmarkPreflightSchema
|
|
34732
|
+
})]), {
|
|
34733
|
+
kind: "mutation",
|
|
34734
|
+
auth: "admin"
|
|
34735
|
+
}),
|
|
34736
|
+
/** Node benchmark — the active run (or the last one) and the node in benchmark mode. */
|
|
34737
|
+
getNodeBenchmarkStatus: method(external_exports.void(), NodeBenchmarkStatusSchema, { auth: "admin" }),
|
|
34738
|
+
/** Node benchmark — stop the active run; the cluster is restored as it was. */
|
|
34739
|
+
abortNodeBenchmark: method(external_exports.object({ runId: external_exports.string() }), external_exports.object({ aborted: external_exports.boolean() }), {
|
|
34740
|
+
kind: "mutation",
|
|
34741
|
+
auth: "admin"
|
|
34742
|
+
}),
|
|
34743
|
+
/**
|
|
34744
|
+
* Node benchmark — root detector candidates per device (what Auto tune
|
|
34745
|
+
* would pick first, then the family) and the detail steps the node's
|
|
34746
|
+
* catalog offers, for the plan editor.
|
|
34747
|
+
*/
|
|
34748
|
+
getNodeBenchmarkCandidates: method(external_exports.object({ nodeId: external_exports.string() }), NodeBenchmarkCandidatesSchema, { auth: "admin" }),
|
|
34749
|
+
/** Node benchmark — stored results, newest first, each with its standing today. */
|
|
34750
|
+
listNodeBenchmarkResults: method(ListNodeBenchmarkResultsInputSchema, external_exports.array(NodeBenchmarkResultViewSchema).readonly(), { auth: "admin" }),
|
|
34751
|
+
/** Node benchmark — delete one result; Auto tune and the shares stop reading it. */
|
|
34752
|
+
deleteNodeBenchmarkResult: method(external_exports.object({ id: external_exports.string() }), external_exports.object({ deleted: external_exports.boolean() }), {
|
|
34753
|
+
kind: "mutation",
|
|
34754
|
+
auth: "admin"
|
|
34755
|
+
}),
|
|
33343
34756
|
/** Read one camera's settings. Null when never touched (inherits agent defaults fully). */
|
|
33344
34757
|
getCameraSettings: method(external_exports.object({ deviceId: external_exports.number() }), CameraPipelineSettingsSchema.nullable()),
|
|
33345
34758
|
/** Set or clear the 3-state toggle for one (camera, addonId). Pass `enabled: null` to clear and revert to agent default. */
|
|
@@ -33369,6 +34782,22 @@ var pipelineOrchestratorCapability = {
|
|
|
33369
34782
|
kind: "mutation",
|
|
33370
34783
|
auth: "admin"
|
|
33371
34784
|
}),
|
|
34785
|
+
/**
|
|
34786
|
+
* Write or clear one step's CAMERA-WIDE settings (D754) — the fields this
|
|
34787
|
+
* camera overrides on every accelerator it runs on. `settings` is the
|
|
34788
|
+
* whole field-level bag for that step (only the overridden keys; a
|
|
34789
|
+
* model-bound field travels with its binding key); `null` or `{}` clears
|
|
34790
|
+
* it. Merged at dispatch between the node base and the per-(node,device)
|
|
34791
|
+
* override, key by key.
|
|
34792
|
+
*/
|
|
34793
|
+
setCameraStepSettings: method(external_exports.object({
|
|
34794
|
+
deviceId: external_exports.number(),
|
|
34795
|
+
addonId: external_exports.string(),
|
|
34796
|
+
settings: external_exports.record(external_exports.string(), external_exports.unknown()).nullable()
|
|
34797
|
+
}), external_exports.object({ success: external_exports.literal(true) }), {
|
|
34798
|
+
kind: "mutation",
|
|
34799
|
+
auth: "admin"
|
|
34800
|
+
}),
|
|
33372
34801
|
/** Write or clear the wholesale per-agent pipeline override. Pass `pipeline: null` to drop the override. */
|
|
33373
34802
|
setCameraPipelineForAgent: method(external_exports.object({
|
|
33374
34803
|
deviceId: external_exports.number(),
|
|
@@ -33484,33 +34913,7 @@ var pipelineOrchestratorCapability = {
|
|
|
33484
34913
|
auth: "admin"
|
|
33485
34914
|
}),
|
|
33486
34915
|
/** Snapshot of the in-flight or last disk-wins fleet reconcile. */
|
|
33487
|
-
getReconcileFromDiskStatus: method(external_exports.void(), DiskReconcileJobSchema, { auth: "admin" })
|
|
33488
|
-
/** List every template the operator has saved. */
|
|
33489
|
-
listTemplates: method(external_exports.void(), external_exports.array(PipelineTemplateSchema).readonly()),
|
|
33490
|
-
/** Create a new named preset from a given CameraPipelineConfig. */
|
|
33491
|
-
saveTemplate: method(external_exports.object({
|
|
33492
|
-
name: external_exports.string(),
|
|
33493
|
-
description: external_exports.string().optional(),
|
|
33494
|
-
config: CameraPipelineConfigSchema
|
|
33495
|
-
}), PipelineTemplateSchema, {
|
|
33496
|
-
kind: "mutation",
|
|
33497
|
-
auth: "admin"
|
|
33498
|
-
}),
|
|
33499
|
-
/** Partial update of a template. Any omitted field is preserved. */
|
|
33500
|
-
updateTemplate: method(external_exports.object({
|
|
33501
|
-
id: external_exports.string(),
|
|
33502
|
-
name: external_exports.string().optional(),
|
|
33503
|
-
description: external_exports.string().optional(),
|
|
33504
|
-
config: CameraPipelineConfigSchema.optional()
|
|
33505
|
-
}), PipelineTemplateSchema, {
|
|
33506
|
-
kind: "mutation",
|
|
33507
|
-
auth: "admin"
|
|
33508
|
-
}),
|
|
33509
|
-
/** Remove a template. Camera configs that were seeded from it keep a copy. */
|
|
33510
|
-
deleteTemplate: method(external_exports.object({ id: external_exports.string() }), external_exports.object({ success: external_exports.literal(true) }), {
|
|
33511
|
-
kind: "mutation",
|
|
33512
|
-
auth: "admin"
|
|
33513
|
-
})
|
|
34916
|
+
getReconcileFromDiskStatus: method(external_exports.void(), DiskReconcileJobSchema, { auth: "admin" })
|
|
33514
34917
|
}
|
|
33515
34918
|
};
|
|
33516
34919
|
var LEGACY_ICON = {
|
|
@@ -34095,7 +35498,19 @@ var SsoBridgeClaimsSchema = external_exports.object({
|
|
|
34095
35498
|
* editing a descriptor must not retroactively extend or shorten a link the
|
|
34096
35499
|
* operator already consented to.
|
|
34097
35500
|
*/
|
|
34098
|
-
refreshTtl: external_exports.union([external_exports.number().int().positive(), external_exports.literal("never")]).optional()
|
|
35501
|
+
refreshTtl: external_exports.union([external_exports.number().int().positive(), external_exports.literal("never")]).optional(),
|
|
35502
|
+
/**
|
|
35503
|
+
* Opaque handle of a hub-side LINK intent (D782). Set by an OIDC callback
|
|
35504
|
+
* that was started from a signed-in user's "Link" button: the finish then
|
|
35505
|
+
* links this identity to the intent's user instead of signing anyone in.
|
|
35506
|
+
* The handle carries no user id — the hub resolves it, single-use.
|
|
35507
|
+
*/
|
|
35508
|
+
linkIntent: external_exports.string().optional(),
|
|
35509
|
+
/**
|
|
35510
|
+
* Verified `iss` of the id_token behind an OIDC login bridge (D782). A
|
|
35511
|
+
* subject is unique only per issuer, so a link is bound to it.
|
|
35512
|
+
*/
|
|
35513
|
+
issuer: external_exports.string().optional()
|
|
34099
35514
|
});
|
|
34100
35515
|
var ssoBridgeCapability = {
|
|
34101
35516
|
name: "sso-bridge",
|
|
@@ -35820,8 +37235,6 @@ var WebrtcStreamChoiceSchema = external_exports.object({
|
|
|
35820
37235
|
]).nullable(),
|
|
35821
37236
|
/** Input FPS from the camera (null for adaptive). */
|
|
35822
37237
|
inputFps: external_exports.number().nullable(),
|
|
35823
|
-
/** Decoded FPS (null for adaptive). */
|
|
35824
|
-
decodeFps: external_exports.number().nullable(),
|
|
35825
37238
|
/** Bitrate in kbps (null for adaptive). */
|
|
35826
37239
|
bitrateKbps: external_exports.number().nullable()
|
|
35827
37240
|
});
|
|
@@ -36122,7 +37535,22 @@ var webrtcSessionCapability = {
|
|
|
36122
37535
|
* field their hints were silently stripped by the schema and the
|
|
36123
37536
|
* adaptive ladder started blind on the client's display size.
|
|
36124
37537
|
*/
|
|
36125
|
-
hints: webrtcClientHintsSchema.optional()
|
|
37538
|
+
hints: webrtcClientHintsSchema.optional(),
|
|
37539
|
+
/**
|
|
37540
|
+
* Talk-back (D771): relay the PEER's audio to the device's speaker
|
|
37541
|
+
* through the `intercom` cap's push-talk triple. When `true` and the
|
|
37542
|
+
* offer lets the peer send audio, the answer's audio is `sendrecv`
|
|
37543
|
+
* and every inbound frame goes to `intercom.pushTalkAudio` for this
|
|
37544
|
+
* `deviceId`; absent/false answers `sendonly`, as for every viewer.
|
|
37545
|
+
*
|
|
37546
|
+
* TRUSTED-CALLER ONLY. Set by the Alexa export for an Echo on a camera
|
|
37547
|
+
* with `intercom`, when the linked user may control that camera. The
|
|
37548
|
+
* hub STRIPS it from every request-bound call (a browser), exactly as
|
|
37549
|
+
* it overwrites `relayOnly` — a viewer's talk permission is the
|
|
37550
|
+
* intercom cap's own surface (share tokens gate it there), and this
|
|
37551
|
+
* flag must not become a second door to the camera's speaker.
|
|
37552
|
+
*/
|
|
37553
|
+
talkback: external_exports.boolean().optional()
|
|
36126
37554
|
}), external_exports.object({
|
|
36127
37555
|
sessionId: external_exports.string(),
|
|
36128
37556
|
sdpAnswer: external_exports.string()
|
|
@@ -36202,6 +37630,35 @@ var webrtcSessionCapability = {
|
|
|
36202
37630
|
alive: external_exports.boolean()
|
|
36203
37631
|
})),
|
|
36204
37632
|
/**
|
|
37633
|
+
* The viewer's downlink probe, for ONE live session (D733).
|
|
37634
|
+
*
|
|
37635
|
+
* The player measures `/adaptive-probe` after the session's first decoded
|
|
37636
|
+
* frame (D635). It used to act on the reading itself, by opening a SECOND
|
|
37637
|
+
* session with `hints.downlinkMbps` — every adaptive live open became two
|
|
37638
|
+
* sessions, two ICE + DTLS handshakes and two server pipelines. It now
|
|
37639
|
+
* hands the measurement to the session it already has; the provider picks
|
|
37640
|
+
* the rung exactly as it would from an offer's hints (same viewport
|
|
37641
|
+
* ceiling) and moves the session there — in place when the negotiated
|
|
37642
|
+
* codec carries the new rendition, by the existing re-offer
|
|
37643
|
+
* (`getSessionState.pendingRenegotiation`) when it cannot.
|
|
37644
|
+
*
|
|
37645
|
+
* A MEASUREMENT, never a tier: the client does not choose. A probe only
|
|
37646
|
+
* raises the rung; lowering it stays the ladder's call on delivery.
|
|
37647
|
+
* `held` answers why nothing moved (`not-adaptive`, `pinned`,
|
|
37648
|
+
* `already-there`, `recorded`, …) — a client that gets ANY answer must not
|
|
37649
|
+
* fall back to a reconnect; only a provider that does not know the method
|
|
37650
|
+
* (an older hub) leaves the client its legacy second session.
|
|
37651
|
+
*/
|
|
37652
|
+
applyDownlinkProbe: method(external_exports.object({
|
|
37653
|
+
deviceId: external_exports.number().int().nonnegative(),
|
|
37654
|
+
sessionId: external_exports.string(),
|
|
37655
|
+
downlinkMbps: external_exports.number().nonnegative()
|
|
37656
|
+
}), external_exports.object({
|
|
37657
|
+
outcome: external_exports.enum(["switching", "held"]),
|
|
37658
|
+
tier: CamProfileSchema.nullable(),
|
|
37659
|
+
reason: external_exports.string()
|
|
37660
|
+
}), { kind: "mutation" }),
|
|
37661
|
+
/**
|
|
36205
37662
|
* The SERVER's half of the stream-debug overlay, for one live session.
|
|
36206
37663
|
*
|
|
36207
37664
|
* The client can measure its own transport (`getStats()`); it cannot see
|
|
@@ -36487,6 +37944,46 @@ var AddonAutoUpdateSchema = ChannelWithInheritSchema;
|
|
|
36487
37944
|
var RestartAddonResultSchema = external_exports.unknown();
|
|
36488
37945
|
var InstallPackageResultSchema = external_exports.unknown();
|
|
36489
37946
|
var ReloadPackagesResultSchema = external_exports.unknown();
|
|
37947
|
+
var UninstallNodeOutcomeSchema = external_exports.enum([
|
|
37948
|
+
"uninstalled",
|
|
37949
|
+
"not-installed",
|
|
37950
|
+
"refused",
|
|
37951
|
+
"failed",
|
|
37952
|
+
"pending-reconnect"
|
|
37953
|
+
]);
|
|
37954
|
+
var UninstallNodeResultSchema = external_exports.object({
|
|
37955
|
+
nodeId: external_exports.string(),
|
|
37956
|
+
outcome: UninstallNodeOutcomeSchema,
|
|
37957
|
+
error: external_exports.string().optional(),
|
|
37958
|
+
addonIds: external_exports.array(external_exports.string()).readonly(),
|
|
37959
|
+
runnersStopped: external_exports.array(external_exports.string()).readonly(),
|
|
37960
|
+
warnings: external_exports.array(external_exports.string()).readonly()
|
|
37961
|
+
});
|
|
37962
|
+
var UninstallPackageResultSchema = external_exports.object({
|
|
37963
|
+
/** Every targeted node ended `uninstalled`, `not-installed` or `pending-reconnect`. */
|
|
37964
|
+
success: external_exports.boolean(),
|
|
37965
|
+
packageName: external_exports.string(),
|
|
37966
|
+
results: external_exports.array(UninstallNodeResultSchema).readonly()
|
|
37967
|
+
});
|
|
37968
|
+
var PackageInstallationSchema = external_exports.object({
|
|
37969
|
+
packageName: external_exports.string(),
|
|
37970
|
+
nodeId: external_exports.string(),
|
|
37971
|
+
nodeName: external_exports.string(),
|
|
37972
|
+
isHub: external_exports.boolean(),
|
|
37973
|
+
isOnline: external_exports.boolean(),
|
|
37974
|
+
version: external_exports.string().nullable(),
|
|
37975
|
+
addonIds: external_exports.array(external_exports.string()).readonly(),
|
|
37976
|
+
source: external_exports.enum(["live", "recorded"]),
|
|
37977
|
+
/** The hub installs this package too. `false` on an agent row = an orphan. */
|
|
37978
|
+
onHub: external_exports.boolean()
|
|
37979
|
+
});
|
|
37980
|
+
var PackageInstallationsSchema = external_exports.object({
|
|
37981
|
+
installations: external_exports.array(PackageInstallationSchema).readonly(),
|
|
37982
|
+
unreachable: external_exports.array(external_exports.object({
|
|
37983
|
+
nodeId: external_exports.string(),
|
|
37984
|
+
error: external_exports.string()
|
|
37985
|
+
})).readonly()
|
|
37986
|
+
});
|
|
36490
37987
|
var BulkUpdateItemStatusSchema = external_exports.enum([
|
|
36491
37988
|
"queued",
|
|
36492
37989
|
"updating",
|
|
@@ -36577,10 +38074,31 @@ var addonsCapability = {
|
|
|
36577
38074
|
}),
|
|
36578
38075
|
isWorkspaceAvailable: method(external_exports.void(), external_exports.boolean()),
|
|
36579
38076
|
listWorkspacePackages: method(external_exports.void(), external_exports.array(external_exports.unknown()).readonly()),
|
|
36580
|
-
|
|
38077
|
+
/**
|
|
38078
|
+
* Uninstall a package. `nodeId` omitted (or `'hub'`) uninstalls on the hub
|
|
38079
|
+
* — the original behaviour, which still THROWS on failure. An agent
|
|
38080
|
+
* `nodeId` removes it from that agent through `$agent.undeploy`
|
|
38081
|
+
* (runners stopped, caps deregistered, code deleted) and prunes the node's
|
|
38082
|
+
* declared roster so the back-fill never returns it. `everywhere: true`
|
|
38083
|
+
* does both for every node that has it (agents first, hub last); offline
|
|
38084
|
+
* nodes answer `pending-reconnect`. Node-level failures in those two modes
|
|
38085
|
+
* are REPORTED per node, never thrown. Protected packages are refused.
|
|
38086
|
+
*/
|
|
38087
|
+
uninstallPackage: method(external_exports.object({
|
|
38088
|
+
packageName: external_exports.string().min(1),
|
|
38089
|
+
nodeId: external_exports.string().optional(),
|
|
38090
|
+
everywhere: external_exports.boolean().optional()
|
|
38091
|
+
}), UninstallPackageResultSchema, {
|
|
36581
38092
|
kind: "mutation",
|
|
36582
38093
|
auth: "admin"
|
|
36583
38094
|
}),
|
|
38095
|
+
/**
|
|
38096
|
+
* Which nodes have a package (or, with no `packageName`, every package on
|
|
38097
|
+
* every node). Hub from its installer, online agents from `$agent.status`
|
|
38098
|
+
* (in parallel, bounded), offline agents from their declared roster.
|
|
38099
|
+
* Drives the uninstall confirm and the Addons page's "not on the hub" list.
|
|
38100
|
+
*/
|
|
38101
|
+
listInstallations: method(external_exports.object({ packageName: external_exports.string().optional() }), PackageInstallationsSchema, { auth: "admin" }),
|
|
36584
38102
|
reloadPackages: method(external_exports.void(), ReloadPackagesResultSchema, {
|
|
36585
38103
|
kind: "mutation",
|
|
36586
38104
|
auth: "admin"
|
|
@@ -39301,6 +40819,9 @@ var CreateIntegrationInputSchema = external_exports.object({
|
|
|
39301
40819
|
enabled: external_exports.boolean().optional(),
|
|
39302
40820
|
info: external_exports.record(external_exports.string(), external_exports.unknown()).optional(),
|
|
39303
40821
|
settings: external_exports.record(external_exports.string(), external_exports.unknown()).optional(),
|
|
40822
|
+
/** Keys of `settings` the form's schema declares secret (by type) — kept in
|
|
40823
|
+
* the keychain, not the table (D787). */
|
|
40824
|
+
secretKeys: external_exports.array(external_exports.string()).optional(),
|
|
39304
40825
|
skipRestart: external_exports.boolean().optional()
|
|
39305
40826
|
});
|
|
39306
40827
|
var UpdateIntegrationInputSchema = external_exports.object({
|
|
@@ -39336,7 +40857,9 @@ var integrationsCapability = {
|
|
|
39336
40857
|
getSettings: method(external_exports.object({ id: external_exports.string() }), external_exports.record(external_exports.string(), external_exports.unknown()), { auth: "admin" }),
|
|
39337
40858
|
setSettings: method(external_exports.object({
|
|
39338
40859
|
id: external_exports.string(),
|
|
39339
|
-
settings: external_exports.record(external_exports.string(), external_exports.unknown())
|
|
40860
|
+
settings: external_exports.record(external_exports.string(), external_exports.unknown()),
|
|
40861
|
+
/** Keys the form's schema declares secret (by type) — keychain-stored (D787). */
|
|
40862
|
+
secretKeys: external_exports.array(external_exports.string()).optional()
|
|
39340
40863
|
}), external_exports.object({ success: external_exports.boolean() }), {
|
|
39341
40864
|
kind: "mutation",
|
|
39342
40865
|
auth: "admin"
|
|
@@ -39668,7 +41191,8 @@ var ConnectionEndpointSchema = external_exports.object({
|
|
|
39668
41191
|
"lan-ipv6",
|
|
39669
41192
|
"public",
|
|
39670
41193
|
"loopback",
|
|
39671
|
-
"app-link"
|
|
41194
|
+
"app-link",
|
|
41195
|
+
"custom"
|
|
39672
41196
|
]),
|
|
39673
41197
|
/**
|
|
39674
41198
|
* Originating-interface kind — `lan`/`wifi`/`docker`/`vpn`/`other`/
|
|
@@ -39754,6 +41278,62 @@ var ViewerEndpointsSchema = external_exports.object({
|
|
|
39754
41278
|
/** What the ranking currently resolves to (may be empty if nothing is up). */
|
|
39755
41279
|
resolved: external_exports.array(external_exports.string()).readonly()
|
|
39756
41280
|
});
|
|
41281
|
+
var HubAddressSnapshotSchema = external_exports.object({
|
|
41282
|
+
override: external_exports.string().nullable(),
|
|
41283
|
+
resolved: external_exports.string().nullable(),
|
|
41284
|
+
source: external_exports.enum([
|
|
41285
|
+
"override",
|
|
41286
|
+
"auto",
|
|
41287
|
+
"none"
|
|
41288
|
+
])
|
|
41289
|
+
});
|
|
41290
|
+
var HubAddressesSchema = external_exports.object({
|
|
41291
|
+
cluster: HubAddressSnapshotSchema,
|
|
41292
|
+
browser: HubAddressSnapshotSchema
|
|
41293
|
+
});
|
|
41294
|
+
var HubAddressRoleSchema = external_exports.enum(HUB_ADDRESS_ROLES);
|
|
41295
|
+
var RoleSourceSchema = external_exports.enum([
|
|
41296
|
+
"flagged",
|
|
41297
|
+
"auto",
|
|
41298
|
+
"none"
|
|
41299
|
+
]);
|
|
41300
|
+
var HubAddressRoleResolutionSchema = external_exports.object({
|
|
41301
|
+
/** The address carrying the flag, or null = automatic. */
|
|
41302
|
+
flagged: external_exports.string().nullable(),
|
|
41303
|
+
/** The address in use, or null when nothing qualifies (never loopback). */
|
|
41304
|
+
resolved: external_exports.string().nullable(),
|
|
41305
|
+
source: RoleSourceSchema
|
|
41306
|
+
});
|
|
41307
|
+
var HubAppConnectionsResolutionSchema = external_exports.object({
|
|
41308
|
+
/** The addresses flagged `appConnections`, or empty = automatic. */
|
|
41309
|
+
flagged: external_exports.array(external_exports.string()).readonly(),
|
|
41310
|
+
/** What the apps race right now. */
|
|
41311
|
+
resolved: external_exports.array(external_exports.string()).readonly(),
|
|
41312
|
+
source: RoleSourceSchema
|
|
41313
|
+
});
|
|
41314
|
+
var HubAddressRowSchema = ConnectionEndpointSchema.extend({
|
|
41315
|
+
/** In the hub's detected palette right now. */
|
|
41316
|
+
detected: external_exports.boolean(),
|
|
41317
|
+
/** Entered by the operator (removable). */
|
|
41318
|
+
custom: external_exports.boolean(),
|
|
41319
|
+
/** The roles explicitly flagged on this address. */
|
|
41320
|
+
flags: external_exports.array(HubAddressRoleSchema).readonly(),
|
|
41321
|
+
/** The roles this address serves right now — flagged or automatic. */
|
|
41322
|
+
inUse: external_exports.array(HubAddressRoleSchema).readonly(),
|
|
41323
|
+
/** The roles this address may be flagged with. */
|
|
41324
|
+
eligible: external_exports.array(HubAddressRoleSchema).readonly()
|
|
41325
|
+
});
|
|
41326
|
+
var HubAddressBookSchema = external_exports.object({
|
|
41327
|
+
rows: external_exports.array(HubAddressRowSchema).readonly(),
|
|
41328
|
+
roles: external_exports.object({
|
|
41329
|
+
appConnections: HubAppConnectionsResolutionSchema,
|
|
41330
|
+
notificationTaps: HubAddressRoleResolutionSchema,
|
|
41331
|
+
internal: HubAddressRoleResolutionSchema,
|
|
41332
|
+
publicEndpoint: HubAddressRoleResolutionSchema
|
|
41333
|
+
}),
|
|
41334
|
+
/** The `hub=` an app link carries (D709), or null. */
|
|
41335
|
+
appLinkHub: external_exports.string().nullable()
|
|
41336
|
+
});
|
|
39757
41337
|
var AllowedAddressesSchema = external_exports.object({
|
|
39758
41338
|
/**
|
|
39759
41339
|
* Allowlist of interface addresses operators have explicitly opted
|
|
@@ -39845,19 +41425,18 @@ var localNetworkCapability = {
|
|
|
39845
41425
|
* tunnel always emits `https://` regardless. */
|
|
39846
41426
|
scheme: external_exports.enum(["http", "https"]).optional(),
|
|
39847
41427
|
/** Append the CamStack app link entry (`kind: 'app-link'`, D709) —
|
|
39848
|
-
* an address notification
|
|
41428
|
+
* an address notification taps can be flagged with, not a hub
|
|
39849
41429
|
* route. Default `false`: racers and rankers never see it. */
|
|
39850
41430
|
includeAppLink: external_exports.boolean().optional()
|
|
39851
41431
|
}), GetConnectionEndpointsResultSchema),
|
|
39852
41432
|
/**
|
|
39853
|
-
* The
|
|
39854
|
-
* AUTO, which is the CamStack app link (D709):
|
|
39855
|
-
* `https://camstack.zentik.app/…?hub=<appLinkHub>` and open the
|
|
39856
|
-
* hub address the palette lists can be flagged instead; then
|
|
39857
|
-
*
|
|
39858
|
-
*
|
|
39859
|
-
*
|
|
39860
|
-
* the LAN), never loopback.
|
|
41433
|
+
* The `notificationTaps` role (D734): where TAPPING a notification opens.
|
|
41434
|
+
* `baseUrl: null` means AUTO, which is the CamStack app link (D709): taps
|
|
41435
|
+
* go through `https://camstack.zentik.app/…?hub=<appLinkHub>` and open the
|
|
41436
|
+
* app. Any hub address the palette lists can be flagged instead; then a
|
|
41437
|
+
* tap opens that address. Only the tap: action buttons, attachment /
|
|
41438
|
+
* media links and admin links follow the `publicEndpoint` role
|
|
41439
|
+
* (`getAddresses().roles.publicEndpoint`), never this one.
|
|
39861
41440
|
*
|
|
39862
41441
|
* Why an explicit marker: the automatic ranking cannot know which of
|
|
39863
41442
|
* several reachable addresses the RECIPIENT can actually open. A link is
|
|
@@ -39867,26 +41446,80 @@ var localNetworkCapability = {
|
|
|
39867
41446
|
*/
|
|
39868
41447
|
getNotificationEndpoint: method(external_exports.void(), NotificationEndpointSchema),
|
|
39869
41448
|
/**
|
|
39870
|
-
*
|
|
39871
|
-
*
|
|
39872
|
-
*
|
|
39873
|
-
* different address after a reboot.
|
|
41449
|
+
* @deprecated Use `setAddressRole({ role: 'notificationTaps', … })`. It
|
|
41450
|
+
* writes the same `notificationTaps` flag, with the same validation. `baseUrl: null` restores automatic; an
|
|
41451
|
+
* address that is not detected becomes a custom address.
|
|
39874
41452
|
*/
|
|
39875
41453
|
setNotificationEndpoint: method(external_exports.object({ baseUrl: external_exports.string().nullable() }), NotificationEndpointSchema, { kind: "mutation" }),
|
|
39876
41454
|
/**
|
|
39877
|
-
* The
|
|
39878
|
-
*
|
|
39879
|
-
*
|
|
39880
|
-
*
|
|
41455
|
+
* The `appConnections` role as shipped apps read it: the flagged addresses
|
|
41456
|
+
* (detected or custom), or empty for AUTO — every LAN IPv4 address plus
|
|
41457
|
+
* the public tunnel, never IPv6, mesh, loopback or a custom address.
|
|
41458
|
+
* `resolved` is the set as it stands right now; the custom ones in it are
|
|
41459
|
+
* also in `getConnectionEndpoints`, which the apps filter by it.
|
|
39881
41460
|
*/
|
|
39882
41461
|
getViewerEndpoints: method(external_exports.void(), ViewerEndpointsSchema),
|
|
39883
41462
|
/**
|
|
39884
|
-
*
|
|
39885
|
-
*
|
|
39886
|
-
*
|
|
41463
|
+
* @deprecated Use `setAddressRole({ role: 'appConnections', … })`. It
|
|
41464
|
+
* replaces the same `appConnections` flags.
|
|
41465
|
+
* Empty `baseUrls` restores automatic.
|
|
39887
41466
|
*/
|
|
39888
41467
|
setViewerEndpoints: method(external_exports.object({ baseUrls: external_exports.array(external_exports.string()).readonly() }), ViewerEndpointsSchema, { kind: "mutation" }),
|
|
39889
41468
|
/**
|
|
41469
|
+
* The Network page's Addresses table and every role's answer — the ONE
|
|
41470
|
+
* reading of "which address is this hub reached at, for what": detected
|
|
41471
|
+
* endpoints and custom addresses with their role flags, and per role the
|
|
41472
|
+
* flagged address, the one in use and whether it is automatic. Agent
|
|
41473
|
+
* deliveries and LAN devices read `roles.internal`; sign-in, OAuth2 and
|
|
41474
|
+
* the notification centre's buttons / media / admin links read
|
|
41475
|
+
* `roles.publicEndpoint`; nothing ranks the palette itself. `scheme` is
|
|
41476
|
+
* the one the caller shows LAN rows in (as `getConnectionEndpoints`);
|
|
41477
|
+
* `internal` and `publicEndpoint` are always resolved over the HTTPS
|
|
41478
|
+
* palette.
|
|
41479
|
+
*/
|
|
41480
|
+
getAddresses: method(external_exports.object({ scheme: external_exports.enum(["http", "https"]).optional() }).optional(), HubAddressBookSchema),
|
|
41481
|
+
/**
|
|
41482
|
+
* Add a custom address. Validated: an http(s) origin with a host, no
|
|
41483
|
+
* credentials, no path, never loopback — an invalid one is refused with
|
|
41484
|
+
* the reason and nothing is stored. Adding an address that already exists
|
|
41485
|
+
* only updates its label.
|
|
41486
|
+
*/
|
|
41487
|
+
addCustomAddress: method(external_exports.object({
|
|
41488
|
+
baseUrl: external_exports.string(),
|
|
41489
|
+
label: external_exports.string().max(80)
|
|
41490
|
+
}), HubAddressBookSchema, {
|
|
41491
|
+
kind: "mutation",
|
|
41492
|
+
auth: "admin"
|
|
41493
|
+
}),
|
|
41494
|
+
/** Remove a custom address. Its role flags go with it (those roles turn automatic). */
|
|
41495
|
+
removeCustomAddress: method(external_exports.object({ baseUrl: external_exports.string() }), HubAddressBookSchema, {
|
|
41496
|
+
kind: "mutation",
|
|
41497
|
+
auth: "admin"
|
|
41498
|
+
}),
|
|
41499
|
+
/**
|
|
41500
|
+
* Flag (`enabled: true`) or unflag an address for a role. For a
|
|
41501
|
+
* single-valued role, flagging moves the flag off every other address.
|
|
41502
|
+
* `baseUrl: null` returns the role to automatic. The address must be a row
|
|
41503
|
+
* of the table (detected, custom, or the app link for `notificationTaps`);
|
|
41504
|
+
* `publicEndpoint` on a plain-http address is refused unless
|
|
41505
|
+
* `acceptInsecureHttp`, and never takes the app link.
|
|
41506
|
+
*/
|
|
41507
|
+
setAddressRole: method(external_exports.object({
|
|
41508
|
+
role: HubAddressRoleSchema,
|
|
41509
|
+
baseUrl: external_exports.string().nullable(),
|
|
41510
|
+
enabled: external_exports.boolean(),
|
|
41511
|
+
acceptInsecureHttp: external_exports.boolean().optional()
|
|
41512
|
+
}), HubAddressBookSchema, {
|
|
41513
|
+
kind: "mutation",
|
|
41514
|
+
auth: "admin"
|
|
41515
|
+
}),
|
|
41516
|
+
/**
|
|
41517
|
+
* @deprecated Read `getAddresses().roles.internal` / `.publicEndpoint`.
|
|
41518
|
+
* Kept so an addon built against the D729 amendment keeps resolving:
|
|
41519
|
+
* `cluster` = the `internal` role, `browser` = the `publicEndpoint` role.
|
|
41520
|
+
*/
|
|
41521
|
+
getHubAddresses: method(external_exports.void(), HubAddressesSchema),
|
|
41522
|
+
/**
|
|
39890
41523
|
* Read the operator's allowlist. Empty = "auto" (no filter). Used
|
|
39891
41524
|
* by the admin UI's address selector to seed its checkbox state.
|
|
39892
41525
|
*/
|
|
@@ -40405,7 +42038,8 @@ var MotionStatusSchema = external_exports.object({
|
|
|
40405
42038
|
* writes this slice (not even a boot seed), and neither does the runner's
|
|
40406
42039
|
* phase machine: its phase is "a session is attached" for every on-motion
|
|
40407
42040
|
* session, not motion, and it now has its own `DetectionPhaseTransition`.
|
|
40408
|
-
* A provider's `isDetected`
|
|
42041
|
+
* A provider's `isDetected` and `getStatus` answer from the hub's slice
|
|
42042
|
+
* (`hubMotionNativeProvider`).
|
|
40409
42043
|
* - **Sensors** (Home Assistant binary sensors, Homematic, Matter, Alexa
|
|
40410
42044
|
* imports) — the provider pushes both edges itself, from the upstream
|
|
40411
42045
|
* system's own state change. That is the sensor's own fact.
|
|
@@ -45473,6 +47107,22 @@ var TotpStatusSchema = external_exports.object({
|
|
|
45473
47107
|
/** Null when no row exists OR the row is still pending confirmation. */
|
|
45474
47108
|
confirmedAt: external_exports.number().nullable()
|
|
45475
47109
|
});
|
|
47110
|
+
var ExternalIdentitySchema = external_exports.object({
|
|
47111
|
+
/** Login-method id of the provider instance, e.g. `auth-oidc/authentik`. */
|
|
47112
|
+
provider: external_exports.string(),
|
|
47113
|
+
/** The IdP's stable subject (`sub`) for this account. */
|
|
47114
|
+
subject: external_exports.string(),
|
|
47115
|
+
/** The verified `iss` of the IdP the identity was linked under — `sub` is unique only per issuer. */
|
|
47116
|
+
issuer: external_exports.string(),
|
|
47117
|
+
userId: external_exports.string(),
|
|
47118
|
+
/** What the IdP called the account at link time (username / email) — display only. */
|
|
47119
|
+
label: external_exports.string().optional(),
|
|
47120
|
+
linkedAt: external_exports.number()
|
|
47121
|
+
});
|
|
47122
|
+
var ExternalIdentityKeySchema = external_exports.object({
|
|
47123
|
+
provider: external_exports.string().min(1),
|
|
47124
|
+
subject: external_exports.string().min(1)
|
|
47125
|
+
});
|
|
45476
47126
|
var userManagementCapability = {
|
|
45477
47127
|
name: "user-management",
|
|
45478
47128
|
scope: "system",
|
|
@@ -45615,6 +47265,32 @@ var userManagementCapability = {
|
|
|
45615
47265
|
username: external_exports.string(),
|
|
45616
47266
|
scopes: external_exports.array(TokenScopeSchema)
|
|
45617
47267
|
}).nullable(), { access: "view" }),
|
|
47268
|
+
listExternalIdentities: method(external_exports.object({ userId: external_exports.string() }), external_exports.array(ExternalIdentitySchema), { auth: "admin" }),
|
|
47269
|
+
/** The user an identity is linked to, or `null`. */
|
|
47270
|
+
findUserByExternalIdentity: method(ExternalIdentityKeySchema, external_exports.object({
|
|
47271
|
+
userId: external_exports.string(),
|
|
47272
|
+
issuer: external_exports.string()
|
|
47273
|
+
}).nullable(), { auth: "admin" }),
|
|
47274
|
+
/**
|
|
47275
|
+
* Link `(provider, subject)` to `userId`. Idempotent for the same user;
|
|
47276
|
+
* REFUSES (throws) an identity already linked to another user, and a
|
|
47277
|
+
* user that does not exist.
|
|
47278
|
+
*/
|
|
47279
|
+
linkExternalIdentity: method(ExternalIdentityKeySchema.extend({
|
|
47280
|
+
userId: external_exports.string(),
|
|
47281
|
+
issuer: external_exports.string().min(1),
|
|
47282
|
+
label: external_exports.string().optional()
|
|
47283
|
+
}), external_exports.object({ success: external_exports.literal(true) }), {
|
|
47284
|
+
kind: "mutation",
|
|
47285
|
+
auth: "admin",
|
|
47286
|
+
access: "create"
|
|
47287
|
+
}),
|
|
47288
|
+
/** Remove one link of `userId`. `success: false` when it was not linked to that user. */
|
|
47289
|
+
unlinkExternalIdentity: method(ExternalIdentityKeySchema.extend({ userId: external_exports.string() }), external_exports.object({ success: external_exports.boolean() }), {
|
|
47290
|
+
kind: "mutation",
|
|
47291
|
+
auth: "admin",
|
|
47292
|
+
access: "delete"
|
|
47293
|
+
}),
|
|
45618
47294
|
listOauthSessions: method(external_exports.void(), external_exports.array(OauthSessionSummarySchema), { auth: "admin" }),
|
|
45619
47295
|
revokeOauthSession: method(external_exports.object({ id: external_exports.string() }), external_exports.object({ success: external_exports.boolean() }), {
|
|
45620
47296
|
kind: "mutation",
|
|
@@ -46380,6 +48056,16 @@ var UNIT_TABLE = {
|
|
|
46380
48056
|
}
|
|
46381
48057
|
};
|
|
46382
48058
|
var INVERTIBLE_CAPS = SOURCE_CAPS.filter((cap) => cap !== "switch" && cap !== "motion");
|
|
48059
|
+
var FRIGATE_STOCK_CLASS_FLOORS = Object.freeze({
|
|
48060
|
+
person: 0.5,
|
|
48061
|
+
vehicle: 0.5,
|
|
48062
|
+
animal: 0.5
|
|
48063
|
+
});
|
|
48064
|
+
var FRIGATE_PLUS_CLASS_FLOORS = Object.freeze({
|
|
48065
|
+
person: 0.65,
|
|
48066
|
+
vehicle: 0.65,
|
|
48067
|
+
animal: 0.65
|
|
48068
|
+
});
|
|
46383
48069
|
var HF_REPO = "camstack/camstack-models";
|
|
46384
48070
|
var HF_BASE_URL = `https://huggingface.co/${HF_REPO}/resolve/main`;
|
|
46385
48071
|
var AccessoryKind = {
|
|
@@ -46570,6 +48256,12 @@ var METHOD_ACCESS_MAP = Object.freeze({
|
|
|
46570
48256
|
addonId: null,
|
|
46571
48257
|
access: "view"
|
|
46572
48258
|
},
|
|
48259
|
+
"addons.listInstallations": {
|
|
48260
|
+
capName: "addons",
|
|
48261
|
+
capScope: "system",
|
|
48262
|
+
addonId: null,
|
|
48263
|
+
access: "view"
|
|
48264
|
+
},
|
|
46573
48265
|
"addons.listJobs": {
|
|
46574
48266
|
capName: "addons",
|
|
46575
48267
|
capScope: "system",
|
|
@@ -47752,90 +49444,18 @@ var METHOD_ACCESS_MAP = Object.freeze({
|
|
|
47752
49444
|
addonId: null,
|
|
47753
49445
|
access: "create"
|
|
47754
49446
|
},
|
|
47755
|
-
"decoder.createSession": {
|
|
47756
|
-
capName: "decoder",
|
|
47757
|
-
capScope: "system",
|
|
47758
|
-
addonId: null,
|
|
47759
|
-
access: "view"
|
|
47760
|
-
},
|
|
47761
|
-
"decoder.destroySession": {
|
|
47762
|
-
capName: "decoder",
|
|
47763
|
-
capScope: "system",
|
|
47764
|
-
addonId: null,
|
|
47765
|
-
access: "delete"
|
|
47766
|
-
},
|
|
47767
|
-
"decoder.getFrame": {
|
|
47768
|
-
capName: "decoder",
|
|
47769
|
-
capScope: "system",
|
|
47770
|
-
addonId: null,
|
|
47771
|
-
access: "view"
|
|
47772
|
-
},
|
|
47773
49447
|
"decoder.getInfo": {
|
|
47774
49448
|
capName: "decoder",
|
|
47775
49449
|
capScope: "system",
|
|
47776
49450
|
addonId: null,
|
|
47777
49451
|
access: "view"
|
|
47778
49452
|
},
|
|
47779
|
-
"decoder.getShmStats": {
|
|
47780
|
-
capName: "decoder",
|
|
47781
|
-
capScope: "system",
|
|
47782
|
-
addonId: null,
|
|
47783
|
-
access: "view"
|
|
47784
|
-
},
|
|
47785
|
-
"decoder.getStats": {
|
|
47786
|
-
capName: "decoder",
|
|
47787
|
-
capScope: "system",
|
|
47788
|
-
addonId: null,
|
|
47789
|
-
access: "view"
|
|
47790
|
-
},
|
|
47791
|
-
"decoder.listActiveSessions": {
|
|
47792
|
-
capName: "decoder",
|
|
47793
|
-
capScope: "system",
|
|
47794
|
-
addonId: null,
|
|
47795
|
-
access: "view"
|
|
47796
|
-
},
|
|
47797
|
-
"decoder.openStream": {
|
|
47798
|
-
capName: "decoder",
|
|
47799
|
-
capScope: "system",
|
|
47800
|
-
addonId: null,
|
|
47801
|
-
access: "view"
|
|
47802
|
-
},
|
|
47803
|
-
"decoder.pullFrames": {
|
|
47804
|
-
capName: "decoder",
|
|
47805
|
-
capScope: "system",
|
|
47806
|
-
addonId: null,
|
|
47807
|
-
access: "view"
|
|
47808
|
-
},
|
|
47809
|
-
"decoder.pullHandles": {
|
|
47810
|
-
capName: "decoder",
|
|
47811
|
-
capScope: "system",
|
|
47812
|
-
addonId: null,
|
|
47813
|
-
access: "view"
|
|
47814
|
-
},
|
|
47815
|
-
"decoder.pushPacket": {
|
|
47816
|
-
capName: "decoder",
|
|
47817
|
-
capScope: "system",
|
|
47818
|
-
addonId: null,
|
|
47819
|
-
access: "view"
|
|
47820
|
-
},
|
|
47821
49453
|
"decoder.reprobeHwaccel": {
|
|
47822
49454
|
capName: "decoder",
|
|
47823
49455
|
capScope: "system",
|
|
47824
49456
|
addonId: null,
|
|
47825
49457
|
access: "create"
|
|
47826
49458
|
},
|
|
47827
|
-
"decoder.supportsCodec": {
|
|
47828
|
-
capName: "decoder",
|
|
47829
|
-
capScope: "system",
|
|
47830
|
-
addonId: null,
|
|
47831
|
-
access: "view"
|
|
47832
|
-
},
|
|
47833
|
-
"decoder.updateConfig": {
|
|
47834
|
-
capName: "decoder",
|
|
47835
|
-
capScope: "system",
|
|
47836
|
-
addonId: null,
|
|
47837
|
-
access: "view"
|
|
47838
|
-
},
|
|
47839
49459
|
"detectionPipeline.applyDeviceSettingsPatch": {
|
|
47840
49460
|
capName: "detection-pipeline",
|
|
47841
49461
|
capScope: "device",
|
|
@@ -49102,6 +50722,96 @@ var METHOD_ACCESS_MAP = Object.freeze({
|
|
|
49102
50722
|
addonId: null,
|
|
49103
50723
|
access: "create"
|
|
49104
50724
|
},
|
|
50725
|
+
"keychain.delete": {
|
|
50726
|
+
capName: "keychain",
|
|
50727
|
+
capScope: "system",
|
|
50728
|
+
addonId: null,
|
|
50729
|
+
access: "delete"
|
|
50730
|
+
},
|
|
50731
|
+
"keychain.getState": {
|
|
50732
|
+
capName: "keychain",
|
|
50733
|
+
capScope: "system",
|
|
50734
|
+
addonId: null,
|
|
50735
|
+
access: "view"
|
|
50736
|
+
},
|
|
50737
|
+
"keychain.listMeta": {
|
|
50738
|
+
capName: "keychain",
|
|
50739
|
+
capScope: "system",
|
|
50740
|
+
addonId: null,
|
|
50741
|
+
access: "view"
|
|
50742
|
+
},
|
|
50743
|
+
"keychain.put": {
|
|
50744
|
+
capName: "keychain",
|
|
50745
|
+
capScope: "system",
|
|
50746
|
+
addonId: null,
|
|
50747
|
+
access: "create"
|
|
50748
|
+
},
|
|
50749
|
+
"keychain.resolve": {
|
|
50750
|
+
capName: "keychain",
|
|
50751
|
+
capScope: "system",
|
|
50752
|
+
addonId: null,
|
|
50753
|
+
access: "view"
|
|
50754
|
+
},
|
|
50755
|
+
"keychainAdmin.deleteOrphans": {
|
|
50756
|
+
capName: "keychain-admin",
|
|
50757
|
+
capScope: "system",
|
|
50758
|
+
addonId: null,
|
|
50759
|
+
access: "delete"
|
|
50760
|
+
},
|
|
50761
|
+
"keychainAdmin.downloadRecoveryKey": {
|
|
50762
|
+
capName: "keychain-admin",
|
|
50763
|
+
capScope: "system",
|
|
50764
|
+
addonId: null,
|
|
50765
|
+
access: "create"
|
|
50766
|
+
},
|
|
50767
|
+
"keychainAdmin.listAudit": {
|
|
50768
|
+
capName: "keychain-admin",
|
|
50769
|
+
capScope: "system",
|
|
50770
|
+
addonId: null,
|
|
50771
|
+
access: "view"
|
|
50772
|
+
},
|
|
50773
|
+
"keychainAdmin.listSecrets": {
|
|
50774
|
+
capName: "keychain-admin",
|
|
50775
|
+
capScope: "system",
|
|
50776
|
+
addonId: null,
|
|
50777
|
+
access: "view"
|
|
50778
|
+
},
|
|
50779
|
+
"keychainAdmin.purgeRetiredKeys": {
|
|
50780
|
+
capName: "keychain-admin",
|
|
50781
|
+
capScope: "system",
|
|
50782
|
+
addonId: null,
|
|
50783
|
+
access: "delete"
|
|
50784
|
+
},
|
|
50785
|
+
"keychainAdmin.resetKeychain": {
|
|
50786
|
+
capName: "keychain-admin",
|
|
50787
|
+
capScope: "system",
|
|
50788
|
+
addonId: null,
|
|
50789
|
+
access: "delete"
|
|
50790
|
+
},
|
|
50791
|
+
"keychainAdmin.reveal": {
|
|
50792
|
+
capName: "keychain-admin",
|
|
50793
|
+
capScope: "system",
|
|
50794
|
+
addonId: null,
|
|
50795
|
+
access: "create"
|
|
50796
|
+
},
|
|
50797
|
+
"keychainAdmin.rotateMasterKey": {
|
|
50798
|
+
capName: "keychain-admin",
|
|
50799
|
+
capScope: "system",
|
|
50800
|
+
addonId: null,
|
|
50801
|
+
access: "create"
|
|
50802
|
+
},
|
|
50803
|
+
"keychainAdmin.setSystemSecret": {
|
|
50804
|
+
capName: "keychain-admin",
|
|
50805
|
+
capScope: "system",
|
|
50806
|
+
addonId: null,
|
|
50807
|
+
access: "create"
|
|
50808
|
+
},
|
|
50809
|
+
"keychainAdmin.status": {
|
|
50810
|
+
capName: "keychain-admin",
|
|
50811
|
+
capScope: "system",
|
|
50812
|
+
addonId: null,
|
|
50813
|
+
access: "view"
|
|
50814
|
+
},
|
|
49105
50815
|
"lawnMowerControl.dock": {
|
|
49106
50816
|
capName: "lawn-mower-control",
|
|
49107
50817
|
capScope: "device",
|
|
@@ -49324,12 +51034,24 @@ var METHOD_ACCESS_MAP = Object.freeze({
|
|
|
49324
51034
|
addonId: null,
|
|
49325
51035
|
access: "view"
|
|
49326
51036
|
},
|
|
51037
|
+
"localNetwork.addCustomAddress": {
|
|
51038
|
+
capName: "local-network",
|
|
51039
|
+
capScope: "system",
|
|
51040
|
+
addonId: null,
|
|
51041
|
+
access: "create"
|
|
51042
|
+
},
|
|
49327
51043
|
"localNetwork.downloadCa": {
|
|
49328
51044
|
capName: "local-network",
|
|
49329
51045
|
capScope: "system",
|
|
49330
51046
|
addonId: null,
|
|
49331
51047
|
access: "view"
|
|
49332
51048
|
},
|
|
51049
|
+
"localNetwork.getAddresses": {
|
|
51050
|
+
capName: "local-network",
|
|
51051
|
+
capScope: "system",
|
|
51052
|
+
addonId: null,
|
|
51053
|
+
access: "view"
|
|
51054
|
+
},
|
|
49333
51055
|
"localNetwork.getAllowedAddresses": {
|
|
49334
51056
|
capName: "local-network",
|
|
49335
51057
|
capScope: "system",
|
|
@@ -49342,6 +51064,12 @@ var METHOD_ACCESS_MAP = Object.freeze({
|
|
|
49342
51064
|
addonId: null,
|
|
49343
51065
|
access: "view"
|
|
49344
51066
|
},
|
|
51067
|
+
"localNetwork.getHubAddresses": {
|
|
51068
|
+
capName: "local-network",
|
|
51069
|
+
capScope: "system",
|
|
51070
|
+
addonId: null,
|
|
51071
|
+
access: "view"
|
|
51072
|
+
},
|
|
49345
51073
|
"localNetwork.getNotificationEndpoint": {
|
|
49346
51074
|
capName: "local-network",
|
|
49347
51075
|
capScope: "system",
|
|
@@ -49378,6 +51106,12 @@ var METHOD_ACCESS_MAP = Object.freeze({
|
|
|
49378
51106
|
addonId: null,
|
|
49379
51107
|
access: "create"
|
|
49380
51108
|
},
|
|
51109
|
+
"localNetwork.removeCustomAddress": {
|
|
51110
|
+
capName: "local-network",
|
|
51111
|
+
capScope: "system",
|
|
51112
|
+
addonId: null,
|
|
51113
|
+
access: "delete"
|
|
51114
|
+
},
|
|
49381
51115
|
"localNetwork.resetAllowlistToBestMatch": {
|
|
49382
51116
|
capName: "local-network",
|
|
49383
51117
|
capScope: "system",
|
|
@@ -49390,6 +51124,12 @@ var METHOD_ACCESS_MAP = Object.freeze({
|
|
|
49390
51124
|
addonId: null,
|
|
49391
51125
|
access: "create"
|
|
49392
51126
|
},
|
|
51127
|
+
"localNetwork.setAddressRole": {
|
|
51128
|
+
capName: "local-network",
|
|
51129
|
+
capScope: "system",
|
|
51130
|
+
addonId: null,
|
|
51131
|
+
access: "create"
|
|
51132
|
+
},
|
|
49393
51133
|
"localNetwork.setAllowedAddresses": {
|
|
49394
51134
|
capName: "local-network",
|
|
49395
51135
|
capScope: "system",
|
|
@@ -50446,6 +52186,18 @@ var METHOD_ACCESS_MAP = Object.freeze({
|
|
|
50446
52186
|
addonId: null,
|
|
50447
52187
|
access: "create"
|
|
50448
52188
|
},
|
|
52189
|
+
"pipelineAnalytics.addRetrainFrameFromRecording": {
|
|
52190
|
+
capName: "pipeline-analytics",
|
|
52191
|
+
capScope: "device",
|
|
52192
|
+
addonId: null,
|
|
52193
|
+
access: "create"
|
|
52194
|
+
},
|
|
52195
|
+
"pipelineAnalytics.addRetrainFramesToCollection": {
|
|
52196
|
+
capName: "pipeline-analytics",
|
|
52197
|
+
capScope: "device",
|
|
52198
|
+
addonId: null,
|
|
52199
|
+
access: "create"
|
|
52200
|
+
},
|
|
50449
52201
|
"pipelineAnalytics.applyDeviceSettingsPatch": {
|
|
50450
52202
|
capName: "pipeline-analytics",
|
|
50451
52203
|
capScope: "device",
|
|
@@ -50494,12 +52246,36 @@ var METHOD_ACCESS_MAP = Object.freeze({
|
|
|
50494
52246
|
addonId: null,
|
|
50495
52247
|
access: "view"
|
|
50496
52248
|
},
|
|
52249
|
+
"pipelineAnalytics.createRetrainCollection": {
|
|
52250
|
+
capName: "pipeline-analytics",
|
|
52251
|
+
capScope: "device",
|
|
52252
|
+
addonId: null,
|
|
52253
|
+
access: "create"
|
|
52254
|
+
},
|
|
52255
|
+
"pipelineAnalytics.createRetrainDatasetVersion": {
|
|
52256
|
+
capName: "pipeline-analytics",
|
|
52257
|
+
capScope: "device",
|
|
52258
|
+
addonId: null,
|
|
52259
|
+
access: "create"
|
|
52260
|
+
},
|
|
50497
52261
|
"pipelineAnalytics.deleteDeviceEvents": {
|
|
50498
52262
|
capName: "pipeline-analytics",
|
|
50499
52263
|
capScope: "device",
|
|
50500
52264
|
addonId: null,
|
|
50501
52265
|
access: "delete"
|
|
50502
52266
|
},
|
|
52267
|
+
"pipelineAnalytics.deleteRetrainCollection": {
|
|
52268
|
+
capName: "pipeline-analytics",
|
|
52269
|
+
capScope: "device",
|
|
52270
|
+
addonId: null,
|
|
52271
|
+
access: "delete"
|
|
52272
|
+
},
|
|
52273
|
+
"pipelineAnalytics.deleteRetrainDatasetVersion": {
|
|
52274
|
+
capName: "pipeline-analytics",
|
|
52275
|
+
capScope: "device",
|
|
52276
|
+
addonId: null,
|
|
52277
|
+
access: "delete"
|
|
52278
|
+
},
|
|
50503
52279
|
"pipelineAnalytics.deleteTracks": {
|
|
50504
52280
|
capName: "pipeline-analytics",
|
|
50505
52281
|
capScope: "device",
|
|
@@ -50704,6 +52480,30 @@ var METHOD_ACCESS_MAP = Object.freeze({
|
|
|
50704
52480
|
addonId: null,
|
|
50705
52481
|
access: "view"
|
|
50706
52482
|
},
|
|
52483
|
+
"pipelineAnalytics.listRetrainAssistProfiles": {
|
|
52484
|
+
capName: "pipeline-analytics",
|
|
52485
|
+
capScope: "device",
|
|
52486
|
+
addonId: null,
|
|
52487
|
+
access: "view"
|
|
52488
|
+
},
|
|
52489
|
+
"pipelineAnalytics.listRetrainCollectionFrames": {
|
|
52490
|
+
capName: "pipeline-analytics",
|
|
52491
|
+
capScope: "device",
|
|
52492
|
+
addonId: null,
|
|
52493
|
+
access: "view"
|
|
52494
|
+
},
|
|
52495
|
+
"pipelineAnalytics.listRetrainCollections": {
|
|
52496
|
+
capName: "pipeline-analytics",
|
|
52497
|
+
capScope: "device",
|
|
52498
|
+
addonId: null,
|
|
52499
|
+
access: "view"
|
|
52500
|
+
},
|
|
52501
|
+
"pipelineAnalytics.listRetrainDatasetVersions": {
|
|
52502
|
+
capName: "pipeline-analytics",
|
|
52503
|
+
capScope: "device",
|
|
52504
|
+
addonId: null,
|
|
52505
|
+
access: "view"
|
|
52506
|
+
},
|
|
50707
52507
|
"pipelineAnalytics.listRetrainFrames": {
|
|
50708
52508
|
capName: "pipeline-analytics",
|
|
50709
52509
|
capScope: "device",
|
|
@@ -50746,12 +52546,24 @@ var METHOD_ACCESS_MAP = Object.freeze({
|
|
|
50746
52546
|
addonId: null,
|
|
50747
52547
|
access: "create"
|
|
50748
52548
|
},
|
|
52549
|
+
"pipelineAnalytics.previewRetrainDataset": {
|
|
52550
|
+
capName: "pipeline-analytics",
|
|
52551
|
+
capScope: "device",
|
|
52552
|
+
addonId: null,
|
|
52553
|
+
access: "view"
|
|
52554
|
+
},
|
|
50749
52555
|
"pipelineAnalytics.proposeRetrainAnnotations": {
|
|
50750
52556
|
capName: "pipeline-analytics",
|
|
50751
52557
|
capScope: "device",
|
|
50752
52558
|
addonId: null,
|
|
50753
52559
|
access: "create"
|
|
50754
52560
|
},
|
|
52561
|
+
"pipelineAnalytics.proposeRetrainAnnotationsWithLlm": {
|
|
52562
|
+
capName: "pipeline-analytics",
|
|
52563
|
+
capScope: "device",
|
|
52564
|
+
addonId: null,
|
|
52565
|
+
access: "create"
|
|
52566
|
+
},
|
|
50755
52567
|
"pipelineAnalytics.pruneEvents": {
|
|
50756
52568
|
capName: "pipeline-analytics",
|
|
50757
52569
|
capScope: "device",
|
|
@@ -50806,6 +52618,18 @@ var METHOD_ACCESS_MAP = Object.freeze({
|
|
|
50806
52618
|
addonId: null,
|
|
50807
52619
|
access: "create"
|
|
50808
52620
|
},
|
|
52621
|
+
"pipelineAnalytics.removeRetrainFrameFromCollection": {
|
|
52622
|
+
capName: "pipeline-analytics",
|
|
52623
|
+
capScope: "device",
|
|
52624
|
+
addonId: null,
|
|
52625
|
+
access: "delete"
|
|
52626
|
+
},
|
|
52627
|
+
"pipelineAnalytics.renameRetrainCollection": {
|
|
52628
|
+
capName: "pipeline-analytics",
|
|
52629
|
+
capScope: "device",
|
|
52630
|
+
addonId: null,
|
|
52631
|
+
access: "create"
|
|
52632
|
+
},
|
|
50809
52633
|
"pipelineAnalytics.restageRetrainTrack": {
|
|
50810
52634
|
capName: "pipeline-analytics",
|
|
50811
52635
|
capScope: "device",
|
|
@@ -50836,6 +52660,12 @@ var METHOD_ACCESS_MAP = Object.freeze({
|
|
|
50836
52660
|
addonId: null,
|
|
50837
52661
|
access: "create"
|
|
50838
52662
|
},
|
|
52663
|
+
"pipelineAnalytics.setRetrainFrameComplete": {
|
|
52664
|
+
capName: "pipeline-analytics",
|
|
52665
|
+
capScope: "device",
|
|
52666
|
+
addonId: null,
|
|
52667
|
+
access: "create"
|
|
52668
|
+
},
|
|
50839
52669
|
"pipelineAnalytics.setTrackFlags": {
|
|
50840
52670
|
capName: "pipeline-analytics",
|
|
50841
52671
|
capScope: "device",
|
|
@@ -50860,6 +52690,12 @@ var METHOD_ACCESS_MAP = Object.freeze({
|
|
|
50860
52690
|
addonId: null,
|
|
50861
52691
|
access: "create"
|
|
50862
52692
|
},
|
|
52693
|
+
"pipelineAnalytics.verifyRetrainDatasetVersion": {
|
|
52694
|
+
capName: "pipeline-analytics",
|
|
52695
|
+
capScope: "device",
|
|
52696
|
+
addonId: null,
|
|
52697
|
+
access: "view"
|
|
52698
|
+
},
|
|
50863
52699
|
"pipelineAnalytics.wipeAllAnalytics": {
|
|
50864
52700
|
capName: "pipeline-analytics",
|
|
50865
52701
|
capScope: "device",
|
|
@@ -50872,6 +52708,12 @@ var METHOD_ACCESS_MAP = Object.freeze({
|
|
|
50872
52708
|
addonId: null,
|
|
50873
52709
|
access: "delete"
|
|
50874
52710
|
},
|
|
52711
|
+
"pipelineAnalytics.writeRetrainArchive": {
|
|
52712
|
+
capName: "pipeline-analytics",
|
|
52713
|
+
capScope: "device",
|
|
52714
|
+
addonId: null,
|
|
52715
|
+
access: "create"
|
|
52716
|
+
},
|
|
50875
52717
|
"pipelineExecutor.cacheFrameInPool": {
|
|
50876
52718
|
capName: "pipeline-executor",
|
|
50877
52719
|
capScope: "system",
|
|
@@ -50884,13 +52726,13 @@ var METHOD_ACCESS_MAP = Object.freeze({
|
|
|
50884
52726
|
addonId: null,
|
|
50885
52727
|
access: "delete"
|
|
50886
52728
|
},
|
|
50887
|
-
"pipelineExecutor.
|
|
52729
|
+
"pipelineExecutor.clearModelBoundDeviceOverrides": {
|
|
50888
52730
|
capName: "pipeline-executor",
|
|
50889
52731
|
capScope: "system",
|
|
50890
52732
|
addonId: null,
|
|
50891
52733
|
access: "delete"
|
|
50892
52734
|
},
|
|
50893
|
-
"pipelineExecutor.
|
|
52735
|
+
"pipelineExecutor.deleteModel": {
|
|
50894
52736
|
capName: "pipeline-executor",
|
|
50895
52737
|
capScope: "system",
|
|
50896
52738
|
addonId: null,
|
|
@@ -51034,12 +52876,6 @@ var METHOD_ACCESS_MAP = Object.freeze({
|
|
|
51034
52876
|
addonId: null,
|
|
51035
52877
|
access: "view"
|
|
51036
52878
|
},
|
|
51037
|
-
"pipelineExecutor.listTemplates": {
|
|
51038
|
-
capName: "pipeline-executor",
|
|
51039
|
-
capScope: "system",
|
|
51040
|
-
addonId: null,
|
|
51041
|
-
access: "view"
|
|
51042
|
-
},
|
|
51043
52879
|
"pipelineExecutor.rearmInferenceDevice": {
|
|
51044
52880
|
capName: "pipeline-executor",
|
|
51045
52881
|
capScope: "system",
|
|
@@ -51064,12 +52900,6 @@ var METHOD_ACCESS_MAP = Object.freeze({
|
|
|
51064
52900
|
addonId: null,
|
|
51065
52901
|
access: "create"
|
|
51066
52902
|
},
|
|
51067
|
-
"pipelineExecutor.saveTemplate": {
|
|
51068
|
-
capName: "pipeline-executor",
|
|
51069
|
-
capScope: "system",
|
|
51070
|
-
addonId: null,
|
|
51071
|
-
access: "create"
|
|
51072
|
-
},
|
|
51073
52903
|
"pipelineExecutor.setVideoPipelineSteps": {
|
|
51074
52904
|
capName: "pipeline-executor",
|
|
51075
52905
|
capScope: "system",
|
|
@@ -51088,17 +52918,23 @@ var METHOD_ACCESS_MAP = Object.freeze({
|
|
|
51088
52918
|
addonId: null,
|
|
51089
52919
|
access: "create"
|
|
51090
52920
|
},
|
|
51091
|
-
"pipelineExecutor.
|
|
52921
|
+
"pipelineExecutor.validatePipeline": {
|
|
51092
52922
|
capName: "pipeline-executor",
|
|
51093
52923
|
capScope: "system",
|
|
51094
52924
|
addonId: null,
|
|
52925
|
+
access: "view"
|
|
52926
|
+
},
|
|
52927
|
+
"pipelineOrchestrator.abortNodeBenchmark": {
|
|
52928
|
+
capName: "pipeline-orchestrator",
|
|
52929
|
+
capScope: "system",
|
|
52930
|
+
addonId: null,
|
|
51095
52931
|
access: "create"
|
|
51096
52932
|
},
|
|
51097
|
-
"
|
|
51098
|
-
capName: "pipeline-
|
|
52933
|
+
"pipelineOrchestrator.applyAutoTune": {
|
|
52934
|
+
capName: "pipeline-orchestrator",
|
|
51099
52935
|
capScope: "system",
|
|
51100
52936
|
addonId: null,
|
|
51101
|
-
access: "
|
|
52937
|
+
access: "create"
|
|
51102
52938
|
},
|
|
51103
52939
|
"pipelineOrchestrator.applyDeviceSettingsPatch": {
|
|
51104
52940
|
capName: "pipeline-orchestrator",
|
|
@@ -51118,7 +52954,7 @@ var METHOD_ACCESS_MAP = Object.freeze({
|
|
|
51118
52954
|
addonId: null,
|
|
51119
52955
|
access: "create"
|
|
51120
52956
|
},
|
|
51121
|
-
"pipelineOrchestrator.
|
|
52957
|
+
"pipelineOrchestrator.deleteNodeBenchmarkResult": {
|
|
51122
52958
|
capName: "pipeline-orchestrator",
|
|
51123
52959
|
capScope: "system",
|
|
51124
52960
|
addonId: null,
|
|
@@ -51214,6 +53050,12 @@ var METHOD_ACCESS_MAP = Object.freeze({
|
|
|
51214
53050
|
addonId: null,
|
|
51215
53051
|
access: "view"
|
|
51216
53052
|
},
|
|
53053
|
+
"pipelineOrchestrator.getEffectiveShares": {
|
|
53054
|
+
capName: "pipeline-orchestrator",
|
|
53055
|
+
capScope: "system",
|
|
53056
|
+
addonId: null,
|
|
53057
|
+
access: "view"
|
|
53058
|
+
},
|
|
51217
53059
|
"pipelineOrchestrator.getGlobalMetrics": {
|
|
51218
53060
|
capName: "pipeline-orchestrator",
|
|
51219
53061
|
capScope: "system",
|
|
@@ -51226,6 +53068,24 @@ var METHOD_ACCESS_MAP = Object.freeze({
|
|
|
51226
53068
|
addonId: null,
|
|
51227
53069
|
access: "view"
|
|
51228
53070
|
},
|
|
53071
|
+
"pipelineOrchestrator.getNodeBenchmarkCandidates": {
|
|
53072
|
+
capName: "pipeline-orchestrator",
|
|
53073
|
+
capScope: "system",
|
|
53074
|
+
addonId: null,
|
|
53075
|
+
access: "view"
|
|
53076
|
+
},
|
|
53077
|
+
"pipelineOrchestrator.getNodeBenchmarkPreflight": {
|
|
53078
|
+
capName: "pipeline-orchestrator",
|
|
53079
|
+
capScope: "system",
|
|
53080
|
+
addonId: null,
|
|
53081
|
+
access: "view"
|
|
53082
|
+
},
|
|
53083
|
+
"pipelineOrchestrator.getNodeBenchmarkStatus": {
|
|
53084
|
+
capName: "pipeline-orchestrator",
|
|
53085
|
+
capScope: "system",
|
|
53086
|
+
addonId: null,
|
|
53087
|
+
access: "view"
|
|
53088
|
+
},
|
|
51229
53089
|
"pipelineOrchestrator.getNodeInferenceDevices": {
|
|
51230
53090
|
capName: "pipeline-orchestrator",
|
|
51231
53091
|
capScope: "system",
|
|
@@ -51250,6 +53110,12 @@ var METHOD_ACCESS_MAP = Object.freeze({
|
|
|
51250
53110
|
addonId: null,
|
|
51251
53111
|
access: "view"
|
|
51252
53112
|
},
|
|
53113
|
+
"pipelineOrchestrator.getPlacementStats": {
|
|
53114
|
+
capName: "pipeline-orchestrator",
|
|
53115
|
+
capScope: "system",
|
|
53116
|
+
addonId: null,
|
|
53117
|
+
access: "view"
|
|
53118
|
+
},
|
|
51253
53119
|
"pipelineOrchestrator.getReconcileFromDiskStatus": {
|
|
51254
53120
|
capName: "pipeline-orchestrator",
|
|
51255
53121
|
capScope: "system",
|
|
@@ -51262,7 +53128,7 @@ var METHOD_ACCESS_MAP = Object.freeze({
|
|
|
51262
53128
|
addonId: null,
|
|
51263
53129
|
access: "view"
|
|
51264
53130
|
},
|
|
51265
|
-
"pipelineOrchestrator.
|
|
53131
|
+
"pipelineOrchestrator.listNodeBenchmarkResults": {
|
|
51266
53132
|
capName: "pipeline-orchestrator",
|
|
51267
53133
|
capScope: "system",
|
|
51268
53134
|
addonId: null,
|
|
@@ -51274,6 +53140,12 @@ var METHOD_ACCESS_MAP = Object.freeze({
|
|
|
51274
53140
|
addonId: null,
|
|
51275
53141
|
access: "create"
|
|
51276
53142
|
},
|
|
53143
|
+
"pipelineOrchestrator.planAutoTune": {
|
|
53144
|
+
capName: "pipeline-orchestrator",
|
|
53145
|
+
capScope: "system",
|
|
53146
|
+
addonId: null,
|
|
53147
|
+
access: "view"
|
|
53148
|
+
},
|
|
51277
53149
|
"pipelineOrchestrator.rebalance": {
|
|
51278
53150
|
capName: "pipeline-orchestrator",
|
|
51279
53151
|
capScope: "system",
|
|
@@ -51316,12 +53188,6 @@ var METHOD_ACCESS_MAP = Object.freeze({
|
|
|
51316
53188
|
addonId: null,
|
|
51317
53189
|
access: "create"
|
|
51318
53190
|
},
|
|
51319
|
-
"pipelineOrchestrator.saveTemplate": {
|
|
51320
|
-
capName: "pipeline-orchestrator",
|
|
51321
|
-
capScope: "system",
|
|
51322
|
-
addonId: null,
|
|
51323
|
-
access: "create"
|
|
51324
|
-
},
|
|
51325
53191
|
"pipelineOrchestrator.setAgentCapabilities": {
|
|
51326
53192
|
capName: "pipeline-orchestrator",
|
|
51327
53193
|
capScope: "system",
|
|
@@ -51334,12 +53200,6 @@ var METHOD_ACCESS_MAP = Object.freeze({
|
|
|
51334
53200
|
addonId: null,
|
|
51335
53201
|
access: "create"
|
|
51336
53202
|
},
|
|
51337
|
-
"pipelineOrchestrator.setAgentDetectWeight": {
|
|
51338
|
-
capName: "pipeline-orchestrator",
|
|
51339
|
-
capScope: "system",
|
|
51340
|
-
addonId: null,
|
|
51341
|
-
access: "create"
|
|
51342
|
-
},
|
|
51343
53203
|
"pipelineOrchestrator.setAgentInferenceDevices": {
|
|
51344
53204
|
capName: "pipeline-orchestrator",
|
|
51345
53205
|
capScope: "system",
|
|
@@ -51376,6 +53236,12 @@ var METHOD_ACCESS_MAP = Object.freeze({
|
|
|
51376
53236
|
addonId: null,
|
|
51377
53237
|
access: "create"
|
|
51378
53238
|
},
|
|
53239
|
+
"pipelineOrchestrator.setCameraStepSettings": {
|
|
53240
|
+
capName: "pipeline-orchestrator",
|
|
53241
|
+
capScope: "system",
|
|
53242
|
+
addonId: null,
|
|
53243
|
+
access: "create"
|
|
53244
|
+
},
|
|
51379
53245
|
"pipelineOrchestrator.setCameraStepToggle": {
|
|
51380
53246
|
capName: "pipeline-orchestrator",
|
|
51381
53247
|
capScope: "system",
|
|
@@ -51394,12 +53260,36 @@ var METHOD_ACCESS_MAP = Object.freeze({
|
|
|
51394
53260
|
addonId: null,
|
|
51395
53261
|
access: "create"
|
|
51396
53262
|
},
|
|
53263
|
+
"pipelineOrchestrator.setLoadBalancingShares": {
|
|
53264
|
+
capName: "pipeline-orchestrator",
|
|
53265
|
+
capScope: "system",
|
|
53266
|
+
addonId: null,
|
|
53267
|
+
access: "create"
|
|
53268
|
+
},
|
|
51397
53269
|
"pipelineOrchestrator.setPipelineDevicePin": {
|
|
51398
53270
|
capName: "pipeline-orchestrator",
|
|
51399
53271
|
capScope: "system",
|
|
51400
53272
|
addonId: null,
|
|
51401
53273
|
access: "create"
|
|
51402
53274
|
},
|
|
53275
|
+
"pipelineOrchestrator.setShareSource": {
|
|
53276
|
+
capName: "pipeline-orchestrator",
|
|
53277
|
+
capScope: "system",
|
|
53278
|
+
addonId: null,
|
|
53279
|
+
access: "create"
|
|
53280
|
+
},
|
|
53281
|
+
"pipelineOrchestrator.startNodeBenchmark": {
|
|
53282
|
+
capName: "pipeline-orchestrator",
|
|
53283
|
+
capScope: "system",
|
|
53284
|
+
addonId: null,
|
|
53285
|
+
access: "create"
|
|
53286
|
+
},
|
|
53287
|
+
"pipelineOrchestrator.suggestShares": {
|
|
53288
|
+
capName: "pipeline-orchestrator",
|
|
53289
|
+
capScope: "system",
|
|
53290
|
+
addonId: null,
|
|
53291
|
+
access: "view"
|
|
53292
|
+
},
|
|
51403
53293
|
"pipelineOrchestrator.unassignAudio": {
|
|
51404
53294
|
capName: "pipeline-orchestrator",
|
|
51405
53295
|
capScope: "system",
|
|
@@ -51412,8 +53302,8 @@ var METHOD_ACCESS_MAP = Object.freeze({
|
|
|
51412
53302
|
addonId: null,
|
|
51413
53303
|
access: "create"
|
|
51414
53304
|
},
|
|
51415
|
-
"
|
|
51416
|
-
capName: "pipeline-
|
|
53305
|
+
"pipelineRunner.abortNodeBench": {
|
|
53306
|
+
capName: "pipeline-runner",
|
|
51417
53307
|
capScope: "system",
|
|
51418
53308
|
addonId: null,
|
|
51419
53309
|
access: "create"
|
|
@@ -51466,6 +53356,12 @@ var METHOD_ACCESS_MAP = Object.freeze({
|
|
|
51466
53356
|
addonId: null,
|
|
51467
53357
|
access: "view"
|
|
51468
53358
|
},
|
|
53359
|
+
"pipelineRunner.getNodeBenchStatus": {
|
|
53360
|
+
capName: "pipeline-runner",
|
|
53361
|
+
capScope: "system",
|
|
53362
|
+
addonId: null,
|
|
53363
|
+
access: "view"
|
|
53364
|
+
},
|
|
51469
53365
|
"pipelineRunner.getParkedTrackFrame": {
|
|
51470
53366
|
capName: "pipeline-runner",
|
|
51471
53367
|
capScope: "system",
|
|
@@ -51508,6 +53404,12 @@ var METHOD_ACCESS_MAP = Object.freeze({
|
|
|
51508
53404
|
addonId: null,
|
|
51509
53405
|
access: "create"
|
|
51510
53406
|
},
|
|
53407
|
+
"pipelineRunner.startNodeBench": {
|
|
53408
|
+
capName: "pipeline-runner",
|
|
53409
|
+
capScope: "system",
|
|
53410
|
+
addonId: null,
|
|
53411
|
+
access: "create"
|
|
53412
|
+
},
|
|
51511
53413
|
"plateGallery.assignPlate": {
|
|
51512
53414
|
capName: "plate-gallery",
|
|
51513
53415
|
capScope: "system",
|
|
@@ -52852,12 +54754,6 @@ var METHOD_ACCESS_MAP = Object.freeze({
|
|
|
52852
54754
|
addonId: null,
|
|
52853
54755
|
access: "view"
|
|
52854
54756
|
},
|
|
52855
|
-
"streamBroker.pullFrameHandles": {
|
|
52856
|
-
capName: "stream-broker",
|
|
52857
|
-
capScope: "system",
|
|
52858
|
-
addonId: null,
|
|
52859
|
-
access: "view"
|
|
52860
|
-
},
|
|
52861
54757
|
"streamBroker.regenerateRtspToken": {
|
|
52862
54758
|
capName: "stream-broker",
|
|
52863
54759
|
capScope: "system",
|
|
@@ -52924,12 +54820,6 @@ var METHOD_ACCESS_MAP = Object.freeze({
|
|
|
52924
54820
|
addonId: null,
|
|
52925
54821
|
access: "create"
|
|
52926
54822
|
},
|
|
52927
|
-
"streamBroker.subscribeFrames": {
|
|
52928
|
-
capName: "stream-broker",
|
|
52929
|
-
capScope: "system",
|
|
52930
|
-
addonId: null,
|
|
52931
|
-
access: "create"
|
|
52932
|
-
},
|
|
52933
54823
|
"streamBroker.unassignProfile": {
|
|
52934
54824
|
capName: "stream-broker",
|
|
52935
54825
|
capScope: "system",
|
|
@@ -52942,12 +54832,6 @@ var METHOD_ACCESS_MAP = Object.freeze({
|
|
|
52942
54832
|
addonId: null,
|
|
52943
54833
|
access: "create"
|
|
52944
54834
|
},
|
|
52945
|
-
"streamBroker.unsubscribeFrames": {
|
|
52946
|
-
capName: "stream-broker",
|
|
52947
|
-
capScope: "system",
|
|
52948
|
-
addonId: null,
|
|
52949
|
-
access: "create"
|
|
52950
|
-
},
|
|
52951
54835
|
"streamCatalog.getCatalog": {
|
|
52952
54836
|
capName: "stream-catalog",
|
|
52953
54837
|
capScope: "device",
|
|
@@ -53242,18 +55126,36 @@ var METHOD_ACCESS_MAP = Object.freeze({
|
|
|
53242
55126
|
addonId: null,
|
|
53243
55127
|
access: "delete"
|
|
53244
55128
|
},
|
|
55129
|
+
"userManagement.findUserByExternalIdentity": {
|
|
55130
|
+
capName: "user-management",
|
|
55131
|
+
capScope: "system",
|
|
55132
|
+
addonId: null,
|
|
55133
|
+
access: "view"
|
|
55134
|
+
},
|
|
53245
55135
|
"userManagement.getTotpStatus": {
|
|
53246
55136
|
capName: "user-management",
|
|
53247
55137
|
capScope: "system",
|
|
53248
55138
|
addonId: null,
|
|
53249
55139
|
access: "view"
|
|
53250
55140
|
},
|
|
55141
|
+
"userManagement.linkExternalIdentity": {
|
|
55142
|
+
capName: "user-management",
|
|
55143
|
+
capScope: "system",
|
|
55144
|
+
addonId: null,
|
|
55145
|
+
access: "create"
|
|
55146
|
+
},
|
|
53251
55147
|
"userManagement.listApiKeys": {
|
|
53252
55148
|
capName: "user-management",
|
|
53253
55149
|
capScope: "system",
|
|
53254
55150
|
addonId: null,
|
|
53255
55151
|
access: "view"
|
|
53256
55152
|
},
|
|
55153
|
+
"userManagement.listExternalIdentities": {
|
|
55154
|
+
capName: "user-management",
|
|
55155
|
+
capScope: "system",
|
|
55156
|
+
addonId: null,
|
|
55157
|
+
access: "view"
|
|
55158
|
+
},
|
|
53257
55159
|
"userManagement.listOauthSessions": {
|
|
53258
55160
|
capName: "user-management",
|
|
53259
55161
|
capScope: "system",
|
|
@@ -53332,6 +55234,12 @@ var METHOD_ACCESS_MAP = Object.freeze({
|
|
|
53332
55234
|
addonId: null,
|
|
53333
55235
|
access: "create"
|
|
53334
55236
|
},
|
|
55237
|
+
"userManagement.unlinkExternalIdentity": {
|
|
55238
|
+
capName: "user-management",
|
|
55239
|
+
capScope: "system",
|
|
55240
|
+
addonId: null,
|
|
55241
|
+
access: "delete"
|
|
55242
|
+
},
|
|
53335
55243
|
"userManagement.updateUser": {
|
|
53336
55244
|
capName: "user-management",
|
|
53337
55245
|
capScope: "system",
|
|
@@ -53644,6 +55552,12 @@ var METHOD_ACCESS_MAP = Object.freeze({
|
|
|
53644
55552
|
addonId: null,
|
|
53645
55553
|
access: "create"
|
|
53646
55554
|
},
|
|
55555
|
+
"webrtcSession.applyDownlinkProbe": {
|
|
55556
|
+
capName: "webrtc-session",
|
|
55557
|
+
capScope: "device",
|
|
55558
|
+
addonId: null,
|
|
55559
|
+
access: "create"
|
|
55560
|
+
},
|
|
53647
55561
|
"webrtcSession.closeSession": {
|
|
53648
55562
|
capName: "webrtc-session",
|
|
53649
55563
|
capScope: "device",
|
|
@@ -55497,11 +57411,6 @@ var METHOD_DEVICE_SELECTORS = Object.freeze({
|
|
|
55497
57411
|
form: "single",
|
|
55498
57412
|
optional: false
|
|
55499
57413
|
}],
|
|
55500
|
-
"decoder.createSession": [{
|
|
55501
|
-
name: "deviceId",
|
|
55502
|
-
form: "single",
|
|
55503
|
-
optional: true
|
|
55504
|
-
}],
|
|
55505
57414
|
"detectionPipeline.applyDeviceSettingsPatch": [{
|
|
55506
57415
|
name: "deviceId",
|
|
55507
57416
|
form: "single",
|
|
@@ -56472,6 +58381,11 @@ var METHOD_DEVICE_SELECTORS = Object.freeze({
|
|
|
56472
58381
|
form: "single",
|
|
56473
58382
|
optional: false
|
|
56474
58383
|
}],
|
|
58384
|
+
"pipelineAnalytics.addRetrainFrameFromRecording": [{
|
|
58385
|
+
name: "deviceId",
|
|
58386
|
+
form: "single",
|
|
58387
|
+
optional: false
|
|
58388
|
+
}],
|
|
56475
58389
|
"pipelineAnalytics.applyDeviceSettingsPatch": [{
|
|
56476
58390
|
name: "deviceId",
|
|
56477
58391
|
form: "single",
|
|
@@ -56662,6 +58576,11 @@ var METHOD_DEVICE_SELECTORS = Object.freeze({
|
|
|
56662
58576
|
form: "single",
|
|
56663
58577
|
optional: false
|
|
56664
58578
|
}],
|
|
58579
|
+
"pipelineAnalytics.proposeRetrainAnnotationsWithLlm": [{
|
|
58580
|
+
name: "deviceId",
|
|
58581
|
+
form: "single",
|
|
58582
|
+
optional: false
|
|
58583
|
+
}],
|
|
56665
58584
|
"pipelineAnalytics.pruneEventsBefore": [{
|
|
56666
58585
|
name: "deviceId",
|
|
56667
58586
|
form: "single",
|
|
@@ -56712,6 +58631,11 @@ var METHOD_DEVICE_SELECTORS = Object.freeze({
|
|
|
56712
58631
|
form: "single",
|
|
56713
58632
|
optional: false
|
|
56714
58633
|
}],
|
|
58634
|
+
"pipelineAnalytics.setRetrainFrameComplete": [{
|
|
58635
|
+
name: "deviceId",
|
|
58636
|
+
form: "single",
|
|
58637
|
+
optional: false
|
|
58638
|
+
}],
|
|
56715
58639
|
"pipelineAnalytics.setTrackFlags": [{
|
|
56716
58640
|
name: "deviceId",
|
|
56717
58641
|
form: "single",
|
|
@@ -56732,6 +58656,11 @@ var METHOD_DEVICE_SELECTORS = Object.freeze({
|
|
|
56732
58656
|
form: "single",
|
|
56733
58657
|
optional: false
|
|
56734
58658
|
}],
|
|
58659
|
+
"pipelineExecutor.clearModelBoundDeviceOverrides": [{
|
|
58660
|
+
name: "deviceIds",
|
|
58661
|
+
form: "array",
|
|
58662
|
+
optional: true
|
|
58663
|
+
}],
|
|
56735
58664
|
"pipelineExecutor.runPipeline": [{
|
|
56736
58665
|
name: "deviceId",
|
|
56737
58666
|
form: "single",
|
|
@@ -56837,6 +58766,11 @@ var METHOD_DEVICE_SELECTORS = Object.freeze({
|
|
|
56837
58766
|
form: "single",
|
|
56838
58767
|
optional: false
|
|
56839
58768
|
}],
|
|
58769
|
+
"pipelineOrchestrator.setCameraStepSettings": [{
|
|
58770
|
+
name: "deviceId",
|
|
58771
|
+
form: "single",
|
|
58772
|
+
optional: false
|
|
58773
|
+
}],
|
|
56840
58774
|
"pipelineOrchestrator.setCameraStepToggle": [{
|
|
56841
58775
|
name: "deviceId",
|
|
56842
58776
|
form: "single",
|
|
@@ -57608,6 +59542,11 @@ var METHOD_DEVICE_SELECTORS = Object.freeze({
|
|
|
57608
59542
|
form: "single",
|
|
57609
59543
|
optional: false
|
|
57610
59544
|
}],
|
|
59545
|
+
"webrtcSession.applyDownlinkProbe": [{
|
|
59546
|
+
name: "deviceId",
|
|
59547
|
+
form: "single",
|
|
59548
|
+
optional: false
|
|
59549
|
+
}],
|
|
57611
59550
|
"webrtcSession.closeSession": [{
|
|
57612
59551
|
name: "deviceId",
|
|
57613
59552
|
form: "single",
|
|
@@ -57758,6 +59697,8 @@ var NC_SYSTEM_EVENT_FAMILY = {
|
|
|
57758
59697
|
"detection-blind": "device-events",
|
|
57759
59698
|
"node-online": "system",
|
|
57760
59699
|
"node-offline": "system",
|
|
59700
|
+
"node-restarting": "system",
|
|
59701
|
+
"node-updating": "system",
|
|
57761
59702
|
"node-inference-unavailable": "system",
|
|
57762
59703
|
"addon-crash-loop": "system",
|
|
57763
59704
|
"addon-update-available": "system",
|
|
@@ -57836,6 +59777,7 @@ var NC_SYSTEM_EVENT_KIND_GROUP_SPECS = [
|
|
|
57836
59777
|
kinds: [
|
|
57837
59778
|
"node-offline",
|
|
57838
59779
|
"node-online",
|
|
59780
|
+
"node-restarting",
|
|
57839
59781
|
"node-inference-unavailable"
|
|
57840
59782
|
]
|
|
57841
59783
|
},
|
|
@@ -57857,6 +59799,7 @@ var NC_SYSTEM_EVENT_KIND_GROUP_SPECS = [
|
|
|
57857
59799
|
label: "Server & container updates",
|
|
57858
59800
|
kinds: [
|
|
57859
59801
|
"server-update-available",
|
|
59802
|
+
"node-updating",
|
|
57860
59803
|
"server-updated",
|
|
57861
59804
|
"wrapper-update-available"
|
|
57862
59805
|
]
|
|
@@ -57978,6 +59921,7 @@ var STATE_SUMMARY_SECTION_VARS = [
|
|
|
57978
59921
|
kinds: [
|
|
57979
59922
|
"node-offline",
|
|
57980
59923
|
"node-online",
|
|
59924
|
+
"node-restarting",
|
|
57981
59925
|
"node-inference-unavailable"
|
|
57982
59926
|
]
|
|
57983
59927
|
},
|
|
@@ -57999,6 +59943,7 @@ var STATE_SUMMARY_SECTION_VARS = [
|
|
|
57999
59943
|
example: "server 1.2.377 \u2192 1.2.378",
|
|
58000
59944
|
kinds: [
|
|
58001
59945
|
"server-update-available",
|
|
59946
|
+
"node-updating",
|
|
58002
59947
|
"server-updated",
|
|
58003
59948
|
"wrapper-update-available"
|
|
58004
59949
|
]
|
|
@@ -58031,7 +59976,7 @@ var STATE_SUMMARY_VARS = [
|
|
|
58031
59976
|
{
|
|
58032
59977
|
name: "summarySection",
|
|
58033
59978
|
label: "Summary: this section",
|
|
58034
|
-
description: "The section a per-section summary row is about
|
|
59979
|
+
description: "The section a per-section summary row is about; on a summary sent as one message, every section it reports, comma-separated.",
|
|
58035
59980
|
example: "Batterie scariche",
|
|
58036
59981
|
group: "system",
|
|
58037
59982
|
families: ["rule"],
|
|
@@ -58404,6 +60349,8 @@ var NC_TEMPLATE_VARS = [
|
|
|
58404
60349
|
systemEventKinds: [
|
|
58405
60350
|
"node-online",
|
|
58406
60351
|
"node-offline",
|
|
60352
|
+
"node-restarting",
|
|
60353
|
+
"node-updating",
|
|
58407
60354
|
"node-inference-unavailable",
|
|
58408
60355
|
"addon-crash-loop",
|
|
58409
60356
|
...UPDATES,
|
|
@@ -58422,6 +60369,8 @@ var NC_TEMPLATE_VARS = [
|
|
|
58422
60369
|
systemEventKinds: [
|
|
58423
60370
|
"node-online",
|
|
58424
60371
|
"node-offline",
|
|
60372
|
+
"node-restarting",
|
|
60373
|
+
"node-updating",
|
|
58425
60374
|
"node-inference-unavailable",
|
|
58426
60375
|
"addon-crash-loop",
|
|
58427
60376
|
...UPDATES,
|
|
@@ -58475,6 +60424,7 @@ var NC_TEMPLATE_VARS = [
|
|
|
58475
60424
|
systemEventKinds: [
|
|
58476
60425
|
...UPDATES,
|
|
58477
60426
|
"addon-updated",
|
|
60427
|
+
"node-updating",
|
|
58478
60428
|
"server-updated"
|
|
58479
60429
|
]
|
|
58480
60430
|
},
|
|
@@ -58486,7 +60436,11 @@ var NC_TEMPLATE_VARS = [
|
|
|
58486
60436
|
families: ["rule"],
|
|
58487
60437
|
fields: [...RULE_TEXT],
|
|
58488
60438
|
kinds: ["system"],
|
|
58489
|
-
systemEventKinds: [
|
|
60439
|
+
systemEventKinds: [
|
|
60440
|
+
...PACKAGE_UPDATES,
|
|
60441
|
+
"node-updating",
|
|
60442
|
+
"server-updated"
|
|
60443
|
+
]
|
|
58490
60444
|
},
|
|
58491
60445
|
{
|
|
58492
60446
|
name: "nodes",
|
|
@@ -58538,7 +60492,7 @@ var NC_TEMPLATE_VARS = [
|
|
|
58538
60492
|
families: ["rule"],
|
|
58539
60493
|
fields: [...RULE_TEXT],
|
|
58540
60494
|
kinds: ["system"],
|
|
58541
|
-
systemEventKinds: ["server-updated"]
|
|
60495
|
+
systemEventKinds: ["node-updating", "server-updated"]
|
|
58542
60496
|
},
|
|
58543
60497
|
{
|
|
58544
60498
|
name: "toVersion",
|
|
@@ -58548,7 +60502,7 @@ var NC_TEMPLATE_VARS = [
|
|
|
58548
60502
|
families: ["rule"],
|
|
58549
60503
|
fields: [...RULE_TEXT],
|
|
58550
60504
|
kinds: ["system"],
|
|
58551
|
-
systemEventKinds: ["server-updated"]
|
|
60505
|
+
systemEventKinds: ["node-updating", "server-updated"]
|
|
58552
60506
|
},
|
|
58553
60507
|
{
|
|
58554
60508
|
name: "destinationsOk",
|
|
@@ -59015,6 +60969,7 @@ var TimelapseRuleSchema = TimelapseRuleInputSchema.extend({
|
|
|
59015
60969
|
updatedAt: external_exports.number()
|
|
59016
60970
|
});
|
|
59017
60971
|
var ProviderMotionDataSchema = MotionOnMotionChangedDataSchema.omit({ triggeredBy: true });
|
|
60972
|
+
var OVERHEAD_MS = 3 * 6e4;
|
|
59018
60973
|
var DetailCropConventionSchema = external_exports.object({
|
|
59019
60974
|
/**
|
|
59020
60975
|
* Fraction of the box's own size added on EACH side before cutting.
|