@mythxengine/mcp-server 0.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 (214) hide show
  1. package/LICENSE +21 -0
  2. package/dist/__tests__/assemble.test.d.ts +2 -0
  3. package/dist/__tests__/assemble.test.d.ts.map +1 -0
  4. package/dist/__tests__/assemble.test.js +81 -0
  5. package/dist/__tests__/assemble.test.js.map +1 -0
  6. package/dist/index.d.ts +10 -0
  7. package/dist/index.d.ts.map +1 -0
  8. package/dist/index.js +38 -0
  9. package/dist/index.js.map +1 -0
  10. package/dist/resources/index.d.ts +9 -0
  11. package/dist/resources/index.d.ts.map +1 -0
  12. package/dist/resources/index.js +202 -0
  13. package/dist/resources/index.js.map +1 -0
  14. package/dist/server.d.ts +41 -0
  15. package/dist/server.d.ts.map +1 -0
  16. package/dist/server.js +91 -0
  17. package/dist/server.js.map +1 -0
  18. package/dist/state/manager.d.ts +88 -0
  19. package/dist/state/manager.d.ts.map +1 -0
  20. package/dist/state/manager.js +308 -0
  21. package/dist/state/manager.js.map +1 -0
  22. package/dist/state/rules.d.ts +30 -0
  23. package/dist/state/rules.d.ts.map +1 -0
  24. package/dist/state/rules.js +61 -0
  25. package/dist/state/rules.js.map +1 -0
  26. package/dist/state/worldpacks.d.ts +43 -0
  27. package/dist/state/worldpacks.d.ts.map +1 -0
  28. package/dist/state/worldpacks.js +125 -0
  29. package/dist/state/worldpacks.js.map +1 -0
  30. package/dist/tools/augmentation/augment.d.ts +15 -0
  31. package/dist/tools/augmentation/augment.d.ts.map +1 -0
  32. package/dist/tools/augmentation/augment.js +512 -0
  33. package/dist/tools/augmentation/augment.js.map +1 -0
  34. package/dist/tools/augmentation/index.d.ts +6 -0
  35. package/dist/tools/augmentation/index.d.ts.map +1 -0
  36. package/dist/tools/augmentation/index.js +7 -0
  37. package/dist/tools/augmentation/index.js.map +1 -0
  38. package/dist/tools/characters.d.ts +26 -0
  39. package/dist/tools/characters.d.ts.map +1 -0
  40. package/dist/tools/characters.js +362 -0
  41. package/dist/tools/characters.js.map +1 -0
  42. package/dist/tools/clocks.d.ts +33 -0
  43. package/dist/tools/clocks.d.ts.map +1 -0
  44. package/dist/tools/clocks.js +438 -0
  45. package/dist/tools/clocks.js.map +1 -0
  46. package/dist/tools/combat.d.ts +38 -0
  47. package/dist/tools/combat.d.ts.map +1 -0
  48. package/dist/tools/combat.js +574 -0
  49. package/dist/tools/combat.js.map +1 -0
  50. package/dist/tools/dice.d.ts +9 -0
  51. package/dist/tools/dice.d.ts.map +1 -0
  52. package/dist/tools/dice.js +287 -0
  53. package/dist/tools/dice.js.map +1 -0
  54. package/dist/tools/encounters.d.ts +21 -0
  55. package/dist/tools/encounters.d.ts.map +1 -0
  56. package/dist/tools/encounters.js +521 -0
  57. package/dist/tools/encounters.js.map +1 -0
  58. package/dist/tools/engagement.d.ts +25 -0
  59. package/dist/tools/engagement.d.ts.map +1 -0
  60. package/dist/tools/engagement.js +491 -0
  61. package/dist/tools/engagement.js.map +1 -0
  62. package/dist/tools/expansion/archetype.d.ts +12 -0
  63. package/dist/tools/expansion/archetype.d.ts.map +1 -0
  64. package/dist/tools/expansion/archetype.js +157 -0
  65. package/dist/tools/expansion/archetype.js.map +1 -0
  66. package/dist/tools/expansion/index.d.ts +12 -0
  67. package/dist/tools/expansion/index.d.ts.map +1 -0
  68. package/dist/tools/expansion/index.js +21 -0
  69. package/dist/tools/expansion/index.js.map +1 -0
  70. package/dist/tools/expansion/location.d.ts +12 -0
  71. package/dist/tools/expansion/location.d.ts.map +1 -0
  72. package/dist/tools/expansion/location.js +149 -0
  73. package/dist/tools/expansion/location.js.map +1 -0
  74. package/dist/tools/expansion/monster.d.ts +12 -0
  75. package/dist/tools/expansion/monster.d.ts.map +1 -0
  76. package/dist/tools/expansion/monster.js +157 -0
  77. package/dist/tools/expansion/monster.js.map +1 -0
  78. package/dist/tools/expansion/npc.d.ts +12 -0
  79. package/dist/tools/expansion/npc.d.ts.map +1 -0
  80. package/dist/tools/expansion/npc.js +153 -0
  81. package/dist/tools/expansion/npc.js.map +1 -0
  82. package/dist/tools/generation/archetypes.d.ts +12 -0
  83. package/dist/tools/generation/archetypes.d.ts.map +1 -0
  84. package/dist/tools/generation/archetypes.js +129 -0
  85. package/dist/tools/generation/archetypes.js.map +1 -0
  86. package/dist/tools/generation/arcs.d.ts +13 -0
  87. package/dist/tools/generation/arcs.d.ts.map +1 -0
  88. package/dist/tools/generation/arcs.js +186 -0
  89. package/dist/tools/generation/arcs.js.map +1 -0
  90. package/dist/tools/generation/encounters.d.ts +12 -0
  91. package/dist/tools/generation/encounters.d.ts.map +1 -0
  92. package/dist/tools/generation/encounters.js +169 -0
  93. package/dist/tools/generation/encounters.js.map +1 -0
  94. package/dist/tools/generation/index.d.ts +19 -0
  95. package/dist/tools/generation/index.d.ts.map +1 -0
  96. package/dist/tools/generation/index.js +42 -0
  97. package/dist/tools/generation/index.js.map +1 -0
  98. package/dist/tools/generation/items.d.ts +12 -0
  99. package/dist/tools/generation/items.d.ts.map +1 -0
  100. package/dist/tools/generation/items.js +149 -0
  101. package/dist/tools/generation/items.js.map +1 -0
  102. package/dist/tools/generation/locations.d.ts +12 -0
  103. package/dist/tools/generation/locations.d.ts.map +1 -0
  104. package/dist/tools/generation/locations.js +131 -0
  105. package/dist/tools/generation/locations.js.map +1 -0
  106. package/dist/tools/generation/monsters.d.ts +12 -0
  107. package/dist/tools/generation/monsters.d.ts.map +1 -0
  108. package/dist/tools/generation/monsters.js +154 -0
  109. package/dist/tools/generation/monsters.js.map +1 -0
  110. package/dist/tools/generation/narrative.d.ts +12 -0
  111. package/dist/tools/generation/narrative.d.ts.map +1 -0
  112. package/dist/tools/generation/narrative.js +129 -0
  113. package/dist/tools/generation/narrative.js.map +1 -0
  114. package/dist/tools/generation/npcs.d.ts +12 -0
  115. package/dist/tools/generation/npcs.d.ts.map +1 -0
  116. package/dist/tools/generation/npcs.js +136 -0
  117. package/dist/tools/generation/npcs.js.map +1 -0
  118. package/dist/tools/generation/resume.d.ts +12 -0
  119. package/dist/tools/generation/resume.d.ts.map +1 -0
  120. package/dist/tools/generation/resume.js +288 -0
  121. package/dist/tools/generation/resume.js.map +1 -0
  122. package/dist/tools/generation/rules-prompt.d.ts +23 -0
  123. package/dist/tools/generation/rules-prompt.d.ts.map +1 -0
  124. package/dist/tools/generation/rules-prompt.js +209 -0
  125. package/dist/tools/generation/rules-prompt.js.map +1 -0
  126. package/dist/tools/generation/seed.d.ts +12 -0
  127. package/dist/tools/generation/seed.d.ts.map +1 -0
  128. package/dist/tools/generation/seed.js +171 -0
  129. package/dist/tools/generation/seed.js.map +1 -0
  130. package/dist/tools/generation/situations.d.ts +13 -0
  131. package/dist/tools/generation/situations.d.ts.map +1 -0
  132. package/dist/tools/generation/situations.js +247 -0
  133. package/dist/tools/generation/situations.js.map +1 -0
  134. package/dist/tools/gm-guidance.d.ts +13 -0
  135. package/dist/tools/gm-guidance.d.ts.map +1 -0
  136. package/dist/tools/gm-guidance.js +395 -0
  137. package/dist/tools/gm-guidance.js.map +1 -0
  138. package/dist/tools/index.d.ts +33 -0
  139. package/dist/tools/index.d.ts.map +1 -0
  140. package/dist/tools/index.js +80 -0
  141. package/dist/tools/index.js.map +1 -0
  142. package/dist/tools/investigation.d.ts +41 -0
  143. package/dist/tools/investigation.d.ts.map +1 -0
  144. package/dist/tools/investigation.js +586 -0
  145. package/dist/tools/investigation.js.map +1 -0
  146. package/dist/tools/leads.d.ts +29 -0
  147. package/dist/tools/leads.d.ts.map +1 -0
  148. package/dist/tools/leads.js +460 -0
  149. package/dist/tools/leads.js.map +1 -0
  150. package/dist/tools/players.d.ts +30 -0
  151. package/dist/tools/players.d.ts.map +1 -0
  152. package/dist/tools/players.js +448 -0
  153. package/dist/tools/players.js.map +1 -0
  154. package/dist/tools/portable-clues.d.ts +29 -0
  155. package/dist/tools/portable-clues.d.ts.map +1 -0
  156. package/dist/tools/portable-clues.js +490 -0
  157. package/dist/tools/portable-clues.js.map +1 -0
  158. package/dist/tools/relationships.d.ts +29 -0
  159. package/dist/tools/relationships.d.ts.map +1 -0
  160. package/dist/tools/relationships.js +471 -0
  161. package/dist/tools/relationships.js.map +1 -0
  162. package/dist/tools/scene-framing.d.ts +21 -0
  163. package/dist/tools/scene-framing.d.ts.map +1 -0
  164. package/dist/tools/scene-framing.js +380 -0
  165. package/dist/tools/scene-framing.js.map +1 -0
  166. package/dist/tools/sessions.d.ts +30 -0
  167. package/dist/tools/sessions.d.ts.map +1 -0
  168. package/dist/tools/sessions.js +253 -0
  169. package/dist/tools/sessions.js.map +1 -0
  170. package/dist/tools/time.d.ts +26 -0
  171. package/dist/tools/time.d.ts.map +1 -0
  172. package/dist/tools/time.js +438 -0
  173. package/dist/tools/time.js.map +1 -0
  174. package/dist/tools/turns.d.ts +38 -0
  175. package/dist/tools/turns.d.ts.map +1 -0
  176. package/dist/tools/turns.js +560 -0
  177. package/dist/tools/turns.js.map +1 -0
  178. package/dist/tools/worldpack/assemble.d.ts +20 -0
  179. package/dist/tools/worldpack/assemble.d.ts.map +1 -0
  180. package/dist/tools/worldpack/assemble.js +237 -0
  181. package/dist/tools/worldpack/assemble.js.map +1 -0
  182. package/dist/tools/worldpack/docs-generator.d.ts +18 -0
  183. package/dist/tools/worldpack/docs-generator.d.ts.map +1 -0
  184. package/dist/tools/worldpack/docs-generator.js +264 -0
  185. package/dist/tools/worldpack/docs-generator.js.map +1 -0
  186. package/dist/tools/worldpack/export.d.ts +12 -0
  187. package/dist/tools/worldpack/export.d.ts.map +1 -0
  188. package/dist/tools/worldpack/export.js +209 -0
  189. package/dist/tools/worldpack/export.js.map +1 -0
  190. package/dist/tools/worldpack/index.d.ts +15 -0
  191. package/dist/tools/worldpack/index.d.ts.map +1 -0
  192. package/dist/tools/worldpack/index.js +30 -0
  193. package/dist/tools/worldpack/index.js.map +1 -0
  194. package/dist/tools/worldpack/lookup.d.ts +19 -0
  195. package/dist/tools/worldpack/lookup.d.ts.map +1 -0
  196. package/dist/tools/worldpack/lookup.js +320 -0
  197. package/dist/tools/worldpack/lookup.js.map +1 -0
  198. package/dist/tools/worldpack/manage.d.ts +20 -0
  199. package/dist/tools/worldpack/manage.d.ts.map +1 -0
  200. package/dist/tools/worldpack/manage.js +101 -0
  201. package/dist/tools/worldpack/manage.js.map +1 -0
  202. package/dist/tools/worldpack/save-result.d.ts +12 -0
  203. package/dist/tools/worldpack/save-result.d.ts.map +1 -0
  204. package/dist/tools/worldpack/save-result.js +222 -0
  205. package/dist/tools/worldpack/save-result.js.map +1 -0
  206. package/dist/tools/worldpack/summary.d.ts +13 -0
  207. package/dist/tools/worldpack/summary.d.ts.map +1 -0
  208. package/dist/tools/worldpack/summary.js +180 -0
  209. package/dist/tools/worldpack/summary.js.map +1 -0
  210. package/dist/tools/worldpack/validate.d.ts +12 -0
  211. package/dist/tools/worldpack/validate.d.ts.map +1 -0
  212. package/dist/tools/worldpack/validate.js +388 -0
  213. package/dist/tools/worldpack/validate.js.map +1 -0
  214. package/package.json +59 -0
@@ -0,0 +1,287 @@
1
+ /**
2
+ * Dice tools - rolling dice and tests
3
+ */
4
+ import { z } from "zod";
5
+ import { DIFFICULTY } from "@mythxengine/types";
6
+ import { createRNG, rollDice, resolveTest, resolveCustomTest, findCustomTest, } from "@mythxengine/engine";
7
+ import { sessionManager } from "../state/manager.js";
8
+ import { getRulesForSession } from "../state/rules.js";
9
+ // ============================================================================
10
+ // Input Schemas
11
+ // ============================================================================
12
+ const RollDiceInput = z.object({
13
+ expression: z.string(),
14
+ sessionId: z.string().optional(),
15
+ });
16
+ const RollTestInput = z.object({
17
+ sessionId: z.string(),
18
+ characterId: z.string(),
19
+ skill: z.string().optional(),
20
+ ability: z.enum(["STR", "AGI", "WIT", "CON"]).optional(),
21
+ difficulty: z.union([
22
+ z.number(),
23
+ z.enum(["EASY", "STANDARD", "HARD", "EXTREME"]),
24
+ ]),
25
+ modifiers: z
26
+ .array(z.object({
27
+ source: z.string(),
28
+ amount: z.number(),
29
+ }))
30
+ .optional(),
31
+ advantageSources: z.array(z.string()).optional(),
32
+ disadvantageSources: z.array(z.string()).optional(),
33
+ });
34
+ const RollCustomTestInput = z.object({
35
+ sessionId: z.string(),
36
+ characterId: z.string(),
37
+ testId: z.string(),
38
+ modifiers: z.number().optional(),
39
+ });
40
+ // ============================================================================
41
+ // roll_dice tool
42
+ // ============================================================================
43
+ export const rollDiceTool = {
44
+ name: "roll_dice",
45
+ description: "Roll dice using standard notation (e.g., '2d6+3', 'd20', '4d6'). Optionally use session RNG for determinism.",
46
+ inputSchema: {
47
+ type: "object",
48
+ properties: {
49
+ expression: {
50
+ type: "string",
51
+ description: "Dice expression like '2d6+3', 'd20', '1d8-1'",
52
+ },
53
+ sessionId: {
54
+ type: "string",
55
+ description: "Optional session ID to use session RNG for determinism",
56
+ },
57
+ },
58
+ required: ["expression"],
59
+ },
60
+ handler: async (args) => {
61
+ const input = RollDiceInput.parse(args);
62
+ let rng;
63
+ let session = null;
64
+ if (input.sessionId) {
65
+ session = await sessionManager.get(input.sessionId);
66
+ if (!session) {
67
+ throw new Error(`Session not found: ${input.sessionId}`);
68
+ }
69
+ rng = createRNG(session.rng);
70
+ }
71
+ else {
72
+ // Use random seed for one-off rolls
73
+ rng = createRNG(Date.now());
74
+ }
75
+ const result = rollDice(input.expression, rng);
76
+ // Update session RNG if used
77
+ if (session) {
78
+ session.rng = rng.getState();
79
+ await sessionManager.save(session);
80
+ }
81
+ return {
82
+ expression: result.expression,
83
+ rolls: result.rolls,
84
+ modifier: result.modifier,
85
+ natural: result.natural,
86
+ total: result.total,
87
+ critical: result.critical,
88
+ };
89
+ },
90
+ };
91
+ // ============================================================================
92
+ // roll_test tool
93
+ // ============================================================================
94
+ export const rollTestTool = {
95
+ name: "roll_test",
96
+ description: "Perform a skill or ability test for a character. Rolls d20 + ability + skill + modifiers vs difficulty. Supports advantage/disadvantage.",
97
+ inputSchema: {
98
+ type: "object",
99
+ properties: {
100
+ sessionId: { type: "string", description: "Session ID" },
101
+ characterId: { type: "string", description: "Character performing the test" },
102
+ skill: { type: "string", description: "Skill to use (optional)" },
103
+ ability: {
104
+ type: "string",
105
+ enum: ["STR", "AGI", "WIT", "CON"],
106
+ description: "Ability to use (optional, defaults to skill's ability or WIT)",
107
+ },
108
+ difficulty: {
109
+ oneOf: [
110
+ { type: "number" },
111
+ { type: "string", enum: ["EASY", "STANDARD", "HARD", "EXTREME"] },
112
+ ],
113
+ description: "Difficulty (number or level: EASY=8, STANDARD=12, HARD=16, EXTREME=20)",
114
+ },
115
+ modifiers: {
116
+ type: "array",
117
+ items: {
118
+ type: "object",
119
+ properties: {
120
+ source: { type: "string" },
121
+ amount: { type: "number" },
122
+ },
123
+ required: ["source", "amount"],
124
+ },
125
+ description: "Additional modifiers",
126
+ },
127
+ advantageSources: {
128
+ type: "array",
129
+ items: { type: "string" },
130
+ description: "Sources granting advantage (e.g., 'flanking', 'high ground')",
131
+ },
132
+ disadvantageSources: {
133
+ type: "array",
134
+ items: { type: "string" },
135
+ description: "Sources granting disadvantage (e.g., 'darkness', 'wounded')",
136
+ },
137
+ },
138
+ required: ["sessionId", "characterId", "difficulty"],
139
+ },
140
+ handler: async (args) => {
141
+ const input = RollTestInput.parse(args);
142
+ const session = await sessionManager.get(input.sessionId);
143
+ if (!session) {
144
+ throw new Error(`Session not found: ${input.sessionId}`);
145
+ }
146
+ const character = session.characters[input.characterId];
147
+ if (!character) {
148
+ throw new Error(`Character not found: ${input.characterId}`);
149
+ }
150
+ // Resolve difficulty
151
+ let difficulty;
152
+ if (typeof input.difficulty === "string") {
153
+ difficulty = DIFFICULTY[input.difficulty];
154
+ }
155
+ else {
156
+ difficulty = input.difficulty;
157
+ }
158
+ // Load rules context for the session
159
+ const rules = (await getRulesForSession(session));
160
+ const rng = createRNG(session.rng);
161
+ const result = resolveTest({
162
+ character,
163
+ skill: input.skill,
164
+ ability: input.ability,
165
+ difficulty,
166
+ modifiers: input.modifiers,
167
+ rng,
168
+ advantageSources: input.advantageSources,
169
+ disadvantageSources: input.disadvantageSources,
170
+ rules,
171
+ });
172
+ // Update session RNG
173
+ session.rng = rng.getState();
174
+ await sessionManager.save(session);
175
+ // Build roll info with advantage details
176
+ const rollInfo = {
177
+ natural: result.roll.natural,
178
+ total: result.roll.total,
179
+ critical: result.roll.critical,
180
+ };
181
+ if (result.roll.advantage) {
182
+ rollInfo.advantage = {
183
+ bothRolls: result.roll.advantage.bothRolls,
184
+ selected: result.roll.advantage.selected,
185
+ };
186
+ }
187
+ return {
188
+ character: character.name,
189
+ skill: result.skill || null,
190
+ ability: result.ability,
191
+ difficulty: result.difficulty,
192
+ advantageState: result.advantageState,
193
+ roll: rollInfo,
194
+ modifiers: {
195
+ ability: result.abilityMod,
196
+ skill: result.skillBonus,
197
+ other: result.otherMods,
198
+ total: result.totalMod,
199
+ },
200
+ success: result.success,
201
+ margin: result.margin,
202
+ critical: result.critical,
203
+ };
204
+ },
205
+ };
206
+ // ============================================================================
207
+ // roll_custom_test tool
208
+ // ============================================================================
209
+ export const rollCustomTestTool = {
210
+ name: "roll_custom_test",
211
+ description: "Perform a custom test defined in the world pack rules (e.g., panic check, sanity roll). Returns success/failure, any table rolls, and effects to apply.",
212
+ inputSchema: {
213
+ type: "object",
214
+ properties: {
215
+ sessionId: { type: "string", description: "Session ID" },
216
+ characterId: { type: "string", description: "Character performing the test" },
217
+ testId: {
218
+ type: "string",
219
+ description: "Custom test ID (e.g., 'panic', 'sanity_check')",
220
+ },
221
+ modifiers: { type: "number", description: "Additional modifiers" },
222
+ },
223
+ required: ["sessionId", "characterId", "testId"],
224
+ },
225
+ handler: async (args) => {
226
+ const input = RollCustomTestInput.parse(args);
227
+ const session = await sessionManager.get(input.sessionId);
228
+ if (!session) {
229
+ throw new Error(`Session not found: ${input.sessionId}`);
230
+ }
231
+ const character = session.characters[input.characterId];
232
+ if (!character) {
233
+ throw new Error(`Character not found: ${input.characterId}`);
234
+ }
235
+ // Load rules context for the session
236
+ const rules = (await getRulesForSession(session));
237
+ // Find the custom test definition
238
+ const testDef = findCustomTest(rules, input.testId);
239
+ if (!testDef) {
240
+ const availableTests = rules.rules.customTests?.map((t) => t.id).join(", ") || "(none)";
241
+ throw new Error(`Custom test not found: ${input.testId}. Available tests: ${availableTests}`);
242
+ }
243
+ const rng = createRNG(session.rng);
244
+ // Build abilities record from character
245
+ const abilities = { ...character.abilities };
246
+ // Resolve the custom test
247
+ const result = resolveCustomTest({
248
+ test: testDef,
249
+ abilities,
250
+ rng,
251
+ ctx: rules,
252
+ modifiers: input.modifiers,
253
+ });
254
+ // Update session RNG
255
+ session.rng = rng.getState();
256
+ await sessionManager.save(session);
257
+ // Build response
258
+ const response = {
259
+ testId: result.testId,
260
+ testName: testDef.name,
261
+ character: character.name,
262
+ roll: result.roll,
263
+ target: result.target,
264
+ success: result.success,
265
+ critical: result.critical,
266
+ outcome: result.outcome.description,
267
+ };
268
+ // Include table roll if applicable
269
+ if (result.tableRoll) {
270
+ response.tableRoll = {
271
+ dice: result.tableRoll.dice,
272
+ roll: result.tableRoll.roll,
273
+ result: result.tableRoll.entry.description,
274
+ };
275
+ }
276
+ // Include effects to apply
277
+ if (result.effects.length > 0) {
278
+ response.effects = result.effects;
279
+ }
280
+ return response;
281
+ },
282
+ };
283
+ // ============================================================================
284
+ // Export
285
+ // ============================================================================
286
+ export const diceTools = [rollDiceTool, rollTestTool, rollCustomTestTool];
287
+ //# sourceMappingURL=dice.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"dice.js","sourceRoot":"","sources":["../../src/tools/dice.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,21 @@
1
+ /**
2
+ * Encounter Builder Tools
3
+ *
4
+ * On-demand encounter generation and management.
5
+ * Supports the Alexandrian principle: "Build toolkits you can deploy flexibly."
6
+ */
7
+ import type { MCPToolEntry } from "@mythxengine/types";
8
+ /**
9
+ * generate_encounter tool
10
+ */
11
+ export declare const generateEncounterTool: MCPToolEntry;
12
+ /**
13
+ * scale_encounter tool
14
+ */
15
+ export declare const scaleEncounterTool: MCPToolEntry;
16
+ /**
17
+ * get_encounter_suggestions tool
18
+ */
19
+ export declare const getEncounterSuggestionsTool: MCPToolEntry;
20
+ export declare const encounterTools: MCPToolEntry[];
21
+ //# sourceMappingURL=encounters.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"encounters.d.ts","sourceRoot":"","sources":["../../src/tools/encounters.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAGH,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAyMvD;;GAEG;AACH,eAAO,MAAM,qBAAqB,EAAE,YAqNnC,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,kBAAkB,EAAE,YA0GhC,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,2BAA2B,EAAE,YA4FzC,CAAC;AAEF,eAAO,MAAM,cAAc,gBAI1B,CAAC"}