@camstack/addon-model-studio 1.1.10 → 1.1.12

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/_stub.js CHANGED
@@ -1,5 +1,5 @@
1
1
  import "./virtualExposes-CWSi4E_g.mjs";
2
- import "./virtual_mf-REMOTE_ENTRY_ID___mfe_internal__addon_model_studio_page__remoteEntry_js-CFnAIZT4.mjs";
2
+ import "./virtual_mf-REMOTE_ENTRY_ID___mfe_internal__addon_model_studio_page__remoteEntry_js-TycbPaKa.mjs";
3
3
  import { _ as e, c as t, d as n, h as r, i, l as a, m as o, p as s, r as c, t as l, u, y as d } from "./_virtual_mf___mfe_internal__addon_model_studio_page__loadShare__react__loadShare__.js-DJDHChgO.mjs";
4
4
  import { n as f, r as p, t as m } from "./_virtual_mf___mfe_internal__addon_model_studio_page__loadShare__react_mf_1_jsx_mf_2_runtime__loadShare__.js-ds_Ehzaa.mjs";
5
5
  import { a as h, d as g, f as _, i as v, l as y, m as b, n as x, o as S, r as C, s as w, t as T, u as E } from "./_virtual_mf___mfe_internal__addon_model_studio_page__loadShare___mf_0_camstack_mf_1_types__loadShare__.js-Bnlh0TBN.mjs";
@@ -4557,7 +4557,7 @@ function Li(e) {
4557
4557
  children: "Controls coming soon"
4558
4558
  });
4559
4559
  }
4560
- V.accessories.setChildHidden.useMutation, V.accessories.getStatus.useQuery, V.addonPages.listPages.useQuery, V.addons.list.useQuery, V.addons.getLogs.useQuery, V.addons.listPackages.useQuery, V.addons.installPackage.useMutation, V.addons.installFromWorkspace.useMutation, V.addons.isWorkspaceAvailable.useQuery, V.addons.listWorkspacePackages.useQuery, V.addons.uninstallPackage.useMutation, V.addons.reloadPackages.useMutation, V.addons.searchAvailable.useQuery, V.addons.listUpdates.useQuery, V.addons.updatePackage.useMutation, V.addons.rollbackPackage.useMutation, V.addons.forceRefresh.useMutation, V.addons.restartServer.useMutation, V.addons.getLastRestart.useQuery, V.addons.listFrameworkPackages.useQuery, V.addons.listCapabilityProviders.useQuery, V.addons.setCapabilityProviderEnabled.useMutation, V.addons.getVersions.useQuery, V.addons.restartAddon.useMutation, V.addons.retryLoad.useMutation, V.addons.getAutoUpdateSettings.useQuery, V.addons.setAutoUpdateSettings.useMutation, V.addons.getAddonAutoUpdate.useQuery, V.addons.setAddonAutoUpdate.useMutation, V.addons.applyAutoUpdateToAll.useMutation, V.addons.custom.useMutation, V.addons.startJob.useMutation, V.addons.getJob.useQuery, V.addons.listJobs.useQuery, V.addons.cancelJob.useMutation, V.addons.onAddonLogs.useSubscription, V.addonSettings.getGlobalSettings.useQuery, V.addonSettings.updateGlobalSettings.useMutation, V.addonSettings.getDeviceSettings.useQuery, V.addonSettings.updateDeviceSettings.useMutation, V.addonWidgets.listWidgets.useQuery, V.airQualitySensor.getStatus.useQuery, V.alarmPanel.arm.useMutation, V.alarmPanel.disarm.useMutation, V.alarmPanel.trigger.useMutation, V.alarmPanel.getStatus.useQuery, V.alerts.emit.useMutation, V.alerts.update.useMutation, V.alerts.list.useQuery, V.alerts.getUnreadCount.useQuery, V.alerts.markRead.useMutation, V.alerts.markAllRead.useMutation, V.alerts.dismiss.useMutation, V.ambientLightSensor.getStatus.useQuery, V.audioAnalysis.resolveDeviceSettings.useQuery, V.audioAnalysis.getDeviceSettingsContribution.useQuery, V.audioAnalysis.getDeviceLiveContribution.useQuery, V.audioAnalysis.applyDeviceSettingsPatch.useMutation, V.audioAnalyzer.analyseChunk.useMutation, V.audioAnalyzer.classify.useQuery, V.audioAnalyzer.isReady.useQuery, V.audioAnalyzer.dispose.useMutation, V.audioAnalyzer.reprobeAudioEngine.useMutation, V.audioCodec.listSupportedCodecs.useQuery, V.audioCodec.canHandle.useQuery, V.audioCodec.createDecodeSession.useMutation, V.audioCodec.createEncodeSession.useMutation, V.audioCodec.closeSession.useMutation, V.audioCodec.pushEncodedFrame.useMutation, V.audioCodec.pullPcm.useQuery, V.audioCodec.pushPcm.useMutation, V.audioCodec.pullEncoded.useQuery, V.audioCodec.flushEncode.useMutation, V.audioCodec.listActiveSessions.useQuery, V.audioMetrics.getCurrentSnapshot.useQuery, V.audioMetrics.getHistory.useQuery, V.automationControl.enable.useMutation, V.automationControl.disable.useMutation, V.automationControl.trigger.useMutation, V.automationControl.getStatus.useQuery, V.backup.listDestinations.useQuery, V.backup.trigger.useMutation, V.backup.list.useQuery, V.backup.listLocations.useQuery, V.backup.getEntries.useQuery, V.backup.restore.useMutation, V.backup.delete.useMutation, V.backup.listArchives.useQuery, V.backup.upsertDestinationPolicy.useMutation, V.backup.previewSchedule.useQuery, V.battery.wakeForStream.useMutation, V.battery.getStatus.useQuery, V.binary.getStatus.useQuery, V.brightness.setBrightness.useMutation, V.brightness.getStatus.useQuery, V.broker.list.useQuery, V.broker.get.useQuery, V.broker.listProviders.useQuery, V.broker.add.useMutation, V.broker.remove.useMutation, V.broker.testConnection.useMutation, V.broker.getSettings.useQuery, V.broker.setSettings.useMutation, V.broker.getBrokerConfig.useQuery, V.broker.getSettingsSchema.useQuery, V.broker.testSettings.useMutation, V.broker.publish.useMutation, V.broker.subscribe.useMutation, V.broker.unsubscribe.useMutation, V.broker.getState.useQuery, V.broker.getStatus.useQuery, V.button.press.useMutation, V.cameraCredentials.getCredentials.useQuery, V.cameraCredentials.getStatus.useQuery, V.cameraPipelineConfig.getDeviceSettingsContribution.useQuery, V.cameraPipelineConfig.getDeviceLiveContribution.useQuery, V.cameraPipelineConfig.applyDeviceSettingsPatch.useMutation, V.cameraStreams.getCameraStreams.useQuery, V.cameraStreams.getBrokerStreams.useQuery, V.cameraStreams.getRtspEntries.useQuery, V.cameraStreams.getProfileRtspEntries.useQuery, V.cameraStreams.pickStream.useQuery, V.carbonMonoxide.getStatus.useQuery, V.climateControl.setMode.useMutation, V.climateControl.setFanMode.useMutation, V.climateControl.setPreset.useMutation, V.climateControl.setTarget.useMutation, V.climateControl.setTargetRange.useMutation, V.climateControl.setTargetHumidity.useMutation, V.climateControl.setSwingVertical.useMutation, V.climateControl.setSwingHorizontal.useMutation, V.climateControl.getStatus.useQuery, V.color.setColor.useMutation, V.color.getStatus.useQuery, V.connectivity.getStatus.useQuery, V.consumables.reset.useMutation, V.consumables.getStatus.useQuery, V.contact.getStatus.useQuery, V.control.setValue.useMutation, V.control.getStatus.useQuery, V.cover.open.useMutation, V.cover.close.useMutation, V.cover.stop.useMutation, V.cover.setPosition.useMutation, V.cover.setTiltPosition.useMutation, V.cover.getStatus.useQuery, V.dayNight.getOptions.useQuery, V.dayNight.setSettings.useMutation, V.dayNight.getStatus.useQuery, V.decoder.supportsCodec.useQuery, V.decoder.getInfo.useQuery, V.decoder.createSession.useQuery, V.decoder.destroySession.useQuery, V.decoder.pushPacket.useQuery, V.decoder.openStream.useQuery, V.decoder.pullFrames.useQuery, V.decoder.pullHandles.useQuery, V.decoder.getFrame.useQuery, V.decoder.getShmStats.useQuery, V.decoder.updateConfig.useQuery, V.decoder.getStats.useQuery, V.decoder.listActiveSessions.useQuery, V.decoder.reprobeHwaccel.useMutation, V.detectionPipeline.getDeviceSettingsContribution.useQuery, V.detectionPipeline.getDeviceLiveContribution.useQuery, V.detectionPipeline.applyDeviceSettingsPatch.useMutation, V.deviceAdoption.listCandidateFilters.useQuery, V.deviceAdoption.listCandidates.useQuery, V.deviceAdoption.getCandidate.useQuery, V.deviceAdoption.refresh.useMutation, V.deviceAdoption.adopt.useMutation, V.deviceAdoption.release.useMutation, V.deviceAdoption.resync.useMutation, V.deviceAdoption.getStatus.useQuery, V.deviceDiscovery.listDiscovered.useQuery, V.deviceDiscovery.refreshDiscovery.useMutation, V.deviceDiscovery.adoptDevice.useMutation, V.deviceDiscovery.releaseDevice.useMutation, V.deviceDiscovery.getStatus.useQuery, V.deviceExport.getStatus.useQuery, V.deviceExport.listSupportedDeviceKinds.useQuery, V.deviceExport.listExposedDevices.useQuery, V.deviceExport.exposeDevice.useMutation, V.deviceExport.unexposeDevice.useMutation, V.deviceExport.getDeviceSettingsContribution.useQuery, V.deviceExport.getDeviceLiveContribution.useQuery, V.deviceExport.applyDeviceSettingsPatch.useMutation, V.deviceManager.allocateDeviceId.useMutation, V.deviceManager.registerDevice.useMutation, V.deviceManager.removeDevice.useMutation, V.deviceManager.persistConfig.useMutation, V.deviceManager.loadConfig.useQuery, V.deviceManager.loadRuntimeState.useQuery, V.deviceManager.loadMeta.useQuery, V.deviceManager.setName.useMutation, V.deviceManager.setLocation.useMutation, V.deviceManager.setType.useMutation, V.deviceManager.setIntegrationId.useMutation, V.deviceManager.setLinkDeviceId.useMutation, V.deviceManager.setPrimaryChildEntityId.useMutation, V.deviceManager.setChildLayout.useMutation, V.deviceManager.setDeviceLinks.useMutation, V.deviceManager.setDisplay.useMutation;
4560
+ V.accessories.setChildHidden.useMutation, V.accessories.getStatus.useQuery, V.addonPages.listPages.useQuery, V.addons.list.useQuery, V.addons.getLogs.useQuery, V.addons.listPackages.useQuery, V.addons.installPackage.useMutation, V.addons.installFromWorkspace.useMutation, V.addons.isWorkspaceAvailable.useQuery, V.addons.listWorkspacePackages.useQuery, V.addons.uninstallPackage.useMutation, V.addons.reloadPackages.useMutation, V.addons.searchAvailable.useQuery, V.addons.listUpdates.useQuery, V.addons.updatePackage.useMutation, V.addons.rollbackPackage.useMutation, V.addons.forceRefresh.useMutation, V.addons.restartServer.useMutation, V.addons.getLastRestart.useQuery, V.addons.listFrameworkPackages.useQuery, V.addons.listCapabilityProviders.useQuery, V.addons.setCapabilityProviderEnabled.useMutation, V.addons.getVersions.useQuery, V.addons.restartAddon.useMutation, V.addons.retryLoad.useMutation, V.addons.getAutoUpdateSettings.useQuery, V.addons.setAutoUpdateSettings.useMutation, V.addons.getAddonAutoUpdate.useQuery, V.addons.setAddonAutoUpdate.useMutation, V.addons.applyAutoUpdateToAll.useMutation, V.addons.custom.useMutation, V.addons.startJob.useMutation, V.addons.getJob.useQuery, V.addons.listJobs.useQuery, V.addons.cancelJob.useMutation, V.addons.onAddonLogs.useSubscription, V.addonSettings.getGlobalSettings.useQuery, V.addonSettings.updateGlobalSettings.useMutation, V.addonSettings.getDeviceSettings.useQuery, V.addonSettings.updateDeviceSettings.useMutation, V.addonWidgets.listWidgets.useQuery, V.airQualitySensor.getStatus.useQuery, V.alarmPanel.arm.useMutation, V.alarmPanel.disarm.useMutation, V.alarmPanel.trigger.useMutation, V.alarmPanel.getStatus.useQuery, V.alerts.emit.useMutation, V.alerts.update.useMutation, V.alerts.list.useQuery, V.alerts.getUnreadCount.useQuery, V.alerts.markRead.useMutation, V.alerts.markAllRead.useMutation, V.alerts.dismiss.useMutation, V.ambientLightSensor.getStatus.useQuery, V.audioAnalysis.resolveDeviceSettings.useQuery, V.audioAnalysis.getDeviceSettingsContribution.useQuery, V.audioAnalysis.getDeviceLiveContribution.useQuery, V.audioAnalysis.applyDeviceSettingsPatch.useMutation, V.audioAnalyzer.analyseChunk.useMutation, V.audioAnalyzer.classify.useQuery, V.audioAnalyzer.isReady.useQuery, V.audioAnalyzer.dispose.useMutation, V.audioAnalyzer.reprobeAudioEngine.useMutation, V.audioCodec.listSupportedCodecs.useQuery, V.audioCodec.canHandle.useQuery, V.audioCodec.createDecodeSession.useMutation, V.audioCodec.createEncodeSession.useMutation, V.audioCodec.closeSession.useMutation, V.audioCodec.pushEncodedFrame.useMutation, V.audioCodec.pullPcm.useQuery, V.audioCodec.pushPcm.useMutation, V.audioCodec.pullEncoded.useQuery, V.audioCodec.flushEncode.useMutation, V.audioCodec.listActiveSessions.useQuery, V.audioMetrics.getCurrentSnapshot.useQuery, V.audioMetrics.getHistory.useQuery, V.automationControl.enable.useMutation, V.automationControl.disable.useMutation, V.automationControl.trigger.useMutation, V.automationControl.getStatus.useQuery, V.backup.listDestinations.useQuery, V.backup.trigger.useMutation, V.backup.list.useQuery, V.backup.listLocations.useQuery, V.backup.getEntries.useQuery, V.backup.restore.useMutation, V.backup.delete.useMutation, V.backup.listArchives.useQuery, V.backup.upsertDestinationPolicy.useMutation, V.backup.previewSchedule.useQuery, V.backup.listSchedules.useQuery, V.backup.upsertSchedule.useMutation, V.backup.deleteSchedule.useMutation, V.battery.wakeForStream.useMutation, V.battery.getStatus.useQuery, V.binary.getStatus.useQuery, V.brightness.setBrightness.useMutation, V.brightness.getStatus.useQuery, V.broker.list.useQuery, V.broker.get.useQuery, V.broker.listProviders.useQuery, V.broker.add.useMutation, V.broker.remove.useMutation, V.broker.testConnection.useMutation, V.broker.getSettings.useQuery, V.broker.setSettings.useMutation, V.broker.getBrokerConfig.useQuery, V.broker.getSettingsSchema.useQuery, V.broker.testSettings.useMutation, V.broker.publish.useMutation, V.broker.subscribe.useMutation, V.broker.unsubscribe.useMutation, V.broker.getState.useQuery, V.broker.getStatus.useQuery, V.button.press.useMutation, V.cameraCredentials.getCredentials.useQuery, V.cameraCredentials.getStatus.useQuery, V.cameraPipelineConfig.getDeviceSettingsContribution.useQuery, V.cameraPipelineConfig.getDeviceLiveContribution.useQuery, V.cameraPipelineConfig.applyDeviceSettingsPatch.useMutation, V.cameraStreams.getCameraStreams.useQuery, V.cameraStreams.getBrokerStreams.useQuery, V.cameraStreams.getRtspEntries.useQuery, V.cameraStreams.getProfileRtspEntries.useQuery, V.cameraStreams.pickStream.useQuery, V.carbonMonoxide.getStatus.useQuery, V.climateControl.setMode.useMutation, V.climateControl.setFanMode.useMutation, V.climateControl.setPreset.useMutation, V.climateControl.setTarget.useMutation, V.climateControl.setTargetRange.useMutation, V.climateControl.setTargetHumidity.useMutation, V.climateControl.setSwingVertical.useMutation, V.climateControl.setSwingHorizontal.useMutation, V.climateControl.getStatus.useQuery, V.color.setColor.useMutation, V.color.getStatus.useQuery, V.connectivity.getStatus.useQuery, V.consumables.reset.useMutation, V.consumables.getStatus.useQuery, V.contact.getStatus.useQuery, V.control.setValue.useMutation, V.control.getStatus.useQuery, V.cover.open.useMutation, V.cover.close.useMutation, V.cover.stop.useMutation, V.cover.setPosition.useMutation, V.cover.setTiltPosition.useMutation, V.cover.getStatus.useQuery, V.dayNight.getOptions.useQuery, V.dayNight.setSettings.useMutation, V.dayNight.getStatus.useQuery, V.decoder.supportsCodec.useQuery, V.decoder.getInfo.useQuery, V.decoder.createSession.useQuery, V.decoder.destroySession.useQuery, V.decoder.pushPacket.useQuery, V.decoder.openStream.useQuery, V.decoder.pullFrames.useQuery, V.decoder.pullHandles.useQuery, V.decoder.getFrame.useQuery, V.decoder.getShmStats.useQuery, V.decoder.updateConfig.useQuery, V.decoder.getStats.useQuery, V.decoder.listActiveSessions.useQuery, V.decoder.reprobeHwaccel.useMutation, V.detectionPipeline.getDeviceSettingsContribution.useQuery, V.detectionPipeline.getDeviceLiveContribution.useQuery, V.detectionPipeline.applyDeviceSettingsPatch.useMutation, V.deviceAdoption.listCandidateFilters.useQuery, V.deviceAdoption.listCandidates.useQuery, V.deviceAdoption.getCandidate.useQuery, V.deviceAdoption.refresh.useMutation, V.deviceAdoption.adopt.useMutation, V.deviceAdoption.release.useMutation, V.deviceAdoption.resync.useMutation, V.deviceAdoption.getStatus.useQuery, V.deviceDiscovery.listDiscovered.useQuery, V.deviceDiscovery.refreshDiscovery.useMutation, V.deviceDiscovery.adoptDevice.useMutation, V.deviceDiscovery.releaseDevice.useMutation, V.deviceDiscovery.getStatus.useQuery, V.deviceExport.getStatus.useQuery, V.deviceExport.listSupportedDeviceKinds.useQuery, V.deviceExport.listExposedDevices.useQuery, V.deviceExport.exposeDevice.useMutation, V.deviceExport.unexposeDevice.useMutation, V.deviceExport.getDeviceSettingsContribution.useQuery, V.deviceExport.getDeviceLiveContribution.useQuery, V.deviceExport.applyDeviceSettingsPatch.useMutation, V.deviceManager.allocateDeviceId.useMutation, V.deviceManager.registerDevice.useMutation, V.deviceManager.removeDevice.useMutation, V.deviceManager.persistConfig.useMutation, V.deviceManager.loadConfig.useQuery, V.deviceManager.loadRuntimeState.useQuery, V.deviceManager.loadMeta.useQuery, V.deviceManager.setName.useMutation, V.deviceManager.setLocation.useMutation, V.deviceManager.setType.useMutation, V.deviceManager.setIntegrationId.useMutation, V.deviceManager.setLinkDeviceId.useMutation, V.deviceManager.setPrimaryChildEntityId.useMutation, V.deviceManager.setChildLayout.useMutation, V.deviceManager.setDeviceLinks.useMutation, V.deviceManager.setDisplay.useMutation;
4561
4561
  var Ri = V.deviceManager.getRoleDisplayDefaults.useQuery;
4562
4562
  V.deviceManager.setRoleDisplayDefaults.useMutation, V.deviceManager.getWireableFields.useQuery, V.deviceManager.setRole.useMutation, V.deviceManager.applyInitialMeta.useMutation, V.deviceManager.setMetadata.useMutation, V.deviceManager.listLocations.useQuery, V.deviceManager.addLocation.useMutation, V.deviceManager.removeLocation.useMutation, V.deviceManager.setDisabled.useMutation, V.deviceManager.listPersistedByAddon.useQuery, V.deviceManager.listAll.useQuery;
4563
4563
  var zi = V.deviceManager.getDevice.useQuery;
@@ -1,9 +1,9 @@
1
- import "./virtual_mf-REMOTE_ENTRY_ID___mfe_internal__addon_model_studio_page__remoteEntry_js-CFnAIZT4.mjs";
1
+ import "./virtual_mf-REMOTE_ENTRY_ID___mfe_internal__addon_model_studio_page__remoteEntry_js-TycbPaKa.mjs";
2
2
  //#region \0virtual:mf-localSharedImportMap:__mfe_internal__addon_model_studio_page
3
3
  var e = {
4
4
  "@camstack/sdk": {
5
5
  name: "@camstack/sdk",
6
- version: "1.2.5",
6
+ version: "1.2.6",
7
7
  scope: ["default"],
8
8
  loaded: !1,
9
9
  from: "addon_model_studio_page",
@@ -18,7 +18,7 @@ var e = {
18
18
  },
19
19
  "@camstack/types": {
20
20
  name: "@camstack/types",
21
- version: "1.2.15",
21
+ version: "1.2.16",
22
22
  scope: ["default"],
23
23
  loaded: !1,
24
24
  from: "addon_model_studio_page",
@@ -33,7 +33,7 @@ var e = {
33
33
  },
34
34
  "@camstack/ui-library": {
35
35
  name: "@camstack/ui-library",
36
- version: "1.2.11",
36
+ version: "1.2.12",
37
37
  scope: ["default"],
38
38
  loaded: !1,
39
39
  from: "addon_model_studio_page",
@@ -36,7 +36,7 @@ async function r() {
36
36
  }
37
37
  },
38
38
  "@camstack/types": {
39
- version: "1.2.15",
39
+ version: "1.2.16",
40
40
  scope: "default",
41
41
  shareConfig: {
42
42
  singleton: !0,
@@ -45,7 +45,7 @@ async function r() {
45
45
  }
46
46
  },
47
47
  "@camstack/sdk": {
48
- version: "1.2.5",
48
+ version: "1.2.6",
49
49
  scope: "default",
50
50
  shareConfig: {
51
51
  singleton: !0,
@@ -81,7 +81,7 @@ async function r() {
81
81
  }
82
82
  },
83
83
  "@camstack/ui-library": {
84
- version: "1.2.11",
84
+ version: "1.2.12",
85
85
  scope: "default",
86
86
  shareConfig: {
87
87
  singleton: !0,
@@ -7566,16 +7566,23 @@ var StorageLocationDeclarationSchema = object({
7566
7566
  * Which node root the seeded `<id>:default` instance is placed under on a
7567
7567
  * FRESH install:
7568
7568
  * - `'data'` (default) — the node's data dir (`CAMSTACK_DATA` / boot dir),
7569
- * the appData volume. Right for small/durable data (backups, logs, models).
7569
+ * the appData volume. Right for small/durable data (logs, models).
7570
7570
  * - `'media'` — the dedicated media volume (`CAMSTACK_MEDIA_ROOT`) when that
7571
7571
  * env is set, else falls back to the data root. Right for bulky, hot media
7572
7572
  * (recordings, event media) that should stay off the appData disk.
7573
+ * - `'backup'` — the dedicated backup volume (`CAMSTACK_BACKUP_ROOT`, default
7574
+ * `/backups` in the image) so archives live on their own mount rather than
7575
+ * filling the appData disk. Falls back to the data root when unset.
7573
7576
  *
7574
7577
  * Only affects the seeded default's `basePath`; operators can repoint any
7575
7578
  * location afterwards, and a `defaultsTo` slot inherits its parent's root
7576
7579
  * regardless of this field. Absent (the common case) is treated as `'data'`.
7577
7580
  */
7578
- defaultRoot: _enum(["data", "media"]).optional()
7581
+ defaultRoot: _enum([
7582
+ "data",
7583
+ "media",
7584
+ "backup"
7585
+ ]).optional()
7579
7586
  });
7580
7587
  var DecoderStatsSchema = object({
7581
7588
  inputFps: number(),
@@ -14566,11 +14573,53 @@ var LocationStatSchema = object({
14566
14573
  fileCount: number(),
14567
14574
  present: boolean()
14568
14575
  });
14576
+ /**
14577
+ * A backup schedule — the N:M "entry" that binds one cron cadence to a
14578
+ * SET of destination locations. Supersedes the per-location cron on
14579
+ * `BackupDestinationPolicy`: an operator creates a schedule, picks the
14580
+ * `backups` locations it should write to, and the orchestrator fans a
14581
+ * single archive out to all of them when the cron fires.
14582
+ *
14583
+ * `retentionCount` is per-schedule (D-decision 2026-07-28): every
14584
+ * location targeted by this schedule keeps this many archives from
14585
+ * this schedule's runs.
14586
+ *
14587
+ * `dataSources` optionally narrows which top-level state locations
14588
+ * (db, addons, tls, …) are archived; omitted = the orchestrator's
14589
+ * default full set.
14590
+ */
14591
+ var BackupScheduleSchema = object({
14592
+ /** Stable id. Generated by the orchestrator on first upsert if absent. */
14593
+ id: string(),
14594
+ /** Operator-facing display name. */
14595
+ label: string(),
14596
+ /** 5-field POSIX cron. Empty = disabled cadence (kept for editing). */
14597
+ cron: string(),
14598
+ /** Master on/off toggle for the whole schedule. */
14599
+ enabled: boolean(),
14600
+ /** `backups`-location ids this schedule writes to (fan-out set). */
14601
+ locationIds: array(string()).readonly(),
14602
+ /** Archives kept per targeted location for this schedule. */
14603
+ retentionCount: number().int().min(1).max(1e3),
14604
+ /** Optional subset of source locations to include; omitted = all. */
14605
+ dataSources: array(string()).readonly().optional(),
14606
+ /** ms-epoch of last successful run. */
14607
+ lastRunAt: number().optional(),
14608
+ /** ms-epoch of next computed firing (read-only, filled on list). */
14609
+ nextRunAt: number().optional()
14610
+ });
14569
14611
  method(_void(), array(BackupDestinationInfoSchema).readonly(), { auth: "admin" }), method(object({
14570
14612
  /** Subset of registered `backup-destination` addon ids to write to. */
14571
14613
  destinations: array(string()).optional(),
14572
14614
  locations: array(string()).optional(),
14573
- label: string().optional()
14615
+ label: string().optional(),
14616
+ /**
14617
+ * Per-run retention override applied to every targeted
14618
+ * destination. Used by schedule-driven runs (per-entry
14619
+ * retention). Omitted = each destination's own policy
14620
+ * retention (manual runs).
14621
+ */
14622
+ retentionCount: number().int().min(1).max(1e3).optional()
14574
14623
  }).optional(), array(BackupEntrySchema).readonly(), {
14575
14624
  kind: "mutation",
14576
14625
  auth: "admin"
@@ -14619,7 +14668,21 @@ method(_void(), array(BackupDestinationInfoSchema).readonly(), { auth: "admin" }
14619
14668
  ok: boolean(),
14620
14669
  error: string().optional(),
14621
14670
  nextRuns: array(number()).readonly()
14622
- }));
14671
+ })), method(_void(), array(BackupScheduleSchema).readonly(), { auth: "admin" }), method(object({
14672
+ id: string().optional(),
14673
+ label: string(),
14674
+ cron: string(),
14675
+ enabled: boolean(),
14676
+ locationIds: array(string()).readonly(),
14677
+ retentionCount: number().int().min(1).max(1e3),
14678
+ dataSources: array(string()).readonly().optional()
14679
+ }), BackupScheduleSchema, {
14680
+ kind: "mutation",
14681
+ auth: "admin"
14682
+ }), method(object({ id: string() }), _void(), {
14683
+ kind: "mutation",
14684
+ auth: "admin"
14685
+ });
14623
14686
  /**
14624
14687
  * `broker` — unified pub/sub broker registry, system-scoped collection.
14625
14688
  *
@@ -21775,6 +21838,12 @@ Object.freeze({
21775
21838
  addonId: null,
21776
21839
  access: "delete"
21777
21840
  },
21841
+ "backup.deleteSchedule": {
21842
+ capName: "backup",
21843
+ capScope: "system",
21844
+ addonId: null,
21845
+ access: "delete"
21846
+ },
21778
21847
  "backup.getEntries": {
21779
21848
  capName: "backup",
21780
21849
  capScope: "system",
@@ -21805,6 +21874,12 @@ Object.freeze({
21805
21874
  addonId: null,
21806
21875
  access: "view"
21807
21876
  },
21877
+ "backup.listSchedules": {
21878
+ capName: "backup",
21879
+ capScope: "system",
21880
+ addonId: null,
21881
+ access: "view"
21882
+ },
21808
21883
  "backup.previewSchedule": {
21809
21884
  capName: "backup",
21810
21885
  capScope: "system",
@@ -21829,6 +21904,12 @@ Object.freeze({
21829
21904
  addonId: null,
21830
21905
  access: "create"
21831
21906
  },
21907
+ "backup.upsertSchedule": {
21908
+ capName: "backup",
21909
+ capScope: "system",
21910
+ addonId: null,
21911
+ access: "create"
21912
+ },
21832
21913
  "battery.wakeForStream": {
21833
21914
  capName: "battery",
21834
21915
  capScope: "device",
@@ -7543,16 +7543,23 @@ var StorageLocationDeclarationSchema = object({
7543
7543
  * Which node root the seeded `<id>:default` instance is placed under on a
7544
7544
  * FRESH install:
7545
7545
  * - `'data'` (default) — the node's data dir (`CAMSTACK_DATA` / boot dir),
7546
- * the appData volume. Right for small/durable data (backups, logs, models).
7546
+ * the appData volume. Right for small/durable data (logs, models).
7547
7547
  * - `'media'` — the dedicated media volume (`CAMSTACK_MEDIA_ROOT`) when that
7548
7548
  * env is set, else falls back to the data root. Right for bulky, hot media
7549
7549
  * (recordings, event media) that should stay off the appData disk.
7550
+ * - `'backup'` — the dedicated backup volume (`CAMSTACK_BACKUP_ROOT`, default
7551
+ * `/backups` in the image) so archives live on their own mount rather than
7552
+ * filling the appData disk. Falls back to the data root when unset.
7550
7553
  *
7551
7554
  * Only affects the seeded default's `basePath`; operators can repoint any
7552
7555
  * location afterwards, and a `defaultsTo` slot inherits its parent's root
7553
7556
  * regardless of this field. Absent (the common case) is treated as `'data'`.
7554
7557
  */
7555
- defaultRoot: _enum(["data", "media"]).optional()
7558
+ defaultRoot: _enum([
7559
+ "data",
7560
+ "media",
7561
+ "backup"
7562
+ ]).optional()
7556
7563
  });
7557
7564
  var DecoderStatsSchema = object({
7558
7565
  inputFps: number(),
@@ -14543,11 +14550,53 @@ var LocationStatSchema = object({
14543
14550
  fileCount: number(),
14544
14551
  present: boolean()
14545
14552
  });
14553
+ /**
14554
+ * A backup schedule — the N:M "entry" that binds one cron cadence to a
14555
+ * SET of destination locations. Supersedes the per-location cron on
14556
+ * `BackupDestinationPolicy`: an operator creates a schedule, picks the
14557
+ * `backups` locations it should write to, and the orchestrator fans a
14558
+ * single archive out to all of them when the cron fires.
14559
+ *
14560
+ * `retentionCount` is per-schedule (D-decision 2026-07-28): every
14561
+ * location targeted by this schedule keeps this many archives from
14562
+ * this schedule's runs.
14563
+ *
14564
+ * `dataSources` optionally narrows which top-level state locations
14565
+ * (db, addons, tls, …) are archived; omitted = the orchestrator's
14566
+ * default full set.
14567
+ */
14568
+ var BackupScheduleSchema = object({
14569
+ /** Stable id. Generated by the orchestrator on first upsert if absent. */
14570
+ id: string(),
14571
+ /** Operator-facing display name. */
14572
+ label: string(),
14573
+ /** 5-field POSIX cron. Empty = disabled cadence (kept for editing). */
14574
+ cron: string(),
14575
+ /** Master on/off toggle for the whole schedule. */
14576
+ enabled: boolean(),
14577
+ /** `backups`-location ids this schedule writes to (fan-out set). */
14578
+ locationIds: array(string()).readonly(),
14579
+ /** Archives kept per targeted location for this schedule. */
14580
+ retentionCount: number().int().min(1).max(1e3),
14581
+ /** Optional subset of source locations to include; omitted = all. */
14582
+ dataSources: array(string()).readonly().optional(),
14583
+ /** ms-epoch of last successful run. */
14584
+ lastRunAt: number().optional(),
14585
+ /** ms-epoch of next computed firing (read-only, filled on list). */
14586
+ nextRunAt: number().optional()
14587
+ });
14546
14588
  method(_void(), array(BackupDestinationInfoSchema).readonly(), { auth: "admin" }), method(object({
14547
14589
  /** Subset of registered `backup-destination` addon ids to write to. */
14548
14590
  destinations: array(string()).optional(),
14549
14591
  locations: array(string()).optional(),
14550
- label: string().optional()
14592
+ label: string().optional(),
14593
+ /**
14594
+ * Per-run retention override applied to every targeted
14595
+ * destination. Used by schedule-driven runs (per-entry
14596
+ * retention). Omitted = each destination's own policy
14597
+ * retention (manual runs).
14598
+ */
14599
+ retentionCount: number().int().min(1).max(1e3).optional()
14551
14600
  }).optional(), array(BackupEntrySchema).readonly(), {
14552
14601
  kind: "mutation",
14553
14602
  auth: "admin"
@@ -14596,7 +14645,21 @@ method(_void(), array(BackupDestinationInfoSchema).readonly(), { auth: "admin" }
14596
14645
  ok: boolean(),
14597
14646
  error: string().optional(),
14598
14647
  nextRuns: array(number()).readonly()
14599
- }));
14648
+ })), method(_void(), array(BackupScheduleSchema).readonly(), { auth: "admin" }), method(object({
14649
+ id: string().optional(),
14650
+ label: string(),
14651
+ cron: string(),
14652
+ enabled: boolean(),
14653
+ locationIds: array(string()).readonly(),
14654
+ retentionCount: number().int().min(1).max(1e3),
14655
+ dataSources: array(string()).readonly().optional()
14656
+ }), BackupScheduleSchema, {
14657
+ kind: "mutation",
14658
+ auth: "admin"
14659
+ }), method(object({ id: string() }), _void(), {
14660
+ kind: "mutation",
14661
+ auth: "admin"
14662
+ });
14600
14663
  /**
14601
14664
  * `broker` — unified pub/sub broker registry, system-scoped collection.
14602
14665
  *
@@ -21752,6 +21815,12 @@ Object.freeze({
21752
21815
  addonId: null,
21753
21816
  access: "delete"
21754
21817
  },
21818
+ "backup.deleteSchedule": {
21819
+ capName: "backup",
21820
+ capScope: "system",
21821
+ addonId: null,
21822
+ access: "delete"
21823
+ },
21755
21824
  "backup.getEntries": {
21756
21825
  capName: "backup",
21757
21826
  capScope: "system",
@@ -21782,6 +21851,12 @@ Object.freeze({
21782
21851
  addonId: null,
21783
21852
  access: "view"
21784
21853
  },
21854
+ "backup.listSchedules": {
21855
+ capName: "backup",
21856
+ capScope: "system",
21857
+ addonId: null,
21858
+ access: "view"
21859
+ },
21785
21860
  "backup.previewSchedule": {
21786
21861
  capName: "backup",
21787
21862
  capScope: "system",
@@ -21806,6 +21881,12 @@ Object.freeze({
21806
21881
  addonId: null,
21807
21882
  access: "create"
21808
21883
  },
21884
+ "backup.upsertSchedule": {
21885
+ capName: "backup",
21886
+ capScope: "system",
21887
+ addonId: null,
21888
+ access: "create"
21889
+ },
21809
21890
  "battery.wakeForStream": {
21810
21891
  capName: "battery",
21811
21892
  capScope: "device",
@@ -1,2 +1,2 @@
1
- import { n as e, t } from "./virtual_mf-REMOTE_ENTRY_ID___mfe_internal__addon_model_studio_page__remoteEntry_js-CFnAIZT4.mjs";
1
+ import { n as e, t } from "./virtual_mf-REMOTE_ENTRY_ID___mfe_internal__addon_model_studio_page__remoteEntry_js-TycbPaKa.mjs";
2
2
  export { t as get, e as init };
@@ -2753,7 +2753,7 @@ async function rr(e) {
2753
2753
  }
2754
2754
  }
2755
2755
  async function ir() {
2756
- return tr ||= rr(() => import("./_virtual_mf-localSharedImportMap___mfe_internal__addon_model_studio_page-BonmDEAb.mjs")).catch((e) => {
2756
+ return tr ||= rr(() => import("./_virtual_mf-localSharedImportMap___mfe_internal__addon_model_studio_page-7l9kEd0F.mjs")).catch((e) => {
2757
2757
  throw tr = void 0, e;
2758
2758
  }), tr;
2759
2759
  }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@camstack/addon-model-studio",
3
- "version": "1.1.10",
3
+ "version": "1.1.12",
4
4
  "description": "Custom detection model registry, conversion & distribution for CamStack",
5
5
  "keywords": [
6
6
  "camstack",