@camstack/addon-cloudflare 1.2.25 → 1.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/{dist-bN2ruooH.js → dist-CbCaiEpw.js} +248 -16
- package/dist/{dist-C55lXXNr.mjs → dist-DnohT9Id.mjs} +248 -16
- package/dist/tunnel/cloudflare-tunnel.addon.js +1 -1
- package/dist/tunnel/cloudflare-tunnel.addon.mjs +1 -1
- package/dist/turn/cloudflare-turn.addon.js +1 -1
- package/dist/turn/cloudflare-turn.addon.mjs +1 -1
- package/package.json +1 -1
|
@@ -8003,6 +8003,15 @@ var LabelDefinitionSchema = object({
|
|
|
8003
8003
|
description: string().optional(),
|
|
8004
8004
|
icon: string().optional()
|
|
8005
8005
|
});
|
|
8006
|
+
var ClassMapDefinitionSchema = object({
|
|
8007
|
+
mapping: record(string(), _enum([
|
|
8008
|
+
"person",
|
|
8009
|
+
"vehicle",
|
|
8010
|
+
"animal",
|
|
8011
|
+
"package"
|
|
8012
|
+
])),
|
|
8013
|
+
preserveOriginal: boolean()
|
|
8014
|
+
});
|
|
8006
8015
|
var MODEL_FORMATS = [
|
|
8007
8016
|
"onnx",
|
|
8008
8017
|
"coreml",
|
|
@@ -8181,7 +8190,13 @@ var ModelCatalogEntrySchema = object({
|
|
|
8181
8190
|
* `id` stays the source of truth for resolution/download/persistence; grouping
|
|
8182
8191
|
* is a presentation overlay resolved back to an `id`.
|
|
8183
8192
|
*/
|
|
8184
|
-
group: ModelVariantGroupSchema.optional()
|
|
8193
|
+
group: ModelVariantGroupSchema.optional(),
|
|
8194
|
+
/**
|
|
8195
|
+
* Per-MODEL class map override. Absent ⇒ the step's `StepDefinition.classMap`
|
|
8196
|
+
* applies (Frigate / COCO public catalog). Set on a custom model whose raw
|
|
8197
|
+
* labels already ARE the CamStack macros (Scrypted identity map).
|
|
8198
|
+
*/
|
|
8199
|
+
classMap: ClassMapDefinitionSchema.optional()
|
|
8185
8200
|
});
|
|
8186
8201
|
var ConvertTargetSchema = discriminatedUnion("format", [object({
|
|
8187
8202
|
format: literal("openvino"),
|
|
@@ -8210,7 +8225,8 @@ var ModelConvertMetadataSchema = object({
|
|
|
8210
8225
|
"ocr",
|
|
8211
8226
|
"segmentation"
|
|
8212
8227
|
]),
|
|
8213
|
-
faceAlignment: boolean().optional()
|
|
8228
|
+
faceAlignment: boolean().optional(),
|
|
8229
|
+
classMap: ClassMapDefinitionSchema.optional()
|
|
8214
8230
|
});
|
|
8215
8231
|
var ConvertResultSchema = object({
|
|
8216
8232
|
entry: ModelCatalogEntrySchema,
|
|
@@ -17240,6 +17256,33 @@ var NativeCropRefSchema = object({
|
|
|
17240
17256
|
h: number()
|
|
17241
17257
|
})
|
|
17242
17258
|
});
|
|
17259
|
+
object({
|
|
17260
|
+
crop: object({
|
|
17261
|
+
left: number(),
|
|
17262
|
+
top: number(),
|
|
17263
|
+
width: number().positive(),
|
|
17264
|
+
height: number().positive()
|
|
17265
|
+
}).optional(),
|
|
17266
|
+
content: object({
|
|
17267
|
+
width: number().int().positive(),
|
|
17268
|
+
height: number().int().positive()
|
|
17269
|
+
}),
|
|
17270
|
+
fit: _enum(["stretch", "contain"]),
|
|
17271
|
+
format: _enum([
|
|
17272
|
+
"rgb",
|
|
17273
|
+
"gray",
|
|
17274
|
+
"jpeg"
|
|
17275
|
+
])
|
|
17276
|
+
});
|
|
17277
|
+
var FrameRefSchema = object({
|
|
17278
|
+
registryId: string().min(1),
|
|
17279
|
+
id: string().min(1),
|
|
17280
|
+
width: number().int().positive(),
|
|
17281
|
+
height: number().int().positive(),
|
|
17282
|
+
format: _enum(["rgb", "gray"]),
|
|
17283
|
+
timestamp: number(),
|
|
17284
|
+
capturedAt: number().optional()
|
|
17285
|
+
});
|
|
17243
17286
|
var ModelFormatSchema$1 = _enum([
|
|
17244
17287
|
"onnx",
|
|
17245
17288
|
"coreml",
|
|
@@ -17484,6 +17527,12 @@ method(_void(), array(PipelineEngineChoiceSchema)), method(_void(), PipelineEngi
|
|
|
17484
17527
|
steps: array(PipelineStepInputSchema).min(1),
|
|
17485
17528
|
frame: FrameInputSchema.optional(),
|
|
17486
17529
|
/**
|
|
17530
|
+
* Process-local lazy frame. Valid only when caller and provider resolve
|
|
17531
|
+
* in the same execution-group process; split/cross-node callers use
|
|
17532
|
+
* `frame`/`image` inline compatibility instead.
|
|
17533
|
+
*/
|
|
17534
|
+
frameRef: FrameRefSchema.optional(),
|
|
17535
|
+
/**
|
|
17487
17536
|
* CB5 shm passthrough — a `FrameHandle` naming the same ring slot
|
|
17488
17537
|
* the decoded pixels live in. One more member of the one-of
|
|
17489
17538
|
* frame/frameHandle/image/imageBase64/referenceImage group.
|
|
@@ -17739,7 +17788,10 @@ var NativeCropResultSchema = object({
|
|
|
17739
17788
|
* Which source served this crop, so a quality-sensitive consumer (the native
|
|
17740
17789
|
* `keyFrame`) can reject a degraded fallback:
|
|
17741
17790
|
* - `native` — cut from the decode worker's retained NATIVE surface (the
|
|
17742
|
-
* quality path).
|
|
17791
|
+
* quality path). A subject-tile serve is also native-resolution and stays
|
|
17792
|
+
* `native` here: the public enum cannot name `tile` without a breaking cap
|
|
17793
|
+
* change. Runner telemetry distinguishes lease vs tile via `source` on the
|
|
17794
|
+
* internal crop result (`nativeHits` vs `tileHits`).
|
|
17743
17795
|
* - `ram-fullframe` — the native surface MISSED but the request was full-frame,
|
|
17744
17796
|
* so the ≤640 RAM `RetainedFrameStore` served it (honest lower-res; legit for
|
|
17745
17797
|
* the blank-frame guard / 640-snapshot resolve, NOT for the clean keyFrame).
|
|
@@ -18230,12 +18282,41 @@ var RunnerLocalLoadSchema = object({
|
|
|
18230
18282
|
* legacy `OrchestratorMetricsSchema` shape so existing dashboards keep
|
|
18231
18283
|
* working unchanged when they switch to reading from the runner cap.
|
|
18232
18284
|
*/
|
|
18285
|
+
var FrameLazyCountersSchema = object({
|
|
18286
|
+
framesDecoded: number(),
|
|
18287
|
+
framesAdmitted: number(),
|
|
18288
|
+
framesDroppedPixelFree: number(),
|
|
18289
|
+
viewsMaterialized: number(),
|
|
18290
|
+
viewsSkipped: number(),
|
|
18291
|
+
workerToRunnerBytes: number(),
|
|
18292
|
+
runnerToPoolRawBytes: number(),
|
|
18293
|
+
runnerToPoolJpegBytes: number(),
|
|
18294
|
+
onDemandFullFrameRequests: number(),
|
|
18295
|
+
onDemandCropRequests: number(),
|
|
18296
|
+
nativeHits: number(),
|
|
18297
|
+
nativeMisses: number(),
|
|
18298
|
+
tileHits: number(),
|
|
18299
|
+
tileMisses: number(),
|
|
18300
|
+
fallbackHits: number(),
|
|
18301
|
+
fallbackMisses: number(),
|
|
18302
|
+
retainedWritesAvoided: number(),
|
|
18303
|
+
residentRefs: number(),
|
|
18304
|
+
residentBytes: number(),
|
|
18305
|
+
releases: number(),
|
|
18306
|
+
evictions: number(),
|
|
18307
|
+
staleMisses: number()
|
|
18308
|
+
});
|
|
18309
|
+
var FrameLazyMetricsSchema = object({
|
|
18310
|
+
node: FrameLazyCountersSchema,
|
|
18311
|
+
cameras: array(FrameLazyCountersSchema.extend({ deviceId: number() }))
|
|
18312
|
+
});
|
|
18233
18313
|
var RunnerLocalMetricsSchema = object({
|
|
18234
18314
|
nodeId: string(),
|
|
18235
18315
|
activeCameras: number(),
|
|
18236
18316
|
throttledCameras: number(),
|
|
18237
18317
|
avgInferenceTimeMs: number(),
|
|
18238
|
-
queueDepth: number()
|
|
18318
|
+
queueDepth: number(),
|
|
18319
|
+
frameLazy: FrameLazyMetricsSchema.optional()
|
|
18239
18320
|
});
|
|
18240
18321
|
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({
|
|
18241
18322
|
handle: FrameHandleSchema,
|
|
@@ -19535,6 +19616,9 @@ method(_void(), ProviderInfoSchema), method(object({ config: record(string(), un
|
|
|
19535
19616
|
location: StorageLocationSchema,
|
|
19536
19617
|
relativePath: string()
|
|
19537
19618
|
}), _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" });
|
|
19619
|
+
/** Profile-exported FormBuilder schema. Shape is ConfigUISchema at the UI. */
|
|
19620
|
+
var ProfileSettingsSchemaBridge = unknown().nullable();
|
|
19621
|
+
var ProfileSettingsBagSchema = record(string(), unknown());
|
|
19538
19622
|
/**
|
|
19539
19623
|
* A live terminal session hosted by the provider addon. Output and input do
|
|
19540
19624
|
* NOT flow through the capability — they use the addon data plane
|
|
@@ -19564,7 +19648,14 @@ var TerminalSessionInfoSchema = object({
|
|
|
19564
19648
|
var TerminalProfileInfoSchema = object({
|
|
19565
19649
|
profileId: string(),
|
|
19566
19650
|
label: string(),
|
|
19567
|
-
description: string().optional()
|
|
19651
|
+
description: string().optional(),
|
|
19652
|
+
/** Spawn defaults the instance form copies on create. */
|
|
19653
|
+
executable: string().optional(),
|
|
19654
|
+
args: array(string()).readonly().optional(),
|
|
19655
|
+
cwd: string().optional(),
|
|
19656
|
+
environment: array(string()).readonly().optional(),
|
|
19657
|
+
/** ConfigUISchema for instance knobs, or null when the profile has none. */
|
|
19658
|
+
settingsSchema: ProfileSettingsSchemaBridge.optional()
|
|
19568
19659
|
});
|
|
19569
19660
|
/**
|
|
19570
19661
|
* A durable operator-created Terminal instance. Profiles are templates; only
|
|
@@ -19577,7 +19668,12 @@ var TerminalInstanceInfoSchema = object({
|
|
|
19577
19668
|
profileId: string(),
|
|
19578
19669
|
profileLabel: string(),
|
|
19579
19670
|
name: string(),
|
|
19580
|
-
enabled: boolean()
|
|
19671
|
+
enabled: boolean(),
|
|
19672
|
+
executable: string(),
|
|
19673
|
+
args: array(string()).readonly(),
|
|
19674
|
+
cwd: string(),
|
|
19675
|
+
environment: array(string()).readonly(),
|
|
19676
|
+
profileSettings: ProfileSettingsBagSchema
|
|
19581
19677
|
});
|
|
19582
19678
|
var TerminalLegacyCameraSchema = object({
|
|
19583
19679
|
stableId: string(),
|
|
@@ -19607,7 +19703,23 @@ var TerminalOutputBatchSchema = object({
|
|
|
19607
19703
|
method(_void(), array(TerminalProfileInfoSchema).readonly(), { auth: "admin" }), method(_void(), array(TerminalInstanceInfoSchema).readonly(), { auth: "admin" }), method(object({
|
|
19608
19704
|
targetNodeId: string().min(1),
|
|
19609
19705
|
profileId: string().min(1),
|
|
19610
|
-
name: string().trim().min(1).max(160).optional()
|
|
19706
|
+
name: string().trim().min(1).max(160).optional(),
|
|
19707
|
+
executable: string().max(1024).optional(),
|
|
19708
|
+
args: array(string().max(2048)).max(64).optional(),
|
|
19709
|
+
cwd: string().max(1024).optional(),
|
|
19710
|
+
environment: array(string().max(4096)).max(64).optional(),
|
|
19711
|
+
profileSettings: ProfileSettingsBagSchema.optional()
|
|
19712
|
+
}), TerminalInstanceInfoSchema, {
|
|
19713
|
+
kind: "mutation",
|
|
19714
|
+
auth: "admin"
|
|
19715
|
+
}), method(object({
|
|
19716
|
+
instanceId: string().min(1),
|
|
19717
|
+
name: string().trim().min(1).max(160).optional(),
|
|
19718
|
+
executable: string().max(1024).optional(),
|
|
19719
|
+
args: array(string().max(2048)).max(64).optional(),
|
|
19720
|
+
cwd: string().max(1024).optional(),
|
|
19721
|
+
environment: array(string().max(4096)).max(64).optional(),
|
|
19722
|
+
profileSettings: ProfileSettingsBagSchema.optional()
|
|
19611
19723
|
}), TerminalInstanceInfoSchema, {
|
|
19612
19724
|
kind: "mutation",
|
|
19613
19725
|
auth: "admin"
|
|
@@ -19629,7 +19741,11 @@ method(_void(), array(TerminalProfileInfoSchema).readonly(), { auth: "admin" }),
|
|
|
19629
19741
|
}), method(_void(), array(TerminalSessionInfoSchema).readonly(), { auth: "admin" }), method(object({
|
|
19630
19742
|
profileId: string(),
|
|
19631
19743
|
cols: number().int().positive(),
|
|
19632
|
-
rows: number().int().positive()
|
|
19744
|
+
rows: number().int().positive(),
|
|
19745
|
+
executable: string().max(1024).optional(),
|
|
19746
|
+
args: array(string().max(2048)).max(64).optional(),
|
|
19747
|
+
cwd: string().max(1024).optional(),
|
|
19748
|
+
environment: array(string().max(4096)).max(64).optional()
|
|
19633
19749
|
}), TerminalSessionInfoSchema, {
|
|
19634
19750
|
kind: "mutation",
|
|
19635
19751
|
auth: "admin"
|
|
@@ -22434,10 +22550,10 @@ DeviceType.LawnMower, method(object({ deviceId: number().int().nonnegative() }),
|
|
|
22434
22550
|
*
|
|
22435
22551
|
* • The SDK (mobile / web client) consumes `getConnectionEndpoints()`
|
|
22436
22552
|
* to receive an ordered list of candidate base URLs it should race
|
|
22437
|
-
* on connect — LAN IPv4 first (lowest latency
|
|
22438
|
-
* then public hostname (if a tunnel is
|
|
22439
|
-
* race them with short timeouts and stick with the
|
|
22440
|
-
* session.
|
|
22553
|
+
* on connect — LAN IPv4 and stable LAN IPv6 first (lowest latency
|
|
22554
|
+
* when on the same network), then public hostname (if a tunnel is
|
|
22555
|
+
* up). The SDK can race them with short timeouts and stick with the
|
|
22556
|
+
* winner for the session.
|
|
22441
22557
|
*
|
|
22442
22558
|
* Why hub-only: agents are not directly addressable by the operator's
|
|
22443
22559
|
* clients — they reverse-connect to the hub. Exposing their interfaces
|
|
@@ -22592,6 +22708,17 @@ var NotificationEndpointSchema = object({
|
|
|
22592
22708
|
/** What the ranking currently resolves to (null when nothing is reachable). */
|
|
22593
22709
|
resolved: string().nullable()
|
|
22594
22710
|
});
|
|
22711
|
+
/**
|
|
22712
|
+
* The URLs the SDK / viewer should race for API access. `baseUrls` empty =
|
|
22713
|
+
* AUTO (every LAN IPv4 + the public tunnel). `resolved` is what that choice
|
|
22714
|
+
* currently expands to, so the UI can show the effective set either way.
|
|
22715
|
+
*/
|
|
22716
|
+
var ViewerEndpointsSchema = object({
|
|
22717
|
+
/** The operator's explicit race set, or empty for AUTO. */
|
|
22718
|
+
baseUrls: array(string()).readonly(),
|
|
22719
|
+
/** What the ranking currently resolves to (may be empty if nothing is up). */
|
|
22720
|
+
resolved: array(string()).readonly()
|
|
22721
|
+
});
|
|
22595
22722
|
var AllowedAddressesSchema = object({
|
|
22596
22723
|
/**
|
|
22597
22724
|
* Allowlist of interface addresses operators have explicitly opted
|
|
@@ -22600,6 +22727,20 @@ var AllowedAddressesSchema = object({
|
|
|
22600
22727
|
* Network Addresses admin page and persisted by the addon.
|
|
22601
22728
|
*/
|
|
22602
22729
|
addresses: array(string()).readonly() });
|
|
22730
|
+
var TlsStatusSchema = object({
|
|
22731
|
+
mode: _enum([
|
|
22732
|
+
"generated",
|
|
22733
|
+
"uploaded",
|
|
22734
|
+
"disabled"
|
|
22735
|
+
]),
|
|
22736
|
+
leafFingerprintSha256: string().nullable(),
|
|
22737
|
+
caFingerprintSha256: string().nullable(),
|
|
22738
|
+
validTo: string().nullable(),
|
|
22739
|
+
sans: array(string()),
|
|
22740
|
+
caCertPem: string().nullable(),
|
|
22741
|
+
reissueError: string().nullable(),
|
|
22742
|
+
restartRequired: boolean()
|
|
22743
|
+
});
|
|
22603
22744
|
method(_void(), ListResultSchema), method(_void(), PreferredSchema), method(object({
|
|
22604
22745
|
/**
|
|
22605
22746
|
* LEGACY HINT — do not send from new code. Kept optional so clients
|
|
@@ -22609,17 +22750,31 @@ method(_void(), ListResultSchema), method(_void(), PreferredSchema), method(obje
|
|
|
22609
22750
|
*/
|
|
22610
22751
|
port: number().int().min(1).max(65535).optional(),
|
|
22611
22752
|
/** Include `http(s)://127.0.0.1:<port>` as the lowest-priority
|
|
22612
|
-
* candidate. Default `
|
|
22753
|
+
* candidate. Default `false` — loopback is not a client route. */
|
|
22613
22754
|
includeLoopback: boolean().optional(),
|
|
22614
|
-
/** Skip IPv6 entries.
|
|
22615
|
-
*
|
|
22755
|
+
/** Skip IPv6 entries. Default `false` — the palette includes stable
|
|
22756
|
+
* LAN IPv6 (ICE/WebRTC uses dual-stack regardless). Pass `true` to
|
|
22757
|
+
* hide them. The viewer HTTP/WS race is `getViewerEndpoints`. */
|
|
22616
22758
|
ipv4Only: boolean().optional(),
|
|
22617
22759
|
/** Scheme to emit for LAN/loopback URLs. Default `'http'`.
|
|
22618
22760
|
* Pass `'https'` when the caller is itself loaded over HTTPS
|
|
22619
22761
|
* to avoid mixed-content blocks in the browser. The public
|
|
22620
22762
|
* tunnel always emits `https://` regardless. */
|
|
22621
22763
|
scheme: _enum(["http", "https"]).optional()
|
|
22622
|
-
}), 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" })
|
|
22764
|
+
}), 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, {
|
|
22765
|
+
kind: "mutation",
|
|
22766
|
+
auth: "admin"
|
|
22767
|
+
}), method(object({
|
|
22768
|
+
certPem: string().min(1),
|
|
22769
|
+
keyPem: string().min(1),
|
|
22770
|
+
caPem: string().optional()
|
|
22771
|
+
}), TlsStatusSchema, {
|
|
22772
|
+
kind: "mutation",
|
|
22773
|
+
auth: "admin"
|
|
22774
|
+
}), method(_void(), object({ pem: string() })), method(_void(), TlsStatusSchema, {
|
|
22775
|
+
kind: "mutation",
|
|
22776
|
+
auth: "admin"
|
|
22777
|
+
});
|
|
22623
22778
|
object({
|
|
22624
22779
|
/** Lifecycle state of the lock. `jammed` means the motor reported
|
|
22625
22780
|
* failure to reach the target — operator intervention required. */
|
|
@@ -28382,6 +28537,12 @@ Object.freeze({
|
|
|
28382
28537
|
addonId: null,
|
|
28383
28538
|
access: "create"
|
|
28384
28539
|
},
|
|
28540
|
+
"localNetwork.downloadCa": {
|
|
28541
|
+
capName: "local-network",
|
|
28542
|
+
capScope: "system",
|
|
28543
|
+
addonId: null,
|
|
28544
|
+
access: "view"
|
|
28545
|
+
},
|
|
28385
28546
|
"localNetwork.getAllowedAddresses": {
|
|
28386
28547
|
capName: "local-network",
|
|
28387
28548
|
capScope: "system",
|
|
@@ -28406,18 +28567,42 @@ Object.freeze({
|
|
|
28406
28567
|
addonId: null,
|
|
28407
28568
|
access: "view"
|
|
28408
28569
|
},
|
|
28570
|
+
"localNetwork.getTlsStatus": {
|
|
28571
|
+
capName: "local-network",
|
|
28572
|
+
capScope: "system",
|
|
28573
|
+
addonId: null,
|
|
28574
|
+
access: "view"
|
|
28575
|
+
},
|
|
28576
|
+
"localNetwork.getViewerEndpoints": {
|
|
28577
|
+
capName: "local-network",
|
|
28578
|
+
capScope: "system",
|
|
28579
|
+
addonId: null,
|
|
28580
|
+
access: "view"
|
|
28581
|
+
},
|
|
28409
28582
|
"localNetwork.list": {
|
|
28410
28583
|
capName: "local-network",
|
|
28411
28584
|
capScope: "system",
|
|
28412
28585
|
addonId: null,
|
|
28413
28586
|
access: "view"
|
|
28414
28587
|
},
|
|
28588
|
+
"localNetwork.regenerateCertificate": {
|
|
28589
|
+
capName: "local-network",
|
|
28590
|
+
capScope: "system",
|
|
28591
|
+
addonId: null,
|
|
28592
|
+
access: "create"
|
|
28593
|
+
},
|
|
28415
28594
|
"localNetwork.resetAllowlistToBestMatch": {
|
|
28416
28595
|
capName: "local-network",
|
|
28417
28596
|
capScope: "system",
|
|
28418
28597
|
addonId: null,
|
|
28419
28598
|
access: "delete"
|
|
28420
28599
|
},
|
|
28600
|
+
"localNetwork.revertToGeneratedCertificate": {
|
|
28601
|
+
capName: "local-network",
|
|
28602
|
+
capScope: "system",
|
|
28603
|
+
addonId: null,
|
|
28604
|
+
access: "create"
|
|
28605
|
+
},
|
|
28421
28606
|
"localNetwork.setAllowedAddresses": {
|
|
28422
28607
|
capName: "local-network",
|
|
28423
28608
|
capScope: "system",
|
|
@@ -28430,6 +28615,18 @@ Object.freeze({
|
|
|
28430
28615
|
addonId: null,
|
|
28431
28616
|
access: "create"
|
|
28432
28617
|
},
|
|
28618
|
+
"localNetwork.setViewerEndpoints": {
|
|
28619
|
+
capName: "local-network",
|
|
28620
|
+
capScope: "system",
|
|
28621
|
+
addonId: null,
|
|
28622
|
+
access: "create"
|
|
28623
|
+
},
|
|
28624
|
+
"localNetwork.uploadCertificate": {
|
|
28625
|
+
capName: "local-network",
|
|
28626
|
+
capScope: "system",
|
|
28627
|
+
addonId: null,
|
|
28628
|
+
access: "create"
|
|
28629
|
+
},
|
|
28433
28630
|
"lockControl.lock": {
|
|
28434
28631
|
capName: "lock-control",
|
|
28435
28632
|
capScope: "device",
|
|
@@ -31310,6 +31507,12 @@ Object.freeze({
|
|
|
31310
31507
|
addonId: null,
|
|
31311
31508
|
access: "create"
|
|
31312
31509
|
},
|
|
31510
|
+
"terminalSession.updateInstance": {
|
|
31511
|
+
capName: "terminal-session",
|
|
31512
|
+
capScope: "system",
|
|
31513
|
+
addonId: null,
|
|
31514
|
+
access: "create"
|
|
31515
|
+
},
|
|
31313
31516
|
"terminalSession.writeInput": {
|
|
31314
31517
|
capName: "terminal-session",
|
|
31315
31518
|
capScope: "system",
|
|
@@ -33797,6 +34000,35 @@ Object.freeze(Object.fromEntries([{
|
|
|
33797
34000
|
}]
|
|
33798
34001
|
}].map((s) => [s.stepId, s.defaultModelId])));
|
|
33799
34002
|
string().min(1);
|
|
34003
|
+
var CLUSTER_STEP_SETTING_FIELDS = [{
|
|
34004
|
+
stepId: "face-embedding",
|
|
34005
|
+
key: "minLandmarkFaceSize",
|
|
34006
|
+
label: "Min face size for recognition (detection px)",
|
|
34007
|
+
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.",
|
|
34008
|
+
type: "slider",
|
|
34009
|
+
min: 0,
|
|
34010
|
+
max: 64,
|
|
34011
|
+
step: 2,
|
|
34012
|
+
default: 24
|
|
34013
|
+
}];
|
|
34014
|
+
function clusterStepSettingKey(stepId, fieldKey) {
|
|
34015
|
+
return `clusterStepSetting:${stepId}:${fieldKey}`;
|
|
34016
|
+
}
|
|
34017
|
+
var ClusterSettingNumberSchema = number().finite();
|
|
34018
|
+
function readClusterStepSettings(config) {
|
|
34019
|
+
const out = {};
|
|
34020
|
+
for (const field of CLUSTER_STEP_SETTING_FIELDS) {
|
|
34021
|
+
const parsed = ClusterSettingNumberSchema.safeParse(config[clusterStepSettingKey(field.stepId, field.key)]);
|
|
34022
|
+
const value = parsed.success ? parsed.data : field.default;
|
|
34023
|
+
const existing = out[field.stepId] ?? {};
|
|
34024
|
+
out[field.stepId] = {
|
|
34025
|
+
...existing,
|
|
34026
|
+
[field.key]: value
|
|
34027
|
+
};
|
|
34028
|
+
}
|
|
34029
|
+
return out;
|
|
34030
|
+
}
|
|
34031
|
+
readClusterStepSettings({});
|
|
33800
34032
|
object({
|
|
33801
34033
|
/**
|
|
33802
34034
|
* Fraction of the box's own size added on EACH side before cutting.
|
|
@@ -8003,6 +8003,15 @@ var LabelDefinitionSchema = object({
|
|
|
8003
8003
|
description: string().optional(),
|
|
8004
8004
|
icon: string().optional()
|
|
8005
8005
|
});
|
|
8006
|
+
var ClassMapDefinitionSchema = object({
|
|
8007
|
+
mapping: record(string(), _enum([
|
|
8008
|
+
"person",
|
|
8009
|
+
"vehicle",
|
|
8010
|
+
"animal",
|
|
8011
|
+
"package"
|
|
8012
|
+
])),
|
|
8013
|
+
preserveOriginal: boolean()
|
|
8014
|
+
});
|
|
8006
8015
|
var MODEL_FORMATS = [
|
|
8007
8016
|
"onnx",
|
|
8008
8017
|
"coreml",
|
|
@@ -8181,7 +8190,13 @@ var ModelCatalogEntrySchema = object({
|
|
|
8181
8190
|
* `id` stays the source of truth for resolution/download/persistence; grouping
|
|
8182
8191
|
* is a presentation overlay resolved back to an `id`.
|
|
8183
8192
|
*/
|
|
8184
|
-
group: ModelVariantGroupSchema.optional()
|
|
8193
|
+
group: ModelVariantGroupSchema.optional(),
|
|
8194
|
+
/**
|
|
8195
|
+
* Per-MODEL class map override. Absent ⇒ the step's `StepDefinition.classMap`
|
|
8196
|
+
* applies (Frigate / COCO public catalog). Set on a custom model whose raw
|
|
8197
|
+
* labels already ARE the CamStack macros (Scrypted identity map).
|
|
8198
|
+
*/
|
|
8199
|
+
classMap: ClassMapDefinitionSchema.optional()
|
|
8185
8200
|
});
|
|
8186
8201
|
var ConvertTargetSchema = discriminatedUnion("format", [object({
|
|
8187
8202
|
format: literal("openvino"),
|
|
@@ -8210,7 +8225,8 @@ var ModelConvertMetadataSchema = object({
|
|
|
8210
8225
|
"ocr",
|
|
8211
8226
|
"segmentation"
|
|
8212
8227
|
]),
|
|
8213
|
-
faceAlignment: boolean().optional()
|
|
8228
|
+
faceAlignment: boolean().optional(),
|
|
8229
|
+
classMap: ClassMapDefinitionSchema.optional()
|
|
8214
8230
|
});
|
|
8215
8231
|
var ConvertResultSchema = object({
|
|
8216
8232
|
entry: ModelCatalogEntrySchema,
|
|
@@ -17240,6 +17256,33 @@ var NativeCropRefSchema = object({
|
|
|
17240
17256
|
h: number()
|
|
17241
17257
|
})
|
|
17242
17258
|
});
|
|
17259
|
+
object({
|
|
17260
|
+
crop: object({
|
|
17261
|
+
left: number(),
|
|
17262
|
+
top: number(),
|
|
17263
|
+
width: number().positive(),
|
|
17264
|
+
height: number().positive()
|
|
17265
|
+
}).optional(),
|
|
17266
|
+
content: object({
|
|
17267
|
+
width: number().int().positive(),
|
|
17268
|
+
height: number().int().positive()
|
|
17269
|
+
}),
|
|
17270
|
+
fit: _enum(["stretch", "contain"]),
|
|
17271
|
+
format: _enum([
|
|
17272
|
+
"rgb",
|
|
17273
|
+
"gray",
|
|
17274
|
+
"jpeg"
|
|
17275
|
+
])
|
|
17276
|
+
});
|
|
17277
|
+
var FrameRefSchema = object({
|
|
17278
|
+
registryId: string().min(1),
|
|
17279
|
+
id: string().min(1),
|
|
17280
|
+
width: number().int().positive(),
|
|
17281
|
+
height: number().int().positive(),
|
|
17282
|
+
format: _enum(["rgb", "gray"]),
|
|
17283
|
+
timestamp: number(),
|
|
17284
|
+
capturedAt: number().optional()
|
|
17285
|
+
});
|
|
17243
17286
|
var ModelFormatSchema$1 = _enum([
|
|
17244
17287
|
"onnx",
|
|
17245
17288
|
"coreml",
|
|
@@ -17484,6 +17527,12 @@ method(_void(), array(PipelineEngineChoiceSchema)), method(_void(), PipelineEngi
|
|
|
17484
17527
|
steps: array(PipelineStepInputSchema).min(1),
|
|
17485
17528
|
frame: FrameInputSchema.optional(),
|
|
17486
17529
|
/**
|
|
17530
|
+
* Process-local lazy frame. Valid only when caller and provider resolve
|
|
17531
|
+
* in the same execution-group process; split/cross-node callers use
|
|
17532
|
+
* `frame`/`image` inline compatibility instead.
|
|
17533
|
+
*/
|
|
17534
|
+
frameRef: FrameRefSchema.optional(),
|
|
17535
|
+
/**
|
|
17487
17536
|
* CB5 shm passthrough — a `FrameHandle` naming the same ring slot
|
|
17488
17537
|
* the decoded pixels live in. One more member of the one-of
|
|
17489
17538
|
* frame/frameHandle/image/imageBase64/referenceImage group.
|
|
@@ -17739,7 +17788,10 @@ var NativeCropResultSchema = object({
|
|
|
17739
17788
|
* Which source served this crop, so a quality-sensitive consumer (the native
|
|
17740
17789
|
* `keyFrame`) can reject a degraded fallback:
|
|
17741
17790
|
* - `native` — cut from the decode worker's retained NATIVE surface (the
|
|
17742
|
-
* quality path).
|
|
17791
|
+
* quality path). A subject-tile serve is also native-resolution and stays
|
|
17792
|
+
* `native` here: the public enum cannot name `tile` without a breaking cap
|
|
17793
|
+
* change. Runner telemetry distinguishes lease vs tile via `source` on the
|
|
17794
|
+
* internal crop result (`nativeHits` vs `tileHits`).
|
|
17743
17795
|
* - `ram-fullframe` — the native surface MISSED but the request was full-frame,
|
|
17744
17796
|
* so the ≤640 RAM `RetainedFrameStore` served it (honest lower-res; legit for
|
|
17745
17797
|
* the blank-frame guard / 640-snapshot resolve, NOT for the clean keyFrame).
|
|
@@ -18230,12 +18282,41 @@ var RunnerLocalLoadSchema = object({
|
|
|
18230
18282
|
* legacy `OrchestratorMetricsSchema` shape so existing dashboards keep
|
|
18231
18283
|
* working unchanged when they switch to reading from the runner cap.
|
|
18232
18284
|
*/
|
|
18285
|
+
var FrameLazyCountersSchema = object({
|
|
18286
|
+
framesDecoded: number(),
|
|
18287
|
+
framesAdmitted: number(),
|
|
18288
|
+
framesDroppedPixelFree: number(),
|
|
18289
|
+
viewsMaterialized: number(),
|
|
18290
|
+
viewsSkipped: number(),
|
|
18291
|
+
workerToRunnerBytes: number(),
|
|
18292
|
+
runnerToPoolRawBytes: number(),
|
|
18293
|
+
runnerToPoolJpegBytes: number(),
|
|
18294
|
+
onDemandFullFrameRequests: number(),
|
|
18295
|
+
onDemandCropRequests: number(),
|
|
18296
|
+
nativeHits: number(),
|
|
18297
|
+
nativeMisses: number(),
|
|
18298
|
+
tileHits: number(),
|
|
18299
|
+
tileMisses: number(),
|
|
18300
|
+
fallbackHits: number(),
|
|
18301
|
+
fallbackMisses: number(),
|
|
18302
|
+
retainedWritesAvoided: number(),
|
|
18303
|
+
residentRefs: number(),
|
|
18304
|
+
residentBytes: number(),
|
|
18305
|
+
releases: number(),
|
|
18306
|
+
evictions: number(),
|
|
18307
|
+
staleMisses: number()
|
|
18308
|
+
});
|
|
18309
|
+
var FrameLazyMetricsSchema = object({
|
|
18310
|
+
node: FrameLazyCountersSchema,
|
|
18311
|
+
cameras: array(FrameLazyCountersSchema.extend({ deviceId: number() }))
|
|
18312
|
+
});
|
|
18233
18313
|
var RunnerLocalMetricsSchema = object({
|
|
18234
18314
|
nodeId: string(),
|
|
18235
18315
|
activeCameras: number(),
|
|
18236
18316
|
throttledCameras: number(),
|
|
18237
18317
|
avgInferenceTimeMs: number(),
|
|
18238
|
-
queueDepth: number()
|
|
18318
|
+
queueDepth: number(),
|
|
18319
|
+
frameLazy: FrameLazyMetricsSchema.optional()
|
|
18239
18320
|
});
|
|
18240
18321
|
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({
|
|
18241
18322
|
handle: FrameHandleSchema,
|
|
@@ -19535,6 +19616,9 @@ method(_void(), ProviderInfoSchema), method(object({ config: record(string(), un
|
|
|
19535
19616
|
location: StorageLocationSchema,
|
|
19536
19617
|
relativePath: string()
|
|
19537
19618
|
}), _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" });
|
|
19619
|
+
/** Profile-exported FormBuilder schema. Shape is ConfigUISchema at the UI. */
|
|
19620
|
+
var ProfileSettingsSchemaBridge = unknown().nullable();
|
|
19621
|
+
var ProfileSettingsBagSchema = record(string(), unknown());
|
|
19538
19622
|
/**
|
|
19539
19623
|
* A live terminal session hosted by the provider addon. Output and input do
|
|
19540
19624
|
* NOT flow through the capability — they use the addon data plane
|
|
@@ -19564,7 +19648,14 @@ var TerminalSessionInfoSchema = object({
|
|
|
19564
19648
|
var TerminalProfileInfoSchema = object({
|
|
19565
19649
|
profileId: string(),
|
|
19566
19650
|
label: string(),
|
|
19567
|
-
description: string().optional()
|
|
19651
|
+
description: string().optional(),
|
|
19652
|
+
/** Spawn defaults the instance form copies on create. */
|
|
19653
|
+
executable: string().optional(),
|
|
19654
|
+
args: array(string()).readonly().optional(),
|
|
19655
|
+
cwd: string().optional(),
|
|
19656
|
+
environment: array(string()).readonly().optional(),
|
|
19657
|
+
/** ConfigUISchema for instance knobs, or null when the profile has none. */
|
|
19658
|
+
settingsSchema: ProfileSettingsSchemaBridge.optional()
|
|
19568
19659
|
});
|
|
19569
19660
|
/**
|
|
19570
19661
|
* A durable operator-created Terminal instance. Profiles are templates; only
|
|
@@ -19577,7 +19668,12 @@ var TerminalInstanceInfoSchema = object({
|
|
|
19577
19668
|
profileId: string(),
|
|
19578
19669
|
profileLabel: string(),
|
|
19579
19670
|
name: string(),
|
|
19580
|
-
enabled: boolean()
|
|
19671
|
+
enabled: boolean(),
|
|
19672
|
+
executable: string(),
|
|
19673
|
+
args: array(string()).readonly(),
|
|
19674
|
+
cwd: string(),
|
|
19675
|
+
environment: array(string()).readonly(),
|
|
19676
|
+
profileSettings: ProfileSettingsBagSchema
|
|
19581
19677
|
});
|
|
19582
19678
|
var TerminalLegacyCameraSchema = object({
|
|
19583
19679
|
stableId: string(),
|
|
@@ -19607,7 +19703,23 @@ var TerminalOutputBatchSchema = object({
|
|
|
19607
19703
|
method(_void(), array(TerminalProfileInfoSchema).readonly(), { auth: "admin" }), method(_void(), array(TerminalInstanceInfoSchema).readonly(), { auth: "admin" }), method(object({
|
|
19608
19704
|
targetNodeId: string().min(1),
|
|
19609
19705
|
profileId: string().min(1),
|
|
19610
|
-
name: string().trim().min(1).max(160).optional()
|
|
19706
|
+
name: string().trim().min(1).max(160).optional(),
|
|
19707
|
+
executable: string().max(1024).optional(),
|
|
19708
|
+
args: array(string().max(2048)).max(64).optional(),
|
|
19709
|
+
cwd: string().max(1024).optional(),
|
|
19710
|
+
environment: array(string().max(4096)).max(64).optional(),
|
|
19711
|
+
profileSettings: ProfileSettingsBagSchema.optional()
|
|
19712
|
+
}), TerminalInstanceInfoSchema, {
|
|
19713
|
+
kind: "mutation",
|
|
19714
|
+
auth: "admin"
|
|
19715
|
+
}), method(object({
|
|
19716
|
+
instanceId: string().min(1),
|
|
19717
|
+
name: string().trim().min(1).max(160).optional(),
|
|
19718
|
+
executable: string().max(1024).optional(),
|
|
19719
|
+
args: array(string().max(2048)).max(64).optional(),
|
|
19720
|
+
cwd: string().max(1024).optional(),
|
|
19721
|
+
environment: array(string().max(4096)).max(64).optional(),
|
|
19722
|
+
profileSettings: ProfileSettingsBagSchema.optional()
|
|
19611
19723
|
}), TerminalInstanceInfoSchema, {
|
|
19612
19724
|
kind: "mutation",
|
|
19613
19725
|
auth: "admin"
|
|
@@ -19629,7 +19741,11 @@ method(_void(), array(TerminalProfileInfoSchema).readonly(), { auth: "admin" }),
|
|
|
19629
19741
|
}), method(_void(), array(TerminalSessionInfoSchema).readonly(), { auth: "admin" }), method(object({
|
|
19630
19742
|
profileId: string(),
|
|
19631
19743
|
cols: number().int().positive(),
|
|
19632
|
-
rows: number().int().positive()
|
|
19744
|
+
rows: number().int().positive(),
|
|
19745
|
+
executable: string().max(1024).optional(),
|
|
19746
|
+
args: array(string().max(2048)).max(64).optional(),
|
|
19747
|
+
cwd: string().max(1024).optional(),
|
|
19748
|
+
environment: array(string().max(4096)).max(64).optional()
|
|
19633
19749
|
}), TerminalSessionInfoSchema, {
|
|
19634
19750
|
kind: "mutation",
|
|
19635
19751
|
auth: "admin"
|
|
@@ -22434,10 +22550,10 @@ DeviceType.LawnMower, method(object({ deviceId: number().int().nonnegative() }),
|
|
|
22434
22550
|
*
|
|
22435
22551
|
* • The SDK (mobile / web client) consumes `getConnectionEndpoints()`
|
|
22436
22552
|
* to receive an ordered list of candidate base URLs it should race
|
|
22437
|
-
* on connect — LAN IPv4 first (lowest latency
|
|
22438
|
-
* then public hostname (if a tunnel is
|
|
22439
|
-
* race them with short timeouts and stick with the
|
|
22440
|
-
* session.
|
|
22553
|
+
* on connect — LAN IPv4 and stable LAN IPv6 first (lowest latency
|
|
22554
|
+
* when on the same network), then public hostname (if a tunnel is
|
|
22555
|
+
* up). The SDK can race them with short timeouts and stick with the
|
|
22556
|
+
* winner for the session.
|
|
22441
22557
|
*
|
|
22442
22558
|
* Why hub-only: agents are not directly addressable by the operator's
|
|
22443
22559
|
* clients — they reverse-connect to the hub. Exposing their interfaces
|
|
@@ -22592,6 +22708,17 @@ var NotificationEndpointSchema = object({
|
|
|
22592
22708
|
/** What the ranking currently resolves to (null when nothing is reachable). */
|
|
22593
22709
|
resolved: string().nullable()
|
|
22594
22710
|
});
|
|
22711
|
+
/**
|
|
22712
|
+
* The URLs the SDK / viewer should race for API access. `baseUrls` empty =
|
|
22713
|
+
* AUTO (every LAN IPv4 + the public tunnel). `resolved` is what that choice
|
|
22714
|
+
* currently expands to, so the UI can show the effective set either way.
|
|
22715
|
+
*/
|
|
22716
|
+
var ViewerEndpointsSchema = object({
|
|
22717
|
+
/** The operator's explicit race set, or empty for AUTO. */
|
|
22718
|
+
baseUrls: array(string()).readonly(),
|
|
22719
|
+
/** What the ranking currently resolves to (may be empty if nothing is up). */
|
|
22720
|
+
resolved: array(string()).readonly()
|
|
22721
|
+
});
|
|
22595
22722
|
var AllowedAddressesSchema = object({
|
|
22596
22723
|
/**
|
|
22597
22724
|
* Allowlist of interface addresses operators have explicitly opted
|
|
@@ -22600,6 +22727,20 @@ var AllowedAddressesSchema = object({
|
|
|
22600
22727
|
* Network Addresses admin page and persisted by the addon.
|
|
22601
22728
|
*/
|
|
22602
22729
|
addresses: array(string()).readonly() });
|
|
22730
|
+
var TlsStatusSchema = object({
|
|
22731
|
+
mode: _enum([
|
|
22732
|
+
"generated",
|
|
22733
|
+
"uploaded",
|
|
22734
|
+
"disabled"
|
|
22735
|
+
]),
|
|
22736
|
+
leafFingerprintSha256: string().nullable(),
|
|
22737
|
+
caFingerprintSha256: string().nullable(),
|
|
22738
|
+
validTo: string().nullable(),
|
|
22739
|
+
sans: array(string()),
|
|
22740
|
+
caCertPem: string().nullable(),
|
|
22741
|
+
reissueError: string().nullable(),
|
|
22742
|
+
restartRequired: boolean()
|
|
22743
|
+
});
|
|
22603
22744
|
method(_void(), ListResultSchema), method(_void(), PreferredSchema), method(object({
|
|
22604
22745
|
/**
|
|
22605
22746
|
* LEGACY HINT — do not send from new code. Kept optional so clients
|
|
@@ -22609,17 +22750,31 @@ method(_void(), ListResultSchema), method(_void(), PreferredSchema), method(obje
|
|
|
22609
22750
|
*/
|
|
22610
22751
|
port: number().int().min(1).max(65535).optional(),
|
|
22611
22752
|
/** Include `http(s)://127.0.0.1:<port>` as the lowest-priority
|
|
22612
|
-
* candidate. Default `
|
|
22753
|
+
* candidate. Default `false` — loopback is not a client route. */
|
|
22613
22754
|
includeLoopback: boolean().optional(),
|
|
22614
|
-
/** Skip IPv6 entries.
|
|
22615
|
-
*
|
|
22755
|
+
/** Skip IPv6 entries. Default `false` — the palette includes stable
|
|
22756
|
+
* LAN IPv6 (ICE/WebRTC uses dual-stack regardless). Pass `true` to
|
|
22757
|
+
* hide them. The viewer HTTP/WS race is `getViewerEndpoints`. */
|
|
22616
22758
|
ipv4Only: boolean().optional(),
|
|
22617
22759
|
/** Scheme to emit for LAN/loopback URLs. Default `'http'`.
|
|
22618
22760
|
* Pass `'https'` when the caller is itself loaded over HTTPS
|
|
22619
22761
|
* to avoid mixed-content blocks in the browser. The public
|
|
22620
22762
|
* tunnel always emits `https://` regardless. */
|
|
22621
22763
|
scheme: _enum(["http", "https"]).optional()
|
|
22622
|
-
}), 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" })
|
|
22764
|
+
}), 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, {
|
|
22765
|
+
kind: "mutation",
|
|
22766
|
+
auth: "admin"
|
|
22767
|
+
}), method(object({
|
|
22768
|
+
certPem: string().min(1),
|
|
22769
|
+
keyPem: string().min(1),
|
|
22770
|
+
caPem: string().optional()
|
|
22771
|
+
}), TlsStatusSchema, {
|
|
22772
|
+
kind: "mutation",
|
|
22773
|
+
auth: "admin"
|
|
22774
|
+
}), method(_void(), object({ pem: string() })), method(_void(), TlsStatusSchema, {
|
|
22775
|
+
kind: "mutation",
|
|
22776
|
+
auth: "admin"
|
|
22777
|
+
});
|
|
22623
22778
|
object({
|
|
22624
22779
|
/** Lifecycle state of the lock. `jammed` means the motor reported
|
|
22625
22780
|
* failure to reach the target — operator intervention required. */
|
|
@@ -28382,6 +28537,12 @@ Object.freeze({
|
|
|
28382
28537
|
addonId: null,
|
|
28383
28538
|
access: "create"
|
|
28384
28539
|
},
|
|
28540
|
+
"localNetwork.downloadCa": {
|
|
28541
|
+
capName: "local-network",
|
|
28542
|
+
capScope: "system",
|
|
28543
|
+
addonId: null,
|
|
28544
|
+
access: "view"
|
|
28545
|
+
},
|
|
28385
28546
|
"localNetwork.getAllowedAddresses": {
|
|
28386
28547
|
capName: "local-network",
|
|
28387
28548
|
capScope: "system",
|
|
@@ -28406,18 +28567,42 @@ Object.freeze({
|
|
|
28406
28567
|
addonId: null,
|
|
28407
28568
|
access: "view"
|
|
28408
28569
|
},
|
|
28570
|
+
"localNetwork.getTlsStatus": {
|
|
28571
|
+
capName: "local-network",
|
|
28572
|
+
capScope: "system",
|
|
28573
|
+
addonId: null,
|
|
28574
|
+
access: "view"
|
|
28575
|
+
},
|
|
28576
|
+
"localNetwork.getViewerEndpoints": {
|
|
28577
|
+
capName: "local-network",
|
|
28578
|
+
capScope: "system",
|
|
28579
|
+
addonId: null,
|
|
28580
|
+
access: "view"
|
|
28581
|
+
},
|
|
28409
28582
|
"localNetwork.list": {
|
|
28410
28583
|
capName: "local-network",
|
|
28411
28584
|
capScope: "system",
|
|
28412
28585
|
addonId: null,
|
|
28413
28586
|
access: "view"
|
|
28414
28587
|
},
|
|
28588
|
+
"localNetwork.regenerateCertificate": {
|
|
28589
|
+
capName: "local-network",
|
|
28590
|
+
capScope: "system",
|
|
28591
|
+
addonId: null,
|
|
28592
|
+
access: "create"
|
|
28593
|
+
},
|
|
28415
28594
|
"localNetwork.resetAllowlistToBestMatch": {
|
|
28416
28595
|
capName: "local-network",
|
|
28417
28596
|
capScope: "system",
|
|
28418
28597
|
addonId: null,
|
|
28419
28598
|
access: "delete"
|
|
28420
28599
|
},
|
|
28600
|
+
"localNetwork.revertToGeneratedCertificate": {
|
|
28601
|
+
capName: "local-network",
|
|
28602
|
+
capScope: "system",
|
|
28603
|
+
addonId: null,
|
|
28604
|
+
access: "create"
|
|
28605
|
+
},
|
|
28421
28606
|
"localNetwork.setAllowedAddresses": {
|
|
28422
28607
|
capName: "local-network",
|
|
28423
28608
|
capScope: "system",
|
|
@@ -28430,6 +28615,18 @@ Object.freeze({
|
|
|
28430
28615
|
addonId: null,
|
|
28431
28616
|
access: "create"
|
|
28432
28617
|
},
|
|
28618
|
+
"localNetwork.setViewerEndpoints": {
|
|
28619
|
+
capName: "local-network",
|
|
28620
|
+
capScope: "system",
|
|
28621
|
+
addonId: null,
|
|
28622
|
+
access: "create"
|
|
28623
|
+
},
|
|
28624
|
+
"localNetwork.uploadCertificate": {
|
|
28625
|
+
capName: "local-network",
|
|
28626
|
+
capScope: "system",
|
|
28627
|
+
addonId: null,
|
|
28628
|
+
access: "create"
|
|
28629
|
+
},
|
|
28433
28630
|
"lockControl.lock": {
|
|
28434
28631
|
capName: "lock-control",
|
|
28435
28632
|
capScope: "device",
|
|
@@ -31310,6 +31507,12 @@ Object.freeze({
|
|
|
31310
31507
|
addonId: null,
|
|
31311
31508
|
access: "create"
|
|
31312
31509
|
},
|
|
31510
|
+
"terminalSession.updateInstance": {
|
|
31511
|
+
capName: "terminal-session",
|
|
31512
|
+
capScope: "system",
|
|
31513
|
+
addonId: null,
|
|
31514
|
+
access: "create"
|
|
31515
|
+
},
|
|
31313
31516
|
"terminalSession.writeInput": {
|
|
31314
31517
|
capName: "terminal-session",
|
|
31315
31518
|
capScope: "system",
|
|
@@ -33797,6 +34000,35 @@ Object.freeze(Object.fromEntries([{
|
|
|
33797
34000
|
}]
|
|
33798
34001
|
}].map((s) => [s.stepId, s.defaultModelId])));
|
|
33799
34002
|
string().min(1);
|
|
34003
|
+
var CLUSTER_STEP_SETTING_FIELDS = [{
|
|
34004
|
+
stepId: "face-embedding",
|
|
34005
|
+
key: "minLandmarkFaceSize",
|
|
34006
|
+
label: "Min face size for recognition (detection px)",
|
|
34007
|
+
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.",
|
|
34008
|
+
type: "slider",
|
|
34009
|
+
min: 0,
|
|
34010
|
+
max: 64,
|
|
34011
|
+
step: 2,
|
|
34012
|
+
default: 24
|
|
34013
|
+
}];
|
|
34014
|
+
function clusterStepSettingKey(stepId, fieldKey) {
|
|
34015
|
+
return `clusterStepSetting:${stepId}:${fieldKey}`;
|
|
34016
|
+
}
|
|
34017
|
+
var ClusterSettingNumberSchema = number().finite();
|
|
34018
|
+
function readClusterStepSettings(config) {
|
|
34019
|
+
const out = {};
|
|
34020
|
+
for (const field of CLUSTER_STEP_SETTING_FIELDS) {
|
|
34021
|
+
const parsed = ClusterSettingNumberSchema.safeParse(config[clusterStepSettingKey(field.stepId, field.key)]);
|
|
34022
|
+
const value = parsed.success ? parsed.data : field.default;
|
|
34023
|
+
const existing = out[field.stepId] ?? {};
|
|
34024
|
+
out[field.stepId] = {
|
|
34025
|
+
...existing,
|
|
34026
|
+
[field.key]: value
|
|
34027
|
+
};
|
|
34028
|
+
}
|
|
34029
|
+
return out;
|
|
34030
|
+
}
|
|
34031
|
+
readClusterStepSettings({});
|
|
33800
34032
|
object({
|
|
33801
34033
|
/**
|
|
33802
34034
|
* Fraction of the box's own size added on EACH side before cutting.
|
|
@@ -21,7 +21,7 @@ var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__ge
|
|
|
21
21
|
enumerable: true
|
|
22
22
|
}) : target, mod));
|
|
23
23
|
//#endregion
|
|
24
|
-
const require_dist = require("../dist-
|
|
24
|
+
const require_dist = require("../dist-CbCaiEpw.js");
|
|
25
25
|
let node_crypto = require("node:crypto");
|
|
26
26
|
let node_path = require("node:path");
|
|
27
27
|
node_path = __toESM(node_path);
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { a as BaseAddon, c as boolean, d as number, f as object, m as EventCategory, n as defineCustomActions, o as _enum, p as string, r as networkAccessCapability, s as array, t as customAction, u as literal } from "../dist-
|
|
1
|
+
import { a as BaseAddon, c as boolean, d as number, f as object, m as EventCategory, n as defineCustomActions, o as _enum, p as string, r as networkAccessCapability, s as array, t as customAction, u as literal } from "../dist-DnohT9Id.mjs";
|
|
2
2
|
import { randomUUID } from "node:crypto";
|
|
3
3
|
import * as path from "node:path";
|
|
4
4
|
import { spawn } from "node:child_process";
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
|
|
2
|
-
const require_dist = require("../dist-
|
|
2
|
+
const require_dist = require("../dist-CbCaiEpw.js");
|
|
3
3
|
//#region src/turn/cloudflare-turn.ts
|
|
4
4
|
/**
|
|
5
5
|
* Cloudflare returns ICE servers in several flavours depending on which
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { a as BaseAddon, c as boolean, d as number, f as object, i as turnProviderCapability, l as discriminatedUnion, n as defineCustomActions, p as string, t as customAction, u as literal } from "../dist-
|
|
1
|
+
import { a as BaseAddon, c as boolean, d as number, f as object, i as turnProviderCapability, l as discriminatedUnion, n as defineCustomActions, p as string, t as customAction, u as literal } from "../dist-DnohT9Id.mjs";
|
|
2
2
|
//#region src/turn/cloudflare-turn.ts
|
|
3
3
|
/**
|
|
4
4
|
* Cloudflare returns ICE servers in several flavours depending on which
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@camstack/addon-cloudflare",
|
|
3
|
-
"version": "1.2.
|
|
3
|
+
"version": "1.2.26",
|
|
4
4
|
"description": "Cloudflare bundle — Tunnel (network-access) + TURN relay (turn-provider). Multi-entry npm package shipping 2 addons under a single bundle.",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"camstack",
|