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.
- package/LICENSE +21 -0
- package/README.md +142 -0
- package/dist/character/manager.d.ts +92 -0
- package/dist/character/manager.d.ts.map +1 -0
- package/dist/character/manager.js +208 -0
- package/dist/character/manager.js.map +1 -0
- package/dist/combat/manager.d.ts +94 -0
- package/dist/combat/manager.d.ts.map +1 -0
- package/dist/combat/manager.js +373 -0
- package/dist/combat/manager.js.map +1 -0
- package/dist/config/index.d.ts +114 -0
- package/dist/config/index.d.ts.map +1 -0
- package/dist/config/index.js +177 -0
- package/dist/config/index.js.map +1 -0
- package/dist/diagnostics/client.d.ts +193 -0
- package/dist/diagnostics/client.d.ts.map +1 -0
- package/dist/diagnostics/client.js +314 -0
- package/dist/diagnostics/client.js.map +1 -0
- package/dist/diagnostics/types.d.ts +414 -0
- package/dist/diagnostics/types.d.ts.map +1 -0
- package/dist/diagnostics/types.js +94 -0
- package/dist/diagnostics/types.js.map +1 -0
- package/dist/foundry/auth.d.ts +19 -0
- package/dist/foundry/auth.d.ts.map +1 -0
- package/dist/foundry/auth.js +135 -0
- package/dist/foundry/auth.js.map +1 -0
- package/dist/foundry/client.d.ts +95 -0
- package/dist/foundry/client.d.ts.map +1 -0
- package/dist/foundry/client.js +692 -0
- package/dist/foundry/client.js.map +1 -0
- package/dist/foundry/types.d.ts +805 -0
- package/dist/foundry/types.d.ts.map +1 -0
- package/dist/foundry/types.js +13 -0
- package/dist/foundry/types.js.map +1 -0
- package/dist/index.d.ts +16 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +199 -0
- package/dist/index.js.map +1 -0
- package/dist/resources/index.d.ts +3 -0
- package/dist/resources/index.d.ts.map +1 -0
- package/dist/resources/index.js +93 -0
- package/dist/resources/index.js.map +1 -0
- package/dist/tools/base.d.ts +80 -0
- package/dist/tools/base.d.ts.map +1 -0
- package/dist/tools/base.js +73 -0
- package/dist/tools/base.js.map +1 -0
- package/dist/tools/definitions.d.ts +414 -0
- package/dist/tools/definitions.d.ts.map +1 -0
- package/dist/tools/definitions.js +429 -0
- package/dist/tools/definitions.js.map +1 -0
- package/dist/tools/handlers/actors.d.ts +31 -0
- package/dist/tools/handlers/actors.d.ts.map +1 -0
- package/dist/tools/handlers/actors.js +76 -0
- package/dist/tools/handlers/actors.js.map +1 -0
- package/dist/tools/handlers/chat.d.ts +13 -0
- package/dist/tools/handlers/chat.d.ts.map +1 -0
- package/dist/tools/handlers/chat.js +38 -0
- package/dist/tools/handlers/chat.js.map +1 -0
- package/dist/tools/handlers/combat.d.ts +11 -0
- package/dist/tools/handlers/combat.d.ts.map +1 -0
- package/dist/tools/handlers/combat.js +48 -0
- package/dist/tools/handlers/combat.js.map +1 -0
- package/dist/tools/handlers/diagnostics.d.ts +64 -0
- package/dist/tools/handlers/diagnostics.d.ts.map +1 -0
- package/dist/tools/handlers/diagnostics.js +182 -0
- package/dist/tools/handlers/diagnostics.js.map +1 -0
- package/dist/tools/handlers/dice.d.ts +39 -0
- package/dist/tools/handlers/dice.d.ts.map +1 -0
- package/dist/tools/handlers/dice.js +53 -0
- package/dist/tools/handlers/dice.js.map +1 -0
- package/dist/tools/handlers/generation.d.ts +44 -0
- package/dist/tools/handlers/generation.d.ts.map +1 -0
- package/dist/tools/handlers/generation.js +205 -0
- package/dist/tools/handlers/generation.js.map +1 -0
- package/dist/tools/handlers/items.d.ts +21 -0
- package/dist/tools/handlers/items.d.ts.map +1 -0
- package/dist/tools/handlers/items.js +50 -0
- package/dist/tools/handlers/items.js.map +1 -0
- package/dist/tools/handlers/journals.d.ts +22 -0
- package/dist/tools/handlers/journals.d.ts.map +1 -0
- package/dist/tools/handlers/journals.js +62 -0
- package/dist/tools/handlers/journals.js.map +1 -0
- package/dist/tools/handlers/resources.d.ts +13 -0
- package/dist/tools/handlers/resources.d.ts.map +1 -0
- package/dist/tools/handlers/resources.js +188 -0
- package/dist/tools/handlers/resources.js.map +1 -0
- package/dist/tools/handlers/scenes.d.ts +18 -0
- package/dist/tools/handlers/scenes.d.ts.map +1 -0
- package/dist/tools/handlers/scenes.js +34 -0
- package/dist/tools/handlers/scenes.js.map +1 -0
- package/dist/tools/handlers/users.d.ts +11 -0
- package/dist/tools/handlers/users.d.ts.map +1 -0
- package/dist/tools/handlers/users.js +34 -0
- package/dist/tools/handlers/users.js.map +1 -0
- package/dist/tools/handlers/utils.d.ts +11 -0
- package/dist/tools/handlers/utils.d.ts.map +1 -0
- package/dist/tools/handlers/utils.js +24 -0
- package/dist/tools/handlers/utils.js.map +1 -0
- package/dist/tools/handlers/world.d.ts +26 -0
- package/dist/tools/handlers/world.d.ts.map +1 -0
- package/dist/tools/handlers/world.js +92 -0
- package/dist/tools/handlers/world.js.map +1 -0
- package/dist/tools/index.d.ts +19 -0
- package/dist/tools/index.d.ts.map +1 -0
- package/dist/tools/index.js +22 -0
- package/dist/tools/index.js.map +1 -0
- package/dist/tools/new-router.d.ts +29 -0
- package/dist/tools/new-router.d.ts.map +1 -0
- package/dist/tools/new-router.js +97 -0
- package/dist/tools/new-router.js.map +1 -0
- package/dist/tools/registry.d.ts +51 -0
- package/dist/tools/registry.d.ts.map +1 -0
- package/dist/tools/registry.js +79 -0
- package/dist/tools/registry.js.map +1 -0
- package/dist/tools/resources.d.ts +16 -0
- package/dist/tools/resources.d.ts.map +1 -0
- package/dist/tools/resources.js +63 -0
- package/dist/tools/resources.js.map +1 -0
- package/dist/tools/router.d.ts +22 -0
- package/dist/tools/router.d.ts.map +1 -0
- package/dist/tools/router.js +128 -0
- package/dist/tools/router.js.map +1 -0
- package/dist/utils/cache-instance.d.ts +25 -0
- package/dist/utils/cache-instance.d.ts.map +1 -0
- package/dist/utils/cache-instance.js +30 -0
- package/dist/utils/cache-instance.js.map +1 -0
- package/dist/utils/cache.d.ts +80 -0
- package/dist/utils/cache.d.ts.map +1 -0
- package/dist/utils/cache.js +205 -0
- package/dist/utils/cache.js.map +1 -0
- package/dist/utils/diagnostics.d.ts +114 -0
- package/dist/utils/diagnostics.d.ts.map +1 -0
- package/dist/utils/diagnostics.js +330 -0
- package/dist/utils/diagnostics.js.map +1 -0
- package/dist/utils/logger.d.ts +137 -0
- package/dist/utils/logger.d.ts.map +1 -0
- package/dist/utils/logger.js +158 -0
- package/dist/utils/logger.js.map +1 -0
- package/package.json +98 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"combat.js","sourceRoot":"","sources":["../../../src/tools/handlers/combat.ts"],"names":[],"mappings":"AAAA;;GAEG;AAGH,OAAO,EAAE,aAAa,EAAE,MAAM,YAAY,CAAC;AAE3C,MAAM,CAAC,KAAK,UAAU,oBAAoB,CACxC,KAA8B,EAC9B,aAA4B;IAE5B,OAAO,aAAa,CAAC,kBAAkB,EAAE,KAAK,IAAI,EAAE;QAClD,MAAM,MAAM,GAAG,aAAa,CAAC,cAAc,EAAE,CAAC;QAE9C,IAAI,CAAC,MAAM,EAAE,CAAC;YACZ,OAAO;gBACL,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,6BAA6B,EAAE,CAAC;aACjE,CAAC;QACJ,CAAC;QAED,MAAM,UAAU,GAAG,MAAM,CAAC,UAAU;aACjC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,UAAU,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,UAAU,IAAI,CAAC,GAAG,CAAC,CAAC;aAC/D,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE;YACZ,MAAM,OAAO,GAAG,MAAM,CAAC,IAAI,KAAK,CAAC,CAAC,CAAC,CAAC,cAAc,CAAC,CAAC,CAAC,EAAE,CAAC;YACxD,MAAM,MAAM,GAAG,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,EAAE,CAAC;YACxE,MAAM,IAAI,GAAG,CAAC,CAAC,UAAU,KAAK,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC;YAEnE,qDAAqD;YACrD,IAAI,IAAI,GAAG,EAAE,CAAC;YACd,IAAI,CAAC,CAAC,OAAO,EAAE,CAAC;gBACd,MAAM,KAAK,GAAG,aAAa,CAAC,WAAW,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC;gBACnD,IAAI,KAAK,EAAE,CAAC;oBACV,MAAM,EAAE,GAAG,KAAK,CAAC,MAAM,EAAE,UAAiD,CAAC;oBAC3E,MAAM,MAAM,GAAG,EAAE,EAAE,EAAkD,CAAC;oBACtE,MAAM,MAAM,GAAG,EAAE,EAAE,EAAoC,CAAC;oBACxD,IAAI,MAAM,EAAE,CAAC;wBACX,IAAI,IAAI,QAAQ,MAAM,CAAC,KAAK,IAAI,GAAG,IAAI,MAAM,CAAC,GAAG,IAAI,GAAG,EAAE,CAAC;oBAC7D,CAAC;oBACD,IAAI,MAAM,EAAE,CAAC;wBACX,IAAI,IAAI,QAAQ,MAAM,CAAC,KAAK,IAAI,GAAG,EAAE,CAAC;oBACxC,CAAC;gBACH,CAAC;YACH,CAAC;YAED,OAAO,GAAG,CAAC,GAAG,CAAC,MAAM,IAAI,OAAO,CAAC,CAAC,IAAI,KAAK,IAAI,GAAG,MAAM,GAAG,OAAO,EAAE,CAAC;QACvE,CAAC,CAAC;aACD,IAAI,CAAC,IAAI,CAAC,CAAC;QAEd,OAAO;YACL,OAAO,EAAE;gBACP;oBACE,IAAI,EAAE,MAAM;oBACZ,IAAI,EAAE,6BAA6B,MAAM,CAAC,KAAK,OAAO,UAAU,EAAE;iBACnE;aACF;SACF,CAAC;IACJ,CAAC,CAAC,CAAC;AACL,CAAC"}
|
|
@@ -0,0 +1,64 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @fileoverview Diagnostics and logging tool handlers
|
|
3
|
+
*
|
|
4
|
+
* Handles system diagnostics, logging, and health monitoring.
|
|
5
|
+
*/
|
|
6
|
+
import type { DiagnosticsClient } from '../../diagnostics/client.js';
|
|
7
|
+
import type { FoundryClient } from '../../foundry/client.js';
|
|
8
|
+
import type { DiagnosticSystem } from '../../utils/diagnostics.js';
|
|
9
|
+
/**
|
|
10
|
+
* Handles recent log retrieval requests
|
|
11
|
+
*/
|
|
12
|
+
export declare function handleGetRecentLogs(args: {
|
|
13
|
+
limit?: number;
|
|
14
|
+
level?: string;
|
|
15
|
+
since?: string;
|
|
16
|
+
}, diagnosticsClient: DiagnosticsClient): Promise<{
|
|
17
|
+
content: {
|
|
18
|
+
type: string;
|
|
19
|
+
text: string;
|
|
20
|
+
}[];
|
|
21
|
+
}>;
|
|
22
|
+
/**
|
|
23
|
+
* Handles log search requests
|
|
24
|
+
*/
|
|
25
|
+
export declare function handleSearchLogs(args: {
|
|
26
|
+
query: string;
|
|
27
|
+
level?: string;
|
|
28
|
+
limit?: number;
|
|
29
|
+
}, diagnosticsClient: DiagnosticsClient): Promise<{
|
|
30
|
+
content: {
|
|
31
|
+
type: string;
|
|
32
|
+
text: string;
|
|
33
|
+
}[];
|
|
34
|
+
}>;
|
|
35
|
+
/**
|
|
36
|
+
* Handles system health requests
|
|
37
|
+
*/
|
|
38
|
+
export declare function handleGetSystemHealth(_args: Record<string, unknown>, diagnosticsClient: DiagnosticsClient): Promise<{
|
|
39
|
+
content: {
|
|
40
|
+
type: string;
|
|
41
|
+
text: string;
|
|
42
|
+
}[];
|
|
43
|
+
}>;
|
|
44
|
+
/**
|
|
45
|
+
* Handles error diagnosis requests
|
|
46
|
+
*/
|
|
47
|
+
export declare function handleDiagnoseErrors(args: {
|
|
48
|
+
category?: string;
|
|
49
|
+
}, _diagnosticSystem: DiagnosticSystem): Promise<{
|
|
50
|
+
content: {
|
|
51
|
+
type: string;
|
|
52
|
+
text: string;
|
|
53
|
+
}[];
|
|
54
|
+
}>;
|
|
55
|
+
/**
|
|
56
|
+
* Handles comprehensive health status requests
|
|
57
|
+
*/
|
|
58
|
+
export declare function handleGetHealthStatus(_args: Record<string, unknown>, foundryClient: FoundryClient, diagnosticsClient: DiagnosticsClient): Promise<{
|
|
59
|
+
content: {
|
|
60
|
+
type: string;
|
|
61
|
+
text: string;
|
|
62
|
+
}[];
|
|
63
|
+
}>;
|
|
64
|
+
//# sourceMappingURL=diagnostics.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"diagnostics.d.ts","sourceRoot":"","sources":["../../../src/tools/handlers/diagnostics.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAGH,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,6BAA6B,CAAC;AACrE,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,yBAAyB,CAAC;AAC7D,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,4BAA4B,CAAC;AAGnE;;GAEG;AACH,wBAAsB,mBAAmB,CACvC,IAAI,EAAE;IACJ,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB,EACD,iBAAiB,EAAE,iBAAiB;;;;;GA8BrC;AAED;;GAEG;AACH,wBAAsB,gBAAgB,CACpC,IAAI,EAAE;IACJ,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB,EACD,iBAAiB,EAAE,iBAAiB;;;;;GAoCrC;AAED;;GAEG;AACH,wBAAsB,qBAAqB,CACzC,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAC9B,iBAAiB,EAAE,iBAAiB;;;;;GA0BrC;AAED;;GAEG;AACH,wBAAsB,oBAAoB,CACxC,IAAI,EAAE;IACJ,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB,EACD,iBAAiB,EAAE,gBAAgB;;;;;GA+CpC;AAED;;GAEG;AACH,wBAAsB,qBAAqB,CACzC,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAC9B,aAAa,EAAE,aAAa,EAC5B,iBAAiB,EAAE,iBAAiB;;;;;GA0CrC"}
|
|
@@ -0,0 +1,182 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @fileoverview Diagnostics and logging tool handlers
|
|
3
|
+
*
|
|
4
|
+
* Handles system diagnostics, logging, and health monitoring.
|
|
5
|
+
*/
|
|
6
|
+
import { ErrorCode, McpError } from '@modelcontextprotocol/sdk/types.js';
|
|
7
|
+
import { withToolError } from './utils.js';
|
|
8
|
+
/**
|
|
9
|
+
* Handles recent log retrieval requests
|
|
10
|
+
*/
|
|
11
|
+
export async function handleGetRecentLogs(args, diagnosticsClient) {
|
|
12
|
+
const { limit = 20, level, since } = args;
|
|
13
|
+
return withToolError('get recent logs', async () => {
|
|
14
|
+
const logs = await diagnosticsClient.getRecentLogs();
|
|
15
|
+
const logEntries = Array.isArray(logs)
|
|
16
|
+
? logs
|
|
17
|
+
.map((log) => {
|
|
18
|
+
const logEntry = log;
|
|
19
|
+
return `[${logEntry.timestamp || new Date().toISOString()}] **${(logEntry.level || 'INFO').toUpperCase()}** ${logEntry.message || String(log)}`;
|
|
20
|
+
})
|
|
21
|
+
.join('\n')
|
|
22
|
+
: 'No logs available';
|
|
23
|
+
return {
|
|
24
|
+
content: [
|
|
25
|
+
{
|
|
26
|
+
type: 'text',
|
|
27
|
+
text: `📋 **Recent Log Entries**
|
|
28
|
+
**Filter:** ${level || 'All levels'}
|
|
29
|
+
**Limit:** ${limit}
|
|
30
|
+
**Since:** ${since || 'Beginning'}
|
|
31
|
+
|
|
32
|
+
${logEntries || 'No log entries found.'}`,
|
|
33
|
+
},
|
|
34
|
+
],
|
|
35
|
+
};
|
|
36
|
+
});
|
|
37
|
+
}
|
|
38
|
+
/**
|
|
39
|
+
* Handles log search requests
|
|
40
|
+
*/
|
|
41
|
+
export async function handleSearchLogs(args, diagnosticsClient) {
|
|
42
|
+
const { query, level } = args;
|
|
43
|
+
if (!query || typeof query !== 'string') {
|
|
44
|
+
throw new McpError(ErrorCode.InvalidParams, 'Query is required and must be a string');
|
|
45
|
+
}
|
|
46
|
+
return withToolError('search logs', async () => {
|
|
47
|
+
const logs = await diagnosticsClient.searchLogs({ pattern: query });
|
|
48
|
+
const logEntries = Array.isArray(logs)
|
|
49
|
+
? logs
|
|
50
|
+
.map((log) => {
|
|
51
|
+
const logEntry = log;
|
|
52
|
+
return `[${logEntry.timestamp || new Date().toISOString()}] **${(logEntry.level || 'INFO').toUpperCase()}** ${logEntry.message || String(log)}`;
|
|
53
|
+
})
|
|
54
|
+
.join('\n')
|
|
55
|
+
: 'No logs available';
|
|
56
|
+
const logCount = Array.isArray(logs) ? logs.length : 0;
|
|
57
|
+
return {
|
|
58
|
+
content: [
|
|
59
|
+
{
|
|
60
|
+
type: 'text',
|
|
61
|
+
text: `🔍 **Log Search Results**
|
|
62
|
+
**Query:** "${query}"
|
|
63
|
+
**Level Filter:** ${level || 'All levels'}
|
|
64
|
+
**Results:** ${logCount}
|
|
65
|
+
|
|
66
|
+
${logEntries || 'No matching log entries found.'}`,
|
|
67
|
+
},
|
|
68
|
+
],
|
|
69
|
+
};
|
|
70
|
+
});
|
|
71
|
+
}
|
|
72
|
+
/**
|
|
73
|
+
* Handles system health requests
|
|
74
|
+
*/
|
|
75
|
+
export async function handleGetSystemHealth(_args, diagnosticsClient) {
|
|
76
|
+
return withToolError('get system health', async () => {
|
|
77
|
+
const health = await diagnosticsClient.getSystemHealth();
|
|
78
|
+
return {
|
|
79
|
+
content: [
|
|
80
|
+
{
|
|
81
|
+
type: 'text',
|
|
82
|
+
text: `🏥 **System Health Status**
|
|
83
|
+
**Overall Status:** ${health.status || 'Unknown'}
|
|
84
|
+
**CPU Usage:** ${health.cpu || 'N/A'}%
|
|
85
|
+
**Memory Usage:** ${health.memory || 'N/A'}%
|
|
86
|
+
**Disk Usage:** ${health.disk || 'N/A'}%
|
|
87
|
+
**Uptime:** ${health.uptime || 'N/A'} seconds
|
|
88
|
+
|
|
89
|
+
**Active Connections:** ${health.connections || 'N/A'}
|
|
90
|
+
**Last Error:** ${health.lastError || 'None'}
|
|
91
|
+
|
|
92
|
+
**Performance Metrics:**
|
|
93
|
+
- **Response Time:** ${health.responseTime || 'N/A'}ms
|
|
94
|
+
- **Throughput:** ${health.throughput || 'N/A'} requests/sec`,
|
|
95
|
+
},
|
|
96
|
+
],
|
|
97
|
+
};
|
|
98
|
+
});
|
|
99
|
+
}
|
|
100
|
+
/**
|
|
101
|
+
* Handles error diagnosis requests
|
|
102
|
+
*/
|
|
103
|
+
export async function handleDiagnoseErrors(args, _diagnosticSystem) {
|
|
104
|
+
const { category } = args;
|
|
105
|
+
return withToolError('diagnose errors', async () => {
|
|
106
|
+
// Mock diagnosis since the method doesn't exist yet
|
|
107
|
+
const diagnosis = {
|
|
108
|
+
errors: [],
|
|
109
|
+
recommendations: ['No specific errors detected', 'System appears to be functioning normally'],
|
|
110
|
+
systemStatus: 'Operational',
|
|
111
|
+
};
|
|
112
|
+
const errorsByCategory = diagnosis.errors.reduce((acc, error) => {
|
|
113
|
+
if (!acc[error.category]) {
|
|
114
|
+
acc[error.category] = [];
|
|
115
|
+
}
|
|
116
|
+
acc[error.category]?.push(error);
|
|
117
|
+
return acc;
|
|
118
|
+
}, {});
|
|
119
|
+
const errorSummary = Object.entries(errorsByCategory)
|
|
120
|
+
.map(([cat, errors]) => `**${cat}:** ${errors.length} error(s)`)
|
|
121
|
+
.join('\n') || 'No errors found';
|
|
122
|
+
return {
|
|
123
|
+
content: [
|
|
124
|
+
{
|
|
125
|
+
type: 'text',
|
|
126
|
+
text: `🔧 **Error Diagnosis**
|
|
127
|
+
**Category Filter:** ${category || 'All categories'}
|
|
128
|
+
**Total Errors:** ${diagnosis.errors.length}
|
|
129
|
+
|
|
130
|
+
**Error Summary:**
|
|
131
|
+
${errorSummary}
|
|
132
|
+
|
|
133
|
+
**Recommendations:**
|
|
134
|
+
${diagnosis.recommendations.map((rec) => `- ${rec}`).join('\n')}
|
|
135
|
+
|
|
136
|
+
**System Status:** ${diagnosis.systemStatus}`,
|
|
137
|
+
},
|
|
138
|
+
],
|
|
139
|
+
};
|
|
140
|
+
});
|
|
141
|
+
}
|
|
142
|
+
/**
|
|
143
|
+
* Handles comprehensive health status requests
|
|
144
|
+
*/
|
|
145
|
+
export async function handleGetHealthStatus(_args, foundryClient, diagnosticsClient) {
|
|
146
|
+
return withToolError('get health status', async () => {
|
|
147
|
+
const [worldInfo, systemHealth] = await Promise.all([
|
|
148
|
+
foundryClient.getWorldInfo().catch(() => null),
|
|
149
|
+
diagnosticsClient.getSystemHealth().catch(() => null),
|
|
150
|
+
]);
|
|
151
|
+
return {
|
|
152
|
+
content: [
|
|
153
|
+
{
|
|
154
|
+
type: 'text',
|
|
155
|
+
text: `🩺 **Comprehensive Health Status**
|
|
156
|
+
|
|
157
|
+
**FoundryVTT Connection:**
|
|
158
|
+
${foundryClient.isConnected() ? '✅ Connected' : '❌ Disconnected'}
|
|
159
|
+
|
|
160
|
+
**World Information:**
|
|
161
|
+
${worldInfo
|
|
162
|
+
? `
|
|
163
|
+
- **Title:** ${worldInfo.title}
|
|
164
|
+
- **System:** ${worldInfo.system}
|
|
165
|
+
- **Core Version:** ${worldInfo.coreVersion}
|
|
166
|
+
- **Playtime:** ${Math.floor(worldInfo.playtime / 3600)} hours`
|
|
167
|
+
: 'ℹ️ Not available'}
|
|
168
|
+
|
|
169
|
+
**System Health:**
|
|
170
|
+
${systemHealth
|
|
171
|
+
? `
|
|
172
|
+
- **Status:** ${systemHealth.status || 'Unknown'}
|
|
173
|
+
- **CPU:** ${systemHealth.cpu || 'N/A'}%
|
|
174
|
+
- **Memory:** ${systemHealth.memory || 'N/A'}%
|
|
175
|
+
- **Uptime:** ${Math.floor((systemHealth.uptime || 0) / 3600)} hours`
|
|
176
|
+
: 'ℹ️ Not available'}`,
|
|
177
|
+
},
|
|
178
|
+
],
|
|
179
|
+
};
|
|
180
|
+
});
|
|
181
|
+
}
|
|
182
|
+
//# sourceMappingURL=diagnostics.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"diagnostics.js","sourceRoot":"","sources":["../../../src/tools/handlers/diagnostics.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,SAAS,EAAE,QAAQ,EAAE,MAAM,oCAAoC,CAAC;AAIzE,OAAO,EAAE,aAAa,EAAE,MAAM,YAAY,CAAC;AAE3C;;GAEG;AACH,MAAM,CAAC,KAAK,UAAU,mBAAmB,CACvC,IAIC,EACD,iBAAoC;IAEpC,MAAM,EAAE,KAAK,GAAG,EAAE,EAAE,KAAK,EAAE,KAAK,EAAE,GAAG,IAAI,CAAC;IAE1C,OAAO,aAAa,CAAC,iBAAiB,EAAE,KAAK,IAAI,EAAE;QACjD,MAAM,IAAI,GAAG,MAAM,iBAAiB,CAAC,aAAa,EAAE,CAAC;QAErD,MAAM,UAAU,GAAG,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC;YACpC,CAAC,CAAC,IAAI;iBACD,GAAG,CAAC,CAAC,GAAY,EAAE,EAAE;gBACpB,MAAM,QAAQ,GAAG,GAA+D,CAAC;gBACjF,OAAO,IAAI,QAAQ,CAAC,SAAS,IAAI,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,OAAO,CAAC,QAAQ,CAAC,KAAK,IAAI,MAAM,CAAC,CAAC,WAAW,EAAE,MAAM,QAAQ,CAAC,OAAO,IAAI,MAAM,CAAC,GAAG,CAAC,EAAE,CAAC;YAClJ,CAAC,CAAC;iBACD,IAAI,CAAC,IAAI,CAAC;YACf,CAAC,CAAC,mBAAmB,CAAC;QAExB,OAAO;YACL,OAAO,EAAE;gBACP;oBACE,IAAI,EAAE,MAAM;oBACZ,IAAI,EAAE;cACF,KAAK,IAAI,YAAY;aACtB,KAAK;aACL,KAAK,IAAI,WAAW;;EAE/B,UAAU,IAAI,uBAAuB,EAAE;iBAChC;aACF;SACF,CAAC;IACJ,CAAC,CAAC,CAAC;AACL,CAAC;AAED;;GAEG;AACH,MAAM,CAAC,KAAK,UAAU,gBAAgB,CACpC,IAIC,EACD,iBAAoC;IAEpC,MAAM,EAAE,KAAK,EAAE,KAAK,EAAE,GAAG,IAAI,CAAC;IAE9B,IAAI,CAAC,KAAK,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE,CAAC;QACxC,MAAM,IAAI,QAAQ,CAAC,SAAS,CAAC,aAAa,EAAE,wCAAwC,CAAC,CAAC;IACxF,CAAC;IAED,OAAO,aAAa,CAAC,aAAa,EAAE,KAAK,IAAI,EAAE;QAC7C,MAAM,IAAI,GAAG,MAAM,iBAAiB,CAAC,UAAU,CAAC,EAAE,OAAO,EAAE,KAAK,EAAE,CAAC,CAAC;QAEpE,MAAM,UAAU,GAAG,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC;YACpC,CAAC,CAAC,IAAI;iBACD,GAAG,CAAC,CAAC,GAAY,EAAE,EAAE;gBACpB,MAAM,QAAQ,GAAG,GAA+D,CAAC;gBACjF,OAAO,IAAI,QAAQ,CAAC,SAAS,IAAI,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,OAAO,CAAC,QAAQ,CAAC,KAAK,IAAI,MAAM,CAAC,CAAC,WAAW,EAAE,MAAM,QAAQ,CAAC,OAAO,IAAI,MAAM,CAAC,GAAG,CAAC,EAAE,CAAC;YAClJ,CAAC,CAAC;iBACD,IAAI,CAAC,IAAI,CAAC;YACf,CAAC,CAAC,mBAAmB,CAAC;QAExB,MAAM,QAAQ,GAAG,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC;QAEvD,OAAO;YACL,OAAO,EAAE;gBACP;oBACE,IAAI,EAAE,MAAM;oBACZ,IAAI,EAAE;cACF,KAAK;oBACC,KAAK,IAAI,YAAY;eAC1B,QAAQ;;EAErB,UAAU,IAAI,gCAAgC,EAAE;iBACzC;aACF;SACF,CAAC;IACJ,CAAC,CAAC,CAAC;AACL,CAAC;AAED;;GAEG;AACH,MAAM,CAAC,KAAK,UAAU,qBAAqB,CACzC,KAA8B,EAC9B,iBAAoC;IAEpC,OAAO,aAAa,CAAC,mBAAmB,EAAE,KAAK,IAAI,EAAE;QACnD,MAAM,MAAM,GAAG,MAAM,iBAAiB,CAAC,eAAe,EAAE,CAAC;QAEzD,OAAO;YACL,OAAO,EAAE;gBACP;oBACE,IAAI,EAAE,MAAM;oBACZ,IAAI,EAAE;sBACM,MAAM,CAAC,MAAM,IAAI,SAAS;iBAC9B,MAA2B,CAAC,GAAG,IAAI,KAAK;oBACrC,MAA8B,CAAC,MAAM,IAAI,KAAK;kBAChD,MAA4B,CAAC,IAAI,IAAI,KAAK;cAC9C,MAA8B,CAAC,MAAM,IAAI,KAAK;;0BAElC,MAAmC,CAAC,WAAW,IAAI,KAAK;kBAChE,MAAiC,CAAC,SAAS,IAAI,MAAM;;;uBAGhD,MAAoC,CAAC,YAAY,IAAI,KAAK;oBAC7D,MAAkC,CAAC,UAAU,IAAI,KAAK,eAAe;iBACjF;aACF;SACF,CAAC;IACJ,CAAC,CAAC,CAAC;AACL,CAAC;AAED;;GAEG;AACH,MAAM,CAAC,KAAK,UAAU,oBAAoB,CACxC,IAEC,EACD,iBAAmC;IAEnC,MAAM,EAAE,QAAQ,EAAE,GAAG,IAAI,CAAC;IAE1B,OAAO,aAAa,CAAC,iBAAiB,EAAE,KAAK,IAAI,EAAE;QACjD,oDAAoD;QACpD,MAAM,SAAS,GAAG;YAChB,MAAM,EAAE,EAAE;YACV,eAAe,EAAE,CAAC,6BAA6B,EAAE,2CAA2C,CAAC;YAC7F,YAAY,EAAE,aAAa;SAC5B,CAAC;QAEF,MAAM,gBAAgB,GAAG,SAAS,CAAC,MAAM,CAAC,MAAM,CAC9C,CAAC,GAA8B,EAAE,KAA2B,EAAE,EAAE;YAC9D,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,QAAQ,CAAC,EAAE,CAAC;gBACzB,GAAG,CAAC,KAAK,CAAC,QAAQ,CAAC,GAAG,EAAE,CAAC;YAC3B,CAAC;YACD,GAAG,CAAC,KAAK,CAAC,QAAQ,CAAC,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC;YACjC,OAAO,GAAG,CAAC;QACb,CAAC,EACD,EAAE,CACH,CAAC;QAEF,MAAM,YAAY,GAChB,MAAM,CAAC,OAAO,CAAC,gBAAgB,CAAC;aAC7B,GAAG,CAAC,CAAC,CAAC,GAAG,EAAE,MAAM,CAAsB,EAAE,EAAE,CAAC,KAAK,GAAG,OAAO,MAAM,CAAC,MAAM,WAAW,CAAC;aACpF,IAAI,CAAC,IAAI,CAAC,IAAI,iBAAiB,CAAC;QAErC,OAAO;YACL,OAAO,EAAE;gBACP;oBACE,IAAI,EAAE,MAAM;oBACZ,IAAI,EAAE;uBACO,QAAQ,IAAI,gBAAgB;oBAC/B,SAAS,CAAC,MAAM,CAAC,MAAM;;;EAGzC,YAAY;;;EAGZ,SAAS,CAAC,eAAe,CAAC,GAAG,CAAC,CAAC,GAAW,EAAE,EAAE,CAAC,KAAK,GAAG,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC;;qBAElD,SAAS,CAAC,YAAY,EAAE;iBACpC;aACF;SACF,CAAC;IACJ,CAAC,CAAC,CAAC;AACL,CAAC;AAED;;GAEG;AACH,MAAM,CAAC,KAAK,UAAU,qBAAqB,CACzC,KAA8B,EAC9B,aAA4B,EAC5B,iBAAoC;IAEpC,OAAO,aAAa,CAAC,mBAAmB,EAAE,KAAK,IAAI,EAAE;QACnD,MAAM,CAAC,SAAS,EAAE,YAAY,CAAC,GAAG,MAAM,OAAO,CAAC,GAAG,CAAC;YAClD,aAAa,CAAC,YAAY,EAAE,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC;YAC9C,iBAAiB,CAAC,eAAe,EAAE,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC;SACtD,CAAC,CAAC;QAEH,OAAO;YACL,OAAO,EAAE;gBACP;oBACE,IAAI,EAAE,MAAM;oBACZ,IAAI,EAAE;;;EAGd,aAAa,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,gBAAgB;;;EAI9D,SAAS;wBACP,CAAC,CAAC;eACS,SAAS,CAAC,KAAK;gBACd,SAAS,CAAC,MAAM;sBACV,SAAS,CAAC,WAAW;kBACzB,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,QAAQ,GAAG,IAAI,CAAC,QAAQ;wBAC3D,CAAC,CAAC,kBACN;;;EAIE,YAAY;wBACV,CAAC,CAAC;gBACU,YAAY,CAAC,MAAM,IAAI,SAAS;aAClC,YAAiC,CAAC,GAAG,IAAI,KAAK;gBAC3C,YAAoC,CAAC,MAAM,IAAI,KAAK;gBACrD,IAAI,CAAC,KAAK,CAAC,CAAE,YAAoC,CAAC,MAAM,IAAI,CAAC,CAAC,GAAG,IAAI,CAAC,QAAQ;wBAC1F,CAAC,CAAC,kBACN,EAAE;iBACO;aACF;SACF,CAAC;IACJ,CAAC,CAAC,CAAC;AACL,CAAC"}
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @fileoverview Dice rolling tool handlers
|
|
3
|
+
*
|
|
4
|
+
* Handles dice rolling operations using FoundryVTT's dice system
|
|
5
|
+
* or fallback mechanisms when the API is unavailable.
|
|
6
|
+
*/
|
|
7
|
+
import type { FoundryClient } from '../../foundry/client.js';
|
|
8
|
+
import { BaseTool, type ToolContext, type ToolResult } from '../base.js';
|
|
9
|
+
/**
|
|
10
|
+
* Dice rolling tool implementation
|
|
11
|
+
*/
|
|
12
|
+
export declare class RollDiceTool extends BaseTool {
|
|
13
|
+
readonly name = "roll_dice";
|
|
14
|
+
readonly description = "Roll dice using standard RPG notation (e.g., 1d20, 3d6+4)";
|
|
15
|
+
readonly inputSchema: {
|
|
16
|
+
type: string;
|
|
17
|
+
properties: {
|
|
18
|
+
formula: {
|
|
19
|
+
type: string;
|
|
20
|
+
description: string;
|
|
21
|
+
};
|
|
22
|
+
reason: {
|
|
23
|
+
type: string;
|
|
24
|
+
description: string;
|
|
25
|
+
};
|
|
26
|
+
};
|
|
27
|
+
required: string[];
|
|
28
|
+
};
|
|
29
|
+
protected executeValidated(args: Record<string, unknown>, context: ToolContext): Promise<ToolResult>;
|
|
30
|
+
}
|
|
31
|
+
/**
|
|
32
|
+
* Legacy function for backward compatibility
|
|
33
|
+
* @deprecated Use RollDiceTool class instead
|
|
34
|
+
*/
|
|
35
|
+
export declare function handleRollDice(args: {
|
|
36
|
+
formula: string;
|
|
37
|
+
reason?: string;
|
|
38
|
+
}, foundryClient: FoundryClient): Promise<ToolResult>;
|
|
39
|
+
//# sourceMappingURL=dice.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"dice.d.ts","sourceRoot":"","sources":["../../../src/tools/handlers/dice.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,yBAAyB,CAAC;AAG7D,OAAO,EAAE,QAAQ,EAAE,KAAK,WAAW,EAAE,KAAK,UAAU,EAAE,MAAM,YAAY,CAAC;AAEzE;;GAEG;AACH,qBAAa,YAAa,SAAQ,QAAQ;IACxC,QAAQ,CAAC,IAAI,eAAe;IAC5B,QAAQ,CAAC,WAAW,+DAA+D;IACnF,QAAQ,CAAC,WAAW;;;;;;;;;;;;;MAalB;cAEc,gBAAgB,CAC9B,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAC7B,OAAO,EAAE,WAAW,GACnB,OAAO,CAAC,UAAU,CAAC;CAavB;AAED;;;GAGG;AACH,wBAAsB,cAAc,CAClC,IAAI,EAAE;IACJ,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB,EACD,aAAa,EAAE,aAAa,GAC3B,OAAO,CAAC,UAAU,CAAC,CAMrB"}
|
|
@@ -0,0 +1,53 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @fileoverview Dice rolling tool handlers
|
|
3
|
+
*
|
|
4
|
+
* Handles dice rolling operations using FoundryVTT's dice system
|
|
5
|
+
* or fallback mechanisms when the API is unavailable.
|
|
6
|
+
*/
|
|
7
|
+
import { logger } from '../../utils/logger.js';
|
|
8
|
+
// import { McpError, ErrorCode } from '@modelcontextprotocol/sdk/types.js';
|
|
9
|
+
import { BaseTool } from '../base.js';
|
|
10
|
+
/**
|
|
11
|
+
* Dice rolling tool implementation
|
|
12
|
+
*/
|
|
13
|
+
export class RollDiceTool extends BaseTool {
|
|
14
|
+
name = 'roll_dice';
|
|
15
|
+
description = 'Roll dice using standard RPG notation (e.g., 1d20, 3d6+4)';
|
|
16
|
+
inputSchema = {
|
|
17
|
+
type: 'object',
|
|
18
|
+
properties: {
|
|
19
|
+
formula: {
|
|
20
|
+
type: 'string',
|
|
21
|
+
description: 'Dice formula (e.g., "1d20+5", "3d6")',
|
|
22
|
+
},
|
|
23
|
+
reason: {
|
|
24
|
+
type: 'string',
|
|
25
|
+
description: 'Optional reason for the roll',
|
|
26
|
+
},
|
|
27
|
+
},
|
|
28
|
+
required: ['formula'],
|
|
29
|
+
};
|
|
30
|
+
async executeValidated(args, context) {
|
|
31
|
+
const { formula, reason } = args;
|
|
32
|
+
logger.info(`Rolling dice: ${formula}${reason ? ` (${reason})` : ''}`);
|
|
33
|
+
const result = await context.foundryClient.rollDice(formula, reason);
|
|
34
|
+
return this.createTextResponse(`🎲 **Dice Roll Result**
|
|
35
|
+
**Formula:** ${result.formula}
|
|
36
|
+
**Total:** ${result.total}
|
|
37
|
+
**Breakdown:** ${result.breakdown}
|
|
38
|
+
${result.reason ? `**Reason:** ${result.reason}` : ''}
|
|
39
|
+
**Timestamp:** ${result.timestamp}`);
|
|
40
|
+
}
|
|
41
|
+
}
|
|
42
|
+
/**
|
|
43
|
+
* Legacy function for backward compatibility
|
|
44
|
+
* @deprecated Use RollDiceTool class instead
|
|
45
|
+
*/
|
|
46
|
+
export async function handleRollDice(args, foundryClient) {
|
|
47
|
+
const tool = new RollDiceTool();
|
|
48
|
+
const context = {
|
|
49
|
+
foundryClient,
|
|
50
|
+
};
|
|
51
|
+
return tool.execute(args, context);
|
|
52
|
+
}
|
|
53
|
+
//# sourceMappingURL=dice.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"dice.js","sourceRoot":"","sources":["../../../src/tools/handlers/dice.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAGH,OAAO,EAAE,MAAM,EAAE,MAAM,uBAAuB,CAAC;AAC/C,4EAA4E;AAC5E,OAAO,EAAE,QAAQ,EAAqC,MAAM,YAAY,CAAC;AAEzE;;GAEG;AACH,MAAM,OAAO,YAAa,SAAQ,QAAQ;IAC/B,IAAI,GAAG,WAAW,CAAC;IACnB,WAAW,GAAG,2DAA2D,CAAC;IAC1E,WAAW,GAAG;QACrB,IAAI,EAAE,QAAQ;QACd,UAAU,EAAE;YACV,OAAO,EAAE;gBACP,IAAI,EAAE,QAAQ;gBACd,WAAW,EAAE,sCAAsC;aACpD;YACD,MAAM,EAAE;gBACN,IAAI,EAAE,QAAQ;gBACd,WAAW,EAAE,8BAA8B;aAC5C;SACF;QACD,QAAQ,EAAE,CAAC,SAAS,CAAC;KACtB,CAAC;IAEQ,KAAK,CAAC,gBAAgB,CAC9B,IAA6B,EAC7B,OAAoB;QAEpB,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,GAAG,IAA4C,CAAC;QAEzE,MAAM,CAAC,IAAI,CAAC,iBAAiB,OAAO,GAAG,MAAM,CAAC,CAAC,CAAC,KAAK,MAAM,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;QACvE,MAAM,MAAM,GAAG,MAAM,OAAO,CAAC,aAAa,CAAC,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC;QAErE,OAAO,IAAI,CAAC,kBAAkB,CAAC;eACpB,MAAM,CAAC,OAAO;aAChB,MAAM,CAAC,KAAK;iBACR,MAAM,CAAC,SAAS;EAC/B,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,eAAe,MAAM,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC,EAAE;iBACpC,MAAM,CAAC,SAAS,EAAE,CAAC,CAAC;IACnC,CAAC;CACF;AAED;;;GAGG;AACH,MAAM,CAAC,KAAK,UAAU,cAAc,CAClC,IAGC,EACD,aAA4B;IAE5B,MAAM,IAAI,GAAG,IAAI,YAAY,EAAE,CAAC;IAChC,MAAM,OAAO,GAAgB;QAC3B,aAAa;KACd,CAAC;IACF,OAAO,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;AACrC,CAAC"}
|
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @fileoverview Content generation tool handlers
|
|
3
|
+
*
|
|
4
|
+
* Handles NPC generation, loot generation, and rule lookups.
|
|
5
|
+
*/
|
|
6
|
+
import type { FoundryClient } from '../../foundry/client.js';
|
|
7
|
+
/**
|
|
8
|
+
* Handles NPC generation requests
|
|
9
|
+
*/
|
|
10
|
+
export declare function handleGenerateNPC(args: {
|
|
11
|
+
level?: number;
|
|
12
|
+
race?: string;
|
|
13
|
+
class?: string;
|
|
14
|
+
}, _foundryClient: FoundryClient): Promise<{
|
|
15
|
+
content: {
|
|
16
|
+
type: string;
|
|
17
|
+
text: string;
|
|
18
|
+
}[];
|
|
19
|
+
}>;
|
|
20
|
+
/**
|
|
21
|
+
* Handles loot generation requests
|
|
22
|
+
*/
|
|
23
|
+
export declare function handleGenerateLoot(args: {
|
|
24
|
+
challengeRating?: number;
|
|
25
|
+
treasureType?: string;
|
|
26
|
+
}, _foundryClient: FoundryClient): Promise<{
|
|
27
|
+
content: {
|
|
28
|
+
type: string;
|
|
29
|
+
text: string;
|
|
30
|
+
}[];
|
|
31
|
+
}>;
|
|
32
|
+
/**
|
|
33
|
+
* Handles rule lookup requests
|
|
34
|
+
*/
|
|
35
|
+
export declare function handleLookupRule(args: {
|
|
36
|
+
query: string;
|
|
37
|
+
system?: string;
|
|
38
|
+
}, _foundryClient: FoundryClient): Promise<{
|
|
39
|
+
content: {
|
|
40
|
+
type: string;
|
|
41
|
+
text: string;
|
|
42
|
+
}[];
|
|
43
|
+
}>;
|
|
44
|
+
//# sourceMappingURL=generation.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"generation.d.ts","sourceRoot":"","sources":["../../../src/tools/handlers/generation.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAGH,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,yBAAyB,CAAC;AAG7D;;GAEG;AACH,wBAAsB,iBAAiB,CACrC,IAAI,EAAE;IACJ,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB,EACD,cAAc,EAAE,aAAa;;;;;GAgC9B;AAED;;GAEG;AACH,wBAAsB,kBAAkB,CACtC,IAAI,EAAE;IACJ,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,YAAY,CAAC,EAAE,MAAM,CAAC;CACvB,EACD,cAAc,EAAE,aAAa;;;;;GA0B9B;AAED;;GAEG;AACH,wBAAsB,gBAAgB,CACpC,IAAI,EAAE;IACJ,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB,EACD,cAAc,EAAE,aAAa;;;;;GA4B9B"}
|
|
@@ -0,0 +1,205 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @fileoverview Content generation tool handlers
|
|
3
|
+
*
|
|
4
|
+
* Handles NPC generation, loot generation, and rule lookups.
|
|
5
|
+
*/
|
|
6
|
+
import { ErrorCode, McpError } from '@modelcontextprotocol/sdk/types.js';
|
|
7
|
+
import { withToolError } from './utils.js';
|
|
8
|
+
/**
|
|
9
|
+
* Handles NPC generation requests
|
|
10
|
+
*/
|
|
11
|
+
export async function handleGenerateNPC(args, _foundryClient) {
|
|
12
|
+
const { level = 1, race, class: characterClass } = args;
|
|
13
|
+
return withToolError('generate NPC', async () => {
|
|
14
|
+
// Generate basic NPC data
|
|
15
|
+
const npcName = generateRandomName();
|
|
16
|
+
const npcRace = race || getRandomRace();
|
|
17
|
+
const npcClass = characterClass || getRandomClass();
|
|
18
|
+
const stats = generateAbilityScores();
|
|
19
|
+
const hp = Math.max(1, Math.floor(Math.random() * (level * 8)) + level);
|
|
20
|
+
return {
|
|
21
|
+
content: [
|
|
22
|
+
{
|
|
23
|
+
type: 'text',
|
|
24
|
+
text: `🧙 **Generated NPC**
|
|
25
|
+
**Name:** ${npcName}
|
|
26
|
+
**Race:** ${npcRace}
|
|
27
|
+
**Class:** ${npcClass}
|
|
28
|
+
**Level:** ${level}
|
|
29
|
+
**Hit Points:** ${hp}
|
|
30
|
+
|
|
31
|
+
**Ability Scores:**
|
|
32
|
+
**STR:** ${stats.str} | **DEX:** ${stats.dex} | **CON:** ${stats.con}
|
|
33
|
+
**INT:** ${stats.int} | **WIS:** ${stats.wis} | **CHA:** ${stats.cha}
|
|
34
|
+
|
|
35
|
+
**Background:** ${generateBackground(npcRace, npcClass)}`,
|
|
36
|
+
},
|
|
37
|
+
],
|
|
38
|
+
};
|
|
39
|
+
});
|
|
40
|
+
}
|
|
41
|
+
/**
|
|
42
|
+
* Handles loot generation requests
|
|
43
|
+
*/
|
|
44
|
+
export async function handleGenerateLoot(args, _foundryClient) {
|
|
45
|
+
const { challengeRating = 1, treasureType = 'individual' } = args;
|
|
46
|
+
return withToolError('generate loot', async () => {
|
|
47
|
+
const loot = generateLootForCR(challengeRating, treasureType);
|
|
48
|
+
return {
|
|
49
|
+
content: [
|
|
50
|
+
{
|
|
51
|
+
type: 'text',
|
|
52
|
+
text: `💰 **Generated Loot**
|
|
53
|
+
**Challenge Rating:** ${challengeRating}
|
|
54
|
+
**Treasure Type:** ${treasureType}
|
|
55
|
+
|
|
56
|
+
**Currency:**
|
|
57
|
+
${loot.currency.map((c) => `- ${c.amount} ${c.type}`).join('\n')}
|
|
58
|
+
|
|
59
|
+
**Items:**
|
|
60
|
+
${loot.items.map((item) => `- ${item.name} (${item.rarity})`).join('\n')}
|
|
61
|
+
|
|
62
|
+
**Total Estimated Value:** ${loot.totalValue} gp`,
|
|
63
|
+
},
|
|
64
|
+
],
|
|
65
|
+
};
|
|
66
|
+
});
|
|
67
|
+
}
|
|
68
|
+
/**
|
|
69
|
+
* Handles rule lookup requests
|
|
70
|
+
*/
|
|
71
|
+
export async function handleLookupRule(args, _foundryClient) {
|
|
72
|
+
const { query, system = 'D&D 5e' } = args;
|
|
73
|
+
if (!query || typeof query !== 'string') {
|
|
74
|
+
throw new McpError(ErrorCode.InvalidParams, 'Query is required and must be a string');
|
|
75
|
+
}
|
|
76
|
+
return withToolError('lookup rule', async () => {
|
|
77
|
+
const ruleInfo = lookupGameRule(query, system);
|
|
78
|
+
return {
|
|
79
|
+
content: [
|
|
80
|
+
{
|
|
81
|
+
type: 'text',
|
|
82
|
+
text: `📖 **Rule Lookup: ${query}**
|
|
83
|
+
**System:** ${system}
|
|
84
|
+
|
|
85
|
+
**Rule:** ${ruleInfo.title}
|
|
86
|
+
**Description:** ${ruleInfo.description}
|
|
87
|
+
|
|
88
|
+
**Mechanics:** ${ruleInfo.mechanics}
|
|
89
|
+
|
|
90
|
+
**Source:** ${ruleInfo.source}`,
|
|
91
|
+
},
|
|
92
|
+
],
|
|
93
|
+
};
|
|
94
|
+
});
|
|
95
|
+
}
|
|
96
|
+
// Helper functions for content generation
|
|
97
|
+
function generateRandomName() {
|
|
98
|
+
const firstNames = [
|
|
99
|
+
'Aerdrie',
|
|
100
|
+
'Berris',
|
|
101
|
+
'Cithreth',
|
|
102
|
+
'Drannor',
|
|
103
|
+
'Enna',
|
|
104
|
+
'Galinndan',
|
|
105
|
+
'Halimath',
|
|
106
|
+
'Immeral',
|
|
107
|
+
'Jallarzi',
|
|
108
|
+
'Keth',
|
|
109
|
+
];
|
|
110
|
+
const lastNames = [
|
|
111
|
+
'Amakir',
|
|
112
|
+
'Amakiir',
|
|
113
|
+
'Galanodel',
|
|
114
|
+
'Holimion',
|
|
115
|
+
'Liadon',
|
|
116
|
+
'Meliamne',
|
|
117
|
+
'Nailo',
|
|
118
|
+
'Siannodel',
|
|
119
|
+
'Xiloscient',
|
|
120
|
+
'Yellowleaf',
|
|
121
|
+
];
|
|
122
|
+
return `${firstNames[Math.floor(Math.random() * firstNames.length)]} ${lastNames[Math.floor(Math.random() * lastNames.length)]}`;
|
|
123
|
+
}
|
|
124
|
+
function getRandomRace() {
|
|
125
|
+
const races = [
|
|
126
|
+
'Human',
|
|
127
|
+
'Elf',
|
|
128
|
+
'Dwarf',
|
|
129
|
+
'Halfling',
|
|
130
|
+
'Dragonborn',
|
|
131
|
+
'Gnome',
|
|
132
|
+
'Half-Elf',
|
|
133
|
+
'Half-Orc',
|
|
134
|
+
'Tiefling',
|
|
135
|
+
];
|
|
136
|
+
return races[Math.floor(Math.random() * races.length)] || 'Human';
|
|
137
|
+
}
|
|
138
|
+
function getRandomClass() {
|
|
139
|
+
const classes = [
|
|
140
|
+
'Fighter',
|
|
141
|
+
'Wizard',
|
|
142
|
+
'Cleric',
|
|
143
|
+
'Rogue',
|
|
144
|
+
'Ranger',
|
|
145
|
+
'Paladin',
|
|
146
|
+
'Barbarian',
|
|
147
|
+
'Bard',
|
|
148
|
+
'Druid',
|
|
149
|
+
'Monk',
|
|
150
|
+
'Sorcerer',
|
|
151
|
+
'Warlock',
|
|
152
|
+
];
|
|
153
|
+
return classes[Math.floor(Math.random() * classes.length)] || 'Fighter';
|
|
154
|
+
}
|
|
155
|
+
function generateAbilityScores() {
|
|
156
|
+
const rollStat = () => {
|
|
157
|
+
const rolls = Array.from({ length: 4 }, () => Math.floor(Math.random() * 6) + 1);
|
|
158
|
+
rolls.sort((a, b) => b - a);
|
|
159
|
+
return rolls.slice(0, 3).reduce((sum, roll) => sum + roll, 0);
|
|
160
|
+
};
|
|
161
|
+
return {
|
|
162
|
+
str: rollStat(),
|
|
163
|
+
dex: rollStat(),
|
|
164
|
+
con: rollStat(),
|
|
165
|
+
int: rollStat(),
|
|
166
|
+
wis: rollStat(),
|
|
167
|
+
cha: rollStat(),
|
|
168
|
+
};
|
|
169
|
+
}
|
|
170
|
+
function generateBackground(race, characterClass) {
|
|
171
|
+
const backgrounds = [
|
|
172
|
+
`A former ${characterClass.toLowerCase()} who seeks redemption for past mistakes.`,
|
|
173
|
+
`A ${race.toLowerCase()} ${characterClass.toLowerCase()} from a distant land, traveling to spread their knowledge.`,
|
|
174
|
+
`Once a member of a secret organization, now working independently.`,
|
|
175
|
+
`A scholar turned adventurer after discovering an ancient mystery.`,
|
|
176
|
+
`A protector of the innocent, dedicated to fighting against evil.`,
|
|
177
|
+
];
|
|
178
|
+
return (backgrounds[Math.floor(Math.random() * backgrounds.length)] ||
|
|
179
|
+
'A mysterious wanderer with an unknown past.');
|
|
180
|
+
}
|
|
181
|
+
function generateLootForCR(cr, _type) {
|
|
182
|
+
const baseValue = Math.floor(cr * 100 * (0.5 + Math.random()));
|
|
183
|
+
return {
|
|
184
|
+
currency: [
|
|
185
|
+
{ amount: Math.floor(baseValue * 0.1), type: 'gp' },
|
|
186
|
+
{ amount: Math.floor(baseValue * 0.05), type: 'sp' },
|
|
187
|
+
{ amount: Math.floor(baseValue * 0.02), type: 'cp' },
|
|
188
|
+
],
|
|
189
|
+
items: [
|
|
190
|
+
{ name: 'Healing Potion', rarity: 'Common' },
|
|
191
|
+
{ name: 'Silver Ring', rarity: 'Common' },
|
|
192
|
+
],
|
|
193
|
+
totalValue: baseValue,
|
|
194
|
+
};
|
|
195
|
+
}
|
|
196
|
+
function lookupGameRule(query, system) {
|
|
197
|
+
// Mock rule lookup - in a real implementation, this would query actual rule databases
|
|
198
|
+
return {
|
|
199
|
+
title: `${query} Rule`,
|
|
200
|
+
description: `Rules and mechanics for ${query} in ${system}.`,
|
|
201
|
+
mechanics: `Detailed explanation of how ${query} works mechanically.`,
|
|
202
|
+
source: `${system} Core Rulebook`,
|
|
203
|
+
};
|
|
204
|
+
}
|
|
205
|
+
//# sourceMappingURL=generation.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"generation.js","sourceRoot":"","sources":["../../../src/tools/handlers/generation.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @fileoverview Item management tool handlers
|
|
3
|
+
*
|
|
4
|
+
* Handles searching for items and retrieving detailed item information.
|
|
5
|
+
*/
|
|
6
|
+
import type { FoundryClient } from '../../foundry/client.js';
|
|
7
|
+
/**
|
|
8
|
+
* Handles item search requests
|
|
9
|
+
*/
|
|
10
|
+
export declare function handleSearchItems(args: {
|
|
11
|
+
query?: string;
|
|
12
|
+
type?: string;
|
|
13
|
+
rarity?: string;
|
|
14
|
+
limit?: number;
|
|
15
|
+
}, foundryClient: FoundryClient): Promise<{
|
|
16
|
+
content: {
|
|
17
|
+
type: string;
|
|
18
|
+
text: string;
|
|
19
|
+
}[];
|
|
20
|
+
}>;
|
|
21
|
+
//# sourceMappingURL=items.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"items.d.ts","sourceRoot":"","sources":["../../../src/tools/handlers/items.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,yBAAyB,CAAC;AAG7D;;GAEG;AACH,wBAAsB,iBAAiB,CACrC,IAAI,EAAE;IACJ,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB,EACD,aAAa,EAAE,aAAa;;;;;GA2C7B"}
|