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.
Files changed (56) hide show
  1. package/README.md +25 -3
  2. package/dist/character/manager.js +1 -1
  3. package/dist/character/manager.js.map +1 -1
  4. package/dist/combat/manager.d.ts +1 -2
  5. package/dist/combat/manager.d.ts.map +1 -1
  6. package/dist/combat/manager.js +3 -5
  7. package/dist/combat/manager.js.map +1 -1
  8. package/dist/config/index.d.ts +2 -0
  9. package/dist/config/index.d.ts.map +1 -1
  10. package/dist/config/index.js +4 -0
  11. package/dist/config/index.js.map +1 -1
  12. package/dist/foundry/auth.d.ts.map +1 -1
  13. package/dist/foundry/auth.js +5 -4
  14. package/dist/foundry/auth.js.map +1 -1
  15. package/dist/foundry/client.d.ts +112 -1
  16. package/dist/foundry/client.d.ts.map +1 -1
  17. package/dist/foundry/client.js +353 -10
  18. package/dist/foundry/client.js.map +1 -1
  19. package/dist/foundry/types.d.ts +76 -16
  20. package/dist/foundry/types.d.ts.map +1 -1
  21. package/dist/index.js +26 -2
  22. package/dist/index.js.map +1 -1
  23. package/dist/tools/definitions.d.ts +167 -0
  24. package/dist/tools/definitions.d.ts.map +1 -1
  25. package/dist/tools/definitions.js +179 -1
  26. package/dist/tools/definitions.js.map +1 -1
  27. package/dist/tools/handlers/actor-mutations.d.ts +26 -0
  28. package/dist/tools/handlers/actor-mutations.d.ts.map +1 -0
  29. package/dist/tools/handlers/actor-mutations.js +49 -0
  30. package/dist/tools/handlers/actor-mutations.js.map +1 -0
  31. package/dist/tools/handlers/chat.js +1 -1
  32. package/dist/tools/handlers/chat.js.map +1 -1
  33. package/dist/tools/handlers/compendium.d.ts +37 -0
  34. package/dist/tools/handlers/compendium.d.ts.map +1 -0
  35. package/dist/tools/handlers/compendium.js +83 -0
  36. package/dist/tools/handlers/compendium.js.map +1 -0
  37. package/dist/tools/handlers/diagnostics.d.ts +6 -1
  38. package/dist/tools/handlers/diagnostics.d.ts.map +1 -1
  39. package/dist/tools/handlers/diagnostics.js +52 -11
  40. package/dist/tools/handlers/diagnostics.js.map +1 -1
  41. package/dist/tools/handlers/item-mutations.d.ts +51 -0
  42. package/dist/tools/handlers/item-mutations.d.ts.map +1 -0
  43. package/dist/tools/handlers/item-mutations.js +118 -0
  44. package/dist/tools/handlers/item-mutations.js.map +1 -0
  45. package/dist/tools/router.d.ts.map +1 -1
  46. package/dist/tools/router.js +46 -0
  47. package/dist/tools/router.js.map +1 -1
  48. package/dist/utils/logger.d.ts +0 -1
  49. package/dist/utils/logger.d.ts.map +1 -1
  50. package/dist/utils/logger.js +0 -1
  51. package/dist/utils/logger.js.map +1 -1
  52. package/package.json +30 -14
  53. package/dist/resources/index.d.ts +0 -3
  54. package/dist/resources/index.d.ts.map +0 -1
  55. package/dist/resources/index.js +0 -93
  56. 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: 'Diagnose and analyze system errors',
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: {
@@ -398,7 +573,10 @@ export function getAllTools() {
398
573
  return [
399
574
  ...diceTools,
400
575
  ...actorTools,
576
+ ...actorMutationTools,
401
577
  ...itemTools,
578
+ ...compendiumTools,
579
+ ...itemMutationTools,
402
580
  ...sceneTools,
403
581
  ...combatTools,
404
582
  ...chatTools,
@@ -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 || 20;
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;QAC/B,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"}
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,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"}
@@ -0,0 +1,83 @@
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 { ErrorCode, McpError } from '@modelcontextprotocol/sdk/types.js';
10
+ import { withToolError } from './utils.js';
11
+ /**
12
+ * Handles compendium search requests.
13
+ *
14
+ * Searches across all enabled compendiums by default; the `compendiumId`
15
+ * filter scopes the search to a single pack. Returns enough metadata
16
+ * (compendiumId, itemId, type, system.source.rules) to disambiguate
17
+ * near-identical entries across rule revisions.
18
+ */
19
+ export async function handleSearchCompendium(args, foundryClient) {
20
+ const { query, filters, limit = 20, cursor } = args;
21
+ if (!query || typeof query !== 'string') {
22
+ throw new McpError(ErrorCode.InvalidParams, 'query is required and must be a string');
23
+ }
24
+ return withToolError('search compendium', async () => {
25
+ const params = { query, limit };
26
+ if (cursor) {
27
+ params.cursor = cursor;
28
+ }
29
+ if (filters?.compendiumId) {
30
+ params.compendiumId = filters.compendiumId;
31
+ }
32
+ if (filters?.packType) {
33
+ params.packType = filters.packType;
34
+ }
35
+ if (filters?.itemType) {
36
+ params.itemType = filters.itemType;
37
+ }
38
+ if (filters?.spellLevel !== undefined) {
39
+ params.spellLevel = filters.spellLevel;
40
+ }
41
+ if (filters?.source) {
42
+ params.source = filters.source;
43
+ }
44
+ const result = await foundryClient.searchCompendium(params);
45
+ const entryList = result.results
46
+ .map((entry) => {
47
+ const meta = [`pack: ${entry.compendiumId}`, `id: ${entry.itemId}`];
48
+ if (entry.system?.level !== undefined) {
49
+ meta.push(`level ${entry.system.level}`);
50
+ }
51
+ if (entry.system?.school) {
52
+ meta.push(entry.system.school);
53
+ }
54
+ if (entry.system?.source?.rules) {
55
+ meta.push(`rules: ${entry.system.source.rules}`);
56
+ }
57
+ return `- **${entry.name}** (${entry.type}) — ${meta.join(', ')}`;
58
+ })
59
+ .join('\n');
60
+ const restNote = result.restAvailable === false
61
+ ? '\n\n_Note: compendium search requires FOUNDRY_API_KEY (REST API module); returning no results._'
62
+ : '';
63
+ const cursorNote = result.nextCursor
64
+ ? `\n**Next page:** pass cursor \`${result.nextCursor}\` to retrieve more results.`
65
+ : '';
66
+ return {
67
+ content: [
68
+ {
69
+ type: 'text',
70
+ text: `📚 **Compendium Search Results**
71
+ **Query:** ${query}
72
+ **Pack Filter:** ${filters?.compendiumId || 'All enabled compendiums'}
73
+ **Results:** ${result.results.length}/${result.total} total
74
+
75
+ ${entryList || 'No compendium entries found matching the criteria.'}
76
+
77
+ **Page:** ${result.page} | **Limit:** ${result.limit}${cursorNote}${restNote}`,
78
+ },
79
+ ],
80
+ };
81
+ });
82
+ }
83
+ //# sourceMappingURL=compendium.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"compendium.js","sourceRoot":"","sources":["../../../src/tools/handlers/compendium.ts"],"names":[],"mappings":"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"}
@@ -8,10 +8,15 @@ import type { FoundryClient } from '../../foundry/client.js';
8
8
  import type { DiagnosticSystem } from '../../utils/diagnostics.js';
9
9
  /**
10
10
  * Handles recent log retrieval requests
11
+ *
12
+ * Filtering is applied after fetching all logs from the underlying source:
13
+ * - `limit`: clamps result count (default 20, hard cap 1000)
14
+ * - `level`: case-insensitive match against log entry level; unrecognized values are silently ignored
15
+ * - `since`: ISO 8601 timestamp; entries older than this are excluded; unparseable values are silently ignored
11
16
  */
12
17
  export declare function handleGetRecentLogs(args: {
13
18
  limit?: number;
14
- level?: string;
19
+ level?: string | string[];
15
20
  since?: string;
16
21
  }, diagnosticsClient: DiagnosticsClient): Promise<{
17
22
  content: {
@@ -1 +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"}
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;AASnE;;;;;;;GAOG;AACH,wBAAsB,mBAAmB,CACvC,IAAI,EAAE;IACJ,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,KAAK,CAAC,EAAE,MAAM,GAAG,MAAM,EAAE,CAAC;IAC1B,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB,EACD,iBAAiB,EAAE,iBAAiB;;;;;GAqErC;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"}
@@ -5,28 +5,69 @@
5
5
  */
6
6
  import { ErrorCode, McpError } from '@modelcontextprotocol/sdk/types.js';
7
7
  import { withToolError } from './utils.js';
8
+ /** Valid log levels recognized by the tool schema */
9
+ const VALID_LOG_LEVELS = new Set(['debug', 'info', 'warn', 'error', 'log', 'notification']);
10
+ /** Hard upper bound on entries returned, regardless of caller-supplied limit */
11
+ const MAX_LOG_LIMIT = 1000;
8
12
  /**
9
13
  * Handles recent log retrieval requests
14
+ *
15
+ * Filtering is applied after fetching all logs from the underlying source:
16
+ * - `limit`: clamps result count (default 20, hard cap 1000)
17
+ * - `level`: case-insensitive match against log entry level; unrecognized values are silently ignored
18
+ * - `since`: ISO 8601 timestamp; entries older than this are excluded; unparseable values are silently ignored
10
19
  */
11
20
  export async function handleGetRecentLogs(args, diagnosticsClient) {
12
21
  const { limit = 20, level, since } = args;
22
+ // Clamp limit to [1, MAX_LOG_LIMIT]
23
+ const effectiveLimit = Math.min(Math.max(1, limit ?? 20), MAX_LOG_LIMIT);
24
+ // Normalize level filter: resolve to a Set of valid lowercase level strings, or null if none recognized
25
+ let levelFilter = null;
26
+ if (level !== undefined && level !== null) {
27
+ const requested = (Array.isArray(level) ? level : [level])
28
+ .map((l) => l.toLowerCase())
29
+ .filter((l) => VALID_LOG_LEVELS.has(l));
30
+ if (requested.length > 0) {
31
+ levelFilter = new Set(requested);
32
+ }
33
+ // If no recognized levels, levelFilter stays null → all entries pass through
34
+ }
35
+ // Parse since timestamp; ignore if unparseable
36
+ let sinceMs = null;
37
+ if (since !== undefined && since !== null && since !== '') {
38
+ const parsed = Date.parse(since);
39
+ if (!Number.isNaN(parsed)) {
40
+ sinceMs = parsed;
41
+ }
42
+ }
13
43
  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';
44
+ const response = await diagnosticsClient.getRecentLogs();
45
+ let entries = response.logs;
46
+ // Apply level filter
47
+ if (levelFilter !== null) {
48
+ entries = entries.filter((entry) => levelFilter?.has(entry.level.toLowerCase()));
49
+ }
50
+ // Apply since filter
51
+ if (sinceMs !== null) {
52
+ const sinceThreshold = sinceMs;
53
+ entries = entries.filter((entry) => {
54
+ const entryMs = Date.parse(entry.timestamp);
55
+ return !Number.isNaN(entryMs) && entryMs >= sinceThreshold;
56
+ });
57
+ }
58
+ // Apply limit
59
+ entries = entries.slice(0, effectiveLimit);
60
+ const logEntries = entries
61
+ .map((entry) => `[${entry.timestamp}] **${entry.level.toUpperCase()}** ${entry.message}`)
62
+ .join('\n');
63
+ const levelLabel = level ? (Array.isArray(level) ? level.join(', ') : level) : 'All levels';
23
64
  return {
24
65
  content: [
25
66
  {
26
67
  type: 'text',
27
68
  text: `📋 **Recent Log Entries**
28
- **Filter:** ${level || 'All levels'}
29
- **Limit:** ${limit}
69
+ **Filter:** ${levelLabel}
70
+ **Limit:** ${effectiveLimit}
30
71
  **Since:** ${since || 'Beginning'}
31
72
 
32
73
  ${logEntries || 'No log entries found.'}`,
@@ -1 +1 @@
1
- {"version":3,"file":"diagnostics.js","sourceRoot":"","sources":["../../../src/tools/handlers/diagnostics.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"diagnostics.js","sourceRoot":"","sources":["../../../src/tools/handlers/diagnostics.ts"],"names":[],"mappings":"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"}