@camstack/addon-smtp-nodemailer 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/smtp.addon.js +248 -16
- package/dist/smtp.addon.mjs +248 -16
- package/package.json +1 -1
package/dist/smtp.addon.js
CHANGED
|
@@ -8041,6 +8041,15 @@ var LabelDefinitionSchema = object({
|
|
|
8041
8041
|
description: string().optional(),
|
|
8042
8042
|
icon: string().optional()
|
|
8043
8043
|
});
|
|
8044
|
+
var ClassMapDefinitionSchema = object({
|
|
8045
|
+
mapping: record(string(), _enum([
|
|
8046
|
+
"person",
|
|
8047
|
+
"vehicle",
|
|
8048
|
+
"animal",
|
|
8049
|
+
"package"
|
|
8050
|
+
])),
|
|
8051
|
+
preserveOriginal: boolean()
|
|
8052
|
+
});
|
|
8044
8053
|
var MODEL_FORMATS = [
|
|
8045
8054
|
"onnx",
|
|
8046
8055
|
"coreml",
|
|
@@ -8219,7 +8228,13 @@ var ModelCatalogEntrySchema = object({
|
|
|
8219
8228
|
* `id` stays the source of truth for resolution/download/persistence; grouping
|
|
8220
8229
|
* is a presentation overlay resolved back to an `id`.
|
|
8221
8230
|
*/
|
|
8222
|
-
group: ModelVariantGroupSchema.optional()
|
|
8231
|
+
group: ModelVariantGroupSchema.optional(),
|
|
8232
|
+
/**
|
|
8233
|
+
* Per-MODEL class map override. Absent ⇒ the step's `StepDefinition.classMap`
|
|
8234
|
+
* applies (Frigate / COCO public catalog). Set on a custom model whose raw
|
|
8235
|
+
* labels already ARE the CamStack macros (Scrypted identity map).
|
|
8236
|
+
*/
|
|
8237
|
+
classMap: ClassMapDefinitionSchema.optional()
|
|
8223
8238
|
});
|
|
8224
8239
|
var ConvertTargetSchema = discriminatedUnion("format", [object({
|
|
8225
8240
|
format: literal("openvino"),
|
|
@@ -8248,7 +8263,8 @@ var ModelConvertMetadataSchema = object({
|
|
|
8248
8263
|
"ocr",
|
|
8249
8264
|
"segmentation"
|
|
8250
8265
|
]),
|
|
8251
|
-
faceAlignment: boolean().optional()
|
|
8266
|
+
faceAlignment: boolean().optional(),
|
|
8267
|
+
classMap: ClassMapDefinitionSchema.optional()
|
|
8252
8268
|
});
|
|
8253
8269
|
var ConvertResultSchema = object({
|
|
8254
8270
|
entry: ModelCatalogEntrySchema,
|
|
@@ -17239,6 +17255,33 @@ var NativeCropRefSchema = object({
|
|
|
17239
17255
|
h: number()
|
|
17240
17256
|
})
|
|
17241
17257
|
});
|
|
17258
|
+
object({
|
|
17259
|
+
crop: object({
|
|
17260
|
+
left: number(),
|
|
17261
|
+
top: number(),
|
|
17262
|
+
width: number().positive(),
|
|
17263
|
+
height: number().positive()
|
|
17264
|
+
}).optional(),
|
|
17265
|
+
content: object({
|
|
17266
|
+
width: number().int().positive(),
|
|
17267
|
+
height: number().int().positive()
|
|
17268
|
+
}),
|
|
17269
|
+
fit: _enum(["stretch", "contain"]),
|
|
17270
|
+
format: _enum([
|
|
17271
|
+
"rgb",
|
|
17272
|
+
"gray",
|
|
17273
|
+
"jpeg"
|
|
17274
|
+
])
|
|
17275
|
+
});
|
|
17276
|
+
var FrameRefSchema = object({
|
|
17277
|
+
registryId: string().min(1),
|
|
17278
|
+
id: string().min(1),
|
|
17279
|
+
width: number().int().positive(),
|
|
17280
|
+
height: number().int().positive(),
|
|
17281
|
+
format: _enum(["rgb", "gray"]),
|
|
17282
|
+
timestamp: number(),
|
|
17283
|
+
capturedAt: number().optional()
|
|
17284
|
+
});
|
|
17242
17285
|
var ModelFormatSchema$1 = _enum([
|
|
17243
17286
|
"onnx",
|
|
17244
17287
|
"coreml",
|
|
@@ -17483,6 +17526,12 @@ method(_void(), array(PipelineEngineChoiceSchema)), method(_void(), PipelineEngi
|
|
|
17483
17526
|
steps: array(PipelineStepInputSchema).min(1),
|
|
17484
17527
|
frame: FrameInputSchema.optional(),
|
|
17485
17528
|
/**
|
|
17529
|
+
* Process-local lazy frame. Valid only when caller and provider resolve
|
|
17530
|
+
* in the same execution-group process; split/cross-node callers use
|
|
17531
|
+
* `frame`/`image` inline compatibility instead.
|
|
17532
|
+
*/
|
|
17533
|
+
frameRef: FrameRefSchema.optional(),
|
|
17534
|
+
/**
|
|
17486
17535
|
* CB5 shm passthrough — a `FrameHandle` naming the same ring slot
|
|
17487
17536
|
* the decoded pixels live in. One more member of the one-of
|
|
17488
17537
|
* frame/frameHandle/image/imageBase64/referenceImage group.
|
|
@@ -17738,7 +17787,10 @@ var NativeCropResultSchema = object({
|
|
|
17738
17787
|
* Which source served this crop, so a quality-sensitive consumer (the native
|
|
17739
17788
|
* `keyFrame`) can reject a degraded fallback:
|
|
17740
17789
|
* - `native` — cut from the decode worker's retained NATIVE surface (the
|
|
17741
|
-
* quality path).
|
|
17790
|
+
* quality path). A subject-tile serve is also native-resolution and stays
|
|
17791
|
+
* `native` here: the public enum cannot name `tile` without a breaking cap
|
|
17792
|
+
* change. Runner telemetry distinguishes lease vs tile via `source` on the
|
|
17793
|
+
* internal crop result (`nativeHits` vs `tileHits`).
|
|
17742
17794
|
* - `ram-fullframe` — the native surface MISSED but the request was full-frame,
|
|
17743
17795
|
* so the ≤640 RAM `RetainedFrameStore` served it (honest lower-res; legit for
|
|
17744
17796
|
* the blank-frame guard / 640-snapshot resolve, NOT for the clean keyFrame).
|
|
@@ -18229,12 +18281,41 @@ var RunnerLocalLoadSchema = object({
|
|
|
18229
18281
|
* legacy `OrchestratorMetricsSchema` shape so existing dashboards keep
|
|
18230
18282
|
* working unchanged when they switch to reading from the runner cap.
|
|
18231
18283
|
*/
|
|
18284
|
+
var FrameLazyCountersSchema = object({
|
|
18285
|
+
framesDecoded: number(),
|
|
18286
|
+
framesAdmitted: number(),
|
|
18287
|
+
framesDroppedPixelFree: number(),
|
|
18288
|
+
viewsMaterialized: number(),
|
|
18289
|
+
viewsSkipped: number(),
|
|
18290
|
+
workerToRunnerBytes: number(),
|
|
18291
|
+
runnerToPoolRawBytes: number(),
|
|
18292
|
+
runnerToPoolJpegBytes: number(),
|
|
18293
|
+
onDemandFullFrameRequests: number(),
|
|
18294
|
+
onDemandCropRequests: number(),
|
|
18295
|
+
nativeHits: number(),
|
|
18296
|
+
nativeMisses: number(),
|
|
18297
|
+
tileHits: number(),
|
|
18298
|
+
tileMisses: number(),
|
|
18299
|
+
fallbackHits: number(),
|
|
18300
|
+
fallbackMisses: number(),
|
|
18301
|
+
retainedWritesAvoided: number(),
|
|
18302
|
+
residentRefs: number(),
|
|
18303
|
+
residentBytes: number(),
|
|
18304
|
+
releases: number(),
|
|
18305
|
+
evictions: number(),
|
|
18306
|
+
staleMisses: number()
|
|
18307
|
+
});
|
|
18308
|
+
var FrameLazyMetricsSchema = object({
|
|
18309
|
+
node: FrameLazyCountersSchema,
|
|
18310
|
+
cameras: array(FrameLazyCountersSchema.extend({ deviceId: number() }))
|
|
18311
|
+
});
|
|
18232
18312
|
var RunnerLocalMetricsSchema = object({
|
|
18233
18313
|
nodeId: string(),
|
|
18234
18314
|
activeCameras: number(),
|
|
18235
18315
|
throttledCameras: number(),
|
|
18236
18316
|
avgInferenceTimeMs: number(),
|
|
18237
|
-
queueDepth: number()
|
|
18317
|
+
queueDepth: number(),
|
|
18318
|
+
frameLazy: FrameLazyMetricsSchema.optional()
|
|
18238
18319
|
});
|
|
18239
18320
|
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({
|
|
18240
18321
|
handle: FrameHandleSchema,
|
|
@@ -19547,6 +19628,9 @@ method(_void(), ProviderInfoSchema), method(object({ config: record(string(), un
|
|
|
19547
19628
|
location: StorageLocationSchema,
|
|
19548
19629
|
relativePath: string()
|
|
19549
19630
|
}), _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" });
|
|
19631
|
+
/** Profile-exported FormBuilder schema. Shape is ConfigUISchema at the UI. */
|
|
19632
|
+
var ProfileSettingsSchemaBridge = unknown().nullable();
|
|
19633
|
+
var ProfileSettingsBagSchema = record(string(), unknown());
|
|
19550
19634
|
/**
|
|
19551
19635
|
* A live terminal session hosted by the provider addon. Output and input do
|
|
19552
19636
|
* NOT flow through the capability — they use the addon data plane
|
|
@@ -19576,7 +19660,14 @@ var TerminalSessionInfoSchema = object({
|
|
|
19576
19660
|
var TerminalProfileInfoSchema = object({
|
|
19577
19661
|
profileId: string(),
|
|
19578
19662
|
label: string(),
|
|
19579
|
-
description: string().optional()
|
|
19663
|
+
description: string().optional(),
|
|
19664
|
+
/** Spawn defaults the instance form copies on create. */
|
|
19665
|
+
executable: string().optional(),
|
|
19666
|
+
args: array(string()).readonly().optional(),
|
|
19667
|
+
cwd: string().optional(),
|
|
19668
|
+
environment: array(string()).readonly().optional(),
|
|
19669
|
+
/** ConfigUISchema for instance knobs, or null when the profile has none. */
|
|
19670
|
+
settingsSchema: ProfileSettingsSchemaBridge.optional()
|
|
19580
19671
|
});
|
|
19581
19672
|
/**
|
|
19582
19673
|
* A durable operator-created Terminal instance. Profiles are templates; only
|
|
@@ -19589,7 +19680,12 @@ var TerminalInstanceInfoSchema = object({
|
|
|
19589
19680
|
profileId: string(),
|
|
19590
19681
|
profileLabel: string(),
|
|
19591
19682
|
name: string(),
|
|
19592
|
-
enabled: boolean()
|
|
19683
|
+
enabled: boolean(),
|
|
19684
|
+
executable: string(),
|
|
19685
|
+
args: array(string()).readonly(),
|
|
19686
|
+
cwd: string(),
|
|
19687
|
+
environment: array(string()).readonly(),
|
|
19688
|
+
profileSettings: ProfileSettingsBagSchema
|
|
19593
19689
|
});
|
|
19594
19690
|
var TerminalLegacyCameraSchema = object({
|
|
19595
19691
|
stableId: string(),
|
|
@@ -19619,7 +19715,23 @@ var TerminalOutputBatchSchema = object({
|
|
|
19619
19715
|
method(_void(), array(TerminalProfileInfoSchema).readonly(), { auth: "admin" }), method(_void(), array(TerminalInstanceInfoSchema).readonly(), { auth: "admin" }), method(object({
|
|
19620
19716
|
targetNodeId: string().min(1),
|
|
19621
19717
|
profileId: string().min(1),
|
|
19622
|
-
name: string().trim().min(1).max(160).optional()
|
|
19718
|
+
name: string().trim().min(1).max(160).optional(),
|
|
19719
|
+
executable: string().max(1024).optional(),
|
|
19720
|
+
args: array(string().max(2048)).max(64).optional(),
|
|
19721
|
+
cwd: string().max(1024).optional(),
|
|
19722
|
+
environment: array(string().max(4096)).max(64).optional(),
|
|
19723
|
+
profileSettings: ProfileSettingsBagSchema.optional()
|
|
19724
|
+
}), TerminalInstanceInfoSchema, {
|
|
19725
|
+
kind: "mutation",
|
|
19726
|
+
auth: "admin"
|
|
19727
|
+
}), method(object({
|
|
19728
|
+
instanceId: string().min(1),
|
|
19729
|
+
name: string().trim().min(1).max(160).optional(),
|
|
19730
|
+
executable: string().max(1024).optional(),
|
|
19731
|
+
args: array(string().max(2048)).max(64).optional(),
|
|
19732
|
+
cwd: string().max(1024).optional(),
|
|
19733
|
+
environment: array(string().max(4096)).max(64).optional(),
|
|
19734
|
+
profileSettings: ProfileSettingsBagSchema.optional()
|
|
19623
19735
|
}), TerminalInstanceInfoSchema, {
|
|
19624
19736
|
kind: "mutation",
|
|
19625
19737
|
auth: "admin"
|
|
@@ -19641,7 +19753,11 @@ method(_void(), array(TerminalProfileInfoSchema).readonly(), { auth: "admin" }),
|
|
|
19641
19753
|
}), method(_void(), array(TerminalSessionInfoSchema).readonly(), { auth: "admin" }), method(object({
|
|
19642
19754
|
profileId: string(),
|
|
19643
19755
|
cols: number().int().positive(),
|
|
19644
|
-
rows: number().int().positive()
|
|
19756
|
+
rows: number().int().positive(),
|
|
19757
|
+
executable: string().max(1024).optional(),
|
|
19758
|
+
args: array(string().max(2048)).max(64).optional(),
|
|
19759
|
+
cwd: string().max(1024).optional(),
|
|
19760
|
+
environment: array(string().max(4096)).max(64).optional()
|
|
19645
19761
|
}), TerminalSessionInfoSchema, {
|
|
19646
19762
|
kind: "mutation",
|
|
19647
19763
|
auth: "admin"
|
|
@@ -22423,10 +22539,10 @@ DeviceType.LawnMower, method(object({ deviceId: number().int().nonnegative() }),
|
|
|
22423
22539
|
*
|
|
22424
22540
|
* • The SDK (mobile / web client) consumes `getConnectionEndpoints()`
|
|
22425
22541
|
* to receive an ordered list of candidate base URLs it should race
|
|
22426
|
-
* on connect — LAN IPv4 first (lowest latency
|
|
22427
|
-
* then public hostname (if a tunnel is
|
|
22428
|
-
* race them with short timeouts and stick with the
|
|
22429
|
-
* session.
|
|
22542
|
+
* on connect — LAN IPv4 and stable LAN IPv6 first (lowest latency
|
|
22543
|
+
* when on the same network), then public hostname (if a tunnel is
|
|
22544
|
+
* up). The SDK can race them with short timeouts and stick with the
|
|
22545
|
+
* winner for the session.
|
|
22430
22546
|
*
|
|
22431
22547
|
* Why hub-only: agents are not directly addressable by the operator's
|
|
22432
22548
|
* clients — they reverse-connect to the hub. Exposing their interfaces
|
|
@@ -22581,6 +22697,17 @@ var NotificationEndpointSchema = object({
|
|
|
22581
22697
|
/** What the ranking currently resolves to (null when nothing is reachable). */
|
|
22582
22698
|
resolved: string().nullable()
|
|
22583
22699
|
});
|
|
22700
|
+
/**
|
|
22701
|
+
* The URLs the SDK / viewer should race for API access. `baseUrls` empty =
|
|
22702
|
+
* AUTO (every LAN IPv4 + the public tunnel). `resolved` is what that choice
|
|
22703
|
+
* currently expands to, so the UI can show the effective set either way.
|
|
22704
|
+
*/
|
|
22705
|
+
var ViewerEndpointsSchema = object({
|
|
22706
|
+
/** The operator's explicit race set, or empty for AUTO. */
|
|
22707
|
+
baseUrls: array(string()).readonly(),
|
|
22708
|
+
/** What the ranking currently resolves to (may be empty if nothing is up). */
|
|
22709
|
+
resolved: array(string()).readonly()
|
|
22710
|
+
});
|
|
22584
22711
|
var AllowedAddressesSchema = object({
|
|
22585
22712
|
/**
|
|
22586
22713
|
* Allowlist of interface addresses operators have explicitly opted
|
|
@@ -22589,6 +22716,20 @@ var AllowedAddressesSchema = object({
|
|
|
22589
22716
|
* Network Addresses admin page and persisted by the addon.
|
|
22590
22717
|
*/
|
|
22591
22718
|
addresses: array(string()).readonly() });
|
|
22719
|
+
var TlsStatusSchema = object({
|
|
22720
|
+
mode: _enum([
|
|
22721
|
+
"generated",
|
|
22722
|
+
"uploaded",
|
|
22723
|
+
"disabled"
|
|
22724
|
+
]),
|
|
22725
|
+
leafFingerprintSha256: string().nullable(),
|
|
22726
|
+
caFingerprintSha256: string().nullable(),
|
|
22727
|
+
validTo: string().nullable(),
|
|
22728
|
+
sans: array(string()),
|
|
22729
|
+
caCertPem: string().nullable(),
|
|
22730
|
+
reissueError: string().nullable(),
|
|
22731
|
+
restartRequired: boolean()
|
|
22732
|
+
});
|
|
22592
22733
|
method(_void(), ListResultSchema), method(_void(), PreferredSchema), method(object({
|
|
22593
22734
|
/**
|
|
22594
22735
|
* LEGACY HINT — do not send from new code. Kept optional so clients
|
|
@@ -22598,17 +22739,31 @@ method(_void(), ListResultSchema), method(_void(), PreferredSchema), method(obje
|
|
|
22598
22739
|
*/
|
|
22599
22740
|
port: number().int().min(1).max(65535).optional(),
|
|
22600
22741
|
/** Include `http(s)://127.0.0.1:<port>` as the lowest-priority
|
|
22601
|
-
* candidate. Default `
|
|
22742
|
+
* candidate. Default `false` — loopback is not a client route. */
|
|
22602
22743
|
includeLoopback: boolean().optional(),
|
|
22603
|
-
/** Skip IPv6 entries.
|
|
22604
|
-
*
|
|
22744
|
+
/** Skip IPv6 entries. Default `false` — the palette includes stable
|
|
22745
|
+
* LAN IPv6 (ICE/WebRTC uses dual-stack regardless). Pass `true` to
|
|
22746
|
+
* hide them. The viewer HTTP/WS race is `getViewerEndpoints`. */
|
|
22605
22747
|
ipv4Only: boolean().optional(),
|
|
22606
22748
|
/** Scheme to emit for LAN/loopback URLs. Default `'http'`.
|
|
22607
22749
|
* Pass `'https'` when the caller is itself loaded over HTTPS
|
|
22608
22750
|
* to avoid mixed-content blocks in the browser. The public
|
|
22609
22751
|
* tunnel always emits `https://` regardless. */
|
|
22610
22752
|
scheme: _enum(["http", "https"]).optional()
|
|
22611
|
-
}), 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" })
|
|
22753
|
+
}), 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, {
|
|
22754
|
+
kind: "mutation",
|
|
22755
|
+
auth: "admin"
|
|
22756
|
+
}), method(object({
|
|
22757
|
+
certPem: string().min(1),
|
|
22758
|
+
keyPem: string().min(1),
|
|
22759
|
+
caPem: string().optional()
|
|
22760
|
+
}), TlsStatusSchema, {
|
|
22761
|
+
kind: "mutation",
|
|
22762
|
+
auth: "admin"
|
|
22763
|
+
}), method(_void(), object({ pem: string() })), method(_void(), TlsStatusSchema, {
|
|
22764
|
+
kind: "mutation",
|
|
22765
|
+
auth: "admin"
|
|
22766
|
+
});
|
|
22612
22767
|
object({
|
|
22613
22768
|
/** Lifecycle state of the lock. `jammed` means the motor reported
|
|
22614
22769
|
* failure to reach the target — operator intervention required. */
|
|
@@ -28371,6 +28526,12 @@ Object.freeze({
|
|
|
28371
28526
|
addonId: null,
|
|
28372
28527
|
access: "create"
|
|
28373
28528
|
},
|
|
28529
|
+
"localNetwork.downloadCa": {
|
|
28530
|
+
capName: "local-network",
|
|
28531
|
+
capScope: "system",
|
|
28532
|
+
addonId: null,
|
|
28533
|
+
access: "view"
|
|
28534
|
+
},
|
|
28374
28535
|
"localNetwork.getAllowedAddresses": {
|
|
28375
28536
|
capName: "local-network",
|
|
28376
28537
|
capScope: "system",
|
|
@@ -28395,18 +28556,42 @@ Object.freeze({
|
|
|
28395
28556
|
addonId: null,
|
|
28396
28557
|
access: "view"
|
|
28397
28558
|
},
|
|
28559
|
+
"localNetwork.getTlsStatus": {
|
|
28560
|
+
capName: "local-network",
|
|
28561
|
+
capScope: "system",
|
|
28562
|
+
addonId: null,
|
|
28563
|
+
access: "view"
|
|
28564
|
+
},
|
|
28565
|
+
"localNetwork.getViewerEndpoints": {
|
|
28566
|
+
capName: "local-network",
|
|
28567
|
+
capScope: "system",
|
|
28568
|
+
addonId: null,
|
|
28569
|
+
access: "view"
|
|
28570
|
+
},
|
|
28398
28571
|
"localNetwork.list": {
|
|
28399
28572
|
capName: "local-network",
|
|
28400
28573
|
capScope: "system",
|
|
28401
28574
|
addonId: null,
|
|
28402
28575
|
access: "view"
|
|
28403
28576
|
},
|
|
28577
|
+
"localNetwork.regenerateCertificate": {
|
|
28578
|
+
capName: "local-network",
|
|
28579
|
+
capScope: "system",
|
|
28580
|
+
addonId: null,
|
|
28581
|
+
access: "create"
|
|
28582
|
+
},
|
|
28404
28583
|
"localNetwork.resetAllowlistToBestMatch": {
|
|
28405
28584
|
capName: "local-network",
|
|
28406
28585
|
capScope: "system",
|
|
28407
28586
|
addonId: null,
|
|
28408
28587
|
access: "delete"
|
|
28409
28588
|
},
|
|
28589
|
+
"localNetwork.revertToGeneratedCertificate": {
|
|
28590
|
+
capName: "local-network",
|
|
28591
|
+
capScope: "system",
|
|
28592
|
+
addonId: null,
|
|
28593
|
+
access: "create"
|
|
28594
|
+
},
|
|
28410
28595
|
"localNetwork.setAllowedAddresses": {
|
|
28411
28596
|
capName: "local-network",
|
|
28412
28597
|
capScope: "system",
|
|
@@ -28419,6 +28604,18 @@ Object.freeze({
|
|
|
28419
28604
|
addonId: null,
|
|
28420
28605
|
access: "create"
|
|
28421
28606
|
},
|
|
28607
|
+
"localNetwork.setViewerEndpoints": {
|
|
28608
|
+
capName: "local-network",
|
|
28609
|
+
capScope: "system",
|
|
28610
|
+
addonId: null,
|
|
28611
|
+
access: "create"
|
|
28612
|
+
},
|
|
28613
|
+
"localNetwork.uploadCertificate": {
|
|
28614
|
+
capName: "local-network",
|
|
28615
|
+
capScope: "system",
|
|
28616
|
+
addonId: null,
|
|
28617
|
+
access: "create"
|
|
28618
|
+
},
|
|
28422
28619
|
"lockControl.lock": {
|
|
28423
28620
|
capName: "lock-control",
|
|
28424
28621
|
capScope: "device",
|
|
@@ -31299,6 +31496,12 @@ Object.freeze({
|
|
|
31299
31496
|
addonId: null,
|
|
31300
31497
|
access: "create"
|
|
31301
31498
|
},
|
|
31499
|
+
"terminalSession.updateInstance": {
|
|
31500
|
+
capName: "terminal-session",
|
|
31501
|
+
capScope: "system",
|
|
31502
|
+
addonId: null,
|
|
31503
|
+
access: "create"
|
|
31504
|
+
},
|
|
31302
31505
|
"terminalSession.writeInput": {
|
|
31303
31506
|
capName: "terminal-session",
|
|
31304
31507
|
capScope: "system",
|
|
@@ -33786,6 +33989,35 @@ Object.freeze(Object.fromEntries([{
|
|
|
33786
33989
|
}]
|
|
33787
33990
|
}].map((s) => [s.stepId, s.defaultModelId])));
|
|
33788
33991
|
string().min(1);
|
|
33992
|
+
var CLUSTER_STEP_SETTING_FIELDS = [{
|
|
33993
|
+
stepId: "face-embedding",
|
|
33994
|
+
key: "minLandmarkFaceSize",
|
|
33995
|
+
label: "Min face size for recognition (detection px)",
|
|
33996
|
+
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.",
|
|
33997
|
+
type: "slider",
|
|
33998
|
+
min: 0,
|
|
33999
|
+
max: 64,
|
|
34000
|
+
step: 2,
|
|
34001
|
+
default: 24
|
|
34002
|
+
}];
|
|
34003
|
+
function clusterStepSettingKey(stepId, fieldKey) {
|
|
34004
|
+
return `clusterStepSetting:${stepId}:${fieldKey}`;
|
|
34005
|
+
}
|
|
34006
|
+
var ClusterSettingNumberSchema = number().finite();
|
|
34007
|
+
function readClusterStepSettings(config) {
|
|
34008
|
+
const out = {};
|
|
34009
|
+
for (const field of CLUSTER_STEP_SETTING_FIELDS) {
|
|
34010
|
+
const parsed = ClusterSettingNumberSchema.safeParse(config[clusterStepSettingKey(field.stepId, field.key)]);
|
|
34011
|
+
const value = parsed.success ? parsed.data : field.default;
|
|
34012
|
+
const existing = out[field.stepId] ?? {};
|
|
34013
|
+
out[field.stepId] = {
|
|
34014
|
+
...existing,
|
|
34015
|
+
[field.key]: value
|
|
34016
|
+
};
|
|
34017
|
+
}
|
|
34018
|
+
return out;
|
|
34019
|
+
}
|
|
34020
|
+
readClusterStepSettings({});
|
|
33789
34021
|
object({
|
|
33790
34022
|
/**
|
|
33791
34023
|
* Fraction of the box's own size added on EACH side before cutting.
|
package/dist/smtp.addon.mjs
CHANGED
|
@@ -8039,6 +8039,15 @@ var LabelDefinitionSchema = object({
|
|
|
8039
8039
|
description: string().optional(),
|
|
8040
8040
|
icon: string().optional()
|
|
8041
8041
|
});
|
|
8042
|
+
var ClassMapDefinitionSchema = object({
|
|
8043
|
+
mapping: record(string(), _enum([
|
|
8044
|
+
"person",
|
|
8045
|
+
"vehicle",
|
|
8046
|
+
"animal",
|
|
8047
|
+
"package"
|
|
8048
|
+
])),
|
|
8049
|
+
preserveOriginal: boolean()
|
|
8050
|
+
});
|
|
8042
8051
|
var MODEL_FORMATS = [
|
|
8043
8052
|
"onnx",
|
|
8044
8053
|
"coreml",
|
|
@@ -8217,7 +8226,13 @@ var ModelCatalogEntrySchema = object({
|
|
|
8217
8226
|
* `id` stays the source of truth for resolution/download/persistence; grouping
|
|
8218
8227
|
* is a presentation overlay resolved back to an `id`.
|
|
8219
8228
|
*/
|
|
8220
|
-
group: ModelVariantGroupSchema.optional()
|
|
8229
|
+
group: ModelVariantGroupSchema.optional(),
|
|
8230
|
+
/**
|
|
8231
|
+
* Per-MODEL class map override. Absent ⇒ the step's `StepDefinition.classMap`
|
|
8232
|
+
* applies (Frigate / COCO public catalog). Set on a custom model whose raw
|
|
8233
|
+
* labels already ARE the CamStack macros (Scrypted identity map).
|
|
8234
|
+
*/
|
|
8235
|
+
classMap: ClassMapDefinitionSchema.optional()
|
|
8221
8236
|
});
|
|
8222
8237
|
var ConvertTargetSchema = discriminatedUnion("format", [object({
|
|
8223
8238
|
format: literal("openvino"),
|
|
@@ -8246,7 +8261,8 @@ var ModelConvertMetadataSchema = object({
|
|
|
8246
8261
|
"ocr",
|
|
8247
8262
|
"segmentation"
|
|
8248
8263
|
]),
|
|
8249
|
-
faceAlignment: boolean().optional()
|
|
8264
|
+
faceAlignment: boolean().optional(),
|
|
8265
|
+
classMap: ClassMapDefinitionSchema.optional()
|
|
8250
8266
|
});
|
|
8251
8267
|
var ConvertResultSchema = object({
|
|
8252
8268
|
entry: ModelCatalogEntrySchema,
|
|
@@ -17237,6 +17253,33 @@ var NativeCropRefSchema = object({
|
|
|
17237
17253
|
h: number()
|
|
17238
17254
|
})
|
|
17239
17255
|
});
|
|
17256
|
+
object({
|
|
17257
|
+
crop: object({
|
|
17258
|
+
left: number(),
|
|
17259
|
+
top: number(),
|
|
17260
|
+
width: number().positive(),
|
|
17261
|
+
height: number().positive()
|
|
17262
|
+
}).optional(),
|
|
17263
|
+
content: object({
|
|
17264
|
+
width: number().int().positive(),
|
|
17265
|
+
height: number().int().positive()
|
|
17266
|
+
}),
|
|
17267
|
+
fit: _enum(["stretch", "contain"]),
|
|
17268
|
+
format: _enum([
|
|
17269
|
+
"rgb",
|
|
17270
|
+
"gray",
|
|
17271
|
+
"jpeg"
|
|
17272
|
+
])
|
|
17273
|
+
});
|
|
17274
|
+
var FrameRefSchema = object({
|
|
17275
|
+
registryId: string().min(1),
|
|
17276
|
+
id: string().min(1),
|
|
17277
|
+
width: number().int().positive(),
|
|
17278
|
+
height: number().int().positive(),
|
|
17279
|
+
format: _enum(["rgb", "gray"]),
|
|
17280
|
+
timestamp: number(),
|
|
17281
|
+
capturedAt: number().optional()
|
|
17282
|
+
});
|
|
17240
17283
|
var ModelFormatSchema$1 = _enum([
|
|
17241
17284
|
"onnx",
|
|
17242
17285
|
"coreml",
|
|
@@ -17481,6 +17524,12 @@ method(_void(), array(PipelineEngineChoiceSchema)), method(_void(), PipelineEngi
|
|
|
17481
17524
|
steps: array(PipelineStepInputSchema).min(1),
|
|
17482
17525
|
frame: FrameInputSchema.optional(),
|
|
17483
17526
|
/**
|
|
17527
|
+
* Process-local lazy frame. Valid only when caller and provider resolve
|
|
17528
|
+
* in the same execution-group process; split/cross-node callers use
|
|
17529
|
+
* `frame`/`image` inline compatibility instead.
|
|
17530
|
+
*/
|
|
17531
|
+
frameRef: FrameRefSchema.optional(),
|
|
17532
|
+
/**
|
|
17484
17533
|
* CB5 shm passthrough — a `FrameHandle` naming the same ring slot
|
|
17485
17534
|
* the decoded pixels live in. One more member of the one-of
|
|
17486
17535
|
* frame/frameHandle/image/imageBase64/referenceImage group.
|
|
@@ -17736,7 +17785,10 @@ var NativeCropResultSchema = object({
|
|
|
17736
17785
|
* Which source served this crop, so a quality-sensitive consumer (the native
|
|
17737
17786
|
* `keyFrame`) can reject a degraded fallback:
|
|
17738
17787
|
* - `native` — cut from the decode worker's retained NATIVE surface (the
|
|
17739
|
-
* quality path).
|
|
17788
|
+
* quality path). A subject-tile serve is also native-resolution and stays
|
|
17789
|
+
* `native` here: the public enum cannot name `tile` without a breaking cap
|
|
17790
|
+
* change. Runner telemetry distinguishes lease vs tile via `source` on the
|
|
17791
|
+
* internal crop result (`nativeHits` vs `tileHits`).
|
|
17740
17792
|
* - `ram-fullframe` — the native surface MISSED but the request was full-frame,
|
|
17741
17793
|
* so the ≤640 RAM `RetainedFrameStore` served it (honest lower-res; legit for
|
|
17742
17794
|
* the blank-frame guard / 640-snapshot resolve, NOT for the clean keyFrame).
|
|
@@ -18227,12 +18279,41 @@ var RunnerLocalLoadSchema = object({
|
|
|
18227
18279
|
* legacy `OrchestratorMetricsSchema` shape so existing dashboards keep
|
|
18228
18280
|
* working unchanged when they switch to reading from the runner cap.
|
|
18229
18281
|
*/
|
|
18282
|
+
var FrameLazyCountersSchema = object({
|
|
18283
|
+
framesDecoded: number(),
|
|
18284
|
+
framesAdmitted: number(),
|
|
18285
|
+
framesDroppedPixelFree: number(),
|
|
18286
|
+
viewsMaterialized: number(),
|
|
18287
|
+
viewsSkipped: number(),
|
|
18288
|
+
workerToRunnerBytes: number(),
|
|
18289
|
+
runnerToPoolRawBytes: number(),
|
|
18290
|
+
runnerToPoolJpegBytes: number(),
|
|
18291
|
+
onDemandFullFrameRequests: number(),
|
|
18292
|
+
onDemandCropRequests: number(),
|
|
18293
|
+
nativeHits: number(),
|
|
18294
|
+
nativeMisses: number(),
|
|
18295
|
+
tileHits: number(),
|
|
18296
|
+
tileMisses: number(),
|
|
18297
|
+
fallbackHits: number(),
|
|
18298
|
+
fallbackMisses: number(),
|
|
18299
|
+
retainedWritesAvoided: number(),
|
|
18300
|
+
residentRefs: number(),
|
|
18301
|
+
residentBytes: number(),
|
|
18302
|
+
releases: number(),
|
|
18303
|
+
evictions: number(),
|
|
18304
|
+
staleMisses: number()
|
|
18305
|
+
});
|
|
18306
|
+
var FrameLazyMetricsSchema = object({
|
|
18307
|
+
node: FrameLazyCountersSchema,
|
|
18308
|
+
cameras: array(FrameLazyCountersSchema.extend({ deviceId: number() }))
|
|
18309
|
+
});
|
|
18230
18310
|
var RunnerLocalMetricsSchema = object({
|
|
18231
18311
|
nodeId: string(),
|
|
18232
18312
|
activeCameras: number(),
|
|
18233
18313
|
throttledCameras: number(),
|
|
18234
18314
|
avgInferenceTimeMs: number(),
|
|
18235
|
-
queueDepth: number()
|
|
18315
|
+
queueDepth: number(),
|
|
18316
|
+
frameLazy: FrameLazyMetricsSchema.optional()
|
|
18236
18317
|
});
|
|
18237
18318
|
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({
|
|
18238
18319
|
handle: FrameHandleSchema,
|
|
@@ -19545,6 +19626,9 @@ method(_void(), ProviderInfoSchema), method(object({ config: record(string(), un
|
|
|
19545
19626
|
location: StorageLocationSchema,
|
|
19546
19627
|
relativePath: string()
|
|
19547
19628
|
}), _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" });
|
|
19629
|
+
/** Profile-exported FormBuilder schema. Shape is ConfigUISchema at the UI. */
|
|
19630
|
+
var ProfileSettingsSchemaBridge = unknown().nullable();
|
|
19631
|
+
var ProfileSettingsBagSchema = record(string(), unknown());
|
|
19548
19632
|
/**
|
|
19549
19633
|
* A live terminal session hosted by the provider addon. Output and input do
|
|
19550
19634
|
* NOT flow through the capability — they use the addon data plane
|
|
@@ -19574,7 +19658,14 @@ var TerminalSessionInfoSchema = object({
|
|
|
19574
19658
|
var TerminalProfileInfoSchema = object({
|
|
19575
19659
|
profileId: string(),
|
|
19576
19660
|
label: string(),
|
|
19577
|
-
description: string().optional()
|
|
19661
|
+
description: string().optional(),
|
|
19662
|
+
/** Spawn defaults the instance form copies on create. */
|
|
19663
|
+
executable: string().optional(),
|
|
19664
|
+
args: array(string()).readonly().optional(),
|
|
19665
|
+
cwd: string().optional(),
|
|
19666
|
+
environment: array(string()).readonly().optional(),
|
|
19667
|
+
/** ConfigUISchema for instance knobs, or null when the profile has none. */
|
|
19668
|
+
settingsSchema: ProfileSettingsSchemaBridge.optional()
|
|
19578
19669
|
});
|
|
19579
19670
|
/**
|
|
19580
19671
|
* A durable operator-created Terminal instance. Profiles are templates; only
|
|
@@ -19587,7 +19678,12 @@ var TerminalInstanceInfoSchema = object({
|
|
|
19587
19678
|
profileId: string(),
|
|
19588
19679
|
profileLabel: string(),
|
|
19589
19680
|
name: string(),
|
|
19590
|
-
enabled: boolean()
|
|
19681
|
+
enabled: boolean(),
|
|
19682
|
+
executable: string(),
|
|
19683
|
+
args: array(string()).readonly(),
|
|
19684
|
+
cwd: string(),
|
|
19685
|
+
environment: array(string()).readonly(),
|
|
19686
|
+
profileSettings: ProfileSettingsBagSchema
|
|
19591
19687
|
});
|
|
19592
19688
|
var TerminalLegacyCameraSchema = object({
|
|
19593
19689
|
stableId: string(),
|
|
@@ -19617,7 +19713,23 @@ var TerminalOutputBatchSchema = object({
|
|
|
19617
19713
|
method(_void(), array(TerminalProfileInfoSchema).readonly(), { auth: "admin" }), method(_void(), array(TerminalInstanceInfoSchema).readonly(), { auth: "admin" }), method(object({
|
|
19618
19714
|
targetNodeId: string().min(1),
|
|
19619
19715
|
profileId: string().min(1),
|
|
19620
|
-
name: string().trim().min(1).max(160).optional()
|
|
19716
|
+
name: string().trim().min(1).max(160).optional(),
|
|
19717
|
+
executable: string().max(1024).optional(),
|
|
19718
|
+
args: array(string().max(2048)).max(64).optional(),
|
|
19719
|
+
cwd: string().max(1024).optional(),
|
|
19720
|
+
environment: array(string().max(4096)).max(64).optional(),
|
|
19721
|
+
profileSettings: ProfileSettingsBagSchema.optional()
|
|
19722
|
+
}), TerminalInstanceInfoSchema, {
|
|
19723
|
+
kind: "mutation",
|
|
19724
|
+
auth: "admin"
|
|
19725
|
+
}), method(object({
|
|
19726
|
+
instanceId: string().min(1),
|
|
19727
|
+
name: string().trim().min(1).max(160).optional(),
|
|
19728
|
+
executable: string().max(1024).optional(),
|
|
19729
|
+
args: array(string().max(2048)).max(64).optional(),
|
|
19730
|
+
cwd: string().max(1024).optional(),
|
|
19731
|
+
environment: array(string().max(4096)).max(64).optional(),
|
|
19732
|
+
profileSettings: ProfileSettingsBagSchema.optional()
|
|
19621
19733
|
}), TerminalInstanceInfoSchema, {
|
|
19622
19734
|
kind: "mutation",
|
|
19623
19735
|
auth: "admin"
|
|
@@ -19639,7 +19751,11 @@ method(_void(), array(TerminalProfileInfoSchema).readonly(), { auth: "admin" }),
|
|
|
19639
19751
|
}), method(_void(), array(TerminalSessionInfoSchema).readonly(), { auth: "admin" }), method(object({
|
|
19640
19752
|
profileId: string(),
|
|
19641
19753
|
cols: number().int().positive(),
|
|
19642
|
-
rows: number().int().positive()
|
|
19754
|
+
rows: number().int().positive(),
|
|
19755
|
+
executable: string().max(1024).optional(),
|
|
19756
|
+
args: array(string().max(2048)).max(64).optional(),
|
|
19757
|
+
cwd: string().max(1024).optional(),
|
|
19758
|
+
environment: array(string().max(4096)).max(64).optional()
|
|
19643
19759
|
}), TerminalSessionInfoSchema, {
|
|
19644
19760
|
kind: "mutation",
|
|
19645
19761
|
auth: "admin"
|
|
@@ -22421,10 +22537,10 @@ DeviceType.LawnMower, method(object({ deviceId: number().int().nonnegative() }),
|
|
|
22421
22537
|
*
|
|
22422
22538
|
* • The SDK (mobile / web client) consumes `getConnectionEndpoints()`
|
|
22423
22539
|
* to receive an ordered list of candidate base URLs it should race
|
|
22424
|
-
* on connect — LAN IPv4 first (lowest latency
|
|
22425
|
-
* then public hostname (if a tunnel is
|
|
22426
|
-
* race them with short timeouts and stick with the
|
|
22427
|
-
* session.
|
|
22540
|
+
* on connect — LAN IPv4 and stable LAN IPv6 first (lowest latency
|
|
22541
|
+
* when on the same network), then public hostname (if a tunnel is
|
|
22542
|
+
* up). The SDK can race them with short timeouts and stick with the
|
|
22543
|
+
* winner for the session.
|
|
22428
22544
|
*
|
|
22429
22545
|
* Why hub-only: agents are not directly addressable by the operator's
|
|
22430
22546
|
* clients — they reverse-connect to the hub. Exposing their interfaces
|
|
@@ -22579,6 +22695,17 @@ var NotificationEndpointSchema = object({
|
|
|
22579
22695
|
/** What the ranking currently resolves to (null when nothing is reachable). */
|
|
22580
22696
|
resolved: string().nullable()
|
|
22581
22697
|
});
|
|
22698
|
+
/**
|
|
22699
|
+
* The URLs the SDK / viewer should race for API access. `baseUrls` empty =
|
|
22700
|
+
* AUTO (every LAN IPv4 + the public tunnel). `resolved` is what that choice
|
|
22701
|
+
* currently expands to, so the UI can show the effective set either way.
|
|
22702
|
+
*/
|
|
22703
|
+
var ViewerEndpointsSchema = object({
|
|
22704
|
+
/** The operator's explicit race set, or empty for AUTO. */
|
|
22705
|
+
baseUrls: array(string()).readonly(),
|
|
22706
|
+
/** What the ranking currently resolves to (may be empty if nothing is up). */
|
|
22707
|
+
resolved: array(string()).readonly()
|
|
22708
|
+
});
|
|
22582
22709
|
var AllowedAddressesSchema = object({
|
|
22583
22710
|
/**
|
|
22584
22711
|
* Allowlist of interface addresses operators have explicitly opted
|
|
@@ -22587,6 +22714,20 @@ var AllowedAddressesSchema = object({
|
|
|
22587
22714
|
* Network Addresses admin page and persisted by the addon.
|
|
22588
22715
|
*/
|
|
22589
22716
|
addresses: array(string()).readonly() });
|
|
22717
|
+
var TlsStatusSchema = object({
|
|
22718
|
+
mode: _enum([
|
|
22719
|
+
"generated",
|
|
22720
|
+
"uploaded",
|
|
22721
|
+
"disabled"
|
|
22722
|
+
]),
|
|
22723
|
+
leafFingerprintSha256: string().nullable(),
|
|
22724
|
+
caFingerprintSha256: string().nullable(),
|
|
22725
|
+
validTo: string().nullable(),
|
|
22726
|
+
sans: array(string()),
|
|
22727
|
+
caCertPem: string().nullable(),
|
|
22728
|
+
reissueError: string().nullable(),
|
|
22729
|
+
restartRequired: boolean()
|
|
22730
|
+
});
|
|
22590
22731
|
method(_void(), ListResultSchema), method(_void(), PreferredSchema), method(object({
|
|
22591
22732
|
/**
|
|
22592
22733
|
* LEGACY HINT — do not send from new code. Kept optional so clients
|
|
@@ -22596,17 +22737,31 @@ method(_void(), ListResultSchema), method(_void(), PreferredSchema), method(obje
|
|
|
22596
22737
|
*/
|
|
22597
22738
|
port: number().int().min(1).max(65535).optional(),
|
|
22598
22739
|
/** Include `http(s)://127.0.0.1:<port>` as the lowest-priority
|
|
22599
|
-
* candidate. Default `
|
|
22740
|
+
* candidate. Default `false` — loopback is not a client route. */
|
|
22600
22741
|
includeLoopback: boolean().optional(),
|
|
22601
|
-
/** Skip IPv6 entries.
|
|
22602
|
-
*
|
|
22742
|
+
/** Skip IPv6 entries. Default `false` — the palette includes stable
|
|
22743
|
+
* LAN IPv6 (ICE/WebRTC uses dual-stack regardless). Pass `true` to
|
|
22744
|
+
* hide them. The viewer HTTP/WS race is `getViewerEndpoints`. */
|
|
22603
22745
|
ipv4Only: boolean().optional(),
|
|
22604
22746
|
/** Scheme to emit for LAN/loopback URLs. Default `'http'`.
|
|
22605
22747
|
* Pass `'https'` when the caller is itself loaded over HTTPS
|
|
22606
22748
|
* to avoid mixed-content blocks in the browser. The public
|
|
22607
22749
|
* tunnel always emits `https://` regardless. */
|
|
22608
22750
|
scheme: _enum(["http", "https"]).optional()
|
|
22609
|
-
}), 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" })
|
|
22751
|
+
}), 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, {
|
|
22752
|
+
kind: "mutation",
|
|
22753
|
+
auth: "admin"
|
|
22754
|
+
}), method(object({
|
|
22755
|
+
certPem: string().min(1),
|
|
22756
|
+
keyPem: string().min(1),
|
|
22757
|
+
caPem: string().optional()
|
|
22758
|
+
}), TlsStatusSchema, {
|
|
22759
|
+
kind: "mutation",
|
|
22760
|
+
auth: "admin"
|
|
22761
|
+
}), method(_void(), object({ pem: string() })), method(_void(), TlsStatusSchema, {
|
|
22762
|
+
kind: "mutation",
|
|
22763
|
+
auth: "admin"
|
|
22764
|
+
});
|
|
22610
22765
|
object({
|
|
22611
22766
|
/** Lifecycle state of the lock. `jammed` means the motor reported
|
|
22612
22767
|
* failure to reach the target — operator intervention required. */
|
|
@@ -28369,6 +28524,12 @@ Object.freeze({
|
|
|
28369
28524
|
addonId: null,
|
|
28370
28525
|
access: "create"
|
|
28371
28526
|
},
|
|
28527
|
+
"localNetwork.downloadCa": {
|
|
28528
|
+
capName: "local-network",
|
|
28529
|
+
capScope: "system",
|
|
28530
|
+
addonId: null,
|
|
28531
|
+
access: "view"
|
|
28532
|
+
},
|
|
28372
28533
|
"localNetwork.getAllowedAddresses": {
|
|
28373
28534
|
capName: "local-network",
|
|
28374
28535
|
capScope: "system",
|
|
@@ -28393,18 +28554,42 @@ Object.freeze({
|
|
|
28393
28554
|
addonId: null,
|
|
28394
28555
|
access: "view"
|
|
28395
28556
|
},
|
|
28557
|
+
"localNetwork.getTlsStatus": {
|
|
28558
|
+
capName: "local-network",
|
|
28559
|
+
capScope: "system",
|
|
28560
|
+
addonId: null,
|
|
28561
|
+
access: "view"
|
|
28562
|
+
},
|
|
28563
|
+
"localNetwork.getViewerEndpoints": {
|
|
28564
|
+
capName: "local-network",
|
|
28565
|
+
capScope: "system",
|
|
28566
|
+
addonId: null,
|
|
28567
|
+
access: "view"
|
|
28568
|
+
},
|
|
28396
28569
|
"localNetwork.list": {
|
|
28397
28570
|
capName: "local-network",
|
|
28398
28571
|
capScope: "system",
|
|
28399
28572
|
addonId: null,
|
|
28400
28573
|
access: "view"
|
|
28401
28574
|
},
|
|
28575
|
+
"localNetwork.regenerateCertificate": {
|
|
28576
|
+
capName: "local-network",
|
|
28577
|
+
capScope: "system",
|
|
28578
|
+
addonId: null,
|
|
28579
|
+
access: "create"
|
|
28580
|
+
},
|
|
28402
28581
|
"localNetwork.resetAllowlistToBestMatch": {
|
|
28403
28582
|
capName: "local-network",
|
|
28404
28583
|
capScope: "system",
|
|
28405
28584
|
addonId: null,
|
|
28406
28585
|
access: "delete"
|
|
28407
28586
|
},
|
|
28587
|
+
"localNetwork.revertToGeneratedCertificate": {
|
|
28588
|
+
capName: "local-network",
|
|
28589
|
+
capScope: "system",
|
|
28590
|
+
addonId: null,
|
|
28591
|
+
access: "create"
|
|
28592
|
+
},
|
|
28408
28593
|
"localNetwork.setAllowedAddresses": {
|
|
28409
28594
|
capName: "local-network",
|
|
28410
28595
|
capScope: "system",
|
|
@@ -28417,6 +28602,18 @@ Object.freeze({
|
|
|
28417
28602
|
addonId: null,
|
|
28418
28603
|
access: "create"
|
|
28419
28604
|
},
|
|
28605
|
+
"localNetwork.setViewerEndpoints": {
|
|
28606
|
+
capName: "local-network",
|
|
28607
|
+
capScope: "system",
|
|
28608
|
+
addonId: null,
|
|
28609
|
+
access: "create"
|
|
28610
|
+
},
|
|
28611
|
+
"localNetwork.uploadCertificate": {
|
|
28612
|
+
capName: "local-network",
|
|
28613
|
+
capScope: "system",
|
|
28614
|
+
addonId: null,
|
|
28615
|
+
access: "create"
|
|
28616
|
+
},
|
|
28420
28617
|
"lockControl.lock": {
|
|
28421
28618
|
capName: "lock-control",
|
|
28422
28619
|
capScope: "device",
|
|
@@ -31297,6 +31494,12 @@ Object.freeze({
|
|
|
31297
31494
|
addonId: null,
|
|
31298
31495
|
access: "create"
|
|
31299
31496
|
},
|
|
31497
|
+
"terminalSession.updateInstance": {
|
|
31498
|
+
capName: "terminal-session",
|
|
31499
|
+
capScope: "system",
|
|
31500
|
+
addonId: null,
|
|
31501
|
+
access: "create"
|
|
31502
|
+
},
|
|
31300
31503
|
"terminalSession.writeInput": {
|
|
31301
31504
|
capName: "terminal-session",
|
|
31302
31505
|
capScope: "system",
|
|
@@ -33784,6 +33987,35 @@ Object.freeze(Object.fromEntries([{
|
|
|
33784
33987
|
}]
|
|
33785
33988
|
}].map((s) => [s.stepId, s.defaultModelId])));
|
|
33786
33989
|
string().min(1);
|
|
33990
|
+
var CLUSTER_STEP_SETTING_FIELDS = [{
|
|
33991
|
+
stepId: "face-embedding",
|
|
33992
|
+
key: "minLandmarkFaceSize",
|
|
33993
|
+
label: "Min face size for recognition (detection px)",
|
|
33994
|
+
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.",
|
|
33995
|
+
type: "slider",
|
|
33996
|
+
min: 0,
|
|
33997
|
+
max: 64,
|
|
33998
|
+
step: 2,
|
|
33999
|
+
default: 24
|
|
34000
|
+
}];
|
|
34001
|
+
function clusterStepSettingKey(stepId, fieldKey) {
|
|
34002
|
+
return `clusterStepSetting:${stepId}:${fieldKey}`;
|
|
34003
|
+
}
|
|
34004
|
+
var ClusterSettingNumberSchema = number().finite();
|
|
34005
|
+
function readClusterStepSettings(config) {
|
|
34006
|
+
const out = {};
|
|
34007
|
+
for (const field of CLUSTER_STEP_SETTING_FIELDS) {
|
|
34008
|
+
const parsed = ClusterSettingNumberSchema.safeParse(config[clusterStepSettingKey(field.stepId, field.key)]);
|
|
34009
|
+
const value = parsed.success ? parsed.data : field.default;
|
|
34010
|
+
const existing = out[field.stepId] ?? {};
|
|
34011
|
+
out[field.stepId] = {
|
|
34012
|
+
...existing,
|
|
34013
|
+
[field.key]: value
|
|
34014
|
+
};
|
|
34015
|
+
}
|
|
34016
|
+
return out;
|
|
34017
|
+
}
|
|
34018
|
+
readClusterStepSettings({});
|
|
33787
34019
|
object({
|
|
33788
34020
|
/**
|
|
33789
34021
|
* 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-smtp-nodemailer",
|
|
3
|
-
"version": "1.2.
|
|
3
|
+
"version": "1.2.26",
|
|
4
4
|
"description": "SMTP email provider addon for CamStack — wraps `nodemailer` and registers a `smtp-provider` cap collection entry. Used by magic-link login + notifier addons.",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"camstack",
|