@camstack/addon-provider-wyze 0.2.30 → 0.2.31
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
|
@@ -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,
|
|
@@ -17569,6 +17585,33 @@ var NativeCropRefSchema = object({
|
|
|
17569
17585
|
h: number()
|
|
17570
17586
|
})
|
|
17571
17587
|
});
|
|
17588
|
+
object({
|
|
17589
|
+
crop: object({
|
|
17590
|
+
left: number(),
|
|
17591
|
+
top: number(),
|
|
17592
|
+
width: number().positive(),
|
|
17593
|
+
height: number().positive()
|
|
17594
|
+
}).optional(),
|
|
17595
|
+
content: object({
|
|
17596
|
+
width: number().int().positive(),
|
|
17597
|
+
height: number().int().positive()
|
|
17598
|
+
}),
|
|
17599
|
+
fit: _enum(["stretch", "contain"]),
|
|
17600
|
+
format: _enum([
|
|
17601
|
+
"rgb",
|
|
17602
|
+
"gray",
|
|
17603
|
+
"jpeg"
|
|
17604
|
+
])
|
|
17605
|
+
});
|
|
17606
|
+
var FrameRefSchema = object({
|
|
17607
|
+
registryId: string().min(1),
|
|
17608
|
+
id: string().min(1),
|
|
17609
|
+
width: number().int().positive(),
|
|
17610
|
+
height: number().int().positive(),
|
|
17611
|
+
format: _enum(["rgb", "gray"]),
|
|
17612
|
+
timestamp: number(),
|
|
17613
|
+
capturedAt: number().optional()
|
|
17614
|
+
});
|
|
17572
17615
|
var ModelFormatSchema$1 = _enum([
|
|
17573
17616
|
"onnx",
|
|
17574
17617
|
"coreml",
|
|
@@ -17813,6 +17856,12 @@ method(_void(), array(PipelineEngineChoiceSchema)), method(_void(), PipelineEngi
|
|
|
17813
17856
|
steps: array(PipelineStepInputSchema).min(1),
|
|
17814
17857
|
frame: FrameInputSchema.optional(),
|
|
17815
17858
|
/**
|
|
17859
|
+
* Process-local lazy frame. Valid only when caller and provider resolve
|
|
17860
|
+
* in the same execution-group process; split/cross-node callers use
|
|
17861
|
+
* `frame`/`image` inline compatibility instead.
|
|
17862
|
+
*/
|
|
17863
|
+
frameRef: FrameRefSchema.optional(),
|
|
17864
|
+
/**
|
|
17816
17865
|
* CB5 shm passthrough — a `FrameHandle` naming the same ring slot
|
|
17817
17866
|
* the decoded pixels live in. One more member of the one-of
|
|
17818
17867
|
* frame/frameHandle/image/imageBase64/referenceImage group.
|
|
@@ -18108,7 +18157,10 @@ var NativeCropResultSchema = object({
|
|
|
18108
18157
|
* Which source served this crop, so a quality-sensitive consumer (the native
|
|
18109
18158
|
* `keyFrame`) can reject a degraded fallback:
|
|
18110
18159
|
* - `native` — cut from the decode worker's retained NATIVE surface (the
|
|
18111
|
-
* quality path).
|
|
18160
|
+
* quality path). A subject-tile serve is also native-resolution and stays
|
|
18161
|
+
* `native` here: the public enum cannot name `tile` without a breaking cap
|
|
18162
|
+
* change. Runner telemetry distinguishes lease vs tile via `source` on the
|
|
18163
|
+
* internal crop result (`nativeHits` vs `tileHits`).
|
|
18112
18164
|
* - `ram-fullframe` — the native surface MISSED but the request was full-frame,
|
|
18113
18165
|
* so the ≤640 RAM `RetainedFrameStore` served it (honest lower-res; legit for
|
|
18114
18166
|
* the blank-frame guard / 640-snapshot resolve, NOT for the clean keyFrame).
|
|
@@ -18599,12 +18651,41 @@ var RunnerLocalLoadSchema = object({
|
|
|
18599
18651
|
* legacy `OrchestratorMetricsSchema` shape so existing dashboards keep
|
|
18600
18652
|
* working unchanged when they switch to reading from the runner cap.
|
|
18601
18653
|
*/
|
|
18654
|
+
var FrameLazyCountersSchema = object({
|
|
18655
|
+
framesDecoded: number(),
|
|
18656
|
+
framesAdmitted: number(),
|
|
18657
|
+
framesDroppedPixelFree: number(),
|
|
18658
|
+
viewsMaterialized: number(),
|
|
18659
|
+
viewsSkipped: number(),
|
|
18660
|
+
workerToRunnerBytes: number(),
|
|
18661
|
+
runnerToPoolRawBytes: number(),
|
|
18662
|
+
runnerToPoolJpegBytes: number(),
|
|
18663
|
+
onDemandFullFrameRequests: number(),
|
|
18664
|
+
onDemandCropRequests: number(),
|
|
18665
|
+
nativeHits: number(),
|
|
18666
|
+
nativeMisses: number(),
|
|
18667
|
+
tileHits: number(),
|
|
18668
|
+
tileMisses: number(),
|
|
18669
|
+
fallbackHits: number(),
|
|
18670
|
+
fallbackMisses: number(),
|
|
18671
|
+
retainedWritesAvoided: number(),
|
|
18672
|
+
residentRefs: number(),
|
|
18673
|
+
residentBytes: number(),
|
|
18674
|
+
releases: number(),
|
|
18675
|
+
evictions: number(),
|
|
18676
|
+
staleMisses: number()
|
|
18677
|
+
});
|
|
18678
|
+
var FrameLazyMetricsSchema = object({
|
|
18679
|
+
node: FrameLazyCountersSchema,
|
|
18680
|
+
cameras: array(FrameLazyCountersSchema.extend({ deviceId: number() }))
|
|
18681
|
+
});
|
|
18602
18682
|
var RunnerLocalMetricsSchema = object({
|
|
18603
18683
|
nodeId: string(),
|
|
18604
18684
|
activeCameras: number(),
|
|
18605
18685
|
throttledCameras: number(),
|
|
18606
18686
|
avgInferenceTimeMs: number(),
|
|
18607
|
-
queueDepth: number()
|
|
18687
|
+
queueDepth: number(),
|
|
18688
|
+
frameLazy: FrameLazyMetricsSchema.optional()
|
|
18608
18689
|
});
|
|
18609
18690
|
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({
|
|
18610
18691
|
handle: FrameHandleSchema,
|
|
@@ -20008,6 +20089,9 @@ method(_void(), ProviderInfoSchema), method(object({ config: record(string(), un
|
|
|
20008
20089
|
location: StorageLocationSchema,
|
|
20009
20090
|
relativePath: string()
|
|
20010
20091
|
}), _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" });
|
|
20092
|
+
/** Profile-exported FormBuilder schema. Shape is ConfigUISchema at the UI. */
|
|
20093
|
+
var ProfileSettingsSchemaBridge = unknown().nullable();
|
|
20094
|
+
var ProfileSettingsBagSchema = record(string(), unknown());
|
|
20011
20095
|
/**
|
|
20012
20096
|
* A live terminal session hosted by the provider addon. Output and input do
|
|
20013
20097
|
* NOT flow through the capability — they use the addon data plane
|
|
@@ -20037,7 +20121,14 @@ var TerminalSessionInfoSchema = object({
|
|
|
20037
20121
|
var TerminalProfileInfoSchema = object({
|
|
20038
20122
|
profileId: string(),
|
|
20039
20123
|
label: string(),
|
|
20040
|
-
description: string().optional()
|
|
20124
|
+
description: string().optional(),
|
|
20125
|
+
/** Spawn defaults the instance form copies on create. */
|
|
20126
|
+
executable: string().optional(),
|
|
20127
|
+
args: array(string()).readonly().optional(),
|
|
20128
|
+
cwd: string().optional(),
|
|
20129
|
+
environment: array(string()).readonly().optional(),
|
|
20130
|
+
/** ConfigUISchema for instance knobs, or null when the profile has none. */
|
|
20131
|
+
settingsSchema: ProfileSettingsSchemaBridge.optional()
|
|
20041
20132
|
});
|
|
20042
20133
|
/**
|
|
20043
20134
|
* A durable operator-created Terminal instance. Profiles are templates; only
|
|
@@ -20050,7 +20141,12 @@ var TerminalInstanceInfoSchema = object({
|
|
|
20050
20141
|
profileId: string(),
|
|
20051
20142
|
profileLabel: string(),
|
|
20052
20143
|
name: string(),
|
|
20053
|
-
enabled: boolean()
|
|
20144
|
+
enabled: boolean(),
|
|
20145
|
+
executable: string(),
|
|
20146
|
+
args: array(string()).readonly(),
|
|
20147
|
+
cwd: string(),
|
|
20148
|
+
environment: array(string()).readonly(),
|
|
20149
|
+
profileSettings: ProfileSettingsBagSchema
|
|
20054
20150
|
});
|
|
20055
20151
|
var TerminalLegacyCameraSchema = object({
|
|
20056
20152
|
stableId: string(),
|
|
@@ -20080,7 +20176,23 @@ var TerminalOutputBatchSchema = object({
|
|
|
20080
20176
|
method(_void(), array(TerminalProfileInfoSchema).readonly(), { auth: "admin" }), method(_void(), array(TerminalInstanceInfoSchema).readonly(), { auth: "admin" }), method(object({
|
|
20081
20177
|
targetNodeId: string().min(1),
|
|
20082
20178
|
profileId: string().min(1),
|
|
20083
|
-
name: string().trim().min(1).max(160).optional()
|
|
20179
|
+
name: string().trim().min(1).max(160).optional(),
|
|
20180
|
+
executable: string().max(1024).optional(),
|
|
20181
|
+
args: array(string().max(2048)).max(64).optional(),
|
|
20182
|
+
cwd: string().max(1024).optional(),
|
|
20183
|
+
environment: array(string().max(4096)).max(64).optional(),
|
|
20184
|
+
profileSettings: ProfileSettingsBagSchema.optional()
|
|
20185
|
+
}), TerminalInstanceInfoSchema, {
|
|
20186
|
+
kind: "mutation",
|
|
20187
|
+
auth: "admin"
|
|
20188
|
+
}), method(object({
|
|
20189
|
+
instanceId: string().min(1),
|
|
20190
|
+
name: string().trim().min(1).max(160).optional(),
|
|
20191
|
+
executable: string().max(1024).optional(),
|
|
20192
|
+
args: array(string().max(2048)).max(64).optional(),
|
|
20193
|
+
cwd: string().max(1024).optional(),
|
|
20194
|
+
environment: array(string().max(4096)).max(64).optional(),
|
|
20195
|
+
profileSettings: ProfileSettingsBagSchema.optional()
|
|
20084
20196
|
}), TerminalInstanceInfoSchema, {
|
|
20085
20197
|
kind: "mutation",
|
|
20086
20198
|
auth: "admin"
|
|
@@ -20102,7 +20214,11 @@ method(_void(), array(TerminalProfileInfoSchema).readonly(), { auth: "admin" }),
|
|
|
20102
20214
|
}), method(_void(), array(TerminalSessionInfoSchema).readonly(), { auth: "admin" }), method(object({
|
|
20103
20215
|
profileId: string(),
|
|
20104
20216
|
cols: number().int().positive(),
|
|
20105
|
-
rows: number().int().positive()
|
|
20217
|
+
rows: number().int().positive(),
|
|
20218
|
+
executable: string().max(1024).optional(),
|
|
20219
|
+
args: array(string().max(2048)).max(64).optional(),
|
|
20220
|
+
cwd: string().max(1024).optional(),
|
|
20221
|
+
environment: array(string().max(4096)).max(64).optional()
|
|
20106
20222
|
}), TerminalSessionInfoSchema, {
|
|
20107
20223
|
kind: "mutation",
|
|
20108
20224
|
auth: "admin"
|
|
@@ -23985,10 +24101,10 @@ var lawnMowerControlCapability = {
|
|
|
23985
24101
|
*
|
|
23986
24102
|
* • The SDK (mobile / web client) consumes `getConnectionEndpoints()`
|
|
23987
24103
|
* to receive an ordered list of candidate base URLs it should race
|
|
23988
|
-
* on connect — LAN IPv4 first (lowest latency
|
|
23989
|
-
* then public hostname (if a tunnel is
|
|
23990
|
-
* race them with short timeouts and stick with the
|
|
23991
|
-
* session.
|
|
24104
|
+
* on connect — LAN IPv4 and stable LAN IPv6 first (lowest latency
|
|
24105
|
+
* when on the same network), then public hostname (if a tunnel is
|
|
24106
|
+
* up). The SDK can race them with short timeouts and stick with the
|
|
24107
|
+
* winner for the session.
|
|
23992
24108
|
*
|
|
23993
24109
|
* Why hub-only: agents are not directly addressable by the operator's
|
|
23994
24110
|
* clients — they reverse-connect to the hub. Exposing their interfaces
|
|
@@ -24143,6 +24259,17 @@ var NotificationEndpointSchema = object({
|
|
|
24143
24259
|
/** What the ranking currently resolves to (null when nothing is reachable). */
|
|
24144
24260
|
resolved: string().nullable()
|
|
24145
24261
|
});
|
|
24262
|
+
/**
|
|
24263
|
+
* The URLs the SDK / viewer should race for API access. `baseUrls` empty =
|
|
24264
|
+
* AUTO (every LAN IPv4 + the public tunnel). `resolved` is what that choice
|
|
24265
|
+
* currently expands to, so the UI can show the effective set either way.
|
|
24266
|
+
*/
|
|
24267
|
+
var ViewerEndpointsSchema = object({
|
|
24268
|
+
/** The operator's explicit race set, or empty for AUTO. */
|
|
24269
|
+
baseUrls: array(string()).readonly(),
|
|
24270
|
+
/** What the ranking currently resolves to (may be empty if nothing is up). */
|
|
24271
|
+
resolved: array(string()).readonly()
|
|
24272
|
+
});
|
|
24146
24273
|
var AllowedAddressesSchema = object({
|
|
24147
24274
|
/**
|
|
24148
24275
|
* Allowlist of interface addresses operators have explicitly opted
|
|
@@ -24151,6 +24278,20 @@ var AllowedAddressesSchema = object({
|
|
|
24151
24278
|
* Network Addresses admin page and persisted by the addon.
|
|
24152
24279
|
*/
|
|
24153
24280
|
addresses: array(string()).readonly() });
|
|
24281
|
+
var TlsStatusSchema = object({
|
|
24282
|
+
mode: _enum([
|
|
24283
|
+
"generated",
|
|
24284
|
+
"uploaded",
|
|
24285
|
+
"disabled"
|
|
24286
|
+
]),
|
|
24287
|
+
leafFingerprintSha256: string().nullable(),
|
|
24288
|
+
caFingerprintSha256: string().nullable(),
|
|
24289
|
+
validTo: string().nullable(),
|
|
24290
|
+
sans: array(string()),
|
|
24291
|
+
caCertPem: string().nullable(),
|
|
24292
|
+
reissueError: string().nullable(),
|
|
24293
|
+
restartRequired: boolean()
|
|
24294
|
+
});
|
|
24154
24295
|
method(_void(), ListResultSchema), method(_void(), PreferredSchema), method(object({
|
|
24155
24296
|
/**
|
|
24156
24297
|
* LEGACY HINT — do not send from new code. Kept optional so clients
|
|
@@ -24160,17 +24301,31 @@ method(_void(), ListResultSchema), method(_void(), PreferredSchema), method(obje
|
|
|
24160
24301
|
*/
|
|
24161
24302
|
port: number().int().min(1).max(65535).optional(),
|
|
24162
24303
|
/** Include `http(s)://127.0.0.1:<port>` as the lowest-priority
|
|
24163
|
-
* candidate. Default `
|
|
24304
|
+
* candidate. Default `false` — loopback is not a client route. */
|
|
24164
24305
|
includeLoopback: boolean().optional(),
|
|
24165
|
-
/** Skip IPv6 entries.
|
|
24166
|
-
*
|
|
24306
|
+
/** Skip IPv6 entries. Default `false` — the palette includes stable
|
|
24307
|
+
* LAN IPv6 (ICE/WebRTC uses dual-stack regardless). Pass `true` to
|
|
24308
|
+
* hide them. The viewer HTTP/WS race is `getViewerEndpoints`. */
|
|
24167
24309
|
ipv4Only: boolean().optional(),
|
|
24168
24310
|
/** Scheme to emit for LAN/loopback URLs. Default `'http'`.
|
|
24169
24311
|
* Pass `'https'` when the caller is itself loaded over HTTPS
|
|
24170
24312
|
* to avoid mixed-content blocks in the browser. The public
|
|
24171
24313
|
* tunnel always emits `https://` regardless. */
|
|
24172
24314
|
scheme: _enum(["http", "https"]).optional()
|
|
24173
|
-
}), 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" })
|
|
24315
|
+
}), 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, {
|
|
24316
|
+
kind: "mutation",
|
|
24317
|
+
auth: "admin"
|
|
24318
|
+
}), method(object({
|
|
24319
|
+
certPem: string().min(1),
|
|
24320
|
+
keyPem: string().min(1),
|
|
24321
|
+
caPem: string().optional()
|
|
24322
|
+
}), TlsStatusSchema, {
|
|
24323
|
+
kind: "mutation",
|
|
24324
|
+
auth: "admin"
|
|
24325
|
+
}), method(_void(), object({ pem: string() })), method(_void(), TlsStatusSchema, {
|
|
24326
|
+
kind: "mutation",
|
|
24327
|
+
auth: "admin"
|
|
24328
|
+
});
|
|
24174
24329
|
var LockControlStatusSchema = object({
|
|
24175
24330
|
/** Lifecycle state of the lock. `jammed` means the motor reported
|
|
24176
24331
|
* failure to reach the target — operator intervention required. */
|
|
@@ -32197,6 +32352,12 @@ Object.freeze({
|
|
|
32197
32352
|
addonId: null,
|
|
32198
32353
|
access: "create"
|
|
32199
32354
|
},
|
|
32355
|
+
"localNetwork.downloadCa": {
|
|
32356
|
+
capName: "local-network",
|
|
32357
|
+
capScope: "system",
|
|
32358
|
+
addonId: null,
|
|
32359
|
+
access: "view"
|
|
32360
|
+
},
|
|
32200
32361
|
"localNetwork.getAllowedAddresses": {
|
|
32201
32362
|
capName: "local-network",
|
|
32202
32363
|
capScope: "system",
|
|
@@ -32221,18 +32382,42 @@ Object.freeze({
|
|
|
32221
32382
|
addonId: null,
|
|
32222
32383
|
access: "view"
|
|
32223
32384
|
},
|
|
32385
|
+
"localNetwork.getTlsStatus": {
|
|
32386
|
+
capName: "local-network",
|
|
32387
|
+
capScope: "system",
|
|
32388
|
+
addonId: null,
|
|
32389
|
+
access: "view"
|
|
32390
|
+
},
|
|
32391
|
+
"localNetwork.getViewerEndpoints": {
|
|
32392
|
+
capName: "local-network",
|
|
32393
|
+
capScope: "system",
|
|
32394
|
+
addonId: null,
|
|
32395
|
+
access: "view"
|
|
32396
|
+
},
|
|
32224
32397
|
"localNetwork.list": {
|
|
32225
32398
|
capName: "local-network",
|
|
32226
32399
|
capScope: "system",
|
|
32227
32400
|
addonId: null,
|
|
32228
32401
|
access: "view"
|
|
32229
32402
|
},
|
|
32403
|
+
"localNetwork.regenerateCertificate": {
|
|
32404
|
+
capName: "local-network",
|
|
32405
|
+
capScope: "system",
|
|
32406
|
+
addonId: null,
|
|
32407
|
+
access: "create"
|
|
32408
|
+
},
|
|
32230
32409
|
"localNetwork.resetAllowlistToBestMatch": {
|
|
32231
32410
|
capName: "local-network",
|
|
32232
32411
|
capScope: "system",
|
|
32233
32412
|
addonId: null,
|
|
32234
32413
|
access: "delete"
|
|
32235
32414
|
},
|
|
32415
|
+
"localNetwork.revertToGeneratedCertificate": {
|
|
32416
|
+
capName: "local-network",
|
|
32417
|
+
capScope: "system",
|
|
32418
|
+
addonId: null,
|
|
32419
|
+
access: "create"
|
|
32420
|
+
},
|
|
32236
32421
|
"localNetwork.setAllowedAddresses": {
|
|
32237
32422
|
capName: "local-network",
|
|
32238
32423
|
capScope: "system",
|
|
@@ -32245,6 +32430,18 @@ Object.freeze({
|
|
|
32245
32430
|
addonId: null,
|
|
32246
32431
|
access: "create"
|
|
32247
32432
|
},
|
|
32433
|
+
"localNetwork.setViewerEndpoints": {
|
|
32434
|
+
capName: "local-network",
|
|
32435
|
+
capScope: "system",
|
|
32436
|
+
addonId: null,
|
|
32437
|
+
access: "create"
|
|
32438
|
+
},
|
|
32439
|
+
"localNetwork.uploadCertificate": {
|
|
32440
|
+
capName: "local-network",
|
|
32441
|
+
capScope: "system",
|
|
32442
|
+
addonId: null,
|
|
32443
|
+
access: "create"
|
|
32444
|
+
},
|
|
32248
32445
|
"lockControl.lock": {
|
|
32249
32446
|
capName: "lock-control",
|
|
32250
32447
|
capScope: "device",
|
|
@@ -35125,6 +35322,12 @@ Object.freeze({
|
|
|
35125
35322
|
addonId: null,
|
|
35126
35323
|
access: "create"
|
|
35127
35324
|
},
|
|
35325
|
+
"terminalSession.updateInstance": {
|
|
35326
|
+
capName: "terminal-session",
|
|
35327
|
+
capScope: "system",
|
|
35328
|
+
addonId: null,
|
|
35329
|
+
access: "create"
|
|
35330
|
+
},
|
|
35128
35331
|
"terminalSession.writeInput": {
|
|
35129
35332
|
capName: "terminal-session",
|
|
35130
35333
|
capScope: "system",
|
|
@@ -37612,6 +37815,35 @@ Object.freeze(Object.fromEntries([{
|
|
|
37612
37815
|
}]
|
|
37613
37816
|
}].map((s) => [s.stepId, s.defaultModelId])));
|
|
37614
37817
|
string().min(1);
|
|
37818
|
+
var CLUSTER_STEP_SETTING_FIELDS = [{
|
|
37819
|
+
stepId: "face-embedding",
|
|
37820
|
+
key: "minLandmarkFaceSize",
|
|
37821
|
+
label: "Min face size for recognition (detection px)",
|
|
37822
|
+
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.",
|
|
37823
|
+
type: "slider",
|
|
37824
|
+
min: 0,
|
|
37825
|
+
max: 64,
|
|
37826
|
+
step: 2,
|
|
37827
|
+
default: 24
|
|
37828
|
+
}];
|
|
37829
|
+
function clusterStepSettingKey(stepId, fieldKey) {
|
|
37830
|
+
return `clusterStepSetting:${stepId}:${fieldKey}`;
|
|
37831
|
+
}
|
|
37832
|
+
var ClusterSettingNumberSchema = number().finite();
|
|
37833
|
+
function readClusterStepSettings(config) {
|
|
37834
|
+
const out = {};
|
|
37835
|
+
for (const field of CLUSTER_STEP_SETTING_FIELDS) {
|
|
37836
|
+
const parsed = ClusterSettingNumberSchema.safeParse(config[clusterStepSettingKey(field.stepId, field.key)]);
|
|
37837
|
+
const value = parsed.success ? parsed.data : field.default;
|
|
37838
|
+
const existing = out[field.stepId] ?? {};
|
|
37839
|
+
out[field.stepId] = {
|
|
37840
|
+
...existing,
|
|
37841
|
+
[field.key]: value
|
|
37842
|
+
};
|
|
37843
|
+
}
|
|
37844
|
+
return out;
|
|
37845
|
+
}
|
|
37846
|
+
readClusterStepSettings({});
|
|
37615
37847
|
object({
|
|
37616
37848
|
/**
|
|
37617
37849
|
* Fraction of the box's own size added on EACH side before cutting.
|
package/dist/addon.mjs
CHANGED
|
@@ -8031,6 +8031,15 @@ var LabelDefinitionSchema = object({
|
|
|
8031
8031
|
description: string().optional(),
|
|
8032
8032
|
icon: string().optional()
|
|
8033
8033
|
});
|
|
8034
|
+
var ClassMapDefinitionSchema = object({
|
|
8035
|
+
mapping: record(string(), _enum([
|
|
8036
|
+
"person",
|
|
8037
|
+
"vehicle",
|
|
8038
|
+
"animal",
|
|
8039
|
+
"package"
|
|
8040
|
+
])),
|
|
8041
|
+
preserveOriginal: boolean()
|
|
8042
|
+
});
|
|
8034
8043
|
var MODEL_FORMATS = [
|
|
8035
8044
|
"onnx",
|
|
8036
8045
|
"coreml",
|
|
@@ -8209,7 +8218,13 @@ var ModelCatalogEntrySchema = object({
|
|
|
8209
8218
|
* `id` stays the source of truth for resolution/download/persistence; grouping
|
|
8210
8219
|
* is a presentation overlay resolved back to an `id`.
|
|
8211
8220
|
*/
|
|
8212
|
-
group: ModelVariantGroupSchema.optional()
|
|
8221
|
+
group: ModelVariantGroupSchema.optional(),
|
|
8222
|
+
/**
|
|
8223
|
+
* Per-MODEL class map override. Absent ⇒ the step's `StepDefinition.classMap`
|
|
8224
|
+
* applies (Frigate / COCO public catalog). Set on a custom model whose raw
|
|
8225
|
+
* labels already ARE the CamStack macros (Scrypted identity map).
|
|
8226
|
+
*/
|
|
8227
|
+
classMap: ClassMapDefinitionSchema.optional()
|
|
8213
8228
|
});
|
|
8214
8229
|
var ConvertTargetSchema = discriminatedUnion("format", [object({
|
|
8215
8230
|
format: literal("openvino"),
|
|
@@ -8238,7 +8253,8 @@ var ModelConvertMetadataSchema = object({
|
|
|
8238
8253
|
"ocr",
|
|
8239
8254
|
"segmentation"
|
|
8240
8255
|
]),
|
|
8241
|
-
faceAlignment: boolean().optional()
|
|
8256
|
+
faceAlignment: boolean().optional(),
|
|
8257
|
+
classMap: ClassMapDefinitionSchema.optional()
|
|
8242
8258
|
});
|
|
8243
8259
|
var ConvertResultSchema = object({
|
|
8244
8260
|
entry: ModelCatalogEntrySchema,
|
|
@@ -17548,6 +17564,33 @@ var NativeCropRefSchema = object({
|
|
|
17548
17564
|
h: number()
|
|
17549
17565
|
})
|
|
17550
17566
|
});
|
|
17567
|
+
object({
|
|
17568
|
+
crop: object({
|
|
17569
|
+
left: number(),
|
|
17570
|
+
top: number(),
|
|
17571
|
+
width: number().positive(),
|
|
17572
|
+
height: number().positive()
|
|
17573
|
+
}).optional(),
|
|
17574
|
+
content: object({
|
|
17575
|
+
width: number().int().positive(),
|
|
17576
|
+
height: number().int().positive()
|
|
17577
|
+
}),
|
|
17578
|
+
fit: _enum(["stretch", "contain"]),
|
|
17579
|
+
format: _enum([
|
|
17580
|
+
"rgb",
|
|
17581
|
+
"gray",
|
|
17582
|
+
"jpeg"
|
|
17583
|
+
])
|
|
17584
|
+
});
|
|
17585
|
+
var FrameRefSchema = object({
|
|
17586
|
+
registryId: string().min(1),
|
|
17587
|
+
id: string().min(1),
|
|
17588
|
+
width: number().int().positive(),
|
|
17589
|
+
height: number().int().positive(),
|
|
17590
|
+
format: _enum(["rgb", "gray"]),
|
|
17591
|
+
timestamp: number(),
|
|
17592
|
+
capturedAt: number().optional()
|
|
17593
|
+
});
|
|
17551
17594
|
var ModelFormatSchema$1 = _enum([
|
|
17552
17595
|
"onnx",
|
|
17553
17596
|
"coreml",
|
|
@@ -17792,6 +17835,12 @@ method(_void(), array(PipelineEngineChoiceSchema)), method(_void(), PipelineEngi
|
|
|
17792
17835
|
steps: array(PipelineStepInputSchema).min(1),
|
|
17793
17836
|
frame: FrameInputSchema.optional(),
|
|
17794
17837
|
/**
|
|
17838
|
+
* Process-local lazy frame. Valid only when caller and provider resolve
|
|
17839
|
+
* in the same execution-group process; split/cross-node callers use
|
|
17840
|
+
* `frame`/`image` inline compatibility instead.
|
|
17841
|
+
*/
|
|
17842
|
+
frameRef: FrameRefSchema.optional(),
|
|
17843
|
+
/**
|
|
17795
17844
|
* CB5 shm passthrough — a `FrameHandle` naming the same ring slot
|
|
17796
17845
|
* the decoded pixels live in. One more member of the one-of
|
|
17797
17846
|
* frame/frameHandle/image/imageBase64/referenceImage group.
|
|
@@ -18087,7 +18136,10 @@ var NativeCropResultSchema = object({
|
|
|
18087
18136
|
* Which source served this crop, so a quality-sensitive consumer (the native
|
|
18088
18137
|
* `keyFrame`) can reject a degraded fallback:
|
|
18089
18138
|
* - `native` — cut from the decode worker's retained NATIVE surface (the
|
|
18090
|
-
* quality path).
|
|
18139
|
+
* quality path). A subject-tile serve is also native-resolution and stays
|
|
18140
|
+
* `native` here: the public enum cannot name `tile` without a breaking cap
|
|
18141
|
+
* change. Runner telemetry distinguishes lease vs tile via `source` on the
|
|
18142
|
+
* internal crop result (`nativeHits` vs `tileHits`).
|
|
18091
18143
|
* - `ram-fullframe` — the native surface MISSED but the request was full-frame,
|
|
18092
18144
|
* so the ≤640 RAM `RetainedFrameStore` served it (honest lower-res; legit for
|
|
18093
18145
|
* the blank-frame guard / 640-snapshot resolve, NOT for the clean keyFrame).
|
|
@@ -18578,12 +18630,41 @@ var RunnerLocalLoadSchema = object({
|
|
|
18578
18630
|
* legacy `OrchestratorMetricsSchema` shape so existing dashboards keep
|
|
18579
18631
|
* working unchanged when they switch to reading from the runner cap.
|
|
18580
18632
|
*/
|
|
18633
|
+
var FrameLazyCountersSchema = object({
|
|
18634
|
+
framesDecoded: number(),
|
|
18635
|
+
framesAdmitted: number(),
|
|
18636
|
+
framesDroppedPixelFree: number(),
|
|
18637
|
+
viewsMaterialized: number(),
|
|
18638
|
+
viewsSkipped: number(),
|
|
18639
|
+
workerToRunnerBytes: number(),
|
|
18640
|
+
runnerToPoolRawBytes: number(),
|
|
18641
|
+
runnerToPoolJpegBytes: number(),
|
|
18642
|
+
onDemandFullFrameRequests: number(),
|
|
18643
|
+
onDemandCropRequests: number(),
|
|
18644
|
+
nativeHits: number(),
|
|
18645
|
+
nativeMisses: number(),
|
|
18646
|
+
tileHits: number(),
|
|
18647
|
+
tileMisses: number(),
|
|
18648
|
+
fallbackHits: number(),
|
|
18649
|
+
fallbackMisses: number(),
|
|
18650
|
+
retainedWritesAvoided: number(),
|
|
18651
|
+
residentRefs: number(),
|
|
18652
|
+
residentBytes: number(),
|
|
18653
|
+
releases: number(),
|
|
18654
|
+
evictions: number(),
|
|
18655
|
+
staleMisses: number()
|
|
18656
|
+
});
|
|
18657
|
+
var FrameLazyMetricsSchema = object({
|
|
18658
|
+
node: FrameLazyCountersSchema,
|
|
18659
|
+
cameras: array(FrameLazyCountersSchema.extend({ deviceId: number() }))
|
|
18660
|
+
});
|
|
18581
18661
|
var RunnerLocalMetricsSchema = object({
|
|
18582
18662
|
nodeId: string(),
|
|
18583
18663
|
activeCameras: number(),
|
|
18584
18664
|
throttledCameras: number(),
|
|
18585
18665
|
avgInferenceTimeMs: number(),
|
|
18586
|
-
queueDepth: number()
|
|
18666
|
+
queueDepth: number(),
|
|
18667
|
+
frameLazy: FrameLazyMetricsSchema.optional()
|
|
18587
18668
|
});
|
|
18588
18669
|
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({
|
|
18589
18670
|
handle: FrameHandleSchema,
|
|
@@ -19987,6 +20068,9 @@ method(_void(), ProviderInfoSchema), method(object({ config: record(string(), un
|
|
|
19987
20068
|
location: StorageLocationSchema,
|
|
19988
20069
|
relativePath: string()
|
|
19989
20070
|
}), _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" });
|
|
20071
|
+
/** Profile-exported FormBuilder schema. Shape is ConfigUISchema at the UI. */
|
|
20072
|
+
var ProfileSettingsSchemaBridge = unknown().nullable();
|
|
20073
|
+
var ProfileSettingsBagSchema = record(string(), unknown());
|
|
19990
20074
|
/**
|
|
19991
20075
|
* A live terminal session hosted by the provider addon. Output and input do
|
|
19992
20076
|
* NOT flow through the capability — they use the addon data plane
|
|
@@ -20016,7 +20100,14 @@ var TerminalSessionInfoSchema = object({
|
|
|
20016
20100
|
var TerminalProfileInfoSchema = object({
|
|
20017
20101
|
profileId: string(),
|
|
20018
20102
|
label: string(),
|
|
20019
|
-
description: string().optional()
|
|
20103
|
+
description: string().optional(),
|
|
20104
|
+
/** Spawn defaults the instance form copies on create. */
|
|
20105
|
+
executable: string().optional(),
|
|
20106
|
+
args: array(string()).readonly().optional(),
|
|
20107
|
+
cwd: string().optional(),
|
|
20108
|
+
environment: array(string()).readonly().optional(),
|
|
20109
|
+
/** ConfigUISchema for instance knobs, or null when the profile has none. */
|
|
20110
|
+
settingsSchema: ProfileSettingsSchemaBridge.optional()
|
|
20020
20111
|
});
|
|
20021
20112
|
/**
|
|
20022
20113
|
* A durable operator-created Terminal instance. Profiles are templates; only
|
|
@@ -20029,7 +20120,12 @@ var TerminalInstanceInfoSchema = object({
|
|
|
20029
20120
|
profileId: string(),
|
|
20030
20121
|
profileLabel: string(),
|
|
20031
20122
|
name: string(),
|
|
20032
|
-
enabled: boolean()
|
|
20123
|
+
enabled: boolean(),
|
|
20124
|
+
executable: string(),
|
|
20125
|
+
args: array(string()).readonly(),
|
|
20126
|
+
cwd: string(),
|
|
20127
|
+
environment: array(string()).readonly(),
|
|
20128
|
+
profileSettings: ProfileSettingsBagSchema
|
|
20033
20129
|
});
|
|
20034
20130
|
var TerminalLegacyCameraSchema = object({
|
|
20035
20131
|
stableId: string(),
|
|
@@ -20059,7 +20155,23 @@ var TerminalOutputBatchSchema = object({
|
|
|
20059
20155
|
method(_void(), array(TerminalProfileInfoSchema).readonly(), { auth: "admin" }), method(_void(), array(TerminalInstanceInfoSchema).readonly(), { auth: "admin" }), method(object({
|
|
20060
20156
|
targetNodeId: string().min(1),
|
|
20061
20157
|
profileId: string().min(1),
|
|
20062
|
-
name: string().trim().min(1).max(160).optional()
|
|
20158
|
+
name: string().trim().min(1).max(160).optional(),
|
|
20159
|
+
executable: string().max(1024).optional(),
|
|
20160
|
+
args: array(string().max(2048)).max(64).optional(),
|
|
20161
|
+
cwd: string().max(1024).optional(),
|
|
20162
|
+
environment: array(string().max(4096)).max(64).optional(),
|
|
20163
|
+
profileSettings: ProfileSettingsBagSchema.optional()
|
|
20164
|
+
}), TerminalInstanceInfoSchema, {
|
|
20165
|
+
kind: "mutation",
|
|
20166
|
+
auth: "admin"
|
|
20167
|
+
}), method(object({
|
|
20168
|
+
instanceId: string().min(1),
|
|
20169
|
+
name: string().trim().min(1).max(160).optional(),
|
|
20170
|
+
executable: string().max(1024).optional(),
|
|
20171
|
+
args: array(string().max(2048)).max(64).optional(),
|
|
20172
|
+
cwd: string().max(1024).optional(),
|
|
20173
|
+
environment: array(string().max(4096)).max(64).optional(),
|
|
20174
|
+
profileSettings: ProfileSettingsBagSchema.optional()
|
|
20063
20175
|
}), TerminalInstanceInfoSchema, {
|
|
20064
20176
|
kind: "mutation",
|
|
20065
20177
|
auth: "admin"
|
|
@@ -20081,7 +20193,11 @@ method(_void(), array(TerminalProfileInfoSchema).readonly(), { auth: "admin" }),
|
|
|
20081
20193
|
}), method(_void(), array(TerminalSessionInfoSchema).readonly(), { auth: "admin" }), method(object({
|
|
20082
20194
|
profileId: string(),
|
|
20083
20195
|
cols: number().int().positive(),
|
|
20084
|
-
rows: number().int().positive()
|
|
20196
|
+
rows: number().int().positive(),
|
|
20197
|
+
executable: string().max(1024).optional(),
|
|
20198
|
+
args: array(string().max(2048)).max(64).optional(),
|
|
20199
|
+
cwd: string().max(1024).optional(),
|
|
20200
|
+
environment: array(string().max(4096)).max(64).optional()
|
|
20085
20201
|
}), TerminalSessionInfoSchema, {
|
|
20086
20202
|
kind: "mutation",
|
|
20087
20203
|
auth: "admin"
|
|
@@ -23964,10 +24080,10 @@ var lawnMowerControlCapability = {
|
|
|
23964
24080
|
*
|
|
23965
24081
|
* • The SDK (mobile / web client) consumes `getConnectionEndpoints()`
|
|
23966
24082
|
* to receive an ordered list of candidate base URLs it should race
|
|
23967
|
-
* on connect — LAN IPv4 first (lowest latency
|
|
23968
|
-
* then public hostname (if a tunnel is
|
|
23969
|
-
* race them with short timeouts and stick with the
|
|
23970
|
-
* session.
|
|
24083
|
+
* on connect — LAN IPv4 and stable LAN IPv6 first (lowest latency
|
|
24084
|
+
* when on the same network), then public hostname (if a tunnel is
|
|
24085
|
+
* up). The SDK can race them with short timeouts and stick with the
|
|
24086
|
+
* winner for the session.
|
|
23971
24087
|
*
|
|
23972
24088
|
* Why hub-only: agents are not directly addressable by the operator's
|
|
23973
24089
|
* clients — they reverse-connect to the hub. Exposing their interfaces
|
|
@@ -24122,6 +24238,17 @@ var NotificationEndpointSchema = object({
|
|
|
24122
24238
|
/** What the ranking currently resolves to (null when nothing is reachable). */
|
|
24123
24239
|
resolved: string().nullable()
|
|
24124
24240
|
});
|
|
24241
|
+
/**
|
|
24242
|
+
* The URLs the SDK / viewer should race for API access. `baseUrls` empty =
|
|
24243
|
+
* AUTO (every LAN IPv4 + the public tunnel). `resolved` is what that choice
|
|
24244
|
+
* currently expands to, so the UI can show the effective set either way.
|
|
24245
|
+
*/
|
|
24246
|
+
var ViewerEndpointsSchema = object({
|
|
24247
|
+
/** The operator's explicit race set, or empty for AUTO. */
|
|
24248
|
+
baseUrls: array(string()).readonly(),
|
|
24249
|
+
/** What the ranking currently resolves to (may be empty if nothing is up). */
|
|
24250
|
+
resolved: array(string()).readonly()
|
|
24251
|
+
});
|
|
24125
24252
|
var AllowedAddressesSchema = object({
|
|
24126
24253
|
/**
|
|
24127
24254
|
* Allowlist of interface addresses operators have explicitly opted
|
|
@@ -24130,6 +24257,20 @@ var AllowedAddressesSchema = object({
|
|
|
24130
24257
|
* Network Addresses admin page and persisted by the addon.
|
|
24131
24258
|
*/
|
|
24132
24259
|
addresses: array(string()).readonly() });
|
|
24260
|
+
var TlsStatusSchema = object({
|
|
24261
|
+
mode: _enum([
|
|
24262
|
+
"generated",
|
|
24263
|
+
"uploaded",
|
|
24264
|
+
"disabled"
|
|
24265
|
+
]),
|
|
24266
|
+
leafFingerprintSha256: string().nullable(),
|
|
24267
|
+
caFingerprintSha256: string().nullable(),
|
|
24268
|
+
validTo: string().nullable(),
|
|
24269
|
+
sans: array(string()),
|
|
24270
|
+
caCertPem: string().nullable(),
|
|
24271
|
+
reissueError: string().nullable(),
|
|
24272
|
+
restartRequired: boolean()
|
|
24273
|
+
});
|
|
24133
24274
|
method(_void(), ListResultSchema), method(_void(), PreferredSchema), method(object({
|
|
24134
24275
|
/**
|
|
24135
24276
|
* LEGACY HINT — do not send from new code. Kept optional so clients
|
|
@@ -24139,17 +24280,31 @@ method(_void(), ListResultSchema), method(_void(), PreferredSchema), method(obje
|
|
|
24139
24280
|
*/
|
|
24140
24281
|
port: number().int().min(1).max(65535).optional(),
|
|
24141
24282
|
/** Include `http(s)://127.0.0.1:<port>` as the lowest-priority
|
|
24142
|
-
* candidate. Default `
|
|
24283
|
+
* candidate. Default `false` — loopback is not a client route. */
|
|
24143
24284
|
includeLoopback: boolean().optional(),
|
|
24144
|
-
/** Skip IPv6 entries.
|
|
24145
|
-
*
|
|
24285
|
+
/** Skip IPv6 entries. Default `false` — the palette includes stable
|
|
24286
|
+
* LAN IPv6 (ICE/WebRTC uses dual-stack regardless). Pass `true` to
|
|
24287
|
+
* hide them. The viewer HTTP/WS race is `getViewerEndpoints`. */
|
|
24146
24288
|
ipv4Only: boolean().optional(),
|
|
24147
24289
|
/** Scheme to emit for LAN/loopback URLs. Default `'http'`.
|
|
24148
24290
|
* Pass `'https'` when the caller is itself loaded over HTTPS
|
|
24149
24291
|
* to avoid mixed-content blocks in the browser. The public
|
|
24150
24292
|
* tunnel always emits `https://` regardless. */
|
|
24151
24293
|
scheme: _enum(["http", "https"]).optional()
|
|
24152
|
-
}), 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" })
|
|
24294
|
+
}), 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, {
|
|
24295
|
+
kind: "mutation",
|
|
24296
|
+
auth: "admin"
|
|
24297
|
+
}), method(object({
|
|
24298
|
+
certPem: string().min(1),
|
|
24299
|
+
keyPem: string().min(1),
|
|
24300
|
+
caPem: string().optional()
|
|
24301
|
+
}), TlsStatusSchema, {
|
|
24302
|
+
kind: "mutation",
|
|
24303
|
+
auth: "admin"
|
|
24304
|
+
}), method(_void(), object({ pem: string() })), method(_void(), TlsStatusSchema, {
|
|
24305
|
+
kind: "mutation",
|
|
24306
|
+
auth: "admin"
|
|
24307
|
+
});
|
|
24153
24308
|
var LockControlStatusSchema = object({
|
|
24154
24309
|
/** Lifecycle state of the lock. `jammed` means the motor reported
|
|
24155
24310
|
* failure to reach the target — operator intervention required. */
|
|
@@ -32176,6 +32331,12 @@ Object.freeze({
|
|
|
32176
32331
|
addonId: null,
|
|
32177
32332
|
access: "create"
|
|
32178
32333
|
},
|
|
32334
|
+
"localNetwork.downloadCa": {
|
|
32335
|
+
capName: "local-network",
|
|
32336
|
+
capScope: "system",
|
|
32337
|
+
addonId: null,
|
|
32338
|
+
access: "view"
|
|
32339
|
+
},
|
|
32179
32340
|
"localNetwork.getAllowedAddresses": {
|
|
32180
32341
|
capName: "local-network",
|
|
32181
32342
|
capScope: "system",
|
|
@@ -32200,18 +32361,42 @@ Object.freeze({
|
|
|
32200
32361
|
addonId: null,
|
|
32201
32362
|
access: "view"
|
|
32202
32363
|
},
|
|
32364
|
+
"localNetwork.getTlsStatus": {
|
|
32365
|
+
capName: "local-network",
|
|
32366
|
+
capScope: "system",
|
|
32367
|
+
addonId: null,
|
|
32368
|
+
access: "view"
|
|
32369
|
+
},
|
|
32370
|
+
"localNetwork.getViewerEndpoints": {
|
|
32371
|
+
capName: "local-network",
|
|
32372
|
+
capScope: "system",
|
|
32373
|
+
addonId: null,
|
|
32374
|
+
access: "view"
|
|
32375
|
+
},
|
|
32203
32376
|
"localNetwork.list": {
|
|
32204
32377
|
capName: "local-network",
|
|
32205
32378
|
capScope: "system",
|
|
32206
32379
|
addonId: null,
|
|
32207
32380
|
access: "view"
|
|
32208
32381
|
},
|
|
32382
|
+
"localNetwork.regenerateCertificate": {
|
|
32383
|
+
capName: "local-network",
|
|
32384
|
+
capScope: "system",
|
|
32385
|
+
addonId: null,
|
|
32386
|
+
access: "create"
|
|
32387
|
+
},
|
|
32209
32388
|
"localNetwork.resetAllowlistToBestMatch": {
|
|
32210
32389
|
capName: "local-network",
|
|
32211
32390
|
capScope: "system",
|
|
32212
32391
|
addonId: null,
|
|
32213
32392
|
access: "delete"
|
|
32214
32393
|
},
|
|
32394
|
+
"localNetwork.revertToGeneratedCertificate": {
|
|
32395
|
+
capName: "local-network",
|
|
32396
|
+
capScope: "system",
|
|
32397
|
+
addonId: null,
|
|
32398
|
+
access: "create"
|
|
32399
|
+
},
|
|
32215
32400
|
"localNetwork.setAllowedAddresses": {
|
|
32216
32401
|
capName: "local-network",
|
|
32217
32402
|
capScope: "system",
|
|
@@ -32224,6 +32409,18 @@ Object.freeze({
|
|
|
32224
32409
|
addonId: null,
|
|
32225
32410
|
access: "create"
|
|
32226
32411
|
},
|
|
32412
|
+
"localNetwork.setViewerEndpoints": {
|
|
32413
|
+
capName: "local-network",
|
|
32414
|
+
capScope: "system",
|
|
32415
|
+
addonId: null,
|
|
32416
|
+
access: "create"
|
|
32417
|
+
},
|
|
32418
|
+
"localNetwork.uploadCertificate": {
|
|
32419
|
+
capName: "local-network",
|
|
32420
|
+
capScope: "system",
|
|
32421
|
+
addonId: null,
|
|
32422
|
+
access: "create"
|
|
32423
|
+
},
|
|
32227
32424
|
"lockControl.lock": {
|
|
32228
32425
|
capName: "lock-control",
|
|
32229
32426
|
capScope: "device",
|
|
@@ -35104,6 +35301,12 @@ Object.freeze({
|
|
|
35104
35301
|
addonId: null,
|
|
35105
35302
|
access: "create"
|
|
35106
35303
|
},
|
|
35304
|
+
"terminalSession.updateInstance": {
|
|
35305
|
+
capName: "terminal-session",
|
|
35306
|
+
capScope: "system",
|
|
35307
|
+
addonId: null,
|
|
35308
|
+
access: "create"
|
|
35309
|
+
},
|
|
35107
35310
|
"terminalSession.writeInput": {
|
|
35108
35311
|
capName: "terminal-session",
|
|
35109
35312
|
capScope: "system",
|
|
@@ -37591,6 +37794,35 @@ Object.freeze(Object.fromEntries([{
|
|
|
37591
37794
|
}]
|
|
37592
37795
|
}].map((s) => [s.stepId, s.defaultModelId])));
|
|
37593
37796
|
string().min(1);
|
|
37797
|
+
var CLUSTER_STEP_SETTING_FIELDS = [{
|
|
37798
|
+
stepId: "face-embedding",
|
|
37799
|
+
key: "minLandmarkFaceSize",
|
|
37800
|
+
label: "Min face size for recognition (detection px)",
|
|
37801
|
+
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.",
|
|
37802
|
+
type: "slider",
|
|
37803
|
+
min: 0,
|
|
37804
|
+
max: 64,
|
|
37805
|
+
step: 2,
|
|
37806
|
+
default: 24
|
|
37807
|
+
}];
|
|
37808
|
+
function clusterStepSettingKey(stepId, fieldKey) {
|
|
37809
|
+
return `clusterStepSetting:${stepId}:${fieldKey}`;
|
|
37810
|
+
}
|
|
37811
|
+
var ClusterSettingNumberSchema = number().finite();
|
|
37812
|
+
function readClusterStepSettings(config) {
|
|
37813
|
+
const out = {};
|
|
37814
|
+
for (const field of CLUSTER_STEP_SETTING_FIELDS) {
|
|
37815
|
+
const parsed = ClusterSettingNumberSchema.safeParse(config[clusterStepSettingKey(field.stepId, field.key)]);
|
|
37816
|
+
const value = parsed.success ? parsed.data : field.default;
|
|
37817
|
+
const existing = out[field.stepId] ?? {};
|
|
37818
|
+
out[field.stepId] = {
|
|
37819
|
+
...existing,
|
|
37820
|
+
[field.key]: value
|
|
37821
|
+
};
|
|
37822
|
+
}
|
|
37823
|
+
return out;
|
|
37824
|
+
}
|
|
37825
|
+
readClusterStepSettings({});
|
|
37594
37826
|
object({
|
|
37595
37827
|
/**
|
|
37596
37828
|
* Fraction of the box's own size added on EACH side before cutting.
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@camstack/addon-provider-wyze",
|
|
3
|
-
"version": "0.2.
|
|
3
|
+
"version": "0.2.31",
|
|
4
4
|
"description": "Wyze camera device-provider addon for CamStack — wraps the @apocaliss92/wyze-bridge-js P2P/DTLS client, feeding the stream-broker via the pull-rfc4571 lazy-publish path (a structural twin of addon-provider-reolink)",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"camstack",
|