@1claw/cli 0.34.0 → 0.34.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (44) hide show
  1. package/README.md +122 -1
  2. package/dist/src/ai-clients.d.ts +19 -0
  3. package/dist/src/ai-clients.d.ts.map +1 -0
  4. package/dist/src/ai-clients.js +218 -0
  5. package/dist/src/ai-clients.js.map +1 -0
  6. package/dist/src/commands/daemon.d.ts +3 -0
  7. package/dist/src/commands/daemon.d.ts.map +1 -0
  8. package/dist/src/commands/daemon.js +347 -0
  9. package/dist/src/commands/daemon.js.map +1 -0
  10. package/dist/src/commands/env.d.ts.map +1 -1
  11. package/dist/src/commands/env.js +122 -19
  12. package/dist/src/commands/env.js.map +1 -1
  13. package/dist/src/commands/import.d.ts +3 -0
  14. package/dist/src/commands/import.d.ts.map +1 -0
  15. package/dist/src/commands/import.js +175 -0
  16. package/dist/src/commands/import.js.map +1 -0
  17. package/dist/src/commands/local.d.ts +3 -0
  18. package/dist/src/commands/local.d.ts.map +1 -0
  19. package/dist/src/commands/local.js +505 -0
  20. package/dist/src/commands/local.js.map +1 -0
  21. package/dist/src/commands/setup.d.ts +3 -0
  22. package/dist/src/commands/setup.d.ts.map +1 -0
  23. package/dist/src/commands/setup.js +304 -0
  24. package/dist/src/commands/setup.js.map +1 -0
  25. package/dist/src/index.d.ts.map +1 -1
  26. package/dist/src/index.js +9 -0
  27. package/dist/src/index.js.map +1 -1
  28. package/dist/src/local-cache.d.ts +19 -0
  29. package/dist/src/local-cache.d.ts.map +1 -0
  30. package/dist/src/local-cache.js +131 -0
  31. package/dist/src/local-cache.js.map +1 -0
  32. package/dist/src/local-policy.d.ts +39 -0
  33. package/dist/src/local-policy.d.ts.map +1 -0
  34. package/dist/src/local-policy.js +123 -0
  35. package/dist/src/local-policy.js.map +1 -0
  36. package/dist/src/local-vault.d.ts +39 -0
  37. package/dist/src/local-vault.d.ts.map +1 -0
  38. package/dist/src/local-vault.js +166 -0
  39. package/dist/src/local-vault.js.map +1 -0
  40. package/dist/src/secret-proxy.d.ts +27 -0
  41. package/dist/src/secret-proxy.d.ts.map +1 -0
  42. package/dist/src/secret-proxy.js +73 -0
  43. package/dist/src/secret-proxy.js.map +1 -0
  44. package/package.json +1 -1
@@ -0,0 +1,505 @@
1
+ import { Command } from "commander";
2
+ import { readFileSync } from "node:fs";
3
+ import chalk from "chalk";
4
+ import inquirer from "inquirer";
5
+ import ora from "ora";
6
+ import { api } from "../client.js";
7
+ import { requireToken, resolveVaultId, handleError } from "../middleware.js";
8
+ import { printSuccess, printError, printWarning, printInfo, printTable, printKeyValue, } from "../output.js";
9
+ import { vaultExists, createVault, loadVault, saveVault, addSecret, removeSecret, getSecret, listSecrets, markSynced, getVaultPath, getVaultInfo, deleteVault, exportAsEnv, fingerprintPassphrase, } from "../local-vault.js";
10
+ const MIN_PASSPHRASE_LENGTH = 8;
11
+ async function promptPassphrase(confirm = false) {
12
+ const { passphrase } = await inquirer.prompt([
13
+ {
14
+ type: "password",
15
+ name: "passphrase",
16
+ message: "Vault passphrase:",
17
+ mask: "*",
18
+ validate: (v) => v.length >= MIN_PASSPHRASE_LENGTH
19
+ ? true
20
+ : `Passphrase must be at least ${MIN_PASSPHRASE_LENGTH} characters`,
21
+ },
22
+ ]);
23
+ if (confirm) {
24
+ const { confirmed } = await inquirer.prompt([
25
+ {
26
+ type: "password",
27
+ name: "confirmed",
28
+ message: "Confirm passphrase:",
29
+ mask: "*",
30
+ },
31
+ ]);
32
+ if (passphrase !== confirmed) {
33
+ printError("Passphrases do not match.");
34
+ process.exit(1);
35
+ }
36
+ }
37
+ return passphrase;
38
+ }
39
+ async function promptUnlock() {
40
+ const passphrase = await promptPassphrase();
41
+ try {
42
+ const vault = loadVault(passphrase);
43
+ return { vault, passphrase };
44
+ }
45
+ catch (err) {
46
+ if (err instanceof Error &&
47
+ (err.message.includes("Unsupported") || err.message.includes("bad decrypt") ||
48
+ err.message.includes("unable to authenticate") || err.message.includes("auth"))) {
49
+ printError("Wrong passphrase or corrupted vault file.");
50
+ }
51
+ else if (err instanceof Error) {
52
+ printError(err.message);
53
+ }
54
+ process.exit(1);
55
+ }
56
+ }
57
+ function maskValue(value) {
58
+ if (value.length <= 4)
59
+ return "****";
60
+ if (value.length <= 8)
61
+ return value.slice(0, 2) + "****";
62
+ return value.slice(0, 4) + "****" + value.slice(-2);
63
+ }
64
+ export const localCommand = new Command("local").description("Local encrypted vault — store secrets offline, optionally sync to cloud");
65
+ // ── init ─────────────────────────────────────────────────
66
+ localCommand
67
+ .command("init")
68
+ .description("Create a new local encrypted vault")
69
+ .option("--force", "Overwrite existing vault")
70
+ .action(async (opts) => {
71
+ try {
72
+ if (vaultExists() && !opts.force) {
73
+ printWarning("Local vault already exists. Use --force to reinitialize (destroys existing secrets).");
74
+ return;
75
+ }
76
+ console.log();
77
+ printInfo("Creating a new local vault.");
78
+ printInfo("Choose a strong passphrase — it encrypts your secrets at rest.");
79
+ console.log();
80
+ const passphrase = await promptPassphrase(true);
81
+ createVault(passphrase);
82
+ const fp = fingerprintPassphrase(passphrase);
83
+ printSuccess(`Local vault created at ${chalk.dim(getVaultPath())}`);
84
+ printInfo(`Passphrase fingerprint: ${chalk.cyan(fp)}`);
85
+ printInfo("Store your passphrase safely — it cannot be recovered.");
86
+ console.log();
87
+ }
88
+ catch (err) {
89
+ if (err instanceof Error)
90
+ printError(err.message);
91
+ else
92
+ printError(String(err));
93
+ process.exit(1);
94
+ }
95
+ });
96
+ // ── add ──────────────────────────────────────────────────
97
+ localCommand
98
+ .command("add <name>")
99
+ .description("Add or update a secret in the local vault")
100
+ .option("-t, --type <type>", "Secret type", "api_key")
101
+ .action(async (name, opts) => {
102
+ try {
103
+ if (!vaultExists()) {
104
+ printError("No local vault. Run `1claw local init` first.");
105
+ process.exit(1);
106
+ }
107
+ const { vault, passphrase } = await promptUnlock();
108
+ const { value } = await inquirer.prompt([
109
+ {
110
+ type: "password",
111
+ name: "value",
112
+ message: `Value for ${chalk.bold(name)}:`,
113
+ mask: "*",
114
+ validate: (v) => (v.length > 0 ? true : "Value cannot be empty"),
115
+ },
116
+ ]);
117
+ const existed = !!vault.secrets[name];
118
+ addSecret(vault, name, value, opts.type);
119
+ saveVault(vault, passphrase);
120
+ printSuccess(existed
121
+ ? `Updated ${chalk.bold(name)} in local vault.`
122
+ : `Added ${chalk.bold(name)} to local vault.`);
123
+ }
124
+ catch (err) {
125
+ handleError(err);
126
+ }
127
+ });
128
+ // ── list ─────────────────────────────────────────────────
129
+ localCommand
130
+ .command("list")
131
+ .alias("ls")
132
+ .description("List secrets in the local vault (names only)")
133
+ .action(async () => {
134
+ try {
135
+ if (!vaultExists()) {
136
+ printError("No local vault. Run `1claw local init` first.");
137
+ process.exit(1);
138
+ }
139
+ const { vault } = await promptUnlock();
140
+ const secrets = listSecrets(vault);
141
+ if (secrets.length === 0) {
142
+ printInfo("Local vault is empty. Add secrets with `1claw local add <name>`.");
143
+ return;
144
+ }
145
+ printTable(secrets.map((s) => ({
146
+ name: s.name,
147
+ type: s.type,
148
+ synced: s.synced ? chalk.green("yes") : chalk.dim("no"),
149
+ updated: s.updated_at.slice(0, 19).replace("T", " "),
150
+ })), [
151
+ { key: "name", header: "Name" },
152
+ { key: "type", header: "Type" },
153
+ { key: "synced", header: "Synced" },
154
+ { key: "updated", header: "Updated" },
155
+ ]);
156
+ }
157
+ catch (err) {
158
+ handleError(err);
159
+ }
160
+ });
161
+ // ── get ──────────────────────────────────────────────────
162
+ localCommand
163
+ .command("get <name>")
164
+ .description("Retrieve a secret value from the local vault")
165
+ .option("--masked", "Show masked value instead of raw")
166
+ .action(async (name, opts) => {
167
+ try {
168
+ if (!vaultExists()) {
169
+ printError("No local vault. Run `1claw local init` first.");
170
+ process.exit(1);
171
+ }
172
+ const { vault } = await promptUnlock();
173
+ const secret = getSecret(vault, name);
174
+ if (!secret) {
175
+ printError(`Secret "${name}" not found in local vault.`);
176
+ process.exit(1);
177
+ }
178
+ if (opts.masked) {
179
+ console.log(maskValue(secret.value));
180
+ }
181
+ else {
182
+ process.stdout.write(secret.value);
183
+ if (process.stdout.isTTY)
184
+ process.stdout.write("\n");
185
+ }
186
+ }
187
+ catch (err) {
188
+ handleError(err);
189
+ }
190
+ });
191
+ // ── rm ───────────────────────────────────────────────────
192
+ localCommand
193
+ .command("rm <name>")
194
+ .alias("remove")
195
+ .description("Remove a secret from the local vault")
196
+ .action(async (name) => {
197
+ try {
198
+ if (!vaultExists()) {
199
+ printError("No local vault. Run `1claw local init` first.");
200
+ process.exit(1);
201
+ }
202
+ const { vault, passphrase } = await promptUnlock();
203
+ const removed = removeSecret(vault, name);
204
+ if (!removed) {
205
+ printWarning(`Secret "${name}" not found.`);
206
+ return;
207
+ }
208
+ saveVault(vault, passphrase);
209
+ printSuccess(`Removed ${chalk.bold(name)} from local vault.`);
210
+ }
211
+ catch (err) {
212
+ handleError(err);
213
+ }
214
+ });
215
+ // ── import ───────────────────────────────────────────────
216
+ localCommand
217
+ .command("import <file>")
218
+ .description("Import secrets from a .env file into the local vault")
219
+ .option("-t, --type <type>", "Secret type for imported entries", "api_key")
220
+ .option("--force", "Overwrite existing secrets")
221
+ .option("--dry-run", "Show what would be imported without writing")
222
+ .action(async (file, opts) => {
223
+ try {
224
+ let content;
225
+ try {
226
+ content = readFileSync(file, "utf-8");
227
+ }
228
+ catch {
229
+ printError(`Cannot read file: ${file}`);
230
+ process.exit(1);
231
+ }
232
+ const entries = parseEnvFile(content);
233
+ if (entries.length === 0) {
234
+ printWarning(`No valid environment variables found in ${file}`);
235
+ return;
236
+ }
237
+ printInfo(`Found ${chalk.bold(String(entries.length))} variable${entries.length > 1 ? "s" : ""} in ${chalk.bold(file)}`);
238
+ printTable(entries.map((e) => ({
239
+ key: e.key,
240
+ preview: maskValue(e.value),
241
+ })), [
242
+ { key: "key", header: "Variable" },
243
+ { key: "preview", header: "Value Preview" },
244
+ ]);
245
+ console.log();
246
+ if (opts.dryRun) {
247
+ printInfo("Dry run — no secrets were written.");
248
+ return;
249
+ }
250
+ if (!vaultExists()) {
251
+ printInfo("No local vault found — creating one now.");
252
+ const passphrase = await promptPassphrase(true);
253
+ createVault(passphrase);
254
+ const vault = loadVault(passphrase);
255
+ let imported = 0;
256
+ let skipped = 0;
257
+ for (const e of entries) {
258
+ if (vault.secrets[e.key] && !opts.force) {
259
+ skipped++;
260
+ continue;
261
+ }
262
+ addSecret(vault, e.key, e.value, opts.type);
263
+ imported++;
264
+ }
265
+ saveVault(vault, passphrase);
266
+ printSuccess(`Imported ${imported} secret${imported > 1 ? "s" : ""} to local vault.`);
267
+ if (skipped > 0) {
268
+ printWarning(`Skipped ${skipped} existing (use --force to overwrite).`);
269
+ }
270
+ return;
271
+ }
272
+ const { vault, passphrase } = await promptUnlock();
273
+ let imported = 0;
274
+ let skipped = 0;
275
+ for (const e of entries) {
276
+ if (vault.secrets[e.key] && !opts.force) {
277
+ skipped++;
278
+ continue;
279
+ }
280
+ addSecret(vault, e.key, e.value, opts.type);
281
+ imported++;
282
+ }
283
+ saveVault(vault, passphrase);
284
+ printSuccess(`Imported ${imported} secret${imported > 1 ? "s" : ""} to local vault.`);
285
+ if (skipped > 0) {
286
+ printWarning(`Skipped ${skipped} existing (use --force to overwrite).`);
287
+ }
288
+ }
289
+ catch (err) {
290
+ handleError(err);
291
+ }
292
+ });
293
+ // ── export ───────────────────────────────────────────────
294
+ localCommand
295
+ .command("export")
296
+ .description("Export local vault secrets as .env format")
297
+ .option("-o, --output <file>", "Write to file instead of stdout")
298
+ .action(async (opts) => {
299
+ try {
300
+ if (!vaultExists()) {
301
+ printError("No local vault. Run `1claw local init` first.");
302
+ process.exit(1);
303
+ }
304
+ const { vault } = await promptUnlock();
305
+ const output = exportAsEnv(vault);
306
+ if (opts.output) {
307
+ const { writeFileSync: wfs } = await import("node:fs");
308
+ wfs(opts.output, output);
309
+ printSuccess(`Exported ${Object.keys(vault.secrets).length} secrets to ${opts.output}`);
310
+ }
311
+ else {
312
+ process.stdout.write(output);
313
+ }
314
+ }
315
+ catch (err) {
316
+ handleError(err);
317
+ }
318
+ });
319
+ // ── sync ─────────────────────────────────────────────────
320
+ localCommand
321
+ .command("sync")
322
+ .description("Sync local secrets to/from a cloud vault")
323
+ .option("-v, --vault <id>", "Cloud vault ID")
324
+ .option("--pull", "Pull cloud secrets into local vault (default: push)")
325
+ .option("--force", "Overwrite on conflict instead of skipping")
326
+ .action(async (opts) => {
327
+ try {
328
+ requireToken();
329
+ if (!vaultExists()) {
330
+ printError("No local vault. Run `1claw local init` first.");
331
+ process.exit(1);
332
+ }
333
+ const { vault, passphrase } = await promptUnlock();
334
+ const vaultId = resolveVaultId(opts);
335
+ if (opts.pull) {
336
+ await syncPull(vault, passphrase, vaultId, !!opts.force);
337
+ }
338
+ else {
339
+ await syncPush(vault, passphrase, vaultId, !!opts.force);
340
+ }
341
+ }
342
+ catch (err) {
343
+ handleError(err);
344
+ }
345
+ });
346
+ async function syncPush(vault, passphrase, cloudVaultId, force) {
347
+ const secrets = Object.entries(vault.secrets);
348
+ if (secrets.length === 0) {
349
+ printInfo("Local vault is empty — nothing to push.");
350
+ return;
351
+ }
352
+ const toPush = force
353
+ ? secrets
354
+ : secrets.filter(([, s]) => !s.synced_to_cloud);
355
+ if (toPush.length === 0) {
356
+ printInfo("All local secrets are already synced.");
357
+ return;
358
+ }
359
+ const spinner = ora(`Pushing ${toPush.length} secret(s) to cloud...`).start();
360
+ let pushed = 0;
361
+ let failed = 0;
362
+ for (const [name, secret] of toPush) {
363
+ try {
364
+ await api(`/vaults/${cloudVaultId}/secrets/${encodeURIComponent(name)}`, {
365
+ method: "PUT",
366
+ body: { value: secret.value, secret_type: secret.type },
367
+ });
368
+ markSynced(vault, name, cloudVaultId, name);
369
+ pushed++;
370
+ }
371
+ catch (err) {
372
+ failed++;
373
+ spinner.stop();
374
+ printError(`Failed to push ${name}: ${err.message}`);
375
+ spinner.start();
376
+ }
377
+ }
378
+ saveVault(vault, passphrase);
379
+ spinner.stop();
380
+ if (pushed > 0) {
381
+ printSuccess(`Pushed ${pushed} secret(s) to vault ${chalk.dim(cloudVaultId)}`);
382
+ }
383
+ if (failed > 0) {
384
+ printWarning(`${failed} secret(s) failed to push.`);
385
+ }
386
+ }
387
+ async function syncPull(vault, passphrase, cloudVaultId, force) {
388
+ const spinner = ora("Fetching secrets from cloud...").start();
389
+ const cloudSecrets = await api(`/vaults/${cloudVaultId}/secrets`);
390
+ let pulled = 0;
391
+ let skipped = 0;
392
+ for (const cs of cloudSecrets) {
393
+ if (vault.secrets[cs.path] && !force) {
394
+ skipped++;
395
+ continue;
396
+ }
397
+ const detail = await api(`/vaults/${cloudVaultId}/secrets/${encodeURIComponent(cs.path)}`);
398
+ addSecret(vault, cs.path, detail.value, cs.secret_type);
399
+ markSynced(vault, cs.path, cloudVaultId, cs.path);
400
+ pulled++;
401
+ }
402
+ saveVault(vault, passphrase);
403
+ spinner.stop();
404
+ if (pulled > 0) {
405
+ printSuccess(`Pulled ${pulled} secret(s) from cloud.`);
406
+ }
407
+ if (skipped > 0) {
408
+ printInfo(`Skipped ${skipped} existing local secret(s) (use --force to overwrite).`);
409
+ }
410
+ if (pulled === 0 && skipped === 0) {
411
+ printInfo("Cloud vault is empty.");
412
+ }
413
+ }
414
+ // ── status ───────────────────────────────────────────────
415
+ localCommand
416
+ .command("status")
417
+ .description("Show local vault status")
418
+ .action(async () => {
419
+ try {
420
+ const info = getVaultInfo();
421
+ if (!info.exists) {
422
+ printInfo("No local vault. Run `1claw local init` to create one.");
423
+ return;
424
+ }
425
+ const { vault } = await promptUnlock();
426
+ const secrets = listSecrets(vault);
427
+ const synced = secrets.filter((s) => s.synced).length;
428
+ printKeyValue([
429
+ ["Vault file", info.path],
430
+ ["File size", info.sizeBytes ? `${info.sizeBytes} bytes` : "unknown"],
431
+ ["Created", vault.created_at.slice(0, 19).replace("T", " ")],
432
+ ["Updated", vault.updated_at.slice(0, 19).replace("T", " ")],
433
+ ["Secrets", String(secrets.length)],
434
+ [
435
+ "Synced to cloud",
436
+ synced > 0
437
+ ? chalk.green(`${synced}/${secrets.length}`)
438
+ : chalk.dim("0"),
439
+ ],
440
+ ]);
441
+ }
442
+ catch (err) {
443
+ handleError(err);
444
+ }
445
+ });
446
+ // ── destroy ──────────────────────────────────────────────
447
+ localCommand
448
+ .command("destroy")
449
+ .description("Permanently delete the local vault")
450
+ .action(async () => {
451
+ try {
452
+ if (!vaultExists()) {
453
+ printInfo("No local vault to destroy.");
454
+ return;
455
+ }
456
+ const { confirm } = await inquirer.prompt([
457
+ {
458
+ type: "confirm",
459
+ name: "confirm",
460
+ message: chalk.red("This will permanently delete your local vault and all secrets. Continue?"),
461
+ default: false,
462
+ },
463
+ ]);
464
+ if (!confirm) {
465
+ printInfo("Cancelled.");
466
+ return;
467
+ }
468
+ deleteVault();
469
+ printSuccess("Local vault destroyed.");
470
+ }
471
+ catch (err) {
472
+ if (err instanceof Error)
473
+ printError(err.message);
474
+ else
475
+ printError(String(err));
476
+ process.exit(1);
477
+ }
478
+ });
479
+ function parseEnvFile(content) {
480
+ const entries = [];
481
+ const lines = content.split("\n");
482
+ for (const rawLine of lines) {
483
+ const raw = rawLine.trim();
484
+ if (!raw || raw.startsWith("#"))
485
+ continue;
486
+ let line = raw;
487
+ if (line.startsWith("export ")) {
488
+ line = line.slice(7).trim();
489
+ }
490
+ const eqIdx = line.indexOf("=");
491
+ if (eqIdx <= 0)
492
+ continue;
493
+ const key = line.slice(0, eqIdx).trim();
494
+ if (!/^[A-Za-z_][A-Za-z0-9_]*$/.test(key))
495
+ continue;
496
+ let value = line.slice(eqIdx + 1).trim();
497
+ if ((value.startsWith('"') && value.endsWith('"')) ||
498
+ (value.startsWith("'") && value.endsWith("'"))) {
499
+ value = value.slice(1, -1);
500
+ }
501
+ entries.push({ key, value });
502
+ }
503
+ return entries;
504
+ }
505
+ //# sourceMappingURL=local.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"local.js","sourceRoot":"","sources":["../../../src/commands/local.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,3 @@
1
+ import { Command } from "commander";
2
+ export declare const setupCommand: Command;
3
+ //# sourceMappingURL=setup.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"setup.d.ts","sourceRoot":"","sources":["../../../src/commands/setup.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAoBpC,eAAO,MAAM,YAAY,SAqBnB,CAAC"}