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.
Files changed (61) hide show
  1. package/README.md +1 -1
  2. package/dist/core/DynamicToolManager.d.ts +33 -22
  3. package/dist/core/DynamicToolManager.d.ts.map +1 -1
  4. package/dist/core/ServerOrchestrator.d.ts +33 -25
  5. package/dist/core/ServerOrchestrator.d.ts.map +1 -1
  6. package/dist/core/ToolRegistry.d.ts +5 -3
  7. package/dist/core/ToolRegistry.d.ts.map +1 -1
  8. package/dist/core/core.types.d.ts +29 -0
  9. package/dist/core/core.types.d.ts.map +1 -0
  10. package/dist/http/FastifyTransport.d.ts +49 -41
  11. package/dist/http/FastifyTransport.d.ts.map +1 -1
  12. package/dist/http/{customEndpoints.d.ts → http.types.d.ts} +33 -86
  13. package/dist/http/http.types.d.ts.map +1 -0
  14. package/dist/http/http.utils.d.ts +121 -0
  15. package/dist/http/http.utils.d.ts.map +1 -0
  16. package/dist/index.d.ts +5 -5
  17. package/dist/index.d.ts.map +1 -1
  18. package/dist/index.js +1076 -829
  19. package/dist/index.js.map +1 -1
  20. package/dist/meta/registerMetaTools.d.ts +12 -1
  21. package/dist/meta/registerMetaTools.d.ts.map +1 -1
  22. package/dist/mode/ModeResolver.d.ts +11 -10
  23. package/dist/mode/ModeResolver.d.ts.map +1 -1
  24. package/dist/mode/ModuleResolver.d.ts +18 -4
  25. package/dist/mode/ModuleResolver.d.ts.map +1 -1
  26. package/dist/mode/mode.types.d.ts +15 -0
  27. package/dist/mode/mode.types.d.ts.map +1 -0
  28. package/dist/permissions/PermissionAwareFastifyTransport.d.ts +15 -39
  29. package/dist/permissions/PermissionAwareFastifyTransport.d.ts.map +1 -1
  30. package/dist/permissions/PermissionResolver.d.ts +9 -24
  31. package/dist/permissions/PermissionResolver.d.ts.map +1 -1
  32. package/dist/permissions/{createPermissionAwareBundle.d.ts → permissions.types.d.ts} +17 -18
  33. package/dist/permissions/permissions.types.d.ts.map +1 -0
  34. package/dist/permissions/permissions.utils.d.ts +31 -0
  35. package/dist/permissions/permissions.utils.d.ts.map +1 -0
  36. package/dist/server/createMcpServer.d.ts +3 -46
  37. package/dist/server/createMcpServer.d.ts.map +1 -1
  38. package/dist/server/createPermissionBasedMcpServer.d.ts +2 -64
  39. package/dist/server/createPermissionBasedMcpServer.d.ts.map +1 -1
  40. package/dist/server/server.types.d.ts +71 -0
  41. package/dist/server/server.types.d.ts.map +1 -0
  42. package/dist/server/server.utils.d.ts +45 -0
  43. package/dist/server/server.utils.d.ts.map +1 -0
  44. package/dist/session/ClientResourceCache.d.ts +8 -27
  45. package/dist/session/ClientResourceCache.d.ts.map +1 -1
  46. package/dist/session/SessionContextResolver.d.ts +21 -72
  47. package/dist/session/SessionContextResolver.d.ts.map +1 -1
  48. package/dist/session/session.types.d.ts +29 -0
  49. package/dist/session/session.types.d.ts.map +1 -0
  50. package/dist/session/{validateSessionContextConfig.d.ts → session.utils.d.ts} +1 -2
  51. package/dist/session/session.utils.d.ts.map +1 -0
  52. package/dist/types/index.d.ts +0 -24
  53. package/dist/types/index.d.ts.map +1 -1
  54. package/package.json +1 -1
  55. package/dist/http/customEndpoints.d.ts.map +0 -1
  56. package/dist/http/endpointRegistration.d.ts +0 -35
  57. package/dist/http/endpointRegistration.d.ts.map +0 -1
  58. package/dist/permissions/createPermissionAwareBundle.d.ts.map +0 -1
  59. package/dist/permissions/validatePermissionConfig.d.ts +0 -9
  60. package/dist/permissions/validatePermissionConfig.d.ts.map +0 -1
  61. 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/createMcpServer.js';
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, CreatePermissionBasedMcpServerOptions, SessionContextConfig, SessionRequestContext, } from './types/index.js';
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/SessionContextResolver.js';
7
- export type { CustomEndpointDefinition, CustomEndpointRequest, PermissionAwareEndpointRequest, CustomEndpointHandler, PermissionAwareEndpointHandler, HttpMethod, EndpointErrorResponse, } from './http/customEndpoints.js';
8
- export { defineEndpoint, definePermissionAwareEndpoint, } from './http/customEndpoints.js';
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
@@ -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,6BAA6B,CAAC;AAG1E,OAAO,EAAE,8BAA8B,EAAE,MAAM,4CAA4C,CAAC;AAG5F,YAAY,EACV,cAAc,EACd,iBAAiB,EACjB,iBAAiB,EACjB,cAAc,EACd,IAAI,EACJ,YAAY,EACZ,gBAAgB,EAChB,qCAAqC,EACrC,oBAAoB,EACpB,qBAAqB,GACtB,MAAM,kBAAkB,CAAC;AAG1B,OAAO,EAAE,sBAAsB,EAAE,MAAM,qCAAqC,CAAC;AAC7E,YAAY,EAAE,oBAAoB,EAAE,MAAM,qCAAqC,CAAC;AAGhF,YAAY,EACV,wBAAwB,EACxB,qBAAqB,EACrB,8BAA8B,EAC9B,qBAAqB,EACrB,8BAA8B,EAC9B,UAAU,EACV,qBAAqB,GACtB,MAAM,2BAA2B,CAAC;AAEnC,OAAO,EACL,cAAc,EACd,6BAA6B,GAC9B,MAAM,2BAA2B,CAAC"}
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"}