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
package/README.md CHANGED
@@ -1177,7 +1177,7 @@ await client.close();
1177
1177
 
1178
1178
  - **What**: Clients identify themselves via the `mcp-client-id` HTTP header on every request.
1179
1179
  - **Who generates it**: The client. Use a stable identifier (e.g., UUID persisted locally).
1180
- - **If omitted**: The server assigns a one-off `anon-<uuid>` and skips caching; this is unsuitable for multi-request flows and SSE.
1180
+ - **If omitted**: MCP protocol endpoints (`POST /mcp`, `GET /mcp`, `DELETE /mcp`) return a 400 error. Custom endpoints still accept anonymous clients with auto-generated IDs.
1181
1181
 
1182
1182
  Examples (official MCP client)
1183
1183
 
@@ -2,14 +2,7 @@ import { McpServer } from '@modelcontextprotocol/sdk/server/mcp.js';
2
2
  import { ExposurePolicy, ToolSetDefinition, ToolingErrorCode } from '../types/index.js';
3
3
  import { ModuleResolver } from '../mode/ModuleResolver.js';
4
4
  import { ToolRegistry } from './ToolRegistry.js';
5
- export interface DynamicToolManagerOptions {
6
- server: McpServer;
7
- resolver: ModuleResolver;
8
- context?: unknown;
9
- onToolsListChanged?: () => Promise<void> | void;
10
- exposurePolicy?: ExposurePolicy;
11
- toolRegistry?: ToolRegistry;
12
- }
5
+ import { DynamicToolManagerOptions } from './core.types.js';
13
6
  export declare class DynamicToolManager {
14
7
  private readonly server;
15
8
  private readonly resolver;
@@ -19,11 +12,17 @@ export declare class DynamicToolManager {
19
12
  private readonly toolRegistry;
20
13
  private readonly activeToolsets;
21
14
  constructor(options: DynamicToolManagerOptions);
15
+ static builder(): {
16
+ server(value: McpServer): /*elided*/ any;
17
+ resolver(value: ModuleResolver): /*elided*/ any;
18
+ context(value: unknown): /*elided*/ any;
19
+ onToolsListChanged(value: () => Promise<void> | void): /*elided*/ any;
20
+ exposurePolicy(value: ExposurePolicy): /*elided*/ any;
21
+ toolRegistry(value: ToolRegistry): /*elided*/ any;
22
+ build(): DynamicToolManager;
23
+ };
22
24
  /**
23
- * Sends a tool list change notification if configured.
24
- * Logs warnings on failure instead of throwing.
25
25
  * @returns Promise that resolves when notification is sent (or skipped)
26
- * @private
27
26
  */
28
27
  private notifyToolsChanged;
29
28
  getAvailableToolsets(): string[];
@@ -32,9 +31,8 @@ export declare class DynamicToolManager {
32
31
  isActive(name: string): boolean;
33
32
  /**
34
33
  * Enables a single toolset by name.
35
- * Validates the toolset, checks exposure policies, resolves tools, and registers them.
36
34
  * @param toolsetName - The name of the toolset to enable
37
- * @param skipNotification - If true, skips the tool list change notification (for batch operations)
35
+ * @param skipNotification - If true, skips the tool list change notification
38
36
  * @returns Result object with success status and message
39
37
  */
40
38
  enableToolset(toolsetName: string, skipNotification?: boolean): Promise<{
@@ -42,22 +40,38 @@ export declare class DynamicToolManager {
42
40
  message: string;
43
41
  }>;
44
42
  /**
45
- * Checks if a toolset is allowed by the exposure policy.
43
+ * @param toolsetName - The raw toolset name to validate
44
+ * @returns Error result if invalid, or `{ sanitized }` to continue
45
+ */
46
+ private validateToolsetForEnable;
47
+ /**
48
+ * @param sanitized - The validated toolset name
49
+ * @param registeredTools - Mutable array tracking registered tool names for rollback
50
+ * @returns The number of tools resolved
51
+ */
52
+ private resolveAndRegisterTools;
53
+ /**
54
+ * @param sanitized - The toolset name
55
+ * @param toolCount - Number of tools registered
56
+ * @returns Success result object
57
+ */
58
+ private buildEnableResult;
59
+ /**
60
+ * @param sanitized - The toolset name that partially failed
61
+ * @param registeredTools - Tools that were registered before the failure
62
+ */
63
+ private handlePartialFailure;
64
+ /**
46
65
  * @param toolsetName - The sanitized toolset name to check
47
66
  * @returns Object indicating if allowed and reason message if not
48
- * @private
49
67
  */
50
68
  private checkExposurePolicy;
51
69
  /**
52
- * Registers a single tool with the MCP server.
53
70
  * @param tool - The tool definition to register
54
71
  * @param toolsetKey - The toolset key for tracking
55
- * @private
56
72
  */
57
73
  private registerSingleTool;
58
74
  /**
59
- * Disables a toolset by name.
60
- * Note: Due to MCP limitations, tools remain registered but the toolset is marked inactive.
61
75
  * @param toolsetName - The name of the toolset to disable
62
76
  * @returns Result object with success status and message
63
77
  */
@@ -75,8 +89,6 @@ export declare class DynamicToolManager {
75
89
  toolsetToTools: Record<string, string[]>;
76
90
  };
77
91
  /**
78
- * Enables multiple toolsets in a batch operation.
79
- * Sends a single notification after all toolsets are processed.
80
92
  * @param toolsetNames - Array of toolset names to enable
81
93
  * @returns Result object with overall success status and individual results
82
94
  */
@@ -91,7 +103,6 @@ export declare class DynamicToolManager {
91
103
  message: string;
92
104
  }>;
93
105
  /**
94
- * Enables all available toolsets in a batch operation.
95
106
  * @returns Result object with overall success status and individual results
96
107
  */
97
108
  enableAllToolsets(): Promise<{
@@ -1 +1 @@
1
- {"version":3,"file":"DynamicToolManager.d.ts","sourceRoot":"","sources":["../../src/core/DynamicToolManager.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AACzE,OAAO,KAAK,EACV,cAAc,EAEd,iBAAiB,EACjB,gBAAgB,EACjB,MAAM,mBAAmB,CAAC;AAC3B,OAAO,EAAE,cAAc,EAAE,MAAM,2BAA2B,CAAC;AAC3D,OAAO,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AAEjD,MAAM,WAAW,yBAAyB;IACxC,MAAM,EAAE,SAAS,CAAC;IAClB,QAAQ,EAAE,cAAc,CAAC;IACzB,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,kBAAkB,CAAC,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC;IAChD,cAAc,CAAC,EAAE,cAAc,CAAC;IAChC,YAAY,CAAC,EAAE,YAAY,CAAC;CAC7B;AAED,qBAAa,kBAAkB;IAC7B,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAY;IACnC,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAiB;IAC1C,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAU;IACnC,OAAO,CAAC,QAAQ,CAAC,kBAAkB,CAAC,CAA6B;IACjE,OAAO,CAAC,QAAQ,CAAC,cAAc,CAAC,CAAiB;IACjD,OAAO,CAAC,QAAQ,CAAC,YAAY,CAAe;IAE5C,OAAO,CAAC,QAAQ,CAAC,cAAc,CAAqB;gBAExC,OAAO,EAAE,yBAAyB;IAU9C;;;;;OAKG;YACW,kBAAkB;IASzB,oBAAoB,IAAI,MAAM,EAAE;IAIhC,iBAAiB,IAAI,MAAM,EAAE;IAI7B,oBAAoB,CAAC,IAAI,EAAE,MAAM,GAAG,iBAAiB,GAAG,SAAS;IAIjE,QAAQ,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO;IAItC;;;;;;OAMG;IACU,aAAa,CACxB,WAAW,EAAE,MAAM,EACnB,gBAAgB,UAAQ,GACvB,OAAO,CAAC;QAAE,OAAO,EAAE,OAAO,CAAC;QAAC,OAAO,EAAE,MAAM,CAAA;KAAE,CAAC;IA4EjD;;;;;OAKG;IACH,OAAO,CAAC,mBAAmB;IAsC3B;;;;;OAKG;IACH,OAAO,CAAC,kBAAkB;IA6B1B;;;;;OAKG;IACU,cAAc,CACzB,WAAW,EAAE,MAAM,GAClB,OAAO,CAAC;QAAE,OAAO,EAAE,OAAO,CAAC;QAAC,OAAO,EAAE,MAAM,CAAA;KAAE,CAAC;IAgC1C,SAAS;;;;;;;;;IAYhB;;;;;OAKG;IACU,cAAc,CAAC,YAAY,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC;QAC3D,OAAO,EAAE,OAAO,CAAC;QACjB,OAAO,EAAE,KAAK,CAAC;YACb,IAAI,EAAE,MAAM,CAAC;YACb,OAAO,EAAE,OAAO,CAAC;YACjB,OAAO,EAAE,MAAM,CAAC;YAChB,IAAI,CAAC,EAAE,gBAAgB,CAAC;SACzB,CAAC,CAAC;QACH,OAAO,EAAE,MAAM,CAAC;KACjB,CAAC;IAuCF;;;OAGG;IACU,iBAAiB,IAAI,OAAO,CAAC;QACxC,OAAO,EAAE,OAAO,CAAC;QACjB,OAAO,EAAE,KAAK,CAAC;YACb,IAAI,EAAE,MAAM,CAAC;YACb,OAAO,EAAE,OAAO,CAAC;YACjB,OAAO,EAAE,MAAM,CAAC;YAChB,IAAI,CAAC,EAAE,gBAAgB,CAAC;SACzB,CAAC,CAAC;QACH,OAAO,EAAE,MAAM,CAAC;KACjB,CAAC;CAIH"}
1
+ {"version":3,"file":"DynamicToolManager.d.ts","sourceRoot":"","sources":["../../src/core/DynamicToolManager.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AACzE,OAAO,KAAK,EACV,cAAc,EAEd,iBAAiB,EACjB,gBAAgB,EACjB,MAAM,mBAAmB,CAAC;AAC3B,OAAO,EAAE,cAAc,EAAE,MAAM,2BAA2B,CAAC;AAC3D,OAAO,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AACjD,OAAO,KAAK,EAAE,yBAAyB,EAAE,MAAM,iBAAiB,CAAC;AAEjE,qBAAa,kBAAkB;IAC7B,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAY;IACnC,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAiB;IAC1C,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAU;IACnC,OAAO,CAAC,QAAQ,CAAC,kBAAkB,CAAC,CAA6B;IACjE,OAAO,CAAC,QAAQ,CAAC,cAAc,CAAC,CAAiB;IACjD,OAAO,CAAC,QAAQ,CAAC,YAAY,CAAe;IAE5C,OAAO,CAAC,QAAQ,CAAC,cAAc,CAAqB;gBAExC,OAAO,EAAE,yBAAyB;IAU9C,MAAM,CAAC,OAAO;sBAGI,SAAS;wBACP,cAAc;uBACf,OAAO;kCACI,MAAM,OAAO,CAAC,IAAI,CAAC,GAAG,IAAI;8BAC9B,cAAc;4BAChB,YAAY;;;IAMpC;;OAEG;YACW,kBAAkB;IASzB,oBAAoB,IAAI,MAAM,EAAE;IAIhC,iBAAiB,IAAI,MAAM,EAAE;IAI7B,oBAAoB,CAAC,IAAI,EAAE,MAAM,GAAG,iBAAiB,GAAG,SAAS;IAIjE,QAAQ,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO;IAItC;;;;;OAKG;IACU,aAAa,CACxB,WAAW,EAAE,MAAM,EACnB,gBAAgB,UAAQ,GACvB,OAAO,CAAC;QAAE,OAAO,EAAE,OAAO,CAAC;QAAC,OAAO,EAAE,MAAM,CAAA;KAAE,CAAC;IAsCjD;;;OAGG;IACH,OAAO,CAAC,wBAAwB;IAmBhC;;;;OAIG;YACW,uBAAuB;IAoBrC;;;;OAIG;IACH,OAAO,CAAC,iBAAiB;IAUzB;;;OAGG;IACH,OAAO,CAAC,oBAAoB;IAa5B;;;OAGG;IACH,OAAO,CAAC,mBAAmB;IAsC3B;;;OAGG;IACH,OAAO,CAAC,kBAAkB;IA6B1B;;;OAGG;IACU,cAAc,CACzB,WAAW,EAAE,MAAM,GAClB,OAAO,CAAC;QAAE,OAAO,EAAE,OAAO,CAAC;QAAC,OAAO,EAAE,MAAM,CAAA;KAAE,CAAC;IAgC1C,SAAS;;;;;;;;;IAYhB;;;OAGG;IACU,cAAc,CAAC,YAAY,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC;QAC3D,OAAO,EAAE,OAAO,CAAC;QACjB,OAAO,EAAE,KAAK,CAAC;YACb,IAAI,EAAE,MAAM,CAAC;YACb,OAAO,EAAE,OAAO,CAAC;YACjB,OAAO,EAAE,MAAM,CAAC;YAChB,IAAI,CAAC,EAAE,gBAAgB,CAAC;SACzB,CAAC,CAAC;QACH,OAAO,EAAE,MAAM,CAAC;KACjB,CAAC;IAuCF;;OAEG;IACU,iBAAiB,IAAI,OAAO,CAAC;QACxC,OAAO,EAAE,OAAO,CAAC;QACjB,OAAO,EAAE,KAAK,CAAC;YACb,IAAI,EAAE,MAAM,CAAC;YACb,OAAO,EAAE,OAAO,CAAC;YACjB,OAAO,EAAE,MAAM,CAAC;YAChB,IAAI,CAAC,EAAE,gBAAgB,CAAC;SACzB,CAAC,CAAC;QACH,OAAO,EAAE,MAAM,CAAC;KACjB,CAAC;CAIH"}
@@ -1,19 +1,7 @@
1
1
  import { McpServer } from '@modelcontextprotocol/sdk/server/mcp.js';
2
2
  import { DynamicToolManager } from './DynamicToolManager.js';
3
3
  import { ExposurePolicy, Mode, ModuleLoader, ToolSetCatalog } from '../types/index.js';
4
- export interface ServerOrchestratorOptions {
5
- server: McpServer;
6
- catalog: ToolSetCatalog;
7
- moduleLoaders?: Record<string, ModuleLoader>;
8
- exposurePolicy?: ExposurePolicy;
9
- context?: unknown;
10
- notifyToolsListChanged?: () => Promise<void> | void;
11
- startup?: {
12
- mode?: Exclude<Mode, "ALL">;
13
- toolsets?: string[] | "ALL";
14
- };
15
- registerMetaTools?: boolean;
16
- }
4
+ import { ServerOrchestratorOptions } from './core.types.js';
17
5
  export declare class ServerOrchestrator {
18
6
  private readonly mode;
19
7
  private readonly resolver;
@@ -22,27 +10,47 @@ export declare class ServerOrchestrator {
22
10
  private readonly initPromise;
23
11
  private initError;
24
12
  constructor(options: ServerOrchestratorOptions);
13
+ static builder(): {
14
+ server(value: McpServer): /*elided*/ any;
15
+ catalog(value: ToolSetCatalog): /*elided*/ any;
16
+ moduleLoaders(value: Record<string, ModuleLoader>): /*elided*/ any;
17
+ exposurePolicy(value: ExposurePolicy): /*elided*/ any;
18
+ context(value: unknown): /*elided*/ any;
19
+ notifyToolsListChanged(value: () => Promise<void> | void): /*elided*/ any;
20
+ startup(value: {
21
+ mode?: Exclude<Mode, "ALL">;
22
+ toolsets?: string[] | "ALL";
23
+ }): /*elided*/ any;
24
+ registerMetaTools(value: boolean): /*elided*/ any;
25
+ build(): ServerOrchestrator;
26
+ };
25
27
  /**
26
- * Initializes toolsets asynchronously during construction.
27
- * Stores any errors for later retrieval via ensureReady().
28
28
  * @param initial - The toolsets to initialize or "ALL"
29
29
  * @returns Promise that resolves when initialization is complete
30
- * @private
31
30
  */
32
31
  private initializeToolsets;
32
+ ensureReady(): Promise<void>;
33
+ isReady(): Promise<boolean>;
34
+ private resolveStartupConfig;
33
35
  /**
34
- * Waits for the orchestrator to be fully initialized.
35
- * Call this before using the orchestrator to ensure all toolsets are loaded.
36
- * @throws {Error} If initialization failed
36
+ * @param mode - The explicit mode
37
+ * @param toolsets - Optional toolsets from startup config
38
+ * @param catalog - The toolset catalog to validate against
39
+ * @returns Resolved mode and toolsets
37
40
  */
38
- ensureReady(): Promise<void>;
41
+ private resolveExplicitMode;
39
42
  /**
40
- * Checks if the orchestrator has finished initialization.
41
- * Does not throw on error - use ensureReady() for that.
42
- * @returns Promise that resolves to true if ready, false if initialization failed
43
+ * @param startup - Startup config without an explicit mode
44
+ * @param catalog - The toolset catalog to validate against
45
+ * @returns Inferred mode and toolsets
43
46
  */
44
- isReady(): Promise<boolean>;
45
- private resolveStartupConfig;
47
+ private inferModeFromToolsets;
48
+ /**
49
+ * @param names - Array of toolset names to validate
50
+ * @param catalog - The toolset catalog to validate against
51
+ * @returns Array of valid, sanitized toolset names
52
+ */
53
+ private validateAndCollectToolsets;
46
54
  getMode(): Exclude<Mode, "ALL">;
47
55
  getManager(): DynamicToolManager;
48
56
  }
@@ -1 +1 @@
1
- {"version":3,"file":"ServerOrchestrator.d.ts","sourceRoot":"","sources":["../../src/core/ServerOrchestrator.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AAGzE,OAAO,EAAE,kBAAkB,EAAE,MAAM,yBAAyB,CAAC;AAE7D,OAAO,KAAK,EACV,cAAc,EACd,IAAI,EACJ,YAAY,EACZ,cAAc,EACf,MAAM,mBAAmB,CAAC;AAG3B,MAAM,WAAW,yBAAyB;IACxC,MAAM,EAAE,SAAS,CAAC;IAClB,OAAO,EAAE,cAAc,CAAC;IACxB,aAAa,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,YAAY,CAAC,CAAC;IAC7C,cAAc,CAAC,EAAE,cAAc,CAAC;IAChC,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,sBAAsB,CAAC,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC;IACpD,OAAO,CAAC,EAAE;QAAE,IAAI,CAAC,EAAE,OAAO,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;QAAC,QAAQ,CAAC,EAAE,MAAM,EAAE,GAAG,KAAK,CAAA;KAAE,CAAC;IACvE,iBAAiB,CAAC,EAAE,OAAO,CAAC;CAC7B;AAED,qBAAa,kBAAkB;IAC7B,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAuB;IAC5C,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAiB;IAC1C,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAqB;IAC7C,OAAO,CAAC,QAAQ,CAAC,gBAAgB,CAAmB;IACpD,OAAO,CAAC,QAAQ,CAAC,WAAW,CAAgB;IAC5C,OAAO,CAAC,SAAS,CAAsB;gBAE3B,OAAO,EAAE,yBAAyB;IAgC9C;;;;;;OAMG;YACW,kBAAkB;IAgBhC;;;;OAIG;IACU,WAAW,IAAI,OAAO,CAAC,IAAI,CAAC;IAOzC;;;;OAIG;IACU,OAAO,IAAI,OAAO,CAAC,OAAO,CAAC;IAKxC,OAAO,CAAC,oBAAoB;IAqDrB,OAAO,IAAI,OAAO,CAAC,IAAI,EAAE,KAAK,CAAC;IAI/B,UAAU,IAAI,kBAAkB;CAGxC"}
1
+ {"version":3,"file":"ServerOrchestrator.d.ts","sourceRoot":"","sources":["../../src/core/ServerOrchestrator.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AAGzE,OAAO,EAAE,kBAAkB,EAAE,MAAM,yBAAyB,CAAC;AAE7D,OAAO,KAAK,EACV,cAAc,EACd,IAAI,EACJ,YAAY,EACZ,cAAc,EACf,MAAM,mBAAmB,CAAC;AAE3B,OAAO,KAAK,EAAE,yBAAyB,EAAE,MAAM,iBAAiB,CAAC;AAEjE,qBAAa,kBAAkB;IAC7B,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAuB;IAC5C,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAiB;IAC1C,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAqB;IAC7C,OAAO,CAAC,QAAQ,CAAC,gBAAgB,CAAmB;IACpD,OAAO,CAAC,QAAQ,CAAC,WAAW,CAAgB;IAC5C,OAAO,CAAC,SAAS,CAAsB;gBAE3B,OAAO,EAAE,yBAAyB;IAuC9C,MAAM,CAAC,OAAO;sBAGI,SAAS;uBACR,cAAc;6BACR,MAAM,CAAC,MAAM,EAAE,YAAY,CAAC;8BAC3B,cAAc;uBACrB,OAAO;sCACQ,MAAM,OAAO,CAAC,IAAI,CAAC,GAAG,IAAI;uBACzC;YAAE,IAAI,CAAC,EAAE,OAAO,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;YAAC,QAAQ,CAAC,EAAE,MAAM,EAAE,GAAG,KAAK,CAAA;SAAE;iCAClD,OAAO;;;IAMpC;;;OAGG;YACW,kBAAkB;IAgBnB,WAAW,IAAI,OAAO,CAAC,IAAI,CAAC;IAO5B,OAAO,IAAI,OAAO,CAAC,OAAO,CAAC;IAKxC,OAAO,CAAC,oBAAoB;IAU5B;;;;;OAKG;IACH,OAAO,CAAC,mBAAmB;IAwB3B;;;;OAIG;IACH,OAAO,CAAC,qBAAqB;IAiB7B;;;;OAIG;IACH,OAAO,CAAC,0BAA0B;IAc3B,OAAO,IAAI,OAAO,CAAC,IAAI,EAAE,KAAK,CAAC;IAI/B,UAAU,IAAI,kBAAkB;CAGxC"}
@@ -1,12 +1,14 @@
1
1
  import { McpToolDefinition } from '../types/index.js';
2
- export interface ToolRegistryOptions {
3
- namespaceWithToolset?: boolean;
4
- }
2
+ import { ToolRegistryOptions } from './core.types.js';
5
3
  export declare class ToolRegistry {
6
4
  private readonly options;
7
5
  private readonly names;
8
6
  private readonly toolsetToNames;
9
7
  constructor(options?: ToolRegistryOptions);
8
+ static builder(): {
9
+ namespaceWithToolset(value: boolean): /*elided*/ any;
10
+ build(): ToolRegistry;
11
+ };
10
12
  getSafeName(toolsetKey: string, toolName: string): string;
11
13
  has(name: string): boolean;
12
14
  add(name: string): void;
@@ -1 +1 @@
1
- {"version":3,"file":"ToolRegistry.d.ts","sourceRoot":"","sources":["../../src/core/ToolRegistry.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,mBAAmB,CAAC;AAG3D,MAAM,WAAW,mBAAmB;IAClC,oBAAoB,CAAC,EAAE,OAAO,CAAC;CAChC;AAED,qBAAa,YAAY;IACvB,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAgC;IACxD,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAqB;IAC3C,OAAO,CAAC,QAAQ,CAAC,cAAc,CAAkC;gBAErD,OAAO,GAAE,mBAAwB;IAMtC,WAAW,CAAC,UAAU,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,MAAM;IAMzD,GAAG,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO;IAI1B,GAAG,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI;IAUvB,aAAa,CAAC,UAAU,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,IAAI;IAOrD,cAAc,CACnB,UAAU,EAAE,MAAM,EAClB,KAAK,EAAE,iBAAiB,EAAE,GACzB,iBAAiB,EAAE;IAaf,IAAI,IAAI,MAAM,EAAE;IAIhB,aAAa,IAAI,MAAM,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC;CAOjD"}
1
+ {"version":3,"file":"ToolRegistry.d.ts","sourceRoot":"","sources":["../../src/core/ToolRegistry.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,mBAAmB,CAAC;AAE3D,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,iBAAiB,CAAC;AAE3D,qBAAa,YAAY;IACvB,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAgC;IACxD,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAqB;IAC3C,OAAO,CAAC,QAAQ,CAAC,cAAc,CAAkC;gBAErD,OAAO,GAAE,mBAAwB;IAM7C,MAAM,CAAC,OAAO;oCAGkB,OAAO;;;IAMhC,WAAW,CAAC,UAAU,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,MAAM;IAMzD,GAAG,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO;IAI1B,GAAG,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI;IAUvB,aAAa,CAAC,UAAU,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,IAAI;IAOrD,cAAc,CACnB,UAAU,EAAE,MAAM,EAClB,KAAK,EAAE,iBAAiB,EAAE,GACzB,iBAAiB,EAAE;IAaf,IAAI,IAAI,MAAM,EAAE;IAIhB,aAAa,IAAI,MAAM,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC;CAOjD"}
@@ -0,0 +1,29 @@
1
+ import { McpServer } from '@modelcontextprotocol/sdk/server/mcp.js';
2
+ import { ExposurePolicy, ModuleLoader, Mode, ToolSetCatalog } from '../types/index.js';
3
+ import { ModuleResolver } from '../mode/ModuleResolver.js';
4
+ import { ToolRegistry } from './ToolRegistry.js';
5
+ export interface ToolRegistryOptions {
6
+ namespaceWithToolset?: boolean;
7
+ }
8
+ export interface DynamicToolManagerOptions {
9
+ server: McpServer;
10
+ resolver: ModuleResolver;
11
+ context?: unknown;
12
+ onToolsListChanged?: () => Promise<void> | void;
13
+ exposurePolicy?: ExposurePolicy;
14
+ toolRegistry?: ToolRegistry;
15
+ }
16
+ export interface ServerOrchestratorOptions {
17
+ server: McpServer;
18
+ catalog: ToolSetCatalog;
19
+ moduleLoaders?: Record<string, ModuleLoader>;
20
+ exposurePolicy?: ExposurePolicy;
21
+ context?: unknown;
22
+ notifyToolsListChanged?: () => Promise<void> | void;
23
+ startup?: {
24
+ mode?: Exclude<Mode, "ALL">;
25
+ toolsets?: string[] | "ALL";
26
+ };
27
+ registerMetaTools?: boolean;
28
+ }
29
+ //# sourceMappingURL=core.types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"core.types.d.ts","sourceRoot":"","sources":["../../src/core/core.types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AACzE,OAAO,KAAK,EAAE,cAAc,EAAE,YAAY,EAAE,IAAI,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAC;AAC5F,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,2BAA2B,CAAC;AAChE,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AAEtD,MAAM,WAAW,mBAAmB;IAClC,oBAAoB,CAAC,EAAE,OAAO,CAAC;CAChC;AAED,MAAM,WAAW,yBAAyB;IACxC,MAAM,EAAE,SAAS,CAAC;IAClB,QAAQ,EAAE,cAAc,CAAC;IACzB,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,kBAAkB,CAAC,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC;IAChD,cAAc,CAAC,EAAE,cAAc,CAAC;IAChC,YAAY,CAAC,EAAE,YAAY,CAAC;CAC7B;AAED,MAAM,WAAW,yBAAyB;IACxC,MAAM,EAAE,SAAS,CAAC;IAClB,OAAO,EAAE,cAAc,CAAC;IACxB,aAAa,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,YAAY,CAAC,CAAC;IAC7C,cAAc,CAAC,EAAE,cAAc,CAAC;IAChC,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,sBAAsB,CAAC,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC;IACpD,OAAO,CAAC,EAAE;QAAE,IAAI,CAAC,EAAE,OAAO,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;QAAC,QAAQ,CAAC,EAAE,MAAM,EAAE,GAAG,KAAK,CAAA;KAAE,CAAC;IACvE,iBAAiB,CAAC,EAAE,OAAO,CAAC;CAC7B"}
@@ -1,30 +1,7 @@
1
1
  import { FastifyInstance } from 'fastify';
2
2
  import { DynamicToolManager } from '../core/DynamicToolManager.js';
3
- import { ServerOrchestrator } from '../core/ServerOrchestrator.js';
4
3
  import { SessionContextResolver } from '../session/SessionContextResolver.js';
5
- import { McpServer } from '@modelcontextprotocol/sdk/server/mcp.js';
6
- import { CustomEndpointDefinition } from './customEndpoints.js';
7
- export interface FastifyTransportOptions {
8
- host?: string;
9
- port?: number;
10
- basePath?: string;
11
- cors?: boolean;
12
- logger?: boolean;
13
- app?: FastifyInstance;
14
- /**
15
- * Optional custom HTTP endpoints to register alongside MCP protocol endpoints.
16
- * Allows adding REST-like endpoints with Zod validation and type inference.
17
- */
18
- customEndpoints?: CustomEndpointDefinition[];
19
- }
20
- /**
21
- * Callback type for creating a server bundle.
22
- * Accepts an optional merged context for per-session context support.
23
- */
24
- export type CreateBundleCallback = (mergedContext?: unknown) => {
25
- server: McpServer;
26
- orchestrator: ServerOrchestrator;
27
- };
4
+ import { FastifyTransportOptions, CreateBundleCallback, CustomEndpointDefinition } from './http.types.js';
28
5
  export declare class FastifyTransport {
29
6
  private readonly options;
30
7
  private readonly defaultManager;
@@ -35,45 +12,76 @@ export declare class FastifyTransport {
35
12
  private readonly configSchema?;
36
13
  private readonly clientCache;
37
14
  constructor(defaultManager: DynamicToolManager, createBundle: CreateBundleCallback, options?: FastifyTransportOptions, configSchema?: object, sessionContextResolver?: SessionContextResolver, baseContext?: unknown);
15
+ static builder(): {
16
+ defaultManager(value: DynamicToolManager): /*elided*/ any;
17
+ createBundle(value: CreateBundleCallback): /*elided*/ any;
18
+ host(value: string): /*elided*/ any;
19
+ port(value: number): /*elided*/ any;
20
+ basePath(value: string): /*elided*/ any;
21
+ cors(value: boolean): /*elided*/ any;
22
+ logger(value: boolean): /*elided*/ any;
23
+ app(value: FastifyInstance): /*elided*/ any;
24
+ customEndpoints(value: CustomEndpointDefinition[]): /*elided*/ any;
25
+ configSchema(value: object): /*elided*/ any;
26
+ sessionContextResolver(value: SessionContextResolver): /*elided*/ any;
27
+ baseContext(value: unknown): /*elided*/ any;
28
+ build(): FastifyTransport;
29
+ };
38
30
  start(): Promise<void>;
39
31
  /**
40
- * Stops the Fastify server and cleans up all resources.
41
- * Closes all client sessions and clears the cache.
32
+ * @param basePath - The base path to normalize
33
+ * @returns Normalized base path without trailing slash
34
+ */
35
+ private normalizeBasePath;
36
+ /**
37
+ * @param app - Fastify instance
38
+ * @param base - Base path for routes
39
+ */
40
+ private registerHealthEndpoint;
41
+ /**
42
+ * @param app - Fastify instance
43
+ * @param base - Base path for routes
44
+ */
45
+ private registerToolsEndpoint;
46
+ /**
47
+ * @param app - Fastify instance
48
+ * @param base - Base path for routes
49
+ */
50
+ private registerConfigDiscoveryEndpoint;
51
+ /**
52
+ * @param app - Fastify instance
53
+ * @param base - Base path for routes
54
+ */
55
+ private registerMcpPostEndpoint;
56
+ /**
57
+ * @param app - Fastify instance
58
+ * @param base - Base path for routes
59
+ */
60
+ private registerMcpGetEndpoint;
61
+ /**
62
+ * @param app - Fastify instance
63
+ * @param base - Base path for routes
42
64
  */
65
+ private registerMcpDeleteEndpoint;
43
66
  stop(): Promise<void>;
44
67
  /**
45
- * Cleans up resources associated with a client bundle.
46
- * Closes all sessions within the bundle.
47
68
  * @param bundle - The client bundle to clean up
48
- * @private
49
69
  */
50
70
  private cleanupBundle;
51
71
  /**
52
- * Resolves the session context and generates a cache key for the request.
53
- * If a session context resolver is configured, it extracts query parameters
54
- * and merges session-specific context with the base context.
55
- *
56
72
  * @param req - The Fastify request
57
73
  * @param clientId - The client identifier
58
74
  * @returns Object with cache key and merged context
59
- * @private
60
75
  */
61
76
  private resolveSessionContext;
62
77
  /**
63
- * Extracts headers from a Fastify request as a Record.
64
- * Normalizes header names to lowercase.
65
- *
66
78
  * @param req - The Fastify request
67
79
  * @returns Headers as a string record
68
- * @private
69
80
  */
70
81
  private extractHeaders;
71
82
  /**
72
- * Extracts query parameters from a Fastify request as a Record.
73
- *
74
83
  * @param req - The Fastify request
75
84
  * @returns Query parameters as a string record
76
- * @private
77
85
  */
78
86
  private extractQuery;
79
87
  }
@@ -1 +1 @@
1
- {"version":3,"file":"FastifyTransport.d.ts","sourceRoot":"","sources":["../../src/http/FastifyTransport.ts"],"names":[],"mappings":"AAAA,OAAgB,EACd,KAAK,eAAe,EAGrB,MAAM,SAAS,CAAC;AAGjB,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,+BAA+B,CAAC;AACxE,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,+BAA+B,CAAC;AAExE,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,sCAAsC,CAAC;AAInF,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AACzE,OAAO,KAAK,EAAE,wBAAwB,EAAE,MAAM,sBAAsB,CAAC;AAGrE,MAAM,WAAW,uBAAuB;IACtC,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,IAAI,CAAC,EAAE,OAAO,CAAC;IACf,MAAM,CAAC,EAAE,OAAO,CAAC;IAEjB,GAAG,CAAC,EAAE,eAAe,CAAC;IACtB;;;OAGG;IACH,eAAe,CAAC,EAAE,wBAAwB,EAAE,CAAC;CAC9C;AAED;;;GAGG;AACH,MAAM,MAAM,oBAAoB,GAAG,CAAC,aAAa,CAAC,EAAE,OAAO,KAAK;IAC9D,MAAM,EAAE,SAAS,CAAC;IAClB,YAAY,EAAE,kBAAkB,CAAC;CAClC,CAAC;AAEF,qBAAa,gBAAgB;IAC3B,OAAO,CAAC,QAAQ,CAAC,OAAO,CAQtB;IACF,OAAO,CAAC,QAAQ,CAAC,cAAc,CAAqB;IACpD,OAAO,CAAC,QAAQ,CAAC,YAAY,CAAuB;IACpD,OAAO,CAAC,QAAQ,CAAC,sBAAsB,CAAC,CAAyB;IACjE,OAAO,CAAC,QAAQ,CAAC,WAAW,CAAC,CAAU;IACvC,OAAO,CAAC,GAAG,CAAgC;IAC3C,OAAO,CAAC,QAAQ,CAAC,YAAY,CAAC,CAAS;IAGvC,OAAO,CAAC,QAAQ,CAAC,WAAW,CASzB;gBAGD,cAAc,EAAE,kBAAkB,EAClC,YAAY,EAAE,oBAAoB,EAClC,OAAO,GAAE,uBAA4B,EACrC,YAAY,CAAC,EAAE,MAAM,EACrB,sBAAsB,CAAC,EAAE,sBAAsB,EAC/C,WAAW,CAAC,EAAE,OAAO;IAkBV,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;IAwMnC;;;OAGG;IACU,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC;IAYlC;;;;;OAKG;IACH,OAAO,CAAC,aAAa;IAmBrB;;;;;;;;;OASG;IACH,OAAO,CAAC,qBAAqB;IAqC7B;;;;;;;OAOG;IACH,OAAO,CAAC,cAAc;IAYtB;;;;;;OAMG;IACH,OAAO,CAAC,YAAY;CAYrB"}
1
+ {"version":3,"file":"FastifyTransport.d.ts","sourceRoot":"","sources":["../../src/http/FastifyTransport.ts"],"names":[],"mappings":"AAAA,OAAgB,EACd,KAAK,eAAe,EAGrB,MAAM,SAAS,CAAC;AAIjB,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,+BAA+B,CAAC;AAGxE,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,sCAAsC,CAAC;AAKnF,OAAO,KAAK,EACV,uBAAuB,EACvB,oBAAoB,EACpB,wBAAwB,EACzB,MAAM,iBAAiB,CAAC;AAQzB,qBAAa,gBAAgB;IAC3B,OAAO,CAAC,QAAQ,CAAC,OAAO,CAQtB;IACF,OAAO,CAAC,QAAQ,CAAC,cAAc,CAAqB;IACpD,OAAO,CAAC,QAAQ,CAAC,YAAY,CAAuB;IACpD,OAAO,CAAC,QAAQ,CAAC,sBAAsB,CAAC,CAAyB;IACjE,OAAO,CAAC,QAAQ,CAAC,WAAW,CAAC,CAAU;IACvC,OAAO,CAAC,GAAG,CAAgC;IAC3C,OAAO,CAAC,QAAQ,CAAC,YAAY,CAAC,CAAS;IAGvC,OAAO,CAAC,QAAQ,CAAC,WAAW,CASzB;gBAGD,cAAc,EAAE,kBAAkB,EAClC,YAAY,EAAE,oBAAoB,EAClC,OAAO,GAAE,uBAA4B,EACrC,YAAY,CAAC,EAAE,MAAM,EACrB,sBAAsB,CAAC,EAAE,sBAAsB,EAC/C,WAAW,CAAC,EAAE,OAAO;IAkBvB,MAAM,CAAC,OAAO;8BAQY,kBAAkB;4BACpB,oBAAoB;oBAC5B,MAAM;oBACN,MAAM;wBACF,MAAM;oBACV,OAAO;sBACL,OAAO;mBACV,eAAe;+BACH,wBAAwB,EAAE;4BAC7B,MAAM;sCACI,sBAAsB;2BACjC,OAAO;;;IAMjB,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;IA4BnC;;;OAGG;IACH,OAAO,CAAC,iBAAiB;IAIzB;;;OAGG;IACH,OAAO,CAAC,sBAAsB;IAI9B;;;OAGG;IACH,OAAO,CAAC,qBAAqB;IAI7B;;;OAGG;IACH,OAAO,CAAC,+BAA+B;IAiBvC;;;OAGG;IACH,OAAO,CAAC,uBAAuB;IAkF/B;;;OAGG;IACH,OAAO,CAAC,sBAAsB;IAgC9B;;;OAGG;IACH,OAAO,CAAC,yBAAyB;IAiDpB,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC;IAYlC;;OAEG;IACH,OAAO,CAAC,aAAa;IAmBrB;;;;OAIG;IACH,OAAO,CAAC,qBAAqB;IAqC7B;;;OAGG;IACH,OAAO,CAAC,cAAc;IAYtB;;;OAGG;IACH,OAAO,CAAC,YAAY;CAYrB"}
@@ -1,4 +1,28 @@
1
1
  import { z } from 'zod';
2
+ import { FastifyInstance, FastifyRequest } from 'fastify';
3
+ import { McpServer } from '@modelcontextprotocol/sdk/server/mcp.js';
4
+ import { ServerOrchestrator } from '../core/ServerOrchestrator.js';
5
+ export interface FastifyTransportOptions {
6
+ host?: string;
7
+ port?: number;
8
+ basePath?: string;
9
+ cors?: boolean;
10
+ logger?: boolean;
11
+ app?: FastifyInstance;
12
+ /**
13
+ * Optional custom HTTP endpoints to register alongside MCP protocol endpoints.
14
+ * Allows adding REST-like endpoints with Zod validation and type inference.
15
+ */
16
+ customEndpoints?: CustomEndpointDefinition[];
17
+ }
18
+ /**
19
+ * Callback type for creating a server bundle.
20
+ * Accepts an optional merged context for per-session context support.
21
+ */
22
+ export type CreateBundleCallback = (mergedContext?: unknown) => {
23
+ server: McpServer;
24
+ orchestrator: ServerOrchestrator;
25
+ };
2
26
  /**
3
27
  * Supported HTTP methods for custom endpoints
4
28
  */
@@ -158,90 +182,13 @@ export interface EndpointErrorResponse {
158
182
  };
159
183
  }
160
184
  /**
161
- * Helper function to create type-safe custom endpoints with automatic type inference.
162
- * Provides better IntelliSense and type checking for endpoint definitions.
163
- *
164
- * @template TBody - Zod schema for request body
165
- * @template TQuery - Zod schema for query parameters
166
- * @template TParams - Zod schema for path parameters
167
- * @template TResponse - Zod schema for response
168
- *
169
- * @param definition - Endpoint definition with schemas and handler
170
- * @returns The same endpoint definition with full type inference
171
- *
172
- * @example
173
- * ```typescript
174
- * import { z } from "zod";
175
- * import { defineEndpoint } from "toolception";
176
- *
177
- * const getUsersEndpoint = defineEndpoint({
178
- * method: "GET",
179
- * path: "/users",
180
- * querySchema: z.object({
181
- * limit: z.coerce.number().int().positive().default(10),
182
- * role: z.enum(["admin", "user"]).optional(),
183
- * }),
184
- * responseSchema: z.object({
185
- * users: z.array(z.object({
186
- * id: z.string(),
187
- * name: z.string(),
188
- * })),
189
- * total: z.number(),
190
- * }),
191
- * handler: async (req) => {
192
- * // req.query is fully typed: { limit: number, role?: "admin" | "user" }
193
- * const { limit, role } = req.query;
194
- *
195
- * return {
196
- * users: [{ id: "1", name: "Alice" }],
197
- * total: 1,
198
- * };
199
- * },
200
- * });
201
- * ```
185
+ * Options for registering custom endpoints
202
186
  */
203
- 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>;
204
- /**
205
- * Helper function to create permission-aware custom endpoints for permission-based servers.
206
- * Similar to defineEndpoint but with access to permission context in the handler.
207
- *
208
- * @template TBody - Zod schema for request body
209
- * @template TQuery - Zod schema for query parameters
210
- * @template TParams - Zod schema for path parameters
211
- * @template TResponse - Zod schema for response
212
- *
213
- * @param definition - Endpoint definition with permission-aware handler
214
- * @returns Endpoint definition compatible with permission-based servers
215
- *
216
- * @example
217
- * ```typescript
218
- * import { definePermissionAwareEndpoint } from "toolception";
219
- *
220
- * const statsEndpoint = definePermissionAwareEndpoint({
221
- * method: "GET",
222
- * path: "/my-permissions",
223
- * responseSchema: z.object({
224
- * toolsets: z.array(z.string()),
225
- * count: z.number(),
226
- * }),
227
- * handler: async (req) => {
228
- * // req.allowedToolsets and req.failedToolsets are available
229
- * return {
230
- * toolsets: req.allowedToolsets,
231
- * count: req.allowedToolsets.length,
232
- * };
233
- * },
234
- * });
235
- * ```
236
- */
237
- 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: {
238
- method: HttpMethod;
239
- path: string;
240
- bodySchema?: TBody;
241
- querySchema?: TQuery;
242
- paramsSchema?: TParams;
243
- responseSchema?: TResponse;
244
- handler: PermissionAwareEndpointHandler<TBody, TQuery, TParams, TResponse>;
245
- description?: string;
246
- }): CustomEndpointDefinition<TBody, TQuery, TParams, TResponse>;
247
- //# sourceMappingURL=customEndpoints.d.ts.map
187
+ export interface RegisterCustomEndpointsOptions {
188
+ /**
189
+ * Optional function to extract additional context for each request.
190
+ * Used by permission-aware transport to inject permission data.
191
+ */
192
+ contextExtractor?: (req: FastifyRequest) => Promise<Record<string, any>> | Record<string, any>;
193
+ }
194
+ //# sourceMappingURL=http.types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"http.types.d.ts","sourceRoot":"","sources":["../../src/http/http.types.ts"],"names":[],"mappings":"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"}