@1claw/cli 0.34.0 → 0.34.1

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
@@ -1,4 +1,4 @@
1
- # @1claw/cli (v0.34.0)
1
+ # @1claw/cli (v0.34.1)
2
2
 
3
3
  Command-line interface for [1Claw](https://1claw.xyz) — HSM-backed secret management for AI agents and humans.
4
4
 
@@ -8,6 +8,14 @@ Designed for CI/CD pipelines, DevOps workflows, and server environments.
8
8
 
9
9
  ## Installation
10
10
 
11
+ ### Homebrew (macOS / Linux)
12
+
13
+ ```bash
14
+ brew install 1clawAI/tap/1claw
15
+ ```
16
+
17
+ ### npm
18
+
11
19
  ```bash
12
20
  npm install -g @1claw/cli
13
21
  ```
@@ -46,8 +54,45 @@ export ONECLAW_TOKEN="your-jwt"
46
54
  export ONECLAW_API_KEY="1ck_..."
47
55
  ```
48
56
 
57
+ ## Quick Start
58
+
59
+ ```bash
60
+ 1claw login # Authenticate via browser
61
+ 1claw setup # Auto-configure Claude, Cursor, VS Code, etc.
62
+ 1claw import .env # Import secrets from a .env file into your vault
63
+ ```
64
+
49
65
  ## Commands
50
66
 
67
+ ### Setup (AI Client Auto-Configuration)
68
+
69
+ Auto-detect and configure AI clients (Claude Desktop, Cursor, VS Code, Zed, Windsurf, Claude Code) to use the 1Claw MCP server for runtime secret access.
70
+
71
+ ```bash
72
+ 1claw setup # Interactive: detect clients, select, configure
73
+ 1claw setup --client cursor # Configure only Cursor
74
+ 1claw setup --agent-key ocv_... # Use a specific agent API key
75
+ 1claw setup --project # Write MCP config to current project instead of global
76
+ 1claw setup --skip-auth # Skip authentication check
77
+ ```
78
+
79
+ The command detects installed AI clients, prompts you to select which ones to configure, and writes the appropriate MCP server entry to each client's config file. It uses `npx @1claw/mcp` by default, or a globally installed `1claw-mcp` binary if available.
80
+
81
+ ### Import (.env File)
82
+
83
+ Import secrets from a local `.env` file into a 1Claw vault.
84
+
85
+ ```bash
86
+ 1claw import .env # Import all keys from .env
87
+ 1claw import .env.production \
88
+ --prefix prod/ # Add a path prefix to all keys
89
+ 1claw import .env --dry-run # Preview what would be imported
90
+ 1claw import .env --force # Overwrite existing secrets
91
+ 1claw import .env --vault <id> # Import to a specific vault
92
+ ```
93
+
94
+ Handles standard `.env` syntax: `KEY=value`, single/double-quoted values, `export` prefix, comments, and multiline values.
95
+
51
96
  ### Auth
52
97
 
53
98
  ```bash
@@ -117,8 +162,22 @@ echo "sk_live_..." | 1claw secret set <path> --stdin # From stdin
117
162
  1claw env push .env # Push .env file to vault
118
163
  1claw env run -- npm start # Run with secrets injected
119
164
  1claw env run --prefix config/ -- ./deploy.sh # Only inject matching secrets
165
+ 1claw env run --no-cache -- npm start # Skip local cache, always fetch from API
120
166
  ```
121
167
 
168
+ ### Environment Cache (Offline Mode)
169
+
170
+ Cache secrets locally in an AES-256-GCM encrypted file for offline `env run`. The encryption key is derived from your authentication token.
171
+
172
+ ```bash
173
+ 1claw env cache # Download and cache secrets locally
174
+ 1claw env cache --ttl 3600 # Cache with 1-hour TTL (default: 300s)
175
+ 1claw env cache-status # Show cache age, vault ID, secret count
176
+ 1claw env cache-clear # Delete the local cache
177
+ ```
178
+
179
+ When a valid cache exists, `env run` uses it automatically instead of calling the API. Use `--no-cache` on `env run` to bypass. Cache is stored at `~/.config/1claw/env-cache.enc` (mode `0600`).
180
+
122
181
  ### Agents
123
182
 
124
183
  ```bash
@@ -0,0 +1,19 @@
1
+ export interface AiClient {
2
+ name: string;
3
+ slug: string;
4
+ configPath: string;
5
+ configFormat: "mcpServers" | "servers" | "zed" | "claude-code";
6
+ detected: boolean;
7
+ }
8
+ export declare function detectAiClients(): AiClient[];
9
+ export interface McpServerEntry {
10
+ command: string;
11
+ args: string[];
12
+ env: Record<string, string>;
13
+ }
14
+ export declare function buildMcpEntry(envVars: Record<string, string>): McpServerEntry;
15
+ export declare function configureClient(client: AiClient, entry: McpServerEntry): {
16
+ success: boolean;
17
+ message: string;
18
+ };
19
+ //# sourceMappingURL=ai-clients.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ai-clients.d.ts","sourceRoot":"","sources":["../../src/ai-clients.ts"],"names":[],"mappings":"AAKA,MAAM,WAAW,QAAQ;IACrB,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,UAAU,EAAE,MAAM,CAAC;IACnB,YAAY,EAAE,YAAY,GAAG,SAAS,GAAG,KAAK,GAAG,aAAa,CAAC;IAC/D,QAAQ,EAAE,OAAO,CAAC;CACrB;AAkBD,wBAAgB,eAAe,IAAI,QAAQ,EAAE,CAqF5C;AAED,MAAM,WAAW,cAAc;IAC3B,OAAO,EAAE,MAAM,CAAC;IAChB,IAAI,EAAE,MAAM,EAAE,CAAC;IACf,GAAG,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;CAC/B;AAED,wBAAgB,aAAa,CAAC,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,cAAc,CAgB7E;AAED,wBAAgB,eAAe,CAC3B,MAAM,EAAE,QAAQ,EAChB,KAAK,EAAE,cAAc,GACtB;IAAE,OAAO,EAAE,OAAO,CAAC;IAAC,OAAO,EAAE,MAAM,CAAA;CAAE,CA4EvC"}
@@ -0,0 +1,218 @@
1
+ import { existsSync, readFileSync, writeFileSync, mkdirSync } from "node:fs";
2
+ import { homedir, platform } from "node:os";
3
+ import { dirname } from "node:path";
4
+ import { execSync } from "node:child_process";
5
+ function expandHome(p) {
6
+ return p.replace(/^~/, homedir());
7
+ }
8
+ function resolveGlobalMcpBinary() {
9
+ try {
10
+ const resolved = execSync("which 1claw-mcp 2>/dev/null", {
11
+ encoding: "utf-8",
12
+ }).trim();
13
+ if (resolved)
14
+ return resolved;
15
+ }
16
+ catch {
17
+ // not found globally
18
+ }
19
+ return "";
20
+ }
21
+ export function detectAiClients() {
22
+ const isMac = platform() === "darwin";
23
+ const clients = [
24
+ {
25
+ name: "Claude Desktop",
26
+ slug: "claude-desktop",
27
+ configPath: isMac
28
+ ? "~/Library/Application Support/Claude/claude_desktop_config.json"
29
+ : "~/.config/claude/claude_desktop_config.json",
30
+ configFormat: "mcpServers",
31
+ detected: false,
32
+ },
33
+ {
34
+ name: "Claude Code",
35
+ slug: "claude-code",
36
+ configPath: "",
37
+ configFormat: "claude-code",
38
+ detected: false,
39
+ },
40
+ {
41
+ name: "Cursor",
42
+ slug: "cursor",
43
+ configPath: "~/.cursor/mcp.json",
44
+ configFormat: "mcpServers",
45
+ detected: false,
46
+ },
47
+ {
48
+ name: "Windsurf",
49
+ slug: "windsurf",
50
+ configPath: "~/.codeium/windsurf/mcp_config.json",
51
+ configFormat: "mcpServers",
52
+ detected: false,
53
+ },
54
+ {
55
+ name: "VS Code",
56
+ slug: "vscode",
57
+ configPath: "~/.vscode/mcp.json",
58
+ configFormat: "servers",
59
+ detected: false,
60
+ },
61
+ {
62
+ name: "Zed",
63
+ slug: "zed",
64
+ configPath: "~/.config/zed/settings.json",
65
+ configFormat: "zed",
66
+ detected: false,
67
+ },
68
+ {
69
+ name: "Continue.dev",
70
+ slug: "continue",
71
+ configPath: "~/.continue/config.json",
72
+ configFormat: "mcpServers",
73
+ detected: false,
74
+ },
75
+ ];
76
+ for (const client of clients) {
77
+ if (client.slug === "claude-code") {
78
+ try {
79
+ execSync("which claude 2>/dev/null", { encoding: "utf-8" });
80
+ client.detected = true;
81
+ }
82
+ catch {
83
+ client.detected = false;
84
+ }
85
+ continue;
86
+ }
87
+ const expanded = expandHome(client.configPath);
88
+ if (client.slug === "cursor") {
89
+ client.detected =
90
+ existsSync(expandHome("~/.cursor")) ||
91
+ existsSync(expanded);
92
+ }
93
+ else if (client.slug === "vscode") {
94
+ client.detected =
95
+ existsSync(expandHome("~/.vscode")) ||
96
+ existsSync(expanded);
97
+ }
98
+ else {
99
+ client.detected =
100
+ existsSync(expanded) ||
101
+ existsSync(dirname(expanded));
102
+ }
103
+ }
104
+ return clients;
105
+ }
106
+ export function buildMcpEntry(envVars) {
107
+ const globalBin = resolveGlobalMcpBinary();
108
+ if (globalBin) {
109
+ return {
110
+ command: globalBin,
111
+ args: [],
112
+ env: envVars,
113
+ };
114
+ }
115
+ return {
116
+ command: "npx",
117
+ args: ["-y", "@1claw/mcp"],
118
+ env: envVars,
119
+ };
120
+ }
121
+ export function configureClient(client, entry) {
122
+ if (client.configFormat === "claude-code") {
123
+ return configureClaudeCode(entry);
124
+ }
125
+ const configPath = expandHome(client.configPath);
126
+ const dir = dirname(configPath);
127
+ if (!existsSync(dir)) {
128
+ mkdirSync(dir, { recursive: true });
129
+ }
130
+ let config = {};
131
+ if (existsSync(configPath)) {
132
+ try {
133
+ config = JSON.parse(readFileSync(configPath, "utf-8"));
134
+ }
135
+ catch {
136
+ return {
137
+ success: false,
138
+ message: `Failed to parse ${configPath}`,
139
+ };
140
+ }
141
+ }
142
+ const serverStanza = {
143
+ command: entry.command,
144
+ args: entry.args,
145
+ env: entry.env,
146
+ };
147
+ switch (client.configFormat) {
148
+ case "mcpServers": {
149
+ if (!config.mcpServers || typeof config.mcpServers !== "object") {
150
+ config.mcpServers = {};
151
+ }
152
+ config.mcpServers["1claw"] =
153
+ serverStanza;
154
+ break;
155
+ }
156
+ case "servers": {
157
+ if (!config.servers || typeof config.servers !== "object") {
158
+ config.servers = {};
159
+ }
160
+ config.servers["1claw"] =
161
+ serverStanza;
162
+ break;
163
+ }
164
+ case "zed": {
165
+ if (!config.context_servers ||
166
+ typeof config.context_servers !== "object") {
167
+ config.context_servers = {};
168
+ }
169
+ config.context_servers["1claw"] = {
170
+ command: {
171
+ path: entry.command,
172
+ args: entry.args,
173
+ env: entry.env,
174
+ },
175
+ settings: {},
176
+ };
177
+ break;
178
+ }
179
+ }
180
+ const tmpPath = configPath + ".1claw-tmp";
181
+ writeFileSync(tmpPath, JSON.stringify(config, null, 2) + "\n", "utf-8");
182
+ const { renameSync } = require("node:fs");
183
+ renameSync(tmpPath, configPath);
184
+ return {
185
+ success: true,
186
+ message: `Configured ${client.name} at ${configPath}`,
187
+ };
188
+ }
189
+ function configureClaudeCode(entry) {
190
+ const envArgs = Object.entries(entry.env)
191
+ .flatMap(([k, v]) => ["-e", `${k}=${v}`]);
192
+ const cmdParts = [
193
+ "claude", "mcp", "add",
194
+ "-s", "user",
195
+ ...envArgs,
196
+ "1claw",
197
+ "--",
198
+ entry.command,
199
+ ...entry.args,
200
+ ];
201
+ try {
202
+ execSync(cmdParts.join(" "), {
203
+ encoding: "utf-8",
204
+ stdio: "pipe",
205
+ });
206
+ return {
207
+ success: true,
208
+ message: "Configured Claude Code via `claude mcp add`",
209
+ };
210
+ }
211
+ catch (err) {
212
+ return {
213
+ success: false,
214
+ message: `Failed to configure Claude Code: ${err.message}`,
215
+ };
216
+ }
217
+ }
218
+ //# sourceMappingURL=ai-clients.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ai-clients.js","sourceRoot":"","sources":["../../src/ai-clients.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"env.d.ts","sourceRoot":"","sources":["../../../src/commands/env.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAepC,eAAO,MAAM,UAAU,SAEtB,CAAC"}
1
+ {"version":3,"file":"env.d.ts","sourceRoot":"","sources":["../../../src/commands/env.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAwBpC,eAAO,MAAM,UAAU,SAEtB,CAAC"}
@@ -5,7 +5,8 @@ import chalk from "chalk";
5
5
  import ora from "ora";
6
6
  import { api } from "../client.js";
7
7
  import { requireToken, resolveVaultId, handleError } from "../middleware.js";
8
- import { printSuccess } from "../output.js";
8
+ import { printSuccess, printInfo, printKeyValue } from "../output.js";
9
+ import { writeCache, readCache, clearCache, getCacheInfo, getCachePath, } from "../local-cache.js";
9
10
  export const envCommand = new Command("env").description("Environment variable management for CI/CD");
10
11
  envCommand
11
12
  .command("pull")
@@ -108,19 +109,90 @@ envCommand
108
109
  .description("Run a command with vault secrets injected as environment variables")
109
110
  .option("-v, --vault <id>", "Vault ID")
110
111
  .option("--prefix <prefix>", "Only inject secrets under this path prefix")
112
+ .option("--no-cache", "Skip local cache, always fetch from API")
111
113
  .action(async (commandParts, opts) => {
112
114
  try {
113
- requireToken();
115
+ const token = requireToken();
114
116
  const vaultId = resolveVaultId(opts);
115
- const spinner = ora("Loading secrets…").start();
117
+ let envVars = null;
118
+ let source = "api";
119
+ // Try local cache first (unless --no-cache)
120
+ if (opts.cache !== false) {
121
+ const cached = readCache(token, vaultId);
122
+ if (cached) {
123
+ envVars = cached;
124
+ source = "cache";
125
+ }
126
+ }
127
+ if (!envVars) {
128
+ const spinner = ora("Loading secrets…").start();
129
+ const query = {};
130
+ if (opts.prefix)
131
+ query.prefix = opts.prefix;
132
+ const secrets = await api(`/vaults/${vaultId}/secrets`, { query });
133
+ envVars = {};
134
+ for (const s of secrets) {
135
+ if (!["env_bundle", "api_key", "password"].includes(s.secret_type))
136
+ continue;
137
+ const detail = await api(`/vaults/${vaultId}/secrets/${encodeURIComponent(s.path)}`);
138
+ if (s.secret_type === "env_bundle") {
139
+ for (const line of detail.value.split("\n")) {
140
+ const trimmed = line.trim();
141
+ if (!trimmed || trimmed.startsWith("#"))
142
+ continue;
143
+ const eqIdx = trimmed.indexOf("=");
144
+ if (eqIdx > 0) {
145
+ envVars[trimmed.slice(0, eqIdx).trim()] = trimmed
146
+ .slice(eqIdx + 1)
147
+ .trim()
148
+ .replace(/^["']|["']$/g, "");
149
+ }
150
+ }
151
+ }
152
+ else {
153
+ envVars[s.path.replace(/[/-]/g, "_").toUpperCase()] =
154
+ detail.value;
155
+ }
156
+ }
157
+ spinner.stop();
158
+ }
159
+ const count = Object.keys(envVars).length;
160
+ const sourceLabel = source === "cache" ? chalk.dim("(cached)") : chalk.dim("(api)");
161
+ printSuccess(`Loaded ${count} secrets ${sourceLabel}. Running command…`);
162
+ const [cmd, ...args] = commandParts;
163
+ const child = spawn(cmd, args, {
164
+ stdio: "inherit",
165
+ env: { ...process.env, ...envVars },
166
+ });
167
+ child.on("exit", (code) => {
168
+ process.exit(code ?? 1);
169
+ });
170
+ }
171
+ catch (err) {
172
+ handleError(err);
173
+ }
174
+ });
175
+ // --- Cache subcommands ---
176
+ envCommand
177
+ .command("cache")
178
+ .description("Download vault secrets into an encrypted local cache for offline use")
179
+ .option("-v, --vault <id>", "Vault ID")
180
+ .option("--prefix <prefix>", "Only cache secrets under this path prefix")
181
+ .option("--ttl <seconds>", "Cache time-to-live in seconds", "3600")
182
+ .action(async (opts) => {
183
+ try {
184
+ const token = requireToken();
185
+ const vaultId = resolveVaultId(opts);
186
+ const spinner = ora("Fetching secrets for local cache…").start();
116
187
  const query = {};
117
188
  if (opts.prefix)
118
189
  query.prefix = opts.prefix;
119
190
  const secrets = await api(`/vaults/${vaultId}/secrets`, { query });
120
- const envVars = {};
121
- for (const s of secrets) {
122
- if (!["env_bundle", "api_key", "password"].includes(s.secret_type))
123
- continue;
191
+ const envSecrets = secrets.filter((s) => s.secret_type === "env_bundle" ||
192
+ s.secret_type === "api_key" ||
193
+ s.secret_type === "password");
194
+ const values = {};
195
+ for (const s of envSecrets) {
124
196
  const detail = await api(`/vaults/${vaultId}/secrets/${encodeURIComponent(s.path)}`);
125
197
  if (s.secret_type === "env_bundle") {
126
198
  for (const line of detail.value.split("\n")) {
@@ -129,7 +201,7 @@ envCommand
129
201
  continue;
130
202
  const eqIdx = trimmed.indexOf("=");
131
203
  if (eqIdx > 0) {
132
- envVars[trimmed.slice(0, eqIdx).trim()] = trimmed
204
+ values[trimmed.slice(0, eqIdx).trim()] = trimmed
133
205
  .slice(eqIdx + 1)
134
206
  .trim()
135
207
  .replace(/^["']|["']$/g, "");
@@ -137,24 +209,55 @@ envCommand
137
209
  }
138
210
  }
139
211
  else {
140
- envVars[s.path.replace(/[/-]/g, "_").toUpperCase()] =
141
- detail.value;
212
+ const envKey = s.path.replace(/[/-]/g, "_").toUpperCase();
213
+ values[envKey] = detail.value;
142
214
  }
143
215
  }
144
- spinner.succeed(`Loaded ${Object.keys(envVars).length} secrets. Running command…`);
145
- const [cmd, ...args] = commandParts;
146
- const child = spawn(cmd, args, {
147
- stdio: "inherit",
148
- env: { ...process.env, ...envVars },
149
- });
150
- child.on("exit", (code) => {
151
- process.exit(code ?? 1);
152
- });
216
+ const ttl = parseInt(opts.ttl, 10) || 3600;
217
+ writeCache(token, vaultId, values, ttl);
218
+ spinner.succeed(`Cached ${Object.keys(values).length} secrets locally (TTL: ${ttl}s)`);
219
+ printInfo(`Cache file: ${chalk.dim(getCachePath())}`);
153
220
  }
154
221
  catch (err) {
155
222
  handleError(err);
156
223
  }
157
224
  });
225
+ envCommand
226
+ .command("cache-clear")
227
+ .description("Clear the local secret cache")
228
+ .action(() => {
229
+ const cleared = clearCache();
230
+ if (cleared) {
231
+ printSuccess("Local secret cache cleared.");
232
+ }
233
+ else {
234
+ printInfo("No cache to clear.");
235
+ }
236
+ });
237
+ envCommand
238
+ .command("cache-status")
239
+ .description("Show local cache status")
240
+ .action(() => {
241
+ const info = getCacheInfo();
242
+ if (!info.exists) {
243
+ printInfo("No local cache found. Run `1claw env cache` to create one.");
244
+ return;
245
+ }
246
+ printKeyValue([
247
+ ["Cache file", getCachePath()],
248
+ ["Vault ID", info.meta?.vaultId ?? "unknown"],
249
+ ["Cached at", info.meta?.cachedAt ?? "unknown"],
250
+ ["TTL", `${info.meta?.ttlSeconds ?? 0}s`],
251
+ ["Secrets", String(info.meta?.secretCount ?? 0)],
252
+ ["Size", info.sizeBytes ? `${info.sizeBytes} bytes` : "unknown"],
253
+ [
254
+ "Status",
255
+ info.expired
256
+ ? chalk.yellow("expired")
257
+ : chalk.green("valid"),
258
+ ],
259
+ ]);
260
+ });
158
261
  function shellEscape(s) {
159
262
  if (/^[a-zA-Z0-9._\-/:=@]+$/.test(s))
160
263
  return s;
@@ -1 +1 @@
1
- {"version":3,"file":"env.js","sourceRoot":"","sources":["../../../src/commands/env.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"env.js","sourceRoot":"","sources":["../../../src/commands/env.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,3 @@
1
+ import { Command } from "commander";
2
+ export declare const importCommand: Command;
3
+ //# sourceMappingURL=import.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"import.d.ts","sourceRoot":"","sources":["../../../src/commands/import.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAwEpC,eAAO,MAAM,aAAa,SAqBpB,CAAC"}
@@ -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 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,SAoBnB,CAAC"}
@@ -0,0 +1,217 @@
1
+ import { Command } from "commander";
2
+ import chalk from "chalk";
3
+ import inquirer from "inquirer";
4
+ import ora from "ora";
5
+ import { getToken } from "../config.js";
6
+ import { loginWithDevice } from "../auth.js";
7
+ import { detectAiClients, buildMcpEntry, configureClient, } from "../ai-clients.js";
8
+ import { printSuccess, printError, printWarning, printInfo, } from "../output.js";
9
+ import { api } from "../client.js";
10
+ export const setupCommand = new Command("setup")
11
+ .description("Auto-configure AI clients (Claude, Cursor, etc.) to use 1Claw MCP")
12
+ .option("--global", "Configure global/user-level MCP settings (default)")
13
+ .option("--project", "Configure project-level MCP settings in current directory")
14
+ .option("--client <name>", "Configure only a specific client (e.g. cursor, claude-desktop)")
15
+ .option("--agent-key <key>", "Use a specific agent API key instead of prompting")
16
+ .option("--skip-auth", "Skip authentication check (use existing credentials)")
17
+ .action(async (opts) => {
18
+ try {
19
+ await runSetup(opts);
20
+ }
21
+ catch (err) {
22
+ if (err instanceof Error) {
23
+ printError(err.message);
24
+ }
25
+ else {
26
+ printError(String(err));
27
+ }
28
+ process.exit(1);
29
+ }
30
+ });
31
+ async function runSetup(opts) {
32
+ console.log();
33
+ console.log(chalk.bold(" 1Claw Setup"));
34
+ console.log(chalk.dim(" Auto-configure your AI clients for secret management"));
35
+ console.log();
36
+ // Step 1: Ensure authentication
37
+ let agentApiKey = opts.agentKey || "";
38
+ if (!agentApiKey && !opts.skipAuth) {
39
+ const token = getToken();
40
+ if (!token) {
41
+ printInfo("You need to be logged in to set up MCP connections.");
42
+ console.log();
43
+ const { shouldLogin } = await inquirer.prompt([
44
+ {
45
+ type: "confirm",
46
+ name: "shouldLogin",
47
+ message: "Would you like to log in now?",
48
+ default: true,
49
+ },
50
+ ]);
51
+ if (shouldLogin) {
52
+ const auth = await loginWithDevice();
53
+ if (!auth) {
54
+ printError("Login failed. Run `1claw login` manually, then try `1claw setup` again.");
55
+ return;
56
+ }
57
+ }
58
+ else {
59
+ printWarning("Skipping authentication. You can provide --agent-key directly.");
60
+ return;
61
+ }
62
+ }
63
+ if (!agentApiKey) {
64
+ agentApiKey = await resolveAgentKey();
65
+ }
66
+ }
67
+ if (!agentApiKey) {
68
+ printError("No agent API key available. Create an agent first: `1claw agent create <name>`");
69
+ return;
70
+ }
71
+ // Step 2: Detect AI clients
72
+ const spinner = ora("Detecting installed AI clients...").start();
73
+ const allClients = detectAiClients();
74
+ spinner.stop();
75
+ let candidates;
76
+ if (opts.client) {
77
+ const match = allClients.find((c) => c.slug === opts.client || c.name.toLowerCase() === opts.client.toLowerCase());
78
+ if (!match) {
79
+ printError(`Unknown client: ${opts.client}. Available: ${allClients.map((c) => c.slug).join(", ")}`);
80
+ return;
81
+ }
82
+ candidates = [match];
83
+ }
84
+ else {
85
+ const detected = allClients.filter((c) => c.detected);
86
+ if (detected.length === 0) {
87
+ printWarning("No AI clients detected on this machine.");
88
+ printInfo("Supported clients: " +
89
+ allClients.map((c) => c.name).join(", "));
90
+ printInfo("You can manually configure MCP — see https://docs.1claw.xyz/mcp");
91
+ return;
92
+ }
93
+ console.log(chalk.bold(" Detected AI clients:"));
94
+ for (const c of detected) {
95
+ console.log(` ${chalk.green("●")} ${c.name}`);
96
+ }
97
+ const notDetected = allClients.filter((c) => !c.detected);
98
+ for (const c of notDetected) {
99
+ console.log(` ${chalk.dim("○")} ${chalk.dim(c.name)} ${chalk.dim("(not found)")}`);
100
+ }
101
+ console.log();
102
+ const { selected } = await inquirer.prompt([
103
+ {
104
+ type: "checkbox",
105
+ name: "selected",
106
+ message: "Which clients would you like to configure?",
107
+ choices: detected.map((c) => ({
108
+ name: c.name,
109
+ value: c.slug,
110
+ checked: true,
111
+ })),
112
+ },
113
+ ]);
114
+ candidates = detected.filter((c) => selected.includes(c.slug));
115
+ }
116
+ if (candidates.length === 0) {
117
+ printInfo("No clients selected. Setup cancelled.");
118
+ return;
119
+ }
120
+ // Step 3: Build MCP server entry
121
+ const envVars = {
122
+ ONECLAW_AGENT_API_KEY: agentApiKey,
123
+ };
124
+ const entry = buildMcpEntry(envVars);
125
+ // Step 4: Configure each client
126
+ console.log();
127
+ let successCount = 0;
128
+ for (const client of candidates) {
129
+ const result = configureClient(client, entry);
130
+ if (result.success) {
131
+ printSuccess(result.message);
132
+ successCount++;
133
+ }
134
+ else {
135
+ printError(result.message);
136
+ }
137
+ }
138
+ // Step 5: Summary
139
+ console.log();
140
+ if (successCount > 0) {
141
+ printSuccess(`Configured ${successCount} client${successCount > 1 ? "s" : ""}. ` +
142
+ "Restart your AI client to activate 1Claw MCP.");
143
+ console.log();
144
+ printInfo("Your agent can now access secrets in your vault.");
145
+ printInfo("Try asking your AI: \"List my secrets in 1Claw\"");
146
+ }
147
+ else {
148
+ printWarning("No clients were configured. Check the errors above.");
149
+ }
150
+ console.log();
151
+ }
152
+ async function resolveAgentKey() {
153
+ const { source } = await inquirer.prompt([
154
+ {
155
+ type: "list",
156
+ name: "source",
157
+ message: "How would you like to provide an agent API key?",
158
+ choices: [
159
+ { name: "Create a new agent now", value: "create" },
160
+ { name: "Enter an existing agent API key", value: "enter" },
161
+ { name: "Use from environment (ONECLAW_AGENT_API_KEY)", value: "env" },
162
+ ],
163
+ },
164
+ ]);
165
+ if (source === "env") {
166
+ const key = process.env.ONECLAW_AGENT_API_KEY;
167
+ if (!key) {
168
+ printError("ONECLAW_AGENT_API_KEY is not set in the environment.");
169
+ process.exit(1);
170
+ }
171
+ return key;
172
+ }
173
+ if (source === "enter") {
174
+ const { key } = await inquirer.prompt([
175
+ {
176
+ type: "password",
177
+ name: "key",
178
+ message: "Agent API key (ocv_...):",
179
+ mask: "*",
180
+ validate: (v) => v.startsWith("ocv_") ? true : "Agent API keys start with ocv_",
181
+ },
182
+ ]);
183
+ return key;
184
+ }
185
+ // Create a new agent
186
+ const { agentName } = await inquirer.prompt([
187
+ {
188
+ type: "input",
189
+ name: "agentName",
190
+ message: "Name for the new agent:",
191
+ default: "mcp-agent",
192
+ validate: (v) => v.trim().length > 0 ? true : "Agent name is required",
193
+ },
194
+ ]);
195
+ const spinner = ora("Creating agent...").start();
196
+ try {
197
+ const result = await api("/agents", {
198
+ method: "POST",
199
+ body: {
200
+ name: agentName.trim(),
201
+ description: "Auto-created by 1claw setup for MCP integration",
202
+ },
203
+ });
204
+ spinner.succeed(`Agent "${agentName}" created`);
205
+ if (result.api_key) {
206
+ printInfo(`Agent API key: ${chalk.cyan(result.api_key)} ${chalk.dim("(save this — shown only once)")}`);
207
+ return result.api_key;
208
+ }
209
+ printError("Agent created but no API key returned. Use `1claw agent create` manually.");
210
+ process.exit(1);
211
+ }
212
+ catch (err) {
213
+ spinner.fail("Failed to create agent");
214
+ throw err;
215
+ }
216
+ }
217
+ //# sourceMappingURL=setup.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"setup.js","sourceRoot":"","sources":["../../../src/commands/setup.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AA2CpC,wBAAgB,aAAa,IAAI,OAAO,CAoEvC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AA6CpC,wBAAgB,aAAa,IAAI,OAAO,CAwEvC"}
package/dist/src/index.js CHANGED
@@ -16,6 +16,8 @@ import { billingCommand } from "./commands/billing.js";
16
16
  import { auditCommand } from "./commands/audit.js";
17
17
  import { mfaCommand } from "./commands/mfa.js";
18
18
  import { configCommand } from "./commands/config.js";
19
+ import { setupCommand } from "./commands/setup.js";
20
+ import { importCommand } from "./commands/import.js";
19
21
  import { proxyCommand } from "./commands/proxy.js";
20
22
  import { treasuryCommand } from "./commands/treasury.js";
21
23
  import { webhookCommand } from "./commands/webhook.js";
@@ -56,6 +58,9 @@ export function createProgram() {
56
58
  // Security
57
59
  program.addCommand(auditCommand);
58
60
  program.addCommand(mfaCommand);
61
+ // Setup & import
62
+ program.addCommand(setupCommand);
63
+ program.addCommand(importCommand);
59
64
  // Config
60
65
  program.addCommand(configCommand);
61
66
  // Treasury
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,19 @@
1
+ interface CacheMeta {
2
+ vaultId: string;
3
+ cachedAt: string;
4
+ ttlSeconds: number;
5
+ secretCount: number;
6
+ }
7
+ export declare function getCachePath(): string;
8
+ export declare function isCacheValid(vaultId: string, ttlSeconds?: number): boolean;
9
+ export declare function writeCache(token: string, vaultId: string, secrets: Record<string, string>, ttlSeconds?: number): void;
10
+ export declare function readCache(token: string, vaultId: string, ttlSeconds?: number): Record<string, string> | null;
11
+ export declare function clearCache(): boolean;
12
+ export declare function getCacheInfo(): {
13
+ exists: boolean;
14
+ meta?: CacheMeta;
15
+ sizeBytes?: number;
16
+ expired?: boolean;
17
+ };
18
+ export {};
19
+ //# sourceMappingURL=local-cache.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"local-cache.d.ts","sourceRoot":"","sources":["../../src/local-cache.ts"],"names":[],"mappings":"AAuBA,UAAU,SAAS;IACf,OAAO,EAAE,MAAM,CAAC;IAChB,QAAQ,EAAE,MAAM,CAAC;IACjB,UAAU,EAAE,MAAM,CAAC;IACnB,WAAW,EAAE,MAAM,CAAC;CACvB;AAQD,wBAAgB,YAAY,IAAI,MAAM,CAErC;AAED,wBAAgB,YAAY,CAAC,OAAO,EAAE,MAAM,EAAE,UAAU,CAAC,EAAE,MAAM,GAAG,OAAO,CAoB1E;AAED,wBAAgB,UAAU,CACtB,KAAK,EAAE,MAAM,EACb,OAAO,EAAE,MAAM,EACf,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,EAC/B,UAAU,GAAE,MAA4B,GACzC,IAAI,CAsCN;AAED,wBAAgB,SAAS,CACrB,KAAK,EAAE,MAAM,EACb,OAAO,EAAE,MAAM,EACf,UAAU,CAAC,EAAE,MAAM,GACpB,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,IAAI,CA0B/B;AAED,wBAAgB,UAAU,IAAI,OAAO,CAWpC;AAED,wBAAgB,YAAY,IAAI;IAC5B,MAAM,EAAE,OAAO,CAAC;IAChB,IAAI,CAAC,EAAE,SAAS,CAAC;IACjB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,OAAO,CAAC,EAAE,OAAO,CAAC;CACrB,CAwBA"}
@@ -0,0 +1,131 @@
1
+ import { existsSync, readFileSync, writeFileSync, mkdirSync, chmodSync, statSync, unlinkSync, } from "node:fs";
2
+ import { createCipheriv, createDecipheriv, randomBytes, createHash } from "node:crypto";
3
+ import { homedir } from "node:os";
4
+ import { join } from "node:path";
5
+ const CACHE_DIR = process.env.ONECLAW_CONFIG_DIR || join(homedir(), ".config", "1claw");
6
+ const CACHE_FILE = join(CACHE_DIR, "env-cache.enc");
7
+ const CACHE_META_FILE = join(CACHE_DIR, "env-cache.meta.json");
8
+ const ALGORITHM = "aes-256-gcm";
9
+ const IV_LENGTH = 12;
10
+ const TAG_LENGTH = 16;
11
+ const DEFAULT_TTL_SECONDS = 3600; // 1 hour
12
+ function deriveKey(token, salt) {
13
+ return createHash("sha256")
14
+ .update(Buffer.concat([Buffer.from(token, "utf-8"), salt]))
15
+ .digest();
16
+ }
17
+ export function getCachePath() {
18
+ return CACHE_FILE;
19
+ }
20
+ export function isCacheValid(vaultId, ttlSeconds) {
21
+ if (!existsSync(CACHE_META_FILE) || !existsSync(CACHE_FILE)) {
22
+ return false;
23
+ }
24
+ try {
25
+ const meta = JSON.parse(readFileSync(CACHE_META_FILE, "utf-8"));
26
+ if (meta.vaultId !== vaultId)
27
+ return false;
28
+ const ttl = ttlSeconds ?? meta.ttlSeconds ?? DEFAULT_TTL_SECONDS;
29
+ const cachedAt = new Date(meta.cachedAt).getTime();
30
+ const expiresAt = cachedAt + ttl * 1000;
31
+ return Date.now() < expiresAt;
32
+ }
33
+ catch {
34
+ return false;
35
+ }
36
+ }
37
+ export function writeCache(token, vaultId, secrets, ttlSeconds = DEFAULT_TTL_SECONDS) {
38
+ if (!existsSync(CACHE_DIR)) {
39
+ mkdirSync(CACHE_DIR, { recursive: true });
40
+ }
41
+ const salt = randomBytes(16);
42
+ const key = deriveKey(token, salt);
43
+ const iv = randomBytes(IV_LENGTH);
44
+ const plaintext = JSON.stringify(secrets);
45
+ const cipher = createCipheriv(ALGORITHM, key, iv);
46
+ const encrypted = Buffer.concat([
47
+ cipher.update(plaintext, "utf-8"),
48
+ cipher.final(),
49
+ ]);
50
+ const tag = cipher.getAuthTag();
51
+ // File format: [salt:16][iv:12][tag:16][ciphertext]
52
+ const output = Buffer.concat([salt, iv, tag, encrypted]);
53
+ writeFileSync(CACHE_FILE, output);
54
+ try {
55
+ chmodSync(CACHE_FILE, 0o600);
56
+ }
57
+ catch {
58
+ // best-effort
59
+ }
60
+ const meta = {
61
+ vaultId,
62
+ cachedAt: new Date().toISOString(),
63
+ ttlSeconds,
64
+ secretCount: Object.keys(secrets).length,
65
+ };
66
+ writeFileSync(CACHE_META_FILE, JSON.stringify(meta, null, 2), "utf-8");
67
+ try {
68
+ chmodSync(CACHE_META_FILE, 0o600);
69
+ }
70
+ catch {
71
+ // best-effort
72
+ }
73
+ }
74
+ export function readCache(token, vaultId, ttlSeconds) {
75
+ if (!isCacheValid(vaultId, ttlSeconds)) {
76
+ return null;
77
+ }
78
+ try {
79
+ const data = readFileSync(CACHE_FILE);
80
+ const salt = data.subarray(0, 16);
81
+ const iv = data.subarray(16, 16 + IV_LENGTH);
82
+ const tag = data.subarray(16 + IV_LENGTH, 16 + IV_LENGTH + TAG_LENGTH);
83
+ const encrypted = data.subarray(16 + IV_LENGTH + TAG_LENGTH);
84
+ const key = deriveKey(token, salt);
85
+ const decipher = createDecipheriv(ALGORITHM, key, iv);
86
+ decipher.setAuthTag(tag);
87
+ const decrypted = Buffer.concat([
88
+ decipher.update(encrypted),
89
+ decipher.final(),
90
+ ]);
91
+ return JSON.parse(decrypted.toString("utf-8"));
92
+ }
93
+ catch {
94
+ return null;
95
+ }
96
+ }
97
+ export function clearCache() {
98
+ let cleared = false;
99
+ if (existsSync(CACHE_FILE)) {
100
+ unlinkSync(CACHE_FILE);
101
+ cleared = true;
102
+ }
103
+ if (existsSync(CACHE_META_FILE)) {
104
+ unlinkSync(CACHE_META_FILE);
105
+ cleared = true;
106
+ }
107
+ return cleared;
108
+ }
109
+ export function getCacheInfo() {
110
+ if (!existsSync(CACHE_META_FILE)) {
111
+ return { exists: false };
112
+ }
113
+ try {
114
+ const meta = JSON.parse(readFileSync(CACHE_META_FILE, "utf-8"));
115
+ const stat = existsSync(CACHE_FILE)
116
+ ? statSync(CACHE_FILE)
117
+ : undefined;
118
+ const cachedAt = new Date(meta.cachedAt).getTime();
119
+ const expiresAt = cachedAt + meta.ttlSeconds * 1000;
120
+ return {
121
+ exists: true,
122
+ meta,
123
+ sizeBytes: stat?.size,
124
+ expired: Date.now() >= expiresAt,
125
+ };
126
+ }
127
+ catch {
128
+ return { exists: false };
129
+ }
130
+ }
131
+ //# sourceMappingURL=local-cache.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"local-cache.js","sourceRoot":"","sources":["../../src/local-cache.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@1claw/cli",
3
- "version": "0.34.0",
3
+ "version": "0.34.1",
4
4
  "description": "CLI for 1Claw — secrets management for AI agents and humans",
5
5
  "license": "MIT",
6
6
  "repository": {