@clien-ai/mcp 0.1.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.
@@ -0,0 +1 @@
1
+ {"version":3,"file":"oauth.js","sourceRoot":"","sources":["../../src/auth/oauth.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,31 @@
1
+ /**
2
+ * PKCE helpers per RFC 7636.
3
+ *
4
+ * - Verifier: 32 random bytes, base64url-encoded -> 43 chars (unreserved).
5
+ * - Challenge: base64url(SHA-256(verifier)).
6
+ * - State: 32 random bytes, base64url-encoded (used to bind authorize -> callback).
7
+ */
8
+ import { createHash, randomBytes } from 'node:crypto';
9
+ /** Base64url encode (no padding). Node 16+ supports this encoding natively. */
10
+ function b64url(buf) {
11
+ return buf.toString('base64url');
12
+ }
13
+ export function generateCodeVerifier() {
14
+ // 32 bytes -> 43 base64url chars, within RFC 7636 min 43 / max 128.
15
+ return b64url(randomBytes(32));
16
+ }
17
+ export function deriveCodeChallenge(verifier) {
18
+ return b64url(createHash('sha256').update(verifier).digest());
19
+ }
20
+ export function generatePkcePair() {
21
+ const verifier = generateCodeVerifier();
22
+ return {
23
+ verifier,
24
+ challenge: deriveCodeChallenge(verifier),
25
+ method: 'S256',
26
+ };
27
+ }
28
+ export function generateState() {
29
+ return b64url(randomBytes(32));
30
+ }
31
+ //# sourceMappingURL=pkce.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"pkce.js","sourceRoot":"","sources":["../../src/auth/pkce.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,EAAE,UAAU,EAAE,WAAW,EAAE,MAAM,aAAa,CAAA;AAQrD,+EAA+E;AAC/E,SAAS,MAAM,CAAC,GAAW;IACzB,OAAO,GAAG,CAAC,QAAQ,CAAC,WAAW,CAAC,CAAA;AAClC,CAAC;AAED,MAAM,UAAU,oBAAoB;IAClC,oEAAoE;IACpE,OAAO,MAAM,CAAC,WAAW,CAAC,EAAE,CAAC,CAAC,CAAA;AAChC,CAAC;AAED,MAAM,UAAU,mBAAmB,CAAC,QAAgB;IAClD,OAAO,MAAM,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,MAAM,EAAE,CAAC,CAAA;AAC/D,CAAC;AAED,MAAM,UAAU,gBAAgB;IAC9B,MAAM,QAAQ,GAAG,oBAAoB,EAAE,CAAA;IACvC,OAAO;QACL,QAAQ;QACR,SAAS,EAAE,mBAAmB,CAAC,QAAQ,CAAC;QACxC,MAAM,EAAE,MAAM;KACf,CAAA;AACH,CAAC;AAED,MAAM,UAAU,aAAa;IAC3B,OAAO,MAAM,CAAC,WAAW,CAAC,EAAE,CAAC,CAAC,CAAA;AAChC,CAAC"}
@@ -0,0 +1,371 @@
1
+ /**
2
+ * Refresh-token storage for @clien-ai/mcp.
3
+ *
4
+ * Tries `keytar` (OS-native keyring) first; if unavailable (common on WSL,
5
+ * headless Linux without libsecret), falls back to an AES-256-GCM encrypted
6
+ * file at `~/.clien-ai/tokens.json.enc`. The encryption key is derived from a
7
+ * host-stable identifier (machine-id / IOPlatformUUID / MachineGuid) via
8
+ * SHA-256. Not as strong as the OS keychain but strictly better than plaintext.
9
+ *
10
+ * We do NOT multi-write (file + keyring). Once a backend is chosen the token
11
+ * lives only there. On the first successful OAuth after the backend flips
12
+ * (e.g. libsecret installed later), the old file is lazily cleared.
13
+ */
14
+ import { createCipheriv, createDecipheriv, createHash, randomBytes, } from 'node:crypto';
15
+ import { execFileSync } from 'node:child_process';
16
+ import { chmodSync, existsSync, mkdirSync, readFileSync, unlinkSync, statSync, } from 'node:fs';
17
+ import { homedir, platform } from 'node:os';
18
+ import { join } from 'node:path';
19
+ import lockfile from 'proper-lockfile';
20
+ import { writeFileAtomic } from '../util/atomic-write.js';
21
+ import { OAuthError } from './oauth.js';
22
+ const SERVICE_NAME = 'clien-ai';
23
+ const ACCOUNT = 'refresh';
24
+ const STORAGE_DIR = '.clien-ai';
25
+ const TOKEN_FILE = 'tokens.json.enc';
26
+ let cachedKeytar;
27
+ let keytarAvailability = 'unknown';
28
+ async function getKeytar() {
29
+ if (cachedKeytar !== undefined)
30
+ return cachedKeytar;
31
+ try {
32
+ // Dynamic import so build doesn't fail when keytar (native module) is
33
+ // missing. The optionalDependencies entry in package.json lets npm skip
34
+ // on platforms without libsecret.
35
+ const mod = (await import('keytar'));
36
+ const impl = mod.default ?? mod;
37
+ cachedKeytar = impl;
38
+ keytarAvailability = 'available';
39
+ return impl;
40
+ }
41
+ catch {
42
+ cachedKeytar = null;
43
+ keytarAvailability = 'missing';
44
+ return null;
45
+ }
46
+ }
47
+ // ------------------------------------------------------------------
48
+ // Machine-id derived encryption key (fallback path)
49
+ // ------------------------------------------------------------------
50
+ /**
51
+ * Derive a stable per-host identifier. Falls back to hostname if the platform
52
+ * lookup fails — weaker than machine-id but still deterministic per host.
53
+ */
54
+ function readMachineId() {
55
+ try {
56
+ switch (platform()) {
57
+ case 'linux':
58
+ // /etc/machine-id or /var/lib/dbus/machine-id
59
+ for (const p of ['/etc/machine-id', '/var/lib/dbus/machine-id']) {
60
+ if (existsSync(p)) {
61
+ const val = readFileSync(p, 'utf8').trim();
62
+ if (val.length > 0)
63
+ return val;
64
+ }
65
+ }
66
+ break;
67
+ case 'darwin': {
68
+ const out = execFileSync('ioreg', ['-rd1', '-c', 'IOPlatformExpertDevice'], { encoding: 'utf8' });
69
+ const m = /"IOPlatformUUID"\s*=\s*"([0-9A-Fa-f-]+)"/.exec(out);
70
+ if (m)
71
+ return m[1];
72
+ break;
73
+ }
74
+ case 'win32': {
75
+ try {
76
+ // reg.exe is always present on Windows. Parse raw output for the
77
+ // MachineGuid value. Node 20+ ships no winreg binding by default.
78
+ const out = execFileSync('reg', [
79
+ 'query',
80
+ 'HKLM\\SOFTWARE\\Microsoft\\Cryptography',
81
+ '/v',
82
+ 'MachineGuid',
83
+ ], { encoding: 'utf8' });
84
+ const m = /MachineGuid\s+REG_SZ\s+([0-9A-Fa-f-]+)/.exec(out);
85
+ if (m)
86
+ return m[1];
87
+ }
88
+ catch {
89
+ // fall through
90
+ }
91
+ break;
92
+ }
93
+ }
94
+ }
95
+ catch {
96
+ // fall through
97
+ }
98
+ // Deterministic fallback — homedir + hostname is host-stable enough.
99
+ const fallback = `${homedir()}:${process.env.HOSTNAME ?? 'unknown'}`;
100
+ return fallback;
101
+ }
102
+ function deriveKey() {
103
+ const id = readMachineId();
104
+ return createHash('sha256').update(`clien-ai:v1:${id}`).digest(); // 32 bytes
105
+ }
106
+ // ------------------------------------------------------------------
107
+ // Encrypted file helpers
108
+ // ------------------------------------------------------------------
109
+ function storageDir() {
110
+ return join(homedir(), STORAGE_DIR);
111
+ }
112
+ function tokenFilePath() {
113
+ return join(storageDir(), TOKEN_FILE);
114
+ }
115
+ function ensureDir() {
116
+ const dir = storageDir();
117
+ try {
118
+ if (!existsSync(dir)) {
119
+ mkdirSync(dir, { recursive: true, mode: 0o700 });
120
+ }
121
+ chmodSync(dir, 0o700);
122
+ }
123
+ catch (e) {
124
+ // ENOENT is a benign race; rethrow others
125
+ if (e.code !== 'ENOENT')
126
+ throw e;
127
+ }
128
+ }
129
+ function encryptValue(plain, key) {
130
+ const iv = randomBytes(12);
131
+ const cipher = createCipheriv('aes-256-gcm', key, iv);
132
+ const encrypted = Buffer.concat([cipher.update(plain, 'utf8'), cipher.final()]);
133
+ const tag = cipher.getAuthTag();
134
+ return {
135
+ v: 1,
136
+ iv: iv.toString('base64url'),
137
+ tag: tag.toString('base64url'),
138
+ ct: encrypted.toString('base64url'),
139
+ };
140
+ }
141
+ function decryptValue(envelope, key) {
142
+ const iv = Buffer.from(envelope.iv, 'base64url');
143
+ const tag = Buffer.from(envelope.tag, 'base64url');
144
+ const ct = Buffer.from(envelope.ct, 'base64url');
145
+ const decipher = createDecipheriv('aes-256-gcm', key, iv);
146
+ decipher.setAuthTag(tag);
147
+ const plain = Buffer.concat([decipher.update(ct), decipher.final()]);
148
+ return plain.toString('utf8');
149
+ }
150
+ function readFileToken() {
151
+ const path = tokenFilePath();
152
+ if (!existsSync(path))
153
+ return null;
154
+ try {
155
+ const buf = readFileSync(path, 'utf8');
156
+ const envelope = JSON.parse(buf);
157
+ if (envelope.v !== 1 || !envelope.iv || !envelope.tag || !envelope.ct) {
158
+ return null;
159
+ }
160
+ return decryptValue(envelope, deriveKey());
161
+ }
162
+ catch {
163
+ // Corrupt file or decryption failure -> treat as missing. The tool call
164
+ // will re-authenticate and overwrite.
165
+ return null;
166
+ }
167
+ }
168
+ function writeFileToken(value) {
169
+ ensureDir();
170
+ const envelope = encryptValue(value, deriveKey());
171
+ writeFileAtomic(tokenFilePath(), JSON.stringify(envelope));
172
+ }
173
+ function removeFileToken() {
174
+ const p = tokenFilePath();
175
+ if (existsSync(p)) {
176
+ try {
177
+ unlinkSync(p);
178
+ }
179
+ catch {
180
+ // ignore
181
+ }
182
+ }
183
+ }
184
+ /** Load the refresh token; null if nothing stored or corrupt. */
185
+ export async function loadRefreshToken() {
186
+ const keytar = await getKeytar();
187
+ if (keytar) {
188
+ try {
189
+ const val = await keytar.getPassword(SERVICE_NAME, ACCOUNT);
190
+ if (val && val.length > 0)
191
+ return val;
192
+ }
193
+ catch {
194
+ // keychain failure is unusual once keytar itself loaded — fall through.
195
+ }
196
+ }
197
+ return readFileToken();
198
+ }
199
+ /** Persist the refresh token. Writes to keytar if available, else file. */
200
+ export async function saveRefreshToken(token) {
201
+ if (!token || token.length === 0) {
202
+ throw new Error('Refresh token cannot be empty');
203
+ }
204
+ const keytar = await getKeytar();
205
+ if (keytar) {
206
+ try {
207
+ await keytar.setPassword(SERVICE_NAME, ACCOUNT, token);
208
+ // If we previously fell back to file, clean it up so we don't have
209
+ // two copies drifting apart.
210
+ removeFileToken();
211
+ return 'keytar';
212
+ }
213
+ catch {
214
+ // fall through to file
215
+ }
216
+ }
217
+ writeFileToken(token);
218
+ return 'file';
219
+ }
220
+ /** Clear all stored credentials. Best-effort across both backends. */
221
+ export async function clearTokens() {
222
+ const keytar = await getKeytar();
223
+ if (keytar) {
224
+ try {
225
+ await keytar.deletePassword(SERVICE_NAME, ACCOUNT);
226
+ }
227
+ catch {
228
+ // ignore
229
+ }
230
+ }
231
+ removeFileToken();
232
+ }
233
+ /**
234
+ * Path to the encrypted token file (`~/.clien-ai/tokens.json.enc`). Public
235
+ * because `clien-mcp status` needs it to compute file mtime for the
236
+ * "last refresh" timestamp; previously reached for via the test-only
237
+ * `__testing.tokenFilePath` hatch from production code.
238
+ */
239
+ export function getTokenFilePath() {
240
+ return tokenFilePath();
241
+ }
242
+ /**
243
+ * Cross-process advisory lock for the token store. Holds the lock for the
244
+ * duration of `fn()` so that "load -> refresh -> save" stays atomic from
245
+ * other MCP processes' perspective.
246
+ *
247
+ * Why we need this: Supabase rotates the refresh token on every refresh, so
248
+ * if two MCP processes both refresh from the same stored token, the second
249
+ * one gets `invalid_grant` ("refresh token already used") and would clear
250
+ * credentials, forcing the user to re-do OAuth. With the lock, the second
251
+ * process waits, then re-reads the rotated token before refreshing.
252
+ *
253
+ * Implementation: proper-lockfile creates `<tokenFile>.lock/` next to the
254
+ * token file. `realpath: false` lets us lock a path even if the token file
255
+ * itself doesn't exist yet (first install).
256
+ *
257
+ * Calibration:
258
+ * - `retries`: ~12s of contention coverage (10 retries x 100-1000ms backoff
259
+ * plus the initial attempt). Long enough to ride out a peer completing
260
+ * its lock body; short enough to surface "stuck" promptly.
261
+ * - `stale: 60s`: lock body holds across a 30s fetch timeout plus a save
262
+ * round-trip. 60s gives ~2x headroom so a healthy-but-slow peer isn't
263
+ * auto-kicked from the lock mid-fetch (which would fire `onCompromised`
264
+ * and abort the lock body via the default-throw behavior).
265
+ * - `onCompromised`: the proper-lockfile default throws an unrecoverable
266
+ * error from the lock body. Ours just logs to stderr (stdout is the MCP
267
+ * transport) and lets fn() finish. Worst case is a peer wins a
268
+ * conflicting save, which our reload-on-invalid-grant retry handles.
269
+ *
270
+ * Lock-acquisition failures (ELOCKED after exhausted retries, EACCES, ...)
271
+ * are wrapped in `OAuthError('lock_unavailable', ...)` so the top-level CLI
272
+ * catch can render an actionable message instead of the raw proper-lockfile
273
+ * string "Lock file is already being held".
274
+ */
275
+ const LOCK_RETRIES = { retries: 10, minTimeout: 100, maxTimeout: 1000 };
276
+ const LOCK_STALE_MS = 60_000;
277
+ export async function withTokenLock(fn) {
278
+ ensureDir();
279
+ let release;
280
+ try {
281
+ release = await lockfile.lock(tokenFilePath(), {
282
+ realpath: false,
283
+ retries: LOCK_RETRIES,
284
+ stale: LOCK_STALE_MS,
285
+ onCompromised: (err) => {
286
+ process.stderr.write(`[clien-mcp] token lock compromised mid-body (continuing anyway): ${err.message}\n`);
287
+ },
288
+ });
289
+ }
290
+ catch (err) {
291
+ const message = err instanceof Error ? err.message : String(err);
292
+ throw new OAuthError('lock_unavailable', `Could not acquire the token lock at ${tokenFilePath()}.lock (${message}). ` +
293
+ 'Another clien-mcp process may be stuck refreshing -- check `ps -ax | grep clien-mcp`, stop the offender, or remove the .lock directory and retry.');
294
+ }
295
+ try {
296
+ return await fn();
297
+ }
298
+ finally {
299
+ try {
300
+ await release();
301
+ }
302
+ catch {
303
+ // The lock may have already been auto-released as stale, or the
304
+ // underlying fs op failed — neither is worth surfacing to the caller
305
+ // at this point (the protected work has completed).
306
+ }
307
+ }
308
+ }
309
+ /**
310
+ * Diagnostic helper for `clien-mcp status` and tests.
311
+ *
312
+ * Reports which backend is currently authoritative AND whether either
313
+ * backend holds a token. Critical: when keytar is loadable but reports no
314
+ * password, we MUST fall through to the file backend before declaring
315
+ * "no token" — otherwise `loadRefreshToken()` would still find a file token
316
+ * that `getStorageStatus` claimed didn't exist (correctness regression
317
+ * flagged in cluster 4 review).
318
+ *
319
+ * The reported `backend` reflects where saveRefreshToken() would write
320
+ * next. `hasToken` reflects whether ANY backend currently holds one.
321
+ */
322
+ export async function getStorageStatus() {
323
+ const path = tokenFilePath();
324
+ const filePresent = existsSync(path) && (() => {
325
+ try {
326
+ return statSync(path).size > 0;
327
+ }
328
+ catch {
329
+ return false;
330
+ }
331
+ })();
332
+ const keytar = await getKeytar();
333
+ if (keytar) {
334
+ try {
335
+ const val = await keytar.getPassword(SERVICE_NAME, ACCOUNT);
336
+ // saveRefreshToken would write to keytar next; report backend='keytar'.
337
+ // hasToken is true if EITHER keytar OR the file fallback holds one.
338
+ return {
339
+ backend: 'keytar',
340
+ hasToken: (!!val && val.length > 0) || filePresent,
341
+ };
342
+ }
343
+ catch {
344
+ // keytar IPC failure — fall through to file-only reporting.
345
+ }
346
+ }
347
+ return { backend: 'file', hasToken: filePresent };
348
+ }
349
+ /** Test-only helpers. Not exported through the package entry. */
350
+ export const __testing = {
351
+ readMachineId,
352
+ deriveKey,
353
+ encryptValue,
354
+ decryptValue,
355
+ tokenFilePath,
356
+ removeFileToken,
357
+ readFileToken,
358
+ writeFileToken,
359
+ resetKeytarCache() {
360
+ cachedKeytar = undefined;
361
+ keytarAvailability = 'unknown';
362
+ },
363
+ setKeytarMock(mock) {
364
+ cachedKeytar = mock;
365
+ keytarAvailability = mock ? 'available' : 'missing';
366
+ },
367
+ getKeytarAvailability() {
368
+ return keytarAvailability;
369
+ },
370
+ };
371
+ //# sourceMappingURL=storage.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"storage.js","sourceRoot":"","sources":["../../src/auth/storage.ts"],"names":[],"mappings":"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"}