foundryvtt-mcp 0.11.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (139) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +142 -0
  3. package/dist/character/manager.d.ts +92 -0
  4. package/dist/character/manager.d.ts.map +1 -0
  5. package/dist/character/manager.js +208 -0
  6. package/dist/character/manager.js.map +1 -0
  7. package/dist/combat/manager.d.ts +94 -0
  8. package/dist/combat/manager.d.ts.map +1 -0
  9. package/dist/combat/manager.js +373 -0
  10. package/dist/combat/manager.js.map +1 -0
  11. package/dist/config/index.d.ts +114 -0
  12. package/dist/config/index.d.ts.map +1 -0
  13. package/dist/config/index.js +177 -0
  14. package/dist/config/index.js.map +1 -0
  15. package/dist/diagnostics/client.d.ts +193 -0
  16. package/dist/diagnostics/client.d.ts.map +1 -0
  17. package/dist/diagnostics/client.js +314 -0
  18. package/dist/diagnostics/client.js.map +1 -0
  19. package/dist/diagnostics/types.d.ts +414 -0
  20. package/dist/diagnostics/types.d.ts.map +1 -0
  21. package/dist/diagnostics/types.js +94 -0
  22. package/dist/diagnostics/types.js.map +1 -0
  23. package/dist/foundry/auth.d.ts +19 -0
  24. package/dist/foundry/auth.d.ts.map +1 -0
  25. package/dist/foundry/auth.js +135 -0
  26. package/dist/foundry/auth.js.map +1 -0
  27. package/dist/foundry/client.d.ts +95 -0
  28. package/dist/foundry/client.d.ts.map +1 -0
  29. package/dist/foundry/client.js +692 -0
  30. package/dist/foundry/client.js.map +1 -0
  31. package/dist/foundry/types.d.ts +805 -0
  32. package/dist/foundry/types.d.ts.map +1 -0
  33. package/dist/foundry/types.js +13 -0
  34. package/dist/foundry/types.js.map +1 -0
  35. package/dist/index.d.ts +16 -0
  36. package/dist/index.d.ts.map +1 -0
  37. package/dist/index.js +199 -0
  38. package/dist/index.js.map +1 -0
  39. package/dist/resources/index.d.ts +3 -0
  40. package/dist/resources/index.d.ts.map +1 -0
  41. package/dist/resources/index.js +93 -0
  42. package/dist/resources/index.js.map +1 -0
  43. package/dist/tools/base.d.ts +80 -0
  44. package/dist/tools/base.d.ts.map +1 -0
  45. package/dist/tools/base.js +73 -0
  46. package/dist/tools/base.js.map +1 -0
  47. package/dist/tools/definitions.d.ts +414 -0
  48. package/dist/tools/definitions.d.ts.map +1 -0
  49. package/dist/tools/definitions.js +429 -0
  50. package/dist/tools/definitions.js.map +1 -0
  51. package/dist/tools/handlers/actors.d.ts +31 -0
  52. package/dist/tools/handlers/actors.d.ts.map +1 -0
  53. package/dist/tools/handlers/actors.js +76 -0
  54. package/dist/tools/handlers/actors.js.map +1 -0
  55. package/dist/tools/handlers/chat.d.ts +13 -0
  56. package/dist/tools/handlers/chat.d.ts.map +1 -0
  57. package/dist/tools/handlers/chat.js +38 -0
  58. package/dist/tools/handlers/chat.js.map +1 -0
  59. package/dist/tools/handlers/combat.d.ts +11 -0
  60. package/dist/tools/handlers/combat.d.ts.map +1 -0
  61. package/dist/tools/handlers/combat.js +48 -0
  62. package/dist/tools/handlers/combat.js.map +1 -0
  63. package/dist/tools/handlers/diagnostics.d.ts +64 -0
  64. package/dist/tools/handlers/diagnostics.d.ts.map +1 -0
  65. package/dist/tools/handlers/diagnostics.js +182 -0
  66. package/dist/tools/handlers/diagnostics.js.map +1 -0
  67. package/dist/tools/handlers/dice.d.ts +39 -0
  68. package/dist/tools/handlers/dice.d.ts.map +1 -0
  69. package/dist/tools/handlers/dice.js +53 -0
  70. package/dist/tools/handlers/dice.js.map +1 -0
  71. package/dist/tools/handlers/generation.d.ts +44 -0
  72. package/dist/tools/handlers/generation.d.ts.map +1 -0
  73. package/dist/tools/handlers/generation.js +205 -0
  74. package/dist/tools/handlers/generation.js.map +1 -0
  75. package/dist/tools/handlers/items.d.ts +21 -0
  76. package/dist/tools/handlers/items.d.ts.map +1 -0
  77. package/dist/tools/handlers/items.js +50 -0
  78. package/dist/tools/handlers/items.js.map +1 -0
  79. package/dist/tools/handlers/journals.d.ts +22 -0
  80. package/dist/tools/handlers/journals.d.ts.map +1 -0
  81. package/dist/tools/handlers/journals.js +62 -0
  82. package/dist/tools/handlers/journals.js.map +1 -0
  83. package/dist/tools/handlers/resources.d.ts +13 -0
  84. package/dist/tools/handlers/resources.d.ts.map +1 -0
  85. package/dist/tools/handlers/resources.js +188 -0
  86. package/dist/tools/handlers/resources.js.map +1 -0
  87. package/dist/tools/handlers/scenes.d.ts +18 -0
  88. package/dist/tools/handlers/scenes.d.ts.map +1 -0
  89. package/dist/tools/handlers/scenes.js +34 -0
  90. package/dist/tools/handlers/scenes.js.map +1 -0
  91. package/dist/tools/handlers/users.d.ts +11 -0
  92. package/dist/tools/handlers/users.d.ts.map +1 -0
  93. package/dist/tools/handlers/users.js +34 -0
  94. package/dist/tools/handlers/users.js.map +1 -0
  95. package/dist/tools/handlers/utils.d.ts +11 -0
  96. package/dist/tools/handlers/utils.d.ts.map +1 -0
  97. package/dist/tools/handlers/utils.js +24 -0
  98. package/dist/tools/handlers/utils.js.map +1 -0
  99. package/dist/tools/handlers/world.d.ts +26 -0
  100. package/dist/tools/handlers/world.d.ts.map +1 -0
  101. package/dist/tools/handlers/world.js +92 -0
  102. package/dist/tools/handlers/world.js.map +1 -0
  103. package/dist/tools/index.d.ts +19 -0
  104. package/dist/tools/index.d.ts.map +1 -0
  105. package/dist/tools/index.js +22 -0
  106. package/dist/tools/index.js.map +1 -0
  107. package/dist/tools/new-router.d.ts +29 -0
  108. package/dist/tools/new-router.d.ts.map +1 -0
  109. package/dist/tools/new-router.js +97 -0
  110. package/dist/tools/new-router.js.map +1 -0
  111. package/dist/tools/registry.d.ts +51 -0
  112. package/dist/tools/registry.d.ts.map +1 -0
  113. package/dist/tools/registry.js +79 -0
  114. package/dist/tools/registry.js.map +1 -0
  115. package/dist/tools/resources.d.ts +16 -0
  116. package/dist/tools/resources.d.ts.map +1 -0
  117. package/dist/tools/resources.js +63 -0
  118. package/dist/tools/resources.js.map +1 -0
  119. package/dist/tools/router.d.ts +22 -0
  120. package/dist/tools/router.d.ts.map +1 -0
  121. package/dist/tools/router.js +128 -0
  122. package/dist/tools/router.js.map +1 -0
  123. package/dist/utils/cache-instance.d.ts +25 -0
  124. package/dist/utils/cache-instance.d.ts.map +1 -0
  125. package/dist/utils/cache-instance.js +30 -0
  126. package/dist/utils/cache-instance.js.map +1 -0
  127. package/dist/utils/cache.d.ts +80 -0
  128. package/dist/utils/cache.d.ts.map +1 -0
  129. package/dist/utils/cache.js +205 -0
  130. package/dist/utils/cache.js.map +1 -0
  131. package/dist/utils/diagnostics.d.ts +114 -0
  132. package/dist/utils/diagnostics.d.ts.map +1 -0
  133. package/dist/utils/diagnostics.js +330 -0
  134. package/dist/utils/diagnostics.js.map +1 -0
  135. package/dist/utils/logger.d.ts +137 -0
  136. package/dist/utils/logger.d.ts.map +1 -0
  137. package/dist/utils/logger.js +158 -0
  138. package/dist/utils/logger.js.map +1 -0
  139. package/package.json +98 -0
@@ -0,0 +1 @@
1
+ {"version":3,"file":"world.js","sourceRoot":"","sources":["../../../src/tools/handlers/world.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,19 @@
1
+ /**
2
+ * Tools module entry point
3
+ */
4
+ export { getAllTools } from './definitions.js';
5
+ export * from './handlers/actors.js';
6
+ export * from './handlers/chat.js';
7
+ export * from './handlers/combat.js';
8
+ export * from './handlers/diagnostics.js';
9
+ export * from './handlers/dice.js';
10
+ export * from './handlers/generation.js';
11
+ export * from './handlers/items.js';
12
+ export * from './handlers/journals.js';
13
+ export * from './handlers/resources.js';
14
+ export * from './handlers/scenes.js';
15
+ export * from './handlers/users.js';
16
+ export * from './handlers/world.js';
17
+ export { getAllResources } from './resources.js';
18
+ export { routeResourceRequest, routeToolRequest } from './router.js';
19
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/tools/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AAGH,OAAO,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAC/C,cAAc,sBAAsB,CAAC;AACrC,cAAc,oBAAoB,CAAC;AACnC,cAAc,sBAAsB,CAAC;AACrC,cAAc,2BAA2B,CAAC;AAE1C,cAAc,oBAAoB,CAAC;AACnC,cAAc,0BAA0B,CAAC;AACzC,cAAc,qBAAqB,CAAC;AACpC,cAAc,wBAAwB,CAAC;AACvC,cAAc,yBAAyB,CAAC;AACxC,cAAc,sBAAsB,CAAC;AACrC,cAAc,qBAAqB,CAAC;AACpC,cAAc,qBAAqB,CAAC;AACpC,OAAO,EAAE,eAAe,EAAE,MAAM,gBAAgB,CAAC;AAEjD,OAAO,EAAE,oBAAoB,EAAE,gBAAgB,EAAE,MAAM,aAAa,CAAC"}
@@ -0,0 +1,22 @@
1
+ /**
2
+ * Tools module entry point
3
+ */
4
+ // Export tool and resource definitions
5
+ export { getAllTools } from './definitions.js';
6
+ export * from './handlers/actors.js';
7
+ export * from './handlers/chat.js';
8
+ export * from './handlers/combat.js';
9
+ export * from './handlers/diagnostics.js';
10
+ // Export individual handlers for testing
11
+ export * from './handlers/dice.js';
12
+ export * from './handlers/generation.js';
13
+ export * from './handlers/items.js';
14
+ export * from './handlers/journals.js';
15
+ export * from './handlers/resources.js';
16
+ export * from './handlers/scenes.js';
17
+ export * from './handlers/users.js';
18
+ export * from './handlers/world.js';
19
+ export { getAllResources } from './resources.js';
20
+ // Export routing functions
21
+ export { routeResourceRequest, routeToolRequest } from './router.js';
22
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/tools/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,uCAAuC;AACvC,OAAO,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAC/C,cAAc,sBAAsB,CAAC;AACrC,cAAc,oBAAoB,CAAC;AACnC,cAAc,sBAAsB,CAAC;AACrC,cAAc,2BAA2B,CAAC;AAC1C,yCAAyC;AACzC,cAAc,oBAAoB,CAAC;AACnC,cAAc,0BAA0B,CAAC;AACzC,cAAc,qBAAqB,CAAC;AACpC,cAAc,wBAAwB,CAAC;AACvC,cAAc,yBAAyB,CAAC;AACxC,cAAc,sBAAsB,CAAC;AACrC,cAAc,qBAAqB,CAAC;AACpC,cAAc,qBAAqB,CAAC;AACpC,OAAO,EAAE,eAAe,EAAE,MAAM,gBAAgB,CAAC;AACjD,2BAA2B;AAC3B,OAAO,EAAE,oBAAoB,EAAE,gBAAgB,EAAE,MAAM,aAAa,CAAC"}
@@ -0,0 +1,29 @@
1
+ /**
2
+ * @fileoverview New tool routing implementation using registry pattern
3
+ *
4
+ * This module provides a cleaner routing system that uses the tool registry
5
+ * and eliminates the need for manual switch statements and validation.
6
+ */
7
+ import type { DiagnosticsClient } from '../diagnostics/client.js';
8
+ import type { FoundryClient } from '../foundry/client.js';
9
+ import type { DiagnosticSystem } from '../utils/diagnostics.js';
10
+ /**
11
+ * Routes tool requests using the new registry system
12
+ */
13
+ export declare function routeToolRequest(name: string, args: Record<string, unknown>, foundryClient: FoundryClient, diagnosticsClient: DiagnosticsClient, diagnosticSystem: DiagnosticSystem): Promise<import("./base.js").ToolResult | {
14
+ content: {
15
+ type: string;
16
+ text: string;
17
+ }[];
18
+ }>;
19
+ /**
20
+ * Routes resource requests to appropriate handlers
21
+ */
22
+ export declare function routeResourceRequest(uri: string, foundryClient: FoundryClient, diagnosticsClient: DiagnosticsClient): Promise<{
23
+ contents: {
24
+ uri: string;
25
+ mimeType: string;
26
+ text: string;
27
+ }[];
28
+ }>;
29
+ //# sourceMappingURL=new-router.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"new-router.d.ts","sourceRoot":"","sources":["../../src/tools/new-router.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAGH,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,0BAA0B,CAAC;AAClE,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AAC1D,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,yBAAyB,CAAC;AAkBhE;;GAEG;AACH,wBAAsB,gBAAgB,CACpC,IAAI,EAAE,MAAM,EACZ,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAC7B,aAAa,EAAE,aAAa,EAC5B,iBAAiB,EAAE,iBAAiB,EACpC,gBAAgB,EAAE,gBAAgB;;;;;GA2BnC;AAuED;;GAEG;AACH,wBAAsB,oBAAoB,CACxC,GAAG,EAAE,MAAM,EACX,aAAa,EAAE,aAAa,EAC5B,iBAAiB,EAAE,iBAAiB;;;;;;GAIrC"}
@@ -0,0 +1,97 @@
1
+ /**
2
+ * @fileoverview New tool routing implementation using registry pattern
3
+ *
4
+ * This module provides a cleaner routing system that uses the tool registry
5
+ * and eliminates the need for manual switch statements and validation.
6
+ */
7
+ import { ErrorCode, McpError } from '@modelcontextprotocol/sdk/types.js';
8
+ import { logger } from '../utils/logger.js';
9
+ // Import legacy handlers for tools not yet converted
10
+ import { handleGetActorDetails, handleSearchActors } from './handlers/actors.js';
11
+ import { handleDiagnoseErrors, handleGetHealthStatus, handleGetRecentLogs, handleGetSystemHealth, handleSearchLogs, } from './handlers/diagnostics.js';
12
+ import { handleGenerateLoot, handleGenerateNPC, handleLookupRule } from './handlers/generation.js';
13
+ import { handleSearchItems } from './handlers/items.js';
14
+ import { handleReadResource } from './handlers/resources.js';
15
+ import { handleGetSceneInfo } from './handlers/scenes.js';
16
+ import { toolRegistry } from './registry.js';
17
+ /**
18
+ * Routes tool requests using the new registry system
19
+ */
20
+ export async function routeToolRequest(name, args, foundryClient, diagnosticsClient, diagnosticSystem) {
21
+ logger.debug(`Routing tool request: ${name}`, { args });
22
+ const context = {
23
+ foundryClient,
24
+ diagnosticsClient,
25
+ diagnosticSystem,
26
+ };
27
+ // Try to execute using the new registry system
28
+ if (toolRegistry.has(name)) {
29
+ try {
30
+ return await toolRegistry.execute(name, args, context);
31
+ }
32
+ catch (error) {
33
+ if (error instanceof McpError) {
34
+ throw error;
35
+ }
36
+ throw new McpError(ErrorCode.InternalError, `Tool execution failed: ${error instanceof Error ? error.message : 'Unknown error'}`);
37
+ }
38
+ }
39
+ // Fallback to legacy handlers for tools not yet converted
40
+ return await routeLegacyTool(name, args, foundryClient, diagnosticsClient, diagnosticSystem);
41
+ }
42
+ /**
43
+ * Legacy routing for tools not yet converted to the new system
44
+ * @deprecated This will be removed once all tools are converted
45
+ */
46
+ async function routeLegacyTool(name, args, foundryClient, diagnosticsClient, diagnosticSystem) {
47
+ switch (name) {
48
+ // Actor tools
49
+ case 'search_actors':
50
+ return handleSearchActors(args, foundryClient);
51
+ case 'get_actor_details':
52
+ if (!('actorId' in args) || typeof args.actorId !== 'string') {
53
+ throw new Error('Missing required parameter: actorId');
54
+ }
55
+ return handleGetActorDetails(args, foundryClient);
56
+ // Item tools
57
+ case 'search_items':
58
+ return handleSearchItems(args, foundryClient);
59
+ // Scene tools
60
+ case 'get_scene_info':
61
+ return handleGetSceneInfo(args, foundryClient);
62
+ // Generation tools
63
+ case 'generate_npc':
64
+ return handleGenerateNPC(args, foundryClient);
65
+ case 'generate_loot':
66
+ return handleGenerateLoot(args, foundryClient);
67
+ case 'lookup_rule':
68
+ if (!('query' in args) || typeof args.query !== 'string') {
69
+ throw new Error('Missing required parameter: query');
70
+ }
71
+ return handleLookupRule(args, foundryClient);
72
+ // Diagnostics tools
73
+ case 'get_recent_logs':
74
+ return handleGetRecentLogs(args, diagnosticsClient);
75
+ case 'search_logs':
76
+ if (!('query' in args) || typeof args.query !== 'string') {
77
+ throw new Error('Missing required parameter: query');
78
+ }
79
+ return handleSearchLogs(args, diagnosticsClient);
80
+ case 'get_system_health':
81
+ return handleGetSystemHealth(args, diagnosticsClient);
82
+ case 'diagnose_errors':
83
+ return handleDiagnoseErrors(args, diagnosticSystem);
84
+ case 'get_health_status':
85
+ return handleGetHealthStatus(args, foundryClient, diagnosticsClient);
86
+ default:
87
+ throw new McpError(ErrorCode.MethodNotFound, `Unknown tool: ${name}`);
88
+ }
89
+ }
90
+ /**
91
+ * Routes resource requests to appropriate handlers
92
+ */
93
+ export async function routeResourceRequest(uri, foundryClient, diagnosticsClient) {
94
+ logger.debug(`Routing resource request: ${uri}`);
95
+ return handleReadResource(uri, foundryClient, diagnosticsClient);
96
+ }
97
+ //# sourceMappingURL=new-router.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"new-router.js","sourceRoot":"","sources":["../../src/tools/new-router.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,51 @@
1
+ /**
2
+ * @fileoverview Tool registry for the new tool system
3
+ *
4
+ * This module manages tool registration and provides a clean interface
5
+ * for tool execution with automatic validation.
6
+ */
7
+ import type { Tool, ToolContext, ToolResult } from './base.js';
8
+ /**
9
+ * Tool registry manages all available tools
10
+ */
11
+ export declare class ToolRegistry {
12
+ private tools;
13
+ constructor();
14
+ /**
15
+ * Register a tool in the registry
16
+ */
17
+ register(tool: Tool): void;
18
+ /**
19
+ * Execute a tool by name with given arguments
20
+ */
21
+ execute(name: string, args: Record<string, unknown>, context: ToolContext): Promise<ToolResult>;
22
+ /**
23
+ * Get all registered tool names
24
+ */
25
+ getToolNames(): string[];
26
+ /**
27
+ * Get tool definitions for MCP
28
+ */
29
+ getToolDefinitions(): Array<{
30
+ name: string;
31
+ description: string;
32
+ inputSchema: object;
33
+ }>;
34
+ /**
35
+ * Check if a tool is registered
36
+ */
37
+ has(name: string): boolean;
38
+ /**
39
+ * Get a specific tool instance
40
+ */
41
+ get(name: string): Tool | undefined;
42
+ /**
43
+ * Register all default tools
44
+ */
45
+ private registerDefaultTools;
46
+ }
47
+ /**
48
+ * Global tool registry instance
49
+ */
50
+ export declare const toolRegistry: ToolRegistry;
51
+ //# sourceMappingURL=registry.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"registry.d.ts","sourceRoot":"","sources":["../../src/tools/registry.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAGH,OAAO,KAAK,EAAE,IAAI,EAAE,WAAW,EAAE,UAAU,EAAE,MAAM,WAAW,CAAC;AAG/D;;GAEG;AACH,qBAAa,YAAY;IACvB,OAAO,CAAC,KAAK,CAA2B;;IAMxC;;OAEG;IACH,QAAQ,CAAC,IAAI,EAAE,IAAI,GAAG,IAAI;IAS1B;;OAEG;IACG,OAAO,CACX,IAAI,EAAE,MAAM,EACZ,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAC7B,OAAO,EAAE,WAAW,GACnB,OAAO,CAAC,UAAU,CAAC;IAUtB;;OAEG;IACH,YAAY,IAAI,MAAM,EAAE;IAIxB;;OAEG;IACH,kBAAkB,IAAI,KAAK,CAAC;QAC1B,IAAI,EAAE,MAAM,CAAC;QACb,WAAW,EAAE,MAAM,CAAC;QACpB,WAAW,EAAE,MAAM,CAAC;KACrB,CAAC;IAQF;;OAEG;IACH,GAAG,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO;IAI1B;;OAEG;IACH,GAAG,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS;IAInC;;OAEG;IACH,OAAO,CAAC,oBAAoB;CAO7B;AAED;;GAEG;AACH,eAAO,MAAM,YAAY,cAAqB,CAAC"}
@@ -0,0 +1,79 @@
1
+ /**
2
+ * @fileoverview Tool registry for the new tool system
3
+ *
4
+ * This module manages tool registration and provides a clean interface
5
+ * for tool execution with automatic validation.
6
+ */
7
+ import { logger } from '../utils/logger.js';
8
+ import { RollDiceTool } from './handlers/dice.js';
9
+ /**
10
+ * Tool registry manages all available tools
11
+ */
12
+ export class ToolRegistry {
13
+ tools = new Map();
14
+ constructor() {
15
+ this.registerDefaultTools();
16
+ }
17
+ /**
18
+ * Register a tool in the registry
19
+ */
20
+ register(tool) {
21
+ if (this.tools.has(tool.name)) {
22
+ logger.warn(`Tool '${tool.name}' is already registered, replacing...`);
23
+ }
24
+ this.tools.set(tool.name, tool);
25
+ logger.debug(`Registered tool: ${tool.name}`);
26
+ }
27
+ /**
28
+ * Execute a tool by name with given arguments
29
+ */
30
+ async execute(name, args, context) {
31
+ const tool = this.tools.get(name);
32
+ if (!tool) {
33
+ throw new Error(`Unknown tool: ${name}`);
34
+ }
35
+ return await tool.execute(args, context);
36
+ }
37
+ /**
38
+ * Get all registered tool names
39
+ */
40
+ getToolNames() {
41
+ return Array.from(this.tools.keys());
42
+ }
43
+ /**
44
+ * Get tool definitions for MCP
45
+ */
46
+ getToolDefinitions() {
47
+ return Array.from(this.tools.values()).map((tool) => ({
48
+ name: tool.name,
49
+ description: tool.description,
50
+ inputSchema: tool.inputSchema,
51
+ }));
52
+ }
53
+ /**
54
+ * Check if a tool is registered
55
+ */
56
+ has(name) {
57
+ return this.tools.has(name);
58
+ }
59
+ /**
60
+ * Get a specific tool instance
61
+ */
62
+ get(name) {
63
+ return this.tools.get(name);
64
+ }
65
+ /**
66
+ * Register all default tools
67
+ */
68
+ registerDefaultTools() {
69
+ // Register the dice tool (converted to new system)
70
+ this.register(new RollDiceTool());
71
+ // TODO: Register other tools as they are converted
72
+ logger.info(`Registered ${this.tools.size} tools`);
73
+ }
74
+ }
75
+ /**
76
+ * Global tool registry instance
77
+ */
78
+ export const toolRegistry = new ToolRegistry();
79
+ //# sourceMappingURL=registry.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"registry.js","sourceRoot":"","sources":["../../src/tools/registry.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAAE,MAAM,EAAE,MAAM,oBAAoB,CAAC;AAE5C,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAElD;;GAEG;AACH,MAAM,OAAO,YAAY;IACf,KAAK,GAAG,IAAI,GAAG,EAAgB,CAAC;IAExC;QACE,IAAI,CAAC,oBAAoB,EAAE,CAAC;IAC9B,CAAC;IAED;;OAEG;IACH,QAAQ,CAAC,IAAU;QACjB,IAAI,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC;YAC9B,MAAM,CAAC,IAAI,CAAC,SAAS,IAAI,CAAC,IAAI,uCAAuC,CAAC,CAAC;QACzE,CAAC;QAED,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;QAChC,MAAM,CAAC,KAAK,CAAC,oBAAoB,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC;IAChD,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,OAAO,CACX,IAAY,EACZ,IAA6B,EAC7B,OAAoB;QAEpB,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;QAElC,IAAI,CAAC,IAAI,EAAE,CAAC;YACV,MAAM,IAAI,KAAK,CAAC,iBAAiB,IAAI,EAAE,CAAC,CAAC;QAC3C,CAAC;QAED,OAAO,MAAM,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;IAC3C,CAAC;IAED;;OAEG;IACH,YAAY;QACV,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC,CAAC;IACvC,CAAC;IAED;;OAEG;IACH,kBAAkB;QAKhB,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC;YACpD,IAAI,EAAE,IAAI,CAAC,IAAI;YACf,WAAW,EAAE,IAAI,CAAC,WAAW;YAC7B,WAAW,EAAE,IAAI,CAAC,WAAW;SAC9B,CAAC,CAAC,CAAC;IACN,CAAC;IAED;;OAEG;IACH,GAAG,CAAC,IAAY;QACd,OAAO,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;IAC9B,CAAC;IAED;;OAEG;IACH,GAAG,CAAC,IAAY;QACd,OAAO,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;IAC9B,CAAC;IAED;;OAEG;IACK,oBAAoB;QAC1B,mDAAmD;QACnD,IAAI,CAAC,QAAQ,CAAC,IAAI,YAAY,EAAE,CAAC,CAAC;QAElC,mDAAmD;QACnD,MAAM,CAAC,IAAI,CAAC,cAAc,IAAI,CAAC,KAAK,CAAC,IAAI,QAAQ,CAAC,CAAC;IACrD,CAAC;CACF;AAED;;GAEG;AACH,MAAM,CAAC,MAAM,YAAY,GAAG,IAAI,YAAY,EAAE,CAAC"}
@@ -0,0 +1,16 @@
1
+ /**
2
+ * Resource definitions for FoundryVTT MCP Server
3
+ */
4
+ export declare const resourceDefinitions: {
5
+ uri: string;
6
+ name: string;
7
+ description: string;
8
+ mimeType: string;
9
+ }[];
10
+ export declare function getAllResources(): {
11
+ uri: string;
12
+ name: string;
13
+ description: string;
14
+ mimeType: string;
15
+ }[];
16
+ //# sourceMappingURL=resources.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"resources.d.ts","sourceRoot":"","sources":["../../src/tools/resources.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,eAAO,MAAM,mBAAmB;;;;;GAuD/B,CAAC;AAEF,wBAAgB,eAAe;;;;;IAE9B"}
@@ -0,0 +1,63 @@
1
+ /**
2
+ * Resource definitions for FoundryVTT MCP Server
3
+ */
4
+ export const resourceDefinitions = [
5
+ {
6
+ uri: 'foundry://actors',
7
+ name: 'All Actors',
8
+ description: 'List of all actors in the current world',
9
+ mimeType: 'application/json',
10
+ },
11
+ {
12
+ uri: 'foundry://items',
13
+ name: 'All Items',
14
+ description: 'List of all items in the current world',
15
+ mimeType: 'application/json',
16
+ },
17
+ {
18
+ uri: 'foundry://scenes',
19
+ name: 'All Scenes',
20
+ description: 'List of all scenes in the current world',
21
+ mimeType: 'application/json',
22
+ },
23
+ {
24
+ uri: 'foundry://scenes/current',
25
+ name: 'Current Scene',
26
+ description: 'Information about the currently active scene',
27
+ mimeType: 'application/json',
28
+ },
29
+ {
30
+ uri: 'foundry://journals',
31
+ name: 'All Journals',
32
+ description: 'List of all journal entries in the current world',
33
+ mimeType: 'application/json',
34
+ },
35
+ {
36
+ uri: 'foundry://users',
37
+ name: 'Users',
38
+ description: 'List of users and their online status',
39
+ mimeType: 'application/json',
40
+ },
41
+ {
42
+ uri: 'foundry://combat',
43
+ name: 'Active Combat',
44
+ description: 'Current active combat encounter state',
45
+ mimeType: 'application/json',
46
+ },
47
+ {
48
+ uri: 'foundry://world/settings',
49
+ name: 'Game Settings',
50
+ description: 'Current world and game system settings',
51
+ mimeType: 'application/json',
52
+ },
53
+ {
54
+ uri: 'foundry://system/diagnostics',
55
+ name: 'System Diagnostics',
56
+ description: 'System health and diagnostic information (requires REST API module)',
57
+ mimeType: 'application/json',
58
+ },
59
+ ];
60
+ export function getAllResources() {
61
+ return resourceDefinitions;
62
+ }
63
+ //# sourceMappingURL=resources.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"resources.js","sourceRoot":"","sources":["../../src/tools/resources.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,MAAM,CAAC,MAAM,mBAAmB,GAAG;IACjC;QACE,GAAG,EAAE,kBAAkB;QACvB,IAAI,EAAE,YAAY;QAClB,WAAW,EAAE,yCAAyC;QACtD,QAAQ,EAAE,kBAAkB;KAC7B;IACD;QACE,GAAG,EAAE,iBAAiB;QACtB,IAAI,EAAE,WAAW;QACjB,WAAW,EAAE,wCAAwC;QACrD,QAAQ,EAAE,kBAAkB;KAC7B;IACD;QACE,GAAG,EAAE,kBAAkB;QACvB,IAAI,EAAE,YAAY;QAClB,WAAW,EAAE,yCAAyC;QACtD,QAAQ,EAAE,kBAAkB;KAC7B;IACD;QACE,GAAG,EAAE,0BAA0B;QAC/B,IAAI,EAAE,eAAe;QACrB,WAAW,EAAE,8CAA8C;QAC3D,QAAQ,EAAE,kBAAkB;KAC7B;IACD;QACE,GAAG,EAAE,oBAAoB;QACzB,IAAI,EAAE,cAAc;QACpB,WAAW,EAAE,kDAAkD;QAC/D,QAAQ,EAAE,kBAAkB;KAC7B;IACD;QACE,GAAG,EAAE,iBAAiB;QACtB,IAAI,EAAE,OAAO;QACb,WAAW,EAAE,uCAAuC;QACpD,QAAQ,EAAE,kBAAkB;KAC7B;IACD;QACE,GAAG,EAAE,kBAAkB;QACvB,IAAI,EAAE,eAAe;QACrB,WAAW,EAAE,uCAAuC;QACpD,QAAQ,EAAE,kBAAkB;KAC7B;IACD;QACE,GAAG,EAAE,0BAA0B;QAC/B,IAAI,EAAE,eAAe;QACrB,WAAW,EAAE,wCAAwC;QACrD,QAAQ,EAAE,kBAAkB;KAC7B;IACD;QACE,GAAG,EAAE,8BAA8B;QACnC,IAAI,EAAE,oBAAoB;QAC1B,WAAW,EAAE,qEAAqE;QAClF,QAAQ,EAAE,kBAAkB;KAC7B;CACF,CAAC;AAEF,MAAM,UAAU,eAAe;IAC7B,OAAO,mBAAmB,CAAC;AAC7B,CAAC"}
@@ -0,0 +1,22 @@
1
+ /**
2
+ * Tool routing and handler coordination
3
+ */
4
+ import type { DiagnosticsClient } from '../diagnostics/client.js';
5
+ import type { FoundryClient } from '../foundry/client.js';
6
+ import type { DiagnosticSystem } from '../utils/diagnostics.js';
7
+ import type { ToolResult } from './base.js';
8
+ /**
9
+ * Routes tool requests to appropriate handlers
10
+ */
11
+ export declare function routeToolRequest(name: string, args: Record<string, unknown>, foundryClient: FoundryClient, diagnosticsClient: DiagnosticsClient, diagnosticSystem: DiagnosticSystem): Promise<ToolResult>;
12
+ /**
13
+ * Routes resource requests to appropriate handlers
14
+ */
15
+ export declare function routeResourceRequest(uri: string, foundryClient: FoundryClient, diagnosticsClient: DiagnosticsClient): Promise<{
16
+ contents: {
17
+ uri: string;
18
+ mimeType: string;
19
+ text: string;
20
+ }[];
21
+ }>;
22
+ //# sourceMappingURL=router.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"router.d.ts","sourceRoot":"","sources":["../../src/tools/router.ts"],"names":[],"mappings":"AAAA;;GAEG;AAGH,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,0BAA0B,CAAC;AAClE,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AAC1D,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,yBAAyB,CAAC;AAEhE,OAAO,KAAK,EAAe,UAAU,EAAE,MAAM,WAAW,CAAC;AA0BzD;;GAEG;AACH,wBAAsB,gBAAgB,CACpC,IAAI,EAAE,MAAM,EACZ,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAC7B,aAAa,EAAE,aAAa,EAC5B,iBAAiB,EAAE,iBAAiB,EACpC,gBAAgB,EAAE,gBAAgB,GACjC,OAAO,CAAC,UAAU,CAAC,CA0HrB;AAED;;GAEG;AACH,wBAAsB,oBAAoB,CACxC,GAAG,EAAE,MAAM,EACX,aAAa,EAAE,aAAa,EAC5B,iBAAiB,EAAE,iBAAiB;;;;;;GAIrC"}
@@ -0,0 +1,128 @@
1
+ /**
2
+ * Tool routing and handler coordination
3
+ */
4
+ import { ErrorCode, McpError } from '@modelcontextprotocol/sdk/types.js';
5
+ import { logger } from '../utils/logger.js';
6
+ import { handleGetActorDetails, handleSearchActors } from './handlers/actors.js';
7
+ import { handleGetChatMessages } from './handlers/chat.js';
8
+ import { handleGetCombatState } from './handlers/combat.js';
9
+ import { handleDiagnoseErrors, handleGetHealthStatus, handleGetRecentLogs, handleGetSystemHealth, handleSearchLogs, } from './handlers/diagnostics.js';
10
+ // Import all tool handlers
11
+ import { handleRollDice } from './handlers/dice.js';
12
+ import { handleGenerateLoot, handleGenerateNPC, handleLookupRule } from './handlers/generation.js';
13
+ import { handleSearchItems } from './handlers/items.js';
14
+ import { handleGetJournal, handleSearchJournals } from './handlers/journals.js';
15
+ import { handleReadResource } from './handlers/resources.js';
16
+ import { handleGetSceneInfo } from './handlers/scenes.js';
17
+ import { handleGetUsers } from './handlers/users.js';
18
+ import { handleGetWorldSummary, handleRefreshWorldData, handleSearchWorld, } from './handlers/world.js';
19
+ import { toolRegistry } from './registry.js';
20
+ /**
21
+ * Routes tool requests to appropriate handlers
22
+ */
23
+ export async function routeToolRequest(name, args, foundryClient, diagnosticsClient, diagnosticSystem) {
24
+ logger.debug(`Routing tool request: ${name}`, { args });
25
+ // Try the new registry system first
26
+ if (toolRegistry.has(name)) {
27
+ const context = {
28
+ foundryClient,
29
+ diagnosticsClient,
30
+ diagnosticSystem,
31
+ };
32
+ try {
33
+ return await toolRegistry.execute(name, args, context);
34
+ }
35
+ catch (error) {
36
+ if (error instanceof McpError) {
37
+ throw error;
38
+ }
39
+ throw new McpError(ErrorCode.InternalError, `Tool execution failed: ${error instanceof Error ? error.message : 'Unknown error'}`);
40
+ }
41
+ }
42
+ switch (name) {
43
+ // Dice tools
44
+ case 'roll_dice':
45
+ if (!('formula' in args) || typeof args.formula !== 'string') {
46
+ throw new Error('Missing required parameter: formula');
47
+ }
48
+ return handleRollDice(args, foundryClient);
49
+ // Actor tools
50
+ case 'search_actors':
51
+ return handleSearchActors(args, foundryClient);
52
+ case 'get_actor_details':
53
+ if (!('actorId' in args) || typeof args.actorId !== 'string') {
54
+ throw new Error('Missing required parameter: actorId');
55
+ }
56
+ return handleGetActorDetails(args, foundryClient);
57
+ // Item tools
58
+ case 'search_items':
59
+ return handleSearchItems(args, foundryClient);
60
+ // Scene tools
61
+ case 'get_scene_info':
62
+ return handleGetSceneInfo(args, foundryClient);
63
+ // Combat tools
64
+ case 'get_combat_state':
65
+ return handleGetCombatState(args, foundryClient);
66
+ // Chat tools
67
+ case 'get_chat_messages':
68
+ return handleGetChatMessages(args, foundryClient);
69
+ // User tools
70
+ case 'get_users':
71
+ return handleGetUsers(args, foundryClient);
72
+ // Journal tools
73
+ case 'search_journals':
74
+ if (!('query' in args) || typeof args.query !== 'string') {
75
+ throw new Error('Missing required parameter: query');
76
+ }
77
+ return handleSearchJournals(args, foundryClient);
78
+ case 'get_journal':
79
+ if (!('journalId' in args) || typeof args.journalId !== 'string') {
80
+ throw new Error('Missing required parameter: journalId');
81
+ }
82
+ return handleGetJournal(args, foundryClient);
83
+ // World tools
84
+ case 'search_world':
85
+ if (!('query' in args) || typeof args.query !== 'string') {
86
+ throw new Error('Missing required parameter: query');
87
+ }
88
+ return handleSearchWorld(args, foundryClient);
89
+ case 'get_world_summary':
90
+ return handleGetWorldSummary(args, foundryClient);
91
+ case 'refresh_world_data':
92
+ return handleRefreshWorldData(args, foundryClient);
93
+ // Generation tools
94
+ case 'generate_npc':
95
+ return handleGenerateNPC(args, foundryClient);
96
+ case 'generate_loot':
97
+ return handleGenerateLoot(args, foundryClient);
98
+ case 'lookup_rule':
99
+ if (!('query' in args) || typeof args.query !== 'string') {
100
+ throw new Error('Missing required parameter: query');
101
+ }
102
+ return handleLookupRule(args, foundryClient);
103
+ // Diagnostics tools (require REST API module)
104
+ case 'get_recent_logs':
105
+ return handleGetRecentLogs(args, diagnosticsClient);
106
+ case 'search_logs':
107
+ if (!('query' in args) || typeof args.query !== 'string') {
108
+ throw new Error('Missing required parameter: query');
109
+ }
110
+ return handleSearchLogs(args, diagnosticsClient);
111
+ case 'get_system_health':
112
+ return handleGetSystemHealth(args, diagnosticsClient);
113
+ case 'diagnose_errors':
114
+ return handleDiagnoseErrors(args, diagnosticSystem);
115
+ case 'get_health_status':
116
+ return handleGetHealthStatus(args, foundryClient, diagnosticsClient);
117
+ default:
118
+ throw new McpError(ErrorCode.MethodNotFound, `Unknown tool: ${name}`);
119
+ }
120
+ }
121
+ /**
122
+ * Routes resource requests to appropriate handlers
123
+ */
124
+ export async function routeResourceRequest(uri, foundryClient, diagnosticsClient) {
125
+ logger.debug(`Routing resource request: ${uri}`);
126
+ return handleReadResource(uri, foundryClient, diagnosticsClient);
127
+ }
128
+ //# sourceMappingURL=router.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"router.js","sourceRoot":"","sources":["../../src/tools/router.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,25 @@
1
+ /**
2
+ * @fileoverview Global cache instance singleton
3
+ *
4
+ * This module provides a singleton cache instance that's configured
5
+ * from the application configuration.
6
+ */
7
+ import { CacheService } from './cache.js';
8
+ /**
9
+ * Global cache instance
10
+ * Initialized with configuration from config system
11
+ */
12
+ export declare const cache: CacheService;
13
+ /**
14
+ * Cache key generators for consistent naming
15
+ */
16
+ export declare const CacheKeys: {
17
+ readonly worldInfo: () => string;
18
+ readonly actor: (id: string) => string;
19
+ readonly actorSearch: (query: string, type?: string, limit?: number) => string;
20
+ readonly item: (id: string) => string;
21
+ readonly itemSearch: (query: string, type?: string, rarity?: string, limit?: number) => string;
22
+ readonly scene: (id?: string) => string;
23
+ readonly rule: (query: string, system?: string) => string;
24
+ };
25
+ //# sourceMappingURL=cache-instance.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cache-instance.d.ts","sourceRoot":"","sources":["../../src/utils/cache-instance.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAGH,OAAO,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AAE1C;;;GAGG;AACH,eAAO,MAAM,KAAK,cAMjB,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,SAAS;;yBAER,MAAM;kCACG,MAAM,SAAS,MAAM,UAAU,MAAM;wBAE/C,MAAM;iCACG,MAAM,SAAS,MAAM,WAAW,MAAM,UAAU,MAAM;0BAE7D,MAAM;2BACL,MAAM,WAAW,MAAM;CAC7B,CAAC"}