@camstack/addon-auth 1.1.15 → 1.2.1

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.
@@ -7079,6 +7079,17 @@ var ModelCatalogEntrySchema = object({
7079
7079
  "imagenet",
7080
7080
  "none"
7081
7081
  ]).optional(),
7082
+ /**
7083
+ * The model already applies softmax IN-GRAPH — its raw output is a
7084
+ * probability distribution, not logits. When set, the `softmax`
7085
+ * postprocessor must NOT re-apply softmax: re-softmaxing an already-normalised
7086
+ * probability vector collapses it toward uniform (top-1 score craters far
7087
+ * below its true value, making every confidence gate meaningless). Absent ⇒
7088
+ * the output is raw logits and the postprocessor applies softmax (the normal
7089
+ * case). Set on the Google AIY Birds `bird-classifier` (softmax baked into the
7090
+ * TF graph). Threaded to the Python pool via `PoolModelConfig.outputProbabilities`.
7091
+ */
7092
+ outputProbabilities: boolean().optional(),
7082
7093
  preprocessMode: _enum(["letterbox", "resize"]).optional(),
7083
7094
  /**
7084
7095
  * Per-MODEL postprocessor override. Absent ⇒ the step's own
@@ -11209,10 +11220,7 @@ var ConfigUISchemaNullableBridge = custom();
11209
11220
  var InferenceCapabilitiesBridge = custom();
11210
11221
  var ModelAvailabilityListBridge = custom();
11211
11222
  var PipelineRunResultBridge = custom();
11212
- method(_void(), array(PipelineEngineChoiceSchema)), method(_void(), PipelineEngineChoiceSchema), method(PipelineEngineChoiceSchema, array(PipelineDefaultStepSchema)), method(_void(), PipelineEngineChoiceSchema, {
11213
- kind: "mutation",
11214
- auth: "admin"
11215
- }), method(object({ nodeId: string() }), EngineProvisioningSchema), method(_void(), record(string(), object({
11223
+ method(_void(), array(PipelineEngineChoiceSchema)), method(_void(), PipelineEngineChoiceSchema), method(PipelineEngineChoiceSchema, array(PipelineDefaultStepSchema)), method(object({ nodeId: string() }), EngineProvisioningSchema), method(_void(), record(string(), object({
11216
11224
  modelId: string(),
11217
11225
  settings: record(string(), unknown()).readonly()
11218
11226
  }))), method(object({ steps: record(string(), object({
@@ -11272,13 +11280,33 @@ method(_void(), array(PipelineEngineChoiceSchema)), method(_void(), PipelineEngi
11272
11280
  * (inputClasses ≠ null) are skipped and served per-track via
11273
11281
  * pipelineRunner.runDetailSubtree (two-plane design).
11274
11282
  */
11275
- plane: _enum(["full", "frame"]).optional()
11283
+ plane: _enum(["full", "frame"]).optional(),
11284
+ /**
11285
+ * Inference-device selector (Phase 2 multi-device). Format
11286
+ * `<backend>:<device>` (e.g. `openvino:gpu`, `edgetpu:usb`, `cpu`).
11287
+ * Omitted ⇒ the runner's default device (current single-engine
11288
+ * behaviour). Selects WHICH device pool of the node runs the call.
11289
+ */
11290
+ deviceKey: string().optional()
11276
11291
  }), PipelineRunResultBridge, { kind: "mutation" }), method(object({
11277
11292
  engine: PipelineEngineChoiceSchema.optional(),
11278
11293
  steps: array(PipelineStepInputSchema).min(1),
11279
11294
  frames: array(FrameInputSchema).min(1).max(255),
11280
11295
  deviceId: number().optional(),
11281
- sessionId: string().optional()
11296
+ sessionId: string().optional(),
11297
+ /**
11298
+ * Pure-inference benchmark hint. A NONZERO uint32 pins every frame in
11299
+ * the batch to the Python pool's bench preprocess cache
11300
+ * (`_bench_frame_id`) so a REPEATED benchmark frame is decoded +
11301
+ * preprocessed ONCE and every later inference is a pure-inference cache
11302
+ * hit — the sustained-throughput run measures inference, not
11303
+ * decode+preprocess+infer. Omitted/0 for live frames (all different →
11304
+ * full preprocess every call, correct). Fresh per sustained run;
11305
+ * released via `uncacheFrame`.
11306
+ */
11307
+ frameId: number().int().nonnegative().optional(),
11308
+ /** Inference-device selector (Phase 2 multi-device); see runPipeline. */
11309
+ deviceKey: string().optional()
11282
11310
  }), object({ results: array(PipelineRunResultBridge).readonly() }), { kind: "mutation" }), method(object({
11283
11311
  data: _instanceof(Uint8Array),
11284
11312
  width: number().int().positive(),
@@ -11310,8 +11338,18 @@ method(_void(), array(PipelineEngineChoiceSchema)), method(_void(), PipelineEngi
11310
11338
  * - `runtime` — main camera-serving engine (no idle TTL).
11311
11339
  * - `warm-override` — benchmark/test override held in the warm
11312
11340
  * cache; auto-disposed after the idle TTL.
11341
+ * - `device-pool` — a concurrent per-device pool (Phase 2
11342
+ * multi-device, keyed by `deviceKey`) resolved
11343
+ * via `resolveDeviceFactory`. Runs alongside the
11344
+ * `runtime` engine on a DIFFERENT accelerator
11345
+ * (NPU / iGPU / Coral) — this is how the
11346
+ * Engines tab shows all pools running at once.
11313
11347
  */
11314
- kind: _enum(["runtime", "warm-override"]),
11348
+ kind: _enum([
11349
+ "runtime",
11350
+ "warm-override",
11351
+ "device-pool"
11352
+ ]),
11315
11353
  /** Native pid of the underlying Python pool (null when no pool). */
11316
11354
  poolPid: number().nullable(),
11317
11355
  /** ms since this factory was last used (null when not warm-tracked). */
@@ -11413,7 +11451,21 @@ var NativeCropResultSchema = object({
11413
11451
  /** Packed rgb (24-bit) pixels of the crop. */
11414
11452
  bytes: _instanceof(Uint8Array),
11415
11453
  width: number().int().positive(),
11416
- height: number().int().positive()
11454
+ height: number().int().positive(),
11455
+ /**
11456
+ * Which source served this crop, so a quality-sensitive consumer (the native
11457
+ * `keyFrame`) can reject a degraded fallback:
11458
+ * - `native` — cut from the decode worker's retained NATIVE surface (the
11459
+ * quality path).
11460
+ * - `ram-fullframe` — the native surface MISSED but the request was full-frame,
11461
+ * so the ≤640 RAM `RetainedFrameStore` served it (honest lower-res; legit for
11462
+ * the blank-frame guard / 640-snapshot resolve, NOT for the clean keyFrame).
11463
+ *
11464
+ * OPTIONAL: a pre-tier runner (version skew) omits it — an ABSENT `tier` MUST be
11465
+ * treated as `native` (accepted) by every consumer so mixed-version clusters
11466
+ * keep the pre-tier behaviour. An ROI miss returns `null` (no tier at all).
11467
+ */
11468
+ tier: _enum(["native", "ram-fullframe"]).optional()
11417
11469
  });
11418
11470
  /** Parent detection context passed to `runDetailSubtree` — the crop's
11419
11471
  * originating detection, in FRAME-space coordinates. Reuses
@@ -11653,7 +11705,14 @@ var RunnerCameraConfigSchema = object({
11653
11705
  * camera's detect node differs from its source-owner (P2d, gated by the
11654
11706
  * `remoteSourcingNodes` rollout setting).
11655
11707
  */
11656
- frameSource: RunnerFrameSourceSchema.default({ kind: "local-broker" })
11708
+ frameSource: RunnerFrameSourceSchema.default({ kind: "local-broker" }),
11709
+ /**
11710
+ * Inference-device selector for this camera's sessions (Phase 2 multi-device).
11711
+ * Format `<backend>:<device>` (e.g. `openvino:gpu`, `edgetpu:usb`, `cpu`);
11712
+ * omitted ⇒ the runner's default device. The engine itself stays node-local —
11713
+ * this only selects WHICH device pool of that node runs the session.
11714
+ */
11715
+ deviceKey: string().optional()
11657
11716
  });
11658
11717
  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;
11659
11718
  /**
@@ -11674,6 +11733,19 @@ var RunnerLocalLoadSchema = object({
11674
11733
  avgInferenceTimeMs: number(),
11675
11734
  /** Total queue depth across motion + detection queues. */
11676
11735
  queueDepthTotal: number(),
11736
+ /**
11737
+ * Per-inference-device live load (multi-device C4). One entry per deviceKey
11738
+ * this runner currently has attached cameras on, so the orchestrator's second
11739
+ * `balance()` pass (over a node's devices) weights on real per-pool session
11740
+ * counts. Empty on single-device / pre-multi-device runners. `queueDepthTotal`
11741
+ * per device is 0 until the pool backlog gets a public accessor (follow-up).
11742
+ */
11743
+ devices: array(object({
11744
+ deviceKey: string(),
11745
+ backend: string(),
11746
+ attachedCameras: number(),
11747
+ queueDepthTotal: number()
11748
+ })).default([]),
11677
11749
  /** Hardware capability flags reported by this node. */
11678
11750
  hardware: object({
11679
11751
  hasGpu: boolean(),
@@ -13149,6 +13221,8 @@ method(_void(), _void(), { kind: "mutation" }), method(_void(), _void(), { kind:
13149
13221
  kind: "mutation",
13150
13222
  auth: "admin"
13151
13223
  });
13224
+ 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;
13225
+ new Set(Object.values(DeviceType));
13152
13226
  /**
13153
13227
  * `addon-pages` — system-scoped singleton aggregator cap. Public-facing
13154
13228
  * surface that admin-ui consumes through `useAddonPagesListPages()`.
@@ -14768,7 +14842,8 @@ var LinkedDeviceSchema = object({
14768
14842
  deviceId: number(),
14769
14843
  name: string(),
14770
14844
  location: string().nullable(),
14771
- features: array(string())
14845
+ features: array(string()),
14846
+ producesTrackedEvents: boolean().optional()
14772
14847
  });
14773
14848
  var SavedDeviceRowSchema = object({
14774
14849
  /** Numeric id reserved at allocateDeviceId time. */
@@ -16398,6 +16473,7 @@ var TrackSchema = object({
16398
16473
  deviceId: number(),
16399
16474
  className: string(),
16400
16475
  label: string().optional(),
16476
+ producingDeviceName: string().optional(),
16401
16477
  /** Track provenance. Absent ⇒ `pipeline` (legacy rows). */
16402
16478
  source: TrackSourceSchema.optional(),
16403
16479
  firstSeen: number(),
@@ -16535,7 +16611,8 @@ var MediaFileKindEnum = _enum([
16535
16611
  "fullFrameBoxed",
16536
16612
  "faceCrop",
16537
16613
  "plateCrop",
16538
- "keyFrame"
16614
+ "keyFrame",
16615
+ "keyFrameSmall"
16539
16616
  ]);
16540
16617
  var MediaFileSchema = object({
16541
16618
  key: string(),
@@ -16864,13 +16941,11 @@ var PipelineTemplateSchema = object({
16864
16941
  createdAt: string(),
16865
16942
  updatedAt: string()
16866
16943
  });
16867
- var AgentAddonConfigSchema = object({
16868
- enabled: boolean(),
16944
+ var DeviceStepConfigSchema = object({
16869
16945
  modelId: string().optional(),
16870
- settings: record(string(), unknown()).readonly()
16946
+ settings: record(string(), unknown()).optional()
16871
16947
  });
16872
16948
  var AgentPipelineSettingsSchema = object({
16873
- addonDefaults: record(string(), AgentAddonConfigSchema).readonly(),
16874
16949
  maxCameras: number().int().nonnegative().nullable().default(null),
16875
16950
  /** Per-node detection weight (relative share for the quota balancer). */
16876
16951
  detectWeight: number().positive().optional(),
@@ -16894,7 +16969,22 @@ var AgentPipelineSettingsSchema = object({
16894
16969
  * it already uses to reach the hub). Set this only when the auto-detected
16895
16970
  * address is wrong (multi-homed host, NAT, custom interface).
16896
16971
  */
16897
- reachableHost: string().optional()
16972
+ reachableHost: string().optional(),
16973
+ /**
16974
+ * Multi-device inference opt-in (Phase 4). Per-node map deviceKey → {enabled,
16975
+ * weight, steps}. Absent / all-disabled ⇒ the node's single default
16976
+ * accelerator (safe default); two+ enabled ⇒ the dispatcher balances
16977
+ * detection sessions across them so they run CONCURRENTLY. `steps` is the
16978
+ * per-(node,device) BASE provisioning (`stepId → {modelId?, settings?}`) —
16979
+ * the default model/settings for every camera landing on that accelerator;
16980
+ * a stepId absent ⇒ the step uses that device's format default.
16981
+ */
16982
+ inferenceDevices: record(string(), object({
16983
+ enabled: boolean(),
16984
+ weight: number().positive().optional(),
16985
+ maxSessions: number().int().positive().optional(),
16986
+ steps: record(string(), DeviceStepConfigSchema).optional()
16987
+ })).optional()
16898
16988
  });
16899
16989
  var CameraPipelineForAgentSchema = object({
16900
16990
  steps: array(PipelineStepInputSchema).readonly(),
@@ -16904,14 +16994,13 @@ var CameraPipelineForAgentSchema = object({
16904
16994
  }).nullable()
16905
16995
  });
16906
16996
  var CameraStepOverridePatchSchema = object({
16907
- enabled: boolean().optional(),
16908
16997
  modelId: string().optional(),
16909
16998
  settings: record(string(), unknown()).readonly().optional()
16910
16999
  });
16911
17000
  var CameraPipelineSettingsSchema = object({
16912
17001
  pinnedAgentNodeId: string().optional(),
16913
17002
  stepToggles: record(string(), boolean()).optional(),
16914
- stepOverridesByAgent: record(string(), record(string(), CameraStepOverridePatchSchema)).optional(),
17003
+ stepOverridesByDevice: record(string(), record(string(), record(string(), CameraStepOverridePatchSchema))).optional(),
16915
17004
  pipelineByAgent: record(string(), CameraPipelineForAgentSchema).optional()
16916
17005
  });
16917
17006
  /**
@@ -17125,6 +17214,44 @@ var CameraStatusSchema = object({
17125
17214
  /** Unix timestamp (ms) when this snapshot was composed server-side. */
17126
17215
  fetchedAt: number()
17127
17216
  });
17217
+ var NodeInferenceDeviceSchema = object({
17218
+ /** Stable per-node device key, e.g. `openvino:npu`, `edgetpu:usb`, `cpu`. */
17219
+ key: string(),
17220
+ backend: string(),
17221
+ device: string(),
17222
+ format: _enum(MODEL_FORMATS),
17223
+ /** Whether the node's live probe reports the device as usable right now. */
17224
+ available: boolean(),
17225
+ /**
17226
+ * Whether this device participates in dispatch. AUTO default (spec C2):
17227
+ * accelerators are opt-OUT (a discovered NPU/iGPU/Coral/ANE with no stored
17228
+ * entry is `true`); CPU is opt-IN (`false` by default — the fallback pool,
17229
+ * not a balanced target). An explicit stored value always wins; a stored-only
17230
+ * (unavailable) key keeps its stored value.
17231
+ */
17232
+ enabled: boolean(),
17233
+ /** Relative balancer weight for the enabled device (default 1). */
17234
+ weight: number(),
17235
+ /** Per-device concurrent-session cap; null = unlimited (multi-device C4). */
17236
+ maxSessions: number().nullable(),
17237
+ /** Object-detection model the executor defaults to for this deviceKey. */
17238
+ defaultModelId: string(),
17239
+ /**
17240
+ * Per-(node,device) BASE provisioning (C7.2/C7.4) — the RAW stored
17241
+ * `stepId → {modelId?, settings?}` map from `inferenceDevices[key].steps`.
17242
+ * Absent/empty ⇒ no base (every step uses its device format default). The
17243
+ * UI cross-references `pipelineExecutor.getSchema` for the models actually
17244
+ * available per format; this is the stored selection that becomes the
17245
+ * default for EVERY camera landing on this accelerator.
17246
+ */
17247
+ steps: record(string(), DeviceStepConfigSchema).optional()
17248
+ });
17249
+ var NodeInferenceDevicesSchema = object({
17250
+ nodeId: string(),
17251
+ /** False when the node's platform-probe was unreachable (no live device set). */
17252
+ reachable: boolean(),
17253
+ devices: array(NodeInferenceDeviceSchema).readonly()
17254
+ });
17128
17255
  method(object({
17129
17256
  deviceId: number(),
17130
17257
  agentNodeId: string()
@@ -17134,7 +17261,13 @@ method(object({
17134
17261
  }), method(object({ deviceId: number() }), object({ success: literal(true) }), {
17135
17262
  kind: "mutation",
17136
17263
  auth: "admin"
17137
- }), method(_void(), object({ migrated: number() }), {
17264
+ }), method(object({
17265
+ deviceId: number(),
17266
+ deviceKey: string()
17267
+ }), object({ success: literal(true) }), {
17268
+ kind: "mutation",
17269
+ auth: "admin"
17270
+ }), method(object({ deviceId: number() }), object({ deviceKey: string().nullable() })), method(_void(), object({ migrated: number() }), {
17138
17271
  kind: "mutation",
17139
17272
  auth: "admin"
17140
17273
  }), 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({
@@ -17168,13 +17301,7 @@ method(object({
17168
17301
  }))), method(object({ agentNodeId: string() }), AgentPipelineSettingsSchema.nullable()), method(_void(), array(object({
17169
17302
  nodeId: string(),
17170
17303
  settings: AgentPipelineSettingsSchema
17171
- })).readonly()), method(object({
17172
- agentNodeId: string(),
17173
- defaults: record(string(), AgentAddonConfigSchema)
17174
- }), object({ success: literal(true) }), {
17175
- kind: "mutation",
17176
- auth: "admin"
17177
- }), method(object({ agentNodeId: string() }), object({
17304
+ })).readonly()), method(object({ agentNodeId: string() }), object({
17178
17305
  success: boolean(),
17179
17306
  removed: boolean()
17180
17307
  }), {
@@ -17206,7 +17333,18 @@ method(object({
17206
17333
  }), object({ success: literal(true) }), {
17207
17334
  kind: "mutation",
17208
17335
  auth: "admin"
17209
- }), method(object({ agentNodeId: string() }), object({
17336
+ }), method(object({
17337
+ agentNodeId: string(),
17338
+ inferenceDevices: record(string(), object({
17339
+ enabled: boolean(),
17340
+ weight: number().positive().optional(),
17341
+ maxSessions: number().int().positive().optional(),
17342
+ steps: record(string(), DeviceStepConfigSchema).optional()
17343
+ }))
17344
+ }), object({ success: literal(true) }), {
17345
+ kind: "mutation",
17346
+ auth: "admin"
17347
+ }), method(object({ nodeId: string() }), NodeInferenceDevicesSchema), method(object({ agentNodeId: string() }), object({
17210
17348
  success: literal(true),
17211
17349
  /** Hardware-aware default detection model now in effect on the node (null when unresolvable). */
17212
17350
  effectiveModelId: string().nullable(),
@@ -17222,9 +17360,10 @@ method(object({
17222
17360
  }), object({ success: literal(true) }), {
17223
17361
  kind: "mutation",
17224
17362
  auth: "admin"
17225
- }), method(object({ deviceId: number() }), record(string(), record(string(), CameraStepOverridePatchSchema)).nullable()), method(object({
17363
+ }), method(object({ deviceId: number() }), record(string(), record(string(), record(string(), CameraStepOverridePatchSchema))).nullable()), method(object({
17226
17364
  deviceId: number(),
17227
17365
  agentNodeId: string(),
17366
+ deviceKey: string(),
17228
17367
  addonId: string(),
17229
17368
  patch: CameraStepOverridePatchSchema.nullable()
17230
17369
  }), object({ success: literal(true) }), {
@@ -17261,14 +17400,13 @@ method(object({
17261
17400
  });
17262
17401
  /**
17263
17402
  * server-management — per-NODE singleton capability for a node's ROOT
17264
- * package lifecycle (runtime-updatable node packages, phase 2: hub + docker
17265
- * agents).
17403
+ * package lifecycle (runtime-updatable node packages).
17266
17404
  *
17267
- * Each node's root package (`@camstack/server` on the hub, `@camstack/agent`
17268
- * on agents) carries the whole software stack in its npm dep tree, so ONE
17269
- * version describes the node. Updates install into
17270
- * `<dataDir>/server-root/versions/<v>/` and apply on restart via the baked
17271
- * starter (probation boot + auto-rollback to N-1).
17405
+ * Every node role runs the SAME root package (`@camstack/server`), which
17406
+ * carries the whole software stack in its npm dep tree, so ONE version
17407
+ * describes the node. Updates stage into `<dataDir>/server-root/` and apply
17408
+ * on restart via the baked starter (single-copy in-place swap — no probation,
17409
+ * no auto-rollback).
17272
17410
  *
17273
17411
  * Providers:
17274
17412
  * - HUB: `ServerUpdateService` behind the `server-provided` mount
@@ -17376,7 +17514,8 @@ method(_void(), ServerPackageStatusSchema, { auth: "admin" }), method(_void(), S
17376
17514
  /** Explicit target version; omitted = latest from the registry. */
17377
17515
  version: string().optional() }), ServerUpdateActionResultSchema, {
17378
17516
  kind: "mutation",
17379
- auth: "admin"
17517
+ auth: "admin",
17518
+ timeoutMs: 16 * 6e4
17380
17519
  }), method(_void(), ServerUpdateActionResultSchema, {
17381
17520
  kind: "mutation",
17382
17521
  auth: "admin"
@@ -18437,22 +18576,6 @@ var AddonAutoUpdateSchema = ChannelWithInheritSchema;
18437
18576
  var RestartAddonResultSchema = unknown();
18438
18577
  var InstallPackageResultSchema = unknown();
18439
18578
  var ReloadPackagesResultSchema = unknown();
18440
- /**
18441
- * Result of `updateFrameworkPackage`. The cap method returns BEFORE the
18442
- * server restarts so the admin UI can react to the `restartingAt`
18443
- * timestamp (shows reconnect overlay). The transition from
18444
- * `fromVersion` to `toVersion` will be confirmed by a subsequent
18445
- * `system.restart-completed` event after the new process boots.
18446
- *
18447
- * Spec: docs/superpowers/specs/2026-05-14-framework-live-update-design.md
18448
- */
18449
- var UpdateFrameworkPackageResultSchema = object({
18450
- packageName: string(),
18451
- fromVersion: string(),
18452
- toVersion: string(),
18453
- /** Ms-epoch the server scheduled its self-restart. */
18454
- restartingAt: number()
18455
- });
18456
18579
  var BulkUpdateItemStatusSchema = _enum([
18457
18580
  "queued",
18458
18581
  "updating",
@@ -18580,13 +18703,6 @@ method(_void(), array(AddonListItemSchema).readonly()), method(object({
18580
18703
  }), object({ success: literal(true) }), {
18581
18704
  kind: "mutation",
18582
18705
  auth: "admin"
18583
- }), method(object({
18584
- packageName: string().min(1),
18585
- version: string().optional(),
18586
- deferRestart: boolean().optional()
18587
- }), UpdateFrameworkPackageResultSchema, {
18588
- kind: "mutation",
18589
- auth: "admin"
18590
18706
  }), method(object({ name: string() }), array(PackageVersionInfoSchema).readonly()), method(object({ addonId: string() }), RestartAddonResultSchema, {
18591
18707
  kind: "mutation",
18592
18708
  auth: "admin"
@@ -19452,10 +19568,10 @@ var TopologyCategorySchema = object({
19452
19568
  addons: array(TopologyCategoryAddonSchema).readonly()
19453
19569
  });
19454
19570
  /**
19455
- * The node's runtime-updatable ROOT package (`@camstack/server` on the hub,
19456
- * `@camstack/agent` on agents) as reported by its `registerNode` manifest —
19457
- * version visibility for the Server management surface. Nullable: offline
19458
- * rows and pre-phase-2 nodes report none.
19571
+ * The node's runtime-updatable ROOT package (`@camstack/server` the single
19572
+ * root package for every node role) as reported by its `registerNode`
19573
+ * manifest — version visibility for the Server management surface. Nullable:
19574
+ * offline rows and nodes that never reported one.
19459
19575
  */
19460
19576
  var TopologyRootPackageSchema = object({
19461
19577
  name: string(),
@@ -19843,17 +19959,28 @@ var PlatformScoreSchema = object({
19843
19959
  format: _enum([
19844
19960
  "onnx",
19845
19961
  "coreml",
19846
- "openvino"
19962
+ "openvino",
19963
+ "tflite"
19847
19964
  ]),
19848
19965
  score: number(),
19849
19966
  reason: string(),
19850
19967
  available: boolean()
19851
19968
  });
19969
+ var InferenceDeviceDescriptorSchema = object({
19970
+ key: string(),
19971
+ backend: string(),
19972
+ device: string(),
19973
+ format: ModelFormatSchema,
19974
+ runtime: literal("python"),
19975
+ score: number(),
19976
+ available: boolean()
19977
+ });
19852
19978
  var PlatformCapabilitiesSchema = object({
19853
19979
  hardware: HardwareInfoSchema,
19854
19980
  scores: array(PlatformScoreSchema).readonly(),
19855
19981
  bestScore: PlatformScoreSchema,
19856
- pythonPath: string().nullable()
19982
+ pythonPath: string().nullable(),
19983
+ devices: array(InferenceDeviceDescriptorSchema).readonly()
19857
19984
  });
19858
19985
  var ModelRequirementSchema = object({
19859
19986
  modelId: string(),
@@ -20732,12 +20859,6 @@ Object.freeze({
20732
20859
  addonId: null,
20733
20860
  access: "delete"
20734
20861
  },
20735
- "addons.updateFrameworkPackage": {
20736
- capName: "addons",
20737
- capScope: "system",
20738
- addonId: null,
20739
- access: "create"
20740
- },
20741
20862
  "addons.updatePackage": {
20742
20863
  capName: "addons",
20743
20864
  capScope: "system",
@@ -23510,12 +23631,6 @@ Object.freeze({
23510
23631
  addonId: null,
23511
23632
  access: "view"
23512
23633
  },
23513
- "pipelineExecutor.reprobeEngine": {
23514
- capName: "pipeline-executor",
23515
- capScope: "system",
23516
- addonId: null,
23517
- access: "create"
23518
- },
23519
23634
  "pipelineExecutor.runAudioTest": {
23520
23635
  capName: "pipeline-executor",
23521
23636
  capScope: "system",
@@ -23666,6 +23781,12 @@ Object.freeze({
23666
23781
  addonId: null,
23667
23782
  access: "view"
23668
23783
  },
23784
+ "pipelineOrchestrator.getNodeInferenceDevices": {
23785
+ capName: "pipeline-orchestrator",
23786
+ capScope: "system",
23787
+ addonId: null,
23788
+ access: "view"
23789
+ },
23669
23790
  "pipelineOrchestrator.getPipelineAssignment": {
23670
23791
  capName: "pipeline-orchestrator",
23671
23792
  capScope: "system",
@@ -23678,6 +23799,12 @@ Object.freeze({
23678
23799
  addonId: null,
23679
23800
  access: "view"
23680
23801
  },
23802
+ "pipelineOrchestrator.getPipelineDevicePin": {
23803
+ capName: "pipeline-orchestrator",
23804
+ capScope: "system",
23805
+ addonId: null,
23806
+ access: "view"
23807
+ },
23681
23808
  "pipelineOrchestrator.listAgentSettings": {
23682
23809
  capName: "pipeline-orchestrator",
23683
23810
  capScope: "system",
@@ -23720,19 +23847,19 @@ Object.freeze({
23720
23847
  addonId: null,
23721
23848
  access: "create"
23722
23849
  },
23723
- "pipelineOrchestrator.setAgentAddonDefaults": {
23850
+ "pipelineOrchestrator.setAgentCapabilities": {
23724
23851
  capName: "pipeline-orchestrator",
23725
23852
  capScope: "system",
23726
23853
  addonId: null,
23727
23854
  access: "create"
23728
23855
  },
23729
- "pipelineOrchestrator.setAgentCapabilities": {
23856
+ "pipelineOrchestrator.setAgentDetectWeight": {
23730
23857
  capName: "pipeline-orchestrator",
23731
23858
  capScope: "system",
23732
23859
  addonId: null,
23733
23860
  access: "create"
23734
23861
  },
23735
- "pipelineOrchestrator.setAgentDetectWeight": {
23862
+ "pipelineOrchestrator.setAgentInferenceDevices": {
23736
23863
  capName: "pipeline-orchestrator",
23737
23864
  capScope: "system",
23738
23865
  addonId: null,
@@ -23774,6 +23901,12 @@ Object.freeze({
23774
23901
  addonId: null,
23775
23902
  access: "create"
23776
23903
  },
23904
+ "pipelineOrchestrator.setPipelineDevicePin": {
23905
+ capName: "pipeline-orchestrator",
23906
+ capScope: "system",
23907
+ addonId: null,
23908
+ access: "create"
23909
+ },
23777
23910
  "pipelineOrchestrator.unassignAudio": {
23778
23911
  capName: "pipeline-orchestrator",
23779
23912
  capScope: "system",
@@ -25326,31 +25459,5 @@ Object.freeze({
25326
25459
  "network-access": "ingress",
25327
25460
  "smtp-provider": "email"
25328
25461
  });
25329
- var frameworkSwapPackageSchema = object({
25330
- name: string(),
25331
- stagedPath: string(),
25332
- backupPath: string(),
25333
- toVersion: string(),
25334
- fromVersion: string().nullable()
25335
- });
25336
- object({
25337
- jobId: string(),
25338
- taskId: string(),
25339
- packages: array(frameworkSwapPackageSchema),
25340
- requestedAtMs: number(),
25341
- schemaVersion: literal(1)
25342
- });
25343
- object({
25344
- jobId: string(),
25345
- taskId: string(),
25346
- backups: array(object({
25347
- name: string(),
25348
- backupPath: string(),
25349
- livePath: string()
25350
- })),
25351
- appliedAtMs: number(),
25352
- bootAttempts: number(),
25353
- schemaVersion: literal(1)
25354
- });
25355
25462
  //#endregion
25356
25463
  export { loginMethodCapability as a, BaseAddon as c, number as d, object as f, buildAddonRouteProvider as i, array as l, addonWidgetsSourceCapability as n, userPasskeysCapability as o, string as p, authProviderCapability as r, errMsg as s, addonRoutesCapability as t, boolean as u };