@n24q02m/mcp-core 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.
Files changed (93) hide show
  1. package/build/crypto/aes.d.ts +8 -0
  2. package/build/crypto/aes.d.ts.map +1 -0
  3. package/build/crypto/aes.js +25 -0
  4. package/build/crypto/aes.js.map +1 -0
  5. package/build/crypto/ecdh.d.ts +5 -0
  6. package/build/crypto/ecdh.d.ts.map +1 -0
  7. package/build/crypto/ecdh.js +16 -0
  8. package/build/crypto/ecdh.js.map +1 -0
  9. package/build/crypto/index.d.ts +4 -0
  10. package/build/crypto/index.d.ts.map +1 -0
  11. package/build/crypto/index.js +4 -0
  12. package/build/crypto/index.js.map +1 -0
  13. package/build/crypto/kdf.d.ts +2 -0
  14. package/build/crypto/kdf.d.ts.map +1 -0
  15. package/build/crypto/kdf.js +7 -0
  16. package/build/crypto/kdf.js.map +1 -0
  17. package/build/index.d.ts +12 -0
  18. package/build/index.d.ts.map +1 -0
  19. package/build/index.js +12 -0
  20. package/build/index.js.map +1 -0
  21. package/build/oauth/index.d.ts +4 -0
  22. package/build/oauth/index.d.ts.map +1 -0
  23. package/build/oauth/index.js +4 -0
  24. package/build/oauth/index.js.map +1 -0
  25. package/build/oauth/jwt-issuer.d.ts +25 -0
  26. package/build/oauth/jwt-issuer.d.ts.map +1 -0
  27. package/build/oauth/jwt-issuer.js +79 -0
  28. package/build/oauth/jwt-issuer.js.map +1 -0
  29. package/build/oauth/provider.d.ts +67 -0
  30. package/build/oauth/provider.d.ts.map +1 -0
  31. package/build/oauth/provider.js +129 -0
  32. package/build/oauth/provider.js.map +1 -0
  33. package/build/oauth/user-store.d.ts +25 -0
  34. package/build/oauth/user-store.d.ts.map +1 -0
  35. package/build/oauth/user-store.js +78 -0
  36. package/build/oauth/user-store.js.map +1 -0
  37. package/build/relay/browser.d.ts +15 -0
  38. package/build/relay/browser.d.ts.map +1 -0
  39. package/build/relay/browser.js +76 -0
  40. package/build/relay/browser.js.map +1 -0
  41. package/build/relay/client.d.ts +17 -0
  42. package/build/relay/client.d.ts.map +1 -0
  43. package/build/relay/client.js +87 -0
  44. package/build/relay/client.js.map +1 -0
  45. package/build/relay/wordlist.d.ts +2 -0
  46. package/build/relay/wordlist.d.ts.map +1 -0
  47. package/build/relay/wordlist.js +7782 -0
  48. package/build/relay/wordlist.js.map +1 -0
  49. package/build/schema/types.d.ts +42 -0
  50. package/build/schema/types.d.ts.map +1 -0
  51. package/build/schema/types.js +2 -0
  52. package/build/schema/types.js.map +1 -0
  53. package/build/storage/config-file.d.ts +8 -0
  54. package/build/storage/config-file.d.ts.map +1 -0
  55. package/build/storage/config-file.js +136 -0
  56. package/build/storage/config-file.js.map +1 -0
  57. package/build/storage/encryption.d.ts +7 -0
  58. package/build/storage/encryption.d.ts.map +1 -0
  59. package/build/storage/encryption.js +26 -0
  60. package/build/storage/encryption.js.map +1 -0
  61. package/build/storage/index.d.ts +7 -0
  62. package/build/storage/index.d.ts.map +1 -0
  63. package/build/storage/index.js +7 -0
  64. package/build/storage/index.js.map +1 -0
  65. package/build/storage/machine-id.d.ts +3 -0
  66. package/build/storage/machine-id.d.ts.map +1 -0
  67. package/build/storage/machine-id.js +47 -0
  68. package/build/storage/machine-id.js.map +1 -0
  69. package/build/storage/mode.d.ts +23 -0
  70. package/build/storage/mode.d.ts.map +1 -0
  71. package/build/storage/mode.js +43 -0
  72. package/build/storage/mode.js.map +1 -0
  73. package/build/storage/resolver.d.ts +7 -0
  74. package/build/storage/resolver.d.ts.map +1 -0
  75. package/build/storage/resolver.js +37 -0
  76. package/build/storage/resolver.js.map +1 -0
  77. package/build/storage/session-lock.d.ts +19 -0
  78. package/build/storage/session-lock.d.ts.map +1 -0
  79. package/build/storage/session-lock.js +94 -0
  80. package/build/storage/session-lock.js.map +1 -0
  81. package/build/transport/index.d.ts +3 -0
  82. package/build/transport/index.d.ts.map +1 -0
  83. package/build/transport/index.js +3 -0
  84. package/build/transport/index.js.map +1 -0
  85. package/build/transport/oauth-middleware.d.ts +32 -0
  86. package/build/transport/oauth-middleware.d.ts.map +1 -0
  87. package/build/transport/oauth-middleware.js +62 -0
  88. package/build/transport/oauth-middleware.js.map +1 -0
  89. package/build/transport/streamable-http.d.ts +54 -0
  90. package/build/transport/streamable-http.d.ts.map +1 -0
  91. package/build/transport/streamable-http.js +57 -0
  92. package/build/transport/streamable-http.js.map +1 -0
  93. package/package.json +88 -0
@@ -0,0 +1,15 @@
1
+ /**
2
+ * Cross-platform browser opening with WSL detection.
3
+ */
4
+ /**
5
+ * Try to open URL in default browser. Returns true if likely succeeded.
6
+ *
7
+ * Detection order:
8
+ * 1. win32: rundll32.exe
9
+ * 2. darwin: `open` command
10
+ * 3. linux: check WSL then `xdg-open`
11
+ *
12
+ * Never throws. Returns false on failure.
13
+ */
14
+ export declare function tryOpenBrowser(url: string): Promise<boolean>;
15
+ //# sourceMappingURL=browser.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"browser.d.ts","sourceRoot":"","sources":["../../src/relay/browser.ts"],"names":[],"mappings":"AAAA;;GAEG;AAsCH;;;;;;;;;GASG;AACH,wBAAsB,cAAc,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CA+BlE"}
@@ -0,0 +1,76 @@
1
+ /**
2
+ * Cross-platform browser opening with WSL detection.
3
+ */
4
+ import { execFile } from 'node:child_process';
5
+ import { readFile } from 'node:fs/promises';
6
+ import { promisify } from 'node:util';
7
+ const execFileAsync = promisify(execFile);
8
+ async function isWsl() {
9
+ try {
10
+ const version = await readFile('/proc/version', 'utf-8');
11
+ const lower = version.toLowerCase();
12
+ return lower.includes('microsoft') || lower.includes('wsl');
13
+ }
14
+ catch {
15
+ return false;
16
+ }
17
+ }
18
+ async function openInWsl(url) {
19
+ // Try wslview first (from wslu package, commonly available)
20
+ try {
21
+ await execFileAsync('wslview', [url]);
22
+ return true;
23
+ }
24
+ catch {
25
+ /* fall through */
26
+ }
27
+ // Fallback to rundll32.exe url.dll,FileProtocolHandler
28
+ try {
29
+ await execFileAsync('rundll32.exe', ['url.dll,FileProtocolHandler', url]);
30
+ return true;
31
+ }
32
+ catch {
33
+ /* fall through */
34
+ }
35
+ return false;
36
+ }
37
+ /**
38
+ * Try to open URL in default browser. Returns true if likely succeeded.
39
+ *
40
+ * Detection order:
41
+ * 1. win32: rundll32.exe
42
+ * 2. darwin: `open` command
43
+ * 3. linux: check WSL then `xdg-open`
44
+ *
45
+ * Never throws. Returns false on failure.
46
+ */
47
+ export async function tryOpenBrowser(url) {
48
+ try {
49
+ // Validate URL
50
+ if (!/^https?:\/\//i.test(url)) {
51
+ return false;
52
+ }
53
+ const platform = process.platform;
54
+ if (platform === 'win32') {
55
+ await execFileAsync('rundll32.exe', ['url.dll,FileProtocolHandler', url]);
56
+ return true;
57
+ }
58
+ if (platform === 'darwin') {
59
+ await execFileAsync('open', [url]);
60
+ return true;
61
+ }
62
+ // linux
63
+ if (await isWsl()) {
64
+ const result = await openInWsl(url);
65
+ if (result)
66
+ return true;
67
+ // Fall through to xdg-open
68
+ }
69
+ await execFileAsync('xdg-open', [url]);
70
+ return true;
71
+ }
72
+ catch {
73
+ return false;
74
+ }
75
+ }
76
+ //# sourceMappingURL=browser.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"browser.js","sourceRoot":"","sources":["../../src/relay/browser.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,QAAQ,EAAE,MAAM,oBAAoB,CAAA;AAC7C,OAAO,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAA;AAC3C,OAAO,EAAE,SAAS,EAAE,MAAM,WAAW,CAAA;AAErC,MAAM,aAAa,GAAG,SAAS,CAAC,QAAQ,CAAC,CAAA;AAEzC,KAAK,UAAU,KAAK;IAClB,IAAI,CAAC;QACH,MAAM,OAAO,GAAG,MAAM,QAAQ,CAAC,eAAe,EAAE,OAAO,CAAC,CAAA;QACxD,MAAM,KAAK,GAAG,OAAO,CAAC,WAAW,EAAE,CAAA;QACnC,OAAO,KAAK,CAAC,QAAQ,CAAC,WAAW,CAAC,IAAI,KAAK,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAA;IAC7D,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,KAAK,CAAA;IACd,CAAC;AACH,CAAC;AAED,KAAK,UAAU,SAAS,CAAC,GAAW;IAClC,4DAA4D;IAC5D,IAAI,CAAC;QACH,MAAM,aAAa,CAAC,SAAS,EAAE,CAAC,GAAG,CAAC,CAAC,CAAA;QACrC,OAAO,IAAI,CAAA;IACb,CAAC;IAAC,MAAM,CAAC;QACP,kBAAkB;IACpB,CAAC;IAED,uDAAuD;IACvD,IAAI,CAAC;QACH,MAAM,aAAa,CAAC,cAAc,EAAE,CAAC,6BAA6B,EAAE,GAAG,CAAC,CAAC,CAAA;QACzE,OAAO,IAAI,CAAA;IACb,CAAC;IAAC,MAAM,CAAC;QACP,kBAAkB;IACpB,CAAC;IAED,OAAO,KAAK,CAAA;AACd,CAAC;AAED;;;;;;;;;GASG;AACH,MAAM,CAAC,KAAK,UAAU,cAAc,CAAC,GAAW;IAC9C,IAAI,CAAC;QACH,eAAe;QACf,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC;YAC/B,OAAO,KAAK,CAAA;QACd,CAAC;QAED,MAAM,QAAQ,GAAG,OAAO,CAAC,QAAQ,CAAA;QAEjC,IAAI,QAAQ,KAAK,OAAO,EAAE,CAAC;YACzB,MAAM,aAAa,CAAC,cAAc,EAAE,CAAC,6BAA6B,EAAE,GAAG,CAAC,CAAC,CAAA;YACzE,OAAO,IAAI,CAAA;QACb,CAAC;QAED,IAAI,QAAQ,KAAK,QAAQ,EAAE,CAAC;YAC1B,MAAM,aAAa,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAA;YAClC,OAAO,IAAI,CAAA;QACb,CAAC;QAED,QAAQ;QACR,IAAI,MAAM,KAAK,EAAE,EAAE,CAAC;YAClB,MAAM,MAAM,GAAG,MAAM,SAAS,CAAC,GAAG,CAAC,CAAA;YACnC,IAAI,MAAM;gBAAE,OAAO,IAAI,CAAA;YACvB,2BAA2B;QAC7B,CAAC;QAED,MAAM,aAAa,CAAC,UAAU,EAAE,CAAC,GAAG,CAAC,CAAC,CAAA;QACtC,OAAO,IAAI,CAAA;IACb,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,KAAK,CAAA;IACd,CAAC;AACH,CAAC"}
@@ -0,0 +1,17 @@
1
+ import type { RelayConfigSchema } from '../schema/types.js';
2
+ export declare function generatePassphrase(wordCount?: number): string;
3
+ export interface RelaySession {
4
+ sessionId: string;
5
+ keyPair: CryptoKeyPair;
6
+ passphrase: string;
7
+ relayUrl: string;
8
+ }
9
+ export declare function createSession(relayBaseUrl: string, serverName: string, schema: RelayConfigSchema): Promise<RelaySession>;
10
+ export declare function pollForResult(relayBaseUrl: string, session: RelaySession, intervalMs?: number, timeoutMs?: number): Promise<Record<string, string>>;
11
+ export declare function sendMessage(relayBaseUrl: string, sessionId: string, message: {
12
+ type: string;
13
+ text: string;
14
+ data?: Record<string, unknown>;
15
+ }): Promise<string>;
16
+ export declare function pollForResponses(relayBaseUrl: string, sessionId: string, messageId: string, intervalMs?: number, timeoutMs?: number): Promise<string>;
17
+ //# sourceMappingURL=client.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../../src/relay/client.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,oBAAoB,CAAA;AAG3D,wBAAgB,kBAAkB,CAAC,SAAS,SAAI,GAAG,MAAM,CAWxD;AAED,MAAM,WAAW,YAAY;IAC3B,SAAS,EAAE,MAAM,CAAA;IACjB,OAAO,EAAE,aAAa,CAAA;IACtB,UAAU,EAAE,MAAM,CAAA;IAClB,QAAQ,EAAE,MAAM,CAAA;CACjB;AAED,wBAAsB,aAAa,CACjC,YAAY,EAAE,MAAM,EACpB,UAAU,EAAE,MAAM,EAClB,MAAM,EAAE,iBAAiB,GACxB,OAAO,CAAC,YAAY,CAAC,CAgBvB;AAED,wBAAsB,aAAa,CACjC,YAAY,EAAE,MAAM,EACpB,OAAO,EAAE,YAAY,EACrB,UAAU,SAAO,EACjB,SAAS,SAAU,GAClB,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CAwCjC;AAED,wBAAsB,WAAW,CAC/B,YAAY,EAAE,MAAM,EACpB,SAAS,EAAE,MAAM,EACjB,OAAO,EAAE;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,CAAC;IAAC,IAAI,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;CAAE,GACtE,OAAO,CAAC,MAAM,CAAC,CASjB;AAED,wBAAsB,gBAAgB,CACpC,YAAY,EAAE,MAAM,EACpB,SAAS,EAAE,MAAM,EACjB,SAAS,EAAE,MAAM,EACjB,UAAU,SAAO,EACjB,SAAS,SAAU,GAClB,OAAO,CAAC,MAAM,CAAC,CAejB"}
@@ -0,0 +1,87 @@
1
+ import { decrypt } from '../crypto/aes.js';
2
+ import { deriveSharedSecret, exportPublicKey, generateKeyPair, importPublicKey } from '../crypto/ecdh.js';
3
+ import { deriveAesKey } from '../crypto/kdf.js';
4
+ import { WORDLIST } from './wordlist.js';
5
+ export function generatePassphrase(wordCount = 4) {
6
+ const words = [];
7
+ const max = Math.floor(0x10000 / WORDLIST.length) * WORDLIST.length; // rejection threshold
8
+ for (let i = 0; i < wordCount; i++) {
9
+ let index;
10
+ do {
11
+ index = crypto.getRandomValues(new Uint16Array(1))[0];
12
+ } while (index >= max); // reject biased values
13
+ words.push(WORDLIST[index % WORDLIST.length]);
14
+ }
15
+ return words.join('-');
16
+ }
17
+ export async function createSession(relayBaseUrl, serverName, schema) {
18
+ const sessionId = Buffer.from(crypto.getRandomValues(new Uint8Array(32))).toString('hex');
19
+ const keyPair = await generateKeyPair();
20
+ const passphrase = generatePassphrase();
21
+ const response = await fetch(`${relayBaseUrl}/api/sessions`, {
22
+ method: 'POST',
23
+ headers: { 'Content-Type': 'application/json' },
24
+ body: JSON.stringify({ sessionId, serverName, schema })
25
+ });
26
+ if (!response.ok)
27
+ throw new Error(`Relay session creation failed: ${response.status}`);
28
+ const pubKeyBase64 = await exportPublicKey(keyPair.publicKey);
29
+ const relayUrl = `${relayBaseUrl}/setup?s=${sessionId}#k=${pubKeyBase64}&p=${encodeURIComponent(passphrase)}`;
30
+ return { sessionId, keyPair, passphrase, relayUrl };
31
+ }
32
+ export async function pollForResult(relayBaseUrl, session, intervalMs = 2000, timeoutMs = 600_000) {
33
+ const deadline = Date.now() + timeoutMs;
34
+ while (Date.now() < deadline) {
35
+ const response = await fetch(`${relayBaseUrl}/api/sessions/${session.sessionId}`);
36
+ if (response.status === 200) {
37
+ const body = await response.json();
38
+ if (body.status === 'skipped') {
39
+ // Cleanup session
40
+ await fetch(`${relayBaseUrl}/api/sessions/${session.sessionId}`, {
41
+ method: 'DELETE'
42
+ }).catch(() => { });
43
+ throw new Error('RELAY_SKIPPED');
44
+ }
45
+ const { browserPub, ciphertext, iv, tag } = body.result ?? body;
46
+ const browserKey = await importPublicKey(browserPub);
47
+ const sharedSecret = await deriveSharedSecret(session.keyPair.privateKey, browserKey);
48
+ const aesKey = await deriveAesKey(sharedSecret, session.passphrase);
49
+ const plaintext = await decrypt(aesKey, new Uint8Array(Buffer.from(ciphertext, 'base64')), new Uint8Array(Buffer.from(iv, 'base64')), new Uint8Array(Buffer.from(tag, 'base64')));
50
+ // Don't delete session here — keep alive for bidirectional messaging.
51
+ // Session auto-expires via TTL (10 min). Caller can delete manually if needed.
52
+ return JSON.parse(plaintext);
53
+ }
54
+ if (response.status === 404)
55
+ throw new Error('Session expired or not found');
56
+ if (response.status !== 202)
57
+ throw new Error(`Unexpected status: ${response.status}`);
58
+ await new Promise((resolve) => setTimeout(resolve, intervalMs));
59
+ }
60
+ throw new Error('Relay setup timed out');
61
+ }
62
+ export async function sendMessage(relayBaseUrl, sessionId, message) {
63
+ const response = await fetch(`${relayBaseUrl}/api/sessions/${sessionId}/messages`, {
64
+ method: 'POST',
65
+ headers: { 'Content-Type': 'application/json' },
66
+ body: JSON.stringify(message)
67
+ });
68
+ if (!response.ok)
69
+ throw new Error(`Failed to send message: ${response.status}`);
70
+ const body = await response.json();
71
+ return body.id;
72
+ }
73
+ export async function pollForResponses(relayBaseUrl, sessionId, messageId, intervalMs = 2000, timeoutMs = 300_000) {
74
+ const deadline = Date.now() + timeoutMs;
75
+ while (Date.now() < deadline) {
76
+ const response = await fetch(`${relayBaseUrl}/api/sessions/${sessionId}/responses`);
77
+ if (!response.ok)
78
+ throw new Error(`Failed to poll responses: ${response.status}`);
79
+ const body = await response.json();
80
+ const match = body.responses?.find((r) => r.messageId === messageId);
81
+ if (match)
82
+ return match.value;
83
+ await new Promise((resolve) => setTimeout(resolve, intervalMs));
84
+ }
85
+ throw new Error('Timed out waiting for response');
86
+ }
87
+ //# sourceMappingURL=client.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"client.js","sourceRoot":"","sources":["../../src/relay/client.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ export declare const WORDLIST: string[];
2
+ //# sourceMappingURL=wordlist.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"wordlist.d.ts","sourceRoot":"","sources":["../../src/relay/wordlist.ts"],"names":[],"mappings":"AAGA,eAAO,MAAM,QAAQ,EAAE,MAAM,EAimP5B,CAAA"}