@camstack/addon-import-alexa 0.2.25 → 0.2.26
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
|
@@ -8178,6 +8178,15 @@ var LabelDefinitionSchema = object({
|
|
|
8178
8178
|
description: string().optional(),
|
|
8179
8179
|
icon: string().optional()
|
|
8180
8180
|
});
|
|
8181
|
+
var ClassMapDefinitionSchema = object({
|
|
8182
|
+
mapping: record(string(), _enum([
|
|
8183
|
+
"person",
|
|
8184
|
+
"vehicle",
|
|
8185
|
+
"animal",
|
|
8186
|
+
"package"
|
|
8187
|
+
])),
|
|
8188
|
+
preserveOriginal: boolean()
|
|
8189
|
+
});
|
|
8181
8190
|
var MODEL_FORMATS = [
|
|
8182
8191
|
"onnx",
|
|
8183
8192
|
"coreml",
|
|
@@ -8356,7 +8365,13 @@ var ModelCatalogEntrySchema = object({
|
|
|
8356
8365
|
* `id` stays the source of truth for resolution/download/persistence; grouping
|
|
8357
8366
|
* is a presentation overlay resolved back to an `id`.
|
|
8358
8367
|
*/
|
|
8359
|
-
group: ModelVariantGroupSchema.optional()
|
|
8368
|
+
group: ModelVariantGroupSchema.optional(),
|
|
8369
|
+
/**
|
|
8370
|
+
* Per-MODEL class map override. Absent ⇒ the step's `StepDefinition.classMap`
|
|
8371
|
+
* applies (Frigate / COCO public catalog). Set on a custom model whose raw
|
|
8372
|
+
* labels already ARE the CamStack macros (Scrypted identity map).
|
|
8373
|
+
*/
|
|
8374
|
+
classMap: ClassMapDefinitionSchema.optional()
|
|
8360
8375
|
});
|
|
8361
8376
|
var ConvertTargetSchema = discriminatedUnion("format", [object({
|
|
8362
8377
|
format: literal("openvino"),
|
|
@@ -8385,7 +8400,8 @@ var ModelConvertMetadataSchema = object({
|
|
|
8385
8400
|
"ocr",
|
|
8386
8401
|
"segmentation"
|
|
8387
8402
|
]),
|
|
8388
|
-
faceAlignment: boolean().optional()
|
|
8403
|
+
faceAlignment: boolean().optional(),
|
|
8404
|
+
classMap: ClassMapDefinitionSchema.optional()
|
|
8389
8405
|
});
|
|
8390
8406
|
var ConvertResultSchema = object({
|
|
8391
8407
|
entry: ModelCatalogEntrySchema,
|
|
@@ -17763,6 +17779,33 @@ var NativeCropRefSchema = object({
|
|
|
17763
17779
|
h: number()
|
|
17764
17780
|
})
|
|
17765
17781
|
});
|
|
17782
|
+
object({
|
|
17783
|
+
crop: object({
|
|
17784
|
+
left: number(),
|
|
17785
|
+
top: number(),
|
|
17786
|
+
width: number().positive(),
|
|
17787
|
+
height: number().positive()
|
|
17788
|
+
}).optional(),
|
|
17789
|
+
content: object({
|
|
17790
|
+
width: number().int().positive(),
|
|
17791
|
+
height: number().int().positive()
|
|
17792
|
+
}),
|
|
17793
|
+
fit: _enum(["stretch", "contain"]),
|
|
17794
|
+
format: _enum([
|
|
17795
|
+
"rgb",
|
|
17796
|
+
"gray",
|
|
17797
|
+
"jpeg"
|
|
17798
|
+
])
|
|
17799
|
+
});
|
|
17800
|
+
var FrameRefSchema = object({
|
|
17801
|
+
registryId: string().min(1),
|
|
17802
|
+
id: string().min(1),
|
|
17803
|
+
width: number().int().positive(),
|
|
17804
|
+
height: number().int().positive(),
|
|
17805
|
+
format: _enum(["rgb", "gray"]),
|
|
17806
|
+
timestamp: number(),
|
|
17807
|
+
capturedAt: number().optional()
|
|
17808
|
+
});
|
|
17766
17809
|
var ModelFormatSchema$1 = _enum([
|
|
17767
17810
|
"onnx",
|
|
17768
17811
|
"coreml",
|
|
@@ -18007,6 +18050,12 @@ method(_void(), array(PipelineEngineChoiceSchema)), method(_void(), PipelineEngi
|
|
|
18007
18050
|
steps: array(PipelineStepInputSchema).min(1),
|
|
18008
18051
|
frame: FrameInputSchema.optional(),
|
|
18009
18052
|
/**
|
|
18053
|
+
* Process-local lazy frame. Valid only when caller and provider resolve
|
|
18054
|
+
* in the same execution-group process; split/cross-node callers use
|
|
18055
|
+
* `frame`/`image` inline compatibility instead.
|
|
18056
|
+
*/
|
|
18057
|
+
frameRef: FrameRefSchema.optional(),
|
|
18058
|
+
/**
|
|
18010
18059
|
* CB5 shm passthrough — a `FrameHandle` naming the same ring slot
|
|
18011
18060
|
* the decoded pixels live in. One more member of the one-of
|
|
18012
18061
|
* frame/frameHandle/image/imageBase64/referenceImage group.
|
|
@@ -18302,7 +18351,10 @@ var NativeCropResultSchema = object({
|
|
|
18302
18351
|
* Which source served this crop, so a quality-sensitive consumer (the native
|
|
18303
18352
|
* `keyFrame`) can reject a degraded fallback:
|
|
18304
18353
|
* - `native` — cut from the decode worker's retained NATIVE surface (the
|
|
18305
|
-
* quality path).
|
|
18354
|
+
* quality path). A subject-tile serve is also native-resolution and stays
|
|
18355
|
+
* `native` here: the public enum cannot name `tile` without a breaking cap
|
|
18356
|
+
* change. Runner telemetry distinguishes lease vs tile via `source` on the
|
|
18357
|
+
* internal crop result (`nativeHits` vs `tileHits`).
|
|
18306
18358
|
* - `ram-fullframe` — the native surface MISSED but the request was full-frame,
|
|
18307
18359
|
* so the ≤640 RAM `RetainedFrameStore` served it (honest lower-res; legit for
|
|
18308
18360
|
* the blank-frame guard / 640-snapshot resolve, NOT for the clean keyFrame).
|
|
@@ -18793,12 +18845,41 @@ var RunnerLocalLoadSchema = object({
|
|
|
18793
18845
|
* legacy `OrchestratorMetricsSchema` shape so existing dashboards keep
|
|
18794
18846
|
* working unchanged when they switch to reading from the runner cap.
|
|
18795
18847
|
*/
|
|
18848
|
+
var FrameLazyCountersSchema = object({
|
|
18849
|
+
framesDecoded: number(),
|
|
18850
|
+
framesAdmitted: number(),
|
|
18851
|
+
framesDroppedPixelFree: number(),
|
|
18852
|
+
viewsMaterialized: number(),
|
|
18853
|
+
viewsSkipped: number(),
|
|
18854
|
+
workerToRunnerBytes: number(),
|
|
18855
|
+
runnerToPoolRawBytes: number(),
|
|
18856
|
+
runnerToPoolJpegBytes: number(),
|
|
18857
|
+
onDemandFullFrameRequests: number(),
|
|
18858
|
+
onDemandCropRequests: number(),
|
|
18859
|
+
nativeHits: number(),
|
|
18860
|
+
nativeMisses: number(),
|
|
18861
|
+
tileHits: number(),
|
|
18862
|
+
tileMisses: number(),
|
|
18863
|
+
fallbackHits: number(),
|
|
18864
|
+
fallbackMisses: number(),
|
|
18865
|
+
retainedWritesAvoided: number(),
|
|
18866
|
+
residentRefs: number(),
|
|
18867
|
+
residentBytes: number(),
|
|
18868
|
+
releases: number(),
|
|
18869
|
+
evictions: number(),
|
|
18870
|
+
staleMisses: number()
|
|
18871
|
+
});
|
|
18872
|
+
var FrameLazyMetricsSchema = object({
|
|
18873
|
+
node: FrameLazyCountersSchema,
|
|
18874
|
+
cameras: array(FrameLazyCountersSchema.extend({ deviceId: number() }))
|
|
18875
|
+
});
|
|
18796
18876
|
var RunnerLocalMetricsSchema = object({
|
|
18797
18877
|
nodeId: string(),
|
|
18798
18878
|
activeCameras: number(),
|
|
18799
18879
|
throttledCameras: number(),
|
|
18800
18880
|
avgInferenceTimeMs: number(),
|
|
18801
|
-
queueDepth: number()
|
|
18881
|
+
queueDepth: number(),
|
|
18882
|
+
frameLazy: FrameLazyMetricsSchema.optional()
|
|
18802
18883
|
});
|
|
18803
18884
|
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({
|
|
18804
18885
|
handle: FrameHandleSchema,
|
|
@@ -20098,6 +20179,9 @@ method(_void(), ProviderInfoSchema), method(object({ config: record(string(), un
|
|
|
20098
20179
|
location: StorageLocationSchema,
|
|
20099
20180
|
relativePath: string()
|
|
20100
20181
|
}), _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" });
|
|
20182
|
+
/** Profile-exported FormBuilder schema. Shape is ConfigUISchema at the UI. */
|
|
20183
|
+
var ProfileSettingsSchemaBridge = unknown().nullable();
|
|
20184
|
+
var ProfileSettingsBagSchema = record(string(), unknown());
|
|
20101
20185
|
/**
|
|
20102
20186
|
* A live terminal session hosted by the provider addon. Output and input do
|
|
20103
20187
|
* NOT flow through the capability — they use the addon data plane
|
|
@@ -20127,7 +20211,14 @@ var TerminalSessionInfoSchema = object({
|
|
|
20127
20211
|
var TerminalProfileInfoSchema = object({
|
|
20128
20212
|
profileId: string(),
|
|
20129
20213
|
label: string(),
|
|
20130
|
-
description: string().optional()
|
|
20214
|
+
description: string().optional(),
|
|
20215
|
+
/** Spawn defaults the instance form copies on create. */
|
|
20216
|
+
executable: string().optional(),
|
|
20217
|
+
args: array(string()).readonly().optional(),
|
|
20218
|
+
cwd: string().optional(),
|
|
20219
|
+
environment: array(string()).readonly().optional(),
|
|
20220
|
+
/** ConfigUISchema for instance knobs, or null when the profile has none. */
|
|
20221
|
+
settingsSchema: ProfileSettingsSchemaBridge.optional()
|
|
20131
20222
|
});
|
|
20132
20223
|
/**
|
|
20133
20224
|
* A durable operator-created Terminal instance. Profiles are templates; only
|
|
@@ -20140,7 +20231,12 @@ var TerminalInstanceInfoSchema = object({
|
|
|
20140
20231
|
profileId: string(),
|
|
20141
20232
|
profileLabel: string(),
|
|
20142
20233
|
name: string(),
|
|
20143
|
-
enabled: boolean()
|
|
20234
|
+
enabled: boolean(),
|
|
20235
|
+
executable: string(),
|
|
20236
|
+
args: array(string()).readonly(),
|
|
20237
|
+
cwd: string(),
|
|
20238
|
+
environment: array(string()).readonly(),
|
|
20239
|
+
profileSettings: ProfileSettingsBagSchema
|
|
20144
20240
|
});
|
|
20145
20241
|
var TerminalLegacyCameraSchema = object({
|
|
20146
20242
|
stableId: string(),
|
|
@@ -20170,7 +20266,23 @@ var TerminalOutputBatchSchema = object({
|
|
|
20170
20266
|
method(_void(), array(TerminalProfileInfoSchema).readonly(), { auth: "admin" }), method(_void(), array(TerminalInstanceInfoSchema).readonly(), { auth: "admin" }), method(object({
|
|
20171
20267
|
targetNodeId: string().min(1),
|
|
20172
20268
|
profileId: string().min(1),
|
|
20173
|
-
name: string().trim().min(1).max(160).optional()
|
|
20269
|
+
name: string().trim().min(1).max(160).optional(),
|
|
20270
|
+
executable: string().max(1024).optional(),
|
|
20271
|
+
args: array(string().max(2048)).max(64).optional(),
|
|
20272
|
+
cwd: string().max(1024).optional(),
|
|
20273
|
+
environment: array(string().max(4096)).max(64).optional(),
|
|
20274
|
+
profileSettings: ProfileSettingsBagSchema.optional()
|
|
20275
|
+
}), TerminalInstanceInfoSchema, {
|
|
20276
|
+
kind: "mutation",
|
|
20277
|
+
auth: "admin"
|
|
20278
|
+
}), method(object({
|
|
20279
|
+
instanceId: string().min(1),
|
|
20280
|
+
name: string().trim().min(1).max(160).optional(),
|
|
20281
|
+
executable: string().max(1024).optional(),
|
|
20282
|
+
args: array(string().max(2048)).max(64).optional(),
|
|
20283
|
+
cwd: string().max(1024).optional(),
|
|
20284
|
+
environment: array(string().max(4096)).max(64).optional(),
|
|
20285
|
+
profileSettings: ProfileSettingsBagSchema.optional()
|
|
20174
20286
|
}), TerminalInstanceInfoSchema, {
|
|
20175
20287
|
kind: "mutation",
|
|
20176
20288
|
auth: "admin"
|
|
@@ -20192,7 +20304,11 @@ method(_void(), array(TerminalProfileInfoSchema).readonly(), { auth: "admin" }),
|
|
|
20192
20304
|
}), method(_void(), array(TerminalSessionInfoSchema).readonly(), { auth: "admin" }), method(object({
|
|
20193
20305
|
profileId: string(),
|
|
20194
20306
|
cols: number().int().positive(),
|
|
20195
|
-
rows: number().int().positive()
|
|
20307
|
+
rows: number().int().positive(),
|
|
20308
|
+
executable: string().max(1024).optional(),
|
|
20309
|
+
args: array(string().max(2048)).max(64).optional(),
|
|
20310
|
+
cwd: string().max(1024).optional(),
|
|
20311
|
+
environment: array(string().max(4096)).max(64).optional()
|
|
20196
20312
|
}), TerminalSessionInfoSchema, {
|
|
20197
20313
|
kind: "mutation",
|
|
20198
20314
|
auth: "admin"
|
|
@@ -24084,10 +24200,10 @@ var lawnMowerControlCapability = {
|
|
|
24084
24200
|
*
|
|
24085
24201
|
* • The SDK (mobile / web client) consumes `getConnectionEndpoints()`
|
|
24086
24202
|
* to receive an ordered list of candidate base URLs it should race
|
|
24087
|
-
* on connect — LAN IPv4 first (lowest latency
|
|
24088
|
-
* then public hostname (if a tunnel is
|
|
24089
|
-
* race them with short timeouts and stick with the
|
|
24090
|
-
* session.
|
|
24203
|
+
* on connect — LAN IPv4 and stable LAN IPv6 first (lowest latency
|
|
24204
|
+
* when on the same network), then public hostname (if a tunnel is
|
|
24205
|
+
* up). The SDK can race them with short timeouts and stick with the
|
|
24206
|
+
* winner for the session.
|
|
24091
24207
|
*
|
|
24092
24208
|
* Why hub-only: agents are not directly addressable by the operator's
|
|
24093
24209
|
* clients — they reverse-connect to the hub. Exposing their interfaces
|
|
@@ -24242,6 +24358,17 @@ var NotificationEndpointSchema = object({
|
|
|
24242
24358
|
/** What the ranking currently resolves to (null when nothing is reachable). */
|
|
24243
24359
|
resolved: string().nullable()
|
|
24244
24360
|
});
|
|
24361
|
+
/**
|
|
24362
|
+
* The URLs the SDK / viewer should race for API access. `baseUrls` empty =
|
|
24363
|
+
* AUTO (every LAN IPv4 + the public tunnel). `resolved` is what that choice
|
|
24364
|
+
* currently expands to, so the UI can show the effective set either way.
|
|
24365
|
+
*/
|
|
24366
|
+
var ViewerEndpointsSchema = object({
|
|
24367
|
+
/** The operator's explicit race set, or empty for AUTO. */
|
|
24368
|
+
baseUrls: array(string()).readonly(),
|
|
24369
|
+
/** What the ranking currently resolves to (may be empty if nothing is up). */
|
|
24370
|
+
resolved: array(string()).readonly()
|
|
24371
|
+
});
|
|
24245
24372
|
var AllowedAddressesSchema = object({
|
|
24246
24373
|
/**
|
|
24247
24374
|
* Allowlist of interface addresses operators have explicitly opted
|
|
@@ -24250,6 +24377,20 @@ var AllowedAddressesSchema = object({
|
|
|
24250
24377
|
* Network Addresses admin page and persisted by the addon.
|
|
24251
24378
|
*/
|
|
24252
24379
|
addresses: array(string()).readonly() });
|
|
24380
|
+
var TlsStatusSchema = object({
|
|
24381
|
+
mode: _enum([
|
|
24382
|
+
"generated",
|
|
24383
|
+
"uploaded",
|
|
24384
|
+
"disabled"
|
|
24385
|
+
]),
|
|
24386
|
+
leafFingerprintSha256: string().nullable(),
|
|
24387
|
+
caFingerprintSha256: string().nullable(),
|
|
24388
|
+
validTo: string().nullable(),
|
|
24389
|
+
sans: array(string()),
|
|
24390
|
+
caCertPem: string().nullable(),
|
|
24391
|
+
reissueError: string().nullable(),
|
|
24392
|
+
restartRequired: boolean()
|
|
24393
|
+
});
|
|
24253
24394
|
method(_void(), ListResultSchema), method(_void(), PreferredSchema), method(object({
|
|
24254
24395
|
/**
|
|
24255
24396
|
* LEGACY HINT — do not send from new code. Kept optional so clients
|
|
@@ -24259,17 +24400,31 @@ method(_void(), ListResultSchema), method(_void(), PreferredSchema), method(obje
|
|
|
24259
24400
|
*/
|
|
24260
24401
|
port: number().int().min(1).max(65535).optional(),
|
|
24261
24402
|
/** Include `http(s)://127.0.0.1:<port>` as the lowest-priority
|
|
24262
|
-
* candidate. Default `
|
|
24403
|
+
* candidate. Default `false` — loopback is not a client route. */
|
|
24263
24404
|
includeLoopback: boolean().optional(),
|
|
24264
|
-
/** Skip IPv6 entries.
|
|
24265
|
-
*
|
|
24405
|
+
/** Skip IPv6 entries. Default `false` — the palette includes stable
|
|
24406
|
+
* LAN IPv6 (ICE/WebRTC uses dual-stack regardless). Pass `true` to
|
|
24407
|
+
* hide them. The viewer HTTP/WS race is `getViewerEndpoints`. */
|
|
24266
24408
|
ipv4Only: boolean().optional(),
|
|
24267
24409
|
/** Scheme to emit for LAN/loopback URLs. Default `'http'`.
|
|
24268
24410
|
* Pass `'https'` when the caller is itself loaded over HTTPS
|
|
24269
24411
|
* to avoid mixed-content blocks in the browser. The public
|
|
24270
24412
|
* tunnel always emits `https://` regardless. */
|
|
24271
24413
|
scheme: _enum(["http", "https"]).optional()
|
|
24272
|
-
}), 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" })
|
|
24414
|
+
}), 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, {
|
|
24415
|
+
kind: "mutation",
|
|
24416
|
+
auth: "admin"
|
|
24417
|
+
}), method(object({
|
|
24418
|
+
certPem: string().min(1),
|
|
24419
|
+
keyPem: string().min(1),
|
|
24420
|
+
caPem: string().optional()
|
|
24421
|
+
}), TlsStatusSchema, {
|
|
24422
|
+
kind: "mutation",
|
|
24423
|
+
auth: "admin"
|
|
24424
|
+
}), method(_void(), object({ pem: string() })), method(_void(), TlsStatusSchema, {
|
|
24425
|
+
kind: "mutation",
|
|
24426
|
+
auth: "admin"
|
|
24427
|
+
});
|
|
24273
24428
|
var LockControlStatusSchema = object({
|
|
24274
24429
|
/** Lifecycle state of the lock. `jammed` means the motor reported
|
|
24275
24430
|
* failure to reach the target — operator intervention required. */
|
|
@@ -32296,6 +32451,12 @@ Object.freeze({
|
|
|
32296
32451
|
addonId: null,
|
|
32297
32452
|
access: "create"
|
|
32298
32453
|
},
|
|
32454
|
+
"localNetwork.downloadCa": {
|
|
32455
|
+
capName: "local-network",
|
|
32456
|
+
capScope: "system",
|
|
32457
|
+
addonId: null,
|
|
32458
|
+
access: "view"
|
|
32459
|
+
},
|
|
32299
32460
|
"localNetwork.getAllowedAddresses": {
|
|
32300
32461
|
capName: "local-network",
|
|
32301
32462
|
capScope: "system",
|
|
@@ -32320,18 +32481,42 @@ Object.freeze({
|
|
|
32320
32481
|
addonId: null,
|
|
32321
32482
|
access: "view"
|
|
32322
32483
|
},
|
|
32484
|
+
"localNetwork.getTlsStatus": {
|
|
32485
|
+
capName: "local-network",
|
|
32486
|
+
capScope: "system",
|
|
32487
|
+
addonId: null,
|
|
32488
|
+
access: "view"
|
|
32489
|
+
},
|
|
32490
|
+
"localNetwork.getViewerEndpoints": {
|
|
32491
|
+
capName: "local-network",
|
|
32492
|
+
capScope: "system",
|
|
32493
|
+
addonId: null,
|
|
32494
|
+
access: "view"
|
|
32495
|
+
},
|
|
32323
32496
|
"localNetwork.list": {
|
|
32324
32497
|
capName: "local-network",
|
|
32325
32498
|
capScope: "system",
|
|
32326
32499
|
addonId: null,
|
|
32327
32500
|
access: "view"
|
|
32328
32501
|
},
|
|
32502
|
+
"localNetwork.regenerateCertificate": {
|
|
32503
|
+
capName: "local-network",
|
|
32504
|
+
capScope: "system",
|
|
32505
|
+
addonId: null,
|
|
32506
|
+
access: "create"
|
|
32507
|
+
},
|
|
32329
32508
|
"localNetwork.resetAllowlistToBestMatch": {
|
|
32330
32509
|
capName: "local-network",
|
|
32331
32510
|
capScope: "system",
|
|
32332
32511
|
addonId: null,
|
|
32333
32512
|
access: "delete"
|
|
32334
32513
|
},
|
|
32514
|
+
"localNetwork.revertToGeneratedCertificate": {
|
|
32515
|
+
capName: "local-network",
|
|
32516
|
+
capScope: "system",
|
|
32517
|
+
addonId: null,
|
|
32518
|
+
access: "create"
|
|
32519
|
+
},
|
|
32335
32520
|
"localNetwork.setAllowedAddresses": {
|
|
32336
32521
|
capName: "local-network",
|
|
32337
32522
|
capScope: "system",
|
|
@@ -32344,6 +32529,18 @@ Object.freeze({
|
|
|
32344
32529
|
addonId: null,
|
|
32345
32530
|
access: "create"
|
|
32346
32531
|
},
|
|
32532
|
+
"localNetwork.setViewerEndpoints": {
|
|
32533
|
+
capName: "local-network",
|
|
32534
|
+
capScope: "system",
|
|
32535
|
+
addonId: null,
|
|
32536
|
+
access: "create"
|
|
32537
|
+
},
|
|
32538
|
+
"localNetwork.uploadCertificate": {
|
|
32539
|
+
capName: "local-network",
|
|
32540
|
+
capScope: "system",
|
|
32541
|
+
addonId: null,
|
|
32542
|
+
access: "create"
|
|
32543
|
+
},
|
|
32347
32544
|
"lockControl.lock": {
|
|
32348
32545
|
capName: "lock-control",
|
|
32349
32546
|
capScope: "device",
|
|
@@ -35224,6 +35421,12 @@ Object.freeze({
|
|
|
35224
35421
|
addonId: null,
|
|
35225
35422
|
access: "create"
|
|
35226
35423
|
},
|
|
35424
|
+
"terminalSession.updateInstance": {
|
|
35425
|
+
capName: "terminal-session",
|
|
35426
|
+
capScope: "system",
|
|
35427
|
+
addonId: null,
|
|
35428
|
+
access: "create"
|
|
35429
|
+
},
|
|
35227
35430
|
"terminalSession.writeInput": {
|
|
35228
35431
|
capName: "terminal-session",
|
|
35229
35432
|
capScope: "system",
|
|
@@ -37711,6 +37914,35 @@ Object.freeze(Object.fromEntries([{
|
|
|
37711
37914
|
}]
|
|
37712
37915
|
}].map((s) => [s.stepId, s.defaultModelId])));
|
|
37713
37916
|
string().min(1);
|
|
37917
|
+
var CLUSTER_STEP_SETTING_FIELDS = [{
|
|
37918
|
+
stepId: "face-embedding",
|
|
37919
|
+
key: "minLandmarkFaceSize",
|
|
37920
|
+
label: "Min face size for recognition (detection px)",
|
|
37921
|
+
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.",
|
|
37922
|
+
type: "slider",
|
|
37923
|
+
min: 0,
|
|
37924
|
+
max: 64,
|
|
37925
|
+
step: 2,
|
|
37926
|
+
default: 24
|
|
37927
|
+
}];
|
|
37928
|
+
function clusterStepSettingKey(stepId, fieldKey) {
|
|
37929
|
+
return `clusterStepSetting:${stepId}:${fieldKey}`;
|
|
37930
|
+
}
|
|
37931
|
+
var ClusterSettingNumberSchema = number().finite();
|
|
37932
|
+
function readClusterStepSettings(config) {
|
|
37933
|
+
const out = {};
|
|
37934
|
+
for (const field of CLUSTER_STEP_SETTING_FIELDS) {
|
|
37935
|
+
const parsed = ClusterSettingNumberSchema.safeParse(config[clusterStepSettingKey(field.stepId, field.key)]);
|
|
37936
|
+
const value = parsed.success ? parsed.data : field.default;
|
|
37937
|
+
const existing = out[field.stepId] ?? {};
|
|
37938
|
+
out[field.stepId] = {
|
|
37939
|
+
...existing,
|
|
37940
|
+
[field.key]: value
|
|
37941
|
+
};
|
|
37942
|
+
}
|
|
37943
|
+
return out;
|
|
37944
|
+
}
|
|
37945
|
+
readClusterStepSettings({});
|
|
37714
37946
|
object({
|
|
37715
37947
|
/**
|
|
37716
37948
|
* Fraction of the box's own size added on EACH side before cutting.
|
package/dist/addon.mjs
CHANGED
|
@@ -8178,6 +8178,15 @@ var LabelDefinitionSchema = object({
|
|
|
8178
8178
|
description: string().optional(),
|
|
8179
8179
|
icon: string().optional()
|
|
8180
8180
|
});
|
|
8181
|
+
var ClassMapDefinitionSchema = object({
|
|
8182
|
+
mapping: record(string(), _enum([
|
|
8183
|
+
"person",
|
|
8184
|
+
"vehicle",
|
|
8185
|
+
"animal",
|
|
8186
|
+
"package"
|
|
8187
|
+
])),
|
|
8188
|
+
preserveOriginal: boolean()
|
|
8189
|
+
});
|
|
8181
8190
|
var MODEL_FORMATS = [
|
|
8182
8191
|
"onnx",
|
|
8183
8192
|
"coreml",
|
|
@@ -8356,7 +8365,13 @@ var ModelCatalogEntrySchema = object({
|
|
|
8356
8365
|
* `id` stays the source of truth for resolution/download/persistence; grouping
|
|
8357
8366
|
* is a presentation overlay resolved back to an `id`.
|
|
8358
8367
|
*/
|
|
8359
|
-
group: ModelVariantGroupSchema.optional()
|
|
8368
|
+
group: ModelVariantGroupSchema.optional(),
|
|
8369
|
+
/**
|
|
8370
|
+
* Per-MODEL class map override. Absent ⇒ the step's `StepDefinition.classMap`
|
|
8371
|
+
* applies (Frigate / COCO public catalog). Set on a custom model whose raw
|
|
8372
|
+
* labels already ARE the CamStack macros (Scrypted identity map).
|
|
8373
|
+
*/
|
|
8374
|
+
classMap: ClassMapDefinitionSchema.optional()
|
|
8360
8375
|
});
|
|
8361
8376
|
var ConvertTargetSchema = discriminatedUnion("format", [object({
|
|
8362
8377
|
format: literal("openvino"),
|
|
@@ -8385,7 +8400,8 @@ var ModelConvertMetadataSchema = object({
|
|
|
8385
8400
|
"ocr",
|
|
8386
8401
|
"segmentation"
|
|
8387
8402
|
]),
|
|
8388
|
-
faceAlignment: boolean().optional()
|
|
8403
|
+
faceAlignment: boolean().optional(),
|
|
8404
|
+
classMap: ClassMapDefinitionSchema.optional()
|
|
8389
8405
|
});
|
|
8390
8406
|
var ConvertResultSchema = object({
|
|
8391
8407
|
entry: ModelCatalogEntrySchema,
|
|
@@ -17763,6 +17779,33 @@ var NativeCropRefSchema = object({
|
|
|
17763
17779
|
h: number()
|
|
17764
17780
|
})
|
|
17765
17781
|
});
|
|
17782
|
+
object({
|
|
17783
|
+
crop: object({
|
|
17784
|
+
left: number(),
|
|
17785
|
+
top: number(),
|
|
17786
|
+
width: number().positive(),
|
|
17787
|
+
height: number().positive()
|
|
17788
|
+
}).optional(),
|
|
17789
|
+
content: object({
|
|
17790
|
+
width: number().int().positive(),
|
|
17791
|
+
height: number().int().positive()
|
|
17792
|
+
}),
|
|
17793
|
+
fit: _enum(["stretch", "contain"]),
|
|
17794
|
+
format: _enum([
|
|
17795
|
+
"rgb",
|
|
17796
|
+
"gray",
|
|
17797
|
+
"jpeg"
|
|
17798
|
+
])
|
|
17799
|
+
});
|
|
17800
|
+
var FrameRefSchema = object({
|
|
17801
|
+
registryId: string().min(1),
|
|
17802
|
+
id: string().min(1),
|
|
17803
|
+
width: number().int().positive(),
|
|
17804
|
+
height: number().int().positive(),
|
|
17805
|
+
format: _enum(["rgb", "gray"]),
|
|
17806
|
+
timestamp: number(),
|
|
17807
|
+
capturedAt: number().optional()
|
|
17808
|
+
});
|
|
17766
17809
|
var ModelFormatSchema$1 = _enum([
|
|
17767
17810
|
"onnx",
|
|
17768
17811
|
"coreml",
|
|
@@ -18007,6 +18050,12 @@ method(_void(), array(PipelineEngineChoiceSchema)), method(_void(), PipelineEngi
|
|
|
18007
18050
|
steps: array(PipelineStepInputSchema).min(1),
|
|
18008
18051
|
frame: FrameInputSchema.optional(),
|
|
18009
18052
|
/**
|
|
18053
|
+
* Process-local lazy frame. Valid only when caller and provider resolve
|
|
18054
|
+
* in the same execution-group process; split/cross-node callers use
|
|
18055
|
+
* `frame`/`image` inline compatibility instead.
|
|
18056
|
+
*/
|
|
18057
|
+
frameRef: FrameRefSchema.optional(),
|
|
18058
|
+
/**
|
|
18010
18059
|
* CB5 shm passthrough — a `FrameHandle` naming the same ring slot
|
|
18011
18060
|
* the decoded pixels live in. One more member of the one-of
|
|
18012
18061
|
* frame/frameHandle/image/imageBase64/referenceImage group.
|
|
@@ -18302,7 +18351,10 @@ var NativeCropResultSchema = object({
|
|
|
18302
18351
|
* Which source served this crop, so a quality-sensitive consumer (the native
|
|
18303
18352
|
* `keyFrame`) can reject a degraded fallback:
|
|
18304
18353
|
* - `native` — cut from the decode worker's retained NATIVE surface (the
|
|
18305
|
-
* quality path).
|
|
18354
|
+
* quality path). A subject-tile serve is also native-resolution and stays
|
|
18355
|
+
* `native` here: the public enum cannot name `tile` without a breaking cap
|
|
18356
|
+
* change. Runner telemetry distinguishes lease vs tile via `source` on the
|
|
18357
|
+
* internal crop result (`nativeHits` vs `tileHits`).
|
|
18306
18358
|
* - `ram-fullframe` — the native surface MISSED but the request was full-frame,
|
|
18307
18359
|
* so the ≤640 RAM `RetainedFrameStore` served it (honest lower-res; legit for
|
|
18308
18360
|
* the blank-frame guard / 640-snapshot resolve, NOT for the clean keyFrame).
|
|
@@ -18793,12 +18845,41 @@ var RunnerLocalLoadSchema = object({
|
|
|
18793
18845
|
* legacy `OrchestratorMetricsSchema` shape so existing dashboards keep
|
|
18794
18846
|
* working unchanged when they switch to reading from the runner cap.
|
|
18795
18847
|
*/
|
|
18848
|
+
var FrameLazyCountersSchema = object({
|
|
18849
|
+
framesDecoded: number(),
|
|
18850
|
+
framesAdmitted: number(),
|
|
18851
|
+
framesDroppedPixelFree: number(),
|
|
18852
|
+
viewsMaterialized: number(),
|
|
18853
|
+
viewsSkipped: number(),
|
|
18854
|
+
workerToRunnerBytes: number(),
|
|
18855
|
+
runnerToPoolRawBytes: number(),
|
|
18856
|
+
runnerToPoolJpegBytes: number(),
|
|
18857
|
+
onDemandFullFrameRequests: number(),
|
|
18858
|
+
onDemandCropRequests: number(),
|
|
18859
|
+
nativeHits: number(),
|
|
18860
|
+
nativeMisses: number(),
|
|
18861
|
+
tileHits: number(),
|
|
18862
|
+
tileMisses: number(),
|
|
18863
|
+
fallbackHits: number(),
|
|
18864
|
+
fallbackMisses: number(),
|
|
18865
|
+
retainedWritesAvoided: number(),
|
|
18866
|
+
residentRefs: number(),
|
|
18867
|
+
residentBytes: number(),
|
|
18868
|
+
releases: number(),
|
|
18869
|
+
evictions: number(),
|
|
18870
|
+
staleMisses: number()
|
|
18871
|
+
});
|
|
18872
|
+
var FrameLazyMetricsSchema = object({
|
|
18873
|
+
node: FrameLazyCountersSchema,
|
|
18874
|
+
cameras: array(FrameLazyCountersSchema.extend({ deviceId: number() }))
|
|
18875
|
+
});
|
|
18796
18876
|
var RunnerLocalMetricsSchema = object({
|
|
18797
18877
|
nodeId: string(),
|
|
18798
18878
|
activeCameras: number(),
|
|
18799
18879
|
throttledCameras: number(),
|
|
18800
18880
|
avgInferenceTimeMs: number(),
|
|
18801
|
-
queueDepth: number()
|
|
18881
|
+
queueDepth: number(),
|
|
18882
|
+
frameLazy: FrameLazyMetricsSchema.optional()
|
|
18802
18883
|
});
|
|
18803
18884
|
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({
|
|
18804
18885
|
handle: FrameHandleSchema,
|
|
@@ -20098,6 +20179,9 @@ method(_void(), ProviderInfoSchema), method(object({ config: record(string(), un
|
|
|
20098
20179
|
location: StorageLocationSchema,
|
|
20099
20180
|
relativePath: string()
|
|
20100
20181
|
}), _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" });
|
|
20182
|
+
/** Profile-exported FormBuilder schema. Shape is ConfigUISchema at the UI. */
|
|
20183
|
+
var ProfileSettingsSchemaBridge = unknown().nullable();
|
|
20184
|
+
var ProfileSettingsBagSchema = record(string(), unknown());
|
|
20101
20185
|
/**
|
|
20102
20186
|
* A live terminal session hosted by the provider addon. Output and input do
|
|
20103
20187
|
* NOT flow through the capability — they use the addon data plane
|
|
@@ -20127,7 +20211,14 @@ var TerminalSessionInfoSchema = object({
|
|
|
20127
20211
|
var TerminalProfileInfoSchema = object({
|
|
20128
20212
|
profileId: string(),
|
|
20129
20213
|
label: string(),
|
|
20130
|
-
description: string().optional()
|
|
20214
|
+
description: string().optional(),
|
|
20215
|
+
/** Spawn defaults the instance form copies on create. */
|
|
20216
|
+
executable: string().optional(),
|
|
20217
|
+
args: array(string()).readonly().optional(),
|
|
20218
|
+
cwd: string().optional(),
|
|
20219
|
+
environment: array(string()).readonly().optional(),
|
|
20220
|
+
/** ConfigUISchema for instance knobs, or null when the profile has none. */
|
|
20221
|
+
settingsSchema: ProfileSettingsSchemaBridge.optional()
|
|
20131
20222
|
});
|
|
20132
20223
|
/**
|
|
20133
20224
|
* A durable operator-created Terminal instance. Profiles are templates; only
|
|
@@ -20140,7 +20231,12 @@ var TerminalInstanceInfoSchema = object({
|
|
|
20140
20231
|
profileId: string(),
|
|
20141
20232
|
profileLabel: string(),
|
|
20142
20233
|
name: string(),
|
|
20143
|
-
enabled: boolean()
|
|
20234
|
+
enabled: boolean(),
|
|
20235
|
+
executable: string(),
|
|
20236
|
+
args: array(string()).readonly(),
|
|
20237
|
+
cwd: string(),
|
|
20238
|
+
environment: array(string()).readonly(),
|
|
20239
|
+
profileSettings: ProfileSettingsBagSchema
|
|
20144
20240
|
});
|
|
20145
20241
|
var TerminalLegacyCameraSchema = object({
|
|
20146
20242
|
stableId: string(),
|
|
@@ -20170,7 +20266,23 @@ var TerminalOutputBatchSchema = object({
|
|
|
20170
20266
|
method(_void(), array(TerminalProfileInfoSchema).readonly(), { auth: "admin" }), method(_void(), array(TerminalInstanceInfoSchema).readonly(), { auth: "admin" }), method(object({
|
|
20171
20267
|
targetNodeId: string().min(1),
|
|
20172
20268
|
profileId: string().min(1),
|
|
20173
|
-
name: string().trim().min(1).max(160).optional()
|
|
20269
|
+
name: string().trim().min(1).max(160).optional(),
|
|
20270
|
+
executable: string().max(1024).optional(),
|
|
20271
|
+
args: array(string().max(2048)).max(64).optional(),
|
|
20272
|
+
cwd: string().max(1024).optional(),
|
|
20273
|
+
environment: array(string().max(4096)).max(64).optional(),
|
|
20274
|
+
profileSettings: ProfileSettingsBagSchema.optional()
|
|
20275
|
+
}), TerminalInstanceInfoSchema, {
|
|
20276
|
+
kind: "mutation",
|
|
20277
|
+
auth: "admin"
|
|
20278
|
+
}), method(object({
|
|
20279
|
+
instanceId: string().min(1),
|
|
20280
|
+
name: string().trim().min(1).max(160).optional(),
|
|
20281
|
+
executable: string().max(1024).optional(),
|
|
20282
|
+
args: array(string().max(2048)).max(64).optional(),
|
|
20283
|
+
cwd: string().max(1024).optional(),
|
|
20284
|
+
environment: array(string().max(4096)).max(64).optional(),
|
|
20285
|
+
profileSettings: ProfileSettingsBagSchema.optional()
|
|
20174
20286
|
}), TerminalInstanceInfoSchema, {
|
|
20175
20287
|
kind: "mutation",
|
|
20176
20288
|
auth: "admin"
|
|
@@ -20192,7 +20304,11 @@ method(_void(), array(TerminalProfileInfoSchema).readonly(), { auth: "admin" }),
|
|
|
20192
20304
|
}), method(_void(), array(TerminalSessionInfoSchema).readonly(), { auth: "admin" }), method(object({
|
|
20193
20305
|
profileId: string(),
|
|
20194
20306
|
cols: number().int().positive(),
|
|
20195
|
-
rows: number().int().positive()
|
|
20307
|
+
rows: number().int().positive(),
|
|
20308
|
+
executable: string().max(1024).optional(),
|
|
20309
|
+
args: array(string().max(2048)).max(64).optional(),
|
|
20310
|
+
cwd: string().max(1024).optional(),
|
|
20311
|
+
environment: array(string().max(4096)).max(64).optional()
|
|
20196
20312
|
}), TerminalSessionInfoSchema, {
|
|
20197
20313
|
kind: "mutation",
|
|
20198
20314
|
auth: "admin"
|
|
@@ -24084,10 +24200,10 @@ var lawnMowerControlCapability = {
|
|
|
24084
24200
|
*
|
|
24085
24201
|
* • The SDK (mobile / web client) consumes `getConnectionEndpoints()`
|
|
24086
24202
|
* to receive an ordered list of candidate base URLs it should race
|
|
24087
|
-
* on connect — LAN IPv4 first (lowest latency
|
|
24088
|
-
* then public hostname (if a tunnel is
|
|
24089
|
-
* race them with short timeouts and stick with the
|
|
24090
|
-
* session.
|
|
24203
|
+
* on connect — LAN IPv4 and stable LAN IPv6 first (lowest latency
|
|
24204
|
+
* when on the same network), then public hostname (if a tunnel is
|
|
24205
|
+
* up). The SDK can race them with short timeouts and stick with the
|
|
24206
|
+
* winner for the session.
|
|
24091
24207
|
*
|
|
24092
24208
|
* Why hub-only: agents are not directly addressable by the operator's
|
|
24093
24209
|
* clients — they reverse-connect to the hub. Exposing their interfaces
|
|
@@ -24242,6 +24358,17 @@ var NotificationEndpointSchema = object({
|
|
|
24242
24358
|
/** What the ranking currently resolves to (null when nothing is reachable). */
|
|
24243
24359
|
resolved: string().nullable()
|
|
24244
24360
|
});
|
|
24361
|
+
/**
|
|
24362
|
+
* The URLs the SDK / viewer should race for API access. `baseUrls` empty =
|
|
24363
|
+
* AUTO (every LAN IPv4 + the public tunnel). `resolved` is what that choice
|
|
24364
|
+
* currently expands to, so the UI can show the effective set either way.
|
|
24365
|
+
*/
|
|
24366
|
+
var ViewerEndpointsSchema = object({
|
|
24367
|
+
/** The operator's explicit race set, or empty for AUTO. */
|
|
24368
|
+
baseUrls: array(string()).readonly(),
|
|
24369
|
+
/** What the ranking currently resolves to (may be empty if nothing is up). */
|
|
24370
|
+
resolved: array(string()).readonly()
|
|
24371
|
+
});
|
|
24245
24372
|
var AllowedAddressesSchema = object({
|
|
24246
24373
|
/**
|
|
24247
24374
|
* Allowlist of interface addresses operators have explicitly opted
|
|
@@ -24250,6 +24377,20 @@ var AllowedAddressesSchema = object({
|
|
|
24250
24377
|
* Network Addresses admin page and persisted by the addon.
|
|
24251
24378
|
*/
|
|
24252
24379
|
addresses: array(string()).readonly() });
|
|
24380
|
+
var TlsStatusSchema = object({
|
|
24381
|
+
mode: _enum([
|
|
24382
|
+
"generated",
|
|
24383
|
+
"uploaded",
|
|
24384
|
+
"disabled"
|
|
24385
|
+
]),
|
|
24386
|
+
leafFingerprintSha256: string().nullable(),
|
|
24387
|
+
caFingerprintSha256: string().nullable(),
|
|
24388
|
+
validTo: string().nullable(),
|
|
24389
|
+
sans: array(string()),
|
|
24390
|
+
caCertPem: string().nullable(),
|
|
24391
|
+
reissueError: string().nullable(),
|
|
24392
|
+
restartRequired: boolean()
|
|
24393
|
+
});
|
|
24253
24394
|
method(_void(), ListResultSchema), method(_void(), PreferredSchema), method(object({
|
|
24254
24395
|
/**
|
|
24255
24396
|
* LEGACY HINT — do not send from new code. Kept optional so clients
|
|
@@ -24259,17 +24400,31 @@ method(_void(), ListResultSchema), method(_void(), PreferredSchema), method(obje
|
|
|
24259
24400
|
*/
|
|
24260
24401
|
port: number().int().min(1).max(65535).optional(),
|
|
24261
24402
|
/** Include `http(s)://127.0.0.1:<port>` as the lowest-priority
|
|
24262
|
-
* candidate. Default `
|
|
24403
|
+
* candidate. Default `false` — loopback is not a client route. */
|
|
24263
24404
|
includeLoopback: boolean().optional(),
|
|
24264
|
-
/** Skip IPv6 entries.
|
|
24265
|
-
*
|
|
24405
|
+
/** Skip IPv6 entries. Default `false` — the palette includes stable
|
|
24406
|
+
* LAN IPv6 (ICE/WebRTC uses dual-stack regardless). Pass `true` to
|
|
24407
|
+
* hide them. The viewer HTTP/WS race is `getViewerEndpoints`. */
|
|
24266
24408
|
ipv4Only: boolean().optional(),
|
|
24267
24409
|
/** Scheme to emit for LAN/loopback URLs. Default `'http'`.
|
|
24268
24410
|
* Pass `'https'` when the caller is itself loaded over HTTPS
|
|
24269
24411
|
* to avoid mixed-content blocks in the browser. The public
|
|
24270
24412
|
* tunnel always emits `https://` regardless. */
|
|
24271
24413
|
scheme: _enum(["http", "https"]).optional()
|
|
24272
|
-
}), 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" })
|
|
24414
|
+
}), 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, {
|
|
24415
|
+
kind: "mutation",
|
|
24416
|
+
auth: "admin"
|
|
24417
|
+
}), method(object({
|
|
24418
|
+
certPem: string().min(1),
|
|
24419
|
+
keyPem: string().min(1),
|
|
24420
|
+
caPem: string().optional()
|
|
24421
|
+
}), TlsStatusSchema, {
|
|
24422
|
+
kind: "mutation",
|
|
24423
|
+
auth: "admin"
|
|
24424
|
+
}), method(_void(), object({ pem: string() })), method(_void(), TlsStatusSchema, {
|
|
24425
|
+
kind: "mutation",
|
|
24426
|
+
auth: "admin"
|
|
24427
|
+
});
|
|
24273
24428
|
var LockControlStatusSchema = object({
|
|
24274
24429
|
/** Lifecycle state of the lock. `jammed` means the motor reported
|
|
24275
24430
|
* failure to reach the target — operator intervention required. */
|
|
@@ -32296,6 +32451,12 @@ Object.freeze({
|
|
|
32296
32451
|
addonId: null,
|
|
32297
32452
|
access: "create"
|
|
32298
32453
|
},
|
|
32454
|
+
"localNetwork.downloadCa": {
|
|
32455
|
+
capName: "local-network",
|
|
32456
|
+
capScope: "system",
|
|
32457
|
+
addonId: null,
|
|
32458
|
+
access: "view"
|
|
32459
|
+
},
|
|
32299
32460
|
"localNetwork.getAllowedAddresses": {
|
|
32300
32461
|
capName: "local-network",
|
|
32301
32462
|
capScope: "system",
|
|
@@ -32320,18 +32481,42 @@ Object.freeze({
|
|
|
32320
32481
|
addonId: null,
|
|
32321
32482
|
access: "view"
|
|
32322
32483
|
},
|
|
32484
|
+
"localNetwork.getTlsStatus": {
|
|
32485
|
+
capName: "local-network",
|
|
32486
|
+
capScope: "system",
|
|
32487
|
+
addonId: null,
|
|
32488
|
+
access: "view"
|
|
32489
|
+
},
|
|
32490
|
+
"localNetwork.getViewerEndpoints": {
|
|
32491
|
+
capName: "local-network",
|
|
32492
|
+
capScope: "system",
|
|
32493
|
+
addonId: null,
|
|
32494
|
+
access: "view"
|
|
32495
|
+
},
|
|
32323
32496
|
"localNetwork.list": {
|
|
32324
32497
|
capName: "local-network",
|
|
32325
32498
|
capScope: "system",
|
|
32326
32499
|
addonId: null,
|
|
32327
32500
|
access: "view"
|
|
32328
32501
|
},
|
|
32502
|
+
"localNetwork.regenerateCertificate": {
|
|
32503
|
+
capName: "local-network",
|
|
32504
|
+
capScope: "system",
|
|
32505
|
+
addonId: null,
|
|
32506
|
+
access: "create"
|
|
32507
|
+
},
|
|
32329
32508
|
"localNetwork.resetAllowlistToBestMatch": {
|
|
32330
32509
|
capName: "local-network",
|
|
32331
32510
|
capScope: "system",
|
|
32332
32511
|
addonId: null,
|
|
32333
32512
|
access: "delete"
|
|
32334
32513
|
},
|
|
32514
|
+
"localNetwork.revertToGeneratedCertificate": {
|
|
32515
|
+
capName: "local-network",
|
|
32516
|
+
capScope: "system",
|
|
32517
|
+
addonId: null,
|
|
32518
|
+
access: "create"
|
|
32519
|
+
},
|
|
32335
32520
|
"localNetwork.setAllowedAddresses": {
|
|
32336
32521
|
capName: "local-network",
|
|
32337
32522
|
capScope: "system",
|
|
@@ -32344,6 +32529,18 @@ Object.freeze({
|
|
|
32344
32529
|
addonId: null,
|
|
32345
32530
|
access: "create"
|
|
32346
32531
|
},
|
|
32532
|
+
"localNetwork.setViewerEndpoints": {
|
|
32533
|
+
capName: "local-network",
|
|
32534
|
+
capScope: "system",
|
|
32535
|
+
addonId: null,
|
|
32536
|
+
access: "create"
|
|
32537
|
+
},
|
|
32538
|
+
"localNetwork.uploadCertificate": {
|
|
32539
|
+
capName: "local-network",
|
|
32540
|
+
capScope: "system",
|
|
32541
|
+
addonId: null,
|
|
32542
|
+
access: "create"
|
|
32543
|
+
},
|
|
32347
32544
|
"lockControl.lock": {
|
|
32348
32545
|
capName: "lock-control",
|
|
32349
32546
|
capScope: "device",
|
|
@@ -35224,6 +35421,12 @@ Object.freeze({
|
|
|
35224
35421
|
addonId: null,
|
|
35225
35422
|
access: "create"
|
|
35226
35423
|
},
|
|
35424
|
+
"terminalSession.updateInstance": {
|
|
35425
|
+
capName: "terminal-session",
|
|
35426
|
+
capScope: "system",
|
|
35427
|
+
addonId: null,
|
|
35428
|
+
access: "create"
|
|
35429
|
+
},
|
|
35227
35430
|
"terminalSession.writeInput": {
|
|
35228
35431
|
capName: "terminal-session",
|
|
35229
35432
|
capScope: "system",
|
|
@@ -37711,6 +37914,35 @@ Object.freeze(Object.fromEntries([{
|
|
|
37711
37914
|
}]
|
|
37712
37915
|
}].map((s) => [s.stepId, s.defaultModelId])));
|
|
37713
37916
|
string().min(1);
|
|
37917
|
+
var CLUSTER_STEP_SETTING_FIELDS = [{
|
|
37918
|
+
stepId: "face-embedding",
|
|
37919
|
+
key: "minLandmarkFaceSize",
|
|
37920
|
+
label: "Min face size for recognition (detection px)",
|
|
37921
|
+
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.",
|
|
37922
|
+
type: "slider",
|
|
37923
|
+
min: 0,
|
|
37924
|
+
max: 64,
|
|
37925
|
+
step: 2,
|
|
37926
|
+
default: 24
|
|
37927
|
+
}];
|
|
37928
|
+
function clusterStepSettingKey(stepId, fieldKey) {
|
|
37929
|
+
return `clusterStepSetting:${stepId}:${fieldKey}`;
|
|
37930
|
+
}
|
|
37931
|
+
var ClusterSettingNumberSchema = number().finite();
|
|
37932
|
+
function readClusterStepSettings(config) {
|
|
37933
|
+
const out = {};
|
|
37934
|
+
for (const field of CLUSTER_STEP_SETTING_FIELDS) {
|
|
37935
|
+
const parsed = ClusterSettingNumberSchema.safeParse(config[clusterStepSettingKey(field.stepId, field.key)]);
|
|
37936
|
+
const value = parsed.success ? parsed.data : field.default;
|
|
37937
|
+
const existing = out[field.stepId] ?? {};
|
|
37938
|
+
out[field.stepId] = {
|
|
37939
|
+
...existing,
|
|
37940
|
+
[field.key]: value
|
|
37941
|
+
};
|
|
37942
|
+
}
|
|
37943
|
+
return out;
|
|
37944
|
+
}
|
|
37945
|
+
readClusterStepSettings({});
|
|
37714
37946
|
object({
|
|
37715
37947
|
/**
|
|
37716
37948
|
* 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-import-alexa",
|
|
3
|
-
"version": "0.2.
|
|
3
|
+
"version": "0.2.26",
|
|
4
4
|
"description": "Alexa device-import provider for CamStack — imports the smart-home devices in a user's Alexa account via the unofficial alexa-remote2 cookie/token client (the inverse of the Alexa exporter)",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"camstack",
|