@centient/secrets 0.3.0 → 0.5.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/README.md +70 -0
- package/dist/cli/secrets-cli.d.ts +7 -2
- package/dist/cli/secrets-cli.d.ts.map +1 -1
- package/dist/cli/secrets-cli.js +49 -2
- package/dist/cli/secrets-cli.js.map +1 -1
- package/dist/crypto/vault-common.d.ts +27 -0
- package/dist/crypto/vault-common.d.ts.map +1 -1
- package/dist/crypto/vault-common.js +81 -0
- package/dist/crypto/vault-common.js.map +1 -1
- package/dist/index.d.ts +3 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +3 -1
- package/dist/index.js.map +1 -1
- package/dist/vault/policy.d.ts +50 -0
- package/dist/vault/policy.d.ts.map +1 -0
- package/dist/vault/policy.js +68 -0
- package/dist/vault/policy.js.map +1 -0
- package/dist/vault/types.d.ts +23 -1
- package/dist/vault/types.d.ts.map +1 -1
- package/dist/vault/vault-env.d.ts +11 -0
- package/dist/vault/vault-env.d.ts.map +1 -1
- package/dist/vault/vault-env.js +17 -0
- package/dist/vault/vault-env.js.map +1 -1
- package/dist/vault/vault-gpg.d.ts +9 -0
- package/dist/vault/vault-gpg.d.ts.map +1 -1
- package/dist/vault/vault-gpg.js +35 -1
- package/dist/vault/vault-gpg.js.map +1 -1
- package/dist/vault/vault-libsecret.d.ts +34 -0
- package/dist/vault/vault-libsecret.d.ts.map +1 -1
- package/dist/vault/vault-libsecret.js +109 -0
- package/dist/vault/vault-libsecret.js.map +1 -1
- package/dist/vault/vault-utils.d.ts +12 -2
- package/dist/vault/vault-utils.d.ts.map +1 -1
- package/dist/vault/vault-utils.js +21 -4
- package/dist/vault/vault-utils.js.map +1 -1
- package/dist/vault/vault-windows.d.ts +14 -0
- package/dist/vault/vault-windows.d.ts.map +1 -1
- package/dist/vault/vault-windows.js +41 -0
- package/dist/vault/vault-windows.js.map +1 -1
- package/dist/vault/vault.d.ts +25 -0
- package/dist/vault/vault.d.ts.map +1 -1
- package/dist/vault/vault.js +110 -3
- package/dist/vault/vault.js.map +1 -1
- package/package.json +24 -2
package/dist/vault/vault.js
CHANGED
|
@@ -15,11 +15,12 @@
|
|
|
15
15
|
*
|
|
16
16
|
* Error handling: all functions return null/false on failure — never throw.
|
|
17
17
|
*/
|
|
18
|
-
import { storeStringInKeychain, getStringFromKeychain, deleteFromKeychain, } from "../crypto/vault-common.js";
|
|
18
|
+
import { storeStringInKeychain, getStringFromKeychain, deleteFromKeychain, listAccountsInKeychain, } from "../crypto/vault-common.js";
|
|
19
19
|
import { WindowsVault } from "./vault-windows.js";
|
|
20
20
|
import { LibsecretVault } from "./vault-libsecret.js";
|
|
21
21
|
import { GpgVault } from "./vault-gpg.js";
|
|
22
22
|
import { EnvVault } from "./vault-env.js";
|
|
23
|
+
import { runBeforeHooks, runAfterHooks } from "./policy.js";
|
|
23
24
|
// =============================================================================
|
|
24
25
|
// Constants
|
|
25
26
|
// =============================================================================
|
|
@@ -45,6 +46,9 @@ class KeychainVault {
|
|
|
45
46
|
delete(key) {
|
|
46
47
|
return deleteFromKeychain(AUTH_KEYCHAIN_SERVICE, key);
|
|
47
48
|
}
|
|
49
|
+
async listKeys(prefix) {
|
|
50
|
+
return listAccountsInKeychain(AUTH_KEYCHAIN_SERVICE, prefix);
|
|
51
|
+
}
|
|
48
52
|
}
|
|
49
53
|
// =============================================================================
|
|
50
54
|
// Cascade initialization
|
|
@@ -85,6 +89,13 @@ function touchSession() {
|
|
|
85
89
|
}
|
|
86
90
|
// =============================================================================
|
|
87
91
|
// Public API
|
|
92
|
+
//
|
|
93
|
+
// Known limitation (0.5.0): when a `before` policy hook rejects an
|
|
94
|
+
// operation by throwing, the rejection propagates to the caller but no
|
|
95
|
+
// `after` event is emitted. This means policy-rejected operations are
|
|
96
|
+
// invisible to the audit trail. The full onion model — where `after`
|
|
97
|
+
// hooks on already-entered policies still fire on abort — ships in 1.0
|
|
98
|
+
// as part of `createSecretsClient`. See ADR-002 §1.0.0.
|
|
88
99
|
// =============================================================================
|
|
89
100
|
/**
|
|
90
101
|
* Returns the type identifier for the active vault backend.
|
|
@@ -103,9 +114,18 @@ export function getActiveVaultType() {
|
|
|
103
114
|
* @returns true on success, false if the backend write fails
|
|
104
115
|
*/
|
|
105
116
|
export async function storeCredential(key, value) {
|
|
117
|
+
const start = performance.now();
|
|
118
|
+
await runBeforeHooks({ type: "write", key });
|
|
106
119
|
const success = activeBackend.store(key, value);
|
|
107
120
|
if (success)
|
|
108
121
|
touchSession();
|
|
122
|
+
runAfterHooks({
|
|
123
|
+
type: success ? "credential_written" : "credential_write_failed",
|
|
124
|
+
timestamp: new Date().toISOString(),
|
|
125
|
+
backend: activeVaultType,
|
|
126
|
+
key,
|
|
127
|
+
durationMs: performance.now() - start,
|
|
128
|
+
});
|
|
109
129
|
return success;
|
|
110
130
|
}
|
|
111
131
|
/**
|
|
@@ -115,9 +135,32 @@ export async function storeCredential(key, value) {
|
|
|
115
135
|
* @returns The stored value, or null if not found / backend unavailable
|
|
116
136
|
*/
|
|
117
137
|
export async function getCredential(key) {
|
|
118
|
-
const
|
|
138
|
+
const start = performance.now();
|
|
139
|
+
await runBeforeHooks({ type: "read", key });
|
|
140
|
+
let value;
|
|
141
|
+
try {
|
|
142
|
+
value = activeBackend.retrieve(key);
|
|
143
|
+
}
|
|
144
|
+
catch (err) {
|
|
145
|
+
runAfterHooks({
|
|
146
|
+
type: "credential_read_failed",
|
|
147
|
+
timestamp: new Date().toISOString(),
|
|
148
|
+
backend: activeVaultType,
|
|
149
|
+
key,
|
|
150
|
+
error: err instanceof Error ? err.message : String(err),
|
|
151
|
+
durationMs: performance.now() - start,
|
|
152
|
+
});
|
|
153
|
+
throw err;
|
|
154
|
+
}
|
|
119
155
|
if (value !== null)
|
|
120
156
|
touchSession();
|
|
157
|
+
runAfterHooks({
|
|
158
|
+
type: value !== null ? "credential_read" : "credential_read_missing",
|
|
159
|
+
timestamp: new Date().toISOString(),
|
|
160
|
+
backend: activeVaultType,
|
|
161
|
+
key,
|
|
162
|
+
durationMs: performance.now() - start,
|
|
163
|
+
});
|
|
121
164
|
return value;
|
|
122
165
|
}
|
|
123
166
|
/**
|
|
@@ -127,6 +170,70 @@ export async function getCredential(key) {
|
|
|
127
170
|
* @returns true on success (including "already deleted"), false on unexpected error
|
|
128
171
|
*/
|
|
129
172
|
export async function deleteCredential(key) {
|
|
130
|
-
|
|
173
|
+
const start = performance.now();
|
|
174
|
+
await runBeforeHooks({ type: "delete", key });
|
|
175
|
+
const success = activeBackend.delete(key);
|
|
176
|
+
runAfterHooks({
|
|
177
|
+
type: success ? "credential_deleted" : "credential_delete_failed",
|
|
178
|
+
timestamp: new Date().toISOString(),
|
|
179
|
+
backend: activeVaultType,
|
|
180
|
+
key,
|
|
181
|
+
durationMs: performance.now() - start,
|
|
182
|
+
});
|
|
183
|
+
return success;
|
|
184
|
+
}
|
|
185
|
+
/**
|
|
186
|
+
* Enumerate credential keys in the active vault backend, optionally
|
|
187
|
+
* filtered by a key prefix.
|
|
188
|
+
*
|
|
189
|
+
* Returns only the keys — credential values are retrieved via
|
|
190
|
+
* `getCredential(key)` on demand. This keeps listing cheap and avoids
|
|
191
|
+
* pulling secret material into memory.
|
|
192
|
+
*
|
|
193
|
+
* @param prefix - optional key prefix filter. When omitted, all keys are
|
|
194
|
+
* returned.
|
|
195
|
+
*
|
|
196
|
+
* Note: credential keys must match `isValidKey` — lowercase alphanumeric
|
|
197
|
+
* plus hyphen and dot, first and last character alphanumeric, <=64 chars.
|
|
198
|
+
* Both `-` and `.` work as namespace separators; pick whichever convention
|
|
199
|
+
* reads best.
|
|
200
|
+
*
|
|
201
|
+
* @example
|
|
202
|
+
* // Enumerate all soma-owned Anthropic credentials
|
|
203
|
+
* const keys = await listCredentials("soma.anthropic.");
|
|
204
|
+
* for (const key of keys) {
|
|
205
|
+
* const value = await getCredential(key);
|
|
206
|
+
* // ... round-robin rotation, etc.
|
|
207
|
+
* }
|
|
208
|
+
*/
|
|
209
|
+
export async function listCredentials(prefix) {
|
|
210
|
+
const start = performance.now();
|
|
211
|
+
await runBeforeHooks({ type: "enumerate", prefix });
|
|
212
|
+
let keys;
|
|
213
|
+
try {
|
|
214
|
+
keys = await activeBackend.listKeys(prefix);
|
|
215
|
+
}
|
|
216
|
+
catch (err) {
|
|
217
|
+
runAfterHooks({
|
|
218
|
+
type: "credential_enumerate_failed",
|
|
219
|
+
timestamp: new Date().toISOString(),
|
|
220
|
+
backend: activeVaultType,
|
|
221
|
+
prefix,
|
|
222
|
+
error: err instanceof Error ? err.message : String(err),
|
|
223
|
+
durationMs: performance.now() - start,
|
|
224
|
+
});
|
|
225
|
+
throw err;
|
|
226
|
+
}
|
|
227
|
+
if (keys.length > 0)
|
|
228
|
+
touchSession();
|
|
229
|
+
runAfterHooks({
|
|
230
|
+
type: "credential_enumerated",
|
|
231
|
+
timestamp: new Date().toISOString(),
|
|
232
|
+
backend: activeVaultType,
|
|
233
|
+
prefix,
|
|
234
|
+
keyCount: keys.length,
|
|
235
|
+
durationMs: performance.now() - start,
|
|
236
|
+
});
|
|
237
|
+
return keys;
|
|
131
238
|
}
|
|
132
239
|
//# sourceMappingURL=vault.js.map
|
package/dist/vault/vault.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"vault.js","sourceRoot":"","sources":["../../src/vault/vault.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;GAgBG;AAEH,OAAO,EACL,qBAAqB,EACrB,qBAAqB,EACrB,kBAAkB,
|
|
1
|
+
{"version":3,"file":"vault.js","sourceRoot":"","sources":["../../src/vault/vault.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,7 +1,25 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@centient/secrets",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.5.0",
|
|
4
4
|
"description": "Cross-platform secrets vault with AES-256-GCM encryption and platform-native key storage",
|
|
5
|
+
"repository": {
|
|
6
|
+
"type": "git",
|
|
7
|
+
"url": "git+https://github.com/centient-labs/centient-sdk.git",
|
|
8
|
+
"directory": "packages/secrets"
|
|
9
|
+
},
|
|
10
|
+
"bugs": {
|
|
11
|
+
"url": "https://github.com/centient-labs/centient-sdk/issues"
|
|
12
|
+
},
|
|
13
|
+
"homepage": "https://github.com/centient-labs/centient-sdk/tree/main/packages/secrets#readme",
|
|
14
|
+
"author": "Owen Johnson",
|
|
15
|
+
"keywords": [
|
|
16
|
+
"centient",
|
|
17
|
+
"secrets",
|
|
18
|
+
"vault",
|
|
19
|
+
"encryption",
|
|
20
|
+
"aes-256-gcm",
|
|
21
|
+
"keychain"
|
|
22
|
+
],
|
|
5
23
|
"type": "module",
|
|
6
24
|
"main": "./dist/index.js",
|
|
7
25
|
"types": "./dist/index.d.ts",
|
|
@@ -20,12 +38,16 @@
|
|
|
20
38
|
"vitest": "^4.0.17"
|
|
21
39
|
},
|
|
22
40
|
"files": [
|
|
23
|
-
"dist"
|
|
41
|
+
"dist",
|
|
42
|
+
"README.md"
|
|
24
43
|
],
|
|
25
44
|
"engines": {
|
|
26
45
|
"node": ">=18.0.0"
|
|
27
46
|
},
|
|
28
47
|
"license": "MIT",
|
|
48
|
+
"dependencies": {
|
|
49
|
+
"dbus-next": "^0.10.2"
|
|
50
|
+
},
|
|
29
51
|
"scripts": {
|
|
30
52
|
"build": "tsc",
|
|
31
53
|
"dev": "tsc --watch",
|