@elizaos/vault 2.0.0-alpha.537
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 +159 -0
- package/dist/audit.d.ts +14 -0
- package/dist/audit.d.ts.map +1 -0
- package/dist/audit.js +27 -0
- package/dist/audit.js.map +1 -0
- package/dist/credentials.d.ts +58 -0
- package/dist/credentials.d.ts.map +1 -0
- package/dist/credentials.js +157 -0
- package/dist/credentials.js.map +1 -0
- package/dist/crypto.d.ts +18 -0
- package/dist/crypto.d.ts.map +1 -0
- package/dist/crypto.js +67 -0
- package/dist/crypto.js.map +1 -0
- package/dist/external-credentials.d.ts +62 -0
- package/dist/external-credentials.d.ts.map +1 -0
- package/dist/external-credentials.js +335 -0
- package/dist/external-credentials.js.map +1 -0
- package/dist/index.d.ts +35 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +26 -0
- package/dist/index.js.map +1 -0
- package/dist/install.d.ts +70 -0
- package/dist/install.d.ts.map +1 -0
- package/dist/install.js +163 -0
- package/dist/install.js.map +1 -0
- package/dist/inventory.d.ts +140 -0
- package/dist/inventory.d.ts.map +1 -0
- package/dist/inventory.js +319 -0
- package/dist/inventory.js.map +1 -0
- package/dist/manager.d.ts +161 -0
- package/dist/manager.d.ts.map +1 -0
- package/dist/manager.js +466 -0
- package/dist/manager.js.map +1 -0
- package/dist/master-key.d.ts +86 -0
- package/dist/master-key.d.ts.map +1 -0
- package/dist/master-key.js +247 -0
- package/dist/master-key.js.map +1 -0
- package/dist/password-managers.d.ts +17 -0
- package/dist/password-managers.d.ts.map +1 -0
- package/dist/password-managers.js +59 -0
- package/dist/password-managers.js.map +1 -0
- package/dist/profiles.d.ts +68 -0
- package/dist/profiles.d.ts.map +1 -0
- package/dist/profiles.js +189 -0
- package/dist/profiles.js.map +1 -0
- package/dist/store.d.ts +22 -0
- package/dist/store.d.ts.map +1 -0
- package/dist/store.js +137 -0
- package/dist/store.js.map +1 -0
- package/dist/testing.d.ts +32 -0
- package/dist/testing.d.ts.map +1 -0
- package/dist/testing.js +70 -0
- package/dist/testing.js.map +1 -0
- package/dist/types.d.ts +56 -0
- package/dist/types.d.ts.map +1 -0
- package/dist/types.js +12 -0
- package/dist/types.js.map +1 -0
- package/dist/vault.d.ts +77 -0
- package/dist/vault.d.ts.map +1 -0
- package/dist/vault.js +269 -0
- package/dist/vault.js.map +1 -0
- package/package.json +59 -0
package/dist/vault.js
ADDED
|
@@ -0,0 +1,269 @@
|
|
|
1
|
+
import { homedir } from "node:os";
|
|
2
|
+
import { dirname, join, resolve } from "node:path";
|
|
3
|
+
import { promises as fs } from "node:fs";
|
|
4
|
+
import { decrypt, encrypt } from "./crypto.js";
|
|
5
|
+
import { defaultMasterKey } from "./master-key.js";
|
|
6
|
+
import { resolveReference } from "./password-managers.js";
|
|
7
|
+
import { emptyStore, readStore, removeEntry, setEntry, writeStore, } from "./store.js";
|
|
8
|
+
import { AuditLog } from "./audit.js";
|
|
9
|
+
export function createVault(opts = {}) {
|
|
10
|
+
const root = opts.workDir ??
|
|
11
|
+
process.env.ELIZA_STATE_DIR ??
|
|
12
|
+
join(homedir(), `.${process.env.ELIZA_NAMESPACE?.trim() || "eliza"}`);
|
|
13
|
+
const storePath = join(root, "vault.json");
|
|
14
|
+
const auditPath = join(root, "audit", "vault.jsonl");
|
|
15
|
+
const masterKey = opts.masterKey ?? defaultMasterKey();
|
|
16
|
+
return new VaultImpl(storePath, auditPath, masterKey, opts.logger);
|
|
17
|
+
}
|
|
18
|
+
class VaultImpl {
|
|
19
|
+
storePath;
|
|
20
|
+
auditPath;
|
|
21
|
+
masterKey;
|
|
22
|
+
logger;
|
|
23
|
+
cachedKey = null;
|
|
24
|
+
mutex = Promise.resolve();
|
|
25
|
+
audit;
|
|
26
|
+
constructor(storePath, auditPath, masterKey, logger) {
|
|
27
|
+
this.storePath = storePath;
|
|
28
|
+
this.auditPath = auditPath;
|
|
29
|
+
this.masterKey = masterKey;
|
|
30
|
+
this.logger = logger;
|
|
31
|
+
this.audit = new AuditLog(auditPath, logger);
|
|
32
|
+
}
|
|
33
|
+
async set(key, value, opts = {}) {
|
|
34
|
+
assertKey(key);
|
|
35
|
+
if (typeof value !== "string") {
|
|
36
|
+
throw new TypeError("vault.set: value must be a string");
|
|
37
|
+
}
|
|
38
|
+
if (opts.sensitive) {
|
|
39
|
+
const masterKey = await this.loadMasterKey();
|
|
40
|
+
const ciphertext = encrypt(masterKey, value, key);
|
|
41
|
+
await this.mutate((s) => setEntry(s, key, {
|
|
42
|
+
kind: "secret",
|
|
43
|
+
ciphertext,
|
|
44
|
+
lastModified: Date.now(),
|
|
45
|
+
}));
|
|
46
|
+
}
|
|
47
|
+
else {
|
|
48
|
+
await this.mutate((s) => setEntry(s, key, {
|
|
49
|
+
kind: "value",
|
|
50
|
+
value,
|
|
51
|
+
lastModified: Date.now(),
|
|
52
|
+
}));
|
|
53
|
+
}
|
|
54
|
+
await this.recordAudit({ action: "set", key, ...optsCaller(opts) });
|
|
55
|
+
}
|
|
56
|
+
async setReference(key, ref) {
|
|
57
|
+
assertKey(key);
|
|
58
|
+
if (ref.source !== "1password" && ref.source !== "protonpass") {
|
|
59
|
+
throw new TypeError(`unsupported password manager: ${ref.source}`);
|
|
60
|
+
}
|
|
61
|
+
if (ref.path.trim().length === 0) {
|
|
62
|
+
throw new TypeError("setReference: path required");
|
|
63
|
+
}
|
|
64
|
+
await this.mutate((s) => setEntry(s, key, {
|
|
65
|
+
kind: "reference",
|
|
66
|
+
source: ref.source,
|
|
67
|
+
path: ref.path,
|
|
68
|
+
lastModified: Date.now(),
|
|
69
|
+
}));
|
|
70
|
+
await this.recordAudit({ action: "setReference", key });
|
|
71
|
+
}
|
|
72
|
+
async get(key) {
|
|
73
|
+
assertKey(key);
|
|
74
|
+
const value = await this.readValue(key);
|
|
75
|
+
await this.recordAudit({ action: "get", key });
|
|
76
|
+
return value;
|
|
77
|
+
}
|
|
78
|
+
async reveal(key, caller) {
|
|
79
|
+
assertKey(key);
|
|
80
|
+
const value = await this.readValue(key);
|
|
81
|
+
await this.recordAudit({
|
|
82
|
+
action: "reveal",
|
|
83
|
+
key,
|
|
84
|
+
...(caller ? { caller } : {}),
|
|
85
|
+
});
|
|
86
|
+
return value;
|
|
87
|
+
}
|
|
88
|
+
async has(key) {
|
|
89
|
+
assertKey(key);
|
|
90
|
+
const store = await this.loadStore();
|
|
91
|
+
return key in store.entries;
|
|
92
|
+
}
|
|
93
|
+
async remove(key) {
|
|
94
|
+
assertKey(key);
|
|
95
|
+
await this.mutate((s) => removeEntry(s, key));
|
|
96
|
+
await this.recordAudit({ action: "remove", key });
|
|
97
|
+
}
|
|
98
|
+
async list(prefix) {
|
|
99
|
+
const store = await this.loadStore();
|
|
100
|
+
const keys = Object.keys(store.entries);
|
|
101
|
+
if (!prefix)
|
|
102
|
+
return keys;
|
|
103
|
+
// Match the prefix as a *segment*, not a substring: `"ui"` should
|
|
104
|
+
// match `ui` and `ui.theme` but not `ui_legacy_thing` or `uib`.
|
|
105
|
+
return keys.filter((k) => k === prefix || k.startsWith(`${prefix}.`));
|
|
106
|
+
}
|
|
107
|
+
async describe(key) {
|
|
108
|
+
assertKey(key);
|
|
109
|
+
const store = await this.loadStore();
|
|
110
|
+
const entry = store.entries[key];
|
|
111
|
+
if (!entry)
|
|
112
|
+
return null;
|
|
113
|
+
if (entry.kind === "value") {
|
|
114
|
+
return {
|
|
115
|
+
key,
|
|
116
|
+
source: "file",
|
|
117
|
+
sensitive: false,
|
|
118
|
+
lastModified: entry.lastModified,
|
|
119
|
+
};
|
|
120
|
+
}
|
|
121
|
+
if (entry.kind === "secret") {
|
|
122
|
+
return {
|
|
123
|
+
key,
|
|
124
|
+
source: "keychain-encrypted",
|
|
125
|
+
sensitive: true,
|
|
126
|
+
lastModified: entry.lastModified,
|
|
127
|
+
};
|
|
128
|
+
}
|
|
129
|
+
return {
|
|
130
|
+
key,
|
|
131
|
+
source: entry.source,
|
|
132
|
+
sensitive: true,
|
|
133
|
+
lastModified: entry.lastModified,
|
|
134
|
+
};
|
|
135
|
+
}
|
|
136
|
+
async stats() {
|
|
137
|
+
const store = await this.loadStore();
|
|
138
|
+
let sensitive = 0;
|
|
139
|
+
let nonSensitive = 0;
|
|
140
|
+
let references = 0;
|
|
141
|
+
for (const e of Object.values(store.entries)) {
|
|
142
|
+
if (e.kind === "value")
|
|
143
|
+
nonSensitive += 1;
|
|
144
|
+
else if (e.kind === "secret")
|
|
145
|
+
sensitive += 1;
|
|
146
|
+
else
|
|
147
|
+
references += 1;
|
|
148
|
+
}
|
|
149
|
+
return {
|
|
150
|
+
total: sensitive + nonSensitive + references,
|
|
151
|
+
sensitive,
|
|
152
|
+
nonSensitive,
|
|
153
|
+
references,
|
|
154
|
+
};
|
|
155
|
+
}
|
|
156
|
+
// ── internals ───────────────────────────────────────────────────
|
|
157
|
+
async readValue(key) {
|
|
158
|
+
const store = await this.loadStore();
|
|
159
|
+
const entry = store.entries[key];
|
|
160
|
+
if (!entry)
|
|
161
|
+
throw new VaultMissError(key);
|
|
162
|
+
if (entry.kind === "value")
|
|
163
|
+
return entry.value;
|
|
164
|
+
if (entry.kind === "secret") {
|
|
165
|
+
const masterKey = await this.loadMasterKey();
|
|
166
|
+
return decrypt(masterKey, entry.ciphertext, key);
|
|
167
|
+
}
|
|
168
|
+
return resolveReference({ source: entry.source, path: entry.path });
|
|
169
|
+
}
|
|
170
|
+
async loadStore() {
|
|
171
|
+
return readStore(this.storePath);
|
|
172
|
+
}
|
|
173
|
+
async loadMasterKey() {
|
|
174
|
+
if (this.cachedKey)
|
|
175
|
+
return this.cachedKey;
|
|
176
|
+
this.cachedKey = await this.masterKey.load();
|
|
177
|
+
return this.cachedKey;
|
|
178
|
+
}
|
|
179
|
+
async mutate(mutator) {
|
|
180
|
+
const previous = this.mutex;
|
|
181
|
+
let release;
|
|
182
|
+
this.mutex = new Promise((resolve) => {
|
|
183
|
+
release = resolve;
|
|
184
|
+
});
|
|
185
|
+
try {
|
|
186
|
+
await previous;
|
|
187
|
+
await withStoreMutationLock(this.storePath, async () => {
|
|
188
|
+
const current = await readStore(this.storePath);
|
|
189
|
+
const next = mutator(current);
|
|
190
|
+
await writeStore(this.storePath, next);
|
|
191
|
+
});
|
|
192
|
+
}
|
|
193
|
+
finally {
|
|
194
|
+
release();
|
|
195
|
+
}
|
|
196
|
+
}
|
|
197
|
+
async recordAudit(entry) {
|
|
198
|
+
await this.audit.record(entry);
|
|
199
|
+
}
|
|
200
|
+
}
|
|
201
|
+
export class VaultMissError extends Error {
|
|
202
|
+
key;
|
|
203
|
+
constructor(key) {
|
|
204
|
+
super(`vault: no entry for ${JSON.stringify(key)}`);
|
|
205
|
+
this.key = key;
|
|
206
|
+
this.name = "VaultMissError";
|
|
207
|
+
}
|
|
208
|
+
}
|
|
209
|
+
function assertKey(key) {
|
|
210
|
+
if (typeof key !== "string" || key.length === 0) {
|
|
211
|
+
throw new TypeError("vault: key must be a non-empty string");
|
|
212
|
+
}
|
|
213
|
+
if (key.length > 256) {
|
|
214
|
+
throw new TypeError("vault: key must be 256 characters or fewer");
|
|
215
|
+
}
|
|
216
|
+
}
|
|
217
|
+
function optsCaller(opts) {
|
|
218
|
+
return opts.caller ? { caller: opts.caller } : {};
|
|
219
|
+
}
|
|
220
|
+
// re-exports for ergonomic imports
|
|
221
|
+
export { emptyStore } from "./store.js";
|
|
222
|
+
const PROCESS_STORE_LOCKS = new Map();
|
|
223
|
+
async function withStoreMutationLock(storePath, fn) {
|
|
224
|
+
const key = resolve(storePath);
|
|
225
|
+
const previous = PROCESS_STORE_LOCKS.get(key) ?? Promise.resolve();
|
|
226
|
+
let releaseProcessLock;
|
|
227
|
+
const current = new Promise((resolveLock) => {
|
|
228
|
+
releaseProcessLock = resolveLock;
|
|
229
|
+
});
|
|
230
|
+
const chained = previous.then(() => current, () => current);
|
|
231
|
+
PROCESS_STORE_LOCKS.set(key, chained);
|
|
232
|
+
await previous;
|
|
233
|
+
const lockDir = `${key}.lock`;
|
|
234
|
+
await fs.mkdir(dirname(lockDir), { recursive: true });
|
|
235
|
+
let lockAcquired = false;
|
|
236
|
+
try {
|
|
237
|
+
await acquireFsLock(lockDir);
|
|
238
|
+
lockAcquired = true;
|
|
239
|
+
return await fn();
|
|
240
|
+
}
|
|
241
|
+
finally {
|
|
242
|
+
if (lockAcquired) {
|
|
243
|
+
await fs.rm(lockDir, { recursive: true, force: true }).catch(() => { });
|
|
244
|
+
}
|
|
245
|
+
releaseProcessLock();
|
|
246
|
+
if (PROCESS_STORE_LOCKS.get(key) === chained) {
|
|
247
|
+
PROCESS_STORE_LOCKS.delete(key);
|
|
248
|
+
}
|
|
249
|
+
}
|
|
250
|
+
}
|
|
251
|
+
async function acquireFsLock(lockDir) {
|
|
252
|
+
const startedAt = Date.now();
|
|
253
|
+
while (true) {
|
|
254
|
+
try {
|
|
255
|
+
await fs.mkdir(lockDir, { mode: 0o700 });
|
|
256
|
+
return;
|
|
257
|
+
}
|
|
258
|
+
catch (err) {
|
|
259
|
+
const code = err.code;
|
|
260
|
+
if (code !== "EEXIST")
|
|
261
|
+
throw err;
|
|
262
|
+
if (Date.now() - startedAt > 10_000) {
|
|
263
|
+
throw new Error(`vault store lock timed out: ${lockDir}`);
|
|
264
|
+
}
|
|
265
|
+
await new Promise((resolveWait) => setTimeout(resolveWait, 25));
|
|
266
|
+
}
|
|
267
|
+
}
|
|
268
|
+
}
|
|
269
|
+
//# sourceMappingURL=vault.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"vault.js","sourceRoot":"","sources":["../src/vault.ts"],"names":[],"mappings":"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"}
|
package/package.json
ADDED
|
@@ -0,0 +1,59 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "@elizaos/vault",
|
|
3
|
+
"version": "2.0.0-alpha.537",
|
|
4
|
+
"description": "Simple secrets/config vault for Eliza agents. One API for sensitive credentials and non-sensitive configuration; routes to OS keychain, file, or password manager based on the user's choice.",
|
|
5
|
+
"type": "module",
|
|
6
|
+
"license": "MIT",
|
|
7
|
+
"homepage": "https://github.com/elizaOS/eliza",
|
|
8
|
+
"repository": {
|
|
9
|
+
"type": "git",
|
|
10
|
+
"url": "git+https://github.com/elizaOS/eliza.git",
|
|
11
|
+
"directory": "packages/vault"
|
|
12
|
+
},
|
|
13
|
+
"keywords": [
|
|
14
|
+
"elizaos",
|
|
15
|
+
"vault",
|
|
16
|
+
"secrets",
|
|
17
|
+
"keychain"
|
|
18
|
+
],
|
|
19
|
+
"engines": {
|
|
20
|
+
"node": ">=24.0.0"
|
|
21
|
+
},
|
|
22
|
+
"main": "./dist/index.js",
|
|
23
|
+
"types": "./dist/index.d.ts",
|
|
24
|
+
"files": [
|
|
25
|
+
"dist"
|
|
26
|
+
],
|
|
27
|
+
"exports": {
|
|
28
|
+
".": {
|
|
29
|
+
"types": "./dist/index.d.ts",
|
|
30
|
+
"import": "./dist/index.js",
|
|
31
|
+
"default": "./dist/index.js"
|
|
32
|
+
},
|
|
33
|
+
"./testing": {
|
|
34
|
+
"types": "./dist/testing.d.ts",
|
|
35
|
+
"import": "./dist/testing.js",
|
|
36
|
+
"default": "./dist/testing.js"
|
|
37
|
+
},
|
|
38
|
+
"./package.json": "./package.json"
|
|
39
|
+
},
|
|
40
|
+
"scripts": {
|
|
41
|
+
"clean": "rm -rf dist",
|
|
42
|
+
"prepublishOnly": "bun run build",
|
|
43
|
+
"build": "tsc -p tsconfig.build.json",
|
|
44
|
+
"test": "vitest run",
|
|
45
|
+
"test:watch": "vitest",
|
|
46
|
+
"typecheck": "tsc --noEmit -p tsconfig.json"
|
|
47
|
+
},
|
|
48
|
+
"dependencies": {
|
|
49
|
+
"@napi-rs/keyring": "^1.1.6"
|
|
50
|
+
},
|
|
51
|
+
"devDependencies": {
|
|
52
|
+
"@types/node": "^25.0.0",
|
|
53
|
+
"typescript": "^6.0.0",
|
|
54
|
+
"vitest": "^4.0.0"
|
|
55
|
+
},
|
|
56
|
+
"publishConfig": {
|
|
57
|
+
"access": "public"
|
|
58
|
+
}
|
|
59
|
+
}
|