@camstack/addon-agent-ui 1.2.26 → 1.2.28
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/addon.js +259 -18
- package/package.json +1 -1
package/dist/addon.js
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import path from "node:path";
|
|
2
2
|
import { fileURLToPath } from "node:url";
|
|
3
|
-
//#region ../types/dist/event-category-
|
|
3
|
+
//#region ../types/dist/event-category-CIa_iT6b.mjs
|
|
4
4
|
var EventCategory = /* @__PURE__ */ function(EventCategory) {
|
|
5
5
|
EventCategory["SystemBoot"] = "system.boot";
|
|
6
6
|
EventCategory["SystemAddonsReady"] = "system.addons-ready";
|
|
@@ -16,6 +16,15 @@ var EventCategory = /* @__PURE__ */ function(EventCategory) {
|
|
|
16
16
|
*/
|
|
17
17
|
EventCategory["SystemRestartCompleted"] = "system.restart-completed";
|
|
18
18
|
/**
|
|
19
|
+
* The hub reissued its own TLS certificate at boot (`ensureTlsCert`).
|
|
20
|
+
* Emitted only when the material on disk actually changed, so an
|
|
21
|
+
* operator who trusted the old certificate by hand is told rather than
|
|
22
|
+
* discovering it as a browser error. Payload `TlsCertChangedPayload`.
|
|
23
|
+
*
|
|
24
|
+
* Rule: docs/decisions/adr-0227-*.md
|
|
25
|
+
*/
|
|
26
|
+
EventCategory["SystemTlsCertChanged"] = "system.tls-cert-changed";
|
|
27
|
+
/**
|
|
19
28
|
* A newer addon or server-root package version was found by the
|
|
20
29
|
* authoritative registry check. Emitted once when any observed
|
|
21
30
|
* `latestVersion` changes (or a package/node first appears behind);
|
|
@@ -8005,6 +8014,15 @@ var LabelDefinitionSchema = object({
|
|
|
8005
8014
|
description: string().optional(),
|
|
8006
8015
|
icon: string().optional()
|
|
8007
8016
|
});
|
|
8017
|
+
var ClassMapDefinitionSchema = object({
|
|
8018
|
+
mapping: record(string(), _enum([
|
|
8019
|
+
"person",
|
|
8020
|
+
"vehicle",
|
|
8021
|
+
"animal",
|
|
8022
|
+
"package"
|
|
8023
|
+
])),
|
|
8024
|
+
preserveOriginal: boolean()
|
|
8025
|
+
});
|
|
8008
8026
|
var MODEL_FORMATS = [
|
|
8009
8027
|
"onnx",
|
|
8010
8028
|
"coreml",
|
|
@@ -8183,7 +8201,13 @@ var ModelCatalogEntrySchema = object({
|
|
|
8183
8201
|
* `id` stays the source of truth for resolution/download/persistence; grouping
|
|
8184
8202
|
* is a presentation overlay resolved back to an `id`.
|
|
8185
8203
|
*/
|
|
8186
|
-
group: ModelVariantGroupSchema.optional()
|
|
8204
|
+
group: ModelVariantGroupSchema.optional(),
|
|
8205
|
+
/**
|
|
8206
|
+
* Per-MODEL class map override. Absent ⇒ the step's `StepDefinition.classMap`
|
|
8207
|
+
* applies (Frigate / COCO public catalog). Set on a custom model whose raw
|
|
8208
|
+
* labels already ARE the CamStack macros (Scrypted identity map).
|
|
8209
|
+
*/
|
|
8210
|
+
classMap: ClassMapDefinitionSchema.optional()
|
|
8187
8211
|
});
|
|
8188
8212
|
var ConvertTargetSchema = discriminatedUnion("format", [object({
|
|
8189
8213
|
format: literal("openvino"),
|
|
@@ -8212,7 +8236,8 @@ var ModelConvertMetadataSchema = object({
|
|
|
8212
8236
|
"ocr",
|
|
8213
8237
|
"segmentation"
|
|
8214
8238
|
]),
|
|
8215
|
-
faceAlignment: boolean().optional()
|
|
8239
|
+
faceAlignment: boolean().optional(),
|
|
8240
|
+
classMap: ClassMapDefinitionSchema.optional()
|
|
8216
8241
|
});
|
|
8217
8242
|
var ConvertResultSchema = object({
|
|
8218
8243
|
entry: ModelCatalogEntrySchema,
|
|
@@ -17203,6 +17228,33 @@ var NativeCropRefSchema = object({
|
|
|
17203
17228
|
h: number()
|
|
17204
17229
|
})
|
|
17205
17230
|
});
|
|
17231
|
+
object({
|
|
17232
|
+
crop: object({
|
|
17233
|
+
left: number(),
|
|
17234
|
+
top: number(),
|
|
17235
|
+
width: number().positive(),
|
|
17236
|
+
height: number().positive()
|
|
17237
|
+
}).optional(),
|
|
17238
|
+
content: object({
|
|
17239
|
+
width: number().int().positive(),
|
|
17240
|
+
height: number().int().positive()
|
|
17241
|
+
}),
|
|
17242
|
+
fit: _enum(["stretch", "contain"]),
|
|
17243
|
+
format: _enum([
|
|
17244
|
+
"rgb",
|
|
17245
|
+
"gray",
|
|
17246
|
+
"jpeg"
|
|
17247
|
+
])
|
|
17248
|
+
});
|
|
17249
|
+
var FrameRefSchema = object({
|
|
17250
|
+
registryId: string().min(1),
|
|
17251
|
+
id: string().min(1),
|
|
17252
|
+
width: number().int().positive(),
|
|
17253
|
+
height: number().int().positive(),
|
|
17254
|
+
format: _enum(["rgb", "gray"]),
|
|
17255
|
+
timestamp: number(),
|
|
17256
|
+
capturedAt: number().optional()
|
|
17257
|
+
});
|
|
17206
17258
|
var ModelFormatSchema$1 = _enum([
|
|
17207
17259
|
"onnx",
|
|
17208
17260
|
"coreml",
|
|
@@ -17447,6 +17499,12 @@ method(_void(), array(PipelineEngineChoiceSchema)), method(_void(), PipelineEngi
|
|
|
17447
17499
|
steps: array(PipelineStepInputSchema).min(1),
|
|
17448
17500
|
frame: FrameInputSchema.optional(),
|
|
17449
17501
|
/**
|
|
17502
|
+
* Process-local lazy frame. Valid only when caller and provider resolve
|
|
17503
|
+
* in the same execution-group process; split/cross-node callers use
|
|
17504
|
+
* `frame`/`image` inline compatibility instead.
|
|
17505
|
+
*/
|
|
17506
|
+
frameRef: FrameRefSchema.optional(),
|
|
17507
|
+
/**
|
|
17450
17508
|
* CB5 shm passthrough — a `FrameHandle` naming the same ring slot
|
|
17451
17509
|
* the decoded pixels live in. One more member of the one-of
|
|
17452
17510
|
* frame/frameHandle/image/imageBase64/referenceImage group.
|
|
@@ -17702,7 +17760,10 @@ var NativeCropResultSchema = object({
|
|
|
17702
17760
|
* Which source served this crop, so a quality-sensitive consumer (the native
|
|
17703
17761
|
* `keyFrame`) can reject a degraded fallback:
|
|
17704
17762
|
* - `native` — cut from the decode worker's retained NATIVE surface (the
|
|
17705
|
-
* quality path).
|
|
17763
|
+
* quality path). A subject-tile serve is also native-resolution and stays
|
|
17764
|
+
* `native` here: the public enum cannot name `tile` without a breaking cap
|
|
17765
|
+
* change. Runner telemetry distinguishes lease vs tile via `source` on the
|
|
17766
|
+
* internal crop result (`nativeHits` vs `tileHits`).
|
|
17706
17767
|
* - `ram-fullframe` — the native surface MISSED but the request was full-frame,
|
|
17707
17768
|
* so the ≤640 RAM `RetainedFrameStore` served it (honest lower-res; legit for
|
|
17708
17769
|
* the blank-frame guard / 640-snapshot resolve, NOT for the clean keyFrame).
|
|
@@ -18193,12 +18254,41 @@ var RunnerLocalLoadSchema = object({
|
|
|
18193
18254
|
* legacy `OrchestratorMetricsSchema` shape so existing dashboards keep
|
|
18194
18255
|
* working unchanged when they switch to reading from the runner cap.
|
|
18195
18256
|
*/
|
|
18257
|
+
var FrameLazyCountersSchema = object({
|
|
18258
|
+
framesDecoded: number(),
|
|
18259
|
+
framesAdmitted: number(),
|
|
18260
|
+
framesDroppedPixelFree: number(),
|
|
18261
|
+
viewsMaterialized: number(),
|
|
18262
|
+
viewsSkipped: number(),
|
|
18263
|
+
workerToRunnerBytes: number(),
|
|
18264
|
+
runnerToPoolRawBytes: number(),
|
|
18265
|
+
runnerToPoolJpegBytes: number(),
|
|
18266
|
+
onDemandFullFrameRequests: number(),
|
|
18267
|
+
onDemandCropRequests: number(),
|
|
18268
|
+
nativeHits: number(),
|
|
18269
|
+
nativeMisses: number(),
|
|
18270
|
+
tileHits: number(),
|
|
18271
|
+
tileMisses: number(),
|
|
18272
|
+
fallbackHits: number(),
|
|
18273
|
+
fallbackMisses: number(),
|
|
18274
|
+
retainedWritesAvoided: number(),
|
|
18275
|
+
residentRefs: number(),
|
|
18276
|
+
residentBytes: number(),
|
|
18277
|
+
releases: number(),
|
|
18278
|
+
evictions: number(),
|
|
18279
|
+
staleMisses: number()
|
|
18280
|
+
});
|
|
18281
|
+
var FrameLazyMetricsSchema = object({
|
|
18282
|
+
node: FrameLazyCountersSchema,
|
|
18283
|
+
cameras: array(FrameLazyCountersSchema.extend({ deviceId: number() }))
|
|
18284
|
+
});
|
|
18196
18285
|
var RunnerLocalMetricsSchema = object({
|
|
18197
18286
|
nodeId: string(),
|
|
18198
18287
|
activeCameras: number(),
|
|
18199
18288
|
throttledCameras: number(),
|
|
18200
18289
|
avgInferenceTimeMs: number(),
|
|
18201
|
-
queueDepth: number()
|
|
18290
|
+
queueDepth: number(),
|
|
18291
|
+
frameLazy: FrameLazyMetricsSchema.optional()
|
|
18202
18292
|
});
|
|
18203
18293
|
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({
|
|
18204
18294
|
handle: FrameHandleSchema,
|
|
@@ -19498,6 +19588,9 @@ method(_void(), ProviderInfoSchema), method(object({ config: record(string(), un
|
|
|
19498
19588
|
location: StorageLocationSchema,
|
|
19499
19589
|
relativePath: string()
|
|
19500
19590
|
}), _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" });
|
|
19591
|
+
/** Profile-exported FormBuilder schema. Shape is ConfigUISchema at the UI. */
|
|
19592
|
+
var ProfileSettingsSchemaBridge = unknown().nullable();
|
|
19593
|
+
var ProfileSettingsBagSchema = record(string(), unknown());
|
|
19501
19594
|
/**
|
|
19502
19595
|
* A live terminal session hosted by the provider addon. Output and input do
|
|
19503
19596
|
* NOT flow through the capability — they use the addon data plane
|
|
@@ -19527,7 +19620,14 @@ var TerminalSessionInfoSchema = object({
|
|
|
19527
19620
|
var TerminalProfileInfoSchema = object({
|
|
19528
19621
|
profileId: string(),
|
|
19529
19622
|
label: string(),
|
|
19530
|
-
description: string().optional()
|
|
19623
|
+
description: string().optional(),
|
|
19624
|
+
/** Spawn defaults the instance form copies on create. */
|
|
19625
|
+
executable: string().optional(),
|
|
19626
|
+
args: array(string()).readonly().optional(),
|
|
19627
|
+
cwd: string().optional(),
|
|
19628
|
+
environment: array(string()).readonly().optional(),
|
|
19629
|
+
/** ConfigUISchema for instance knobs, or null when the profile has none. */
|
|
19630
|
+
settingsSchema: ProfileSettingsSchemaBridge.optional()
|
|
19531
19631
|
});
|
|
19532
19632
|
/**
|
|
19533
19633
|
* A durable operator-created Terminal instance. Profiles are templates; only
|
|
@@ -19540,7 +19640,12 @@ var TerminalInstanceInfoSchema = object({
|
|
|
19540
19640
|
profileId: string(),
|
|
19541
19641
|
profileLabel: string(),
|
|
19542
19642
|
name: string(),
|
|
19543
|
-
enabled: boolean()
|
|
19643
|
+
enabled: boolean(),
|
|
19644
|
+
executable: string(),
|
|
19645
|
+
args: array(string()).readonly(),
|
|
19646
|
+
cwd: string(),
|
|
19647
|
+
environment: array(string()).readonly(),
|
|
19648
|
+
profileSettings: ProfileSettingsBagSchema
|
|
19544
19649
|
});
|
|
19545
19650
|
var TerminalLegacyCameraSchema = object({
|
|
19546
19651
|
stableId: string(),
|
|
@@ -19570,7 +19675,23 @@ var TerminalOutputBatchSchema = object({
|
|
|
19570
19675
|
method(_void(), array(TerminalProfileInfoSchema).readonly(), { auth: "admin" }), method(_void(), array(TerminalInstanceInfoSchema).readonly(), { auth: "admin" }), method(object({
|
|
19571
19676
|
targetNodeId: string().min(1),
|
|
19572
19677
|
profileId: string().min(1),
|
|
19573
|
-
name: string().trim().min(1).max(160).optional()
|
|
19678
|
+
name: string().trim().min(1).max(160).optional(),
|
|
19679
|
+
executable: string().max(1024).optional(),
|
|
19680
|
+
args: array(string().max(2048)).max(64).optional(),
|
|
19681
|
+
cwd: string().max(1024).optional(),
|
|
19682
|
+
environment: array(string().max(4096)).max(64).optional(),
|
|
19683
|
+
profileSettings: ProfileSettingsBagSchema.optional()
|
|
19684
|
+
}), TerminalInstanceInfoSchema, {
|
|
19685
|
+
kind: "mutation",
|
|
19686
|
+
auth: "admin"
|
|
19687
|
+
}), method(object({
|
|
19688
|
+
instanceId: string().min(1),
|
|
19689
|
+
name: string().trim().min(1).max(160).optional(),
|
|
19690
|
+
executable: string().max(1024).optional(),
|
|
19691
|
+
args: array(string().max(2048)).max(64).optional(),
|
|
19692
|
+
cwd: string().max(1024).optional(),
|
|
19693
|
+
environment: array(string().max(4096)).max(64).optional(),
|
|
19694
|
+
profileSettings: ProfileSettingsBagSchema.optional()
|
|
19574
19695
|
}), TerminalInstanceInfoSchema, {
|
|
19575
19696
|
kind: "mutation",
|
|
19576
19697
|
auth: "admin"
|
|
@@ -19592,7 +19713,11 @@ method(_void(), array(TerminalProfileInfoSchema).readonly(), { auth: "admin" }),
|
|
|
19592
19713
|
}), method(_void(), array(TerminalSessionInfoSchema).readonly(), { auth: "admin" }), method(object({
|
|
19593
19714
|
profileId: string(),
|
|
19594
19715
|
cols: number().int().positive(),
|
|
19595
|
-
rows: number().int().positive()
|
|
19716
|
+
rows: number().int().positive(),
|
|
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()
|
|
19596
19721
|
}), TerminalSessionInfoSchema, {
|
|
19597
19722
|
kind: "mutation",
|
|
19598
19723
|
auth: "admin"
|
|
@@ -22374,10 +22499,10 @@ DeviceType.LawnMower, method(object({ deviceId: number().int().nonnegative() }),
|
|
|
22374
22499
|
*
|
|
22375
22500
|
* • The SDK (mobile / web client) consumes `getConnectionEndpoints()`
|
|
22376
22501
|
* to receive an ordered list of candidate base URLs it should race
|
|
22377
|
-
* on connect — LAN IPv4 first (lowest latency
|
|
22378
|
-
* then public hostname (if a tunnel is
|
|
22379
|
-
* race them with short timeouts and stick with the
|
|
22380
|
-
* session.
|
|
22502
|
+
* on connect — LAN IPv4 and stable LAN IPv6 first (lowest latency
|
|
22503
|
+
* when on the same network), then public hostname (if a tunnel is
|
|
22504
|
+
* up). The SDK can race them with short timeouts and stick with the
|
|
22505
|
+
* winner for the session.
|
|
22381
22506
|
*
|
|
22382
22507
|
* Why hub-only: agents are not directly addressable by the operator's
|
|
22383
22508
|
* clients — they reverse-connect to the hub. Exposing their interfaces
|
|
@@ -22532,6 +22657,17 @@ var NotificationEndpointSchema = object({
|
|
|
22532
22657
|
/** What the ranking currently resolves to (null when nothing is reachable). */
|
|
22533
22658
|
resolved: string().nullable()
|
|
22534
22659
|
});
|
|
22660
|
+
/**
|
|
22661
|
+
* The URLs the SDK / viewer should race for API access. `baseUrls` empty =
|
|
22662
|
+
* AUTO (every LAN IPv4 + the public tunnel). `resolved` is what that choice
|
|
22663
|
+
* currently expands to, so the UI can show the effective set either way.
|
|
22664
|
+
*/
|
|
22665
|
+
var ViewerEndpointsSchema = object({
|
|
22666
|
+
/** The operator's explicit race set, or empty for AUTO. */
|
|
22667
|
+
baseUrls: array(string()).readonly(),
|
|
22668
|
+
/** What the ranking currently resolves to (may be empty if nothing is up). */
|
|
22669
|
+
resolved: array(string()).readonly()
|
|
22670
|
+
});
|
|
22535
22671
|
var AllowedAddressesSchema = object({
|
|
22536
22672
|
/**
|
|
22537
22673
|
* Allowlist of interface addresses operators have explicitly opted
|
|
@@ -22540,6 +22676,20 @@ var AllowedAddressesSchema = object({
|
|
|
22540
22676
|
* Network Addresses admin page and persisted by the addon.
|
|
22541
22677
|
*/
|
|
22542
22678
|
addresses: array(string()).readonly() });
|
|
22679
|
+
var TlsStatusSchema = object({
|
|
22680
|
+
mode: _enum([
|
|
22681
|
+
"generated",
|
|
22682
|
+
"uploaded",
|
|
22683
|
+
"disabled"
|
|
22684
|
+
]),
|
|
22685
|
+
leafFingerprintSha256: string().nullable(),
|
|
22686
|
+
caFingerprintSha256: string().nullable(),
|
|
22687
|
+
validTo: string().nullable(),
|
|
22688
|
+
sans: array(string()),
|
|
22689
|
+
caCertPem: string().nullable(),
|
|
22690
|
+
reissueError: string().nullable(),
|
|
22691
|
+
restartRequired: boolean()
|
|
22692
|
+
});
|
|
22543
22693
|
method(_void(), ListResultSchema), method(_void(), PreferredSchema), method(object({
|
|
22544
22694
|
/**
|
|
22545
22695
|
* LEGACY HINT — do not send from new code. Kept optional so clients
|
|
@@ -22549,17 +22699,31 @@ method(_void(), ListResultSchema), method(_void(), PreferredSchema), method(obje
|
|
|
22549
22699
|
*/
|
|
22550
22700
|
port: number().int().min(1).max(65535).optional(),
|
|
22551
22701
|
/** Include `http(s)://127.0.0.1:<port>` as the lowest-priority
|
|
22552
|
-
* candidate. Default `
|
|
22702
|
+
* candidate. Default `false` — loopback is not a client route. */
|
|
22553
22703
|
includeLoopback: boolean().optional(),
|
|
22554
|
-
/** Skip IPv6 entries.
|
|
22555
|
-
*
|
|
22704
|
+
/** Skip IPv6 entries. Default `false` — the palette includes stable
|
|
22705
|
+
* LAN IPv6 (ICE/WebRTC uses dual-stack regardless). Pass `true` to
|
|
22706
|
+
* hide them. The viewer HTTP/WS race is `getViewerEndpoints`. */
|
|
22556
22707
|
ipv4Only: boolean().optional(),
|
|
22557
22708
|
/** Scheme to emit for LAN/loopback URLs. Default `'http'`.
|
|
22558
22709
|
* Pass `'https'` when the caller is itself loaded over HTTPS
|
|
22559
22710
|
* to avoid mixed-content blocks in the browser. The public
|
|
22560
22711
|
* tunnel always emits `https://` regardless. */
|
|
22561
22712
|
scheme: _enum(["http", "https"]).optional()
|
|
22562
|
-
}), 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" })
|
|
22713
|
+
}), 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, {
|
|
22714
|
+
kind: "mutation",
|
|
22715
|
+
auth: "admin"
|
|
22716
|
+
}), method(object({
|
|
22717
|
+
certPem: string().min(1),
|
|
22718
|
+
keyPem: string().min(1),
|
|
22719
|
+
caPem: string().optional()
|
|
22720
|
+
}), TlsStatusSchema, {
|
|
22721
|
+
kind: "mutation",
|
|
22722
|
+
auth: "admin"
|
|
22723
|
+
}), method(_void(), object({ pem: string() })), method(_void(), TlsStatusSchema, {
|
|
22724
|
+
kind: "mutation",
|
|
22725
|
+
auth: "admin"
|
|
22726
|
+
});
|
|
22563
22727
|
object({
|
|
22564
22728
|
/** Lifecycle state of the lock. `jammed` means the motor reported
|
|
22565
22729
|
* failure to reach the target — operator intervention required. */
|
|
@@ -28322,6 +28486,12 @@ Object.freeze({
|
|
|
28322
28486
|
addonId: null,
|
|
28323
28487
|
access: "create"
|
|
28324
28488
|
},
|
|
28489
|
+
"localNetwork.downloadCa": {
|
|
28490
|
+
capName: "local-network",
|
|
28491
|
+
capScope: "system",
|
|
28492
|
+
addonId: null,
|
|
28493
|
+
access: "view"
|
|
28494
|
+
},
|
|
28325
28495
|
"localNetwork.getAllowedAddresses": {
|
|
28326
28496
|
capName: "local-network",
|
|
28327
28497
|
capScope: "system",
|
|
@@ -28346,18 +28516,42 @@ Object.freeze({
|
|
|
28346
28516
|
addonId: null,
|
|
28347
28517
|
access: "view"
|
|
28348
28518
|
},
|
|
28519
|
+
"localNetwork.getTlsStatus": {
|
|
28520
|
+
capName: "local-network",
|
|
28521
|
+
capScope: "system",
|
|
28522
|
+
addonId: null,
|
|
28523
|
+
access: "view"
|
|
28524
|
+
},
|
|
28525
|
+
"localNetwork.getViewerEndpoints": {
|
|
28526
|
+
capName: "local-network",
|
|
28527
|
+
capScope: "system",
|
|
28528
|
+
addonId: null,
|
|
28529
|
+
access: "view"
|
|
28530
|
+
},
|
|
28349
28531
|
"localNetwork.list": {
|
|
28350
28532
|
capName: "local-network",
|
|
28351
28533
|
capScope: "system",
|
|
28352
28534
|
addonId: null,
|
|
28353
28535
|
access: "view"
|
|
28354
28536
|
},
|
|
28537
|
+
"localNetwork.regenerateCertificate": {
|
|
28538
|
+
capName: "local-network",
|
|
28539
|
+
capScope: "system",
|
|
28540
|
+
addonId: null,
|
|
28541
|
+
access: "create"
|
|
28542
|
+
},
|
|
28355
28543
|
"localNetwork.resetAllowlistToBestMatch": {
|
|
28356
28544
|
capName: "local-network",
|
|
28357
28545
|
capScope: "system",
|
|
28358
28546
|
addonId: null,
|
|
28359
28547
|
access: "delete"
|
|
28360
28548
|
},
|
|
28549
|
+
"localNetwork.revertToGeneratedCertificate": {
|
|
28550
|
+
capName: "local-network",
|
|
28551
|
+
capScope: "system",
|
|
28552
|
+
addonId: null,
|
|
28553
|
+
access: "create"
|
|
28554
|
+
},
|
|
28361
28555
|
"localNetwork.setAllowedAddresses": {
|
|
28362
28556
|
capName: "local-network",
|
|
28363
28557
|
capScope: "system",
|
|
@@ -28370,6 +28564,18 @@ Object.freeze({
|
|
|
28370
28564
|
addonId: null,
|
|
28371
28565
|
access: "create"
|
|
28372
28566
|
},
|
|
28567
|
+
"localNetwork.setViewerEndpoints": {
|
|
28568
|
+
capName: "local-network",
|
|
28569
|
+
capScope: "system",
|
|
28570
|
+
addonId: null,
|
|
28571
|
+
access: "create"
|
|
28572
|
+
},
|
|
28573
|
+
"localNetwork.uploadCertificate": {
|
|
28574
|
+
capName: "local-network",
|
|
28575
|
+
capScope: "system",
|
|
28576
|
+
addonId: null,
|
|
28577
|
+
access: "create"
|
|
28578
|
+
},
|
|
28373
28579
|
"lockControl.lock": {
|
|
28374
28580
|
capName: "lock-control",
|
|
28375
28581
|
capScope: "device",
|
|
@@ -31250,6 +31456,12 @@ Object.freeze({
|
|
|
31250
31456
|
addonId: null,
|
|
31251
31457
|
access: "create"
|
|
31252
31458
|
},
|
|
31459
|
+
"terminalSession.updateInstance": {
|
|
31460
|
+
capName: "terminal-session",
|
|
31461
|
+
capScope: "system",
|
|
31462
|
+
addonId: null,
|
|
31463
|
+
access: "create"
|
|
31464
|
+
},
|
|
31253
31465
|
"terminalSession.writeInput": {
|
|
31254
31466
|
capName: "terminal-session",
|
|
31255
31467
|
capScope: "system",
|
|
@@ -33737,6 +33949,35 @@ Object.freeze(Object.fromEntries([{
|
|
|
33737
33949
|
}]
|
|
33738
33950
|
}].map((s) => [s.stepId, s.defaultModelId])));
|
|
33739
33951
|
string().min(1);
|
|
33952
|
+
var CLUSTER_STEP_SETTING_FIELDS = [{
|
|
33953
|
+
stepId: "face-embedding",
|
|
33954
|
+
key: "minLandmarkFaceSize",
|
|
33955
|
+
label: "Min face size for recognition (detection px)",
|
|
33956
|
+
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.",
|
|
33957
|
+
type: "slider",
|
|
33958
|
+
min: 0,
|
|
33959
|
+
max: 64,
|
|
33960
|
+
step: 2,
|
|
33961
|
+
default: 24
|
|
33962
|
+
}];
|
|
33963
|
+
function clusterStepSettingKey(stepId, fieldKey) {
|
|
33964
|
+
return `clusterStepSetting:${stepId}:${fieldKey}`;
|
|
33965
|
+
}
|
|
33966
|
+
var ClusterSettingNumberSchema = number().finite();
|
|
33967
|
+
function readClusterStepSettings(config) {
|
|
33968
|
+
const out = {};
|
|
33969
|
+
for (const field of CLUSTER_STEP_SETTING_FIELDS) {
|
|
33970
|
+
const parsed = ClusterSettingNumberSchema.safeParse(config[clusterStepSettingKey(field.stepId, field.key)]);
|
|
33971
|
+
const value = parsed.success ? parsed.data : field.default;
|
|
33972
|
+
const existing = out[field.stepId] ?? {};
|
|
33973
|
+
out[field.stepId] = {
|
|
33974
|
+
...existing,
|
|
33975
|
+
[field.key]: value
|
|
33976
|
+
};
|
|
33977
|
+
}
|
|
33978
|
+
return out;
|
|
33979
|
+
}
|
|
33980
|
+
readClusterStepSettings({});
|
|
33740
33981
|
object({
|
|
33741
33982
|
/**
|
|
33742
33983
|
* Fraction of the box's own size added on EACH side before cutting.
|
|
@@ -33907,7 +34148,7 @@ var AgentUIAddon = class extends BaseAddon {
|
|
|
33907
34148
|
capability: adminUiCapability,
|
|
33908
34149
|
provider: {
|
|
33909
34150
|
getStaticDir: async () => ({ staticDir: path.resolve(__dirname) }),
|
|
33910
|
-
getVersion: async () => ({ version: "1.2.
|
|
34151
|
+
getVersion: async () => ({ version: "1.2.28" })
|
|
33911
34152
|
}
|
|
33912
34153
|
}];
|
|
33913
34154
|
}
|