foundryvtt-mcp 1.0.0 → 1.1.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/README.md +25 -3
- package/dist/character/manager.js +1 -1
- package/dist/character/manager.js.map +1 -1
- package/dist/combat/manager.d.ts +1 -2
- package/dist/combat/manager.d.ts.map +1 -1
- package/dist/combat/manager.js +3 -5
- package/dist/combat/manager.js.map +1 -1
- package/dist/config/index.d.ts +2 -0
- package/dist/config/index.d.ts.map +1 -1
- package/dist/config/index.js +4 -0
- package/dist/config/index.js.map +1 -1
- package/dist/foundry/auth.d.ts.map +1 -1
- package/dist/foundry/auth.js +5 -4
- package/dist/foundry/auth.js.map +1 -1
- package/dist/foundry/client.d.ts +112 -1
- package/dist/foundry/client.d.ts.map +1 -1
- package/dist/foundry/client.js +353 -10
- package/dist/foundry/client.js.map +1 -1
- package/dist/foundry/types.d.ts +76 -16
- package/dist/foundry/types.d.ts.map +1 -1
- package/dist/index.js +26 -2
- package/dist/index.js.map +1 -1
- package/dist/tools/definitions.d.ts +167 -0
- package/dist/tools/definitions.d.ts.map +1 -1
- package/dist/tools/definitions.js +179 -1
- package/dist/tools/definitions.js.map +1 -1
- package/dist/tools/handlers/actor-mutations.d.ts +26 -0
- package/dist/tools/handlers/actor-mutations.d.ts.map +1 -0
- package/dist/tools/handlers/actor-mutations.js +49 -0
- package/dist/tools/handlers/actor-mutations.js.map +1 -0
- package/dist/tools/handlers/chat.js +1 -1
- package/dist/tools/handlers/chat.js.map +1 -1
- package/dist/tools/handlers/compendium.d.ts +37 -0
- package/dist/tools/handlers/compendium.d.ts.map +1 -0
- package/dist/tools/handlers/compendium.js +83 -0
- package/dist/tools/handlers/compendium.js.map +1 -0
- package/dist/tools/handlers/diagnostics.d.ts +6 -1
- package/dist/tools/handlers/diagnostics.d.ts.map +1 -1
- package/dist/tools/handlers/diagnostics.js +52 -11
- package/dist/tools/handlers/diagnostics.js.map +1 -1
- package/dist/tools/handlers/item-mutations.d.ts +51 -0
- package/dist/tools/handlers/item-mutations.d.ts.map +1 -0
- package/dist/tools/handlers/item-mutations.js +118 -0
- package/dist/tools/handlers/item-mutations.js.map +1 -0
- package/dist/tools/router.d.ts.map +1 -1
- package/dist/tools/router.js +46 -0
- package/dist/tools/router.js.map +1 -1
- package/dist/utils/logger.d.ts +0 -1
- package/dist/utils/logger.d.ts.map +1 -1
- package/dist/utils/logger.js +0 -1
- package/dist/utils/logger.js.map +1 -1
- package/package.json +30 -14
- package/dist/resources/index.d.ts +0 -3
- package/dist/resources/index.d.ts.map +0 -1
- package/dist/resources/index.js +0 -93
- package/dist/resources/index.js.map +0 -1
|
@@ -0,0 +1,51 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @fileoverview Actor item mutation tool handlers (create / update / delete)
|
|
3
|
+
*
|
|
4
|
+
* WRITE operations — require FOUNDRY_WRITE_ENABLED=true and an active Socket.IO
|
|
5
|
+
* connection (mutations use the core `modifyDocument` protocol). The canonical
|
|
6
|
+
* mutation target is the D&D 5e v4+ activity schema; item `system` patches
|
|
7
|
+
* honour JSON-merge-patch semantics on nested paths such as
|
|
8
|
+
* `activities.{id}.consumption.targets`.
|
|
9
|
+
*/
|
|
10
|
+
import type { FoundryClient } from '../../foundry/client.js';
|
|
11
|
+
import type { ActorItemCreateSource } from '../../foundry/types.js';
|
|
12
|
+
/**
|
|
13
|
+
* Handles creating an item on an actor from a compendium reference or an inline
|
|
14
|
+
* item document.
|
|
15
|
+
*/
|
|
16
|
+
export declare function handleCreateActorItem(args: {
|
|
17
|
+
actorId: string;
|
|
18
|
+
source: ActorItemCreateSource;
|
|
19
|
+
}, foundryClient: FoundryClient): Promise<{
|
|
20
|
+
content: {
|
|
21
|
+
type: string;
|
|
22
|
+
text: string;
|
|
23
|
+
}[];
|
|
24
|
+
}>;
|
|
25
|
+
/**
|
|
26
|
+
* Handles applying a JSON merge patch to an item's `system` data. Supports
|
|
27
|
+
* nested paths (e.g. `activities.{id}.consumption.targets`).
|
|
28
|
+
*/
|
|
29
|
+
export declare function handleUpdateActorItem(args: {
|
|
30
|
+
actorId: string;
|
|
31
|
+
itemId: string;
|
|
32
|
+
patch: Record<string, unknown>;
|
|
33
|
+
}, foundryClient: FoundryClient): Promise<{
|
|
34
|
+
content: {
|
|
35
|
+
type: string;
|
|
36
|
+
text: string;
|
|
37
|
+
}[];
|
|
38
|
+
}>;
|
|
39
|
+
/**
|
|
40
|
+
* Handles deleting an item owned by an actor.
|
|
41
|
+
*/
|
|
42
|
+
export declare function handleDeleteActorItem(args: {
|
|
43
|
+
actorId: string;
|
|
44
|
+
itemId: string;
|
|
45
|
+
}, foundryClient: FoundryClient): Promise<{
|
|
46
|
+
content: {
|
|
47
|
+
type: string;
|
|
48
|
+
text: string;
|
|
49
|
+
}[];
|
|
50
|
+
}>;
|
|
51
|
+
//# sourceMappingURL=item-mutations.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"item-mutations.d.ts","sourceRoot":"","sources":["../../../src/tools/handlers/item-mutations.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAGH,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,yBAAyB,CAAC;AAC7D,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,wBAAwB,CAAC;AAGpE;;;GAGG;AACH,wBAAsB,qBAAqB,CACzC,IAAI,EAAE;IACJ,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,EAAE,qBAAqB,CAAC;CAC/B,EACD,aAAa,EAAE,aAAa;;;;;GAgD7B;AAED;;;GAGG;AACH,wBAAsB,qBAAqB,CACzC,IAAI,EAAE;IACJ,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,EAAE,MAAM,CAAC;IACf,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CAChC,EACD,aAAa,EAAE,aAAa;;;;;GAgC7B;AAED;;GAEG;AACH,wBAAsB,qBAAqB,CACzC,IAAI,EAAE;IACJ,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,EAAE,MAAM,CAAC;CAChB,EACD,aAAa,EAAE,aAAa;;;;;GA2B7B"}
|
|
@@ -0,0 +1,118 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @fileoverview Actor item mutation tool handlers (create / update / delete)
|
|
3
|
+
*
|
|
4
|
+
* WRITE operations — require FOUNDRY_WRITE_ENABLED=true and an active Socket.IO
|
|
5
|
+
* connection (mutations use the core `modifyDocument` protocol). The canonical
|
|
6
|
+
* mutation target is the D&D 5e v4+ activity schema; item `system` patches
|
|
7
|
+
* honour JSON-merge-patch semantics on nested paths such as
|
|
8
|
+
* `activities.{id}.consumption.targets`.
|
|
9
|
+
*/
|
|
10
|
+
import { ErrorCode, McpError } from '@modelcontextprotocol/sdk/types.js';
|
|
11
|
+
import { withToolError } from './utils.js';
|
|
12
|
+
/**
|
|
13
|
+
* Handles creating an item on an actor from a compendium reference or an inline
|
|
14
|
+
* item document.
|
|
15
|
+
*/
|
|
16
|
+
export async function handleCreateActorItem(args, foundryClient) {
|
|
17
|
+
const { actorId, source } = args;
|
|
18
|
+
if (!actorId || typeof actorId !== 'string') {
|
|
19
|
+
throw new McpError(ErrorCode.InvalidParams, 'actorId is required and must be a string');
|
|
20
|
+
}
|
|
21
|
+
if (!source || typeof source !== 'object') {
|
|
22
|
+
throw new McpError(ErrorCode.InvalidParams, 'source is required and must be an object');
|
|
23
|
+
}
|
|
24
|
+
if (source.type === 'compendium') {
|
|
25
|
+
if (typeof source.compendiumId !== 'string' || typeof source.itemId !== 'string') {
|
|
26
|
+
throw new McpError(ErrorCode.InvalidParams, 'compendium source requires compendiumId and itemId strings');
|
|
27
|
+
}
|
|
28
|
+
}
|
|
29
|
+
else if (source.type === 'inline') {
|
|
30
|
+
if (!source.item || typeof source.item !== 'object') {
|
|
31
|
+
throw new McpError(ErrorCode.InvalidParams, 'inline source requires an item object');
|
|
32
|
+
}
|
|
33
|
+
}
|
|
34
|
+
else {
|
|
35
|
+
throw new McpError(ErrorCode.InvalidParams, 'source.type must be "compendium" or "inline"');
|
|
36
|
+
}
|
|
37
|
+
return withToolError('create item', async () => {
|
|
38
|
+
const newItem = await foundryClient.createActorItem(actorId, source);
|
|
39
|
+
const origin = source.type === 'compendium'
|
|
40
|
+
? `compendium ${source.compendiumId} / ${source.itemId}`
|
|
41
|
+
: 'inline definition';
|
|
42
|
+
return {
|
|
43
|
+
content: [
|
|
44
|
+
{
|
|
45
|
+
type: 'text',
|
|
46
|
+
text: `⚔️ **Item Created**
|
|
47
|
+
**Actor:** ${actorId}
|
|
48
|
+
**Item:** ${newItem.name} (${newItem.type})
|
|
49
|
+
**Item ID:** ${newItem._id}
|
|
50
|
+
**Source:** ${origin}
|
|
51
|
+
|
|
52
|
+
_Canonical target: D&D 5e v4+ activity schema._`,
|
|
53
|
+
},
|
|
54
|
+
],
|
|
55
|
+
};
|
|
56
|
+
});
|
|
57
|
+
}
|
|
58
|
+
/**
|
|
59
|
+
* Handles applying a JSON merge patch to an item's `system` data. Supports
|
|
60
|
+
* nested paths (e.g. `activities.{id}.consumption.targets`).
|
|
61
|
+
*/
|
|
62
|
+
export async function handleUpdateActorItem(args, foundryClient) {
|
|
63
|
+
const { actorId, itemId, patch } = args;
|
|
64
|
+
if (!actorId || typeof actorId !== 'string') {
|
|
65
|
+
throw new McpError(ErrorCode.InvalidParams, 'actorId is required and must be a string');
|
|
66
|
+
}
|
|
67
|
+
if (!itemId || typeof itemId !== 'string') {
|
|
68
|
+
throw new McpError(ErrorCode.InvalidParams, 'itemId is required and must be a string');
|
|
69
|
+
}
|
|
70
|
+
if (!patch || typeof patch !== 'object' || Array.isArray(patch)) {
|
|
71
|
+
throw new McpError(ErrorCode.InvalidParams, 'patch is required and must be an object');
|
|
72
|
+
}
|
|
73
|
+
return withToolError('update item', async () => {
|
|
74
|
+
const updatedItem = await foundryClient.updateActorItem(actorId, itemId, patch);
|
|
75
|
+
return {
|
|
76
|
+
content: [
|
|
77
|
+
{
|
|
78
|
+
type: 'text',
|
|
79
|
+
text: `⚔️ **Item Updated**
|
|
80
|
+
**Actor:** ${actorId}
|
|
81
|
+
**Item:** ${updatedItem.name} (${updatedItem.type})
|
|
82
|
+
**Item ID:** ${updatedItem._id}
|
|
83
|
+
**Patched keys:** ${Object.keys(patch).join(', ') || '(none)'}
|
|
84
|
+
|
|
85
|
+
_JSON merge patch applied to item.system. Canonical target: D&D 5e v4+ activity schema (e.g. activities.{id}.consumption.targets)._`,
|
|
86
|
+
},
|
|
87
|
+
],
|
|
88
|
+
};
|
|
89
|
+
});
|
|
90
|
+
}
|
|
91
|
+
/**
|
|
92
|
+
* Handles deleting an item owned by an actor.
|
|
93
|
+
*/
|
|
94
|
+
export async function handleDeleteActorItem(args, foundryClient) {
|
|
95
|
+
const { actorId, itemId } = args;
|
|
96
|
+
if (!actorId || typeof actorId !== 'string') {
|
|
97
|
+
throw new McpError(ErrorCode.InvalidParams, 'actorId is required and must be a string');
|
|
98
|
+
}
|
|
99
|
+
if (!itemId || typeof itemId !== 'string') {
|
|
100
|
+
throw new McpError(ErrorCode.InvalidParams, 'itemId is required and must be a string');
|
|
101
|
+
}
|
|
102
|
+
return withToolError('delete item', async () => {
|
|
103
|
+
await foundryClient.deleteActorItem(actorId, itemId);
|
|
104
|
+
return {
|
|
105
|
+
content: [
|
|
106
|
+
{
|
|
107
|
+
type: 'text',
|
|
108
|
+
text: `🗑️ **Item Deleted**
|
|
109
|
+
**Actor:** ${actorId}
|
|
110
|
+
**Item ID:** ${itemId}
|
|
111
|
+
|
|
112
|
+
_Canonical target: D&D 5e v4+ activity schema._`,
|
|
113
|
+
},
|
|
114
|
+
],
|
|
115
|
+
};
|
|
116
|
+
});
|
|
117
|
+
}
|
|
118
|
+
//# sourceMappingURL=item-mutations.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"item-mutations.js","sourceRoot":"","sources":["../../../src/tools/handlers/item-mutations.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +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,
|
|
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,EAAkB,aAAa,EAAE,MAAM,sBAAsB,CAAC;AAE1E,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,yBAAyB,CAAC;AAEhE,OAAO,KAAK,EAAe,UAAU,EAAE,MAAM,WAAW,CAAC;AAiCzD;;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,CA+LrB;AAED;;GAEG;AACH,wBAAsB,oBAAoB,CACxC,GAAG,EAAE,MAAM,EACX,aAAa,EAAE,aAAa,EAC5B,iBAAiB,EAAE,iBAAiB;;;;;;GAIrC"}
|
package/dist/tools/router.js
CHANGED
|
@@ -3,13 +3,16 @@
|
|
|
3
3
|
*/
|
|
4
4
|
import { ErrorCode, McpError } from '@modelcontextprotocol/sdk/types.js';
|
|
5
5
|
import { logger } from '../utils/logger.js';
|
|
6
|
+
import { handleUpdateActorAttribute } from './handlers/actor-mutations.js';
|
|
6
7
|
import { handleGetActorDetails, handleSearchActors } from './handlers/actors.js';
|
|
7
8
|
import { handleGetChatMessages } from './handlers/chat.js';
|
|
8
9
|
import { handleGetCombatState } from './handlers/combat.js';
|
|
10
|
+
import { handleSearchCompendium } from './handlers/compendium.js';
|
|
9
11
|
import { handleDiagnoseErrors, handleGetHealthStatus, handleGetRecentLogs, handleGetSystemHealth, handleSearchLogs, } from './handlers/diagnostics.js';
|
|
10
12
|
// Import all tool handlers
|
|
11
13
|
import { handleRollDice } from './handlers/dice.js';
|
|
12
14
|
import { handleGenerateLoot, handleGenerateNPC, handleLookupRule } from './handlers/generation.js';
|
|
15
|
+
import { handleCreateActorItem, handleDeleteActorItem, handleUpdateActorItem, } from './handlers/item-mutations.js';
|
|
13
16
|
import { handleSearchItems } from './handlers/items.js';
|
|
14
17
|
import { handleGetJournal, handleSearchJournals } from './handlers/journals.js';
|
|
15
18
|
import { handleReadResource } from './handlers/resources.js';
|
|
@@ -54,9 +57,52 @@ export async function routeToolRequest(name, args, foundryClient, diagnosticsCli
|
|
|
54
57
|
throw new Error('Missing required parameter: actorId');
|
|
55
58
|
}
|
|
56
59
|
return handleGetActorDetails(args, foundryClient);
|
|
60
|
+
// Actor mutation tools (#143, require REST API module)
|
|
61
|
+
case 'update_actor_attributes':
|
|
62
|
+
if (!('actorId' in args) || typeof args.actorId !== 'string') {
|
|
63
|
+
throw new Error('Missing required parameter: actorId');
|
|
64
|
+
}
|
|
65
|
+
if (!('patch' in args) || typeof args.patch !== 'object' || args.patch === null) {
|
|
66
|
+
throw new Error('Missing required parameter: patch');
|
|
67
|
+
}
|
|
68
|
+
return handleUpdateActorAttribute(args, foundryClient);
|
|
57
69
|
// Item tools
|
|
58
70
|
case 'search_items':
|
|
59
71
|
return handleSearchItems(args, foundryClient);
|
|
72
|
+
// Compendium tools (#144)
|
|
73
|
+
case 'search_compendium':
|
|
74
|
+
if (!('query' in args) || typeof args.query !== 'string') {
|
|
75
|
+
throw new Error('Missing required parameter: query');
|
|
76
|
+
}
|
|
77
|
+
return handleSearchCompendium(args, foundryClient);
|
|
78
|
+
// Item mutation tools (WRITE — require REST API module)
|
|
79
|
+
case 'create_actor_item':
|
|
80
|
+
if (!('actorId' in args) || typeof args.actorId !== 'string') {
|
|
81
|
+
throw new Error('Missing required parameter: actorId');
|
|
82
|
+
}
|
|
83
|
+
if (!('source' in args) || typeof args.source !== 'object' || args.source === null) {
|
|
84
|
+
throw new Error('Missing required parameter: source');
|
|
85
|
+
}
|
|
86
|
+
return handleCreateActorItem(args, foundryClient);
|
|
87
|
+
case 'update_actor_item':
|
|
88
|
+
if (!('actorId' in args) || typeof args.actorId !== 'string') {
|
|
89
|
+
throw new Error('Missing required parameter: actorId');
|
|
90
|
+
}
|
|
91
|
+
if (!('itemId' in args) || typeof args.itemId !== 'string') {
|
|
92
|
+
throw new Error('Missing required parameter: itemId');
|
|
93
|
+
}
|
|
94
|
+
if (!('patch' in args) || typeof args.patch !== 'object' || args.patch === null) {
|
|
95
|
+
throw new Error('Missing required parameter: patch');
|
|
96
|
+
}
|
|
97
|
+
return handleUpdateActorItem(args, foundryClient);
|
|
98
|
+
case 'delete_actor_item':
|
|
99
|
+
if (!('actorId' in args) || typeof args.actorId !== 'string') {
|
|
100
|
+
throw new Error('Missing required parameter: actorId');
|
|
101
|
+
}
|
|
102
|
+
if (!('itemId' in args) || typeof args.itemId !== 'string') {
|
|
103
|
+
throw new Error('Missing required parameter: itemId');
|
|
104
|
+
}
|
|
105
|
+
return handleDeleteActorItem(args, foundryClient);
|
|
60
106
|
// Scene tools
|
|
61
107
|
case 'get_scene_info':
|
|
62
108
|
return handleGetSceneInfo(args, foundryClient);
|
package/dist/tools/router.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"router.js","sourceRoot":"","sources":["../../src/tools/router.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,SAAS,EAAE,QAAQ,EAAE,MAAM,oCAAoC,CAAC;
|
|
1
|
+
{"version":3,"file":"router.js","sourceRoot":"","sources":["../../src/tools/router.ts"],"names":[],"mappings":"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"}
|
package/dist/utils/logger.d.ts
CHANGED
|
@@ -23,7 +23,6 @@ type LogLevel = 'debug' | 'info' | 'warn' | 'error';
|
|
|
23
23
|
* Provides methods for different log levels and automatically filters
|
|
24
24
|
* messages based on the configured minimum log level.
|
|
25
25
|
*
|
|
26
|
-
* @class Logger
|
|
27
26
|
* @example
|
|
28
27
|
* ```typescript
|
|
29
28
|
* import { logger } from './utils/logger.js';
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"logger.d.ts","sourceRoot":"","sources":["../../src/utils/logger.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAIH;;;;;;;GAOG;AACH,KAAK,QAAQ,GAAG,OAAO,GAAG,MAAM,GAAG,MAAM,GAAG,OAAO,CAAC;AAEpD
|
|
1
|
+
{"version":3,"file":"logger.d.ts","sourceRoot":"","sources":["../../src/utils/logger.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAIH;;;;;;;GAOG;AACH,KAAK,QAAQ,GAAG,OAAO,GAAG,MAAM,GAAG,MAAM,GAAG,OAAO,CAAC;AAEpD;;;;;;;;;;;;;;GAcG;AACH,cAAM,MAAM;IACV,OAAO,CAAC,QAAQ,CAAW;IAC3B,OAAO,CAAC,MAAM,CAKZ;IAEF;;;;OAIG;gBACS,QAAQ,GAAE,QAAiB;IAIvC;;;;;;OAMG;IACH,OAAO,CAAC,SAAS;IAIjB;;;;;;;;OAQG;IACH,OAAO,CAAC,aAAa;IAMrB;;;;;;;;;;;;OAYG;IACH,KAAK,CAAC,OAAO,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,OAAO,GAAG,IAAI;IAM5C;;;;;;;;;;;;OAYG;IACH,IAAI,CAAC,OAAO,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,OAAO,GAAG,IAAI;IAM3C;;;;;;;;;;;;OAYG;IACH,IAAI,CAAC,OAAO,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,OAAO,GAAG,IAAI;IAM3C;;;;;;;;;;;;;OAaG;IACH,KAAK,CAAC,OAAO,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,OAAO,GAAG,IAAI;CAO9C;AAED;;;;;;;;;;;;;GAaG;AACH,eAAO,MAAM,MAAM,QAA8B,CAAC"}
|
package/dist/utils/logger.js
CHANGED
|
@@ -15,7 +15,6 @@ import { config } from '../config/index.js';
|
|
|
15
15
|
* Provides methods for different log levels and automatically filters
|
|
16
16
|
* messages based on the configured minimum log level.
|
|
17
17
|
*
|
|
18
|
-
* @class Logger
|
|
19
18
|
* @example
|
|
20
19
|
* ```typescript
|
|
21
20
|
* import { logger } from './utils/logger.js';
|
package/dist/utils/logger.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"logger.js","sourceRoot":"","sources":["../../src/utils/logger.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAEH,OAAO,EAAE,MAAM,EAAE,MAAM,oBAAoB,CAAC;AAY5C
|
|
1
|
+
{"version":3,"file":"logger.js","sourceRoot":"","sources":["../../src/utils/logger.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAEH,OAAO,EAAE,MAAM,EAAE,MAAM,oBAAoB,CAAC;AAY5C;;;;;;;;;;;;;;GAcG;AACH,MAAM,MAAM;IACF,QAAQ,CAAW;IACnB,MAAM,GAA6B;QACzC,KAAK,EAAE,CAAC;QACR,IAAI,EAAE,CAAC;QACP,IAAI,EAAE,CAAC;QACP,KAAK,EAAE,CAAC;KACT,CAAC;IAEF;;;;OAIG;IACH,YAAY,WAAqB,MAAM;QACrC,IAAI,CAAC,QAAQ,GAAG,QAAQ,CAAC;IAC3B,CAAC;IAED;;;;;;OAMG;IACK,SAAS,CAAC,KAAe;QAC/B,OAAO,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;IAC1D,CAAC;IAED;;;;;;;;OAQG;IACK,aAAa,CAAC,KAAe,EAAE,OAAe,EAAE,IAAc;QACpE,MAAM,SAAS,GAAG,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC;QAC3C,MAAM,OAAO,GAAG,IAAI,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QACvD,OAAO,IAAI,SAAS,KAAK,KAAK,CAAC,WAAW,EAAE,KAAK,OAAO,GAAG,OAAO,EAAE,CAAC;IACvE,CAAC;IAED;;;;;;;;;;;;OAYG;IACH,KAAK,CAAC,OAAe,EAAE,IAAc;QACnC,IAAI,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,EAAE,CAAC;YAC5B,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,aAAa,CAAC,OAAO,EAAE,OAAO,EAAE,IAAI,CAAC,CAAC,CAAC;QAC5D,CAAC;IACH,CAAC;IAED;;;;;;;;;;;;OAYG;IACH,IAAI,CAAC,OAAe,EAAE,IAAc;QAClC,IAAI,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,EAAE,CAAC;YAC3B,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,aAAa,CAAC,MAAM,EAAE,OAAO,EAAE,IAAI,CAAC,CAAC,CAAC;QAC1D,CAAC;IACH,CAAC;IAED;;;;;;;;;;;;OAYG;IACH,IAAI,CAAC,OAAe,EAAE,IAAc;QAClC,IAAI,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,EAAE,CAAC;YAC3B,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,aAAa,CAAC,MAAM,EAAE,OAAO,EAAE,IAAI,CAAC,CAAC,CAAC;QAC1D,CAAC;IACH,CAAC;IAED;;;;;;;;;;;;;OAaG;IACH,KAAK,CAAC,OAAe,EAAE,KAAe;QACpC,IAAI,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,EAAE,CAAC;YAC5B,MAAM,YAAY,GAChB,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,KAAK,CAAC,OAAO,EAAE,KAAK,EAAE,KAAK,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC;YAClF,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,aAAa,CAAC,OAAO,EAAE,OAAO,EAAE,YAAY,CAAC,CAAC,CAAC;QACpE,CAAC;IACH,CAAC;CACF;AAED;;;;;;;;;;;;;GAaG;AACH,MAAM,CAAC,MAAM,MAAM,GAAG,IAAI,MAAM,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "foundryvtt-mcp",
|
|
3
|
-
"version": "1.
|
|
3
|
+
"version": "1.1.0",
|
|
4
4
|
"description": "Model Context Protocol server for FoundryVTT integration",
|
|
5
5
|
"main": "dist/index.js",
|
|
6
6
|
"bin": {
|
|
@@ -8,9 +8,11 @@
|
|
|
8
8
|
},
|
|
9
9
|
"type": "module",
|
|
10
10
|
"scripts": {
|
|
11
|
-
"build": "tsc",
|
|
11
|
+
"build": "tsc && chmod +x dist/index.js",
|
|
12
12
|
"dev": "tsx watch src/index.ts",
|
|
13
13
|
"start": "node dist/index.js",
|
|
14
|
+
"smoke": "node scripts/smoke-test.js",
|
|
15
|
+
"smoke:pack": "node scripts/smoke-pack.js",
|
|
14
16
|
"test": "vitest run",
|
|
15
17
|
"test:watch": "vitest --watch",
|
|
16
18
|
"test:coverage": "vitest run --coverage",
|
|
@@ -68,28 +70,42 @@
|
|
|
68
70
|
"LICENSE"
|
|
69
71
|
],
|
|
70
72
|
"dependencies": {
|
|
71
|
-
"@modelcontextprotocol/sdk": "^1.
|
|
72
|
-
"ajv": "^8.
|
|
73
|
-
"axios": "^1.
|
|
74
|
-
"dotenv": "^17.
|
|
73
|
+
"@modelcontextprotocol/sdk": "^1.29.0",
|
|
74
|
+
"ajv": "^8.20.0",
|
|
75
|
+
"axios": "^1.16.0",
|
|
76
|
+
"dotenv": "^17.4.2",
|
|
75
77
|
"socket.io-client": "^4.8.3",
|
|
76
|
-
"zod": "^4.3
|
|
78
|
+
"zod": "^4.4.3"
|
|
77
79
|
},
|
|
78
80
|
"devDependencies": {
|
|
79
|
-
"@biomejs/biome": "^2.
|
|
80
|
-
"@playwright/test": "^1.
|
|
81
|
-
"@types/node": "^25.
|
|
81
|
+
"@biomejs/biome": "^2.4.15",
|
|
82
|
+
"@playwright/test": "^1.60.0",
|
|
83
|
+
"@types/node": "^25.7.0",
|
|
82
84
|
"husky": "^9.1.7",
|
|
83
|
-
"lint-staged": "^
|
|
85
|
+
"lint-staged": "^17.0.4",
|
|
84
86
|
"rimraf": "^6.1.3",
|
|
85
87
|
"tsx": "^4.21.0",
|
|
86
|
-
"typedoc": "^0.28.
|
|
87
|
-
"typescript": "^
|
|
88
|
-
"vitest": "^4.
|
|
88
|
+
"typedoc": "^0.28.19",
|
|
89
|
+
"typescript": "^6.0.3",
|
|
90
|
+
"vitest": "^4.1.6"
|
|
89
91
|
},
|
|
90
92
|
"engines": {
|
|
91
93
|
"node": ">=18.0.0"
|
|
92
94
|
},
|
|
95
|
+
"overrides": {
|
|
96
|
+
"@hono/node-server": "^1.19.14",
|
|
97
|
+
"hono": "^4.12.18",
|
|
98
|
+
"express-rate-limit": "^8.5.1",
|
|
99
|
+
"ip-address": "^10.2.0",
|
|
100
|
+
"path-to-regexp": "^8.4.2",
|
|
101
|
+
"fast-uri": "^3.1.2",
|
|
102
|
+
"socket.io-parser": "^4.2.6",
|
|
103
|
+
"vite": "^7.3.3",
|
|
104
|
+
"rollup": "^4.60.3",
|
|
105
|
+
"postcss": "^8.5.14",
|
|
106
|
+
"picomatch": "^4.0.4",
|
|
107
|
+
"brace-expansion": "^5.0.6"
|
|
108
|
+
},
|
|
93
109
|
"lint-staged": {
|
|
94
110
|
"src/**/*.{ts,tsx,js,jsx}": [
|
|
95
111
|
"biome check --write"
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/resources/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,oCAAoC,CAAC;AAEnE,eAAO,MAAM,mBAAmB,EAAE,QAAQ,EAyGzC,CAAC"}
|
package/dist/resources/index.js
DELETED
|
@@ -1,93 +0,0 @@
|
|
|
1
|
-
export const resourceDefinitions = [
|
|
2
|
-
{
|
|
3
|
-
uri: 'foundry://world/info',
|
|
4
|
-
name: 'World Information',
|
|
5
|
-
description: 'Current world/campaign information including title, system, and settings',
|
|
6
|
-
mimeType: 'application/json',
|
|
7
|
-
},
|
|
8
|
-
{
|
|
9
|
-
uri: 'foundry://world/actors',
|
|
10
|
-
name: 'All Actors',
|
|
11
|
-
description: 'Complete list of all actors in the world (characters, NPCs, monsters)',
|
|
12
|
-
mimeType: 'application/json',
|
|
13
|
-
},
|
|
14
|
-
{
|
|
15
|
-
uri: 'foundry://world/items',
|
|
16
|
-
name: 'All Items',
|
|
17
|
-
description: 'Complete list of all items, equipment, and spells in the world',
|
|
18
|
-
mimeType: 'application/json',
|
|
19
|
-
},
|
|
20
|
-
{
|
|
21
|
-
uri: 'foundry://world/scenes',
|
|
22
|
-
name: 'All Scenes',
|
|
23
|
-
description: 'List of all scenes/maps in the world',
|
|
24
|
-
mimeType: 'application/json',
|
|
25
|
-
},
|
|
26
|
-
{
|
|
27
|
-
uri: 'foundry://world/journals',
|
|
28
|
-
name: 'Journal Entries',
|
|
29
|
-
description: 'All journal entries, notes, and handouts',
|
|
30
|
-
mimeType: 'application/json',
|
|
31
|
-
},
|
|
32
|
-
{
|
|
33
|
-
uri: 'foundry://world/macros',
|
|
34
|
-
name: 'Macros',
|
|
35
|
-
description: 'Available macros and scripts',
|
|
36
|
-
mimeType: 'application/json',
|
|
37
|
-
},
|
|
38
|
-
{
|
|
39
|
-
uri: 'foundry://scene/current',
|
|
40
|
-
name: 'Current Scene',
|
|
41
|
-
description: 'Information about the currently active scene',
|
|
42
|
-
mimeType: 'application/json',
|
|
43
|
-
},
|
|
44
|
-
{
|
|
45
|
-
uri: 'foundry://combat/current',
|
|
46
|
-
name: 'Current Combat',
|
|
47
|
-
description: 'Active combat encounter state and initiative order',
|
|
48
|
-
mimeType: 'application/json',
|
|
49
|
-
},
|
|
50
|
-
{
|
|
51
|
-
uri: 'foundry://users/online',
|
|
52
|
-
name: 'Online Users',
|
|
53
|
-
description: 'Currently connected users and their status',
|
|
54
|
-
mimeType: 'application/json',
|
|
55
|
-
},
|
|
56
|
-
{
|
|
57
|
-
uri: 'foundry://system/info',
|
|
58
|
-
name: 'Game System',
|
|
59
|
-
description: 'Information about the current game system and its rules',
|
|
60
|
-
mimeType: 'application/json',
|
|
61
|
-
},
|
|
62
|
-
{
|
|
63
|
-
uri: 'foundry://compendium/spells',
|
|
64
|
-
name: 'Spell Compendium',
|
|
65
|
-
description: 'All available spells from compendium packs',
|
|
66
|
-
mimeType: 'application/json',
|
|
67
|
-
},
|
|
68
|
-
{
|
|
69
|
-
uri: 'foundry://compendium/monsters',
|
|
70
|
-
name: 'Monster Compendium',
|
|
71
|
-
description: 'All available monsters and NPCs from compendium packs',
|
|
72
|
-
mimeType: 'application/json',
|
|
73
|
-
},
|
|
74
|
-
{
|
|
75
|
-
uri: 'foundry://compendium/items',
|
|
76
|
-
name: 'Item Compendium',
|
|
77
|
-
description: 'All available items and equipment from compendium packs',
|
|
78
|
-
mimeType: 'application/json',
|
|
79
|
-
},
|
|
80
|
-
{
|
|
81
|
-
uri: 'foundry://playlists/all',
|
|
82
|
-
name: 'Audio Playlists',
|
|
83
|
-
description: 'All available audio playlists and currently playing tracks',
|
|
84
|
-
mimeType: 'application/json',
|
|
85
|
-
},
|
|
86
|
-
{
|
|
87
|
-
uri: 'foundry://settings/game',
|
|
88
|
-
name: 'Game Settings',
|
|
89
|
-
description: 'Current world and system settings configuration',
|
|
90
|
-
mimeType: 'application/json',
|
|
91
|
-
},
|
|
92
|
-
];
|
|
93
|
-
//# sourceMappingURL=index.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/resources/index.ts"],"names":[],"mappings":"AAEA,MAAM,CAAC,MAAM,mBAAmB,GAAe;IAC7C;QACE,GAAG,EAAE,sBAAsB;QAC3B,IAAI,EAAE,mBAAmB;QACzB,WAAW,EAAE,0EAA0E;QACvF,QAAQ,EAAE,kBAAkB;KAC7B;IAED;QACE,GAAG,EAAE,wBAAwB;QAC7B,IAAI,EAAE,YAAY;QAClB,WAAW,EAAE,uEAAuE;QACpF,QAAQ,EAAE,kBAAkB;KAC7B;IAED;QACE,GAAG,EAAE,uBAAuB;QAC5B,IAAI,EAAE,WAAW;QACjB,WAAW,EAAE,gEAAgE;QAC7E,QAAQ,EAAE,kBAAkB;KAC7B;IAED;QACE,GAAG,EAAE,wBAAwB;QAC7B,IAAI,EAAE,YAAY;QAClB,WAAW,EAAE,sCAAsC;QACnD,QAAQ,EAAE,kBAAkB;KAC7B;IAED;QACE,GAAG,EAAE,0BAA0B;QAC/B,IAAI,EAAE,iBAAiB;QACvB,WAAW,EAAE,0CAA0C;QACvD,QAAQ,EAAE,kBAAkB;KAC7B;IAED;QACE,GAAG,EAAE,wBAAwB;QAC7B,IAAI,EAAE,QAAQ;QACd,WAAW,EAAE,8BAA8B;QAC3C,QAAQ,EAAE,kBAAkB;KAC7B;IAED;QACE,GAAG,EAAE,yBAAyB;QAC9B,IAAI,EAAE,eAAe;QACrB,WAAW,EAAE,8CAA8C;QAC3D,QAAQ,EAAE,kBAAkB;KAC7B;IAED;QACE,GAAG,EAAE,0BAA0B;QAC/B,IAAI,EAAE,gBAAgB;QACtB,WAAW,EAAE,oDAAoD;QACjE,QAAQ,EAAE,kBAAkB;KAC7B;IAED;QACE,GAAG,EAAE,wBAAwB;QAC7B,IAAI,EAAE,cAAc;QACpB,WAAW,EAAE,4CAA4C;QACzD,QAAQ,EAAE,kBAAkB;KAC7B;IAED;QACE,GAAG,EAAE,uBAAuB;QAC5B,IAAI,EAAE,aAAa;QACnB,WAAW,EAAE,yDAAyD;QACtE,QAAQ,EAAE,kBAAkB;KAC7B;IAED;QACE,GAAG,EAAE,6BAA6B;QAClC,IAAI,EAAE,kBAAkB;QACxB,WAAW,EAAE,4CAA4C;QACzD,QAAQ,EAAE,kBAAkB;KAC7B;IAED;QACE,GAAG,EAAE,+BAA+B;QACpC,IAAI,EAAE,oBAAoB;QAC1B,WAAW,EAAE,uDAAuD;QACpE,QAAQ,EAAE,kBAAkB;KAC7B;IAED;QACE,GAAG,EAAE,4BAA4B;QACjC,IAAI,EAAE,iBAAiB;QACvB,WAAW,EAAE,yDAAyD;QACtE,QAAQ,EAAE,kBAAkB;KAC7B;IAED;QACE,GAAG,EAAE,yBAAyB;QAC9B,IAAI,EAAE,iBAAiB;QACvB,WAAW,EAAE,4DAA4D;QACzE,QAAQ,EAAE,kBAAkB;KAC7B;IAED;QACE,GAAG,EAAE,yBAAyB;QAC9B,IAAI,EAAE,eAAe;QACrB,WAAW,EAAE,iDAAiD;QAC9D,QAAQ,EAAE,kBAAkB;KAC7B;CACF,CAAC"}
|