toolception 0.6.0 → 0.6.2
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 +1 -1
- package/dist/core/DynamicToolManager.d.ts +33 -22
- package/dist/core/DynamicToolManager.d.ts.map +1 -1
- package/dist/core/ServerOrchestrator.d.ts +33 -25
- package/dist/core/ServerOrchestrator.d.ts.map +1 -1
- package/dist/core/ToolRegistry.d.ts +5 -3
- package/dist/core/ToolRegistry.d.ts.map +1 -1
- package/dist/core/core.types.d.ts +29 -0
- package/dist/core/core.types.d.ts.map +1 -0
- package/dist/http/FastifyTransport.d.ts +49 -41
- package/dist/http/FastifyTransport.d.ts.map +1 -1
- package/dist/http/{customEndpoints.d.ts → http.types.d.ts} +33 -86
- package/dist/http/http.types.d.ts.map +1 -0
- package/dist/http/http.utils.d.ts +121 -0
- package/dist/http/http.utils.d.ts.map +1 -0
- package/dist/index.d.ts +5 -5
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +1076 -829
- package/dist/index.js.map +1 -1
- package/dist/meta/registerMetaTools.d.ts +12 -1
- package/dist/meta/registerMetaTools.d.ts.map +1 -1
- package/dist/mode/ModeResolver.d.ts +11 -10
- package/dist/mode/ModeResolver.d.ts.map +1 -1
- package/dist/mode/ModuleResolver.d.ts +18 -4
- package/dist/mode/ModuleResolver.d.ts.map +1 -1
- package/dist/mode/mode.types.d.ts +15 -0
- package/dist/mode/mode.types.d.ts.map +1 -0
- package/dist/permissions/PermissionAwareFastifyTransport.d.ts +15 -39
- package/dist/permissions/PermissionAwareFastifyTransport.d.ts.map +1 -1
- package/dist/permissions/PermissionResolver.d.ts +9 -24
- package/dist/permissions/PermissionResolver.d.ts.map +1 -1
- package/dist/permissions/{createPermissionAwareBundle.d.ts → permissions.types.d.ts} +17 -18
- package/dist/permissions/permissions.types.d.ts.map +1 -0
- package/dist/permissions/permissions.utils.d.ts +31 -0
- package/dist/permissions/permissions.utils.d.ts.map +1 -0
- package/dist/server/createMcpServer.d.ts +3 -46
- package/dist/server/createMcpServer.d.ts.map +1 -1
- package/dist/server/createPermissionBasedMcpServer.d.ts +2 -64
- package/dist/server/createPermissionBasedMcpServer.d.ts.map +1 -1
- package/dist/server/server.types.d.ts +71 -0
- package/dist/server/server.types.d.ts.map +1 -0
- package/dist/server/server.utils.d.ts +45 -0
- package/dist/server/server.utils.d.ts.map +1 -0
- package/dist/session/ClientResourceCache.d.ts +8 -27
- package/dist/session/ClientResourceCache.d.ts.map +1 -1
- package/dist/session/SessionContextResolver.d.ts +21 -72
- package/dist/session/SessionContextResolver.d.ts.map +1 -1
- package/dist/session/session.types.d.ts +29 -0
- package/dist/session/session.types.d.ts.map +1 -0
- package/dist/session/{validateSessionContextConfig.d.ts → session.utils.d.ts} +1 -2
- package/dist/session/session.utils.d.ts.map +1 -0
- package/dist/types/index.d.ts +0 -24
- package/dist/types/index.d.ts.map +1 -1
- package/package.json +1 -1
- package/dist/http/customEndpoints.d.ts.map +0 -1
- package/dist/http/endpointRegistration.d.ts +0 -35
- package/dist/http/endpointRegistration.d.ts.map +0 -1
- package/dist/permissions/createPermissionAwareBundle.d.ts.map +0 -1
- package/dist/permissions/validatePermissionConfig.d.ts +0 -9
- package/dist/permissions/validatePermissionConfig.d.ts.map +0 -1
- package/dist/session/validateSessionContextConfig.d.ts.map +0 -1
|
@@ -0,0 +1,121 @@
|
|
|
1
|
+
import { FastifyInstance, FastifyReply } from 'fastify';
|
|
2
|
+
import { z } from 'zod';
|
|
3
|
+
import { CustomEndpointDefinition, EndpointErrorResponse, HttpMethod, PermissionAwareEndpointHandler, RegisterCustomEndpointsOptions } from './http.types.js';
|
|
4
|
+
/**
|
|
5
|
+
* Helper function to create type-safe custom endpoints with automatic type inference.
|
|
6
|
+
* Provides better IntelliSense and type checking for endpoint definitions.
|
|
7
|
+
*
|
|
8
|
+
* @template TBody - Zod schema for request body
|
|
9
|
+
* @template TQuery - Zod schema for query parameters
|
|
10
|
+
* @template TParams - Zod schema for path parameters
|
|
11
|
+
* @template TResponse - Zod schema for response
|
|
12
|
+
*
|
|
13
|
+
* @param definition - Endpoint definition with schemas and handler
|
|
14
|
+
* @returns The same endpoint definition with full type inference
|
|
15
|
+
*
|
|
16
|
+
* @example
|
|
17
|
+
* ```typescript
|
|
18
|
+
* import { z } from "zod";
|
|
19
|
+
* import { defineEndpoint } from "toolception";
|
|
20
|
+
*
|
|
21
|
+
* const getUsersEndpoint = defineEndpoint({
|
|
22
|
+
* method: "GET",
|
|
23
|
+
* path: "/users",
|
|
24
|
+
* querySchema: z.object({
|
|
25
|
+
* limit: z.coerce.number().int().positive().default(10),
|
|
26
|
+
* role: z.enum(["admin", "user"]).optional(),
|
|
27
|
+
* }),
|
|
28
|
+
* responseSchema: z.object({
|
|
29
|
+
* users: z.array(z.object({
|
|
30
|
+
* id: z.string(),
|
|
31
|
+
* name: z.string(),
|
|
32
|
+
* })),
|
|
33
|
+
* total: z.number(),
|
|
34
|
+
* }),
|
|
35
|
+
* handler: async (req) => {
|
|
36
|
+
* // req.query is fully typed: { limit: number, role?: "admin" | "user" }
|
|
37
|
+
* const { limit, role } = req.query;
|
|
38
|
+
*
|
|
39
|
+
* return {
|
|
40
|
+
* users: [{ id: "1", name: "Alice" }],
|
|
41
|
+
* total: 1,
|
|
42
|
+
* };
|
|
43
|
+
* },
|
|
44
|
+
* });
|
|
45
|
+
* ```
|
|
46
|
+
*/
|
|
47
|
+
export declare function defineEndpoint<TBody extends z.ZodTypeAny = z.ZodNever, TQuery extends z.ZodTypeAny = z.ZodNever, TParams extends z.ZodTypeAny = z.ZodNever, TResponse extends z.ZodTypeAny = z.ZodAny>(definition: CustomEndpointDefinition<TBody, TQuery, TParams, TResponse>): CustomEndpointDefinition<TBody, TQuery, TParams, TResponse>;
|
|
48
|
+
/**
|
|
49
|
+
* Helper function to create permission-aware custom endpoints for permission-based servers.
|
|
50
|
+
* Similar to defineEndpoint but with access to permission context in the handler.
|
|
51
|
+
*
|
|
52
|
+
* @template TBody - Zod schema for request body
|
|
53
|
+
* @template TQuery - Zod schema for query parameters
|
|
54
|
+
* @template TParams - Zod schema for path parameters
|
|
55
|
+
* @template TResponse - Zod schema for response
|
|
56
|
+
*
|
|
57
|
+
* @param definition - Endpoint definition with permission-aware handler
|
|
58
|
+
* @returns Endpoint definition compatible with permission-based servers
|
|
59
|
+
*
|
|
60
|
+
* @example
|
|
61
|
+
* ```typescript
|
|
62
|
+
* import { definePermissionAwareEndpoint } from "toolception";
|
|
63
|
+
*
|
|
64
|
+
* const statsEndpoint = definePermissionAwareEndpoint({
|
|
65
|
+
* method: "GET",
|
|
66
|
+
* path: "/my-permissions",
|
|
67
|
+
* responseSchema: z.object({
|
|
68
|
+
* toolsets: z.array(z.string()),
|
|
69
|
+
* count: z.number(),
|
|
70
|
+
* }),
|
|
71
|
+
* handler: async (req) => {
|
|
72
|
+
* // req.allowedToolsets and req.failedToolsets are available
|
|
73
|
+
* return {
|
|
74
|
+
* toolsets: req.allowedToolsets,
|
|
75
|
+
* count: req.allowedToolsets.length,
|
|
76
|
+
* };
|
|
77
|
+
* },
|
|
78
|
+
* });
|
|
79
|
+
* ```
|
|
80
|
+
*/
|
|
81
|
+
export declare function definePermissionAwareEndpoint<TBody extends z.ZodTypeAny = z.ZodNever, TQuery extends z.ZodTypeAny = z.ZodNever, TParams extends z.ZodTypeAny = z.ZodNever, TResponse extends z.ZodTypeAny = z.ZodAny>(definition: {
|
|
82
|
+
method: HttpMethod;
|
|
83
|
+
path: string;
|
|
84
|
+
bodySchema?: TBody;
|
|
85
|
+
querySchema?: TQuery;
|
|
86
|
+
paramsSchema?: TParams;
|
|
87
|
+
responseSchema?: TResponse;
|
|
88
|
+
handler: PermissionAwareEndpointHandler<TBody, TQuery, TParams, TResponse>;
|
|
89
|
+
description?: string;
|
|
90
|
+
}): CustomEndpointDefinition<TBody, TQuery, TParams, TResponse>;
|
|
91
|
+
/**
|
|
92
|
+
* Registers custom endpoints on a Fastify instance.
|
|
93
|
+
* Handles Zod validation, error responses, and type-safe request mapping.
|
|
94
|
+
*
|
|
95
|
+
* @param app - Fastify instance to register endpoints on
|
|
96
|
+
* @param basePath - Base path for all endpoints (e.g., "/" or "/api")
|
|
97
|
+
* @param endpoints - Array of custom endpoint definitions
|
|
98
|
+
* @param options - Optional configuration for endpoint registration
|
|
99
|
+
*
|
|
100
|
+
* @example
|
|
101
|
+
* ```typescript
|
|
102
|
+
* registerCustomEndpoints(app, "/api", [
|
|
103
|
+
* defineEndpoint({
|
|
104
|
+
* method: "GET",
|
|
105
|
+
* path: "/users",
|
|
106
|
+
* querySchema: z.object({ limit: z.coerce.number() }),
|
|
107
|
+
* handler: async (req) => ({ users: [] }),
|
|
108
|
+
* }),
|
|
109
|
+
* ]);
|
|
110
|
+
* ```
|
|
111
|
+
*/
|
|
112
|
+
export declare function registerCustomEndpoints(app: FastifyInstance, basePath: string, endpoints: CustomEndpointDefinition[], options?: RegisterCustomEndpointsOptions): void;
|
|
113
|
+
/**
|
|
114
|
+
* Creates a standardized validation error response.
|
|
115
|
+
* @param reply - Fastify reply object
|
|
116
|
+
* @param field - The field that failed validation
|
|
117
|
+
* @param error - Zod validation error
|
|
118
|
+
* @returns Formatted error response
|
|
119
|
+
*/
|
|
120
|
+
export declare function createValidationError(reply: FastifyReply, field: string, error: z.ZodError): EndpointErrorResponse;
|
|
121
|
+
//# sourceMappingURL=http.utils.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"http.utils.d.ts","sourceRoot":"","sources":["../../src/http/http.utils.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,eAAe,EAAkB,YAAY,EAAE,MAAM,SAAS,CAAC;AAC7E,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,OAAO,KAAK,EACV,wBAAwB,EAExB,qBAAqB,EACrB,UAAU,EACV,8BAA8B,EAE9B,8BAA8B,EAC/B,MAAM,iBAAiB,CAAC;AAIzB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA0CG;AACH,wBAAgB,cAAc,CAC5B,KAAK,SAAS,CAAC,CAAC,UAAU,GAAG,CAAC,CAAC,QAAQ,EACvC,MAAM,SAAS,CAAC,CAAC,UAAU,GAAG,CAAC,CAAC,QAAQ,EACxC,OAAO,SAAS,CAAC,CAAC,UAAU,GAAG,CAAC,CAAC,QAAQ,EACzC,SAAS,SAAS,CAAC,CAAC,UAAU,GAAG,CAAC,CAAC,MAAM,EAEzC,UAAU,EAAE,wBAAwB,CAAC,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,SAAS,CAAC,GACtE,wBAAwB,CAAC,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,SAAS,CAAC,CAE7D;AAID;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAgCG;AACH,wBAAgB,6BAA6B,CAC3C,KAAK,SAAS,CAAC,CAAC,UAAU,GAAG,CAAC,CAAC,QAAQ,EACvC,MAAM,SAAS,CAAC,CAAC,UAAU,GAAG,CAAC,CAAC,QAAQ,EACxC,OAAO,SAAS,CAAC,CAAC,UAAU,GAAG,CAAC,CAAC,QAAQ,EACzC,SAAS,SAAS,CAAC,CAAC,UAAU,GAAG,CAAC,CAAC,MAAM,EACzC,UAAU,EAAE;IACZ,MAAM,EAAE,UAAU,CAAC;IACnB,IAAI,EAAE,MAAM,CAAC;IACb,UAAU,CAAC,EAAE,KAAK,CAAC;IACnB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,YAAY,CAAC,EAAE,OAAO,CAAC;IACvB,cAAc,CAAC,EAAE,SAAS,CAAC;IAC3B,OAAO,EAAE,8BAA8B,CAAC,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,SAAS,CAAC,CAAC;IAC3E,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB,GAAG,wBAAwB,CAAC,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,SAAS,CAAC,CAI9D;AAID;;;;;;;;;;;;;;;;;;;;GAoBG;AACH,wBAAgB,uBAAuB,CACrC,GAAG,EAAE,eAAe,EACpB,QAAQ,EAAE,MAAM,EAChB,SAAS,EAAE,wBAAwB,EAAE,EACrC,OAAO,CAAC,EAAE,8BAA8B,GACvC,IAAI,CAgIN;AAED;;;;;;GAMG;AACH,wBAAgB,qBAAqB,CACnC,KAAK,EAAE,YAAY,EACnB,KAAK,EAAE,MAAM,EACb,KAAK,EAAE,CAAC,CAAC,QAAQ,GAChB,qBAAqB,CASvB"}
|
package/dist/index.d.ts
CHANGED
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
export { createMcpServer } from './server/createMcpServer.js';
|
|
2
|
-
export type { CreateMcpServerOptions } from './server/
|
|
2
|
+
export type { CreateMcpServerOptions, CreatePermissionBasedMcpServerOptions, McpServerHandle } from './server/server.types.js';
|
|
3
3
|
export { createPermissionBasedMcpServer } from './server/createPermissionBasedMcpServer.js';
|
|
4
|
-
export type { ToolSetCatalog, ToolSetDefinition, McpToolDefinition, ExposurePolicy, Mode, ModuleLoader, PermissionConfig,
|
|
4
|
+
export type { ToolSetCatalog, ToolSetDefinition, McpToolDefinition, ExposurePolicy, Mode, ModuleLoader, PermissionConfig, SessionContextConfig, SessionRequestContext, } from './types/index.js';
|
|
5
5
|
export { SessionContextResolver } from './session/SessionContextResolver.js';
|
|
6
|
-
export type { SessionContextResult } from './session/
|
|
7
|
-
export type { CustomEndpointDefinition, CustomEndpointRequest, PermissionAwareEndpointRequest, CustomEndpointHandler, PermissionAwareEndpointHandler, HttpMethod, EndpointErrorResponse, } from './http/
|
|
8
|
-
export { defineEndpoint, definePermissionAwareEndpoint, } from './http/
|
|
6
|
+
export type { SessionContextResult } from './session/session.types.js';
|
|
7
|
+
export type { CustomEndpointDefinition, CustomEndpointRequest, PermissionAwareEndpointRequest, CustomEndpointHandler, PermissionAwareEndpointHandler, HttpMethod, EndpointErrorResponse, } from './http/http.types.js';
|
|
8
|
+
export { defineEndpoint, definePermissionAwareEndpoint, } from './http/http.utils.js';
|
|
9
9
|
//# sourceMappingURL=index.d.ts.map
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,eAAe,EAAE,MAAM,6BAA6B,CAAC;AAC9D,YAAY,EAAE,sBAAsB,EAAE,MAAM,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,eAAe,EAAE,MAAM,6BAA6B,CAAC;AAC9D,YAAY,EAAE,sBAAsB,EAAE,qCAAqC,EAAE,eAAe,EAAE,MAAM,0BAA0B,CAAC;AAG/H,OAAO,EAAE,8BAA8B,EAAE,MAAM,4CAA4C,CAAC;AAG5F,YAAY,EACV,cAAc,EACd,iBAAiB,EACjB,iBAAiB,EACjB,cAAc,EACd,IAAI,EACJ,YAAY,EACZ,gBAAgB,EAChB,oBAAoB,EACpB,qBAAqB,GACtB,MAAM,kBAAkB,CAAC;AAG1B,OAAO,EAAE,sBAAsB,EAAE,MAAM,qCAAqC,CAAC;AAC7E,YAAY,EAAE,oBAAoB,EAAE,MAAM,4BAA4B,CAAC;AAGvE,YAAY,EACV,wBAAwB,EACxB,qBAAqB,EACrB,8BAA8B,EAC9B,qBAAqB,EACrB,8BAA8B,EAC9B,UAAU,EACV,qBAAqB,GACtB,MAAM,sBAAsB,CAAC;AAE9B,OAAO,EACL,cAAc,EACd,6BAA6B,GAC9B,MAAM,sBAAsB,CAAC"}
|