@1claw/cli 0.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (75) hide show
  1. package/LICENSE +133 -0
  2. package/README.md +215 -0
  3. package/dist/bin/1claw.d.ts +3 -0
  4. package/dist/bin/1claw.d.ts.map +1 -0
  5. package/dist/bin/1claw.js +8 -0
  6. package/dist/bin/1claw.js.map +1 -0
  7. package/dist/src/auth.d.ts +6 -0
  8. package/dist/src/auth.d.ts.map +1 -0
  9. package/dist/src/auth.js +151 -0
  10. package/dist/src/auth.js.map +1 -0
  11. package/dist/src/client.d.ts +18 -0
  12. package/dist/src/client.d.ts.map +1 -0
  13. package/dist/src/client.js +58 -0
  14. package/dist/src/client.js.map +1 -0
  15. package/dist/src/commands/agent.d.ts +3 -0
  16. package/dist/src/commands/agent.d.ts.map +1 -0
  17. package/dist/src/commands/agent.js +233 -0
  18. package/dist/src/commands/agent.js.map +1 -0
  19. package/dist/src/commands/audit.d.ts +3 -0
  20. package/dist/src/commands/audit.d.ts.map +1 -0
  21. package/dist/src/commands/audit.js +57 -0
  22. package/dist/src/commands/audit.js.map +1 -0
  23. package/dist/src/commands/billing.d.ts +3 -0
  24. package/dist/src/commands/billing.d.ts.map +1 -0
  25. package/dist/src/commands/billing.js +160 -0
  26. package/dist/src/commands/billing.js.map +1 -0
  27. package/dist/src/commands/config.d.ts +3 -0
  28. package/dist/src/commands/config.d.ts.map +1 -0
  29. package/dist/src/commands/config.js +65 -0
  30. package/dist/src/commands/config.js.map +1 -0
  31. package/dist/src/commands/env.d.ts +3 -0
  32. package/dist/src/commands/env.d.ts.map +1 -0
  33. package/dist/src/commands/env.js +164 -0
  34. package/dist/src/commands/env.js.map +1 -0
  35. package/dist/src/commands/login.d.ts +5 -0
  36. package/dist/src/commands/login.d.ts.map +1 -0
  37. package/dist/src/commands/login.js +88 -0
  38. package/dist/src/commands/login.js.map +1 -0
  39. package/dist/src/commands/mfa.d.ts +3 -0
  40. package/dist/src/commands/mfa.d.ts.map +1 -0
  41. package/dist/src/commands/mfa.js +123 -0
  42. package/dist/src/commands/mfa.js.map +1 -0
  43. package/dist/src/commands/policy.d.ts +3 -0
  44. package/dist/src/commands/policy.d.ts.map +1 -0
  45. package/dist/src/commands/policy.js +114 -0
  46. package/dist/src/commands/policy.js.map +1 -0
  47. package/dist/src/commands/secret.d.ts +3 -0
  48. package/dist/src/commands/secret.d.ts.map +1 -0
  49. package/dist/src/commands/secret.js +206 -0
  50. package/dist/src/commands/secret.js.map +1 -0
  51. package/dist/src/commands/share.d.ts +3 -0
  52. package/dist/src/commands/share.d.ts.map +1 -0
  53. package/dist/src/commands/share.js +145 -0
  54. package/dist/src/commands/share.js.map +1 -0
  55. package/dist/src/commands/vault.d.ts +3 -0
  56. package/dist/src/commands/vault.d.ts.map +1 -0
  57. package/dist/src/commands/vault.js +127 -0
  58. package/dist/src/commands/vault.js.map +1 -0
  59. package/dist/src/config.d.ts +25 -0
  60. package/dist/src/config.d.ts.map +1 -0
  61. package/dist/src/config.js +68 -0
  62. package/dist/src/config.js.map +1 -0
  63. package/dist/src/index.d.ts +3 -0
  64. package/dist/src/index.d.ts.map +1 -0
  65. package/dist/src/index.js +51 -0
  66. package/dist/src/index.js.map +1 -0
  67. package/dist/src/middleware.d.ts +6 -0
  68. package/dist/src/middleware.d.ts.map +1 -0
  69. package/dist/src/middleware.js +35 -0
  70. package/dist/src/middleware.js.map +1 -0
  71. package/dist/src/output.d.ts +12 -0
  72. package/dist/src/output.d.ts.map +1 -0
  73. package/dist/src/output.js +71 -0
  74. package/dist/src/output.js.map +1 -0
  75. package/package.json +57 -0
@@ -0,0 +1,206 @@
1
+ import { Command } from "commander";
2
+ import chalk from "chalk";
3
+ import { api } from "../client.js";
4
+ import { requireToken, resolveVaultId, handleError } from "../middleware.js";
5
+ import { printTable, printKeyValue, printSuccess, printJson, printWarning, } from "../output.js";
6
+ export const secretCommand = new Command("secret").description("Manage secrets");
7
+ secretCommand
8
+ .command("list")
9
+ .alias("ls")
10
+ .description("List secrets in a vault")
11
+ .option("-v, --vault <id>", "Vault ID")
12
+ .option("--prefix <prefix>", "Filter by path prefix")
13
+ .option("--json", "Output as JSON")
14
+ .action(async (opts) => {
15
+ try {
16
+ requireToken();
17
+ const vaultId = resolveVaultId(opts);
18
+ const query = {};
19
+ if (opts.prefix)
20
+ query.prefix = opts.prefix;
21
+ const secrets = await api(`/vaults/${vaultId}/secrets`, {
22
+ query,
23
+ });
24
+ if (opts.json) {
25
+ printJson(secrets);
26
+ return;
27
+ }
28
+ printTable(secrets.map((s) => ({
29
+ ...s,
30
+ updated: new Date(s.updated_at).toLocaleDateString(),
31
+ expires: s.expires_at
32
+ ? new Date(s.expires_at).toLocaleDateString()
33
+ : chalk.dim("—"),
34
+ })), [
35
+ { key: "path", header: "Path", width: 35 },
36
+ { key: "secret_type", header: "Type", width: 14 },
37
+ { key: "version", header: "Ver" },
38
+ { key: "updated", header: "Updated" },
39
+ { key: "expires", header: "Expires" },
40
+ ]);
41
+ }
42
+ catch (err) {
43
+ handleError(err);
44
+ }
45
+ });
46
+ secretCommand
47
+ .command("get <path>")
48
+ .description("Fetch a decrypted secret value")
49
+ .option("-v, --vault <id>", "Vault ID")
50
+ .option("--json", "Output as JSON")
51
+ .option("--quiet", "Print only the raw value (for piping)")
52
+ .action(async (path, opts) => {
53
+ try {
54
+ requireToken();
55
+ const vaultId = resolveVaultId(opts);
56
+ const secret = await api(`/vaults/${vaultId}/secrets/${encodeURIComponent(path)}`);
57
+ if (opts.quiet) {
58
+ process.stdout.write(secret.value);
59
+ return;
60
+ }
61
+ if (opts.json) {
62
+ printJson(secret);
63
+ return;
64
+ }
65
+ printKeyValue([
66
+ ["Path", secret.path],
67
+ ["Type", secret.secret_type],
68
+ ["Version", String(secret.version)],
69
+ ["Value", secret.value],
70
+ ["Updated", new Date(secret.updated_at).toLocaleString()],
71
+ ]);
72
+ }
73
+ catch (err) {
74
+ handleError(err);
75
+ }
76
+ });
77
+ secretCommand
78
+ .command("set <path> [value]")
79
+ .description("Create or update a secret")
80
+ .option("-v, --vault <id>", "Vault ID")
81
+ .option("-t, --type <type>", "Secret type", "api_key")
82
+ .option("-e, --expires <date>", "Expiration date (ISO 8601)")
83
+ .option("--stdin", "Read value from stdin")
84
+ .action(async (path, value, opts) => {
85
+ try {
86
+ requireToken();
87
+ const vaultId = resolveVaultId(opts);
88
+ let secretValue = value;
89
+ if (opts.stdin || !value) {
90
+ const chunks = [];
91
+ for await (const chunk of process.stdin) {
92
+ chunks.push(chunk);
93
+ }
94
+ secretValue = Buffer.concat(chunks).toString().trim();
95
+ }
96
+ if (!secretValue) {
97
+ printWarning("No value provided. Use a value argument or --stdin.");
98
+ process.exit(1);
99
+ }
100
+ const body = {
101
+ value: secretValue,
102
+ secret_type: opts.type,
103
+ };
104
+ if (opts.expires)
105
+ body.expires_at = opts.expires;
106
+ await api(`/vaults/${vaultId}/secrets/${encodeURIComponent(path)}`, {
107
+ method: "PUT",
108
+ body,
109
+ });
110
+ printSuccess(`Secret ${chalk.bold(path)} saved.`);
111
+ }
112
+ catch (err) {
113
+ handleError(err);
114
+ }
115
+ });
116
+ secretCommand
117
+ .command("delete <path>")
118
+ .description("Soft-delete a secret")
119
+ .option("-v, --vault <id>", "Vault ID")
120
+ .option("-y, --yes", "Skip confirmation")
121
+ .action(async (path, opts) => {
122
+ try {
123
+ requireToken();
124
+ const vaultId = resolveVaultId(opts);
125
+ if (!opts.yes) {
126
+ const inquirer = await import("inquirer");
127
+ const { confirm } = await inquirer.default.prompt([
128
+ {
129
+ type: "confirm",
130
+ name: "confirm",
131
+ message: `Delete secret "${path}"?`,
132
+ default: false,
133
+ },
134
+ ]);
135
+ if (!confirm)
136
+ return;
137
+ }
138
+ await api(`/vaults/${vaultId}/secrets/${encodeURIComponent(path)}`, {
139
+ method: "DELETE",
140
+ });
141
+ printSuccess(`Secret ${chalk.bold(path)} deleted.`);
142
+ }
143
+ catch (err) {
144
+ handleError(err);
145
+ }
146
+ });
147
+ secretCommand
148
+ .command("rotate <path> [value]")
149
+ .description("Store a new version of an existing secret")
150
+ .option("-v, --vault <id>", "Vault ID")
151
+ .option("--stdin", "Read value from stdin")
152
+ .action(async (path, value, opts) => {
153
+ try {
154
+ requireToken();
155
+ const vaultId = resolveVaultId(opts);
156
+ let secretValue = value;
157
+ if (opts.stdin || !value) {
158
+ const chunks = [];
159
+ for await (const chunk of process.stdin) {
160
+ chunks.push(chunk);
161
+ }
162
+ secretValue = Buffer.concat(chunks).toString().trim();
163
+ }
164
+ await api(`/vaults/${vaultId}/secrets/${encodeURIComponent(path)}`, {
165
+ method: "PUT",
166
+ body: { value: secretValue },
167
+ });
168
+ printSuccess(`Secret ${chalk.bold(path)} rotated.`);
169
+ }
170
+ catch (err) {
171
+ handleError(err);
172
+ }
173
+ });
174
+ secretCommand
175
+ .command("describe <path>")
176
+ .description("Get secret metadata (no value)")
177
+ .option("-v, --vault <id>", "Vault ID")
178
+ .option("--json", "Output as JSON")
179
+ .action(async (path, opts) => {
180
+ try {
181
+ requireToken();
182
+ const vaultId = resolveVaultId(opts);
183
+ const secret = await api(`/vaults/${vaultId}/secrets/${encodeURIComponent(path)}/metadata`);
184
+ if (opts.json) {
185
+ printJson(secret);
186
+ return;
187
+ }
188
+ printKeyValue([
189
+ ["Path", secret.path],
190
+ ["Type", secret.secret_type],
191
+ ["Version", String(secret.version)],
192
+ ["Created", new Date(secret.created_at).toLocaleString()],
193
+ ["Updated", new Date(secret.updated_at).toLocaleString()],
194
+ [
195
+ "Expires",
196
+ secret.expires_at
197
+ ? new Date(secret.expires_at).toLocaleString()
198
+ : "never",
199
+ ],
200
+ ]);
201
+ }
202
+ catch (err) {
203
+ handleError(err);
204
+ }
205
+ });
206
+ //# sourceMappingURL=secret.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"secret.js","sourceRoot":"","sources":["../../../src/commands/secret.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,3 @@
1
+ import { Command } from "commander";
2
+ export declare const shareCommand: Command;
3
+ //# sourceMappingURL=share.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"share.d.ts","sourceRoot":"","sources":["../../../src/commands/share.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AA2BpC,eAAO,MAAM,YAAY,SAExB,CAAC"}
@@ -0,0 +1,145 @@
1
+ import { Command } from "commander";
2
+ import chalk from "chalk";
3
+ import { api } from "../client.js";
4
+ import { requireToken, handleError } from "../middleware.js";
5
+ import { printTable, printKeyValue, printSuccess, printJson, } from "../output.js";
6
+ export const shareCommand = new Command("share").description("Share secrets with users and agents");
7
+ shareCommand
8
+ .command("create <secret-id>")
9
+ .description("Create a share link or targeted share")
10
+ .option("--to <recipient>", "Recipient: user:<id>, agent:<id>, or email address")
11
+ .option("--expires <date>", "Expiration date (ISO 8601)")
12
+ .option("--max-access <n>", "Maximum access count", parseInt)
13
+ .option("--passphrase <phrase>", "Require passphrase to access")
14
+ .option("--link", "Create an open share link (anyone with link)")
15
+ .action(async (secretId, opts) => {
16
+ try {
17
+ requireToken();
18
+ const body = { secret_id: secretId };
19
+ if (opts.link) {
20
+ body.recipient_type = "anyone_with_link";
21
+ }
22
+ else if (opts.to) {
23
+ if (opts.to.startsWith("user:")) {
24
+ body.recipient_type = "user";
25
+ body.recipient_id = opts.to.slice(5);
26
+ }
27
+ else if (opts.to.startsWith("agent:")) {
28
+ body.recipient_type = "agent";
29
+ body.recipient_id = opts.to.slice(6);
30
+ }
31
+ else if (opts.to.includes("@")) {
32
+ body.recipient_type = "external_email";
33
+ body.recipient_email = opts.to;
34
+ }
35
+ else {
36
+ body.recipient_type = "user";
37
+ body.recipient_id = opts.to;
38
+ }
39
+ }
40
+ else {
41
+ body.recipient_type = "anyone_with_link";
42
+ }
43
+ if (opts.expires)
44
+ body.expires_at = opts.expires;
45
+ if (opts.maxAccess)
46
+ body.max_access_count = opts.maxAccess;
47
+ if (opts.passphrase)
48
+ body.passphrase = opts.passphrase;
49
+ const share = await api("/shares", { method: "POST", body });
50
+ printSuccess("Share created.");
51
+ printKeyValue([
52
+ ["Share ID", share.id],
53
+ ["Recipient", share.recipient_type],
54
+ ["Expires", share.expires_at ?? "never"],
55
+ ]);
56
+ if (share.share_url) {
57
+ console.log();
58
+ console.log(` ${chalk.underline(share.share_url)}`);
59
+ console.log();
60
+ }
61
+ }
62
+ catch (err) {
63
+ handleError(err);
64
+ }
65
+ });
66
+ shareCommand
67
+ .command("list")
68
+ .alias("ls")
69
+ .description("List shares")
70
+ .option("--inbound", "Show shares sent to you")
71
+ .option("--outbound", "Show shares you created (default)")
72
+ .option("--json", "Output as JSON")
73
+ .action(async (opts) => {
74
+ try {
75
+ requireToken();
76
+ const direction = opts.inbound ? "inbound" : "outbound";
77
+ const shares = await api(`/shares?direction=${direction}`);
78
+ if (opts.json) {
79
+ printJson(shares);
80
+ return;
81
+ }
82
+ printTable(shares.map((s) => ({
83
+ ...s,
84
+ target: s.recipient_email ??
85
+ s.recipient_id?.slice(0, 8) ??
86
+ "link",
87
+ expires: s.expires_at
88
+ ? new Date(s.expires_at).toLocaleDateString()
89
+ : chalk.dim("never"),
90
+ access: `${s.access_count}/${s.max_access_count ?? "∞"}`,
91
+ created: new Date(s.created_at).toLocaleDateString(),
92
+ })), [
93
+ { key: "id", header: "ID", width: 36 },
94
+ { key: "secret_path", header: "Secret", width: 24 },
95
+ { key: "recipient_type", header: "Type", width: 14 },
96
+ { key: "target", header: "Recipient", width: 20 },
97
+ { key: "status", header: "Status" },
98
+ { key: "access", header: "Access" },
99
+ { key: "expires", header: "Expires" },
100
+ ]);
101
+ }
102
+ catch (err) {
103
+ handleError(err);
104
+ }
105
+ });
106
+ shareCommand
107
+ .command("accept <id>")
108
+ .description("Accept an inbound share")
109
+ .action(async (id) => {
110
+ try {
111
+ requireToken();
112
+ await api(`/shares/${id}/accept`, { method: "POST" });
113
+ printSuccess("Share accepted.");
114
+ }
115
+ catch (err) {
116
+ handleError(err);
117
+ }
118
+ });
119
+ shareCommand
120
+ .command("decline <id>")
121
+ .description("Decline an inbound share")
122
+ .action(async (id) => {
123
+ try {
124
+ requireToken();
125
+ await api(`/shares/${id}/decline`, { method: "POST" });
126
+ printSuccess("Share declined.");
127
+ }
128
+ catch (err) {
129
+ handleError(err);
130
+ }
131
+ });
132
+ shareCommand
133
+ .command("revoke <id>")
134
+ .description("Revoke a share you created")
135
+ .action(async (id) => {
136
+ try {
137
+ requireToken();
138
+ await api(`/shares/${id}`, { method: "DELETE" });
139
+ printSuccess("Share revoked.");
140
+ }
141
+ catch (err) {
142
+ handleError(err);
143
+ }
144
+ });
145
+ //# sourceMappingURL=share.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"share.js","sourceRoot":"","sources":["../../../src/commands/share.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,3 @@
1
+ import { Command } from "commander";
2
+ export declare const vaultCommand: Command;
3
+ //# sourceMappingURL=vault.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"vault.d.ts","sourceRoot":"","sources":["../../../src/commands/vault.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAqBpC,eAAO,MAAM,YAAY,SAAoD,CAAC"}
@@ -0,0 +1,127 @@
1
+ import { Command } from "commander";
2
+ import chalk from "chalk";
3
+ import { api } from "../client.js";
4
+ import { requireToken, handleError } from "../middleware.js";
5
+ import { setDefaultVaultId, getDefaultVaultId } from "../config.js";
6
+ import { printTable, printKeyValue, printSuccess, printJson, } from "../output.js";
7
+ export const vaultCommand = new Command("vault").description("Manage vaults");
8
+ vaultCommand
9
+ .command("list")
10
+ .alias("ls")
11
+ .description("List all vaults")
12
+ .option("--json", "Output as JSON")
13
+ .action(async (opts) => {
14
+ try {
15
+ requireToken();
16
+ const vaults = await api("/vaults");
17
+ if (opts.json) {
18
+ printJson(vaults);
19
+ return;
20
+ }
21
+ const defaultId = getDefaultVaultId();
22
+ printTable(vaults.map((v) => ({
23
+ ...v,
24
+ name: v.id === defaultId
25
+ ? `${v.name} ${chalk.green("(linked)")}`
26
+ : v.name,
27
+ created: new Date(v.created_at).toLocaleDateString(),
28
+ })), [
29
+ { key: "id", header: "ID", width: 36 },
30
+ { key: "name", header: "Name", width: 30 },
31
+ { key: "description", header: "Description", width: 30 },
32
+ { key: "created", header: "Created" },
33
+ ]);
34
+ }
35
+ catch (err) {
36
+ handleError(err);
37
+ }
38
+ });
39
+ vaultCommand
40
+ .command("create <name>")
41
+ .description("Create a new vault")
42
+ .option("-d, --description <desc>", "Vault description")
43
+ .action(async (name, opts) => {
44
+ try {
45
+ requireToken();
46
+ const vault = await api("/vaults", {
47
+ method: "POST",
48
+ body: { name, description: opts.description ?? "" },
49
+ });
50
+ printSuccess(`Vault created: ${chalk.bold(vault.name)} (${vault.id})`);
51
+ }
52
+ catch (err) {
53
+ handleError(err);
54
+ }
55
+ });
56
+ vaultCommand
57
+ .command("get <id>")
58
+ .description("Get vault details")
59
+ .option("--json", "Output as JSON")
60
+ .action(async (id, opts) => {
61
+ try {
62
+ requireToken();
63
+ const vault = await api(`/vaults/${id}`);
64
+ if (opts.json) {
65
+ printJson(vault);
66
+ return;
67
+ }
68
+ printKeyValue([
69
+ ["ID", vault.id],
70
+ ["Name", vault.name],
71
+ ["Description", vault.description || chalk.dim("(none)")],
72
+ ["Created", new Date(vault.created_at).toLocaleString()],
73
+ ]);
74
+ }
75
+ catch (err) {
76
+ handleError(err);
77
+ }
78
+ });
79
+ vaultCommand
80
+ .command("delete <id>")
81
+ .description("Delete a vault")
82
+ .option("-y, --yes", "Skip confirmation")
83
+ .action(async (id, opts) => {
84
+ try {
85
+ requireToken();
86
+ if (!opts.yes) {
87
+ const inquirer = await import("inquirer");
88
+ const { confirm } = await inquirer.default.prompt([
89
+ {
90
+ type: "confirm",
91
+ name: "confirm",
92
+ message: `Delete vault ${id}? This cannot be undone.`,
93
+ default: false,
94
+ },
95
+ ]);
96
+ if (!confirm)
97
+ return;
98
+ }
99
+ await api(`/vaults/${id}`, { method: "DELETE" });
100
+ printSuccess("Vault deleted.");
101
+ }
102
+ catch (err) {
103
+ handleError(err);
104
+ }
105
+ });
106
+ vaultCommand
107
+ .command("link <id>")
108
+ .description("Link current directory to a vault (used as default for other commands)")
109
+ .action(async (id) => {
110
+ try {
111
+ requireToken();
112
+ const vault = await api(`/vaults/${id}`);
113
+ setDefaultVaultId(id);
114
+ printSuccess(`Linked to vault ${chalk.bold(vault.name)} (${id}). This is now the default vault.`);
115
+ }
116
+ catch (err) {
117
+ handleError(err);
118
+ }
119
+ });
120
+ vaultCommand
121
+ .command("unlink")
122
+ .description("Remove the default vault link")
123
+ .action(() => {
124
+ setDefaultVaultId("");
125
+ printSuccess("Default vault unlinked.");
126
+ });
127
+ //# sourceMappingURL=vault.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"vault.js","sourceRoot":"","sources":["../../../src/commands/vault.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,EAAE,GAAG,EAAE,MAAM,cAAc,CAAC;AACnC,OAAO,EAAE,YAAY,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAC7D,OAAO,EAAE,iBAAiB,EAAE,iBAAiB,EAAE,MAAM,cAAc,CAAC;AACpE,OAAO,EACH,UAAU,EACV,aAAa,EACb,YAAY,EAEZ,SAAS,GACZ,MAAM,cAAc,CAAC;AAUtB,MAAM,CAAC,MAAM,YAAY,GAAG,IAAI,OAAO,CAAC,OAAO,CAAC,CAAC,WAAW,CAAC,eAAe,CAAC,CAAC;AAE9E,YAAY;KACP,OAAO,CAAC,MAAM,CAAC;KACf,KAAK,CAAC,IAAI,CAAC;KACX,WAAW,CAAC,iBAAiB,CAAC;KAC9B,MAAM,CAAC,QAAQ,EAAE,gBAAgB,CAAC;KAClC,MAAM,CAAC,KAAK,EAAE,IAAI,EAAE,EAAE;IACnB,IAAI,CAAC;QACD,YAAY,EAAE,CAAC;QACf,MAAM,MAAM,GAAG,MAAM,GAAG,CAAU,SAAS,CAAC,CAAC;QAE7C,IAAI,IAAI,CAAC,IAAI,EAAE,CAAC;YACZ,SAAS,CAAC,MAAM,CAAC,CAAC;YAClB,OAAO;QACX,CAAC;QAED,MAAM,SAAS,GAAG,iBAAiB,EAAE,CAAC;QACtC,UAAU,CACN,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;YACf,GAAG,CAAC;YACJ,IAAI,EACA,CAAC,CAAC,EAAE,KAAK,SAAS;gBACd,CAAC,CAAC,GAAG,CAAC,CAAC,IAAI,IAAI,KAAK,CAAC,KAAK,CAAC,UAAU,CAAC,EAAE;gBACxC,CAAC,CAAC,CAAC,CAAC,IAAI;YAChB,OAAO,EAAE,IAAI,IAAI,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,kBAAkB,EAAE;SACvD,CAAC,CAAC,EACH;YACI,EAAE,GAAG,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,KAAK,EAAE,EAAE,EAAE;YACtC,EAAE,GAAG,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,EAAE,EAAE;YAC1C,EAAE,GAAG,EAAE,aAAa,EAAE,MAAM,EAAE,aAAa,EAAE,KAAK,EAAE,EAAE,EAAE;YACxD,EAAE,GAAG,EAAE,SAAS,EAAE,MAAM,EAAE,SAAS,EAAE;SACxC,CACJ,CAAC;IACN,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACX,WAAW,CAAC,GAAG,CAAC,CAAC;IACrB,CAAC;AACL,CAAC,CAAC,CAAC;AAEP,YAAY;KACP,OAAO,CAAC,eAAe,CAAC;KACxB,WAAW,CAAC,oBAAoB,CAAC;KACjC,MAAM,CAAC,0BAA0B,EAAE,mBAAmB,CAAC;KACvD,MAAM,CAAC,KAAK,EAAE,IAAI,EAAE,IAAI,EAAE,EAAE;IACzB,IAAI,CAAC;QACD,YAAY,EAAE,CAAC;QACf,MAAM,KAAK,GAAG,MAAM,GAAG,CAAQ,SAAS,EAAE;YACtC,MAAM,EAAE,MAAM;YACd,IAAI,EAAE,EAAE,IAAI,EAAE,WAAW,EAAE,IAAI,CAAC,WAAW,IAAI,EAAE,EAAE;SACtD,CAAC,CAAC;QACH,YAAY,CACR,kBAAkB,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,KAAK,CAAC,EAAE,GAAG,CAC3D,CAAC;IACN,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACX,WAAW,CAAC,GAAG,CAAC,CAAC;IACrB,CAAC;AACL,CAAC,CAAC,CAAC;AAEP,YAAY;KACP,OAAO,CAAC,UAAU,CAAC;KACnB,WAAW,CAAC,mBAAmB,CAAC;KAChC,MAAM,CAAC,QAAQ,EAAE,gBAAgB,CAAC;KAClC,MAAM,CAAC,KAAK,EAAE,EAAE,EAAE,IAAI,EAAE,EAAE;IACvB,IAAI,CAAC;QACD,YAAY,EAAE,CAAC;QACf,MAAM,KAAK,GAAG,MAAM,GAAG,CAAQ,WAAW,EAAE,EAAE,CAAC,CAAC;QAEhD,IAAI,IAAI,CAAC,IAAI,EAAE,CAAC;YACZ,SAAS,CAAC,KAAK,CAAC,CAAC;YACjB,OAAO;QACX,CAAC;QAED,aAAa,CAAC;YACV,CAAC,IAAI,EAAE,KAAK,CAAC,EAAE,CAAC;YAChB,CAAC,MAAM,EAAE,KAAK,CAAC,IAAI,CAAC;YACpB,CAAC,aAAa,EAAE,KAAK,CAAC,WAAW,IAAI,KAAK,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;YACzD,CAAC,SAAS,EAAE,IAAI,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC,cAAc,EAAE,CAAC;SAC3D,CAAC,CAAC;IACP,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACX,WAAW,CAAC,GAAG,CAAC,CAAC;IACrB,CAAC;AACL,CAAC,CAAC,CAAC;AAEP,YAAY;KACP,OAAO,CAAC,aAAa,CAAC;KACtB,WAAW,CAAC,gBAAgB,CAAC;KAC7B,MAAM,CAAC,WAAW,EAAE,mBAAmB,CAAC;KACxC,MAAM,CAAC,KAAK,EAAE,EAAE,EAAE,IAAI,EAAE,EAAE;IACvB,IAAI,CAAC;QACD,YAAY,EAAE,CAAC;QAEf,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC;YACZ,MAAM,QAAQ,GAAG,MAAM,MAAM,CAAC,UAAU,CAAC,CAAC;YAC1C,MAAM,EAAE,OAAO,EAAE,GAAG,MAAM,QAAQ,CAAC,OAAO,CAAC,MAAM,CAAC;gBAC9C;oBACI,IAAI,EAAE,SAAS;oBACf,IAAI,EAAE,SAAS;oBACf,OAAO,EAAE,gBAAgB,EAAE,0BAA0B;oBACrD,OAAO,EAAE,KAAK;iBACjB;aACJ,CAAC,CAAC;YACH,IAAI,CAAC,OAAO;gBAAE,OAAO;QACzB,CAAC;QAED,MAAM,GAAG,CAAC,WAAW,EAAE,EAAE,EAAE,EAAE,MAAM,EAAE,QAAQ,EAAE,CAAC,CAAC;QACjD,YAAY,CAAC,gBAAgB,CAAC,CAAC;IACnC,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACX,WAAW,CAAC,GAAG,CAAC,CAAC;IACrB,CAAC;AACL,CAAC,CAAC,CAAC;AAEP,YAAY;KACP,OAAO,CAAC,WAAW,CAAC;KACpB,WAAW,CACR,wEAAwE,CAC3E;KACA,MAAM,CAAC,KAAK,EAAE,EAAE,EAAE,EAAE;IACjB,IAAI,CAAC;QACD,YAAY,EAAE,CAAC;QACf,MAAM,KAAK,GAAG,MAAM,GAAG,CAAQ,WAAW,EAAE,EAAE,CAAC,CAAC;QAChD,iBAAiB,CAAC,EAAE,CAAC,CAAC;QACtB,YAAY,CACR,mBAAmB,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,EAAE,mCAAmC,CACtF,CAAC;IACN,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACX,WAAW,CAAC,GAAG,CAAC,CAAC;IACrB,CAAC;AACL,CAAC,CAAC,CAAC;AAEP,YAAY;KACP,OAAO,CAAC,QAAQ,CAAC;KACjB,WAAW,CAAC,+BAA+B,CAAC;KAC5C,MAAM,CAAC,GAAG,EAAE;IACT,iBAAiB,CAAC,EAAE,CAAC,CAAC;IACtB,YAAY,CAAC,yBAAyB,CAAC,CAAC;AAC5C,CAAC,CAAC,CAAC"}
@@ -0,0 +1,25 @@
1
+ export interface StoredAuth {
2
+ token: string;
3
+ email: string;
4
+ userId: string;
5
+ orgId: string;
6
+ expiresAt?: string;
7
+ }
8
+ export interface ProjectLink {
9
+ vaultId: string;
10
+ apiUrl: string;
11
+ }
12
+ export declare function getAuth(): StoredAuth | null;
13
+ export declare function setAuth(auth: StoredAuth): void;
14
+ export declare function clearAuth(): void;
15
+ export declare function getToken(): string | null;
16
+ export declare function getApiUrl(): string;
17
+ export declare function setApiUrl(url: string): void;
18
+ export declare function getDefaultVaultId(): string | null;
19
+ export declare function setDefaultVaultId(id: string): void;
20
+ export declare function getOutputFormat(): "table" | "json" | "plain";
21
+ export declare function setOutputFormat(format: "table" | "json" | "plain"): void;
22
+ export declare function getProjectLink(dir: string): ProjectLink | null;
23
+ export declare function setProjectLink(dir: string, link: ProjectLink): void;
24
+ export declare function getConfigPath(): string;
25
+ //# sourceMappingURL=config.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../../src/config.ts"],"names":[],"mappings":"AAIA,MAAM,WAAW,UAAU;IACvB,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,MAAM,CAAC;IACf,KAAK,EAAE,MAAM,CAAC;IACd,SAAS,CAAC,EAAE,MAAM,CAAC;CACtB;AAED,MAAM,WAAW,WAAW;IACxB,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,EAAE,MAAM,CAAC;CAClB;AAsBD,wBAAgB,OAAO,IAAI,UAAU,GAAG,IAAI,CAU3C;AAED,wBAAgB,OAAO,CAAC,IAAI,EAAE,UAAU,GAAG,IAAI,CAE9C;AAED,wBAAgB,SAAS,IAAI,IAAI,CAEhC;AAED,wBAAgB,QAAQ,IAAI,MAAM,GAAG,IAAI,CAIxC;AAED,wBAAgB,SAAS,IAAI,MAAM,CAElC;AAED,wBAAgB,SAAS,CAAC,GAAG,EAAE,MAAM,GAAG,IAAI,CAE3C;AAED,wBAAgB,iBAAiB,IAAI,MAAM,GAAG,IAAI,CAEjD;AAED,wBAAgB,iBAAiB,CAAC,EAAE,EAAE,MAAM,GAAG,IAAI,CAElD;AAED,wBAAgB,eAAe,IAAI,OAAO,GAAG,MAAM,GAAG,OAAO,CAE5D;AAED,wBAAgB,eAAe,CAAC,MAAM,EAAE,OAAO,GAAG,MAAM,GAAG,OAAO,GAAG,IAAI,CAExE;AAED,wBAAgB,cAAc,CAAC,GAAG,EAAE,MAAM,GAAG,WAAW,GAAG,IAAI,CAE9D;AAED,wBAAgB,cAAc,CAAC,GAAG,EAAE,MAAM,EAAE,IAAI,EAAE,WAAW,GAAG,IAAI,CAInE;AAED,wBAAgB,aAAa,IAAI,MAAM,CAEtC"}
@@ -0,0 +1,68 @@
1
+ import Conf from "conf";
2
+ import { homedir } from "node:os";
3
+ import { join } from "node:path";
4
+ const config = new Conf({
5
+ projectName: "1claw",
6
+ cwd: join(homedir(), ".config", "1claw"),
7
+ defaults: {
8
+ auth: null,
9
+ apiUrl: "https://api.1claw.xyz",
10
+ projectLinks: {},
11
+ defaultVaultId: null,
12
+ outputFormat: "table",
13
+ },
14
+ });
15
+ export function getAuth() {
16
+ if (process.env.ONECLAW_TOKEN) {
17
+ return {
18
+ token: process.env.ONECLAW_TOKEN,
19
+ email: "env",
20
+ userId: "env",
21
+ orgId: "env",
22
+ };
23
+ }
24
+ return config.get("auth");
25
+ }
26
+ export function setAuth(auth) {
27
+ config.set("auth", auth);
28
+ }
29
+ export function clearAuth() {
30
+ config.set("auth", null);
31
+ }
32
+ export function getToken() {
33
+ if (process.env.ONECLAW_TOKEN)
34
+ return process.env.ONECLAW_TOKEN;
35
+ if (process.env.ONECLAW_API_KEY)
36
+ return process.env.ONECLAW_API_KEY;
37
+ return config.get("auth")?.token ?? null;
38
+ }
39
+ export function getApiUrl() {
40
+ return process.env.ONECLAW_API_URL ?? config.get("apiUrl");
41
+ }
42
+ export function setApiUrl(url) {
43
+ config.set("apiUrl", url);
44
+ }
45
+ export function getDefaultVaultId() {
46
+ return process.env.ONECLAW_VAULT_ID ?? config.get("defaultVaultId");
47
+ }
48
+ export function setDefaultVaultId(id) {
49
+ config.set("defaultVaultId", id);
50
+ }
51
+ export function getOutputFormat() {
52
+ return config.get("outputFormat");
53
+ }
54
+ export function setOutputFormat(format) {
55
+ config.set("outputFormat", format);
56
+ }
57
+ export function getProjectLink(dir) {
58
+ return config.get("projectLinks")[dir] ?? null;
59
+ }
60
+ export function setProjectLink(dir, link) {
61
+ const links = config.get("projectLinks");
62
+ links[dir] = link;
63
+ config.set("projectLinks", links);
64
+ }
65
+ export function getConfigPath() {
66
+ return config.path;
67
+ }
68
+ //# sourceMappingURL=config.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"config.js","sourceRoot":"","sources":["../../src/config.ts"],"names":[],"mappings":"AAAA,OAAO,IAAI,MAAM,MAAM,CAAC;AACxB,OAAO,EAAE,OAAO,EAAE,MAAM,SAAS,CAAC;AAClC,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AAuBjC,MAAM,MAAM,GAAG,IAAI,IAAI,CAAe;IAClC,WAAW,EAAE,OAAO;IACpB,GAAG,EAAE,IAAI,CAAC,OAAO,EAAE,EAAE,SAAS,EAAE,OAAO,CAAC;IACxC,QAAQ,EAAE;QACN,IAAI,EAAE,IAAI;QACV,MAAM,EAAE,uBAAuB;QAC/B,YAAY,EAAE,EAAE;QAChB,cAAc,EAAE,IAAI;QACpB,YAAY,EAAE,OAAO;KACxB;CACJ,CAAC,CAAC;AAEH,MAAM,UAAU,OAAO;IACnB,IAAI,OAAO,CAAC,GAAG,CAAC,aAAa,EAAE,CAAC;QAC5B,OAAO;YACH,KAAK,EAAE,OAAO,CAAC,GAAG,CAAC,aAAa;YAChC,KAAK,EAAE,KAAK;YACZ,MAAM,EAAE,KAAK;YACb,KAAK,EAAE,KAAK;SACf,CAAC;IACN,CAAC;IACD,OAAO,MAAM,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;AAC9B,CAAC;AAED,MAAM,UAAU,OAAO,CAAC,IAAgB;IACpC,MAAM,CAAC,GAAG,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC;AAC7B,CAAC;AAED,MAAM,UAAU,SAAS;IACrB,MAAM,CAAC,GAAG,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC;AAC7B,CAAC;AAED,MAAM,UAAU,QAAQ;IACpB,IAAI,OAAO,CAAC,GAAG,CAAC,aAAa;QAAE,OAAO,OAAO,CAAC,GAAG,CAAC,aAAa,CAAC;IAChE,IAAI,OAAO,CAAC,GAAG,CAAC,eAAe;QAAE,OAAO,OAAO,CAAC,GAAG,CAAC,eAAe,CAAC;IACpE,OAAO,MAAM,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,KAAK,IAAI,IAAI,CAAC;AAC7C,CAAC;AAED,MAAM,UAAU,SAAS;IACrB,OAAO,OAAO,CAAC,GAAG,CAAC,eAAe,IAAI,MAAM,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;AAC/D,CAAC;AAED,MAAM,UAAU,SAAS,CAAC,GAAW;IACjC,MAAM,CAAC,GAAG,CAAC,QAAQ,EAAE,GAAG,CAAC,CAAC;AAC9B,CAAC;AAED,MAAM,UAAU,iBAAiB;IAC7B,OAAO,OAAO,CAAC,GAAG,CAAC,gBAAgB,IAAI,MAAM,CAAC,GAAG,CAAC,gBAAgB,CAAC,CAAC;AACxE,CAAC;AAED,MAAM,UAAU,iBAAiB,CAAC,EAAU;IACxC,MAAM,CAAC,GAAG,CAAC,gBAAgB,EAAE,EAAE,CAAC,CAAC;AACrC,CAAC;AAED,MAAM,UAAU,eAAe;IAC3B,OAAO,MAAM,CAAC,GAAG,CAAC,cAAc,CAAC,CAAC;AACtC,CAAC;AAED,MAAM,UAAU,eAAe,CAAC,MAAkC;IAC9D,MAAM,CAAC,GAAG,CAAC,cAAc,EAAE,MAAM,CAAC,CAAC;AACvC,CAAC;AAED,MAAM,UAAU,cAAc,CAAC,GAAW;IACtC,OAAO,MAAM,CAAC,GAAG,CAAC,cAAc,CAAC,CAAC,GAAG,CAAC,IAAI,IAAI,CAAC;AACnD,CAAC;AAED,MAAM,UAAU,cAAc,CAAC,GAAW,EAAE,IAAiB;IACzD,MAAM,KAAK,GAAG,MAAM,CAAC,GAAG,CAAC,cAAc,CAAC,CAAC;IACzC,KAAK,CAAC,GAAG,CAAC,GAAG,IAAI,CAAC;IAClB,MAAM,CAAC,GAAG,CAAC,cAAc,EAAE,KAAK,CAAC,CAAC;AACtC,CAAC;AAED,MAAM,UAAU,aAAa;IACzB,OAAO,MAAM,CAAC,IAAI,CAAC;AACvB,CAAC"}
@@ -0,0 +1,3 @@
1
+ import { Command } from "commander";
2
+ export declare function createProgram(): Command;
3
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAkBpC,wBAAgB,aAAa,IAAI,OAAO,CA+CvC"}