@unkey/api 2.0.0-alpha.2 → 2.0.0-alpha.5
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/README.md +84 -0
- package/bin/mcp-server.js +37676 -0
- package/bin/mcp-server.js.map +275 -0
- package/dist/commonjs/funcs/livenessCheck.d.ts +2 -2
- package/dist/commonjs/funcs/livenessCheck.d.ts.map +1 -1
- package/dist/commonjs/funcs/livenessCheck.js +3 -5
- package/dist/commonjs/funcs/livenessCheck.js.map +1 -1
- package/dist/commonjs/funcs/ratelimitDeleteOverride.d.ts +1 -2
- package/dist/commonjs/funcs/ratelimitDeleteOverride.d.ts.map +1 -1
- package/dist/commonjs/funcs/ratelimitDeleteOverride.js +2 -5
- package/dist/commonjs/funcs/ratelimitDeleteOverride.js.map +1 -1
- package/dist/commonjs/funcs/ratelimitGetOverride.d.ts +1 -2
- package/dist/commonjs/funcs/ratelimitGetOverride.d.ts.map +1 -1
- package/dist/commonjs/funcs/ratelimitGetOverride.js +2 -5
- package/dist/commonjs/funcs/ratelimitGetOverride.js.map +1 -1
- package/dist/commonjs/funcs/ratelimitLimit.d.ts +1 -2
- package/dist/commonjs/funcs/ratelimitLimit.d.ts.map +1 -1
- package/dist/commonjs/funcs/ratelimitLimit.js +2 -5
- package/dist/commonjs/funcs/ratelimitLimit.js.map +1 -1
- package/dist/commonjs/funcs/ratelimitSetOverride.d.ts +1 -2
- package/dist/commonjs/funcs/ratelimitSetOverride.d.ts.map +1 -1
- package/dist/commonjs/funcs/ratelimitSetOverride.js +2 -5
- package/dist/commonjs/funcs/ratelimitSetOverride.js.map +1 -1
- package/dist/commonjs/lib/config.d.ts +2 -2
- package/dist/commonjs/lib/config.js +2 -2
- package/dist/commonjs/lib/matchers.d.ts +1 -1
- package/dist/commonjs/lib/matchers.d.ts.map +1 -1
- package/dist/commonjs/lib/matchers.js +11 -10
- package/dist/commonjs/lib/matchers.js.map +1 -1
- package/dist/commonjs/mcp-server/cli/start/command.d.ts +2 -0
- package/dist/commonjs/mcp-server/cli/start/command.d.ts.map +1 -0
- package/dist/commonjs/mcp-server/cli/start/command.js +138 -0
- package/dist/commonjs/mcp-server/cli/start/command.js.map +1 -0
- package/dist/commonjs/mcp-server/cli/start/impl.d.ts +18 -0
- package/dist/commonjs/mcp-server/cli/start/impl.d.ts.map +1 -0
- package/dist/commonjs/mcp-server/cli/start/impl.js +104 -0
- package/dist/commonjs/mcp-server/cli/start/impl.js.map +1 -0
- package/dist/commonjs/mcp-server/cli.d.ts +6 -0
- package/dist/commonjs/mcp-server/cli.d.ts.map +1 -0
- package/dist/commonjs/mcp-server/cli.js +10 -0
- package/dist/commonjs/mcp-server/cli.js.map +1 -0
- package/dist/commonjs/mcp-server/console-logger.d.ts +7 -0
- package/dist/commonjs/mcp-server/console-logger.d.ts.map +1 -0
- package/dist/commonjs/mcp-server/console-logger.js +59 -0
- package/dist/commonjs/mcp-server/console-logger.js.map +1 -0
- package/dist/commonjs/mcp-server/extensions.d.ts +11 -0
- package/dist/commonjs/mcp-server/extensions.d.ts.map +1 -0
- package/dist/commonjs/mcp-server/extensions.js +6 -0
- package/dist/commonjs/mcp-server/extensions.js.map +1 -0
- package/dist/commonjs/mcp-server/mcp-server.d.ts +2 -0
- package/dist/commonjs/mcp-server/mcp-server.d.ts.map +1 -0
- package/dist/commonjs/mcp-server/mcp-server.js +29 -0
- package/dist/commonjs/mcp-server/mcp-server.js.map +1 -0
- package/dist/commonjs/mcp-server/prompts.d.ts +26 -0
- package/dist/commonjs/mcp-server/prompts.d.ts.map +1 -0
- package/dist/commonjs/mcp-server/prompts.js +47 -0
- package/dist/commonjs/mcp-server/prompts.js.map +1 -0
- package/dist/commonjs/mcp-server/resources.d.ts +32 -0
- package/dist/commonjs/mcp-server/resources.d.ts.map +1 -0
- package/dist/commonjs/mcp-server/resources.js +79 -0
- package/dist/commonjs/mcp-server/resources.js.map +1 -0
- package/dist/commonjs/mcp-server/scopes.d.ts +3 -0
- package/dist/commonjs/mcp-server/scopes.d.ts.map +1 -0
- package/dist/commonjs/mcp-server/scopes.js +8 -0
- package/dist/commonjs/mcp-server/scopes.js.map +1 -0
- package/dist/commonjs/mcp-server/server.d.ts +13 -0
- package/dist/commonjs/mcp-server/server.d.ts.map +1 -0
- package/dist/commonjs/mcp-server/server.js +43 -0
- package/dist/commonjs/mcp-server/server.js.map +1 -0
- package/dist/commonjs/mcp-server/shared.d.ts +7 -0
- package/dist/commonjs/mcp-server/shared.d.ts.map +1 -0
- package/dist/commonjs/mcp-server/shared.js +98 -0
- package/dist/commonjs/mcp-server/shared.js.map +1 -0
- package/dist/commonjs/mcp-server/tools/livenessCheck.d.ts +3 -0
- package/dist/commonjs/mcp-server/tools/livenessCheck.d.ts.map +1 -0
- package/dist/commonjs/mcp-server/tools/livenessCheck.js +26 -0
- package/dist/commonjs/mcp-server/tools/livenessCheck.js.map +1 -0
- package/dist/commonjs/mcp-server/tools/ratelimitDeleteOverride.d.ts +8 -0
- package/dist/commonjs/mcp-server/tools/ratelimitDeleteOverride.d.ts.map +1 -0
- package/dist/commonjs/mcp-server/tools/ratelimitDeleteOverride.js +62 -0
- package/dist/commonjs/mcp-server/tools/ratelimitDeleteOverride.js.map +1 -0
- package/dist/commonjs/mcp-server/tools/ratelimitGetOverride.d.ts +8 -0
- package/dist/commonjs/mcp-server/tools/ratelimitGetOverride.d.ts.map +1 -0
- package/dist/commonjs/mcp-server/tools/ratelimitGetOverride.js +62 -0
- package/dist/commonjs/mcp-server/tools/ratelimitGetOverride.js.map +1 -0
- package/dist/commonjs/mcp-server/tools/ratelimitLimit.d.ts +8 -0
- package/dist/commonjs/mcp-server/tools/ratelimitLimit.d.ts.map +1 -0
- package/dist/commonjs/mcp-server/tools/ratelimitLimit.js +62 -0
- package/dist/commonjs/mcp-server/tools/ratelimitLimit.js.map +1 -0
- package/dist/commonjs/mcp-server/tools/ratelimitSetOverride.d.ts +8 -0
- package/dist/commonjs/mcp-server/tools/ratelimitSetOverride.d.ts.map +1 -0
- package/dist/commonjs/mcp-server/tools/ratelimitSetOverride.js +62 -0
- package/dist/commonjs/mcp-server/tools/ratelimitSetOverride.js.map +1 -0
- package/dist/commonjs/mcp-server/tools.d.ts +25 -0
- package/dist/commonjs/mcp-server/tools.d.ts.map +1 -0
- package/dist/commonjs/mcp-server/tools.js +81 -0
- package/dist/commonjs/mcp-server/tools.js.map +1 -0
- package/dist/commonjs/models/components/index.d.ts +0 -1
- package/dist/commonjs/models/components/index.d.ts.map +1 -1
- package/dist/commonjs/models/components/index.js +0 -1
- package/dist/commonjs/models/components/index.js.map +1 -1
- package/dist/commonjs/models/errors/apierror.d.ts +5 -8
- package/dist/commonjs/models/errors/apierror.d.ts.map +1 -1
- package/dist/commonjs/models/errors/apierror.js +9 -3
- package/dist/commonjs/models/errors/apierror.js.map +1 -1
- package/dist/commonjs/sdk/liveness.d.ts +2 -2
- package/dist/commonjs/sdk/liveness.d.ts.map +1 -1
- package/dist/commonjs/sdk/ratelimit.d.ts +4 -5
- package/dist/commonjs/sdk/ratelimit.d.ts.map +1 -1
- package/dist/commonjs/sdk/ratelimit.js.map +1 -1
- package/dist/esm/funcs/livenessCheck.d.ts +2 -2
- package/dist/esm/funcs/livenessCheck.d.ts.map +1 -1
- package/dist/esm/funcs/livenessCheck.js +3 -5
- package/dist/esm/funcs/livenessCheck.js.map +1 -1
- package/dist/esm/funcs/ratelimitDeleteOverride.d.ts +1 -2
- package/dist/esm/funcs/ratelimitDeleteOverride.d.ts.map +1 -1
- package/dist/esm/funcs/ratelimitDeleteOverride.js +2 -5
- package/dist/esm/funcs/ratelimitDeleteOverride.js.map +1 -1
- package/dist/esm/funcs/ratelimitGetOverride.d.ts +1 -2
- package/dist/esm/funcs/ratelimitGetOverride.d.ts.map +1 -1
- package/dist/esm/funcs/ratelimitGetOverride.js +2 -5
- package/dist/esm/funcs/ratelimitGetOverride.js.map +1 -1
- package/dist/esm/funcs/ratelimitLimit.d.ts +1 -2
- package/dist/esm/funcs/ratelimitLimit.d.ts.map +1 -1
- package/dist/esm/funcs/ratelimitLimit.js +2 -5
- package/dist/esm/funcs/ratelimitLimit.js.map +1 -1
- package/dist/esm/funcs/ratelimitSetOverride.d.ts +1 -2
- package/dist/esm/funcs/ratelimitSetOverride.d.ts.map +1 -1
- package/dist/esm/funcs/ratelimitSetOverride.js +2 -5
- package/dist/esm/funcs/ratelimitSetOverride.js.map +1 -1
- package/dist/esm/lib/config.d.ts +2 -2
- package/dist/esm/lib/config.js +2 -2
- package/dist/esm/lib/matchers.d.ts +1 -1
- package/dist/esm/lib/matchers.d.ts.map +1 -1
- package/dist/esm/lib/matchers.js +11 -10
- package/dist/esm/lib/matchers.js.map +1 -1
- package/dist/esm/mcp-server/build.d.mts.map +1 -0
- package/dist/esm/mcp-server/build.mjs +14 -0
- package/dist/esm/mcp-server/build.mjs.map +1 -0
- package/dist/esm/mcp-server/cli/start/command.d.ts +2 -0
- package/dist/esm/mcp-server/cli/start/command.d.ts.map +1 -0
- package/dist/esm/mcp-server/cli/start/command.js +102 -0
- package/dist/esm/mcp-server/cli/start/command.js.map +1 -0
- package/dist/esm/mcp-server/cli/start/impl.d.ts +18 -0
- package/dist/esm/mcp-server/cli/start/impl.d.ts.map +1 -0
- package/dist/esm/mcp-server/cli/start/impl.js +98 -0
- package/dist/esm/mcp-server/cli/start/impl.js.map +1 -0
- package/dist/esm/mcp-server/cli.d.ts +6 -0
- package/dist/esm/mcp-server/cli.d.ts.map +1 -0
- package/dist/esm/mcp-server/cli.js +7 -0
- package/dist/esm/mcp-server/cli.js.map +1 -0
- package/dist/esm/mcp-server/console-logger.d.ts +7 -0
- package/dist/esm/mcp-server/console-logger.d.ts.map +1 -0
- package/dist/esm/mcp-server/console-logger.js +55 -0
- package/dist/esm/mcp-server/console-logger.js.map +1 -0
- package/dist/esm/mcp-server/extensions.d.ts +11 -0
- package/dist/esm/mcp-server/extensions.d.ts.map +1 -0
- package/dist/esm/mcp-server/extensions.js +5 -0
- package/dist/esm/mcp-server/extensions.js.map +1 -0
- package/dist/esm/mcp-server/mcp-server.d.ts +2 -0
- package/dist/esm/mcp-server/mcp-server.d.ts.map +1 -0
- package/dist/esm/mcp-server/mcp-server.js +23 -0
- package/dist/esm/mcp-server/mcp-server.js.map +1 -0
- package/dist/esm/mcp-server/prompts.d.ts +26 -0
- package/dist/esm/mcp-server/prompts.d.ts.map +1 -0
- package/dist/esm/mcp-server/prompts.js +43 -0
- package/dist/esm/mcp-server/prompts.js.map +1 -0
- package/dist/esm/mcp-server/resources.d.ts +32 -0
- package/dist/esm/mcp-server/resources.d.ts.map +1 -0
- package/dist/esm/mcp-server/resources.js +74 -0
- package/dist/esm/mcp-server/resources.js.map +1 -0
- package/dist/esm/mcp-server/scopes.d.ts +3 -0
- package/dist/esm/mcp-server/scopes.d.ts.map +1 -0
- package/dist/esm/mcp-server/scopes.js +5 -0
- package/dist/esm/mcp-server/scopes.js.map +1 -0
- package/dist/esm/mcp-server/server.d.ts +13 -0
- package/dist/esm/mcp-server/server.d.ts.map +1 -0
- package/dist/esm/mcp-server/server.js +40 -0
- package/dist/esm/mcp-server/server.js.map +1 -0
- package/dist/esm/mcp-server/shared.d.ts +7 -0
- package/dist/esm/mcp-server/shared.d.ts.map +1 -0
- package/dist/esm/mcp-server/shared.js +59 -0
- package/dist/esm/mcp-server/shared.js.map +1 -0
- package/dist/esm/mcp-server/tools/livenessCheck.d.ts +3 -0
- package/dist/esm/mcp-server/tools/livenessCheck.d.ts.map +1 -0
- package/dist/esm/mcp-server/tools/livenessCheck.js +23 -0
- package/dist/esm/mcp-server/tools/livenessCheck.js.map +1 -0
- package/dist/esm/mcp-server/tools/ratelimitDeleteOverride.d.ts +8 -0
- package/dist/esm/mcp-server/tools/ratelimitDeleteOverride.d.ts.map +1 -0
- package/dist/esm/mcp-server/tools/ratelimitDeleteOverride.js +26 -0
- package/dist/esm/mcp-server/tools/ratelimitDeleteOverride.js.map +1 -0
- package/dist/esm/mcp-server/tools/ratelimitGetOverride.d.ts +8 -0
- package/dist/esm/mcp-server/tools/ratelimitGetOverride.d.ts.map +1 -0
- package/dist/esm/mcp-server/tools/ratelimitGetOverride.js +26 -0
- package/dist/esm/mcp-server/tools/ratelimitGetOverride.js.map +1 -0
- package/dist/esm/mcp-server/tools/ratelimitLimit.d.ts +8 -0
- package/dist/esm/mcp-server/tools/ratelimitLimit.d.ts.map +1 -0
- package/dist/esm/mcp-server/tools/ratelimitLimit.js +26 -0
- package/dist/esm/mcp-server/tools/ratelimitLimit.js.map +1 -0
- package/dist/esm/mcp-server/tools/ratelimitSetOverride.d.ts +8 -0
- package/dist/esm/mcp-server/tools/ratelimitSetOverride.d.ts.map +1 -0
- package/dist/esm/mcp-server/tools/ratelimitSetOverride.js +26 -0
- package/dist/esm/mcp-server/tools/ratelimitSetOverride.js.map +1 -0
- package/dist/esm/mcp-server/tools.d.ts +25 -0
- package/dist/esm/mcp-server/tools.d.ts.map +1 -0
- package/dist/esm/mcp-server/tools.js +77 -0
- package/dist/esm/mcp-server/tools.js.map +1 -0
- package/dist/esm/models/components/index.d.ts +0 -1
- package/dist/esm/models/components/index.d.ts.map +1 -1
- package/dist/esm/models/components/index.js +0 -1
- package/dist/esm/models/components/index.js.map +1 -1
- package/dist/esm/models/errors/apierror.d.ts +5 -8
- package/dist/esm/models/errors/apierror.d.ts.map +1 -1
- package/dist/esm/models/errors/apierror.js +9 -3
- package/dist/esm/models/errors/apierror.js.map +1 -1
- package/dist/esm/sdk/liveness.d.ts +2 -2
- package/dist/esm/sdk/liveness.d.ts.map +1 -1
- package/dist/esm/sdk/ratelimit.d.ts +4 -5
- package/dist/esm/sdk/ratelimit.d.ts.map +1 -1
- package/dist/esm/sdk/ratelimit.js.map +1 -1
- package/docs/sdks/liveness/README.md +1 -1
- package/docs/sdks/ratelimit/README.md +4 -4
- package/jsr.json +1 -1
- package/package.json +18 -14
- package/src/funcs/livenessCheck.ts +6 -8
- package/src/funcs/ratelimitDeleteOverride.ts +5 -8
- package/src/funcs/ratelimitGetOverride.ts +5 -8
- package/src/funcs/ratelimitLimit.ts +5 -8
- package/src/funcs/ratelimitSetOverride.ts +5 -8
- package/src/lib/config.ts +2 -2
- package/src/lib/matchers.ts +16 -10
- package/src/mcp-server/cli/start/command.ts +107 -0
- package/src/mcp-server/cli/start/impl.ts +134 -0
- package/src/mcp-server/cli.ts +13 -0
- package/src/mcp-server/console-logger.ts +71 -0
- package/src/mcp-server/extensions.ts +17 -0
- package/src/mcp-server/mcp-server.ts +26 -0
- package/src/mcp-server/prompts.ts +110 -0
- package/src/mcp-server/resources.ts +158 -0
- package/src/mcp-server/scopes.ts +7 -0
- package/src/mcp-server/server.ts +69 -0
- package/src/mcp-server/shared.ts +75 -0
- package/src/mcp-server/tools/livenessCheck.ts +30 -0
- package/src/mcp-server/tools/ratelimitDeleteOverride.ts +35 -0
- package/src/mcp-server/tools/ratelimitGetOverride.ts +35 -0
- package/src/mcp-server/tools/ratelimitLimit.ts +35 -0
- package/src/mcp-server/tools/ratelimitSetOverride.ts +35 -0
- package/src/mcp-server/tools.ts +126 -0
- package/src/models/components/index.ts +0 -1
- package/src/models/errors/apierror.ts +13 -7
- package/src/sdk/liveness.ts +2 -2
- package/src/sdk/ratelimit.ts +4 -5
- package/dist/commonjs/models/components/httpmetadata.d.ts +0 -37
- package/dist/commonjs/models/components/httpmetadata.d.ts.map +0 -1
- package/dist/commonjs/models/components/httpmetadata.js +0 -86
- package/dist/commonjs/models/components/httpmetadata.js.map +0 -1
- package/dist/commonjs/models/operations/index.d.ts +0 -6
- package/dist/commonjs/models/operations/index.d.ts.map +0 -1
- package/dist/commonjs/models/operations/index.js +0 -25
- package/dist/commonjs/models/operations/index.js.map +0 -1
- package/dist/commonjs/models/operations/liveness.d.ts +0 -35
- package/dist/commonjs/models/operations/liveness.d.ts.map +0 -1
- package/dist/commonjs/models/operations/liveness.js +0 -85
- package/dist/commonjs/models/operations/liveness.js.map +0 -1
- package/dist/commonjs/models/operations/ratelimitdeleteoverride.d.ts +0 -35
- package/dist/commonjs/models/operations/ratelimitdeleteoverride.d.ts.map +0 -1
- package/dist/commonjs/models/operations/ratelimitdeleteoverride.js +0 -85
- package/dist/commonjs/models/operations/ratelimitdeleteoverride.js.map +0 -1
- package/dist/commonjs/models/operations/ratelimitgetoverride.d.ts +0 -35
- package/dist/commonjs/models/operations/ratelimitgetoverride.d.ts.map +0 -1
- package/dist/commonjs/models/operations/ratelimitgetoverride.js +0 -85
- package/dist/commonjs/models/operations/ratelimitgetoverride.js.map +0 -1
- package/dist/commonjs/models/operations/ratelimitsetoverride.d.ts +0 -35
- package/dist/commonjs/models/operations/ratelimitsetoverride.d.ts.map +0 -1
- package/dist/commonjs/models/operations/ratelimitsetoverride.js +0 -85
- package/dist/commonjs/models/operations/ratelimitsetoverride.js.map +0 -1
- package/dist/commonjs/models/operations/v1ratelimitlimit.d.ts +0 -35
- package/dist/commonjs/models/operations/v1ratelimitlimit.d.ts.map +0 -1
- package/dist/commonjs/models/operations/v1ratelimitlimit.js +0 -85
- package/dist/commonjs/models/operations/v1ratelimitlimit.js.map +0 -1
- package/dist/esm/models/components/httpmetadata.d.ts +0 -37
- package/dist/esm/models/components/httpmetadata.d.ts.map +0 -1
- package/dist/esm/models/components/httpmetadata.js +0 -48
- package/dist/esm/models/components/httpmetadata.js.map +0 -1
- package/dist/esm/models/operations/index.d.ts +0 -6
- package/dist/esm/models/operations/index.d.ts.map +0 -1
- package/dist/esm/models/operations/index.js +0 -9
- package/dist/esm/models/operations/index.js.map +0 -1
- package/dist/esm/models/operations/liveness.d.ts +0 -35
- package/dist/esm/models/operations/liveness.d.ts.map +0 -1
- package/dist/esm/models/operations/liveness.js +0 -47
- package/dist/esm/models/operations/liveness.js.map +0 -1
- package/dist/esm/models/operations/ratelimitdeleteoverride.d.ts +0 -35
- package/dist/esm/models/operations/ratelimitdeleteoverride.d.ts.map +0 -1
- package/dist/esm/models/operations/ratelimitdeleteoverride.js +0 -47
- package/dist/esm/models/operations/ratelimitdeleteoverride.js.map +0 -1
- package/dist/esm/models/operations/ratelimitgetoverride.d.ts +0 -35
- package/dist/esm/models/operations/ratelimitgetoverride.d.ts.map +0 -1
- package/dist/esm/models/operations/ratelimitgetoverride.js +0 -47
- package/dist/esm/models/operations/ratelimitgetoverride.js.map +0 -1
- package/dist/esm/models/operations/ratelimitsetoverride.d.ts +0 -35
- package/dist/esm/models/operations/ratelimitsetoverride.d.ts.map +0 -1
- package/dist/esm/models/operations/ratelimitsetoverride.js +0 -47
- package/dist/esm/models/operations/ratelimitsetoverride.js.map +0 -1
- package/dist/esm/models/operations/v1ratelimitlimit.d.ts +0 -35
- package/dist/esm/models/operations/v1ratelimitlimit.d.ts.map +0 -1
- package/dist/esm/models/operations/v1ratelimitlimit.js +0 -47
- package/dist/esm/models/operations/v1ratelimitlimit.js.map +0 -1
- package/src/models/components/httpmetadata.ts +0 -87
- package/src/models/operations/index.ts +0 -9
- package/src/models/operations/liveness.ts +0 -89
- package/src/models/operations/ratelimitdeleteoverride.ts +0 -95
- package/src/models/operations/ratelimitgetoverride.ts +0 -93
- package/src/models/operations/ratelimitsetoverride.ts +0 -93
- package/src/models/operations/v1ratelimitlimit.ts +0 -91
|
@@ -21,7 +21,6 @@ import {
|
|
|
21
21
|
} from "../models/errors/httpclienterrors.js";
|
|
22
22
|
import * as errors from "../models/errors/index.js";
|
|
23
23
|
import { SDKValidationError } from "../models/errors/sdkvalidationerror.js";
|
|
24
|
-
import * as operations from "../models/operations/index.js";
|
|
25
24
|
import { APICall, APIPromise } from "../types/async.js";
|
|
26
25
|
import { Result } from "../types/fp.js";
|
|
27
26
|
|
|
@@ -31,7 +30,7 @@ export function ratelimitSetOverride(
|
|
|
31
30
|
options?: RequestOptions,
|
|
32
31
|
): APIPromise<
|
|
33
32
|
Result<
|
|
34
|
-
|
|
33
|
+
components.V2RatelimitSetOverrideResponseBody,
|
|
35
34
|
| errors.BadRequestError
|
|
36
35
|
| errors.BaseError
|
|
37
36
|
| errors.BaseError
|
|
@@ -58,7 +57,7 @@ async function $do(
|
|
|
58
57
|
): Promise<
|
|
59
58
|
[
|
|
60
59
|
Result<
|
|
61
|
-
|
|
60
|
+
components.V2RatelimitSetOverrideResponseBody,
|
|
62
61
|
| errors.BadRequestError
|
|
63
62
|
| errors.BaseError
|
|
64
63
|
| errors.BaseError
|
|
@@ -150,7 +149,7 @@ async function $do(
|
|
|
150
149
|
};
|
|
151
150
|
|
|
152
151
|
const [result] = await M.match<
|
|
153
|
-
|
|
152
|
+
components.V2RatelimitSetOverrideResponseBody,
|
|
154
153
|
| errors.BadRequestError
|
|
155
154
|
| errors.BaseError
|
|
156
155
|
| errors.BaseError
|
|
@@ -162,9 +161,7 @@ async function $do(
|
|
|
162
161
|
| RequestTimeoutError
|
|
163
162
|
| ConnectionError
|
|
164
163
|
>(
|
|
165
|
-
M.json(200,
|
|
166
|
-
key: "V2RatelimitSetOverrideResponseBody",
|
|
167
|
-
}),
|
|
164
|
+
M.json(200, components.V2RatelimitSetOverrideResponseBody$inboundSchema),
|
|
168
165
|
M.jsonErr(400, errors.BadRequestError$inboundSchema, {
|
|
169
166
|
ctype: "application/problem+json",
|
|
170
167
|
}),
|
|
@@ -176,7 +173,7 @@ async function $do(
|
|
|
176
173
|
}),
|
|
177
174
|
M.fail("4XX"),
|
|
178
175
|
M.fail("5XX"),
|
|
179
|
-
)(response,
|
|
176
|
+
)(response, { extraFields: responseFields });
|
|
180
177
|
if (!result.ok) {
|
|
181
178
|
return [result, { status: "complete", request: req, response }];
|
|
182
179
|
}
|
package/src/lib/config.ts
CHANGED
|
@@ -54,7 +54,7 @@ export function serverURLFromOptions(options: SDKOptions): URL | null {
|
|
|
54
54
|
export const SDK_METADATA = {
|
|
55
55
|
language: "typescript",
|
|
56
56
|
openapiDocVersion: "2.0.0",
|
|
57
|
-
sdkVersion: "2.0.0-alpha.
|
|
57
|
+
sdkVersion: "2.0.0-alpha.5",
|
|
58
58
|
genVersion: "2.564.5",
|
|
59
|
-
userAgent: "speakeasy-sdk/typescript 2.0.0-alpha.
|
|
59
|
+
userAgent: "speakeasy-sdk/typescript 2.0.0-alpha.5 2.564.5 2.0.0 @unkey/api",
|
|
60
60
|
} as const;
|
package/src/lib/matchers.ts
CHANGED
|
@@ -159,7 +159,6 @@ export type MatchedError<Matchers> = Matchers extends Matcher<any, infer E>[]
|
|
|
159
159
|
: never;
|
|
160
160
|
export type MatchFunc<T, E> = (
|
|
161
161
|
response: Response,
|
|
162
|
-
request: Request,
|
|
163
162
|
options?: { resultKey?: string; extraFields?: Record<string, unknown> },
|
|
164
163
|
) => Promise<[result: Result<T, E>, raw: unknown]>;
|
|
165
164
|
|
|
@@ -168,7 +167,6 @@ export function match<T, E>(
|
|
|
168
167
|
): MatchFunc<T, E | APIError | SDKValidationError> {
|
|
169
168
|
return async function matchFunc(
|
|
170
169
|
response: Response,
|
|
171
|
-
request: Request,
|
|
172
170
|
options?: { resultKey?: string; extraFields?: Record<string, unknown> },
|
|
173
171
|
): Promise<
|
|
174
172
|
[result: Result<T, E | APIError | SDKValidationError>, raw: unknown]
|
|
@@ -190,14 +188,15 @@ export function match<T, E>(
|
|
|
190
188
|
}
|
|
191
189
|
|
|
192
190
|
if (!matcher) {
|
|
193
|
-
await
|
|
191
|
+
const responseBody = await response.text();
|
|
194
192
|
return [{
|
|
195
193
|
ok: false,
|
|
196
|
-
error: new APIError(
|
|
194
|
+
error: new APIError(
|
|
195
|
+
"Unexpected API response status or content-type",
|
|
197
196
|
response,
|
|
198
|
-
|
|
199
|
-
|
|
200
|
-
},
|
|
197
|
+
responseBody,
|
|
198
|
+
),
|
|
199
|
+
}, responseBody];
|
|
201
200
|
}
|
|
202
201
|
|
|
203
202
|
const encoding = matcher.enc;
|
|
@@ -221,7 +220,7 @@ export function match<T, E>(
|
|
|
221
220
|
raw = await discardResponseBody(response);
|
|
222
221
|
break;
|
|
223
222
|
case "fail":
|
|
224
|
-
raw = await
|
|
223
|
+
raw = await response.text();
|
|
225
224
|
break;
|
|
226
225
|
default:
|
|
227
226
|
encoding satisfies never;
|
|
@@ -231,7 +230,11 @@ export function match<T, E>(
|
|
|
231
230
|
if (matcher.enc === "fail") {
|
|
232
231
|
return [{
|
|
233
232
|
ok: false,
|
|
234
|
-
error: new APIError(
|
|
233
|
+
error: new APIError(
|
|
234
|
+
"API error occurred",
|
|
235
|
+
response,
|
|
236
|
+
typeof raw === "string" ? raw : "",
|
|
237
|
+
),
|
|
235
238
|
}, raw];
|
|
236
239
|
}
|
|
237
240
|
|
|
@@ -250,11 +253,14 @@ export function match<T, E>(
|
|
|
250
253
|
...(matcher.hdrs ? { Headers: unpackHeaders(response.headers) } : null),
|
|
251
254
|
[resultKey]: raw,
|
|
252
255
|
};
|
|
253
|
-
} else {
|
|
256
|
+
} else if (matcher.hdrs) {
|
|
254
257
|
data = {
|
|
255
258
|
...options?.extraFields,
|
|
256
259
|
...(matcher.hdrs ? { Headers: unpackHeaders(response.headers) } : null),
|
|
260
|
+
...(isPlainObject(raw) ? raw : null),
|
|
257
261
|
};
|
|
262
|
+
} else {
|
|
263
|
+
data = raw;
|
|
258
264
|
}
|
|
259
265
|
|
|
260
266
|
if ("err" in matcher) {
|
|
@@ -0,0 +1,107 @@
|
|
|
1
|
+
/*
|
|
2
|
+
* Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT.
|
|
3
|
+
*/
|
|
4
|
+
|
|
5
|
+
import { buildCommand } from "@stricli/core";
|
|
6
|
+
import { numberParser } from "@stricli/core";
|
|
7
|
+
import * as z from "zod";
|
|
8
|
+
import { consoleLoggerLevels } from "../../console-logger.js";
|
|
9
|
+
import { mcpScopes } from "../../scopes.js";
|
|
10
|
+
|
|
11
|
+
export const startCommand = buildCommand({
|
|
12
|
+
loader: async () => {
|
|
13
|
+
const { main } = await import("./impl.js");
|
|
14
|
+
return main;
|
|
15
|
+
},
|
|
16
|
+
parameters: {
|
|
17
|
+
flags: {
|
|
18
|
+
transport: {
|
|
19
|
+
kind: "enum",
|
|
20
|
+
brief: "The transport to use for communicating with the server",
|
|
21
|
+
default: "stdio",
|
|
22
|
+
values: ["stdio", "sse"],
|
|
23
|
+
},
|
|
24
|
+
port: {
|
|
25
|
+
kind: "parsed",
|
|
26
|
+
brief: "The port to use when the SSE transport is enabled",
|
|
27
|
+
default: "2718",
|
|
28
|
+
parse: (val: string) =>
|
|
29
|
+
z.coerce.number().int().gte(0).lt(65536).parse(val),
|
|
30
|
+
},
|
|
31
|
+
tool: {
|
|
32
|
+
kind: "parsed",
|
|
33
|
+
brief: "Specify tools to mount on the server",
|
|
34
|
+
optional: true,
|
|
35
|
+
variadic: true,
|
|
36
|
+
parse: (value) => {
|
|
37
|
+
return z.string().parse(value);
|
|
38
|
+
},
|
|
39
|
+
},
|
|
40
|
+
...(mcpScopes.length
|
|
41
|
+
? {
|
|
42
|
+
scope: {
|
|
43
|
+
kind: "enum",
|
|
44
|
+
brief:
|
|
45
|
+
"Mount tools/resources that match given scope (repeatable flag)",
|
|
46
|
+
values: mcpScopes,
|
|
47
|
+
variadic: true,
|
|
48
|
+
optional: true,
|
|
49
|
+
},
|
|
50
|
+
}
|
|
51
|
+
: {}),
|
|
52
|
+
"root-key": {
|
|
53
|
+
kind: "parsed",
|
|
54
|
+
brief: "Sets the rootKey auth field for the API",
|
|
55
|
+
optional: true,
|
|
56
|
+
parse: (value) => {
|
|
57
|
+
return z.string().parse(value);
|
|
58
|
+
},
|
|
59
|
+
},
|
|
60
|
+
"server-url": {
|
|
61
|
+
kind: "parsed",
|
|
62
|
+
brief: "Overrides the default server URL used by the SDK",
|
|
63
|
+
optional: true,
|
|
64
|
+
parse: (value) => new URL(value).toString(),
|
|
65
|
+
},
|
|
66
|
+
"server-index": {
|
|
67
|
+
kind: "parsed",
|
|
68
|
+
brief: "Selects a predefined server used by the SDK",
|
|
69
|
+
optional: true,
|
|
70
|
+
parse: numberParser,
|
|
71
|
+
},
|
|
72
|
+
"log-level": {
|
|
73
|
+
kind: "enum",
|
|
74
|
+
brief: "The log level to use for the server",
|
|
75
|
+
default: "info",
|
|
76
|
+
values: consoleLoggerLevels,
|
|
77
|
+
},
|
|
78
|
+
env: {
|
|
79
|
+
kind: "parsed",
|
|
80
|
+
brief: "Environment variables made available to the server",
|
|
81
|
+
optional: true,
|
|
82
|
+
variadic: true,
|
|
83
|
+
parse: (val: string) => {
|
|
84
|
+
const sepIdx = val.indexOf("=");
|
|
85
|
+
if (sepIdx === -1) {
|
|
86
|
+
throw new Error("Invalid environment variable format");
|
|
87
|
+
}
|
|
88
|
+
|
|
89
|
+
const key = val.slice(0, sepIdx);
|
|
90
|
+
const value = val.slice(sepIdx + 1);
|
|
91
|
+
|
|
92
|
+
return [
|
|
93
|
+
z.string().nonempty({
|
|
94
|
+
message: "Environment variable key must be a non-empty string",
|
|
95
|
+
}).parse(key),
|
|
96
|
+
z.string().nonempty({
|
|
97
|
+
message: "Environment variable value must be a non-empty string",
|
|
98
|
+
}).parse(value),
|
|
99
|
+
] satisfies [string, string];
|
|
100
|
+
},
|
|
101
|
+
},
|
|
102
|
+
},
|
|
103
|
+
},
|
|
104
|
+
docs: {
|
|
105
|
+
brief: "Run the Model Context Protocol server",
|
|
106
|
+
},
|
|
107
|
+
});
|
|
@@ -0,0 +1,134 @@
|
|
|
1
|
+
/*
|
|
2
|
+
* Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT.
|
|
3
|
+
*/
|
|
4
|
+
|
|
5
|
+
import { SSEServerTransport } from "@modelcontextprotocol/sdk/server/sse.js";
|
|
6
|
+
import { StdioServerTransport } from "@modelcontextprotocol/sdk/server/stdio.js";
|
|
7
|
+
import express from "express";
|
|
8
|
+
import { SDKOptions } from "../../../lib/config.js";
|
|
9
|
+
import { LocalContext } from "../../cli.js";
|
|
10
|
+
import {
|
|
11
|
+
ConsoleLoggerLevel,
|
|
12
|
+
createConsoleLogger,
|
|
13
|
+
} from "../../console-logger.js";
|
|
14
|
+
import { MCPScope } from "../../scopes.js";
|
|
15
|
+
import { createMCPServer } from "../../server.js";
|
|
16
|
+
|
|
17
|
+
interface StartCommandFlags {
|
|
18
|
+
readonly transport: "stdio" | "sse";
|
|
19
|
+
readonly port: number;
|
|
20
|
+
readonly tool?: string[];
|
|
21
|
+
readonly scope?: MCPScope[];
|
|
22
|
+
readonly "root-key"?: string | undefined;
|
|
23
|
+
readonly "server-url"?: string;
|
|
24
|
+
readonly "server-index"?: SDKOptions["serverIdx"];
|
|
25
|
+
readonly "log-level": ConsoleLoggerLevel;
|
|
26
|
+
readonly env?: [string, string][];
|
|
27
|
+
}
|
|
28
|
+
|
|
29
|
+
export async function main(this: LocalContext, flags: StartCommandFlags) {
|
|
30
|
+
flags.env?.forEach(([key, value]) => {
|
|
31
|
+
process.env[key] = value;
|
|
32
|
+
});
|
|
33
|
+
|
|
34
|
+
switch (flags.transport) {
|
|
35
|
+
case "stdio":
|
|
36
|
+
await startStdio(flags);
|
|
37
|
+
break;
|
|
38
|
+
case "sse":
|
|
39
|
+
await startSSE(flags);
|
|
40
|
+
break;
|
|
41
|
+
default:
|
|
42
|
+
throw new Error(`Invalid transport: ${flags.transport}`);
|
|
43
|
+
}
|
|
44
|
+
}
|
|
45
|
+
|
|
46
|
+
async function startStdio(flags: StartCommandFlags) {
|
|
47
|
+
const logger = createConsoleLogger(flags["log-level"]);
|
|
48
|
+
const transport = new StdioServerTransport();
|
|
49
|
+
const server = createMCPServer({
|
|
50
|
+
logger,
|
|
51
|
+
allowedTools: flags.tool,
|
|
52
|
+
scopes: flags.scope,
|
|
53
|
+
...{ rootKey: flags["root-key"] },
|
|
54
|
+
serverURL: flags["server-url"],
|
|
55
|
+
serverIdx: flags["server-index"],
|
|
56
|
+
});
|
|
57
|
+
await server.connect(transport);
|
|
58
|
+
|
|
59
|
+
const abort = async () => {
|
|
60
|
+
await server.close();
|
|
61
|
+
process.exit(0);
|
|
62
|
+
};
|
|
63
|
+
process.on("SIGTERM", abort);
|
|
64
|
+
process.on("SIGINT", abort);
|
|
65
|
+
}
|
|
66
|
+
|
|
67
|
+
async function startSSE(flags: StartCommandFlags) {
|
|
68
|
+
const logger = createConsoleLogger(flags["log-level"]);
|
|
69
|
+
const app = express();
|
|
70
|
+
const mcpServer = createMCPServer({
|
|
71
|
+
logger,
|
|
72
|
+
allowedTools: flags.tool,
|
|
73
|
+
scopes: flags.scope,
|
|
74
|
+
...{ rootKey: flags["root-key"] },
|
|
75
|
+
serverURL: flags["server-url"],
|
|
76
|
+
serverIdx: flags["server-index"],
|
|
77
|
+
});
|
|
78
|
+
let transport: SSEServerTransport | undefined;
|
|
79
|
+
const controller = new AbortController();
|
|
80
|
+
|
|
81
|
+
app.get("/sse", async (_req, res) => {
|
|
82
|
+
transport = new SSEServerTransport("/message", res);
|
|
83
|
+
|
|
84
|
+
await mcpServer.connect(transport);
|
|
85
|
+
|
|
86
|
+
mcpServer.server.onclose = async () => {
|
|
87
|
+
res.end();
|
|
88
|
+
};
|
|
89
|
+
});
|
|
90
|
+
|
|
91
|
+
app.post("/message", async (req, res) => {
|
|
92
|
+
if (!transport) {
|
|
93
|
+
throw new Error("Server transport not initialized");
|
|
94
|
+
}
|
|
95
|
+
|
|
96
|
+
await transport.handlePostMessage(req, res);
|
|
97
|
+
});
|
|
98
|
+
|
|
99
|
+
const httpServer = app.listen(flags.port, "0.0.0.0", () => {
|
|
100
|
+
const ha = httpServer.address();
|
|
101
|
+
const host = typeof ha === "string" ? ha : `${ha?.address}:${ha?.port}`;
|
|
102
|
+
logger.info("MCP HTTP server started", { host });
|
|
103
|
+
});
|
|
104
|
+
|
|
105
|
+
let closing = false;
|
|
106
|
+
controller.signal.addEventListener("abort", async () => {
|
|
107
|
+
if (closing) {
|
|
108
|
+
logger.info("Received second signal. Forcing shutdown.");
|
|
109
|
+
process.exit(1);
|
|
110
|
+
}
|
|
111
|
+
closing = true;
|
|
112
|
+
|
|
113
|
+
logger.info("Shutting down MCP server");
|
|
114
|
+
|
|
115
|
+
await mcpServer.close();
|
|
116
|
+
|
|
117
|
+
logger.info("Shutting down HTTP server");
|
|
118
|
+
|
|
119
|
+
const timer = setTimeout(() => {
|
|
120
|
+
logger.info("Forcing shutdown");
|
|
121
|
+
process.exit(1);
|
|
122
|
+
}, 5000);
|
|
123
|
+
|
|
124
|
+
httpServer.close(() => {
|
|
125
|
+
clearTimeout(timer);
|
|
126
|
+
logger.info("Graceful shutdown complete");
|
|
127
|
+
process.exit(0);
|
|
128
|
+
});
|
|
129
|
+
});
|
|
130
|
+
|
|
131
|
+
const abort = () => controller.abort();
|
|
132
|
+
process.on("SIGTERM", abort);
|
|
133
|
+
process.on("SIGINT", abort);
|
|
134
|
+
}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
/*
|
|
2
|
+
* Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT.
|
|
3
|
+
*/
|
|
4
|
+
|
|
5
|
+
import { CommandContext, StricliProcess } from "@stricli/core";
|
|
6
|
+
|
|
7
|
+
export interface LocalContext extends CommandContext {
|
|
8
|
+
readonly process: StricliProcess;
|
|
9
|
+
}
|
|
10
|
+
|
|
11
|
+
export function buildContext(process: NodeJS.Process): LocalContext {
|
|
12
|
+
return { process: process as StricliProcess };
|
|
13
|
+
}
|
|
@@ -0,0 +1,71 @@
|
|
|
1
|
+
/*
|
|
2
|
+
* Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT.
|
|
3
|
+
*/
|
|
4
|
+
|
|
5
|
+
export const consoleLoggerLevels = [
|
|
6
|
+
"debug",
|
|
7
|
+
"warning",
|
|
8
|
+
"info",
|
|
9
|
+
"error",
|
|
10
|
+
] as const;
|
|
11
|
+
|
|
12
|
+
export type ConsoleLoggerLevel = (typeof consoleLoggerLevels)[number];
|
|
13
|
+
|
|
14
|
+
export type ConsoleLogger = {
|
|
15
|
+
[key in ConsoleLoggerLevel]: (
|
|
16
|
+
message: string,
|
|
17
|
+
data?: Record<string, unknown>,
|
|
18
|
+
) => void;
|
|
19
|
+
};
|
|
20
|
+
|
|
21
|
+
export function createConsoleLogger(level: ConsoleLoggerLevel): ConsoleLogger {
|
|
22
|
+
const min = consoleLoggerLevels.indexOf(level);
|
|
23
|
+
const noop = () => {};
|
|
24
|
+
|
|
25
|
+
const logger: ConsoleLogger = {
|
|
26
|
+
debug: noop,
|
|
27
|
+
warning: noop,
|
|
28
|
+
info: noop,
|
|
29
|
+
error: noop,
|
|
30
|
+
};
|
|
31
|
+
|
|
32
|
+
return consoleLoggerLevels.reduce((logger, level, i) => {
|
|
33
|
+
if (i < min) {
|
|
34
|
+
return logger;
|
|
35
|
+
}
|
|
36
|
+
|
|
37
|
+
logger[level] = log.bind(null, level);
|
|
38
|
+
|
|
39
|
+
return logger;
|
|
40
|
+
}, logger);
|
|
41
|
+
}
|
|
42
|
+
|
|
43
|
+
function log(
|
|
44
|
+
level: ConsoleLoggerLevel,
|
|
45
|
+
message: string,
|
|
46
|
+
data?: Record<string, unknown>,
|
|
47
|
+
) {
|
|
48
|
+
let line = "";
|
|
49
|
+
const allData = [{ msg: message, l: level }, data];
|
|
50
|
+
|
|
51
|
+
for (const ctx of allData) {
|
|
52
|
+
for (const [key, value] of Object.entries(ctx || {})) {
|
|
53
|
+
if (value == null) {
|
|
54
|
+
line += ` ${key}=<${value}>`;
|
|
55
|
+
} else if (typeof value === "function") {
|
|
56
|
+
line += ` ${key}=<function>`;
|
|
57
|
+
} else if (typeof value === "symbol") {
|
|
58
|
+
line += ` ${key}=${value.toString()}`;
|
|
59
|
+
} else if (typeof value === "string") {
|
|
60
|
+
const v = value.search(/\s/g) >= 0 ? JSON.stringify(value) : value;
|
|
61
|
+
line += ` ${key}=${v}`;
|
|
62
|
+
} else if (typeof value !== "object") {
|
|
63
|
+
line += ` ${key}=${value}`;
|
|
64
|
+
} else {
|
|
65
|
+
line += ` ${key}="${JSON.stringify(value)}"`;
|
|
66
|
+
}
|
|
67
|
+
}
|
|
68
|
+
}
|
|
69
|
+
|
|
70
|
+
console.error(line);
|
|
71
|
+
}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
/*
|
|
2
|
+
* Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT.
|
|
3
|
+
*/
|
|
4
|
+
|
|
5
|
+
import { ZodRawShape } from "zod";
|
|
6
|
+
import { PromptArgsRawShape, PromptDefinition } from "./prompts.js";
|
|
7
|
+
import { ResourceDefinition, ResourceTemplateDefinition } from "./resources.js";
|
|
8
|
+
import { ToolDefinition } from "./tools.js";
|
|
9
|
+
|
|
10
|
+
export type Register = {
|
|
11
|
+
tool: <A extends ZodRawShape | undefined>(def: ToolDefinition<A>) => void;
|
|
12
|
+
resource: (def: ResourceDefinition) => void;
|
|
13
|
+
resourceTemplate: (def: ResourceTemplateDefinition) => void;
|
|
14
|
+
prompt: <A extends PromptArgsRawShape | undefined>(
|
|
15
|
+
prompt: PromptDefinition<A>,
|
|
16
|
+
) => void;
|
|
17
|
+
};
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
/*
|
|
2
|
+
* Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT.
|
|
3
|
+
*/
|
|
4
|
+
|
|
5
|
+
import { buildApplication, buildRouteMap, run } from "@stricli/core";
|
|
6
|
+
import process from "node:process";
|
|
7
|
+
import { buildContext } from "./cli.js";
|
|
8
|
+
import { startCommand } from "./cli/start/command.js";
|
|
9
|
+
|
|
10
|
+
const routes = buildRouteMap({
|
|
11
|
+
routes: {
|
|
12
|
+
start: startCommand,
|
|
13
|
+
},
|
|
14
|
+
docs: {
|
|
15
|
+
brief: "MCP server CLI",
|
|
16
|
+
},
|
|
17
|
+
});
|
|
18
|
+
|
|
19
|
+
export const app = buildApplication(routes, {
|
|
20
|
+
name: "mcp",
|
|
21
|
+
versionInfo: {
|
|
22
|
+
currentVersion: "2.0.0-alpha.5",
|
|
23
|
+
},
|
|
24
|
+
});
|
|
25
|
+
|
|
26
|
+
run(app, process.argv.slice(2), buildContext(process));
|
|
@@ -0,0 +1,110 @@
|
|
|
1
|
+
/*
|
|
2
|
+
* Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT.
|
|
3
|
+
*/
|
|
4
|
+
|
|
5
|
+
import { McpServer } from "@modelcontextprotocol/sdk/server/mcp.js";
|
|
6
|
+
import { RequestHandlerExtra } from "@modelcontextprotocol/sdk/shared/protocol.js";
|
|
7
|
+
import { GetPromptResult } from "@modelcontextprotocol/sdk/types.js";
|
|
8
|
+
import {
|
|
9
|
+
objectOutputType,
|
|
10
|
+
ZodOptional,
|
|
11
|
+
ZodType,
|
|
12
|
+
ZodTypeAny,
|
|
13
|
+
ZodTypeDef,
|
|
14
|
+
} from "zod";
|
|
15
|
+
import { UnkeyCore } from "../core.js";
|
|
16
|
+
import { ConsoleLogger } from "./console-logger.js";
|
|
17
|
+
import { MCPScope } from "./scopes.js";
|
|
18
|
+
|
|
19
|
+
// '@modelcontextprotocol/sdk' currently does not export this type
|
|
20
|
+
export type PromptArgsRawShape = {
|
|
21
|
+
[k: string]:
|
|
22
|
+
| ZodType<string, ZodTypeDef, string>
|
|
23
|
+
| ZodOptional<ZodType<string, ZodTypeDef, string>>;
|
|
24
|
+
};
|
|
25
|
+
|
|
26
|
+
export type PromptDefinition<
|
|
27
|
+
Args extends undefined | PromptArgsRawShape = undefined,
|
|
28
|
+
> = Args extends PromptArgsRawShape ? {
|
|
29
|
+
name: string;
|
|
30
|
+
description?: string;
|
|
31
|
+
scopes?: MCPScope[];
|
|
32
|
+
args: Args;
|
|
33
|
+
prompt: (
|
|
34
|
+
client: UnkeyCore,
|
|
35
|
+
args: objectOutputType<Args, ZodTypeAny>,
|
|
36
|
+
extra: RequestHandlerExtra,
|
|
37
|
+
) => GetPromptResult | Promise<GetPromptResult>;
|
|
38
|
+
}
|
|
39
|
+
: {
|
|
40
|
+
name: string;
|
|
41
|
+
description?: string;
|
|
42
|
+
scopes?: MCPScope[];
|
|
43
|
+
args?: undefined;
|
|
44
|
+
prompt: (
|
|
45
|
+
client: UnkeyCore,
|
|
46
|
+
extra: RequestHandlerExtra,
|
|
47
|
+
) => GetPromptResult | Promise<GetPromptResult>;
|
|
48
|
+
};
|
|
49
|
+
|
|
50
|
+
// Optional function to assist with formatting prompt results
|
|
51
|
+
export async function formatResult(value: string): Promise<GetPromptResult> {
|
|
52
|
+
return {
|
|
53
|
+
messages: [
|
|
54
|
+
{
|
|
55
|
+
role: "user",
|
|
56
|
+
content: {
|
|
57
|
+
type: "text",
|
|
58
|
+
text: value,
|
|
59
|
+
},
|
|
60
|
+
},
|
|
61
|
+
],
|
|
62
|
+
};
|
|
63
|
+
}
|
|
64
|
+
|
|
65
|
+
export function createRegisterPrompt(
|
|
66
|
+
logger: ConsoleLogger,
|
|
67
|
+
server: McpServer,
|
|
68
|
+
sdk: UnkeyCore,
|
|
69
|
+
allowedScopes: Set<MCPScope>,
|
|
70
|
+
): <A extends PromptArgsRawShape | undefined>(
|
|
71
|
+
prompt: PromptDefinition<A>,
|
|
72
|
+
) => void {
|
|
73
|
+
return <A extends PromptArgsRawShape | undefined>(
|
|
74
|
+
prompt: PromptDefinition<A>,
|
|
75
|
+
): void => {
|
|
76
|
+
const scopes = prompt.scopes ?? [];
|
|
77
|
+
if (!scopes.every((s: MCPScope) => allowedScopes.has(s))) {
|
|
78
|
+
return;
|
|
79
|
+
}
|
|
80
|
+
|
|
81
|
+
if (prompt.args) {
|
|
82
|
+
if (prompt.description) {
|
|
83
|
+
server.prompt(
|
|
84
|
+
prompt.name,
|
|
85
|
+
prompt.description,
|
|
86
|
+
prompt.args,
|
|
87
|
+
async (args, ctx) => prompt.prompt(sdk, args, ctx),
|
|
88
|
+
);
|
|
89
|
+
} else {
|
|
90
|
+
server.prompt(
|
|
91
|
+
prompt.name,
|
|
92
|
+
prompt.args,
|
|
93
|
+
async (args, ctx) => prompt.prompt(sdk, args, ctx),
|
|
94
|
+
);
|
|
95
|
+
}
|
|
96
|
+
} else {
|
|
97
|
+
if (prompt.description) {
|
|
98
|
+
server.prompt(
|
|
99
|
+
prompt.name,
|
|
100
|
+
prompt.description,
|
|
101
|
+
async (ctx) => prompt.prompt(sdk, ctx),
|
|
102
|
+
);
|
|
103
|
+
} else {
|
|
104
|
+
server.prompt(prompt.name, async (ctx) => prompt.prompt(sdk, ctx));
|
|
105
|
+
}
|
|
106
|
+
}
|
|
107
|
+
|
|
108
|
+
logger.debug("Registered prompt", { name: prompt.name });
|
|
109
|
+
};
|
|
110
|
+
}
|