@tianshu-ai/tianshu 0.86.2 → 0.87.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/node_modules/@modelcontextprotocol/sdk/dist/cjs/client/auth-extensions.d.ts +43 -2
- package/node_modules/@modelcontextprotocol/sdk/dist/cjs/client/auth-extensions.d.ts.map +1 -1
- package/node_modules/@modelcontextprotocol/sdk/dist/cjs/client/auth-extensions.js +26 -5
- package/node_modules/@modelcontextprotocol/sdk/dist/cjs/client/auth-extensions.js.map +1 -1
- package/node_modules/@modelcontextprotocol/sdk/dist/cjs/client/auth.d.ts +26 -4
- package/node_modules/@modelcontextprotocol/sdk/dist/cjs/client/auth.d.ts.map +1 -1
- package/node_modules/@modelcontextprotocol/sdk/dist/cjs/client/auth.js +127 -24
- package/node_modules/@modelcontextprotocol/sdk/dist/cjs/client/auth.js.map +1 -1
- package/node_modules/@modelcontextprotocol/sdk/dist/cjs/client/index.d.ts.map +1 -1
- package/node_modules/@modelcontextprotocol/sdk/dist/cjs/client/index.js +1 -12
- package/node_modules/@modelcontextprotocol/sdk/dist/cjs/client/index.js.map +1 -1
- package/node_modules/@modelcontextprotocol/sdk/dist/cjs/client/sse.d.ts +13 -0
- package/node_modules/@modelcontextprotocol/sdk/dist/cjs/client/sse.d.ts.map +1 -1
- package/node_modules/@modelcontextprotocol/sdk/dist/cjs/client/sse.js +17 -4
- package/node_modules/@modelcontextprotocol/sdk/dist/cjs/client/sse.js.map +1 -1
- package/node_modules/@modelcontextprotocol/sdk/dist/cjs/client/stdio.d.ts +7 -0
- package/node_modules/@modelcontextprotocol/sdk/dist/cjs/client/stdio.d.ts.map +1 -1
- package/node_modules/@modelcontextprotocol/sdk/dist/cjs/client/stdio.js +9 -3
- package/node_modules/@modelcontextprotocol/sdk/dist/cjs/client/stdio.js.map +1 -1
- package/node_modules/@modelcontextprotocol/sdk/dist/cjs/client/streamableHttp.d.ts +13 -0
- package/node_modules/@modelcontextprotocol/sdk/dist/cjs/client/streamableHttp.d.ts.map +1 -1
- package/node_modules/@modelcontextprotocol/sdk/dist/cjs/client/streamableHttp.js +28 -13
- package/node_modules/@modelcontextprotocol/sdk/dist/cjs/client/streamableHttp.js.map +1 -1
- package/node_modules/@modelcontextprotocol/sdk/dist/cjs/examples/client/simpleClientCredentials.d.ts +1 -0
- package/node_modules/@modelcontextprotocol/sdk/dist/cjs/examples/client/simpleClientCredentials.d.ts.map +1 -1
- package/node_modules/@modelcontextprotocol/sdk/dist/cjs/examples/client/simpleClientCredentials.js +11 -2
- package/node_modules/@modelcontextprotocol/sdk/dist/cjs/examples/client/simpleClientCredentials.js.map +1 -1
- package/node_modules/@modelcontextprotocol/sdk/dist/cjs/examples/server/demoInMemoryOAuthProvider.d.ts +2 -0
- package/node_modules/@modelcontextprotocol/sdk/dist/cjs/examples/server/demoInMemoryOAuthProvider.d.ts.map +1 -1
- package/node_modules/@modelcontextprotocol/sdk/dist/cjs/examples/server/elicitationFormExample.js +63 -20
- package/node_modules/@modelcontextprotocol/sdk/dist/cjs/examples/server/elicitationFormExample.js.map +1 -1
- package/node_modules/@modelcontextprotocol/sdk/dist/cjs/examples/server/elicitationUrlExample.js +71 -29
- package/node_modules/@modelcontextprotocol/sdk/dist/cjs/examples/server/elicitationUrlExample.js.map +1 -1
- package/node_modules/@modelcontextprotocol/sdk/dist/cjs/examples/server/jsonResponseStreamableHttp.js +45 -6
- package/node_modules/@modelcontextprotocol/sdk/dist/cjs/examples/server/jsonResponseStreamableHttp.js.map +1 -1
- package/node_modules/@modelcontextprotocol/sdk/dist/cjs/examples/server/simpleStreamableHttp.js +71 -31
- package/node_modules/@modelcontextprotocol/sdk/dist/cjs/examples/server/simpleStreamableHttp.js.map +1 -1
- package/node_modules/@modelcontextprotocol/sdk/dist/cjs/examples/server/simpleTaskInteractive.js +61 -18
- package/node_modules/@modelcontextprotocol/sdk/dist/cjs/examples/server/simpleTaskInteractive.js.map +1 -1
- package/node_modules/@modelcontextprotocol/sdk/dist/cjs/examples/server/sseAndStreamableHttpCompatibleServer.js +57 -19
- package/node_modules/@modelcontextprotocol/sdk/dist/cjs/examples/server/sseAndStreamableHttpCompatibleServer.js.map +1 -1
- package/node_modules/@modelcontextprotocol/sdk/dist/cjs/examples/server/ssePollingExample.js +64 -17
- package/node_modules/@modelcontextprotocol/sdk/dist/cjs/examples/server/ssePollingExample.js.map +1 -1
- package/node_modules/@modelcontextprotocol/sdk/dist/cjs/examples/server/standaloneSseWithGetStreamableHttp.js +61 -13
- package/node_modules/@modelcontextprotocol/sdk/dist/cjs/examples/server/standaloneSseWithGetStreamableHttp.js.map +1 -1
- package/node_modules/@modelcontextprotocol/sdk/dist/cjs/experimental/tasks/interfaces.d.ts +4 -0
- package/node_modules/@modelcontextprotocol/sdk/dist/cjs/experimental/tasks/interfaces.d.ts.map +1 -1
- package/node_modules/@modelcontextprotocol/sdk/dist/cjs/experimental/tasks/interfaces.js.map +1 -1
- package/node_modules/@modelcontextprotocol/sdk/dist/cjs/experimental/tasks/stores/in-memory.d.ts +17 -8
- package/node_modules/@modelcontextprotocol/sdk/dist/cjs/experimental/tasks/stores/in-memory.d.ts.map +1 -1
- package/node_modules/@modelcontextprotocol/sdk/dist/cjs/experimental/tasks/stores/in-memory.js +31 -14
- package/node_modules/@modelcontextprotocol/sdk/dist/cjs/experimental/tasks/stores/in-memory.js.map +1 -1
- package/node_modules/@modelcontextprotocol/sdk/dist/cjs/server/auth/middleware/bearerAuth.d.ts +9 -1
- package/node_modules/@modelcontextprotocol/sdk/dist/cjs/server/auth/middleware/bearerAuth.d.ts.map +1 -1
- package/node_modules/@modelcontextprotocol/sdk/dist/cjs/server/auth/middleware/bearerAuth.js +17 -1
- package/node_modules/@modelcontextprotocol/sdk/dist/cjs/server/auth/middleware/bearerAuth.js.map +1 -1
- package/node_modules/@modelcontextprotocol/sdk/dist/cjs/server/auth/providers/proxyProvider.d.ts.map +1 -1
- package/node_modules/@modelcontextprotocol/sdk/dist/cjs/server/auth/providers/proxyProvider.js +6 -3
- package/node_modules/@modelcontextprotocol/sdk/dist/cjs/server/auth/providers/proxyProvider.js.map +1 -1
- package/node_modules/@modelcontextprotocol/sdk/dist/cjs/server/express.d.ts.map +1 -1
- package/node_modules/@modelcontextprotocol/sdk/dist/cjs/server/express.js +3 -1
- package/node_modules/@modelcontextprotocol/sdk/dist/cjs/server/express.js.map +1 -1
- package/node_modules/@modelcontextprotocol/sdk/dist/cjs/server/index.d.ts.map +1 -1
- package/node_modules/@modelcontextprotocol/sdk/dist/cjs/server/index.js +1 -12
- package/node_modules/@modelcontextprotocol/sdk/dist/cjs/server/index.js.map +1 -1
- package/node_modules/@modelcontextprotocol/sdk/dist/cjs/server/mcp.d.ts +12 -1
- package/node_modules/@modelcontextprotocol/sdk/dist/cjs/server/mcp.d.ts.map +1 -1
- package/node_modules/@modelcontextprotocol/sdk/dist/cjs/server/mcp.js +46 -2
- package/node_modules/@modelcontextprotocol/sdk/dist/cjs/server/mcp.js.map +1 -1
- package/node_modules/@modelcontextprotocol/sdk/dist/cjs/server/requestBody.d.ts +25 -0
- package/node_modules/@modelcontextprotocol/sdk/dist/cjs/server/requestBody.d.ts.map +1 -0
- package/node_modules/@modelcontextprotocol/sdk/dist/cjs/server/requestBody.js +64 -0
- package/node_modules/@modelcontextprotocol/sdk/dist/cjs/server/requestBody.js.map +1 -0
- package/node_modules/@modelcontextprotocol/sdk/dist/cjs/server/sseKeepAlive.d.ts +5 -0
- package/node_modules/@modelcontextprotocol/sdk/dist/cjs/server/sseKeepAlive.d.ts.map +1 -0
- package/node_modules/@modelcontextprotocol/sdk/dist/cjs/server/sseKeepAlive.js +17 -0
- package/node_modules/@modelcontextprotocol/sdk/dist/cjs/server/sseKeepAlive.js.map +1 -0
- package/node_modules/@modelcontextprotocol/sdk/dist/cjs/server/stdio.d.ts +9 -1
- package/node_modules/@modelcontextprotocol/sdk/dist/cjs/server/stdio.d.ts.map +1 -1
- package/node_modules/@modelcontextprotocol/sdk/dist/cjs/server/stdio.js +10 -4
- package/node_modules/@modelcontextprotocol/sdk/dist/cjs/server/stdio.js.map +1 -1
- package/node_modules/@modelcontextprotocol/sdk/dist/cjs/server/webStandardStreamableHttp.d.ts +31 -1
- package/node_modules/@modelcontextprotocol/sdk/dist/cjs/server/webStandardStreamableHttp.d.ts.map +1 -1
- package/node_modules/@modelcontextprotocol/sdk/dist/cjs/server/webStandardStreamableHttp.js +252 -42
- package/node_modules/@modelcontextprotocol/sdk/dist/cjs/server/webStandardStreamableHttp.js.map +1 -1
- package/node_modules/@modelcontextprotocol/sdk/dist/cjs/server/zod-compat.d.ts.map +1 -1
- package/node_modules/@modelcontextprotocol/sdk/dist/cjs/server/zod-compat.js +25 -6
- package/node_modules/@modelcontextprotocol/sdk/dist/cjs/server/zod-compat.js.map +1 -1
- package/node_modules/@modelcontextprotocol/sdk/dist/cjs/shared/auth.d.ts +3 -0
- package/node_modules/@modelcontextprotocol/sdk/dist/cjs/shared/auth.d.ts.map +1 -1
- package/node_modules/@modelcontextprotocol/sdk/dist/cjs/shared/auth.js +12 -2
- package/node_modules/@modelcontextprotocol/sdk/dist/cjs/shared/auth.js.map +1 -1
- package/node_modules/@modelcontextprotocol/sdk/dist/cjs/shared/mediaType.d.ts +32 -0
- package/node_modules/@modelcontextprotocol/sdk/dist/cjs/shared/mediaType.d.ts.map +1 -0
- package/node_modules/@modelcontextprotocol/sdk/dist/cjs/shared/mediaType.js +64 -0
- package/node_modules/@modelcontextprotocol/sdk/dist/cjs/shared/mediaType.js.map +1 -0
- package/node_modules/@modelcontextprotocol/sdk/dist/cjs/shared/protocol.d.ts +1 -0
- package/node_modules/@modelcontextprotocol/sdk/dist/cjs/shared/protocol.d.ts.map +1 -1
- package/node_modules/@modelcontextprotocol/sdk/dist/cjs/shared/protocol.js +39 -9
- package/node_modules/@modelcontextprotocol/sdk/dist/cjs/shared/protocol.js.map +1 -1
- package/node_modules/@modelcontextprotocol/sdk/dist/cjs/shared/stdio.d.ts +5 -0
- package/node_modules/@modelcontextprotocol/sdk/dist/cjs/shared/stdio.d.ts.map +1 -1
- package/node_modules/@modelcontextprotocol/sdk/dist/cjs/shared/stdio.js +10 -1
- package/node_modules/@modelcontextprotocol/sdk/dist/cjs/shared/stdio.js.map +1 -1
- package/node_modules/@modelcontextprotocol/sdk/dist/cjs/shared/transport.d.ts +10 -0
- package/node_modules/@modelcontextprotocol/sdk/dist/cjs/shared/transport.d.ts.map +1 -1
- package/node_modules/@modelcontextprotocol/sdk/dist/cjs/shared/transport.js +77 -0
- package/node_modules/@modelcontextprotocol/sdk/dist/cjs/shared/transport.js.map +1 -1
- package/node_modules/@modelcontextprotocol/sdk/dist/esm/client/auth-extensions.d.ts +43 -2
- package/node_modules/@modelcontextprotocol/sdk/dist/esm/client/auth-extensions.d.ts.map +1 -1
- package/node_modules/@modelcontextprotocol/sdk/dist/esm/client/auth-extensions.js +26 -5
- package/node_modules/@modelcontextprotocol/sdk/dist/esm/client/auth-extensions.js.map +1 -1
- package/node_modules/@modelcontextprotocol/sdk/dist/esm/client/auth.d.ts +26 -4
- package/node_modules/@modelcontextprotocol/sdk/dist/esm/client/auth.d.ts.map +1 -1
- package/node_modules/@modelcontextprotocol/sdk/dist/esm/client/auth.js +127 -24
- package/node_modules/@modelcontextprotocol/sdk/dist/esm/client/auth.js.map +1 -1
- package/node_modules/@modelcontextprotocol/sdk/dist/esm/client/index.d.ts.map +1 -1
- package/node_modules/@modelcontextprotocol/sdk/dist/esm/client/index.js +2 -13
- package/node_modules/@modelcontextprotocol/sdk/dist/esm/client/index.js.map +1 -1
- package/node_modules/@modelcontextprotocol/sdk/dist/esm/client/sse.d.ts +13 -0
- package/node_modules/@modelcontextprotocol/sdk/dist/esm/client/sse.d.ts.map +1 -1
- package/node_modules/@modelcontextprotocol/sdk/dist/esm/client/sse.js +18 -5
- package/node_modules/@modelcontextprotocol/sdk/dist/esm/client/sse.js.map +1 -1
- package/node_modules/@modelcontextprotocol/sdk/dist/esm/client/stdio.d.ts +7 -0
- package/node_modules/@modelcontextprotocol/sdk/dist/esm/client/stdio.d.ts.map +1 -1
- package/node_modules/@modelcontextprotocol/sdk/dist/esm/client/stdio.js +9 -3
- package/node_modules/@modelcontextprotocol/sdk/dist/esm/client/stdio.js.map +1 -1
- package/node_modules/@modelcontextprotocol/sdk/dist/esm/client/streamableHttp.d.ts +13 -0
- package/node_modules/@modelcontextprotocol/sdk/dist/esm/client/streamableHttp.d.ts.map +1 -1
- package/node_modules/@modelcontextprotocol/sdk/dist/esm/client/streamableHttp.js +29 -14
- package/node_modules/@modelcontextprotocol/sdk/dist/esm/client/streamableHttp.js.map +1 -1
- package/node_modules/@modelcontextprotocol/sdk/dist/esm/examples/client/simpleClientCredentials.d.ts +1 -0
- package/node_modules/@modelcontextprotocol/sdk/dist/esm/examples/client/simpleClientCredentials.d.ts.map +1 -1
- package/node_modules/@modelcontextprotocol/sdk/dist/esm/examples/client/simpleClientCredentials.js +11 -2
- package/node_modules/@modelcontextprotocol/sdk/dist/esm/examples/client/simpleClientCredentials.js.map +1 -1
- package/node_modules/@modelcontextprotocol/sdk/dist/esm/examples/server/demoInMemoryOAuthProvider.d.ts +2 -0
- package/node_modules/@modelcontextprotocol/sdk/dist/esm/examples/server/demoInMemoryOAuthProvider.d.ts.map +1 -1
- package/node_modules/@modelcontextprotocol/sdk/dist/esm/examples/server/elicitationFormExample.js +63 -20
- package/node_modules/@modelcontextprotocol/sdk/dist/esm/examples/server/elicitationFormExample.js.map +1 -1
- package/node_modules/@modelcontextprotocol/sdk/dist/esm/examples/server/elicitationUrlExample.js +71 -29
- package/node_modules/@modelcontextprotocol/sdk/dist/esm/examples/server/elicitationUrlExample.js.map +1 -1
- package/node_modules/@modelcontextprotocol/sdk/dist/esm/examples/server/jsonResponseStreamableHttp.js +45 -6
- package/node_modules/@modelcontextprotocol/sdk/dist/esm/examples/server/jsonResponseStreamableHttp.js.map +1 -1
- package/node_modules/@modelcontextprotocol/sdk/dist/esm/examples/server/simpleStreamableHttp.js +71 -31
- package/node_modules/@modelcontextprotocol/sdk/dist/esm/examples/server/simpleStreamableHttp.js.map +1 -1
- package/node_modules/@modelcontextprotocol/sdk/dist/esm/examples/server/simpleTaskInteractive.js +61 -18
- package/node_modules/@modelcontextprotocol/sdk/dist/esm/examples/server/simpleTaskInteractive.js.map +1 -1
- package/node_modules/@modelcontextprotocol/sdk/dist/esm/examples/server/sseAndStreamableHttpCompatibleServer.js +57 -19
- package/node_modules/@modelcontextprotocol/sdk/dist/esm/examples/server/sseAndStreamableHttpCompatibleServer.js.map +1 -1
- package/node_modules/@modelcontextprotocol/sdk/dist/esm/examples/server/ssePollingExample.js +64 -17
- package/node_modules/@modelcontextprotocol/sdk/dist/esm/examples/server/ssePollingExample.js.map +1 -1
- package/node_modules/@modelcontextprotocol/sdk/dist/esm/examples/server/standaloneSseWithGetStreamableHttp.js +61 -13
- package/node_modules/@modelcontextprotocol/sdk/dist/esm/examples/server/standaloneSseWithGetStreamableHttp.js.map +1 -1
- package/node_modules/@modelcontextprotocol/sdk/dist/esm/experimental/tasks/interfaces.d.ts +4 -0
- package/node_modules/@modelcontextprotocol/sdk/dist/esm/experimental/tasks/interfaces.d.ts.map +1 -1
- package/node_modules/@modelcontextprotocol/sdk/dist/esm/experimental/tasks/interfaces.js.map +1 -1
- package/node_modules/@modelcontextprotocol/sdk/dist/esm/experimental/tasks/stores/in-memory.d.ts +17 -8
- package/node_modules/@modelcontextprotocol/sdk/dist/esm/experimental/tasks/stores/in-memory.d.ts.map +1 -1
- package/node_modules/@modelcontextprotocol/sdk/dist/esm/experimental/tasks/stores/in-memory.js +31 -14
- package/node_modules/@modelcontextprotocol/sdk/dist/esm/experimental/tasks/stores/in-memory.js.map +1 -1
- package/node_modules/@modelcontextprotocol/sdk/dist/esm/server/auth/middleware/bearerAuth.d.ts +9 -1
- package/node_modules/@modelcontextprotocol/sdk/dist/esm/server/auth/middleware/bearerAuth.d.ts.map +1 -1
- package/node_modules/@modelcontextprotocol/sdk/dist/esm/server/auth/middleware/bearerAuth.js +17 -1
- package/node_modules/@modelcontextprotocol/sdk/dist/esm/server/auth/middleware/bearerAuth.js.map +1 -1
- package/node_modules/@modelcontextprotocol/sdk/dist/esm/server/auth/providers/proxyProvider.d.ts.map +1 -1
- package/node_modules/@modelcontextprotocol/sdk/dist/esm/server/auth/providers/proxyProvider.js +6 -3
- package/node_modules/@modelcontextprotocol/sdk/dist/esm/server/auth/providers/proxyProvider.js.map +1 -1
- package/node_modules/@modelcontextprotocol/sdk/dist/esm/server/express.d.ts.map +1 -1
- package/node_modules/@modelcontextprotocol/sdk/dist/esm/server/express.js +3 -1
- package/node_modules/@modelcontextprotocol/sdk/dist/esm/server/express.js.map +1 -1
- package/node_modules/@modelcontextprotocol/sdk/dist/esm/server/index.d.ts.map +1 -1
- package/node_modules/@modelcontextprotocol/sdk/dist/esm/server/index.js +2 -13
- package/node_modules/@modelcontextprotocol/sdk/dist/esm/server/index.js.map +1 -1
- package/node_modules/@modelcontextprotocol/sdk/dist/esm/server/mcp.d.ts +12 -1
- package/node_modules/@modelcontextprotocol/sdk/dist/esm/server/mcp.d.ts.map +1 -1
- package/node_modules/@modelcontextprotocol/sdk/dist/esm/server/mcp.js +46 -2
- package/node_modules/@modelcontextprotocol/sdk/dist/esm/server/mcp.js.map +1 -1
- package/node_modules/@modelcontextprotocol/sdk/dist/esm/server/requestBody.d.ts +25 -0
- package/node_modules/@modelcontextprotocol/sdk/dist/esm/server/requestBody.d.ts.map +1 -0
- package/node_modules/@modelcontextprotocol/sdk/dist/esm/server/requestBody.js +58 -0
- package/node_modules/@modelcontextprotocol/sdk/dist/esm/server/requestBody.js.map +1 -0
- package/node_modules/@modelcontextprotocol/sdk/dist/esm/server/sseKeepAlive.d.ts +5 -0
- package/node_modules/@modelcontextprotocol/sdk/dist/esm/server/sseKeepAlive.d.ts.map +1 -0
- package/node_modules/@modelcontextprotocol/sdk/dist/esm/server/sseKeepAlive.js +13 -0
- package/node_modules/@modelcontextprotocol/sdk/dist/esm/server/sseKeepAlive.js.map +1 -0
- package/node_modules/@modelcontextprotocol/sdk/dist/esm/server/stdio.d.ts +9 -1
- package/node_modules/@modelcontextprotocol/sdk/dist/esm/server/stdio.d.ts.map +1 -1
- package/node_modules/@modelcontextprotocol/sdk/dist/esm/server/stdio.js +10 -4
- package/node_modules/@modelcontextprotocol/sdk/dist/esm/server/stdio.js.map +1 -1
- package/node_modules/@modelcontextprotocol/sdk/dist/esm/server/webStandardStreamableHttp.d.ts +31 -1
- package/node_modules/@modelcontextprotocol/sdk/dist/esm/server/webStandardStreamableHttp.d.ts.map +1 -1
- package/node_modules/@modelcontextprotocol/sdk/dist/esm/server/webStandardStreamableHttp.js +252 -42
- package/node_modules/@modelcontextprotocol/sdk/dist/esm/server/webStandardStreamableHttp.js.map +1 -1
- package/node_modules/@modelcontextprotocol/sdk/dist/esm/server/zod-compat.d.ts.map +1 -1
- package/node_modules/@modelcontextprotocol/sdk/dist/esm/server/zod-compat.js +25 -6
- package/node_modules/@modelcontextprotocol/sdk/dist/esm/server/zod-compat.js.map +1 -1
- package/node_modules/@modelcontextprotocol/sdk/dist/esm/shared/auth.d.ts +3 -0
- package/node_modules/@modelcontextprotocol/sdk/dist/esm/shared/auth.d.ts.map +1 -1
- package/node_modules/@modelcontextprotocol/sdk/dist/esm/shared/auth.js +12 -2
- package/node_modules/@modelcontextprotocol/sdk/dist/esm/shared/auth.js.map +1 -1
- package/node_modules/@modelcontextprotocol/sdk/dist/esm/shared/mediaType.d.ts +32 -0
- package/node_modules/@modelcontextprotocol/sdk/dist/esm/shared/mediaType.d.ts.map +1 -0
- package/node_modules/@modelcontextprotocol/sdk/dist/esm/shared/mediaType.js +57 -0
- package/node_modules/@modelcontextprotocol/sdk/dist/esm/shared/mediaType.js.map +1 -0
- package/node_modules/@modelcontextprotocol/sdk/dist/esm/shared/protocol.d.ts +1 -0
- package/node_modules/@modelcontextprotocol/sdk/dist/esm/shared/protocol.d.ts.map +1 -1
- package/node_modules/@modelcontextprotocol/sdk/dist/esm/shared/protocol.js +39 -9
- package/node_modules/@modelcontextprotocol/sdk/dist/esm/shared/protocol.js.map +1 -1
- package/node_modules/@modelcontextprotocol/sdk/dist/esm/shared/stdio.d.ts +5 -0
- package/node_modules/@modelcontextprotocol/sdk/dist/esm/shared/stdio.d.ts.map +1 -1
- package/node_modules/@modelcontextprotocol/sdk/dist/esm/shared/stdio.js +9 -0
- package/node_modules/@modelcontextprotocol/sdk/dist/esm/shared/stdio.js.map +1 -1
- package/node_modules/@modelcontextprotocol/sdk/dist/esm/shared/transport.d.ts +10 -0
- package/node_modules/@modelcontextprotocol/sdk/dist/esm/shared/transport.d.ts.map +1 -1
- package/node_modules/@modelcontextprotocol/sdk/dist/esm/shared/transport.js +72 -0
- package/node_modules/@modelcontextprotocol/sdk/dist/esm/shared/transport.js.map +1 -1
- package/node_modules/@modelcontextprotocol/sdk/package.json +4 -3
- package/node_modules/@tianshu-ai/plugin-sdk/package.json +1 -1
- package/package.json +3 -3
- package/packages/plugin-sdk/package.json +1 -1
- package/packages/server/dist/chat/active-harnesses.d.ts +1 -1
- package/packages/server/dist/chat/active-harnesses.d.ts.map +1 -1
- package/packages/server/dist/chat/agent-loop.js +1 -1
- package/packages/server/dist/chat/agent-loop.js.map +1 -1
- package/packages/server/dist/chat/compact-decision.d.ts +4 -1
- package/packages/server/dist/chat/compact-decision.d.ts.map +1 -1
- package/packages/server/dist/chat/compact-decision.js +1 -1
- package/packages/server/dist/chat/compact-decision.js.map +1 -1
- package/packages/server/dist/chat/handler.d.ts.map +1 -1
- package/packages/server/dist/chat/handler.js +2 -1
- package/packages/server/dist/chat/handler.js.map +1 -1
- package/packages/server/dist/chat/host-tools.d.ts +1 -1
- package/packages/server/dist/chat/host-tools.d.ts.map +1 -1
- package/packages/server/dist/chat/pi-compat/compaction.d.ts +71 -0
- package/packages/server/dist/chat/pi-compat/compaction.d.ts.map +1 -0
- package/packages/server/dist/chat/pi-compat/compaction.js +150 -0
- package/packages/server/dist/chat/pi-compat/compaction.js.map +1 -0
- package/packages/server/dist/chat/pi-compat/context.d.ts +8 -0
- package/packages/server/dist/chat/pi-compat/context.d.ts.map +1 -0
- package/packages/server/dist/chat/pi-compat/context.js +17 -0
- package/packages/server/dist/chat/pi-compat/context.js.map +1 -0
- package/packages/server/dist/chat/pi-compat/execution-env.d.ts +99 -0
- package/packages/server/dist/chat/pi-compat/execution-env.d.ts.map +1 -0
- package/packages/server/dist/chat/pi-compat/execution-env.js +38 -0
- package/packages/server/dist/chat/pi-compat/execution-env.js.map +1 -0
- package/packages/server/dist/chat/pi-compat/harness-types.d.ts +87 -0
- package/packages/server/dist/chat/pi-compat/harness-types.d.ts.map +1 -0
- package/packages/server/dist/chat/pi-compat/harness-types.js +332 -0
- package/packages/server/dist/chat/pi-compat/harness-types.js.map +1 -0
- package/packages/server/dist/chat/pi-compat/index.d.ts +6 -0
- package/packages/server/dist/chat/pi-compat/index.d.ts.map +1 -0
- package/packages/server/dist/chat/pi-compat/index.js +17 -0
- package/packages/server/dist/chat/pi-compat/index.js.map +1 -0
- package/packages/server/dist/chat/pi-compat/session-types.d.ts +297 -0
- package/packages/server/dist/chat/pi-compat/session-types.d.ts.map +1 -0
- package/packages/server/dist/chat/pi-compat/session-types.js +184 -0
- package/packages/server/dist/chat/pi-compat/session-types.js.map +1 -0
- package/packages/server/dist/chat/sqlite-session-repo.d.ts +1 -1
- package/packages/server/dist/chat/sqlite-session-repo.d.ts.map +1 -1
- package/packages/server/dist/chat/sqlite-session-repo.js +1 -1
- package/packages/server/dist/chat/sqlite-session-repo.js.map +1 -1
- package/packages/server/dist/chat/sqlite-session-storage.d.ts +1 -1
- package/packages/server/dist/chat/sqlite-session-storage.d.ts.map +1 -1
- package/packages/server/dist/chat/sqlite-storage.d.ts +3 -3
- package/packages/server/dist/chat/sqlite-storage.d.ts.map +1 -1
- package/packages/server/dist/chat/structured-compaction.d.ts +1 -1
- package/packages/server/dist/chat/structured-compaction.d.ts.map +1 -1
- package/packages/server/dist/chat/stub-execution-env.d.ts +1 -1
- package/packages/server/dist/chat/stub-execution-env.d.ts.map +1 -1
- package/packages/server/dist/chat/stub-execution-env.js +3 -3
- package/packages/server/dist/chat/stub-execution-env.js.map +1 -1
- package/packages/server/package.json +3 -3
- package/packages/web/dist/assets/{DataSourceConfigForm-BZZHjW40.js → DataSourceConfigForm-DTnzZKOS.js} +1 -1
- package/packages/web/dist/assets/{bundle-web-BELFiEwP.js → bundle-web-Bxc8BUEa.js} +1 -1
- package/packages/web/dist/assets/{index-CGlM8-7D.js → index-skJDofaB.js} +98 -98
- package/packages/web/dist/assets/react-force-graph-2d-i5nkPyZe.js +42 -0
- package/packages/web/dist/index.html +1 -1
- package/packages/web/package.json +3 -3
- package/plugins/board/package.json +1 -1
- package/plugins/cron/package.json +1 -1
- package/plugins/files/package.json +1 -1
- package/plugins/microsandbox/package.json +1 -1
- package/plugins/openshell/package.json +1 -1
- package/plugins/reverse-mcp/package.json +1 -1
- package/plugins/web-search/package.json +1 -1
- package/plugins/wechat/package.json +1 -1
- package/plugins/wiki/package.json +2 -2
- package/plugins/workboard/package.json +1 -1
- package/plugins/workforce-studio/package.json +1 -1
- package/packages/web/dist/assets/react-force-graph-2d-DMV0hp1r.js +0 -44
|
@@ -42,6 +42,15 @@ export interface ClientCredentialsProviderOptions {
|
|
|
42
42
|
* Space-separated scopes values requested by the client.
|
|
43
43
|
*/
|
|
44
44
|
scope?: string;
|
|
45
|
+
/**
|
|
46
|
+
* The issuer URL of the authorization server these credentials were registered with.
|
|
47
|
+
* When set, `auth()` only presents them to that authorization server and throws if the
|
|
48
|
+
* MCP server advertises a different URL (one trailing slash aside).
|
|
49
|
+
*
|
|
50
|
+
* Omitting it is deprecated: the credentials then go to whichever authorization server
|
|
51
|
+
* the MCP server advertises first.
|
|
52
|
+
*/
|
|
53
|
+
expectedIssuer?: string;
|
|
45
54
|
}
|
|
46
55
|
/**
|
|
47
56
|
* OAuth provider for client_credentials grant with client_secret_basic authentication.
|
|
@@ -52,7 +61,8 @@ export interface ClientCredentialsProviderOptions {
|
|
|
52
61
|
* @example
|
|
53
62
|
* const provider = new ClientCredentialsProvider({
|
|
54
63
|
* clientId: 'my-client',
|
|
55
|
-
* clientSecret: 'my-secret'
|
|
64
|
+
* clientSecret: 'my-secret',
|
|
65
|
+
* expectedIssuer: 'https://auth.example.com'
|
|
56
66
|
* });
|
|
57
67
|
*
|
|
58
68
|
* const transport = new StreamableHTTPClientTransport(serverUrl, {
|
|
@@ -63,6 +73,10 @@ export declare class ClientCredentialsProvider implements OAuthClientProvider {
|
|
|
63
73
|
private _tokens?;
|
|
64
74
|
private _clientInfo;
|
|
65
75
|
private _clientMetadata;
|
|
76
|
+
constructor(options: ClientCredentialsProviderOptions & {
|
|
77
|
+
expectedIssuer: string;
|
|
78
|
+
});
|
|
79
|
+
/** @deprecated Pass `expectedIssuer` so the credentials are only sent to that authorization server. */
|
|
66
80
|
constructor(options: ClientCredentialsProviderOptions);
|
|
67
81
|
get redirectUrl(): undefined;
|
|
68
82
|
get clientMetadata(): OAuthClientMetadata;
|
|
@@ -104,6 +118,15 @@ export interface PrivateKeyJwtProviderOptions {
|
|
|
104
118
|
* Space-separated scopes values requested by the client.
|
|
105
119
|
*/
|
|
106
120
|
scope?: string;
|
|
121
|
+
/**
|
|
122
|
+
* The issuer URL of the authorization server these credentials were registered with.
|
|
123
|
+
* When set, `auth()` only presents them to that authorization server and throws if the
|
|
124
|
+
* MCP server advertises a different URL (one trailing slash aside).
|
|
125
|
+
*
|
|
126
|
+
* Omitting it is deprecated: the credentials then go to whichever authorization server
|
|
127
|
+
* the MCP server advertises first.
|
|
128
|
+
*/
|
|
129
|
+
expectedIssuer?: string;
|
|
107
130
|
}
|
|
108
131
|
/**
|
|
109
132
|
* OAuth provider for client_credentials grant with private_key_jwt authentication.
|
|
@@ -115,7 +138,8 @@ export interface PrivateKeyJwtProviderOptions {
|
|
|
115
138
|
* const provider = new PrivateKeyJwtProvider({
|
|
116
139
|
* clientId: 'my-client',
|
|
117
140
|
* privateKey: pemEncodedPrivateKey,
|
|
118
|
-
* algorithm: 'RS256'
|
|
141
|
+
* algorithm: 'RS256',
|
|
142
|
+
* expectedIssuer: 'https://auth.example.com'
|
|
119
143
|
* });
|
|
120
144
|
*
|
|
121
145
|
* const transport = new StreamableHTTPClientTransport(serverUrl, {
|
|
@@ -127,6 +151,10 @@ export declare class PrivateKeyJwtProvider implements OAuthClientProvider {
|
|
|
127
151
|
private _clientInfo;
|
|
128
152
|
private _clientMetadata;
|
|
129
153
|
addClientAuthentication: AddClientAuthentication;
|
|
154
|
+
constructor(options: PrivateKeyJwtProviderOptions & {
|
|
155
|
+
expectedIssuer: string;
|
|
156
|
+
});
|
|
157
|
+
/** @deprecated Pass `expectedIssuer` so the credentials are only sent to that authorization server. */
|
|
130
158
|
constructor(options: PrivateKeyJwtProviderOptions);
|
|
131
159
|
get redirectUrl(): undefined;
|
|
132
160
|
get clientMetadata(): OAuthClientMetadata;
|
|
@@ -162,6 +190,15 @@ export interface StaticPrivateKeyJwtProviderOptions {
|
|
|
162
190
|
* Space-separated scopes values requested by the client.
|
|
163
191
|
*/
|
|
164
192
|
scope?: string;
|
|
193
|
+
/**
|
|
194
|
+
* The issuer URL of the authorization server these credentials were registered with.
|
|
195
|
+
* When set, `auth()` only presents them to that authorization server and throws if the
|
|
196
|
+
* MCP server advertises a different URL (one trailing slash aside).
|
|
197
|
+
*
|
|
198
|
+
* Omitting it is deprecated: the credentials then go to whichever authorization server
|
|
199
|
+
* the MCP server advertises first.
|
|
200
|
+
*/
|
|
201
|
+
expectedIssuer?: string;
|
|
165
202
|
}
|
|
166
203
|
/**
|
|
167
204
|
* OAuth provider for client_credentials grant with a static private_key_jwt assertion.
|
|
@@ -175,6 +212,10 @@ export declare class StaticPrivateKeyJwtProvider implements OAuthClientProvider
|
|
|
175
212
|
private _clientInfo;
|
|
176
213
|
private _clientMetadata;
|
|
177
214
|
addClientAuthentication: AddClientAuthentication;
|
|
215
|
+
constructor(options: StaticPrivateKeyJwtProviderOptions & {
|
|
216
|
+
expectedIssuer: string;
|
|
217
|
+
});
|
|
218
|
+
/** @deprecated Pass `expectedIssuer` so the credentials are only sent to that authorization server. */
|
|
178
219
|
constructor(options: StaticPrivateKeyJwtProviderOptions);
|
|
179
220
|
get redirectUrl(): undefined;
|
|
180
221
|
get clientMetadata(): OAuthClientMetadata;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"auth-extensions.d.ts","sourceRoot":"","sources":["../../../src/client/auth-extensions.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAGH,OAAO,EAAE,sBAAsB,EAAE,mBAAmB,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAC7F,OAAO,EAAE,uBAAuB,EAAE,mBAAmB,EAAE,MAAM,WAAW,CAAC;AAEzE;;;;;;GAMG;AACH,wBAAgB,uBAAuB,CAAC,OAAO,EAAE;IAC7C,MAAM,EAAE,MAAM,CAAC;IACf,OAAO,EAAE,MAAM,CAAC;IAChB,UAAU,EAAE,MAAM,GAAG,UAAU,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAC1D,GAAG,EAAE,MAAM,CAAC;IACZ,QAAQ,CAAC,EAAE,MAAM,GAAG,GAAG,CAAC;IACxB,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,MAAM,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CACpC,GAAG,uBAAuB,CAgE1B;
|
|
1
|
+
{"version":3,"file":"auth-extensions.d.ts","sourceRoot":"","sources":["../../../src/client/auth-extensions.ts"],"names":[],"mappings":"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"}
|
|
@@ -99,6 +99,22 @@ function createPrivateKeyJwtAuth(options) {
|
|
|
99
99
|
params.set('client_assertion_type', 'urn:ietf:params:oauth:client-assertion-type:jwt-bearer');
|
|
100
100
|
};
|
|
101
101
|
}
|
|
102
|
+
/**
|
|
103
|
+
* The `issuer` stamp for constructor-supplied client information. Omitting `expectedIssuer` is
|
|
104
|
+
* deprecated: nothing else says which authorization server such credentials belong to.
|
|
105
|
+
*/
|
|
106
|
+
function checkedExpectedIssuer(expectedIssuer) {
|
|
107
|
+
if (expectedIssuer === undefined) {
|
|
108
|
+
// eslint-disable-next-line no-console
|
|
109
|
+
console.warn('[mcp-sdk] Omitting `expectedIssuer` is deprecated. Without it, the MCP server decides which authorization ' +
|
|
110
|
+
"server receives this client's credentials; pass your authorization server's issuer URL as " +
|
|
111
|
+
'`expectedIssuer` so they are only sent there.');
|
|
112
|
+
}
|
|
113
|
+
else if (typeof expectedIssuer !== 'string' || !expectedIssuer) {
|
|
114
|
+
throw new Error("expectedIssuer must be the authorization server's issuer URL");
|
|
115
|
+
}
|
|
116
|
+
return expectedIssuer;
|
|
117
|
+
}
|
|
102
118
|
/**
|
|
103
119
|
* OAuth provider for client_credentials grant with client_secret_basic authentication.
|
|
104
120
|
*
|
|
@@ -108,7 +124,8 @@ function createPrivateKeyJwtAuth(options) {
|
|
|
108
124
|
* @example
|
|
109
125
|
* const provider = new ClientCredentialsProvider({
|
|
110
126
|
* clientId: 'my-client',
|
|
111
|
-
* clientSecret: 'my-secret'
|
|
127
|
+
* clientSecret: 'my-secret',
|
|
128
|
+
* expectedIssuer: 'https://auth.example.com'
|
|
112
129
|
* });
|
|
113
130
|
*
|
|
114
131
|
* const transport = new StreamableHTTPClientTransport(serverUrl, {
|
|
@@ -119,7 +136,8 @@ class ClientCredentialsProvider {
|
|
|
119
136
|
constructor(options) {
|
|
120
137
|
this._clientInfo = {
|
|
121
138
|
client_id: options.clientId,
|
|
122
|
-
client_secret: options.clientSecret
|
|
139
|
+
client_secret: options.clientSecret,
|
|
140
|
+
issuer: checkedExpectedIssuer(options.expectedIssuer)
|
|
123
141
|
};
|
|
124
142
|
this._clientMetadata = {
|
|
125
143
|
client_name: options.clientName ?? 'client-credentials-client',
|
|
@@ -174,7 +192,8 @@ exports.ClientCredentialsProvider = ClientCredentialsProvider;
|
|
|
174
192
|
* const provider = new PrivateKeyJwtProvider({
|
|
175
193
|
* clientId: 'my-client',
|
|
176
194
|
* privateKey: pemEncodedPrivateKey,
|
|
177
|
-
* algorithm: 'RS256'
|
|
195
|
+
* algorithm: 'RS256',
|
|
196
|
+
* expectedIssuer: 'https://auth.example.com'
|
|
178
197
|
* });
|
|
179
198
|
*
|
|
180
199
|
* const transport = new StreamableHTTPClientTransport(serverUrl, {
|
|
@@ -184,7 +203,8 @@ exports.ClientCredentialsProvider = ClientCredentialsProvider;
|
|
|
184
203
|
class PrivateKeyJwtProvider {
|
|
185
204
|
constructor(options) {
|
|
186
205
|
this._clientInfo = {
|
|
187
|
-
client_id: options.clientId
|
|
206
|
+
client_id: options.clientId,
|
|
207
|
+
issuer: checkedExpectedIssuer(options.expectedIssuer)
|
|
188
208
|
};
|
|
189
209
|
this._clientMetadata = {
|
|
190
210
|
client_name: options.clientName ?? 'private-key-jwt-client',
|
|
@@ -246,7 +266,8 @@ exports.PrivateKeyJwtProvider = PrivateKeyJwtProvider;
|
|
|
246
266
|
class StaticPrivateKeyJwtProvider {
|
|
247
267
|
constructor(options) {
|
|
248
268
|
this._clientInfo = {
|
|
249
|
-
client_id: options.clientId
|
|
269
|
+
client_id: options.clientId,
|
|
270
|
+
issuer: checkedExpectedIssuer(options.expectedIssuer)
|
|
250
271
|
};
|
|
251
272
|
this._clientMetadata = {
|
|
252
273
|
client_name: options.clientName ?? 'static-private-key-jwt-client',
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"auth-extensions.js","sourceRoot":"","sources":["../../../src/client/auth-extensions.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"auth-extensions.js","sourceRoot":"","sources":["../../../src/client/auth-extensions.ts"],"names":[],"mappings":"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"}
|
|
@@ -35,6 +35,10 @@ export interface OAuthClientProvider {
|
|
|
35
35
|
* Loads information about this OAuth client, as registered already with the
|
|
36
36
|
* server, or returns `undefined` if the client is not registered with the
|
|
37
37
|
* server.
|
|
38
|
+
*
|
|
39
|
+
* A provider that returns pre-registered credentials should include `issuer`, the URL of
|
|
40
|
+
* the authorization server they were registered with; {@linkcode auth} then does not
|
|
41
|
+
* present them to any other.
|
|
38
42
|
*/
|
|
39
43
|
clientInformation(): OAuthClientInformationMixed | undefined | Promise<OAuthClientInformationMixed | undefined>;
|
|
40
44
|
/**
|
|
@@ -44,6 +48,10 @@ export interface OAuthClientProvider {
|
|
|
44
48
|
*
|
|
45
49
|
* This method is not required to be implemented if client information is
|
|
46
50
|
* statically known (e.g., pre-registered).
|
|
51
|
+
*
|
|
52
|
+
* The object carries `issuer`, the authorization server it was obtained from. Store it
|
|
53
|
+
* unchanged so that {@linkcode auth} does not reuse the registration with a different one.
|
|
54
|
+
* Client information stored without `issuer` is passed here, with it, after its first successful use.
|
|
47
55
|
*/
|
|
48
56
|
saveClientInformation?(clientInformation: OAuthClientInformationMixed): void | Promise<void>;
|
|
49
57
|
/**
|
|
@@ -54,6 +62,9 @@ export interface OAuthClientProvider {
|
|
|
54
62
|
/**
|
|
55
63
|
* Stores new OAuth tokens for the current session, after a successful
|
|
56
64
|
* authorization.
|
|
65
|
+
*
|
|
66
|
+
* The object carries `issuer`, the authorization server that issued the tokens. Store it
|
|
67
|
+
* unchanged so that {@linkcode auth} does not present the refresh token to a different one.
|
|
57
68
|
*/
|
|
58
69
|
saveTokens(tokens: OAuthTokens): void | Promise<void>;
|
|
59
70
|
/**
|
|
@@ -223,6 +234,17 @@ export declare function auth(provider: OAuthClientProvider, options: {
|
|
|
223
234
|
* Validate that the client_id is a valid URL with https scheme
|
|
224
235
|
*/
|
|
225
236
|
export declare function isHttpsUrl(value?: string): boolean;
|
|
237
|
+
/**
|
|
238
|
+
* Selects the RFC 8707 resource indicator for an MCP server: the provider's
|
|
239
|
+
* {@linkcode OAuthClientProvider.validateResourceURL | validateResourceURL} result when
|
|
240
|
+
* implemented, otherwise the protected resource metadata's `resource` (checked against the
|
|
241
|
+
* server URL with `checkResourceAllowed`), or `undefined` when there is no metadata.
|
|
242
|
+
*
|
|
243
|
+
* The result is a parsed `URL`, so a pathless indicator such as `https://example.com` has
|
|
244
|
+
* the `href` `https://example.com/`. {@linkcode auth} therefore sends the metadata string
|
|
245
|
+
* verbatim instead of this URL's `href` (#1968); callers that emit the `resource`
|
|
246
|
+
* parameter themselves should do the same.
|
|
247
|
+
*/
|
|
226
248
|
export declare function selectResourceURL(serverUrl: string | URL, provider: OAuthClientProvider, resourceMetadata?: OAuthProtectedResourceMetadata): Promise<URL | undefined>;
|
|
227
249
|
/**
|
|
228
250
|
* Extract resource_metadata, scope, and error from WWW-Authenticate header.
|
|
@@ -342,7 +364,7 @@ export declare function startAuthorization(authorizationServerUrl: string | URL,
|
|
|
342
364
|
redirectUrl: string | URL;
|
|
343
365
|
scope?: string;
|
|
344
366
|
state?: string;
|
|
345
|
-
resource?: URL;
|
|
367
|
+
resource?: string | URL;
|
|
346
368
|
}): Promise<{
|
|
347
369
|
authorizationUrl: URL;
|
|
348
370
|
codeVerifier: string;
|
|
@@ -377,7 +399,7 @@ export declare function exchangeAuthorization(authorizationServerUrl: string | U
|
|
|
377
399
|
authorizationCode: string;
|
|
378
400
|
codeVerifier: string;
|
|
379
401
|
redirectUri: string | URL;
|
|
380
|
-
resource?: URL;
|
|
402
|
+
resource?: string | URL;
|
|
381
403
|
addClientAuthentication?: OAuthClientProvider['addClientAuthentication'];
|
|
382
404
|
fetchFn?: FetchLike;
|
|
383
405
|
}): Promise<OAuthTokens>;
|
|
@@ -397,7 +419,7 @@ export declare function refreshAuthorization(authorizationServerUrl: string | UR
|
|
|
397
419
|
metadata?: AuthorizationServerMetadata;
|
|
398
420
|
clientInformation: OAuthClientInformationMixed;
|
|
399
421
|
refreshToken: string;
|
|
400
|
-
resource?: URL;
|
|
422
|
+
resource?: string | URL;
|
|
401
423
|
addClientAuthentication?: OAuthClientProvider['addClientAuthentication'];
|
|
402
424
|
fetchFn?: FetchLike;
|
|
403
425
|
}): Promise<OAuthTokens>;
|
|
@@ -429,7 +451,7 @@ export declare function refreshAuthorization(authorizationServerUrl: string | UR
|
|
|
429
451
|
*/
|
|
430
452
|
export declare function fetchToken(provider: OAuthClientProvider, authorizationServerUrl: string | URL, { metadata, resource, authorizationCode, fetchFn }?: {
|
|
431
453
|
metadata?: AuthorizationServerMetadata;
|
|
432
|
-
resource?: URL;
|
|
454
|
+
resource?: string | URL;
|
|
433
455
|
/** Authorization code for the default authorization_code grant flow */
|
|
434
456
|
authorizationCode?: string;
|
|
435
457
|
fetchFn?: FetchLike;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"auth.d.ts","sourceRoot":"","sources":["../../../src/client/auth.ts"],"names":[],"mappings":"AAEA,OAAO,EACH,mBAAmB,EAEnB,2BAA2B,EAC3B,WAAW,EACX,aAAa,EACb,0BAA0B,EAC1B,8BAA8B,EAE9B,2BAA2B,EAE9B,MAAM,mBAAmB,CAAC;AAQ3B,OAAO,EAKH,UAAU,EAGb,MAAM,0BAA0B,CAAC;AAClC,OAAO,EAAE,SAAS,
|
|
1
|
+
{"version":3,"file":"auth.d.ts","sourceRoot":"","sources":["../../../src/client/auth.ts"],"names":[],"mappings":"AAEA,OAAO,EACH,mBAAmB,EAEnB,2BAA2B,EAC3B,WAAW,EACX,aAAa,EACb,0BAA0B,EAC1B,8BAA8B,EAE9B,2BAA2B,EAE9B,MAAM,mBAAmB,CAAC;AAQ3B,OAAO,EAKH,UAAU,EAGb,MAAM,0BAA0B,CAAC;AAClC,OAAO,EAAE,SAAS,EAAyC,MAAM,wBAAwB,CAAC;AAE1F;;GAEG;AACH,MAAM,MAAM,uBAAuB,GAAG,CAClC,OAAO,EAAE,OAAO,EAChB,MAAM,EAAE,eAAe,EACvB,GAAG,EAAE,MAAM,GAAG,GAAG,EACjB,QAAQ,CAAC,EAAE,2BAA2B,KACrC,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;AAE1B;;;;;;GAMG;AACH,MAAM,WAAW,mBAAmB;IAChC;;;;OAIG;IACH,IAAI,WAAW,IAAI,MAAM,GAAG,GAAG,GAAG,SAAS,CAAC;IAE5C;;OAEG;IACH,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAE3B;;OAEG;IACH,IAAI,cAAc,IAAI,mBAAmB,CAAC;IAE1C;;OAEG;IACH,KAAK,CAAC,IAAI,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC;IAEnC;;;;;;;;OAQG;IACH,iBAAiB,IAAI,2BAA2B,GAAG,SAAS,GAAG,OAAO,CAAC,2BAA2B,GAAG,SAAS,CAAC,CAAC;IAEhH;;;;;;;;;;;OAWG;IACH,qBAAqB,CAAC,CAAC,iBAAiB,EAAE,2BAA2B,GAAG,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAE7F;;;OAGG;IACH,MAAM,IAAI,WAAW,GAAG,SAAS,GAAG,OAAO,CAAC,WAAW,GAAG,SAAS,CAAC,CAAC;IAErE;;;;;;OAMG;IACH,UAAU,CAAC,MAAM,EAAE,WAAW,GAAG,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAEtD;;OAEG;IACH,uBAAuB,CAAC,gBAAgB,EAAE,GAAG,GAAG,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAErE;;;OAGG;IACH,gBAAgB,CAAC,YAAY,EAAE,MAAM,GAAG,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAE7D;;;OAGG;IACH,YAAY,IAAI,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC;IAEzC;;;;;;;;;;;;;;;;;OAiBG;IACH,uBAAuB,CAAC,EAAE,uBAAuB,CAAC;IAElD;;;;;;OAMG;IACH,mBAAmB,CAAC,CAAC,SAAS,EAAE,MAAM,GAAG,GAAG,EAAE,QAAQ,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,GAAG,GAAG,SAAS,CAAC,CAAC;IAE3F;;;;OAIG;IACH,qBAAqB,CAAC,CAAC,KAAK,EAAE,KAAK,GAAG,QAAQ,GAAG,QAAQ,GAAG,UAAU,GAAG,WAAW,GAAG,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAE5G;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;OAmCG;IACH,mBAAmB,CAAC,CAAC,KAAK,CAAC,EAAE,MAAM,GAAG,eAAe,GAAG,OAAO,CAAC,eAAe,GAAG,SAAS,CAAC,GAAG,SAAS,CAAC;IAEzG;;;;;;;;;OASG;IACH,kBAAkB,CAAC,CAAC,KAAK,EAAE,mBAAmB,GAAG,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAEtE;;;;;;;;;;OAUG;IACH,cAAc,CAAC,IAAI,mBAAmB,GAAG,SAAS,GAAG,OAAO,CAAC,mBAAmB,GAAG,SAAS,CAAC,CAAC;CACjG;AAED;;;;;;GAMG;AAIH,MAAM,WAAW,mBAAoB,SAAQ,eAAe;IACxD,gFAAgF;IAChF,mBAAmB,CAAC,EAAE,MAAM,CAAC;CAChC;AAED,MAAM,MAAM,UAAU,GAAG,YAAY,GAAG,UAAU,CAAC;AAEnD,qBAAa,iBAAkB,SAAQ,KAAK;gBAC5B,OAAO,CAAC,EAAE,MAAM;CAG/B;AAED,KAAK,gBAAgB,GAAG,qBAAqB,GAAG,oBAAoB,GAAG,MAAM,CAAC;AAS9E;;;;;;;;;;;GAWG;AACH,wBAAgB,sBAAsB,CAAC,iBAAiB,EAAE,2BAA2B,EAAE,gBAAgB,EAAE,MAAM,EAAE,GAAG,gBAAgB,CAqCnI;AAoED;;;;;;;;;;GAUG;AACH,wBAAsB,kBAAkB,CAAC,KAAK,EAAE,QAAQ,GAAG,MAAM,GAAG,OAAO,CAAC,UAAU,CAAC,CAetF;AA2CD;;;;;GAKG;AACH,wBAAsB,IAAI,CACtB,QAAQ,EAAE,mBAAmB,EAC7B,OAAO,EAAE;IACL,SAAS,EAAE,MAAM,GAAG,GAAG,CAAC;IACxB,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,mBAAmB,CAAC,EAAE,GAAG,CAAC;IAC1B,OAAO,CAAC,EAAE,SAAS,CAAC;CACvB,GACF,OAAO,CAAC,UAAU,CAAC,CAgBrB;AAwOD;;;GAGG;AACH,wBAAgB,UAAU,CAAC,KAAK,CAAC,EAAE,MAAM,GAAG,OAAO,CAQlD;AAED;;;;;;;;;;GAUG;AACH,wBAAsB,iBAAiB,CACnC,SAAS,EAAE,MAAM,GAAG,GAAG,EACvB,QAAQ,EAAE,mBAAmB,EAC7B,gBAAgB,CAAC,EAAE,8BAA8B,GAClD,OAAO,CAAC,GAAG,GAAG,SAAS,CAAC,CAmB1B;AAED;;GAEG;AACH,wBAAgB,4BAA4B,CAAC,GAAG,EAAE,QAAQ,GAAG;IAAE,mBAAmB,CAAC,EAAE,GAAG,CAAC;IAAC,KAAK,CAAC,EAAE,MAAM,CAAC;IAAC,KAAK,CAAC,EAAE,MAAM,CAAA;CAAE,CA8BzH;AA0BD;;;GAGG;AACH,wBAAgB,0BAA0B,CAAC,GAAG,EAAE,QAAQ,GAAG,GAAG,GAAG,SAAS,CAsBzE;AAED;;;;;GAKG;AACH,wBAAsB,sCAAsC,CACxD,SAAS,EAAE,MAAM,GAAG,GAAG,EACvB,IAAI,CAAC,EAAE;IAAE,eAAe,CAAC,EAAE,MAAM,CAAC;IAAC,mBAAmB,CAAC,EAAE,MAAM,GAAG,GAAG,CAAA;CAAE,EACvE,OAAO,GAAE,SAAiB,GAC3B,OAAO,CAAC,8BAA8B,CAAC,CAgBzC;AAwFD;;;;;;;GAOG;AACH,wBAAsB,qBAAqB,CACvC,MAAM,EAAE,MAAM,GAAG,GAAG,EACpB,EACI,sBAAsB,EACtB,eAAe,EAClB,GAAE;IACC,sBAAsB,CAAC,EAAE,MAAM,GAAG,GAAG,CAAC;IACtC,eAAe,CAAC,EAAE,MAAM,CAAC;CACvB,EACN,OAAO,GAAE,SAAiB,GAC3B,OAAO,CAAC,aAAa,GAAG,SAAS,CAAC,CA4BpC;AAED;;;;;GAKG;AACH,wBAAgB,kBAAkB,CAAC,sBAAsB,EAAE,MAAM,GAAG,GAAG,GAAG;IAAE,GAAG,EAAE,GAAG,CAAC;IAAC,IAAI,EAAE,OAAO,GAAG,MAAM,CAAA;CAAE,EAAE,CAgD/G;AAED;;;;;;;;;;;;;;;GAeG;AACH,wBAAsB,mCAAmC,CACrD,sBAAsB,EAAE,MAAM,GAAG,GAAG,EACpC,EACI,OAAe,EACf,eAAyC,EAC5C,GAAE;IACC,OAAO,CAAC,EAAE,SAAS,CAAC;IACpB,eAAe,CAAC,EAAE,MAAM,CAAC;CACvB,GACP,OAAO,CAAC,2BAA2B,GAAG,SAAS,CAAC,CAyClD;AAED;;GAEG;AACH,MAAM,WAAW,eAAe;IAC5B;;;OAGG;IACH,sBAAsB,EAAE,MAAM,CAAC;IAE/B;;;OAGG;IACH,2BAA2B,CAAC,EAAE,2BAA2B,CAAC;IAE1D;;;OAGG;IACH,gBAAgB,CAAC,EAAE,8BAA8B,CAAC;CACrD;AAED;;;;;;;;;;;;;;;;;;;GAmBG;AACH,wBAAsB,uBAAuB,CACzC,SAAS,EAAE,MAAM,GAAG,GAAG,EACvB,IAAI,CAAC,EAAE;IACH,mBAAmB,CAAC,EAAE,GAAG,CAAC;IAC1B,OAAO,CAAC,EAAE,SAAS,CAAC;CACvB,GACF,OAAO,CAAC,eAAe,CAAC,CA8B1B;AAMD;;GAEG;AACH,wBAAsB,kBAAkB,CACpC,sBAAsB,EAAE,MAAM,GAAG,GAAG,EACpC,EACI,QAAQ,EACR,iBAAiB,EACjB,WAAW,EACX,KAAK,EACL,KAAK,EACL,QAAQ,EACX,EAAE;IACC,QAAQ,CAAC,EAAE,2BAA2B,CAAC;IACvC,iBAAiB,EAAE,2BAA2B,CAAC;IAC/C,WAAW,EAAE,MAAM,GAAG,GAAG,CAAC;IAC1B,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,QAAQ,CAAC,EAAE,MAAM,GAAG,GAAG,CAAC;CAC3B,GACF,OAAO,CAAC;IAAE,gBAAgB,EAAE,GAAG,CAAC;IAAC,YAAY,EAAE,MAAM,CAAA;CAAE,CAAC,CAkD1D;AAED;;;;;;;;;;GAUG;AACH,wBAAgB,+BAA+B,CAC3C,iBAAiB,EAAE,MAAM,EACzB,YAAY,EAAE,MAAM,EACpB,WAAW,EAAE,MAAM,GAAG,GAAG,GAC1B,eAAe,CAOjB;AAwDD;;;;;;;;;;;GAWG;AACH,wBAAsB,qBAAqB,CACvC,sBAAsB,EAAE,MAAM,GAAG,GAAG,EACpC,EACI,QAAQ,EACR,iBAAiB,EACjB,iBAAiB,EACjB,YAAY,EACZ,WAAW,EACX,QAAQ,EACR,uBAAuB,EACvB,OAAO,EACV,EAAE;IACC,QAAQ,CAAC,EAAE,2BAA2B,CAAC;IACvC,iBAAiB,EAAE,2BAA2B,CAAC;IAC/C,iBAAiB,EAAE,MAAM,CAAC;IAC1B,YAAY,EAAE,MAAM,CAAC;IACrB,WAAW,EAAE,MAAM,GAAG,GAAG,CAAC;IAC1B,QAAQ,CAAC,EAAE,MAAM,GAAG,GAAG,CAAC;IACxB,uBAAuB,CAAC,EAAE,mBAAmB,CAAC,yBAAyB,CAAC,CAAC;IACzE,OAAO,CAAC,EAAE,SAAS,CAAC;CACvB,GACF,OAAO,CAAC,WAAW,CAAC,CAWtB;AAED;;;;;;;;;;;GAWG;AACH,wBAAsB,oBAAoB,CACtC,sBAAsB,EAAE,MAAM,GAAG,GAAG,EACpC,EACI,QAAQ,EACR,iBAAiB,EACjB,YAAY,EACZ,QAAQ,EACR,uBAAuB,EACvB,OAAO,EACV,EAAE;IACC,QAAQ,CAAC,EAAE,2BAA2B,CAAC;IACvC,iBAAiB,EAAE,2BAA2B,CAAC;IAC/C,YAAY,EAAE,MAAM,CAAC;IACrB,QAAQ,CAAC,EAAE,MAAM,GAAG,GAAG,CAAC;IACxB,uBAAuB,CAAC,EAAE,mBAAmB,CAAC,yBAAyB,CAAC,CAAC;IACzE,OAAO,CAAC,EAAE,SAAS,CAAC;CACvB,GACF,OAAO,CAAC,WAAW,CAAC,CAiBtB;AAED;;;;;;;;;;;;;;;;;;;;;;;;;GAyBG;AACH,wBAAsB,UAAU,CAC5B,QAAQ,EAAE,mBAAmB,EAC7B,sBAAsB,EAAE,MAAM,GAAG,GAAG,EACpC,EACI,QAAQ,EACR,QAAQ,EACR,iBAAiB,EACjB,OAAO,EACV,GAAE;IACC,QAAQ,CAAC,EAAE,2BAA2B,CAAC;IACvC,QAAQ,CAAC,EAAE,MAAM,GAAG,GAAG,CAAC;IACxB,uEAAuE;IACvE,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B,OAAO,CAAC,EAAE,SAAS,CAAC;CAClB,GACP,OAAO,CAAC,WAAW,CAAC,CA2CtB;AAED;;;;;;GAMG;AACH,wBAAsB,cAAc,CAChC,sBAAsB,EAAE,MAAM,GAAG,GAAG,EACpC,EACI,QAAQ,EACR,cAAc,EACd,KAAK,EACL,OAAO,EACV,EAAE;IACC,QAAQ,CAAC,EAAE,2BAA2B,CAAC;IACvC,cAAc,EAAE,mBAAmB,CAAC;IACpC,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,OAAO,CAAC,EAAE,SAAS,CAAC;CACvB,GACF,OAAO,CAAC,0BAA0B,CAAC,CA6BrC"}
|
|
@@ -28,6 +28,7 @@ const auth_js_1 = require("../shared/auth.js");
|
|
|
28
28
|
const auth_js_2 = require("../shared/auth.js");
|
|
29
29
|
const auth_utils_js_1 = require("../shared/auth-utils.js");
|
|
30
30
|
const errors_js_1 = require("../server/auth/errors.js");
|
|
31
|
+
const transport_js_1 = require("../shared/transport.js");
|
|
31
32
|
class UnauthorizedError extends Error {
|
|
32
33
|
constructor(message) {
|
|
33
34
|
super(message ?? 'Unauthorized');
|
|
@@ -158,10 +159,49 @@ async function parseErrorResponse(input) {
|
|
|
158
159
|
}
|
|
159
160
|
catch (error) {
|
|
160
161
|
// Not a valid OAuth error response, but try to inform the user of the raw data anyway
|
|
161
|
-
const
|
|
162
|
+
const redirect = input instanceof Response ? (0, transport_js_1.unfollowedRedirect)(input, input.url) : undefined;
|
|
163
|
+
const errorMessage = `${statusCode ? `HTTP ${statusCode}: ` : ''}${redirect ?? `Invalid OAuth error response: ${error}. Raw body: ${body}`}`;
|
|
162
164
|
return new errors_js_1.ServerError(errorMessage);
|
|
163
165
|
}
|
|
164
166
|
}
|
|
167
|
+
/**
|
|
168
|
+
* Compares two authorization server identifiers, tolerating a single trailing `/`
|
|
169
|
+
* difference (`String(new URL(...))` is slash-suffixed, advertised values often are not).
|
|
170
|
+
*/
|
|
171
|
+
function issuersMatch(a, b) {
|
|
172
|
+
let [x, y] = [a, b];
|
|
173
|
+
try {
|
|
174
|
+
// Two URLs are compared as parsed, so the spelling of scheme, host or default port does not matter.
|
|
175
|
+
[x, y] = [new URL(a).href, new URL(b).href];
|
|
176
|
+
}
|
|
177
|
+
catch {
|
|
178
|
+
// Not two URLs: compared as written.
|
|
179
|
+
}
|
|
180
|
+
return x === y || (x.endsWith('/') && x.slice(0, -1) === y) || (y.endsWith('/') && y.slice(0, -1) === x);
|
|
181
|
+
}
|
|
182
|
+
/**
|
|
183
|
+
* {@linkcode auth} stamps everything it passes to `saveClientInformation` / `saveTokens` with
|
|
184
|
+
* `issuer`, the authorization server URL used for discovery. This returns `stored` unless its
|
|
185
|
+
* stamp names a different authorization server, in which case the caller behaves as if nothing
|
|
186
|
+
* were stored. A value without a stamp (saved by an earlier version) is returned as-is, and
|
|
187
|
+
* is stamped once this authorization server has accepted it.
|
|
188
|
+
*/
|
|
189
|
+
function discardIfIssuerMismatch(stored, issuer) {
|
|
190
|
+
// `null`: a `JSON.parse(storage.getItem(...))`-style getter with nothing stored.
|
|
191
|
+
if (!stored)
|
|
192
|
+
return undefined;
|
|
193
|
+
// A stamp that is not a string (raw storage) counts as no stamp.
|
|
194
|
+
if (typeof stored.issuer !== 'string')
|
|
195
|
+
return stored.issuer == null ? stored : { ...stored, issuer: undefined };
|
|
196
|
+
return issuersMatch(stored.issuer, issuer) ? stored : undefined;
|
|
197
|
+
}
|
|
198
|
+
// `issuer` is added by the client when it stores a value; authorization server responses are parsed without it.
|
|
199
|
+
const TokenResponseSchema = auth_js_2.OAuthTokensSchema.omit({ issuer: true });
|
|
200
|
+
const RegistrationResponseSchema = auth_js_2.OAuthClientInformationFullSchema.omit({ issuer: true });
|
|
201
|
+
function boundElsewhereError(stored, issuer) {
|
|
202
|
+
return new Error(`OAuth client information is bound to authorization server ${stored.issuer} and is not presented to ${issuer}. ` +
|
|
203
|
+
'Clear the stored client information, or correct `expectedIssuer`, if the authorization server has moved.');
|
|
204
|
+
}
|
|
165
205
|
/**
|
|
166
206
|
* Orchestrates the full auth flow with a server.
|
|
167
207
|
*
|
|
@@ -240,15 +280,45 @@ async function authInternal(provider, { serverUrl, authorizationCode, scope, res
|
|
|
240
280
|
authorizationServerMetadata: metadata
|
|
241
281
|
});
|
|
242
282
|
}
|
|
243
|
-
|
|
283
|
+
// Binding key for stored credentials: the authorization server URL that discovery used
|
|
284
|
+
// (advertised by the resource server, restored from discoveryState(), or the legacy
|
|
285
|
+
// resource-origin fallback). `metadata.issuer` is deliberately not used: this version does
|
|
286
|
+
// not check that the metadata document echoes the URL it was fetched from.
|
|
287
|
+
const issuer = String(authorizationServerUrl);
|
|
288
|
+
// Send the metadata's resource indicator verbatim: `selectResourceURL` returns a parsed
|
|
289
|
+
// `URL`, and `URL.href` appends "/" to a pathless indicator such as `https://example.com`,
|
|
290
|
+
// which exact-match authorization servers reject (#1968). A URL returned by the
|
|
291
|
+
// provider's own `validateResourceURL` is used as returned.
|
|
292
|
+
const selectedResource = await selectResourceURL(serverUrl, provider, resourceMetadata);
|
|
293
|
+
const resource = selectedResource && resourceMetadata && !provider.validateResourceURL ? resourceMetadata.resource : selectedResource;
|
|
244
294
|
// Apply scope selection strategy (SEP-835):
|
|
245
295
|
// 1. WWW-Authenticate scope (passed via `scope` param)
|
|
246
296
|
// 2. PRM scopes_supported
|
|
247
297
|
// 3. Client metadata scope (user-configured fallback)
|
|
248
298
|
// The resolved scope is used consistently for both DCR and the authorization request.
|
|
249
299
|
const resolvedScope = scope || resourceMetadata?.scopes_supported?.join(' ') || provider.clientMetadata.scope;
|
|
250
|
-
// Handle client registration if needed
|
|
251
|
-
|
|
300
|
+
// Handle client registration if needed. Client information stamped for a different
|
|
301
|
+
// authorization server reads back as `undefined`, so the flow re-registers exactly as if
|
|
302
|
+
// nothing were stored.
|
|
303
|
+
const storedClientInformation = await Promise.resolve(provider.clientInformation());
|
|
304
|
+
let clientInformation = discardIfIssuerMismatch(storedClientInformation, issuer);
|
|
305
|
+
const canRegisterAgain = provider.saveClientInformation !== undefined && !!provider.redirectUrl;
|
|
306
|
+
if (storedClientInformation && !clientInformation && !canRegisterAgain) {
|
|
307
|
+
// Pre-registered credentials, or a non-interactive client running on configured
|
|
308
|
+
// credentials: neither can be re-created by registering with this authorization server.
|
|
309
|
+
throw boundElsewhereError(storedClientInformation, issuer);
|
|
310
|
+
}
|
|
311
|
+
// Saved by an earlier version: bound to the first authorization server that accepts it.
|
|
312
|
+
const unstampedClientInformation = clientInformation?.issuer == null ? clientInformation : undefined;
|
|
313
|
+
const bindClientInformation = async () => {
|
|
314
|
+
try {
|
|
315
|
+
if (unstampedClientInformation)
|
|
316
|
+
await provider.saveClientInformation?.({ ...unstampedClientInformation, issuer });
|
|
317
|
+
}
|
|
318
|
+
catch {
|
|
319
|
+
// A provider that only expects this call after a registration keeps working, unbound.
|
|
320
|
+
}
|
|
321
|
+
};
|
|
252
322
|
if (!clientInformation) {
|
|
253
323
|
if (authorizationCode !== undefined) {
|
|
254
324
|
throw new Error('Existing OAuth client information is required when exchanging an authorization code');
|
|
@@ -261,9 +331,7 @@ async function authInternal(provider, { serverUrl, authorizationCode, scope, res
|
|
|
261
331
|
const shouldUseUrlBasedClientId = supportsUrlBasedClientId && clientMetadataUrl;
|
|
262
332
|
if (shouldUseUrlBasedClientId) {
|
|
263
333
|
// SEP-991: URL-based Client IDs
|
|
264
|
-
clientInformation = {
|
|
265
|
-
client_id: clientMetadataUrl
|
|
266
|
-
};
|
|
334
|
+
clientInformation = { client_id: clientMetadataUrl, issuer };
|
|
267
335
|
await provider.saveClientInformation?.(clientInformation);
|
|
268
336
|
}
|
|
269
337
|
else {
|
|
@@ -277,8 +345,8 @@ async function authInternal(provider, { serverUrl, authorizationCode, scope, res
|
|
|
277
345
|
scope: resolvedScope,
|
|
278
346
|
fetchFn
|
|
279
347
|
});
|
|
280
|
-
|
|
281
|
-
clientInformation
|
|
348
|
+
clientInformation = { ...fullInformation, issuer };
|
|
349
|
+
await provider.saveClientInformation(clientInformation);
|
|
282
350
|
}
|
|
283
351
|
}
|
|
284
352
|
// Non-interactive flows (e.g., client_credentials, jwt-bearer) don't need a redirect URL
|
|
@@ -291,10 +359,19 @@ async function authInternal(provider, { serverUrl, authorizationCode, scope, res
|
|
|
291
359
|
authorizationCode,
|
|
292
360
|
fetchFn
|
|
293
361
|
});
|
|
294
|
-
await
|
|
362
|
+
await bindClientInformation();
|
|
363
|
+
await provider.saveTokens({ ...tokens, issuer });
|
|
295
364
|
return 'AUTHORIZED';
|
|
296
365
|
}
|
|
297
|
-
|
|
366
|
+
// A refresh token stamped for a different authorization server reads back as `undefined`,
|
|
367
|
+
// so it is never posted to this one's token endpoint.
|
|
368
|
+
const tokens = discardIfIssuerMismatch(await provider.tokens(), issuer);
|
|
369
|
+
if (tokens?.refresh_token && tokens.issuer == null) {
|
|
370
|
+
// eslint-disable-next-line no-console
|
|
371
|
+
console.warn("[mcp-sdk] stored OAuth tokens have no 'issuer' property (saved by an earlier version, or by a provider that " +
|
|
372
|
+
'does not keep it) and are used as-is; make sure your OAuthClientProvider stores what saveTokens() and ' +
|
|
373
|
+
'saveClientInformation() receive unchanged.');
|
|
374
|
+
}
|
|
298
375
|
// Handle token refresh or new authorization
|
|
299
376
|
if (tokens?.refresh_token) {
|
|
300
377
|
try {
|
|
@@ -307,7 +384,8 @@ async function authInternal(provider, { serverUrl, authorizationCode, scope, res
|
|
|
307
384
|
addClientAuthentication: provider.addClientAuthentication,
|
|
308
385
|
fetchFn
|
|
309
386
|
});
|
|
310
|
-
await
|
|
387
|
+
await bindClientInformation();
|
|
388
|
+
await provider.saveTokens({ ...newTokens, issuer });
|
|
311
389
|
return 'AUTHORIZED';
|
|
312
390
|
}
|
|
313
391
|
catch (error) {
|
|
@@ -350,6 +428,17 @@ function isHttpsUrl(value) {
|
|
|
350
428
|
return false;
|
|
351
429
|
}
|
|
352
430
|
}
|
|
431
|
+
/**
|
|
432
|
+
* Selects the RFC 8707 resource indicator for an MCP server: the provider's
|
|
433
|
+
* {@linkcode OAuthClientProvider.validateResourceURL | validateResourceURL} result when
|
|
434
|
+
* implemented, otherwise the protected resource metadata's `resource` (checked against the
|
|
435
|
+
* server URL with `checkResourceAllowed`), or `undefined` when there is no metadata.
|
|
436
|
+
*
|
|
437
|
+
* The result is a parsed `URL`, so a pathless indicator such as `https://example.com` has
|
|
438
|
+
* the `href` `https://example.com/`. {@linkcode auth} therefore sends the metadata string
|
|
439
|
+
* verbatim instead of this URL's `href` (#1968); callers that emit the `resource`
|
|
440
|
+
* parameter themselves should do the same.
|
|
441
|
+
*/
|
|
353
442
|
async function selectResourceURL(serverUrl, provider, resourceMetadata) {
|
|
354
443
|
const defaultResource = (0, auth_utils_js_1.resourceUrlFromServerUrl)(serverUrl);
|
|
355
444
|
// If provider has custom validation, delegate to it
|
|
@@ -468,7 +557,7 @@ async function discoverOAuthProtectedResourceMetadata(serverUrl, opts, fetchFn =
|
|
|
468
557
|
*/
|
|
469
558
|
async function fetchWithCorsRetry(url, headers, fetchFn = fetch) {
|
|
470
559
|
try {
|
|
471
|
-
return await fetchFn(url, { headers });
|
|
560
|
+
return await (0, transport_js_1.fetchWithinOrigin)(fetchFn)(url, { headers });
|
|
472
561
|
}
|
|
473
562
|
catch (error) {
|
|
474
563
|
if (error instanceof TypeError) {
|
|
@@ -507,7 +596,7 @@ async function tryMetadataDiscovery(url, protocolVersion, fetchFn = fetch) {
|
|
|
507
596
|
* Determines if fallback to root discovery should be attempted
|
|
508
597
|
*/
|
|
509
598
|
function shouldAttemptFallback(response, pathname) {
|
|
510
|
-
return !response || (response.
|
|
599
|
+
return !response || (!response.ok && response.status < 500 && pathname !== '/');
|
|
511
600
|
}
|
|
512
601
|
/**
|
|
513
602
|
* Generic function for discovering OAuth metadata with fallback support
|
|
@@ -648,8 +737,8 @@ async function discoverAuthorizationServerMetadata(authorizationServerUrl, { fet
|
|
|
648
737
|
}
|
|
649
738
|
if (!response.ok) {
|
|
650
739
|
await response.body?.cancel();
|
|
651
|
-
// Continue looking for any 4xx response code.
|
|
652
|
-
if (response.status
|
|
740
|
+
// Continue looking for any 4xx response code, or a redirect that was not followed.
|
|
741
|
+
if (response.status < 500) {
|
|
653
742
|
continue; // Try next URL
|
|
654
743
|
}
|
|
655
744
|
throw new Error(`HTTP ${response.status} trying to load ${type === 'oauth' ? 'OAuth' : 'OpenID provider'} metadata from ${endpointUrl}`);
|
|
@@ -708,6 +797,9 @@ async function discoverOAuthServerInfo(serverUrl, opts) {
|
|
|
708
797
|
resourceMetadata
|
|
709
798
|
};
|
|
710
799
|
}
|
|
800
|
+
function resourceIndicatorToString(resource) {
|
|
801
|
+
return typeof resource === 'string' ? resource : resource.href;
|
|
802
|
+
}
|
|
711
803
|
/**
|
|
712
804
|
* Begins the authorization flow with the given server, by generating a PKCE challenge and constructing the authorization URL.
|
|
713
805
|
*/
|
|
@@ -748,7 +840,7 @@ async function startAuthorization(authorizationServerUrl, { metadata, clientInfo
|
|
|
748
840
|
authorizationUrl.searchParams.append('prompt', 'consent');
|
|
749
841
|
}
|
|
750
842
|
if (resource) {
|
|
751
|
-
authorizationUrl.searchParams.set('resource', resource
|
|
843
|
+
authorizationUrl.searchParams.set('resource', resourceIndicatorToString(resource));
|
|
752
844
|
}
|
|
753
845
|
return { authorizationUrl, codeVerifier };
|
|
754
846
|
}
|
|
@@ -782,7 +874,7 @@ async function executeTokenRequest(authorizationServerUrl, { metadata, tokenRequ
|
|
|
782
874
|
Accept: 'application/json'
|
|
783
875
|
});
|
|
784
876
|
if (resource) {
|
|
785
|
-
tokenRequestParams.set('resource', resource
|
|
877
|
+
tokenRequestParams.set('resource', resourceIndicatorToString(resource));
|
|
786
878
|
}
|
|
787
879
|
if (addClientAuthentication) {
|
|
788
880
|
await addClientAuthentication(headers, tokenRequestParams, tokenUrl, metadata);
|
|
@@ -792,7 +884,7 @@ async function executeTokenRequest(authorizationServerUrl, { metadata, tokenRequ
|
|
|
792
884
|
const authMethod = selectClientAuthMethod(clientInformation, supportedMethods);
|
|
793
885
|
applyClientAuthentication(authMethod, clientInformation, headers, tokenRequestParams);
|
|
794
886
|
}
|
|
795
|
-
const response = await (fetchFn ?? fetch)(tokenUrl, {
|
|
887
|
+
const response = await (0, transport_js_1.fetchWithinOrigin)(fetchFn ?? fetch)(tokenUrl, {
|
|
796
888
|
method: 'POST',
|
|
797
889
|
headers,
|
|
798
890
|
body: tokenRequestParams
|
|
@@ -800,7 +892,7 @@ async function executeTokenRequest(authorizationServerUrl, { metadata, tokenRequ
|
|
|
800
892
|
if (!response.ok) {
|
|
801
893
|
throw await parseErrorResponse(response);
|
|
802
894
|
}
|
|
803
|
-
return
|
|
895
|
+
return TokenResponseSchema.parse(await response.json());
|
|
804
896
|
}
|
|
805
897
|
/**
|
|
806
898
|
* Exchanges an authorization code for an access token with the given server.
|
|
@@ -880,6 +972,16 @@ async function refreshAuthorization(authorizationServerUrl, { metadata, clientIn
|
|
|
880
972
|
* const tokens = await fetchToken(provider, authServerUrl, { metadata });
|
|
881
973
|
*/
|
|
882
974
|
async function fetchToken(provider, authorizationServerUrl, { metadata, resource, authorizationCode, fetchFn } = {}) {
|
|
975
|
+
// Nothing is sent to an authorization server other than the one the client information is stamped for.
|
|
976
|
+
const readClientInformation = async () => {
|
|
977
|
+
const storedClientInformation = await provider.clientInformation();
|
|
978
|
+
const checked = discardIfIssuerMismatch(storedClientInformation, String(authorizationServerUrl));
|
|
979
|
+
if (storedClientInformation && !checked) {
|
|
980
|
+
throw boundElsewhereError(storedClientInformation, String(authorizationServerUrl));
|
|
981
|
+
}
|
|
982
|
+
return checked;
|
|
983
|
+
};
|
|
984
|
+
let clientInformation = await readClientInformation();
|
|
883
985
|
const scope = provider.clientMetadata.scope;
|
|
884
986
|
// Use provider's prepareTokenRequest if available, otherwise fall back to authorization_code
|
|
885
987
|
let tokenRequestParams;
|
|
@@ -897,11 +999,12 @@ async function fetchToken(provider, authorizationServerUrl, { metadata, resource
|
|
|
897
999
|
const codeVerifier = await provider.codeVerifier();
|
|
898
1000
|
tokenRequestParams = prepareAuthorizationCodeRequest(authorizationCode, codeVerifier, provider.redirectUrl);
|
|
899
1001
|
}
|
|
900
|
-
|
|
1002
|
+
// A provider may fill in its client information while the request is prepared.
|
|
1003
|
+
clientInformation ?? (clientInformation = await readClientInformation());
|
|
901
1004
|
return executeTokenRequest(authorizationServerUrl, {
|
|
902
1005
|
metadata,
|
|
903
1006
|
tokenRequestParams,
|
|
904
|
-
clientInformation
|
|
1007
|
+
clientInformation,
|
|
905
1008
|
addClientAuthentication: provider.addClientAuthentication,
|
|
906
1009
|
resource,
|
|
907
1010
|
fetchFn
|
|
@@ -925,7 +1028,7 @@ async function registerClient(authorizationServerUrl, { metadata, clientMetadata
|
|
|
925
1028
|
else {
|
|
926
1029
|
registrationUrl = new URL('/register', authorizationServerUrl);
|
|
927
1030
|
}
|
|
928
|
-
const response = await (fetchFn ?? fetch)(registrationUrl, {
|
|
1031
|
+
const response = await (0, transport_js_1.fetchWithinOrigin)(fetchFn ?? fetch)(registrationUrl, {
|
|
929
1032
|
method: 'POST',
|
|
930
1033
|
headers: {
|
|
931
1034
|
'Content-Type': 'application/json'
|
|
@@ -938,6 +1041,6 @@ async function registerClient(authorizationServerUrl, { metadata, clientMetadata
|
|
|
938
1041
|
if (!response.ok) {
|
|
939
1042
|
throw await parseErrorResponse(response);
|
|
940
1043
|
}
|
|
941
|
-
return
|
|
1044
|
+
return RegistrationResponseSchema.parse(await response.json());
|
|
942
1045
|
}
|
|
943
1046
|
//# sourceMappingURL=auth.js.map
|