@camstack/addon-cloudflare 1.2.24 → 1.2.26
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/{dist-j7oMFwvU.js → dist-CbCaiEpw.js} +258 -17
- package/dist/{dist-CCB3dnL3.mjs → dist-DnohT9Id.mjs} +258 -17
- package/dist/tunnel/cloudflare-tunnel.addon.js +1 -1
- package/dist/tunnel/cloudflare-tunnel.addon.mjs +1 -1
- package/dist/turn/cloudflare-turn.addon.js +1 -1
- package/dist/turn/cloudflare-turn.addon.mjs +1 -1
- package/package.json +1 -1
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
//#region ../types/dist/event-category-
|
|
1
|
+
//#region ../types/dist/event-category-CIa_iT6b.mjs
|
|
2
2
|
var EventCategory = /* @__PURE__ */ function(EventCategory) {
|
|
3
3
|
EventCategory["SystemBoot"] = "system.boot";
|
|
4
4
|
EventCategory["SystemAddonsReady"] = "system.addons-ready";
|
|
@@ -14,6 +14,15 @@ var EventCategory = /* @__PURE__ */ function(EventCategory) {
|
|
|
14
14
|
*/
|
|
15
15
|
EventCategory["SystemRestartCompleted"] = "system.restart-completed";
|
|
16
16
|
/**
|
|
17
|
+
* The hub reissued its own TLS certificate at boot (`ensureTlsCert`).
|
|
18
|
+
* Emitted only when the material on disk actually changed, so an
|
|
19
|
+
* operator who trusted the old certificate by hand is told rather than
|
|
20
|
+
* discovering it as a browser error. Payload `TlsCertChangedPayload`.
|
|
21
|
+
*
|
|
22
|
+
* Rule: docs/decisions/adr-0227-*.md
|
|
23
|
+
*/
|
|
24
|
+
EventCategory["SystemTlsCertChanged"] = "system.tls-cert-changed";
|
|
25
|
+
/**
|
|
17
26
|
* A newer addon or server-root package version was found by the
|
|
18
27
|
* authoritative registry check. Emitted once when any observed
|
|
19
28
|
* `latestVersion` changes (or a package/node first appears behind);
|
|
@@ -7994,6 +8003,15 @@ var LabelDefinitionSchema = object({
|
|
|
7994
8003
|
description: string().optional(),
|
|
7995
8004
|
icon: string().optional()
|
|
7996
8005
|
});
|
|
8006
|
+
var ClassMapDefinitionSchema = object({
|
|
8007
|
+
mapping: record(string(), _enum([
|
|
8008
|
+
"person",
|
|
8009
|
+
"vehicle",
|
|
8010
|
+
"animal",
|
|
8011
|
+
"package"
|
|
8012
|
+
])),
|
|
8013
|
+
preserveOriginal: boolean()
|
|
8014
|
+
});
|
|
7997
8015
|
var MODEL_FORMATS = [
|
|
7998
8016
|
"onnx",
|
|
7999
8017
|
"coreml",
|
|
@@ -8172,7 +8190,13 @@ var ModelCatalogEntrySchema = object({
|
|
|
8172
8190
|
* `id` stays the source of truth for resolution/download/persistence; grouping
|
|
8173
8191
|
* is a presentation overlay resolved back to an `id`.
|
|
8174
8192
|
*/
|
|
8175
|
-
group: ModelVariantGroupSchema.optional()
|
|
8193
|
+
group: ModelVariantGroupSchema.optional(),
|
|
8194
|
+
/**
|
|
8195
|
+
* Per-MODEL class map override. Absent ⇒ the step's `StepDefinition.classMap`
|
|
8196
|
+
* applies (Frigate / COCO public catalog). Set on a custom model whose raw
|
|
8197
|
+
* labels already ARE the CamStack macros (Scrypted identity map).
|
|
8198
|
+
*/
|
|
8199
|
+
classMap: ClassMapDefinitionSchema.optional()
|
|
8176
8200
|
});
|
|
8177
8201
|
var ConvertTargetSchema = discriminatedUnion("format", [object({
|
|
8178
8202
|
format: literal("openvino"),
|
|
@@ -8201,7 +8225,8 @@ var ModelConvertMetadataSchema = object({
|
|
|
8201
8225
|
"ocr",
|
|
8202
8226
|
"segmentation"
|
|
8203
8227
|
]),
|
|
8204
|
-
faceAlignment: boolean().optional()
|
|
8228
|
+
faceAlignment: boolean().optional(),
|
|
8229
|
+
classMap: ClassMapDefinitionSchema.optional()
|
|
8205
8230
|
});
|
|
8206
8231
|
var ConvertResultSchema = object({
|
|
8207
8232
|
entry: ModelCatalogEntrySchema,
|
|
@@ -17231,6 +17256,33 @@ var NativeCropRefSchema = object({
|
|
|
17231
17256
|
h: number()
|
|
17232
17257
|
})
|
|
17233
17258
|
});
|
|
17259
|
+
object({
|
|
17260
|
+
crop: object({
|
|
17261
|
+
left: number(),
|
|
17262
|
+
top: number(),
|
|
17263
|
+
width: number().positive(),
|
|
17264
|
+
height: number().positive()
|
|
17265
|
+
}).optional(),
|
|
17266
|
+
content: object({
|
|
17267
|
+
width: number().int().positive(),
|
|
17268
|
+
height: number().int().positive()
|
|
17269
|
+
}),
|
|
17270
|
+
fit: _enum(["stretch", "contain"]),
|
|
17271
|
+
format: _enum([
|
|
17272
|
+
"rgb",
|
|
17273
|
+
"gray",
|
|
17274
|
+
"jpeg"
|
|
17275
|
+
])
|
|
17276
|
+
});
|
|
17277
|
+
var FrameRefSchema = object({
|
|
17278
|
+
registryId: string().min(1),
|
|
17279
|
+
id: string().min(1),
|
|
17280
|
+
width: number().int().positive(),
|
|
17281
|
+
height: number().int().positive(),
|
|
17282
|
+
format: _enum(["rgb", "gray"]),
|
|
17283
|
+
timestamp: number(),
|
|
17284
|
+
capturedAt: number().optional()
|
|
17285
|
+
});
|
|
17234
17286
|
var ModelFormatSchema$1 = _enum([
|
|
17235
17287
|
"onnx",
|
|
17236
17288
|
"coreml",
|
|
@@ -17475,6 +17527,12 @@ method(_void(), array(PipelineEngineChoiceSchema)), method(_void(), PipelineEngi
|
|
|
17475
17527
|
steps: array(PipelineStepInputSchema).min(1),
|
|
17476
17528
|
frame: FrameInputSchema.optional(),
|
|
17477
17529
|
/**
|
|
17530
|
+
* Process-local lazy frame. Valid only when caller and provider resolve
|
|
17531
|
+
* in the same execution-group process; split/cross-node callers use
|
|
17532
|
+
* `frame`/`image` inline compatibility instead.
|
|
17533
|
+
*/
|
|
17534
|
+
frameRef: FrameRefSchema.optional(),
|
|
17535
|
+
/**
|
|
17478
17536
|
* CB5 shm passthrough — a `FrameHandle` naming the same ring slot
|
|
17479
17537
|
* the decoded pixels live in. One more member of the one-of
|
|
17480
17538
|
* frame/frameHandle/image/imageBase64/referenceImage group.
|
|
@@ -17730,7 +17788,10 @@ var NativeCropResultSchema = object({
|
|
|
17730
17788
|
* Which source served this crop, so a quality-sensitive consumer (the native
|
|
17731
17789
|
* `keyFrame`) can reject a degraded fallback:
|
|
17732
17790
|
* - `native` — cut from the decode worker's retained NATIVE surface (the
|
|
17733
|
-
* quality path).
|
|
17791
|
+
* quality path). A subject-tile serve is also native-resolution and stays
|
|
17792
|
+
* `native` here: the public enum cannot name `tile` without a breaking cap
|
|
17793
|
+
* change. Runner telemetry distinguishes lease vs tile via `source` on the
|
|
17794
|
+
* internal crop result (`nativeHits` vs `tileHits`).
|
|
17734
17795
|
* - `ram-fullframe` — the native surface MISSED but the request was full-frame,
|
|
17735
17796
|
* so the ≤640 RAM `RetainedFrameStore` served it (honest lower-res; legit for
|
|
17736
17797
|
* the blank-frame guard / 640-snapshot resolve, NOT for the clean keyFrame).
|
|
@@ -18221,12 +18282,41 @@ var RunnerLocalLoadSchema = object({
|
|
|
18221
18282
|
* legacy `OrchestratorMetricsSchema` shape so existing dashboards keep
|
|
18222
18283
|
* working unchanged when they switch to reading from the runner cap.
|
|
18223
18284
|
*/
|
|
18285
|
+
var FrameLazyCountersSchema = object({
|
|
18286
|
+
framesDecoded: number(),
|
|
18287
|
+
framesAdmitted: number(),
|
|
18288
|
+
framesDroppedPixelFree: number(),
|
|
18289
|
+
viewsMaterialized: number(),
|
|
18290
|
+
viewsSkipped: number(),
|
|
18291
|
+
workerToRunnerBytes: number(),
|
|
18292
|
+
runnerToPoolRawBytes: number(),
|
|
18293
|
+
runnerToPoolJpegBytes: number(),
|
|
18294
|
+
onDemandFullFrameRequests: number(),
|
|
18295
|
+
onDemandCropRequests: number(),
|
|
18296
|
+
nativeHits: number(),
|
|
18297
|
+
nativeMisses: number(),
|
|
18298
|
+
tileHits: number(),
|
|
18299
|
+
tileMisses: number(),
|
|
18300
|
+
fallbackHits: number(),
|
|
18301
|
+
fallbackMisses: number(),
|
|
18302
|
+
retainedWritesAvoided: number(),
|
|
18303
|
+
residentRefs: number(),
|
|
18304
|
+
residentBytes: number(),
|
|
18305
|
+
releases: number(),
|
|
18306
|
+
evictions: number(),
|
|
18307
|
+
staleMisses: number()
|
|
18308
|
+
});
|
|
18309
|
+
var FrameLazyMetricsSchema = object({
|
|
18310
|
+
node: FrameLazyCountersSchema,
|
|
18311
|
+
cameras: array(FrameLazyCountersSchema.extend({ deviceId: number() }))
|
|
18312
|
+
});
|
|
18224
18313
|
var RunnerLocalMetricsSchema = object({
|
|
18225
18314
|
nodeId: string(),
|
|
18226
18315
|
activeCameras: number(),
|
|
18227
18316
|
throttledCameras: number(),
|
|
18228
18317
|
avgInferenceTimeMs: number(),
|
|
18229
|
-
queueDepth: number()
|
|
18318
|
+
queueDepth: number(),
|
|
18319
|
+
frameLazy: FrameLazyMetricsSchema.optional()
|
|
18230
18320
|
});
|
|
18231
18321
|
method(RunnerCameraConfigSchema, object({ success: literal(true) }), { kind: "mutation" }), method(object({ deviceId: number() }), object({ success: literal(true) }), { kind: "mutation" }), method(ReportMotionInputSchema, object({ success: literal(true) }), { kind: "mutation" }), method(_void(), RunnerLocalLoadSchema), method(_void(), RunnerLocalMetricsSchema), method(object({ deviceId: number() }), CameraMetricsSchema.nullable()), method(_void(), array(CameraMetricsWithDeviceIdSchema).readonly()), method(_void(), array(number()).readonly()), method(object({
|
|
18232
18322
|
handle: FrameHandleSchema,
|
|
@@ -19526,6 +19616,9 @@ method(_void(), ProviderInfoSchema), method(object({ config: record(string(), un
|
|
|
19526
19616
|
location: StorageLocationSchema,
|
|
19527
19617
|
relativePath: string()
|
|
19528
19618
|
}), _void(), { kind: "mutation" }), method(object({ location: StorageLocationSchema }), number().nullable()), method(BeginUploadInputSchema, BeginUploadResultSchema, { kind: "mutation" }), method(WriteChunkInputSchema, _void(), { kind: "mutation" }), method(FinalizeUploadInputSchema, _void(), { kind: "mutation" }), method(AbortUploadInputSchema, _void(), { kind: "mutation" }), method(BeginDownloadInputSchema, BeginDownloadResultSchema, { kind: "mutation" }), method(ReadChunkInputSchema, _instanceof(Uint8Array)), method(EndDownloadInputSchema, _void(), { kind: "mutation" });
|
|
19619
|
+
/** Profile-exported FormBuilder schema. Shape is ConfigUISchema at the UI. */
|
|
19620
|
+
var ProfileSettingsSchemaBridge = unknown().nullable();
|
|
19621
|
+
var ProfileSettingsBagSchema = record(string(), unknown());
|
|
19529
19622
|
/**
|
|
19530
19623
|
* A live terminal session hosted by the provider addon. Output and input do
|
|
19531
19624
|
* NOT flow through the capability — they use the addon data plane
|
|
@@ -19555,7 +19648,14 @@ var TerminalSessionInfoSchema = object({
|
|
|
19555
19648
|
var TerminalProfileInfoSchema = object({
|
|
19556
19649
|
profileId: string(),
|
|
19557
19650
|
label: string(),
|
|
19558
|
-
description: string().optional()
|
|
19651
|
+
description: string().optional(),
|
|
19652
|
+
/** Spawn defaults the instance form copies on create. */
|
|
19653
|
+
executable: string().optional(),
|
|
19654
|
+
args: array(string()).readonly().optional(),
|
|
19655
|
+
cwd: string().optional(),
|
|
19656
|
+
environment: array(string()).readonly().optional(),
|
|
19657
|
+
/** ConfigUISchema for instance knobs, or null when the profile has none. */
|
|
19658
|
+
settingsSchema: ProfileSettingsSchemaBridge.optional()
|
|
19559
19659
|
});
|
|
19560
19660
|
/**
|
|
19561
19661
|
* A durable operator-created Terminal instance. Profiles are templates; only
|
|
@@ -19568,7 +19668,12 @@ var TerminalInstanceInfoSchema = object({
|
|
|
19568
19668
|
profileId: string(),
|
|
19569
19669
|
profileLabel: string(),
|
|
19570
19670
|
name: string(),
|
|
19571
|
-
enabled: boolean()
|
|
19671
|
+
enabled: boolean(),
|
|
19672
|
+
executable: string(),
|
|
19673
|
+
args: array(string()).readonly(),
|
|
19674
|
+
cwd: string(),
|
|
19675
|
+
environment: array(string()).readonly(),
|
|
19676
|
+
profileSettings: ProfileSettingsBagSchema
|
|
19572
19677
|
});
|
|
19573
19678
|
var TerminalLegacyCameraSchema = object({
|
|
19574
19679
|
stableId: string(),
|
|
@@ -19598,7 +19703,23 @@ var TerminalOutputBatchSchema = object({
|
|
|
19598
19703
|
method(_void(), array(TerminalProfileInfoSchema).readonly(), { auth: "admin" }), method(_void(), array(TerminalInstanceInfoSchema).readonly(), { auth: "admin" }), method(object({
|
|
19599
19704
|
targetNodeId: string().min(1),
|
|
19600
19705
|
profileId: string().min(1),
|
|
19601
|
-
name: string().trim().min(1).max(160).optional()
|
|
19706
|
+
name: string().trim().min(1).max(160).optional(),
|
|
19707
|
+
executable: string().max(1024).optional(),
|
|
19708
|
+
args: array(string().max(2048)).max(64).optional(),
|
|
19709
|
+
cwd: string().max(1024).optional(),
|
|
19710
|
+
environment: array(string().max(4096)).max(64).optional(),
|
|
19711
|
+
profileSettings: ProfileSettingsBagSchema.optional()
|
|
19712
|
+
}), TerminalInstanceInfoSchema, {
|
|
19713
|
+
kind: "mutation",
|
|
19714
|
+
auth: "admin"
|
|
19715
|
+
}), method(object({
|
|
19716
|
+
instanceId: string().min(1),
|
|
19717
|
+
name: string().trim().min(1).max(160).optional(),
|
|
19718
|
+
executable: string().max(1024).optional(),
|
|
19719
|
+
args: array(string().max(2048)).max(64).optional(),
|
|
19720
|
+
cwd: string().max(1024).optional(),
|
|
19721
|
+
environment: array(string().max(4096)).max(64).optional(),
|
|
19722
|
+
profileSettings: ProfileSettingsBagSchema.optional()
|
|
19602
19723
|
}), TerminalInstanceInfoSchema, {
|
|
19603
19724
|
kind: "mutation",
|
|
19604
19725
|
auth: "admin"
|
|
@@ -19620,7 +19741,11 @@ method(_void(), array(TerminalProfileInfoSchema).readonly(), { auth: "admin" }),
|
|
|
19620
19741
|
}), method(_void(), array(TerminalSessionInfoSchema).readonly(), { auth: "admin" }), method(object({
|
|
19621
19742
|
profileId: string(),
|
|
19622
19743
|
cols: number().int().positive(),
|
|
19623
|
-
rows: number().int().positive()
|
|
19744
|
+
rows: number().int().positive(),
|
|
19745
|
+
executable: string().max(1024).optional(),
|
|
19746
|
+
args: array(string().max(2048)).max(64).optional(),
|
|
19747
|
+
cwd: string().max(1024).optional(),
|
|
19748
|
+
environment: array(string().max(4096)).max(64).optional()
|
|
19624
19749
|
}), TerminalSessionInfoSchema, {
|
|
19625
19750
|
kind: "mutation",
|
|
19626
19751
|
auth: "admin"
|
|
@@ -22425,10 +22550,10 @@ DeviceType.LawnMower, method(object({ deviceId: number().int().nonnegative() }),
|
|
|
22425
22550
|
*
|
|
22426
22551
|
* • The SDK (mobile / web client) consumes `getConnectionEndpoints()`
|
|
22427
22552
|
* to receive an ordered list of candidate base URLs it should race
|
|
22428
|
-
* on connect — LAN IPv4 first (lowest latency
|
|
22429
|
-
* then public hostname (if a tunnel is
|
|
22430
|
-
* race them with short timeouts and stick with the
|
|
22431
|
-
* session.
|
|
22553
|
+
* on connect — LAN IPv4 and stable LAN IPv6 first (lowest latency
|
|
22554
|
+
* when on the same network), then public hostname (if a tunnel is
|
|
22555
|
+
* up). The SDK can race them with short timeouts and stick with the
|
|
22556
|
+
* winner for the session.
|
|
22432
22557
|
*
|
|
22433
22558
|
* Why hub-only: agents are not directly addressable by the operator's
|
|
22434
22559
|
* clients — they reverse-connect to the hub. Exposing their interfaces
|
|
@@ -22583,6 +22708,17 @@ var NotificationEndpointSchema = object({
|
|
|
22583
22708
|
/** What the ranking currently resolves to (null when nothing is reachable). */
|
|
22584
22709
|
resolved: string().nullable()
|
|
22585
22710
|
});
|
|
22711
|
+
/**
|
|
22712
|
+
* The URLs the SDK / viewer should race for API access. `baseUrls` empty =
|
|
22713
|
+
* AUTO (every LAN IPv4 + the public tunnel). `resolved` is what that choice
|
|
22714
|
+
* currently expands to, so the UI can show the effective set either way.
|
|
22715
|
+
*/
|
|
22716
|
+
var ViewerEndpointsSchema = object({
|
|
22717
|
+
/** The operator's explicit race set, or empty for AUTO. */
|
|
22718
|
+
baseUrls: array(string()).readonly(),
|
|
22719
|
+
/** What the ranking currently resolves to (may be empty if nothing is up). */
|
|
22720
|
+
resolved: array(string()).readonly()
|
|
22721
|
+
});
|
|
22586
22722
|
var AllowedAddressesSchema = object({
|
|
22587
22723
|
/**
|
|
22588
22724
|
* Allowlist of interface addresses operators have explicitly opted
|
|
@@ -22591,6 +22727,20 @@ var AllowedAddressesSchema = object({
|
|
|
22591
22727
|
* Network Addresses admin page and persisted by the addon.
|
|
22592
22728
|
*/
|
|
22593
22729
|
addresses: array(string()).readonly() });
|
|
22730
|
+
var TlsStatusSchema = object({
|
|
22731
|
+
mode: _enum([
|
|
22732
|
+
"generated",
|
|
22733
|
+
"uploaded",
|
|
22734
|
+
"disabled"
|
|
22735
|
+
]),
|
|
22736
|
+
leafFingerprintSha256: string().nullable(),
|
|
22737
|
+
caFingerprintSha256: string().nullable(),
|
|
22738
|
+
validTo: string().nullable(),
|
|
22739
|
+
sans: array(string()),
|
|
22740
|
+
caCertPem: string().nullable(),
|
|
22741
|
+
reissueError: string().nullable(),
|
|
22742
|
+
restartRequired: boolean()
|
|
22743
|
+
});
|
|
22594
22744
|
method(_void(), ListResultSchema), method(_void(), PreferredSchema), method(object({
|
|
22595
22745
|
/**
|
|
22596
22746
|
* LEGACY HINT — do not send from new code. Kept optional so clients
|
|
@@ -22600,17 +22750,31 @@ method(_void(), ListResultSchema), method(_void(), PreferredSchema), method(obje
|
|
|
22600
22750
|
*/
|
|
22601
22751
|
port: number().int().min(1).max(65535).optional(),
|
|
22602
22752
|
/** Include `http(s)://127.0.0.1:<port>` as the lowest-priority
|
|
22603
|
-
* candidate. Default `
|
|
22753
|
+
* candidate. Default `false` — loopback is not a client route. */
|
|
22604
22754
|
includeLoopback: boolean().optional(),
|
|
22605
|
-
/** Skip IPv6 entries.
|
|
22606
|
-
*
|
|
22755
|
+
/** Skip IPv6 entries. Default `false` — the palette includes stable
|
|
22756
|
+
* LAN IPv6 (ICE/WebRTC uses dual-stack regardless). Pass `true` to
|
|
22757
|
+
* hide them. The viewer HTTP/WS race is `getViewerEndpoints`. */
|
|
22607
22758
|
ipv4Only: boolean().optional(),
|
|
22608
22759
|
/** Scheme to emit for LAN/loopback URLs. Default `'http'`.
|
|
22609
22760
|
* Pass `'https'` when the caller is itself loaded over HTTPS
|
|
22610
22761
|
* to avoid mixed-content blocks in the browser. The public
|
|
22611
22762
|
* tunnel always emits `https://` regardless. */
|
|
22612
22763
|
scheme: _enum(["http", "https"]).optional()
|
|
22613
|
-
}), GetConnectionEndpointsResultSchema), method(_void(), NotificationEndpointSchema), method(object({ baseUrl: string().nullable() }), NotificationEndpointSchema, { kind: "mutation" }), method(_void(), AllowedAddressesSchema), method(AllowedAddressesSchema, object({ success: literal(true) }), { kind: "mutation" }), method(_void(), AllowedAddressesSchema, { kind: "mutation" })
|
|
22764
|
+
}), GetConnectionEndpointsResultSchema), method(_void(), NotificationEndpointSchema), method(object({ baseUrl: string().nullable() }), NotificationEndpointSchema, { kind: "mutation" }), method(_void(), ViewerEndpointsSchema), method(object({ baseUrls: array(string()).readonly() }), ViewerEndpointsSchema, { kind: "mutation" }), method(_void(), AllowedAddressesSchema), method(AllowedAddressesSchema, object({ success: literal(true) }), { kind: "mutation" }), method(_void(), AllowedAddressesSchema, { kind: "mutation" }), method(_void(), TlsStatusSchema), method(object({ reason: string().optional() }), TlsStatusSchema, {
|
|
22765
|
+
kind: "mutation",
|
|
22766
|
+
auth: "admin"
|
|
22767
|
+
}), method(object({
|
|
22768
|
+
certPem: string().min(1),
|
|
22769
|
+
keyPem: string().min(1),
|
|
22770
|
+
caPem: string().optional()
|
|
22771
|
+
}), TlsStatusSchema, {
|
|
22772
|
+
kind: "mutation",
|
|
22773
|
+
auth: "admin"
|
|
22774
|
+
}), method(_void(), object({ pem: string() })), method(_void(), TlsStatusSchema, {
|
|
22775
|
+
kind: "mutation",
|
|
22776
|
+
auth: "admin"
|
|
22777
|
+
});
|
|
22614
22778
|
object({
|
|
22615
22779
|
/** Lifecycle state of the lock. `jammed` means the motor reported
|
|
22616
22780
|
* failure to reach the target — operator intervention required. */
|
|
@@ -28373,6 +28537,12 @@ Object.freeze({
|
|
|
28373
28537
|
addonId: null,
|
|
28374
28538
|
access: "create"
|
|
28375
28539
|
},
|
|
28540
|
+
"localNetwork.downloadCa": {
|
|
28541
|
+
capName: "local-network",
|
|
28542
|
+
capScope: "system",
|
|
28543
|
+
addonId: null,
|
|
28544
|
+
access: "view"
|
|
28545
|
+
},
|
|
28376
28546
|
"localNetwork.getAllowedAddresses": {
|
|
28377
28547
|
capName: "local-network",
|
|
28378
28548
|
capScope: "system",
|
|
@@ -28397,18 +28567,42 @@ Object.freeze({
|
|
|
28397
28567
|
addonId: null,
|
|
28398
28568
|
access: "view"
|
|
28399
28569
|
},
|
|
28570
|
+
"localNetwork.getTlsStatus": {
|
|
28571
|
+
capName: "local-network",
|
|
28572
|
+
capScope: "system",
|
|
28573
|
+
addonId: null,
|
|
28574
|
+
access: "view"
|
|
28575
|
+
},
|
|
28576
|
+
"localNetwork.getViewerEndpoints": {
|
|
28577
|
+
capName: "local-network",
|
|
28578
|
+
capScope: "system",
|
|
28579
|
+
addonId: null,
|
|
28580
|
+
access: "view"
|
|
28581
|
+
},
|
|
28400
28582
|
"localNetwork.list": {
|
|
28401
28583
|
capName: "local-network",
|
|
28402
28584
|
capScope: "system",
|
|
28403
28585
|
addonId: null,
|
|
28404
28586
|
access: "view"
|
|
28405
28587
|
},
|
|
28588
|
+
"localNetwork.regenerateCertificate": {
|
|
28589
|
+
capName: "local-network",
|
|
28590
|
+
capScope: "system",
|
|
28591
|
+
addonId: null,
|
|
28592
|
+
access: "create"
|
|
28593
|
+
},
|
|
28406
28594
|
"localNetwork.resetAllowlistToBestMatch": {
|
|
28407
28595
|
capName: "local-network",
|
|
28408
28596
|
capScope: "system",
|
|
28409
28597
|
addonId: null,
|
|
28410
28598
|
access: "delete"
|
|
28411
28599
|
},
|
|
28600
|
+
"localNetwork.revertToGeneratedCertificate": {
|
|
28601
|
+
capName: "local-network",
|
|
28602
|
+
capScope: "system",
|
|
28603
|
+
addonId: null,
|
|
28604
|
+
access: "create"
|
|
28605
|
+
},
|
|
28412
28606
|
"localNetwork.setAllowedAddresses": {
|
|
28413
28607
|
capName: "local-network",
|
|
28414
28608
|
capScope: "system",
|
|
@@ -28421,6 +28615,18 @@ Object.freeze({
|
|
|
28421
28615
|
addonId: null,
|
|
28422
28616
|
access: "create"
|
|
28423
28617
|
},
|
|
28618
|
+
"localNetwork.setViewerEndpoints": {
|
|
28619
|
+
capName: "local-network",
|
|
28620
|
+
capScope: "system",
|
|
28621
|
+
addonId: null,
|
|
28622
|
+
access: "create"
|
|
28623
|
+
},
|
|
28624
|
+
"localNetwork.uploadCertificate": {
|
|
28625
|
+
capName: "local-network",
|
|
28626
|
+
capScope: "system",
|
|
28627
|
+
addonId: null,
|
|
28628
|
+
access: "create"
|
|
28629
|
+
},
|
|
28424
28630
|
"lockControl.lock": {
|
|
28425
28631
|
capName: "lock-control",
|
|
28426
28632
|
capScope: "device",
|
|
@@ -31301,6 +31507,12 @@ Object.freeze({
|
|
|
31301
31507
|
addonId: null,
|
|
31302
31508
|
access: "create"
|
|
31303
31509
|
},
|
|
31510
|
+
"terminalSession.updateInstance": {
|
|
31511
|
+
capName: "terminal-session",
|
|
31512
|
+
capScope: "system",
|
|
31513
|
+
addonId: null,
|
|
31514
|
+
access: "create"
|
|
31515
|
+
},
|
|
31304
31516
|
"terminalSession.writeInput": {
|
|
31305
31517
|
capName: "terminal-session",
|
|
31306
31518
|
capScope: "system",
|
|
@@ -33788,6 +34000,35 @@ Object.freeze(Object.fromEntries([{
|
|
|
33788
34000
|
}]
|
|
33789
34001
|
}].map((s) => [s.stepId, s.defaultModelId])));
|
|
33790
34002
|
string().min(1);
|
|
34003
|
+
var CLUSTER_STEP_SETTING_FIELDS = [{
|
|
34004
|
+
stepId: "face-embedding",
|
|
34005
|
+
key: "minLandmarkFaceSize",
|
|
34006
|
+
label: "Min face size for recognition (detection px)",
|
|
34007
|
+
description: "Refuse to embed a face smaller than this IN THE DETECTION FRAME. Applies to every node — the enrolled gallery is one index, and two admission floors would fill it from two policies. 0 disables the gate.",
|
|
34008
|
+
type: "slider",
|
|
34009
|
+
min: 0,
|
|
34010
|
+
max: 64,
|
|
34011
|
+
step: 2,
|
|
34012
|
+
default: 24
|
|
34013
|
+
}];
|
|
34014
|
+
function clusterStepSettingKey(stepId, fieldKey) {
|
|
34015
|
+
return `clusterStepSetting:${stepId}:${fieldKey}`;
|
|
34016
|
+
}
|
|
34017
|
+
var ClusterSettingNumberSchema = number().finite();
|
|
34018
|
+
function readClusterStepSettings(config) {
|
|
34019
|
+
const out = {};
|
|
34020
|
+
for (const field of CLUSTER_STEP_SETTING_FIELDS) {
|
|
34021
|
+
const parsed = ClusterSettingNumberSchema.safeParse(config[clusterStepSettingKey(field.stepId, field.key)]);
|
|
34022
|
+
const value = parsed.success ? parsed.data : field.default;
|
|
34023
|
+
const existing = out[field.stepId] ?? {};
|
|
34024
|
+
out[field.stepId] = {
|
|
34025
|
+
...existing,
|
|
34026
|
+
[field.key]: value
|
|
34027
|
+
};
|
|
34028
|
+
}
|
|
34029
|
+
return out;
|
|
34030
|
+
}
|
|
34031
|
+
readClusterStepSettings({});
|
|
33791
34032
|
object({
|
|
33792
34033
|
/**
|
|
33793
34034
|
* Fraction of the box's own size added on EACH side before cutting.
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
//#region ../types/dist/event-category-
|
|
1
|
+
//#region ../types/dist/event-category-CIa_iT6b.mjs
|
|
2
2
|
var EventCategory = /* @__PURE__ */ function(EventCategory) {
|
|
3
3
|
EventCategory["SystemBoot"] = "system.boot";
|
|
4
4
|
EventCategory["SystemAddonsReady"] = "system.addons-ready";
|
|
@@ -14,6 +14,15 @@ var EventCategory = /* @__PURE__ */ function(EventCategory) {
|
|
|
14
14
|
*/
|
|
15
15
|
EventCategory["SystemRestartCompleted"] = "system.restart-completed";
|
|
16
16
|
/**
|
|
17
|
+
* The hub reissued its own TLS certificate at boot (`ensureTlsCert`).
|
|
18
|
+
* Emitted only when the material on disk actually changed, so an
|
|
19
|
+
* operator who trusted the old certificate by hand is told rather than
|
|
20
|
+
* discovering it as a browser error. Payload `TlsCertChangedPayload`.
|
|
21
|
+
*
|
|
22
|
+
* Rule: docs/decisions/adr-0227-*.md
|
|
23
|
+
*/
|
|
24
|
+
EventCategory["SystemTlsCertChanged"] = "system.tls-cert-changed";
|
|
25
|
+
/**
|
|
17
26
|
* A newer addon or server-root package version was found by the
|
|
18
27
|
* authoritative registry check. Emitted once when any observed
|
|
19
28
|
* `latestVersion` changes (or a package/node first appears behind);
|
|
@@ -7994,6 +8003,15 @@ var LabelDefinitionSchema = object({
|
|
|
7994
8003
|
description: string().optional(),
|
|
7995
8004
|
icon: string().optional()
|
|
7996
8005
|
});
|
|
8006
|
+
var ClassMapDefinitionSchema = object({
|
|
8007
|
+
mapping: record(string(), _enum([
|
|
8008
|
+
"person",
|
|
8009
|
+
"vehicle",
|
|
8010
|
+
"animal",
|
|
8011
|
+
"package"
|
|
8012
|
+
])),
|
|
8013
|
+
preserveOriginal: boolean()
|
|
8014
|
+
});
|
|
7997
8015
|
var MODEL_FORMATS = [
|
|
7998
8016
|
"onnx",
|
|
7999
8017
|
"coreml",
|
|
@@ -8172,7 +8190,13 @@ var ModelCatalogEntrySchema = object({
|
|
|
8172
8190
|
* `id` stays the source of truth for resolution/download/persistence; grouping
|
|
8173
8191
|
* is a presentation overlay resolved back to an `id`.
|
|
8174
8192
|
*/
|
|
8175
|
-
group: ModelVariantGroupSchema.optional()
|
|
8193
|
+
group: ModelVariantGroupSchema.optional(),
|
|
8194
|
+
/**
|
|
8195
|
+
* Per-MODEL class map override. Absent ⇒ the step's `StepDefinition.classMap`
|
|
8196
|
+
* applies (Frigate / COCO public catalog). Set on a custom model whose raw
|
|
8197
|
+
* labels already ARE the CamStack macros (Scrypted identity map).
|
|
8198
|
+
*/
|
|
8199
|
+
classMap: ClassMapDefinitionSchema.optional()
|
|
8176
8200
|
});
|
|
8177
8201
|
var ConvertTargetSchema = discriminatedUnion("format", [object({
|
|
8178
8202
|
format: literal("openvino"),
|
|
@@ -8201,7 +8225,8 @@ var ModelConvertMetadataSchema = object({
|
|
|
8201
8225
|
"ocr",
|
|
8202
8226
|
"segmentation"
|
|
8203
8227
|
]),
|
|
8204
|
-
faceAlignment: boolean().optional()
|
|
8228
|
+
faceAlignment: boolean().optional(),
|
|
8229
|
+
classMap: ClassMapDefinitionSchema.optional()
|
|
8205
8230
|
});
|
|
8206
8231
|
var ConvertResultSchema = object({
|
|
8207
8232
|
entry: ModelCatalogEntrySchema,
|
|
@@ -17231,6 +17256,33 @@ var NativeCropRefSchema = object({
|
|
|
17231
17256
|
h: number()
|
|
17232
17257
|
})
|
|
17233
17258
|
});
|
|
17259
|
+
object({
|
|
17260
|
+
crop: object({
|
|
17261
|
+
left: number(),
|
|
17262
|
+
top: number(),
|
|
17263
|
+
width: number().positive(),
|
|
17264
|
+
height: number().positive()
|
|
17265
|
+
}).optional(),
|
|
17266
|
+
content: object({
|
|
17267
|
+
width: number().int().positive(),
|
|
17268
|
+
height: number().int().positive()
|
|
17269
|
+
}),
|
|
17270
|
+
fit: _enum(["stretch", "contain"]),
|
|
17271
|
+
format: _enum([
|
|
17272
|
+
"rgb",
|
|
17273
|
+
"gray",
|
|
17274
|
+
"jpeg"
|
|
17275
|
+
])
|
|
17276
|
+
});
|
|
17277
|
+
var FrameRefSchema = object({
|
|
17278
|
+
registryId: string().min(1),
|
|
17279
|
+
id: string().min(1),
|
|
17280
|
+
width: number().int().positive(),
|
|
17281
|
+
height: number().int().positive(),
|
|
17282
|
+
format: _enum(["rgb", "gray"]),
|
|
17283
|
+
timestamp: number(),
|
|
17284
|
+
capturedAt: number().optional()
|
|
17285
|
+
});
|
|
17234
17286
|
var ModelFormatSchema$1 = _enum([
|
|
17235
17287
|
"onnx",
|
|
17236
17288
|
"coreml",
|
|
@@ -17475,6 +17527,12 @@ method(_void(), array(PipelineEngineChoiceSchema)), method(_void(), PipelineEngi
|
|
|
17475
17527
|
steps: array(PipelineStepInputSchema).min(1),
|
|
17476
17528
|
frame: FrameInputSchema.optional(),
|
|
17477
17529
|
/**
|
|
17530
|
+
* Process-local lazy frame. Valid only when caller and provider resolve
|
|
17531
|
+
* in the same execution-group process; split/cross-node callers use
|
|
17532
|
+
* `frame`/`image` inline compatibility instead.
|
|
17533
|
+
*/
|
|
17534
|
+
frameRef: FrameRefSchema.optional(),
|
|
17535
|
+
/**
|
|
17478
17536
|
* CB5 shm passthrough — a `FrameHandle` naming the same ring slot
|
|
17479
17537
|
* the decoded pixels live in. One more member of the one-of
|
|
17480
17538
|
* frame/frameHandle/image/imageBase64/referenceImage group.
|
|
@@ -17730,7 +17788,10 @@ var NativeCropResultSchema = object({
|
|
|
17730
17788
|
* Which source served this crop, so a quality-sensitive consumer (the native
|
|
17731
17789
|
* `keyFrame`) can reject a degraded fallback:
|
|
17732
17790
|
* - `native` — cut from the decode worker's retained NATIVE surface (the
|
|
17733
|
-
* quality path).
|
|
17791
|
+
* quality path). A subject-tile serve is also native-resolution and stays
|
|
17792
|
+
* `native` here: the public enum cannot name `tile` without a breaking cap
|
|
17793
|
+
* change. Runner telemetry distinguishes lease vs tile via `source` on the
|
|
17794
|
+
* internal crop result (`nativeHits` vs `tileHits`).
|
|
17734
17795
|
* - `ram-fullframe` — the native surface MISSED but the request was full-frame,
|
|
17735
17796
|
* so the ≤640 RAM `RetainedFrameStore` served it (honest lower-res; legit for
|
|
17736
17797
|
* the blank-frame guard / 640-snapshot resolve, NOT for the clean keyFrame).
|
|
@@ -18221,12 +18282,41 @@ var RunnerLocalLoadSchema = object({
|
|
|
18221
18282
|
* legacy `OrchestratorMetricsSchema` shape so existing dashboards keep
|
|
18222
18283
|
* working unchanged when they switch to reading from the runner cap.
|
|
18223
18284
|
*/
|
|
18285
|
+
var FrameLazyCountersSchema = object({
|
|
18286
|
+
framesDecoded: number(),
|
|
18287
|
+
framesAdmitted: number(),
|
|
18288
|
+
framesDroppedPixelFree: number(),
|
|
18289
|
+
viewsMaterialized: number(),
|
|
18290
|
+
viewsSkipped: number(),
|
|
18291
|
+
workerToRunnerBytes: number(),
|
|
18292
|
+
runnerToPoolRawBytes: number(),
|
|
18293
|
+
runnerToPoolJpegBytes: number(),
|
|
18294
|
+
onDemandFullFrameRequests: number(),
|
|
18295
|
+
onDemandCropRequests: number(),
|
|
18296
|
+
nativeHits: number(),
|
|
18297
|
+
nativeMisses: number(),
|
|
18298
|
+
tileHits: number(),
|
|
18299
|
+
tileMisses: number(),
|
|
18300
|
+
fallbackHits: number(),
|
|
18301
|
+
fallbackMisses: number(),
|
|
18302
|
+
retainedWritesAvoided: number(),
|
|
18303
|
+
residentRefs: number(),
|
|
18304
|
+
residentBytes: number(),
|
|
18305
|
+
releases: number(),
|
|
18306
|
+
evictions: number(),
|
|
18307
|
+
staleMisses: number()
|
|
18308
|
+
});
|
|
18309
|
+
var FrameLazyMetricsSchema = object({
|
|
18310
|
+
node: FrameLazyCountersSchema,
|
|
18311
|
+
cameras: array(FrameLazyCountersSchema.extend({ deviceId: number() }))
|
|
18312
|
+
});
|
|
18224
18313
|
var RunnerLocalMetricsSchema = object({
|
|
18225
18314
|
nodeId: string(),
|
|
18226
18315
|
activeCameras: number(),
|
|
18227
18316
|
throttledCameras: number(),
|
|
18228
18317
|
avgInferenceTimeMs: number(),
|
|
18229
|
-
queueDepth: number()
|
|
18318
|
+
queueDepth: number(),
|
|
18319
|
+
frameLazy: FrameLazyMetricsSchema.optional()
|
|
18230
18320
|
});
|
|
18231
18321
|
method(RunnerCameraConfigSchema, object({ success: literal(true) }), { kind: "mutation" }), method(object({ deviceId: number() }), object({ success: literal(true) }), { kind: "mutation" }), method(ReportMotionInputSchema, object({ success: literal(true) }), { kind: "mutation" }), method(_void(), RunnerLocalLoadSchema), method(_void(), RunnerLocalMetricsSchema), method(object({ deviceId: number() }), CameraMetricsSchema.nullable()), method(_void(), array(CameraMetricsWithDeviceIdSchema).readonly()), method(_void(), array(number()).readonly()), method(object({
|
|
18232
18322
|
handle: FrameHandleSchema,
|
|
@@ -19526,6 +19616,9 @@ method(_void(), ProviderInfoSchema), method(object({ config: record(string(), un
|
|
|
19526
19616
|
location: StorageLocationSchema,
|
|
19527
19617
|
relativePath: string()
|
|
19528
19618
|
}), _void(), { kind: "mutation" }), method(object({ location: StorageLocationSchema }), number().nullable()), method(BeginUploadInputSchema, BeginUploadResultSchema, { kind: "mutation" }), method(WriteChunkInputSchema, _void(), { kind: "mutation" }), method(FinalizeUploadInputSchema, _void(), { kind: "mutation" }), method(AbortUploadInputSchema, _void(), { kind: "mutation" }), method(BeginDownloadInputSchema, BeginDownloadResultSchema, { kind: "mutation" }), method(ReadChunkInputSchema, _instanceof(Uint8Array)), method(EndDownloadInputSchema, _void(), { kind: "mutation" });
|
|
19619
|
+
/** Profile-exported FormBuilder schema. Shape is ConfigUISchema at the UI. */
|
|
19620
|
+
var ProfileSettingsSchemaBridge = unknown().nullable();
|
|
19621
|
+
var ProfileSettingsBagSchema = record(string(), unknown());
|
|
19529
19622
|
/**
|
|
19530
19623
|
* A live terminal session hosted by the provider addon. Output and input do
|
|
19531
19624
|
* NOT flow through the capability — they use the addon data plane
|
|
@@ -19555,7 +19648,14 @@ var TerminalSessionInfoSchema = object({
|
|
|
19555
19648
|
var TerminalProfileInfoSchema = object({
|
|
19556
19649
|
profileId: string(),
|
|
19557
19650
|
label: string(),
|
|
19558
|
-
description: string().optional()
|
|
19651
|
+
description: string().optional(),
|
|
19652
|
+
/** Spawn defaults the instance form copies on create. */
|
|
19653
|
+
executable: string().optional(),
|
|
19654
|
+
args: array(string()).readonly().optional(),
|
|
19655
|
+
cwd: string().optional(),
|
|
19656
|
+
environment: array(string()).readonly().optional(),
|
|
19657
|
+
/** ConfigUISchema for instance knobs, or null when the profile has none. */
|
|
19658
|
+
settingsSchema: ProfileSettingsSchemaBridge.optional()
|
|
19559
19659
|
});
|
|
19560
19660
|
/**
|
|
19561
19661
|
* A durable operator-created Terminal instance. Profiles are templates; only
|
|
@@ -19568,7 +19668,12 @@ var TerminalInstanceInfoSchema = object({
|
|
|
19568
19668
|
profileId: string(),
|
|
19569
19669
|
profileLabel: string(),
|
|
19570
19670
|
name: string(),
|
|
19571
|
-
enabled: boolean()
|
|
19671
|
+
enabled: boolean(),
|
|
19672
|
+
executable: string(),
|
|
19673
|
+
args: array(string()).readonly(),
|
|
19674
|
+
cwd: string(),
|
|
19675
|
+
environment: array(string()).readonly(),
|
|
19676
|
+
profileSettings: ProfileSettingsBagSchema
|
|
19572
19677
|
});
|
|
19573
19678
|
var TerminalLegacyCameraSchema = object({
|
|
19574
19679
|
stableId: string(),
|
|
@@ -19598,7 +19703,23 @@ var TerminalOutputBatchSchema = object({
|
|
|
19598
19703
|
method(_void(), array(TerminalProfileInfoSchema).readonly(), { auth: "admin" }), method(_void(), array(TerminalInstanceInfoSchema).readonly(), { auth: "admin" }), method(object({
|
|
19599
19704
|
targetNodeId: string().min(1),
|
|
19600
19705
|
profileId: string().min(1),
|
|
19601
|
-
name: string().trim().min(1).max(160).optional()
|
|
19706
|
+
name: string().trim().min(1).max(160).optional(),
|
|
19707
|
+
executable: string().max(1024).optional(),
|
|
19708
|
+
args: array(string().max(2048)).max(64).optional(),
|
|
19709
|
+
cwd: string().max(1024).optional(),
|
|
19710
|
+
environment: array(string().max(4096)).max(64).optional(),
|
|
19711
|
+
profileSettings: ProfileSettingsBagSchema.optional()
|
|
19712
|
+
}), TerminalInstanceInfoSchema, {
|
|
19713
|
+
kind: "mutation",
|
|
19714
|
+
auth: "admin"
|
|
19715
|
+
}), method(object({
|
|
19716
|
+
instanceId: string().min(1),
|
|
19717
|
+
name: string().trim().min(1).max(160).optional(),
|
|
19718
|
+
executable: string().max(1024).optional(),
|
|
19719
|
+
args: array(string().max(2048)).max(64).optional(),
|
|
19720
|
+
cwd: string().max(1024).optional(),
|
|
19721
|
+
environment: array(string().max(4096)).max(64).optional(),
|
|
19722
|
+
profileSettings: ProfileSettingsBagSchema.optional()
|
|
19602
19723
|
}), TerminalInstanceInfoSchema, {
|
|
19603
19724
|
kind: "mutation",
|
|
19604
19725
|
auth: "admin"
|
|
@@ -19620,7 +19741,11 @@ method(_void(), array(TerminalProfileInfoSchema).readonly(), { auth: "admin" }),
|
|
|
19620
19741
|
}), method(_void(), array(TerminalSessionInfoSchema).readonly(), { auth: "admin" }), method(object({
|
|
19621
19742
|
profileId: string(),
|
|
19622
19743
|
cols: number().int().positive(),
|
|
19623
|
-
rows: number().int().positive()
|
|
19744
|
+
rows: number().int().positive(),
|
|
19745
|
+
executable: string().max(1024).optional(),
|
|
19746
|
+
args: array(string().max(2048)).max(64).optional(),
|
|
19747
|
+
cwd: string().max(1024).optional(),
|
|
19748
|
+
environment: array(string().max(4096)).max(64).optional()
|
|
19624
19749
|
}), TerminalSessionInfoSchema, {
|
|
19625
19750
|
kind: "mutation",
|
|
19626
19751
|
auth: "admin"
|
|
@@ -22425,10 +22550,10 @@ DeviceType.LawnMower, method(object({ deviceId: number().int().nonnegative() }),
|
|
|
22425
22550
|
*
|
|
22426
22551
|
* • The SDK (mobile / web client) consumes `getConnectionEndpoints()`
|
|
22427
22552
|
* to receive an ordered list of candidate base URLs it should race
|
|
22428
|
-
* on connect — LAN IPv4 first (lowest latency
|
|
22429
|
-
* then public hostname (if a tunnel is
|
|
22430
|
-
* race them with short timeouts and stick with the
|
|
22431
|
-
* session.
|
|
22553
|
+
* on connect — LAN IPv4 and stable LAN IPv6 first (lowest latency
|
|
22554
|
+
* when on the same network), then public hostname (if a tunnel is
|
|
22555
|
+
* up). The SDK can race them with short timeouts and stick with the
|
|
22556
|
+
* winner for the session.
|
|
22432
22557
|
*
|
|
22433
22558
|
* Why hub-only: agents are not directly addressable by the operator's
|
|
22434
22559
|
* clients — they reverse-connect to the hub. Exposing their interfaces
|
|
@@ -22583,6 +22708,17 @@ var NotificationEndpointSchema = object({
|
|
|
22583
22708
|
/** What the ranking currently resolves to (null when nothing is reachable). */
|
|
22584
22709
|
resolved: string().nullable()
|
|
22585
22710
|
});
|
|
22711
|
+
/**
|
|
22712
|
+
* The URLs the SDK / viewer should race for API access. `baseUrls` empty =
|
|
22713
|
+
* AUTO (every LAN IPv4 + the public tunnel). `resolved` is what that choice
|
|
22714
|
+
* currently expands to, so the UI can show the effective set either way.
|
|
22715
|
+
*/
|
|
22716
|
+
var ViewerEndpointsSchema = object({
|
|
22717
|
+
/** The operator's explicit race set, or empty for AUTO. */
|
|
22718
|
+
baseUrls: array(string()).readonly(),
|
|
22719
|
+
/** What the ranking currently resolves to (may be empty if nothing is up). */
|
|
22720
|
+
resolved: array(string()).readonly()
|
|
22721
|
+
});
|
|
22586
22722
|
var AllowedAddressesSchema = object({
|
|
22587
22723
|
/**
|
|
22588
22724
|
* Allowlist of interface addresses operators have explicitly opted
|
|
@@ -22591,6 +22727,20 @@ var AllowedAddressesSchema = object({
|
|
|
22591
22727
|
* Network Addresses admin page and persisted by the addon.
|
|
22592
22728
|
*/
|
|
22593
22729
|
addresses: array(string()).readonly() });
|
|
22730
|
+
var TlsStatusSchema = object({
|
|
22731
|
+
mode: _enum([
|
|
22732
|
+
"generated",
|
|
22733
|
+
"uploaded",
|
|
22734
|
+
"disabled"
|
|
22735
|
+
]),
|
|
22736
|
+
leafFingerprintSha256: string().nullable(),
|
|
22737
|
+
caFingerprintSha256: string().nullable(),
|
|
22738
|
+
validTo: string().nullable(),
|
|
22739
|
+
sans: array(string()),
|
|
22740
|
+
caCertPem: string().nullable(),
|
|
22741
|
+
reissueError: string().nullable(),
|
|
22742
|
+
restartRequired: boolean()
|
|
22743
|
+
});
|
|
22594
22744
|
method(_void(), ListResultSchema), method(_void(), PreferredSchema), method(object({
|
|
22595
22745
|
/**
|
|
22596
22746
|
* LEGACY HINT — do not send from new code. Kept optional so clients
|
|
@@ -22600,17 +22750,31 @@ method(_void(), ListResultSchema), method(_void(), PreferredSchema), method(obje
|
|
|
22600
22750
|
*/
|
|
22601
22751
|
port: number().int().min(1).max(65535).optional(),
|
|
22602
22752
|
/** Include `http(s)://127.0.0.1:<port>` as the lowest-priority
|
|
22603
|
-
* candidate. Default `
|
|
22753
|
+
* candidate. Default `false` — loopback is not a client route. */
|
|
22604
22754
|
includeLoopback: boolean().optional(),
|
|
22605
|
-
/** Skip IPv6 entries.
|
|
22606
|
-
*
|
|
22755
|
+
/** Skip IPv6 entries. Default `false` — the palette includes stable
|
|
22756
|
+
* LAN IPv6 (ICE/WebRTC uses dual-stack regardless). Pass `true` to
|
|
22757
|
+
* hide them. The viewer HTTP/WS race is `getViewerEndpoints`. */
|
|
22607
22758
|
ipv4Only: boolean().optional(),
|
|
22608
22759
|
/** Scheme to emit for LAN/loopback URLs. Default `'http'`.
|
|
22609
22760
|
* Pass `'https'` when the caller is itself loaded over HTTPS
|
|
22610
22761
|
* to avoid mixed-content blocks in the browser. The public
|
|
22611
22762
|
* tunnel always emits `https://` regardless. */
|
|
22612
22763
|
scheme: _enum(["http", "https"]).optional()
|
|
22613
|
-
}), GetConnectionEndpointsResultSchema), method(_void(), NotificationEndpointSchema), method(object({ baseUrl: string().nullable() }), NotificationEndpointSchema, { kind: "mutation" }), method(_void(), AllowedAddressesSchema), method(AllowedAddressesSchema, object({ success: literal(true) }), { kind: "mutation" }), method(_void(), AllowedAddressesSchema, { kind: "mutation" })
|
|
22764
|
+
}), GetConnectionEndpointsResultSchema), method(_void(), NotificationEndpointSchema), method(object({ baseUrl: string().nullable() }), NotificationEndpointSchema, { kind: "mutation" }), method(_void(), ViewerEndpointsSchema), method(object({ baseUrls: array(string()).readonly() }), ViewerEndpointsSchema, { kind: "mutation" }), method(_void(), AllowedAddressesSchema), method(AllowedAddressesSchema, object({ success: literal(true) }), { kind: "mutation" }), method(_void(), AllowedAddressesSchema, { kind: "mutation" }), method(_void(), TlsStatusSchema), method(object({ reason: string().optional() }), TlsStatusSchema, {
|
|
22765
|
+
kind: "mutation",
|
|
22766
|
+
auth: "admin"
|
|
22767
|
+
}), method(object({
|
|
22768
|
+
certPem: string().min(1),
|
|
22769
|
+
keyPem: string().min(1),
|
|
22770
|
+
caPem: string().optional()
|
|
22771
|
+
}), TlsStatusSchema, {
|
|
22772
|
+
kind: "mutation",
|
|
22773
|
+
auth: "admin"
|
|
22774
|
+
}), method(_void(), object({ pem: string() })), method(_void(), TlsStatusSchema, {
|
|
22775
|
+
kind: "mutation",
|
|
22776
|
+
auth: "admin"
|
|
22777
|
+
});
|
|
22614
22778
|
object({
|
|
22615
22779
|
/** Lifecycle state of the lock. `jammed` means the motor reported
|
|
22616
22780
|
* failure to reach the target — operator intervention required. */
|
|
@@ -28373,6 +28537,12 @@ Object.freeze({
|
|
|
28373
28537
|
addonId: null,
|
|
28374
28538
|
access: "create"
|
|
28375
28539
|
},
|
|
28540
|
+
"localNetwork.downloadCa": {
|
|
28541
|
+
capName: "local-network",
|
|
28542
|
+
capScope: "system",
|
|
28543
|
+
addonId: null,
|
|
28544
|
+
access: "view"
|
|
28545
|
+
},
|
|
28376
28546
|
"localNetwork.getAllowedAddresses": {
|
|
28377
28547
|
capName: "local-network",
|
|
28378
28548
|
capScope: "system",
|
|
@@ -28397,18 +28567,42 @@ Object.freeze({
|
|
|
28397
28567
|
addonId: null,
|
|
28398
28568
|
access: "view"
|
|
28399
28569
|
},
|
|
28570
|
+
"localNetwork.getTlsStatus": {
|
|
28571
|
+
capName: "local-network",
|
|
28572
|
+
capScope: "system",
|
|
28573
|
+
addonId: null,
|
|
28574
|
+
access: "view"
|
|
28575
|
+
},
|
|
28576
|
+
"localNetwork.getViewerEndpoints": {
|
|
28577
|
+
capName: "local-network",
|
|
28578
|
+
capScope: "system",
|
|
28579
|
+
addonId: null,
|
|
28580
|
+
access: "view"
|
|
28581
|
+
},
|
|
28400
28582
|
"localNetwork.list": {
|
|
28401
28583
|
capName: "local-network",
|
|
28402
28584
|
capScope: "system",
|
|
28403
28585
|
addonId: null,
|
|
28404
28586
|
access: "view"
|
|
28405
28587
|
},
|
|
28588
|
+
"localNetwork.regenerateCertificate": {
|
|
28589
|
+
capName: "local-network",
|
|
28590
|
+
capScope: "system",
|
|
28591
|
+
addonId: null,
|
|
28592
|
+
access: "create"
|
|
28593
|
+
},
|
|
28406
28594
|
"localNetwork.resetAllowlistToBestMatch": {
|
|
28407
28595
|
capName: "local-network",
|
|
28408
28596
|
capScope: "system",
|
|
28409
28597
|
addonId: null,
|
|
28410
28598
|
access: "delete"
|
|
28411
28599
|
},
|
|
28600
|
+
"localNetwork.revertToGeneratedCertificate": {
|
|
28601
|
+
capName: "local-network",
|
|
28602
|
+
capScope: "system",
|
|
28603
|
+
addonId: null,
|
|
28604
|
+
access: "create"
|
|
28605
|
+
},
|
|
28412
28606
|
"localNetwork.setAllowedAddresses": {
|
|
28413
28607
|
capName: "local-network",
|
|
28414
28608
|
capScope: "system",
|
|
@@ -28421,6 +28615,18 @@ Object.freeze({
|
|
|
28421
28615
|
addonId: null,
|
|
28422
28616
|
access: "create"
|
|
28423
28617
|
},
|
|
28618
|
+
"localNetwork.setViewerEndpoints": {
|
|
28619
|
+
capName: "local-network",
|
|
28620
|
+
capScope: "system",
|
|
28621
|
+
addonId: null,
|
|
28622
|
+
access: "create"
|
|
28623
|
+
},
|
|
28624
|
+
"localNetwork.uploadCertificate": {
|
|
28625
|
+
capName: "local-network",
|
|
28626
|
+
capScope: "system",
|
|
28627
|
+
addonId: null,
|
|
28628
|
+
access: "create"
|
|
28629
|
+
},
|
|
28424
28630
|
"lockControl.lock": {
|
|
28425
28631
|
capName: "lock-control",
|
|
28426
28632
|
capScope: "device",
|
|
@@ -31301,6 +31507,12 @@ Object.freeze({
|
|
|
31301
31507
|
addonId: null,
|
|
31302
31508
|
access: "create"
|
|
31303
31509
|
},
|
|
31510
|
+
"terminalSession.updateInstance": {
|
|
31511
|
+
capName: "terminal-session",
|
|
31512
|
+
capScope: "system",
|
|
31513
|
+
addonId: null,
|
|
31514
|
+
access: "create"
|
|
31515
|
+
},
|
|
31304
31516
|
"terminalSession.writeInput": {
|
|
31305
31517
|
capName: "terminal-session",
|
|
31306
31518
|
capScope: "system",
|
|
@@ -33788,6 +34000,35 @@ Object.freeze(Object.fromEntries([{
|
|
|
33788
34000
|
}]
|
|
33789
34001
|
}].map((s) => [s.stepId, s.defaultModelId])));
|
|
33790
34002
|
string().min(1);
|
|
34003
|
+
var CLUSTER_STEP_SETTING_FIELDS = [{
|
|
34004
|
+
stepId: "face-embedding",
|
|
34005
|
+
key: "minLandmarkFaceSize",
|
|
34006
|
+
label: "Min face size for recognition (detection px)",
|
|
34007
|
+
description: "Refuse to embed a face smaller than this IN THE DETECTION FRAME. Applies to every node — the enrolled gallery is one index, and two admission floors would fill it from two policies. 0 disables the gate.",
|
|
34008
|
+
type: "slider",
|
|
34009
|
+
min: 0,
|
|
34010
|
+
max: 64,
|
|
34011
|
+
step: 2,
|
|
34012
|
+
default: 24
|
|
34013
|
+
}];
|
|
34014
|
+
function clusterStepSettingKey(stepId, fieldKey) {
|
|
34015
|
+
return `clusterStepSetting:${stepId}:${fieldKey}`;
|
|
34016
|
+
}
|
|
34017
|
+
var ClusterSettingNumberSchema = number().finite();
|
|
34018
|
+
function readClusterStepSettings(config) {
|
|
34019
|
+
const out = {};
|
|
34020
|
+
for (const field of CLUSTER_STEP_SETTING_FIELDS) {
|
|
34021
|
+
const parsed = ClusterSettingNumberSchema.safeParse(config[clusterStepSettingKey(field.stepId, field.key)]);
|
|
34022
|
+
const value = parsed.success ? parsed.data : field.default;
|
|
34023
|
+
const existing = out[field.stepId] ?? {};
|
|
34024
|
+
out[field.stepId] = {
|
|
34025
|
+
...existing,
|
|
34026
|
+
[field.key]: value
|
|
34027
|
+
};
|
|
34028
|
+
}
|
|
34029
|
+
return out;
|
|
34030
|
+
}
|
|
34031
|
+
readClusterStepSettings({});
|
|
33791
34032
|
object({
|
|
33792
34033
|
/**
|
|
33793
34034
|
* Fraction of the box's own size added on EACH side before cutting.
|
|
@@ -21,7 +21,7 @@ var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__ge
|
|
|
21
21
|
enumerable: true
|
|
22
22
|
}) : target, mod));
|
|
23
23
|
//#endregion
|
|
24
|
-
const require_dist = require("../dist-
|
|
24
|
+
const require_dist = require("../dist-CbCaiEpw.js");
|
|
25
25
|
let node_crypto = require("node:crypto");
|
|
26
26
|
let node_path = require("node:path");
|
|
27
27
|
node_path = __toESM(node_path);
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { a as BaseAddon, c as boolean, d as number, f as object, m as EventCategory, n as defineCustomActions, o as _enum, p as string, r as networkAccessCapability, s as array, t as customAction, u as literal } from "../dist-
|
|
1
|
+
import { a as BaseAddon, c as boolean, d as number, f as object, m as EventCategory, n as defineCustomActions, o as _enum, p as string, r as networkAccessCapability, s as array, t as customAction, u as literal } from "../dist-DnohT9Id.mjs";
|
|
2
2
|
import { randomUUID } from "node:crypto";
|
|
3
3
|
import * as path from "node:path";
|
|
4
4
|
import { spawn } from "node:child_process";
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
|
|
2
|
-
const require_dist = require("../dist-
|
|
2
|
+
const require_dist = require("../dist-CbCaiEpw.js");
|
|
3
3
|
//#region src/turn/cloudflare-turn.ts
|
|
4
4
|
/**
|
|
5
5
|
* Cloudflare returns ICE servers in several flavours depending on which
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { a as BaseAddon, c as boolean, d as number, f as object, i as turnProviderCapability, l as discriminatedUnion, n as defineCustomActions, p as string, t as customAction, u as literal } from "../dist-
|
|
1
|
+
import { a as BaseAddon, c as boolean, d as number, f as object, i as turnProviderCapability, l as discriminatedUnion, n as defineCustomActions, p as string, t as customAction, u as literal } from "../dist-DnohT9Id.mjs";
|
|
2
2
|
//#region src/turn/cloudflare-turn.ts
|
|
3
3
|
/**
|
|
4
4
|
* Cloudflare returns ICE servers in several flavours depending on which
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@camstack/addon-cloudflare",
|
|
3
|
-
"version": "1.2.
|
|
3
|
+
"version": "1.2.26",
|
|
4
4
|
"description": "Cloudflare bundle — Tunnel (network-access) + TURN relay (turn-provider). Multi-entry npm package shipping 2 addons under a single bundle.",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"camstack",
|