@camstack/addon-provider-rtsp 1.2.26 → 1.2.27
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/addon.js +248 -16
- package/dist/addon.mjs +248 -16
- package/package.json +1 -1
package/dist/addon.js
CHANGED
|
@@ -8076,6 +8076,15 @@ var LabelDefinitionSchema = object({
|
|
|
8076
8076
|
description: string().optional(),
|
|
8077
8077
|
icon: string().optional()
|
|
8078
8078
|
});
|
|
8079
|
+
var ClassMapDefinitionSchema = object({
|
|
8080
|
+
mapping: record(string(), _enum([
|
|
8081
|
+
"person",
|
|
8082
|
+
"vehicle",
|
|
8083
|
+
"animal",
|
|
8084
|
+
"package"
|
|
8085
|
+
])),
|
|
8086
|
+
preserveOriginal: boolean()
|
|
8087
|
+
});
|
|
8079
8088
|
var MODEL_FORMATS = [
|
|
8080
8089
|
"onnx",
|
|
8081
8090
|
"coreml",
|
|
@@ -8254,7 +8263,13 @@ var ModelCatalogEntrySchema = object({
|
|
|
8254
8263
|
* `id` stays the source of truth for resolution/download/persistence; grouping
|
|
8255
8264
|
* is a presentation overlay resolved back to an `id`.
|
|
8256
8265
|
*/
|
|
8257
|
-
group: ModelVariantGroupSchema.optional()
|
|
8266
|
+
group: ModelVariantGroupSchema.optional(),
|
|
8267
|
+
/**
|
|
8268
|
+
* Per-MODEL class map override. Absent ⇒ the step's `StepDefinition.classMap`
|
|
8269
|
+
* applies (Frigate / COCO public catalog). Set on a custom model whose raw
|
|
8270
|
+
* labels already ARE the CamStack macros (Scrypted identity map).
|
|
8271
|
+
*/
|
|
8272
|
+
classMap: ClassMapDefinitionSchema.optional()
|
|
8258
8273
|
});
|
|
8259
8274
|
var ConvertTargetSchema = discriminatedUnion("format", [object({
|
|
8260
8275
|
format: literal("openvino"),
|
|
@@ -8283,7 +8298,8 @@ var ModelConvertMetadataSchema = object({
|
|
|
8283
8298
|
"ocr",
|
|
8284
8299
|
"segmentation"
|
|
8285
8300
|
]),
|
|
8286
|
-
faceAlignment: boolean().optional()
|
|
8301
|
+
faceAlignment: boolean().optional(),
|
|
8302
|
+
classMap: ClassMapDefinitionSchema.optional()
|
|
8287
8303
|
});
|
|
8288
8304
|
var ConvertResultSchema = object({
|
|
8289
8305
|
entry: ModelCatalogEntrySchema,
|
|
@@ -17576,6 +17592,33 @@ var NativeCropRefSchema = object({
|
|
|
17576
17592
|
h: number()
|
|
17577
17593
|
})
|
|
17578
17594
|
});
|
|
17595
|
+
object({
|
|
17596
|
+
crop: object({
|
|
17597
|
+
left: number(),
|
|
17598
|
+
top: number(),
|
|
17599
|
+
width: number().positive(),
|
|
17600
|
+
height: number().positive()
|
|
17601
|
+
}).optional(),
|
|
17602
|
+
content: object({
|
|
17603
|
+
width: number().int().positive(),
|
|
17604
|
+
height: number().int().positive()
|
|
17605
|
+
}),
|
|
17606
|
+
fit: _enum(["stretch", "contain"]),
|
|
17607
|
+
format: _enum([
|
|
17608
|
+
"rgb",
|
|
17609
|
+
"gray",
|
|
17610
|
+
"jpeg"
|
|
17611
|
+
])
|
|
17612
|
+
});
|
|
17613
|
+
var FrameRefSchema = object({
|
|
17614
|
+
registryId: string().min(1),
|
|
17615
|
+
id: string().min(1),
|
|
17616
|
+
width: number().int().positive(),
|
|
17617
|
+
height: number().int().positive(),
|
|
17618
|
+
format: _enum(["rgb", "gray"]),
|
|
17619
|
+
timestamp: number(),
|
|
17620
|
+
capturedAt: number().optional()
|
|
17621
|
+
});
|
|
17579
17622
|
var ModelFormatSchema$1 = _enum([
|
|
17580
17623
|
"onnx",
|
|
17581
17624
|
"coreml",
|
|
@@ -17820,6 +17863,12 @@ method(_void(), array(PipelineEngineChoiceSchema)), method(_void(), PipelineEngi
|
|
|
17820
17863
|
steps: array(PipelineStepInputSchema).min(1),
|
|
17821
17864
|
frame: FrameInputSchema.optional(),
|
|
17822
17865
|
/**
|
|
17866
|
+
* Process-local lazy frame. Valid only when caller and provider resolve
|
|
17867
|
+
* in the same execution-group process; split/cross-node callers use
|
|
17868
|
+
* `frame`/`image` inline compatibility instead.
|
|
17869
|
+
*/
|
|
17870
|
+
frameRef: FrameRefSchema.optional(),
|
|
17871
|
+
/**
|
|
17823
17872
|
* CB5 shm passthrough — a `FrameHandle` naming the same ring slot
|
|
17824
17873
|
* the decoded pixels live in. One more member of the one-of
|
|
17825
17874
|
* frame/frameHandle/image/imageBase64/referenceImage group.
|
|
@@ -18115,7 +18164,10 @@ var NativeCropResultSchema = object({
|
|
|
18115
18164
|
* Which source served this crop, so a quality-sensitive consumer (the native
|
|
18116
18165
|
* `keyFrame`) can reject a degraded fallback:
|
|
18117
18166
|
* - `native` — cut from the decode worker's retained NATIVE surface (the
|
|
18118
|
-
* quality path).
|
|
18167
|
+
* quality path). A subject-tile serve is also native-resolution and stays
|
|
18168
|
+
* `native` here: the public enum cannot name `tile` without a breaking cap
|
|
18169
|
+
* change. Runner telemetry distinguishes lease vs tile via `source` on the
|
|
18170
|
+
* internal crop result (`nativeHits` vs `tileHits`).
|
|
18119
18171
|
* - `ram-fullframe` — the native surface MISSED but the request was full-frame,
|
|
18120
18172
|
* so the ≤640 RAM `RetainedFrameStore` served it (honest lower-res; legit for
|
|
18121
18173
|
* the blank-frame guard / 640-snapshot resolve, NOT for the clean keyFrame).
|
|
@@ -18606,12 +18658,41 @@ var RunnerLocalLoadSchema = object({
|
|
|
18606
18658
|
* legacy `OrchestratorMetricsSchema` shape so existing dashboards keep
|
|
18607
18659
|
* working unchanged when they switch to reading from the runner cap.
|
|
18608
18660
|
*/
|
|
18661
|
+
var FrameLazyCountersSchema = object({
|
|
18662
|
+
framesDecoded: number(),
|
|
18663
|
+
framesAdmitted: number(),
|
|
18664
|
+
framesDroppedPixelFree: number(),
|
|
18665
|
+
viewsMaterialized: number(),
|
|
18666
|
+
viewsSkipped: number(),
|
|
18667
|
+
workerToRunnerBytes: number(),
|
|
18668
|
+
runnerToPoolRawBytes: number(),
|
|
18669
|
+
runnerToPoolJpegBytes: number(),
|
|
18670
|
+
onDemandFullFrameRequests: number(),
|
|
18671
|
+
onDemandCropRequests: number(),
|
|
18672
|
+
nativeHits: number(),
|
|
18673
|
+
nativeMisses: number(),
|
|
18674
|
+
tileHits: number(),
|
|
18675
|
+
tileMisses: number(),
|
|
18676
|
+
fallbackHits: number(),
|
|
18677
|
+
fallbackMisses: number(),
|
|
18678
|
+
retainedWritesAvoided: number(),
|
|
18679
|
+
residentRefs: number(),
|
|
18680
|
+
residentBytes: number(),
|
|
18681
|
+
releases: number(),
|
|
18682
|
+
evictions: number(),
|
|
18683
|
+
staleMisses: number()
|
|
18684
|
+
});
|
|
18685
|
+
var FrameLazyMetricsSchema = object({
|
|
18686
|
+
node: FrameLazyCountersSchema,
|
|
18687
|
+
cameras: array(FrameLazyCountersSchema.extend({ deviceId: number() }))
|
|
18688
|
+
});
|
|
18609
18689
|
var RunnerLocalMetricsSchema = object({
|
|
18610
18690
|
nodeId: string(),
|
|
18611
18691
|
activeCameras: number(),
|
|
18612
18692
|
throttledCameras: number(),
|
|
18613
18693
|
avgInferenceTimeMs: number(),
|
|
18614
|
-
queueDepth: number()
|
|
18694
|
+
queueDepth: number(),
|
|
18695
|
+
frameLazy: FrameLazyMetricsSchema.optional()
|
|
18615
18696
|
});
|
|
18616
18697
|
method(RunnerCameraConfigSchema, object({ success: literal(true) }), { kind: "mutation" }), method(object({ deviceId: number() }), object({ success: literal(true) }), { kind: "mutation" }), method(ReportMotionInputSchema, object({ success: literal(true) }), { kind: "mutation" }), method(_void(), RunnerLocalLoadSchema), method(_void(), RunnerLocalMetricsSchema), method(object({ deviceId: number() }), CameraMetricsSchema.nullable()), method(_void(), array(CameraMetricsWithDeviceIdSchema).readonly()), method(_void(), array(number()).readonly()), method(object({
|
|
18617
18698
|
handle: FrameHandleSchema,
|
|
@@ -20015,6 +20096,9 @@ method(_void(), ProviderInfoSchema), method(object({ config: record(string(), un
|
|
|
20015
20096
|
location: StorageLocationSchema,
|
|
20016
20097
|
relativePath: string()
|
|
20017
20098
|
}), _void(), { kind: "mutation" }), method(object({ location: StorageLocationSchema }), number().nullable()), method(BeginUploadInputSchema, BeginUploadResultSchema, { kind: "mutation" }), method(WriteChunkInputSchema, _void(), { kind: "mutation" }), method(FinalizeUploadInputSchema, _void(), { kind: "mutation" }), method(AbortUploadInputSchema, _void(), { kind: "mutation" }), method(BeginDownloadInputSchema, BeginDownloadResultSchema, { kind: "mutation" }), method(ReadChunkInputSchema, _instanceof(Uint8Array)), method(EndDownloadInputSchema, _void(), { kind: "mutation" });
|
|
20099
|
+
/** Profile-exported FormBuilder schema. Shape is ConfigUISchema at the UI. */
|
|
20100
|
+
var ProfileSettingsSchemaBridge = unknown().nullable();
|
|
20101
|
+
var ProfileSettingsBagSchema = record(string(), unknown());
|
|
20018
20102
|
/**
|
|
20019
20103
|
* A live terminal session hosted by the provider addon. Output and input do
|
|
20020
20104
|
* NOT flow through the capability — they use the addon data plane
|
|
@@ -20044,7 +20128,14 @@ var TerminalSessionInfoSchema = object({
|
|
|
20044
20128
|
var TerminalProfileInfoSchema = object({
|
|
20045
20129
|
profileId: string(),
|
|
20046
20130
|
label: string(),
|
|
20047
|
-
description: string().optional()
|
|
20131
|
+
description: string().optional(),
|
|
20132
|
+
/** Spawn defaults the instance form copies on create. */
|
|
20133
|
+
executable: string().optional(),
|
|
20134
|
+
args: array(string()).readonly().optional(),
|
|
20135
|
+
cwd: string().optional(),
|
|
20136
|
+
environment: array(string()).readonly().optional(),
|
|
20137
|
+
/** ConfigUISchema for instance knobs, or null when the profile has none. */
|
|
20138
|
+
settingsSchema: ProfileSettingsSchemaBridge.optional()
|
|
20048
20139
|
});
|
|
20049
20140
|
/**
|
|
20050
20141
|
* A durable operator-created Terminal instance. Profiles are templates; only
|
|
@@ -20057,7 +20148,12 @@ var TerminalInstanceInfoSchema = object({
|
|
|
20057
20148
|
profileId: string(),
|
|
20058
20149
|
profileLabel: string(),
|
|
20059
20150
|
name: string(),
|
|
20060
|
-
enabled: boolean()
|
|
20151
|
+
enabled: boolean(),
|
|
20152
|
+
executable: string(),
|
|
20153
|
+
args: array(string()).readonly(),
|
|
20154
|
+
cwd: string(),
|
|
20155
|
+
environment: array(string()).readonly(),
|
|
20156
|
+
profileSettings: ProfileSettingsBagSchema
|
|
20061
20157
|
});
|
|
20062
20158
|
var TerminalLegacyCameraSchema = object({
|
|
20063
20159
|
stableId: string(),
|
|
@@ -20087,7 +20183,23 @@ var TerminalOutputBatchSchema = object({
|
|
|
20087
20183
|
method(_void(), array(TerminalProfileInfoSchema).readonly(), { auth: "admin" }), method(_void(), array(TerminalInstanceInfoSchema).readonly(), { auth: "admin" }), method(object({
|
|
20088
20184
|
targetNodeId: string().min(1),
|
|
20089
20185
|
profileId: string().min(1),
|
|
20090
|
-
name: string().trim().min(1).max(160).optional()
|
|
20186
|
+
name: string().trim().min(1).max(160).optional(),
|
|
20187
|
+
executable: string().max(1024).optional(),
|
|
20188
|
+
args: array(string().max(2048)).max(64).optional(),
|
|
20189
|
+
cwd: string().max(1024).optional(),
|
|
20190
|
+
environment: array(string().max(4096)).max(64).optional(),
|
|
20191
|
+
profileSettings: ProfileSettingsBagSchema.optional()
|
|
20192
|
+
}), TerminalInstanceInfoSchema, {
|
|
20193
|
+
kind: "mutation",
|
|
20194
|
+
auth: "admin"
|
|
20195
|
+
}), method(object({
|
|
20196
|
+
instanceId: string().min(1),
|
|
20197
|
+
name: string().trim().min(1).max(160).optional(),
|
|
20198
|
+
executable: string().max(1024).optional(),
|
|
20199
|
+
args: array(string().max(2048)).max(64).optional(),
|
|
20200
|
+
cwd: string().max(1024).optional(),
|
|
20201
|
+
environment: array(string().max(4096)).max(64).optional(),
|
|
20202
|
+
profileSettings: ProfileSettingsBagSchema.optional()
|
|
20091
20203
|
}), TerminalInstanceInfoSchema, {
|
|
20092
20204
|
kind: "mutation",
|
|
20093
20205
|
auth: "admin"
|
|
@@ -20109,7 +20221,11 @@ method(_void(), array(TerminalProfileInfoSchema).readonly(), { auth: "admin" }),
|
|
|
20109
20221
|
}), method(_void(), array(TerminalSessionInfoSchema).readonly(), { auth: "admin" }), method(object({
|
|
20110
20222
|
profileId: string(),
|
|
20111
20223
|
cols: number().int().positive(),
|
|
20112
|
-
rows: number().int().positive()
|
|
20224
|
+
rows: number().int().positive(),
|
|
20225
|
+
executable: string().max(1024).optional(),
|
|
20226
|
+
args: array(string().max(2048)).max(64).optional(),
|
|
20227
|
+
cwd: string().max(1024).optional(),
|
|
20228
|
+
environment: array(string().max(4096)).max(64).optional()
|
|
20113
20229
|
}), TerminalSessionInfoSchema, {
|
|
20114
20230
|
kind: "mutation",
|
|
20115
20231
|
auth: "admin"
|
|
@@ -23992,10 +24108,10 @@ var lawnMowerControlCapability = {
|
|
|
23992
24108
|
*
|
|
23993
24109
|
* • The SDK (mobile / web client) consumes `getConnectionEndpoints()`
|
|
23994
24110
|
* to receive an ordered list of candidate base URLs it should race
|
|
23995
|
-
* on connect — LAN IPv4 first (lowest latency
|
|
23996
|
-
* then public hostname (if a tunnel is
|
|
23997
|
-
* race them with short timeouts and stick with the
|
|
23998
|
-
* session.
|
|
24111
|
+
* on connect — LAN IPv4 and stable LAN IPv6 first (lowest latency
|
|
24112
|
+
* when on the same network), then public hostname (if a tunnel is
|
|
24113
|
+
* up). The SDK can race them with short timeouts and stick with the
|
|
24114
|
+
* winner for the session.
|
|
23999
24115
|
*
|
|
24000
24116
|
* Why hub-only: agents are not directly addressable by the operator's
|
|
24001
24117
|
* clients — they reverse-connect to the hub. Exposing their interfaces
|
|
@@ -24150,6 +24266,17 @@ var NotificationEndpointSchema = object({
|
|
|
24150
24266
|
/** What the ranking currently resolves to (null when nothing is reachable). */
|
|
24151
24267
|
resolved: string().nullable()
|
|
24152
24268
|
});
|
|
24269
|
+
/**
|
|
24270
|
+
* The URLs the SDK / viewer should race for API access. `baseUrls` empty =
|
|
24271
|
+
* AUTO (every LAN IPv4 + the public tunnel). `resolved` is what that choice
|
|
24272
|
+
* currently expands to, so the UI can show the effective set either way.
|
|
24273
|
+
*/
|
|
24274
|
+
var ViewerEndpointsSchema = object({
|
|
24275
|
+
/** The operator's explicit race set, or empty for AUTO. */
|
|
24276
|
+
baseUrls: array(string()).readonly(),
|
|
24277
|
+
/** What the ranking currently resolves to (may be empty if nothing is up). */
|
|
24278
|
+
resolved: array(string()).readonly()
|
|
24279
|
+
});
|
|
24153
24280
|
var AllowedAddressesSchema = object({
|
|
24154
24281
|
/**
|
|
24155
24282
|
* Allowlist of interface addresses operators have explicitly opted
|
|
@@ -24158,6 +24285,20 @@ var AllowedAddressesSchema = object({
|
|
|
24158
24285
|
* Network Addresses admin page and persisted by the addon.
|
|
24159
24286
|
*/
|
|
24160
24287
|
addresses: array(string()).readonly() });
|
|
24288
|
+
var TlsStatusSchema = object({
|
|
24289
|
+
mode: _enum([
|
|
24290
|
+
"generated",
|
|
24291
|
+
"uploaded",
|
|
24292
|
+
"disabled"
|
|
24293
|
+
]),
|
|
24294
|
+
leafFingerprintSha256: string().nullable(),
|
|
24295
|
+
caFingerprintSha256: string().nullable(),
|
|
24296
|
+
validTo: string().nullable(),
|
|
24297
|
+
sans: array(string()),
|
|
24298
|
+
caCertPem: string().nullable(),
|
|
24299
|
+
reissueError: string().nullable(),
|
|
24300
|
+
restartRequired: boolean()
|
|
24301
|
+
});
|
|
24161
24302
|
method(_void(), ListResultSchema), method(_void(), PreferredSchema), method(object({
|
|
24162
24303
|
/**
|
|
24163
24304
|
* LEGACY HINT — do not send from new code. Kept optional so clients
|
|
@@ -24167,17 +24308,31 @@ method(_void(), ListResultSchema), method(_void(), PreferredSchema), method(obje
|
|
|
24167
24308
|
*/
|
|
24168
24309
|
port: number().int().min(1).max(65535).optional(),
|
|
24169
24310
|
/** Include `http(s)://127.0.0.1:<port>` as the lowest-priority
|
|
24170
|
-
* candidate. Default `
|
|
24311
|
+
* candidate. Default `false` — loopback is not a client route. */
|
|
24171
24312
|
includeLoopback: boolean().optional(),
|
|
24172
|
-
/** Skip IPv6 entries.
|
|
24173
|
-
*
|
|
24313
|
+
/** Skip IPv6 entries. Default `false` — the palette includes stable
|
|
24314
|
+
* LAN IPv6 (ICE/WebRTC uses dual-stack regardless). Pass `true` to
|
|
24315
|
+
* hide them. The viewer HTTP/WS race is `getViewerEndpoints`. */
|
|
24174
24316
|
ipv4Only: boolean().optional(),
|
|
24175
24317
|
/** Scheme to emit for LAN/loopback URLs. Default `'http'`.
|
|
24176
24318
|
* Pass `'https'` when the caller is itself loaded over HTTPS
|
|
24177
24319
|
* to avoid mixed-content blocks in the browser. The public
|
|
24178
24320
|
* tunnel always emits `https://` regardless. */
|
|
24179
24321
|
scheme: _enum(["http", "https"]).optional()
|
|
24180
|
-
}), GetConnectionEndpointsResultSchema), method(_void(), NotificationEndpointSchema), method(object({ baseUrl: string().nullable() }), NotificationEndpointSchema, { kind: "mutation" }), method(_void(), AllowedAddressesSchema), method(AllowedAddressesSchema, object({ success: literal(true) }), { kind: "mutation" }), method(_void(), AllowedAddressesSchema, { kind: "mutation" })
|
|
24322
|
+
}), GetConnectionEndpointsResultSchema), method(_void(), NotificationEndpointSchema), method(object({ baseUrl: string().nullable() }), NotificationEndpointSchema, { kind: "mutation" }), method(_void(), ViewerEndpointsSchema), method(object({ baseUrls: array(string()).readonly() }), ViewerEndpointsSchema, { kind: "mutation" }), method(_void(), AllowedAddressesSchema), method(AllowedAddressesSchema, object({ success: literal(true) }), { kind: "mutation" }), method(_void(), AllowedAddressesSchema, { kind: "mutation" }), method(_void(), TlsStatusSchema), method(object({ reason: string().optional() }), TlsStatusSchema, {
|
|
24323
|
+
kind: "mutation",
|
|
24324
|
+
auth: "admin"
|
|
24325
|
+
}), method(object({
|
|
24326
|
+
certPem: string().min(1),
|
|
24327
|
+
keyPem: string().min(1),
|
|
24328
|
+
caPem: string().optional()
|
|
24329
|
+
}), TlsStatusSchema, {
|
|
24330
|
+
kind: "mutation",
|
|
24331
|
+
auth: "admin"
|
|
24332
|
+
}), method(_void(), object({ pem: string() })), method(_void(), TlsStatusSchema, {
|
|
24333
|
+
kind: "mutation",
|
|
24334
|
+
auth: "admin"
|
|
24335
|
+
});
|
|
24181
24336
|
var LockControlStatusSchema = object({
|
|
24182
24337
|
/** Lifecycle state of the lock. `jammed` means the motor reported
|
|
24183
24338
|
* failure to reach the target — operator intervention required. */
|
|
@@ -32270,6 +32425,12 @@ Object.freeze({
|
|
|
32270
32425
|
addonId: null,
|
|
32271
32426
|
access: "create"
|
|
32272
32427
|
},
|
|
32428
|
+
"localNetwork.downloadCa": {
|
|
32429
|
+
capName: "local-network",
|
|
32430
|
+
capScope: "system",
|
|
32431
|
+
addonId: null,
|
|
32432
|
+
access: "view"
|
|
32433
|
+
},
|
|
32273
32434
|
"localNetwork.getAllowedAddresses": {
|
|
32274
32435
|
capName: "local-network",
|
|
32275
32436
|
capScope: "system",
|
|
@@ -32294,18 +32455,42 @@ Object.freeze({
|
|
|
32294
32455
|
addonId: null,
|
|
32295
32456
|
access: "view"
|
|
32296
32457
|
},
|
|
32458
|
+
"localNetwork.getTlsStatus": {
|
|
32459
|
+
capName: "local-network",
|
|
32460
|
+
capScope: "system",
|
|
32461
|
+
addonId: null,
|
|
32462
|
+
access: "view"
|
|
32463
|
+
},
|
|
32464
|
+
"localNetwork.getViewerEndpoints": {
|
|
32465
|
+
capName: "local-network",
|
|
32466
|
+
capScope: "system",
|
|
32467
|
+
addonId: null,
|
|
32468
|
+
access: "view"
|
|
32469
|
+
},
|
|
32297
32470
|
"localNetwork.list": {
|
|
32298
32471
|
capName: "local-network",
|
|
32299
32472
|
capScope: "system",
|
|
32300
32473
|
addonId: null,
|
|
32301
32474
|
access: "view"
|
|
32302
32475
|
},
|
|
32476
|
+
"localNetwork.regenerateCertificate": {
|
|
32477
|
+
capName: "local-network",
|
|
32478
|
+
capScope: "system",
|
|
32479
|
+
addonId: null,
|
|
32480
|
+
access: "create"
|
|
32481
|
+
},
|
|
32303
32482
|
"localNetwork.resetAllowlistToBestMatch": {
|
|
32304
32483
|
capName: "local-network",
|
|
32305
32484
|
capScope: "system",
|
|
32306
32485
|
addonId: null,
|
|
32307
32486
|
access: "delete"
|
|
32308
32487
|
},
|
|
32488
|
+
"localNetwork.revertToGeneratedCertificate": {
|
|
32489
|
+
capName: "local-network",
|
|
32490
|
+
capScope: "system",
|
|
32491
|
+
addonId: null,
|
|
32492
|
+
access: "create"
|
|
32493
|
+
},
|
|
32309
32494
|
"localNetwork.setAllowedAddresses": {
|
|
32310
32495
|
capName: "local-network",
|
|
32311
32496
|
capScope: "system",
|
|
@@ -32318,6 +32503,18 @@ Object.freeze({
|
|
|
32318
32503
|
addonId: null,
|
|
32319
32504
|
access: "create"
|
|
32320
32505
|
},
|
|
32506
|
+
"localNetwork.setViewerEndpoints": {
|
|
32507
|
+
capName: "local-network",
|
|
32508
|
+
capScope: "system",
|
|
32509
|
+
addonId: null,
|
|
32510
|
+
access: "create"
|
|
32511
|
+
},
|
|
32512
|
+
"localNetwork.uploadCertificate": {
|
|
32513
|
+
capName: "local-network",
|
|
32514
|
+
capScope: "system",
|
|
32515
|
+
addonId: null,
|
|
32516
|
+
access: "create"
|
|
32517
|
+
},
|
|
32321
32518
|
"lockControl.lock": {
|
|
32322
32519
|
capName: "lock-control",
|
|
32323
32520
|
capScope: "device",
|
|
@@ -35198,6 +35395,12 @@ Object.freeze({
|
|
|
35198
35395
|
addonId: null,
|
|
35199
35396
|
access: "create"
|
|
35200
35397
|
},
|
|
35398
|
+
"terminalSession.updateInstance": {
|
|
35399
|
+
capName: "terminal-session",
|
|
35400
|
+
capScope: "system",
|
|
35401
|
+
addonId: null,
|
|
35402
|
+
access: "create"
|
|
35403
|
+
},
|
|
35201
35404
|
"terminalSession.writeInput": {
|
|
35202
35405
|
capName: "terminal-session",
|
|
35203
35406
|
capScope: "system",
|
|
@@ -37685,6 +37888,35 @@ Object.freeze(Object.fromEntries([{
|
|
|
37685
37888
|
}]
|
|
37686
37889
|
}].map((s) => [s.stepId, s.defaultModelId])));
|
|
37687
37890
|
string().min(1);
|
|
37891
|
+
var CLUSTER_STEP_SETTING_FIELDS = [{
|
|
37892
|
+
stepId: "face-embedding",
|
|
37893
|
+
key: "minLandmarkFaceSize",
|
|
37894
|
+
label: "Min face size for recognition (detection px)",
|
|
37895
|
+
description: "Refuse to embed a face smaller than this IN THE DETECTION FRAME. Applies to every node — the enrolled gallery is one index, and two admission floors would fill it from two policies. 0 disables the gate.",
|
|
37896
|
+
type: "slider",
|
|
37897
|
+
min: 0,
|
|
37898
|
+
max: 64,
|
|
37899
|
+
step: 2,
|
|
37900
|
+
default: 24
|
|
37901
|
+
}];
|
|
37902
|
+
function clusterStepSettingKey(stepId, fieldKey) {
|
|
37903
|
+
return `clusterStepSetting:${stepId}:${fieldKey}`;
|
|
37904
|
+
}
|
|
37905
|
+
var ClusterSettingNumberSchema = number().finite();
|
|
37906
|
+
function readClusterStepSettings(config) {
|
|
37907
|
+
const out = {};
|
|
37908
|
+
for (const field of CLUSTER_STEP_SETTING_FIELDS) {
|
|
37909
|
+
const parsed = ClusterSettingNumberSchema.safeParse(config[clusterStepSettingKey(field.stepId, field.key)]);
|
|
37910
|
+
const value = parsed.success ? parsed.data : field.default;
|
|
37911
|
+
const existing = out[field.stepId] ?? {};
|
|
37912
|
+
out[field.stepId] = {
|
|
37913
|
+
...existing,
|
|
37914
|
+
[field.key]: value
|
|
37915
|
+
};
|
|
37916
|
+
}
|
|
37917
|
+
return out;
|
|
37918
|
+
}
|
|
37919
|
+
readClusterStepSettings({});
|
|
37688
37920
|
object({
|
|
37689
37921
|
/**
|
|
37690
37922
|
* Fraction of the box's own size added on EACH side before cutting.
|
package/dist/addon.mjs
CHANGED
|
@@ -8052,6 +8052,15 @@ var LabelDefinitionSchema = object({
|
|
|
8052
8052
|
description: string().optional(),
|
|
8053
8053
|
icon: string().optional()
|
|
8054
8054
|
});
|
|
8055
|
+
var ClassMapDefinitionSchema = object({
|
|
8056
|
+
mapping: record(string(), _enum([
|
|
8057
|
+
"person",
|
|
8058
|
+
"vehicle",
|
|
8059
|
+
"animal",
|
|
8060
|
+
"package"
|
|
8061
|
+
])),
|
|
8062
|
+
preserveOriginal: boolean()
|
|
8063
|
+
});
|
|
8055
8064
|
var MODEL_FORMATS = [
|
|
8056
8065
|
"onnx",
|
|
8057
8066
|
"coreml",
|
|
@@ -8230,7 +8239,13 @@ var ModelCatalogEntrySchema = object({
|
|
|
8230
8239
|
* `id` stays the source of truth for resolution/download/persistence; grouping
|
|
8231
8240
|
* is a presentation overlay resolved back to an `id`.
|
|
8232
8241
|
*/
|
|
8233
|
-
group: ModelVariantGroupSchema.optional()
|
|
8242
|
+
group: ModelVariantGroupSchema.optional(),
|
|
8243
|
+
/**
|
|
8244
|
+
* Per-MODEL class map override. Absent ⇒ the step's `StepDefinition.classMap`
|
|
8245
|
+
* applies (Frigate / COCO public catalog). Set on a custom model whose raw
|
|
8246
|
+
* labels already ARE the CamStack macros (Scrypted identity map).
|
|
8247
|
+
*/
|
|
8248
|
+
classMap: ClassMapDefinitionSchema.optional()
|
|
8234
8249
|
});
|
|
8235
8250
|
var ConvertTargetSchema = discriminatedUnion("format", [object({
|
|
8236
8251
|
format: literal("openvino"),
|
|
@@ -8259,7 +8274,8 @@ var ModelConvertMetadataSchema = object({
|
|
|
8259
8274
|
"ocr",
|
|
8260
8275
|
"segmentation"
|
|
8261
8276
|
]),
|
|
8262
|
-
faceAlignment: boolean().optional()
|
|
8277
|
+
faceAlignment: boolean().optional(),
|
|
8278
|
+
classMap: ClassMapDefinitionSchema.optional()
|
|
8263
8279
|
});
|
|
8264
8280
|
var ConvertResultSchema = object({
|
|
8265
8281
|
entry: ModelCatalogEntrySchema,
|
|
@@ -17552,6 +17568,33 @@ var NativeCropRefSchema = object({
|
|
|
17552
17568
|
h: number()
|
|
17553
17569
|
})
|
|
17554
17570
|
});
|
|
17571
|
+
object({
|
|
17572
|
+
crop: object({
|
|
17573
|
+
left: number(),
|
|
17574
|
+
top: number(),
|
|
17575
|
+
width: number().positive(),
|
|
17576
|
+
height: number().positive()
|
|
17577
|
+
}).optional(),
|
|
17578
|
+
content: object({
|
|
17579
|
+
width: number().int().positive(),
|
|
17580
|
+
height: number().int().positive()
|
|
17581
|
+
}),
|
|
17582
|
+
fit: _enum(["stretch", "contain"]),
|
|
17583
|
+
format: _enum([
|
|
17584
|
+
"rgb",
|
|
17585
|
+
"gray",
|
|
17586
|
+
"jpeg"
|
|
17587
|
+
])
|
|
17588
|
+
});
|
|
17589
|
+
var FrameRefSchema = object({
|
|
17590
|
+
registryId: string().min(1),
|
|
17591
|
+
id: string().min(1),
|
|
17592
|
+
width: number().int().positive(),
|
|
17593
|
+
height: number().int().positive(),
|
|
17594
|
+
format: _enum(["rgb", "gray"]),
|
|
17595
|
+
timestamp: number(),
|
|
17596
|
+
capturedAt: number().optional()
|
|
17597
|
+
});
|
|
17555
17598
|
var ModelFormatSchema$1 = _enum([
|
|
17556
17599
|
"onnx",
|
|
17557
17600
|
"coreml",
|
|
@@ -17796,6 +17839,12 @@ method(_void(), array(PipelineEngineChoiceSchema)), method(_void(), PipelineEngi
|
|
|
17796
17839
|
steps: array(PipelineStepInputSchema).min(1),
|
|
17797
17840
|
frame: FrameInputSchema.optional(),
|
|
17798
17841
|
/**
|
|
17842
|
+
* Process-local lazy frame. Valid only when caller and provider resolve
|
|
17843
|
+
* in the same execution-group process; split/cross-node callers use
|
|
17844
|
+
* `frame`/`image` inline compatibility instead.
|
|
17845
|
+
*/
|
|
17846
|
+
frameRef: FrameRefSchema.optional(),
|
|
17847
|
+
/**
|
|
17799
17848
|
* CB5 shm passthrough — a `FrameHandle` naming the same ring slot
|
|
17800
17849
|
* the decoded pixels live in. One more member of the one-of
|
|
17801
17850
|
* frame/frameHandle/image/imageBase64/referenceImage group.
|
|
@@ -18091,7 +18140,10 @@ var NativeCropResultSchema = object({
|
|
|
18091
18140
|
* Which source served this crop, so a quality-sensitive consumer (the native
|
|
18092
18141
|
* `keyFrame`) can reject a degraded fallback:
|
|
18093
18142
|
* - `native` — cut from the decode worker's retained NATIVE surface (the
|
|
18094
|
-
* quality path).
|
|
18143
|
+
* quality path). A subject-tile serve is also native-resolution and stays
|
|
18144
|
+
* `native` here: the public enum cannot name `tile` without a breaking cap
|
|
18145
|
+
* change. Runner telemetry distinguishes lease vs tile via `source` on the
|
|
18146
|
+
* internal crop result (`nativeHits` vs `tileHits`).
|
|
18095
18147
|
* - `ram-fullframe` — the native surface MISSED but the request was full-frame,
|
|
18096
18148
|
* so the ≤640 RAM `RetainedFrameStore` served it (honest lower-res; legit for
|
|
18097
18149
|
* the blank-frame guard / 640-snapshot resolve, NOT for the clean keyFrame).
|
|
@@ -18582,12 +18634,41 @@ var RunnerLocalLoadSchema = object({
|
|
|
18582
18634
|
* legacy `OrchestratorMetricsSchema` shape so existing dashboards keep
|
|
18583
18635
|
* working unchanged when they switch to reading from the runner cap.
|
|
18584
18636
|
*/
|
|
18637
|
+
var FrameLazyCountersSchema = object({
|
|
18638
|
+
framesDecoded: number(),
|
|
18639
|
+
framesAdmitted: number(),
|
|
18640
|
+
framesDroppedPixelFree: number(),
|
|
18641
|
+
viewsMaterialized: number(),
|
|
18642
|
+
viewsSkipped: number(),
|
|
18643
|
+
workerToRunnerBytes: number(),
|
|
18644
|
+
runnerToPoolRawBytes: number(),
|
|
18645
|
+
runnerToPoolJpegBytes: number(),
|
|
18646
|
+
onDemandFullFrameRequests: number(),
|
|
18647
|
+
onDemandCropRequests: number(),
|
|
18648
|
+
nativeHits: number(),
|
|
18649
|
+
nativeMisses: number(),
|
|
18650
|
+
tileHits: number(),
|
|
18651
|
+
tileMisses: number(),
|
|
18652
|
+
fallbackHits: number(),
|
|
18653
|
+
fallbackMisses: number(),
|
|
18654
|
+
retainedWritesAvoided: number(),
|
|
18655
|
+
residentRefs: number(),
|
|
18656
|
+
residentBytes: number(),
|
|
18657
|
+
releases: number(),
|
|
18658
|
+
evictions: number(),
|
|
18659
|
+
staleMisses: number()
|
|
18660
|
+
});
|
|
18661
|
+
var FrameLazyMetricsSchema = object({
|
|
18662
|
+
node: FrameLazyCountersSchema,
|
|
18663
|
+
cameras: array(FrameLazyCountersSchema.extend({ deviceId: number() }))
|
|
18664
|
+
});
|
|
18585
18665
|
var RunnerLocalMetricsSchema = object({
|
|
18586
18666
|
nodeId: string(),
|
|
18587
18667
|
activeCameras: number(),
|
|
18588
18668
|
throttledCameras: number(),
|
|
18589
18669
|
avgInferenceTimeMs: number(),
|
|
18590
|
-
queueDepth: number()
|
|
18670
|
+
queueDepth: number(),
|
|
18671
|
+
frameLazy: FrameLazyMetricsSchema.optional()
|
|
18591
18672
|
});
|
|
18592
18673
|
method(RunnerCameraConfigSchema, object({ success: literal(true) }), { kind: "mutation" }), method(object({ deviceId: number() }), object({ success: literal(true) }), { kind: "mutation" }), method(ReportMotionInputSchema, object({ success: literal(true) }), { kind: "mutation" }), method(_void(), RunnerLocalLoadSchema), method(_void(), RunnerLocalMetricsSchema), method(object({ deviceId: number() }), CameraMetricsSchema.nullable()), method(_void(), array(CameraMetricsWithDeviceIdSchema).readonly()), method(_void(), array(number()).readonly()), method(object({
|
|
18593
18674
|
handle: FrameHandleSchema,
|
|
@@ -19991,6 +20072,9 @@ method(_void(), ProviderInfoSchema), method(object({ config: record(string(), un
|
|
|
19991
20072
|
location: StorageLocationSchema,
|
|
19992
20073
|
relativePath: string()
|
|
19993
20074
|
}), _void(), { kind: "mutation" }), method(object({ location: StorageLocationSchema }), number().nullable()), method(BeginUploadInputSchema, BeginUploadResultSchema, { kind: "mutation" }), method(WriteChunkInputSchema, _void(), { kind: "mutation" }), method(FinalizeUploadInputSchema, _void(), { kind: "mutation" }), method(AbortUploadInputSchema, _void(), { kind: "mutation" }), method(BeginDownloadInputSchema, BeginDownloadResultSchema, { kind: "mutation" }), method(ReadChunkInputSchema, _instanceof(Uint8Array)), method(EndDownloadInputSchema, _void(), { kind: "mutation" });
|
|
20075
|
+
/** Profile-exported FormBuilder schema. Shape is ConfigUISchema at the UI. */
|
|
20076
|
+
var ProfileSettingsSchemaBridge = unknown().nullable();
|
|
20077
|
+
var ProfileSettingsBagSchema = record(string(), unknown());
|
|
19994
20078
|
/**
|
|
19995
20079
|
* A live terminal session hosted by the provider addon. Output and input do
|
|
19996
20080
|
* NOT flow through the capability — they use the addon data plane
|
|
@@ -20020,7 +20104,14 @@ var TerminalSessionInfoSchema = object({
|
|
|
20020
20104
|
var TerminalProfileInfoSchema = object({
|
|
20021
20105
|
profileId: string(),
|
|
20022
20106
|
label: string(),
|
|
20023
|
-
description: string().optional()
|
|
20107
|
+
description: string().optional(),
|
|
20108
|
+
/** Spawn defaults the instance form copies on create. */
|
|
20109
|
+
executable: string().optional(),
|
|
20110
|
+
args: array(string()).readonly().optional(),
|
|
20111
|
+
cwd: string().optional(),
|
|
20112
|
+
environment: array(string()).readonly().optional(),
|
|
20113
|
+
/** ConfigUISchema for instance knobs, or null when the profile has none. */
|
|
20114
|
+
settingsSchema: ProfileSettingsSchemaBridge.optional()
|
|
20024
20115
|
});
|
|
20025
20116
|
/**
|
|
20026
20117
|
* A durable operator-created Terminal instance. Profiles are templates; only
|
|
@@ -20033,7 +20124,12 @@ var TerminalInstanceInfoSchema = object({
|
|
|
20033
20124
|
profileId: string(),
|
|
20034
20125
|
profileLabel: string(),
|
|
20035
20126
|
name: string(),
|
|
20036
|
-
enabled: boolean()
|
|
20127
|
+
enabled: boolean(),
|
|
20128
|
+
executable: string(),
|
|
20129
|
+
args: array(string()).readonly(),
|
|
20130
|
+
cwd: string(),
|
|
20131
|
+
environment: array(string()).readonly(),
|
|
20132
|
+
profileSettings: ProfileSettingsBagSchema
|
|
20037
20133
|
});
|
|
20038
20134
|
var TerminalLegacyCameraSchema = object({
|
|
20039
20135
|
stableId: string(),
|
|
@@ -20063,7 +20159,23 @@ var TerminalOutputBatchSchema = object({
|
|
|
20063
20159
|
method(_void(), array(TerminalProfileInfoSchema).readonly(), { auth: "admin" }), method(_void(), array(TerminalInstanceInfoSchema).readonly(), { auth: "admin" }), method(object({
|
|
20064
20160
|
targetNodeId: string().min(1),
|
|
20065
20161
|
profileId: string().min(1),
|
|
20066
|
-
name: string().trim().min(1).max(160).optional()
|
|
20162
|
+
name: string().trim().min(1).max(160).optional(),
|
|
20163
|
+
executable: string().max(1024).optional(),
|
|
20164
|
+
args: array(string().max(2048)).max(64).optional(),
|
|
20165
|
+
cwd: string().max(1024).optional(),
|
|
20166
|
+
environment: array(string().max(4096)).max(64).optional(),
|
|
20167
|
+
profileSettings: ProfileSettingsBagSchema.optional()
|
|
20168
|
+
}), TerminalInstanceInfoSchema, {
|
|
20169
|
+
kind: "mutation",
|
|
20170
|
+
auth: "admin"
|
|
20171
|
+
}), method(object({
|
|
20172
|
+
instanceId: string().min(1),
|
|
20173
|
+
name: string().trim().min(1).max(160).optional(),
|
|
20174
|
+
executable: string().max(1024).optional(),
|
|
20175
|
+
args: array(string().max(2048)).max(64).optional(),
|
|
20176
|
+
cwd: string().max(1024).optional(),
|
|
20177
|
+
environment: array(string().max(4096)).max(64).optional(),
|
|
20178
|
+
profileSettings: ProfileSettingsBagSchema.optional()
|
|
20067
20179
|
}), TerminalInstanceInfoSchema, {
|
|
20068
20180
|
kind: "mutation",
|
|
20069
20181
|
auth: "admin"
|
|
@@ -20085,7 +20197,11 @@ method(_void(), array(TerminalProfileInfoSchema).readonly(), { auth: "admin" }),
|
|
|
20085
20197
|
}), method(_void(), array(TerminalSessionInfoSchema).readonly(), { auth: "admin" }), method(object({
|
|
20086
20198
|
profileId: string(),
|
|
20087
20199
|
cols: number().int().positive(),
|
|
20088
|
-
rows: number().int().positive()
|
|
20200
|
+
rows: number().int().positive(),
|
|
20201
|
+
executable: string().max(1024).optional(),
|
|
20202
|
+
args: array(string().max(2048)).max(64).optional(),
|
|
20203
|
+
cwd: string().max(1024).optional(),
|
|
20204
|
+
environment: array(string().max(4096)).max(64).optional()
|
|
20089
20205
|
}), TerminalSessionInfoSchema, {
|
|
20090
20206
|
kind: "mutation",
|
|
20091
20207
|
auth: "admin"
|
|
@@ -23968,10 +24084,10 @@ var lawnMowerControlCapability = {
|
|
|
23968
24084
|
*
|
|
23969
24085
|
* • The SDK (mobile / web client) consumes `getConnectionEndpoints()`
|
|
23970
24086
|
* to receive an ordered list of candidate base URLs it should race
|
|
23971
|
-
* on connect — LAN IPv4 first (lowest latency
|
|
23972
|
-
* then public hostname (if a tunnel is
|
|
23973
|
-
* race them with short timeouts and stick with the
|
|
23974
|
-
* session.
|
|
24087
|
+
* on connect — LAN IPv4 and stable LAN IPv6 first (lowest latency
|
|
24088
|
+
* when on the same network), then public hostname (if a tunnel is
|
|
24089
|
+
* up). The SDK can race them with short timeouts and stick with the
|
|
24090
|
+
* winner for the session.
|
|
23975
24091
|
*
|
|
23976
24092
|
* Why hub-only: agents are not directly addressable by the operator's
|
|
23977
24093
|
* clients — they reverse-connect to the hub. Exposing their interfaces
|
|
@@ -24126,6 +24242,17 @@ var NotificationEndpointSchema = object({
|
|
|
24126
24242
|
/** What the ranking currently resolves to (null when nothing is reachable). */
|
|
24127
24243
|
resolved: string().nullable()
|
|
24128
24244
|
});
|
|
24245
|
+
/**
|
|
24246
|
+
* The URLs the SDK / viewer should race for API access. `baseUrls` empty =
|
|
24247
|
+
* AUTO (every LAN IPv4 + the public tunnel). `resolved` is what that choice
|
|
24248
|
+
* currently expands to, so the UI can show the effective set either way.
|
|
24249
|
+
*/
|
|
24250
|
+
var ViewerEndpointsSchema = object({
|
|
24251
|
+
/** The operator's explicit race set, or empty for AUTO. */
|
|
24252
|
+
baseUrls: array(string()).readonly(),
|
|
24253
|
+
/** What the ranking currently resolves to (may be empty if nothing is up). */
|
|
24254
|
+
resolved: array(string()).readonly()
|
|
24255
|
+
});
|
|
24129
24256
|
var AllowedAddressesSchema = object({
|
|
24130
24257
|
/**
|
|
24131
24258
|
* Allowlist of interface addresses operators have explicitly opted
|
|
@@ -24134,6 +24261,20 @@ var AllowedAddressesSchema = object({
|
|
|
24134
24261
|
* Network Addresses admin page and persisted by the addon.
|
|
24135
24262
|
*/
|
|
24136
24263
|
addresses: array(string()).readonly() });
|
|
24264
|
+
var TlsStatusSchema = object({
|
|
24265
|
+
mode: _enum([
|
|
24266
|
+
"generated",
|
|
24267
|
+
"uploaded",
|
|
24268
|
+
"disabled"
|
|
24269
|
+
]),
|
|
24270
|
+
leafFingerprintSha256: string().nullable(),
|
|
24271
|
+
caFingerprintSha256: string().nullable(),
|
|
24272
|
+
validTo: string().nullable(),
|
|
24273
|
+
sans: array(string()),
|
|
24274
|
+
caCertPem: string().nullable(),
|
|
24275
|
+
reissueError: string().nullable(),
|
|
24276
|
+
restartRequired: boolean()
|
|
24277
|
+
});
|
|
24137
24278
|
method(_void(), ListResultSchema), method(_void(), PreferredSchema), method(object({
|
|
24138
24279
|
/**
|
|
24139
24280
|
* LEGACY HINT — do not send from new code. Kept optional so clients
|
|
@@ -24143,17 +24284,31 @@ method(_void(), ListResultSchema), method(_void(), PreferredSchema), method(obje
|
|
|
24143
24284
|
*/
|
|
24144
24285
|
port: number().int().min(1).max(65535).optional(),
|
|
24145
24286
|
/** Include `http(s)://127.0.0.1:<port>` as the lowest-priority
|
|
24146
|
-
* candidate. Default `
|
|
24287
|
+
* candidate. Default `false` — loopback is not a client route. */
|
|
24147
24288
|
includeLoopback: boolean().optional(),
|
|
24148
|
-
/** Skip IPv6 entries.
|
|
24149
|
-
*
|
|
24289
|
+
/** Skip IPv6 entries. Default `false` — the palette includes stable
|
|
24290
|
+
* LAN IPv6 (ICE/WebRTC uses dual-stack regardless). Pass `true` to
|
|
24291
|
+
* hide them. The viewer HTTP/WS race is `getViewerEndpoints`. */
|
|
24150
24292
|
ipv4Only: boolean().optional(),
|
|
24151
24293
|
/** Scheme to emit for LAN/loopback URLs. Default `'http'`.
|
|
24152
24294
|
* Pass `'https'` when the caller is itself loaded over HTTPS
|
|
24153
24295
|
* to avoid mixed-content blocks in the browser. The public
|
|
24154
24296
|
* tunnel always emits `https://` regardless. */
|
|
24155
24297
|
scheme: _enum(["http", "https"]).optional()
|
|
24156
|
-
}), GetConnectionEndpointsResultSchema), method(_void(), NotificationEndpointSchema), method(object({ baseUrl: string().nullable() }), NotificationEndpointSchema, { kind: "mutation" }), method(_void(), AllowedAddressesSchema), method(AllowedAddressesSchema, object({ success: literal(true) }), { kind: "mutation" }), method(_void(), AllowedAddressesSchema, { kind: "mutation" })
|
|
24298
|
+
}), GetConnectionEndpointsResultSchema), method(_void(), NotificationEndpointSchema), method(object({ baseUrl: string().nullable() }), NotificationEndpointSchema, { kind: "mutation" }), method(_void(), ViewerEndpointsSchema), method(object({ baseUrls: array(string()).readonly() }), ViewerEndpointsSchema, { kind: "mutation" }), method(_void(), AllowedAddressesSchema), method(AllowedAddressesSchema, object({ success: literal(true) }), { kind: "mutation" }), method(_void(), AllowedAddressesSchema, { kind: "mutation" }), method(_void(), TlsStatusSchema), method(object({ reason: string().optional() }), TlsStatusSchema, {
|
|
24299
|
+
kind: "mutation",
|
|
24300
|
+
auth: "admin"
|
|
24301
|
+
}), method(object({
|
|
24302
|
+
certPem: string().min(1),
|
|
24303
|
+
keyPem: string().min(1),
|
|
24304
|
+
caPem: string().optional()
|
|
24305
|
+
}), TlsStatusSchema, {
|
|
24306
|
+
kind: "mutation",
|
|
24307
|
+
auth: "admin"
|
|
24308
|
+
}), method(_void(), object({ pem: string() })), method(_void(), TlsStatusSchema, {
|
|
24309
|
+
kind: "mutation",
|
|
24310
|
+
auth: "admin"
|
|
24311
|
+
});
|
|
24157
24312
|
var LockControlStatusSchema = object({
|
|
24158
24313
|
/** Lifecycle state of the lock. `jammed` means the motor reported
|
|
24159
24314
|
* failure to reach the target — operator intervention required. */
|
|
@@ -32246,6 +32401,12 @@ Object.freeze({
|
|
|
32246
32401
|
addonId: null,
|
|
32247
32402
|
access: "create"
|
|
32248
32403
|
},
|
|
32404
|
+
"localNetwork.downloadCa": {
|
|
32405
|
+
capName: "local-network",
|
|
32406
|
+
capScope: "system",
|
|
32407
|
+
addonId: null,
|
|
32408
|
+
access: "view"
|
|
32409
|
+
},
|
|
32249
32410
|
"localNetwork.getAllowedAddresses": {
|
|
32250
32411
|
capName: "local-network",
|
|
32251
32412
|
capScope: "system",
|
|
@@ -32270,18 +32431,42 @@ Object.freeze({
|
|
|
32270
32431
|
addonId: null,
|
|
32271
32432
|
access: "view"
|
|
32272
32433
|
},
|
|
32434
|
+
"localNetwork.getTlsStatus": {
|
|
32435
|
+
capName: "local-network",
|
|
32436
|
+
capScope: "system",
|
|
32437
|
+
addonId: null,
|
|
32438
|
+
access: "view"
|
|
32439
|
+
},
|
|
32440
|
+
"localNetwork.getViewerEndpoints": {
|
|
32441
|
+
capName: "local-network",
|
|
32442
|
+
capScope: "system",
|
|
32443
|
+
addonId: null,
|
|
32444
|
+
access: "view"
|
|
32445
|
+
},
|
|
32273
32446
|
"localNetwork.list": {
|
|
32274
32447
|
capName: "local-network",
|
|
32275
32448
|
capScope: "system",
|
|
32276
32449
|
addonId: null,
|
|
32277
32450
|
access: "view"
|
|
32278
32451
|
},
|
|
32452
|
+
"localNetwork.regenerateCertificate": {
|
|
32453
|
+
capName: "local-network",
|
|
32454
|
+
capScope: "system",
|
|
32455
|
+
addonId: null,
|
|
32456
|
+
access: "create"
|
|
32457
|
+
},
|
|
32279
32458
|
"localNetwork.resetAllowlistToBestMatch": {
|
|
32280
32459
|
capName: "local-network",
|
|
32281
32460
|
capScope: "system",
|
|
32282
32461
|
addonId: null,
|
|
32283
32462
|
access: "delete"
|
|
32284
32463
|
},
|
|
32464
|
+
"localNetwork.revertToGeneratedCertificate": {
|
|
32465
|
+
capName: "local-network",
|
|
32466
|
+
capScope: "system",
|
|
32467
|
+
addonId: null,
|
|
32468
|
+
access: "create"
|
|
32469
|
+
},
|
|
32285
32470
|
"localNetwork.setAllowedAddresses": {
|
|
32286
32471
|
capName: "local-network",
|
|
32287
32472
|
capScope: "system",
|
|
@@ -32294,6 +32479,18 @@ Object.freeze({
|
|
|
32294
32479
|
addonId: null,
|
|
32295
32480
|
access: "create"
|
|
32296
32481
|
},
|
|
32482
|
+
"localNetwork.setViewerEndpoints": {
|
|
32483
|
+
capName: "local-network",
|
|
32484
|
+
capScope: "system",
|
|
32485
|
+
addonId: null,
|
|
32486
|
+
access: "create"
|
|
32487
|
+
},
|
|
32488
|
+
"localNetwork.uploadCertificate": {
|
|
32489
|
+
capName: "local-network",
|
|
32490
|
+
capScope: "system",
|
|
32491
|
+
addonId: null,
|
|
32492
|
+
access: "create"
|
|
32493
|
+
},
|
|
32297
32494
|
"lockControl.lock": {
|
|
32298
32495
|
capName: "lock-control",
|
|
32299
32496
|
capScope: "device",
|
|
@@ -35174,6 +35371,12 @@ Object.freeze({
|
|
|
35174
35371
|
addonId: null,
|
|
35175
35372
|
access: "create"
|
|
35176
35373
|
},
|
|
35374
|
+
"terminalSession.updateInstance": {
|
|
35375
|
+
capName: "terminal-session",
|
|
35376
|
+
capScope: "system",
|
|
35377
|
+
addonId: null,
|
|
35378
|
+
access: "create"
|
|
35379
|
+
},
|
|
35177
35380
|
"terminalSession.writeInput": {
|
|
35178
35381
|
capName: "terminal-session",
|
|
35179
35382
|
capScope: "system",
|
|
@@ -37661,6 +37864,35 @@ Object.freeze(Object.fromEntries([{
|
|
|
37661
37864
|
}]
|
|
37662
37865
|
}].map((s) => [s.stepId, s.defaultModelId])));
|
|
37663
37866
|
string().min(1);
|
|
37867
|
+
var CLUSTER_STEP_SETTING_FIELDS = [{
|
|
37868
|
+
stepId: "face-embedding",
|
|
37869
|
+
key: "minLandmarkFaceSize",
|
|
37870
|
+
label: "Min face size for recognition (detection px)",
|
|
37871
|
+
description: "Refuse to embed a face smaller than this IN THE DETECTION FRAME. Applies to every node — the enrolled gallery is one index, and two admission floors would fill it from two policies. 0 disables the gate.",
|
|
37872
|
+
type: "slider",
|
|
37873
|
+
min: 0,
|
|
37874
|
+
max: 64,
|
|
37875
|
+
step: 2,
|
|
37876
|
+
default: 24
|
|
37877
|
+
}];
|
|
37878
|
+
function clusterStepSettingKey(stepId, fieldKey) {
|
|
37879
|
+
return `clusterStepSetting:${stepId}:${fieldKey}`;
|
|
37880
|
+
}
|
|
37881
|
+
var ClusterSettingNumberSchema = number().finite();
|
|
37882
|
+
function readClusterStepSettings(config) {
|
|
37883
|
+
const out = {};
|
|
37884
|
+
for (const field of CLUSTER_STEP_SETTING_FIELDS) {
|
|
37885
|
+
const parsed = ClusterSettingNumberSchema.safeParse(config[clusterStepSettingKey(field.stepId, field.key)]);
|
|
37886
|
+
const value = parsed.success ? parsed.data : field.default;
|
|
37887
|
+
const existing = out[field.stepId] ?? {};
|
|
37888
|
+
out[field.stepId] = {
|
|
37889
|
+
...existing,
|
|
37890
|
+
[field.key]: value
|
|
37891
|
+
};
|
|
37892
|
+
}
|
|
37893
|
+
return out;
|
|
37894
|
+
}
|
|
37895
|
+
readClusterStepSettings({});
|
|
37664
37896
|
object({
|
|
37665
37897
|
/**
|
|
37666
37898
|
* Fraction of the box's own size added on EACH side before cutting.
|