@heyditto/cli 1.0.0 → 1.1.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 +3 -3
- package/dist/cli.js +120 -39
- package/dist/cli.js.map +1 -1
- package/dist/config.d.ts +9 -2
- package/dist/config.js +22 -4
- package/dist/config.js.map +1 -1
- package/dist/store.d.ts +3 -0
- package/dist/store.js +38 -0
- package/dist/store.js.map +1 -0
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -4,7 +4,7 @@
|
|
|
4
4
|
|
|
5
5
|
```bash
|
|
6
6
|
npm install -g @heyditto/cli
|
|
7
|
-
export DITTO_API_KEY=ditto_mcp_… # https://app.heyditto.ai/
|
|
7
|
+
export DITTO_API_KEY=ditto_mcp_… # https://app.heyditto.ai/connect/openclaw
|
|
8
8
|
|
|
9
9
|
ditto save "I prefer TypeScript over JS for new projects"
|
|
10
10
|
ditto search "language preferences"
|
|
@@ -21,7 +21,7 @@ npx -y @heyditto/cli search "what did I say about X"
|
|
|
21
21
|
|
|
22
22
|
## Auth
|
|
23
23
|
|
|
24
|
-
Set `DITTO_API_KEY` in your environment. Get a key at **https://app.heyditto.ai/
|
|
24
|
+
Set `DITTO_API_KEY` in your environment. Get a key at **https://app.heyditto.ai/connect/openclaw**.
|
|
25
25
|
|
|
26
26
|
```bash
|
|
27
27
|
export DITTO_API_KEY=ditto_mcp_…
|
|
@@ -103,7 +103,7 @@ Print a Claude Desktop / Cursor / generic-MCP-client config snippet for the Ditt
|
|
|
103
103
|
|
|
104
104
|
## Environment
|
|
105
105
|
|
|
106
|
-
- `DITTO_API_KEY` (required) — MCP API key. https://app.heyditto.ai/
|
|
106
|
+
- `DITTO_API_KEY` (required) — MCP API key. https://app.heyditto.ai/connect/openclaw
|
|
107
107
|
- `DITTO_API_BASE` (optional) — API base URL. Defaults to `https://api.heyditto.ai`. Useful for local dev (`http://localhost:3400`).
|
|
108
108
|
|
|
109
109
|
## Output
|
package/dist/cli.js
CHANGED
|
@@ -1,8 +1,11 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
|
+
import { spawn } from "node:child_process";
|
|
3
|
+
import { createInterface } from "node:readline/promises";
|
|
2
4
|
import { parseArgs } from "node:util";
|
|
3
5
|
import { Client } from "@modelcontextprotocol/sdk/client/index.js";
|
|
4
6
|
import { StreamableHTTPClientTransport } from "@modelcontextprotocol/sdk/client/streamableHttp.js";
|
|
5
|
-
import { apiBaseURL,
|
|
7
|
+
import { apiBaseURL, authFilePath, mcpServerURL, newKeyURL, packageName, packageVersion, resolveApiKey, } from "./config.js";
|
|
8
|
+
import { clearStoredKey, writeStoredKey } from "./store.js";
|
|
6
9
|
function usage() {
|
|
7
10
|
return `${packageName} ${packageVersion}
|
|
8
11
|
|
|
@@ -13,19 +16,31 @@ Usage:
|
|
|
13
16
|
ditto subjects <query> [--top-k <n>]
|
|
14
17
|
ditto memories <subject-id>...
|
|
15
18
|
ditto network <pair-id> [--limit <n>]
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
ditto
|
|
19
|
+
|
|
20
|
+
Auth:
|
|
21
|
+
ditto login [<key>] [--paste] [--stdin] Save an API key to ${authFilePath()}
|
|
22
|
+
ditto logout Delete the saved key
|
|
23
|
+
ditto status Show endpoint, key source, live tools
|
|
24
|
+
ditto config Print MCP client config snippet
|
|
25
|
+
|
|
26
|
+
Other:
|
|
27
|
+
ditto help Show this message
|
|
19
28
|
|
|
20
29
|
Environment:
|
|
21
|
-
DITTO_API_KEY
|
|
30
|
+
DITTO_API_KEY Optional override (takes precedence over the saved key).
|
|
31
|
+
Get one at ${newKeyURL()}.
|
|
22
32
|
DITTO_API_BASE Optional. Defaults to https://api.heyditto.ai.
|
|
33
|
+
DITTO_CONFIG_DIR Optional. Defaults to $XDG_CONFIG_HOME/heyditto/cli or
|
|
34
|
+
~/.config/heyditto/cli.
|
|
23
35
|
`;
|
|
24
36
|
}
|
|
25
37
|
async function getClient() {
|
|
26
|
-
const key =
|
|
38
|
+
const { key, source } = await resolveApiKey();
|
|
27
39
|
if (!key) {
|
|
28
|
-
process.stderr.write(`error:
|
|
40
|
+
process.stderr.write(`error: no Ditto API key configured.\n\n` +
|
|
41
|
+
` 1. Get a key at ${newKeyURL()}\n` +
|
|
42
|
+
` 2. Save it with: ditto login <key>\n` +
|
|
43
|
+
` (or export DITTO_API_KEY=ditto_mcp_…)\n`);
|
|
29
44
|
process.exit(1);
|
|
30
45
|
}
|
|
31
46
|
const client = new Client({ name: packageName, version: packageVersion });
|
|
@@ -34,7 +49,14 @@ async function getClient() {
|
|
|
34
49
|
headers: { Authorization: `Bearer ${key}` },
|
|
35
50
|
},
|
|
36
51
|
});
|
|
37
|
-
|
|
52
|
+
try {
|
|
53
|
+
await client.connect(transport);
|
|
54
|
+
}
|
|
55
|
+
catch (err) {
|
|
56
|
+
process.stderr.write(`error: failed to connect to ${mcpServerURL()} (key source: ${source}).\n` +
|
|
57
|
+
`${err instanceof Error ? err.message : String(err)}\n`);
|
|
58
|
+
process.exit(1);
|
|
59
|
+
}
|
|
38
60
|
return client;
|
|
39
61
|
}
|
|
40
62
|
async function callAndPrint(name, args) {
|
|
@@ -58,6 +80,80 @@ function requirePositionals(positionals, minimum, label) {
|
|
|
58
80
|
throw new Error(`${label}: expected at least ${minimum} argument(s), got ${positionals.length}`);
|
|
59
81
|
}
|
|
60
82
|
}
|
|
83
|
+
async function readKeyFromStdin() {
|
|
84
|
+
return new Promise((resolve, reject) => {
|
|
85
|
+
let buf = "";
|
|
86
|
+
process.stdin.setEncoding("utf-8");
|
|
87
|
+
process.stdin.on("data", (chunk) => (buf += chunk));
|
|
88
|
+
process.stdin.on("end", () => resolve(buf));
|
|
89
|
+
process.stdin.on("error", reject);
|
|
90
|
+
});
|
|
91
|
+
}
|
|
92
|
+
async function promptForKey(message) {
|
|
93
|
+
const rl = createInterface({ input: process.stdin, output: process.stderr });
|
|
94
|
+
try {
|
|
95
|
+
return await rl.question(message);
|
|
96
|
+
}
|
|
97
|
+
finally {
|
|
98
|
+
rl.close();
|
|
99
|
+
}
|
|
100
|
+
}
|
|
101
|
+
function openInBrowser(url) {
|
|
102
|
+
const cmd = process.platform === "darwin" ? "open" : process.platform === "win32" ? "cmd" : "xdg-open";
|
|
103
|
+
const args = process.platform === "win32" ? ["/c", "start", "", url] : [url];
|
|
104
|
+
const child = spawn(cmd, args, { stdio: "ignore", detached: true });
|
|
105
|
+
child.on("error", () => {
|
|
106
|
+
/* swallow — best-effort */
|
|
107
|
+
});
|
|
108
|
+
child.unref();
|
|
109
|
+
}
|
|
110
|
+
async function cmdLogin(rest) {
|
|
111
|
+
const { values, positionals } = parseArgs({
|
|
112
|
+
args: rest,
|
|
113
|
+
options: {
|
|
114
|
+
paste: { type: "boolean", default: false },
|
|
115
|
+
stdin: { type: "boolean", default: false },
|
|
116
|
+
},
|
|
117
|
+
allowPositionals: true,
|
|
118
|
+
});
|
|
119
|
+
let key = positionals[0]?.trim();
|
|
120
|
+
if (!key && values.stdin) {
|
|
121
|
+
key = (await readKeyFromStdin()).trim();
|
|
122
|
+
}
|
|
123
|
+
else if (!key) {
|
|
124
|
+
if (values.paste) {
|
|
125
|
+
process.stderr.write(`Opening ${newKeyURL()} in your browser…\n`);
|
|
126
|
+
openInBrowser(newKeyURL());
|
|
127
|
+
}
|
|
128
|
+
if (!process.stdin.isTTY) {
|
|
129
|
+
throw new Error(`no key provided and stdin is not a TTY. Pass the key as an argument or pipe it via --stdin.`);
|
|
130
|
+
}
|
|
131
|
+
key = (await promptForKey(`Paste your Ditto API key (from ${newKeyURL()}): `)).trim();
|
|
132
|
+
}
|
|
133
|
+
if (!key)
|
|
134
|
+
throw new Error("no key provided");
|
|
135
|
+
if (!key.startsWith("ditto_mcp_")) {
|
|
136
|
+
process.stderr.write(`warning: key does not start with "ditto_mcp_" — proceeding anyway\n`);
|
|
137
|
+
}
|
|
138
|
+
await writeStoredKey(key);
|
|
139
|
+
process.stdout.write(`Saved key to ${authFilePath()}\n`);
|
|
140
|
+
if (process.env.DITTO_API_KEY) {
|
|
141
|
+
process.stderr.write(`note: DITTO_API_KEY is set in your environment and will override the saved key for this session.\n`);
|
|
142
|
+
}
|
|
143
|
+
process.stdout.write(`Run 'ditto status' to verify.\n`);
|
|
144
|
+
}
|
|
145
|
+
async function cmdLogout() {
|
|
146
|
+
const removed = await clearStoredKey();
|
|
147
|
+
if (removed) {
|
|
148
|
+
process.stdout.write(`Removed ${authFilePath()}\n`);
|
|
149
|
+
}
|
|
150
|
+
else {
|
|
151
|
+
process.stdout.write(`No saved key found at ${authFilePath()}\n`);
|
|
152
|
+
}
|
|
153
|
+
if (process.env.DITTO_API_KEY) {
|
|
154
|
+
process.stderr.write(`note: DITTO_API_KEY is still set in your environment and will continue to be used.\n`);
|
|
155
|
+
}
|
|
156
|
+
}
|
|
61
157
|
async function cmdSave(rest) {
|
|
62
158
|
const { values, positionals } = parseArgs({
|
|
63
159
|
args: rest,
|
|
@@ -75,29 +171,19 @@ async function cmdSave(rest) {
|
|
|
75
171
|
});
|
|
76
172
|
}
|
|
77
173
|
async function cmdSearch(rest) {
|
|
78
|
-
const { positionals } = parseArgs({
|
|
79
|
-
args: rest,
|
|
80
|
-
options: {},
|
|
81
|
-
allowPositionals: true,
|
|
82
|
-
});
|
|
174
|
+
const { positionals } = parseArgs({ args: rest, options: {}, allowPositionals: true });
|
|
83
175
|
requirePositionals(positionals, 1, "search");
|
|
84
176
|
await callAndPrint("search_memories", { queries: positionals });
|
|
85
177
|
}
|
|
86
178
|
async function cmdFetch(rest) {
|
|
87
|
-
const { positionals } = parseArgs({
|
|
88
|
-
args: rest,
|
|
89
|
-
options: {},
|
|
90
|
-
allowPositionals: true,
|
|
91
|
-
});
|
|
179
|
+
const { positionals } = parseArgs({ args: rest, options: {}, allowPositionals: true });
|
|
92
180
|
requirePositionals(positionals, 1, "fetch");
|
|
93
181
|
await callAndPrint("fetch_memories", { pairIds: positionals });
|
|
94
182
|
}
|
|
95
183
|
async function cmdSubjects(rest) {
|
|
96
184
|
const { values, positionals } = parseArgs({
|
|
97
185
|
args: rest,
|
|
98
|
-
options: {
|
|
99
|
-
"top-k": { type: "string" },
|
|
100
|
-
},
|
|
186
|
+
options: { "top-k": { type: "string" } },
|
|
101
187
|
allowPositionals: true,
|
|
102
188
|
});
|
|
103
189
|
requirePositionals(positionals, 1, "subjects");
|
|
@@ -111,20 +197,14 @@ async function cmdSubjects(rest) {
|
|
|
111
197
|
await callAndPrint("search_subjects", args);
|
|
112
198
|
}
|
|
113
199
|
async function cmdMemories(rest) {
|
|
114
|
-
const { positionals } = parseArgs({
|
|
115
|
-
args: rest,
|
|
116
|
-
options: {},
|
|
117
|
-
allowPositionals: true,
|
|
118
|
-
});
|
|
200
|
+
const { positionals } = parseArgs({ args: rest, options: {}, allowPositionals: true });
|
|
119
201
|
requirePositionals(positionals, 1, "memories");
|
|
120
202
|
await callAndPrint("search_memories_in_subjects", { subjectIds: positionals });
|
|
121
203
|
}
|
|
122
204
|
async function cmdNetwork(rest) {
|
|
123
205
|
const { values, positionals } = parseArgs({
|
|
124
206
|
args: rest,
|
|
125
|
-
options: {
|
|
126
|
-
limit: { type: "string" },
|
|
127
|
-
},
|
|
207
|
+
options: { limit: { type: "string" } },
|
|
128
208
|
allowPositionals: true,
|
|
129
209
|
});
|
|
130
210
|
requirePositionals(positionals, 1, "network");
|
|
@@ -138,14 +218,14 @@ async function cmdNetwork(rest) {
|
|
|
138
218
|
await callAndPrint("get_memory_network", args);
|
|
139
219
|
}
|
|
140
220
|
async function cmdStatus() {
|
|
141
|
-
const key =
|
|
221
|
+
const { key, source } = await resolveApiKey();
|
|
142
222
|
const lines = [
|
|
143
223
|
`${packageName} ${packageVersion}`,
|
|
144
224
|
`endpoint: ${mcpServerURL()}`,
|
|
145
|
-
`api key: ${key ? "set" : "MISSING
|
|
225
|
+
`api key: ${key ? "set" : "MISSING"} (source: ${source})`,
|
|
146
226
|
];
|
|
147
227
|
if (!key) {
|
|
148
|
-
lines.push(`
|
|
228
|
+
lines.push(``, `Get a key at ${newKeyURL()} and run 'ditto login <key>'.`);
|
|
149
229
|
process.stdout.write(`${lines.join("\n")}\n`);
|
|
150
230
|
process.exitCode = 1;
|
|
151
231
|
return;
|
|
@@ -171,15 +251,10 @@ function cmdConfig() {
|
|
|
171
251
|
mcpServers: {
|
|
172
252
|
ditto: {
|
|
173
253
|
url: mcpServerURL(),
|
|
174
|
-
headers: {
|
|
175
|
-
Authorization: "Bearer ${DITTO_API_KEY}",
|
|
176
|
-
},
|
|
254
|
+
headers: { Authorization: "Bearer ${DITTO_API_KEY}" },
|
|
177
255
|
},
|
|
178
256
|
},
|
|
179
|
-
notes: {
|
|
180
|
-
apiBase: apiBaseURL(),
|
|
181
|
-
newKey: newKeyURL(),
|
|
182
|
-
},
|
|
257
|
+
notes: { apiBase: apiBaseURL(), newKey: newKeyURL() },
|
|
183
258
|
};
|
|
184
259
|
process.stdout.write(`${JSON.stringify(config, null, 2)}\n`);
|
|
185
260
|
}
|
|
@@ -206,6 +281,12 @@ async function main() {
|
|
|
206
281
|
case "network":
|
|
207
282
|
await cmdNetwork(rest);
|
|
208
283
|
return;
|
|
284
|
+
case "login":
|
|
285
|
+
await cmdLogin(rest);
|
|
286
|
+
return;
|
|
287
|
+
case "logout":
|
|
288
|
+
await cmdLogout();
|
|
289
|
+
return;
|
|
209
290
|
case "status":
|
|
210
291
|
await cmdStatus();
|
|
211
292
|
return;
|
package/dist/cli.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":"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"}
|
package/dist/config.d.ts
CHANGED
|
@@ -1,6 +1,13 @@
|
|
|
1
1
|
export declare const packageName = "@heyditto/cli";
|
|
2
|
-
export declare const packageVersion = "
|
|
2
|
+
export declare const packageVersion = "1.0.0";
|
|
3
3
|
export declare function apiBaseURL(): string;
|
|
4
4
|
export declare function mcpServerURL(): string;
|
|
5
|
-
export declare function
|
|
5
|
+
export declare function configDir(): string;
|
|
6
|
+
export declare function authFilePath(): string;
|
|
6
7
|
export declare function newKeyURL(): string;
|
|
8
|
+
export type ApiKeySource = "env" | "config" | "none";
|
|
9
|
+
export interface ResolvedKey {
|
|
10
|
+
key?: string;
|
|
11
|
+
source: ApiKeySource;
|
|
12
|
+
}
|
|
13
|
+
export declare function resolveApiKey(): Promise<ResolvedKey>;
|
package/dist/config.js
CHANGED
|
@@ -1,15 +1,33 @@
|
|
|
1
|
+
import os from "node:os";
|
|
2
|
+
import path from "node:path";
|
|
3
|
+
import { readStoredKey } from "./store.js";
|
|
1
4
|
export const packageName = "@heyditto/cli";
|
|
2
|
-
export const packageVersion = "
|
|
5
|
+
export const packageVersion = "1.0.0";
|
|
3
6
|
export function apiBaseURL() {
|
|
4
7
|
return (process.env.DITTO_API_BASE || "https://api.heyditto.ai").replace(/\/+$/, "");
|
|
5
8
|
}
|
|
6
9
|
export function mcpServerURL() {
|
|
7
10
|
return `${apiBaseURL()}/mcp`;
|
|
8
11
|
}
|
|
9
|
-
export function
|
|
10
|
-
|
|
12
|
+
export function configDir() {
|
|
13
|
+
if (process.env.DITTO_CONFIG_DIR)
|
|
14
|
+
return process.env.DITTO_CONFIG_DIR;
|
|
15
|
+
const base = process.env.XDG_CONFIG_HOME || path.join(os.homedir(), ".config");
|
|
16
|
+
return path.join(base, "heyditto", "cli");
|
|
17
|
+
}
|
|
18
|
+
export function authFilePath() {
|
|
19
|
+
return path.join(configDir(), "config.json");
|
|
11
20
|
}
|
|
12
21
|
export function newKeyURL() {
|
|
13
|
-
return "https://app.heyditto.ai/
|
|
22
|
+
return "https://app.heyditto.ai/connect/openclaw";
|
|
23
|
+
}
|
|
24
|
+
export async function resolveApiKey() {
|
|
25
|
+
const envKey = process.env.DITTO_API_KEY?.trim();
|
|
26
|
+
if (envKey)
|
|
27
|
+
return { key: envKey, source: "env" };
|
|
28
|
+
const stored = await readStoredKey();
|
|
29
|
+
if (stored)
|
|
30
|
+
return { key: stored, source: "config" };
|
|
31
|
+
return { source: "none" };
|
|
14
32
|
}
|
|
15
33
|
//# sourceMappingURL=config.js.map
|
package/dist/config.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"config.js","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,MAAM,WAAW,GAAG,eAAe,CAAC;AAC3C,MAAM,CAAC,MAAM,cAAc,GAAG,OAAO,CAAC;AAEtC,MAAM,UAAU,UAAU;IACxB,OAAO,CAAC,OAAO,CAAC,GAAG,CAAC,cAAc,IAAI,yBAAyB,CAAC,CAAC,OAAO,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC;AACvF,CAAC;AAED,MAAM,UAAU,YAAY;IAC1B,OAAO,GAAG,UAAU,EAAE,MAAM,CAAC;AAC/B,CAAC;AAED,MAAM,UAAU,
|
|
1
|
+
{"version":3,"file":"config.js","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,SAAS,CAAC;AACzB,OAAO,IAAI,MAAM,WAAW,CAAC;AAC7B,OAAO,EAAE,aAAa,EAAE,MAAM,YAAY,CAAC;AAE3C,MAAM,CAAC,MAAM,WAAW,GAAG,eAAe,CAAC;AAC3C,MAAM,CAAC,MAAM,cAAc,GAAG,OAAO,CAAC;AAEtC,MAAM,UAAU,UAAU;IACxB,OAAO,CAAC,OAAO,CAAC,GAAG,CAAC,cAAc,IAAI,yBAAyB,CAAC,CAAC,OAAO,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC;AACvF,CAAC;AAED,MAAM,UAAU,YAAY;IAC1B,OAAO,GAAG,UAAU,EAAE,MAAM,CAAC;AAC/B,CAAC;AAED,MAAM,UAAU,SAAS;IACvB,IAAI,OAAO,CAAC,GAAG,CAAC,gBAAgB;QAAE,OAAO,OAAO,CAAC,GAAG,CAAC,gBAAgB,CAAC;IACtE,MAAM,IAAI,GAAG,OAAO,CAAC,GAAG,CAAC,eAAe,IAAI,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,OAAO,EAAE,EAAE,SAAS,CAAC,CAAC;IAC/E,OAAO,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,UAAU,EAAE,KAAK,CAAC,CAAC;AAC5C,CAAC;AAED,MAAM,UAAU,YAAY;IAC1B,OAAO,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,EAAE,aAAa,CAAC,CAAC;AAC/C,CAAC;AAED,MAAM,UAAU,SAAS;IACvB,OAAO,0CAA0C,CAAC;AACpD,CAAC;AASD,MAAM,CAAC,KAAK,UAAU,aAAa;IACjC,MAAM,MAAM,GAAG,OAAO,CAAC,GAAG,CAAC,aAAa,EAAE,IAAI,EAAE,CAAC;IACjD,IAAI,MAAM;QAAE,OAAO,EAAE,GAAG,EAAE,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC;IAClD,MAAM,MAAM,GAAG,MAAM,aAAa,EAAE,CAAC;IACrC,IAAI,MAAM;QAAE,OAAO,EAAE,GAAG,EAAE,MAAM,EAAE,MAAM,EAAE,QAAQ,EAAE,CAAC;IACrD,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,CAAC;AAC5B,CAAC"}
|
package/dist/store.d.ts
ADDED
package/dist/store.js
ADDED
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
import { chmod, mkdir, readFile, rm, writeFile } from "node:fs/promises";
|
|
2
|
+
import { dirname } from "node:path";
|
|
3
|
+
import { authFilePath } from "./config.js";
|
|
4
|
+
export async function readStoredKey() {
|
|
5
|
+
try {
|
|
6
|
+
const raw = await readFile(authFilePath(), "utf-8");
|
|
7
|
+
const parsed = JSON.parse(raw);
|
|
8
|
+
const key = parsed.apiKey?.trim();
|
|
9
|
+
return key && key.length > 0 ? key : undefined;
|
|
10
|
+
}
|
|
11
|
+
catch (err) {
|
|
12
|
+
if (err.code === "ENOENT")
|
|
13
|
+
return undefined;
|
|
14
|
+
throw err;
|
|
15
|
+
}
|
|
16
|
+
}
|
|
17
|
+
export async function writeStoredKey(key) {
|
|
18
|
+
const cleaned = key.trim();
|
|
19
|
+
if (!cleaned)
|
|
20
|
+
throw new Error("refusing to store empty api key");
|
|
21
|
+
const path = authFilePath();
|
|
22
|
+
await mkdir(dirname(path), { recursive: true, mode: 0o700 });
|
|
23
|
+
await writeFile(path, `${JSON.stringify({ apiKey: cleaned }, null, 2)}\n`, { mode: 0o600 });
|
|
24
|
+
// chmod again so existing files inherit 0o600 even if writeFile reused mode.
|
|
25
|
+
await chmod(path, 0o600);
|
|
26
|
+
}
|
|
27
|
+
export async function clearStoredKey() {
|
|
28
|
+
try {
|
|
29
|
+
await rm(authFilePath());
|
|
30
|
+
return true;
|
|
31
|
+
}
|
|
32
|
+
catch (err) {
|
|
33
|
+
if (err.code === "ENOENT")
|
|
34
|
+
return false;
|
|
35
|
+
throw err;
|
|
36
|
+
}
|
|
37
|
+
}
|
|
38
|
+
//# sourceMappingURL=store.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"store.js","sourceRoot":"","sources":["../src/store.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,QAAQ,EAAE,EAAE,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AACzE,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAM3C,MAAM,CAAC,KAAK,UAAU,aAAa;IACjC,IAAI,CAAC;QACH,MAAM,GAAG,GAAG,MAAM,QAAQ,CAAC,YAAY,EAAE,EAAE,OAAO,CAAC,CAAC;QACpD,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAe,CAAC;QAC7C,MAAM,GAAG,GAAG,MAAM,CAAC,MAAM,EAAE,IAAI,EAAE,CAAC;QAClC,OAAO,GAAG,IAAI,GAAG,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,SAAS,CAAC;IACjD,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,IAAK,GAA6B,CAAC,IAAI,KAAK,QAAQ;YAAE,OAAO,SAAS,CAAC;QACvE,MAAM,GAAG,CAAC;IACZ,CAAC;AACH,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,cAAc,CAAC,GAAW;IAC9C,MAAM,OAAO,GAAG,GAAG,CAAC,IAAI,EAAE,CAAC;IAC3B,IAAI,CAAC,OAAO;QAAE,MAAM,IAAI,KAAK,CAAC,iCAAiC,CAAC,CAAC;IACjE,MAAM,IAAI,GAAG,YAAY,EAAE,CAAC;IAC5B,MAAM,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC,CAAC;IAC7D,MAAM,SAAS,CAAC,IAAI,EAAE,GAAG,IAAI,CAAC,SAAS,CAAC,EAAE,MAAM,EAAE,OAAO,EAAE,EAAE,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC,CAAC;IAC5F,6EAA6E;IAC7E,MAAM,KAAK,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;AAC3B,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,cAAc;IAClC,IAAI,CAAC;QACH,MAAM,EAAE,CAAC,YAAY,EAAE,CAAC,CAAC;QACzB,OAAO,IAAI,CAAC;IACd,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,IAAK,GAA6B,CAAC,IAAI,KAAK,QAAQ;YAAE,OAAO,KAAK,CAAC;QACnE,MAAM,GAAG,CAAC;IACZ,CAAC;AACH,CAAC"}
|