@intelligentelectron/pdf-analyzer 0.2.0 → 1.0.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.
- package/dist/cli/commands.d.ts +6 -2
- package/dist/cli/commands.d.ts.map +1 -1
- package/dist/cli/commands.js +83 -100
- package/dist/cli/commands.js.map +1 -1
- package/dist/index.d.ts +2 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +9 -3
- package/dist/index.js.map +1 -1
- package/dist/keychain.d.ts +21 -7
- package/dist/keychain.d.ts.map +1 -1
- package/dist/keychain.js +79 -38
- package/dist/keychain.js.map +1 -1
- package/dist/pdf-utils.d.ts +28 -0
- package/dist/pdf-utils.d.ts.map +1 -0
- package/dist/pdf-utils.js +93 -0
- package/dist/pdf-utils.js.map +1 -0
- package/dist/providers/anthropic.d.ts +9 -0
- package/dist/providers/anthropic.d.ts.map +1 -0
- package/dist/providers/anthropic.js +69 -0
- package/dist/providers/anthropic.js.map +1 -0
- package/dist/providers/google.d.ts +13 -0
- package/dist/providers/google.d.ts.map +1 -0
- package/dist/providers/google.js +120 -0
- package/dist/providers/google.js.map +1 -0
- package/dist/providers/openai.d.ts +9 -0
- package/dist/providers/openai.d.ts.map +1 -0
- package/dist/providers/openai.js +70 -0
- package/dist/providers/openai.js.map +1 -0
- package/dist/providers/registry.d.ts +23 -0
- package/dist/providers/registry.d.ts.map +1 -0
- package/dist/providers/registry.js +44 -0
- package/dist/providers/registry.js.map +1 -0
- package/dist/providers/types.d.ts +70 -0
- package/dist/providers/types.d.ts.map +1 -0
- package/dist/providers/types.js +2 -0
- package/dist/providers/types.js.map +1 -0
- package/dist/server.d.ts +2 -1
- package/dist/server.d.ts.map +1 -1
- package/dist/server.js +27 -31
- package/dist/server.js.map +1 -1
- package/dist/service.d.ts +7 -35
- package/dist/service.d.ts.map +1 -1
- package/dist/service.js +99 -274
- package/dist/service.js.map +1 -1
- package/dist/types.d.ts +20 -12
- package/dist/types.d.ts.map +1 -1
- package/dist/types.js +15 -45
- package/dist/types.js.map +1 -1
- package/package.json +12 -4
package/dist/cli/commands.d.ts
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* CLI command handlers for --version, --help, --
|
|
2
|
+
* CLI command handlers for --version, --help, --setup, --update, and --uninstall.
|
|
3
3
|
*/
|
|
4
4
|
/**
|
|
5
5
|
* Print version information.
|
|
@@ -10,7 +10,11 @@ export declare const printVersion: () => void;
|
|
|
10
10
|
*/
|
|
11
11
|
export declare const printHelp: () => void;
|
|
12
12
|
/**
|
|
13
|
-
* Handle the --
|
|
13
|
+
* Handle the --setup flag: choose provider and store API key.
|
|
14
|
+
*/
|
|
15
|
+
export declare const handleSetupCommand: () => Promise<void>;
|
|
16
|
+
/**
|
|
17
|
+
* Handle the deprecated --set-key flag.
|
|
14
18
|
*/
|
|
15
19
|
export declare const handleSetKeyCommand: () => Promise<void>;
|
|
16
20
|
/**
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"commands.d.ts","sourceRoot":"","sources":["../../src/cli/commands.ts"],"names":[],"mappings":"AAAA;;GAEG;
|
|
1
|
+
{"version":3,"file":"commands.d.ts","sourceRoot":"","sources":["../../src/cli/commands.ts"],"names":[],"mappings":"AAAA;;GAEG;AAoBH;;GAEG;AACH,eAAO,MAAM,YAAY,QAAO,IAE/B,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,SAAS,QAAO,IA0C5B,CAAC;AAYF;;GAEG;AACH,eAAO,MAAM,kBAAkB,QAAa,OAAO,CAAC,IAAI,CAmEvD,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,mBAAmB,QAAa,OAAO,CAAC,IAAI,CAGxD,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,mBAAmB,QAAa,OAAO,CAAC,IAAI,CAmCxD,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,sBAAsB,QAAa,OAAO,CAAC,IAAI,CAoD3D,CAAC"}
|
package/dist/cli/commands.js
CHANGED
|
@@ -1,13 +1,15 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* CLI command handlers for --version, --help, --
|
|
2
|
+
* CLI command handlers for --version, --help, --setup, --update, and --uninstall.
|
|
3
3
|
*/
|
|
4
4
|
import * as fs from "node:fs";
|
|
5
5
|
import * as path from "node:path";
|
|
6
6
|
import * as os from "node:os";
|
|
7
|
+
import * as clack from "@clack/prompts";
|
|
7
8
|
import { VERSION, GITHUB_REPO, BINARY_NAME } from "../version.js";
|
|
8
9
|
import { checkForUpdate, performUpdate } from "./updater.js";
|
|
9
10
|
import { removeFromPath } from "./shell.js";
|
|
10
|
-
import {
|
|
11
|
+
import { getApiKey, setApiKey, getActiveProvider, setActiveProvider, getModel, setModel, deleteAllCredentials, } from "../keychain.js";
|
|
12
|
+
import { providerList } from "../providers/registry.js";
|
|
11
13
|
/**
|
|
12
14
|
* Print version information.
|
|
13
15
|
*/
|
|
@@ -21,22 +23,25 @@ export const printHelp = () => {
|
|
|
21
23
|
console.log(`
|
|
22
24
|
${BINARY_NAME} v${VERSION}
|
|
23
25
|
|
|
24
|
-
MCP server for analyzing PDF documents using
|
|
26
|
+
MCP server for analyzing PDF documents using AI.
|
|
27
|
+
Supports Google Gemini, Anthropic Claude, and OpenAI.
|
|
25
28
|
|
|
26
29
|
USAGE:
|
|
27
30
|
${BINARY_NAME} [OPTIONS]
|
|
28
31
|
|
|
29
32
|
OPTIONS:
|
|
30
33
|
--version, -v Print version and exit
|
|
31
|
-
--
|
|
34
|
+
--setup Choose an LLM provider and store your API key
|
|
35
|
+
--set-key Alias for --setup (deprecated)
|
|
32
36
|
--update Check for updates and apply if available
|
|
33
37
|
--uninstall Remove ${BINARY_NAME} from the system
|
|
34
38
|
--help, -h Show this help message
|
|
35
39
|
|
|
36
|
-
|
|
37
|
-
${BINARY_NAME} --
|
|
40
|
+
PROVIDER SETUP:
|
|
41
|
+
${BINARY_NAME} --setup
|
|
38
42
|
|
|
39
|
-
|
|
43
|
+
Lets you choose a provider (Google Gemini, Anthropic Claude, or OpenAI)
|
|
44
|
+
and stores your API key in the OS credential store (macOS Keychain,
|
|
40
45
|
Windows Credential Manager, or Linux secret-tool).
|
|
41
46
|
|
|
42
47
|
INSTALLATION:
|
|
@@ -56,104 +61,81 @@ MORE INFO:
|
|
|
56
61
|
`.trim());
|
|
57
62
|
};
|
|
58
63
|
/**
|
|
59
|
-
*
|
|
64
|
+
* Check if a clack prompt was cancelled (Ctrl+C).
|
|
60
65
|
*/
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
process.stdin.pause();
|
|
68
|
-
resolve(answer === "y" || answer === "yes");
|
|
69
|
-
};
|
|
70
|
-
process.stdin.resume();
|
|
71
|
-
process.stdin.setEncoding("utf8");
|
|
72
|
-
process.stdin.once("data", onData);
|
|
73
|
-
});
|
|
74
|
-
};
|
|
75
|
-
/**
|
|
76
|
-
* Read a line from the terminal with masked input (each character shown as *).
|
|
77
|
-
*/
|
|
78
|
-
const readMaskedInput = (prompt) => {
|
|
79
|
-
return new Promise((resolve) => {
|
|
80
|
-
process.stdout.write(prompt);
|
|
81
|
-
const chars = [];
|
|
82
|
-
if (!process.stdin.isTTY) {
|
|
83
|
-
// Non-TTY fallback: read a line normally
|
|
84
|
-
const onData = (data) => {
|
|
85
|
-
process.stdin.removeListener("data", onData);
|
|
86
|
-
process.stdin.pause();
|
|
87
|
-
resolve(data.toString().trim());
|
|
88
|
-
};
|
|
89
|
-
process.stdin.resume();
|
|
90
|
-
process.stdin.setEncoding("utf8");
|
|
91
|
-
process.stdin.once("data", onData);
|
|
92
|
-
return;
|
|
93
|
-
}
|
|
94
|
-
process.stdin.setRawMode(true);
|
|
95
|
-
process.stdin.resume();
|
|
96
|
-
process.stdin.setEncoding("utf8");
|
|
97
|
-
const onData = (key) => {
|
|
98
|
-
// Ctrl+C
|
|
99
|
-
if (key === "\u0003") {
|
|
100
|
-
process.stdin.setRawMode(false);
|
|
101
|
-
process.stdin.removeListener("data", onData);
|
|
102
|
-
process.stdin.pause();
|
|
103
|
-
process.stdout.write("\n");
|
|
104
|
-
process.exit(130);
|
|
105
|
-
}
|
|
106
|
-
// Enter
|
|
107
|
-
if (key === "\r" || key === "\n") {
|
|
108
|
-
process.stdin.setRawMode(false);
|
|
109
|
-
process.stdin.removeListener("data", onData);
|
|
110
|
-
process.stdin.pause();
|
|
111
|
-
process.stdout.write("\n");
|
|
112
|
-
resolve(chars.join(""));
|
|
113
|
-
return;
|
|
114
|
-
}
|
|
115
|
-
// Backspace / Delete
|
|
116
|
-
if (key === "\u007F" || key === "\b") {
|
|
117
|
-
if (chars.length > 0) {
|
|
118
|
-
chars.pop();
|
|
119
|
-
process.stdout.write("\b \b");
|
|
120
|
-
}
|
|
121
|
-
return;
|
|
122
|
-
}
|
|
123
|
-
// Regular character
|
|
124
|
-
chars.push(key);
|
|
125
|
-
process.stdout.write("*");
|
|
126
|
-
};
|
|
127
|
-
process.stdin.on("data", onData);
|
|
128
|
-
});
|
|
129
|
-
};
|
|
66
|
+
function assertNotCancelled(value) {
|
|
67
|
+
if (clack.isCancel(value)) {
|
|
68
|
+
clack.cancel("Setup cancelled.");
|
|
69
|
+
process.exit(0);
|
|
70
|
+
}
|
|
71
|
+
}
|
|
130
72
|
/**
|
|
131
|
-
* Handle the --
|
|
73
|
+
* Handle the --setup flag: choose provider and store API key.
|
|
132
74
|
*/
|
|
133
|
-
export const
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
75
|
+
export const handleSetupCommand = async () => {
|
|
76
|
+
clack.intro("pdf-analyzer setup");
|
|
77
|
+
const existingProvider = getActiveProvider();
|
|
78
|
+
const existingKey = getApiKey();
|
|
79
|
+
const existingModel = getModel();
|
|
80
|
+
if (existingProvider && existingKey) {
|
|
81
|
+
const providerConfig = providerList.find((p) => p.id === existingProvider);
|
|
82
|
+
const providerName = providerConfig?.displayName ?? existingProvider;
|
|
83
|
+
const modelName = providerConfig?.models.find((m) => m.id === existingModel)?.displayName ?? existingModel;
|
|
84
|
+
const shouldReconfigure = await clack.confirm({
|
|
85
|
+
message: `Already configured with ${providerName} (${modelName}). Reconfigure?`,
|
|
86
|
+
});
|
|
87
|
+
assertNotCancelled(shouldReconfigure);
|
|
88
|
+
if (!shouldReconfigure) {
|
|
89
|
+
clack.outro("No changes made.");
|
|
139
90
|
return;
|
|
140
91
|
}
|
|
141
92
|
}
|
|
142
|
-
const
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
|
|
93
|
+
const providerId = await clack.select({
|
|
94
|
+
message: "Choose your LLM provider",
|
|
95
|
+
options: providerList.map((p) => ({
|
|
96
|
+
value: p.id,
|
|
97
|
+
label: p.displayName,
|
|
98
|
+
})),
|
|
99
|
+
});
|
|
100
|
+
assertNotCancelled(providerId);
|
|
101
|
+
const selected = providerList.find((p) => p.id === providerId);
|
|
102
|
+
const modelId = await clack.select({
|
|
103
|
+
message: "Choose a model",
|
|
104
|
+
options: selected.models.map((m) => ({
|
|
105
|
+
value: m.id,
|
|
106
|
+
label: `${m.displayName} - ${m.hint}`,
|
|
107
|
+
})),
|
|
108
|
+
});
|
|
109
|
+
assertNotCancelled(modelId);
|
|
110
|
+
const selectedModel = selected.models.find((m) => m.id === modelId);
|
|
111
|
+
clack.note(`Model: ${selectedModel.displayName} (${modelId})\nGet your API key from: ${selected.apiKeyUrl}`, selected.displayName);
|
|
112
|
+
const key = await clack.password({
|
|
113
|
+
message: "Enter your API key",
|
|
114
|
+
validate: (value) => {
|
|
115
|
+
if (!value)
|
|
116
|
+
return "API key is required";
|
|
117
|
+
},
|
|
118
|
+
});
|
|
119
|
+
assertNotCancelled(key);
|
|
147
120
|
try {
|
|
148
|
-
|
|
149
|
-
|
|
121
|
+
setActiveProvider(selected.id);
|
|
122
|
+
setModel(modelId);
|
|
123
|
+
setApiKey(key);
|
|
124
|
+
clack.outro(`${selected.displayName} (${selectedModel.displayName}) configured successfully.`);
|
|
150
125
|
}
|
|
151
126
|
catch (error) {
|
|
152
127
|
const message = error instanceof Error ? error.message : "Unknown error";
|
|
153
|
-
|
|
128
|
+
clack.cancel(`Failed to store credentials: ${message}`);
|
|
154
129
|
process.exit(1);
|
|
155
130
|
}
|
|
156
131
|
};
|
|
132
|
+
/**
|
|
133
|
+
* Handle the deprecated --set-key flag.
|
|
134
|
+
*/
|
|
135
|
+
export const handleSetKeyCommand = async () => {
|
|
136
|
+
clack.log.warn("--set-key is deprecated. Use --setup instead.");
|
|
137
|
+
await handleSetupCommand();
|
|
138
|
+
};
|
|
157
139
|
/**
|
|
158
140
|
* Handle the --update flag: check and apply updates interactively.
|
|
159
141
|
*/
|
|
@@ -173,15 +155,13 @@ export const handleUpdateCommand = async () => {
|
|
|
173
155
|
console.error("Update available but no download URL found for your platform");
|
|
174
156
|
process.exit(1);
|
|
175
157
|
}
|
|
176
|
-
console.log(`Update available: ${VERSION}
|
|
158
|
+
console.log(`Update available: ${VERSION} -> ${check.latestVersion}`);
|
|
177
159
|
console.log("Downloading...");
|
|
178
160
|
const result = await performUpdate(check.downloadUrl, check.latestVersion);
|
|
179
161
|
if (!result.success) {
|
|
180
162
|
console.error(`Update failed: ${result.error}`);
|
|
181
163
|
process.exit(1);
|
|
182
164
|
}
|
|
183
|
-
// On Windows, we need to ensure stdout is flushed before exiting
|
|
184
|
-
// because replacing the running executable can cause issues
|
|
185
165
|
const message = `Successfully updated to ${result.newVersion}\n`;
|
|
186
166
|
await new Promise((resolve) => {
|
|
187
167
|
process.stdout.write(message, () => resolve());
|
|
@@ -199,17 +179,20 @@ export const handleUninstallCommand = async () => {
|
|
|
199
179
|
console.log(` - Binary: ${binaryPath}`);
|
|
200
180
|
console.log(` - Directory: ${installDir}`);
|
|
201
181
|
console.log(" - PATH entries from shell config files");
|
|
202
|
-
console.log(" - Stored
|
|
182
|
+
console.log(" - Stored credentials from OS credential store");
|
|
203
183
|
console.log("");
|
|
204
|
-
const confirmed = await confirm(
|
|
184
|
+
const confirmed = await clack.confirm({
|
|
185
|
+
message: "Are you sure you want to uninstall?",
|
|
186
|
+
});
|
|
187
|
+
assertNotCancelled(confirmed);
|
|
205
188
|
if (!confirmed) {
|
|
206
189
|
console.log("Uninstall cancelled.");
|
|
207
190
|
return;
|
|
208
191
|
}
|
|
209
192
|
console.log("");
|
|
210
|
-
// Remove stored
|
|
211
|
-
|
|
212
|
-
console.log("Removed stored
|
|
193
|
+
// Remove all stored credentials
|
|
194
|
+
deleteAllCredentials();
|
|
195
|
+
console.log("Removed stored credentials");
|
|
213
196
|
// Remove PATH entries from shell rc files
|
|
214
197
|
const modifiedFiles = removeFromPath();
|
|
215
198
|
if (modifiedFiles.length > 0) {
|
package/dist/cli/commands.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"commands.js","sourceRoot":"","sources":["../../src/cli/commands.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,KAAK,EAAE,MAAM,SAAS,CAAC;AAC9B,OAAO,KAAK,IAAI,MAAM,WAAW,CAAC;AAClC,OAAO,KAAK,EAAE,MAAM,SAAS,CAAC;AAC9B,OAAO,EAAE,OAAO,EAAE,WAAW,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAClE,OAAO,EAAE,cAAc,EAAE,aAAa,EAAE,MAAM,cAAc,CAAC;AAC7D,OAAO,EAAE,cAAc,EAAE,MAAM,YAAY,CAAC;AAC5C,OAAO,
|
|
1
|
+
{"version":3,"file":"commands.js","sourceRoot":"","sources":["../../src/cli/commands.ts"],"names":[],"mappings":"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"}
|
package/dist/index.d.ts
CHANGED
|
@@ -7,7 +7,8 @@
|
|
|
7
7
|
*
|
|
8
8
|
* CLI flags:
|
|
9
9
|
* --version, -v Print version and exit
|
|
10
|
-
* --
|
|
10
|
+
* --setup Choose LLM provider and store API key
|
|
11
|
+
* --set-key Deprecated alias for --setup
|
|
11
12
|
* --update Check for updates and apply if available
|
|
12
13
|
* --uninstall Remove pdf-analyzer from the system
|
|
13
14
|
* --help, -h Show help
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";AAEA
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";AAEA;;;;;;;;;;;;;GAaG"}
|
package/dist/index.js
CHANGED
|
@@ -7,13 +7,14 @@
|
|
|
7
7
|
*
|
|
8
8
|
* CLI flags:
|
|
9
9
|
* --version, -v Print version and exit
|
|
10
|
-
* --
|
|
10
|
+
* --setup Choose LLM provider and store API key
|
|
11
|
+
* --set-key Deprecated alias for --setup
|
|
11
12
|
* --update Check for updates and apply if available
|
|
12
13
|
* --uninstall Remove pdf-analyzer from the system
|
|
13
14
|
* --help, -h Show help
|
|
14
15
|
*/
|
|
15
16
|
import { autoUpdate, reexec } from "./cli/updater.js";
|
|
16
|
-
import { printVersion, printHelp, handleSetKeyCommand, handleUpdateCommand, handleUninstallCommand, } from "./cli/commands.js";
|
|
17
|
+
import { printVersion, printHelp, handleSetupCommand, handleSetKeyCommand, handleUpdateCommand, handleUninstallCommand, } from "./cli/commands.js";
|
|
17
18
|
import { runServer } from "./server.js";
|
|
18
19
|
/**
|
|
19
20
|
* Main entry point for the PDF Analyzer MCP server.
|
|
@@ -30,7 +31,12 @@ const main = async () => {
|
|
|
30
31
|
printHelp();
|
|
31
32
|
return;
|
|
32
33
|
}
|
|
33
|
-
// Handle --
|
|
34
|
+
// Handle --setup
|
|
35
|
+
if (args.includes("--setup")) {
|
|
36
|
+
await handleSetupCommand();
|
|
37
|
+
return;
|
|
38
|
+
}
|
|
39
|
+
// Handle --set-key (deprecated alias)
|
|
34
40
|
if (args.includes("--set-key")) {
|
|
35
41
|
await handleSetKeyCommand();
|
|
36
42
|
return;
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";AAEA
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";AAEA;;;;;;;;;;;;;GAaG;AAEH,OAAO,EAAE,UAAU,EAAE,MAAM,EAAE,MAAM,kBAAkB,CAAC;AACtD,OAAO,EACL,YAAY,EACZ,SAAS,EACT,kBAAkB,EAClB,mBAAmB,EACnB,mBAAmB,EACnB,sBAAsB,GACvB,MAAM,mBAAmB,CAAC;AAC3B,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AAExC;;GAEG;AACH,MAAM,IAAI,GAAG,KAAK,IAAmB,EAAE;IACrC,MAAM,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;IAEnC,wBAAwB;IACxB,IAAI,IAAI,CAAC,QAAQ,CAAC,WAAW,CAAC,IAAI,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC;QACtD,YAAY,EAAE,CAAC;QACf,OAAO;IACT,CAAC;IAED,qBAAqB;IACrB,IAAI,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,IAAI,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC;QACnD,SAAS,EAAE,CAAC;QACZ,OAAO;IACT,CAAC;IAED,iBAAiB;IACjB,IAAI,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC,EAAE,CAAC;QAC7B,MAAM,kBAAkB,EAAE,CAAC;QAC3B,OAAO;IACT,CAAC;IAED,sCAAsC;IACtC,IAAI,IAAI,CAAC,QAAQ,CAAC,WAAW,CAAC,EAAE,CAAC;QAC/B,MAAM,mBAAmB,EAAE,CAAC;QAC5B,OAAO;IACT,CAAC;IAED,kBAAkB;IAClB,IAAI,IAAI,CAAC,QAAQ,CAAC,UAAU,CAAC,EAAE,CAAC;QAC9B,MAAM,mBAAmB,EAAE,CAAC;QAC5B,OAAO;IACT,CAAC;IAED,qBAAqB;IACrB,IAAI,IAAI,CAAC,QAAQ,CAAC,aAAa,CAAC,EAAE,CAAC;QACjC,MAAM,sBAAsB,EAAE,CAAC;QAC/B,OAAO;IACT,CAAC;IAED,mFAAmF;IACnF,IAAI,OAAO,CAAC,KAAK,CAAC,KAAK,EAAE,CAAC;QACxB,OAAO,CAAC,GAAG,CAAC,oDAAoD,CAAC,CAAC;QAClE,OAAO,CAAC,GAAG,CAAC,oDAAoD,CAAC,CAAC;QAClE,OAAO,CAAC,GAAG,CAAC,8BAA8B,CAAC,CAAC;QAC5C,OAAO,CAAC,GAAG,CAAC,yDAAyD,CAAC,CAAC;QACvE,OAAO,CAAC,GAAG,CAAC,wCAAwC,CAAC,CAAC;QACtD,OAAO;IACT,CAAC;IAED,+BAA+B;IAC/B,MAAM,OAAO,GAAG,MAAM,UAAU,EAAE,CAAC;IACnC,IAAI,OAAO,EAAE,CAAC;QACZ,MAAM,EAAE,CAAC;IACX,CAAC;IAED,MAAM,SAAS,EAAE,CAAC;AACpB,CAAC,CAAC;AAEF,IAAI,EAAE,CAAC,KAAK,CAAC,CAAC,KAAK,EAAE,EAAE;IACrB,OAAO,CAAC,KAAK,CAAC,eAAe,EAAE,KAAK,CAAC,CAAC;IACtC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AAClB,CAAC,CAAC,CAAC"}
|
package/dist/keychain.d.ts
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* OS-native credential storage
|
|
2
|
+
* OS-native credential storage.
|
|
3
3
|
*
|
|
4
4
|
* Uses platform CLI tools (no native addons) so it works with Bun-compiled binaries.
|
|
5
5
|
* - macOS: `security` CLI (Keychain Access)
|
|
@@ -11,10 +11,24 @@
|
|
|
11
11
|
* Wraps in single quotes and escapes any embedded single quotes.
|
|
12
12
|
*/
|
|
13
13
|
export declare function escapeShellArg(arg: string): string;
|
|
14
|
-
/** Read
|
|
15
|
-
export declare function
|
|
16
|
-
/** Write
|
|
17
|
-
export declare function
|
|
18
|
-
/** Remove
|
|
19
|
-
export declare function
|
|
14
|
+
/** Read a value from the OS credential store. */
|
|
15
|
+
export declare function getStoredValue(account: string, service?: string): string | null;
|
|
16
|
+
/** Write a value to the OS credential store. */
|
|
17
|
+
export declare function setStoredValue(account: string, value: string, service?: string): void;
|
|
18
|
+
/** Remove a value from the OS credential store (best-effort). */
|
|
19
|
+
export declare function deleteStoredValue(account: string, service?: string): void;
|
|
20
|
+
/** Get the active provider ID. Returns null if not set. */
|
|
21
|
+
export declare function getActiveProvider(): string | null;
|
|
22
|
+
/** Store the active provider ID. */
|
|
23
|
+
export declare function setActiveProvider(providerId: string): void;
|
|
24
|
+
/** Get the stored API key. Returns null if not found. */
|
|
25
|
+
export declare function getApiKey(): string | null;
|
|
26
|
+
/** Store the API key. */
|
|
27
|
+
export declare function setApiKey(key: string): void;
|
|
28
|
+
/** Get the stored model ID. Returns null if not set. */
|
|
29
|
+
export declare function getModel(): string | null;
|
|
30
|
+
/** Store the selected model ID. */
|
|
31
|
+
export declare function setModel(modelId: string): void;
|
|
32
|
+
/** Delete all stored credentials (provider + API key + model). Best-effort. */
|
|
33
|
+
export declare function deleteAllCredentials(): void;
|
|
20
34
|
//# sourceMappingURL=keychain.d.ts.map
|
package/dist/keychain.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"keychain.d.ts","sourceRoot":"","sources":["../src/keychain.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;
|
|
1
|
+
{"version":3,"file":"keychain.d.ts","sourceRoot":"","sources":["../src/keychain.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AASH;;;GAGG;AACH,wBAAgB,cAAc,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAElD;AA2ID,iDAAiD;AACjD,wBAAgB,cAAc,CAAC,OAAO,EAAE,MAAM,EAAE,OAAO,GAAE,MAAwB,GAAG,MAAM,GAAG,IAAI,CAWhG;AAED,gDAAgD;AAChD,wBAAgB,cAAc,CAC5B,OAAO,EAAE,MAAM,EACf,KAAK,EAAE,MAAM,EACb,OAAO,GAAE,MAAwB,GAChC,IAAI,CAcN;AAED,iEAAiE;AACjE,wBAAgB,iBAAiB,CAAC,OAAO,EAAE,MAAM,EAAE,OAAO,GAAE,MAAwB,GAAG,IAAI,CAe1F;AAUD,2DAA2D;AAC3D,wBAAgB,iBAAiB,IAAI,MAAM,GAAG,IAAI,CAEjD;AAED,oCAAoC;AACpC,wBAAgB,iBAAiB,CAAC,UAAU,EAAE,MAAM,GAAG,IAAI,CAE1D;AAED,yDAAyD;AACzD,wBAAgB,SAAS,IAAI,MAAM,GAAG,IAAI,CAEzC;AAED,yBAAyB;AACzB,wBAAgB,SAAS,CAAC,GAAG,EAAE,MAAM,GAAG,IAAI,CAE3C;AAED,wDAAwD;AACxD,wBAAgB,QAAQ,IAAI,MAAM,GAAG,IAAI,CAExC;AAED,mCAAmC;AACnC,wBAAgB,QAAQ,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI,CAE9C;AAED,+EAA+E;AAC/E,wBAAgB,oBAAoB,IAAI,IAAI,CAI3C"}
|