@n24q02m/hull 0.4.0 → 0.5.0-beta.1

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 (169) hide show
  1. package/README.md +47 -16
  2. package/build/cli/build-cli.d.ts +5 -6
  3. package/build/cli/build-cli.d.ts.map +1 -1
  4. package/build/cli/build-cli.js +4 -61
  5. package/build/cli/build-cli.js.map +1 -1
  6. package/build/crypto/index.d.ts +1 -1
  7. package/build/crypto/index.d.ts.map +1 -1
  8. package/build/crypto/index.js +1 -1
  9. package/build/crypto/index.js.map +1 -1
  10. package/build/crypto/kdf.d.ts +0 -13
  11. package/build/crypto/kdf.d.ts.map +1 -1
  12. package/build/crypto/kdf.js +3 -18
  13. package/build/crypto/kdf.js.map +1 -1
  14. package/build/index.d.ts +1 -11
  15. package/build/index.d.ts.map +1 -1
  16. package/build/index.js +4 -16
  17. package/build/index.js.map +1 -1
  18. package/build/storage/account-registry.d.ts +53 -0
  19. package/build/storage/account-registry.d.ts.map +1 -0
  20. package/build/storage/account-registry.js +148 -0
  21. package/build/storage/account-registry.js.map +1 -0
  22. package/build/storage/backends.d.ts +0 -26
  23. package/build/storage/backends.d.ts.map +1 -1
  24. package/build/storage/backends.js +0 -65
  25. package/build/storage/backends.js.map +1 -1
  26. package/build/storage/config-file.d.ts +2 -19
  27. package/build/storage/config-file.d.ts.map +1 -1
  28. package/build/storage/config-file.js +2 -23
  29. package/build/storage/config-file.js.map +1 -1
  30. package/build/storage/credential-store.d.ts +1 -9
  31. package/build/storage/credential-store.d.ts.map +1 -1
  32. package/build/storage/credential-store.js +4 -16
  33. package/build/storage/credential-store.js.map +1 -1
  34. package/build/storage/data-dir.d.ts +2 -2
  35. package/build/storage/data-dir.js +2 -2
  36. package/build/storage/encryption.d.ts.map +1 -1
  37. package/build/storage/encryption.js +4 -0
  38. package/build/storage/encryption.js.map +1 -1
  39. package/build/storage/index.d.ts +5 -3
  40. package/build/storage/index.d.ts.map +1 -1
  41. package/build/storage/index.js +5 -3
  42. package/build/storage/index.js.map +1 -1
  43. package/build/storage/key-pool-crypto.d.ts +44 -0
  44. package/build/storage/key-pool-crypto.d.ts.map +1 -0
  45. package/build/storage/key-pool-crypto.js +132 -0
  46. package/build/storage/key-pool-crypto.js.map +1 -0
  47. package/build/storage/key-pool-store.d.ts +134 -0
  48. package/build/storage/key-pool-store.d.ts.map +1 -0
  49. package/build/storage/key-pool-store.js +470 -0
  50. package/build/storage/key-pool-store.js.map +1 -0
  51. package/build/storage/key-pool.d.ts +172 -0
  52. package/build/storage/key-pool.d.ts.map +1 -0
  53. package/build/storage/key-pool.js +374 -0
  54. package/build/storage/key-pool.js.map +1 -0
  55. package/build/storage/resolver.js +1 -1
  56. package/build/storage/resolver.js.map +1 -1
  57. package/build/token-auth/index.d.ts +1 -1
  58. package/build/token-auth/index.js +1 -1
  59. package/build/transport/index.d.ts +1 -2
  60. package/build/transport/index.d.ts.map +1 -1
  61. package/build/transport/index.js +1 -2
  62. package/build/transport/index.js.map +1 -1
  63. package/build/transport/local-server.d.ts +12 -128
  64. package/build/transport/local-server.d.ts.map +1 -1
  65. package/build/transport/local-server.js +20 -262
  66. package/build/transport/local-server.js.map +1 -1
  67. package/build/transport/streamable-http.d.ts +6 -7
  68. package/build/transport/streamable-http.d.ts.map +1 -1
  69. package/build/transport/streamable-http.js +6 -6
  70. package/build/transport/streamable-http.js.map +1 -1
  71. package/build/util/browser.d.ts.map +1 -0
  72. package/build/{relay → util}/browser.js +2 -2
  73. package/build/util/browser.js.map +1 -0
  74. package/package.json +4 -21
  75. package/build/auth/credential-form.d.ts +0 -163
  76. package/build/auth/credential-form.d.ts.map +0 -1
  77. package/build/auth/credential-form.js +0 -1869
  78. package/build/auth/credential-form.js.map +0 -1
  79. package/build/auth/delegated-oauth-app.d.ts +0 -90
  80. package/build/auth/delegated-oauth-app.d.ts.map +0 -1
  81. package/build/auth/delegated-oauth-app.js +0 -881
  82. package/build/auth/delegated-oauth-app.js.map +0 -1
  83. package/build/auth/index.d.ts +0 -12
  84. package/build/auth/index.d.ts.map +0 -1
  85. package/build/auth/index.js +0 -12
  86. package/build/auth/index.js.map +0 -1
  87. package/build/auth/local-oauth-app.d.ts +0 -152
  88. package/build/auth/local-oauth-app.d.ts.map +0 -1
  89. package/build/auth/local-oauth-app.js +0 -975
  90. package/build/auth/local-oauth-app.js.map +0 -1
  91. package/build/auth/relay-login.d.ts +0 -46
  92. package/build/auth/relay-login.d.ts.map +0 -1
  93. package/build/auth/relay-login.js +0 -197
  94. package/build/auth/relay-login.js.map +0 -1
  95. package/build/auth/router.d.ts +0 -18
  96. package/build/auth/router.d.ts.map +0 -1
  97. package/build/auth/router.js +0 -62
  98. package/build/auth/router.js.map +0 -1
  99. package/build/auth/session-store.d.ts +0 -49
  100. package/build/auth/session-store.d.ts.map +0 -1
  101. package/build/auth/session-store.js +0 -94
  102. package/build/auth/session-store.js.map +0 -1
  103. package/build/auth/stable-sub.d.ts +0 -27
  104. package/build/auth/stable-sub.d.ts.map +0 -1
  105. package/build/auth/stable-sub.js +0 -38
  106. package/build/auth/stable-sub.js.map +0 -1
  107. package/build/auth/well-known.d.ts +0 -4
  108. package/build/auth/well-known.d.ts.map +0 -1
  109. package/build/auth/well-known.js +0 -26
  110. package/build/auth/well-known.js.map +0 -1
  111. package/build/oauth/cache.d.ts +0 -22
  112. package/build/oauth/cache.d.ts.map +0 -1
  113. package/build/oauth/cache.js +0 -24
  114. package/build/oauth/cache.js.map +0 -1
  115. package/build/oauth/index.d.ts +0 -6
  116. package/build/oauth/index.d.ts.map +0 -1
  117. package/build/oauth/index.js +0 -6
  118. package/build/oauth/index.js.map +0 -1
  119. package/build/oauth/jwt-issuer.d.ts +0 -87
  120. package/build/oauth/jwt-issuer.d.ts.map +0 -1
  121. package/build/oauth/jwt-issuer.js +0 -205
  122. package/build/oauth/jwt-issuer.js.map +0 -1
  123. package/build/oauth/pkce.d.ts +0 -10
  124. package/build/oauth/pkce.d.ts.map +0 -1
  125. package/build/oauth/pkce.js +0 -34
  126. package/build/oauth/pkce.js.map +0 -1
  127. package/build/oauth/provider.d.ts +0 -52
  128. package/build/oauth/provider.d.ts.map +0 -1
  129. package/build/oauth/provider.js +0 -98
  130. package/build/oauth/provider.js.map +0 -1
  131. package/build/oauth/user-store.d.ts +0 -25
  132. package/build/oauth/user-store.d.ts.map +0 -1
  133. package/build/oauth/user-store.js +0 -85
  134. package/build/oauth/user-store.js.map +0 -1
  135. package/build/relay/browser.d.ts.map +0 -1
  136. package/build/relay/browser.js.map +0 -1
  137. package/build/relay/client.d.ts +0 -36
  138. package/build/relay/client.d.ts.map +0 -1
  139. package/build/relay/client.js +0 -135
  140. package/build/relay/client.js.map +0 -1
  141. package/build/relay/session.d.ts +0 -12
  142. package/build/relay/session.d.ts.map +0 -1
  143. package/build/relay/session.js +0 -55
  144. package/build/relay/session.js.map +0 -1
  145. package/build/relay/tool-helpers.d.ts +0 -85
  146. package/build/relay/tool-helpers.d.ts.map +0 -1
  147. package/build/relay/tool-helpers.js +0 -103
  148. package/build/relay/tool-helpers.js.map +0 -1
  149. package/build/relay/wordlist.d.ts +0 -2
  150. package/build/relay/wordlist.d.ts.map +0 -1
  151. package/build/relay/wordlist.js +0 -7782
  152. package/build/relay/wordlist.js.map +0 -1
  153. package/build/schema/types.d.ts +0 -67
  154. package/build/schema/types.d.ts.map +0 -1
  155. package/build/schema/types.js +0 -2
  156. package/build/schema/types.js.map +0 -1
  157. package/build/storage/mode.d.ts +0 -23
  158. package/build/storage/mode.d.ts.map +0 -1
  159. package/build/storage/mode.js +0 -46
  160. package/build/storage/mode.js.map +0 -1
  161. package/build/storage/session-lock.d.ts +0 -19
  162. package/build/storage/session-lock.d.ts.map +0 -1
  163. package/build/storage/session-lock.js +0 -105
  164. package/build/storage/session-lock.js.map +0 -1
  165. package/build/transport/oauth-middleware.d.ts +0 -45
  166. package/build/transport/oauth-middleware.d.ts.map +0 -1
  167. package/build/transport/oauth-middleware.js +0 -86
  168. package/build/transport/oauth-middleware.js.map +0 -1
  169. /package/build/{relay → util}/browser.d.ts +0 -0
@@ -1 +0,0 @@
1
- {"version":3,"file":"local-oauth-app.js","sourceRoot":"","sources":["../../src/auth/local-oauth-app.ts"],"names":[],"mappings":"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"}
@@ -1,46 +0,0 @@
1
- export declare function configureRelayLogin(password: string): void;
2
- /**
3
- * Reset module-scoped state. TEST-ONLY — reset between cases so brute-force
4
- * counters from one test don't bleed into the next.
5
- */
6
- export declare function __resetRelayLoginState(): void;
7
- /**
8
- * Minimal req/res shapes the handlers + middleware need. We accept the
9
- * Express-style fields directly so consumers can adapt the project's
10
- * IncomingMessage / ServerResponse pair (or the Express runtime, or test
11
- * stubs) without dragging the full DOM types into this module.
12
- */
13
- export interface RelayLoginRequest {
14
- cookies?: Record<string, string | undefined>;
15
- originalUrl?: string;
16
- query?: Record<string, string | undefined>;
17
- body?: Record<string, string | undefined>;
18
- ip?: string;
19
- }
20
- export interface RelayCookieOptions {
21
- httpOnly?: boolean;
22
- secure?: boolean;
23
- sameSite?: 'lax' | 'strict' | 'none';
24
- maxAge?: number;
25
- }
26
- export interface RelayLoginResponse {
27
- redirect: (url: string) => unknown;
28
- status: (code: number) => RelayLoginResponse;
29
- send: (body?: unknown) => unknown;
30
- cookie: (name: string, value: string, options?: RelayCookieOptions) => unknown;
31
- header?: (name: string, value: string) => unknown;
32
- set?: (name: string, value: string) => unknown;
33
- }
34
- /**
35
- * Express-style middleware adapter.
36
- *
37
- * Pass-through when no password configured. Otherwise: read
38
- * ``mcp_relay_session`` cookie, allow if present + unexpired, redirect to
39
- * ``/login?next=<encoded>`` otherwise.
40
- */
41
- export declare function createRelayLoginMiddleware(opts: {
42
- password: string;
43
- }): (req: RelayLoginRequest, res: Pick<RelayLoginResponse, 'redirect'>, next: () => void) => Promise<void>;
44
- export declare function loginGetHandler(req: Pick<RelayLoginRequest, 'query'>, res: Pick<RelayLoginResponse, 'send' | 'set'>): Promise<void>;
45
- export declare function loginPostHandler(req: Pick<RelayLoginRequest, 'body' | 'ip'>, res: RelayLoginResponse): Promise<void>;
46
- //# sourceMappingURL=relay-login.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"relay-login.d.ts","sourceRoot":"","sources":["../../src/auth/relay-login.ts"],"names":[],"mappings":"AAmCA,wBAAgB,mBAAmB,CAAC,QAAQ,EAAE,MAAM,GAAG,IAAI,CAE1D;AAED;;;GAGG;AACH,wBAAgB,sBAAsB,IAAI,IAAI,CAI7C;AA+BD;;;;;GAKG;AACH,MAAM,WAAW,iBAAiB;IAChC,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,SAAS,CAAC,CAAA;IAC5C,WAAW,CAAC,EAAE,MAAM,CAAA;IACpB,KAAK,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,SAAS,CAAC,CAAA;IAC1C,IAAI,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,SAAS,CAAC,CAAA;IACzC,EAAE,CAAC,EAAE,MAAM,CAAA;CACZ;AAED,MAAM,WAAW,kBAAkB;IACjC,QAAQ,CAAC,EAAE,OAAO,CAAA;IAClB,MAAM,CAAC,EAAE,OAAO,CAAA;IAChB,QAAQ,CAAC,EAAE,KAAK,GAAG,QAAQ,GAAG,MAAM,CAAA;IACpC,MAAM,CAAC,EAAE,MAAM,CAAA;CAChB;AAED,MAAM,WAAW,kBAAkB;IACjC,QAAQ,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,OAAO,CAAA;IAClC,MAAM,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,kBAAkB,CAAA;IAC5C,IAAI,EAAE,CAAC,IAAI,CAAC,EAAE,OAAO,KAAK,OAAO,CAAA;IACjC,MAAM,EAAE,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,kBAAkB,KAAK,OAAO,CAAA;IAC9E,MAAM,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,KAAK,OAAO,CAAA;IACjD,GAAG,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,KAAK,OAAO,CAAA;CAC/C;AAED;;;;;;GAMG;AACH,wBAAgB,0BAA0B,CAAC,IAAI,EAAE;IAAE,QAAQ,EAAE,MAAM,CAAA;CAAE,SAChD,iBAAiB,OAAO,IAAI,CAAC,kBAAkB,EAAE,UAAU,CAAC,QAAQ,MAAM,IAAI,KAAG,OAAO,CAAC,IAAI,CAAC,CAclH;AAmFD,wBAAsB,eAAe,CACnC,GAAG,EAAE,IAAI,CAAC,iBAAiB,EAAE,OAAO,CAAC,EACrC,GAAG,EAAE,IAAI,CAAC,kBAAkB,EAAE,MAAM,GAAG,KAAK,CAAC,GAC5C,OAAO,CAAC,IAAI,CAAC,CAKf;AAED,wBAAsB,gBAAgB,CACpC,GAAG,EAAE,IAAI,CAAC,iBAAiB,EAAE,MAAM,GAAG,IAAI,CAAC,EAC3C,GAAG,EAAE,kBAAkB,GACtB,OAAO,CAAC,IAAI,CAAC,CA4Bf"}
@@ -1,197 +0,0 @@
1
- /**
2
- * MCP relay edge auth — password gate for ``/authorize``.
3
- *
4
- * When ``MCP_RELAY_PASSWORD`` is set, the ``/authorize`` route is fronted by
5
- * a thin cookie-session middleware. Unauthenticated requests are redirected
6
- * to ``/login`` where the user submits the password once, gets a 24h
7
- * ``mcp_relay_session`` cookie, and continues to ``/authorize``.
8
- *
9
- * Empty / unset password disables the gate entirely (single-user dev mode).
10
- *
11
- * Brute-force protection: 5 wrong submissions per IP within a 15-minute
12
- * sliding window blocks further attempts with HTTP 429 + ``Retry-After``.
13
- *
14
- * Per spec ``2026-05-01-stdio-pure-http-multiuser §4.2.1``. Python parity
15
- * lives at ``packages/core-py/src/mcp_core/auth/relay_login.py``.
16
- */
17
- import crypto from 'node:crypto';
18
- import { renderFormShell } from './credential-form.js';
19
- const sessions = new Map();
20
- const fails = new Map();
21
- const SESSION_TTL_MS = 24 * 60 * 60 * 1000;
22
- const FAIL_WINDOW_MS = 15 * 60 * 1000;
23
- const FAIL_LIMIT = 5;
24
- let configuredPassword = '';
25
- export function configureRelayLogin(password) {
26
- configuredPassword = password ?? '';
27
- }
28
- /**
29
- * Reset module-scoped state. TEST-ONLY — reset between cases so brute-force
30
- * counters from one test don't bleed into the next.
31
- */
32
- export function __resetRelayLoginState() {
33
- sessions.clear();
34
- fails.clear();
35
- configuredPassword = '';
36
- }
37
- function timingSafeEqual(a, b) {
38
- const ab = Buffer.from(a);
39
- const bb = Buffer.from(b);
40
- const isLengthEqual = ab.length === bb.length;
41
- const compareB = isLengthEqual ? bb : ab;
42
- return crypto.timingSafeEqual(ab, compareB) && isLengthEqual;
43
- }
44
- function bumpFail(ip) {
45
- const now = Date.now();
46
- const entry = fails.get(ip);
47
- if (!entry || now - entry.firstAt > FAIL_WINDOW_MS) {
48
- fails.set(ip, { count: 1, firstAt: now });
49
- return { blocked: false, retryAfter: 0 };
50
- }
51
- entry.count += 1;
52
- if (entry.count > FAIL_LIMIT) {
53
- return {
54
- blocked: true,
55
- retryAfter: Math.ceil((FAIL_WINDOW_MS - (now - entry.firstAt)) / 1000)
56
- };
57
- }
58
- return { blocked: false, retryAfter: 0 };
59
- }
60
- function clearFail(ip) {
61
- fails.delete(ip);
62
- }
63
- /**
64
- * Express-style middleware adapter.
65
- *
66
- * Pass-through when no password configured. Otherwise: read
67
- * ``mcp_relay_session`` cookie, allow if present + unexpired, redirect to
68
- * ``/login?next=<encoded>`` otherwise.
69
- */
70
- export function createRelayLoginMiddleware(opts) {
71
- return async (req, res, next) => {
72
- if (!opts.password) {
73
- next();
74
- return;
75
- }
76
- const sid = req.cookies?.mcp_relay_session;
77
- const entry = sid ? sessions.get(sid) : undefined;
78
- if (entry && entry.expiresAt > Date.now()) {
79
- next();
80
- return;
81
- }
82
- const next_ = encodeURIComponent(req.originalUrl ?? '/authorize');
83
- res.redirect(`/login?next=${next_}`);
84
- };
85
- }
86
- function escapeHtml(s) {
87
- return s.replace(/[&<>"']/g, (c) => {
88
- const entities = {
89
- '&': '&amp;',
90
- '<': '&lt;',
91
- '>': '&gt;',
92
- '"': '&quot;',
93
- "'": '&#39;'
94
- };
95
- return entities[c] ?? c;
96
- });
97
- }
98
- /**
99
- * Validates the ``next`` parameter to prevent Open Redirect vulnerabilities.
100
- *
101
- * It must start with a single ``/`` and NOT be followed by another ``/``,
102
- * ``\\``, or any whitespace/control character that some browsers might
103
- * normalize into a protocol-relative URL.
104
- */
105
- function getSafeNext(input) {
106
- const next = String(input ?? '/authorize');
107
- if (!next.startsWith('/') || next.startsWith('//') || next.startsWith('/\\') || next.startsWith('\\\\')) {
108
- return '/authorize';
109
- }
110
- // Block cases like "/ google.com" or "/\tgoogle.com" (ASCII <= 32).
111
- if (next.length > 1 && next.charCodeAt(1) <= 32) {
112
- return '/authorize';
113
- }
114
- return next;
115
- }
116
- function renderLoginForm(next, errorMsg) {
117
- const safeNext = escapeHtml(String(next));
118
- const errorHtml = errorMsg
119
- ? `\n <div id="login-error" class="status-box error" role="alert" aria-live="polite" aria-atomic="true" style="display: block; margin-bottom: 1.25rem; margin-top: 0;">\n ${escapeHtml(errorMsg)}\n </div>`
120
- : '';
121
- const ariaAttributes = errorMsg
122
- ? ' aria-invalid="true" aria-errormessage="login-error" aria-describedby="login-error relay-desc"'
123
- : ' aria-describedby="relay-desc"';
124
- return ` <div class="container">
125
- <div class="card">
126
- <div class="server-header">
127
- <h1 class="server-name">Relay login</h1>
128
- <div class="server-id">mcp-relay</div>
129
- <p class="server-description" id="relay-desc">Enter the relay password shared by your deployer.</p>
130
- </div>${errorHtml}
131
-
132
- <p class="form-title" id="form-title">Authenticate</p>
133
-
134
- <form method="POST" action="/login" aria-labelledby="form-title" novalidate>
135
- <!-- nosemgrep: javascript.express.security.injection.raw-html-format.raw-html-format -- safeNext is escapeHtml(next) -->
136
- <input type="hidden" name="next" value="${safeNext}">
137
- <div class="field-group">
138
- <label for="field-password" class="field-label">
139
- Relay password
140
- <span class="required-badge" aria-hidden="true">Required</span>
141
- </label>
142
- <input
143
- id="field-password"
144
- type="password"
145
- name="password"
146
- class="field-input"
147
- placeholder="Relay password"
148
- autocomplete="current-password"
149
- autocorrect="off"
150
- autocapitalize="off"
151
- spellcheck="false"
152
- required
153
- autofocus${ariaAttributes}
154
- />
155
- </div>
156
-
157
- <button type="submit" class="submit-btn">Continue</button>
158
- </form>
159
- </div>
160
- </div>`;
161
- }
162
- export async function loginGetHandler(req, res) {
163
- const next = getSafeNext(req.query?.next);
164
- res.set?.('Content-Type', 'text/html');
165
- res.set?.('X-Frame-Options', 'DENY');
166
- res.send(renderFormShell('Relay login', renderLoginForm(next)));
167
- }
168
- export async function loginPostHandler(req, res) {
169
- const ip = req.ip ?? 'unknown';
170
- const now = Date.now();
171
- const failEntry = fails.get(ip);
172
- if (failEntry && now - failEntry.firstAt < FAIL_WINDOW_MS && failEntry.count >= FAIL_LIMIT) {
173
- res.header?.('Retry-After', String(Math.ceil((FAIL_WINDOW_MS - (now - failEntry.firstAt)) / 1000)));
174
- res.status(429).send('Too many login attempts. Try again later.');
175
- return;
176
- }
177
- const password = String(req.body?.password ?? '');
178
- const next = getSafeNext(req.body?.next);
179
- if (!configuredPassword || !timingSafeEqual(password, configuredPassword)) {
180
- bumpFail(ip);
181
- res.set?.('Content-Type', 'text/html');
182
- res.set?.('X-Frame-Options', 'DENY');
183
- res.status(401).send(renderFormShell('Relay login', renderLoginForm(next, 'Invalid password. Please try again.')));
184
- return;
185
- }
186
- clearFail(ip);
187
- const sid = crypto.randomBytes(32).toString('hex');
188
- sessions.set(sid, { expiresAt: Date.now() + SESSION_TTL_MS });
189
- res.cookie('mcp_relay_session', sid, {
190
- httpOnly: true,
191
- secure: true,
192
- sameSite: 'lax',
193
- maxAge: SESSION_TTL_MS
194
- });
195
- res.redirect(next);
196
- }
197
- //# sourceMappingURL=relay-login.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"relay-login.js","sourceRoot":"","sources":["../../src/auth/relay-login.ts"],"names":[],"mappings":"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"}
@@ -1,18 +0,0 @@
1
- /**
2
- * Internal minimal HTTP router. Not exported from the package.
3
- * Matches requests by method + pathname, calls first matching handler.
4
- */
5
- import type { IncomingMessage, ServerResponse } from 'node:http';
6
- export type RequestHandler = (req: IncomingMessage, res: ServerResponse) => void | Promise<void>;
7
- interface Route {
8
- method: string;
9
- path: string;
10
- handler: RequestHandler;
11
- }
12
- export declare function createRouter(routes: Route[]): RequestHandler;
13
- export declare function parseJsonBody<T = Record<string, unknown>>(req: IncomingMessage): Promise<T>;
14
- export declare function parseFormBody(req: IncomingMessage): Promise<Record<string, string>>;
15
- export declare function jsonResponse(res: ServerResponse, status: number, body: unknown): void;
16
- export declare function htmlResponse(res: ServerResponse, status: number, html: string): void;
17
- export {};
18
- //# sourceMappingURL=router.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"router.d.ts","sourceRoot":"","sources":["../../src/auth/router.ts"],"names":[],"mappings":"AAAA;;;GAGG;AACH,OAAO,KAAK,EAAE,eAAe,EAAE,cAAc,EAAE,MAAM,WAAW,CAAA;AAEhE,MAAM,MAAM,cAAc,GAAG,CAAC,GAAG,EAAE,eAAe,EAAE,GAAG,EAAE,cAAc,KAAK,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAA;AAEhG,UAAU,KAAK;IACb,MAAM,EAAE,MAAM,CAAA;IACd,IAAI,EAAE,MAAM,CAAA;IACZ,OAAO,EAAE,cAAc,CAAA;CACxB;AAED,wBAAgB,YAAY,CAAC,MAAM,EAAE,KAAK,EAAE,GAAG,cAAc,CAuB5D;AAED,wBAAsB,aAAa,CAAC,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,GAAG,EAAE,eAAe,GAAG,OAAO,CAAC,CAAC,CAAC,CAajG;AAED,wBAAsB,aAAa,CAAC,GAAG,EAAE,eAAe,GAAG,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CAczF;AAED,wBAAgB,YAAY,CAAC,GAAG,EAAE,cAAc,EAAE,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,OAAO,GAAG,IAAI,CAGrF;AAED,wBAAgB,YAAY,CAAC,GAAG,EAAE,cAAc,EAAE,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,IAAI,CAGpF"}
@@ -1,62 +0,0 @@
1
- export function createRouter(routes) {
2
- return async (req, res) => {
3
- const method = req.method?.toUpperCase() ?? 'GET';
4
- const url = new URL(req.url ?? '/', `http://${req.headers.host ?? 'localhost'}`);
5
- const pathname = url.pathname;
6
- for (const route of routes) {
7
- if (route.method === method && route.path === pathname) {
8
- try {
9
- await route.handler(req, res);
10
- }
11
- catch {
12
- if (!res.headersSent) {
13
- res.writeHead(500, { 'Content-Type': 'application/json' });
14
- res.end(JSON.stringify({ error: 'internal_error' }));
15
- }
16
- }
17
- return;
18
- }
19
- }
20
- res.writeHead(404, { 'Content-Type': 'application/json' });
21
- res.end(JSON.stringify({ error: 'not_found' }));
22
- };
23
- }
24
- export async function parseJsonBody(req) {
25
- return new Promise((resolve, reject) => {
26
- const chunks = [];
27
- req.on('data', (chunk) => chunks.push(chunk));
28
- req.on('end', () => {
29
- try {
30
- resolve(JSON.parse(Buffer.concat(chunks).toString('utf-8')));
31
- }
32
- catch {
33
- reject(new Error('Invalid JSON'));
34
- }
35
- });
36
- req.on('error', reject);
37
- });
38
- }
39
- export async function parseFormBody(req) {
40
- return new Promise((resolve, reject) => {
41
- const chunks = [];
42
- req.on('data', (chunk) => chunks.push(chunk));
43
- req.on('end', () => {
44
- const params = new URLSearchParams(Buffer.concat(chunks).toString('utf-8'));
45
- const result = {};
46
- for (const [key, value] of params) {
47
- result[key] = value;
48
- }
49
- resolve(result);
50
- });
51
- req.on('error', reject);
52
- });
53
- }
54
- export function jsonResponse(res, status, body) {
55
- res.writeHead(status, { 'Content-Type': 'application/json' });
56
- res.end(JSON.stringify(body));
57
- }
58
- export function htmlResponse(res, status, html) {
59
- res.writeHead(status, { 'Content-Type': 'text/html; charset=utf-8', 'X-Frame-Options': 'DENY' });
60
- res.end(html);
61
- }
62
- //# sourceMappingURL=router.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"router.js","sourceRoot":"","sources":["../../src/auth/router.ts"],"names":[],"mappings":"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"}
@@ -1,49 +0,0 @@
1
- /**
2
- * Durable, TTL-bounded store for short-lived OAuth handshake state
3
- * (delegated-flow ``pendingSessions`` + issued ``authCodes``).
4
- *
5
- * The delegated OAuth round-trip spans two independent HTTP requests
6
- * (``/authorize`` -> upstream consent -> ``/callback`` -> ``/token``). On a
7
- * serverless/container deploy (CF single-DO + ``sleepAfter``) the container can
8
- * cold-start or be a different instance between those requests, so an
9
- * in-process ``Map`` loses the state and ``/callback`` returns "Invalid state".
10
- * Backing the state with a shared durable KV survives the restart.
11
- *
12
- * A ``SessionKv`` (get/put/delete of opaque strings) is injected in deploy mode
13
- * (e.g. the container's ``kv.internal`` backend); when omitted the store falls
14
- * back to a process-local ``Map`` (stdio / single-process, where one request
15
- * context handles the whole flow).
16
- */
17
- export interface SessionKv {
18
- get(key: string): Promise<string | null>;
19
- put(key: string, value: string): Promise<void>;
20
- delete(key: string): Promise<void>;
21
- }
22
- /** A Buffer-based blob backend, matching mcp-core's ``CredentialBackend`` / ``CfKvBackend``. */
23
- export interface BufferKvBackend {
24
- get(key: string): Promise<Buffer | null>;
25
- put(key: string, blob: Buffer): Promise<void>;
26
- delete(key: string): Promise<void>;
27
- }
28
- /**
29
- * Adapt a Buffer-based blob backend (e.g. ``CfKvBackend`` over the container's
30
- * ``kv.internal`` handler) to the string ``SessionKv`` interface. Keys are
31
- * namespaced (default prefix, or a caller-supplied one) so the short-lived
32
- * OAuth handshake state can share a KV with the server's other data
33
- * (credential vaults, etc.) without colliding.
34
- *
35
- * A CF Container's ``kv.internal`` outbound handler commonly allowlists keys
36
- * by app-scoped prefix (e.g. only ``<plugin>/*`` may pass) as a security
37
- * boundary against writing outside the app's own KV namespace. Callers
38
- * deployed behind such a handler MUST pass a prefix matching that allowlist
39
- * (e.g. ``"<plugin>/delegated-oauth:"``) -- the default global prefix will be
40
- * rejected (403) by a namespace-restricted handler.
41
- */
42
- export declare function wrapKvBackendAsSessionKv(backend: BufferKvBackend, keyPrefix?: string): SessionKv;
43
- export interface SessionStore<T> {
44
- get(key: string): Promise<T | undefined>;
45
- set(key: string, value: T): Promise<void>;
46
- delete(key: string): Promise<void>;
47
- }
48
- export declare function createSessionStore<T>(kv: SessionKv | undefined, ttlSeconds: number): SessionStore<T>;
49
- //# sourceMappingURL=session-store.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"session-store.d.ts","sourceRoot":"","sources":["../../src/auth/session-store.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AAEH,MAAM,WAAW,SAAS;IACxB,GAAG,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CAAA;IACxC,GAAG,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAA;IAC9C,MAAM,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAA;CACnC;AAED,gGAAgG;AAChG,MAAM,WAAW,eAAe;IAC9B,GAAG,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CAAA;IACxC,GAAG,CAAC,GAAG,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAA;IAC7C,MAAM,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAA;CACnC;AAID;;;;;;;;;;;;;GAaG;AACH,wBAAgB,wBAAwB,CAAC,OAAO,EAAE,eAAe,EAAE,SAAS,SAA2B,GAAG,SAAS,CAclH;AAED,MAAM,WAAW,YAAY,CAAC,CAAC;IAC7B,GAAG,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,CAAC,GAAG,SAAS,CAAC,CAAA;IACxC,GAAG,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC,CAAA;IACzC,MAAM,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAA;CACnC;AAOD,wBAAgB,kBAAkB,CAAC,CAAC,EAAE,EAAE,EAAE,SAAS,GAAG,SAAS,EAAE,UAAU,EAAE,MAAM,GAAG,YAAY,CAAC,CAAC,CAAC,CA+CpG"}
@@ -1,94 +0,0 @@
1
- /**
2
- * Durable, TTL-bounded store for short-lived OAuth handshake state
3
- * (delegated-flow ``pendingSessions`` + issued ``authCodes``).
4
- *
5
- * The delegated OAuth round-trip spans two independent HTTP requests
6
- * (``/authorize`` -> upstream consent -> ``/callback`` -> ``/token``). On a
7
- * serverless/container deploy (CF single-DO + ``sleepAfter``) the container can
8
- * cold-start or be a different instance between those requests, so an
9
- * in-process ``Map`` loses the state and ``/callback`` returns "Invalid state".
10
- * Backing the state with a shared durable KV survives the restart.
11
- *
12
- * A ``SessionKv`` (get/put/delete of opaque strings) is injected in deploy mode
13
- * (e.g. the container's ``kv.internal`` backend); when omitted the store falls
14
- * back to a process-local ``Map`` (stdio / single-process, where one request
15
- * context handles the whole flow).
16
- */
17
- const DEFAULT_OAUTH_KEY_PREFIX = 'delegated-oauth:';
18
- /**
19
- * Adapt a Buffer-based blob backend (e.g. ``CfKvBackend`` over the container's
20
- * ``kv.internal`` handler) to the string ``SessionKv`` interface. Keys are
21
- * namespaced (default prefix, or a caller-supplied one) so the short-lived
22
- * OAuth handshake state can share a KV with the server's other data
23
- * (credential vaults, etc.) without colliding.
24
- *
25
- * A CF Container's ``kv.internal`` outbound handler commonly allowlists keys
26
- * by app-scoped prefix (e.g. only ``<plugin>/*`` may pass) as a security
27
- * boundary against writing outside the app's own KV namespace. Callers
28
- * deployed behind such a handler MUST pass a prefix matching that allowlist
29
- * (e.g. ``"<plugin>/delegated-oauth:"``) -- the default global prefix will be
30
- * rejected (403) by a namespace-restricted handler.
31
- */
32
- export function wrapKvBackendAsSessionKv(backend, keyPrefix = DEFAULT_OAUTH_KEY_PREFIX) {
33
- const nsKey = (key) => `${keyPrefix}${key}`;
34
- return {
35
- async get(key) {
36
- const blob = await backend.get(nsKey(key));
37
- return blob === null ? null : blob.toString('utf8');
38
- },
39
- async put(key, value) {
40
- await backend.put(nsKey(key), Buffer.from(value, 'utf8'));
41
- },
42
- async delete(key) {
43
- await backend.delete(nsKey(key));
44
- }
45
- };
46
- }
47
- export function createSessionStore(kv, ttlSeconds) {
48
- const ttlMs = ttlSeconds * 1000;
49
- // In-memory fallback (stdio / single-process): a Map behind the same async
50
- // SessionKv shape so the rest of the logic is backend-agnostic.
51
- const backend = kv ??
52
- (() => {
53
- const mem = new Map();
54
- return {
55
- async get(key) {
56
- return mem.get(key) ?? null;
57
- },
58
- async put(key, value) {
59
- mem.set(key, value);
60
- },
61
- async delete(key) {
62
- mem.delete(key);
63
- }
64
- };
65
- })();
66
- return {
67
- async get(key) {
68
- const raw = await backend.get(key);
69
- if (raw === null)
70
- return undefined;
71
- let env;
72
- try {
73
- env = JSON.parse(raw);
74
- }
75
- catch {
76
- return undefined;
77
- }
78
- if (Date.now() - env.createdAt >= ttlMs) {
79
- // Lazy expiry: drop stale entries on read.
80
- await backend.delete(key);
81
- return undefined;
82
- }
83
- return env.value;
84
- },
85
- async set(key, value) {
86
- const env = { value, createdAt: Date.now() };
87
- await backend.put(key, JSON.stringify(env));
88
- },
89
- async delete(key) {
90
- await backend.delete(key);
91
- }
92
- };
93
- }
94
- //# sourceMappingURL=session-store.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"session-store.js","sourceRoot":"","sources":["../../src/auth/session-store.ts"],"names":[],"mappings":"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"}
@@ -1,27 +0,0 @@
1
- /**
2
- * Derive a stable, opaque subject id from a workspace username.
3
- *
4
- * TypeScript port of core-py's ``stable_sub.py``. Output is byte-identical for
5
- * ASCII usernames, locked by the shared ``crypto-vectors.json`` fixture.
6
- */
7
- /**
8
- * Derive a stable, opaque subject id from a workspace username.
9
- *
10
- * Same ``(serverName, normalized username)`` -> same ``sub``, so a returning
11
- * user lands on the same per-``sub`` credential bucket instead of the random
12
- * subject minted per ``/authorize``. The output shape (22 chars, urlsafe
13
- * base64, no padding) matches ``randomBytes(16).toString('base64url')`` so
14
- * downstream code cannot tell a stable sub from a random one.
15
- *
16
- * Normalization is ``trim().toLowerCase()``. Python's ``str.casefold()`` maps
17
- * a few non-ASCII characters differently (``'ß'.casefold() == 'ss'``), so
18
- * cross-language parity is guaranteed for ASCII usernames only; the divergence
19
- * is asserted by a test in both languages.
20
- *
21
- * SECURITY: with a SHARED relay password the username is a PARTITION key, NOT a
22
- * secret -- anyone who knows the password can submit any username and reach that
23
- * bucket. Intentional for a trusted group; untrusted multi-tenant needs per-user
24
- * secrets or delegated OAuth.
25
- */
26
- export declare function deriveStableSub(username: string, serverName: string, credentialSecret: string | null | undefined): string;
27
- //# sourceMappingURL=stable-sub.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"stable-sub.d.ts","sourceRoot":"","sources":["../../src/auth/stable-sub.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAQH;;;;;;;;;;;;;;;;;;GAkBG;AACH,wBAAgB,eAAe,CAC7B,QAAQ,EAAE,MAAM,EAChB,UAAU,EAAE,MAAM,EAClB,gBAAgB,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS,GAC1C,MAAM,CAMR"}