@camstack/types 1.1.34 → 1.1.36

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.
Files changed (32) hide show
  1. package/dist/addon.d.ts +2 -0
  2. package/dist/addon.js +2 -1
  3. package/dist/addon.mjs +2 -2
  4. package/dist/capabilities/addon-pages-source.cap.d.ts +4 -0
  5. package/dist/capabilities/addon-pages.cap.d.ts +4 -0
  6. package/dist/capabilities/addon-widgets-source.cap.d.ts +2 -0
  7. package/dist/capabilities/addon-widgets.cap.d.ts +2 -0
  8. package/dist/capabilities/index.d.ts +11 -3
  9. package/dist/capabilities/login-method.cap.d.ts +146 -0
  10. package/dist/capabilities/nodes.cap.d.ts +19 -1
  11. package/dist/capabilities/pipeline-executor.cap.d.ts +15 -61
  12. package/dist/capabilities/pipeline-orchestrator.cap.d.ts +31 -69
  13. package/dist/capabilities/server-management.cap.d.ts +194 -0
  14. package/dist/capabilities/viewer-ui.cap.d.ts +24 -0
  15. package/dist/generated/addon-api.d.ts +516 -170
  16. package/dist/generated/capability-router-map.d.ts +13 -4
  17. package/dist/generated/device-proxy.d.ts +1 -1
  18. package/dist/generated/method-access-map.d.ts +1 -1
  19. package/dist/generated/system-proxy.d.ts +4 -2
  20. package/dist/index.d.ts +2 -1
  21. package/dist/index.js +430 -124
  22. package/dist/index.mjs +415 -123
  23. package/dist/interfaces/addon.d.ts +12 -2
  24. package/dist/interfaces/capability.d.ts +3 -0
  25. package/dist/interfaces/config-ui.d.ts +40 -0
  26. package/dist/interfaces/event-bus.d.ts +11 -0
  27. package/dist/interfaces/pipeline-executor-capability.d.ts +2 -8
  28. package/dist/interfaces/pipeline-orchestrator-capability.d.ts +0 -14
  29. package/dist/{sleep-DmP-uxoe.js → sleep-BtS3xMHv.js} +109 -9
  30. package/dist/{sleep-Cc14_yxc.mjs → sleep-DJaTV2D7.mjs} +86 -10
  31. package/dist/types/agent-pipeline-settings.d.ts +8 -0
  32. package/package.json +1 -1
package/dist/index.js CHANGED
@@ -1,5 +1,5 @@
1
1
  Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
2
- const require_sleep = require("./sleep-DmP-uxoe.js");
2
+ const require_sleep = require("./sleep-BtS3xMHv.js");
3
3
  const require_err_msg = require("./err-msg-COpsHMw2.js");
4
4
  let zod = require("zod");
5
5
  //#region src/health/wiring-health.ts
@@ -7605,11 +7605,6 @@ var PipelineSchemaSchema = zod.z.object({
7605
7605
  selectedEngine: PipelineEngineChoiceSchema,
7606
7606
  slots: zod.z.array(PipelineSlotSchemaSchema).readonly()
7607
7607
  });
7608
- var DetectorOutputSchema = zod.z.object({
7609
- detections: zod.z.array(SpatialDetectionSchema).readonly(),
7610
- inferenceMs: zod.z.number(),
7611
- modelId: zod.z.string()
7612
- });
7613
7608
  var EngineProvisioningSchema = zod.z.object({
7614
7609
  runtimeId: zod.z.enum([
7615
7610
  "onnx",
@@ -7775,23 +7770,23 @@ var pipelineExecutorCapability = {
7775
7770
  auth: "admin"
7776
7771
  }),
7777
7772
  /**
7778
- * Reset ONE node's detection-pipeline to its factory defaults, forcing
7779
- * regeneration of the (now hardware-aware) default object-detection
7780
- * model. `nodeId` is the ROUTING key — the generated cap-router strips
7781
- * it (default `nodeIdMode: 'routing'`, same as `getSelectedEngine` /
7782
- * `getDefaultSteps`) and dispatches to that node, so the provider method
7783
- * runs ON the target node and receives no `nodeId`.
7773
+ * Clear THIS node's executor-side PER-DEVICE settings stores (the
7774
+ * per-camera step overrides the object-detection root reads via
7775
+ * `applyDeviceOverridesToTree`). `nodeId` is the ROUTING key — the
7776
+ * generated cap-router strips it (default `nodeIdMode: 'routing'`) and
7777
+ * dispatches to that node, so the provider method runs ON the target
7778
+ * node and receives no `nodeId`.
7784
7779
  *
7785
- * Clears the node's persisted global pipeline seed (`pipelineSteps`) +
7786
- * legacy engine blob (`pipelineEngine`) and every device's per-camera
7787
- * step overrides, then re-seeds the hardware-aware default tree. Returns
7788
- * the regenerated object-detection model id (null when the default tree
7789
- * has no detector for this node's engine format) so the caller can
7790
- * verify the reset without a second round-trip.
7780
+ * This is the slimmed executor leg of the orchestrator's
7781
+ * `resetNodePipelineDefaults` flow (which owns the real reset: node
7782
+ * addonDefaults pins + per-camera orchestrator overrides). The legacy
7783
+ * `resetToDefault` which reset a persisted global step-tree seed
7784
+ * nothing in the live per-camera path read was removed together with
7785
+ * that seed.
7791
7786
  */
7792
- resetToDefault: require_sleep.method(zod.z.object({ nodeId: zod.z.string() }), zod.z.object({
7787
+ clearDeviceOverrides: require_sleep.method(zod.z.object({ nodeId: zod.z.string() }), zod.z.object({
7793
7788
  success: zod.z.literal(true),
7794
- regeneratedModelId: zod.z.string().nullable()
7789
+ clearedDevices: zod.z.number()
7795
7790
  }), {
7796
7791
  kind: "mutation",
7797
7792
  auth: "admin"
@@ -7837,11 +7832,6 @@ var pipelineExecutorCapability = {
7837
7832
  modelId: zod.z.string(),
7838
7833
  format: ModelFormatSchema$1
7839
7834
  }), zod.z.object({ success: zod.z.literal(true) }), { kind: "mutation" }),
7840
- detect: require_sleep.method(zod.z.object({
7841
- addonId: zod.z.string(),
7842
- frame: FrameInputSchema,
7843
- config: zod.z.record(zod.z.string(), zod.z.unknown()).optional()
7844
- }), DetectorOutputSchema),
7845
7835
  /**
7846
7836
  * Stateless single-frame execution. Callers (runner, benchmark) pass
7847
7837
  * the complete `engine` + `steps` tree; the executor holds no state
@@ -12565,7 +12555,7 @@ function createSystemProxy(api) {
12565
12555
  getEngineProvisioning: (input) => dispatch("pipelineExecutor", "getEngineProvisioning", "query", input),
12566
12556
  getVideoPipelineSteps: (input) => dispatch("pipelineExecutor", "getVideoPipelineSteps", "query", input),
12567
12557
  setVideoPipelineSteps: (input) => dispatch("pipelineExecutor", "setVideoPipelineSteps", "mutation", input),
12568
- resetToDefault: (input) => dispatch("pipelineExecutor", "resetToDefault", "mutation", input),
12558
+ clearDeviceOverrides: (input) => dispatch("pipelineExecutor", "clearDeviceOverrides", "mutation", input),
12569
12559
  getSchema: (input) => dispatch("pipelineExecutor", "getSchema", "query", input),
12570
12560
  getGlobalSteps: (input) => dispatch("pipelineExecutor", "getGlobalSteps", "query", input),
12571
12561
  getGlobalPipelineConfig: (input) => dispatch("pipelineExecutor", "getGlobalPipelineConfig", "query", input),
@@ -12579,7 +12569,6 @@ function createSystemProxy(api) {
12579
12569
  getAddonModels: (input) => dispatch("pipelineExecutor", "getAddonModels", "query", input),
12580
12570
  downloadModel: (input) => dispatch("pipelineExecutor", "downloadModel", "mutation", input),
12581
12571
  deleteModel: (input) => dispatch("pipelineExecutor", "deleteModel", "mutation", input),
12582
- detect: (input) => dispatch("pipelineExecutor", "detect", "query", input),
12583
12572
  cacheFrameInPool: (input) => dispatch("pipelineExecutor", "cacheFrameInPool", "mutation", input),
12584
12573
  inferCached: (input) => dispatch("pipelineExecutor", "inferCached", "mutation", input),
12585
12574
  uncacheFrame: (input) => dispatch("pipelineExecutor", "uncacheFrame", "mutation", input),
@@ -12603,7 +12592,6 @@ function createSystemProxy(api) {
12603
12592
  getCapabilityBindings: (input) => dispatch("pipelineOrchestrator", "getCapabilityBindings", "query", input),
12604
12593
  setCapabilityBinding: (input) => dispatch("pipelineOrchestrator", "setCapabilityBinding", "mutation", input),
12605
12594
  getIngestOwner: (input) => dispatch("pipelineOrchestrator", "getIngestOwner", "query", input),
12606
- getDecoderAssignments: (input) => dispatch("pipelineOrchestrator", "getDecoderAssignments", "query", input),
12607
12595
  getAudioNodeLoad: (input) => dispatch("pipelineOrchestrator", "getAudioNodeLoad", "query", input),
12608
12596
  getAgentSettings: (input) => dispatch("pipelineOrchestrator", "getAgentSettings", "query", input),
12609
12597
  listAgentSettings: (input) => dispatch("pipelineOrchestrator", "listAgentSettings", "query", input),
@@ -12613,6 +12601,7 @@ function createSystemProxy(api) {
12613
12601
  setAgentDetectWeight: (input) => dispatch("pipelineOrchestrator", "setAgentDetectWeight", "mutation", input),
12614
12602
  setAgentCapabilities: (input) => dispatch("pipelineOrchestrator", "setAgentCapabilities", "mutation", input),
12615
12603
  setAgentReachableHost: (input) => dispatch("pipelineOrchestrator", "setAgentReachableHost", "mutation", input),
12604
+ resetNodePipelineDefaults: (input) => dispatch("pipelineOrchestrator", "resetNodePipelineDefaults", "mutation", input),
12616
12605
  getCameraStatuses: (input) => dispatch("pipelineOrchestrator", "getCameraStatuses", "query", input),
12617
12606
  listTemplates: (input) => dispatch("pipelineOrchestrator", "listTemplates", "query", input),
12618
12607
  saveTemplate: (input) => dispatch("pipelineOrchestrator", "saveTemplate", "mutation", input),
@@ -12635,6 +12624,13 @@ function createSystemProxy(api) {
12635
12624
  deletePlate: (input) => dispatch("plateGallery", "deletePlate", "mutation", input)
12636
12625
  },
12637
12626
  recording: { getStorageUsage: (input) => dispatch("recording", "getStorageUsage", "query", input) },
12627
+ serverManagement: {
12628
+ getServerPackageStatus: (input) => dispatch("serverManagement", "getServerPackageStatus", "query", input),
12629
+ checkServerUpdate: (input) => dispatch("serverManagement", "checkServerUpdate", "mutation", input),
12630
+ applyServerUpdate: (input) => dispatch("serverManagement", "applyServerUpdate", "mutation", input),
12631
+ rollbackServerUpdate: (input) => dispatch("serverManagement", "rollbackServerUpdate", "mutation", input),
12632
+ restartServer: (input) => dispatch("serverManagement", "restartServer", "mutation", input)
12633
+ },
12638
12634
  settingsStore: {
12639
12635
  get: (input) => dispatch("settingsStore", "get", "query", input),
12640
12636
  set: (input) => dispatch("settingsStore", "set", "mutation", input),
@@ -13398,7 +13394,9 @@ var AddonPageDeclarationSchema$1 = zod.z.object({
13398
13394
  icon: zod.z.string(),
13399
13395
  path: zod.z.string(),
13400
13396
  remoteName: zod.z.string(),
13401
- bundle: zod.z.string()
13397
+ bundle: zod.z.string(),
13398
+ section: zod.z.string().optional(),
13399
+ sectionLabel: zod.z.string().optional()
13402
13400
  });
13403
13401
  var AddonPageInfoSchema = zod.z.object({
13404
13402
  addonId: zod.z.string(),
@@ -13445,7 +13443,18 @@ var AddonPageDeclarationSchema = zod.z.object({
13445
13443
  * the static-file route can compute an mtime-based cache-buster URL
13446
13444
  * without a separate filesystem stat.
13447
13445
  */
13448
- bundle: zod.z.string()
13446
+ bundle: zod.z.string(),
13447
+ /**
13448
+ * Sidebar section this page docks into. Well-known ids: `'detection'`,
13449
+ * `'cluster'`, `'administration'` — the page renders inside that group.
13450
+ * Any OTHER string creates (or joins) a custom section rendered after
13451
+ * the built-in groups; its label comes from `sectionLabel` (first
13452
+ * declaration wins), falling back to the id. Absent → the legacy
13453
+ * "Addon Pages" group.
13454
+ */
13455
+ section: zod.z.string().optional(),
13456
+ /** Display label for a CUSTOM `section` id (ignored for well-known ids). */
13457
+ sectionLabel: zod.z.string().optional()
13449
13458
  });
13450
13459
  var addonPagesSourceCapability = {
13451
13460
  name: "addon-pages-source",
@@ -13729,6 +13738,17 @@ var WidgetMetadataSchema = zod.z.object({
13729
13738
  deviceContext: zod.z.boolean().default(false),
13730
13739
  integrationContext: zod.z.boolean().default(false)
13731
13740
  }),
13741
+ /**
13742
+ * Loadable BEFORE authentication. The normal widget registry listing
13743
+ * (`addon-widgets.listWidgets`) is auth-gated, so a pre-auth surface
13744
+ * (the login page) cannot discover a widget through it. A widget that
13745
+ * declares `preAuth: true` marks itself as safe to mount on a pre-auth
13746
+ * screen — it is surfaced through the PUBLIC `auth.listLoginMethods`
13747
+ * login-method contribution channel (see `login-method.cap.ts`) rather
13748
+ * than the authenticated registry, and its bundle is served by the
13749
+ * public `/api/addon-widgets/:addonId/*` static route. Defaults false.
13750
+ */
13751
+ preAuth: zod.z.boolean().optional().default(false),
13732
13752
  /** Dashboard placement HINTS (operator can override per instance). */
13733
13753
  defaultSize: WidgetSizeEnum.default("md"),
13734
13754
  allowedSizes: zod.z.array(WidgetSizeEnum).readonly().default([
@@ -14214,6 +14234,89 @@ var authProviderCapability = {
14214
14234
  /** BIG PLAN 2: declarative mount hint — read by `@camstack/system` `buildCapRouters`. */
14215
14235
  mount: { kind: "skip" }
14216
14236
  };
14237
+ //#endregion
14238
+ //#region src/capabilities/login-method.cap.ts
14239
+ /**
14240
+ * `login-method` — collection cap through which auth addons contribute
14241
+ * their pre-auth login surfaces to the login page. This is the SINGLE,
14242
+ * generic mechanism that supersedes the dead `auth.listProviders` reader:
14243
+ * every auth addon (OIDC, magic-link, WebAuthn/passkey) registers a
14244
+ * `login-method` provider and the PUBLIC `auth.listLoginMethods`
14245
+ * procedure aggregates them for the unauthenticated login page.
14246
+ *
14247
+ * A contribution is a discriminated union on `kind`:
14248
+ *
14249
+ * - `redirect` — a declarative button. The login page renders a generic
14250
+ * button that navigates to `startUrl` (an addon-owned HTTP route).
14251
+ * Covers OIDC (`/addon/auth-oidc/<id>/start`) and magic-link with
14252
+ * ZERO shell-side JS. A future SSO addon plugs in the same way — the
14253
+ * login page needs NO change.
14254
+ *
14255
+ * - `widget` — a Module-Federation widget the login page mounts (via
14256
+ * `loadRemoteBundle`) for an in-page ceremony. Covers the passkey
14257
+ * login ceremony, which must run `@simplewebauthn/browser` INSIDE the
14258
+ * addon bundle. The referenced widget also declares `preAuth: true` in
14259
+ * its `addon-widgets-source` catalog entry. `auth.listLoginMethods`
14260
+ * stamps a public `bundleUrl` from `addonId` + `bundle`.
14261
+ *
14262
+ * Every contribution carries a `stage`:
14263
+ * - `primary` — shown on the first credentials screen (OIDC /
14264
+ * magic-link buttons; a future usernameless passkey).
14265
+ * - `second-factor` — shown AFTER the password leg, gated on the
14266
+ * returned `factors` (passkey-as-2FA today).
14267
+ *
14268
+ * `mount: skip` — the cap is read server-side by the core auth router
14269
+ * (`registry.getCollection('login-method')`), never mounted as its own
14270
+ * tRPC router.
14271
+ */
14272
+ /** When a login method renders in the two-phase login flow. */
14273
+ var LoginStageEnum = zod.z.enum(["primary", "second-factor"]);
14274
+ /**
14275
+ * A declarative redirect button — the login page navigates to `startUrl`.
14276
+ * OIDC and magic-link contribute this; a future SSO addon does too.
14277
+ */
14278
+ var RedirectLoginMethodSchema = zod.z.object({
14279
+ kind: zod.z.literal("redirect"),
14280
+ /** Stable id within the login-method set (e.g. `auth-oidc/google`). */
14281
+ id: zod.z.string(),
14282
+ /** Operator-facing button label. */
14283
+ label: zod.z.string(),
14284
+ /** lucide-react icon name. */
14285
+ icon: zod.z.string().optional(),
14286
+ /** Addon-owned HTTP route the button navigates to (GET). */
14287
+ startUrl: zod.z.string(),
14288
+ stage: LoginStageEnum
14289
+ });
14290
+ /**
14291
+ * A Module-Federation widget the login page mounts for an in-page
14292
+ * ceremony. `bundle` + `addonId` let `auth.listLoginMethods` stamp a
14293
+ * public `bundleUrl`; `remote` is the MF descriptor `loadRemoteBundle`
14294
+ * consumes. No `bundleUrl` here — it is server-stamped on the public
14295
+ * output so the addon never encodes the static-route scheme.
14296
+ */
14297
+ var WidgetLoginMethodSchema = zod.z.object({
14298
+ kind: zod.z.literal("widget"),
14299
+ /** Stable id within the login-method set (e.g. `auth-webauthn/passkey-login`). */
14300
+ id: zod.z.string(),
14301
+ /** Owning addon id — drives the public bundle URL + the MF namespace. */
14302
+ addonId: zod.z.string(),
14303
+ /** Bundle filename inside the addon's dist dir (`remoteEntry.js`). */
14304
+ bundle: zod.z.string(),
14305
+ /** MF remote descriptor — `{ remoteName, exposedModule, componentKey }`. */
14306
+ remote: WidgetRemoteSchema,
14307
+ stage: LoginStageEnum
14308
+ });
14309
+ /** One login-method contribution — redirect button OR pre-auth widget. */
14310
+ var LoginMethodContributionSchema = zod.z.discriminatedUnion("kind", [RedirectLoginMethodSchema, WidgetLoginMethodSchema]);
14311
+ var loginMethodCapability = {
14312
+ name: "login-method",
14313
+ scope: "system",
14314
+ mode: "collection",
14315
+ internal: true,
14316
+ methods: { getLoginMethods: require_sleep.method(zod.z.void(), zod.z.array(LoginMethodContributionSchema).readonly()) },
14317
+ /** BIG PLAN 2: declarative mount hint — read by `@camstack/system` `buildCapRouters`. */
14318
+ mount: { kind: "skip" }
14319
+ };
14217
14320
  /**
14218
14321
  * Orchestrator-side destination metadata. The orchestrator computes
14219
14322
  * `id = <addonId>:<subId>` from its provider lookup so consumers
@@ -17601,7 +17704,12 @@ var AgentPipelineSettingsSchema = zod.z.object({
17601
17704
  detectWeight: zod.z.number().positive().optional(),
17602
17705
  /** Node is eligible to run the detection pipeline (decode + inference). */
17603
17706
  detect: zod.z.boolean().optional(),
17604
- /** Node is eligible to host decoder sessions. */
17707
+ /**
17708
+ * DEPRECATED AND IGNORED. Decode is always co-located with its frame
17709
+ * consumer, so decode eligibility IS detect eligibility. Kept optional in
17710
+ * the schema ONLY so persisted stores written before the removal still
17711
+ * parse — no code reads it and no write path emits it.
17712
+ */
17605
17713
  decode: zod.z.boolean().optional(),
17606
17714
  /** Node is eligible to run audio-analyzer sessions. */
17607
17715
  audio: zod.z.boolean().optional(),
@@ -17662,25 +17770,6 @@ var PipelineAssignmentSchema = zod.z.object({
17662
17770
  assignedAt: zod.z.number()
17663
17771
  });
17664
17772
  /**
17665
- * Decoder placement record. Symmetric to `PipelineAssignmentSchema` but for
17666
- * the decoder-node placement domain (`balanceDecoder` decision: manual pin
17667
- * → co-located with pipeline → capacity).
17668
- */
17669
- var DecoderAssignmentSchema = zod.z.object({
17670
- deviceId: zod.z.number(),
17671
- /** Moleculer node id of the decoder provider currently responsible for this camera. */
17672
- decoderNodeId: zod.z.string(),
17673
- /** True when the assignment was set manually via `assignDecoder`, false when chosen by the balancer. */
17674
- pinned: zod.z.boolean(),
17675
- /** Why this assignment was made — useful for debugging the decoder balancer. */
17676
- reason: zod.z.enum([
17677
- "manual",
17678
- "co-located",
17679
- "capacity",
17680
- "hardware-affinity"
17681
- ])
17682
- });
17683
- /**
17684
17773
  * Per-agent load summary surfaced to the load balancer + dashboards.
17685
17774
  * Aggregated from each runner's `getLocalLoad` cap call.
17686
17775
  */
@@ -17967,21 +18056,6 @@ var pipelineOrchestratorCapability = {
17967
18056
  * present. Defaults to `{ ownerNodeId: 'hub' }`.
17968
18057
  */
17969
18058
  getIngestOwner: require_sleep.method(zod.z.void(), IngestOwnerSchema),
17970
- /** Pin a device's decoder to a specific node. */
17971
- assignDecoder: require_sleep.method(zod.z.object({
17972
- deviceId: zod.z.number(),
17973
- nodeId: zod.z.string()
17974
- }), zod.z.void(), {
17975
- kind: "mutation",
17976
- auth: "admin"
17977
- }),
17978
- /** Clear a device's decoder pin (revert to auto). */
17979
- unassignDecoder: require_sleep.method(zod.z.object({ deviceId: zod.z.number() }), zod.z.void(), {
17980
- kind: "mutation",
17981
- auth: "admin"
17982
- }),
17983
- /** Get every camera's decoder placement. */
17984
- getDecoderAssignments: require_sleep.method(zod.z.void(), zod.z.array(DecoderAssignmentSchema).readonly()),
17985
18059
  /** Pin a device's audio analysis to a specific cluster node. */
17986
18060
  assignAudio: require_sleep.method(zod.z.object({
17987
18061
  deviceId: zod.z.number(),
@@ -18013,23 +18087,6 @@ var pipelineOrchestratorCapability = {
18013
18087
  pinned: zod.z.boolean(),
18014
18088
  assignedAt: zod.z.number()
18015
18089
  }))),
18016
- /**
18017
- * Get one camera's decoder placement (computed if not yet pinned).
18018
- *
18019
- * ADVISORY today: reports the orchestrator's decoder preference only.
18020
- * Actual decode placement is broker-owned (local-node pin + frame-plane
18021
- * co-location guard). Reserved to become the binding source/decoder-owner
18022
- * control in the stream-LB epic (Phase 2).
18023
- *
18024
- * `pipelineNodeId` is the node already chosen to run inference for
18025
- * this camera. When provided, the balancer prefers co-location with
18026
- * it; omitted → falls back to the last known assignment in the
18027
- * `assignments` map and finally to 'hub'.
18028
- */
18029
- getDecoderAssignment: require_sleep.method(zod.z.object({
18030
- deviceId: zod.z.number(),
18031
- pipelineNodeId: zod.z.string().optional()
18032
- }), DecoderAssignmentSchema),
18033
18090
  /** Read one agent's settings. Null when not yet seeded. */
18034
18091
  getAgentSettings: require_sleep.method(zod.z.object({ agentNodeId: zod.z.string() }), AgentPipelineSettingsSchema.nullable()),
18035
18092
  /** Enumerate every agent's settings (hub + remote runners). */
@@ -18099,14 +18156,15 @@ var pipelineOrchestratorCapability = {
18099
18156
  * `enabledDecoderNodes`, `enabledAudioNodes`, `remoteSourcingNodes`).
18100
18157
  * Each flag is optional in the patch: omit a flag to leave it unchanged,
18101
18158
  * pass `null` to reset it to the node default (`hub` → capable, every
18102
- * other node → not). Detection/decode/audio eligibility is derived from
18103
- * these flags across the cluster; changing them re-derives the enabled
18104
- * sets and reconciles dispatch immediately.
18159
+ * other node → not). Detection/audio eligibility is derived from these
18160
+ * flags across the cluster; changing them re-derives the enabled sets
18161
+ * and reconciles dispatch immediately. There is NO separate decode flag:
18162
+ * decode is always co-located with its frame consumer, so decode
18163
+ * eligibility IS detect eligibility.
18105
18164
  */
18106
18165
  setAgentCapabilities: require_sleep.method(zod.z.object({
18107
18166
  agentNodeId: zod.z.string(),
18108
18167
  detect: zod.z.boolean().nullable().optional(),
18109
- decode: zod.z.boolean().nullable().optional(),
18110
18168
  audio: zod.z.boolean().nullable().optional(),
18111
18169
  ingest: zod.z.boolean().nullable().optional()
18112
18170
  }), zod.z.object({ success: zod.z.literal(true) }), {
@@ -18129,6 +18187,34 @@ var pipelineOrchestratorCapability = {
18129
18187
  kind: "mutation",
18130
18188
  auth: "admin"
18131
18189
  }),
18190
+ /**
18191
+ * Reset one node's pipeline to its hardware-aware defaults — the HONEST
18192
+ * reset (replaces the executor's legacy `resetToDefault`, which cleared a
18193
+ * dead persisted step-tree seed nothing in the live path read):
18194
+ * (a) strips every `modelId` pin from that node's
18195
+ * `agentSettings.addonDefaults` (cells revert to Auto — the node
18196
+ * resolves its own hardware-aware format default at runtime);
18197
+ * (b) clears per-camera step overrides scoped to that node
18198
+ * (`stepOverridesByAgent[node]` + the wholesale
18199
+ * `pipelineByAgent[node]` escape hatch);
18200
+ * (c) clears the executor-side per-device settings stores on that node
18201
+ * (`pipelineExecutor.clearDeviceOverrides`);
18202
+ * (d) hot-reloads every camera assigned to the node.
18203
+ *
18204
+ * Returns the EFFECTIVE post-reset object-detection model for the node
18205
+ * (the executor's pure hardware-aware default) so the UI can report what
18206
+ * will actually run — not a value that never reaches the live path.
18207
+ */
18208
+ resetNodePipelineDefaults: require_sleep.method(zod.z.object({ agentNodeId: zod.z.string() }), zod.z.object({
18209
+ success: zod.z.literal(true),
18210
+ /** Hardware-aware default detection model now in effect on the node (null when unresolvable). */
18211
+ effectiveModelId: zod.z.string().nullable(),
18212
+ /** Number of cameras whose node-scoped overrides were cleared. */
18213
+ clearedCameraOverrides: zod.z.number()
18214
+ }), {
18215
+ kind: "mutation",
18216
+ auth: "admin"
18217
+ }),
18132
18218
  /** Read one camera's settings. Null when never touched (inherits agent defaults fully). */
18133
18219
  getCameraSettings: require_sleep.method(zod.z.object({ deviceId: zod.z.number() }), CameraPipelineSettingsSchema.nullable()),
18134
18220
  /** Set or clear the 3-state toggle for one (camera, addonId). Pass `enabled: null` to clear and revert to agent default. */
@@ -18221,6 +18307,153 @@ var pipelineOrchestratorCapability = {
18221
18307
  }
18222
18308
  };
18223
18309
  //#endregion
18310
+ //#region src/capabilities/server-management.cap.ts
18311
+ /**
18312
+ * server-management — per-NODE singleton capability for a node's ROOT
18313
+ * package lifecycle (runtime-updatable node packages, phase 2: hub + docker
18314
+ * agents).
18315
+ *
18316
+ * Each node's root package (`@camstack/server` on the hub, `@camstack/agent`
18317
+ * on agents) carries the whole software stack in its npm dep tree, so ONE
18318
+ * version describes the node. Updates install into
18319
+ * `<dataDir>/server-root/versions/<v>/` and apply on restart via the baked
18320
+ * starter (probation boot + auto-rollback to N-1).
18321
+ *
18322
+ * Providers:
18323
+ * - HUB: `ServerUpdateService` behind the `server-provided` mount
18324
+ * (`buildServerProviders` in trpc.router.ts) — the default target for
18325
+ * unpinned calls.
18326
+ * - AGENT: `AgentUpdateService` registered by the agent bootstrap under
18327
+ * the synthetic `agent-runtime` addonId and declared in the agent's
18328
+ * `$hub.registerNode` manifest.
18329
+ *
18330
+ * Node routing: singleton caps get the codegen/runtime-builder `nodeId`
18331
+ * injection on every method — `input.nodeId` (or `nodePin(nodeId)` from the
18332
+ * SDK) routes the call to that node's provider via the standard remote
18333
+ * proxy (`createCapabilityProxy` → `$agent-cap-fwd` → the agent's
18334
+ * in-process provider lookup). No `nodeId` → the hub's own provider.
18335
+ *
18336
+ * Spec: docs/superpowers/specs/2026-07-12-runtime-updatable-node-packages-design.md
18337
+ */
18338
+ /**
18339
+ * Where the running hub's code was loaded from:
18340
+ * - `workspace` — dev checkout (tsx / workspace dist); the starter defers to
18341
+ * plain resolution and runtime updates are refused.
18342
+ * - `baked` — the immutable image seed closure (no data-dir root active).
18343
+ * - `data-root` — the runtime-updatable `<dataDir>/server-root` closure.
18344
+ */
18345
+ var ServerBootModeSchema = zod.z.enum([
18346
+ "workspace",
18347
+ "baked",
18348
+ "data-root"
18349
+ ]);
18350
+ /**
18351
+ * Update lifecycle state:
18352
+ * - `idle` / `checking` / `staging` — steady / in-flight registry work.
18353
+ * - `pending-restart` — a version is staged and the node has NOT yet
18354
+ * restarted onto it (still running the OLD version).
18355
+ * - `awaiting-confirmation` — the node HAS restarted onto the staged version
18356
+ * (it is the active probation boot) and is waiting to confirm boot-health.
18357
+ * Apply/rollback are refused in this state and the node must NOT be
18358
+ * manually restarted, or the probation boot auto-rolls-back.
18359
+ */
18360
+ var ServerUpdateStateSchema = zod.z.enum([
18361
+ "idle",
18362
+ "checking",
18363
+ "staging",
18364
+ "pending-restart",
18365
+ "awaiting-confirmation"
18366
+ ]);
18367
+ var ServerRollbackInfoSchema = zod.z.object({
18368
+ /** The version that failed (or was manually rolled back). */
18369
+ fromVersion: zod.z.string(),
18370
+ /** The version rolled back to; null = the baked seed. */
18371
+ toVersion: zod.z.string().nullable(),
18372
+ atMs: zod.z.number(),
18373
+ reason: zod.z.string()
18374
+ });
18375
+ var ServerPackageStatusSchema = zod.z.object({
18376
+ /** Root package name (`@camstack/server` on the hub). */
18377
+ packageName: zod.z.string(),
18378
+ /** Version of the code the running process ACTUALLY loaded. */
18379
+ runningVersion: zod.z.string().nullable(),
18380
+ /** Node.js runtime version the node's process runs on (`process.versions.node`). */
18381
+ nodeRuntimeVersion: zod.z.string().nullable(),
18382
+ /** Active data-dir root version; null when booted from seed/workspace. */
18383
+ activeVersion: zod.z.string().nullable(),
18384
+ /** N-1 version kept for rollback; null when no previous version exists. */
18385
+ previousVersion: zod.z.string().nullable(),
18386
+ /** Version of the immutable baked seed closure (image fallback). */
18387
+ seedVersion: zod.z.string().nullable(),
18388
+ /** Latest registry version from the most recent check (null = never checked). */
18389
+ latestVersion: zod.z.string().nullable(),
18390
+ updateAvailable: zod.z.boolean(),
18391
+ bootMode: ServerBootModeSchema,
18392
+ updateState: ServerUpdateStateSchema,
18393
+ /** Version staged + awaiting its probation boot, when one is pending. */
18394
+ pendingVersion: zod.z.string().nullable(),
18395
+ /** Set when the last freshly-activated version failed its boot health-check. */
18396
+ rolledBack: ServerRollbackInfoSchema.nullable(),
18397
+ /**
18398
+ * True when `server-root/state.json` EXISTS but is unreadable/corrupt — the
18399
+ * hub is running from the baked seed (or workspace) while installed data-dir
18400
+ * versions are being IGNORED. Surfaced as a warning in the UI.
18401
+ */
18402
+ stateFileCorrupt: zod.z.boolean(),
18403
+ lastCheckedAtMs: zod.z.number().nullable()
18404
+ });
18405
+ var ServerUpdateCheckResultSchema = zod.z.object({
18406
+ packageName: zod.z.string(),
18407
+ runningVersion: zod.z.string().nullable(),
18408
+ latestVersion: zod.z.string().nullable(),
18409
+ updateAvailable: zod.z.boolean(),
18410
+ checkedAtMs: zod.z.number(),
18411
+ /** Non-null when the registry lookup failed (offline, bad registry, …). */
18412
+ error: zod.z.string().nullable()
18413
+ });
18414
+ var ServerUpdateActionResultSchema = zod.z.object({
18415
+ accepted: zod.z.boolean(),
18416
+ targetVersion: zod.z.string().nullable(),
18417
+ /** True when a graceful restart was scheduled to apply the change. */
18418
+ restarting: zod.z.boolean(),
18419
+ message: zod.z.string()
18420
+ });
18421
+ var serverManagementCapability = {
18422
+ name: "server-management",
18423
+ scope: "system",
18424
+ mode: "singleton",
18425
+ methods: {
18426
+ getServerPackageStatus: require_sleep.method(zod.z.void(), ServerPackageStatusSchema, { auth: "admin" }),
18427
+ checkServerUpdate: require_sleep.method(zod.z.void(), ServerUpdateCheckResultSchema, {
18428
+ kind: "mutation",
18429
+ auth: "admin"
18430
+ }),
18431
+ applyServerUpdate: require_sleep.method(zod.z.object({
18432
+ /** Explicit target version; omitted = latest from the registry. */
18433
+ version: zod.z.string().optional() }), ServerUpdateActionResultSchema, {
18434
+ kind: "mutation",
18435
+ auth: "admin"
18436
+ }),
18437
+ rollbackServerUpdate: require_sleep.method(zod.z.void(), ServerUpdateActionResultSchema, {
18438
+ kind: "mutation",
18439
+ auth: "admin"
18440
+ }),
18441
+ /**
18442
+ * Plain process restart of the node's root process — no version change.
18443
+ * The supervisor (docker restart policy / launchd / Electron main)
18444
+ * relaunches and the starter loads the SAME active version. Refused while
18445
+ * a stage is in flight or a version is already staged awaiting restart
18446
+ * (use apply/rollback instead, so the pending version is not skipped).
18447
+ */
18448
+ restartServer: require_sleep.method(zod.z.void(), ServerUpdateActionResultSchema, {
18449
+ kind: "mutation",
18450
+ auth: "admin"
18451
+ })
18452
+ },
18453
+ /** BIG PLAN 2: declarative mount hint — read by `@camstack/system` `buildCapRouters`. */
18454
+ mount: { kind: "server-provided" }
18455
+ };
18456
+ //#endregion
18224
18457
  //#region src/capabilities/settings-store.cap.ts
18225
18458
  /**
18226
18459
  * Query filter for settings-store collections.
@@ -21134,6 +21367,16 @@ var TopologyCategorySchema = zod.z.object({
21134
21367
  healthy: zod.z.number(),
21135
21368
  addons: zod.z.array(TopologyCategoryAddonSchema).readonly()
21136
21369
  });
21370
+ /**
21371
+ * The node's runtime-updatable ROOT package (`@camstack/server` on the hub,
21372
+ * `@camstack/agent` on agents) as reported by its `registerNode` manifest —
21373
+ * version visibility for the Server management surface. Nullable: offline
21374
+ * rows and pre-phase-2 nodes report none.
21375
+ */
21376
+ var TopologyRootPackageSchema = zod.z.object({
21377
+ name: zod.z.string(),
21378
+ version: zod.z.string()
21379
+ });
21137
21380
  var TopologyNodeSchema = zod.z.object({
21138
21381
  id: zod.z.string(),
21139
21382
  name: zod.z.string(),
@@ -21157,7 +21400,8 @@ var TopologyNodeSchema = zod.z.object({
21157
21400
  status: zod.z.string()
21158
21401
  })).readonly(),
21159
21402
  processes: zod.z.array(TopologyProcessSchema).readonly(),
21160
- categories: zod.z.array(TopologyCategorySchema).readonly()
21403
+ categories: zod.z.array(TopologyCategorySchema).readonly(),
21404
+ rootPackage: TopologyRootPackageSchema.nullable()
21161
21405
  });
21162
21406
  var CapUsageEdgeSchema = zod.z.object({
21163
21407
  callerAddonId: zod.z.string(),
@@ -22662,6 +22906,7 @@ var CAPABILITY_NAMES = {
22662
22906
  localNetwork: "local-network",
22663
22907
  lockControl: "lock-control",
22664
22908
  logDestination: "log-destination",
22909
+ loginMethod: "login-method",
22665
22910
  mediaPlayer: "media-player",
22666
22911
  meshNetwork: "mesh-network",
22667
22912
  metricsProvider: "metrics-provider",
@@ -22697,6 +22942,7 @@ var CAPABILITY_NAMES = {
22697
22942
  reboot: "reboot",
22698
22943
  recording: "recording",
22699
22944
  scriptRunner: "script-runner",
22945
+ serverManagement: "server-management",
22700
22946
  settingsStore: "settings-store",
22701
22947
  smoke: "smoke",
22702
22948
  smtpProvider: "smtp-provider",
@@ -22721,6 +22967,7 @@ var CAPABILITY_NAMES = {
22721
22967
  valve: "valve",
22722
22968
  vibration: "vibration",
22723
22969
  videoclips: "videoclips",
22970
+ viewerUi: "viewer-ui",
22724
22971
  waterHeater: "water-heater",
22725
22972
  weather: "weather",
22726
22973
  webrtcSession: "webrtc-session",
@@ -23010,6 +23257,10 @@ var CAPABILITY_ROUTER_KEYS = [
23010
23257
  key: "logDestination",
23011
23258
  name: "log-destination"
23012
23259
  },
23260
+ {
23261
+ key: "loginMethod",
23262
+ name: "login-method"
23263
+ },
23013
23264
  {
23014
23265
  key: "mediaPlayer",
23015
23266
  name: "media-player"
@@ -23150,6 +23401,10 @@ var CAPABILITY_ROUTER_KEYS = [
23150
23401
  key: "scriptRunner",
23151
23402
  name: "script-runner"
23152
23403
  },
23404
+ {
23405
+ key: "serverManagement",
23406
+ name: "server-management"
23407
+ },
23153
23408
  {
23154
23409
  key: "settingsStore",
23155
23410
  name: "settings-store"
@@ -23246,6 +23501,10 @@ var CAPABILITY_ROUTER_KEYS = [
23246
23501
  key: "videoclips",
23247
23502
  name: "videoclips"
23248
23503
  },
23504
+ {
23505
+ key: "viewerUi",
23506
+ name: "viewer-ui"
23507
+ },
23249
23508
  {
23250
23509
  key: "waterHeater",
23251
23510
  name: "water-heater"
@@ -23351,6 +23610,7 @@ var ALL_CAPABILITY_DEFINITIONS = [
23351
23610
  localNetworkCapability,
23352
23611
  lockControlCapability,
23353
23612
  logDestinationCapability,
23613
+ loginMethodCapability,
23354
23614
  mediaPlayerCapability,
23355
23615
  meshNetworkCapability,
23356
23616
  metricsProviderCapability,
@@ -23386,6 +23646,7 @@ var ALL_CAPABILITY_DEFINITIONS = [
23386
23646
  rebootCapability,
23387
23647
  recordingCapability,
23388
23648
  scriptRunnerCapability,
23649
+ serverManagementCapability,
23389
23650
  settingsStoreCapability,
23390
23651
  smokeCapability,
23391
23652
  smtpProviderCapability,
@@ -23410,6 +23671,7 @@ var ALL_CAPABILITY_DEFINITIONS = [
23410
23671
  valveCapability,
23411
23672
  vibrationCapability,
23412
23673
  videoclipsCapability,
23674
+ require_sleep.viewerUiCapability,
23413
23675
  waterHeaterCapability,
23414
23676
  weatherCapability,
23415
23677
  webrtcSessionCapability,
@@ -25470,6 +25732,12 @@ var METHOD_ACCESS_MAP = Object.freeze({
25470
25732
  addonId: null,
25471
25733
  access: "create"
25472
25734
  },
25735
+ "loginMethod.getLoginMethods": {
25736
+ capName: "login-method",
25737
+ capScope: "system",
25738
+ addonId: null,
25739
+ access: "view"
25740
+ },
25473
25741
  "mediaPlayer.next": {
25474
25742
  capName: "media-player",
25475
25743
  capScope: "device",
@@ -26100,23 +26368,23 @@ var METHOD_ACCESS_MAP = Object.freeze({
26100
26368
  addonId: null,
26101
26369
  access: "create"
26102
26370
  },
26103
- "pipelineExecutor.deleteModel": {
26371
+ "pipelineExecutor.clearDeviceOverrides": {
26104
26372
  capName: "pipeline-executor",
26105
26373
  capScope: "system",
26106
26374
  addonId: null,
26107
26375
  access: "delete"
26108
26376
  },
26109
- "pipelineExecutor.deleteTemplate": {
26377
+ "pipelineExecutor.deleteModel": {
26110
26378
  capName: "pipeline-executor",
26111
26379
  capScope: "system",
26112
26380
  addonId: null,
26113
26381
  access: "delete"
26114
26382
  },
26115
- "pipelineExecutor.detect": {
26383
+ "pipelineExecutor.deleteTemplate": {
26116
26384
  capName: "pipeline-executor",
26117
26385
  capScope: "system",
26118
26386
  addonId: null,
26119
- access: "view"
26387
+ access: "delete"
26120
26388
  },
26121
26389
  "pipelineExecutor.downloadModel": {
26122
26390
  capName: "pipeline-executor",
@@ -26262,12 +26530,6 @@ var METHOD_ACCESS_MAP = Object.freeze({
26262
26530
  addonId: null,
26263
26531
  access: "create"
26264
26532
  },
26265
- "pipelineExecutor.resetToDefault": {
26266
- capName: "pipeline-executor",
26267
- capScope: "system",
26268
- addonId: null,
26269
- access: "delete"
26270
- },
26271
26533
  "pipelineExecutor.runAudioTest": {
26272
26534
  capName: "pipeline-executor",
26273
26535
  capScope: "system",
@@ -26328,12 +26590,6 @@ var METHOD_ACCESS_MAP = Object.freeze({
26328
26590
  addonId: null,
26329
26591
  access: "create"
26330
26592
  },
26331
- "pipelineOrchestrator.assignDecoder": {
26332
- capName: "pipeline-orchestrator",
26333
- capScope: "system",
26334
- addonId: null,
26335
- access: "create"
26336
- },
26337
26593
  "pipelineOrchestrator.assignPipeline": {
26338
26594
  capName: "pipeline-orchestrator",
26339
26595
  capScope: "system",
@@ -26412,18 +26668,6 @@ var METHOD_ACCESS_MAP = Object.freeze({
26412
26668
  addonId: null,
26413
26669
  access: "view"
26414
26670
  },
26415
- "pipelineOrchestrator.getDecoderAssignment": {
26416
- capName: "pipeline-orchestrator",
26417
- capScope: "system",
26418
- addonId: null,
26419
- access: "view"
26420
- },
26421
- "pipelineOrchestrator.getDecoderAssignments": {
26422
- capName: "pipeline-orchestrator",
26423
- capScope: "system",
26424
- addonId: null,
26425
- access: "view"
26426
- },
26427
26671
  "pipelineOrchestrator.getGlobalMetrics": {
26428
26672
  capName: "pipeline-orchestrator",
26429
26673
  capScope: "system",
@@ -26472,6 +26716,12 @@ var METHOD_ACCESS_MAP = Object.freeze({
26472
26716
  addonId: null,
26473
26717
  access: "delete"
26474
26718
  },
26719
+ "pipelineOrchestrator.resetNodePipelineDefaults": {
26720
+ capName: "pipeline-orchestrator",
26721
+ capScope: "system",
26722
+ addonId: null,
26723
+ access: "delete"
26724
+ },
26475
26725
  "pipelineOrchestrator.resolvePipeline": {
26476
26726
  capName: "pipeline-orchestrator",
26477
26727
  capScope: "system",
@@ -26544,12 +26794,6 @@ var METHOD_ACCESS_MAP = Object.freeze({
26544
26794
  addonId: null,
26545
26795
  access: "create"
26546
26796
  },
26547
- "pipelineOrchestrator.unassignDecoder": {
26548
- capName: "pipeline-orchestrator",
26549
- capScope: "system",
26550
- addonId: null,
26551
- access: "create"
26552
- },
26553
26797
  "pipelineOrchestrator.unassignPipeline": {
26554
26798
  capName: "pipeline-orchestrator",
26555
26799
  capScope: "system",
@@ -26856,6 +27100,36 @@ var METHOD_ACCESS_MAP = Object.freeze({
26856
27100
  addonId: null,
26857
27101
  access: "create"
26858
27102
  },
27103
+ "serverManagement.applyServerUpdate": {
27104
+ capName: "server-management",
27105
+ capScope: "system",
27106
+ addonId: null,
27107
+ access: "create"
27108
+ },
27109
+ "serverManagement.checkServerUpdate": {
27110
+ capName: "server-management",
27111
+ capScope: "system",
27112
+ addonId: null,
27113
+ access: "create"
27114
+ },
27115
+ "serverManagement.getServerPackageStatus": {
27116
+ capName: "server-management",
27117
+ capScope: "system",
27118
+ addonId: null,
27119
+ access: "view"
27120
+ },
27121
+ "serverManagement.restartServer": {
27122
+ capName: "server-management",
27123
+ capScope: "system",
27124
+ addonId: null,
27125
+ access: "create"
27126
+ },
27127
+ "serverManagement.rollbackServerUpdate": {
27128
+ capName: "server-management",
27129
+ capScope: "system",
27130
+ addonId: null,
27131
+ access: "create"
27132
+ },
26859
27133
  "settingsStore.count": {
26860
27134
  capName: "settings-store",
26861
27135
  capScope: "system",
@@ -27720,6 +27994,18 @@ var METHOD_ACCESS_MAP = Object.freeze({
27720
27994
  addonId: null,
27721
27995
  access: "view"
27722
27996
  },
27997
+ "viewerUi.getStaticDir": {
27998
+ capName: "viewer-ui",
27999
+ capScope: "system",
28000
+ addonId: null,
28001
+ access: "view"
28002
+ },
28003
+ "viewerUi.getVersion": {
28004
+ capName: "viewer-ui",
28005
+ capScope: "system",
28006
+ addonId: null,
28007
+ access: "view"
28008
+ },
27723
28009
  "waterHeater.setAway": {
27724
28010
  capName: "water-heater",
27725
28011
  capScope: "device",
@@ -27908,6 +28194,7 @@ var KNOWN_CAP_NAMES = [
27908
28194
  "local-network",
27909
28195
  "lock-control",
27910
28196
  "log-destination",
28197
+ "login-method",
27911
28198
  "media-player",
27912
28199
  "mesh-network",
27913
28200
  "metrics-provider",
@@ -27939,6 +28226,7 @@ var KNOWN_CAP_NAMES = [
27939
28226
  "reboot",
27940
28227
  "recording",
27941
28228
  "script-runner",
28229
+ "server-management",
27942
28230
  "settings-store",
27943
28231
  "smtp-provider",
27944
28232
  "snapshot",
@@ -27959,6 +28247,7 @@ var KNOWN_CAP_NAMES = [
27959
28247
  "vacuum-control",
27960
28248
  "valve",
27961
28249
  "videoclips",
28250
+ "viewer-ui",
27962
28251
  "water-heater",
27963
28252
  "webrtc-session",
27964
28253
  "zone-analytics",
@@ -28051,6 +28340,7 @@ var SYSTEM_CAP_NAMES = [
28051
28340
  "integrations",
28052
28341
  "local-network",
28053
28342
  "log-destination",
28343
+ "login-method",
28054
28344
  "mesh-network",
28055
28345
  "metrics-provider",
28056
28346
  "model-convert",
@@ -28067,6 +28357,7 @@ var SYSTEM_CAP_NAMES = [
28067
28357
  "plate-gallery",
28068
28358
  "platform-probe",
28069
28359
  "recording",
28360
+ "server-management",
28070
28361
  "settings-store",
28071
28362
  "smtp-provider",
28072
28363
  "sso-bridge",
@@ -28078,7 +28369,8 @@ var SYSTEM_CAP_NAMES = [
28078
28369
  "toast",
28079
28370
  "turn-provider",
28080
28371
  "user-management",
28081
- "user-passkeys"
28372
+ "user-passkeys",
28373
+ "viewer-ui"
28082
28374
  ];
28083
28375
  //#endregion
28084
28376
  //#region src/generated/scope-presets.ts
@@ -28811,12 +29103,10 @@ exports.DayNightSettingsPatchSchema = DayNightSettingsPatchSchema;
28811
29103
  exports.DayNightStatusSchema = DayNightStatusSchema;
28812
29104
  exports.DecodedAudioChunkSchema = require_sleep.DecodedAudioChunkSchema;
28813
29105
  exports.DecodedFrameSchema = require_sleep.DecodedFrameSchema;
28814
- exports.DecoderAssignmentSchema = DecoderAssignmentSchema;
28815
29106
  exports.DecoderSessionConfigSchema = DecoderSessionConfigSchema;
28816
29107
  exports.DecoderStatsSchema = DecoderStatsSchema;
28817
29108
  exports.DeleteIntegrationResultSchema = DeleteIntegrationResultSchema;
28818
29109
  exports.DetectionSourceSchema = DetectionSourceSchema;
28819
- exports.DetectorOutputSchema = DetectorOutputSchema;
28820
29110
  exports.DeviceCodeSeveritySchema = DeviceCodeSeveritySchema;
28821
29111
  exports.DeviceConfig = DeviceConfig;
28822
29112
  exports.DeviceDiscoveryStatusSchema = DeviceDiscoveryStatusSchema;
@@ -28905,6 +29195,8 @@ exports.LockStateSchema = LockStateSchema;
28905
29195
  exports.LogEntrySchema = LogEntrySchema;
28906
29196
  exports.LogLevelSchema = LogLevelSchema;
28907
29197
  exports.LogStreamEntrySchema = LogStreamEntrySchema;
29198
+ exports.LoginMethodContributionSchema = LoginMethodContributionSchema;
29199
+ exports.LoginStageEnum = LoginStageEnum;
28908
29200
  exports.MACRO_LABELS = MACRO_LABELS;
28909
29201
  exports.MAX_EXPRESSION_AST_NODES = MAX_EXPRESSION_AST_NODES;
28910
29202
  exports.MAX_EXPRESSION_BINDINGS = MAX_EXPRESSION_BINDINGS;
@@ -29050,6 +29342,7 @@ exports.RecordingStorageModeSchema = RecordingStorageModeSchema;
29050
29342
  exports.RecordingStorageUsageSchema = RecordingStorageUsageSchema;
29051
29343
  exports.RecordingTriggersSchema = RecordingTriggersSchema;
29052
29344
  exports.RecordingWeekdaySchema = RecordingWeekdaySchema;
29345
+ exports.RedirectLoginMethodSchema = RedirectLoginMethodSchema;
29053
29346
  exports.RenderedAsSchema = RenderedAsSchema;
29054
29347
  exports.ReportMotionInputSchema = ReportMotionInputSchema;
29055
29348
  exports.RingBuffer = RingBuffer;
@@ -29074,6 +29367,12 @@ exports.SearchResultSchema = SearchResultSchema;
29074
29367
  exports.SendEmailInputSchema = SendEmailInputSchema;
29075
29368
  exports.SendEmailResultSchema = SendEmailResultSchema;
29076
29369
  exports.SendResultSchema = SendResultSchema;
29370
+ exports.ServerBootModeSchema = ServerBootModeSchema;
29371
+ exports.ServerPackageStatusSchema = ServerPackageStatusSchema;
29372
+ exports.ServerRollbackInfoSchema = ServerRollbackInfoSchema;
29373
+ exports.ServerUpdateActionResultSchema = ServerUpdateActionResultSchema;
29374
+ exports.ServerUpdateCheckResultSchema = ServerUpdateCheckResultSchema;
29375
+ exports.ServerUpdateStateSchema = ServerUpdateStateSchema;
29077
29376
  exports.SettingsPatchSchema = SettingsPatchSchema;
29078
29377
  exports.SettingsRecordSchema = SettingsRecordSchema;
29079
29378
  exports.SettingsSchemaWithValuesSchema = SettingsSchemaWithValuesSchema;
@@ -29160,6 +29459,7 @@ exports.WebrtcStreamChoiceSchema = WebrtcStreamChoiceSchema;
29160
29459
  exports.WebrtcStreamTargetSchema = WebrtcStreamTargetSchema;
29161
29460
  exports.WhiteBalanceModeSchema = WhiteBalanceModeSchema;
29162
29461
  exports.WidgetHostEnum = WidgetHostEnum;
29462
+ exports.WidgetLoginMethodSchema = WidgetLoginMethodSchema;
29163
29463
  exports.WidgetMetadataSchema = WidgetMetadataSchema;
29164
29464
  exports.WidgetRemoteSchema = WidgetRemoteSchema;
29165
29465
  exports.WidgetSizeEnum = WidgetSizeEnum;
@@ -29219,6 +29519,8 @@ exports.cellsToRects = cellsToRects;
29219
29519
  exports.classifyStream = classifyStream;
29220
29520
  exports.classifyStreams = classifyStreams;
29221
29521
  exports.climateControlCapability = climateControlCapability;
29522
+ exports.collectHydratedFieldEntries = require_sleep.collectHydratedFieldEntries;
29523
+ exports.collectHydratedFieldValues = require_sleep.collectHydratedFieldValues;
29222
29524
  exports.colorCapability = colorCapability;
29223
29525
  exports.compileExpression = compileExpression;
29224
29526
  exports.compileExpressionSafe = compileExpressionSafe;
@@ -29314,6 +29616,7 @@ exports.localNetworkCapability = localNetworkCapability;
29314
29616
  exports.locationSimilarity = locationSimilarity;
29315
29617
  exports.lockControlCapability = lockControlCapability;
29316
29618
  exports.logDestinationCapability = logDestinationCapability;
29619
+ exports.loginMethodCapability = loginMethodCapability;
29317
29620
  exports.looseSchema = looseSchema;
29318
29621
  exports.makeProfileBrokerId = require_sleep.makeProfileBrokerId;
29319
29622
  exports.makeSourceBrokerId = require_sleep.makeSourceBrokerId;
@@ -29386,6 +29689,7 @@ exports.resolveCapMount = require_sleep.resolveCapMount;
29386
29689
  exports.resolveDetectionRuntime = resolveDetectionRuntime;
29387
29690
  exports.resolveDeviceProfile = resolveDeviceProfile;
29388
29691
  exports.resolveFormat = resolveFormat;
29692
+ exports.resolveHydratedFieldValue = require_sleep.resolveHydratedFieldValue;
29389
29693
  exports.resolveModelFormat = resolveModelFormat;
29390
29694
  exports.resolveRunnerId = resolveRunnerId;
29391
29695
  exports.resolveVariantModelId = resolveVariantModelId;
@@ -29395,6 +29699,7 @@ exports.scopeKey = require_sleep.scopeKey;
29395
29699
  exports.scoreRuntimes = scoreRuntimes;
29396
29700
  exports.scriptRunnerCapability = scriptRunnerCapability;
29397
29701
  exports.selectAssignedProfileSlots = require_sleep.selectAssignedProfileSlots;
29702
+ exports.serverManagementCapability = serverManagementCapability;
29398
29703
  exports.setByPath = setByPath;
29399
29704
  exports.settingsStoreCapability = settingsStoreCapability;
29400
29705
  exports.sleep = require_sleep.sleep;
@@ -29440,6 +29745,7 @@ exports.validateExpressionSource = validateExpressionSource;
29440
29745
  exports.valveCapability = valveCapability;
29441
29746
  exports.vibrationCapability = vibrationCapability;
29442
29747
  exports.videoclipsCapability = videoclipsCapability;
29748
+ exports.viewerUiCapability = require_sleep.viewerUiCapability;
29443
29749
  exports.waterHeaterCapability = waterHeaterCapability;
29444
29750
  exports.weatherCapability = weatherCapability;
29445
29751
  exports.webrtcClientHintsSchema = webrtcClientHintsSchema;