@savestate/cli 0.3.0 → 0.4.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/README.md CHANGED
@@ -32,7 +32,7 @@ npx savestate diff v3 v5 # What changed between snapshots
32
32
  - 📦 **Open archive format** — The SaveState Archive Format (SAF) is an open spec. No vendor lock-in.
33
33
  - 🔌 **Platform adapters** — Works with ChatGPT, Claude, Gemini, Clawdbot, OpenAI Assistants, and more.
34
34
  - 📊 **Incremental** — Like git — only captures what changed. Full history, tiny storage.
35
- - 💾 **Flexible storage** — Local filesystem, S3, R2, Backblaze, Dropbox, iCloud — you choose.
35
+ - 💾 **Flexible storage** — Local filesystem (free) or SaveState Cloud (Pro/Team).
36
36
  - ⏰ **Scheduled backups** — Set it and forget it. Auto-snapshot on your schedule.
37
37
  - 🖥️ **CLI-first** — Built for developers. Also has a web dashboard (coming soon).
38
38
 
@@ -158,25 +158,43 @@ savestate migrate Migration wizard between platforms
158
158
  --dry-run Preview migration plan
159
159
  ```
160
160
 
161
- ## Storage Backends
161
+ ## Storage
162
+
163
+ ### Local Storage (Free)
162
164
 
163
165
  ```bash
164
- # Local filesystem (default)
166
+ # Default snapshots stored in ~/.savestate/
165
167
  savestate config --set storage.type=local
166
168
 
167
- # Amazon S3
168
- savestate config --set storage.type=s3
169
- savestate config --set storage.options.bucket=my-savestate-backups
169
+ # Custom path (e.g., Dropbox, iCloud sync folder)
170
+ savestate config --set storage.options.path=~/Dropbox/savestate
171
+ ```
172
+
173
+ ### Cloud Storage (Pro/Team)
170
174
 
171
- # Cloudflare R2
172
- savestate config --set storage.type=r2
175
+ Cloud storage is managed through the SaveState API with server-side subscription verification:
173
176
 
174
- # Any sync folder (Dropbox, iCloud, etc.)
175
- savestate config --set storage.type=local
176
- savestate config --set storage.options.path=~/Dropbox/savestate
177
+ ```bash
178
+ # Authenticate first
179
+ savestate login
180
+
181
+ # Push local snapshots to cloud
182
+ savestate cloud push # Push latest snapshot
183
+ savestate cloud push --all # Push all snapshots
184
+
185
+ # Pull snapshots from cloud
186
+ savestate cloud pull # Pull latest
187
+ savestate cloud pull --id abc123 # Pull specific snapshot
188
+
189
+ # List cloud snapshots
190
+ savestate cloud list # Shows usage stats
177
191
  ```
178
192
 
179
- All backends receive **only encrypted data**. Zero-knowledge by design.
193
+ Cloud storage quotas:
194
+ - **Pro ($9/mo)**: 10 GB
195
+ - **Team ($29/mo)**: 100 GB
196
+
197
+ All data is **encrypted locally** before upload. Zero-knowledge by design.
180
198
 
181
199
  ## Contributing
182
200
 
package/dist/cli.js CHANGED
@@ -109,6 +109,15 @@ program
109
109
  .option('--dry-run', 'Show migration plan without making changes')
110
110
  .option('-l, --list', 'List available platforms and their capabilities')
111
111
  .action(migrateCommand);
112
+ // ─── savestate cloud ─────────────────────────────────────────
113
+ import { cloudCommand } from './commands/cloud.js';
114
+ program
115
+ .command('cloud <subcommand>')
116
+ .description('Cloud storage commands (Pro/Team)')
117
+ .option('--id <id>', 'Specific snapshot ID')
118
+ .option('--all', 'Process all snapshots')
119
+ .option('-f, --force', 'Overwrite existing files')
120
+ .action(cloudCommand);
112
121
  // ─── Parse & run ─────────────────────────────────────────────
113
122
  program.parse();
114
123
  //# sourceMappingURL=cli.js.map
package/dist/cli.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":";AAEA;;;;;;;;;;;;;GAaG;AAEH,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,EACL,WAAW,EACX,eAAe,EACf,cAAc,EACd,WAAW,EACX,WAAW,EACX,aAAa,EACb,eAAe,GAChB,MAAM,qBAAqB,CAAC;AAC7B,OAAO,EAAE,YAAY,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AAElE,MAAM,OAAO,GAAG,IAAI,OAAO,EAAE,CAAC;AAE9B,OAAO;KACJ,IAAI,CAAC,WAAW,CAAC;KACjB,WAAW,CAAC,qEAAqE,CAAC;KAClF,OAAO,CAAC,OAAO,CAAC,CAAC;AAEpB,gEAAgE;AAEhE,OAAO;KACJ,OAAO,CAAC,MAAM,CAAC;KACf,WAAW,CAAC,+CAA+C,CAAC;KAC5D,MAAM,CAAC,WAAW,CAAC,CAAC;AAEvB,gEAAgE;AAEhE,OAAO;KACJ,OAAO,CAAC,UAAU,CAAC;KACnB,WAAW,CAAC,+CAA+C,CAAC;KAC5D,MAAM,CAAC,qBAAqB,EAAE,wCAAwC,CAAC;KACvE,MAAM,CAAC,mBAAmB,EAAE,sBAAsB,CAAC;KACnD,MAAM,CAAC,yBAAyB,EAAE,uCAAuC,CAAC;KAC1E,MAAM,CAAC,2BAA2B,EAAE,8CAA8C,CAAC;KACnF,MAAM,CAAC,QAAQ,EAAE,0CAA0C,CAAC;KAC5D,MAAM,CAAC,eAAe,CAAC,CAAC;AAE3B,gEAAgE;AAEhE,OAAO;KACJ,OAAO,CAAC,uBAAuB,CAAC;KAChC,WAAW,CAAC,2CAA2C,CAAC;KACxD,MAAM,CAAC,iBAAiB,EAAE,iCAAiC,CAAC;KAC5D,MAAM,CAAC,WAAW,EAAE,oDAAoD,CAAC;KACzE,MAAM,CAAC,wBAAwB,EAAE,kEAAkE,CAAC;KACpG,MAAM,CAAC,cAAc,CAAC,CAAC;AAE1B,gEAAgE;AAEhE,OAAO;KACJ,OAAO,CAAC,MAAM,CAAC;KACf,KAAK,CAAC,IAAI,CAAC;KACX,WAAW,CAAC,oBAAoB,CAAC;KACjC,MAAM,CAAC,QAAQ,EAAE,gBAAgB,CAAC;KAClC,MAAM,CAAC,aAAa,EAAE,qCAAqC,CAAC;KAC5D,MAAM,CAAC,WAAW,CAAC,CAAC;AAEvB,gEAAgE;AAEhE,OAAO;KACJ,OAAO,CAAC,cAAc,CAAC;KACvB,WAAW,CAAC,uBAAuB,CAAC;KACpC,MAAM,CAAC,WAAW,CAAC,CAAC;AAEvB,gEAAgE;AAEhE,OAAO;KACJ,OAAO,CAAC,QAAQ,CAAC;KACjB,WAAW,CAAC,mCAAmC,CAAC;KAChD,MAAM,CAAC,mBAAmB,EAAE,oBAAoB,CAAC;KACjD,MAAM,CAAC,QAAQ,EAAE,gBAAgB,CAAC;KAClC,MAAM,CAAC,aAAa,CAAC,CAAC;AAEzB,gEAAgE;AAEhE,OAAO;KACJ,OAAO,CAAC,UAAU,CAAC;KACnB,WAAW,CAAC,kCAAkC,CAAC;KAC/C,MAAM,CAAC,eAAe,CAAC,CAAC;AAE3B,gEAAgE;AAEhE,OAAO,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AAErD,OAAO;KACJ,OAAO,CAAC,gBAAgB,CAAC;KACzB,WAAW,CAAC,6BAA6B,CAAC;KAC1C,MAAM,CAAC,eAAe,EAAE,iDAAiD,CAAC;KAC1E,MAAM,CAAC,aAAa,EAAE,iBAAiB,CAAC;KACxC,MAAM,CAAC,iBAAiB,EAAE,mCAAmC,CAAC;KAC9D,MAAM,CAAC,aAAa,CAAC,CAAC;AAEzB,gEAAgE;AAEhE,OAAO;KACJ,OAAO,CAAC,OAAO,CAAC;KAChB,WAAW,CAAC,mCAAmC,CAAC;KAChD,MAAM,CAAC,qBAAqB,EAAE,kCAAkC,CAAC;KACjE,MAAM,CAAC,YAAY,CAAC,CAAC;AAExB,gEAAgE;AAEhE,OAAO;KACJ,OAAO,CAAC,QAAQ,CAAC;KACjB,WAAW,CAAC,sBAAsB,CAAC;KACnC,MAAM,CAAC,aAAa,CAAC,CAAC;AAEzB,gEAAgE;AAEhE,OAAO,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAC;AAEzD,OAAO;KACJ,OAAO,CAAC,UAAU,CAAC;KACnB,WAAW,CAAC,gDAAgD,CAAC;KAC7D,MAAM,CAAC,wBAAwB,EAAE,yCAAyC,CAAC;KAC3E,MAAM,CAAC,eAAe,EAAE,2BAA2B,CAAC;KACpD,MAAM,CAAC,cAAc,EAAE,sBAAsB,CAAC;KAC9C,MAAM,CAAC,eAAe,CAAC,CAAC;AAE3B,gEAAgE;AAEhE,OAAO,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AAEvD,OAAO;KACJ,OAAO,CAAC,SAAS,CAAC;KAClB,WAAW,CAAC,gEAAgE,CAAC;KAC7E,MAAM,CAAC,uBAAuB,EAAE,iCAAiC,CAAC;KAClE,MAAM,CAAC,qBAAqB,EAAE,+BAA+B,CAAC;KAC9D,MAAM,CAAC,qBAAqB,EAAE,mDAAmD,CAAC;KAClF,MAAM,CAAC,WAAW,EAAE,4CAA4C,CAAC;KACjE,MAAM,CAAC,YAAY,EAAE,iDAAiD,CAAC;KACvE,MAAM,CAAC,cAAc,CAAC,CAAC;AAE1B,gEAAgE;AAEhE,OAAO,CAAC,KAAK,EAAE,CAAC"}
1
+ {"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,29 @@
1
+ /**
2
+ * savestate cloud — Cloud storage commands (Pro/Team)
3
+ *
4
+ * Manages cloud backups through the SaveState API.
5
+ * Requires Pro or Team subscription.
6
+ */
7
+ interface CloudOptions {
8
+ id?: string;
9
+ all?: boolean;
10
+ force?: boolean;
11
+ }
12
+ /**
13
+ * Push local snapshots to cloud
14
+ */
15
+ export declare function cloudPushCommand(options: CloudOptions): Promise<void>;
16
+ /**
17
+ * Pull snapshots from cloud
18
+ */
19
+ export declare function cloudPullCommand(options: CloudOptions): Promise<void>;
20
+ /**
21
+ * List cloud snapshots
22
+ */
23
+ export declare function cloudListCommand(): Promise<void>;
24
+ /**
25
+ * Main cloud command handler
26
+ */
27
+ export declare function cloudCommand(subcommand: string, options: CloudOptions): Promise<void>;
28
+ export {};
29
+ //# sourceMappingURL=cloud.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cloud.d.ts","sourceRoot":"","sources":["../../src/commands/cloud.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAiBH,UAAU,YAAY;IACpB,EAAE,CAAC,EAAE,MAAM,CAAC;IACZ,GAAG,CAAC,EAAE,OAAO,CAAC;IACd,KAAK,CAAC,EAAE,OAAO,CAAC;CACjB;AAqHD;;GAEG;AACH,wBAAsB,gBAAgB,CAAC,OAAO,EAAE,YAAY,GAAG,OAAO,CAAC,IAAI,CAAC,CAgH3E;AAED;;GAEG;AACH,wBAAsB,gBAAgB,CAAC,OAAO,EAAE,YAAY,GAAG,OAAO,CAAC,IAAI,CAAC,CAsF3E;AAED;;GAEG;AACH,wBAAsB,gBAAgB,IAAI,OAAO,CAAC,IAAI,CAAC,CA6CtD;AAED;;GAEG;AACH,wBAAsB,YAAY,CAAC,UAAU,EAAE,MAAM,EAAE,OAAO,EAAE,YAAY,GAAG,OAAO,CAAC,IAAI,CAAC,CAoB3F"}
@@ -0,0 +1,356 @@
1
+ /**
2
+ * savestate cloud — Cloud storage commands (Pro/Team)
3
+ *
4
+ * Manages cloud backups through the SaveState API.
5
+ * Requires Pro or Team subscription.
6
+ */
7
+ import chalk from 'chalk';
8
+ import ora from 'ora';
9
+ import { existsSync, readFileSync, createWriteStream, statSync } from 'node:fs';
10
+ import { join } from 'node:path';
11
+ import { pipeline } from 'node:stream/promises';
12
+ import { isInitialized, loadConfig, localConfigDir } from '../config.js';
13
+ import { loadIndex } from '../index-file.js';
14
+ /** Get the snapshots directory */
15
+ function getSnapshotsDir() {
16
+ return join(localConfigDir(), 'snapshots');
17
+ }
18
+ const API_BASE = process.env.SAVESTATE_API_URL || 'https://savestate.dev/api';
19
+ /**
20
+ * Verify subscription is Pro or Team
21
+ */
22
+ async function verifySubscription() {
23
+ const config = await loadConfig();
24
+ const extConfig = config;
25
+ const apiKey = extConfig.apiKey;
26
+ if (!apiKey) {
27
+ return { valid: false, error: 'Not logged in. Run `savestate login` first.' };
28
+ }
29
+ try {
30
+ const res = await fetch(`${API_BASE}/account`, {
31
+ headers: { Authorization: `Bearer ${apiKey}` },
32
+ });
33
+ if (!res.ok) {
34
+ return { valid: false, error: 'Could not verify subscription.' };
35
+ }
36
+ const data = await res.json();
37
+ const tier = (data.tier || 'free').toLowerCase();
38
+ const cloudStorageUsed = data.cloudStorageUsed || 0;
39
+ const cloudStorageLimit = data.cloudStorageLimit || 0;
40
+ if (tier === 'pro' || tier === 'team') {
41
+ return { valid: true, tier, cloudStorageUsed, cloudStorageLimit };
42
+ }
43
+ return {
44
+ valid: false,
45
+ tier,
46
+ error: 'Cloud storage requires a Pro or Team subscription.'
47
+ };
48
+ }
49
+ catch {
50
+ return { valid: false, error: 'Could not verify subscription. Check your internet connection.' };
51
+ }
52
+ }
53
+ /**
54
+ * Get presigned upload URL from API
55
+ */
56
+ async function getUploadUrl(snapshotId, size) {
57
+ const config = await loadConfig();
58
+ const extConfig = config;
59
+ const apiKey = extConfig.apiKey;
60
+ try {
61
+ const res = await fetch(`${API_BASE}/storage/upload-url`, {
62
+ method: 'POST',
63
+ headers: {
64
+ Authorization: `Bearer ${apiKey}`,
65
+ 'Content-Type': 'application/json',
66
+ },
67
+ body: JSON.stringify({ snapshotId, size }),
68
+ });
69
+ if (!res.ok)
70
+ return null;
71
+ return await res.json();
72
+ }
73
+ catch {
74
+ return null;
75
+ }
76
+ }
77
+ /**
78
+ * Get presigned download URL from API
79
+ */
80
+ async function getDownloadUrl(snapshotId) {
81
+ const config = await loadConfig();
82
+ const extConfig = config;
83
+ const apiKey = extConfig.apiKey;
84
+ try {
85
+ const res = await fetch(`${API_BASE}/storage/download-url?id=${snapshotId}`, {
86
+ headers: { Authorization: `Bearer ${apiKey}` },
87
+ });
88
+ if (!res.ok)
89
+ return null;
90
+ const data = await res.json();
91
+ return data.url;
92
+ }
93
+ catch {
94
+ return null;
95
+ }
96
+ }
97
+ /**
98
+ * List cloud snapshots from API
99
+ */
100
+ async function listCloudSnapshots() {
101
+ const config = await loadConfig();
102
+ const extConfig = config;
103
+ const apiKey = extConfig.apiKey;
104
+ try {
105
+ const res = await fetch(`${API_BASE}/storage/list`, {
106
+ headers: { Authorization: `Bearer ${apiKey}` },
107
+ });
108
+ if (!res.ok)
109
+ return [];
110
+ const data = await res.json();
111
+ return data.snapshots || [];
112
+ }
113
+ catch {
114
+ return [];
115
+ }
116
+ }
117
+ /**
118
+ * Push local snapshots to cloud
119
+ */
120
+ export async function cloudPushCommand(options) {
121
+ console.log();
122
+ if (!isInitialized()) {
123
+ console.log(chalk.red('✗ SaveState not initialized. Run `savestate init` first.'));
124
+ process.exit(1);
125
+ }
126
+ // Verify subscription
127
+ const spinner = ora('Verifying subscription...').start();
128
+ const sub = await verifySubscription();
129
+ if (!sub.valid) {
130
+ spinner.fail('Subscription required');
131
+ console.log();
132
+ console.log(chalk.red(` ${sub.error}`));
133
+ if (sub.tier === 'free') {
134
+ console.log();
135
+ console.log(chalk.dim(' Upgrade at: https://savestate.dev/#pricing'));
136
+ }
137
+ process.exit(1);
138
+ }
139
+ spinner.succeed(`Subscription verified (${sub.tier})`);
140
+ // Show storage usage
141
+ if (sub.cloudStorageLimit) {
142
+ const usedMB = Math.round((sub.cloudStorageUsed || 0) / 1024 / 1024);
143
+ const limitMB = Math.round(sub.cloudStorageLimit / 1024 / 1024);
144
+ console.log(chalk.dim(` Cloud storage: ${usedMB} MB / ${limitMB} MB`));
145
+ }
146
+ console.log();
147
+ // Get local snapshots
148
+ const index = await loadIndex();
149
+ const entries = index.snapshots || [];
150
+ if (entries.length === 0) {
151
+ console.log(chalk.yellow('No local snapshots to push.'));
152
+ console.log(chalk.dim(' Run `savestate snapshot` to create one.'));
153
+ process.exit(0);
154
+ }
155
+ // Filter to specific snapshot or all
156
+ let toPush = entries;
157
+ if (options.id) {
158
+ toPush = entries.filter(e => e.id === options.id || e.id.startsWith(options.id));
159
+ if (toPush.length === 0) {
160
+ console.log(chalk.red(`Snapshot not found: ${options.id}`));
161
+ process.exit(1);
162
+ }
163
+ }
164
+ else if (!options.all) {
165
+ // Default: push latest only
166
+ toPush = [entries[entries.length - 1]];
167
+ }
168
+ console.log(chalk.blue(`Pushing ${toPush.length} snapshot(s) to cloud...`));
169
+ console.log();
170
+ const snapshotsDir = getSnapshotsDir();
171
+ let success = 0;
172
+ let failed = 0;
173
+ for (const entry of toPush) {
174
+ const filePath = join(snapshotsDir, `${entry.id}.saf.enc`);
175
+ if (!existsSync(filePath)) {
176
+ console.log(chalk.yellow(` ⚠ ${entry.id.slice(0, 8)} — file not found, skipping`));
177
+ failed++;
178
+ continue;
179
+ }
180
+ const stat = statSync(filePath);
181
+ const uploadSpinner = ora(` Uploading ${entry.id.slice(0, 8)}... (${Math.round(stat.size / 1024)} KB)`).start();
182
+ try {
183
+ const uploadInfo = await getUploadUrl(entry.id, stat.size);
184
+ if (!uploadInfo) {
185
+ uploadSpinner.fail(` ${entry.id.slice(0, 8)} — failed to get upload URL`);
186
+ failed++;
187
+ continue;
188
+ }
189
+ // Upload the file
190
+ const fileBuffer = readFileSync(filePath);
191
+ const uploadRes = await fetch(uploadInfo.url, {
192
+ method: 'PUT',
193
+ body: fileBuffer,
194
+ headers: { 'Content-Type': 'application/octet-stream' },
195
+ });
196
+ if (!uploadRes.ok) {
197
+ uploadSpinner.fail(` ${entry.id.slice(0, 8)} — upload failed (${uploadRes.status})`);
198
+ failed++;
199
+ continue;
200
+ }
201
+ uploadSpinner.succeed(` ${entry.id.slice(0, 8)} — uploaded`);
202
+ success++;
203
+ }
204
+ catch (err) {
205
+ uploadSpinner.fail(` ${entry.id.slice(0, 8)} — ${err instanceof Error ? err.message : 'failed'}`);
206
+ failed++;
207
+ }
208
+ }
209
+ console.log();
210
+ if (success > 0) {
211
+ console.log(chalk.green(`✓ Pushed ${success} snapshot(s) to cloud`));
212
+ }
213
+ if (failed > 0) {
214
+ console.log(chalk.yellow(`⚠ ${failed} snapshot(s) failed`));
215
+ }
216
+ }
217
+ /**
218
+ * Pull snapshots from cloud
219
+ */
220
+ export async function cloudPullCommand(options) {
221
+ console.log();
222
+ if (!isInitialized()) {
223
+ console.log(chalk.red('✗ SaveState not initialized. Run `savestate init` first.'));
224
+ process.exit(1);
225
+ }
226
+ // Verify subscription
227
+ const spinner = ora('Verifying subscription...').start();
228
+ const sub = await verifySubscription();
229
+ if (!sub.valid) {
230
+ spinner.fail('Subscription required');
231
+ console.log();
232
+ console.log(chalk.red(` ${sub.error}`));
233
+ process.exit(1);
234
+ }
235
+ spinner.succeed(`Subscription verified (${sub.tier})`);
236
+ console.log();
237
+ // Get cloud snapshots
238
+ const listSpinner = ora('Fetching cloud snapshots...').start();
239
+ const cloudSnapshots = await listCloudSnapshots();
240
+ listSpinner.stop();
241
+ if (cloudSnapshots.length === 0) {
242
+ console.log(chalk.yellow('No snapshots in cloud storage.'));
243
+ console.log(chalk.dim(' Run `savestate cloud push` to upload snapshots.'));
244
+ process.exit(0);
245
+ }
246
+ // Filter
247
+ let toPull = cloudSnapshots;
248
+ if (options.id) {
249
+ toPull = cloudSnapshots.filter(s => s.id === options.id || s.id.startsWith(options.id));
250
+ if (toPull.length === 0) {
251
+ console.log(chalk.red(`Snapshot not found in cloud: ${options.id}`));
252
+ process.exit(1);
253
+ }
254
+ }
255
+ else if (!options.all) {
256
+ toPull = [cloudSnapshots[cloudSnapshots.length - 1]];
257
+ }
258
+ console.log(chalk.blue(`Pulling ${toPull.length} snapshot(s) from cloud...`));
259
+ console.log();
260
+ const snapshotsDir = getSnapshotsDir();
261
+ let success = 0;
262
+ for (const snap of toPull) {
263
+ const filePath = join(snapshotsDir, `${snap.id}.saf.enc`);
264
+ if (existsSync(filePath) && !options.force) {
265
+ console.log(chalk.dim(` ⏭ ${snap.id.slice(0, 8)} — already exists locally`));
266
+ continue;
267
+ }
268
+ const dlSpinner = ora(` Downloading ${snap.id.slice(0, 8)}...`).start();
269
+ try {
270
+ const url = await getDownloadUrl(snap.id);
271
+ if (!url) {
272
+ dlSpinner.fail(` ${snap.id.slice(0, 8)} — failed to get download URL`);
273
+ continue;
274
+ }
275
+ const res = await fetch(url);
276
+ if (!res.ok || !res.body) {
277
+ dlSpinner.fail(` ${snap.id.slice(0, 8)} — download failed`);
278
+ continue;
279
+ }
280
+ const fileStream = createWriteStream(filePath);
281
+ await pipeline(res.body, fileStream);
282
+ dlSpinner.succeed(` ${snap.id.slice(0, 8)} — downloaded`);
283
+ success++;
284
+ }
285
+ catch (err) {
286
+ dlSpinner.fail(` ${snap.id.slice(0, 8)} — ${err instanceof Error ? err.message : 'failed'}`);
287
+ }
288
+ }
289
+ console.log();
290
+ console.log(chalk.green(`✓ Pulled ${success} snapshot(s) from cloud`));
291
+ }
292
+ /**
293
+ * List cloud snapshots
294
+ */
295
+ export async function cloudListCommand() {
296
+ console.log();
297
+ // Verify subscription
298
+ const spinner = ora('Verifying subscription...').start();
299
+ const sub = await verifySubscription();
300
+ if (!sub.valid) {
301
+ spinner.fail('Subscription required');
302
+ console.log();
303
+ console.log(chalk.red(` ${sub.error}`));
304
+ process.exit(1);
305
+ }
306
+ spinner.text = 'Fetching cloud snapshots...';
307
+ const snapshots = await listCloudSnapshots();
308
+ spinner.stop();
309
+ console.log(chalk.blue(`Cloud Storage (${sub.tier})`));
310
+ if (sub.cloudStorageLimit) {
311
+ const usedMB = Math.round((sub.cloudStorageUsed || 0) / 1024 / 1024);
312
+ const limitMB = Math.round(sub.cloudStorageLimit / 1024 / 1024);
313
+ const pct = Math.round((sub.cloudStorageUsed || 0) / sub.cloudStorageLimit * 100);
314
+ console.log(chalk.dim(` Usage: ${usedMB} MB / ${limitMB} MB (${pct}%)`));
315
+ }
316
+ console.log();
317
+ if (snapshots.length === 0) {
318
+ console.log(chalk.yellow(' No snapshots in cloud.'));
319
+ console.log(chalk.dim(' Run `savestate cloud push` to upload.'));
320
+ return;
321
+ }
322
+ console.log(chalk.dim(' ID Size Date'));
323
+ console.log(chalk.dim(' ───────── ───────── ──────────────────'));
324
+ for (const snap of snapshots) {
325
+ const sizeKB = Math.round(snap.size / 1024);
326
+ const date = new Date(snap.createdAt).toLocaleDateString();
327
+ console.log(` ${snap.id.slice(0, 8)} ${String(sizeKB).padStart(6)} KB ${date}`);
328
+ }
329
+ console.log();
330
+ console.log(chalk.dim(` ${snapshots.length} snapshot(s) in cloud`));
331
+ }
332
+ /**
333
+ * Main cloud command handler
334
+ */
335
+ export async function cloudCommand(subcommand, options) {
336
+ switch (subcommand) {
337
+ case 'push':
338
+ await cloudPushCommand(options);
339
+ break;
340
+ case 'pull':
341
+ await cloudPullCommand(options);
342
+ break;
343
+ case 'list':
344
+ await cloudListCommand();
345
+ break;
346
+ default:
347
+ console.log(chalk.red(`Unknown cloud command: ${subcommand}`));
348
+ console.log();
349
+ console.log('Usage:');
350
+ console.log(' savestate cloud push [--id <id>] [--all] Push snapshots to cloud');
351
+ console.log(' savestate cloud pull [--id <id>] [--all] Pull snapshots from cloud');
352
+ console.log(' savestate cloud list List cloud snapshots');
353
+ process.exit(1);
354
+ }
355
+ }
356
+ //# sourceMappingURL=cloud.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cloud.js","sourceRoot":"","sources":["../../src/commands/cloud.ts"],"names":[],"mappings":"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"}
@@ -2,7 +2,7 @@
2
2
  * savestate schedule — Configure automatic backup schedules
3
3
  *
4
4
  * Uses launchd (macOS) or systemd timers (Linux) for reliable scheduling.
5
- * Requires Pro or Team tier for cloud-backed schedules.
5
+ * Requires Pro or Team subscription.
6
6
  */
7
7
  interface ScheduleOptions {
8
8
  every?: string;
@@ -1 +1 @@
1
- {"version":3,"file":"schedule.d.ts","sourceRoot":"","sources":["../../src/commands/schedule.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAUH,UAAU,eAAe;IACvB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,MAAM,CAAC,EAAE,OAAO,CAAC;CAClB;AAID,wBAAsB,eAAe,CAAC,OAAO,EAAE,eAAe,GAAG,OAAO,CAAC,IAAI,CAAC,CAyB7E"}
1
+ {"version":3,"file":"schedule.d.ts","sourceRoot":"","sources":["../../src/commands/schedule.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAYH,UAAU,eAAe;IACvB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,MAAM,CAAC,EAAE,OAAO,CAAC;CAClB;AAsCD,wBAAsB,eAAe,CAAC,OAAO,EAAE,eAAe,GAAG,OAAO,CAAC,IAAI,CAAC,CA0C7E"}
@@ -2,7 +2,7 @@
2
2
  * savestate schedule — Configure automatic backup schedules
3
3
  *
4
4
  * Uses launchd (macOS) or systemd timers (Linux) for reliable scheduling.
5
- * Requires Pro or Team tier for cloud-backed schedules.
5
+ * Requires Pro or Team subscription.
6
6
  */
7
7
  import chalk from 'chalk';
8
8
  import ora from 'ora';
@@ -10,26 +10,70 @@ import { existsSync, mkdirSync, writeFileSync, readFileSync, unlinkSync } from '
10
10
  import { join } from 'node:path';
11
11
  import { homedir, platform } from 'node:os';
12
12
  import { execSync } from 'node:child_process';
13
- import { isInitialized } from '../config.js';
13
+ import { isInitialized, loadConfig } from '../config.js';
14
+ const API_BASE = 'https://savestate.dev/api';
14
15
  const LABEL = 'dev.savestate.autobackup';
16
+ /**
17
+ * Verify subscription is Pro or Team
18
+ */
19
+ async function verifySubscription() {
20
+ const config = await loadConfig();
21
+ const extConfig = config;
22
+ const apiKey = extConfig.apiKey;
23
+ if (!apiKey) {
24
+ return { valid: false, error: 'Not logged in. Run `savestate login` first.' };
25
+ }
26
+ try {
27
+ const res = await fetch(`${API_BASE}/account`, {
28
+ headers: { Authorization: `Bearer ${apiKey}` },
29
+ });
30
+ if (!res.ok) {
31
+ return { valid: false, error: 'Invalid or expired API key. Run `savestate login` to re-authenticate.' };
32
+ }
33
+ const account = await res.json();
34
+ const tier = account.tier.toLowerCase();
35
+ if (tier === 'pro' || tier === 'team') {
36
+ return { valid: true, tier };
37
+ }
38
+ return { valid: false, tier, error: 'Scheduled backups require a Pro or Team subscription.' };
39
+ }
40
+ catch {
41
+ return { valid: false, error: 'Could not verify subscription. Check your internet connection.' };
42
+ }
43
+ }
15
44
  export async function scheduleCommand(options) {
16
45
  console.log();
17
46
  if (!isInitialized()) {
18
47
  console.log(chalk.red('✗ SaveState not initialized. Run `savestate init` first.'));
19
48
  process.exit(1);
20
49
  }
21
- // Status check
50
+ // Status check - allowed for everyone
22
51
  if (options.status || (!options.every && !options.disable)) {
23
52
  await showStatus();
24
53
  return;
25
54
  }
26
- // Disable
55
+ // Disable - allowed for everyone (in case subscription lapses)
27
56
  if (options.disable) {
28
57
  await disableSchedule();
29
58
  return;
30
59
  }
31
- // Enable with interval
60
+ // Enable with interval - requires Pro/Team
32
61
  if (options.every) {
62
+ // Verify subscription first
63
+ const spinner = ora('Verifying subscription...').start();
64
+ const { valid, tier, error } = await verifySubscription();
65
+ if (!valid) {
66
+ spinner.fail('Subscription required');
67
+ console.log();
68
+ console.log(chalk.red(` ${error}`));
69
+ if (tier === 'free') {
70
+ console.log();
71
+ console.log(chalk.dim(' Upgrade at: https://savestate.dev/#pricing'));
72
+ }
73
+ console.log();
74
+ process.exit(1);
75
+ }
76
+ spinner.succeed(`Subscription verified (${tier.toUpperCase()})`);
33
77
  await enableSchedule(options.every);
34
78
  return;
35
79
  }
@@ -1 +1 @@
1
- {"version":3,"file":"schedule.js","sourceRoot":"","sources":["../../src/commands/schedule.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"schedule.js","sourceRoot":"","sources":["../../src/commands/schedule.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,GAAG,MAAM,KAAK,CAAC;AACtB,OAAO,EAAE,UAAU,EAAE,SAAS,EAAE,aAAa,EAAE,YAAY,EAAE,UAAU,EAAE,MAAM,SAAS,CAAC;AACzF,OAAO,EAAE,IAAI,EAAW,MAAM,WAAW,CAAC;AAC1C,OAAO,EAAE,OAAO,EAAE,QAAQ,EAAE,MAAM,SAAS,CAAC;AAC5C,OAAO,EAAE,QAAQ,EAAE,MAAM,oBAAoB,CAAC;AAC9C,OAAO,EAAE,aAAa,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAEzD,MAAM,QAAQ,GAAG,2BAA2B,CAAC;AAQ7C,MAAM,KAAK,GAAG,0BAA0B,CAAC;AAEzC;;GAEG;AACH,KAAK,UAAU,kBAAkB;IAC/B,MAAM,MAAM,GAAG,MAAM,UAAU,EAAE,CAAC;IAClC,MAAM,SAAS,GAAG,MAA4C,CAAC;IAC/D,MAAM,MAAM,GAAG,SAAS,CAAC,MAA4B,CAAC;IAEtD,IAAI,CAAC,MAAM,EAAE,CAAC;QACZ,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,6CAA6C,EAAE,CAAC;IAChF,CAAC;IAED,IAAI,CAAC;QACH,MAAM,GAAG,GAAG,MAAM,KAAK,CAAC,GAAG,QAAQ,UAAU,EAAE;YAC7C,OAAO,EAAE,EAAE,aAAa,EAAE,UAAU,MAAM,EAAE,EAAE;SAC/C,CAAC,CAAC;QAEH,IAAI,CAAC,GAAG,CAAC,EAAE,EAAE,CAAC;YACZ,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,uEAAuE,EAAE,CAAC;QAC1G,CAAC;QAED,MAAM,OAAO,GAAG,MAAM,GAAG,CAAC,IAAI,EAAsB,CAAC;QACrD,MAAM,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC;QAExC,IAAI,IAAI,KAAK,KAAK,IAAI,IAAI,KAAK,MAAM,EAAE,CAAC;YACtC,OAAO,EAAE,KAAK,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC;QAC/B,CAAC;QAED,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,IAAI,EAAE,KAAK,EAAE,uDAAuD,EAAE,CAAC;IAChG,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,gEAAgE,EAAE,CAAC;IACnG,CAAC;AACH,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,eAAe,CAAC,OAAwB;IAC5D,OAAO,CAAC,GAAG,EAAE,CAAC;IAEd,IAAI,CAAC,aAAa,EAAE,EAAE,CAAC;QACrB,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,0DAA0D,CAAC,CAAC,CAAC;QACnF,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;IAED,sCAAsC;IACtC,IAAI,OAAO,CAAC,MAAM,IAAI,CAAC,CAAC,OAAO,CAAC,KAAK,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,EAAE,CAAC;QAC3D,MAAM,UAAU,EAAE,CAAC;QACnB,OAAO;IACT,CAAC;IAED,+DAA+D;IAC/D,IAAI,OAAO,CAAC,OAAO,EAAE,CAAC;QACpB,MAAM,eAAe,EAAE,CAAC;QACxB,OAAO;IACT,CAAC;IAED,2CAA2C;IAC3C,IAAI,OAAO,CAAC,KAAK,EAAE,CAAC;QAClB,4BAA4B;QAC5B,MAAM,OAAO,GAAG,GAAG,CAAC,2BAA2B,CAAC,CAAC,KAAK,EAAE,CAAC;QACzD,MAAM,EAAE,KAAK,EAAE,IAAI,EAAE,KAAK,EAAE,GAAG,MAAM,kBAAkB,EAAE,CAAC;QAE1D,IAAI,CAAC,KAAK,EAAE,CAAC;YACX,OAAO,CAAC,IAAI,CAAC,uBAAuB,CAAC,CAAC;YACtC,OAAO,CAAC,GAAG,EAAE,CAAC;YACd,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,KAAK,KAAK,EAAE,CAAC,CAAC,CAAC;YACrC,IAAI,IAAI,KAAK,MAAM,EAAE,CAAC;gBACpB,OAAO,CAAC,GAAG,EAAE,CAAC;gBACd,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,8CAA8C,CAAC,CAAC,CAAC;YACzE,CAAC;YACD,OAAO,CAAC,GAAG,EAAE,CAAC;YACd,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAClB,CAAC;QAED,OAAO,CAAC,OAAO,CAAC,0BAA0B,IAAK,CAAC,WAAW,EAAE,GAAG,CAAC,CAAC;QAClE,MAAM,cAAc,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;QACpC,OAAO;IACT,CAAC;AACH,CAAC;AAED,KAAK,UAAU,UAAU;IACvB,MAAM,EAAE,GAAG,QAAQ,EAAE,CAAC;IAEtB,IAAI,EAAE,KAAK,QAAQ,EAAE,CAAC;QACpB,wBAAwB;QACxB,MAAM,SAAS,GAAG,IAAI,CAAC,OAAO,EAAE,EAAE,SAAS,EAAE,cAAc,EAAE,GAAG,KAAK,QAAQ,CAAC,CAAC;QAE/E,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,EAAE,CAAC;YAC3B,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,MAAM,CAAC,gCAAgC,CAAC,CAAC,CAAC;YAC5D,OAAO,CAAC,GAAG,EAAE,CAAC;YACd,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,8CAA8C,CAAC,CAAC,CAAC;YACvE,OAAO,CAAC,GAAG,EAAE,CAAC;YACd,OAAO;QACT,CAAC;QAED,IAAI,CAAC;YACH,MAAM,MAAM,GAAG,QAAQ,CAAC,yBAAyB,KAAK,EAAE,EAAE,EAAE,QAAQ,EAAE,OAAO,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC;YACxF,IAAI,MAAM,EAAE,CAAC;gBACX,MAAM,KAAK,GAAG,YAAY,CAAC,SAAS,EAAE,OAAO,CAAC,CAAC;gBAC/C,MAAM,aAAa,GAAG,KAAK,CAAC,KAAK,CAAC,uDAAuD,CAAC,CAAC;gBAC3F,MAAM,QAAQ,GAAG,aAAa,CAAC,CAAC,CAAC,QAAQ,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;gBAChE,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,QAAQ,GAAG,IAAI,CAAC,CAAC;gBAE1C,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,KAAK,CAAC,8BAA8B,CAAC,CAAC,CAAC;gBACzD,OAAO,CAAC,GAAG,EAAE,CAAC;gBACd,OAAO,CAAC,GAAG,CAAC,KAAK,KAAK,CAAC,GAAG,CAAC,WAAW,CAAC,WAAW,KAAK,GAAG,CAAC,CAAC;gBAC5D,OAAO,CAAC,GAAG,CAAC,KAAK,KAAK,CAAC,GAAG,CAAC,MAAM,CAAC,UAAU,KAAK,EAAE,CAAC,CAAC;gBACrD,OAAO,CAAC,GAAG,CAAC,KAAK,KAAK,CAAC,GAAG,CAAC,QAAQ,CAAC,QAAQ,SAAS,EAAE,CAAC,CAAC;gBACzD,OAAO,CAAC,GAAG,EAAE,CAAC;gBACd,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,8DAA8D,CAAC,CAAC,CAAC;gBACvF,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,2CAA2C,CAAC,CAAC,CAAC;gBACpE,OAAO,CAAC,GAAG,EAAE,CAAC;YAChB,CAAC;QACH,CAAC;QAAC,MAAM,CAAC;YACP,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,MAAM,CAAC,kDAAkD,CAAC,CAAC,CAAC;YAC9E,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,0BAA0B,SAAS,EAAE,CAAC,CAAC,CAAC;YAC9D,OAAO,CAAC,GAAG,EAAE,CAAC;QAChB,CAAC;QACD,OAAO;IACT,CAAC;IAED,IAAI,EAAE,KAAK,OAAO,EAAE,CAAC;QACnB,8BAA8B;QAC9B,MAAM,SAAS,GAAG,IAAI,CAAC,OAAO,EAAE,EAAE,SAAS,EAAE,SAAS,EAAE,MAAM,EAAE,GAAG,KAAK,QAAQ,CAAC,CAAC;QAElF,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,EAAE,CAAC;YAC3B,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,MAAM,CAAC,gCAAgC,CAAC,CAAC,CAAC;YAC5D,OAAO,CAAC,GAAG,EAAE,CAAC;YACd,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,8CAA8C,CAAC,CAAC,CAAC;YACvE,OAAO,CAAC,GAAG,EAAE,CAAC;YACd,OAAO;QACT,CAAC;QAED,IAAI,CAAC;YACH,MAAM,MAAM,GAAG,QAAQ,CAAC,8BAA8B,KAAK,4BAA4B,EAAE,EAAE,QAAQ,EAAE,OAAO,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC;YACvH,IAAI,MAAM,KAAK,QAAQ,EAAE,CAAC;gBACxB,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,KAAK,CAAC,8BAA8B,CAAC,CAAC,CAAC;gBACzD,OAAO,CAAC,GAAG,EAAE,CAAC;gBACd,OAAO,CAAC,GAAG,CAAC,KAAK,KAAK,CAAC,GAAG,CAAC,QAAQ,CAAC,IAAI,KAAK,QAAQ,CAAC,CAAC;gBACvD,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,kCAAkC,GAAG,KAAK,GAAG,QAAQ,CAAC,CAAC,CAAC;gBAC9E,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,+BAA+B,GAAG,KAAK,CAAC,CAAC,CAAC;gBAChE,OAAO,CAAC,GAAG,EAAE,CAAC;YAChB,CAAC;iBAAM,CAAC;gBACN,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,MAAM,CAAC,kDAAkD,CAAC,CAAC,CAAC;gBAC9E,OAAO,CAAC,GAAG,EAAE,CAAC;YAChB,CAAC;QACH,CAAC;QAAC,MAAM,CAAC;YACP,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,MAAM,CAAC,sCAAsC,CAAC,CAAC,CAAC;YAClE,OAAO,CAAC,GAAG,EAAE,CAAC;QAChB,CAAC;QACD,OAAO;IACT,CAAC;IAED,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,MAAM,CAAC,wCAAwC,EAAE,EAAE,CAAC,CAAC,CAAC;IACxE,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,uDAAuD,CAAC,CAAC,CAAC;IAChF,OAAO,CAAC,GAAG,EAAE,CAAC;AAChB,CAAC;AAED,KAAK,UAAU,cAAc,CAAC,QAAgB;IAC5C,MAAM,OAAO,GAAG,aAAa,CAAC,QAAQ,CAAC,CAAC;IACxC,IAAI,CAAC,OAAO,EAAE,CAAC;QACb,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,uBAAuB,QAAQ,EAAE,CAAC,CAAC,CAAC;QAC1D,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,6BAA6B,CAAC,CAAC,CAAC;QACtD,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;IAED,MAAM,KAAK,GAAG,OAAO,GAAG,IAAI,CAAC;IAC7B,MAAM,EAAE,GAAG,QAAQ,EAAE,CAAC;IACtB,MAAM,OAAO,GAAG,GAAG,CAAC,cAAc,KAAK,sBAAsB,CAAC,CAAC,KAAK,EAAE,CAAC;IAEvE,IAAI,CAAC;QACH,IAAI,EAAE,KAAK,QAAQ,EAAE,CAAC;YACpB,MAAM,kBAAkB,CAAC,OAAO,CAAC,CAAC;QACpC,CAAC;aAAM,IAAI,EAAE,KAAK,OAAO,EAAE,CAAC;YAC1B,MAAM,kBAAkB,CAAC,OAAO,CAAC,CAAC;QACpC,CAAC;aAAM,CAAC;YACN,OAAO,CAAC,IAAI,CAAC,sCAAsC,EAAE,EAAE,CAAC,CAAC;YACzD,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,iBAAiB,IAAI,CAAC,KAAK,CAAC,OAAO,GAAG,EAAE,CAAC,6BAA6B,CAAC,CAAC,CAAC;YAC/F,OAAO;QACT,CAAC;QAED,OAAO,CAAC,OAAO,CAAC,oCAAoC,KAAK,GAAG,CAAC,CAAC;QAC9D,OAAO,CAAC,GAAG,EAAE,CAAC;QACd,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,kDAAkD,CAAC,CAAC,CAAC;QAC3E,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,oCAAoC,CAAC,CAAC,CAAC;QAC7D,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,8CAA8C,CAAC,CAAC,CAAC;QACvE,OAAO,CAAC,GAAG,EAAE,CAAC;IAChB,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,OAAO,CAAC,IAAI,CAAC,2BAA2B,CAAC,CAAC;QAC1C,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;QAC3E,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;AACH,CAAC;AAED,KAAK,UAAU,eAAe;IAC5B,MAAM,EAAE,GAAG,QAAQ,EAAE,CAAC;IACtB,MAAM,OAAO,GAAG,GAAG,CAAC,gCAAgC,CAAC,CAAC,KAAK,EAAE,CAAC;IAE9D,IAAI,CAAC;QACH,IAAI,EAAE,KAAK,QAAQ,EAAE,CAAC;YACpB,MAAM,SAAS,GAAG,IAAI,CAAC,OAAO,EAAE,EAAE,SAAS,EAAE,cAAc,EAAE,GAAG,KAAK,QAAQ,CAAC,CAAC;YAC/E,IAAI,CAAC;gBACH,QAAQ,CAAC,qBAAqB,SAAS,uBAAuB,CAAC,CAAC;YAClE,CAAC;YAAC,MAAM,CAAC,CAAC,YAAY,CAAC,CAAC;YACxB,IAAI,UAAU,CAAC,SAAS,CAAC,EAAE,CAAC;gBAC1B,UAAU,CAAC,SAAS,CAAC,CAAC;YACxB,CAAC;QACH,CAAC;aAAM,IAAI,EAAE,KAAK,OAAO,EAAE,CAAC;YAC1B,IAAI,CAAC;gBACH,QAAQ,CAAC,yBAAyB,KAAK,4BAA4B,CAAC,CAAC;gBACrE,QAAQ,CAAC,4BAA4B,KAAK,4BAA4B,CAAC,CAAC;YAC1E,CAAC;YAAC,MAAM,CAAC,CAAC,YAAY,CAAC,CAAC;YACxB,MAAM,SAAS,GAAG,IAAI,CAAC,OAAO,EAAE,EAAE,SAAS,EAAE,SAAS,EAAE,MAAM,CAAC,CAAC;YAChE,MAAM,SAAS,GAAG,IAAI,CAAC,SAAS,EAAE,GAAG,KAAK,QAAQ,CAAC,CAAC;YACpD,MAAM,WAAW,GAAG,IAAI,CAAC,SAAS,EAAE,GAAG,KAAK,UAAU,CAAC,CAAC;YACxD,IAAI,UAAU,CAAC,SAAS,CAAC;gBAAE,UAAU,CAAC,SAAS,CAAC,CAAC;YACjD,IAAI,UAAU,CAAC,WAAW,CAAC;gBAAE,UAAU,CAAC,WAAW,CAAC,CAAC;QACvD,CAAC;QAED,OAAO,CAAC,OAAO,CAAC,4BAA4B,CAAC,CAAC;QAC9C,OAAO,CAAC,GAAG,EAAE,CAAC;IAChB,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,OAAO,CAAC,IAAI,CAAC,4BAA4B,CAAC,CAAC;QAC3C,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;IAC7E,CAAC;AACH,CAAC;AAED,+DAA+D;AAE/D,KAAK,UAAU,kBAAkB,CAAC,eAAuB;IACvD,MAAM,eAAe,GAAG,IAAI,CAAC,OAAO,EAAE,EAAE,SAAS,EAAE,cAAc,CAAC,CAAC;IACnE,MAAM,SAAS,GAAG,IAAI,CAAC,eAAe,EAAE,GAAG,KAAK,QAAQ,CAAC,CAAC;IAC1D,MAAM,OAAO,GAAG,IAAI,CAAC,OAAO,EAAE,EAAE,SAAS,EAAE,MAAM,EAAE,0BAA0B,CAAC,CAAC;IAE/E,4BAA4B;IAC5B,MAAM,YAAY,GAAG,oBAAoB,EAAE,CAAC;IAE5C,MAAM,KAAK,GAAG;;;;;YAKJ,KAAK;;;cAGH,YAAY;;;;;;aAMb,eAAe;;YAEhB,OAAO,CAAC,GAAG,EAAE;;YAEb,OAAO;;YAEP,OAAO;;;;;;;;;SASV,CAAC;IAER,0BAA0B;IAC1B,IAAI,CAAC,UAAU,CAAC,eAAe,CAAC,EAAE,CAAC;QACjC,SAAS,CAAC,eAAe,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;IAClD,CAAC;IAED,6BAA6B;IAC7B,IAAI,CAAC;QACH,QAAQ,CAAC,qBAAqB,SAAS,uBAAuB,CAAC,CAAC;IAClE,CAAC;IAAC,MAAM,CAAC,CAAC,YAAY,CAAC,CAAC;IAExB,iBAAiB;IACjB,aAAa,CAAC,SAAS,EAAE,KAAK,CAAC,CAAC;IAChC,QAAQ,CAAC,mBAAmB,SAAS,GAAG,CAAC,CAAC;AAC5C,CAAC;AAED,KAAK,UAAU,kBAAkB,CAAC,eAAuB;IACvD,MAAM,SAAS,GAAG,IAAI,CAAC,OAAO,EAAE,EAAE,SAAS,EAAE,SAAS,EAAE,MAAM,CAAC,CAAC;IAChE,MAAM,SAAS,GAAG,IAAI,CAAC,SAAS,EAAE,GAAG,KAAK,QAAQ,CAAC,CAAC;IACpD,MAAM,WAAW,GAAG,IAAI,CAAC,SAAS,EAAE,GAAG,KAAK,UAAU,CAAC,CAAC;IAExD,MAAM,YAAY,GAAG,oBAAoB,EAAE,CAAC;IAC5C,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,eAAe,GAAG,IAAI,CAAC,CAAC;IAEjD,MAAM,OAAO,GAAG;;;;;mBAKC,OAAO,CAAC,GAAG,EAAE;YACpB,YAAY;CACvB,CAAC;IAEA,MAAM,KAAK,GAAG;;;;;kBAKE,KAAK;;;;;CAKtB,CAAC;IAEA,0BAA0B;IAC1B,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,EAAE,CAAC;QAC3B,SAAS,CAAC,SAAS,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;IAC5C,CAAC;IAED,cAAc;IACd,aAAa,CAAC,WAAW,EAAE,OAAO,CAAC,CAAC;IACpC,aAAa,CAAC,SAAS,EAAE,KAAK,CAAC,CAAC;IAEhC,mBAAmB;IACnB,QAAQ,CAAC,gCAAgC,CAAC,CAAC;IAC3C,QAAQ,CAAC,2BAA2B,KAAK,QAAQ,CAAC,CAAC;IACnD,QAAQ,CAAC,0BAA0B,KAAK,QAAQ,CAAC,CAAC;AACpD,CAAC;AAED,+DAA+D;AAE/D,SAAS,aAAa,CAAC,QAAgB;IACrC,MAAM,KAAK,GAAG,QAAQ,CAAC,KAAK,CAAC,iBAAiB,CAAC,CAAC;IAChD,IAAI,CAAC,KAAK;QAAE,OAAO,IAAI,CAAC;IAExB,MAAM,KAAK,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;IACjC,MAAM,IAAI,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC,WAAW,EAAE,CAAC;IAEpC,QAAQ,IAAI,EAAE,CAAC;QACb,KAAK,GAAG,CAAC,CAAC,OAAO,KAAK,GAAG,EAAE,CAAC;QAC5B,KAAK,GAAG,CAAC,CAAC,OAAO,KAAK,GAAG,IAAI,CAAC;QAC9B,KAAK,GAAG,CAAC,CAAC,OAAO,KAAK,GAAG,KAAK,CAAC;QAC/B,OAAO,CAAC,CAAC,OAAO,IAAI,CAAC;IACvB,CAAC;AACH,CAAC;AAED,SAAS,oBAAoB;IAC3B,sCAAsC;IACtC,MAAM,QAAQ,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAEjC,6CAA6C;IAC7C,IAAI,CAAC;QACH,MAAM,KAAK,GAAG,QAAQ,CAAC,qCAAqC,EAAE,EAAE,QAAQ,EAAE,OAAO,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC;QAC5F,IAAI,KAAK;YAAE,OAAO,KAAK,CAAC;IAC1B,CAAC;IAAC,MAAM,CAAC,CAAC,YAAY,CAAC,CAAC;IAExB,mBAAmB;IACnB,OAAO,eAAe,CAAC;AACzB,CAAC"}
@@ -2,10 +2,14 @@
2
2
  * Storage Backend Resolver
3
3
  *
4
4
  * Creates a storage backend instance from config.
5
+ * Cloud storage (S3/R2/B2) requires Pro or Team subscription.
5
6
  */
6
7
  import type { SaveStateConfig, StorageBackend } from '../types.js';
7
8
  /**
8
9
  * Create a storage backend from the config's storage section.
10
+ *
11
+ * Note: Direct cloud storage (s3/r2/b2) has been removed from the CLI.
12
+ * Use `savestate cloud push/pull` for cloud backups (requires Pro subscription).
9
13
  */
10
14
  export declare function resolveStorage(config: SaveStateConfig): StorageBackend;
11
15
  //# sourceMappingURL=resolve.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"resolve.d.ts","sourceRoot":"","sources":["../../src/storage/resolve.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,KAAK,EAAE,eAAe,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AAKnE;;GAEG;AACH,wBAAgB,cAAc,CAAC,MAAM,EAAE,eAAe,GAAG,cAAc,CA6BtE"}
1
+ {"version":3,"file":"resolve.d.ts","sourceRoot":"","sources":["../../src/storage/resolve.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,KAAK,EAAE,eAAe,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AAGnE;;;;;GAKG;AACH,wBAAgB,cAAc,CAAC,MAAM,EAAE,eAAe,GAAG,cAAc,CA2BtE"}
@@ -2,11 +2,14 @@
2
2
  * Storage Backend Resolver
3
3
  *
4
4
  * Creates a storage backend instance from config.
5
+ * Cloud storage (S3/R2/B2) requires Pro or Team subscription.
5
6
  */
6
7
  import { LocalStorageBackend } from './local.js';
7
- import { S3Storage } from './s3.js';
8
8
  /**
9
9
  * Create a storage backend from the config's storage section.
10
+ *
11
+ * Note: Direct cloud storage (s3/r2/b2) has been removed from the CLI.
12
+ * Use `savestate cloud push/pull` for cloud backups (requires Pro subscription).
10
13
  */
11
14
  export function resolveStorage(config) {
12
15
  const { type, options } = config.storage;
@@ -18,19 +21,15 @@ export function resolveStorage(config) {
18
21
  case 's3':
19
22
  case 'r2':
20
23
  case 'b2':
21
- return new S3Storage({
22
- bucket: options.bucket,
23
- endpoint: options.endpoint,
24
- region: options.region,
25
- accessKeyId: options.accessKeyId,
26
- secretAccessKey: options.secretAccessKey,
27
- prefix: options.prefix,
28
- timeoutMs: options.timeoutMs,
29
- maxRetries: options.maxRetries,
30
- });
24
+ throw new Error(`Direct cloud storage (${type}) has been removed.\n\n` +
25
+ `Cloud backups are now managed through the SaveState API:\n` +
26
+ ` savestate cloud push Push local snapshots to cloud (Pro)\n` +
27
+ ` savestate cloud pull Pull snapshots from cloud (Pro)\n` +
28
+ ` savestate cloud list List cloud snapshots (Pro)\n\n` +
29
+ `Upgrade at: https://savestate.dev/#pricing`);
31
30
  default:
32
31
  throw new Error(`Unknown storage backend: ${type}. ` +
33
- `Supported: local, s3, r2, b2.`);
32
+ `Supported: local (use 'savestate cloud' for cloud storage).`);
34
33
  }
35
34
  }
36
35
  //# sourceMappingURL=resolve.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"resolve.js","sourceRoot":"","sources":["../../src/storage/resolve.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAGH,OAAO,EAAE,mBAAmB,EAAE,MAAM,YAAY,CAAC;AACjD,OAAO,EAAE,SAAS,EAAE,MAAM,SAAS,CAAC;AAGpC;;GAEG;AACH,MAAM,UAAU,cAAc,CAAC,MAAuB;IACpD,MAAM,EAAE,IAAI,EAAE,OAAO,EAAE,GAAG,MAAM,CAAC,OAAO,CAAC;IAEzC,QAAQ,IAAI,EAAE,CAAC;QACb,KAAK,OAAO;YACV,OAAO,IAAI,mBAAmB,CAAC;gBAC7B,IAAI,EAAE,OAAO,CAAC,IAA0B;aACzC,CAAC,CAAC;QAEL,KAAK,IAAI,CAAC;QACV,KAAK,IAAI,CAAC;QACV,KAAK,IAAI;YACP,OAAO,IAAI,SAAS,CAAC;gBACnB,MAAM,EAAE,OAAO,CAAC,MAAgB;gBAChC,QAAQ,EAAE,OAAO,CAAC,QAAkB;gBACpC,MAAM,EAAE,OAAO,CAAC,MAA4B;gBAC5C,WAAW,EAAE,OAAO,CAAC,WAAiC;gBACtD,eAAe,EAAE,OAAO,CAAC,eAAqC;gBAC9D,MAAM,EAAE,OAAO,CAAC,MAA4B;gBAC5C,SAAS,EAAE,OAAO,CAAC,SAA+B;gBAClD,UAAU,EAAE,OAAO,CAAC,UAAgC;aAC1B,CAAC,CAAC;QAEhC;YACE,MAAM,IAAI,KAAK,CACb,4BAA4B,IAAI,IAAI;gBACpC,+BAA+B,CAChC,CAAC;IACN,CAAC;AACH,CAAC"}
1
+ {"version":3,"file":"resolve.js","sourceRoot":"","sources":["../../src/storage/resolve.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAGH,OAAO,EAAE,mBAAmB,EAAE,MAAM,YAAY,CAAC;AAEjD;;;;;GAKG;AACH,MAAM,UAAU,cAAc,CAAC,MAAuB;IACpD,MAAM,EAAE,IAAI,EAAE,OAAO,EAAE,GAAG,MAAM,CAAC,OAAO,CAAC;IAEzC,QAAQ,IAAI,EAAE,CAAC;QACb,KAAK,OAAO;YACV,OAAO,IAAI,mBAAmB,CAAC;gBAC7B,IAAI,EAAE,OAAO,CAAC,IAA0B;aACzC,CAAC,CAAC;QAEL,KAAK,IAAI,CAAC;QACV,KAAK,IAAI,CAAC;QACV,KAAK,IAAI;YACP,MAAM,IAAI,KAAK,CACb,yBAAyB,IAAI,yBAAyB;gBACtD,4DAA4D;gBAC5D,kEAAkE;gBAClE,8DAA8D;gBAC9D,2DAA2D;gBAC3D,4CAA4C,CAC7C,CAAC;QAEJ;YACE,MAAM,IAAI,KAAK,CACb,4BAA4B,IAAI,IAAI;gBACpC,6DAA6D,CAC9D,CAAC;IACN,CAAC;AACH,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@savestate/cli",
3
- "version": "0.3.0",
3
+ "version": "0.4.0",
4
4
  "description": "Time Machine for AI. Backup, restore, and migrate your AI identity.",
5
5
  "type": "module",
6
6
  "main": "dist/index.js",