@camstack/addon-cloudflare 1.1.29 → 1.2.0
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-uEQ179pR.js → dist-BlG4exZI.js} +193 -103
- package/dist/{dist-CNbtRwT8.mjs → dist-DJJB6LQC.mjs} +193 -103
- 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
|
@@ -7067,6 +7067,17 @@ var ModelCatalogEntrySchema = object({
|
|
|
7067
7067
|
"imagenet",
|
|
7068
7068
|
"none"
|
|
7069
7069
|
]).optional(),
|
|
7070
|
+
/**
|
|
7071
|
+
* The model already applies softmax IN-GRAPH — its raw output is a
|
|
7072
|
+
* probability distribution, not logits. When set, the `softmax`
|
|
7073
|
+
* postprocessor must NOT re-apply softmax: re-softmaxing an already-normalised
|
|
7074
|
+
* probability vector collapses it toward uniform (top-1 score craters far
|
|
7075
|
+
* below its true value, making every confidence gate meaningless). Absent ⇒
|
|
7076
|
+
* the output is raw logits and the postprocessor applies softmax (the normal
|
|
7077
|
+
* case). Set on the Google AIY Birds `bird-classifier` (softmax baked into the
|
|
7078
|
+
* TF graph). Threaded to the Python pool via `PoolModelConfig.outputProbabilities`.
|
|
7079
|
+
*/
|
|
7080
|
+
outputProbabilities: boolean().optional(),
|
|
7070
7081
|
preprocessMode: _enum(["letterbox", "resize"]).optional(),
|
|
7071
7082
|
/**
|
|
7072
7083
|
* Per-MODEL postprocessor override. Absent ⇒ the step's own
|
|
@@ -11080,10 +11091,7 @@ var ConfigUISchemaNullableBridge = custom();
|
|
|
11080
11091
|
var InferenceCapabilitiesBridge = custom();
|
|
11081
11092
|
var ModelAvailabilityListBridge = custom();
|
|
11082
11093
|
var PipelineRunResultBridge = custom();
|
|
11083
|
-
method(_void(), array(PipelineEngineChoiceSchema)), method(_void(), PipelineEngineChoiceSchema), method(PipelineEngineChoiceSchema, array(PipelineDefaultStepSchema)), method(_void(),
|
|
11084
|
-
kind: "mutation",
|
|
11085
|
-
auth: "admin"
|
|
11086
|
-
}), method(object({ nodeId: string() }), EngineProvisioningSchema), method(_void(), record(string(), object({
|
|
11094
|
+
method(_void(), array(PipelineEngineChoiceSchema)), method(_void(), PipelineEngineChoiceSchema), method(PipelineEngineChoiceSchema, array(PipelineDefaultStepSchema)), method(object({ nodeId: string() }), EngineProvisioningSchema), method(_void(), record(string(), object({
|
|
11087
11095
|
modelId: string(),
|
|
11088
11096
|
settings: record(string(), unknown()).readonly()
|
|
11089
11097
|
}))), method(object({ steps: record(string(), object({
|
|
@@ -11143,13 +11151,33 @@ method(_void(), array(PipelineEngineChoiceSchema)), method(_void(), PipelineEngi
|
|
|
11143
11151
|
* (inputClasses ≠ null) are skipped and served per-track via
|
|
11144
11152
|
* pipelineRunner.runDetailSubtree (two-plane design).
|
|
11145
11153
|
*/
|
|
11146
|
-
plane: _enum(["full", "frame"]).optional()
|
|
11154
|
+
plane: _enum(["full", "frame"]).optional(),
|
|
11155
|
+
/**
|
|
11156
|
+
* Inference-device selector (Phase 2 multi-device). Format
|
|
11157
|
+
* `<backend>:<device>` (e.g. `openvino:gpu`, `edgetpu:usb`, `cpu`).
|
|
11158
|
+
* Omitted ⇒ the runner's default device (current single-engine
|
|
11159
|
+
* behaviour). Selects WHICH device pool of the node runs the call.
|
|
11160
|
+
*/
|
|
11161
|
+
deviceKey: string().optional()
|
|
11147
11162
|
}), PipelineRunResultBridge, { kind: "mutation" }), method(object({
|
|
11148
11163
|
engine: PipelineEngineChoiceSchema.optional(),
|
|
11149
11164
|
steps: array(PipelineStepInputSchema).min(1),
|
|
11150
11165
|
frames: array(FrameInputSchema).min(1).max(255),
|
|
11151
11166
|
deviceId: number().optional(),
|
|
11152
|
-
sessionId: string().optional()
|
|
11167
|
+
sessionId: string().optional(),
|
|
11168
|
+
/**
|
|
11169
|
+
* Pure-inference benchmark hint. A NONZERO uint32 pins every frame in
|
|
11170
|
+
* the batch to the Python pool's bench preprocess cache
|
|
11171
|
+
* (`_bench_frame_id`) so a REPEATED benchmark frame is decoded +
|
|
11172
|
+
* preprocessed ONCE and every later inference is a pure-inference cache
|
|
11173
|
+
* hit — the sustained-throughput run measures inference, not
|
|
11174
|
+
* decode+preprocess+infer. Omitted/0 for live frames (all different →
|
|
11175
|
+
* full preprocess every call, correct). Fresh per sustained run;
|
|
11176
|
+
* released via `uncacheFrame`.
|
|
11177
|
+
*/
|
|
11178
|
+
frameId: number().int().nonnegative().optional(),
|
|
11179
|
+
/** Inference-device selector (Phase 2 multi-device); see runPipeline. */
|
|
11180
|
+
deviceKey: string().optional()
|
|
11153
11181
|
}), object({ results: array(PipelineRunResultBridge).readonly() }), { kind: "mutation" }), method(object({
|
|
11154
11182
|
data: _instanceof(Uint8Array),
|
|
11155
11183
|
width: number().int().positive(),
|
|
@@ -11181,8 +11209,18 @@ method(_void(), array(PipelineEngineChoiceSchema)), method(_void(), PipelineEngi
|
|
|
11181
11209
|
* - `runtime` — main camera-serving engine (no idle TTL).
|
|
11182
11210
|
* - `warm-override` — benchmark/test override held in the warm
|
|
11183
11211
|
* cache; auto-disposed after the idle TTL.
|
|
11212
|
+
* - `device-pool` — a concurrent per-device pool (Phase 2
|
|
11213
|
+
* multi-device, keyed by `deviceKey`) resolved
|
|
11214
|
+
* via `resolveDeviceFactory`. Runs alongside the
|
|
11215
|
+
* `runtime` engine on a DIFFERENT accelerator
|
|
11216
|
+
* (NPU / iGPU / Coral) — this is how the
|
|
11217
|
+
* Engines tab shows all pools running at once.
|
|
11184
11218
|
*/
|
|
11185
|
-
kind: _enum([
|
|
11219
|
+
kind: _enum([
|
|
11220
|
+
"runtime",
|
|
11221
|
+
"warm-override",
|
|
11222
|
+
"device-pool"
|
|
11223
|
+
]),
|
|
11186
11224
|
/** Native pid of the underlying Python pool (null when no pool). */
|
|
11187
11225
|
poolPid: number().nullable(),
|
|
11188
11226
|
/** ms since this factory was last used (null when not warm-tracked). */
|
|
@@ -11524,7 +11562,14 @@ var RunnerCameraConfigSchema = object({
|
|
|
11524
11562
|
* camera's detect node differs from its source-owner (P2d, gated by the
|
|
11525
11563
|
* `remoteSourcingNodes` rollout setting).
|
|
11526
11564
|
*/
|
|
11527
|
-
frameSource: RunnerFrameSourceSchema.default({ kind: "local-broker" })
|
|
11565
|
+
frameSource: RunnerFrameSourceSchema.default({ kind: "local-broker" }),
|
|
11566
|
+
/**
|
|
11567
|
+
* Inference-device selector for this camera's sessions (Phase 2 multi-device).
|
|
11568
|
+
* Format `<backend>:<device>` (e.g. `openvino:gpu`, `edgetpu:usb`, `cpu`);
|
|
11569
|
+
* omitted ⇒ the runner's default device. The engine itself stays node-local —
|
|
11570
|
+
* this only selects WHICH device pool of that node runs the session.
|
|
11571
|
+
*/
|
|
11572
|
+
deviceKey: string().optional()
|
|
11528
11573
|
});
|
|
11529
11574
|
motionFpsField.min, motionFpsField.max, motionFpsField.step, motionFpsField.default, detectionFpsField.min, detectionFpsField.max, detectionFpsField.step, detectionFpsField.default, motionCooldownMsField.min, motionCooldownMsField.max, motionCooldownMsField.step, motionCooldownMsField.default, occupancyRecheckSecField.min, occupancyRecheckSecField.max, occupancyRecheckSecField.step, occupancyRecheckSecField.default, occupancyRecheckFramesField.min, occupancyRecheckFramesField.max, occupancyRecheckFramesField.step, occupancyRecheckFramesField.default;
|
|
11530
11575
|
/**
|
|
@@ -11545,6 +11590,19 @@ var RunnerLocalLoadSchema = object({
|
|
|
11545
11590
|
avgInferenceTimeMs: number(),
|
|
11546
11591
|
/** Total queue depth across motion + detection queues. */
|
|
11547
11592
|
queueDepthTotal: number(),
|
|
11593
|
+
/**
|
|
11594
|
+
* Per-inference-device live load (multi-device C4). One entry per deviceKey
|
|
11595
|
+
* this runner currently has attached cameras on, so the orchestrator's second
|
|
11596
|
+
* `balance()` pass (over a node's devices) weights on real per-pool session
|
|
11597
|
+
* counts. Empty on single-device / pre-multi-device runners. `queueDepthTotal`
|
|
11598
|
+
* per device is 0 until the pool backlog gets a public accessor (follow-up).
|
|
11599
|
+
*/
|
|
11600
|
+
devices: array(object({
|
|
11601
|
+
deviceKey: string(),
|
|
11602
|
+
backend: string(),
|
|
11603
|
+
attachedCameras: number(),
|
|
11604
|
+
queueDepthTotal: number()
|
|
11605
|
+
})).default([]),
|
|
11548
11606
|
/** Hardware capability flags reported by this node. */
|
|
11549
11607
|
hardware: object({
|
|
11550
11608
|
hasGpu: boolean(),
|
|
@@ -13020,6 +13078,8 @@ method(_void(), _void(), { kind: "mutation" }), method(_void(), _void(), { kind:
|
|
|
13020
13078
|
kind: "mutation",
|
|
13021
13079
|
auth: "admin"
|
|
13022
13080
|
});
|
|
13081
|
+
DeviceType.Cover, DeviceType.Valve, DeviceType.Humidifier, DeviceType.WaterHeater, DeviceType.Camera, DeviceType.Hub, DeviceType.Switch, DeviceType.Siren, DeviceType.Light, DeviceType.Fan, DeviceType.Sensor, DeviceType.Thermostat, DeviceType.Climate, DeviceType.Button, DeviceType.EventEmitter, DeviceType.Update, DeviceType.Generic, DeviceType.Notifier, DeviceType.Script, DeviceType.Automation, DeviceType.Lock, DeviceType.MediaPlayer, DeviceType.AlarmPanel, DeviceType.Control, DeviceType.Presence, DeviceType.Weather, DeviceType.Vacuum, DeviceType.LawnMower, DeviceType.Container, DeviceType.Image, DeviceType.PetFeeder;
|
|
13082
|
+
new Set(Object.values(DeviceType));
|
|
13023
13083
|
/**
|
|
13024
13084
|
* `addon-pages` — system-scoped singleton aggregator cap. Public-facing
|
|
13025
13085
|
* surface that admin-ui consumes through `useAddonPagesListPages()`.
|
|
@@ -16727,13 +16787,11 @@ var PipelineTemplateSchema = object({
|
|
|
16727
16787
|
createdAt: string(),
|
|
16728
16788
|
updatedAt: string()
|
|
16729
16789
|
});
|
|
16730
|
-
var
|
|
16731
|
-
enabled: boolean(),
|
|
16790
|
+
var DeviceStepConfigSchema = object({
|
|
16732
16791
|
modelId: string().optional(),
|
|
16733
|
-
settings: record(string(), unknown()).
|
|
16792
|
+
settings: record(string(), unknown()).optional()
|
|
16734
16793
|
});
|
|
16735
16794
|
var AgentPipelineSettingsSchema = object({
|
|
16736
|
-
addonDefaults: record(string(), AgentAddonConfigSchema).readonly(),
|
|
16737
16795
|
maxCameras: number().int().nonnegative().nullable().default(null),
|
|
16738
16796
|
/** Per-node detection weight (relative share for the quota balancer). */
|
|
16739
16797
|
detectWeight: number().positive().optional(),
|
|
@@ -16757,7 +16815,22 @@ var AgentPipelineSettingsSchema = object({
|
|
|
16757
16815
|
* it already uses to reach the hub). Set this only when the auto-detected
|
|
16758
16816
|
* address is wrong (multi-homed host, NAT, custom interface).
|
|
16759
16817
|
*/
|
|
16760
|
-
reachableHost: string().optional()
|
|
16818
|
+
reachableHost: string().optional(),
|
|
16819
|
+
/**
|
|
16820
|
+
* Multi-device inference opt-in (Phase 4). Per-node map deviceKey → {enabled,
|
|
16821
|
+
* weight, steps}. Absent / all-disabled ⇒ the node's single default
|
|
16822
|
+
* accelerator (safe default); two+ enabled ⇒ the dispatcher balances
|
|
16823
|
+
* detection sessions across them so they run CONCURRENTLY. `steps` is the
|
|
16824
|
+
* per-(node,device) BASE provisioning (`stepId → {modelId?, settings?}`) —
|
|
16825
|
+
* the default model/settings for every camera landing on that accelerator;
|
|
16826
|
+
* a stepId absent ⇒ the step uses that device's format default.
|
|
16827
|
+
*/
|
|
16828
|
+
inferenceDevices: record(string(), object({
|
|
16829
|
+
enabled: boolean(),
|
|
16830
|
+
weight: number().positive().optional(),
|
|
16831
|
+
maxSessions: number().int().positive().optional(),
|
|
16832
|
+
steps: record(string(), DeviceStepConfigSchema).optional()
|
|
16833
|
+
})).optional()
|
|
16761
16834
|
});
|
|
16762
16835
|
var CameraPipelineForAgentSchema = object({
|
|
16763
16836
|
steps: array(PipelineStepInputSchema).readonly(),
|
|
@@ -16767,14 +16840,13 @@ var CameraPipelineForAgentSchema = object({
|
|
|
16767
16840
|
}).nullable()
|
|
16768
16841
|
});
|
|
16769
16842
|
var CameraStepOverridePatchSchema = object({
|
|
16770
|
-
enabled: boolean().optional(),
|
|
16771
16843
|
modelId: string().optional(),
|
|
16772
16844
|
settings: record(string(), unknown()).readonly().optional()
|
|
16773
16845
|
});
|
|
16774
16846
|
var CameraPipelineSettingsSchema = object({
|
|
16775
16847
|
pinnedAgentNodeId: string().optional(),
|
|
16776
16848
|
stepToggles: record(string(), boolean()).optional(),
|
|
16777
|
-
|
|
16849
|
+
stepOverridesByDevice: record(string(), record(string(), record(string(), CameraStepOverridePatchSchema))).optional(),
|
|
16778
16850
|
pipelineByAgent: record(string(), CameraPipelineForAgentSchema).optional()
|
|
16779
16851
|
});
|
|
16780
16852
|
/**
|
|
@@ -16988,6 +17060,44 @@ var CameraStatusSchema = object({
|
|
|
16988
17060
|
/** Unix timestamp (ms) when this snapshot was composed server-side. */
|
|
16989
17061
|
fetchedAt: number()
|
|
16990
17062
|
});
|
|
17063
|
+
var NodeInferenceDeviceSchema = object({
|
|
17064
|
+
/** Stable per-node device key, e.g. `openvino:npu`, `edgetpu:usb`, `cpu`. */
|
|
17065
|
+
key: string(),
|
|
17066
|
+
backend: string(),
|
|
17067
|
+
device: string(),
|
|
17068
|
+
format: _enum(MODEL_FORMATS),
|
|
17069
|
+
/** Whether the node's live probe reports the device as usable right now. */
|
|
17070
|
+
available: boolean(),
|
|
17071
|
+
/**
|
|
17072
|
+
* Whether this device participates in dispatch. AUTO default (spec C2):
|
|
17073
|
+
* accelerators are opt-OUT (a discovered NPU/iGPU/Coral/ANE with no stored
|
|
17074
|
+
* entry is `true`); CPU is opt-IN (`false` by default — the fallback pool,
|
|
17075
|
+
* not a balanced target). An explicit stored value always wins; a stored-only
|
|
17076
|
+
* (unavailable) key keeps its stored value.
|
|
17077
|
+
*/
|
|
17078
|
+
enabled: boolean(),
|
|
17079
|
+
/** Relative balancer weight for the enabled device (default 1). */
|
|
17080
|
+
weight: number(),
|
|
17081
|
+
/** Per-device concurrent-session cap; null = unlimited (multi-device C4). */
|
|
17082
|
+
maxSessions: number().nullable(),
|
|
17083
|
+
/** Object-detection model the executor defaults to for this deviceKey. */
|
|
17084
|
+
defaultModelId: string(),
|
|
17085
|
+
/**
|
|
17086
|
+
* Per-(node,device) BASE provisioning (C7.2/C7.4) — the RAW stored
|
|
17087
|
+
* `stepId → {modelId?, settings?}` map from `inferenceDevices[key].steps`.
|
|
17088
|
+
* Absent/empty ⇒ no base (every step uses its device format default). The
|
|
17089
|
+
* UI cross-references `pipelineExecutor.getSchema` for the models actually
|
|
17090
|
+
* available per format; this is the stored selection that becomes the
|
|
17091
|
+
* default for EVERY camera landing on this accelerator.
|
|
17092
|
+
*/
|
|
17093
|
+
steps: record(string(), DeviceStepConfigSchema).optional()
|
|
17094
|
+
});
|
|
17095
|
+
var NodeInferenceDevicesSchema = object({
|
|
17096
|
+
nodeId: string(),
|
|
17097
|
+
/** False when the node's platform-probe was unreachable (no live device set). */
|
|
17098
|
+
reachable: boolean(),
|
|
17099
|
+
devices: array(NodeInferenceDeviceSchema).readonly()
|
|
17100
|
+
});
|
|
16991
17101
|
method(object({
|
|
16992
17102
|
deviceId: number(),
|
|
16993
17103
|
agentNodeId: string()
|
|
@@ -16997,7 +17107,13 @@ method(object({
|
|
|
16997
17107
|
}), method(object({ deviceId: number() }), object({ success: literal(true) }), {
|
|
16998
17108
|
kind: "mutation",
|
|
16999
17109
|
auth: "admin"
|
|
17000
|
-
}), method(
|
|
17110
|
+
}), method(object({
|
|
17111
|
+
deviceId: number(),
|
|
17112
|
+
deviceKey: string()
|
|
17113
|
+
}), object({ success: literal(true) }), {
|
|
17114
|
+
kind: "mutation",
|
|
17115
|
+
auth: "admin"
|
|
17116
|
+
}), method(object({ deviceId: number() }), object({ deviceKey: string().nullable() })), method(_void(), object({ migrated: number() }), {
|
|
17001
17117
|
kind: "mutation",
|
|
17002
17118
|
auth: "admin"
|
|
17003
17119
|
}), method(_void(), array(PipelineAssignmentSchema).readonly()), method(object({ deviceId: number() }), PipelineAssignmentSchema.nullable()), method(_void(), array(AgentLoadSummarySchema).readonly()), method(_void(), GlobalMetricsSchema), method(object({ deviceId: number() }), CameraMetricsSchema.nullable()), method(object({ nodeId: string() }), CapabilityBindingsSchema), method(object({
|
|
@@ -17031,13 +17147,7 @@ method(object({
|
|
|
17031
17147
|
}))), method(object({ agentNodeId: string() }), AgentPipelineSettingsSchema.nullable()), method(_void(), array(object({
|
|
17032
17148
|
nodeId: string(),
|
|
17033
17149
|
settings: AgentPipelineSettingsSchema
|
|
17034
|
-
})).readonly()), method(object({
|
|
17035
|
-
agentNodeId: string(),
|
|
17036
|
-
defaults: record(string(), AgentAddonConfigSchema)
|
|
17037
|
-
}), object({ success: literal(true) }), {
|
|
17038
|
-
kind: "mutation",
|
|
17039
|
-
auth: "admin"
|
|
17040
|
-
}), method(object({ agentNodeId: string() }), object({
|
|
17150
|
+
})).readonly()), method(object({ agentNodeId: string() }), object({
|
|
17041
17151
|
success: boolean(),
|
|
17042
17152
|
removed: boolean()
|
|
17043
17153
|
}), {
|
|
@@ -17069,7 +17179,18 @@ method(object({
|
|
|
17069
17179
|
}), object({ success: literal(true) }), {
|
|
17070
17180
|
kind: "mutation",
|
|
17071
17181
|
auth: "admin"
|
|
17072
|
-
}), method(object({
|
|
17182
|
+
}), method(object({
|
|
17183
|
+
agentNodeId: string(),
|
|
17184
|
+
inferenceDevices: record(string(), object({
|
|
17185
|
+
enabled: boolean(),
|
|
17186
|
+
weight: number().positive().optional(),
|
|
17187
|
+
maxSessions: number().int().positive().optional(),
|
|
17188
|
+
steps: record(string(), DeviceStepConfigSchema).optional()
|
|
17189
|
+
}))
|
|
17190
|
+
}), object({ success: literal(true) }), {
|
|
17191
|
+
kind: "mutation",
|
|
17192
|
+
auth: "admin"
|
|
17193
|
+
}), method(object({ nodeId: string() }), NodeInferenceDevicesSchema), method(object({ agentNodeId: string() }), object({
|
|
17073
17194
|
success: literal(true),
|
|
17074
17195
|
/** Hardware-aware default detection model now in effect on the node (null when unresolvable). */
|
|
17075
17196
|
effectiveModelId: string().nullable(),
|
|
@@ -17085,9 +17206,10 @@ method(object({
|
|
|
17085
17206
|
}), object({ success: literal(true) }), {
|
|
17086
17207
|
kind: "mutation",
|
|
17087
17208
|
auth: "admin"
|
|
17088
|
-
}), method(object({ deviceId: number() }), record(string(), record(string(), CameraStepOverridePatchSchema)).nullable()), method(object({
|
|
17209
|
+
}), method(object({ deviceId: number() }), record(string(), record(string(), record(string(), CameraStepOverridePatchSchema))).nullable()), method(object({
|
|
17089
17210
|
deviceId: number(),
|
|
17090
17211
|
agentNodeId: string(),
|
|
17212
|
+
deviceKey: string(),
|
|
17091
17213
|
addonId: string(),
|
|
17092
17214
|
patch: CameraStepOverridePatchSchema.nullable()
|
|
17093
17215
|
}), object({ success: literal(true) }), {
|
|
@@ -17124,14 +17246,13 @@ method(object({
|
|
|
17124
17246
|
});
|
|
17125
17247
|
/**
|
|
17126
17248
|
* server-management — per-NODE singleton capability for a node's ROOT
|
|
17127
|
-
* package lifecycle (runtime-updatable node packages
|
|
17128
|
-
* agents).
|
|
17249
|
+
* package lifecycle (runtime-updatable node packages).
|
|
17129
17250
|
*
|
|
17130
|
-
*
|
|
17131
|
-
*
|
|
17132
|
-
*
|
|
17133
|
-
*
|
|
17134
|
-
*
|
|
17251
|
+
* Every node role runs the SAME root package (`@camstack/server`), which
|
|
17252
|
+
* carries the whole software stack in its npm dep tree, so ONE version
|
|
17253
|
+
* describes the node. Updates stage into `<dataDir>/server-root/` and apply
|
|
17254
|
+
* on restart via the baked starter (single-copy in-place swap — no probation,
|
|
17255
|
+
* no auto-rollback).
|
|
17135
17256
|
*
|
|
17136
17257
|
* Providers:
|
|
17137
17258
|
* - HUB: `ServerUpdateService` behind the `server-provided` mount
|
|
@@ -17239,7 +17360,8 @@ method(_void(), ServerPackageStatusSchema, { auth: "admin" }), method(_void(), S
|
|
|
17239
17360
|
/** Explicit target version; omitted = latest from the registry. */
|
|
17240
17361
|
version: string().optional() }), ServerUpdateActionResultSchema, {
|
|
17241
17362
|
kind: "mutation",
|
|
17242
|
-
auth: "admin"
|
|
17363
|
+
auth: "admin",
|
|
17364
|
+
timeoutMs: 16 * 6e4
|
|
17243
17365
|
}), method(_void(), ServerUpdateActionResultSchema, {
|
|
17244
17366
|
kind: "mutation",
|
|
17245
17367
|
auth: "admin"
|
|
@@ -18306,22 +18428,6 @@ var AddonAutoUpdateSchema = ChannelWithInheritSchema;
|
|
|
18306
18428
|
var RestartAddonResultSchema = unknown();
|
|
18307
18429
|
var InstallPackageResultSchema = unknown();
|
|
18308
18430
|
var ReloadPackagesResultSchema = unknown();
|
|
18309
|
-
/**
|
|
18310
|
-
* Result of `updateFrameworkPackage`. The cap method returns BEFORE the
|
|
18311
|
-
* server restarts so the admin UI can react to the `restartingAt`
|
|
18312
|
-
* timestamp (shows reconnect overlay). The transition from
|
|
18313
|
-
* `fromVersion` to `toVersion` will be confirmed by a subsequent
|
|
18314
|
-
* `system.restart-completed` event after the new process boots.
|
|
18315
|
-
*
|
|
18316
|
-
* Spec: docs/superpowers/specs/2026-05-14-framework-live-update-design.md
|
|
18317
|
-
*/
|
|
18318
|
-
var UpdateFrameworkPackageResultSchema = object({
|
|
18319
|
-
packageName: string(),
|
|
18320
|
-
fromVersion: string(),
|
|
18321
|
-
toVersion: string(),
|
|
18322
|
-
/** Ms-epoch the server scheduled its self-restart. */
|
|
18323
|
-
restartingAt: number()
|
|
18324
|
-
});
|
|
18325
18431
|
var BulkUpdateItemStatusSchema = _enum([
|
|
18326
18432
|
"queued",
|
|
18327
18433
|
"updating",
|
|
@@ -18449,13 +18555,6 @@ method(_void(), array(AddonListItemSchema).readonly()), method(object({
|
|
|
18449
18555
|
}), object({ success: literal(true) }), {
|
|
18450
18556
|
kind: "mutation",
|
|
18451
18557
|
auth: "admin"
|
|
18452
|
-
}), method(object({
|
|
18453
|
-
packageName: string().min(1),
|
|
18454
|
-
version: string().optional(),
|
|
18455
|
-
deferRestart: boolean().optional()
|
|
18456
|
-
}), UpdateFrameworkPackageResultSchema, {
|
|
18457
|
-
kind: "mutation",
|
|
18458
|
-
auth: "admin"
|
|
18459
18558
|
}), method(object({ name: string() }), array(PackageVersionInfoSchema).readonly()), method(object({ addonId: string() }), RestartAddonResultSchema, {
|
|
18460
18559
|
kind: "mutation",
|
|
18461
18560
|
auth: "admin"
|
|
@@ -19321,10 +19420,10 @@ var TopologyCategorySchema = object({
|
|
|
19321
19420
|
addons: array(TopologyCategoryAddonSchema).readonly()
|
|
19322
19421
|
});
|
|
19323
19422
|
/**
|
|
19324
|
-
* The node's runtime-updatable ROOT package (`@camstack/server`
|
|
19325
|
-
*
|
|
19326
|
-
* version visibility for the Server management surface. Nullable:
|
|
19327
|
-
* rows and
|
|
19423
|
+
* The node's runtime-updatable ROOT package (`@camstack/server` — the single
|
|
19424
|
+
* root package for every node role) as reported by its `registerNode`
|
|
19425
|
+
* manifest — version visibility for the Server management surface. Nullable:
|
|
19426
|
+
* offline rows and nodes that never reported one.
|
|
19328
19427
|
*/
|
|
19329
19428
|
var TopologyRootPackageSchema = object({
|
|
19330
19429
|
name: string(),
|
|
@@ -19712,17 +19811,28 @@ var PlatformScoreSchema = object({
|
|
|
19712
19811
|
format: _enum([
|
|
19713
19812
|
"onnx",
|
|
19714
19813
|
"coreml",
|
|
19715
|
-
"openvino"
|
|
19814
|
+
"openvino",
|
|
19815
|
+
"tflite"
|
|
19716
19816
|
]),
|
|
19717
19817
|
score: number(),
|
|
19718
19818
|
reason: string(),
|
|
19719
19819
|
available: boolean()
|
|
19720
19820
|
});
|
|
19821
|
+
var InferenceDeviceDescriptorSchema = object({
|
|
19822
|
+
key: string(),
|
|
19823
|
+
backend: string(),
|
|
19824
|
+
device: string(),
|
|
19825
|
+
format: ModelFormatSchema,
|
|
19826
|
+
runtime: literal("python"),
|
|
19827
|
+
score: number(),
|
|
19828
|
+
available: boolean()
|
|
19829
|
+
});
|
|
19721
19830
|
var PlatformCapabilitiesSchema = object({
|
|
19722
19831
|
hardware: HardwareInfoSchema,
|
|
19723
19832
|
scores: array(PlatformScoreSchema).readonly(),
|
|
19724
19833
|
bestScore: PlatformScoreSchema,
|
|
19725
|
-
pythonPath: string().nullable()
|
|
19834
|
+
pythonPath: string().nullable(),
|
|
19835
|
+
devices: array(InferenceDeviceDescriptorSchema).readonly()
|
|
19726
19836
|
});
|
|
19727
19837
|
var ModelRequirementSchema = object({
|
|
19728
19838
|
modelId: string(),
|
|
@@ -20601,12 +20711,6 @@ Object.freeze({
|
|
|
20601
20711
|
addonId: null,
|
|
20602
20712
|
access: "delete"
|
|
20603
20713
|
},
|
|
20604
|
-
"addons.updateFrameworkPackage": {
|
|
20605
|
-
capName: "addons",
|
|
20606
|
-
capScope: "system",
|
|
20607
|
-
addonId: null,
|
|
20608
|
-
access: "create"
|
|
20609
|
-
},
|
|
20610
20714
|
"addons.updatePackage": {
|
|
20611
20715
|
capName: "addons",
|
|
20612
20716
|
capScope: "system",
|
|
@@ -23379,12 +23483,6 @@ Object.freeze({
|
|
|
23379
23483
|
addonId: null,
|
|
23380
23484
|
access: "view"
|
|
23381
23485
|
},
|
|
23382
|
-
"pipelineExecutor.reprobeEngine": {
|
|
23383
|
-
capName: "pipeline-executor",
|
|
23384
|
-
capScope: "system",
|
|
23385
|
-
addonId: null,
|
|
23386
|
-
access: "create"
|
|
23387
|
-
},
|
|
23388
23486
|
"pipelineExecutor.runAudioTest": {
|
|
23389
23487
|
capName: "pipeline-executor",
|
|
23390
23488
|
capScope: "system",
|
|
@@ -23535,6 +23633,12 @@ Object.freeze({
|
|
|
23535
23633
|
addonId: null,
|
|
23536
23634
|
access: "view"
|
|
23537
23635
|
},
|
|
23636
|
+
"pipelineOrchestrator.getNodeInferenceDevices": {
|
|
23637
|
+
capName: "pipeline-orchestrator",
|
|
23638
|
+
capScope: "system",
|
|
23639
|
+
addonId: null,
|
|
23640
|
+
access: "view"
|
|
23641
|
+
},
|
|
23538
23642
|
"pipelineOrchestrator.getPipelineAssignment": {
|
|
23539
23643
|
capName: "pipeline-orchestrator",
|
|
23540
23644
|
capScope: "system",
|
|
@@ -23547,6 +23651,12 @@ Object.freeze({
|
|
|
23547
23651
|
addonId: null,
|
|
23548
23652
|
access: "view"
|
|
23549
23653
|
},
|
|
23654
|
+
"pipelineOrchestrator.getPipelineDevicePin": {
|
|
23655
|
+
capName: "pipeline-orchestrator",
|
|
23656
|
+
capScope: "system",
|
|
23657
|
+
addonId: null,
|
|
23658
|
+
access: "view"
|
|
23659
|
+
},
|
|
23550
23660
|
"pipelineOrchestrator.listAgentSettings": {
|
|
23551
23661
|
capName: "pipeline-orchestrator",
|
|
23552
23662
|
capScope: "system",
|
|
@@ -23589,19 +23699,19 @@ Object.freeze({
|
|
|
23589
23699
|
addonId: null,
|
|
23590
23700
|
access: "create"
|
|
23591
23701
|
},
|
|
23592
|
-
"pipelineOrchestrator.
|
|
23702
|
+
"pipelineOrchestrator.setAgentCapabilities": {
|
|
23593
23703
|
capName: "pipeline-orchestrator",
|
|
23594
23704
|
capScope: "system",
|
|
23595
23705
|
addonId: null,
|
|
23596
23706
|
access: "create"
|
|
23597
23707
|
},
|
|
23598
|
-
"pipelineOrchestrator.
|
|
23708
|
+
"pipelineOrchestrator.setAgentDetectWeight": {
|
|
23599
23709
|
capName: "pipeline-orchestrator",
|
|
23600
23710
|
capScope: "system",
|
|
23601
23711
|
addonId: null,
|
|
23602
23712
|
access: "create"
|
|
23603
23713
|
},
|
|
23604
|
-
"pipelineOrchestrator.
|
|
23714
|
+
"pipelineOrchestrator.setAgentInferenceDevices": {
|
|
23605
23715
|
capName: "pipeline-orchestrator",
|
|
23606
23716
|
capScope: "system",
|
|
23607
23717
|
addonId: null,
|
|
@@ -23643,6 +23753,12 @@ Object.freeze({
|
|
|
23643
23753
|
addonId: null,
|
|
23644
23754
|
access: "create"
|
|
23645
23755
|
},
|
|
23756
|
+
"pipelineOrchestrator.setPipelineDevicePin": {
|
|
23757
|
+
capName: "pipeline-orchestrator",
|
|
23758
|
+
capScope: "system",
|
|
23759
|
+
addonId: null,
|
|
23760
|
+
access: "create"
|
|
23761
|
+
},
|
|
23646
23762
|
"pipelineOrchestrator.unassignAudio": {
|
|
23647
23763
|
capName: "pipeline-orchestrator",
|
|
23648
23764
|
capScope: "system",
|
|
@@ -25195,32 +25311,6 @@ Object.freeze({
|
|
|
25195
25311
|
"network-access": "ingress",
|
|
25196
25312
|
"smtp-provider": "email"
|
|
25197
25313
|
});
|
|
25198
|
-
var frameworkSwapPackageSchema = object({
|
|
25199
|
-
name: string(),
|
|
25200
|
-
stagedPath: string(),
|
|
25201
|
-
backupPath: string(),
|
|
25202
|
-
toVersion: string(),
|
|
25203
|
-
fromVersion: string().nullable()
|
|
25204
|
-
});
|
|
25205
|
-
object({
|
|
25206
|
-
jobId: string(),
|
|
25207
|
-
taskId: string(),
|
|
25208
|
-
packages: array(frameworkSwapPackageSchema),
|
|
25209
|
-
requestedAtMs: number(),
|
|
25210
|
-
schemaVersion: literal(1)
|
|
25211
|
-
});
|
|
25212
|
-
object({
|
|
25213
|
-
jobId: string(),
|
|
25214
|
-
taskId: string(),
|
|
25215
|
-
backups: array(object({
|
|
25216
|
-
name: string(),
|
|
25217
|
-
backupPath: string(),
|
|
25218
|
-
livePath: string()
|
|
25219
|
-
})),
|
|
25220
|
-
appliedAtMs: number(),
|
|
25221
|
-
bootAttempts: number(),
|
|
25222
|
-
schemaVersion: literal(1)
|
|
25223
|
-
});
|
|
25224
25314
|
//#endregion
|
|
25225
25315
|
Object.defineProperty(exports, "BaseAddon", {
|
|
25226
25316
|
enumerable: true,
|
|
@@ -7067,6 +7067,17 @@ var ModelCatalogEntrySchema = object({
|
|
|
7067
7067
|
"imagenet",
|
|
7068
7068
|
"none"
|
|
7069
7069
|
]).optional(),
|
|
7070
|
+
/**
|
|
7071
|
+
* The model already applies softmax IN-GRAPH — its raw output is a
|
|
7072
|
+
* probability distribution, not logits. When set, the `softmax`
|
|
7073
|
+
* postprocessor must NOT re-apply softmax: re-softmaxing an already-normalised
|
|
7074
|
+
* probability vector collapses it toward uniform (top-1 score craters far
|
|
7075
|
+
* below its true value, making every confidence gate meaningless). Absent ⇒
|
|
7076
|
+
* the output is raw logits and the postprocessor applies softmax (the normal
|
|
7077
|
+
* case). Set on the Google AIY Birds `bird-classifier` (softmax baked into the
|
|
7078
|
+
* TF graph). Threaded to the Python pool via `PoolModelConfig.outputProbabilities`.
|
|
7079
|
+
*/
|
|
7080
|
+
outputProbabilities: boolean().optional(),
|
|
7070
7081
|
preprocessMode: _enum(["letterbox", "resize"]).optional(),
|
|
7071
7082
|
/**
|
|
7072
7083
|
* Per-MODEL postprocessor override. Absent ⇒ the step's own
|
|
@@ -11080,10 +11091,7 @@ var ConfigUISchemaNullableBridge = custom();
|
|
|
11080
11091
|
var InferenceCapabilitiesBridge = custom();
|
|
11081
11092
|
var ModelAvailabilityListBridge = custom();
|
|
11082
11093
|
var PipelineRunResultBridge = custom();
|
|
11083
|
-
method(_void(), array(PipelineEngineChoiceSchema)), method(_void(), PipelineEngineChoiceSchema), method(PipelineEngineChoiceSchema, array(PipelineDefaultStepSchema)), method(_void(),
|
|
11084
|
-
kind: "mutation",
|
|
11085
|
-
auth: "admin"
|
|
11086
|
-
}), method(object({ nodeId: string() }), EngineProvisioningSchema), method(_void(), record(string(), object({
|
|
11094
|
+
method(_void(), array(PipelineEngineChoiceSchema)), method(_void(), PipelineEngineChoiceSchema), method(PipelineEngineChoiceSchema, array(PipelineDefaultStepSchema)), method(object({ nodeId: string() }), EngineProvisioningSchema), method(_void(), record(string(), object({
|
|
11087
11095
|
modelId: string(),
|
|
11088
11096
|
settings: record(string(), unknown()).readonly()
|
|
11089
11097
|
}))), method(object({ steps: record(string(), object({
|
|
@@ -11143,13 +11151,33 @@ method(_void(), array(PipelineEngineChoiceSchema)), method(_void(), PipelineEngi
|
|
|
11143
11151
|
* (inputClasses ≠ null) are skipped and served per-track via
|
|
11144
11152
|
* pipelineRunner.runDetailSubtree (two-plane design).
|
|
11145
11153
|
*/
|
|
11146
|
-
plane: _enum(["full", "frame"]).optional()
|
|
11154
|
+
plane: _enum(["full", "frame"]).optional(),
|
|
11155
|
+
/**
|
|
11156
|
+
* Inference-device selector (Phase 2 multi-device). Format
|
|
11157
|
+
* `<backend>:<device>` (e.g. `openvino:gpu`, `edgetpu:usb`, `cpu`).
|
|
11158
|
+
* Omitted ⇒ the runner's default device (current single-engine
|
|
11159
|
+
* behaviour). Selects WHICH device pool of the node runs the call.
|
|
11160
|
+
*/
|
|
11161
|
+
deviceKey: string().optional()
|
|
11147
11162
|
}), PipelineRunResultBridge, { kind: "mutation" }), method(object({
|
|
11148
11163
|
engine: PipelineEngineChoiceSchema.optional(),
|
|
11149
11164
|
steps: array(PipelineStepInputSchema).min(1),
|
|
11150
11165
|
frames: array(FrameInputSchema).min(1).max(255),
|
|
11151
11166
|
deviceId: number().optional(),
|
|
11152
|
-
sessionId: string().optional()
|
|
11167
|
+
sessionId: string().optional(),
|
|
11168
|
+
/**
|
|
11169
|
+
* Pure-inference benchmark hint. A NONZERO uint32 pins every frame in
|
|
11170
|
+
* the batch to the Python pool's bench preprocess cache
|
|
11171
|
+
* (`_bench_frame_id`) so a REPEATED benchmark frame is decoded +
|
|
11172
|
+
* preprocessed ONCE and every later inference is a pure-inference cache
|
|
11173
|
+
* hit — the sustained-throughput run measures inference, not
|
|
11174
|
+
* decode+preprocess+infer. Omitted/0 for live frames (all different →
|
|
11175
|
+
* full preprocess every call, correct). Fresh per sustained run;
|
|
11176
|
+
* released via `uncacheFrame`.
|
|
11177
|
+
*/
|
|
11178
|
+
frameId: number().int().nonnegative().optional(),
|
|
11179
|
+
/** Inference-device selector (Phase 2 multi-device); see runPipeline. */
|
|
11180
|
+
deviceKey: string().optional()
|
|
11153
11181
|
}), object({ results: array(PipelineRunResultBridge).readonly() }), { kind: "mutation" }), method(object({
|
|
11154
11182
|
data: _instanceof(Uint8Array),
|
|
11155
11183
|
width: number().int().positive(),
|
|
@@ -11181,8 +11209,18 @@ method(_void(), array(PipelineEngineChoiceSchema)), method(_void(), PipelineEngi
|
|
|
11181
11209
|
* - `runtime` — main camera-serving engine (no idle TTL).
|
|
11182
11210
|
* - `warm-override` — benchmark/test override held in the warm
|
|
11183
11211
|
* cache; auto-disposed after the idle TTL.
|
|
11212
|
+
* - `device-pool` — a concurrent per-device pool (Phase 2
|
|
11213
|
+
* multi-device, keyed by `deviceKey`) resolved
|
|
11214
|
+
* via `resolveDeviceFactory`. Runs alongside the
|
|
11215
|
+
* `runtime` engine on a DIFFERENT accelerator
|
|
11216
|
+
* (NPU / iGPU / Coral) — this is how the
|
|
11217
|
+
* Engines tab shows all pools running at once.
|
|
11184
11218
|
*/
|
|
11185
|
-
kind: _enum([
|
|
11219
|
+
kind: _enum([
|
|
11220
|
+
"runtime",
|
|
11221
|
+
"warm-override",
|
|
11222
|
+
"device-pool"
|
|
11223
|
+
]),
|
|
11186
11224
|
/** Native pid of the underlying Python pool (null when no pool). */
|
|
11187
11225
|
poolPid: number().nullable(),
|
|
11188
11226
|
/** ms since this factory was last used (null when not warm-tracked). */
|
|
@@ -11524,7 +11562,14 @@ var RunnerCameraConfigSchema = object({
|
|
|
11524
11562
|
* camera's detect node differs from its source-owner (P2d, gated by the
|
|
11525
11563
|
* `remoteSourcingNodes` rollout setting).
|
|
11526
11564
|
*/
|
|
11527
|
-
frameSource: RunnerFrameSourceSchema.default({ kind: "local-broker" })
|
|
11565
|
+
frameSource: RunnerFrameSourceSchema.default({ kind: "local-broker" }),
|
|
11566
|
+
/**
|
|
11567
|
+
* Inference-device selector for this camera's sessions (Phase 2 multi-device).
|
|
11568
|
+
* Format `<backend>:<device>` (e.g. `openvino:gpu`, `edgetpu:usb`, `cpu`);
|
|
11569
|
+
* omitted ⇒ the runner's default device. The engine itself stays node-local —
|
|
11570
|
+
* this only selects WHICH device pool of that node runs the session.
|
|
11571
|
+
*/
|
|
11572
|
+
deviceKey: string().optional()
|
|
11528
11573
|
});
|
|
11529
11574
|
motionFpsField.min, motionFpsField.max, motionFpsField.step, motionFpsField.default, detectionFpsField.min, detectionFpsField.max, detectionFpsField.step, detectionFpsField.default, motionCooldownMsField.min, motionCooldownMsField.max, motionCooldownMsField.step, motionCooldownMsField.default, occupancyRecheckSecField.min, occupancyRecheckSecField.max, occupancyRecheckSecField.step, occupancyRecheckSecField.default, occupancyRecheckFramesField.min, occupancyRecheckFramesField.max, occupancyRecheckFramesField.step, occupancyRecheckFramesField.default;
|
|
11530
11575
|
/**
|
|
@@ -11545,6 +11590,19 @@ var RunnerLocalLoadSchema = object({
|
|
|
11545
11590
|
avgInferenceTimeMs: number(),
|
|
11546
11591
|
/** Total queue depth across motion + detection queues. */
|
|
11547
11592
|
queueDepthTotal: number(),
|
|
11593
|
+
/**
|
|
11594
|
+
* Per-inference-device live load (multi-device C4). One entry per deviceKey
|
|
11595
|
+
* this runner currently has attached cameras on, so the orchestrator's second
|
|
11596
|
+
* `balance()` pass (over a node's devices) weights on real per-pool session
|
|
11597
|
+
* counts. Empty on single-device / pre-multi-device runners. `queueDepthTotal`
|
|
11598
|
+
* per device is 0 until the pool backlog gets a public accessor (follow-up).
|
|
11599
|
+
*/
|
|
11600
|
+
devices: array(object({
|
|
11601
|
+
deviceKey: string(),
|
|
11602
|
+
backend: string(),
|
|
11603
|
+
attachedCameras: number(),
|
|
11604
|
+
queueDepthTotal: number()
|
|
11605
|
+
})).default([]),
|
|
11548
11606
|
/** Hardware capability flags reported by this node. */
|
|
11549
11607
|
hardware: object({
|
|
11550
11608
|
hasGpu: boolean(),
|
|
@@ -13020,6 +13078,8 @@ method(_void(), _void(), { kind: "mutation" }), method(_void(), _void(), { kind:
|
|
|
13020
13078
|
kind: "mutation",
|
|
13021
13079
|
auth: "admin"
|
|
13022
13080
|
});
|
|
13081
|
+
DeviceType.Cover, DeviceType.Valve, DeviceType.Humidifier, DeviceType.WaterHeater, DeviceType.Camera, DeviceType.Hub, DeviceType.Switch, DeviceType.Siren, DeviceType.Light, DeviceType.Fan, DeviceType.Sensor, DeviceType.Thermostat, DeviceType.Climate, DeviceType.Button, DeviceType.EventEmitter, DeviceType.Update, DeviceType.Generic, DeviceType.Notifier, DeviceType.Script, DeviceType.Automation, DeviceType.Lock, DeviceType.MediaPlayer, DeviceType.AlarmPanel, DeviceType.Control, DeviceType.Presence, DeviceType.Weather, DeviceType.Vacuum, DeviceType.LawnMower, DeviceType.Container, DeviceType.Image, DeviceType.PetFeeder;
|
|
13082
|
+
new Set(Object.values(DeviceType));
|
|
13023
13083
|
/**
|
|
13024
13084
|
* `addon-pages` — system-scoped singleton aggregator cap. Public-facing
|
|
13025
13085
|
* surface that admin-ui consumes through `useAddonPagesListPages()`.
|
|
@@ -16727,13 +16787,11 @@ var PipelineTemplateSchema = object({
|
|
|
16727
16787
|
createdAt: string(),
|
|
16728
16788
|
updatedAt: string()
|
|
16729
16789
|
});
|
|
16730
|
-
var
|
|
16731
|
-
enabled: boolean(),
|
|
16790
|
+
var DeviceStepConfigSchema = object({
|
|
16732
16791
|
modelId: string().optional(),
|
|
16733
|
-
settings: record(string(), unknown()).
|
|
16792
|
+
settings: record(string(), unknown()).optional()
|
|
16734
16793
|
});
|
|
16735
16794
|
var AgentPipelineSettingsSchema = object({
|
|
16736
|
-
addonDefaults: record(string(), AgentAddonConfigSchema).readonly(),
|
|
16737
16795
|
maxCameras: number().int().nonnegative().nullable().default(null),
|
|
16738
16796
|
/** Per-node detection weight (relative share for the quota balancer). */
|
|
16739
16797
|
detectWeight: number().positive().optional(),
|
|
@@ -16757,7 +16815,22 @@ var AgentPipelineSettingsSchema = object({
|
|
|
16757
16815
|
* it already uses to reach the hub). Set this only when the auto-detected
|
|
16758
16816
|
* address is wrong (multi-homed host, NAT, custom interface).
|
|
16759
16817
|
*/
|
|
16760
|
-
reachableHost: string().optional()
|
|
16818
|
+
reachableHost: string().optional(),
|
|
16819
|
+
/**
|
|
16820
|
+
* Multi-device inference opt-in (Phase 4). Per-node map deviceKey → {enabled,
|
|
16821
|
+
* weight, steps}. Absent / all-disabled ⇒ the node's single default
|
|
16822
|
+
* accelerator (safe default); two+ enabled ⇒ the dispatcher balances
|
|
16823
|
+
* detection sessions across them so they run CONCURRENTLY. `steps` is the
|
|
16824
|
+
* per-(node,device) BASE provisioning (`stepId → {modelId?, settings?}`) —
|
|
16825
|
+
* the default model/settings for every camera landing on that accelerator;
|
|
16826
|
+
* a stepId absent ⇒ the step uses that device's format default.
|
|
16827
|
+
*/
|
|
16828
|
+
inferenceDevices: record(string(), object({
|
|
16829
|
+
enabled: boolean(),
|
|
16830
|
+
weight: number().positive().optional(),
|
|
16831
|
+
maxSessions: number().int().positive().optional(),
|
|
16832
|
+
steps: record(string(), DeviceStepConfigSchema).optional()
|
|
16833
|
+
})).optional()
|
|
16761
16834
|
});
|
|
16762
16835
|
var CameraPipelineForAgentSchema = object({
|
|
16763
16836
|
steps: array(PipelineStepInputSchema).readonly(),
|
|
@@ -16767,14 +16840,13 @@ var CameraPipelineForAgentSchema = object({
|
|
|
16767
16840
|
}).nullable()
|
|
16768
16841
|
});
|
|
16769
16842
|
var CameraStepOverridePatchSchema = object({
|
|
16770
|
-
enabled: boolean().optional(),
|
|
16771
16843
|
modelId: string().optional(),
|
|
16772
16844
|
settings: record(string(), unknown()).readonly().optional()
|
|
16773
16845
|
});
|
|
16774
16846
|
var CameraPipelineSettingsSchema = object({
|
|
16775
16847
|
pinnedAgentNodeId: string().optional(),
|
|
16776
16848
|
stepToggles: record(string(), boolean()).optional(),
|
|
16777
|
-
|
|
16849
|
+
stepOverridesByDevice: record(string(), record(string(), record(string(), CameraStepOverridePatchSchema))).optional(),
|
|
16778
16850
|
pipelineByAgent: record(string(), CameraPipelineForAgentSchema).optional()
|
|
16779
16851
|
});
|
|
16780
16852
|
/**
|
|
@@ -16988,6 +17060,44 @@ var CameraStatusSchema = object({
|
|
|
16988
17060
|
/** Unix timestamp (ms) when this snapshot was composed server-side. */
|
|
16989
17061
|
fetchedAt: number()
|
|
16990
17062
|
});
|
|
17063
|
+
var NodeInferenceDeviceSchema = object({
|
|
17064
|
+
/** Stable per-node device key, e.g. `openvino:npu`, `edgetpu:usb`, `cpu`. */
|
|
17065
|
+
key: string(),
|
|
17066
|
+
backend: string(),
|
|
17067
|
+
device: string(),
|
|
17068
|
+
format: _enum(MODEL_FORMATS),
|
|
17069
|
+
/** Whether the node's live probe reports the device as usable right now. */
|
|
17070
|
+
available: boolean(),
|
|
17071
|
+
/**
|
|
17072
|
+
* Whether this device participates in dispatch. AUTO default (spec C2):
|
|
17073
|
+
* accelerators are opt-OUT (a discovered NPU/iGPU/Coral/ANE with no stored
|
|
17074
|
+
* entry is `true`); CPU is opt-IN (`false` by default — the fallback pool,
|
|
17075
|
+
* not a balanced target). An explicit stored value always wins; a stored-only
|
|
17076
|
+
* (unavailable) key keeps its stored value.
|
|
17077
|
+
*/
|
|
17078
|
+
enabled: boolean(),
|
|
17079
|
+
/** Relative balancer weight for the enabled device (default 1). */
|
|
17080
|
+
weight: number(),
|
|
17081
|
+
/** Per-device concurrent-session cap; null = unlimited (multi-device C4). */
|
|
17082
|
+
maxSessions: number().nullable(),
|
|
17083
|
+
/** Object-detection model the executor defaults to for this deviceKey. */
|
|
17084
|
+
defaultModelId: string(),
|
|
17085
|
+
/**
|
|
17086
|
+
* Per-(node,device) BASE provisioning (C7.2/C7.4) — the RAW stored
|
|
17087
|
+
* `stepId → {modelId?, settings?}` map from `inferenceDevices[key].steps`.
|
|
17088
|
+
* Absent/empty ⇒ no base (every step uses its device format default). The
|
|
17089
|
+
* UI cross-references `pipelineExecutor.getSchema` for the models actually
|
|
17090
|
+
* available per format; this is the stored selection that becomes the
|
|
17091
|
+
* default for EVERY camera landing on this accelerator.
|
|
17092
|
+
*/
|
|
17093
|
+
steps: record(string(), DeviceStepConfigSchema).optional()
|
|
17094
|
+
});
|
|
17095
|
+
var NodeInferenceDevicesSchema = object({
|
|
17096
|
+
nodeId: string(),
|
|
17097
|
+
/** False when the node's platform-probe was unreachable (no live device set). */
|
|
17098
|
+
reachable: boolean(),
|
|
17099
|
+
devices: array(NodeInferenceDeviceSchema).readonly()
|
|
17100
|
+
});
|
|
16991
17101
|
method(object({
|
|
16992
17102
|
deviceId: number(),
|
|
16993
17103
|
agentNodeId: string()
|
|
@@ -16997,7 +17107,13 @@ method(object({
|
|
|
16997
17107
|
}), method(object({ deviceId: number() }), object({ success: literal(true) }), {
|
|
16998
17108
|
kind: "mutation",
|
|
16999
17109
|
auth: "admin"
|
|
17000
|
-
}), method(
|
|
17110
|
+
}), method(object({
|
|
17111
|
+
deviceId: number(),
|
|
17112
|
+
deviceKey: string()
|
|
17113
|
+
}), object({ success: literal(true) }), {
|
|
17114
|
+
kind: "mutation",
|
|
17115
|
+
auth: "admin"
|
|
17116
|
+
}), method(object({ deviceId: number() }), object({ deviceKey: string().nullable() })), method(_void(), object({ migrated: number() }), {
|
|
17001
17117
|
kind: "mutation",
|
|
17002
17118
|
auth: "admin"
|
|
17003
17119
|
}), method(_void(), array(PipelineAssignmentSchema).readonly()), method(object({ deviceId: number() }), PipelineAssignmentSchema.nullable()), method(_void(), array(AgentLoadSummarySchema).readonly()), method(_void(), GlobalMetricsSchema), method(object({ deviceId: number() }), CameraMetricsSchema.nullable()), method(object({ nodeId: string() }), CapabilityBindingsSchema), method(object({
|
|
@@ -17031,13 +17147,7 @@ method(object({
|
|
|
17031
17147
|
}))), method(object({ agentNodeId: string() }), AgentPipelineSettingsSchema.nullable()), method(_void(), array(object({
|
|
17032
17148
|
nodeId: string(),
|
|
17033
17149
|
settings: AgentPipelineSettingsSchema
|
|
17034
|
-
})).readonly()), method(object({
|
|
17035
|
-
agentNodeId: string(),
|
|
17036
|
-
defaults: record(string(), AgentAddonConfigSchema)
|
|
17037
|
-
}), object({ success: literal(true) }), {
|
|
17038
|
-
kind: "mutation",
|
|
17039
|
-
auth: "admin"
|
|
17040
|
-
}), method(object({ agentNodeId: string() }), object({
|
|
17150
|
+
})).readonly()), method(object({ agentNodeId: string() }), object({
|
|
17041
17151
|
success: boolean(),
|
|
17042
17152
|
removed: boolean()
|
|
17043
17153
|
}), {
|
|
@@ -17069,7 +17179,18 @@ method(object({
|
|
|
17069
17179
|
}), object({ success: literal(true) }), {
|
|
17070
17180
|
kind: "mutation",
|
|
17071
17181
|
auth: "admin"
|
|
17072
|
-
}), method(object({
|
|
17182
|
+
}), method(object({
|
|
17183
|
+
agentNodeId: string(),
|
|
17184
|
+
inferenceDevices: record(string(), object({
|
|
17185
|
+
enabled: boolean(),
|
|
17186
|
+
weight: number().positive().optional(),
|
|
17187
|
+
maxSessions: number().int().positive().optional(),
|
|
17188
|
+
steps: record(string(), DeviceStepConfigSchema).optional()
|
|
17189
|
+
}))
|
|
17190
|
+
}), object({ success: literal(true) }), {
|
|
17191
|
+
kind: "mutation",
|
|
17192
|
+
auth: "admin"
|
|
17193
|
+
}), method(object({ nodeId: string() }), NodeInferenceDevicesSchema), method(object({ agentNodeId: string() }), object({
|
|
17073
17194
|
success: literal(true),
|
|
17074
17195
|
/** Hardware-aware default detection model now in effect on the node (null when unresolvable). */
|
|
17075
17196
|
effectiveModelId: string().nullable(),
|
|
@@ -17085,9 +17206,10 @@ method(object({
|
|
|
17085
17206
|
}), object({ success: literal(true) }), {
|
|
17086
17207
|
kind: "mutation",
|
|
17087
17208
|
auth: "admin"
|
|
17088
|
-
}), method(object({ deviceId: number() }), record(string(), record(string(), CameraStepOverridePatchSchema)).nullable()), method(object({
|
|
17209
|
+
}), method(object({ deviceId: number() }), record(string(), record(string(), record(string(), CameraStepOverridePatchSchema))).nullable()), method(object({
|
|
17089
17210
|
deviceId: number(),
|
|
17090
17211
|
agentNodeId: string(),
|
|
17212
|
+
deviceKey: string(),
|
|
17091
17213
|
addonId: string(),
|
|
17092
17214
|
patch: CameraStepOverridePatchSchema.nullable()
|
|
17093
17215
|
}), object({ success: literal(true) }), {
|
|
@@ -17124,14 +17246,13 @@ method(object({
|
|
|
17124
17246
|
});
|
|
17125
17247
|
/**
|
|
17126
17248
|
* server-management — per-NODE singleton capability for a node's ROOT
|
|
17127
|
-
* package lifecycle (runtime-updatable node packages
|
|
17128
|
-
* agents).
|
|
17249
|
+
* package lifecycle (runtime-updatable node packages).
|
|
17129
17250
|
*
|
|
17130
|
-
*
|
|
17131
|
-
*
|
|
17132
|
-
*
|
|
17133
|
-
*
|
|
17134
|
-
*
|
|
17251
|
+
* Every node role runs the SAME root package (`@camstack/server`), which
|
|
17252
|
+
* carries the whole software stack in its npm dep tree, so ONE version
|
|
17253
|
+
* describes the node. Updates stage into `<dataDir>/server-root/` and apply
|
|
17254
|
+
* on restart via the baked starter (single-copy in-place swap — no probation,
|
|
17255
|
+
* no auto-rollback).
|
|
17135
17256
|
*
|
|
17136
17257
|
* Providers:
|
|
17137
17258
|
* - HUB: `ServerUpdateService` behind the `server-provided` mount
|
|
@@ -17239,7 +17360,8 @@ method(_void(), ServerPackageStatusSchema, { auth: "admin" }), method(_void(), S
|
|
|
17239
17360
|
/** Explicit target version; omitted = latest from the registry. */
|
|
17240
17361
|
version: string().optional() }), ServerUpdateActionResultSchema, {
|
|
17241
17362
|
kind: "mutation",
|
|
17242
|
-
auth: "admin"
|
|
17363
|
+
auth: "admin",
|
|
17364
|
+
timeoutMs: 16 * 6e4
|
|
17243
17365
|
}), method(_void(), ServerUpdateActionResultSchema, {
|
|
17244
17366
|
kind: "mutation",
|
|
17245
17367
|
auth: "admin"
|
|
@@ -18306,22 +18428,6 @@ var AddonAutoUpdateSchema = ChannelWithInheritSchema;
|
|
|
18306
18428
|
var RestartAddonResultSchema = unknown();
|
|
18307
18429
|
var InstallPackageResultSchema = unknown();
|
|
18308
18430
|
var ReloadPackagesResultSchema = unknown();
|
|
18309
|
-
/**
|
|
18310
|
-
* Result of `updateFrameworkPackage`. The cap method returns BEFORE the
|
|
18311
|
-
* server restarts so the admin UI can react to the `restartingAt`
|
|
18312
|
-
* timestamp (shows reconnect overlay). The transition from
|
|
18313
|
-
* `fromVersion` to `toVersion` will be confirmed by a subsequent
|
|
18314
|
-
* `system.restart-completed` event after the new process boots.
|
|
18315
|
-
*
|
|
18316
|
-
* Spec: docs/superpowers/specs/2026-05-14-framework-live-update-design.md
|
|
18317
|
-
*/
|
|
18318
|
-
var UpdateFrameworkPackageResultSchema = object({
|
|
18319
|
-
packageName: string(),
|
|
18320
|
-
fromVersion: string(),
|
|
18321
|
-
toVersion: string(),
|
|
18322
|
-
/** Ms-epoch the server scheduled its self-restart. */
|
|
18323
|
-
restartingAt: number()
|
|
18324
|
-
});
|
|
18325
18431
|
var BulkUpdateItemStatusSchema = _enum([
|
|
18326
18432
|
"queued",
|
|
18327
18433
|
"updating",
|
|
@@ -18449,13 +18555,6 @@ method(_void(), array(AddonListItemSchema).readonly()), method(object({
|
|
|
18449
18555
|
}), object({ success: literal(true) }), {
|
|
18450
18556
|
kind: "mutation",
|
|
18451
18557
|
auth: "admin"
|
|
18452
|
-
}), method(object({
|
|
18453
|
-
packageName: string().min(1),
|
|
18454
|
-
version: string().optional(),
|
|
18455
|
-
deferRestart: boolean().optional()
|
|
18456
|
-
}), UpdateFrameworkPackageResultSchema, {
|
|
18457
|
-
kind: "mutation",
|
|
18458
|
-
auth: "admin"
|
|
18459
18558
|
}), method(object({ name: string() }), array(PackageVersionInfoSchema).readonly()), method(object({ addonId: string() }), RestartAddonResultSchema, {
|
|
18460
18559
|
kind: "mutation",
|
|
18461
18560
|
auth: "admin"
|
|
@@ -19321,10 +19420,10 @@ var TopologyCategorySchema = object({
|
|
|
19321
19420
|
addons: array(TopologyCategoryAddonSchema).readonly()
|
|
19322
19421
|
});
|
|
19323
19422
|
/**
|
|
19324
|
-
* The node's runtime-updatable ROOT package (`@camstack/server`
|
|
19325
|
-
*
|
|
19326
|
-
* version visibility for the Server management surface. Nullable:
|
|
19327
|
-
* rows and
|
|
19423
|
+
* The node's runtime-updatable ROOT package (`@camstack/server` — the single
|
|
19424
|
+
* root package for every node role) as reported by its `registerNode`
|
|
19425
|
+
* manifest — version visibility for the Server management surface. Nullable:
|
|
19426
|
+
* offline rows and nodes that never reported one.
|
|
19328
19427
|
*/
|
|
19329
19428
|
var TopologyRootPackageSchema = object({
|
|
19330
19429
|
name: string(),
|
|
@@ -19712,17 +19811,28 @@ var PlatformScoreSchema = object({
|
|
|
19712
19811
|
format: _enum([
|
|
19713
19812
|
"onnx",
|
|
19714
19813
|
"coreml",
|
|
19715
|
-
"openvino"
|
|
19814
|
+
"openvino",
|
|
19815
|
+
"tflite"
|
|
19716
19816
|
]),
|
|
19717
19817
|
score: number(),
|
|
19718
19818
|
reason: string(),
|
|
19719
19819
|
available: boolean()
|
|
19720
19820
|
});
|
|
19821
|
+
var InferenceDeviceDescriptorSchema = object({
|
|
19822
|
+
key: string(),
|
|
19823
|
+
backend: string(),
|
|
19824
|
+
device: string(),
|
|
19825
|
+
format: ModelFormatSchema,
|
|
19826
|
+
runtime: literal("python"),
|
|
19827
|
+
score: number(),
|
|
19828
|
+
available: boolean()
|
|
19829
|
+
});
|
|
19721
19830
|
var PlatformCapabilitiesSchema = object({
|
|
19722
19831
|
hardware: HardwareInfoSchema,
|
|
19723
19832
|
scores: array(PlatformScoreSchema).readonly(),
|
|
19724
19833
|
bestScore: PlatformScoreSchema,
|
|
19725
|
-
pythonPath: string().nullable()
|
|
19834
|
+
pythonPath: string().nullable(),
|
|
19835
|
+
devices: array(InferenceDeviceDescriptorSchema).readonly()
|
|
19726
19836
|
});
|
|
19727
19837
|
var ModelRequirementSchema = object({
|
|
19728
19838
|
modelId: string(),
|
|
@@ -20601,12 +20711,6 @@ Object.freeze({
|
|
|
20601
20711
|
addonId: null,
|
|
20602
20712
|
access: "delete"
|
|
20603
20713
|
},
|
|
20604
|
-
"addons.updateFrameworkPackage": {
|
|
20605
|
-
capName: "addons",
|
|
20606
|
-
capScope: "system",
|
|
20607
|
-
addonId: null,
|
|
20608
|
-
access: "create"
|
|
20609
|
-
},
|
|
20610
20714
|
"addons.updatePackage": {
|
|
20611
20715
|
capName: "addons",
|
|
20612
20716
|
capScope: "system",
|
|
@@ -23379,12 +23483,6 @@ Object.freeze({
|
|
|
23379
23483
|
addonId: null,
|
|
23380
23484
|
access: "view"
|
|
23381
23485
|
},
|
|
23382
|
-
"pipelineExecutor.reprobeEngine": {
|
|
23383
|
-
capName: "pipeline-executor",
|
|
23384
|
-
capScope: "system",
|
|
23385
|
-
addonId: null,
|
|
23386
|
-
access: "create"
|
|
23387
|
-
},
|
|
23388
23486
|
"pipelineExecutor.runAudioTest": {
|
|
23389
23487
|
capName: "pipeline-executor",
|
|
23390
23488
|
capScope: "system",
|
|
@@ -23535,6 +23633,12 @@ Object.freeze({
|
|
|
23535
23633
|
addonId: null,
|
|
23536
23634
|
access: "view"
|
|
23537
23635
|
},
|
|
23636
|
+
"pipelineOrchestrator.getNodeInferenceDevices": {
|
|
23637
|
+
capName: "pipeline-orchestrator",
|
|
23638
|
+
capScope: "system",
|
|
23639
|
+
addonId: null,
|
|
23640
|
+
access: "view"
|
|
23641
|
+
},
|
|
23538
23642
|
"pipelineOrchestrator.getPipelineAssignment": {
|
|
23539
23643
|
capName: "pipeline-orchestrator",
|
|
23540
23644
|
capScope: "system",
|
|
@@ -23547,6 +23651,12 @@ Object.freeze({
|
|
|
23547
23651
|
addonId: null,
|
|
23548
23652
|
access: "view"
|
|
23549
23653
|
},
|
|
23654
|
+
"pipelineOrchestrator.getPipelineDevicePin": {
|
|
23655
|
+
capName: "pipeline-orchestrator",
|
|
23656
|
+
capScope: "system",
|
|
23657
|
+
addonId: null,
|
|
23658
|
+
access: "view"
|
|
23659
|
+
},
|
|
23550
23660
|
"pipelineOrchestrator.listAgentSettings": {
|
|
23551
23661
|
capName: "pipeline-orchestrator",
|
|
23552
23662
|
capScope: "system",
|
|
@@ -23589,19 +23699,19 @@ Object.freeze({
|
|
|
23589
23699
|
addonId: null,
|
|
23590
23700
|
access: "create"
|
|
23591
23701
|
},
|
|
23592
|
-
"pipelineOrchestrator.
|
|
23702
|
+
"pipelineOrchestrator.setAgentCapabilities": {
|
|
23593
23703
|
capName: "pipeline-orchestrator",
|
|
23594
23704
|
capScope: "system",
|
|
23595
23705
|
addonId: null,
|
|
23596
23706
|
access: "create"
|
|
23597
23707
|
},
|
|
23598
|
-
"pipelineOrchestrator.
|
|
23708
|
+
"pipelineOrchestrator.setAgentDetectWeight": {
|
|
23599
23709
|
capName: "pipeline-orchestrator",
|
|
23600
23710
|
capScope: "system",
|
|
23601
23711
|
addonId: null,
|
|
23602
23712
|
access: "create"
|
|
23603
23713
|
},
|
|
23604
|
-
"pipelineOrchestrator.
|
|
23714
|
+
"pipelineOrchestrator.setAgentInferenceDevices": {
|
|
23605
23715
|
capName: "pipeline-orchestrator",
|
|
23606
23716
|
capScope: "system",
|
|
23607
23717
|
addonId: null,
|
|
@@ -23643,6 +23753,12 @@ Object.freeze({
|
|
|
23643
23753
|
addonId: null,
|
|
23644
23754
|
access: "create"
|
|
23645
23755
|
},
|
|
23756
|
+
"pipelineOrchestrator.setPipelineDevicePin": {
|
|
23757
|
+
capName: "pipeline-orchestrator",
|
|
23758
|
+
capScope: "system",
|
|
23759
|
+
addonId: null,
|
|
23760
|
+
access: "create"
|
|
23761
|
+
},
|
|
23646
23762
|
"pipelineOrchestrator.unassignAudio": {
|
|
23647
23763
|
capName: "pipeline-orchestrator",
|
|
23648
23764
|
capScope: "system",
|
|
@@ -25195,31 +25311,5 @@ Object.freeze({
|
|
|
25195
25311
|
"network-access": "ingress",
|
|
25196
25312
|
"smtp-provider": "email"
|
|
25197
25313
|
});
|
|
25198
|
-
var frameworkSwapPackageSchema = object({
|
|
25199
|
-
name: string(),
|
|
25200
|
-
stagedPath: string(),
|
|
25201
|
-
backupPath: string(),
|
|
25202
|
-
toVersion: string(),
|
|
25203
|
-
fromVersion: string().nullable()
|
|
25204
|
-
});
|
|
25205
|
-
object({
|
|
25206
|
-
jobId: string(),
|
|
25207
|
-
taskId: string(),
|
|
25208
|
-
packages: array(frameworkSwapPackageSchema),
|
|
25209
|
-
requestedAtMs: number(),
|
|
25210
|
-
schemaVersion: literal(1)
|
|
25211
|
-
});
|
|
25212
|
-
object({
|
|
25213
|
-
jobId: string(),
|
|
25214
|
-
taskId: string(),
|
|
25215
|
-
backups: array(object({
|
|
25216
|
-
name: string(),
|
|
25217
|
-
backupPath: string(),
|
|
25218
|
-
livePath: string()
|
|
25219
|
-
})),
|
|
25220
|
-
appliedAtMs: number(),
|
|
25221
|
-
bootAttempts: number(),
|
|
25222
|
-
schemaVersion: literal(1)
|
|
25223
|
-
});
|
|
25224
25314
|
//#endregion
|
|
25225
25315
|
export { BaseAddon as a, boolean as c, number as d, object as f, turnProviderCapability as i, discriminatedUnion as l, EventCategory as m, defineCustomActions as n, _enum as o, string as p, networkAccessCapability as r, array as s, customAction as t, literal as u };
|
|
@@ -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-BlG4exZI.js");
|
|
25
25
|
let node_path = require("node:path");
|
|
26
26
|
node_path = __toESM(node_path);
|
|
27
27
|
let node_crypto = require("node:crypto");
|
|
@@ -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-DJJB6LQC.mjs";
|
|
2
2
|
import * as path from "node:path";
|
|
3
3
|
import { randomUUID } from "node:crypto";
|
|
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-BlG4exZI.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-DJJB6LQC.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.
|
|
3
|
+
"version": "1.2.0",
|
|
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",
|