@serve.zone/interfaces 7.15.0 → 7.16.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/changelog.md CHANGED
@@ -1,5 +1,14 @@
1
1
  # Changelog
2
2
 
3
+ ## 2026-06-10 - 7.16.0
4
+
5
+ ### Features
6
+
7
+ - add archive pruning and external backup tier interfaces (backup)
8
+ - Add backup record metadata for cache/external tiers and offload timestamps
9
+ - Define archive retention/prune result interfaces and coreflowPruneNodeArchive typed request
10
+ - Add settings for external backup targets and node cache retention
11
+
3
12
  ## 2026-06-10 - 7.15.0
4
13
 
5
14
  ### Features
@@ -3,7 +3,7 @@
3
3
  */
4
4
  export const commitinfo = {
5
5
  name: '@serve.zone/interfaces',
6
- version: '7.15.0',
6
+ version: '7.16.0',
7
7
  description: 'Shared TypeScript interfaces and TypedRequest contracts for the serve.zone ecosystem.'
8
8
  };
9
9
  //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMDBfY29tbWl0aW5mb19kYXRhLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vdHMvMDBfY29tbWl0aW5mb19kYXRhLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOztHQUVHO0FBQ0gsTUFBTSxDQUFDLE1BQU0sVUFBVSxHQUFHO0lBQ3hCLElBQUksRUFBRSx3QkFBd0I7SUFDOUIsT0FBTyxFQUFFLFFBQVE7SUFDakIsV0FBVyxFQUFFLHVGQUF1RjtDQUNyRyxDQUFBIn0=
@@ -62,6 +62,14 @@ export interface IBackupRecord {
62
62
  trigger: TBackupTrigger;
63
63
  snapshots: TBackupSnapshot[];
64
64
  replication?: IBackupReplicationResult;
65
+ /**
66
+ * Storage tier of the replicated archive: 'cache' = the platform S3
67
+ * binding next to cloudly; 'external' = the configured long-term target
68
+ * (external S3, NFS path, SMB). Offload moves cache -> external and then
69
+ * deletes the cache copy.
70
+ */
71
+ tier?: 'cache' | 'external';
72
+ offloadedAt?: number;
65
73
  createdAt: number;
66
74
  updatedAt: number;
67
75
  completedAt?: number;
@@ -70,3 +78,17 @@ export interface IBackupRecord {
70
78
  restoreHistory?: IBackupRestoreEvent[];
71
79
  tags?: Record<string, string>;
72
80
  }
81
+ /** Retention policy understood by containerarchive prune. */
82
+ export interface IArchiveRetentionPolicy {
83
+ keepLast?: number;
84
+ keepDays?: number;
85
+ keepWeeks?: number;
86
+ keepMonths?: number;
87
+ }
88
+ export interface IArchivePruneResult {
89
+ removedSnapshots: number;
90
+ removedPacks: number;
91
+ rewrittenPacks: number;
92
+ freedBytes: number;
93
+ dryRun: boolean;
94
+ }
@@ -6,6 +6,9 @@ export interface ICloudlySettings {
6
6
  hetznerToken?: string;
7
7
  cloudflareToken?: string;
8
8
  deploymentArchiveRetentionDays?: string;
9
+ backupExternalTargetType?: string;
10
+ backupExternalTargetConfig?: string;
11
+ backupNodeCacheKeepDays?: string;
9
12
  baseosJoinToken?: string;
10
13
  corebuildWorkerUrl?: string;
11
14
  corebuildWorkerToken?: string;
@@ -1,5 +1,5 @@
1
1
  import * as plugins from '../plugins.js';
2
- import type { IBackupArchiveManifest, IBackupArchiveObject, IBackupRecord, IBackupReplicationResult, TBackupSnapshot } from '../data/backup.js';
2
+ import type { IArchivePruneResult, IArchiveRetentionPolicy, IBackupArchiveManifest, IBackupArchiveObject, IBackupRecord, IBackupReplicationResult, TBackupSnapshot } from '../data/backup.js';
3
3
  import type { IService } from '../data/service.js';
4
4
  import type { IIdentity } from '../data/user.js';
5
5
  export interface IReq_Any_Cloudly_CreateServiceBackup extends plugins.typedrequestInterfaces.implementsTR<plugins.typedrequestInterfaces.ITypedRequest, IReq_Any_Cloudly_CreateServiceBackup> {
@@ -135,3 +135,14 @@ export interface IReq_Coreflow_Cloudly_DownloadBackupArchiveObject extends plugi
135
135
  contentsBase64: string;
136
136
  };
137
137
  }
138
+ export interface IReq_Cloudly_Coreflow_PruneNodeArchive extends plugins.typedrequestInterfaces.implementsTR<plugins.typedrequestInterfaces.ITypedRequest, IReq_Cloudly_Coreflow_PruneNodeArchive> {
139
+ method: 'coreflowPruneNodeArchive';
140
+ request: {
141
+ retention: IArchiveRetentionPolicy;
142
+ dryRun?: boolean;
143
+ };
144
+ response: {
145
+ found: boolean;
146
+ result?: IArchivePruneResult;
147
+ };
148
+ }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@serve.zone/interfaces",
3
- "version": "7.15.0",
3
+ "version": "7.16.0",
4
4
  "private": false,
5
5
  "description": "Shared TypeScript interfaces and TypedRequest contracts for the serve.zone ecosystem.",
6
6
  "exports": {
@@ -3,6 +3,6 @@
3
3
  */
4
4
  export const commitinfo = {
5
5
  name: '@serve.zone/interfaces',
6
- version: '7.15.0',
6
+ version: '7.16.0',
7
7
  description: 'Shared TypeScript interfaces and TypedRequest contracts for the serve.zone ecosystem.'
8
8
  }
package/ts/data/backup.ts CHANGED
@@ -86,6 +86,14 @@ export interface IBackupRecord {
86
86
  trigger: TBackupTrigger;
87
87
  snapshots: TBackupSnapshot[];
88
88
  replication?: IBackupReplicationResult;
89
+ /**
90
+ * Storage tier of the replicated archive: 'cache' = the platform S3
91
+ * binding next to cloudly; 'external' = the configured long-term target
92
+ * (external S3, NFS path, SMB). Offload moves cache -> external and then
93
+ * deletes the cache copy.
94
+ */
95
+ tier?: 'cache' | 'external';
96
+ offloadedAt?: number;
89
97
  createdAt: number;
90
98
  updatedAt: number;
91
99
  completedAt?: number;
@@ -94,3 +102,19 @@ export interface IBackupRecord {
94
102
  restoreHistory?: IBackupRestoreEvent[];
95
103
  tags?: Record<string, string>;
96
104
  }
105
+
106
+ /** Retention policy understood by containerarchive prune. */
107
+ export interface IArchiveRetentionPolicy {
108
+ keepLast?: number;
109
+ keepDays?: number;
110
+ keepWeeks?: number;
111
+ keepMonths?: number;
112
+ }
113
+
114
+ export interface IArchivePruneResult {
115
+ removedSnapshots: number;
116
+ removedPacks: number;
117
+ rewrittenPacks: number;
118
+ freedBytes: number;
119
+ dryRun: boolean;
120
+ }
@@ -12,6 +12,18 @@ export interface ICloudlySettings {
12
12
  // Retention for archived deployment records in days (default 90)
13
13
  deploymentArchiveRetentionDays?: string;
14
14
 
15
+ // Long-term backup target. Type 's3' | 'nfs' | 'smb'; config is a JSON
16
+ // object string with the matching connection fields (s3: endpoint,
17
+ // accessKey, secretKey, bucket, port?, useSsl?, region?; nfs: path
18
+ // mounted into the cloudly container; smb: host, share, username?,
19
+ // password?, domain?, port?). Absent = no offload, backups stay on the
20
+ // cache tier.
21
+ backupExternalTargetType?: string;
22
+ backupExternalTargetConfig?: string;
23
+
24
+ // Node-local archive cache retention in days (corestore prune; default 30)
25
+ backupNodeCacheKeepDays?: string;
26
+
15
27
  // BaseOS enrollment
16
28
  baseosJoinToken?: string;
17
29
 
@@ -1,5 +1,7 @@
1
1
  import * as plugins from '../plugins.js';
2
2
  import type {
3
+ IArchivePruneResult,
4
+ IArchiveRetentionPolicy,
3
5
  IBackupArchiveManifest,
4
6
  IBackupArchiveObject,
5
7
  IBackupRecord,
@@ -196,3 +198,19 @@ extends plugins.typedrequestInterfaces.implementsTR<
196
198
  contentsBase64: string;
197
199
  };
198
200
  }
201
+
202
+ export interface IReq_Cloudly_Coreflow_PruneNodeArchive
203
+ extends plugins.typedrequestInterfaces.implementsTR<
204
+ plugins.typedrequestInterfaces.ITypedRequest,
205
+ IReq_Cloudly_Coreflow_PruneNodeArchive
206
+ > {
207
+ method: 'coreflowPruneNodeArchive';
208
+ request: {
209
+ retention: IArchiveRetentionPolicy;
210
+ dryRun?: boolean;
211
+ };
212
+ response: {
213
+ found: boolean;
214
+ result?: IArchivePruneResult;
215
+ };
216
+ }