@camstack/addon-provider-dreame 0.2.26 → 0.2.27
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/addon.js +248 -16
- package/dist/addon.mjs +248 -16
- package/package.json +1 -1
package/dist/addon.js
CHANGED
|
@@ -58525,6 +58525,15 @@ var LabelDefinitionSchema = object({
|
|
|
58525
58525
|
description: string().optional(),
|
|
58526
58526
|
icon: string().optional()
|
|
58527
58527
|
});
|
|
58528
|
+
var ClassMapDefinitionSchema = object({
|
|
58529
|
+
mapping: record(string(), _enum([
|
|
58530
|
+
"person",
|
|
58531
|
+
"vehicle",
|
|
58532
|
+
"animal",
|
|
58533
|
+
"package"
|
|
58534
|
+
])),
|
|
58535
|
+
preserveOriginal: boolean()
|
|
58536
|
+
});
|
|
58528
58537
|
var MODEL_FORMATS = [
|
|
58529
58538
|
"onnx",
|
|
58530
58539
|
"coreml",
|
|
@@ -58703,7 +58712,13 @@ var ModelCatalogEntrySchema = object({
|
|
|
58703
58712
|
* `id` stays the source of truth for resolution/download/persistence; grouping
|
|
58704
58713
|
* is a presentation overlay resolved back to an `id`.
|
|
58705
58714
|
*/
|
|
58706
|
-
group: ModelVariantGroupSchema.optional()
|
|
58715
|
+
group: ModelVariantGroupSchema.optional(),
|
|
58716
|
+
/**
|
|
58717
|
+
* Per-MODEL class map override. Absent ⇒ the step's `StepDefinition.classMap`
|
|
58718
|
+
* applies (Frigate / COCO public catalog). Set on a custom model whose raw
|
|
58719
|
+
* labels already ARE the CamStack macros (Scrypted identity map).
|
|
58720
|
+
*/
|
|
58721
|
+
classMap: ClassMapDefinitionSchema.optional()
|
|
58707
58722
|
});
|
|
58708
58723
|
var ConvertTargetSchema = discriminatedUnion("format", [object({
|
|
58709
58724
|
format: literal("openvino"),
|
|
@@ -58732,7 +58747,8 @@ var ModelConvertMetadataSchema = object({
|
|
|
58732
58747
|
"ocr",
|
|
58733
58748
|
"segmentation"
|
|
58734
58749
|
]),
|
|
58735
|
-
faceAlignment: boolean().optional()
|
|
58750
|
+
faceAlignment: boolean().optional(),
|
|
58751
|
+
classMap: ClassMapDefinitionSchema.optional()
|
|
58736
58752
|
});
|
|
58737
58753
|
var ConvertResultSchema = object({
|
|
58738
58754
|
entry: ModelCatalogEntrySchema,
|
|
@@ -68042,6 +68058,33 @@ var NativeCropRefSchema = object({
|
|
|
68042
68058
|
h: number()
|
|
68043
68059
|
})
|
|
68044
68060
|
});
|
|
68061
|
+
object({
|
|
68062
|
+
crop: object({
|
|
68063
|
+
left: number(),
|
|
68064
|
+
top: number(),
|
|
68065
|
+
width: number().positive(),
|
|
68066
|
+
height: number().positive()
|
|
68067
|
+
}).optional(),
|
|
68068
|
+
content: object({
|
|
68069
|
+
width: number().int().positive(),
|
|
68070
|
+
height: number().int().positive()
|
|
68071
|
+
}),
|
|
68072
|
+
fit: _enum(["stretch", "contain"]),
|
|
68073
|
+
format: _enum([
|
|
68074
|
+
"rgb",
|
|
68075
|
+
"gray",
|
|
68076
|
+
"jpeg"
|
|
68077
|
+
])
|
|
68078
|
+
});
|
|
68079
|
+
var FrameRefSchema = object({
|
|
68080
|
+
registryId: string().min(1),
|
|
68081
|
+
id: string().min(1),
|
|
68082
|
+
width: number().int().positive(),
|
|
68083
|
+
height: number().int().positive(),
|
|
68084
|
+
format: _enum(["rgb", "gray"]),
|
|
68085
|
+
timestamp: number(),
|
|
68086
|
+
capturedAt: number().optional()
|
|
68087
|
+
});
|
|
68045
68088
|
var ModelFormatSchema$1 = _enum([
|
|
68046
68089
|
"onnx",
|
|
68047
68090
|
"coreml",
|
|
@@ -68286,6 +68329,12 @@ method(_void(), array(PipelineEngineChoiceSchema)), method(_void(), PipelineEngi
|
|
|
68286
68329
|
steps: array(PipelineStepInputSchema).min(1),
|
|
68287
68330
|
frame: FrameInputSchema.optional(),
|
|
68288
68331
|
/**
|
|
68332
|
+
* Process-local lazy frame. Valid only when caller and provider resolve
|
|
68333
|
+
* in the same execution-group process; split/cross-node callers use
|
|
68334
|
+
* `frame`/`image` inline compatibility instead.
|
|
68335
|
+
*/
|
|
68336
|
+
frameRef: FrameRefSchema.optional(),
|
|
68337
|
+
/**
|
|
68289
68338
|
* CB5 shm passthrough — a `FrameHandle` naming the same ring slot
|
|
68290
68339
|
* the decoded pixels live in. One more member of the one-of
|
|
68291
68340
|
* frame/frameHandle/image/imageBase64/referenceImage group.
|
|
@@ -68581,7 +68630,10 @@ var NativeCropResultSchema = object({
|
|
|
68581
68630
|
* Which source served this crop, so a quality-sensitive consumer (the native
|
|
68582
68631
|
* `keyFrame`) can reject a degraded fallback:
|
|
68583
68632
|
* - `native` — cut from the decode worker's retained NATIVE surface (the
|
|
68584
|
-
* quality path).
|
|
68633
|
+
* quality path). A subject-tile serve is also native-resolution and stays
|
|
68634
|
+
* `native` here: the public enum cannot name `tile` without a breaking cap
|
|
68635
|
+
* change. Runner telemetry distinguishes lease vs tile via `source` on the
|
|
68636
|
+
* internal crop result (`nativeHits` vs `tileHits`).
|
|
68585
68637
|
* - `ram-fullframe` — the native surface MISSED but the request was full-frame,
|
|
68586
68638
|
* so the ≤640 RAM `RetainedFrameStore` served it (honest lower-res; legit for
|
|
68587
68639
|
* the blank-frame guard / 640-snapshot resolve, NOT for the clean keyFrame).
|
|
@@ -69072,12 +69124,41 @@ var RunnerLocalLoadSchema = object({
|
|
|
69072
69124
|
* legacy `OrchestratorMetricsSchema` shape so existing dashboards keep
|
|
69073
69125
|
* working unchanged when they switch to reading from the runner cap.
|
|
69074
69126
|
*/
|
|
69127
|
+
var FrameLazyCountersSchema = object({
|
|
69128
|
+
framesDecoded: number(),
|
|
69129
|
+
framesAdmitted: number(),
|
|
69130
|
+
framesDroppedPixelFree: number(),
|
|
69131
|
+
viewsMaterialized: number(),
|
|
69132
|
+
viewsSkipped: number(),
|
|
69133
|
+
workerToRunnerBytes: number(),
|
|
69134
|
+
runnerToPoolRawBytes: number(),
|
|
69135
|
+
runnerToPoolJpegBytes: number(),
|
|
69136
|
+
onDemandFullFrameRequests: number(),
|
|
69137
|
+
onDemandCropRequests: number(),
|
|
69138
|
+
nativeHits: number(),
|
|
69139
|
+
nativeMisses: number(),
|
|
69140
|
+
tileHits: number(),
|
|
69141
|
+
tileMisses: number(),
|
|
69142
|
+
fallbackHits: number(),
|
|
69143
|
+
fallbackMisses: number(),
|
|
69144
|
+
retainedWritesAvoided: number(),
|
|
69145
|
+
residentRefs: number(),
|
|
69146
|
+
residentBytes: number(),
|
|
69147
|
+
releases: number(),
|
|
69148
|
+
evictions: number(),
|
|
69149
|
+
staleMisses: number()
|
|
69150
|
+
});
|
|
69151
|
+
var FrameLazyMetricsSchema = object({
|
|
69152
|
+
node: FrameLazyCountersSchema,
|
|
69153
|
+
cameras: array(FrameLazyCountersSchema.extend({ deviceId: number() }))
|
|
69154
|
+
});
|
|
69075
69155
|
var RunnerLocalMetricsSchema = object({
|
|
69076
69156
|
nodeId: string(),
|
|
69077
69157
|
activeCameras: number(),
|
|
69078
69158
|
throttledCameras: number(),
|
|
69079
69159
|
avgInferenceTimeMs: number(),
|
|
69080
|
-
queueDepth: number()
|
|
69160
|
+
queueDepth: number(),
|
|
69161
|
+
frameLazy: FrameLazyMetricsSchema.optional()
|
|
69081
69162
|
});
|
|
69082
69163
|
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({
|
|
69083
69164
|
handle: FrameHandleSchema,
|
|
@@ -70377,6 +70458,9 @@ method(_void(), ProviderInfoSchema), method(object({ config: record(string(), un
|
|
|
70377
70458
|
location: StorageLocationSchema,
|
|
70378
70459
|
relativePath: string()
|
|
70379
70460
|
}), _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" });
|
|
70461
|
+
/** Profile-exported FormBuilder schema. Shape is ConfigUISchema at the UI. */
|
|
70462
|
+
var ProfileSettingsSchemaBridge = unknown().nullable();
|
|
70463
|
+
var ProfileSettingsBagSchema = record(string(), unknown());
|
|
70380
70464
|
/**
|
|
70381
70465
|
* A live terminal session hosted by the provider addon. Output and input do
|
|
70382
70466
|
* NOT flow through the capability — they use the addon data plane
|
|
@@ -70406,7 +70490,14 @@ var TerminalSessionInfoSchema = object({
|
|
|
70406
70490
|
var TerminalProfileInfoSchema = object({
|
|
70407
70491
|
profileId: string(),
|
|
70408
70492
|
label: string(),
|
|
70409
|
-
description: string().optional()
|
|
70493
|
+
description: string().optional(),
|
|
70494
|
+
/** Spawn defaults the instance form copies on create. */
|
|
70495
|
+
executable: string().optional(),
|
|
70496
|
+
args: array(string()).readonly().optional(),
|
|
70497
|
+
cwd: string().optional(),
|
|
70498
|
+
environment: array(string()).readonly().optional(),
|
|
70499
|
+
/** ConfigUISchema for instance knobs, or null when the profile has none. */
|
|
70500
|
+
settingsSchema: ProfileSettingsSchemaBridge.optional()
|
|
70410
70501
|
});
|
|
70411
70502
|
/**
|
|
70412
70503
|
* A durable operator-created Terminal instance. Profiles are templates; only
|
|
@@ -70419,7 +70510,12 @@ var TerminalInstanceInfoSchema = object({
|
|
|
70419
70510
|
profileId: string(),
|
|
70420
70511
|
profileLabel: string(),
|
|
70421
70512
|
name: string(),
|
|
70422
|
-
enabled: boolean()
|
|
70513
|
+
enabled: boolean(),
|
|
70514
|
+
executable: string(),
|
|
70515
|
+
args: array(string()).readonly(),
|
|
70516
|
+
cwd: string(),
|
|
70517
|
+
environment: array(string()).readonly(),
|
|
70518
|
+
profileSettings: ProfileSettingsBagSchema
|
|
70423
70519
|
});
|
|
70424
70520
|
var TerminalLegacyCameraSchema = object({
|
|
70425
70521
|
stableId: string(),
|
|
@@ -70449,7 +70545,23 @@ var TerminalOutputBatchSchema = object({
|
|
|
70449
70545
|
method(_void(), array(TerminalProfileInfoSchema).readonly(), { auth: "admin" }), method(_void(), array(TerminalInstanceInfoSchema).readonly(), { auth: "admin" }), method(object({
|
|
70450
70546
|
targetNodeId: string().min(1),
|
|
70451
70547
|
profileId: string().min(1),
|
|
70452
|
-
name: string().trim().min(1).max(160).optional()
|
|
70548
|
+
name: string().trim().min(1).max(160).optional(),
|
|
70549
|
+
executable: string().max(1024).optional(),
|
|
70550
|
+
args: array(string().max(2048)).max(64).optional(),
|
|
70551
|
+
cwd: string().max(1024).optional(),
|
|
70552
|
+
environment: array(string().max(4096)).max(64).optional(),
|
|
70553
|
+
profileSettings: ProfileSettingsBagSchema.optional()
|
|
70554
|
+
}), TerminalInstanceInfoSchema, {
|
|
70555
|
+
kind: "mutation",
|
|
70556
|
+
auth: "admin"
|
|
70557
|
+
}), method(object({
|
|
70558
|
+
instanceId: string().min(1),
|
|
70559
|
+
name: string().trim().min(1).max(160).optional(),
|
|
70560
|
+
executable: string().max(1024).optional(),
|
|
70561
|
+
args: array(string().max(2048)).max(64).optional(),
|
|
70562
|
+
cwd: string().max(1024).optional(),
|
|
70563
|
+
environment: array(string().max(4096)).max(64).optional(),
|
|
70564
|
+
profileSettings: ProfileSettingsBagSchema.optional()
|
|
70453
70565
|
}), TerminalInstanceInfoSchema, {
|
|
70454
70566
|
kind: "mutation",
|
|
70455
70567
|
auth: "admin"
|
|
@@ -70471,7 +70583,11 @@ method(_void(), array(TerminalProfileInfoSchema).readonly(), { auth: "admin" }),
|
|
|
70471
70583
|
}), method(_void(), array(TerminalSessionInfoSchema).readonly(), { auth: "admin" }), method(object({
|
|
70472
70584
|
profileId: string(),
|
|
70473
70585
|
cols: number().int().positive(),
|
|
70474
|
-
rows: number().int().positive()
|
|
70586
|
+
rows: number().int().positive(),
|
|
70587
|
+
executable: string().max(1024).optional(),
|
|
70588
|
+
args: array(string().max(2048)).max(64).optional(),
|
|
70589
|
+
cwd: string().max(1024).optional(),
|
|
70590
|
+
environment: array(string().max(4096)).max(64).optional()
|
|
70475
70591
|
}), TerminalSessionInfoSchema, {
|
|
70476
70592
|
kind: "mutation",
|
|
70477
70593
|
auth: "admin"
|
|
@@ -74371,10 +74487,10 @@ var lawnMowerControlCapability = {
|
|
|
74371
74487
|
*
|
|
74372
74488
|
* • The SDK (mobile / web client) consumes `getConnectionEndpoints()`
|
|
74373
74489
|
* to receive an ordered list of candidate base URLs it should race
|
|
74374
|
-
* on connect — LAN IPv4 first (lowest latency
|
|
74375
|
-
* then public hostname (if a tunnel is
|
|
74376
|
-
* race them with short timeouts and stick with the
|
|
74377
|
-
* session.
|
|
74490
|
+
* on connect — LAN IPv4 and stable LAN IPv6 first (lowest latency
|
|
74491
|
+
* when on the same network), then public hostname (if a tunnel is
|
|
74492
|
+
* up). The SDK can race them with short timeouts and stick with the
|
|
74493
|
+
* winner for the session.
|
|
74378
74494
|
*
|
|
74379
74495
|
* Why hub-only: agents are not directly addressable by the operator's
|
|
74380
74496
|
* clients — they reverse-connect to the hub. Exposing their interfaces
|
|
@@ -74529,6 +74645,17 @@ var NotificationEndpointSchema = object({
|
|
|
74529
74645
|
/** What the ranking currently resolves to (null when nothing is reachable). */
|
|
74530
74646
|
resolved: string().nullable()
|
|
74531
74647
|
});
|
|
74648
|
+
/**
|
|
74649
|
+
* The URLs the SDK / viewer should race for API access. `baseUrls` empty =
|
|
74650
|
+
* AUTO (every LAN IPv4 + the public tunnel). `resolved` is what that choice
|
|
74651
|
+
* currently expands to, so the UI can show the effective set either way.
|
|
74652
|
+
*/
|
|
74653
|
+
var ViewerEndpointsSchema = object({
|
|
74654
|
+
/** The operator's explicit race set, or empty for AUTO. */
|
|
74655
|
+
baseUrls: array(string()).readonly(),
|
|
74656
|
+
/** What the ranking currently resolves to (may be empty if nothing is up). */
|
|
74657
|
+
resolved: array(string()).readonly()
|
|
74658
|
+
});
|
|
74532
74659
|
var AllowedAddressesSchema = object({
|
|
74533
74660
|
/**
|
|
74534
74661
|
* Allowlist of interface addresses operators have explicitly opted
|
|
@@ -74537,6 +74664,20 @@ var AllowedAddressesSchema = object({
|
|
|
74537
74664
|
* Network Addresses admin page and persisted by the addon.
|
|
74538
74665
|
*/
|
|
74539
74666
|
addresses: array(string()).readonly() });
|
|
74667
|
+
var TlsStatusSchema = object({
|
|
74668
|
+
mode: _enum([
|
|
74669
|
+
"generated",
|
|
74670
|
+
"uploaded",
|
|
74671
|
+
"disabled"
|
|
74672
|
+
]),
|
|
74673
|
+
leafFingerprintSha256: string().nullable(),
|
|
74674
|
+
caFingerprintSha256: string().nullable(),
|
|
74675
|
+
validTo: string().nullable(),
|
|
74676
|
+
sans: array(string()),
|
|
74677
|
+
caCertPem: string().nullable(),
|
|
74678
|
+
reissueError: string().nullable(),
|
|
74679
|
+
restartRequired: boolean()
|
|
74680
|
+
});
|
|
74540
74681
|
method(_void(), ListResultSchema), method(_void(), PreferredSchema), method(object({
|
|
74541
74682
|
/**
|
|
74542
74683
|
* LEGACY HINT — do not send from new code. Kept optional so clients
|
|
@@ -74546,17 +74687,31 @@ method(_void(), ListResultSchema), method(_void(), PreferredSchema), method(obje
|
|
|
74546
74687
|
*/
|
|
74547
74688
|
port: number().int().min(1).max(65535).optional(),
|
|
74548
74689
|
/** Include `http(s)://127.0.0.1:<port>` as the lowest-priority
|
|
74549
|
-
* candidate. Default `
|
|
74690
|
+
* candidate. Default `false` — loopback is not a client route. */
|
|
74550
74691
|
includeLoopback: boolean().optional(),
|
|
74551
|
-
/** Skip IPv6 entries.
|
|
74552
|
-
*
|
|
74692
|
+
/** Skip IPv6 entries. Default `false` — the palette includes stable
|
|
74693
|
+
* LAN IPv6 (ICE/WebRTC uses dual-stack regardless). Pass `true` to
|
|
74694
|
+
* hide them. The viewer HTTP/WS race is `getViewerEndpoints`. */
|
|
74553
74695
|
ipv4Only: boolean().optional(),
|
|
74554
74696
|
/** Scheme to emit for LAN/loopback URLs. Default `'http'`.
|
|
74555
74697
|
* Pass `'https'` when the caller is itself loaded over HTTPS
|
|
74556
74698
|
* to avoid mixed-content blocks in the browser. The public
|
|
74557
74699
|
* tunnel always emits `https://` regardless. */
|
|
74558
74700
|
scheme: _enum(["http", "https"]).optional()
|
|
74559
|
-
}), 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" })
|
|
74701
|
+
}), 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, {
|
|
74702
|
+
kind: "mutation",
|
|
74703
|
+
auth: "admin"
|
|
74704
|
+
}), method(object({
|
|
74705
|
+
certPem: string().min(1),
|
|
74706
|
+
keyPem: string().min(1),
|
|
74707
|
+
caPem: string().optional()
|
|
74708
|
+
}), TlsStatusSchema, {
|
|
74709
|
+
kind: "mutation",
|
|
74710
|
+
auth: "admin"
|
|
74711
|
+
}), method(_void(), object({ pem: string() })), method(_void(), TlsStatusSchema, {
|
|
74712
|
+
kind: "mutation",
|
|
74713
|
+
auth: "admin"
|
|
74714
|
+
});
|
|
74560
74715
|
var LockControlStatusSchema = object({
|
|
74561
74716
|
/** Lifecycle state of the lock. `jammed` means the motor reported
|
|
74562
74717
|
* failure to reach the target — operator intervention required. */
|
|
@@ -82583,6 +82738,12 @@ Object.freeze({
|
|
|
82583
82738
|
addonId: null,
|
|
82584
82739
|
access: "create"
|
|
82585
82740
|
},
|
|
82741
|
+
"localNetwork.downloadCa": {
|
|
82742
|
+
capName: "local-network",
|
|
82743
|
+
capScope: "system",
|
|
82744
|
+
addonId: null,
|
|
82745
|
+
access: "view"
|
|
82746
|
+
},
|
|
82586
82747
|
"localNetwork.getAllowedAddresses": {
|
|
82587
82748
|
capName: "local-network",
|
|
82588
82749
|
capScope: "system",
|
|
@@ -82607,18 +82768,42 @@ Object.freeze({
|
|
|
82607
82768
|
addonId: null,
|
|
82608
82769
|
access: "view"
|
|
82609
82770
|
},
|
|
82771
|
+
"localNetwork.getTlsStatus": {
|
|
82772
|
+
capName: "local-network",
|
|
82773
|
+
capScope: "system",
|
|
82774
|
+
addonId: null,
|
|
82775
|
+
access: "view"
|
|
82776
|
+
},
|
|
82777
|
+
"localNetwork.getViewerEndpoints": {
|
|
82778
|
+
capName: "local-network",
|
|
82779
|
+
capScope: "system",
|
|
82780
|
+
addonId: null,
|
|
82781
|
+
access: "view"
|
|
82782
|
+
},
|
|
82610
82783
|
"localNetwork.list": {
|
|
82611
82784
|
capName: "local-network",
|
|
82612
82785
|
capScope: "system",
|
|
82613
82786
|
addonId: null,
|
|
82614
82787
|
access: "view"
|
|
82615
82788
|
},
|
|
82789
|
+
"localNetwork.regenerateCertificate": {
|
|
82790
|
+
capName: "local-network",
|
|
82791
|
+
capScope: "system",
|
|
82792
|
+
addonId: null,
|
|
82793
|
+
access: "create"
|
|
82794
|
+
},
|
|
82616
82795
|
"localNetwork.resetAllowlistToBestMatch": {
|
|
82617
82796
|
capName: "local-network",
|
|
82618
82797
|
capScope: "system",
|
|
82619
82798
|
addonId: null,
|
|
82620
82799
|
access: "delete"
|
|
82621
82800
|
},
|
|
82801
|
+
"localNetwork.revertToGeneratedCertificate": {
|
|
82802
|
+
capName: "local-network",
|
|
82803
|
+
capScope: "system",
|
|
82804
|
+
addonId: null,
|
|
82805
|
+
access: "create"
|
|
82806
|
+
},
|
|
82622
82807
|
"localNetwork.setAllowedAddresses": {
|
|
82623
82808
|
capName: "local-network",
|
|
82624
82809
|
capScope: "system",
|
|
@@ -82631,6 +82816,18 @@ Object.freeze({
|
|
|
82631
82816
|
addonId: null,
|
|
82632
82817
|
access: "create"
|
|
82633
82818
|
},
|
|
82819
|
+
"localNetwork.setViewerEndpoints": {
|
|
82820
|
+
capName: "local-network",
|
|
82821
|
+
capScope: "system",
|
|
82822
|
+
addonId: null,
|
|
82823
|
+
access: "create"
|
|
82824
|
+
},
|
|
82825
|
+
"localNetwork.uploadCertificate": {
|
|
82826
|
+
capName: "local-network",
|
|
82827
|
+
capScope: "system",
|
|
82828
|
+
addonId: null,
|
|
82829
|
+
access: "create"
|
|
82830
|
+
},
|
|
82634
82831
|
"lockControl.lock": {
|
|
82635
82832
|
capName: "lock-control",
|
|
82636
82833
|
capScope: "device",
|
|
@@ -85511,6 +85708,12 @@ Object.freeze({
|
|
|
85511
85708
|
addonId: null,
|
|
85512
85709
|
access: "create"
|
|
85513
85710
|
},
|
|
85711
|
+
"terminalSession.updateInstance": {
|
|
85712
|
+
capName: "terminal-session",
|
|
85713
|
+
capScope: "system",
|
|
85714
|
+
addonId: null,
|
|
85715
|
+
access: "create"
|
|
85716
|
+
},
|
|
85514
85717
|
"terminalSession.writeInput": {
|
|
85515
85718
|
capName: "terminal-session",
|
|
85516
85719
|
capScope: "system",
|
|
@@ -87998,6 +88201,35 @@ Object.freeze(Object.fromEntries([{
|
|
|
87998
88201
|
}]
|
|
87999
88202
|
}].map((s) => [s.stepId, s.defaultModelId])));
|
|
88000
88203
|
string().min(1);
|
|
88204
|
+
var CLUSTER_STEP_SETTING_FIELDS = [{
|
|
88205
|
+
stepId: "face-embedding",
|
|
88206
|
+
key: "minLandmarkFaceSize",
|
|
88207
|
+
label: "Min face size for recognition (detection px)",
|
|
88208
|
+
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.",
|
|
88209
|
+
type: "slider",
|
|
88210
|
+
min: 0,
|
|
88211
|
+
max: 64,
|
|
88212
|
+
step: 2,
|
|
88213
|
+
default: 24
|
|
88214
|
+
}];
|
|
88215
|
+
function clusterStepSettingKey(stepId, fieldKey) {
|
|
88216
|
+
return `clusterStepSetting:${stepId}:${fieldKey}`;
|
|
88217
|
+
}
|
|
88218
|
+
var ClusterSettingNumberSchema = number().finite();
|
|
88219
|
+
function readClusterStepSettings(config) {
|
|
88220
|
+
const out = {};
|
|
88221
|
+
for (const field of CLUSTER_STEP_SETTING_FIELDS) {
|
|
88222
|
+
const parsed = ClusterSettingNumberSchema.safeParse(config[clusterStepSettingKey(field.stepId, field.key)]);
|
|
88223
|
+
const value = parsed.success ? parsed.data : field.default;
|
|
88224
|
+
const existing = out[field.stepId] ?? {};
|
|
88225
|
+
out[field.stepId] = {
|
|
88226
|
+
...existing,
|
|
88227
|
+
[field.key]: value
|
|
88228
|
+
};
|
|
88229
|
+
}
|
|
88230
|
+
return out;
|
|
88231
|
+
}
|
|
88232
|
+
readClusterStepSettings({});
|
|
88001
88233
|
object({
|
|
88002
88234
|
/**
|
|
88003
88235
|
* Fraction of the box's own size added on EACH side before cutting.
|
package/dist/addon.mjs
CHANGED
|
@@ -58525,6 +58525,15 @@ var LabelDefinitionSchema = object({
|
|
|
58525
58525
|
description: string().optional(),
|
|
58526
58526
|
icon: string().optional()
|
|
58527
58527
|
});
|
|
58528
|
+
var ClassMapDefinitionSchema = object({
|
|
58529
|
+
mapping: record(string(), _enum([
|
|
58530
|
+
"person",
|
|
58531
|
+
"vehicle",
|
|
58532
|
+
"animal",
|
|
58533
|
+
"package"
|
|
58534
|
+
])),
|
|
58535
|
+
preserveOriginal: boolean()
|
|
58536
|
+
});
|
|
58528
58537
|
var MODEL_FORMATS = [
|
|
58529
58538
|
"onnx",
|
|
58530
58539
|
"coreml",
|
|
@@ -58703,7 +58712,13 @@ var ModelCatalogEntrySchema = object({
|
|
|
58703
58712
|
* `id` stays the source of truth for resolution/download/persistence; grouping
|
|
58704
58713
|
* is a presentation overlay resolved back to an `id`.
|
|
58705
58714
|
*/
|
|
58706
|
-
group: ModelVariantGroupSchema.optional()
|
|
58715
|
+
group: ModelVariantGroupSchema.optional(),
|
|
58716
|
+
/**
|
|
58717
|
+
* Per-MODEL class map override. Absent ⇒ the step's `StepDefinition.classMap`
|
|
58718
|
+
* applies (Frigate / COCO public catalog). Set on a custom model whose raw
|
|
58719
|
+
* labels already ARE the CamStack macros (Scrypted identity map).
|
|
58720
|
+
*/
|
|
58721
|
+
classMap: ClassMapDefinitionSchema.optional()
|
|
58707
58722
|
});
|
|
58708
58723
|
var ConvertTargetSchema = discriminatedUnion("format", [object({
|
|
58709
58724
|
format: literal("openvino"),
|
|
@@ -58732,7 +58747,8 @@ var ModelConvertMetadataSchema = object({
|
|
|
58732
58747
|
"ocr",
|
|
58733
58748
|
"segmentation"
|
|
58734
58749
|
]),
|
|
58735
|
-
faceAlignment: boolean().optional()
|
|
58750
|
+
faceAlignment: boolean().optional(),
|
|
58751
|
+
classMap: ClassMapDefinitionSchema.optional()
|
|
58736
58752
|
});
|
|
58737
58753
|
var ConvertResultSchema = object({
|
|
58738
58754
|
entry: ModelCatalogEntrySchema,
|
|
@@ -68042,6 +68058,33 @@ var NativeCropRefSchema = object({
|
|
|
68042
68058
|
h: number()
|
|
68043
68059
|
})
|
|
68044
68060
|
});
|
|
68061
|
+
object({
|
|
68062
|
+
crop: object({
|
|
68063
|
+
left: number(),
|
|
68064
|
+
top: number(),
|
|
68065
|
+
width: number().positive(),
|
|
68066
|
+
height: number().positive()
|
|
68067
|
+
}).optional(),
|
|
68068
|
+
content: object({
|
|
68069
|
+
width: number().int().positive(),
|
|
68070
|
+
height: number().int().positive()
|
|
68071
|
+
}),
|
|
68072
|
+
fit: _enum(["stretch", "contain"]),
|
|
68073
|
+
format: _enum([
|
|
68074
|
+
"rgb",
|
|
68075
|
+
"gray",
|
|
68076
|
+
"jpeg"
|
|
68077
|
+
])
|
|
68078
|
+
});
|
|
68079
|
+
var FrameRefSchema = object({
|
|
68080
|
+
registryId: string().min(1),
|
|
68081
|
+
id: string().min(1),
|
|
68082
|
+
width: number().int().positive(),
|
|
68083
|
+
height: number().int().positive(),
|
|
68084
|
+
format: _enum(["rgb", "gray"]),
|
|
68085
|
+
timestamp: number(),
|
|
68086
|
+
capturedAt: number().optional()
|
|
68087
|
+
});
|
|
68045
68088
|
var ModelFormatSchema$1 = _enum([
|
|
68046
68089
|
"onnx",
|
|
68047
68090
|
"coreml",
|
|
@@ -68286,6 +68329,12 @@ method(_void(), array(PipelineEngineChoiceSchema)), method(_void(), PipelineEngi
|
|
|
68286
68329
|
steps: array(PipelineStepInputSchema).min(1),
|
|
68287
68330
|
frame: FrameInputSchema.optional(),
|
|
68288
68331
|
/**
|
|
68332
|
+
* Process-local lazy frame. Valid only when caller and provider resolve
|
|
68333
|
+
* in the same execution-group process; split/cross-node callers use
|
|
68334
|
+
* `frame`/`image` inline compatibility instead.
|
|
68335
|
+
*/
|
|
68336
|
+
frameRef: FrameRefSchema.optional(),
|
|
68337
|
+
/**
|
|
68289
68338
|
* CB5 shm passthrough — a `FrameHandle` naming the same ring slot
|
|
68290
68339
|
* the decoded pixels live in. One more member of the one-of
|
|
68291
68340
|
* frame/frameHandle/image/imageBase64/referenceImage group.
|
|
@@ -68581,7 +68630,10 @@ var NativeCropResultSchema = object({
|
|
|
68581
68630
|
* Which source served this crop, so a quality-sensitive consumer (the native
|
|
68582
68631
|
* `keyFrame`) can reject a degraded fallback:
|
|
68583
68632
|
* - `native` — cut from the decode worker's retained NATIVE surface (the
|
|
68584
|
-
* quality path).
|
|
68633
|
+
* quality path). A subject-tile serve is also native-resolution and stays
|
|
68634
|
+
* `native` here: the public enum cannot name `tile` without a breaking cap
|
|
68635
|
+
* change. Runner telemetry distinguishes lease vs tile via `source` on the
|
|
68636
|
+
* internal crop result (`nativeHits` vs `tileHits`).
|
|
68585
68637
|
* - `ram-fullframe` — the native surface MISSED but the request was full-frame,
|
|
68586
68638
|
* so the ≤640 RAM `RetainedFrameStore` served it (honest lower-res; legit for
|
|
68587
68639
|
* the blank-frame guard / 640-snapshot resolve, NOT for the clean keyFrame).
|
|
@@ -69072,12 +69124,41 @@ var RunnerLocalLoadSchema = object({
|
|
|
69072
69124
|
* legacy `OrchestratorMetricsSchema` shape so existing dashboards keep
|
|
69073
69125
|
* working unchanged when they switch to reading from the runner cap.
|
|
69074
69126
|
*/
|
|
69127
|
+
var FrameLazyCountersSchema = object({
|
|
69128
|
+
framesDecoded: number(),
|
|
69129
|
+
framesAdmitted: number(),
|
|
69130
|
+
framesDroppedPixelFree: number(),
|
|
69131
|
+
viewsMaterialized: number(),
|
|
69132
|
+
viewsSkipped: number(),
|
|
69133
|
+
workerToRunnerBytes: number(),
|
|
69134
|
+
runnerToPoolRawBytes: number(),
|
|
69135
|
+
runnerToPoolJpegBytes: number(),
|
|
69136
|
+
onDemandFullFrameRequests: number(),
|
|
69137
|
+
onDemandCropRequests: number(),
|
|
69138
|
+
nativeHits: number(),
|
|
69139
|
+
nativeMisses: number(),
|
|
69140
|
+
tileHits: number(),
|
|
69141
|
+
tileMisses: number(),
|
|
69142
|
+
fallbackHits: number(),
|
|
69143
|
+
fallbackMisses: number(),
|
|
69144
|
+
retainedWritesAvoided: number(),
|
|
69145
|
+
residentRefs: number(),
|
|
69146
|
+
residentBytes: number(),
|
|
69147
|
+
releases: number(),
|
|
69148
|
+
evictions: number(),
|
|
69149
|
+
staleMisses: number()
|
|
69150
|
+
});
|
|
69151
|
+
var FrameLazyMetricsSchema = object({
|
|
69152
|
+
node: FrameLazyCountersSchema,
|
|
69153
|
+
cameras: array(FrameLazyCountersSchema.extend({ deviceId: number() }))
|
|
69154
|
+
});
|
|
69075
69155
|
var RunnerLocalMetricsSchema = object({
|
|
69076
69156
|
nodeId: string(),
|
|
69077
69157
|
activeCameras: number(),
|
|
69078
69158
|
throttledCameras: number(),
|
|
69079
69159
|
avgInferenceTimeMs: number(),
|
|
69080
|
-
queueDepth: number()
|
|
69160
|
+
queueDepth: number(),
|
|
69161
|
+
frameLazy: FrameLazyMetricsSchema.optional()
|
|
69081
69162
|
});
|
|
69082
69163
|
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({
|
|
69083
69164
|
handle: FrameHandleSchema,
|
|
@@ -70377,6 +70458,9 @@ method(_void(), ProviderInfoSchema), method(object({ config: record(string(), un
|
|
|
70377
70458
|
location: StorageLocationSchema,
|
|
70378
70459
|
relativePath: string()
|
|
70379
70460
|
}), _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" });
|
|
70461
|
+
/** Profile-exported FormBuilder schema. Shape is ConfigUISchema at the UI. */
|
|
70462
|
+
var ProfileSettingsSchemaBridge = unknown().nullable();
|
|
70463
|
+
var ProfileSettingsBagSchema = record(string(), unknown());
|
|
70380
70464
|
/**
|
|
70381
70465
|
* A live terminal session hosted by the provider addon. Output and input do
|
|
70382
70466
|
* NOT flow through the capability — they use the addon data plane
|
|
@@ -70406,7 +70490,14 @@ var TerminalSessionInfoSchema = object({
|
|
|
70406
70490
|
var TerminalProfileInfoSchema = object({
|
|
70407
70491
|
profileId: string(),
|
|
70408
70492
|
label: string(),
|
|
70409
|
-
description: string().optional()
|
|
70493
|
+
description: string().optional(),
|
|
70494
|
+
/** Spawn defaults the instance form copies on create. */
|
|
70495
|
+
executable: string().optional(),
|
|
70496
|
+
args: array(string()).readonly().optional(),
|
|
70497
|
+
cwd: string().optional(),
|
|
70498
|
+
environment: array(string()).readonly().optional(),
|
|
70499
|
+
/** ConfigUISchema for instance knobs, or null when the profile has none. */
|
|
70500
|
+
settingsSchema: ProfileSettingsSchemaBridge.optional()
|
|
70410
70501
|
});
|
|
70411
70502
|
/**
|
|
70412
70503
|
* A durable operator-created Terminal instance. Profiles are templates; only
|
|
@@ -70419,7 +70510,12 @@ var TerminalInstanceInfoSchema = object({
|
|
|
70419
70510
|
profileId: string(),
|
|
70420
70511
|
profileLabel: string(),
|
|
70421
70512
|
name: string(),
|
|
70422
|
-
enabled: boolean()
|
|
70513
|
+
enabled: boolean(),
|
|
70514
|
+
executable: string(),
|
|
70515
|
+
args: array(string()).readonly(),
|
|
70516
|
+
cwd: string(),
|
|
70517
|
+
environment: array(string()).readonly(),
|
|
70518
|
+
profileSettings: ProfileSettingsBagSchema
|
|
70423
70519
|
});
|
|
70424
70520
|
var TerminalLegacyCameraSchema = object({
|
|
70425
70521
|
stableId: string(),
|
|
@@ -70449,7 +70545,23 @@ var TerminalOutputBatchSchema = object({
|
|
|
70449
70545
|
method(_void(), array(TerminalProfileInfoSchema).readonly(), { auth: "admin" }), method(_void(), array(TerminalInstanceInfoSchema).readonly(), { auth: "admin" }), method(object({
|
|
70450
70546
|
targetNodeId: string().min(1),
|
|
70451
70547
|
profileId: string().min(1),
|
|
70452
|
-
name: string().trim().min(1).max(160).optional()
|
|
70548
|
+
name: string().trim().min(1).max(160).optional(),
|
|
70549
|
+
executable: string().max(1024).optional(),
|
|
70550
|
+
args: array(string().max(2048)).max(64).optional(),
|
|
70551
|
+
cwd: string().max(1024).optional(),
|
|
70552
|
+
environment: array(string().max(4096)).max(64).optional(),
|
|
70553
|
+
profileSettings: ProfileSettingsBagSchema.optional()
|
|
70554
|
+
}), TerminalInstanceInfoSchema, {
|
|
70555
|
+
kind: "mutation",
|
|
70556
|
+
auth: "admin"
|
|
70557
|
+
}), method(object({
|
|
70558
|
+
instanceId: string().min(1),
|
|
70559
|
+
name: string().trim().min(1).max(160).optional(),
|
|
70560
|
+
executable: string().max(1024).optional(),
|
|
70561
|
+
args: array(string().max(2048)).max(64).optional(),
|
|
70562
|
+
cwd: string().max(1024).optional(),
|
|
70563
|
+
environment: array(string().max(4096)).max(64).optional(),
|
|
70564
|
+
profileSettings: ProfileSettingsBagSchema.optional()
|
|
70453
70565
|
}), TerminalInstanceInfoSchema, {
|
|
70454
70566
|
kind: "mutation",
|
|
70455
70567
|
auth: "admin"
|
|
@@ -70471,7 +70583,11 @@ method(_void(), array(TerminalProfileInfoSchema).readonly(), { auth: "admin" }),
|
|
|
70471
70583
|
}), method(_void(), array(TerminalSessionInfoSchema).readonly(), { auth: "admin" }), method(object({
|
|
70472
70584
|
profileId: string(),
|
|
70473
70585
|
cols: number().int().positive(),
|
|
70474
|
-
rows: number().int().positive()
|
|
70586
|
+
rows: number().int().positive(),
|
|
70587
|
+
executable: string().max(1024).optional(),
|
|
70588
|
+
args: array(string().max(2048)).max(64).optional(),
|
|
70589
|
+
cwd: string().max(1024).optional(),
|
|
70590
|
+
environment: array(string().max(4096)).max(64).optional()
|
|
70475
70591
|
}), TerminalSessionInfoSchema, {
|
|
70476
70592
|
kind: "mutation",
|
|
70477
70593
|
auth: "admin"
|
|
@@ -74371,10 +74487,10 @@ var lawnMowerControlCapability = {
|
|
|
74371
74487
|
*
|
|
74372
74488
|
* • The SDK (mobile / web client) consumes `getConnectionEndpoints()`
|
|
74373
74489
|
* to receive an ordered list of candidate base URLs it should race
|
|
74374
|
-
* on connect — LAN IPv4 first (lowest latency
|
|
74375
|
-
* then public hostname (if a tunnel is
|
|
74376
|
-
* race them with short timeouts and stick with the
|
|
74377
|
-
* session.
|
|
74490
|
+
* on connect — LAN IPv4 and stable LAN IPv6 first (lowest latency
|
|
74491
|
+
* when on the same network), then public hostname (if a tunnel is
|
|
74492
|
+
* up). The SDK can race them with short timeouts and stick with the
|
|
74493
|
+
* winner for the session.
|
|
74378
74494
|
*
|
|
74379
74495
|
* Why hub-only: agents are not directly addressable by the operator's
|
|
74380
74496
|
* clients — they reverse-connect to the hub. Exposing their interfaces
|
|
@@ -74529,6 +74645,17 @@ var NotificationEndpointSchema = object({
|
|
|
74529
74645
|
/** What the ranking currently resolves to (null when nothing is reachable). */
|
|
74530
74646
|
resolved: string().nullable()
|
|
74531
74647
|
});
|
|
74648
|
+
/**
|
|
74649
|
+
* The URLs the SDK / viewer should race for API access. `baseUrls` empty =
|
|
74650
|
+
* AUTO (every LAN IPv4 + the public tunnel). `resolved` is what that choice
|
|
74651
|
+
* currently expands to, so the UI can show the effective set either way.
|
|
74652
|
+
*/
|
|
74653
|
+
var ViewerEndpointsSchema = object({
|
|
74654
|
+
/** The operator's explicit race set, or empty for AUTO. */
|
|
74655
|
+
baseUrls: array(string()).readonly(),
|
|
74656
|
+
/** What the ranking currently resolves to (may be empty if nothing is up). */
|
|
74657
|
+
resolved: array(string()).readonly()
|
|
74658
|
+
});
|
|
74532
74659
|
var AllowedAddressesSchema = object({
|
|
74533
74660
|
/**
|
|
74534
74661
|
* Allowlist of interface addresses operators have explicitly opted
|
|
@@ -74537,6 +74664,20 @@ var AllowedAddressesSchema = object({
|
|
|
74537
74664
|
* Network Addresses admin page and persisted by the addon.
|
|
74538
74665
|
*/
|
|
74539
74666
|
addresses: array(string()).readonly() });
|
|
74667
|
+
var TlsStatusSchema = object({
|
|
74668
|
+
mode: _enum([
|
|
74669
|
+
"generated",
|
|
74670
|
+
"uploaded",
|
|
74671
|
+
"disabled"
|
|
74672
|
+
]),
|
|
74673
|
+
leafFingerprintSha256: string().nullable(),
|
|
74674
|
+
caFingerprintSha256: string().nullable(),
|
|
74675
|
+
validTo: string().nullable(),
|
|
74676
|
+
sans: array(string()),
|
|
74677
|
+
caCertPem: string().nullable(),
|
|
74678
|
+
reissueError: string().nullable(),
|
|
74679
|
+
restartRequired: boolean()
|
|
74680
|
+
});
|
|
74540
74681
|
method(_void(), ListResultSchema), method(_void(), PreferredSchema), method(object({
|
|
74541
74682
|
/**
|
|
74542
74683
|
* LEGACY HINT — do not send from new code. Kept optional so clients
|
|
@@ -74546,17 +74687,31 @@ method(_void(), ListResultSchema), method(_void(), PreferredSchema), method(obje
|
|
|
74546
74687
|
*/
|
|
74547
74688
|
port: number().int().min(1).max(65535).optional(),
|
|
74548
74689
|
/** Include `http(s)://127.0.0.1:<port>` as the lowest-priority
|
|
74549
|
-
* candidate. Default `
|
|
74690
|
+
* candidate. Default `false` — loopback is not a client route. */
|
|
74550
74691
|
includeLoopback: boolean().optional(),
|
|
74551
|
-
/** Skip IPv6 entries.
|
|
74552
|
-
*
|
|
74692
|
+
/** Skip IPv6 entries. Default `false` — the palette includes stable
|
|
74693
|
+
* LAN IPv6 (ICE/WebRTC uses dual-stack regardless). Pass `true` to
|
|
74694
|
+
* hide them. The viewer HTTP/WS race is `getViewerEndpoints`. */
|
|
74553
74695
|
ipv4Only: boolean().optional(),
|
|
74554
74696
|
/** Scheme to emit for LAN/loopback URLs. Default `'http'`.
|
|
74555
74697
|
* Pass `'https'` when the caller is itself loaded over HTTPS
|
|
74556
74698
|
* to avoid mixed-content blocks in the browser. The public
|
|
74557
74699
|
* tunnel always emits `https://` regardless. */
|
|
74558
74700
|
scheme: _enum(["http", "https"]).optional()
|
|
74559
|
-
}), 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" })
|
|
74701
|
+
}), 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, {
|
|
74702
|
+
kind: "mutation",
|
|
74703
|
+
auth: "admin"
|
|
74704
|
+
}), method(object({
|
|
74705
|
+
certPem: string().min(1),
|
|
74706
|
+
keyPem: string().min(1),
|
|
74707
|
+
caPem: string().optional()
|
|
74708
|
+
}), TlsStatusSchema, {
|
|
74709
|
+
kind: "mutation",
|
|
74710
|
+
auth: "admin"
|
|
74711
|
+
}), method(_void(), object({ pem: string() })), method(_void(), TlsStatusSchema, {
|
|
74712
|
+
kind: "mutation",
|
|
74713
|
+
auth: "admin"
|
|
74714
|
+
});
|
|
74560
74715
|
var LockControlStatusSchema = object({
|
|
74561
74716
|
/** Lifecycle state of the lock. `jammed` means the motor reported
|
|
74562
74717
|
* failure to reach the target — operator intervention required. */
|
|
@@ -82583,6 +82738,12 @@ Object.freeze({
|
|
|
82583
82738
|
addonId: null,
|
|
82584
82739
|
access: "create"
|
|
82585
82740
|
},
|
|
82741
|
+
"localNetwork.downloadCa": {
|
|
82742
|
+
capName: "local-network",
|
|
82743
|
+
capScope: "system",
|
|
82744
|
+
addonId: null,
|
|
82745
|
+
access: "view"
|
|
82746
|
+
},
|
|
82586
82747
|
"localNetwork.getAllowedAddresses": {
|
|
82587
82748
|
capName: "local-network",
|
|
82588
82749
|
capScope: "system",
|
|
@@ -82607,18 +82768,42 @@ Object.freeze({
|
|
|
82607
82768
|
addonId: null,
|
|
82608
82769
|
access: "view"
|
|
82609
82770
|
},
|
|
82771
|
+
"localNetwork.getTlsStatus": {
|
|
82772
|
+
capName: "local-network",
|
|
82773
|
+
capScope: "system",
|
|
82774
|
+
addonId: null,
|
|
82775
|
+
access: "view"
|
|
82776
|
+
},
|
|
82777
|
+
"localNetwork.getViewerEndpoints": {
|
|
82778
|
+
capName: "local-network",
|
|
82779
|
+
capScope: "system",
|
|
82780
|
+
addonId: null,
|
|
82781
|
+
access: "view"
|
|
82782
|
+
},
|
|
82610
82783
|
"localNetwork.list": {
|
|
82611
82784
|
capName: "local-network",
|
|
82612
82785
|
capScope: "system",
|
|
82613
82786
|
addonId: null,
|
|
82614
82787
|
access: "view"
|
|
82615
82788
|
},
|
|
82789
|
+
"localNetwork.regenerateCertificate": {
|
|
82790
|
+
capName: "local-network",
|
|
82791
|
+
capScope: "system",
|
|
82792
|
+
addonId: null,
|
|
82793
|
+
access: "create"
|
|
82794
|
+
},
|
|
82616
82795
|
"localNetwork.resetAllowlistToBestMatch": {
|
|
82617
82796
|
capName: "local-network",
|
|
82618
82797
|
capScope: "system",
|
|
82619
82798
|
addonId: null,
|
|
82620
82799
|
access: "delete"
|
|
82621
82800
|
},
|
|
82801
|
+
"localNetwork.revertToGeneratedCertificate": {
|
|
82802
|
+
capName: "local-network",
|
|
82803
|
+
capScope: "system",
|
|
82804
|
+
addonId: null,
|
|
82805
|
+
access: "create"
|
|
82806
|
+
},
|
|
82622
82807
|
"localNetwork.setAllowedAddresses": {
|
|
82623
82808
|
capName: "local-network",
|
|
82624
82809
|
capScope: "system",
|
|
@@ -82631,6 +82816,18 @@ Object.freeze({
|
|
|
82631
82816
|
addonId: null,
|
|
82632
82817
|
access: "create"
|
|
82633
82818
|
},
|
|
82819
|
+
"localNetwork.setViewerEndpoints": {
|
|
82820
|
+
capName: "local-network",
|
|
82821
|
+
capScope: "system",
|
|
82822
|
+
addonId: null,
|
|
82823
|
+
access: "create"
|
|
82824
|
+
},
|
|
82825
|
+
"localNetwork.uploadCertificate": {
|
|
82826
|
+
capName: "local-network",
|
|
82827
|
+
capScope: "system",
|
|
82828
|
+
addonId: null,
|
|
82829
|
+
access: "create"
|
|
82830
|
+
},
|
|
82634
82831
|
"lockControl.lock": {
|
|
82635
82832
|
capName: "lock-control",
|
|
82636
82833
|
capScope: "device",
|
|
@@ -85511,6 +85708,12 @@ Object.freeze({
|
|
|
85511
85708
|
addonId: null,
|
|
85512
85709
|
access: "create"
|
|
85513
85710
|
},
|
|
85711
|
+
"terminalSession.updateInstance": {
|
|
85712
|
+
capName: "terminal-session",
|
|
85713
|
+
capScope: "system",
|
|
85714
|
+
addonId: null,
|
|
85715
|
+
access: "create"
|
|
85716
|
+
},
|
|
85514
85717
|
"terminalSession.writeInput": {
|
|
85515
85718
|
capName: "terminal-session",
|
|
85516
85719
|
capScope: "system",
|
|
@@ -87998,6 +88201,35 @@ Object.freeze(Object.fromEntries([{
|
|
|
87998
88201
|
}]
|
|
87999
88202
|
}].map((s) => [s.stepId, s.defaultModelId])));
|
|
88000
88203
|
string().min(1);
|
|
88204
|
+
var CLUSTER_STEP_SETTING_FIELDS = [{
|
|
88205
|
+
stepId: "face-embedding",
|
|
88206
|
+
key: "minLandmarkFaceSize",
|
|
88207
|
+
label: "Min face size for recognition (detection px)",
|
|
88208
|
+
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.",
|
|
88209
|
+
type: "slider",
|
|
88210
|
+
min: 0,
|
|
88211
|
+
max: 64,
|
|
88212
|
+
step: 2,
|
|
88213
|
+
default: 24
|
|
88214
|
+
}];
|
|
88215
|
+
function clusterStepSettingKey(stepId, fieldKey) {
|
|
88216
|
+
return `clusterStepSetting:${stepId}:${fieldKey}`;
|
|
88217
|
+
}
|
|
88218
|
+
var ClusterSettingNumberSchema = number().finite();
|
|
88219
|
+
function readClusterStepSettings(config) {
|
|
88220
|
+
const out = {};
|
|
88221
|
+
for (const field of CLUSTER_STEP_SETTING_FIELDS) {
|
|
88222
|
+
const parsed = ClusterSettingNumberSchema.safeParse(config[clusterStepSettingKey(field.stepId, field.key)]);
|
|
88223
|
+
const value = parsed.success ? parsed.data : field.default;
|
|
88224
|
+
const existing = out[field.stepId] ?? {};
|
|
88225
|
+
out[field.stepId] = {
|
|
88226
|
+
...existing,
|
|
88227
|
+
[field.key]: value
|
|
88228
|
+
};
|
|
88229
|
+
}
|
|
88230
|
+
return out;
|
|
88231
|
+
}
|
|
88232
|
+
readClusterStepSettings({});
|
|
88001
88233
|
object({
|
|
88002
88234
|
/**
|
|
88003
88235
|
* 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-provider-dreame",
|
|
3
|
-
"version": "0.2.
|
|
3
|
+
"version": "0.2.27",
|
|
4
4
|
"description": "Dreame robot-vacuum / lawn-mower device-provider addon for CamStack — wraps the @apocaliss92/nodedreame Dreamehome cloud client",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"camstack",
|