@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.
Files changed (134) hide show
  1. package/dist/cli/bootstrap.d.ts +11 -3
  2. package/dist/cli/bootstrap.d.ts.map +1 -1
  3. package/dist/cli/bootstrap.js +181 -126
  4. package/dist/cli/bootstrap.js.map +1 -1
  5. package/dist/cli/commands/config.d.ts +30 -4
  6. package/dist/cli/commands/config.d.ts.map +1 -1
  7. package/dist/cli/commands/config.js +289 -134
  8. package/dist/cli/commands/config.js.map +1 -1
  9. package/dist/cli/commands/devices.d.ts.map +1 -1
  10. package/dist/cli/commands/devices.js +58 -33
  11. package/dist/cli/commands/devices.js.map +1 -1
  12. package/dist/cli/commands/export.d.ts.map +1 -1
  13. package/dist/cli/commands/export.js +6 -9
  14. package/dist/cli/commands/export.js.map +1 -1
  15. package/dist/cli/commands/import.js +1 -1
  16. package/dist/cli/commands/import.js.map +1 -1
  17. package/dist/cli/commands/projects.d.ts.map +1 -1
  18. package/dist/cli/commands/projects.js +33 -10
  19. package/dist/cli/commands/projects.js.map +1 -1
  20. package/dist/cli/commands/rotate-key.d.ts +3 -3
  21. package/dist/cli/commands/rotate-key.d.ts.map +1 -1
  22. package/dist/cli/commands/rotate-key.js +88 -35
  23. package/dist/cli/commands/rotate-key.js.map +1 -1
  24. package/dist/cli/commands/setup-sync.d.ts.map +1 -1
  25. package/dist/cli/commands/setup-sync.js +22 -4
  26. package/dist/cli/commands/setup-sync.js.map +1 -1
  27. package/dist/cli/index.js +20 -1
  28. package/dist/cli/index.js.map +1 -1
  29. package/dist/cli/mcp-server.d.ts +6 -0
  30. package/dist/cli/mcp-server.d.ts.map +1 -1
  31. package/dist/cli/mcp-server.js +93 -42
  32. package/dist/cli/mcp-server.js.map +1 -1
  33. package/dist/crypto/aad.d.ts +2 -5
  34. package/dist/crypto/aad.d.ts.map +1 -1
  35. package/dist/crypto/aad.js +2 -8
  36. package/dist/crypto/aad.js.map +1 -1
  37. package/dist/crypto/aead.d.ts +8 -16
  38. package/dist/crypto/aead.d.ts.map +1 -1
  39. package/dist/crypto/aead.js +10 -36
  40. package/dist/crypto/aead.js.map +1 -1
  41. package/dist/crypto/blob-id.d.ts +2 -3
  42. package/dist/crypto/blob-id.d.ts.map +1 -1
  43. package/dist/crypto/blob-id.js +2 -30
  44. package/dist/crypto/blob-id.js.map +1 -1
  45. package/dist/crypto/canonical-json.d.ts +5 -3
  46. package/dist/crypto/canonical-json.d.ts.map +1 -1
  47. package/dist/crypto/canonical-json.js +5 -85
  48. package/dist/crypto/canonical-json.js.map +1 -1
  49. package/dist/crypto/commitment.d.ts +3 -9
  50. package/dist/crypto/commitment.d.ts.map +1 -1
  51. package/dist/crypto/commitment.js +3 -27
  52. package/dist/crypto/commitment.js.map +1 -1
  53. package/dist/crypto/encryption-service.d.ts +3 -0
  54. package/dist/crypto/encryption-service.d.ts.map +1 -1
  55. package/dist/crypto/encryption-service.js +10 -6
  56. package/dist/crypto/encryption-service.js.map +1 -1
  57. package/dist/crypto/envelope-cbor.d.ts +4 -34
  58. package/dist/crypto/envelope-cbor.d.ts.map +1 -1
  59. package/dist/crypto/envelope-cbor.js +4 -121
  60. package/dist/crypto/envelope-cbor.js.map +1 -1
  61. package/dist/crypto/envelope.d.ts +1 -31
  62. package/dist/crypto/envelope.d.ts.map +1 -1
  63. package/dist/crypto/envelope.js +31 -137
  64. package/dist/crypto/envelope.js.map +1 -1
  65. package/dist/crypto/hkdf.d.ts +7 -11
  66. package/dist/crypto/hkdf.d.ts.map +1 -1
  67. package/dist/crypto/hkdf.js +9 -18
  68. package/dist/crypto/hkdf.js.map +1 -1
  69. package/dist/crypto/index.d.ts +9 -4
  70. package/dist/crypto/index.d.ts.map +1 -1
  71. package/dist/crypto/index.js +9 -4
  72. package/dist/crypto/index.js.map +1 -1
  73. package/dist/crypto/ssh-keys.d.ts +17 -10
  74. package/dist/crypto/ssh-keys.d.ts.map +1 -1
  75. package/dist/crypto/ssh-keys.js +28 -108
  76. package/dist/crypto/ssh-keys.js.map +1 -1
  77. package/dist/crypto/types.d.ts +18 -88
  78. package/dist/crypto/types.d.ts.map +1 -1
  79. package/dist/crypto/types.js +3 -0
  80. package/dist/crypto/types.js.map +1 -1
  81. package/dist/pipeline/content-pipeline.d.ts.map +1 -1
  82. package/dist/pipeline/content-pipeline.js +21 -5
  83. package/dist/pipeline/content-pipeline.js.map +1 -1
  84. package/dist/pipeline/extract.d.ts +8 -0
  85. package/dist/pipeline/extract.d.ts.map +1 -1
  86. package/dist/pipeline/extract.js +15 -4
  87. package/dist/pipeline/extract.js.map +1 -1
  88. package/dist/pipeline/fetch-browser.d.ts +29 -0
  89. package/dist/pipeline/fetch-browser.d.ts.map +1 -0
  90. package/dist/pipeline/fetch-browser.js +98 -0
  91. package/dist/pipeline/fetch-browser.js.map +1 -0
  92. package/dist/pipeline/safety.d.ts +43 -6
  93. package/dist/pipeline/safety.d.ts.map +1 -1
  94. package/dist/pipeline/safety.js +52 -15
  95. package/dist/pipeline/safety.js.map +1 -1
  96. package/dist/pipeline/validate.js +35 -23
  97. package/dist/pipeline/validate.js.map +1 -1
  98. package/package.json +4 -1
  99. package/dist/crypto/argon2.d.ts +0 -11
  100. package/dist/crypto/argon2.d.ts.map +0 -1
  101. package/dist/crypto/argon2.js +0 -33
  102. package/dist/crypto/argon2.js.map +0 -1
  103. package/dist/crypto/invite.d.ts +0 -31
  104. package/dist/crypto/invite.d.ts.map +0 -1
  105. package/dist/crypto/invite.js +0 -139
  106. package/dist/crypto/invite.js.map +0 -1
  107. package/dist/crypto/keyring.d.ts +0 -37
  108. package/dist/crypto/keyring.d.ts.map +0 -1
  109. package/dist/crypto/keyring.js +0 -219
  110. package/dist/crypto/keyring.js.map +0 -1
  111. package/dist/crypto/known-keys.d.ts +0 -34
  112. package/dist/crypto/known-keys.d.ts.map +0 -1
  113. package/dist/crypto/known-keys.js +0 -114
  114. package/dist/crypto/known-keys.js.map +0 -1
  115. package/dist/crypto/project-keys.d.ts +0 -26
  116. package/dist/crypto/project-keys.d.ts.map +0 -1
  117. package/dist/crypto/project-keys.js +0 -69
  118. package/dist/crypto/project-keys.js.map +0 -1
  119. package/dist/crypto/secure-buffer.d.ts +0 -31
  120. package/dist/crypto/secure-buffer.d.ts.map +0 -1
  121. package/dist/crypto/secure-buffer.js +0 -61
  122. package/dist/crypto/secure-buffer.js.map +0 -1
  123. package/dist/crypto/tiers/enhanced.d.ts +0 -25
  124. package/dist/crypto/tiers/enhanced.d.ts.map +0 -1
  125. package/dist/crypto/tiers/enhanced.js +0 -56
  126. package/dist/crypto/tiers/enhanced.js.map +0 -1
  127. package/dist/crypto/tiers/maximum.d.ts +0 -19
  128. package/dist/crypto/tiers/maximum.d.ts.map +0 -1
  129. package/dist/crypto/tiers/maximum.js +0 -25
  130. package/dist/crypto/tiers/maximum.js.map +0 -1
  131. package/dist/crypto/tiers/standard.d.ts +0 -27
  132. package/dist/crypto/tiers/standard.d.ts.map +0 -1
  133. package/dist/crypto/tiers/standard.js +0 -155
  134. package/dist/crypto/tiers/standard.js.map +0 -1
@@ -1,10 +1,16 @@
1
1
  import * as fs from 'node:fs';
2
+ import * as os from 'node:os';
2
3
  import * as readline from 'node:readline';
3
- import { randomBytes } from 'node:crypto';
4
+ import * as path from 'node:path';
5
+ import { KeyRing, StandardTier, MaximumTier, OsKeychainStorage, FileSystemStorage, } from '@de-otio/keyring';
4
6
  import { loadConfig, saveConfig, CHAOSKB_DIR } from './setup.js';
5
7
  import { SecurityTier } from '../../crypto/types.js';
6
- import * as path from 'node:path';
7
- const TIER_ORDER = [SecurityTier.Standard, SecurityTier.Enhanced, SecurityTier.Maximum];
8
+ import { KEYRING_SERVICE, FILE_KEY_PATH } from '../bootstrap.js';
9
+ const TIER_ORDER = [
10
+ SecurityTier.Standard,
11
+ SecurityTier.Enhanced,
12
+ SecurityTier.Maximum,
13
+ ];
8
14
  function tierIndex(tier) {
9
15
  return TIER_ORDER.indexOf(tier);
10
16
  }
@@ -15,14 +21,39 @@ function prompt(rl, question) {
15
21
  });
16
22
  });
17
23
  }
24
+ function buildStorage(kind) {
25
+ if (process.env.CHAOSKB_KEY_STORAGE === 'file') {
26
+ const fsDir = path.join(CHAOSKB_DIR, 'keyring');
27
+ fs.mkdirSync(fsDir, { recursive: true, mode: 0o700 });
28
+ return new FileSystemStorage({
29
+ root: fsDir,
30
+ acceptedTiers: [kind],
31
+ });
32
+ }
33
+ return new OsKeychainStorage({
34
+ service: KEYRING_SERVICE,
35
+ acceptedTiers: [kind],
36
+ });
37
+ }
38
+ function resolveSshKeyPath(configSshKeyPath) {
39
+ if (configSshKeyPath && fs.existsSync(configSshKeyPath))
40
+ return configSshKeyPath;
41
+ const sshDir = path.join(os.homedir(), '.ssh');
42
+ for (const c of ['id_ed25519', 'id_rsa']) {
43
+ const p = path.join(sshDir, c);
44
+ if (fs.existsSync(p) && fs.existsSync(`${p}.pub`))
45
+ return p;
46
+ }
47
+ return null;
48
+ }
18
49
  /**
19
50
  * Upgrade security tier.
20
51
  *
21
- * Standard → Maximum: re-wrap master key under Argon2id-derived key from passphrase.
22
- * Enhanced Maximum: same as above, with note that mnemonic is invalidated.
52
+ * Standard → Maximum: unlock master via the current Standard tier,
53
+ * then re-wrap under a passphrase-derived KEK via keyring's `MaximumTier`.
23
54
  *
24
- * Note: The Enhanced tier (BIP39 mnemonic) is deprecated. New upgrades only
25
- * support "maximum". Existing Enhanced-tier users can still upgrade to Maximum.
55
+ * Note: The Enhanced tier (BIP39 mnemonic) is deprecated. New upgrades
56
+ * only support "maximum".
26
57
  */
27
58
  export async function upgradeTierCommand(tier, options) {
28
59
  const dryRun = options?.dryRun ?? false;
@@ -50,28 +81,19 @@ export async function upgradeTierCommand(tier, options) {
50
81
  process.exitCode = 1;
51
82
  return;
52
83
  }
53
- // Retrieve master key from OS keyring
54
- const { KeyringService } = await import('../../crypto/keyring.js');
55
- const keyring = new KeyringService();
56
- let masterKey = await keyring.retrieve('chaoskb', 'master-key');
57
- if (!masterKey) {
58
- // Try file-based key fallback
59
- if (process.env.CHAOSKB_KEY_STORAGE === 'file') {
60
- const { FILE_KEY_PATH } = await import('../bootstrap.js');
61
- try {
62
- const hex = fs.readFileSync(FILE_KEY_PATH, 'utf-8').trim();
63
- const { SecureBuffer } = await import('../../crypto/secure-buffer.js');
64
- masterKey = SecureBuffer.from(Buffer.from(hex, 'hex'));
65
- }
66
- catch {
67
- // Fall through to error
68
- }
69
- }
70
- if (!masterKey) {
71
- console.error('Master key not found. Ensure your OS keyring is accessible.');
72
- process.exitCode = 1;
73
- return;
74
- }
84
+ // Locate and unlock the current master key via StandardTier.
85
+ const sshKeyPath = resolveSshKeyPath(config.sshKeyPath);
86
+ if (!sshKeyPath) {
87
+ console.error('Master key not found. Ensure your OS keyring is accessible.');
88
+ process.exitCode = 1;
89
+ return;
90
+ }
91
+ const standardStorage = buildStorage('standard');
92
+ const currentWrapped = await standardStorage.get('__personal');
93
+ if (!currentWrapped) {
94
+ console.error('Master key not found. Ensure your OS keyring is accessible.');
95
+ process.exitCode = 1;
96
+ return;
75
97
  }
76
98
  if (dryRun) {
77
99
  console.log('[dry-run] Would upgrade security tier from "%s" to "%s".', config.securityTier, tier);
@@ -81,60 +103,11 @@ export async function upgradeTierCommand(tier, options) {
81
103
  console.log('[dry-run] - Write encrypted key blob to ~/.chaoskb/master-key.enc');
82
104
  console.log('[dry-run] - Remove the master key from the OS keyring');
83
105
  console.log('[dry-run] No changes made.');
84
- masterKey.dispose();
85
106
  return;
86
107
  }
87
- try {
88
- await upgradeToMaximum(masterKey, config);
89
- }
90
- finally {
91
- masterKey.dispose();
92
- }
108
+ await upgradeToMaximum(sshKeyPath, currentWrapped, config);
93
109
  }
94
- async function _upgradeToEnhanced(masterKey, config) {
95
- const { generateRecoveryKey } = await import('../../crypto/tiers/enhanced.js');
96
- const mnemonic = generateRecoveryKey(masterKey);
97
- const words = mnemonic.split(' ');
98
- console.log('');
99
- console.log('Your 24-word recovery key:');
100
- console.log('');
101
- // Display in 3 columns of 8
102
- for (let i = 0; i < 24; i += 3) {
103
- const cols = [];
104
- for (let j = 0; j < 3 && i + j < 24; j++) {
105
- cols.push(` ${String(i + j + 1).padStart(2, ' ')}. ${words[i + j].padEnd(10)}`);
106
- }
107
- console.log(cols.join(''));
108
- }
109
- console.log('');
110
- console.log('Write these words down and store them safely.');
111
- console.log('This is your backup recovery factor. Do NOT store it digitally.');
112
- console.log('');
113
- // Spot-check: ask user to confirm 2 random words
114
- const indices = pickRandomIndices(24, 2);
115
- const rl = readline.createInterface({ input: process.stdin, output: process.stdout });
116
- try {
117
- for (const idx of indices) {
118
- const answer = await prompt(rl, `Confirm word #${idx + 1}: `);
119
- if (answer.toLowerCase() !== words[idx].toLowerCase()) {
120
- console.error(`Incorrect. Expected word #${idx + 1} to be "${words[idx]}".`);
121
- console.error('Tier upgrade cancelled.');
122
- process.exitCode = 1;
123
- return;
124
- }
125
- }
126
- }
127
- finally {
128
- rl.close();
129
- }
130
- // Update config
131
- config.securityTier = SecurityTier.Enhanced;
132
- await saveConfig(config);
133
- console.log('');
134
- console.log('Security tier upgraded to Enhanced.');
135
- console.log('Your master key remains in the OS keyring. The recovery key is your backup.');
136
- }
137
- async function upgradeToMaximum(masterKey, config) {
110
+ async function upgradeToMaximum(sshKeyPath, currentWrapped, config) {
138
111
  if (!process.stdin.isTTY) {
139
112
  console.error('Maximum tier requires an interactive terminal for passphrase entry.');
140
113
  process.exitCode = 1;
@@ -166,56 +139,35 @@ async function upgradeToMaximum(masterKey, config) {
166
139
  rl.close();
167
140
  }
168
141
  console.log('Deriving key with Argon2id (this may take a moment)...');
169
- // Generate salt and derive wrapping key
170
- const salt = randomBytes(16);
171
- const { argon2Derive } = await import('../../crypto/index.js');
172
- const wrappingKey = argon2Derive(passphrase, salt);
142
+ // 1. Unlock the current master via StandardTier + stored wrapped blob.
143
+ const sshPublicKeyLine = fs.readFileSync(`${sshKeyPath}.pub`, 'utf-8').trim();
144
+ const sshPrivateKeyPem = fs.readFileSync(sshKeyPath, 'utf-8');
145
+ const standardStorage = buildStorage('standard');
146
+ const standardTier = StandardTier.fromSshKey(sshPublicKeyLine);
147
+ const ring = new KeyRing({ tier: standardTier, storage: standardStorage });
148
+ try {
149
+ await ring.unlockWithSshKey(sshPrivateKeyPem);
150
+ }
151
+ catch (err) {
152
+ console.error(`Failed to unlock master key: ${err instanceof Error ? err.message : String(err)}`);
153
+ process.exitCode = 1;
154
+ return;
155
+ }
156
+ // 2. Wrap the master with MaximumTier under the new passphrase.
173
157
  try {
174
- // Encrypt master key with wrapping key using XChaCha20-Poly1305
175
- const { aeadEncrypt } = await import('../../crypto/aead.js');
176
- const aad = Buffer.from('chaoskb-master-key-wrap-v1');
177
- const result = aeadEncrypt(wrappingKey.buffer, masterKey.buffer, aad);
178
- // Write encrypted key blob
179
- const blob = {
180
- v: 1,
181
- kdf: 'argon2id',
182
- t: 3,
183
- m: 65536,
184
- p: 1,
185
- salt: Buffer.from(salt).toString('hex'),
186
- nonce: Buffer.from(result.nonce).toString('hex'),
187
- ciphertext: Buffer.from(new Uint8Array([...result.ciphertext, ...result.tag])).toString('hex'),
188
- };
158
+ const maxTier = MaximumTier.fromPassphrase(passphrase);
159
+ const maxWrapped = await ring.withMaster(async (master) => maxTier.wrap(master));
160
+ // Persist to a dedicated storage (filesystem-backed blob file for
161
+ // compatibility with the previous Maximum-tier layout at
162
+ // ~/.chaoskb/master-key.enc).
189
163
  const blobPath = path.join(CHAOSKB_DIR, 'master-key.enc');
190
- // Write new protection BEFORE removing old
191
- fs.writeFileSync(blobPath, JSON.stringify(blob, null, 2), { mode: 0o600 });
192
- // Round-trip verification: decrypt the blob we just wrote to ensure it's valid
193
- const { aeadDecrypt } = await import('../../crypto/aead.js');
194
- try {
195
- const verifyNonce = new Uint8Array(Buffer.from(blob.nonce, 'hex'));
196
- const verifyCt = Buffer.from(blob.ciphertext, 'hex');
197
- const verifyCiphertext = new Uint8Array(verifyCt.subarray(0, verifyCt.length - 16));
198
- const verifyTag = new Uint8Array(verifyCt.subarray(verifyCt.length - 16));
199
- const recovered = aeadDecrypt(wrappingKey.buffer, verifyNonce, verifyCiphertext, verifyTag, aad);
200
- if (!Buffer.from(recovered).equals(masterKey.buffer)) {
201
- throw new Error('Round-trip verification failed: decrypted key does not match original');
202
- }
203
- }
204
- catch (err) {
205
- // Verification failed — remove the corrupt blob and abort
206
- try {
207
- fs.unlinkSync(blobPath);
208
- }
209
- catch { /* ignore */ }
210
- throw new Error(`Key encryption verification failed. Keyring entry NOT removed. ` +
211
- `Error: ${err instanceof Error ? err.message : String(err)}`);
212
- }
213
- // Verification passed — safe to remove master key from OS keyring
214
- const { KeyringService } = await import('../../crypto/keyring.js');
215
- const keyring = new KeyringService();
216
- await keyring.delete('chaoskb', 'master-key');
217
- // Also remove file-based key if it exists
218
- const { FILE_KEY_PATH } = await import('../bootstrap.js');
164
+ const serialisedBlob = serialiseWrappedKey(maxWrapped);
165
+ fs.writeFileSync(blobPath, serialisedBlob, { mode: 0o600 });
166
+ // Verify-after-write: round-trip decrypt the blob we just wrote.
167
+ await verifyRoundTrip(blobPath, passphrase);
168
+ // Verification passed — safe to clear the StandardTier wrapping.
169
+ await ring.delete();
170
+ // Also remove file-based key if it exists (legacy pre-migration state).
219
171
  try {
220
172
  fs.unlinkSync(FILE_KEY_PATH);
221
173
  }
@@ -231,14 +183,217 @@ async function upgradeToMaximum(masterKey, config) {
231
183
  console.log('Your passphrase is now your only recovery factor.');
232
184
  }
233
185
  finally {
234
- wrappingKey.dispose();
186
+ await ring.lock();
187
+ // We do our best to forget `currentWrapped` by not retaining a
188
+ // reference past this scope.
189
+ void currentWrapped;
190
+ }
191
+ }
192
+ /**
193
+ * Serialise a keyring `WrappedKey` to the chaoskb `master-key.enc` file.
194
+ * Uses a JSON schema compatible with keyring's internal serialiser so
195
+ * both halves of the migration can read it — matches the shape written
196
+ * by keyring's own filesystem storage.
197
+ */
198
+ function serialiseWrappedKey(w) {
199
+ const out = {
200
+ v: w.v,
201
+ tier: w.tier,
202
+ envelope: Buffer.from(w.envelope).toString('base64'),
203
+ ts: w.ts,
204
+ };
205
+ if (w.kdfParams) {
206
+ if (w.kdfParams.algorithm === 'argon2id') {
207
+ out.kdfParams = {
208
+ algorithm: 'argon2id',
209
+ t: w.kdfParams.t,
210
+ m: w.kdfParams.m,
211
+ p: w.kdfParams.p,
212
+ salt: Buffer.from(w.kdfParams.salt).toString('base64'),
213
+ };
214
+ }
215
+ else {
216
+ out.kdfParams = {
217
+ algorithm: 'pbkdf2-sha256',
218
+ iterations: w.kdfParams.iterations,
219
+ salt: Buffer.from(w.kdfParams.salt).toString('base64'),
220
+ };
221
+ }
222
+ }
223
+ return JSON.stringify(out, null, 2);
224
+ }
225
+ /** Parse the serialised form back into a WrappedKey. */
226
+ export function parseWrappedKey(json) {
227
+ const parsed = JSON.parse(json);
228
+ if (parsed.v !== 1)
229
+ throw new Error(`unsupported wrapped-key wire version: ${parsed.v}`);
230
+ if (parsed.tier !== 'standard' && parsed.tier !== 'maximum') {
231
+ throw new Error(`unsupported tier kind: ${parsed.tier}`);
232
+ }
233
+ const out = {
234
+ v: 1,
235
+ tier: parsed.tier,
236
+ envelope: new Uint8Array(Buffer.from(parsed.envelope, 'base64')),
237
+ ts: parsed.ts,
238
+ };
239
+ if (parsed.kdfParams) {
240
+ const saltBytes = new Uint8Array(Buffer.from(parsed.kdfParams.salt, 'base64'));
241
+ if (parsed.kdfParams.algorithm === 'argon2id') {
242
+ out.kdfParams = {
243
+ algorithm: 'argon2id',
244
+ t: parsed.kdfParams.t ?? 0,
245
+ m: parsed.kdfParams.m ?? 0,
246
+ p: parsed.kdfParams.p ?? 0,
247
+ salt: saltBytes,
248
+ };
249
+ }
250
+ else if (parsed.kdfParams.algorithm === 'pbkdf2-sha256') {
251
+ out.kdfParams = {
252
+ algorithm: 'pbkdf2-sha256',
253
+ iterations: parsed.kdfParams.iterations ?? 0,
254
+ salt: saltBytes,
255
+ };
256
+ }
235
257
  }
258
+ if (parsed.sshFingerprint)
259
+ out.sshFingerprint = parsed.sshFingerprint;
260
+ return out;
236
261
  }
237
- function pickRandomIndices(max, count) {
238
- const indices = new Set();
239
- while (indices.size < count) {
240
- indices.add(Math.floor(Math.random() * max));
262
+ async function verifyRoundTrip(blobPath, passphrase) {
263
+ const json = fs.readFileSync(blobPath, 'utf-8');
264
+ const wrapped = parseWrappedKey(json);
265
+ // Construct a temporary MaximumTier (its passphrase is only used for
266
+ // wrap; unwrap reads the passphrase from UnlockInput).
267
+ const tier = MaximumTier.fromPassphrase(passphrase);
268
+ const master = await tier.unwrap(wrapped, { kind: 'passphrase', passphrase });
269
+ master.dispose();
270
+ }
271
+ const VALID_POLICIES = ['block', 'warn', 'allow'];
272
+ function parsePolicyFlag(raw, flag) {
273
+ if (raw === undefined)
274
+ return undefined;
275
+ if (!VALID_POLICIES.includes(raw)) {
276
+ throw new Error(`${flag} must be one of: ${VALID_POLICIES.join(', ')} (got "${raw}")`);
277
+ }
278
+ return raw;
279
+ }
280
+ function formatSafety(s) {
281
+ const lines = [];
282
+ const strict = s?.strict ?? false;
283
+ const urlhaus = s?.remoteApis?.urlhaus ?? false;
284
+ const gsbSet = Boolean(s?.remoteApis?.googleSafeBrowsing);
285
+ const dnsbl = s?.remoteApis?.spamhausDbl ?? false;
286
+ const timeout = s?.remoteTimeoutMs ?? 5000;
287
+ const injection = s?.injectionPolicy ?? 'block';
288
+ const secrets = s?.secretsPolicy ?? 'warn';
289
+ lines.push(` strict mode: ${strict}`);
290
+ lines.push(` URLhaus: ${urlhaus}`);
291
+ lines.push(` Google Safe Browsing: ${gsbSet ? '<api-key set>' : 'off'}`);
292
+ lines.push(` Spamhaus DBL: ${dnsbl}`);
293
+ lines.push(` remote API timeout: ${timeout} ms`);
294
+ lines.push(` injection policy: ${injection}`);
295
+ lines.push(` secrets policy: ${secrets}`);
296
+ return lines.join('\n');
297
+ }
298
+ /**
299
+ * `chaoskb-mcp config safety [flags]`
300
+ *
301
+ * Show or update the safety-checker configuration. Each flag is
302
+ * independently applied; unset flags leave the existing value alone.
303
+ * `--reset` clears the entire safety section back to defaults.
304
+ */
305
+ export async function safetyCommand(options) {
306
+ const config = await loadConfig();
307
+ if (!config) {
308
+ console.error('ChaosKB is not configured. Run `chaoskb-mcp setup` first.');
309
+ process.exitCode = 1;
310
+ return;
311
+ }
312
+ // Show-only mode
313
+ if (options.show) {
314
+ console.log('ChaosKB safety configuration:');
315
+ console.log(formatSafety(config.safety));
316
+ return;
317
+ }
318
+ // Reset to defaults
319
+ if (options.reset) {
320
+ delete config.safety;
321
+ await saveConfig(config);
322
+ console.log('Safety configuration reset to defaults.');
323
+ console.log(formatSafety(undefined));
324
+ return;
241
325
  }
242
- return [...indices].sort((a, b) => a - b);
326
+ const safety = config.safety ? { ...config.safety } : {};
327
+ safety.remoteApis = safety.remoteApis ? { ...safety.remoteApis } : {};
328
+ let changed = false;
329
+ if (options.strict) {
330
+ safety.strict = true;
331
+ changed = true;
332
+ }
333
+ if (options.noStrict) {
334
+ safety.strict = false;
335
+ changed = true;
336
+ }
337
+ if (options.urlhaus) {
338
+ safety.remoteApis.urlhaus = true;
339
+ changed = true;
340
+ }
341
+ if (options.noUrlhaus) {
342
+ safety.remoteApis.urlhaus = false;
343
+ changed = true;
344
+ }
345
+ if (options.gsbKey !== undefined) {
346
+ safety.remoteApis.googleSafeBrowsing = options.gsbKey;
347
+ changed = true;
348
+ }
349
+ if (options.clearGsbKey) {
350
+ delete safety.remoteApis.googleSafeBrowsing;
351
+ changed = true;
352
+ }
353
+ if (options.spamhausDbl) {
354
+ safety.remoteApis.spamhausDbl = true;
355
+ changed = true;
356
+ }
357
+ if (options.noSpamhausDbl) {
358
+ safety.remoteApis.spamhausDbl = false;
359
+ changed = true;
360
+ }
361
+ if (options.remoteTimeoutMs !== undefined) {
362
+ const n = Number(options.remoteTimeoutMs);
363
+ if (!Number.isFinite(n) || n <= 0) {
364
+ console.error(`--remote-timeout-ms must be a positive number (got "${options.remoteTimeoutMs}").`);
365
+ process.exitCode = 1;
366
+ return;
367
+ }
368
+ safety.remoteTimeoutMs = n;
369
+ changed = true;
370
+ }
371
+ try {
372
+ const ip = parsePolicyFlag(options.injectionPolicy, '--injection-policy');
373
+ if (ip) {
374
+ safety.injectionPolicy = ip;
375
+ changed = true;
376
+ }
377
+ const sp = parsePolicyFlag(options.secretsPolicy, '--secrets-policy');
378
+ if (sp) {
379
+ safety.secretsPolicy = sp;
380
+ changed = true;
381
+ }
382
+ }
383
+ catch (err) {
384
+ console.error(err instanceof Error ? err.message : String(err));
385
+ process.exitCode = 1;
386
+ return;
387
+ }
388
+ if (!changed) {
389
+ console.log('ChaosKB safety configuration:');
390
+ console.log(formatSafety(config.safety));
391
+ console.log('\nNo flags provided. Use `--help` to see available options or `--show` to suppress this message.');
392
+ return;
393
+ }
394
+ config.safety = safety;
395
+ await saveConfig(config);
396
+ console.log('Safety configuration updated. Restart the MCP server for changes to take effect.');
397
+ console.log(formatSafety(config.safety));
243
398
  }
244
399
  //# sourceMappingURL=config.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"config.js","sourceRoot":"","sources":["../../../cli/commands/config.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"config.js","sourceRoot":"","sources":["../../../cli/commands/config.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"devices.d.ts","sourceRoot":"","sources":["../../../cli/commands/devices.ts"],"names":[],"mappings":"AA+BA;;;;;;GAMG;AACH,wBAAsB,iBAAiB,IAAI,OAAO,CAAC,IAAI,CAAC,CAkGvD;AAED;;;;GAIG;AACH,wBAAsB,kBAAkB,IAAI,OAAO,CAAC,IAAI,CAAC,CA2BxD;AAED;;;;GAIG;AACH,wBAAsB,oBAAoB,CAAC,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CA2B7E"}
1
+ {"version":3,"file":"devices.d.ts","sourceRoot":"","sources":["../../../cli/commands/devices.ts"],"names":[],"mappings":"AA4DA;;;;;;GAMG;AACH,wBAAsB,iBAAiB,IAAI,OAAO,CAAC,IAAI,CAAC,CAmGvD;AAED;;;;GAIG;AACH,wBAAsB,kBAAkB,IAAI,OAAO,CAAC,IAAI,CAAC,CA6BxD;AAED;;;;GAIG;AACH,wBAAsB,oBAAoB,CAAC,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CA2B7E"}