@de-otio/chaoskb-client 0.3.6 → 0.3.8
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/bootstrap.d.ts +11 -3
- package/dist/cli/bootstrap.d.ts.map +1 -1
- package/dist/cli/bootstrap.js +181 -126
- package/dist/cli/bootstrap.js.map +1 -1
- package/dist/cli/commands/config.d.ts +30 -4
- package/dist/cli/commands/config.d.ts.map +1 -1
- package/dist/cli/commands/config.js +289 -134
- package/dist/cli/commands/config.js.map +1 -1
- package/dist/cli/commands/devices.d.ts.map +1 -1
- package/dist/cli/commands/devices.js +58 -33
- package/dist/cli/commands/devices.js.map +1 -1
- package/dist/cli/commands/export.d.ts.map +1 -1
- package/dist/cli/commands/export.js +6 -9
- package/dist/cli/commands/export.js.map +1 -1
- package/dist/cli/commands/import.js +1 -1
- package/dist/cli/commands/import.js.map +1 -1
- package/dist/cli/commands/projects.d.ts.map +1 -1
- package/dist/cli/commands/projects.js +33 -10
- package/dist/cli/commands/projects.js.map +1 -1
- package/dist/cli/commands/rotate-key.d.ts +3 -3
- package/dist/cli/commands/rotate-key.d.ts.map +1 -1
- package/dist/cli/commands/rotate-key.js +88 -35
- package/dist/cli/commands/rotate-key.js.map +1 -1
- package/dist/cli/commands/setup-sync.d.ts.map +1 -1
- package/dist/cli/commands/setup-sync.js +22 -4
- package/dist/cli/commands/setup-sync.js.map +1 -1
- package/dist/cli/index.js +20 -1
- package/dist/cli/index.js.map +1 -1
- package/dist/cli/mcp-server.d.ts +6 -0
- package/dist/cli/mcp-server.d.ts.map +1 -1
- package/dist/cli/mcp-server.js +93 -42
- package/dist/cli/mcp-server.js.map +1 -1
- package/dist/crypto/aad.d.ts +2 -5
- package/dist/crypto/aad.d.ts.map +1 -1
- package/dist/crypto/aad.js +2 -8
- package/dist/crypto/aad.js.map +1 -1
- package/dist/crypto/aead.d.ts +8 -16
- package/dist/crypto/aead.d.ts.map +1 -1
- package/dist/crypto/aead.js +10 -36
- package/dist/crypto/aead.js.map +1 -1
- package/dist/crypto/blob-id.d.ts +2 -3
- package/dist/crypto/blob-id.d.ts.map +1 -1
- package/dist/crypto/blob-id.js +2 -30
- package/dist/crypto/blob-id.js.map +1 -1
- package/dist/crypto/canonical-json.d.ts +5 -3
- package/dist/crypto/canonical-json.d.ts.map +1 -1
- package/dist/crypto/canonical-json.js +5 -85
- package/dist/crypto/canonical-json.js.map +1 -1
- package/dist/crypto/commitment.d.ts +3 -9
- package/dist/crypto/commitment.d.ts.map +1 -1
- package/dist/crypto/commitment.js +3 -27
- package/dist/crypto/commitment.js.map +1 -1
- package/dist/crypto/encryption-service.d.ts +3 -0
- package/dist/crypto/encryption-service.d.ts.map +1 -1
- package/dist/crypto/encryption-service.js +10 -6
- package/dist/crypto/encryption-service.js.map +1 -1
- package/dist/crypto/envelope-cbor.d.ts +4 -34
- package/dist/crypto/envelope-cbor.d.ts.map +1 -1
- package/dist/crypto/envelope-cbor.js +4 -121
- package/dist/crypto/envelope-cbor.js.map +1 -1
- package/dist/crypto/envelope.d.ts +1 -31
- package/dist/crypto/envelope.d.ts.map +1 -1
- package/dist/crypto/envelope.js +31 -137
- package/dist/crypto/envelope.js.map +1 -1
- package/dist/crypto/hkdf.d.ts +7 -11
- package/dist/crypto/hkdf.d.ts.map +1 -1
- package/dist/crypto/hkdf.js +9 -18
- package/dist/crypto/hkdf.js.map +1 -1
- package/dist/crypto/index.d.ts +9 -4
- package/dist/crypto/index.d.ts.map +1 -1
- package/dist/crypto/index.js +9 -4
- package/dist/crypto/index.js.map +1 -1
- package/dist/crypto/ssh-keys.d.ts +17 -10
- package/dist/crypto/ssh-keys.d.ts.map +1 -1
- package/dist/crypto/ssh-keys.js +28 -108
- package/dist/crypto/ssh-keys.js.map +1 -1
- package/dist/crypto/types.d.ts +18 -88
- package/dist/crypto/types.d.ts.map +1 -1
- package/dist/crypto/types.js +3 -0
- package/dist/crypto/types.js.map +1 -1
- package/dist/pipeline/content-pipeline.d.ts.map +1 -1
- package/dist/pipeline/content-pipeline.js +21 -5
- package/dist/pipeline/content-pipeline.js.map +1 -1
- package/dist/pipeline/extract.d.ts +8 -0
- package/dist/pipeline/extract.d.ts.map +1 -1
- package/dist/pipeline/extract.js +15 -4
- package/dist/pipeline/extract.js.map +1 -1
- package/dist/pipeline/fetch-browser.d.ts +29 -0
- package/dist/pipeline/fetch-browser.d.ts.map +1 -0
- package/dist/pipeline/fetch-browser.js +98 -0
- package/dist/pipeline/fetch-browser.js.map +1 -0
- package/dist/pipeline/safety.d.ts +43 -6
- package/dist/pipeline/safety.d.ts.map +1 -1
- package/dist/pipeline/safety.js +52 -15
- package/dist/pipeline/safety.js.map +1 -1
- package/dist/pipeline/validate.js +35 -23
- package/dist/pipeline/validate.js.map +1 -1
- package/package.json +4 -1
- package/dist/crypto/argon2.d.ts +0 -11
- package/dist/crypto/argon2.d.ts.map +0 -1
- package/dist/crypto/argon2.js +0 -33
- package/dist/crypto/argon2.js.map +0 -1
- package/dist/crypto/invite.d.ts +0 -31
- package/dist/crypto/invite.d.ts.map +0 -1
- package/dist/crypto/invite.js +0 -139
- package/dist/crypto/invite.js.map +0 -1
- package/dist/crypto/keyring.d.ts +0 -37
- package/dist/crypto/keyring.d.ts.map +0 -1
- package/dist/crypto/keyring.js +0 -219
- package/dist/crypto/keyring.js.map +0 -1
- package/dist/crypto/known-keys.d.ts +0 -34
- package/dist/crypto/known-keys.d.ts.map +0 -1
- package/dist/crypto/known-keys.js +0 -114
- package/dist/crypto/known-keys.js.map +0 -1
- package/dist/crypto/project-keys.d.ts +0 -26
- package/dist/crypto/project-keys.d.ts.map +0 -1
- package/dist/crypto/project-keys.js +0 -69
- package/dist/crypto/project-keys.js.map +0 -1
- package/dist/crypto/secure-buffer.d.ts +0 -31
- package/dist/crypto/secure-buffer.d.ts.map +0 -1
- package/dist/crypto/secure-buffer.js +0 -61
- package/dist/crypto/secure-buffer.js.map +0 -1
- package/dist/crypto/tiers/enhanced.d.ts +0 -25
- package/dist/crypto/tiers/enhanced.d.ts.map +0 -1
- package/dist/crypto/tiers/enhanced.js +0 -56
- package/dist/crypto/tiers/enhanced.js.map +0 -1
- package/dist/crypto/tiers/maximum.d.ts +0 -19
- package/dist/crypto/tiers/maximum.d.ts.map +0 -1
- package/dist/crypto/tiers/maximum.js +0 -25
- package/dist/crypto/tiers/maximum.js.map +0 -1
- package/dist/crypto/tiers/standard.d.ts +0 -27
- package/dist/crypto/tiers/standard.d.ts.map +0 -1
- package/dist/crypto/tiers/standard.js +0 -155
- package/dist/crypto/tiers/standard.js.map +0 -1
package/dist/cli/bootstrap.d.ts
CHANGED
|
@@ -1,5 +1,11 @@
|
|
|
1
1
|
export declare const CHAOSKB_DIR: string;
|
|
2
2
|
export declare const FILE_KEY_PATH: string;
|
|
3
|
+
/** OS keychain service name for chaoskb-managed slots. */
|
|
4
|
+
export declare const KEYRING_SERVICE = "chaoskb";
|
|
5
|
+
/** Fallback Ed25519 identity slot names. These live alongside the
|
|
6
|
+
* personal master in the same service namespace. */
|
|
7
|
+
export declare const IDENTITY_SECRET_SLOT = "identity-secret";
|
|
8
|
+
export declare const IDENTITY_PUBLIC_SLOT = "identity-public";
|
|
3
9
|
export interface BootstrapOptions {
|
|
4
10
|
/** Override the base directory (default: ~/.chaoskb). For testing. */
|
|
5
11
|
baseDir?: string;
|
|
@@ -7,9 +13,11 @@ export interface BootstrapOptions {
|
|
|
7
13
|
/**
|
|
8
14
|
* Auto-bootstrap ChaosKB on first launch.
|
|
9
15
|
*
|
|
10
|
-
* Creates ~/.chaoskb/, generates a master key,
|
|
11
|
-
*
|
|
12
|
-
*
|
|
16
|
+
* Creates ~/.chaoskb/, generates a master key, wraps it with the user's
|
|
17
|
+
* SSH public key (via keyring's `StandardTier`), persists the wrapped
|
|
18
|
+
* blob in the OS keychain, initializes the database, and writes
|
|
19
|
+
* config.json — all with standard security tier and no interactive
|
|
20
|
+
* prompts.
|
|
13
21
|
*
|
|
14
22
|
* Idempotent: no-ops if config.json already exists.
|
|
15
23
|
* Concurrency-safe: uses file-based locking to prevent races.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"bootstrap.d.ts","sourceRoot":"","sources":["../../cli/bootstrap.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"bootstrap.d.ts","sourceRoot":"","sources":["../../cli/bootstrap.ts"],"names":[],"mappings":"AAoBA,eAAO,MAAM,WAAW,QAAsC,CAAC;AAC/D,eAAO,MAAM,aAAa,QAAuC,CAAC;AAElE,0DAA0D;AAC1D,eAAO,MAAM,eAAe,YAAY,CAAC;AACzC;qDACqD;AACrD,eAAO,MAAM,oBAAoB,oBAAoB,CAAC;AACtD,eAAO,MAAM,oBAAoB,oBAAoB,CAAC;AAEtD,MAAM,WAAW,gBAAgB;IAC/B,sEAAsE;IACtE,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAsCD;;;;;;;;;;;GAWG;AACH,wBAAsB,SAAS,CAAC,OAAO,CAAC,EAAE,gBAAgB,GAAG,OAAO,CAAC,IAAI,CAAC,CA6IzE;AA8XD;;;GAGG;AACH,wBAAsB,qBAAqB,CAAC,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAsB7E"}
|
package/dist/cli/bootstrap.js
CHANGED
|
@@ -1,18 +1,57 @@
|
|
|
1
1
|
import * as fs from 'node:fs';
|
|
2
2
|
import * as path from 'node:path';
|
|
3
3
|
import * as os from 'node:os';
|
|
4
|
+
import { randomBytes } from 'node:crypto';
|
|
5
|
+
import { KeyRing, StandardTier, OsKeychainStorage, FileSystemStorage, OsKeychainUnavailable, parseSshPublicKey, } from '@de-otio/keyring';
|
|
6
|
+
import { SecureBuffer, asMasterKey } from '@de-otio/crypto-envelope';
|
|
4
7
|
import { acquireBootstrapLock } from './bootstrap-lock.js';
|
|
5
8
|
export const CHAOSKB_DIR = path.join(os.homedir(), '.chaoskb');
|
|
6
9
|
export const FILE_KEY_PATH = path.join(CHAOSKB_DIR, 'master.key');
|
|
10
|
+
/** OS keychain service name for chaoskb-managed slots. */
|
|
11
|
+
export const KEYRING_SERVICE = 'chaoskb';
|
|
12
|
+
/** Fallback Ed25519 identity slot names. These live alongside the
|
|
13
|
+
* personal master in the same service namespace. */
|
|
14
|
+
export const IDENTITY_SECRET_SLOT = 'identity-secret';
|
|
15
|
+
export const IDENTITY_PUBLIC_SLOT = 'identity-public';
|
|
7
16
|
function resolveDir(baseDir) {
|
|
8
17
|
return baseDir ?? CHAOSKB_DIR;
|
|
9
18
|
}
|
|
19
|
+
/**
|
|
20
|
+
* Build the chaoskb keyring storage. Prefers the OS keychain; falls back
|
|
21
|
+
* to a filesystem store when `CHAOSKB_KEY_STORAGE=file` is set or the OS
|
|
22
|
+
* keychain is unavailable (headless CI, unsupported platform).
|
|
23
|
+
*
|
|
24
|
+
* The filesystem fallback mirrors the previous `master.key` location but
|
|
25
|
+
* uses keyring's `FileSystemStorage` format — slot files under a 0700
|
|
26
|
+
* directory. Wire format is v1 per keyring.
|
|
27
|
+
*/
|
|
28
|
+
async function buildStorage(baseDir) {
|
|
29
|
+
const wantFile = process.env.CHAOSKB_KEY_STORAGE === 'file';
|
|
30
|
+
if (wantFile) {
|
|
31
|
+
const fsDir = path.join(baseDir, 'keyring');
|
|
32
|
+
fs.mkdirSync(fsDir, { recursive: true, mode: 0o700 });
|
|
33
|
+
return {
|
|
34
|
+
storage: new FileSystemStorage({ root: fsDir }),
|
|
35
|
+
kind: 'file',
|
|
36
|
+
};
|
|
37
|
+
}
|
|
38
|
+
// OS keychain is checked lazily when the first put/get/delete is made.
|
|
39
|
+
return {
|
|
40
|
+
storage: new OsKeychainStorage({
|
|
41
|
+
service: KEYRING_SERVICE,
|
|
42
|
+
acceptedTiers: ['standard'],
|
|
43
|
+
}),
|
|
44
|
+
kind: 'os-keychain',
|
|
45
|
+
};
|
|
46
|
+
}
|
|
10
47
|
/**
|
|
11
48
|
* Auto-bootstrap ChaosKB on first launch.
|
|
12
49
|
*
|
|
13
|
-
* Creates ~/.chaoskb/, generates a master key,
|
|
14
|
-
*
|
|
15
|
-
*
|
|
50
|
+
* Creates ~/.chaoskb/, generates a master key, wraps it with the user's
|
|
51
|
+
* SSH public key (via keyring's `StandardTier`), persists the wrapped
|
|
52
|
+
* blob in the OS keychain, initializes the database, and writes
|
|
53
|
+
* config.json — all with standard security tier and no interactive
|
|
54
|
+
* prompts.
|
|
16
55
|
*
|
|
17
56
|
* Idempotent: no-ops if config.json already exists.
|
|
18
57
|
* Concurrency-safe: uses file-based locking to prevent races.
|
|
@@ -21,7 +60,6 @@ export async function bootstrap(options) {
|
|
|
21
60
|
const chaoskbDir = resolveDir(options?.baseDir);
|
|
22
61
|
const configPath = path.join(chaoskbDir, 'config.json');
|
|
23
62
|
const modelsDir = path.join(chaoskbDir, 'models');
|
|
24
|
-
const fileKeyPath = path.join(chaoskbDir, 'master.key');
|
|
25
63
|
// Fast path: already configured
|
|
26
64
|
if (fs.existsSync(configPath)) {
|
|
27
65
|
return;
|
|
@@ -40,44 +78,78 @@ export async function bootstrap(options) {
|
|
|
40
78
|
if (!fs.existsSync(modelsDir)) {
|
|
41
79
|
fs.mkdirSync(modelsDir, { recursive: true, mode: 0o700 });
|
|
42
80
|
}
|
|
43
|
-
// 2.
|
|
44
|
-
const
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
81
|
+
// 2. Detect SSH key for zero-config sync and as the keyring tier input.
|
|
82
|
+
const sshResult = await detectSSHKey(chaoskbDir);
|
|
83
|
+
// 3. Generate a random 32-byte master key (plain Uint8Array — we hand
|
|
84
|
+
// it to keyring which owns its SecureBuffer lifecycle).
|
|
85
|
+
const masterBytes = new Uint8Array(randomBytes(32));
|
|
86
|
+
const masterSb = SecureBuffer.from(Buffer.from(masterBytes));
|
|
87
|
+
const master = asMasterKey(masterSb);
|
|
88
|
+
// Keep a copy for sync registration (pre-upload). Zeroed at the end.
|
|
89
|
+
const masterKeyCopy = Buffer.from(masterBytes);
|
|
90
|
+
masterBytes.fill(0);
|
|
91
|
+
// 4. Wrap the master with the SSH key and persist via keyring.
|
|
92
|
+
let keyringOk = false;
|
|
48
93
|
try {
|
|
49
|
-
|
|
94
|
+
if (sshResult.publicKey) {
|
|
95
|
+
const tier = StandardTier.fromSshKey(sshResult.publicKey);
|
|
96
|
+
const { storage } = await buildStorage(chaoskbDir);
|
|
97
|
+
const ring = new KeyRing({ tier, storage });
|
|
98
|
+
await ring.setup(master);
|
|
99
|
+
keyringOk = true;
|
|
100
|
+
if (process.platform === 'darwin') {
|
|
101
|
+
process.stderr.write('Storing encryption key in macOS Keychain.\n' +
|
|
102
|
+
'You may see a system dialog asking to allow keychain access — this is expected.\n');
|
|
103
|
+
}
|
|
104
|
+
}
|
|
50
105
|
}
|
|
51
106
|
catch (keyringError) {
|
|
52
|
-
//
|
|
53
|
-
if (process.env.CHAOSKB_KEY_STORAGE === 'file') {
|
|
54
|
-
process.stderr.write('\n⚠ OS keyring unavailable. Storing key in ' +
|
|
107
|
+
// Master not yet disposed — fall through to file fallback.
|
|
108
|
+
if (process.env.CHAOSKB_KEY_STORAGE === 'file' || keyringError instanceof OsKeychainUnavailable) {
|
|
109
|
+
process.stderr.write('\n⚠ OS keyring unavailable. Storing key in ' +
|
|
110
|
+
FILE_KEY_PATH +
|
|
111
|
+
' (file-based).\n' +
|
|
55
112
|
' This is less secure than the OS keyring. The key file is readable by any process running as your user.\n\n');
|
|
56
|
-
fs.writeFileSync(
|
|
113
|
+
fs.writeFileSync(path.join(chaoskbDir, 'master.key'), masterKeyCopy.toString('hex'), {
|
|
114
|
+
mode: 0o600,
|
|
115
|
+
});
|
|
116
|
+
keyringOk = true;
|
|
57
117
|
}
|
|
58
118
|
else {
|
|
59
|
-
|
|
119
|
+
master.dispose();
|
|
120
|
+
masterKeyCopy.fill(0);
|
|
60
121
|
throw new Error(`Failed to store master key in OS keyring: ${keyringError instanceof Error ? keyringError.message : String(keyringError)}\n\n` +
|
|
61
122
|
' To fix this, either:\n' +
|
|
62
123
|
' • Install/configure your OS keyring service (macOS Keychain, Linux Secret Service, Windows Credential Manager)\n' +
|
|
63
124
|
' • Set CHAOSKB_KEY_STORAGE=file to use file-based key storage (less secure)\n');
|
|
64
125
|
}
|
|
65
126
|
}
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
127
|
+
if (!keyringOk && !sshResult.publicKey) {
|
|
128
|
+
// No SSH key at all AND we didn't persist yet — fall back to file
|
|
129
|
+
// storage so the bootstrap can still complete.
|
|
130
|
+
if (process.env.CHAOSKB_KEY_STORAGE === 'file') {
|
|
131
|
+
fs.writeFileSync(path.join(chaoskbDir, 'master.key'), masterKeyCopy.toString('hex'), {
|
|
132
|
+
mode: 0o600,
|
|
133
|
+
});
|
|
134
|
+
}
|
|
135
|
+
else {
|
|
136
|
+
master.dispose();
|
|
137
|
+
masterKeyCopy.fill(0);
|
|
138
|
+
throw new Error('No SSH key found and CHAOSKB_KEY_STORAGE=file not set. ' +
|
|
139
|
+
'Run `ssh-keygen` or set CHAOSKB_KEY_STORAGE=file to continue.');
|
|
140
|
+
}
|
|
141
|
+
}
|
|
142
|
+
master.dispose();
|
|
143
|
+
// 5. Initialize database
|
|
70
144
|
const { DatabaseManager } = await import('../storage/database-manager.js');
|
|
71
145
|
const dbManager = new DatabaseManager(chaoskbDir);
|
|
72
146
|
const db = dbManager.getPersonalDb();
|
|
73
147
|
db.close();
|
|
74
148
|
dbManager.closeAll();
|
|
75
|
-
// 5. Detect SSH key for zero-config sync
|
|
76
|
-
const sshResult = await detectSSHKey();
|
|
77
149
|
// 6. Register with sync server (non-blocking)
|
|
78
|
-
const syncResult = await attemptSyncRegistration(sshResult,
|
|
150
|
+
const syncResult = await attemptSyncRegistration(sshResult, masterKeyCopy, chaoskbDir);
|
|
79
151
|
// Zero the copy
|
|
80
|
-
|
|
152
|
+
masterKeyCopy.fill(0);
|
|
81
153
|
// 7. Write config
|
|
82
154
|
const config = {
|
|
83
155
|
securityTier: 'standard',
|
|
@@ -112,7 +184,7 @@ export async function bootstrap(options) {
|
|
|
112
184
|
* Priority: ssh-agent (Ed25519 > RSA) → filesystem (id_ed25519 > id_rsa)
|
|
113
185
|
* If no SSH key found, returns source: 'none'.
|
|
114
186
|
*/
|
|
115
|
-
async function detectSSHKey() {
|
|
187
|
+
async function detectSSHKey(baseDir) {
|
|
116
188
|
// Respect opt-out
|
|
117
189
|
if (process.env.CHAOSKB_SYNC === 'off') {
|
|
118
190
|
return { publicKey: null, fingerprint: null, keyPath: null, source: 'none' };
|
|
@@ -150,8 +222,7 @@ async function detectSSHKey() {
|
|
|
150
222
|
if (fs.existsSync(pubKeyPath)) {
|
|
151
223
|
try {
|
|
152
224
|
const content = fs.readFileSync(pubKeyPath, 'utf-8').trim();
|
|
153
|
-
const
|
|
154
|
-
const parsed = parseSSHPublicKey(content);
|
|
225
|
+
const parsed = parseSshPublicKey(content);
|
|
155
226
|
return {
|
|
156
227
|
publicKey: content,
|
|
157
228
|
fingerprint: parsed.fingerprint,
|
|
@@ -167,7 +238,7 @@ async function detectSSHKey() {
|
|
|
167
238
|
}
|
|
168
239
|
// No SSH key found — try generating a fallback key in keyring
|
|
169
240
|
try {
|
|
170
|
-
const fallback = await generateFallbackKey();
|
|
241
|
+
const fallback = await generateFallbackKey(baseDir);
|
|
171
242
|
if (fallback)
|
|
172
243
|
return fallback;
|
|
173
244
|
}
|
|
@@ -179,19 +250,40 @@ async function detectSSHKey() {
|
|
|
179
250
|
/**
|
|
180
251
|
* Generate a fallback Ed25519 key pair and store it in the OS keyring.
|
|
181
252
|
* Never written to disk. Returns null if keyring is unavailable.
|
|
253
|
+
*
|
|
254
|
+
* Uses keyring's `OsKeychainStorage` directly at dedicated slot names.
|
|
255
|
+
* Stored as a degenerate `WrappedKey` shape — the slot contract is a
|
|
256
|
+
* `WrappedKey`, so we wrap the raw identity bytes in the `envelope`
|
|
257
|
+
* field and use tier='standard' purely as a placeholder. This is a
|
|
258
|
+
* chaoskb-specific convention; the bytes are not AEAD-wrapped because
|
|
259
|
+
* the whole point is that there's no other key material to wrap them
|
|
260
|
+
* with on a new install.
|
|
182
261
|
*/
|
|
183
|
-
async function generateFallbackKey() {
|
|
262
|
+
async function generateFallbackKey(_baseDir) {
|
|
184
263
|
const sodium = (await import('sodium-native')).default;
|
|
185
|
-
const { KeyringService } = await import('../crypto/keyring.js');
|
|
186
264
|
const pk = Buffer.alloc(sodium.crypto_sign_PUBLICKEYBYTES);
|
|
187
265
|
const sk = Buffer.alloc(sodium.crypto_sign_SECRETKEYBYTES);
|
|
188
266
|
sodium.crypto_sign_keypair(pk, sk);
|
|
189
267
|
try {
|
|
190
|
-
|
|
191
|
-
|
|
192
|
-
|
|
193
|
-
|
|
194
|
-
|
|
268
|
+
const storage = new OsKeychainStorage({
|
|
269
|
+
service: KEYRING_SERVICE,
|
|
270
|
+
acceptedTiers: ['standard'],
|
|
271
|
+
});
|
|
272
|
+
const now = new Date().toISOString();
|
|
273
|
+
const skWrapped = {
|
|
274
|
+
v: 1,
|
|
275
|
+
tier: 'standard',
|
|
276
|
+
envelope: new Uint8Array(sk),
|
|
277
|
+
ts: now,
|
|
278
|
+
};
|
|
279
|
+
const pkWrapped = {
|
|
280
|
+
v: 1,
|
|
281
|
+
tier: 'standard',
|
|
282
|
+
envelope: new Uint8Array(pk),
|
|
283
|
+
ts: now,
|
|
284
|
+
};
|
|
285
|
+
await storage.put(IDENTITY_SECRET_SLOT, skWrapped);
|
|
286
|
+
await storage.put(IDENTITY_PUBLIC_SLOT, pkWrapped);
|
|
195
287
|
}
|
|
196
288
|
catch {
|
|
197
289
|
sk.fill(0);
|
|
@@ -200,10 +292,7 @@ async function generateFallbackKey() {
|
|
|
200
292
|
// Build the SSH public key line
|
|
201
293
|
const { createHash } = await import('node:crypto');
|
|
202
294
|
const typeStr = Buffer.from('ssh-ed25519');
|
|
203
|
-
const keyBlob = Buffer.concat([
|
|
204
|
-
uint32BE(typeStr.length), typeStr,
|
|
205
|
-
uint32BE(pk.length), pk,
|
|
206
|
-
]);
|
|
295
|
+
const keyBlob = Buffer.concat([uint32BE(typeStr.length), typeStr, uint32BE(pk.length), pk]);
|
|
207
296
|
const base64Blob = keyBlob.toString('base64');
|
|
208
297
|
const fingerprint = 'SHA256:' + createHash('sha256').update(keyBlob).digest('base64').replace(/=+$/, '');
|
|
209
298
|
sk.fill(0);
|
|
@@ -226,7 +315,7 @@ const DEFAULT_SYNC_ENDPOINT = 'https://sync.chaoskb.com';
|
|
|
226
315
|
* Non-blocking: if the server is unreachable, returns pending=true
|
|
227
316
|
* and the next launch will retry.
|
|
228
317
|
*/
|
|
229
|
-
async function attemptSyncRegistration(ssh, masterKeyBuffer) {
|
|
318
|
+
async function attemptSyncRegistration(ssh, masterKeyBuffer, baseDir) {
|
|
230
319
|
if (process.env.CHAOSKB_SYNC === 'off' || !ssh.publicKey) {
|
|
231
320
|
return { enabled: false, pending: false, endpoint: null };
|
|
232
321
|
}
|
|
@@ -243,7 +332,7 @@ async function attemptSyncRegistration(ssh, masterKeyBuffer) {
|
|
|
243
332
|
if (!challengeRes.ok) {
|
|
244
333
|
return { enabled: false, pending: true, endpoint };
|
|
245
334
|
}
|
|
246
|
-
const { challenge } = await challengeRes.json();
|
|
335
|
+
const { challenge } = (await challengeRes.json());
|
|
247
336
|
// Step 2: Sign the challenge using SSHSigner (handles OpenSSH key formats + ssh-agent)
|
|
248
337
|
const { SSHSigner } = await import('../sync/ssh-signer.js');
|
|
249
338
|
const signer = new SSHSigner(ssh.keyPath ?? undefined);
|
|
@@ -275,15 +364,15 @@ async function attemptSyncRegistration(ssh, masterKeyBuffer) {
|
|
|
275
364
|
// Other server errors — mark as pending for retry
|
|
276
365
|
return { enabled: false, pending: true, endpoint };
|
|
277
366
|
}
|
|
278
|
-
const regResult = await response.json();
|
|
279
|
-
// Existing account — download and
|
|
367
|
+
const regResult = (await response.json());
|
|
368
|
+
// Existing account — download and store the server's wrapped master.
|
|
280
369
|
if (regResult.status === 'existing') {
|
|
281
|
-
await restoreMasterKey(endpoint, ssh);
|
|
370
|
+
await restoreMasterKey(endpoint, ssh, baseDir);
|
|
282
371
|
return { enabled: true, pending: false, endpoint };
|
|
283
372
|
}
|
|
284
373
|
// New account — wrap master key and upload
|
|
285
374
|
if (masterKeyBuffer.length > 0) {
|
|
286
|
-
await uploadWrappedMasterKey(endpoint, ssh, masterKeyBuffer);
|
|
375
|
+
await uploadWrappedMasterKey(endpoint, ssh, masterKeyBuffer, baseDir);
|
|
287
376
|
}
|
|
288
377
|
return { enabled: true, pending: false, endpoint };
|
|
289
378
|
}
|
|
@@ -306,19 +395,20 @@ async function fetchWithTimeout(url, init) {
|
|
|
306
395
|
}
|
|
307
396
|
}
|
|
308
397
|
/**
|
|
309
|
-
* Wrap the master key with the SSH public key and upload to the sync
|
|
310
|
-
*
|
|
398
|
+
* Wrap the master key with the SSH public key and upload to the sync
|
|
399
|
+
* server. Uses keyring's `StandardTier.wrap` so the wire format is v1.
|
|
311
400
|
*/
|
|
312
|
-
async function uploadWrappedMasterKey(endpoint, ssh, masterKeyBuffer) {
|
|
401
|
+
async function uploadWrappedMasterKey(endpoint, ssh, masterKeyBuffer, _baseDir) {
|
|
313
402
|
if (!ssh.publicKey)
|
|
314
403
|
return;
|
|
315
|
-
const
|
|
316
|
-
const
|
|
317
|
-
const
|
|
318
|
-
const keyInfo = parseSSHPublicKey(ssh.publicKey);
|
|
319
|
-
const secureMasterKey = SecureBuffer.from(masterKeyBuffer);
|
|
404
|
+
const tier = StandardTier.fromSshKey(ssh.publicKey);
|
|
405
|
+
const masterSb = SecureBuffer.from(Buffer.from(masterKeyBuffer));
|
|
406
|
+
const master = asMasterKey(masterSb);
|
|
320
407
|
try {
|
|
321
|
-
const
|
|
408
|
+
const wrapped = await tier.wrap(master);
|
|
409
|
+
// Wire format: raw `WrappedKey.envelope` bytes. The server stores
|
|
410
|
+
// them opaquely — only the client (which has the SSH private key) can
|
|
411
|
+
// unwrap them.
|
|
322
412
|
const { createSyncHttpClientFromConfig } = await import('../sync/client-factory.js');
|
|
323
413
|
const { DatabaseManager } = await import('../storage/database-manager.js');
|
|
324
414
|
const db = new DatabaseManager().getPersonalDb();
|
|
@@ -326,20 +416,23 @@ async function uploadWrappedMasterKey(endpoint, ssh, masterKeyBuffer) {
|
|
|
326
416
|
endpoint,
|
|
327
417
|
sshKeyPath: ssh.keyPath ?? undefined,
|
|
328
418
|
}, db.syncSequence);
|
|
329
|
-
await client.put('/v1/wrapped-key',
|
|
419
|
+
await client.put('/v1/wrapped-key', wrapped.envelope);
|
|
330
420
|
}
|
|
331
421
|
finally {
|
|
332
|
-
|
|
422
|
+
master.dispose();
|
|
333
423
|
}
|
|
334
424
|
}
|
|
335
425
|
/**
|
|
336
426
|
* Restore the master key on a new device.
|
|
337
427
|
*
|
|
338
|
-
* Downloads the wrapped master
|
|
339
|
-
*
|
|
340
|
-
*
|
|
428
|
+
* Downloads the wrapped master-key blob from the server and persists it
|
|
429
|
+
* verbatim into keyring storage at the `__personal` slot. We also attempt
|
|
430
|
+
* an `unlockWithSshKey` to verify the bytes are usable with the local SSH
|
|
431
|
+
* private key; the unwrapped master is immediately discarded — the
|
|
432
|
+
* keyring stays in its wrapped form on disk, to be unlocked on demand by
|
|
433
|
+
* `initializeDependencies`.
|
|
341
434
|
*/
|
|
342
|
-
async function restoreMasterKey(endpoint, ssh) {
|
|
435
|
+
async function restoreMasterKey(endpoint, ssh, baseDir) {
|
|
343
436
|
if (!ssh.publicKey)
|
|
344
437
|
return;
|
|
345
438
|
const { createSyncHttpClientFromConfig } = await import('../sync/client-factory.js');
|
|
@@ -353,63 +446,34 @@ async function restoreMasterKey(endpoint, ssh) {
|
|
|
353
446
|
if (!response.ok) {
|
|
354
447
|
throw new Error(`Failed to download wrapped key: ${response.status}`);
|
|
355
448
|
}
|
|
356
|
-
const
|
|
357
|
-
//
|
|
358
|
-
const
|
|
359
|
-
|
|
360
|
-
|
|
361
|
-
|
|
362
|
-
|
|
363
|
-
|
|
364
|
-
|
|
365
|
-
|
|
366
|
-
|
|
367
|
-
|
|
368
|
-
|
|
369
|
-
|
|
370
|
-
|
|
371
|
-
|
|
372
|
-
|
|
373
|
-
const
|
|
374
|
-
|
|
375
|
-
|
|
376
|
-
|
|
377
|
-
if (seedOffset === -1) {
|
|
378
|
-
throw new Error('Could not extract Ed25519 seed from private key');
|
|
379
|
-
}
|
|
380
|
-
const seed = derBuf.subarray(seedOffset + 2, seedOffset + 34);
|
|
381
|
-
// Generate the full 64-byte secret key from the seed
|
|
382
|
-
const sodium = (await import('sodium-native')).default;
|
|
383
|
-
const fullSk = Buffer.alloc(sodium.crypto_sign_SECRETKEYBYTES);
|
|
384
|
-
const fullPk = Buffer.alloc(sodium.crypto_sign_PUBLICKEYBYTES);
|
|
385
|
-
sodium.crypto_sign_seed_keypair(fullPk, fullSk, seed);
|
|
386
|
-
const masterKey = unwrapMasterKeyEd25519(wrappedBlob, fullSk, fullPk);
|
|
387
|
-
// Store in keyring
|
|
388
|
-
await storeKeyInKeyring(masterKey);
|
|
389
|
-
masterKey.dispose();
|
|
390
|
-
// Zero sensitive buffers
|
|
391
|
-
fullSk.fill(0);
|
|
392
|
-
seed.fill(0);
|
|
393
|
-
}
|
|
394
|
-
else {
|
|
395
|
-
// Key is in agent only — can't extract raw key for crypto_box_seal_open
|
|
396
|
-
// This is a known limitation: agent-only keys can sign but can't unwrap sealed boxes
|
|
397
|
-
throw new Error('Cannot restore master key: SSH key is in agent only (no key file).\n' +
|
|
398
|
-
'crypto_box_seal_open requires the raw private key. Ensure the key file is available at ~/.ssh/id_ed25519');
|
|
449
|
+
const wrappedEnvelopeBytes = new Uint8Array(await response.arrayBuffer());
|
|
450
|
+
// Persist to keyring storage as a v1 WrappedKey.
|
|
451
|
+
const wrapped = {
|
|
452
|
+
v: 1,
|
|
453
|
+
tier: 'standard',
|
|
454
|
+
envelope: wrappedEnvelopeBytes,
|
|
455
|
+
sshFingerprint: ssh.fingerprint ?? undefined,
|
|
456
|
+
ts: new Date().toISOString(),
|
|
457
|
+
};
|
|
458
|
+
const { storage } = await buildStorage(baseDir);
|
|
459
|
+
await storage.put('__personal', wrapped);
|
|
460
|
+
// Verify it's unwrappable with the local SSH key (non-fatal: if the key
|
|
461
|
+
// file is missing, the unlock below will just skip and the unwrap will
|
|
462
|
+
// happen lazily on first MCP tool use).
|
|
463
|
+
if (ssh.keyPath) {
|
|
464
|
+
try {
|
|
465
|
+
const pem = fs.readFileSync(ssh.keyPath, 'utf-8');
|
|
466
|
+
const tier = StandardTier.fromSshKey(ssh.publicKey);
|
|
467
|
+
const ring = new KeyRing({ tier, storage });
|
|
468
|
+
await ring.unlockWithSshKey(pem);
|
|
469
|
+
await ring.lock();
|
|
399
470
|
}
|
|
400
|
-
|
|
401
|
-
|
|
402
|
-
|
|
403
|
-
|
|
404
|
-
|
|
405
|
-
if (!ssh.keyPath) {
|
|
406
|
-
throw new Error('Cannot restore master key: no RSA key file path');
|
|
471
|
+
catch (err) {
|
|
472
|
+
// Verification failed — surface a diagnostic but leave the blob
|
|
473
|
+
// in place. Unlock failure now is unusual but not catastrophic;
|
|
474
|
+
// the MCP server will retry on tool-call time.
|
|
475
|
+
process.stderr.write(`Warning: downloaded wrapped key failed verify-unlock: ${err instanceof Error ? err.message : String(err)}\n`);
|
|
407
476
|
}
|
|
408
|
-
const keyData = fs.readFileSync(ssh.keyPath, 'utf-8');
|
|
409
|
-
const rsaPrivKey = createPrivateKey({ key: keyData, format: 'pem' });
|
|
410
|
-
const masterKey = unwrapMasterKeyRSA(wrappedBlob, rsaPrivKey);
|
|
411
|
-
await storeKeyInKeyring(masterKey);
|
|
412
|
-
masterKey.dispose();
|
|
413
477
|
}
|
|
414
478
|
process.stderr.write('Master key restored from sync server. Your knowledge base will sync shortly.\n');
|
|
415
479
|
}
|
|
@@ -422,10 +486,11 @@ export async function retrySyncRegistration(configPath) {
|
|
|
422
486
|
const configData = JSON.parse(fs.readFileSync(configPath, 'utf-8'));
|
|
423
487
|
if (!configData.syncPending)
|
|
424
488
|
return;
|
|
425
|
-
const
|
|
489
|
+
const baseDir = path.dirname(configPath);
|
|
490
|
+
const sshResult = await detectSSHKey(baseDir);
|
|
426
491
|
if (!sshResult.publicKey)
|
|
427
492
|
return;
|
|
428
|
-
const syncResult = await attemptSyncRegistration(sshResult, Buffer.alloc(0));
|
|
493
|
+
const syncResult = await attemptSyncRegistration(sshResult, Buffer.alloc(0), baseDir);
|
|
429
494
|
if (syncResult.enabled || !syncResult.pending) {
|
|
430
495
|
// Either succeeded or permanently failed — clear pending
|
|
431
496
|
configData.syncEnabled = syncResult.enabled;
|
|
@@ -441,14 +506,4 @@ export async function retrySyncRegistration(configPath) {
|
|
|
441
506
|
// Retry failed silently — will try again next launch
|
|
442
507
|
}
|
|
443
508
|
}
|
|
444
|
-
async function storeKeyInKeyring(masterKey) {
|
|
445
|
-
// macOS: warn about potential keychain access dialog
|
|
446
|
-
if (process.platform === 'darwin') {
|
|
447
|
-
process.stderr.write('Storing encryption key in macOS Keychain.\n' +
|
|
448
|
-
'You may see a system dialog asking to allow keychain access — this is expected.\n');
|
|
449
|
-
}
|
|
450
|
-
const { KeyringService } = await import('../crypto/keyring.js');
|
|
451
|
-
const keyring = new KeyringService();
|
|
452
|
-
await keyring.store('chaoskb', 'master-key', masterKey);
|
|
453
|
-
}
|
|
454
509
|
//# sourceMappingURL=bootstrap.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"bootstrap.js","sourceRoot":"","sources":["../../cli/bootstrap.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"bootstrap.js","sourceRoot":"","sources":["../../cli/bootstrap.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,13 +1,39 @@
|
|
|
1
|
+
import { type WrappedKey } from '@de-otio/keyring';
|
|
1
2
|
/**
|
|
2
3
|
* Upgrade security tier.
|
|
3
4
|
*
|
|
4
|
-
* Standard → Maximum:
|
|
5
|
-
*
|
|
5
|
+
* Standard → Maximum: unlock master via the current Standard tier,
|
|
6
|
+
* then re-wrap under a passphrase-derived KEK via keyring's `MaximumTier`.
|
|
6
7
|
*
|
|
7
|
-
* Note: The Enhanced tier (BIP39 mnemonic) is deprecated. New upgrades
|
|
8
|
-
* support "maximum".
|
|
8
|
+
* Note: The Enhanced tier (BIP39 mnemonic) is deprecated. New upgrades
|
|
9
|
+
* only support "maximum".
|
|
9
10
|
*/
|
|
10
11
|
export declare function upgradeTierCommand(tier: string, options?: {
|
|
11
12
|
dryRun?: boolean;
|
|
12
13
|
}): Promise<void>;
|
|
14
|
+
/** Parse the serialised form back into a WrappedKey. */
|
|
15
|
+
export declare function parseWrappedKey(json: string): WrappedKey;
|
|
16
|
+
export interface SafetyCommandOptions {
|
|
17
|
+
show?: boolean;
|
|
18
|
+
strict?: boolean;
|
|
19
|
+
noStrict?: boolean;
|
|
20
|
+
urlhaus?: boolean;
|
|
21
|
+
noUrlhaus?: boolean;
|
|
22
|
+
gsbKey?: string;
|
|
23
|
+
clearGsbKey?: boolean;
|
|
24
|
+
spamhausDbl?: boolean;
|
|
25
|
+
noSpamhausDbl?: boolean;
|
|
26
|
+
remoteTimeoutMs?: string;
|
|
27
|
+
injectionPolicy?: string;
|
|
28
|
+
secretsPolicy?: string;
|
|
29
|
+
reset?: boolean;
|
|
30
|
+
}
|
|
31
|
+
/**
|
|
32
|
+
* `chaoskb-mcp config safety [flags]`
|
|
33
|
+
*
|
|
34
|
+
* Show or update the safety-checker configuration. Each flag is
|
|
35
|
+
* independently applied; unset flags leave the existing value alone.
|
|
36
|
+
* `--reset` clears the entire safety section back to defaults.
|
|
37
|
+
*/
|
|
38
|
+
export declare function safetyCommand(options: SafetyCommandOptions): Promise<void>;
|
|
13
39
|
//# sourceMappingURL=config.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../../../cli/commands/config.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../../../cli/commands/config.ts"],"names":[],"mappings":"AAIA,OAAO,EAOL,KAAK,UAAU,EAChB,MAAM,kBAAkB,CAAC;AAgD1B;;;;;;;;GAQG;AACH,wBAAsB,kBAAkB,CACtC,IAAI,EAAE,MAAM,EACZ,OAAO,CAAC,EAAE;IAAE,MAAM,CAAC,EAAE,OAAO,CAAA;CAAE,GAC7B,OAAO,CAAC,IAAI,CAAC,CA6Df;AAoID,wDAAwD;AACxD,wBAAgB,eAAe,CAAC,IAAI,EAAE,MAAM,GAAG,UAAU,CA8CxD;AAoBD,MAAM,WAAW,oBAAoB;IACnC,IAAI,CAAC,EAAE,OAAO,CAAC;IACf,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,aAAa,CAAC,EAAE,OAAO,CAAC;IACxB,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,KAAK,CAAC,EAAE,OAAO,CAAC;CACjB;AA6BD;;;;;;GAMG;AACH,wBAAsB,aAAa,CAAC,OAAO,EAAE,oBAAoB,GAAG,OAAO,CAAC,IAAI,CAAC,CAgFhF"}
|