@noodleseed/one 0.96.3 → 0.97.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 (106) hide show
  1. package/README.md +2 -1
  2. package/dist/commands/author-loop.d.ts.map +1 -1
  3. package/dist/commands/author-loop.js +7 -1
  4. package/dist/commands/author-loop.js.map +1 -1
  5. package/dist/commands/catalog-data-local-authoring.d.ts.map +1 -1
  6. package/dist/commands/catalog-data-local-authoring.js +2 -2
  7. package/dist/commands/catalog-data-local-authoring.js.map +1 -1
  8. package/dist/deploy.d.ts +5 -0
  9. package/dist/deploy.d.ts.map +1 -1
  10. package/dist/deploy.js +1 -1
  11. package/dist/deploy.js.map +1 -1
  12. package/dist/dev.d.ts +13 -0
  13. package/dist/dev.d.ts.map +1 -1
  14. package/dist/dev.js +116 -7
  15. package/dist/dev.js.map +1 -1
  16. package/dist/devtools-auth-routes.d.ts +4 -0
  17. package/dist/devtools-auth-routes.d.ts.map +1 -0
  18. package/dist/devtools-auth-routes.js +205 -0
  19. package/dist/devtools-auth-routes.js.map +1 -0
  20. package/dist/devtools-auth-session-helpers.d.ts +6 -0
  21. package/dist/devtools-auth-session-helpers.d.ts.map +1 -0
  22. package/dist/devtools-auth-session-helpers.js +19 -0
  23. package/dist/devtools-auth-session-helpers.js.map +1 -0
  24. package/dist/devtools-auth-session.d.ts +35 -0
  25. package/dist/devtools-auth-session.d.ts.map +1 -0
  26. package/dist/devtools-auth-session.js +433 -0
  27. package/dist/devtools-auth-session.js.map +1 -0
  28. package/dist/devtools-auth-types.d.ts +51 -0
  29. package/dist/devtools-auth-types.d.ts.map +1 -0
  30. package/dist/devtools-auth-types.js +16 -0
  31. package/dist/devtools-auth-types.js.map +1 -0
  32. package/dist/devtools-auth-ui.d.ts +6 -0
  33. package/dist/devtools-auth-ui.d.ts.map +1 -0
  34. package/dist/devtools-auth-ui.js +127 -0
  35. package/dist/devtools-auth-ui.js.map +1 -0
  36. package/dist/devtools-delegated-credential.d.ts +10 -0
  37. package/dist/devtools-delegated-credential.d.ts.map +1 -0
  38. package/dist/devtools-delegated-credential.js +32 -0
  39. package/dist/devtools-delegated-credential.js.map +1 -0
  40. package/dist/devtools-firebase-auth.d.ts +55 -0
  41. package/dist/devtools-firebase-auth.d.ts.map +1 -0
  42. package/dist/devtools-firebase-auth.js +237 -0
  43. package/dist/devtools-firebase-auth.js.map +1 -0
  44. package/dist/devtools-harness.d.ts +5 -0
  45. package/dist/devtools-harness.d.ts.map +1 -1
  46. package/dist/devtools-harness.js +60 -21
  47. package/dist/devtools-harness.js.map +1 -1
  48. package/dist/devtools-microsoft-auth.d.ts +42 -0
  49. package/dist/devtools-microsoft-auth.d.ts.map +1 -0
  50. package/dist/devtools-microsoft-auth.js +362 -0
  51. package/dist/devtools-microsoft-auth.js.map +1 -0
  52. package/dist/devtools-microsoft-errors.d.ts +7 -0
  53. package/dist/devtools-microsoft-errors.d.ts.map +1 -0
  54. package/dist/devtools-microsoft-errors.js +60 -0
  55. package/dist/devtools-microsoft-errors.js.map +1 -0
  56. package/dist/devtools-preview.d.ts +15 -13
  57. package/dist/devtools-preview.d.ts.map +1 -1
  58. package/dist/devtools-preview.js +101 -179
  59. package/dist/devtools-preview.js.map +1 -1
  60. package/dist/devtools-rpc-forwarder.d.ts +37 -0
  61. package/dist/devtools-rpc-forwarder.d.ts.map +1 -0
  62. package/dist/devtools-rpc-forwarder.js +251 -0
  63. package/dist/devtools-rpc-forwarder.js.map +1 -0
  64. package/dist/devtools-tool-safety.d.ts +20 -0
  65. package/dist/devtools-tool-safety.d.ts.map +1 -0
  66. package/dist/devtools-tool-safety.js +43 -0
  67. package/dist/devtools-tool-safety.js.map +1 -0
  68. package/dist/preview-session.d.ts.map +1 -1
  69. package/dist/preview-session.js +5 -0
  70. package/dist/preview-session.js.map +1 -1
  71. package/node_modules/@noodle-borg/agent-kit/package.json +1 -1
  72. package/node_modules/@noodle-borg/auth/dist/index.d.ts +1 -0
  73. package/node_modules/@noodle-borg/auth/dist/index.d.ts.map +1 -1
  74. package/node_modules/@noodle-borg/auth/dist/index.js +1 -0
  75. package/node_modules/@noodle-borg/auth/dist/index.js.map +1 -1
  76. package/node_modules/@noodle-borg/auth/dist/mcp-oauth-client.d.ts +56 -0
  77. package/node_modules/@noodle-borg/auth/dist/mcp-oauth-client.d.ts.map +1 -0
  78. package/node_modules/@noodle-borg/auth/dist/mcp-oauth-client.js +367 -0
  79. package/node_modules/@noodle-borg/auth/dist/mcp-oauth-client.js.map +1 -0
  80. package/node_modules/@noodle-borg/service/dist/customer-verifier-boundaries.d.ts +13 -0
  81. package/node_modules/@noodle-borg/service/dist/customer-verifier-boundaries.d.ts.map +1 -0
  82. package/node_modules/@noodle-borg/service/dist/customer-verifier-boundaries.js +71 -0
  83. package/node_modules/@noodle-borg/service/dist/customer-verifier-boundaries.js.map +1 -0
  84. package/node_modules/@noodle-borg/service/dist/customer-verifier.d.ts +1 -1
  85. package/node_modules/@noodle-borg/service/dist/customer-verifier.d.ts.map +1 -1
  86. package/node_modules/@noodle-borg/service/dist/customer-verifier.js +43 -31
  87. package/node_modules/@noodle-borg/service/dist/customer-verifier.js.map +1 -1
  88. package/node_modules/@noodle-borg/service/dist/index.d.ts +3 -1
  89. package/node_modules/@noodle-borg/service/dist/index.d.ts.map +1 -1
  90. package/node_modules/@noodle-borg/service/dist/index.js +1 -0
  91. package/node_modules/@noodle-borg/service/dist/index.js.map +1 -1
  92. package/node_modules/@noodle-borg/service/dist/local-devtools-delegated-credentials.d.ts +20 -0
  93. package/node_modules/@noodle-borg/service/dist/local-devtools-delegated-credentials.d.ts.map +1 -0
  94. package/node_modules/@noodle-borg/service/dist/local-devtools-delegated-credentials.js +107 -0
  95. package/node_modules/@noodle-borg/service/dist/local-devtools-delegated-credentials.js.map +1 -0
  96. package/node_modules/@noodle-borg/service/dist/oauth/microsoft.d.ts +5 -0
  97. package/node_modules/@noodle-borg/service/dist/oauth/microsoft.d.ts.map +1 -1
  98. package/node_modules/@noodle-borg/service/dist/oauth/microsoft.js +48 -28
  99. package/node_modules/@noodle-borg/service/dist/oauth/microsoft.js.map +1 -1
  100. package/node_modules/@noodle-borg/service/dist/serve-options.d.ts +13 -0
  101. package/node_modules/@noodle-borg/service/dist/serve-options.d.ts.map +1 -1
  102. package/node_modules/@noodle-borg/service/dist/serve.d.ts +3 -0
  103. package/node_modules/@noodle-borg/service/dist/serve.d.ts.map +1 -1
  104. package/node_modules/@noodle-borg/service/dist/serve.js +49 -18
  105. package/node_modules/@noodle-borg/service/dist/serve.js.map +1 -1
  106. package/package.json +1 -1
@@ -0,0 +1,251 @@
1
+ import { CLIENT_CAPABILITIES_META_KEY, CLIENT_INFO_META_KEY, PROTOCOL_VERSION_META_KEY, } from '@modelcontextprotocol/client';
2
+ import { DevtoolsAuthRequiredError } from './devtools-auth-session.js';
3
+ const MODERN_PROTOCOL_VERSION = '2026-07-28';
4
+ const LEGACY_PROTOCOL_VERSION = '2025-11-25';
5
+ const DISCOVERY_TIMEOUT_MS = 5_000;
6
+ /** Build the credential-owning MCP forwarder used by every Devtools host surface. */
7
+ export function createDevtoolsRpcForwarder(options) {
8
+ const protocolCache = new Map();
9
+ const explicitProtocol = options.protocolVersion === undefined
10
+ ? undefined
11
+ : {
12
+ era: options.protocolVersion === MODERN_PROTOCOL_VERSION
13
+ ? 'modern'
14
+ : 'legacy',
15
+ version: options.protocolVersion,
16
+ };
17
+ const resolveProtocol = (bearer) => explicitProtocol === undefined
18
+ ? automaticProtocol(protocolCache, options.mcpUrl, bearer)
19
+ : Promise.resolve(explicitProtocol);
20
+ return async (body) => {
21
+ const start = Date.now();
22
+ const name = toolName(body);
23
+ try {
24
+ const authSession = options.authSession();
25
+ let accessToken;
26
+ if (authSession !== undefined) {
27
+ try {
28
+ accessToken = await authSession.accessToken();
29
+ }
30
+ catch (error) {
31
+ if (error instanceof DevtoolsAuthRequiredError) {
32
+ return authRequiredResult(body, start, name, error.message, options.record);
33
+ }
34
+ throw error;
35
+ }
36
+ }
37
+ const protocol = await resolveProtocol(accessToken);
38
+ const send = (bearer) => {
39
+ const headers = new Headers({
40
+ 'content-type': 'application/json',
41
+ accept: 'application/json, text/event-stream',
42
+ 'mcp-protocol-version': protocol.version,
43
+ });
44
+ const requestBody = protocol.era === 'modern' ? modernRequest(body, protocol.version) : body;
45
+ if (bearer !== undefined)
46
+ headers.set('authorization', `Bearer ${bearer}`);
47
+ if (protocol.era === 'modern')
48
+ setModernRoutingHeaders(headers, body, name);
49
+ return fetch(options.mcpUrl, {
50
+ method: 'POST',
51
+ headers,
52
+ body: JSON.stringify({ jsonrpc: '2.0', ...requestBody }),
53
+ });
54
+ };
55
+ let response = await send(accessToken);
56
+ if (response.status === 401 && authSession !== undefined) {
57
+ await response.body?.cancel();
58
+ try {
59
+ accessToken = await authSession.accessToken({ forceRefresh: true });
60
+ response = await send(accessToken);
61
+ if (response.status === 401)
62
+ authSession.clear();
63
+ }
64
+ catch (error) {
65
+ if (error instanceof DevtoolsAuthRequiredError) {
66
+ return authRequiredResult(body, start, name, error.message, options.record);
67
+ }
68
+ throw error;
69
+ }
70
+ }
71
+ authSession?.noteBearerChallenge(response.status, response.headers.get('www-authenticate'));
72
+ const json = parseRpcBody(await response.text());
73
+ const status = json?.error ? 'error' : 'ok';
74
+ options.record({
75
+ time: start,
76
+ method: body.method,
77
+ ...(name !== undefined ? { name } : {}),
78
+ status,
79
+ durationMs: Date.now() - start,
80
+ summary: json?.error?.message ?? summarize(body.method, json?.result),
81
+ ...(body.params !== undefined ? { request: capForLog(body.params) } : {}),
82
+ ...(json !== undefined ? { response: capForLog(json.error ?? json.result) } : {}),
83
+ });
84
+ return { httpStatus: response.status, json };
85
+ }
86
+ catch (error) {
87
+ options.record({
88
+ time: start,
89
+ method: body.method,
90
+ ...(name !== undefined ? { name } : {}),
91
+ status: 'error',
92
+ durationMs: Date.now() - start,
93
+ summary: error instanceof Error ? error.message : String(error),
94
+ ...(body.params !== undefined ? { request: capForLog(body.params) } : {}),
95
+ });
96
+ throw error;
97
+ }
98
+ };
99
+ }
100
+ function automaticProtocol(cache, endpoint, bearer) {
101
+ const origin = new URL(endpoint).origin;
102
+ const key = `${origin}\u0000${bearer === undefined ? 'anonymous' : 'authenticated'}`;
103
+ let pending = cache.get(key);
104
+ if (pending === undefined) {
105
+ pending = discoverProtocol(endpoint, bearer);
106
+ cache.set(key, pending);
107
+ void pending.then((protocol) => {
108
+ if (protocol.retryable === true && cache.get(key) === pending)
109
+ cache.delete(key);
110
+ }, () => {
111
+ if (cache.get(key) === pending)
112
+ cache.delete(key);
113
+ });
114
+ }
115
+ return pending;
116
+ }
117
+ async function discoverProtocol(endpoint, bearer) {
118
+ const method = 'server/discover';
119
+ const headers = new Headers({
120
+ accept: 'application/json, text/event-stream',
121
+ 'content-type': 'application/json',
122
+ 'mcp-method': method,
123
+ 'mcp-protocol-version': MODERN_PROTOCOL_VERSION,
124
+ });
125
+ if (bearer !== undefined)
126
+ headers.set('authorization', `Bearer ${bearer}`);
127
+ try {
128
+ const response = await fetch(endpoint, {
129
+ method: 'POST',
130
+ headers,
131
+ signal: AbortSignal.timeout(DISCOVERY_TIMEOUT_MS),
132
+ body: JSON.stringify(modernRequest({ jsonrpc: '2.0', id: 'noodle-devtools-discover', method, params: {} })),
133
+ });
134
+ const json = parseRpcBody(await response.text());
135
+ const versions = json?.result?.supportedVersions;
136
+ if (response.ok && Array.isArray(versions)) {
137
+ return versions.includes(MODERN_PROTOCOL_VERSION)
138
+ ? { era: 'modern', version: MODERN_PROTOCOL_VERSION }
139
+ : { era: 'legacy', version: LEGACY_PROTOCOL_VERSION };
140
+ }
141
+ if (response.status === 401 || response.status === 403) {
142
+ return { era: 'legacy', version: LEGACY_PROTOCOL_VERSION, retryable: true };
143
+ }
144
+ if (response.status === 404 || json?.error?.code === -32601) {
145
+ return { era: 'legacy', version: LEGACY_PROTOCOL_VERSION };
146
+ }
147
+ return { era: 'legacy', version: LEGACY_PROTOCOL_VERSION, retryable: true };
148
+ }
149
+ catch {
150
+ return { era: 'legacy', version: LEGACY_PROTOCOL_VERSION, retryable: true };
151
+ }
152
+ }
153
+ function setModernRoutingHeaders(headers, body, name) {
154
+ headers.set('mcp-method', body.method);
155
+ if (name !== undefined)
156
+ headers.set('mcp-name', name);
157
+ else if (body.method === 'resources/read' && typeof body.params?.uri === 'string') {
158
+ headers.set('mcp-name', body.params.uri);
159
+ }
160
+ else if (body.method === 'prompts/get' && typeof body.params?.name === 'string') {
161
+ headers.set('mcp-name', body.params.name);
162
+ }
163
+ }
164
+ function modernRequest(body, version = MODERN_PROTOCOL_VERSION) {
165
+ const existingMeta = body.params?._meta !== null &&
166
+ typeof body.params?._meta === 'object' &&
167
+ !Array.isArray(body.params._meta)
168
+ ? body.params._meta
169
+ : {};
170
+ return {
171
+ ...body,
172
+ params: {
173
+ ...body.params,
174
+ _meta: {
175
+ ...existingMeta,
176
+ [PROTOCOL_VERSION_META_KEY]: version,
177
+ [CLIENT_INFO_META_KEY]: { name: 'noodle-devtools', version: '1.0.0' },
178
+ [CLIENT_CAPABILITIES_META_KEY]: {},
179
+ },
180
+ },
181
+ };
182
+ }
183
+ function authRequiredResult(body, start, name, message, record) {
184
+ const json = {
185
+ error: { code: -32001, message },
186
+ };
187
+ record({
188
+ time: start,
189
+ method: body.method,
190
+ ...(name !== undefined ? { name } : {}),
191
+ status: 'error',
192
+ durationMs: Date.now() - start,
193
+ summary: message,
194
+ ...(body.params !== undefined ? { request: capForLog(body.params) } : {}),
195
+ response: json.error,
196
+ });
197
+ return { httpStatus: 401, json };
198
+ }
199
+ /** One JSON-RPC value from a dev-endpoint response body (JSON, or an SSE `data:` fallback). */
200
+ function parseRpcBody(text) {
201
+ try {
202
+ return JSON.parse(text);
203
+ }
204
+ catch {
205
+ for (const line of text.split(/\r?\n/u)) {
206
+ const trimmed = line.trim();
207
+ if (!trimmed.startsWith('data:'))
208
+ continue;
209
+ try {
210
+ return JSON.parse(trimmed.slice(5).trim());
211
+ }
212
+ catch {
213
+ // Keep scanning.
214
+ }
215
+ }
216
+ return undefined;
217
+ }
218
+ }
219
+ function capForLog(value, max = 20_000) {
220
+ if (value === undefined)
221
+ return undefined;
222
+ try {
223
+ const serialized = JSON.stringify(value);
224
+ if (serialized.length > max) {
225
+ return `${serialized.slice(0, max)}… (truncated ${serialized.length - max} chars)`;
226
+ }
227
+ return value;
228
+ }
229
+ catch {
230
+ return '[unserializable]';
231
+ }
232
+ }
233
+ function summarize(method, result) {
234
+ if (result === undefined)
235
+ return method;
236
+ if (method === 'tools/list') {
237
+ return `${Array.isArray(result.tools) ? result.tools.length : 0} tool(s)`;
238
+ }
239
+ if (method === 'tools/call')
240
+ return result.isError ? 'tool error' : 'ok';
241
+ if (method === 'resources/read') {
242
+ return `${Array.isArray(result.contents) ? result.contents.length : 0} content block(s)`;
243
+ }
244
+ return 'ok';
245
+ }
246
+ function toolName(body) {
247
+ return body.method === 'tools/call' && typeof body.params?.name === 'string'
248
+ ? body.params.name
249
+ : undefined;
250
+ }
251
+ //# sourceMappingURL=devtools-rpc-forwarder.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"devtools-rpc-forwarder.js","sourceRoot":"","sources":["../src/devtools-rpc-forwarder.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,20 @@
1
+ export interface DevtoolsToolLike {
2
+ readonly annotations?: {
3
+ readonly readOnlyHint?: boolean;
4
+ readonly destructiveHint?: boolean;
5
+ readonly openWorldHint?: boolean;
6
+ };
7
+ }
8
+ export interface WidgetToolCallMessage {
9
+ readonly requestId: string;
10
+ readonly name: string;
11
+ readonly arguments: Record<string, unknown>;
12
+ }
13
+ /**
14
+ * Only tools that explicitly opt into every safety hint may be exposed to the playground's automatic
15
+ * model loop. Missing hints are intentionally unsafe-by-default.
16
+ */
17
+ export declare function isAutoSafeTool(tool: DevtoolsToolLike): boolean;
18
+ /** Validate the narrow postMessage contract accepted from an untrusted widget frame. */
19
+ export declare function parseWidgetToolCallMessage(value: unknown): WidgetToolCallMessage | undefined;
20
+ //# sourceMappingURL=devtools-tool-safety.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"devtools-tool-safety.d.ts","sourceRoot":"","sources":["../src/devtools-tool-safety.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,gBAAgB;IAC/B,QAAQ,CAAC,WAAW,CAAC,EAAE;QACrB,QAAQ,CAAC,YAAY,CAAC,EAAE,OAAO,CAAC;QAChC,QAAQ,CAAC,eAAe,CAAC,EAAE,OAAO,CAAC;QACnC,QAAQ,CAAC,aAAa,CAAC,EAAE,OAAO,CAAC;KAClC,CAAC;CACH;AAED,MAAM,WAAW,qBAAqB;IACpC,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAC3B,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CAC7C;AAED;;;GAGG;AACH,wBAAgB,cAAc,CAAC,IAAI,EAAE,gBAAgB,GAAG,OAAO,CAO9D;AAED,wFAAwF;AACxF,wBAAgB,0BAA0B,CAAC,KAAK,EAAE,OAAO,GAAG,qBAAqB,GAAG,SAAS,CA6B5F"}
@@ -0,0 +1,43 @@
1
+ /**
2
+ * Only tools that explicitly opt into every safety hint may be exposed to the playground's automatic
3
+ * model loop. Missing hints are intentionally unsafe-by-default.
4
+ */
5
+ export function isAutoSafeTool(tool) {
6
+ const annotations = tool.annotations;
7
+ return (annotations?.readOnlyHint === true &&
8
+ annotations.destructiveHint === false &&
9
+ annotations.openWorldHint === false);
10
+ }
11
+ /** Validate the narrow postMessage contract accepted from an untrusted widget frame. */
12
+ export function parseWidgetToolCallMessage(value) {
13
+ const isRecord = (candidate) => {
14
+ if (candidate === null || typeof candidate !== 'object' || Array.isArray(candidate))
15
+ return false;
16
+ const prototype = Object.getPrototypeOf(candidate);
17
+ return prototype === Object.prototype || prototype === null;
18
+ };
19
+ if (!isRecord(value) || value.type !== 'noodle:tool-call')
20
+ return undefined;
21
+ if (typeof value.requestId !== 'string' ||
22
+ value.requestId.length < 1 ||
23
+ value.requestId.length > 128 ||
24
+ typeof value.name !== 'string' ||
25
+ value.name.length < 1 ||
26
+ value.name.length > 256 ||
27
+ !isRecord(value.arguments)) {
28
+ return undefined;
29
+ }
30
+ try {
31
+ if (JSON.stringify(value.arguments).length > 65_536)
32
+ return undefined;
33
+ }
34
+ catch {
35
+ return undefined;
36
+ }
37
+ return {
38
+ requestId: value.requestId,
39
+ name: value.name,
40
+ arguments: value.arguments,
41
+ };
42
+ }
43
+ //# sourceMappingURL=devtools-tool-safety.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"devtools-tool-safety.js","sourceRoot":"","sources":["../src/devtools-tool-safety.ts"],"names":[],"mappings":"AAcA;;;GAGG;AACH,MAAM,UAAU,cAAc,CAAC,IAAsB;IACnD,MAAM,WAAW,GAAG,IAAI,CAAC,WAAW,CAAC;IACrC,OAAO,CACL,WAAW,EAAE,YAAY,KAAK,IAAI;QAClC,WAAW,CAAC,eAAe,KAAK,KAAK;QACrC,WAAW,CAAC,aAAa,KAAK,KAAK,CACpC,CAAC;AACJ,CAAC;AAED,wFAAwF;AACxF,MAAM,UAAU,0BAA0B,CAAC,KAAc;IACvD,MAAM,QAAQ,GAAG,CAAC,SAAkB,EAAwC,EAAE;QAC5E,IAAI,SAAS,KAAK,IAAI,IAAI,OAAO,SAAS,KAAK,QAAQ,IAAI,KAAK,CAAC,OAAO,CAAC,SAAS,CAAC;YACjF,OAAO,KAAK,CAAC;QACf,MAAM,SAAS,GAAG,MAAM,CAAC,cAAc,CAAC,SAAS,CAAC,CAAC;QACnD,OAAO,SAAS,KAAK,MAAM,CAAC,SAAS,IAAI,SAAS,KAAK,IAAI,CAAC;IAC9D,CAAC,CAAC;IACF,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,IAAI,KAAK,CAAC,IAAI,KAAK,kBAAkB;QAAE,OAAO,SAAS,CAAC;IAC5E,IACE,OAAO,KAAK,CAAC,SAAS,KAAK,QAAQ;QACnC,KAAK,CAAC,SAAS,CAAC,MAAM,GAAG,CAAC;QAC1B,KAAK,CAAC,SAAS,CAAC,MAAM,GAAG,GAAG;QAC5B,OAAO,KAAK,CAAC,IAAI,KAAK,QAAQ;QAC9B,KAAK,CAAC,IAAI,CAAC,MAAM,GAAG,CAAC;QACrB,KAAK,CAAC,IAAI,CAAC,MAAM,GAAG,GAAG;QACvB,CAAC,QAAQ,CAAC,KAAK,CAAC,SAAS,CAAC,EAC1B,CAAC;QACD,OAAO,SAAS,CAAC;IACnB,CAAC;IACD,IAAI,CAAC;QACH,IAAI,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC,MAAM,GAAG,MAAM;YAAE,OAAO,SAAS,CAAC;IACxE,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,SAAS,CAAC;IACnB,CAAC;IACD,OAAO;QACL,SAAS,EAAE,KAAK,CAAC,SAAS;QAC1B,IAAI,EAAE,KAAK,CAAC,IAAI;QAChB,SAAS,EAAE,KAAK,CAAC,SAAS;KAC3B,CAAC;AACJ,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"preview-session.d.ts","sourceRoot":"","sources":["../src/preview-session.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,SAAS,EAAS,MAAM,SAAS,CAAC;AAChD,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,UAAU,CAAC;AAE1C,OAAO,EAAE,KAAK,iBAAiB,EAAmB,MAAM,mBAAmB,CAAC;AAC5E,OAAO,EACL,KAAK,aAAa,EAClB,KAAK,aAAa,EAClB,KAAK,YAAY,EAElB,MAAM,uBAAuB,CAAC;AAG/B,KAAK,oBAAoB,GAAG,CAAC,KAAK,EAAE,QAAQ,GAAG,QAAQ,EAAE,QAAQ,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,KAAK,IAAI,CAAC;AACnG,KAAK,mBAAmB,GAAG,CAAC,QAAQ,EAAE,MAAM,EAAE,QAAQ,EAAE,oBAAoB,KAAK,SAAS,CAAC;AAE3F;;;;;GAKG;AAEH,MAAM,WAAW,qBAAqB;IACpC,oGAAoG;IACpG,QAAQ,CAAC,MAAM,EAAE,SAAS,CAAC;IAC3B,4GAA4G;IAC5G,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,KAAK,EAAE,YAAY,CAAC;IAC7B,QAAQ,CAAC,MAAM,EAAE,aAAa,CAAC;IAC/B,QAAQ,CAAC,IAAI,CAAC,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,KAAK,CAAC,EAAE,MAAM,CAAC;IACxB,wEAAwE;IACxE,QAAQ,CAAC,MAAM,CAAC,EAAE;QAChB,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;QAC7B,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;KAC7B,CAAC;IACF,QAAQ,CAAC,GAAG,CAAC,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK,IAAI,CAAC;IACzC,6FAA6F;IAC7F,QAAQ,CAAC,YAAY,CAAC,EAAE,mBAAmB,CAAC;CAC7C;AAED,MAAM,WAAW,cAAc;IAC7B,QAAQ,CAAC,OAAO,EAAE,aAAa,CAAC;IAChC,wGAAwG;IACxG,QAAQ,CAAC,SAAS,EAAE,iBAAiB,CAAC;IACtC,QAAQ,CAAC,QAAQ,EAAE,OAAO,CAAC;IAC3B,yGAAyG;IACzG,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;CACxB;AAED;;;GAGG;AACH,wBAAsB,mBAAmB,CAAC,IAAI,EAAE,qBAAqB,GAAG,OAAO,CAAC,cAAc,CAAC,CAsF9F;AAQD;;;GAGG;AACH,wBAAgB,kBAAkB,CAChC,OAAO,EAAE,cAAc,EACvB,IAAI,EAAE;IACJ,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,MAAM,CAAC;IACf,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,MAAM,CAAC;IACf,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,QAAQ,EAAE,MAAM,CAAC;CAClB,GACA,MAAM,EAAE,CAsDV"}
1
+ {"version":3,"file":"preview-session.d.ts","sourceRoot":"","sources":["../src/preview-session.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,SAAS,EAAS,MAAM,SAAS,CAAC;AAChD,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,UAAU,CAAC;AAE1C,OAAO,EAAE,KAAK,iBAAiB,EAAmB,MAAM,mBAAmB,CAAC;AAC5E,OAAO,EACL,KAAK,aAAa,EAClB,KAAK,aAAa,EAClB,KAAK,YAAY,EAElB,MAAM,uBAAuB,CAAC;AAG/B,KAAK,oBAAoB,GAAG,CAAC,KAAK,EAAE,QAAQ,GAAG,QAAQ,EAAE,QAAQ,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,KAAK,IAAI,CAAC;AACnG,KAAK,mBAAmB,GAAG,CAAC,QAAQ,EAAE,MAAM,EAAE,QAAQ,EAAE,oBAAoB,KAAK,SAAS,CAAC;AAE3F;;;;;GAKG;AAEH,MAAM,WAAW,qBAAqB;IACpC,oGAAoG;IACpG,QAAQ,CAAC,MAAM,EAAE,SAAS,CAAC;IAC3B,4GAA4G;IAC5G,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,KAAK,EAAE,YAAY,CAAC;IAC7B,QAAQ,CAAC,MAAM,EAAE,aAAa,CAAC;IAC/B,QAAQ,CAAC,IAAI,CAAC,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,KAAK,CAAC,EAAE,MAAM,CAAC;IACxB,wEAAwE;IACxE,QAAQ,CAAC,MAAM,CAAC,EAAE;QAChB,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;QAC7B,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;KAC7B,CAAC;IACF,QAAQ,CAAC,GAAG,CAAC,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK,IAAI,CAAC;IACzC,6FAA6F;IAC7F,QAAQ,CAAC,YAAY,CAAC,EAAE,mBAAmB,CAAC;CAC7C;AAED,MAAM,WAAW,cAAc;IAC7B,QAAQ,CAAC,OAAO,EAAE,aAAa,CAAC;IAChC,wGAAwG;IACxG,QAAQ,CAAC,SAAS,EAAE,iBAAiB,CAAC;IACtC,QAAQ,CAAC,QAAQ,EAAE,OAAO,CAAC;IAC3B,yGAAyG;IACzG,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;CACxB;AAED;;;GAGG;AACH,wBAAsB,mBAAmB,CAAC,IAAI,EAAE,qBAAqB,GAAG,OAAO,CAAC,cAAc,CAAC,CA2F9F;AAQD;;;GAGG;AACH,wBAAgB,kBAAkB,CAChC,OAAO,EAAE,cAAc,EACvB,IAAI,EAAE;IACJ,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,MAAM,CAAC;IACf,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,MAAM,CAAC;IACf,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,QAAQ,EAAE,MAAM,CAAC;CAClB,GACA,MAAM,EAAE,CAsDV"}
@@ -11,6 +11,8 @@ export async function startPreviewSession(opts) {
11
11
  const log = opts.log ?? ((message) => console.log(message));
12
12
  // OPENAI_* playground credentials come from a git-ignored .env.local (dev tooling, not an app secret).
13
13
  const loadedEnv = loadDevtoolsEnv(process.cwd());
14
+ const customerAuth = opts.handle.customerAuth();
15
+ const delegatedCredentialSink = opts.handle.delegatedCredentialSink();
14
16
  const preview = await startPreview({
15
17
  mcpUrl: opts.handle.url,
16
18
  theme: opts.theme,
@@ -18,6 +20,8 @@ export async function startPreviewSession(opts) {
18
20
  ...(opts.port !== undefined ? { port: opts.port } : {}),
19
21
  ...(opts.model !== undefined ? { openaiModel: opts.model } : {}),
20
22
  ...(opts.design !== undefined ? { design: opts.design } : {}),
23
+ ...(customerAuth !== undefined ? { customerAuth } : {}),
24
+ ...(delegatedCredentialSink === undefined ? {} : { delegatedCredentialSink }),
21
25
  });
22
26
  // Watch the whole source tree, recompile/re-bundle via dev.reload(), then push a browser reload so the
23
27
  // iframe + tool list refresh. Debounced (fs.watch fires multiple events per save); best-effort.
@@ -40,6 +44,7 @@ export async function startPreviewSession(opts) {
40
44
  .then((r) => {
41
45
  if (r.ok) {
42
46
  log('↻ reloaded');
47
+ preview.updateCustomerAuth(opts.handle.customerAuth());
43
48
  preview.signalReload();
44
49
  }
45
50
  else {
@@ -1 +1 @@
1
- {"version":3,"file":"preview-session.js","sourceRoot":"","sources":["../src/preview-session.ts"],"names":[],"mappings":"AAAA,OAAO,EAAkB,KAAK,EAAE,MAAM,SAAS,CAAC;AAEhD,OAAO,EAAE,mBAAmB,EAAE,MAAM,oBAAoB,CAAC;AACzD,OAAO,EAA0B,eAAe,EAAE,MAAM,mBAAmB,CAAC;AAC5E,OAAO,EAIL,YAAY,GACb,MAAM,uBAAuB,CAAC;AAC/B,OAAO,EAAE,KAAK,EAAE,eAAe,EAAE,eAAe,EAAE,MAAM,EAAE,KAAK,EAAY,MAAM,eAAe,CAAC;AAwCjG;;;GAGG;AACH,MAAM,CAAC,KAAK,UAAU,mBAAmB,CAAC,IAA2B;IACnE,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,IAAI,CAAC,CAAC,OAAe,EAAE,EAAE,CAAC,OAAO,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC;IACpE,uGAAuG;IACvG,MAAM,SAAS,GAAG,eAAe,CAAC,OAAO,CAAC,GAAG,EAAE,CAAC,CAAC;IACjD,MAAM,OAAO,GAAG,MAAM,YAAY,CAAC;QACjC,MAAM,EAAE,IAAI,CAAC,MAAM,CAAC,GAAG;QACvB,KAAK,EAAE,IAAI,CAAC,KAAK;QACjB,MAAM,EAAE,IAAI,CAAC,MAAM;QACnB,GAAG,CAAC,IAAI,CAAC,IAAI,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QACvD,GAAG,CAAC,IAAI,CAAC,KAAK,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,WAAW,EAAE,IAAI,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QAChE,GAAG,CAAC,IAAI,CAAC,MAAM,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,IAAI,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;KAC9D,CAAC,CAAC;IAEH,uGAAuG;IACvG,gGAAgG;IAChG,IAAI,WAAuC,CAAC;IAC5C,IAAI,OAA8B,CAAC;IACnC,kGAAkG;IAClG,0GAA0G;IAC1G,wGAAwG;IACxG,qGAAqG;IACrG,IAAI,SAAS,GAAG,KAAK,CAAC;IACtB,IAAI,aAAa,GAAG,KAAK,CAAC;IAC1B,SAAS,SAAS;QAChB,IAAI,SAAS,EAAE,CAAC;YACd,aAAa,GAAG,IAAI,CAAC;YACrB,OAAO;QACT,CAAC;QACD,SAAS,GAAG,IAAI,CAAC;QACjB,KAAK,IAAI,CAAC,MAAM;aACb,MAAM,EAAE;aACR,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE;YACV,IAAI,CAAC,CAAC,EAAE,EAAE,CAAC;gBACT,GAAG,CAAC,YAAY,CAAC,CAAC;gBAClB,OAAO,CAAC,YAAY,EAAE,CAAC;YACzB,CAAC;iBAAM,CAAC;gBACN,GAAG,CAAC,+CAA+C,CAAC,CAAC;gBACrD,KAAK,MAAM,CAAC,IAAI,CAAC,CAAC,MAAM,IAAI,EAAE;oBAAE,GAAG,CAAC,KAAK,CAAC,CAAC,IAAI,KAAK,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC;YACnE,CAAC;QACH,CAAC,CAAC;aACD,KAAK,CAAC,CAAC,KAAc,EAAE,EAAE;YACxB,GAAG,CAAC,mBAAmB,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;QACnF,CAAC,CAAC;aACD,OAAO,CAAC,GAAG,EAAE;YACZ,SAAS,GAAG,KAAK,CAAC;YAClB,IAAI,aAAa,EAAE,CAAC;gBAClB,aAAa,GAAG,KAAK,CAAC;gBACtB,SAAS,EAAE,CAAC;YACd,CAAC;QACH,CAAC,CAAC,CAAC;IACP,CAAC;IACD,IAAI,CAAC;QACH,MAAM,YAAY,GAChB,IAAI,CAAC,YAAY;YACjB,CAAC,CAAC,QAAgB,EAAE,QAA8B,EAAE,EAAE,CACpD,KAAK,CAAC,QAAQ,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,EAAE,QAAQ,CAAC,CAAC,CAAC;QACpD,OAAO,GAAG,YAAY,CAAC,IAAI,CAAC,QAAQ,EAAE,CAAC,MAAM,EAAE,QAAQ,EAAE,EAAE;YACzD,MAAM,IAAI,GAAG,OAAO,QAAQ,KAAK,QAAQ,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,CAAC;YAC1D,IAAI,IAAI,CAAC,QAAQ,CAAC,cAAc,CAAC,IAAI,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,IAAI,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC;gBAAE,OAAO;YACzF,IAAI,WAAW;gBAAE,YAAY,CAAC,WAAW,CAAC,CAAC;YAC3C,WAAW,GAAG,UAAU,CAAC,SAAS,EAAE,GAAG,CAAC,CAAC;QAC3C,CAAC,CAAC,CAAC;QACH,kGAAkG;QAClG,+EAA+E;QAC/E,OAAO,CAAC,EAAE,CAAC,OAAO,EAAE,CAAC,KAAK,EAAE,EAAE;YAC5B,GAAG,CACD,uCAAuC,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,CAChG,CAAC;YACF,IAAI,WAAW;gBAAE,YAAY,CAAC,WAAW,CAAC,CAAC;YAC3C,OAAO,EAAE,KAAK,EAAE,CAAC;YACjB,OAAO,GAAG,SAAS,CAAC;QACtB,CAAC,CAAC,CAAC;IACL,CAAC;IAAC,MAAM,CAAC;QACP,+EAA+E;IACjF,CAAC;IAED,OAAO;QACL,OAAO;QACP,SAAS;QACT,QAAQ,EAAE,OAAO,KAAK,SAAS;QAC/B,KAAK,EAAE,KAAK,IAAI,EAAE;YAChB,IAAI,WAAW;gBAAE,YAAY,CAAC,WAAW,CAAC,CAAC;YAC3C,OAAO,EAAE,KAAK,EAAE,CAAC;YACjB,MAAM,OAAO,CAAC,KAAK,EAAE,CAAC;QACxB,CAAC;KACF,CAAC;AACJ,CAAC;AAED,sGAAsG;AACtG,MAAM,GAAG,GAAQ,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,CAAC;AACjC,MAAM,GAAG,GAAQ,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,CAAC;AACjC,MAAM,KAAK,GAAQ,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,CAAC;AACnC,MAAM,KAAK,GAAQ,CAAC,EAAE,EAAE,GAAG,EAAE,GAAG,CAAC,CAAC;AAElC;;;GAGG;AACH,MAAM,UAAU,kBAAkB,CAChC,OAAuB,EACvB,IAOC;IAED,MAAM,IAAI,GAAG,eAAe,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;IAC7C,MAAM,KAAK,GAAG,eAAe,EAAE,CAAC;IAChC,MAAM,EAAE,GAAG,CAAC,OAAe,EAAE,KAAa,EAAU,EAAE,CAAC,CAAC,KAAK,KAAK,OAAO,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC;IAC7F,MAAM,CAAC,GAAG,CAAC,GAAQ,EAAE,CAAS,EAAU,EAAE,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,EAAE,IAAI,CAAC,CAAC;IAC/D,MAAM,GAAG,GAAG,CAAC,CAAS,EAAU,EAAE,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC;IACvD,MAAM,iBAAiB,GAAG;QACxB;YACE,KAAK,EAAE,QAAQ;YACf,MAAM,EAAE,gBAAgB;YACxB,KAAK,EAAE,IAAI,CAAC,KAAK,IAAI,OAAO,CAAC,GAAG,CAAC,YAAY,IAAI,mBAAmB,CAAC,MAAM;SAC5E;QACD;YACE,KAAK,EAAE,QAAQ;YACf,MAAM,EAAE,mBAAmB;YAC3B,KAAK,EAAE,OAAO,CAAC,GAAG,CAAC,eAAe,IAAI,mBAAmB,CAAC,SAAS;SACpE;QACD;YACE,KAAK,EAAE,QAAQ;YACf,MAAM,EAAE,gBAAgB;YACxB,KAAK,EAAE,OAAO,CAAC,GAAG,CAAC,YAAY,IAAI,mBAAmB,CAAC,MAAM;SAC9D;KACF,CAAC,IAAI,CAAC,CAAC,QAAQ,EAAE,EAAE,CAAC,OAAO,CAAC,GAAG,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC;IAEnD,MAAM,KAAK,GAAG;QACZ,EAAE;QACF,GAAG,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,GAAG,EAAE,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,iBAAiB,EAAE,iBAAiB,CAAC,CAAC,EAAE;QACzG,KAAK,GAAG,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,OAAO,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE;QACtD,KAAK,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,IAAI,CAAC,MAAM,CAAC,EAAE;QACvC,KAAK,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,SAAS,IAAI,CAAC,KAAK,eAAe,IAAI,CAAC,MAAM,EAAE,CAAC,EAAE;KAC/E,CAAC;IACF,IAAI,iBAAiB,EAAE,CAAC;QACtB,MAAM,GAAG,GAAG,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,QAAQ,CAAC,iBAAiB,CAAC,MAAM,CAAC;YACnE,CAAC,CAAC,WAAW,OAAO,CAAC,SAAS,CAAC,IAAI,EAAE;YACrC,CAAC,CAAC,EAAE,CAAC;QACP,KAAK,CAAC,IAAI,CACR,KAAK,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC,IAAI,CAAC,CAC5C,KAAK,EACL,GAAG,iBAAiB,CAAC,KAAK,YAAY,iBAAiB,CAAC,KAAK,GAAG,GAAG,EAAE,CACtE,EAAE,CACJ,CAAC;IACJ,CAAC;SAAM,CAAC;QACN,KAAK,CAAC,IAAI,CACR,KAAK,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC,IAAI,CAAC,CAC5C,KAAK,EACL,oDAAoD,CACrD,EAAE,CACJ,CAAC;IACJ,CAAC;IACD,IAAI,OAAO,CAAC,QAAQ,EAAE,CAAC;QACrB,KAAK,CAAC,IAAI,CAAC,KAAK,GAAG,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,GAAG,IAAI,CAAC,QAAQ,gCAAgC,CAAC,EAAE,CAAC,CAAC;IAC/F,CAAC;IACD,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IACf,OAAO,KAAK,CAAC;AACf,CAAC"}
1
+ {"version":3,"file":"preview-session.js","sourceRoot":"","sources":["../src/preview-session.ts"],"names":[],"mappings":"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"}
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@noodle-borg/agent-kit",
3
- "version": "0.57.0",
3
+ "version": "0.57.1",
4
4
  "private": true,
5
5
  "license": "Apache-2.0",
6
6
  "type": "module",
@@ -10,6 +10,7 @@
10
10
  export { type AuthorizationClaimMap, canonicalizeAuthorizationClaimValues, MAX_AUTHORIZATION_CLAIM_VALUES, MAX_ROLE_LENGTH, MAX_SCOPE_LENGTH, projectCustomerRoutingClaims, projectMappedAuthorizationClaim, projectNoodleRoles, projectStandardScopes, } from './claims.js';
11
11
  export { type DiscoveredIssuerMetadata, discoverIssuerMetadata, type IssuerMetadataCandidate, type IssuerMetadataKind, issuerMetadataCandidates, } from './discovery.js';
12
12
  export { type AccessTokenClaims, mintAccessToken } from './jwt-issuer.js';
13
+ export { type BearerChallenge, canonicalScopes, McpOAuthClient, type McpOAuthClientOptions, type McpOAuthClientRegistration, type McpOAuthDiscovery, type McpOAuthPendingAuthorization, type McpOAuthTokens, parseBearerChallenge, } from './mcp-oauth-client.js';
13
14
  export { type ProtectedResourceMetadata, protectedResourceMetadata, protectedResourceMetadataUrl, } from './metadata.js';
14
15
  export { createStaticSigningKeyProvider, type SigningKey, type SigningKeyProvider, type StaticSigningKeyOptions, } from './signer.js';
15
16
  export { createJwtVerifier, type JwtVerifierConfig, type TokenVerifier, type VerifiedIdentity, type VerifiedTokenEnvelope, } from './verify.js';
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,EACL,KAAK,qBAAqB,EAC1B,oCAAoC,EACpC,8BAA8B,EAC9B,eAAe,EACf,gBAAgB,EAChB,4BAA4B,EAC5B,+BAA+B,EAC/B,kBAAkB,EAClB,qBAAqB,GACtB,MAAM,aAAa,CAAC;AACrB,OAAO,EACL,KAAK,wBAAwB,EAC7B,sBAAsB,EACtB,KAAK,uBAAuB,EAC5B,KAAK,kBAAkB,EACvB,wBAAwB,GACzB,MAAM,gBAAgB,CAAC;AACxB,OAAO,EAAE,KAAK,iBAAiB,EAAE,eAAe,EAAE,MAAM,iBAAiB,CAAC;AAC1E,OAAO,EACL,KAAK,yBAAyB,EAC9B,yBAAyB,EACzB,4BAA4B,GAC7B,MAAM,eAAe,CAAC;AACvB,OAAO,EACL,8BAA8B,EAC9B,KAAK,UAAU,EACf,KAAK,kBAAkB,EACvB,KAAK,uBAAuB,GAC7B,MAAM,aAAa,CAAC;AACrB,OAAO,EACL,iBAAiB,EACjB,KAAK,iBAAiB,EACtB,KAAK,aAAa,EAClB,KAAK,gBAAgB,EACrB,KAAK,qBAAqB,GAC3B,MAAM,aAAa,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,EACL,KAAK,qBAAqB,EAC1B,oCAAoC,EACpC,8BAA8B,EAC9B,eAAe,EACf,gBAAgB,EAChB,4BAA4B,EAC5B,+BAA+B,EAC/B,kBAAkB,EAClB,qBAAqB,GACtB,MAAM,aAAa,CAAC;AACrB,OAAO,EACL,KAAK,wBAAwB,EAC7B,sBAAsB,EACtB,KAAK,uBAAuB,EAC5B,KAAK,kBAAkB,EACvB,wBAAwB,GACzB,MAAM,gBAAgB,CAAC;AACxB,OAAO,EAAE,KAAK,iBAAiB,EAAE,eAAe,EAAE,MAAM,iBAAiB,CAAC;AAC1E,OAAO,EACL,KAAK,eAAe,EACpB,eAAe,EACf,cAAc,EACd,KAAK,qBAAqB,EAC1B,KAAK,0BAA0B,EAC/B,KAAK,iBAAiB,EACtB,KAAK,4BAA4B,EACjC,KAAK,cAAc,EACnB,oBAAoB,GACrB,MAAM,uBAAuB,CAAC;AAC/B,OAAO,EACL,KAAK,yBAAyB,EAC9B,yBAAyB,EACzB,4BAA4B,GAC7B,MAAM,eAAe,CAAC;AACvB,OAAO,EACL,8BAA8B,EAC9B,KAAK,UAAU,EACf,KAAK,kBAAkB,EACvB,KAAK,uBAAuB,GAC7B,MAAM,aAAa,CAAC;AACrB,OAAO,EACL,iBAAiB,EACjB,KAAK,iBAAiB,EACtB,KAAK,aAAa,EAClB,KAAK,gBAAgB,EACrB,KAAK,qBAAqB,GAC3B,MAAM,aAAa,CAAC"}
@@ -10,6 +10,7 @@
10
10
  export { canonicalizeAuthorizationClaimValues, MAX_AUTHORIZATION_CLAIM_VALUES, MAX_ROLE_LENGTH, MAX_SCOPE_LENGTH, projectCustomerRoutingClaims, projectMappedAuthorizationClaim, projectNoodleRoles, projectStandardScopes, } from './claims.js';
11
11
  export { discoverIssuerMetadata, issuerMetadataCandidates, } from './discovery.js';
12
12
  export { mintAccessToken } from './jwt-issuer.js';
13
+ export { canonicalScopes, McpOAuthClient, parseBearerChallenge, } from './mcp-oauth-client.js';
13
14
  export { protectedResourceMetadata, protectedResourceMetadataUrl, } from './metadata.js';
14
15
  export { createStaticSigningKeyProvider, } from './signer.js';
15
16
  export { createJwtVerifier, } from './verify.js';
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,EAEL,oCAAoC,EACpC,8BAA8B,EAC9B,eAAe,EACf,gBAAgB,EAChB,4BAA4B,EAC5B,+BAA+B,EAC/B,kBAAkB,EAClB,qBAAqB,GACtB,MAAM,aAAa,CAAC;AACrB,OAAO,EAEL,sBAAsB,EAGtB,wBAAwB,GACzB,MAAM,gBAAgB,CAAC;AACxB,OAAO,EAA0B,eAAe,EAAE,MAAM,iBAAiB,CAAC;AAC1E,OAAO,EAEL,yBAAyB,EACzB,4BAA4B,GAC7B,MAAM,eAAe,CAAC;AACvB,OAAO,EACL,8BAA8B,GAI/B,MAAM,aAAa,CAAC;AACrB,OAAO,EACL,iBAAiB,GAKlB,MAAM,aAAa,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,EAEL,oCAAoC,EACpC,8BAA8B,EAC9B,eAAe,EACf,gBAAgB,EAChB,4BAA4B,EAC5B,+BAA+B,EAC/B,kBAAkB,EAClB,qBAAqB,GACtB,MAAM,aAAa,CAAC;AACrB,OAAO,EAEL,sBAAsB,EAGtB,wBAAwB,GACzB,MAAM,gBAAgB,CAAC;AACxB,OAAO,EAA0B,eAAe,EAAE,MAAM,iBAAiB,CAAC;AAC1E,OAAO,EAEL,eAAe,EACf,cAAc,EAMd,oBAAoB,GACrB,MAAM,uBAAuB,CAAC;AAC/B,OAAO,EAEL,yBAAyB,EACzB,4BAA4B,GAC7B,MAAM,eAAe,CAAC;AACvB,OAAO,EACL,8BAA8B,GAI/B,MAAM,aAAa,CAAC;AACrB,OAAO,EACL,iBAAiB,GAKlB,MAAM,aAAa,CAAC"}
@@ -0,0 +1,56 @@
1
+ export interface McpOAuthClientOptions {
2
+ readonly resource: string;
3
+ readonly issuer: string;
4
+ readonly redirectUri: string;
5
+ readonly fetchFn?: typeof fetch;
6
+ readonly clientName?: string;
7
+ /** Test/self-host seam. Production authorization servers must use HTTPS. */
8
+ readonly allowInsecureLocalhost?: boolean;
9
+ }
10
+ export interface McpOAuthDiscovery {
11
+ readonly resource: string;
12
+ readonly issuer: string;
13
+ readonly authorizationEndpoint: string;
14
+ readonly tokenEndpoint: string;
15
+ readonly registrationEndpoint: string;
16
+ readonly scopes: readonly string[];
17
+ readonly authorizationResponseIssuerRequired: boolean;
18
+ }
19
+ export interface McpOAuthClientRegistration {
20
+ readonly clientId: string;
21
+ readonly tokenEndpointAuthMethod: 'none';
22
+ }
23
+ export interface McpOAuthPendingAuthorization {
24
+ readonly authorizationUrl: string;
25
+ readonly state: string;
26
+ readonly codeVerifier: string;
27
+ readonly scopes: readonly string[];
28
+ }
29
+ export interface McpOAuthTokens {
30
+ readonly accessToken: string;
31
+ readonly refreshToken?: string;
32
+ readonly tokenType: 'Bearer';
33
+ readonly expiresAt?: number;
34
+ readonly scope: readonly string[];
35
+ }
36
+ export interface BearerChallenge {
37
+ readonly error?: string;
38
+ readonly scopes: readonly string[];
39
+ }
40
+ /**
41
+ * Express-free MCP OAuth client primitives. The caller owns session storage; this class keeps only immutable
42
+ * resource/client configuration and never persists credentials.
43
+ */
44
+ export declare class McpOAuthClient {
45
+ #private;
46
+ constructor(options: McpOAuthClientOptions);
47
+ discover(): Promise<McpOAuthDiscovery>;
48
+ register(discovery: McpOAuthDiscovery, scopes?: readonly string[]): Promise<McpOAuthClientRegistration>;
49
+ beginAuthorization(discovery: McpOAuthDiscovery, registration: McpOAuthClientRegistration, scopes?: readonly string[]): McpOAuthPendingAuthorization;
50
+ exchangeCallback(discovery: McpOAuthDiscovery, registration: McpOAuthClientRegistration, pending: McpOAuthPendingAuthorization, callbackUrl: string): Promise<McpOAuthTokens>;
51
+ refresh(discovery: McpOAuthDiscovery, registration: McpOAuthClientRegistration, current: McpOAuthTokens): Promise<McpOAuthTokens>;
52
+ }
53
+ /** Parse only the challenge fields needed for reauthorization; ignore realms and metadata URLs. */
54
+ export declare function parseBearerChallenge(header: string | null): BearerChallenge | undefined;
55
+ export declare function canonicalScopes(scopes: readonly string[]): readonly string[];
56
+ //# sourceMappingURL=mcp-oauth-client.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"mcp-oauth-client.d.ts","sourceRoot":"","sources":["../src/mcp-oauth-client.ts"],"names":[],"mappings":"AAIA,MAAM,WAAW,qBAAqB;IACpC,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;IAC7B,QAAQ,CAAC,OAAO,CAAC,EAAE,OAAO,KAAK,CAAC;IAChC,QAAQ,CAAC,UAAU,CAAC,EAAE,MAAM,CAAC;IAC7B,4EAA4E;IAC5E,QAAQ,CAAC,sBAAsB,CAAC,EAAE,OAAO,CAAC;CAC3C;AAED,MAAM,WAAW,iBAAiB;IAChC,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,qBAAqB,EAAE,MAAM,CAAC;IACvC,QAAQ,CAAC,aAAa,EAAE,MAAM,CAAC;IAC/B,QAAQ,CAAC,oBAAoB,EAAE,MAAM,CAAC;IACtC,QAAQ,CAAC,MAAM,EAAE,SAAS,MAAM,EAAE,CAAC;IACnC,QAAQ,CAAC,mCAAmC,EAAE,OAAO,CAAC;CACvD;AAED,MAAM,WAAW,0BAA0B;IACzC,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,uBAAuB,EAAE,MAAM,CAAC;CAC1C;AAED,MAAM,WAAW,4BAA4B;IAC3C,QAAQ,CAAC,gBAAgB,EAAE,MAAM,CAAC;IAClC,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,YAAY,EAAE,MAAM,CAAC;IAC9B,QAAQ,CAAC,MAAM,EAAE,SAAS,MAAM,EAAE,CAAC;CACpC;AAED,MAAM,WAAW,cAAc;IAC7B,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;IAC7B,QAAQ,CAAC,YAAY,CAAC,EAAE,MAAM,CAAC;IAC/B,QAAQ,CAAC,SAAS,EAAE,QAAQ,CAAC;IAC7B,QAAQ,CAAC,SAAS,CAAC,EAAE,MAAM,CAAC;IAC5B,QAAQ,CAAC,KAAK,EAAE,SAAS,MAAM,EAAE,CAAC;CACnC;AAED,MAAM,WAAW,eAAe;IAC9B,QAAQ,CAAC,KAAK,CAAC,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,MAAM,EAAE,SAAS,MAAM,EAAE,CAAC;CACpC;AASD;;;GAGG;AACH,qBAAa,cAAc;;gBAQb,OAAO,EAAE,qBAAqB;IASpC,QAAQ,IAAI,OAAO,CAAC,iBAAiB,CAAC;IA2DtC,QAAQ,CACZ,SAAS,EAAE,iBAAiB,EAC5B,MAAM,GAAE,SAAS,MAAM,EAAqB,GAC3C,OAAO,CAAC,0BAA0B,CAAC;IA8BtC,kBAAkB,CAChB,SAAS,EAAE,iBAAiB,EAC5B,YAAY,EAAE,0BAA0B,EACxC,MAAM,GAAE,SAAS,MAAM,EAAqB,GAC3C,4BAA4B;IA4BzB,gBAAgB,CACpB,SAAS,EAAE,iBAAiB,EAC5B,YAAY,EAAE,0BAA0B,EACxC,OAAO,EAAE,4BAA4B,EACrC,WAAW,EAAE,MAAM,GAClB,OAAO,CAAC,cAAc,CAAC;IAwCpB,OAAO,CACX,SAAS,EAAE,iBAAiB,EAC5B,YAAY,EAAE,0BAA0B,EACxC,OAAO,EAAE,cAAc,GACtB,OAAO,CAAC,cAAc,CAAC;CA+I3B;AAED,mGAAmG;AACnG,wBAAgB,oBAAoB,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI,GAAG,eAAe,GAAG,SAAS,CAevF;AAED,wBAAgB,eAAe,CAAC,MAAM,EAAE,SAAS,MAAM,EAAE,GAAG,SAAS,MAAM,EAAE,CAE5E"}