@1claw/cli 0.32.2 → 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.
@@ -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":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,QAAQ,MAAM,UAAU,CAAC;AAChC,OAAO,GAAG,MAAM,KAAK,CAAC;AACtB,OAAO,EAAW,QAAQ,EAAE,MAAM,cAAc,CAAC;AACjD,OAAO,EAAE,eAAe,EAAE,MAAM,YAAY,CAAC;AAC7C,OAAO,EACH,eAAe,EACf,aAAa,EACb,eAAe,GAElB,MAAM,kBAAkB,CAAC;AAC1B,OAAO,EACH,YAAY,EACZ,UAAU,EACV,YAAY,EACZ,SAAS,GACZ,MAAM,cAAc,CAAC;AACtB,OAAO,EAAE,GAAG,EAAE,MAAM,cAAc,CAAC;AAEnC,MAAM,CAAC,MAAM,YAAY,GAAG,IAAI,OAAO,CAAC,OAAO,CAAC;KAC3C,WAAW,CACR,mEAAmE,CACtE;KACA,MAAM,CAAC,UAAU,EAAE,oDAAoD,CAAC;KACxE,MAAM,CAAC,WAAW,EAAE,2DAA2D,CAAC;KAChF,MAAM,CAAC,iBAAiB,EAAE,gEAAgE,CAAC;KAC3F,MAAM,CAAC,mBAAmB,EAAE,mDAAmD,CAAC;KAChF,MAAM,CAAC,aAAa,EAAE,sDAAsD,CAAC;KAC7E,MAAM,CAAC,KAAK,EAAE,IAAI,EAAE,EAAE;IACnB,IAAI,CAAC;QACD,MAAM,QAAQ,CAAC,IAAI,CAAC,CAAC;IACzB,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACX,IAAI,GAAG,YAAY,KAAK,EAAE,CAAC;YACvB,UAAU,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;QAC5B,CAAC;aAAM,CAAC;YACJ,UAAU,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC;QAC5B,CAAC;QACD,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IACpB,CAAC;AACL,CAAC,CAAC,CAAC;AAEP,KAAK,UAAU,QAAQ,CAAC,IAMvB;IACG,OAAO,CAAC,GAAG,EAAE,CAAC;IACd,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC,CAAC;IACzC,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,wDAAwD,CAAC,CAAC,CAAC;IACjF,OAAO,CAAC,GAAG,EAAE,CAAC;IAEd,gCAAgC;IAChC,IAAI,WAAW,GAAG,IAAI,CAAC,QAAQ,IAAI,EAAE,CAAC;IAEtC,IAAI,CAAC,WAAW,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,CAAC;QACjC,MAAM,KAAK,GAAG,QAAQ,EAAE,CAAC;QACzB,IAAI,CAAC,KAAK,EAAE,CAAC;YACT,SAAS,CAAC,qDAAqD,CAAC,CAAC;YACjE,OAAO,CAAC,GAAG,EAAE,CAAC;YAEd,MAAM,EAAE,WAAW,EAAE,GAAG,MAAM,QAAQ,CAAC,MAAM,CAAC;gBAC1C;oBACI,IAAI,EAAE,SAAS;oBACf,IAAI,EAAE,aAAa;oBACnB,OAAO,EAAE,+BAA+B;oBACxC,OAAO,EAAE,IAAI;iBAChB;aACJ,CAAC,CAAC;YAEH,IAAI,WAAW,EAAE,CAAC;gBACd,MAAM,IAAI,GAAG,MAAM,eAAe,EAAE,CAAC;gBACrC,IAAI,CAAC,IAAI,EAAE,CAAC;oBACR,UAAU,CAAC,yEAAyE,CAAC,CAAC;oBACtF,OAAO;gBACX,CAAC;YACL,CAAC;iBAAM,CAAC;gBACJ,YAAY,CAAC,gEAAgE,CAAC,CAAC;gBAC/E,OAAO;YACX,CAAC;QACL,CAAC;QAED,IAAI,CAAC,WAAW,EAAE,CAAC;YACf,WAAW,GAAG,MAAM,eAAe,EAAE,CAAC;QAC1C,CAAC;IACL,CAAC;IAED,IAAI,CAAC,WAAW,EAAE,CAAC;QACf,UAAU,CAAC,gFAAgF,CAAC,CAAC;QAC7F,OAAO;IACX,CAAC;IAED,4BAA4B;IAC5B,MAAM,OAAO,GAAG,GAAG,CAAC,mCAAmC,CAAC,CAAC,KAAK,EAAE,CAAC;IACjE,MAAM,UAAU,GAAG,eAAe,EAAE,CAAC;IACrC,OAAO,CAAC,IAAI,EAAE,CAAC;IAEf,IAAI,UAAsB,CAAC;IAE3B,IAAI,IAAI,CAAC,MAAM,EAAE,CAAC;QACd,MAAM,KAAK,GAAG,UAAU,CAAC,IAAI,CACzB,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,IAAI,CAAC,MAAM,IAAI,CAAC,CAAC,IAAI,CAAC,WAAW,EAAE,KAAK,IAAI,CAAC,MAAO,CAAC,WAAW,EAAE,CACvF,CAAC;QACF,IAAI,CAAC,KAAK,EAAE,CAAC;YACT,UAAU,CACN,mBAAmB,IAAI,CAAC,MAAM,gBAAgB,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAC3F,CAAC;YACF,OAAO;QACX,CAAC;QACD,UAAU,GAAG,CAAC,KAAK,CAAC,CAAC;IACzB,CAAC;SAAM,CAAC;QACJ,MAAM,QAAQ,GAAG,UAAU,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC;QACtD,IAAI,QAAQ,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YACxB,YAAY,CAAC,yCAAyC,CAAC,CAAC;YACxD,SAAS,CACL,qBAAqB;gBACjB,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAC/C,CAAC;YACF,SAAS,CAAC,iEAAiE,CAAC,CAAC;YAC7E,OAAO;QACX,CAAC;QAED,OAAO,CAAC,GAAG,CACP,KAAK,CAAC,IAAI,CAAC,wBAAwB,CAAC,CACvC,CAAC;QACF,KAAK,MAAM,CAAC,IAAI,QAAQ,EAAE,CAAC;YACvB,OAAO,CAAC,GAAG,CAAC,OAAO,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC;QACrD,CAAC;QACD,MAAM,WAAW,GAAG,UAAU,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC;QAC1D,KAAK,MAAM,CAAC,IAAI,WAAW,EAAE,CAAC;YAC1B,OAAO,CAAC,GAAG,CAAC,OAAO,KAAK,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,KAAK,CAAC,GAAG,CAAC,aAAa,CAAC,EAAE,CAAC,CAAC;QAC1F,CAAC;QACD,OAAO,CAAC,GAAG,EAAE,CAAC;QAEd,MAAM,EAAE,QAAQ,EAAE,GAAG,MAAM,QAAQ,CAAC,MAAM,CAAC;YACvC;gBACI,IAAI,EAAE,UAAU;gBAChB,IAAI,EAAE,UAAU;gBAChB,OAAO,EAAE,4CAA4C;gBACrD,OAAO,EAAE,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;oBAC1B,IAAI,EAAE,CAAC,CAAC,IAAI;oBACZ,KAAK,EAAE,CAAC,CAAC,IAAI;oBACb,OAAO,EAAE,IAAI;iBAChB,CAAC,CAAC;aACN;SACJ,CAAC,CAAC;QAEH,UAAU,GAAG,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC;IACnE,CAAC;IAED,IAAI,UAAU,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QAC1B,SAAS,CAAC,uCAAuC,CAAC,CAAC;QACnD,OAAO;IACX,CAAC;IAED,iCAAiC;IACjC,MAAM,OAAO,GAA2B;QACpC,qBAAqB,EAAE,WAAW;KACrC,CAAC;IAEF,MAAM,KAAK,GAAG,aAAa,CAAC,OAAO,CAAC,CAAC;IAErC,gCAAgC;IAChC,OAAO,CAAC,GAAG,EAAE,CAAC;IACd,IAAI,YAAY,GAAG,CAAC,CAAC;IACrB,KAAK,MAAM,MAAM,IAAI,UAAU,EAAE,CAAC;QAC9B,MAAM,MAAM,GAAG,eAAe,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC;QAC9C,IAAI,MAAM,CAAC,OAAO,EAAE,CAAC;YACjB,YAAY,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;YAC7B,YAAY,EAAE,CAAC;QACnB,CAAC;aAAM,CAAC;YACJ,UAAU,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;QAC/B,CAAC;IACL,CAAC;IAED,kBAAkB;IAClB,OAAO,CAAC,GAAG,EAAE,CAAC;IACd,IAAI,YAAY,GAAG,CAAC,EAAE,CAAC;QACnB,YAAY,CACR,cAAc,YAAY,UAAU,YAAY,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,IAAI;YACnE,+CAA+C,CAClD,CAAC;QACF,OAAO,CAAC,GAAG,EAAE,CAAC;QACd,SAAS,CAAC,kDAAkD,CAAC,CAAC;QAC9D,SAAS,CAAC,kDAAkD,CAAC,CAAC;IAClE,CAAC;SAAM,CAAC;QACJ,YAAY,CAAC,qDAAqD,CAAC,CAAC;IACxE,CAAC;IACD,OAAO,CAAC,GAAG,EAAE,CAAC;AAClB,CAAC;AAED,KAAK,UAAU,eAAe;IAC1B,MAAM,EAAE,MAAM,EAAE,GAAG,MAAM,QAAQ,CAAC,MAAM,CAAC;QACrC;YACI,IAAI,EAAE,MAAM;YACZ,IAAI,EAAE,QAAQ;YACd,OAAO,EAAE,iDAAiD;YAC1D,OAAO,EAAE;gBACL,EAAE,IAAI,EAAE,wBAAwB,EAAE,KAAK,EAAE,QAAQ,EAAE;gBACnD,EAAE,IAAI,EAAE,iCAAiC,EAAE,KAAK,EAAE,OAAO,EAAE;gBAC3D,EAAE,IAAI,EAAE,8CAA8C,EAAE,KAAK,EAAE,KAAK,EAAE;aACzE;SACJ;KACJ,CAAC,CAAC;IAEH,IAAI,MAAM,KAAK,KAAK,EAAE,CAAC;QACnB,MAAM,GAAG,GAAG,OAAO,CAAC,GAAG,CAAC,qBAAqB,CAAC;QAC9C,IAAI,CAAC,GAAG,EAAE,CAAC;YACP,UAAU,CAAC,sDAAsD,CAAC,CAAC;YACnE,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QACpB,CAAC;QACD,OAAO,GAAG,CAAC;IACf,CAAC;IAED,IAAI,MAAM,KAAK,OAAO,EAAE,CAAC;QACrB,MAAM,EAAE,GAAG,EAAE,GAAG,MAAM,QAAQ,CAAC,MAAM,CAAC;YAClC;gBACI,IAAI,EAAE,UAAU;gBAChB,IAAI,EAAE,KAAK;gBACX,OAAO,EAAE,0BAA0B;gBACnC,IAAI,EAAE,GAAG;gBACT,QAAQ,EAAE,CAAC,CAAS,EAAE,EAAE,CACpB,CAAC,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,gCAAgC;aACrE;SACJ,CAAC,CAAC;QACH,OAAO,GAAG,CAAC;IACf,CAAC;IAED,qBAAqB;IACrB,MAAM,EAAE,SAAS,EAAE,GAAG,MAAM,QAAQ,CAAC,MAAM,CAAC;QACxC;YACI,IAAI,EAAE,OAAO;YACb,IAAI,EAAE,WAAW;YACjB,OAAO,EAAE,yBAAyB;YAClC,OAAO,EAAE,WAAW;YACpB,QAAQ,EAAE,CAAC,CAAS,EAAE,EAAE,CACpB,CAAC,CAAC,IAAI,EAAE,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,wBAAwB;SAC5D;KACJ,CAAC,CAAC;IAEH,MAAM,OAAO,GAAG,GAAG,CAAC,mBAAmB,CAAC,CAAC,KAAK,EAAE,CAAC;IACjD,IAAI,CAAC;QACD,MAAM,MAAM,GAAG,MAAM,GAAG,CACpB,SAAS,EACT;YACI,MAAM,EAAE,MAAM;YACd,IAAI,EAAE;gBACF,IAAI,EAAE,SAAS,CAAC,IAAI,EAAE;gBACtB,WAAW,EAAE,iDAAiD;aACjE;SACJ,CACJ,CAAC;QAEF,OAAO,CAAC,OAAO,CAAC,UAAU,SAAS,WAAW,CAAC,CAAC;QAEhD,IAAI,MAAM,CAAC,OAAO,EAAE,CAAC;YACjB,SAAS,CACL,kBAAkB,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,IAAI,KAAK,CAAC,GAAG,CAAC,+BAA+B,CAAC,EAAE,CAC/F,CAAC;YACF,OAAO,MAAM,CAAC,OAAO,CAAC;QAC1B,CAAC;QAED,UAAU,CAAC,2EAA2E,CAAC,CAAC;QACxF,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IACpB,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACX,OAAO,CAAC,IAAI,CAAC,wBAAwB,CAAC,CAAC;QACvC,MAAM,GAAG,CAAC;IACd,CAAC;AACL,CAAC"}