@axtary/mcp 0.0.1 → 0.2.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.
package/dist/index.js CHANGED
@@ -1,296 +1,8 @@
1
- import { createHash } from "node:crypto";
2
- import { spawn } from "node:child_process";
3
- import { ACTION_SCHEMA_VERSION, NormalizedActionSchema, } from "@axtary/actionpass";
4
- import { z } from "zod";
5
- export const MCP_WRAPPER_SCHEMA_VERSION = "axtary.mcp_wrapper.v0";
6
- export const MCP_TOOL_CALL = "mcp.tool.call";
7
- const JsonValueSchema = z.lazy(() => z.union([
8
- z.string(),
9
- z.number().finite(),
10
- z.boolean(),
11
- z.null(),
12
- z.array(JsonValueSchema),
13
- z.record(z.string(), JsonValueSchema),
14
- ]));
15
- export const McpToolDefinitionInputSchema = z.object({
16
- serverIdentity: z.string().min(1),
17
- serverVersion: z.string().min(1).optional(),
18
- schemaVersion: z.string().min(1),
19
- name: z.string().min(1),
20
- description: z.string().optional(),
21
- inputSchema: z.record(z.string(), JsonValueSchema).default({}),
22
- });
23
- export const McpToolDefinitionRecordSchema = McpToolDefinitionInputSchema.extend({
24
- wrapperSchemaVersion: z.literal(MCP_WRAPPER_SCHEMA_VERSION),
25
- definitionHash: z.string().regex(/^sha256:[a-f0-9]{64}$/),
26
- actionTool: z.literal(MCP_TOOL_CALL),
27
- resource: z.string().min(1),
28
- });
29
- export const McpToolCallSchema = z.object({
30
- toolName: z.string().min(1),
31
- arguments: z.record(z.string(), JsonValueSchema).default({}),
32
- });
33
- const McpJsonRpcErrorSchema = z.object({
34
- code: z.number().int(),
35
- message: z.string().min(1),
36
- data: JsonValueSchema.optional(),
37
- });
38
- const McpJsonRpcResponseSchema = z.object({
39
- jsonrpc: z.literal("2.0").optional(),
40
- id: z.union([z.string(), z.number(), z.null()]).optional(),
41
- result: JsonValueSchema.optional(),
42
- error: McpJsonRpcErrorSchema.optional(),
43
- });
44
- export function createMcpToolDefinition(input) {
45
- const definition = McpToolDefinitionInputSchema.parse(input);
46
- const definitionHash = hashMcpToolDefinition(definition);
47
- return McpToolDefinitionRecordSchema.parse({
48
- ...definition,
49
- wrapperSchemaVersion: MCP_WRAPPER_SCHEMA_VERSION,
50
- definitionHash,
51
- actionTool: MCP_TOOL_CALL,
52
- resource: mcpToolResource(definition.serverIdentity, definition.name),
53
- });
54
- }
55
- export function hashMcpToolDefinition(input) {
56
- const definition = McpToolDefinitionInputSchema.parse(input);
57
- return hashJson({
58
- serverIdentity: definition.serverIdentity,
59
- serverVersion: definition.serverVersion ?? null,
60
- schemaVersion: definition.schemaVersion,
61
- name: definition.name,
62
- description: definition.description ?? null,
63
- inputSchema: definition.inputSchema,
64
- });
65
- }
66
- export function createMcpAction(input) {
67
- const definition = createMcpToolDefinition(input.definition);
68
- const call = McpToolCallSchema.parse(input.call);
69
- if (call.toolName !== definition.name) {
70
- throw new Error(`mcp_tool_name_mismatch:${definition.name}`);
71
- }
72
- return NormalizedActionSchema.parse({
73
- schemaVersion: ACTION_SCHEMA_VERSION,
74
- actor: input.actor,
75
- intent: input.intent,
76
- capability: {
77
- tool: MCP_TOOL_CALL,
78
- resource: definition.resource,
79
- payload: {
80
- toolName: call.toolName,
81
- arguments: call.arguments,
82
- },
83
- constraints: input.constraints,
84
- },
85
- toolDefinition: {
86
- serverIdentity: definition.serverIdentity,
87
- schemaVersion: definition.schemaVersion,
88
- definitionHash: definition.definitionHash,
89
- },
90
- });
91
- }
92
- export function createMcpToolHandler(input) {
93
- const definition = createMcpToolDefinition(input.definition);
94
- return async ({ action }) => {
95
- const call = parseMcpActionCall(action);
96
- const error = validateMcpActionDefinition(action, definition, call);
97
- if (error) {
98
- throw new Error(error);
99
- }
100
- return input.invoke({
101
- definition,
102
- call,
103
- action,
104
- });
105
- };
106
- }
107
- export function createMcpHttpToolInvoker(config) {
108
- const fetchImpl = config.fetch ?? globalThis.fetch;
109
- if (!fetchImpl) {
110
- throw new Error("mcp_http_fetch_required");
111
- }
112
- return async ({ call }) => {
113
- const response = await fetchWithTimeout(fetchImpl, config.url, {
114
- method: "POST",
115
- headers: {
116
- ...config.headers,
117
- "content-type": "application/json",
118
- accept: "application/json",
119
- },
120
- body: JSON.stringify(toMcpJsonRpcRequest(call)),
121
- }, config.timeoutMs);
122
- const text = await response.text();
123
- if (!response.ok) {
124
- throw new Error(`mcp_http_error:${response.status}`);
125
- }
126
- return parseMcpTransportResponse(text);
127
- };
128
- }
129
- export function createMcpStdioToolInvoker(config) {
130
- return ({ call }) => new Promise((resolve, reject) => {
131
- const timeoutMs = config.timeoutMs ?? 10_000;
132
- let settled = false;
133
- const child = spawn(config.command, config.args ?? [], {
134
- cwd: config.cwd,
135
- env: mergeEnv(config.env),
136
- stdio: ["pipe", "pipe", "pipe"],
137
- });
138
- const timeout = setTimeout(() => {
139
- settled = true;
140
- child.kill("SIGTERM");
141
- reject(new Error(`mcp_stdio_timeout:${timeoutMs}ms`));
142
- }, timeoutMs);
143
- let stdout = "";
144
- let stderr = "";
145
- child.stdout.setEncoding("utf8");
146
- child.stderr.setEncoding("utf8");
147
- child.stdout.on("data", (chunk) => {
148
- stdout += chunk;
149
- });
150
- child.stderr.on("data", (chunk) => {
151
- stderr += chunk;
152
- });
153
- child.on("error", (error) => {
154
- if (settled) {
155
- return;
156
- }
157
- settled = true;
158
- clearTimeout(timeout);
159
- reject(error);
160
- });
161
- child.on("close", (code) => {
162
- if (settled) {
163
- return;
164
- }
165
- settled = true;
166
- clearTimeout(timeout);
167
- if (code !== 0) {
168
- reject(new Error(`mcp_stdio_exit:${code}:${stderr.trim()}`));
169
- return;
170
- }
171
- try {
172
- resolve(parseMcpTransportResponse(stdout));
173
- }
174
- catch (error) {
175
- reject(error);
176
- }
177
- });
178
- child.stdin.end(`${JSON.stringify(toMcpJsonRpcRequest(call))}\n`);
179
- });
180
- }
181
- export function createMcpFixtureToolHandler(config) {
182
- return createMcpToolHandler({
183
- definition: config.definition,
184
- invoke: ({ call }) => {
185
- const fixtureKey = call.arguments.fixtureKey;
186
- if (typeof fixtureKey !== "string" || fixtureKey.length === 0) {
187
- throw new Error("mcp_fixture_key_required");
188
- }
189
- const fixture = config.fixtures[fixtureKey];
190
- if (fixture === undefined) {
191
- throw new Error(`mcp_fixture_not_found:${fixtureKey}`);
192
- }
193
- return fixture;
194
- },
195
- });
196
- }
197
- export function toMcpJsonRpcRequest(call) {
198
- return {
199
- jsonrpc: "2.0",
200
- id: `axtary_mcp_${call.toolName}`,
201
- method: "tools/call",
202
- params: {
203
- name: call.toolName,
204
- arguments: call.arguments,
205
- },
206
- };
207
- }
208
- export function parseMcpActionCall(action) {
209
- if (action.capability.tool !== MCP_TOOL_CALL) {
210
- throw new Error(`mcp_action_tool_mismatch:${action.capability.tool}`);
211
- }
212
- return McpToolCallSchema.parse(action.capability.payload);
213
- }
214
- export function parseMcpTransportResponse(text) {
215
- const line = text
216
- .split(/\r?\n/)
217
- .map((entry) => entry.trim())
218
- .filter(Boolean)
219
- .at(-1);
220
- if (!line) {
221
- throw new Error("mcp_transport_empty_response");
222
- }
223
- const parsed = JSON.parse(line);
224
- const response = McpJsonRpcResponseSchema.safeParse(parsed);
225
- if (!response.success) {
226
- return JsonValueSchema.parse(parsed);
227
- }
228
- if (response.data.error) {
229
- throw new Error(`mcp_transport_error:${response.data.error.message}`);
230
- }
231
- if (response.data.result === undefined) {
232
- throw new Error("mcp_transport_missing_result");
233
- }
234
- return response.data.result;
235
- }
236
- export function mcpToolResource(serverIdentity, toolName) {
237
- return `mcp:${encodeURIComponent(serverIdentity)}/tools/${encodeURIComponent(toolName)}`;
238
- }
239
- function validateMcpActionDefinition(action, definition, call) {
240
- if (action.capability.resource !== definition.resource) {
241
- return `mcp_resource_mismatch:${definition.resource}`;
242
- }
243
- if (call.toolName !== definition.name) {
244
- return `mcp_tool_name_mismatch:${definition.name}`;
245
- }
246
- if (!action.toolDefinition) {
247
- return "mcp_tool_definition_required";
248
- }
249
- if (action.toolDefinition.serverIdentity !== definition.serverIdentity) {
250
- return `mcp_server_identity_mismatch:${definition.serverIdentity}`;
251
- }
252
- if (action.toolDefinition.schemaVersion !== definition.schemaVersion) {
253
- return `mcp_schema_version_mismatch:${definition.schemaVersion}`;
254
- }
255
- if (action.toolDefinition.definitionHash !== definition.definitionHash) {
256
- return `mcp_definition_hash_mismatch:${definition.definitionHash}`;
257
- }
258
- return null;
259
- }
260
- function hashJson(value) {
261
- return `sha256:${createHash("sha256")
262
- .update(stableStringify(value))
263
- .digest("hex")}`;
264
- }
265
- function stableStringify(value) {
266
- if (Array.isArray(value)) {
267
- return `[${value.map((item) => stableStringify(item)).join(",")}]`;
268
- }
269
- if (value && typeof value === "object") {
270
- return `{${Object.entries(value)
271
- .sort(([left], [right]) => left.localeCompare(right))
272
- .map(([key, item]) => `${JSON.stringify(key)}:${stableStringify(item)}`)
273
- .join(",")}}`;
274
- }
275
- return JSON.stringify(value);
276
- }
277
- async function fetchWithTimeout(fetchImpl, url, init, timeoutMs = 10_000) {
278
- const controller = new AbortController();
279
- const timeout = setTimeout(() => controller.abort(), timeoutMs);
280
- try {
281
- return await fetchImpl(url, {
282
- ...init,
283
- signal: controller.signal,
284
- });
285
- }
286
- finally {
287
- clearTimeout(timeout);
288
- }
289
- }
290
- function mergeEnv(env) {
291
- return {
292
- ...process.env,
293
- ...Object.fromEntries(Object.entries(env ?? {}).filter((entry) => typeof entry[1] === "string")),
294
- };
295
- }
1
+ export * from "./core.js";
2
+ export { MCP_CONFORMANCE_RECEIPT_VERSION, MCP_CONFORMANCE_REGISTRY_VERSION, McpConformanceReceiptSchema, McpConformanceRegistrySchema, emptyMcpConformanceRegistry, loadMcpConformanceRegistry, parseMcpConformanceRegistry, saveMcpConformanceRegistry, upsertMcpConformanceReceipt, } from "./conformance.js";
3
+ export { MCP_PINS_SCHEMA_VERSION, MCP_PINS_SCHEMA_VERSION_V0, McpPinManifestSchema, McpServerPinsSchema, McpToolPinSchema, emptyMcpPinManifest, loadMcpPinManifest, parseMcpPinManifest, pinMcpDefinitions, reconcileMcpPins, saveMcpPinManifest, evaluateMcpVersionChain, findMcpToolPin, compareSemver, } from "./pins.js";
4
+ export { MCP_PROTOCOL_VERSION, MCP_WRAPPER_SERVER_NAME, McpStdioClient, McpWrapperServer, createMcpToolRouter, createMcpWrapperServer, createMcpWrapperTool, } from "./server.js";
5
+ export { McpHttpClient, assertSafeMcpUrl, } from "./http-client.js";
6
+ export { PROTECTED_RESOURCE_WELL_KNOWN, AUTHORIZATION_SERVER_WELL_KNOWN, OPENID_CONFIGURATION_WELL_KNOWN, canonicalResourceUri, assertSafeOAuthEndpoint, parseWwwAuthenticate, protectedResourceMetadataUrl, authorizationServerMetadataUrls, discoverProtectedResourceMetadata, discoverAuthorizationServerMetadata, createPkcePair, createOAuthState, buildAuthorizationUrl, exchangeAuthorizationCode, refreshAccessToken, registerOAuthClient, } from "./oauth.js";
7
+ export { MCP_SIGNED_DEFINITION_PROFILE, MCP_SIGNED_DEFINITION_TYP, MCP_PUBLISHER_KEYRING_VERSION, MCP_PUBLISHER_TRUST_VERSION, MCP_SIGNED_DEFINITION_REGISTRY_VERSION, McpSignedDefinitionClaimsSchema, McpSignedDefinitionRegistryEntrySchema, McpSignedDefinitionRegistrySchema, McpPublisherKeySchema, McpPublisherKeyringSchema, McpPublisherTrustEntrySchema, McpPublisherTrustStoreSchema, signMcpToolDefinition, verifyMcpSignedDefinition, createSignedMcpToolHandler, mcpPublisherKeyResolver, emptyMcpPublisherTrustStore, parseMcpPublisherTrustStore, loadMcpPublisherTrustStore, saveMcpPublisherTrustStore, loadMcpSignedDefinitionRegistry, findMcpSignedDefinition, trustMcpPublisher, mcpPublisherJwks, mcpPublisherSigningKey, loadOrCreateMcpPublisherKeyring, } from "./signing.js";
296
8
  //# sourceMappingURL=index.js.map
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AACzC,OAAO,EAAE,KAAK,EAAE,MAAM,oBAAoB,CAAC;AAE3C,OAAO,EACL,qBAAqB,EACrB,sBAAsB,GAGvB,MAAM,oBAAoB,CAAC;AAE5B,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,MAAM,CAAC,MAAM,0BAA0B,GAAG,uBAAuB,CAAC;AAClE,MAAM,CAAC,MAAM,aAAa,GAAG,eAAe,CAAC;AAE7C,MAAM,eAAe,GAAyB,CAAC,CAAC,IAAI,CAAC,GAAG,EAAE,CACxD,CAAC,CAAC,KAAK,CAAC;IACN,CAAC,CAAC,MAAM,EAAE;IACV,CAAC,CAAC,MAAM,EAAE,CAAC,MAAM,EAAE;IACnB,CAAC,CAAC,OAAO,EAAE;IACX,CAAC,CAAC,IAAI,EAAE;IACR,CAAC,CAAC,KAAK,CAAC,eAAe,CAAC;IACxB,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,EAAE,EAAE,eAAe,CAAC;CACtC,CAAC,CACH,CAAC;AAEF,MAAM,CAAC,MAAM,4BAA4B,GAAG,CAAC,CAAC,MAAM,CAAC;IACnD,cAAc,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;IACjC,aAAa,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,QAAQ,EAAE;IAC3C,aAAa,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;IAChC,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;IACvB,WAAW,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IAClC,WAAW,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,EAAE,EAAE,eAAe,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC;CAC/D,CAAC,CAAC;AAIH,MAAM,CAAC,MAAM,6BAA6B,GAAG,4BAA4B,CAAC,MAAM,CAAC;IAC/E,oBAAoB,EAAE,CAAC,CAAC,OAAO,CAAC,0BAA0B,CAAC;IAC3D,cAAc,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,KAAK,CAAC,uBAAuB,CAAC;IACzD,UAAU,EAAE,CAAC,CAAC,OAAO,CAAC,aAAa,CAAC;IACpC,QAAQ,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;CAC5B,CAAC,CAAC;AAKH,MAAM,CAAC,MAAM,iBAAiB,GAAG,CAAC,CAAC,MAAM,CAAC;IACxC,QAAQ,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;IAC3B,SAAS,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,EAAE,EAAE,eAAe,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC;CAC7D,CAAC,CAAC;AAmDH,MAAM,qBAAqB,GAAG,CAAC,CAAC,MAAM,CAAC;IACrC,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE;IACtB,OAAO,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;IAC1B,IAAI,EAAE,eAAe,CAAC,QAAQ,EAAE;CACjC,CAAC,CAAC;AAEH,MAAM,wBAAwB,GAAG,CAAC,CAAC,MAAM,CAAC;IACxC,OAAO,EAAE,CAAC,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,QAAQ,EAAE;IACpC,EAAE,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,QAAQ,EAAE;IAC1D,MAAM,EAAE,eAAe,CAAC,QAAQ,EAAE;IAClC,KAAK,EAAE,qBAAqB,CAAC,QAAQ,EAAE;CACxC,CAAC,CAAC;AAEH,MAAM,UAAU,uBAAuB,CACrC,KAA6B;IAE7B,MAAM,UAAU,GAAG,4BAA4B,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;IAC7D,MAAM,cAAc,GAAG,qBAAqB,CAAC,UAAU,CAAC,CAAC;IAEzD,OAAO,6BAA6B,CAAC,KAAK,CAAC;QACzC,GAAG,UAAU;QACb,oBAAoB,EAAE,0BAA0B;QAChD,cAAc;QACd,UAAU,EAAE,aAAa;QACzB,QAAQ,EAAE,eAAe,CAAC,UAAU,CAAC,cAAc,EAAE,UAAU,CAAC,IAAI,CAAC;KACtE,CAAC,CAAC;AACL,CAAC;AAED,MAAM,UAAU,qBAAqB,CAAC,KAA6B;IACjE,MAAM,UAAU,GAAG,4BAA4B,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;IAE7D,OAAO,QAAQ,CAAC;QACd,cAAc,EAAE,UAAU,CAAC,cAAc;QACzC,aAAa,EAAE,UAAU,CAAC,aAAa,IAAI,IAAI;QAC/C,aAAa,EAAE,UAAU,CAAC,aAAa;QACvC,IAAI,EAAE,UAAU,CAAC,IAAI;QACrB,WAAW,EAAE,UAAU,CAAC,WAAW,IAAI,IAAI;QAC3C,WAAW,EAAE,UAAU,CAAC,WAAW;KACpC,CAAC,CAAC;AACL,CAAC;AAED,MAAM,UAAU,eAAe,CAAC,KAA2B;IACzD,MAAM,UAAU,GAAG,uBAAuB,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC;IAC7D,MAAM,IAAI,GAAG,iBAAiB,CAAC,KAAK,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;IAEjD,IAAI,IAAI,CAAC,QAAQ,KAAK,UAAU,CAAC,IAAI,EAAE,CAAC;QACtC,MAAM,IAAI,KAAK,CAAC,0BAA0B,UAAU,CAAC,IAAI,EAAE,CAAC,CAAC;IAC/D,CAAC;IAED,OAAO,sBAAsB,CAAC,KAAK,CAAC;QAClC,aAAa,EAAE,qBAAqB;QACpC,KAAK,EAAE,KAAK,CAAC,KAAK;QAClB,MAAM,EAAE,KAAK,CAAC,MAAM;QACpB,UAAU,EAAE;YACV,IAAI,EAAE,aAAa;YACnB,QAAQ,EAAE,UAAU,CAAC,QAAQ;YAC7B,OAAO,EAAE;gBACP,QAAQ,EAAE,IAAI,CAAC,QAAQ;gBACvB,SAAS,EAAE,IAAI,CAAC,SAAS;aAC1B;YACD,WAAW,EAAE,KAAK,CAAC,WAAW;SAC/B;QACD,cAAc,EAAE;YACd,cAAc,EAAE,UAAU,CAAC,cAAc;YACzC,aAAa,EAAE,UAAU,CAAC,aAAa;YACvC,cAAc,EAAE,UAAU,CAAC,cAAc;SAC1C;KACF,CAAC,CAAC;AACL,CAAC;AAED,MAAM,UAAU,oBAAoB,CAAC,KAGpC;IACC,MAAM,UAAU,GAAG,uBAAuB,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC;IAE7D,OAAO,KAAK,EAAE,EAAE,MAAM,EAAE,EAAE,EAAE;QAC1B,MAAM,IAAI,GAAG,kBAAkB,CAAC,MAAM,CAAC,CAAC;QACxC,MAAM,KAAK,GAAG,2BAA2B,CAAC,MAAM,EAAE,UAAU,EAAE,IAAI,CAAC,CAAC;QAEpE,IAAI,KAAK,EAAE,CAAC;YACV,MAAM,IAAI,KAAK,CAAC,KAAK,CAAC,CAAC;QACzB,CAAC;QAED,OAAO,KAAK,CAAC,MAAM,CAAC;YAClB,UAAU;YACV,IAAI;YACJ,MAAM;SACP,CAAC,CAAC;IACL,CAAC,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,wBAAwB,CACtC,MAA8B;IAE9B,MAAM,SAAS,GAAG,MAAM,CAAC,KAAK,IAAI,UAAU,CAAC,KAAK,CAAC;IAEnD,IAAI,CAAC,SAAS,EAAE,CAAC;QACf,MAAM,IAAI,KAAK,CAAC,yBAAyB,CAAC,CAAC;IAC7C,CAAC;IAED,OAAO,KAAK,EAAE,EAAE,IAAI,EAAE,EAAE,EAAE;QACxB,MAAM,QAAQ,GAAG,MAAM,gBAAgB,CACrC,SAAS,EACT,MAAM,CAAC,GAAG,EACV;YACE,MAAM,EAAE,MAAM;YACd,OAAO,EAAE;gBACP,GAAG,MAAM,CAAC,OAAO;gBACjB,cAAc,EAAE,kBAAkB;gBAClC,MAAM,EAAE,kBAAkB;aAC3B;YACD,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,mBAAmB,CAAC,IAAI,CAAC,CAAC;SAChD,EACD,MAAM,CAAC,SAAS,CACjB,CAAC;QACF,MAAM,IAAI,GAAG,MAAM,QAAQ,CAAC,IAAI,EAAE,CAAC;QAEnC,IAAI,CAAC,QAAQ,CAAC,EAAE,EAAE,CAAC;YACjB,MAAM,IAAI,KAAK,CAAC,kBAAkB,QAAQ,CAAC,MAAM,EAAE,CAAC,CAAC;QACvD,CAAC;QAED,OAAO,yBAAyB,CAAC,IAAI,CAAC,CAAC;IACzC,CAAC,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,yBAAyB,CACvC,MAA+B;IAE/B,OAAO,CAAC,EAAE,IAAI,EAAE,EAAE,EAAE,CAClB,IAAI,OAAO,CAAY,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;QACzC,MAAM,SAAS,GAAG,MAAM,CAAC,SAAS,IAAI,MAAM,CAAC;QAC7C,IAAI,OAAO,GAAG,KAAK,CAAC;QACpB,MAAM,KAAK,GAAG,KAAK,CAAC,MAAM,CAAC,OAAO,EAAE,MAAM,CAAC,IAAI,IAAI,EAAE,EAAE;YACrD,GAAG,EAAE,MAAM,CAAC,GAAG;YACf,GAAG,EAAE,QAAQ,CAAC,MAAM,CAAC,GAAG,CAAC;YACzB,KAAK,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC;SAChC,CAAC,CAAC;QACH,MAAM,OAAO,GAAG,UAAU,CAAC,GAAG,EAAE;YAC9B,OAAO,GAAG,IAAI,CAAC;YACf,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;YACtB,MAAM,CAAC,IAAI,KAAK,CAAC,qBAAqB,SAAS,IAAI,CAAC,CAAC,CAAC;QACxD,CAAC,EAAE,SAAS,CAAC,CAAC;QACd,IAAI,MAAM,GAAG,EAAE,CAAC;QAChB,IAAI,MAAM,GAAG,EAAE,CAAC;QAEhB,KAAK,CAAC,MAAM,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC;QACjC,KAAK,CAAC,MAAM,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC;QACjC,KAAK,CAAC,MAAM,CAAC,EAAE,CAAC,MAAM,EAAE,CAAC,KAAK,EAAE,EAAE;YAChC,MAAM,IAAI,KAAK,CAAC;QAClB,CAAC,CAAC,CAAC;QACH,KAAK,CAAC,MAAM,CAAC,EAAE,CAAC,MAAM,EAAE,CAAC,KAAK,EAAE,EAAE;YAChC,MAAM,IAAI,KAAK,CAAC;QAClB,CAAC,CAAC,CAAC;QACH,KAAK,CAAC,EAAE,CAAC,OAAO,EAAE,CAAC,KAAK,EAAE,EAAE;YAC1B,IAAI,OAAO,EAAE,CAAC;gBACZ,OAAO;YACT,CAAC;YACD,OAAO,GAAG,IAAI,CAAC;YACf,YAAY,CAAC,OAAO,CAAC,CAAC;YACtB,MAAM,CAAC,KAAK,CAAC,CAAC;QAChB,CAAC,CAAC,CAAC;QACH,KAAK,CAAC,EAAE,CAAC,OAAO,EAAE,CAAC,IAAI,EAAE,EAAE;YACzB,IAAI,OAAO,EAAE,CAAC;gBACZ,OAAO;YACT,CAAC;YACD,OAAO,GAAG,IAAI,CAAC;YACf,YAAY,CAAC,OAAO,CAAC,CAAC;YAEtB,IAAI,IAAI,KAAK,CAAC,EAAE,CAAC;gBACf,MAAM,CAAC,IAAI,KAAK,CAAC,kBAAkB,IAAI,IAAI,MAAM,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,CAAC;gBAC7D,OAAO;YACT,CAAC;YAED,IAAI,CAAC;gBACH,OAAO,CAAC,yBAAyB,CAAC,MAAM,CAAC,CAAC,CAAC;YAC7C,CAAC;YAAC,OAAO,KAAK,EAAE,CAAC;gBACf,MAAM,CAAC,KAAK,CAAC,CAAC;YAChB,CAAC;QACH,CAAC,CAAC,CAAC;QACH,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG,IAAI,CAAC,SAAS,CAAC,mBAAmB,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC;IACpE,CAAC,CAAC,CAAC;AACP,CAAC;AAED,MAAM,UAAU,2BAA2B,CACzC,MAA4B;IAE5B,OAAO,oBAAoB,CAAC;QAC1B,UAAU,EAAE,MAAM,CAAC,UAAU;QAC7B,MAAM,EAAE,CAAC,EAAE,IAAI,EAAE,EAAE,EAAE;YACnB,MAAM,UAAU,GAAG,IAAI,CAAC,SAAS,CAAC,UAAU,CAAC;YAE7C,IAAI,OAAO,UAAU,KAAK,QAAQ,IAAI,UAAU,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;gBAC9D,MAAM,IAAI,KAAK,CAAC,0BAA0B,CAAC,CAAC;YAC9C,CAAC;YAED,MAAM,OAAO,GAAG,MAAM,CAAC,QAAQ,CAAC,UAAU,CAAC,CAAC;YAE5C,IAAI,OAAO,KAAK,SAAS,EAAE,CAAC;gBAC1B,MAAM,IAAI,KAAK,CAAC,yBAAyB,UAAU,EAAE,CAAC,CAAC;YACzD,CAAC;YAED,OAAO,OAAO,CAAC;QACjB,CAAC;KACF,CAAC,CAAC;AACL,CAAC;AAED,MAAM,UAAU,mBAAmB,CAAC,IAAiB;IACnD,OAAO;QACL,OAAO,EAAE,KAAK;QACd,EAAE,EAAE,cAAc,IAAI,CAAC,QAAQ,EAAE;QACjC,MAAM,EAAE,YAAY;QACpB,MAAM,EAAE;YACN,IAAI,EAAE,IAAI,CAAC,QAAQ;YACnB,SAAS,EAAE,IAAI,CAAC,SAAS;SAC1B;KACF,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,kBAAkB,CAAC,MAAwB;IACzD,IAAI,MAAM,CAAC,UAAU,CAAC,IAAI,KAAK,aAAa,EAAE,CAAC;QAC7C,MAAM,IAAI,KAAK,CAAC,4BAA4B,MAAM,CAAC,UAAU,CAAC,IAAI,EAAE,CAAC,CAAC;IACxE,CAAC;IAED,OAAO,iBAAiB,CAAC,KAAK,CAAC,MAAM,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC;AAC5D,CAAC;AAED,MAAM,UAAU,yBAAyB,CAAC,IAAY;IACpD,MAAM,IAAI,GAAG,IAAI;SACd,KAAK,CAAC,OAAO,CAAC;SACd,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC;SAC5B,MAAM,CAAC,OAAO,CAAC;SACf,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;IAEV,IAAI,CAAC,IAAI,EAAE,CAAC;QACV,MAAM,IAAI,KAAK,CAAC,8BAA8B,CAAC,CAAC;IAClD,CAAC;IAED,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAY,CAAC;IAC3C,MAAM,QAAQ,GAAG,wBAAwB,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC;IAE5D,IAAI,CAAC,QAAQ,CAAC,OAAO,EAAE,CAAC;QACtB,OAAO,eAAe,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;IACvC,CAAC;IAED,IAAI,QAAQ,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC;QACxB,MAAM,IAAI,KAAK,CAAC,uBAAuB,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,OAAO,EAAE,CAAC,CAAC;IACxE,CAAC;IAED,IAAI,QAAQ,CAAC,IAAI,CAAC,MAAM,KAAK,SAAS,EAAE,CAAC;QACvC,MAAM,IAAI,KAAK,CAAC,8BAA8B,CAAC,CAAC;IAClD,CAAC;IAED,OAAO,QAAQ,CAAC,IAAI,CAAC,MAAM,CAAC;AAC9B,CAAC;AAED,MAAM,UAAU,eAAe,CAAC,cAAsB,EAAE,QAAgB;IACtE,OAAO,OAAO,kBAAkB,CAAC,cAAc,CAAC,UAAU,kBAAkB,CAAC,QAAQ,CAAC,EAAE,CAAC;AAC3F,CAAC;AAED,SAAS,2BAA2B,CAClC,MAAwB,EACxB,UAAmC,EACnC,IAAiB;IAEjB,IAAI,MAAM,CAAC,UAAU,CAAC,QAAQ,KAAK,UAAU,CAAC,QAAQ,EAAE,CAAC;QACvD,OAAO,yBAAyB,UAAU,CAAC,QAAQ,EAAE,CAAC;IACxD,CAAC;IAED,IAAI,IAAI,CAAC,QAAQ,KAAK,UAAU,CAAC,IAAI,EAAE,CAAC;QACtC,OAAO,0BAA0B,UAAU,CAAC,IAAI,EAAE,CAAC;IACrD,CAAC;IAED,IAAI,CAAC,MAAM,CAAC,cAAc,EAAE,CAAC;QAC3B,OAAO,8BAA8B,CAAC;IACxC,CAAC;IAED,IAAI,MAAM,CAAC,cAAc,CAAC,cAAc,KAAK,UAAU,CAAC,cAAc,EAAE,CAAC;QACvE,OAAO,gCAAgC,UAAU,CAAC,cAAc,EAAE,CAAC;IACrE,CAAC;IAED,IAAI,MAAM,CAAC,cAAc,CAAC,aAAa,KAAK,UAAU,CAAC,aAAa,EAAE,CAAC;QACrE,OAAO,+BAA+B,UAAU,CAAC,aAAa,EAAE,CAAC;IACnE,CAAC;IAED,IAAI,MAAM,CAAC,cAAc,CAAC,cAAc,KAAK,UAAU,CAAC,cAAc,EAAE,CAAC;QACvE,OAAO,gCAAgC,UAAU,CAAC,cAAc,EAAE,CAAC;IACrE,CAAC;IAED,OAAO,IAAI,CAAC;AACd,CAAC;AAED,SAAS,QAAQ,CAAC,KAAgB;IAChC,OAAO,UAAU,UAAU,CAAC,QAAQ,CAAC;SAClC,MAAM,CAAC,eAAe,CAAC,KAAK,CAAC,CAAC;SAC9B,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC;AACrB,CAAC;AAED,SAAS,eAAe,CAAC,KAAgB;IACvC,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC;QACzB,OAAO,IAAI,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,eAAe,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC;IACrE,CAAC;IAED,IAAI,KAAK,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE,CAAC;QACvC,OAAO,IAAI,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC;aAC7B,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,KAAK,CAAC,EAAE,EAAE,CAAC,IAAI,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;aACpD,GAAG,CAAC,CAAC,CAAC,GAAG,EAAE,IAAI,CAAC,EAAE,EAAE,CAAC,GAAG,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,IAAI,eAAe,CAAC,IAAI,CAAC,EAAE,CAAC;aACvE,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC;IAClB,CAAC;IAED,OAAO,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC;AAC/B,CAAC;AAED,KAAK,UAAU,gBAAgB,CAC7B,SAAuB,EACvB,GAAW,EACX,IAAiB,EACjB,SAAS,GAAG,MAAM;IAElB,MAAM,UAAU,GAAG,IAAI,eAAe,EAAE,CAAC;IACzC,MAAM,OAAO,GAAG,UAAU,CAAC,GAAG,EAAE,CAAC,UAAU,CAAC,KAAK,EAAE,EAAE,SAAS,CAAC,CAAC;IAEhE,IAAI,CAAC;QACH,OAAO,MAAM,SAAS,CAAC,GAAG,EAAE;YAC1B,GAAG,IAAI;YACP,MAAM,EAAE,UAAU,CAAC,MAAM;SAC1B,CAAC,CAAC;IACL,CAAC;YAAS,CAAC;QACT,YAAY,CAAC,OAAO,CAAC,CAAC;IACxB,CAAC;AACH,CAAC;AAED,SAAS,QAAQ,CACf,GAAmD;IAEnD,OAAO;QACL,GAAG,OAAO,CAAC,GAAG;QACd,GAAG,MAAM,CAAC,WAAW,CACnB,MAAM,CAAC,OAAO,CAAC,GAAG,IAAI,EAAE,CAAC,CAAC,MAAM,CAC9B,CAAC,KAAK,EAA6B,EAAE,CAAC,OAAO,KAAK,CAAC,CAAC,CAAC,KAAK,QAAQ,CACnE,CACF;KACF,CAAC;AACJ,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,WAAW,CAAC;AAC1B,OAAO,EACL,+BAA+B,EAC/B,gCAAgC,EAChC,2BAA2B,EAC3B,4BAA4B,EAC5B,2BAA2B,EAC3B,0BAA0B,EAC1B,2BAA2B,EAC3B,0BAA0B,EAC1B,2BAA2B,GAG5B,MAAM,kBAAkB,CAAC;AAC1B,OAAO,EACL,uBAAuB,EACvB,0BAA0B,EAC1B,oBAAoB,EACpB,mBAAmB,EACnB,gBAAgB,EAChB,mBAAmB,EACnB,kBAAkB,EAClB,mBAAmB,EACnB,iBAAiB,EACjB,gBAAgB,EAChB,kBAAkB,EAClB,uBAAuB,EACvB,cAAc,EACd,aAAa,GASd,MAAM,WAAW,CAAC;AACnB,OAAO,EACL,oBAAoB,EACpB,uBAAuB,EACvB,cAAc,EACd,gBAAgB,EAChB,mBAAmB,EACnB,sBAAsB,EACtB,oBAAoB,GAQrB,MAAM,aAAa,CAAC;AACrB,OAAO,EACL,aAAa,EACb,gBAAgB,GAEjB,MAAM,kBAAkB,CAAC;AAC1B,OAAO,EACL,6BAA6B,EAC7B,+BAA+B,EAC/B,+BAA+B,EAC/B,oBAAoB,EACpB,uBAAuB,EACvB,oBAAoB,EACpB,4BAA4B,EAC5B,+BAA+B,EAC/B,iCAAiC,EACjC,mCAAmC,EACnC,cAAc,EACd,gBAAgB,EAChB,qBAAqB,EACrB,yBAAyB,EACzB,kBAAkB,EAClB,mBAAmB,GAQpB,MAAM,YAAY,CAAC;AACpB,OAAO,EACL,6BAA6B,EAC7B,yBAAyB,EACzB,6BAA6B,EAC7B,2BAA2B,EAC3B,sCAAsC,EACtC,+BAA+B,EAC/B,sCAAsC,EACtC,iCAAiC,EACjC,qBAAqB,EACrB,yBAAyB,EACzB,4BAA4B,EAC5B,4BAA4B,EAC5B,qBAAqB,EACrB,yBAAyB,EACzB,0BAA0B,EAC1B,uBAAuB,EACvB,2BAA2B,EAC3B,2BAA2B,EAC3B,0BAA0B,EAC1B,0BAA0B,EAC1B,+BAA+B,EAC/B,uBAAuB,EACvB,iBAAiB,EACjB,gBAAgB,EAChB,sBAAsB,EACtB,+BAA+B,GAWhC,MAAM,cAAc,CAAC"}
@@ -0,0 +1,168 @@
1
+ export declare const PROTECTED_RESOURCE_WELL_KNOWN = "/.well-known/oauth-protected-resource";
2
+ export declare const AUTHORIZATION_SERVER_WELL_KNOWN = "/.well-known/oauth-authorization-server";
3
+ export declare const OPENID_CONFIGURATION_WELL_KNOWN = "/.well-known/openid-configuration";
4
+ /**
5
+ * The canonical resource identifier for an MCP server, per RFC 8707 §2 and the
6
+ * MCP spec's "Canonical Server URI" rules: lowercase scheme + host, no fragment,
7
+ * no trailing slash (unless the path is just "/"). This exact string is the
8
+ * `resource` parameter and must match the `resource` field of the Protected
9
+ * Resource Metadata document.
10
+ */
11
+ export declare function canonicalResourceUri(rawUrl: string): string;
12
+ /**
13
+ * Allow `https://` always; allow `http://` only for loopback hosts. The MCP
14
+ * authorization spec requires all authorization-server endpoints to be served
15
+ * over HTTPS — we never send a bearer, code, or verifier in cleartext to a
16
+ * remote host. Loopback stays permitted for local conformance servers.
17
+ */
18
+ export declare function assertSafeOAuthEndpoint(rawUrl: string): URL;
19
+ export type WwwAuthenticateChallenge = {
20
+ scheme: string;
21
+ params: Record<string, string>;
22
+ };
23
+ /**
24
+ * Parse an RFC 7235 `WWW-Authenticate` header far enough to recover the RFC 9728
25
+ * `resource_metadata` and (optionally) `scope` from a Bearer challenge. We only
26
+ * need quoted/unquoted token68-free `key=value` auth params, which is what real
27
+ * MCP resource servers emit.
28
+ */
29
+ export declare function parseWwwAuthenticate(header: string): WwwAuthenticateChallenge | null;
30
+ export type ProtectedResourceMetadata = {
31
+ resource: string;
32
+ authorizationServers: string[];
33
+ scopesSupported: string[];
34
+ resourceName: string | null;
35
+ metadataUrl: string;
36
+ };
37
+ export type AuthorizationServerMetadata = {
38
+ issuer: string;
39
+ authorizationEndpoint: string;
40
+ tokenEndpoint: string;
41
+ registrationEndpoint: string | null;
42
+ codeChallengeMethodsSupported: string[];
43
+ scopesSupported: string[];
44
+ grantTypesSupported: string[];
45
+ metadataUrl: string;
46
+ };
47
+ /**
48
+ * Build the RFC 9728 Protected Resource Metadata URL from an MCP server URL. The
49
+ * well-known segment is inserted between host and path (path-aware), matching
50
+ * RFC 9728 §3.1, so `https://h/mcp` → `https://h/.well-known/oauth-protected-resource/mcp`.
51
+ */
52
+ export declare function protectedResourceMetadataUrl(mcpUrl: string): string;
53
+ /**
54
+ * Candidate RFC 8414 Authorization Server Metadata URLs for an issuer, tried in
55
+ * order. RFC 8414 inserts the well-known segment between host and path; we also
56
+ * fall back to the OpenID Connect discovery document, which many real
57
+ * authorization servers (including ones fronting MCP) serve instead.
58
+ */
59
+ export declare function authorizationServerMetadataUrls(issuer: string): string[];
60
+ export type DiscoverInput = {
61
+ mcpUrl: string;
62
+ fetch?: typeof fetch;
63
+ timeoutMs?: number;
64
+ /** A `WWW-Authenticate` header from a prior 401, if already observed. */
65
+ wwwAuthenticate?: string;
66
+ };
67
+ /**
68
+ * Discover Protected Resource Metadata for an MCP server. Prefers the
69
+ * `resource_metadata` URL advertised in a 401 `WWW-Authenticate` header (RFC
70
+ * 9728 §5.1); otherwise derives the well-known URL from the MCP endpoint. The
71
+ * returned `resource` must equal the canonical MCP URI or we fail closed rather
72
+ * than request a token for the wrong audience.
73
+ */
74
+ export declare function discoverProtectedResourceMetadata(input: DiscoverInput): Promise<ProtectedResourceMetadata>;
75
+ /**
76
+ * Discover RFC 8414 Authorization Server Metadata for an issuer, trying the
77
+ * path-aware well-known URLs and the OpenID fallback in order. The metadata's
78
+ * `issuer` must equal the requested issuer (RFC 8414 §3.3), and the
79
+ * authorization/token endpoints must be HTTPS (or loopback) or we fail closed.
80
+ */
81
+ export declare function discoverAuthorizationServerMetadata(input: {
82
+ issuer: string;
83
+ fetch?: typeof fetch;
84
+ timeoutMs?: number;
85
+ }): Promise<AuthorizationServerMetadata>;
86
+ export type PkcePair = {
87
+ verifier: string;
88
+ challenge: string;
89
+ method: "S256";
90
+ };
91
+ /** Create an RFC 7636 PKCE verifier/challenge pair (S256). */
92
+ export declare function createPkcePair(randomVerifier?: () => string): PkcePair;
93
+ /** Create an anti-CSRF `state` value for the authorization request. */
94
+ export declare function createOAuthState(randomState?: () => string): string;
95
+ /**
96
+ * Build the OAuth 2.1 authorization-request URL. The RFC 8707 `resource`
97
+ * parameter is always included and set to the canonical MCP URI (MUST per the
98
+ * MCP spec, regardless of AS support), alongside PKCE `code_challenge` and the
99
+ * anti-CSRF `state`.
100
+ */
101
+ export declare function buildAuthorizationUrl(input: {
102
+ authorizationEndpoint: string;
103
+ clientId: string;
104
+ redirectUri: string;
105
+ resource: string;
106
+ scopes: string[];
107
+ state: string;
108
+ codeChallenge: string;
109
+ extraParams?: Record<string, string>;
110
+ }): string;
111
+ export type OAuthTokens = {
112
+ accessToken: string;
113
+ refreshToken: string | null;
114
+ tokenType: string;
115
+ scope: string[];
116
+ expiresIn: number | null;
117
+ };
118
+ /**
119
+ * Exchange an authorization code for tokens at the token endpoint. Sends the
120
+ * RFC 7636 `code_verifier` and the RFC 8707 `resource` parameter so the issued
121
+ * token is audience-bound to this MCP server. Public-client form (no secret) is
122
+ * the default; a confidential client secret is included only when supplied.
123
+ */
124
+ export declare function exchangeAuthorizationCode(input: {
125
+ tokenEndpoint: string;
126
+ clientId: string;
127
+ clientSecret?: string;
128
+ code: string;
129
+ redirectUri: string;
130
+ codeVerifier: string;
131
+ resource: string;
132
+ fetch?: typeof fetch;
133
+ timeoutMs?: number;
134
+ }): Promise<OAuthTokens>;
135
+ /**
136
+ * Refresh an access token. Per OAuth 2.1 the `resource` parameter is repeated so
137
+ * the refreshed token keeps the same audience; the requested `scope` is narrowed
138
+ * to what was originally granted (never broadened).
139
+ */
140
+ export declare function refreshAccessToken(input: {
141
+ tokenEndpoint: string;
142
+ clientId: string;
143
+ clientSecret?: string;
144
+ refreshToken: string;
145
+ resource: string;
146
+ scopes?: string[];
147
+ fetch?: typeof fetch;
148
+ timeoutMs?: number;
149
+ }): Promise<OAuthTokens>;
150
+ export type RegisteredClient = {
151
+ clientId: string;
152
+ clientSecret: string | null;
153
+ };
154
+ /**
155
+ * Register a public OAuth client via RFC 7591 Dynamic Client Registration. We
156
+ * register as a public client using PKCE (`token_endpoint_auth_method: none`)
157
+ * with the loopback redirect and the authorization-code grant, so no client
158
+ * secret is needed or stored. Returns the issued client id.
159
+ */
160
+ export declare function registerOAuthClient(input: {
161
+ registrationEndpoint: string;
162
+ redirectUris: string[];
163
+ clientName: string;
164
+ scopes?: string[];
165
+ fetch?: typeof fetch;
166
+ timeoutMs?: number;
167
+ }): Promise<RegisteredClient>;
168
+ //# sourceMappingURL=oauth.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"oauth.d.ts","sourceRoot":"","sources":["../src/oauth.ts"],"names":[],"mappings":"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"}