foundryvtt-mcp 1.0.0 → 1.2.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 +40 -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 +144 -1
- package/dist/foundry/client.d.ts.map +1 -1
- package/dist/foundry/client.js +420 -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 +208 -0
- package/dist/tools/definitions.d.ts.map +1 -1
- package/dist/tools/definitions.js +231 -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/combat-mutations.d.ts +61 -0
- package/dist/tools/handlers/combat-mutations.d.ts.map +1 -0
- package/dist/tools/handlers/combat-mutations.js +116 -0
- package/dist/tools/handlers/combat-mutations.js.map +1 -0
- 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 +60 -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
|
@@ -68,6 +68,40 @@ export const actorTools = [
|
|
|
68
68
|
},
|
|
69
69
|
},
|
|
70
70
|
];
|
|
71
|
+
/**
|
|
72
|
+
* Actor attribute mutation tool definitions (#143)
|
|
73
|
+
*
|
|
74
|
+
* WRITE operations — require FOUNDRY_WRITE_ENABLED=true and an active
|
|
75
|
+
* Socket.IO connection (mutations use the core `modifyDocument` protocol).
|
|
76
|
+
*/
|
|
77
|
+
export const actorMutationTools = [
|
|
78
|
+
{
|
|
79
|
+
name: 'update_actor_attributes',
|
|
80
|
+
description: "Update attributes on an actor's system data. The patch keys are dot-paths into actor.system " +
|
|
81
|
+
'(e.g. "attributes.hp.value", "attributes.hp.temp", "currency.gp", "resources.primary.value", ' +
|
|
82
|
+
'"spells.spell1.value", "attributes.exhaustion"). Returns the post-update value for every patched ' +
|
|
83
|
+
'path. Validates HP <= max + temp, spell slots <= max, and exhaustion within 0-10 (2024) or 0-6 (2014). ' +
|
|
84
|
+
'Requires FOUNDRY_WRITE_ENABLED=true and an active Socket.IO connection.',
|
|
85
|
+
inputSchema: {
|
|
86
|
+
type: 'object',
|
|
87
|
+
properties: {
|
|
88
|
+
actorId: {
|
|
89
|
+
type: 'string',
|
|
90
|
+
description: 'The ID of the actor to update',
|
|
91
|
+
},
|
|
92
|
+
patch: {
|
|
93
|
+
type: 'object',
|
|
94
|
+
description: 'Map of dot-path → value, where each dot-path addresses a field under actor.system ' +
|
|
95
|
+
'(e.g. {"attributes.hp.value": 30, "currency.gp": 12}). Values must be number, string, or boolean.',
|
|
96
|
+
additionalProperties: {
|
|
97
|
+
type: ['number', 'string', 'boolean'],
|
|
98
|
+
},
|
|
99
|
+
},
|
|
100
|
+
},
|
|
101
|
+
required: ['actorId', 'patch'],
|
|
102
|
+
},
|
|
103
|
+
},
|
|
104
|
+
];
|
|
71
105
|
/**
|
|
72
106
|
* Item management tool definitions
|
|
73
107
|
*/
|
|
@@ -99,6 +133,147 @@ export const itemTools = [
|
|
|
99
133
|
},
|
|
100
134
|
},
|
|
101
135
|
];
|
|
136
|
+
/**
|
|
137
|
+
* Compendium search tool definitions (#144)
|
|
138
|
+
*/
|
|
139
|
+
export const compendiumTools = [
|
|
140
|
+
{
|
|
141
|
+
name: 'search_compendium',
|
|
142
|
+
description: 'Search FoundryVTT compendium packs by name and metadata. Searches all enabled compendiums by default; the compendiumId filter scopes to one pack. Requires the REST API module (FOUNDRY_API_KEY).',
|
|
143
|
+
inputSchema: {
|
|
144
|
+
type: 'object',
|
|
145
|
+
properties: {
|
|
146
|
+
query: {
|
|
147
|
+
type: 'string',
|
|
148
|
+
description: 'Search query for compendium entry names',
|
|
149
|
+
},
|
|
150
|
+
filters: {
|
|
151
|
+
type: 'object',
|
|
152
|
+
description: 'Optional metadata filters to narrow the search',
|
|
153
|
+
properties: {
|
|
154
|
+
compendiumId: {
|
|
155
|
+
type: 'string',
|
|
156
|
+
description: 'Scope the search to a single compendium pack',
|
|
157
|
+
},
|
|
158
|
+
packType: {
|
|
159
|
+
type: 'string',
|
|
160
|
+
description: 'Pack document type (Item, Actor, JournalEntry, Macro)',
|
|
161
|
+
},
|
|
162
|
+
itemType: {
|
|
163
|
+
type: 'string',
|
|
164
|
+
description: 'Item type filter (spell, weapon, feat, etc.)',
|
|
165
|
+
},
|
|
166
|
+
spellLevel: {
|
|
167
|
+
type: 'number',
|
|
168
|
+
description: 'Spell level filter',
|
|
169
|
+
},
|
|
170
|
+
source: {
|
|
171
|
+
type: 'string',
|
|
172
|
+
description: 'Source/rules filter (e.g. a sourcebook abbreviation)',
|
|
173
|
+
},
|
|
174
|
+
},
|
|
175
|
+
},
|
|
176
|
+
limit: {
|
|
177
|
+
type: 'number',
|
|
178
|
+
description: 'Maximum number of results per page',
|
|
179
|
+
default: 20,
|
|
180
|
+
},
|
|
181
|
+
cursor: {
|
|
182
|
+
type: 'string',
|
|
183
|
+
description: 'Opaque pagination cursor from a prior result\'s "Next page" cursor; omit for the first page',
|
|
184
|
+
},
|
|
185
|
+
},
|
|
186
|
+
required: ['query'],
|
|
187
|
+
},
|
|
188
|
+
},
|
|
189
|
+
];
|
|
190
|
+
/**
|
|
191
|
+
* Actor item mutation tool definitions (WRITE — require FOUNDRY_WRITE_ENABLED
|
|
192
|
+
* and an active Socket.IO connection; mutations use `modifyDocument`)
|
|
193
|
+
*
|
|
194
|
+
* The canonical mutation target is the D&D 5e v4+ activity schema. Item
|
|
195
|
+
* `system` patches honour JSON-merge-patch semantics on nested paths.
|
|
196
|
+
*/
|
|
197
|
+
export const itemMutationTools = [
|
|
198
|
+
{
|
|
199
|
+
name: 'create_actor_item',
|
|
200
|
+
description: 'Create an item on an actor from an inline item document (requires FOUNDRY_WRITE_ENABLED + active Socket.IO connection). Compendium-source create is not yet supported over Socket.IO (see issue #159). Canonical target: D&D 5e v4+ activity schema.',
|
|
201
|
+
inputSchema: {
|
|
202
|
+
type: 'object',
|
|
203
|
+
properties: {
|
|
204
|
+
actorId: {
|
|
205
|
+
type: 'string',
|
|
206
|
+
description: 'The ID of the actor to add the item to',
|
|
207
|
+
},
|
|
208
|
+
source: {
|
|
209
|
+
type: 'object',
|
|
210
|
+
description: 'Item source: { type: "compendium", compendiumId, itemId } to copy a compendium entry, or { type: "inline", item: { type, name, system } } to create directly',
|
|
211
|
+
properties: {
|
|
212
|
+
type: {
|
|
213
|
+
type: 'string',
|
|
214
|
+
enum: ['compendium', 'inline'],
|
|
215
|
+
description: 'Source kind',
|
|
216
|
+
},
|
|
217
|
+
compendiumId: {
|
|
218
|
+
type: 'string',
|
|
219
|
+
description: 'Compendium pack id (compendium source)',
|
|
220
|
+
},
|
|
221
|
+
itemId: {
|
|
222
|
+
type: 'string',
|
|
223
|
+
description: 'Item id within the compendium pack (compendium source)',
|
|
224
|
+
},
|
|
225
|
+
item: {
|
|
226
|
+
type: 'object',
|
|
227
|
+
description: 'Inline item document with type, name, and system (inline source)',
|
|
228
|
+
},
|
|
229
|
+
},
|
|
230
|
+
required: ['type'],
|
|
231
|
+
},
|
|
232
|
+
},
|
|
233
|
+
required: ['actorId', 'source'],
|
|
234
|
+
},
|
|
235
|
+
},
|
|
236
|
+
{
|
|
237
|
+
name: 'update_actor_item',
|
|
238
|
+
description: "Apply a JSON merge patch to an item's system data on an actor (requires FOUNDRY_WRITE_ENABLED + active Socket.IO connection). Supports nested paths such as activities.{id}.consumption.targets. Canonical target: D&D 5e v4+ activity schema.",
|
|
239
|
+
inputSchema: {
|
|
240
|
+
type: 'object',
|
|
241
|
+
properties: {
|
|
242
|
+
actorId: {
|
|
243
|
+
type: 'string',
|
|
244
|
+
description: 'The ID of the actor that owns the item',
|
|
245
|
+
},
|
|
246
|
+
itemId: {
|
|
247
|
+
type: 'string',
|
|
248
|
+
description: 'The ID of the item to update',
|
|
249
|
+
},
|
|
250
|
+
patch: {
|
|
251
|
+
type: 'object',
|
|
252
|
+
description: 'JSON merge patch applied to item.system; nested paths supported (e.g. activities.{id}.consumption.targets)',
|
|
253
|
+
},
|
|
254
|
+
},
|
|
255
|
+
required: ['actorId', 'itemId', 'patch'],
|
|
256
|
+
},
|
|
257
|
+
},
|
|
258
|
+
{
|
|
259
|
+
name: 'delete_actor_item',
|
|
260
|
+
description: 'Delete an item owned by an actor (requires FOUNDRY_WRITE_ENABLED + active Socket.IO connection). Canonical target: D&D 5e v4+ activity schema.',
|
|
261
|
+
inputSchema: {
|
|
262
|
+
type: 'object',
|
|
263
|
+
properties: {
|
|
264
|
+
actorId: {
|
|
265
|
+
type: 'string',
|
|
266
|
+
description: 'The ID of the actor that owns the item',
|
|
267
|
+
},
|
|
268
|
+
itemId: {
|
|
269
|
+
type: 'string',
|
|
270
|
+
description: 'The ID of the item to delete',
|
|
271
|
+
},
|
|
272
|
+
},
|
|
273
|
+
required: ['actorId', 'itemId'],
|
|
274
|
+
},
|
|
275
|
+
},
|
|
276
|
+
];
|
|
102
277
|
/**
|
|
103
278
|
* Scene management tool definitions
|
|
104
279
|
*/
|
|
@@ -246,7 +421,7 @@ export const diagnosticsTools = [
|
|
|
246
421
|
},
|
|
247
422
|
{
|
|
248
423
|
name: 'diagnose_errors',
|
|
249
|
-
description: '
|
|
424
|
+
description: 'Stub: returns raw logs without analysis. Full diagnostic logic is tracked in #133 and not yet implemented.',
|
|
250
425
|
inputSchema: {
|
|
251
426
|
type: 'object',
|
|
252
427
|
properties: {
|
|
@@ -279,6 +454,57 @@ export const combatTools = [
|
|
|
279
454
|
},
|
|
280
455
|
},
|
|
281
456
|
];
|
|
457
|
+
/**
|
|
458
|
+
* Combat control mutation tool definitions (FR-018)
|
|
459
|
+
*
|
|
460
|
+
* WRITE operations — require FOUNDRY_WRITE_ENABLED=true and an active Socket.IO
|
|
461
|
+
* connection (mutations use the core `modifyDocument` protocol). All operate on
|
|
462
|
+
* the *active* combat; the connected user needs GM/owner permission.
|
|
463
|
+
*/
|
|
464
|
+
export const combatMutationTools = [
|
|
465
|
+
{
|
|
466
|
+
name: 'next_turn',
|
|
467
|
+
description: 'Advance the active combat to the next turn, wrapping to the next round after the last combatant. ' +
|
|
468
|
+
'Does not yet skip defeated combatants. ' +
|
|
469
|
+
'Requires FOUNDRY_WRITE_ENABLED=true and an active Socket.IO connection.',
|
|
470
|
+
inputSchema: {
|
|
471
|
+
type: 'object',
|
|
472
|
+
properties: {},
|
|
473
|
+
},
|
|
474
|
+
},
|
|
475
|
+
{
|
|
476
|
+
name: 'end_combat',
|
|
477
|
+
description: 'End (delete) the active combat encounter. ' +
|
|
478
|
+
'Requires FOUNDRY_WRITE_ENABLED=true and an active Socket.IO connection.',
|
|
479
|
+
inputSchema: {
|
|
480
|
+
type: 'object',
|
|
481
|
+
properties: {},
|
|
482
|
+
},
|
|
483
|
+
},
|
|
484
|
+
{
|
|
485
|
+
name: 'set_initiative',
|
|
486
|
+
description: "Set a combatant's initiative in the active combat. " +
|
|
487
|
+
'Requires FOUNDRY_WRITE_ENABLED=true and an active Socket.IO connection.',
|
|
488
|
+
inputSchema: {
|
|
489
|
+
type: 'object',
|
|
490
|
+
properties: {
|
|
491
|
+
combatantId: {
|
|
492
|
+
type: 'string',
|
|
493
|
+
description: 'The ID of the combatant whose initiative to set',
|
|
494
|
+
},
|
|
495
|
+
initiative: {
|
|
496
|
+
type: 'number',
|
|
497
|
+
description: 'The initiative value to assign',
|
|
498
|
+
},
|
|
499
|
+
combatId: {
|
|
500
|
+
type: 'string',
|
|
501
|
+
description: 'Optional Combat document ID; defaults to the active combat',
|
|
502
|
+
},
|
|
503
|
+
},
|
|
504
|
+
required: ['combatantId', 'initiative'],
|
|
505
|
+
},
|
|
506
|
+
},
|
|
507
|
+
];
|
|
282
508
|
/**
|
|
283
509
|
* Chat message tool definitions
|
|
284
510
|
*/
|
|
@@ -398,9 +624,13 @@ export function getAllTools() {
|
|
|
398
624
|
return [
|
|
399
625
|
...diceTools,
|
|
400
626
|
...actorTools,
|
|
627
|
+
...actorMutationTools,
|
|
401
628
|
...itemTools,
|
|
629
|
+
...compendiumTools,
|
|
630
|
+
...itemMutationTools,
|
|
402
631
|
...sceneTools,
|
|
403
632
|
...combatTools,
|
|
633
|
+
...combatMutationTools,
|
|
404
634
|
...chatTools,
|
|
405
635
|
...userTools,
|
|
406
636
|
...journalTools,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"definitions.js","sourceRoot":"","sources":["../../src/tools/definitions.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"definitions.js","sourceRoot":"","sources":["../../src/tools/definitions.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @fileoverview Actor attribute mutation tool handlers (#143)
|
|
3
|
+
*
|
|
4
|
+
* Handles patching attributes on an actor's `system` object via dot-paths.
|
|
5
|
+
* WRITE operation — requires FOUNDRY_WRITE_ENABLED=true and an active Socket.IO
|
|
6
|
+
* connection (mutations use the core `modifyDocument` protocol).
|
|
7
|
+
*/
|
|
8
|
+
import type { AttributePatch, FoundryClient } from '../../foundry/client.js';
|
|
9
|
+
/**
|
|
10
|
+
* Handles actor attribute update requests.
|
|
11
|
+
*
|
|
12
|
+
* `patch` keys are dot-paths into the actor's `system` object — e.g.
|
|
13
|
+
* `attributes.hp.value`, `attributes.hp.temp`, `currency.gp`,
|
|
14
|
+
* `resources.primary.value`, `spells.spell1.value`, `attributes.exhaustion`.
|
|
15
|
+
* The post-update value of every patched path is echoed back.
|
|
16
|
+
*/
|
|
17
|
+
export declare function handleUpdateActorAttribute(args: {
|
|
18
|
+
actorId: string;
|
|
19
|
+
patch: AttributePatch;
|
|
20
|
+
}, foundryClient: FoundryClient): Promise<{
|
|
21
|
+
content: {
|
|
22
|
+
type: string;
|
|
23
|
+
text: string;
|
|
24
|
+
}[];
|
|
25
|
+
}>;
|
|
26
|
+
//# sourceMappingURL=actor-mutations.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"actor-mutations.d.ts","sourceRoot":"","sources":["../../../src/tools/handlers/actor-mutations.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAGH,OAAO,KAAK,EAAE,cAAc,EAAE,aAAa,EAAE,MAAM,yBAAyB,CAAC;AAG7E;;;;;;;GAOG;AACH,wBAAsB,0BAA0B,CAC9C,IAAI,EAAE;IACJ,OAAO,EAAE,MAAM,CAAC;IAChB,KAAK,EAAE,cAAc,CAAC;CACvB,EACD,aAAa,EAAE,aAAa;;;;;GAwC7B"}
|
|
@@ -0,0 +1,49 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @fileoverview Actor attribute mutation tool handlers (#143)
|
|
3
|
+
*
|
|
4
|
+
* Handles patching attributes on an actor's `system` object via dot-paths.
|
|
5
|
+
* WRITE operation — requires FOUNDRY_WRITE_ENABLED=true and an active Socket.IO
|
|
6
|
+
* connection (mutations use the core `modifyDocument` protocol).
|
|
7
|
+
*/
|
|
8
|
+
import { ErrorCode, McpError } from '@modelcontextprotocol/sdk/types.js';
|
|
9
|
+
import { withToolError } from './utils.js';
|
|
10
|
+
/**
|
|
11
|
+
* Handles actor attribute update requests.
|
|
12
|
+
*
|
|
13
|
+
* `patch` keys are dot-paths into the actor's `system` object — e.g.
|
|
14
|
+
* `attributes.hp.value`, `attributes.hp.temp`, `currency.gp`,
|
|
15
|
+
* `resources.primary.value`, `spells.spell1.value`, `attributes.exhaustion`.
|
|
16
|
+
* The post-update value of every patched path is echoed back.
|
|
17
|
+
*/
|
|
18
|
+
export async function handleUpdateActorAttribute(args, foundryClient) {
|
|
19
|
+
const { actorId, patch } = args;
|
|
20
|
+
if (!actorId || typeof actorId !== 'string') {
|
|
21
|
+
throw new McpError(ErrorCode.InvalidParams, 'actorId is required and must be a string');
|
|
22
|
+
}
|
|
23
|
+
if (patch === null ||
|
|
24
|
+
typeof patch !== 'object' ||
|
|
25
|
+
Array.isArray(patch) ||
|
|
26
|
+
Object.keys(patch).length === 0) {
|
|
27
|
+
throw new McpError(ErrorCode.InvalidParams, 'patch is required and must be a non-empty object of dot-path attributes');
|
|
28
|
+
}
|
|
29
|
+
return withToolError('update actor attributes', async () => {
|
|
30
|
+
const result = await foundryClient.updateActorAttribute(actorId, patch);
|
|
31
|
+
const updatedList = Object.entries(result.updatedAttributes)
|
|
32
|
+
.map(([path, value]) => `- **${path}** → ${String(value)}`)
|
|
33
|
+
.join('\n');
|
|
34
|
+
return {
|
|
35
|
+
content: [
|
|
36
|
+
{
|
|
37
|
+
type: 'text',
|
|
38
|
+
text: `⚔️ **Actor Attributes Updated**
|
|
39
|
+
**Actor ID:** ${actorId}
|
|
40
|
+
**Status:** ${result.success ? 'Success' : 'Failed'}
|
|
41
|
+
|
|
42
|
+
**Updated attributes** (dot-paths into actor.system):
|
|
43
|
+
${updatedList}`,
|
|
44
|
+
},
|
|
45
|
+
],
|
|
46
|
+
};
|
|
47
|
+
});
|
|
48
|
+
}
|
|
49
|
+
//# sourceMappingURL=actor-mutations.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"actor-mutations.js","sourceRoot":"","sources":["../../../src/tools/handlers/actor-mutations.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,EAAE,SAAS,EAAE,QAAQ,EAAE,MAAM,oCAAoC,CAAC;AAEzE,OAAO,EAAE,aAAa,EAAE,MAAM,YAAY,CAAC;AAE3C;;;;;;;GAOG;AACH,MAAM,CAAC,KAAK,UAAU,0BAA0B,CAC9C,IAGC,EACD,aAA4B;IAE5B,MAAM,EAAE,OAAO,EAAE,KAAK,EAAE,GAAG,IAAI,CAAC;IAEhC,IAAI,CAAC,OAAO,IAAI,OAAO,OAAO,KAAK,QAAQ,EAAE,CAAC;QAC5C,MAAM,IAAI,QAAQ,CAAC,SAAS,CAAC,aAAa,EAAE,0CAA0C,CAAC,CAAC;IAC1F,CAAC;IACD,IACE,KAAK,KAAK,IAAI;QACd,OAAO,KAAK,KAAK,QAAQ;QACzB,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC;QACpB,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,MAAM,KAAK,CAAC,EAC/B,CAAC;QACD,MAAM,IAAI,QAAQ,CAChB,SAAS,CAAC,aAAa,EACvB,yEAAyE,CAC1E,CAAC;IACJ,CAAC;IAED,OAAO,aAAa,CAAC,yBAAyB,EAAE,KAAK,IAAI,EAAE;QACzD,MAAM,MAAM,GAAG,MAAM,aAAa,CAAC,oBAAoB,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC;QAExE,MAAM,WAAW,GAAG,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,iBAAiB,CAAC;aACzD,GAAG,CAAC,CAAC,CAAC,IAAI,EAAE,KAAK,CAAC,EAAE,EAAE,CAAC,OAAO,IAAI,QAAQ,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC;aAC1D,IAAI,CAAC,IAAI,CAAC,CAAC;QAEd,OAAO;YACL,OAAO,EAAE;gBACP;oBACE,IAAI,EAAE,MAAM;oBACZ,IAAI,EAAE;gBACA,OAAO;cACT,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,QAAQ;;;EAGjD,WAAW,EAAE;iBACN;aACF;SACF,CAAC;IACJ,CAAC,CAAC,CAAC;AACL,CAAC"}
|
|
@@ -4,7 +4,7 @@
|
|
|
4
4
|
import { withToolError } from './utils.js';
|
|
5
5
|
export async function handleGetChatMessages(args, foundryClient) {
|
|
6
6
|
return withToolError('get chat messages', async () => {
|
|
7
|
-
const limit = args.limit
|
|
7
|
+
const limit = Math.min(args.limit ?? 20, 100);
|
|
8
8
|
const messages = foundryClient.getChatMessages(limit);
|
|
9
9
|
if (messages.length === 0) {
|
|
10
10
|
return {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"chat.js","sourceRoot":"","sources":["../../../src/tools/handlers/chat.ts"],"names":[],"mappings":"AAAA;;GAEG;AAGH,OAAO,EAAE,aAAa,EAAE,MAAM,YAAY,CAAC;AAE3C,MAAM,CAAC,KAAK,UAAU,qBAAqB,CACzC,IAAwB,EACxB,aAA4B;IAE5B,OAAO,aAAa,CAAC,mBAAmB,EAAE,KAAK,IAAI,EAAE;QACnD,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,IAAI,EAAE,CAAC;
|
|
1
|
+
{"version":3,"file":"chat.js","sourceRoot":"","sources":["../../../src/tools/handlers/chat.ts"],"names":[],"mappings":"AAAA;;GAEG;AAGH,OAAO,EAAE,aAAa,EAAE,MAAM,YAAY,CAAC;AAE3C,MAAM,CAAC,KAAK,UAAU,qBAAqB,CACzC,IAAwB,EACxB,aAA4B;IAE5B,OAAO,aAAa,CAAC,mBAAmB,EAAE,KAAK,IAAI,EAAE;QACnD,MAAM,KAAK,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,KAAK,IAAI,EAAE,EAAE,GAAG,CAAC,CAAC;QAC9C,MAAM,QAAQ,GAAG,aAAa,CAAC,eAAe,CAAC,KAAK,CAAC,CAAC;QAEtD,IAAI,QAAQ,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YAC1B,OAAO;gBACL,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,yBAAyB,EAAE,CAAC;aAC7D,CAAC;QACJ,CAAC;QAED,oCAAoC;QACpC,MAAM,EAAE,KAAK,EAAE,GAAG,aAAa,CAAC,QAAQ,EAAE,CAAC;QAC3C,MAAM,OAAO,GAAG,IAAI,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAE3D,MAAM,SAAS,GAAG,QAAQ;aACvB,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE;YACT,MAAM,OAAO,GAAG,CAAC,CAAC,OAAO,EAAE,KAAK,IAAI,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,SAAS,CAAC;YACrE,MAAM,IAAI,GAAG,IAAI,IAAI,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,kBAAkB,EAAE,CAAC;YACxD,MAAM,OAAO,GAAG,CAAC,CAAC,OAAO;iBACtB,OAAO,CAAC,UAAU,EAAE,EAAE,CAAC;iBACvB,IAAI,EAAE;iBACN,KAAK,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC;YACjB,OAAO,IAAI,IAAI,OAAO,OAAO,OAAO,OAAO,EAAE,CAAC;QAChD,CAAC,CAAC;aACD,IAAI,CAAC,IAAI,CAAC,CAAC;QAEd,OAAO;YACL,OAAO,EAAE;gBACP;oBACE,IAAI,EAAE,MAAM;oBACZ,IAAI,EAAE,6BAA6B,QAAQ,CAAC,MAAM,QAAQ,SAAS,EAAE;iBACtE;aACF;SACF,CAAC;IACJ,CAAC,CAAC,CAAC;AACL,CAAC"}
|
|
@@ -0,0 +1,61 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @fileoverview Combat control mutation tool handlers (FR-018)
|
|
3
|
+
*
|
|
4
|
+
* Provides GM-gated combat-control tools that operate on the *active* combat:
|
|
5
|
+
* advancing the turn, ending the encounter, and setting a combatant's
|
|
6
|
+
* initiative. All are WRITE operations — they require FOUNDRY_WRITE_ENABLED=true
|
|
7
|
+
* and an active Socket.IO connection (mutations use the core `modifyDocument`
|
|
8
|
+
* protocol), and the connected user needs GM/owner permission.
|
|
9
|
+
*/
|
|
10
|
+
import type { FoundryClient } from '../../foundry/client.js';
|
|
11
|
+
import type { WorldCombat } from '../../foundry/types.js';
|
|
12
|
+
/**
|
|
13
|
+
* Computes the next `{ turn, round }` for an active combat.
|
|
14
|
+
*
|
|
15
|
+
* Advances to the next combatant in order; wrapping past the last combatant
|
|
16
|
+
* rolls over to turn 0 of the next round.
|
|
17
|
+
*
|
|
18
|
+
* Known limitation: this does NOT skip `defeated` combatants the way Foundry's
|
|
19
|
+
* `Combat#nextTurn` does with `skipDefeated`. Turn order is treated as the raw
|
|
20
|
+
* combatant array order. Defeated-skipping is deferred to a follow-up.
|
|
21
|
+
*
|
|
22
|
+
* @throws if the combat has no combatants (cannot advance an empty encounter).
|
|
23
|
+
*/
|
|
24
|
+
export declare function computeNextTurn(combat: WorldCombat): {
|
|
25
|
+
turn: number;
|
|
26
|
+
round: number;
|
|
27
|
+
};
|
|
28
|
+
/**
|
|
29
|
+
* Advances the active combat to the next turn (FR-018).
|
|
30
|
+
*/
|
|
31
|
+
export declare function handleNextTurn(_args: Record<string, unknown>, foundryClient: FoundryClient): Promise<{
|
|
32
|
+
content: {
|
|
33
|
+
type: string;
|
|
34
|
+
text: string;
|
|
35
|
+
}[];
|
|
36
|
+
}>;
|
|
37
|
+
/**
|
|
38
|
+
* Ends (deletes) the active combat encounter (FR-018).
|
|
39
|
+
*/
|
|
40
|
+
export declare function handleEndCombat(_args: Record<string, unknown>, foundryClient: FoundryClient): Promise<{
|
|
41
|
+
content: {
|
|
42
|
+
type: string;
|
|
43
|
+
text: string;
|
|
44
|
+
}[];
|
|
45
|
+
}>;
|
|
46
|
+
/**
|
|
47
|
+
* Sets a combatant's initiative in the active combat (FR-018).
|
|
48
|
+
*
|
|
49
|
+
* `combatId` defaults to the active combat when omitted.
|
|
50
|
+
*/
|
|
51
|
+
export declare function handleSetInitiative(args: {
|
|
52
|
+
combatantId: string;
|
|
53
|
+
initiative: number;
|
|
54
|
+
combatId?: string;
|
|
55
|
+
}, foundryClient: FoundryClient): Promise<{
|
|
56
|
+
content: {
|
|
57
|
+
type: string;
|
|
58
|
+
text: string;
|
|
59
|
+
}[];
|
|
60
|
+
}>;
|
|
61
|
+
//# sourceMappingURL=combat-mutations.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"combat-mutations.d.ts","sourceRoot":"","sources":["../../../src/tools/handlers/combat-mutations.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAGH,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,yBAAyB,CAAC;AAC7D,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,wBAAwB,CAAC;AAG1D;;;;;;;;;;;GAWG;AACH,wBAAgB,eAAe,CAAC,MAAM,EAAE,WAAW,GAAG;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,MAAM,CAAA;CAAE,CAWpF;AAED;;GAEG;AACH,wBAAsB,cAAc,CAAC,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,aAAa,EAAE,aAAa;;;;;GAyBhG;AAED;;GAEG;AACH,wBAAsB,eAAe,CACnC,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAC9B,aAAa,EAAE,aAAa;;;;;GAqB7B;AAED;;;;GAIG;AACH,wBAAsB,mBAAmB,CACvC,IAAI,EAAE;IAAE,WAAW,EAAE,MAAM,CAAC;IAAC,UAAU,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,EAAE,MAAM,CAAA;CAAE,EACpE,aAAa,EAAE,aAAa;;;;;GAqC7B"}
|
|
@@ -0,0 +1,116 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @fileoverview Combat control mutation tool handlers (FR-018)
|
|
3
|
+
*
|
|
4
|
+
* Provides GM-gated combat-control tools that operate on the *active* combat:
|
|
5
|
+
* advancing the turn, ending the encounter, and setting a combatant's
|
|
6
|
+
* initiative. All are WRITE operations — they require FOUNDRY_WRITE_ENABLED=true
|
|
7
|
+
* and an active Socket.IO connection (mutations use the core `modifyDocument`
|
|
8
|
+
* protocol), and the connected user needs GM/owner permission.
|
|
9
|
+
*/
|
|
10
|
+
import { ErrorCode, McpError } from '@modelcontextprotocol/sdk/types.js';
|
|
11
|
+
import { withToolError } from './utils.js';
|
|
12
|
+
/**
|
|
13
|
+
* Computes the next `{ turn, round }` for an active combat.
|
|
14
|
+
*
|
|
15
|
+
* Advances to the next combatant in order; wrapping past the last combatant
|
|
16
|
+
* rolls over to turn 0 of the next round.
|
|
17
|
+
*
|
|
18
|
+
* Known limitation: this does NOT skip `defeated` combatants the way Foundry's
|
|
19
|
+
* `Combat#nextTurn` does with `skipDefeated`. Turn order is treated as the raw
|
|
20
|
+
* combatant array order. Defeated-skipping is deferred to a follow-up.
|
|
21
|
+
*
|
|
22
|
+
* @throws if the combat has no combatants (cannot advance an empty encounter).
|
|
23
|
+
*/
|
|
24
|
+
export function computeNextTurn(combat) {
|
|
25
|
+
const n = combat.combatants.length;
|
|
26
|
+
if (n === 0) {
|
|
27
|
+
throw new Error('Cannot advance turn: active combat has no combatants');
|
|
28
|
+
}
|
|
29
|
+
const cur = combat.turn ?? 0;
|
|
30
|
+
const next = cur + 1;
|
|
31
|
+
if (next >= n) {
|
|
32
|
+
return { turn: 0, round: combat.round + 1 };
|
|
33
|
+
}
|
|
34
|
+
return { turn: next, round: combat.round };
|
|
35
|
+
}
|
|
36
|
+
/**
|
|
37
|
+
* Advances the active combat to the next turn (FR-018).
|
|
38
|
+
*/
|
|
39
|
+
export async function handleNextTurn(_args, foundryClient) {
|
|
40
|
+
const combat = foundryClient.getCombatState();
|
|
41
|
+
if (!combat) {
|
|
42
|
+
throw new McpError(ErrorCode.InvalidRequest, 'No active combat to advance.');
|
|
43
|
+
}
|
|
44
|
+
return withToolError('advance combat turn', async () => {
|
|
45
|
+
const { turn, round } = computeNextTurn(combat);
|
|
46
|
+
await foundryClient.updateCombat(combat._id, { turn, round });
|
|
47
|
+
const current = combat.combatants[turn];
|
|
48
|
+
const currentName = current ? current.name : 'unknown';
|
|
49
|
+
return {
|
|
50
|
+
content: [
|
|
51
|
+
{
|
|
52
|
+
type: 'text',
|
|
53
|
+
text: `⚔️ **Combat Turn Advanced**
|
|
54
|
+
**Round:** ${round}
|
|
55
|
+
**Turn:** ${turn + 1} of ${combat.combatants.length}
|
|
56
|
+
**Now acting:** ${currentName}`,
|
|
57
|
+
},
|
|
58
|
+
],
|
|
59
|
+
};
|
|
60
|
+
});
|
|
61
|
+
}
|
|
62
|
+
/**
|
|
63
|
+
* Ends (deletes) the active combat encounter (FR-018).
|
|
64
|
+
*/
|
|
65
|
+
export async function handleEndCombat(_args, foundryClient) {
|
|
66
|
+
const combat = foundryClient.getCombatState();
|
|
67
|
+
if (!combat) {
|
|
68
|
+
throw new McpError(ErrorCode.InvalidRequest, 'No active combat to end.');
|
|
69
|
+
}
|
|
70
|
+
return withToolError('end combat', async () => {
|
|
71
|
+
await foundryClient.endCombat(combat._id);
|
|
72
|
+
return {
|
|
73
|
+
content: [
|
|
74
|
+
{
|
|
75
|
+
type: 'text',
|
|
76
|
+
text: `⚔️ **Combat Ended**
|
|
77
|
+
**Encounter:** ${combat._id}
|
|
78
|
+
The active combat encounter has been removed.`,
|
|
79
|
+
},
|
|
80
|
+
],
|
|
81
|
+
};
|
|
82
|
+
});
|
|
83
|
+
}
|
|
84
|
+
/**
|
|
85
|
+
* Sets a combatant's initiative in the active combat (FR-018).
|
|
86
|
+
*
|
|
87
|
+
* `combatId` defaults to the active combat when omitted.
|
|
88
|
+
*/
|
|
89
|
+
export async function handleSetInitiative(args, foundryClient) {
|
|
90
|
+
const { combatantId, initiative, combatId } = args;
|
|
91
|
+
if (!combatantId || typeof combatantId !== 'string') {
|
|
92
|
+
throw new McpError(ErrorCode.InvalidParams, 'combatantId is required and must be a string');
|
|
93
|
+
}
|
|
94
|
+
if (typeof initiative !== 'number' || !Number.isFinite(initiative)) {
|
|
95
|
+
throw new McpError(ErrorCode.InvalidParams, 'initiative is required and must be a finite number');
|
|
96
|
+
}
|
|
97
|
+
const resolvedCombatId = combatId ?? foundryClient.getCombatState()?._id;
|
|
98
|
+
if (!resolvedCombatId) {
|
|
99
|
+
throw new McpError(ErrorCode.InvalidRequest, 'No active combat and no combatId provided; cannot set initiative.');
|
|
100
|
+
}
|
|
101
|
+
return withToolError('set combatant initiative', async () => {
|
|
102
|
+
await foundryClient.setCombatantInitiative(resolvedCombatId, combatantId, initiative);
|
|
103
|
+
return {
|
|
104
|
+
content: [
|
|
105
|
+
{
|
|
106
|
+
type: 'text',
|
|
107
|
+
text: `⚔️ **Initiative Set**
|
|
108
|
+
**Combat:** ${resolvedCombatId}
|
|
109
|
+
**Combatant:** ${combatantId}
|
|
110
|
+
**Initiative:** ${initiative}`,
|
|
111
|
+
},
|
|
112
|
+
],
|
|
113
|
+
};
|
|
114
|
+
});
|
|
115
|
+
}
|
|
116
|
+
//# sourceMappingURL=combat-mutations.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"combat-mutations.js","sourceRoot":"","sources":["../../../src/tools/handlers/combat-mutations.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @fileoverview Compendium search tool handlers
|
|
3
|
+
*
|
|
4
|
+
* Read-only search across FoundryVTT compendium packs by name and metadata.
|
|
5
|
+
* Compendium data is not part of the cached worldData snapshot, so this tool
|
|
6
|
+
* requires the REST API module (FOUNDRY_API_KEY). Without it the search
|
|
7
|
+
* returns gracefully empty and the handler explains why.
|
|
8
|
+
*/
|
|
9
|
+
import type { FoundryClient } from '../../foundry/client.js';
|
|
10
|
+
interface CompendiumFilters {
|
|
11
|
+
compendiumId?: string;
|
|
12
|
+
packType?: string;
|
|
13
|
+
itemType?: string;
|
|
14
|
+
spellLevel?: number;
|
|
15
|
+
source?: string;
|
|
16
|
+
}
|
|
17
|
+
/**
|
|
18
|
+
* Handles compendium search requests.
|
|
19
|
+
*
|
|
20
|
+
* Searches across all enabled compendiums by default; the `compendiumId`
|
|
21
|
+
* filter scopes the search to a single pack. Returns enough metadata
|
|
22
|
+
* (compendiumId, itemId, type, system.source.rules) to disambiguate
|
|
23
|
+
* near-identical entries across rule revisions.
|
|
24
|
+
*/
|
|
25
|
+
export declare function handleSearchCompendium(args: {
|
|
26
|
+
query: string;
|
|
27
|
+
filters?: CompendiumFilters;
|
|
28
|
+
limit?: number;
|
|
29
|
+
cursor?: string;
|
|
30
|
+
}, foundryClient: FoundryClient): Promise<{
|
|
31
|
+
content: {
|
|
32
|
+
type: string;
|
|
33
|
+
text: string;
|
|
34
|
+
}[];
|
|
35
|
+
}>;
|
|
36
|
+
export {};
|
|
37
|
+
//# sourceMappingURL=compendium.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"compendium.d.ts","sourceRoot":"","sources":["../../../src/tools/handlers/compendium.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAGH,OAAO,KAAK,EAA0B,aAAa,EAAE,MAAM,yBAAyB,CAAC;AAGrF,UAAU,iBAAiB;IACzB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAED;;;;;;;GAOG;AACH,wBAAsB,sBAAsB,CAC1C,IAAI,EAAE;IACJ,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,CAAC,EAAE,iBAAiB,CAAC;IAC5B,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB,EACD,aAAa,EAAE,aAAa;;;;;GAwE7B"}
|