@camstack/addon-osd-manager 0.1.18 → 0.1.20
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/{MotionZonesSettings-2bARhPh6.mjs → MotionZonesSettings-Dhh1AqWY.mjs} +2 -2
- package/dist/{PrivacyMaskSettings-Cdqm3uIC.mjs → PrivacyMaskSettings-CPABuSH1.mjs} +4 -4
- package/dist/{SceneMonitorEditor-C58VvxWO.mjs → SceneMonitorEditor-CyVjkJI2.mjs} +3 -3
- package/dist/_stub.js +11 -11
- package/dist/{_virtual_mf-localSharedImportMap___mfe_internal__addon_osd_manager_page-AB877qFK.mjs → _virtual_mf-localSharedImportMap___mfe_internal__addon_osd_manager_page-5jby0ZM9.mjs} +4 -4
- package/dist/_virtual_mf___mfe_internal__addon_osd_manager_page__loadShare___mf_0_camstack_mf_1_types__loadShare__.js-DO3S4jGF.mjs +26 -0
- package/dist/{hostInit-m3PVQphj.mjs → hostInit-5GIsHCyh.mjs} +3 -3
- package/dist/index.js +294 -25
- package/dist/index.mjs +294 -25
- package/dist/{player-overlays-CQmBy0Zm.mjs → player-overlays-A11g0xRn.mjs} +1 -1
- package/dist/remoteEntry.js +1 -1
- package/dist/{responsive-jU_1DnOd.mjs → responsive-B_W10135.mjs} +1 -1
- package/dist/{square-BewXHDNm.mjs → square-BqxtsJJ4.mjs} +1 -1
- package/dist/{trash-2-h2ZuBBnj.mjs → trash-2-xxP-WwG0.mjs} +1 -1
- package/dist/{use-device-snapshot--wXDROMR.mjs → use-device-snapshot-B6sowK2s.mjs} +1 -1
- package/dist/{virtual_mf-REMOTE_ENTRY_ID___mfe_internal__addon_osd_manager_page__remoteEntry_js-C8_X3KFr.mjs → virtual_mf-REMOTE_ENTRY_ID___mfe_internal__addon_osd_manager_page__remoteEntry_js-0ziNXHDT.mjs} +1 -1
- package/package.json +1 -1
- package/dist/_virtual_mf___mfe_internal__addon_osd_manager_page__loadShare___mf_0_camstack_mf_1_types__loadShare__.js-KlN_tI2R.mjs +0 -26
package/dist/index.js
CHANGED
|
@@ -2,7 +2,7 @@ Object.defineProperties(exports, {
|
|
|
2
2
|
__esModule: { value: true },
|
|
3
3
|
[Symbol.toStringTag]: { value: "Module" }
|
|
4
4
|
});
|
|
5
|
-
//#region ../types/dist/event-category-
|
|
5
|
+
//#region ../types/dist/event-category-CIa_iT6b.mjs
|
|
6
6
|
var EventCategory = /* @__PURE__ */ function(EventCategory) {
|
|
7
7
|
EventCategory["SystemBoot"] = "system.boot";
|
|
8
8
|
EventCategory["SystemAddonsReady"] = "system.addons-ready";
|
|
@@ -18,6 +18,15 @@ var EventCategory = /* @__PURE__ */ function(EventCategory) {
|
|
|
18
18
|
*/
|
|
19
19
|
EventCategory["SystemRestartCompleted"] = "system.restart-completed";
|
|
20
20
|
/**
|
|
21
|
+
* The hub reissued its own TLS certificate at boot (`ensureTlsCert`).
|
|
22
|
+
* Emitted only when the material on disk actually changed, so an
|
|
23
|
+
* operator who trusted the old certificate by hand is told rather than
|
|
24
|
+
* discovering it as a browser error. Payload `TlsCertChangedPayload`.
|
|
25
|
+
*
|
|
26
|
+
* Rule: docs/decisions/adr-0227-*.md
|
|
27
|
+
*/
|
|
28
|
+
EventCategory["SystemTlsCertChanged"] = "system.tls-cert-changed";
|
|
29
|
+
/**
|
|
21
30
|
* A newer addon or server-root package version was found by the
|
|
22
31
|
* authoritative registry check. Emitted once when any observed
|
|
23
32
|
* `latestVersion` changes (or a package/node first appears behind);
|
|
@@ -8086,6 +8095,15 @@ var LabelDefinitionSchema = object({
|
|
|
8086
8095
|
description: string().optional(),
|
|
8087
8096
|
icon: string().optional()
|
|
8088
8097
|
});
|
|
8098
|
+
var ClassMapDefinitionSchema = object({
|
|
8099
|
+
mapping: record(string(), _enum([
|
|
8100
|
+
"person",
|
|
8101
|
+
"vehicle",
|
|
8102
|
+
"animal",
|
|
8103
|
+
"package"
|
|
8104
|
+
])),
|
|
8105
|
+
preserveOriginal: boolean()
|
|
8106
|
+
});
|
|
8089
8107
|
var MODEL_FORMATS = [
|
|
8090
8108
|
"onnx",
|
|
8091
8109
|
"coreml",
|
|
@@ -8264,7 +8282,13 @@ var ModelCatalogEntrySchema = object({
|
|
|
8264
8282
|
* `id` stays the source of truth for resolution/download/persistence; grouping
|
|
8265
8283
|
* is a presentation overlay resolved back to an `id`.
|
|
8266
8284
|
*/
|
|
8267
|
-
group: ModelVariantGroupSchema.optional()
|
|
8285
|
+
group: ModelVariantGroupSchema.optional(),
|
|
8286
|
+
/**
|
|
8287
|
+
* Per-MODEL class map override. Absent ⇒ the step's `StepDefinition.classMap`
|
|
8288
|
+
* applies (Frigate / COCO public catalog). Set on a custom model whose raw
|
|
8289
|
+
* labels already ARE the CamStack macros (Scrypted identity map).
|
|
8290
|
+
*/
|
|
8291
|
+
classMap: ClassMapDefinitionSchema.optional()
|
|
8268
8292
|
});
|
|
8269
8293
|
var ConvertTargetSchema = discriminatedUnion("format", [object({
|
|
8270
8294
|
format: literal("openvino"),
|
|
@@ -8293,7 +8317,8 @@ var ModelConvertMetadataSchema = object({
|
|
|
8293
8317
|
"ocr",
|
|
8294
8318
|
"segmentation"
|
|
8295
8319
|
]),
|
|
8296
|
-
faceAlignment: boolean().optional()
|
|
8320
|
+
faceAlignment: boolean().optional(),
|
|
8321
|
+
classMap: ClassMapDefinitionSchema.optional()
|
|
8297
8322
|
});
|
|
8298
8323
|
var ConvertResultSchema = object({
|
|
8299
8324
|
entry: ModelCatalogEntrySchema,
|
|
@@ -20016,6 +20041,33 @@ var NativeCropRefSchema = object({
|
|
|
20016
20041
|
h: number()
|
|
20017
20042
|
})
|
|
20018
20043
|
});
|
|
20044
|
+
object({
|
|
20045
|
+
crop: object({
|
|
20046
|
+
left: number(),
|
|
20047
|
+
top: number(),
|
|
20048
|
+
width: number().positive(),
|
|
20049
|
+
height: number().positive()
|
|
20050
|
+
}).optional(),
|
|
20051
|
+
content: object({
|
|
20052
|
+
width: number().int().positive(),
|
|
20053
|
+
height: number().int().positive()
|
|
20054
|
+
}),
|
|
20055
|
+
fit: _enum(["stretch", "contain"]),
|
|
20056
|
+
format: _enum([
|
|
20057
|
+
"rgb",
|
|
20058
|
+
"gray",
|
|
20059
|
+
"jpeg"
|
|
20060
|
+
])
|
|
20061
|
+
});
|
|
20062
|
+
var FrameRefSchema = object({
|
|
20063
|
+
registryId: string().min(1),
|
|
20064
|
+
id: string().min(1),
|
|
20065
|
+
width: number().int().positive(),
|
|
20066
|
+
height: number().int().positive(),
|
|
20067
|
+
format: _enum(["rgb", "gray"]),
|
|
20068
|
+
timestamp: number(),
|
|
20069
|
+
capturedAt: number().optional()
|
|
20070
|
+
});
|
|
20019
20071
|
var ModelFormatSchema$1 = _enum([
|
|
20020
20072
|
"onnx",
|
|
20021
20073
|
"coreml",
|
|
@@ -20336,7 +20388,7 @@ var pipelineExecutorCapability = {
|
|
|
20336
20388
|
* legacy call shape used by existing benchmark code; once all
|
|
20337
20389
|
* callers pass it explicitly we make it required.
|
|
20338
20390
|
*
|
|
20339
|
-
* Exactly one of `frame`, `frameHandle`, `imageBase64`,
|
|
20391
|
+
* Exactly one of `frame`, `frameRef`, `frameHandle`, `imageBase64`,
|
|
20340
20392
|
* `referenceImage` must be provided:
|
|
20341
20393
|
* - `frame`: runtime dispatch path (runner → decoded broker frame).
|
|
20342
20394
|
* Carries the raw buffer, dimensions, and format; the executor
|
|
@@ -20358,6 +20410,12 @@ var pipelineExecutorCapability = {
|
|
|
20358
20410
|
steps: array(PipelineStepInputSchema).min(1),
|
|
20359
20411
|
frame: FrameInputSchema.optional(),
|
|
20360
20412
|
/**
|
|
20413
|
+
* Process-local lazy frame. Valid only when caller and provider resolve
|
|
20414
|
+
* in the same execution-group process; split/cross-node callers use
|
|
20415
|
+
* `frame`/`image` inline compatibility instead.
|
|
20416
|
+
*/
|
|
20417
|
+
frameRef: FrameRefSchema.optional(),
|
|
20418
|
+
/**
|
|
20361
20419
|
* CB5 shm passthrough — a `FrameHandle` naming the same ring slot
|
|
20362
20420
|
* the decoded pixels live in. One more member of the one-of
|
|
20363
20421
|
* frame/frameHandle/image/imageBase64/referenceImage group.
|
|
@@ -20707,7 +20765,10 @@ var NativeCropResultSchema = object({
|
|
|
20707
20765
|
* Which source served this crop, so a quality-sensitive consumer (the native
|
|
20708
20766
|
* `keyFrame`) can reject a degraded fallback:
|
|
20709
20767
|
* - `native` — cut from the decode worker's retained NATIVE surface (the
|
|
20710
|
-
* quality path).
|
|
20768
|
+
* quality path). A subject-tile serve is also native-resolution and stays
|
|
20769
|
+
* `native` here: the public enum cannot name `tile` without a breaking cap
|
|
20770
|
+
* change. Runner telemetry distinguishes lease vs tile via `source` on the
|
|
20771
|
+
* internal crop result (`nativeHits` vs `tileHits`).
|
|
20711
20772
|
* - `ram-fullframe` — the native surface MISSED but the request was full-frame,
|
|
20712
20773
|
* so the ≤640 RAM `RetainedFrameStore` served it (honest lower-res; legit for
|
|
20713
20774
|
* the blank-frame guard / 640-snapshot resolve, NOT for the clean keyFrame).
|
|
@@ -21198,12 +21259,41 @@ var RunnerLocalLoadSchema = object({
|
|
|
21198
21259
|
* legacy `OrchestratorMetricsSchema` shape so existing dashboards keep
|
|
21199
21260
|
* working unchanged when they switch to reading from the runner cap.
|
|
21200
21261
|
*/
|
|
21262
|
+
var FrameLazyCountersSchema = object({
|
|
21263
|
+
framesDecoded: number(),
|
|
21264
|
+
framesAdmitted: number(),
|
|
21265
|
+
framesDroppedPixelFree: number(),
|
|
21266
|
+
viewsMaterialized: number(),
|
|
21267
|
+
viewsSkipped: number(),
|
|
21268
|
+
workerToRunnerBytes: number(),
|
|
21269
|
+
runnerToPoolRawBytes: number(),
|
|
21270
|
+
runnerToPoolJpegBytes: number(),
|
|
21271
|
+
onDemandFullFrameRequests: number(),
|
|
21272
|
+
onDemandCropRequests: number(),
|
|
21273
|
+
nativeHits: number(),
|
|
21274
|
+
nativeMisses: number(),
|
|
21275
|
+
tileHits: number(),
|
|
21276
|
+
tileMisses: number(),
|
|
21277
|
+
fallbackHits: number(),
|
|
21278
|
+
fallbackMisses: number(),
|
|
21279
|
+
retainedWritesAvoided: number(),
|
|
21280
|
+
residentRefs: number(),
|
|
21281
|
+
residentBytes: number(),
|
|
21282
|
+
releases: number(),
|
|
21283
|
+
evictions: number(),
|
|
21284
|
+
staleMisses: number()
|
|
21285
|
+
});
|
|
21286
|
+
var FrameLazyMetricsSchema = object({
|
|
21287
|
+
node: FrameLazyCountersSchema,
|
|
21288
|
+
cameras: array(FrameLazyCountersSchema.extend({ deviceId: number() }))
|
|
21289
|
+
});
|
|
21201
21290
|
var RunnerLocalMetricsSchema = object({
|
|
21202
21291
|
nodeId: string(),
|
|
21203
21292
|
activeCameras: number(),
|
|
21204
21293
|
throttledCameras: number(),
|
|
21205
21294
|
avgInferenceTimeMs: number(),
|
|
21206
|
-
queueDepth: number()
|
|
21295
|
+
queueDepth: number(),
|
|
21296
|
+
frameLazy: FrameLazyMetricsSchema.optional()
|
|
21207
21297
|
});
|
|
21208
21298
|
/**
|
|
21209
21299
|
* Pipeline Runner capability — runtime detection workhorse.
|
|
@@ -23235,6 +23325,9 @@ var storageProviderCapability = {
|
|
|
23235
23325
|
endDownload: method(EndDownloadInputSchema, _void(), { kind: "mutation" })
|
|
23236
23326
|
}
|
|
23237
23327
|
};
|
|
23328
|
+
/** Profile-exported FormBuilder schema. Shape is ConfigUISchema at the UI. */
|
|
23329
|
+
var ProfileSettingsSchemaBridge = unknown().nullable();
|
|
23330
|
+
var ProfileSettingsBagSchema = record(string(), unknown());
|
|
23238
23331
|
/**
|
|
23239
23332
|
* A live terminal session hosted by the provider addon. Output and input do
|
|
23240
23333
|
* NOT flow through the capability — they use the addon data plane
|
|
@@ -23264,7 +23357,14 @@ var TerminalSessionInfoSchema = object({
|
|
|
23264
23357
|
var TerminalProfileInfoSchema = object({
|
|
23265
23358
|
profileId: string(),
|
|
23266
23359
|
label: string(),
|
|
23267
|
-
description: string().optional()
|
|
23360
|
+
description: string().optional(),
|
|
23361
|
+
/** Spawn defaults the instance form copies on create. */
|
|
23362
|
+
executable: string().optional(),
|
|
23363
|
+
args: array(string()).readonly().optional(),
|
|
23364
|
+
cwd: string().optional(),
|
|
23365
|
+
environment: array(string()).readonly().optional(),
|
|
23366
|
+
/** ConfigUISchema for instance knobs, or null when the profile has none. */
|
|
23367
|
+
settingsSchema: ProfileSettingsSchemaBridge.optional()
|
|
23268
23368
|
});
|
|
23269
23369
|
/**
|
|
23270
23370
|
* A durable operator-created Terminal instance. Profiles are templates; only
|
|
@@ -23277,7 +23377,12 @@ var TerminalInstanceInfoSchema = object({
|
|
|
23277
23377
|
profileId: string(),
|
|
23278
23378
|
profileLabel: string(),
|
|
23279
23379
|
name: string(),
|
|
23280
|
-
enabled: boolean()
|
|
23380
|
+
enabled: boolean(),
|
|
23381
|
+
executable: string(),
|
|
23382
|
+
args: array(string()).readonly(),
|
|
23383
|
+
cwd: string(),
|
|
23384
|
+
environment: array(string()).readonly(),
|
|
23385
|
+
profileSettings: ProfileSettingsBagSchema
|
|
23281
23386
|
});
|
|
23282
23387
|
var TerminalLegacyCameraSchema = object({
|
|
23283
23388
|
stableId: string(),
|
|
@@ -23323,7 +23428,24 @@ var terminalSessionCapability = {
|
|
|
23323
23428
|
createInstance: method(object({
|
|
23324
23429
|
targetNodeId: string().min(1),
|
|
23325
23430
|
profileId: string().min(1),
|
|
23326
|
-
name: string().trim().min(1).max(160).optional()
|
|
23431
|
+
name: string().trim().min(1).max(160).optional(),
|
|
23432
|
+
executable: string().max(1024).optional(),
|
|
23433
|
+
args: array(string().max(2048)).max(64).optional(),
|
|
23434
|
+
cwd: string().max(1024).optional(),
|
|
23435
|
+
environment: array(string().max(4096)).max(64).optional(),
|
|
23436
|
+
profileSettings: ProfileSettingsBagSchema.optional()
|
|
23437
|
+
}), TerminalInstanceInfoSchema, {
|
|
23438
|
+
kind: "mutation",
|
|
23439
|
+
auth: "admin"
|
|
23440
|
+
}),
|
|
23441
|
+
updateInstance: method(object({
|
|
23442
|
+
instanceId: string().min(1),
|
|
23443
|
+
name: string().trim().min(1).max(160).optional(),
|
|
23444
|
+
executable: string().max(1024).optional(),
|
|
23445
|
+
args: array(string().max(2048)).max(64).optional(),
|
|
23446
|
+
cwd: string().max(1024).optional(),
|
|
23447
|
+
environment: array(string().max(4096)).max(64).optional(),
|
|
23448
|
+
profileSettings: ProfileSettingsBagSchema.optional()
|
|
23327
23449
|
}), TerminalInstanceInfoSchema, {
|
|
23328
23450
|
kind: "mutation",
|
|
23329
23451
|
auth: "admin"
|
|
@@ -23358,7 +23480,11 @@ var terminalSessionCapability = {
|
|
|
23358
23480
|
openSession: method(object({
|
|
23359
23481
|
profileId: string(),
|
|
23360
23482
|
cols: number().int().positive(),
|
|
23361
|
-
rows: number().int().positive()
|
|
23483
|
+
rows: number().int().positive(),
|
|
23484
|
+
executable: string().max(1024).optional(),
|
|
23485
|
+
args: array(string().max(2048)).max(64).optional(),
|
|
23486
|
+
cwd: string().max(1024).optional(),
|
|
23487
|
+
environment: array(string().max(4096)).max(64).optional()
|
|
23362
23488
|
}), TerminalSessionInfoSchema, {
|
|
23363
23489
|
kind: "mutation",
|
|
23364
23490
|
auth: "admin"
|
|
@@ -27736,10 +27862,10 @@ var lawnMowerControlCapability = {
|
|
|
27736
27862
|
*
|
|
27737
27863
|
* • The SDK (mobile / web client) consumes `getConnectionEndpoints()`
|
|
27738
27864
|
* to receive an ordered list of candidate base URLs it should race
|
|
27739
|
-
* on connect — LAN IPv4 first (lowest latency
|
|
27740
|
-
* then public hostname (if a tunnel is
|
|
27741
|
-
* race them with short timeouts and stick with the
|
|
27742
|
-
* session.
|
|
27865
|
+
* on connect — LAN IPv4 and stable LAN IPv6 first (lowest latency
|
|
27866
|
+
* when on the same network), then public hostname (if a tunnel is
|
|
27867
|
+
* up). The SDK can race them with short timeouts and stick with the
|
|
27868
|
+
* winner for the session.
|
|
27743
27869
|
*
|
|
27744
27870
|
* Why hub-only: agents are not directly addressable by the operator's
|
|
27745
27871
|
* clients — they reverse-connect to the hub. Exposing their interfaces
|
|
@@ -27894,6 +28020,17 @@ var NotificationEndpointSchema = object({
|
|
|
27894
28020
|
/** What the ranking currently resolves to (null when nothing is reachable). */
|
|
27895
28021
|
resolved: string().nullable()
|
|
27896
28022
|
});
|
|
28023
|
+
/**
|
|
28024
|
+
* The URLs the SDK / viewer should race for API access. `baseUrls` empty =
|
|
28025
|
+
* AUTO (every LAN IPv4 + the public tunnel). `resolved` is what that choice
|
|
28026
|
+
* currently expands to, so the UI can show the effective set either way.
|
|
28027
|
+
*/
|
|
28028
|
+
var ViewerEndpointsSchema = object({
|
|
28029
|
+
/** The operator's explicit race set, or empty for AUTO. */
|
|
28030
|
+
baseUrls: array(string()).readonly(),
|
|
28031
|
+
/** What the ranking currently resolves to (may be empty if nothing is up). */
|
|
28032
|
+
resolved: array(string()).readonly()
|
|
28033
|
+
});
|
|
27897
28034
|
var AllowedAddressesSchema = object({
|
|
27898
28035
|
/**
|
|
27899
28036
|
* Allowlist of interface addresses operators have explicitly opted
|
|
@@ -27902,6 +28039,20 @@ var AllowedAddressesSchema = object({
|
|
|
27902
28039
|
* Network Addresses admin page and persisted by the addon.
|
|
27903
28040
|
*/
|
|
27904
28041
|
addresses: array(string()).readonly() });
|
|
28042
|
+
var TlsStatusSchema = object({
|
|
28043
|
+
mode: _enum([
|
|
28044
|
+
"generated",
|
|
28045
|
+
"uploaded",
|
|
28046
|
+
"disabled"
|
|
28047
|
+
]),
|
|
28048
|
+
leafFingerprintSha256: string().nullable(),
|
|
28049
|
+
caFingerprintSha256: string().nullable(),
|
|
28050
|
+
validTo: string().nullable(),
|
|
28051
|
+
sans: array(string()),
|
|
28052
|
+
caCertPem: string().nullable(),
|
|
28053
|
+
reissueError: string().nullable(),
|
|
28054
|
+
restartRequired: boolean()
|
|
28055
|
+
});
|
|
27905
28056
|
var localNetworkCapability = {
|
|
27906
28057
|
name: "local-network",
|
|
27907
28058
|
scope: "system",
|
|
@@ -27921,13 +28072,13 @@ var localNetworkCapability = {
|
|
|
27921
28072
|
*/
|
|
27922
28073
|
getPreferred: method(_void(), PreferredSchema),
|
|
27923
28074
|
/**
|
|
27924
|
-
* Ordered candidate base URLs the
|
|
27925
|
-
* Includes LAN
|
|
27926
|
-
*
|
|
27927
|
-
*
|
|
27928
|
-
*
|
|
27929
|
-
*
|
|
27930
|
-
*
|
|
28075
|
+
* Ordered candidate base URLs (the palette the Network tab shows).
|
|
28076
|
+
* Includes LAN IPv4, stable LAN IPv6, the public tunnel, and mesh when
|
|
28077
|
+
* joined. Loopback is off by default. The SDK races the subset from
|
|
28078
|
+
* `getViewerEndpoints`, not this full list — IPv6 stays here because
|
|
28079
|
+
* WebRTC ICE gathers dual-stack regardless of the HTTP race. Honours
|
|
28080
|
+
* `getAllowedAddresses()` when set — addresses outside the allowlist
|
|
28081
|
+
* are dropped (the public tunnel is still included as an escape hatch).
|
|
27931
28082
|
*
|
|
27932
28083
|
* **The port is the hub's, not the caller's** (D62 — a function's fact
|
|
27933
28084
|
* belongs to whoever already owns it). This method used to take a `port`
|
|
@@ -27958,10 +28109,11 @@ var localNetworkCapability = {
|
|
|
27958
28109
|
*/
|
|
27959
28110
|
port: number().int().min(1).max(65535).optional(),
|
|
27960
28111
|
/** Include `http(s)://127.0.0.1:<port>` as the lowest-priority
|
|
27961
|
-
* candidate. Default `
|
|
28112
|
+
* candidate. Default `false` — loopback is not a client route. */
|
|
27962
28113
|
includeLoopback: boolean().optional(),
|
|
27963
|
-
/** Skip IPv6 entries.
|
|
27964
|
-
*
|
|
28114
|
+
/** Skip IPv6 entries. Default `false` — the palette includes stable
|
|
28115
|
+
* LAN IPv6 (ICE/WebRTC uses dual-stack regardless). Pass `true` to
|
|
28116
|
+
* hide them. The viewer HTTP/WS race is `getViewerEndpoints`. */
|
|
27965
28117
|
ipv4Only: boolean().optional(),
|
|
27966
28118
|
/** Scheme to emit for LAN/loopback URLs. Default `'http'`.
|
|
27967
28119
|
* Pass `'https'` when the caller is itself loaded over HTTPS
|
|
@@ -27990,6 +28142,19 @@ var localNetworkCapability = {
|
|
|
27990
28142
|
*/
|
|
27991
28143
|
setNotificationEndpoint: method(object({ baseUrl: string().nullable() }), NotificationEndpointSchema, { kind: "mutation" }),
|
|
27992
28144
|
/**
|
|
28145
|
+
* The endpoints the SDK / viewer races for API access. Empty `baseUrls`
|
|
28146
|
+
* means AUTO: every LAN IPv4 address plus the public tunnel, never IPv6,
|
|
28147
|
+
* never mesh, never loopback. `resolved` is that set (or the operator's
|
|
28148
|
+
* explicit subset) as it stands right now.
|
|
28149
|
+
*/
|
|
28150
|
+
getViewerEndpoints: method(_void(), ViewerEndpointsSchema),
|
|
28151
|
+
/**
|
|
28152
|
+
* Replace the viewer race set. Empty `baseUrls` restores AUTO. Stored
|
|
28153
|
+
* verbatim (not indices) so a temporarily-down tunnel is not silently
|
|
28154
|
+
* dropped from the operator's choice.
|
|
28155
|
+
*/
|
|
28156
|
+
setViewerEndpoints: method(object({ baseUrls: array(string()).readonly() }), ViewerEndpointsSchema, { kind: "mutation" }),
|
|
28157
|
+
/**
|
|
27993
28158
|
* Read the operator's allowlist. Empty = "auto" (no filter). Used
|
|
27994
28159
|
* by the admin UI's address selector to seed its checkbox state.
|
|
27995
28160
|
*/
|
|
@@ -28007,7 +28172,34 @@ var localNetworkCapability = {
|
|
|
28007
28172
|
* when the operator wants to wipe their manual edits and start
|
|
28008
28173
|
* over from the auto-detected best matches.
|
|
28009
28174
|
*/
|
|
28010
|
-
resetAllowlistToBestMatch: method(_void(), AllowedAddressesSchema, { kind: "mutation" })
|
|
28175
|
+
resetAllowlistToBestMatch: method(_void(), AllowedAddressesSchema, { kind: "mutation" }),
|
|
28176
|
+
/**
|
|
28177
|
+
* Live TLS material for the Network → Local access certificate card.
|
|
28178
|
+
* LAN HTTP / hostname are addon settings (`globalSettingsSchema`), not
|
|
28179
|
+
* a second store — this query is status, not configuration.
|
|
28180
|
+
*/
|
|
28181
|
+
getTlsStatus: method(_void(), TlsStatusSchema),
|
|
28182
|
+
/** Issue a new leaf under the existing local CA. Disabled in uploaded mode. */
|
|
28183
|
+
regenerateCertificate: method(object({ reason: string().optional() }), TlsStatusSchema, {
|
|
28184
|
+
kind: "mutation",
|
|
28185
|
+
auth: "admin"
|
|
28186
|
+
}),
|
|
28187
|
+
/** Replace the served material with operator-supplied PEMs. */
|
|
28188
|
+
uploadCertificate: method(object({
|
|
28189
|
+
certPem: string().min(1),
|
|
28190
|
+
keyPem: string().min(1),
|
|
28191
|
+
caPem: string().optional()
|
|
28192
|
+
}), TlsStatusSchema, {
|
|
28193
|
+
kind: "mutation",
|
|
28194
|
+
auth: "admin"
|
|
28195
|
+
}),
|
|
28196
|
+
/** The local CA PEM, or empty when there is none to download. */
|
|
28197
|
+
downloadCa: method(_void(), object({ pem: string() })),
|
|
28198
|
+
/** Drop uploaded material and return to the generated local CA. */
|
|
28199
|
+
revertToGeneratedCertificate: method(_void(), TlsStatusSchema, {
|
|
28200
|
+
kind: "mutation",
|
|
28201
|
+
auth: "admin"
|
|
28202
|
+
})
|
|
28011
28203
|
},
|
|
28012
28204
|
/** BIG PLAN 2: declarative mount hint — read by `@camstack/system` `buildCapRouters`. */
|
|
28013
28205
|
mount: { kind: "hub-only" }
|
|
@@ -35751,6 +35943,12 @@ Object.freeze({
|
|
|
35751
35943
|
addonId: null,
|
|
35752
35944
|
access: "create"
|
|
35753
35945
|
},
|
|
35946
|
+
"localNetwork.downloadCa": {
|
|
35947
|
+
capName: "local-network",
|
|
35948
|
+
capScope: "system",
|
|
35949
|
+
addonId: null,
|
|
35950
|
+
access: "view"
|
|
35951
|
+
},
|
|
35754
35952
|
"localNetwork.getAllowedAddresses": {
|
|
35755
35953
|
capName: "local-network",
|
|
35756
35954
|
capScope: "system",
|
|
@@ -35775,18 +35973,42 @@ Object.freeze({
|
|
|
35775
35973
|
addonId: null,
|
|
35776
35974
|
access: "view"
|
|
35777
35975
|
},
|
|
35976
|
+
"localNetwork.getTlsStatus": {
|
|
35977
|
+
capName: "local-network",
|
|
35978
|
+
capScope: "system",
|
|
35979
|
+
addonId: null,
|
|
35980
|
+
access: "view"
|
|
35981
|
+
},
|
|
35982
|
+
"localNetwork.getViewerEndpoints": {
|
|
35983
|
+
capName: "local-network",
|
|
35984
|
+
capScope: "system",
|
|
35985
|
+
addonId: null,
|
|
35986
|
+
access: "view"
|
|
35987
|
+
},
|
|
35778
35988
|
"localNetwork.list": {
|
|
35779
35989
|
capName: "local-network",
|
|
35780
35990
|
capScope: "system",
|
|
35781
35991
|
addonId: null,
|
|
35782
35992
|
access: "view"
|
|
35783
35993
|
},
|
|
35994
|
+
"localNetwork.regenerateCertificate": {
|
|
35995
|
+
capName: "local-network",
|
|
35996
|
+
capScope: "system",
|
|
35997
|
+
addonId: null,
|
|
35998
|
+
access: "create"
|
|
35999
|
+
},
|
|
35784
36000
|
"localNetwork.resetAllowlistToBestMatch": {
|
|
35785
36001
|
capName: "local-network",
|
|
35786
36002
|
capScope: "system",
|
|
35787
36003
|
addonId: null,
|
|
35788
36004
|
access: "delete"
|
|
35789
36005
|
},
|
|
36006
|
+
"localNetwork.revertToGeneratedCertificate": {
|
|
36007
|
+
capName: "local-network",
|
|
36008
|
+
capScope: "system",
|
|
36009
|
+
addonId: null,
|
|
36010
|
+
access: "create"
|
|
36011
|
+
},
|
|
35790
36012
|
"localNetwork.setAllowedAddresses": {
|
|
35791
36013
|
capName: "local-network",
|
|
35792
36014
|
capScope: "system",
|
|
@@ -35799,6 +36021,18 @@ Object.freeze({
|
|
|
35799
36021
|
addonId: null,
|
|
35800
36022
|
access: "create"
|
|
35801
36023
|
},
|
|
36024
|
+
"localNetwork.setViewerEndpoints": {
|
|
36025
|
+
capName: "local-network",
|
|
36026
|
+
capScope: "system",
|
|
36027
|
+
addonId: null,
|
|
36028
|
+
access: "create"
|
|
36029
|
+
},
|
|
36030
|
+
"localNetwork.uploadCertificate": {
|
|
36031
|
+
capName: "local-network",
|
|
36032
|
+
capScope: "system",
|
|
36033
|
+
addonId: null,
|
|
36034
|
+
access: "create"
|
|
36035
|
+
},
|
|
35802
36036
|
"lockControl.lock": {
|
|
35803
36037
|
capName: "lock-control",
|
|
35804
36038
|
capScope: "device",
|
|
@@ -38679,6 +38913,12 @@ Object.freeze({
|
|
|
38679
38913
|
addonId: null,
|
|
38680
38914
|
access: "create"
|
|
38681
38915
|
},
|
|
38916
|
+
"terminalSession.updateInstance": {
|
|
38917
|
+
capName: "terminal-session",
|
|
38918
|
+
capScope: "system",
|
|
38919
|
+
addonId: null,
|
|
38920
|
+
access: "create"
|
|
38921
|
+
},
|
|
38682
38922
|
"terminalSession.writeInput": {
|
|
38683
38923
|
capName: "terminal-session",
|
|
38684
38924
|
capScope: "system",
|
|
@@ -41226,6 +41466,35 @@ Object.freeze(Object.fromEntries([{
|
|
|
41226
41466
|
}]
|
|
41227
41467
|
}].map((s) => [s.stepId, s.defaultModelId])));
|
|
41228
41468
|
string().min(1);
|
|
41469
|
+
var CLUSTER_STEP_SETTING_FIELDS = [{
|
|
41470
|
+
stepId: "face-embedding",
|
|
41471
|
+
key: "minLandmarkFaceSize",
|
|
41472
|
+
label: "Min face size for recognition (detection px)",
|
|
41473
|
+
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.",
|
|
41474
|
+
type: "slider",
|
|
41475
|
+
min: 0,
|
|
41476
|
+
max: 64,
|
|
41477
|
+
step: 2,
|
|
41478
|
+
default: 24
|
|
41479
|
+
}];
|
|
41480
|
+
function clusterStepSettingKey(stepId, fieldKey) {
|
|
41481
|
+
return `clusterStepSetting:${stepId}:${fieldKey}`;
|
|
41482
|
+
}
|
|
41483
|
+
var ClusterSettingNumberSchema = number().finite();
|
|
41484
|
+
function readClusterStepSettings(config) {
|
|
41485
|
+
const out = {};
|
|
41486
|
+
for (const field of CLUSTER_STEP_SETTING_FIELDS) {
|
|
41487
|
+
const parsed = ClusterSettingNumberSchema.safeParse(config[clusterStepSettingKey(field.stepId, field.key)]);
|
|
41488
|
+
const value = parsed.success ? parsed.data : field.default;
|
|
41489
|
+
const existing = out[field.stepId] ?? {};
|
|
41490
|
+
out[field.stepId] = {
|
|
41491
|
+
...existing,
|
|
41492
|
+
[field.key]: value
|
|
41493
|
+
};
|
|
41494
|
+
}
|
|
41495
|
+
return out;
|
|
41496
|
+
}
|
|
41497
|
+
readClusterStepSettings({});
|
|
41229
41498
|
object({
|
|
41230
41499
|
/**
|
|
41231
41500
|
* Fraction of the box's own size added on EACH side before cutting.
|