@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,175 @@
1
+ import { Command } from "commander";
2
+ import { readFileSync } from "node:fs";
3
+ import chalk from "chalk";
4
+ import ora from "ora";
5
+ import { api } from "../client.js";
6
+ import { requireToken, resolveVaultId, handleError } from "../middleware.js";
7
+ import { printSuccess, printError, printWarning, printInfo, printTable, } from "../output.js";
8
+ function parseEnvFile(content) {
9
+ const entries = [];
10
+ const lines = content.split("\n");
11
+ for (let i = 0; i < lines.length; i++) {
12
+ const raw = lines[i].trim();
13
+ if (!raw || raw.startsWith("#"))
14
+ continue;
15
+ let line = raw;
16
+ if (line.startsWith("export ")) {
17
+ line = line.slice(7).trim();
18
+ }
19
+ const eqIdx = line.indexOf("=");
20
+ if (eqIdx <= 0)
21
+ continue;
22
+ const key = line.slice(0, eqIdx).trim();
23
+ if (!/^[A-Za-z_][A-Za-z0-9_]*$/.test(key))
24
+ continue;
25
+ let value = line.slice(eqIdx + 1).trim();
26
+ if ((value.startsWith('"') && value.endsWith('"')) ||
27
+ (value.startsWith("'") && value.endsWith("'"))) {
28
+ value = value.slice(1, -1);
29
+ }
30
+ // Handle inline comments (only for unquoted values)
31
+ if (!raw.slice(eqIdx + 1).trim().startsWith('"') && !raw.slice(eqIdx + 1).trim().startsWith("'")) {
32
+ const commentIdx = value.indexOf(" #");
33
+ if (commentIdx >= 0) {
34
+ value = value.slice(0, commentIdx).trim();
35
+ }
36
+ }
37
+ if (value.startsWith('"')) {
38
+ value = value
39
+ .replace(/\\n/g, "\n")
40
+ .replace(/\\r/g, "\r")
41
+ .replace(/\\t/g, "\t")
42
+ .replace(/\\\\/g, "\\");
43
+ }
44
+ entries.push({ key, value, line: i + 1 });
45
+ }
46
+ return entries;
47
+ }
48
+ export const importCommand = new Command("import")
49
+ .description("Import secrets from a .env file into a 1Claw vault")
50
+ .argument("<file>", "Path to .env file to import")
51
+ .option("-v, --vault <id>", "Vault ID")
52
+ .option("-p, --prefix <prefix>", "Path prefix for imported secrets (e.g. project/)")
53
+ .option("--dry-run", "Show what would be imported without writing")
54
+ .option("--force", "Overwrite existing secrets")
55
+ .option("-t, --type <type>", "Secret type for imported entries", "api_key")
56
+ .action(async (file, opts) => {
57
+ try {
58
+ await runImport(file, opts);
59
+ }
60
+ catch (err) {
61
+ handleError(err);
62
+ }
63
+ });
64
+ async function runImport(file, opts) {
65
+ if (!opts.dryRun) {
66
+ requireToken();
67
+ }
68
+ let content;
69
+ try {
70
+ content = readFileSync(file, "utf-8");
71
+ }
72
+ catch {
73
+ printError(`Cannot read file: ${file}`);
74
+ process.exit(1);
75
+ }
76
+ const entries = parseEnvFile(content);
77
+ if (entries.length === 0) {
78
+ printWarning(`No valid environment variables found in ${file}`);
79
+ return;
80
+ }
81
+ const prefix = opts.prefix
82
+ ? opts.prefix.endsWith("/")
83
+ ? opts.prefix
84
+ : opts.prefix + "/"
85
+ : "";
86
+ console.log();
87
+ printInfo(`Found ${chalk.bold(String(entries.length))} variable${entries.length > 1 ? "s" : ""} in ${chalk.bold(file)}`);
88
+ console.log();
89
+ printTable(entries.map((e) => ({
90
+ key: e.key,
91
+ path: prefix + e.key,
92
+ preview: maskValue(e.value),
93
+ })), [
94
+ { key: "key", header: "Variable" },
95
+ { key: "path", header: "Vault Path" },
96
+ { key: "preview", header: "Value Preview" },
97
+ ]);
98
+ console.log();
99
+ if (opts.dryRun) {
100
+ printInfo("Dry run — no secrets were written.");
101
+ return;
102
+ }
103
+ const vaultId = resolveVaultId(opts);
104
+ // Check for existing secrets
105
+ const spinner = ora("Checking for existing secrets...").start();
106
+ let existingPaths;
107
+ try {
108
+ const secrets = await api(`/vaults/${vaultId}/secrets`);
109
+ existingPaths = new Set(secrets.map((s) => s.path));
110
+ }
111
+ catch {
112
+ existingPaths = new Set();
113
+ }
114
+ spinner.stop();
115
+ const toImport = [];
116
+ const skipped = [];
117
+ for (const entry of entries) {
118
+ const path = prefix + entry.key;
119
+ if (existingPaths.has(path) && !opts.force) {
120
+ skipped.push(path);
121
+ }
122
+ else {
123
+ toImport.push(entry);
124
+ }
125
+ }
126
+ if (skipped.length > 0) {
127
+ printWarning(`Skipping ${skipped.length} existing secret${skipped.length > 1 ? "s" : ""} (use --force to overwrite):`);
128
+ for (const p of skipped) {
129
+ console.log(` ${chalk.dim("○")} ${p}`);
130
+ }
131
+ console.log();
132
+ }
133
+ if (toImport.length === 0) {
134
+ printInfo("No new secrets to import.");
135
+ return;
136
+ }
137
+ const importSpinner = ora(`Importing ${toImport.length} secret${toImport.length > 1 ? "s" : ""}...`).start();
138
+ let imported = 0;
139
+ let failed = 0;
140
+ for (const entry of toImport) {
141
+ const path = prefix + entry.key;
142
+ try {
143
+ await api(`/vaults/${vaultId}/secrets/${encodeURIComponent(path)}`, {
144
+ method: "PUT",
145
+ body: {
146
+ value: entry.value,
147
+ secret_type: opts.type ?? "api_key",
148
+ },
149
+ });
150
+ imported++;
151
+ }
152
+ catch (err) {
153
+ failed++;
154
+ importSpinner.stop();
155
+ printError(`Failed to import ${path}: ${err.message}`);
156
+ importSpinner.start();
157
+ }
158
+ }
159
+ importSpinner.stop();
160
+ if (imported > 0) {
161
+ printSuccess(`Imported ${imported} secret${imported > 1 ? "s" : ""} to vault ${chalk.dim(vaultId)}`);
162
+ }
163
+ if (failed > 0) {
164
+ printWarning(`${failed} secret${failed > 1 ? "s" : ""} failed to import.`);
165
+ }
166
+ console.log();
167
+ }
168
+ function maskValue(value) {
169
+ if (value.length <= 4)
170
+ return "****";
171
+ if (value.length <= 8)
172
+ return value.slice(0, 2) + "****";
173
+ return value.slice(0, 4) + "****" + value.slice(-2);
174
+ }
175
+ //# sourceMappingURL=import.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"import.js","sourceRoot":"","sources":["../../../src/commands/import.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,3 @@
1
+ import { Command } from "commander";
2
+ export declare const localCommand: Command;
3
+ //# sourceMappingURL=local.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"local.d.ts","sourceRoot":"","sources":["../../../src/commands/local.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AA4FpC,eAAO,MAAM,YAAY,SAExB,CAAC"}