camstack 1.0.4 → 1.0.6

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.
@@ -18242,6 +18242,24 @@ var DetectorOutputSchema = external_exports.object({
18242
18242
  inferenceMs: external_exports.number(),
18243
18243
  modelId: external_exports.string()
18244
18244
  });
18245
+ var EngineProvisioningSchema = external_exports.object({
18246
+ runtimeId: external_exports.enum([
18247
+ "onnx",
18248
+ "openvino",
18249
+ "coreml"
18250
+ ]).nullable(),
18251
+ device: external_exports.string().nullable(),
18252
+ state: external_exports.enum([
18253
+ "idle",
18254
+ "installing",
18255
+ "verifying",
18256
+ "ready",
18257
+ "failed"
18258
+ ]),
18259
+ progress: external_exports.number().optional(),
18260
+ error: external_exports.string().optional(),
18261
+ nextRetryAt: external_exports.number().optional()
18262
+ });
18245
18263
  var PipelineStepInputSchema = external_exports.lazy(() => external_exports.object({
18246
18264
  addonId: external_exports.string(),
18247
18265
  modelId: external_exports.string(),
@@ -18319,6 +18337,15 @@ var pipelineExecutorCapability = {
18319
18337
  kind: "mutation",
18320
18338
  auth: "admin"
18321
18339
  }),
18340
+ /**
18341
+ * Per-node detection-engine provisioning snapshot. Returns the live
18342
+ * state of the lazy runtime-provisioning machine on `nodeId`
18343
+ * (idle / installing / verifying / ready / failed). The UI pairs this
18344
+ * one-shot query with the `pipeline.engine-provisioning` live event
18345
+ * (emitted on every transition) to drive a per-node "engine ready?"
18346
+ * indicator without polling. Phase 2.
18347
+ */
18348
+ getEngineProvisioning: method(external_exports.object({ nodeId: external_exports.string() }), EngineProvisioningSchema),
18322
18349
  getVideoPipelineSteps: method(external_exports.void(), external_exports.record(external_exports.string(), external_exports.object({
18323
18350
  modelId: external_exports.string(),
18324
18351
  settings: external_exports.record(external_exports.string(), external_exports.unknown()).readonly()
@@ -22474,7 +22501,10 @@ var AgentAddonConfigSchema = external_exports.object({
22474
22501
  modelId: external_exports.string(),
22475
22502
  settings: external_exports.record(external_exports.string(), external_exports.unknown()).readonly()
22476
22503
  });
22477
- var AgentPipelineSettingsSchema = external_exports.object({ addonDefaults: external_exports.record(external_exports.string(), AgentAddonConfigSchema).readonly() });
22504
+ var AgentPipelineSettingsSchema = external_exports.object({
22505
+ addonDefaults: external_exports.record(external_exports.string(), AgentAddonConfigSchema).readonly(),
22506
+ maxCameras: external_exports.number().int().nonnegative().nullable().default(null)
22507
+ });
22478
22508
  var CameraPipelineForAgentSchema = external_exports.object({
22479
22509
  steps: external_exports.array(PipelineStepInputSchema).readonly(),
22480
22510
  audio: external_exports.object({
@@ -22543,6 +22573,117 @@ var GlobalMetricsSchema = external_exports.object({
22543
22573
  queueDepth: external_exports.number()
22544
22574
  });
22545
22575
  var CapabilityBindingsSchema = external_exports.record(external_exports.string(), external_exports.string());
22576
+ var CameraSourceStreamSchema = external_exports.object({
22577
+ camStreamId: external_exports.string(),
22578
+ codec: external_exports.string(),
22579
+ width: external_exports.number(),
22580
+ height: external_exports.number(),
22581
+ fps: external_exports.number(),
22582
+ kind: external_exports.string()
22583
+ });
22584
+ var CameraSourceStatusSchema = external_exports.object({ streams: external_exports.array(CameraSourceStreamSchema).readonly() });
22585
+ var CameraAssignmentStatusSchema = external_exports.object({
22586
+ detectionNodeId: external_exports.string().nullable(),
22587
+ decoderNodeId: external_exports.string().nullable(),
22588
+ audioNodeId: external_exports.string().nullable(),
22589
+ pinned: external_exports.object({
22590
+ detection: external_exports.boolean(),
22591
+ decoder: external_exports.boolean(),
22592
+ audio: external_exports.boolean()
22593
+ }),
22594
+ reasons: external_exports.object({
22595
+ detection: external_exports.string().optional(),
22596
+ decoder: external_exports.string().optional(),
22597
+ audio: external_exports.string().optional()
22598
+ })
22599
+ });
22600
+ var CameraBrokerProfileSchema = external_exports.object({
22601
+ profile: external_exports.string(),
22602
+ status: external_exports.string(),
22603
+ codec: external_exports.string(),
22604
+ width: external_exports.number(),
22605
+ height: external_exports.number(),
22606
+ subscribers: external_exports.number(),
22607
+ inFps: external_exports.number(),
22608
+ outFps: external_exports.number()
22609
+ });
22610
+ var CameraBrokerStatusSchema = external_exports.object({
22611
+ profiles: external_exports.array(CameraBrokerProfileSchema).readonly(),
22612
+ webrtcSessions: external_exports.number(),
22613
+ rtspRestream: external_exports.boolean()
22614
+ });
22615
+ var CameraDecoderShmSchema = external_exports.object({
22616
+ framesWritten: external_exports.number(),
22617
+ getFrameHits: external_exports.number(),
22618
+ getFrameMisses: external_exports.number(),
22619
+ budgetMb: external_exports.number()
22620
+ });
22621
+ var CameraDecoderStatusSchema = external_exports.object({
22622
+ nodeId: external_exports.string(),
22623
+ formats: external_exports.array(external_exports.string()).readonly(),
22624
+ sessionCount: external_exports.number(),
22625
+ shm: CameraDecoderShmSchema
22626
+ });
22627
+ var CameraMotionStatusSchema = external_exports.object({
22628
+ enabled: external_exports.boolean(),
22629
+ fps: external_exports.number()
22630
+ });
22631
+ var CameraDetectionProvisioningStateSchema = external_exports.enum([
22632
+ "idle",
22633
+ "installing",
22634
+ "verifying",
22635
+ "ready",
22636
+ "failed"
22637
+ ]);
22638
+ var CameraDetectionProvisioningSchema = external_exports.object({
22639
+ state: CameraDetectionProvisioningStateSchema,
22640
+ error: external_exports.string().optional()
22641
+ });
22642
+ var CameraDetectionPhaseSchema = external_exports.enum([
22643
+ "idle",
22644
+ "watching",
22645
+ "active"
22646
+ ]);
22647
+ var CameraDetectionStatusSchema = external_exports.object({
22648
+ nodeId: external_exports.string(),
22649
+ engine: external_exports.object({
22650
+ backend: external_exports.string(),
22651
+ device: external_exports.string()
22652
+ }),
22653
+ phase: CameraDetectionPhaseSchema,
22654
+ configuredFps: external_exports.number(),
22655
+ actualFps: external_exports.number(),
22656
+ queueDepth: external_exports.number(),
22657
+ avgInferenceMs: external_exports.number(),
22658
+ provisioning: CameraDetectionProvisioningSchema
22659
+ });
22660
+ var CameraAudioStatusSchema = external_exports.object({
22661
+ nodeId: external_exports.string(),
22662
+ enabled: external_exports.boolean()
22663
+ });
22664
+ var CameraRecordingModeSchema = external_exports.enum([
22665
+ "off",
22666
+ "continuous",
22667
+ "events"
22668
+ ]);
22669
+ var CameraRecordingStatusSchema = external_exports.object({
22670
+ mode: CameraRecordingModeSchema,
22671
+ active: external_exports.boolean(),
22672
+ storageBytes: external_exports.number()
22673
+ });
22674
+ var CameraStatusSchema = external_exports.object({
22675
+ deviceId: external_exports.number(),
22676
+ assignment: CameraAssignmentStatusSchema,
22677
+ source: CameraSourceStatusSchema,
22678
+ broker: CameraBrokerStatusSchema.nullable(),
22679
+ decoder: CameraDecoderStatusSchema.nullable(),
22680
+ motion: CameraMotionStatusSchema.nullable(),
22681
+ detection: CameraDetectionStatusSchema.nullable(),
22682
+ audio: CameraAudioStatusSchema.nullable(),
22683
+ recording: CameraRecordingStatusSchema.nullable(),
22684
+ /** Unix timestamp (ms) when this snapshot was composed server-side. */
22685
+ fetchedAt: external_exports.number()
22686
+ });
22546
22687
  var pipelineOrchestratorCapability = {
22547
22688
  name: "pipeline-orchestrator",
22548
22689
  scope: "system",
@@ -22707,6 +22848,25 @@ var pipelineOrchestratorCapability = {
22707
22848
  kind: "mutation",
22708
22849
  auth: "admin"
22709
22850
  }),
22851
+ /**
22852
+ * Set the per-node camera cap for one agent.
22853
+ *
22854
+ * `maxCameras: 0` and `maxCameras: null` are both treated as unlimited
22855
+ * by the load balancer (0 is stored as-is; the balancer treats ≤0 as
22856
+ * unlimited alongside null). Pass `null` to clear an existing cap.
22857
+ * Note: the admin UI normalises 0→null before calling this method, so
22858
+ * `maxCameras: 0` only reaches the store via direct SDK or CLI calls.
22859
+ * Changes take effect immediately on the next dispatch cycle — cameras
22860
+ * currently assigned over-cap are left in place (no forced eviction),
22861
+ * but new assignments obey the updated cap.
22862
+ */
22863
+ setAgentMaxCameras: method(external_exports.object({
22864
+ agentNodeId: external_exports.string(),
22865
+ maxCameras: external_exports.number().int().nonnegative().nullable()
22866
+ }), external_exports.object({ success: external_exports.literal(true) }), {
22867
+ kind: "mutation",
22868
+ auth: "admin"
22869
+ }),
22710
22870
  /** Read one camera's settings. Null when never touched (inherits agent defaults fully). */
22711
22871
  getCameraSettings: method(external_exports.object({ deviceId: external_exports.number() }), CameraPipelineSettingsSchema.nullable()),
22712
22872
  /** Set or clear the 3-state toggle for one (camera, addonId). Pass `enabled: null` to clear and revert to agent default. */
@@ -22747,6 +22907,29 @@ var pipelineOrchestratorCapability = {
22747
22907
  deviceId: external_exports.number(),
22748
22908
  agentNodeId: external_exports.string().optional()
22749
22909
  }), CameraPipelineConfigSchema),
22910
+ /**
22911
+ * Server-composed aggregated status for a single camera.
22912
+ *
22913
+ * Fans out in parallel (bounded, per-stage graceful degradation) to
22914
+ * broker / decoder / motion / detection / audio / recording source caps
22915
+ * via `ctx.api`. A stage whose source errors or times out becomes `null`
22916
+ * in the returned payload — one slow agent never breaks the whole call.
22917
+ *
22918
+ * Intended for "on open / on camera select" snapshots. Live deltas
22919
+ * keep arriving from the existing ~1Hz events the UI already subscribes to.
22920
+ */
22921
+ getCameraStatus: method(external_exports.object({ deviceId: external_exports.number() }), CameraStatusSchema),
22922
+ /**
22923
+ * Server-composed aggregated status for multiple cameras in one call.
22924
+ *
22925
+ * `deviceIds` defaults to all cameras currently tracked by the
22926
+ * orchestrator's assignment map when omitted.
22927
+ *
22928
+ * Runs per-device composition in parallel (bounded). Use this to
22929
+ * populate the cluster assignments table and the pipeline flow overview
22930
+ * rail without issuing N parallel browser round-trips.
22931
+ */
22932
+ getCameraStatuses: method(external_exports.object({ deviceIds: external_exports.array(external_exports.number()).optional() }), external_exports.array(CameraStatusSchema).readonly()),
22750
22933
  /** List every template the operator has saved. */
22751
22934
  listTemplates: method(external_exports.void(), external_exports.array(PipelineTemplateSchema).readonly()),
22752
22935
  /** Create a new named preset from a given CameraPipelineConfig. */
@@ -26571,6 +26754,69 @@ var integrationsCapability = {
26571
26754
  })
26572
26755
  }
26573
26756
  };
26757
+ var jobKindSchema = external_exports.enum([
26758
+ "install",
26759
+ "update",
26760
+ "uninstall",
26761
+ "restart"
26762
+ ]);
26763
+ var taskPhaseSchema = external_exports.enum([
26764
+ "queued",
26765
+ "fetching",
26766
+ "staged",
26767
+ "validating",
26768
+ "applying",
26769
+ "restarting",
26770
+ "applied",
26771
+ "done",
26772
+ "failed",
26773
+ "skipped"
26774
+ ]);
26775
+ var taskTargetSchema = external_exports.enum(["framework", "addon"]);
26776
+ var taskLogEntrySchema = external_exports.object({
26777
+ tsMs: external_exports.number(),
26778
+ nodeId: external_exports.string(),
26779
+ packageName: external_exports.string(),
26780
+ phase: taskPhaseSchema,
26781
+ message: external_exports.string()
26782
+ });
26783
+ var lifecycleTaskSchema = external_exports.object({
26784
+ taskId: external_exports.string(),
26785
+ nodeId: external_exports.string(),
26786
+ packageName: external_exports.string(),
26787
+ fromVersion: external_exports.string().nullable(),
26788
+ toVersion: external_exports.string(),
26789
+ target: taskTargetSchema,
26790
+ phase: taskPhaseSchema,
26791
+ stagedPath: external_exports.string().nullable(),
26792
+ attempts: external_exports.number(),
26793
+ steps: external_exports.array(taskLogEntrySchema),
26794
+ error: external_exports.string().nullable(),
26795
+ startedAtMs: external_exports.number().nullable(),
26796
+ finishedAtMs: external_exports.number().nullable()
26797
+ });
26798
+ var lifecycleJobStateSchema = external_exports.enum([
26799
+ "running",
26800
+ "completed",
26801
+ "failed",
26802
+ "partially-failed",
26803
+ "cancelled"
26804
+ ]);
26805
+ var lifecycleJobScopeSchema = external_exports.enum([
26806
+ "single",
26807
+ "bulk",
26808
+ "cluster"
26809
+ ]);
26810
+ var lifecycleJobSchema = external_exports.object({
26811
+ jobId: external_exports.string(),
26812
+ kind: jobKindSchema,
26813
+ createdAtMs: external_exports.number(),
26814
+ createdBy: external_exports.string(),
26815
+ scope: lifecycleJobScopeSchema,
26816
+ tasks: external_exports.array(lifecycleTaskSchema),
26817
+ state: lifecycleJobStateSchema,
26818
+ schemaVersion: external_exports.literal(1)
26819
+ });
26574
26820
  var LogLevelSchema$1 = external_exports.enum([
26575
26821
  "debug",
26576
26822
  "info",
@@ -26720,7 +26966,7 @@ var BulkUpdatePhaseSchema = external_exports.enum([
26720
26966
  "restarting",
26721
26967
  "finalizing"
26722
26968
  ]);
26723
- var BulkUpdateStateSchema = external_exports.object({
26969
+ external_exports.object({
26724
26970
  id: external_exports.string(),
26725
26971
  nodeId: external_exports.string(),
26726
26972
  startedAtMs: external_exports.number(),
@@ -26938,54 +27184,6 @@ var addonsCapability = {
26938
27184
  kind: "mutation",
26939
27185
  auth: "admin"
26940
27186
  }),
26941
- /**
26942
- * Kicks off a server-side bulk update operation and returns the bulk
26943
- * id immediately. The operation runs asynchronously; observe progress
26944
- * via the `AddonsBulkUpdateProgress` event or `getBulkUpdateState`.
26945
- * Items with `isSystem: true` use `deferRestart` — the hub restarts
26946
- * ONCE at the end of the system phase, after all system packages are
26947
- * installed.
26948
- *
26949
- * `items[].version` is REQUIRED — callers must pass the resolved
26950
- * version from `listUpdates`. There is no `'latest'` default here
26951
- * (unlike `updatePackage`) to guarantee deterministic bulk rolls.
26952
- */
26953
- startBulkUpdate: method(external_exports.object({
26954
- nodeId: external_exports.string(),
26955
- items: external_exports.array(external_exports.object({
26956
- name: external_exports.string(),
26957
- version: external_exports.string(),
26958
- isSystem: external_exports.boolean()
26959
- })).readonly()
26960
- }), external_exports.object({ id: external_exports.string() }), {
26961
- kind: "mutation",
26962
- auth: "admin"
26963
- }),
26964
- /**
26965
- * Returns the current state of a bulk update by id.
26966
- * Returns `null` if the id is unknown or has been auto-cleaned
26967
- * (5 minutes after `completedAt` the record is evicted from memory).
26968
- */
26969
- getBulkUpdateState: method(external_exports.object({ id: external_exports.string() }), BulkUpdateStateSchema.nullable(), { auth: "admin" }),
26970
- /**
26971
- * Cancels an in-flight bulk update. The update loop exits after the
26972
- * currently-processing item completes — cancellation is not
26973
- * instantaneous. Has no effect once the `restarting` phase has been
26974
- * entered (the hub is already shutting down at that point).
26975
- * Returns `{ cancelled: false }` if the id is unknown, the operation
26976
- * has already completed, or the `restarting` phase is active.
26977
- */
26978
- cancelBulkUpdate: method(external_exports.object({ id: external_exports.string() }), external_exports.object({ cancelled: external_exports.boolean() }), {
26979
- kind: "mutation",
26980
- auth: "admin"
26981
- }),
26982
- /**
26983
- * Lists all currently active (non-completed) bulk updates.
26984
- * If `nodeId` is provided, filters to only bulk updates targeting
26985
- * that node. Useful for restoring an in-progress banner on a fresh
26986
- * page load when the UI reconnects mid-operation.
26987
- */
26988
- listActiveBulkUpdates: method(external_exports.object({ nodeId: external_exports.string().optional() }), external_exports.array(BulkUpdateStateSchema).readonly(), { auth: "admin" }),
26989
27187
  getVersions: method(external_exports.object({ name: external_exports.string() }), external_exports.array(PackageVersionInfoSchema).readonly()),
26990
27188
  restartAddon: method(external_exports.object({ addonId: external_exports.string() }), RestartAddonResultSchema, {
26991
27189
  kind: "mutation",
@@ -27022,6 +27220,51 @@ var addonsCapability = {
27022
27220
  auth: "admin"
27023
27221
  }),
27024
27222
  custom: method(CustomActionInputSchema, external_exports.unknown(), { kind: "mutation" }),
27223
+ /**
27224
+ * Start a lifecycle job (install / update / uninstall / restart) for one
27225
+ * or more addon packages. Returns the `jobId` immediately — the job runs
27226
+ * asynchronously. Observe progress via `EventCategory.AddonsJobProgress` /
27227
+ * `AddonsJobLog` events or poll `getJob`.
27228
+ *
27229
+ * For a single-addon update on the hub the provider also routes
27230
+ * `updatePackage` through this path so the fast swap + atomic-restart
27231
+ * path (`applyStagedAddonUpdate`) is always used.
27232
+ */
27233
+ startJob: method(external_exports.object({
27234
+ kind: external_exports.enum([
27235
+ "install",
27236
+ "update",
27237
+ "uninstall",
27238
+ "restart"
27239
+ ]),
27240
+ targets: external_exports.array(external_exports.object({
27241
+ name: external_exports.string().min(1),
27242
+ version: external_exports.string().min(1)
27243
+ })).min(1),
27244
+ nodeIds: external_exports.array(external_exports.string()).optional()
27245
+ }), external_exports.object({ jobId: external_exports.string() }), {
27246
+ kind: "mutation",
27247
+ auth: "admin"
27248
+ }),
27249
+ /**
27250
+ * Retrieve a lifecycle job by id. Returns `null` when the id is unknown
27251
+ * (e.g. evicted after the retention window).
27252
+ */
27253
+ getJob: method(external_exports.object({ jobId: external_exports.string() }), lifecycleJobSchema.nullable(), { auth: "admin" }),
27254
+ /**
27255
+ * List lifecycle jobs. When `activeOnly` is true, only jobs still in
27256
+ * `running` state are returned.
27257
+ */
27258
+ listJobs: method(external_exports.object({ activeOnly: external_exports.boolean().optional() }), external_exports.array(lifecycleJobSchema), { auth: "admin" }),
27259
+ /**
27260
+ * Cancel a lifecycle job that is queued but not yet actively running.
27261
+ * Returns `{ cancelled: false }` if the job is unknown, already in a
27262
+ * terminal state, or actively executing (cannot abort mid-flight).
27263
+ */
27264
+ cancelJob: method(external_exports.object({ jobId: external_exports.string() }), external_exports.object({ cancelled: external_exports.boolean() }), {
27265
+ kind: "mutation",
27266
+ auth: "admin"
27267
+ }),
27025
27268
  onAddonLogs: method(external_exports.object({
27026
27269
  addonId: external_exports.string(),
27027
27270
  level: LogLevelSchema$1.optional()
@@ -27078,7 +27321,7 @@ var METHOD_ACCESS_MAP = Object.freeze({
27078
27321
  addonId: null,
27079
27322
  access: "create"
27080
27323
  },
27081
- "addons.cancelBulkUpdate": {
27324
+ "addons.cancelJob": {
27082
27325
  capName: "addons",
27083
27326
  capScope: "system",
27084
27327
  addonId: null,
@@ -27108,7 +27351,7 @@ var METHOD_ACCESS_MAP = Object.freeze({
27108
27351
  addonId: null,
27109
27352
  access: "view"
27110
27353
  },
27111
- "addons.getBulkUpdateState": {
27354
+ "addons.getJob": {
27112
27355
  capName: "addons",
27113
27356
  capScope: "system",
27114
27357
  addonId: null,
@@ -27156,19 +27399,19 @@ var METHOD_ACCESS_MAP = Object.freeze({
27156
27399
  addonId: null,
27157
27400
  access: "view"
27158
27401
  },
27159
- "addons.listActiveBulkUpdates": {
27402
+ "addons.listCapabilityProviders": {
27160
27403
  capName: "addons",
27161
27404
  capScope: "system",
27162
27405
  addonId: null,
27163
27406
  access: "view"
27164
27407
  },
27165
- "addons.listCapabilityProviders": {
27408
+ "addons.listFrameworkPackages": {
27166
27409
  capName: "addons",
27167
27410
  capScope: "system",
27168
27411
  addonId: null,
27169
27412
  access: "view"
27170
27413
  },
27171
- "addons.listFrameworkPackages": {
27414
+ "addons.listJobs": {
27172
27415
  capName: "addons",
27173
27416
  capScope: "system",
27174
27417
  addonId: null,
@@ -27252,7 +27495,7 @@ var METHOD_ACCESS_MAP = Object.freeze({
27252
27495
  addonId: null,
27253
27496
  access: "create"
27254
27497
  },
27255
- "addons.startBulkUpdate": {
27498
+ "addons.startJob": {
27256
27499
  capName: "addons",
27257
27500
  capScope: "system",
27258
27501
  addonId: null,
@@ -29478,6 +29721,12 @@ var METHOD_ACCESS_MAP = Object.freeze({
29478
29721
  addonId: null,
29479
29722
  access: "view"
29480
29723
  },
29724
+ "pipelineExecutor.getEngineProvisioning": {
29725
+ capName: "pipeline-executor",
29726
+ capScope: "system",
29727
+ addonId: null,
29728
+ access: "view"
29729
+ },
29481
29730
  "pipelineExecutor.getGlobalPipelineConfig": {
29482
29731
  capName: "pipeline-executor",
29483
29732
  capScope: "system",
@@ -29682,6 +29931,18 @@ var METHOD_ACCESS_MAP = Object.freeze({
29682
29931
  addonId: null,
29683
29932
  access: "view"
29684
29933
  },
29934
+ "pipelineOrchestrator.getCameraStatus": {
29935
+ capName: "pipeline-orchestrator",
29936
+ capScope: "system",
29937
+ addonId: null,
29938
+ access: "view"
29939
+ },
29940
+ "pipelineOrchestrator.getCameraStatuses": {
29941
+ capName: "pipeline-orchestrator",
29942
+ capScope: "system",
29943
+ addonId: null,
29944
+ access: "view"
29945
+ },
29685
29946
  "pipelineOrchestrator.getCameraStepOverrides": {
29686
29947
  capName: "pipeline-orchestrator",
29687
29948
  capScope: "system",
@@ -29766,6 +30027,12 @@ var METHOD_ACCESS_MAP = Object.freeze({
29766
30027
  addonId: null,
29767
30028
  access: "create"
29768
30029
  },
30030
+ "pipelineOrchestrator.setAgentMaxCameras": {
30031
+ capName: "pipeline-orchestrator",
30032
+ capScope: "system",
30033
+ addonId: null,
30034
+ access: "create"
30035
+ },
29769
30036
  "pipelineOrchestrator.setCameraPipelineForAgent": {
29770
30037
  capName: "pipeline-orchestrator",
29771
30038
  capScope: "system",
@@ -31239,6 +31506,32 @@ var CAP_PROVIDER_KIND_MAP = Object.freeze({
31239
31506
  "network-access": "ingress",
31240
31507
  "smtp-provider": "email"
31241
31508
  });
31509
+ var frameworkSwapPackageSchema = external_exports.object({
31510
+ name: external_exports.string(),
31511
+ stagedPath: external_exports.string(),
31512
+ backupPath: external_exports.string(),
31513
+ toVersion: external_exports.string(),
31514
+ fromVersion: external_exports.string().nullable()
31515
+ });
31516
+ var pendingFrameworkSwapSchema = external_exports.object({
31517
+ jobId: external_exports.string(),
31518
+ taskId: external_exports.string(),
31519
+ packages: external_exports.array(frameworkSwapPackageSchema),
31520
+ requestedAtMs: external_exports.number(),
31521
+ schemaVersion: external_exports.literal(1)
31522
+ });
31523
+ var frameworkSwapConfirmSchema = external_exports.object({
31524
+ jobId: external_exports.string(),
31525
+ taskId: external_exports.string(),
31526
+ backups: external_exports.array(external_exports.object({
31527
+ name: external_exports.string(),
31528
+ backupPath: external_exports.string(),
31529
+ livePath: external_exports.string()
31530
+ })),
31531
+ appliedAtMs: external_exports.number(),
31532
+ bootAttempts: external_exports.number(),
31533
+ schemaVersion: external_exports.literal(1)
31534
+ });
31242
31535
  function sleep(ms) {
31243
31536
  return new Promise((resolve) => setTimeout(resolve, Math.max(0, ms)));
31244
31537
  }
package/dist/cli.js CHANGED
@@ -1,7 +1,7 @@
1
1
  #!/usr/bin/env node
2
2
  import {
3
3
  runDiscover
4
- } from "./chunk-ACMTCEYY.js";
4
+ } from "./chunk-YPXFYDJW.js";
5
5
  import "./chunk-K3NQKI34.js";
6
6
 
7
7
  // src/cli.ts
@@ -608,7 +608,7 @@ function isUnknown(_value) {
608
608
  return true;
609
609
  }
610
610
  async function resolveServerInteractive(presetNamespace) {
611
- const { discoverNodes, resolveHubFromDiscovered } = await import("./discover-WN3J572U.js");
611
+ const { discoverNodes, resolveHubFromDiscovered } = await import("./discover-ETACVQW3.js");
612
612
  if (presetNamespace) {
613
613
  const spinner4 = clack.spinner();
614
614
  spinner4.start(`Discovering hub on LAN (namespace "${presetNamespace}")`);
@@ -3,7 +3,7 @@ import {
3
3
  discoverNodes,
4
4
  resolveHubFromDiscovered,
5
5
  runDiscover
6
- } from "./chunk-ACMTCEYY.js";
6
+ } from "./chunk-YPXFYDJW.js";
7
7
  import "./chunk-K3NQKI34.js";
8
8
  export {
9
9
  discoverNodes,
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "camstack",
3
- "version": "1.0.4",
3
+ "version": "1.0.6",
4
4
  "description": "CLI tool for managing and running CamStack server",
5
5
  "keywords": [
6
6
  "camstack",