@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,395 @@
1
+ /**
2
+ * GM Context & Guidance Tool
3
+ *
4
+ * Provides context-aware GM advice during gameplay.
5
+ * Makes the wisdom from GM prompts operationally accessible.
6
+ */
7
+ import { z } from "zod";
8
+ import { sessionManager } from "../state/manager.js";
9
+ // Guidance types
10
+ const GUIDANCE_TYPES = ["stuck", "resolution", "pacing", "tone", "npc"];
11
+ const GetGmGuidanceInput = z.object({
12
+ sessionId: z.string(),
13
+ type: z.enum(GUIDANCE_TYPES),
14
+ context: z.object({
15
+ action: z.string().optional().describe("For resolution: the action being attempted"),
16
+ npcId: z.string().optional().describe("For npc: which NPC to get guidance for"),
17
+ sceneDescription: z.string().optional().describe("For pacing: current scene"),
18
+ locationId: z.string().optional().describe("Current location"),
19
+ currentActivity: z.string().optional().describe("What's happening now"),
20
+ }).optional(),
21
+ });
22
+ /**
23
+ * Format game time as human-readable string
24
+ */
25
+ function formatGameTime(time) {
26
+ const hour12 = time.hour % 12 || 12;
27
+ const ampm = time.hour < 12 ? "AM" : "PM";
28
+ const min = time.minute.toString().padStart(2, "0");
29
+ return `Day ${time.day}, ${hour12}:${min} ${ampm}`;
30
+ }
31
+ /**
32
+ * Get situations from session
33
+ */
34
+ function getSituations(session) {
35
+ if (!session.generation?.generatedContent?.situations) {
36
+ return [];
37
+ }
38
+ return session.generation.generatedContent.situations;
39
+ }
40
+ /**
41
+ * Generate "stuck" guidance
42
+ */
43
+ function generateStuckGuidance(session, _context) {
44
+ const situations = getSituations(session);
45
+ const discoveredIds = (session.discoveredLeads || []).map(d => d.leadId);
46
+ // Find undiscovered leads
47
+ const undiscoveredLeads = [];
48
+ for (const situation of situations) {
49
+ for (const lead of situation.outgoingLeads || []) {
50
+ if (!discoveredIds.includes(lead.id) && lead.prominence !== "obscured") {
51
+ undiscoveredLeads.push({
52
+ situationName: situation.name,
53
+ leadInfo: lead.information,
54
+ method: lead.discovery.method,
55
+ description: lead.discovery.description,
56
+ });
57
+ }
58
+ }
59
+ }
60
+ // Find NPCs who owe favors
61
+ const helpfulNpcs = [];
62
+ if (session.relationships) {
63
+ for (const rel of Object.values(session.relationships)) {
64
+ if (rel.owes.length > 0 || rel.attitude === "friendly" || rel.attitude === "allied") {
65
+ helpfulNpcs.push(rel.npcName);
66
+ }
67
+ }
68
+ }
69
+ // Check active clocks for urgency
70
+ const urgentClocks = (session.activeClocks || [])
71
+ .filter(c => c.currentStage >= c.totalStages - 2)
72
+ .map(c => `${c.name} (${c.doom})`);
73
+ const suggestions = [];
74
+ // Three Clue Rule suggestions
75
+ if (undiscoveredLeads.length > 0) {
76
+ const lead = undiscoveredLeads[0];
77
+ suggestions.push(`Reveal a lead via ${lead.method}: "${lead.leadInfo}"`);
78
+ }
79
+ // NPC intervention
80
+ if (helpfulNpcs.length > 0) {
81
+ suggestions.push(`Have ${helpfulNpcs[0]} offer assistance or information`);
82
+ }
83
+ // Environmental clue
84
+ suggestions.push("Add an environmental detail that points toward the goal");
85
+ // Cut the scene
86
+ suggestions.push("If truly stuck, cut to a new scene with a clear hook");
87
+ // Clock pressure
88
+ if (urgentClocks.length > 0) {
89
+ suggestions.push(`Remind players of time pressure: ${urgentClocks[0]}`);
90
+ }
91
+ return {
92
+ guidance: "Players seem stuck. The Three Clue Rule suggests multiple paths should exist. Consider surfacing an undiscovered lead or having the world offer a new angle.",
93
+ principles: [
94
+ "Three Clue Rule: Ensure 3+ ways to reach important conclusions",
95
+ "World offers angles: NPCs, environment, and events can provide hints",
96
+ "Cut empty time: If stuck for too long, jump to the next interesting thing",
97
+ ],
98
+ suggestions,
99
+ tools: ["get_available_leads", "suggest_lead_opportunity", "get_active_clocks"],
100
+ worldContext: undiscoveredLeads.length > 0
101
+ ? `${undiscoveredLeads.length} undiscovered leads available across situations`
102
+ : "Consider adding new leads if none are available",
103
+ };
104
+ }
105
+ /**
106
+ * Generate "resolution" guidance
107
+ */
108
+ function generateResolutionGuidance(action) {
109
+ const suggestions = [];
110
+ // Determine resolution type hints
111
+ if (action) {
112
+ const actionLower = action.toLowerCase();
113
+ if (actionLower.includes("search") || actionLower.includes("look") || actionLower.includes("find")) {
114
+ suggestions.push("If obvious, auto-succeed. If hidden, WIT test (STANDARD)");
115
+ suggestions.push("Failure: Find partial info or notice something that complicates things");
116
+ }
117
+ else if (actionLower.includes("attack") || actionLower.includes("hit") || actionLower.includes("fight")) {
118
+ suggestions.push("Use attack tool for combat, describe impact cinematically");
119
+ suggestions.push("Consider advantage/disadvantage from positioning");
120
+ }
121
+ else if (actionLower.includes("talk") || actionLower.includes("convince") || actionLower.includes("persuade")) {
122
+ suggestions.push("WIT test if outcome uncertain; difficulty based on NPC disposition");
123
+ suggestions.push("Failure: NPC reveals their concern or makes a counter-demand");
124
+ }
125
+ else if (actionLower.includes("sneak") || actionLower.includes("hide") || actionLower.includes("stealth")) {
126
+ suggestions.push("AGI test against observer's passive perception");
127
+ suggestions.push("Failure: Spotted but can still act, or makes noise that changes situation");
128
+ }
129
+ else {
130
+ suggestions.push("Consider: Is outcome uncertain? Are stakes meaningful?");
131
+ suggestions.push("Auto-succeed if trivial; auto-fail if impossible (but fail forward)");
132
+ }
133
+ }
134
+ else {
135
+ suggestions.push("Auto-succeed: Within capabilities, no opposition, trivially easy");
136
+ suggestions.push("Roll required: Uncertain outcome, meaningful stakes, opposition exists");
137
+ suggestions.push("Auto-fail: Impossible, but still provide useful information");
138
+ }
139
+ return {
140
+ guidance: "Every action resolution should preserve player agency and move the story forward. Failure should never dead-end the narrative.",
141
+ principles: [
142
+ "Player Agency: Their choice should drive resolution",
143
+ "Fail Forward: Failure opens new paths, not dead ends",
144
+ "Multiple Paths: Accept creative solutions",
145
+ "Method Matters: How they do it can bypass or modify checks",
146
+ ],
147
+ suggestions: [
148
+ ...suggestions,
149
+ "On failure: Something still happens, new info emerges, situation changes",
150
+ "Partial success (close roll): Success with complication or partial information",
151
+ ],
152
+ tools: ["roll_test", "roll_dice"],
153
+ };
154
+ }
155
+ /**
156
+ * Generate "pacing" guidance
157
+ */
158
+ function generatePacingGuidance(session, sceneDescription) {
159
+ const suggestions = [];
160
+ // Scene-specific advice
161
+ if (sceneDescription) {
162
+ const sceneLower = sceneDescription.toLowerCase();
163
+ if (sceneLower.includes("combat") || sceneLower.includes("fight")) {
164
+ suggestions.push("Combat should feel dangerous. Describe wounds, not just HP loss");
165
+ suggestions.push("Let players describe killing blows on significant enemies");
166
+ }
167
+ else if (sceneLower.includes("investigation") || sceneLower.includes("search")) {
168
+ suggestions.push("Cycle clues: obvious -> available -> hidden progression");
169
+ suggestions.push("Time pressure adds urgency; consider a deadline");
170
+ }
171
+ else if (sceneLower.includes("conversation") || sceneLower.includes("negotiation")) {
172
+ suggestions.push("NPCs have agendas. Let them push back and make demands");
173
+ suggestions.push("If conversation is circling, have NPC make a choice or leave");
174
+ }
175
+ }
176
+ // Clock-based urgency
177
+ if (session.activeClocks && session.activeClocks.length > 0) {
178
+ suggestions.push(`Active clock: ${session.activeClocks[0].name} - use for tension`);
179
+ }
180
+ // General pacing advice
181
+ suggestions.push("Cut to the next meaningful choice - skip travel/waiting if uneventful");
182
+ suggestions.push("If scene drags: escalate, interrupt, or end it");
183
+ return {
184
+ guidance: "Pacing is controlled by how you frame the next meaningful decision point. Cut empty time; don't skip meaningful choices.",
185
+ principles: [
186
+ "Intention -> Obstacle -> Choice: The core scene frame",
187
+ "Cut Empty Time: Skip over gaps with no decisions",
188
+ "Protect Meaning: Don't skip over decisions that matter to players",
189
+ "Vary Rhythm: Alternate tension/relief, action/reflection",
190
+ ],
191
+ suggestions,
192
+ tools: ["advance_time", "get_active_clocks", "check_clock_triggers"],
193
+ };
194
+ }
195
+ /**
196
+ * Generate "tone" guidance
197
+ */
198
+ function generateToneGuidance(session) {
199
+ const worldSeed = session.generation?.worldSeed;
200
+ const tone = worldSeed?.aesthetic?.tone || "unknown";
201
+ const themes = worldSeed?.aesthetic?.themes || [];
202
+ const toneAdvice = {
203
+ dark: {
204
+ description: "Oppressive, morally gray, victories are costly",
205
+ dos: ["Emphasize consequence and cost", "NPCs have complex motivations", "Hope is rare and precious"],
206
+ donts: ["Easy wins", "Clear good/evil", "Jokes that undercut drama"],
207
+ },
208
+ gritty: {
209
+ description: "Realistic, dangerous, resources matter",
210
+ dos: ["Track resources carefully", "Wounds have impact", "Show wear and exhaustion"],
211
+ donts: ["Superhero moments", "Brushing off injuries", "Infinite stamina"],
212
+ },
213
+ heroic: {
214
+ description: "Larger than life, triumph possible, epic stakes",
215
+ dos: ["Celebrate successes", "Let heroes be competent", "Epic moments of bravery"],
216
+ donts: ["Petty humiliations", "Constant failure", "Making heroes look foolish"],
217
+ },
218
+ comedic: {
219
+ description: "Fun, absurd, playful stakes",
220
+ dos: ["Play with timing", "Embrace absurdity", "Let failures be funny"],
221
+ donts: ["Taking things too seriously", "Harsh consequences", "Mean-spirited humor"],
222
+ },
223
+ mystery: {
224
+ description: "Shadowy, puzzles matter, revelations are earned",
225
+ dos: ["Breadcrumb information", "Multiple suspects", "Reward investigation"],
226
+ donts: ["Revealing too much", "Making clues too obscure", "Ignoring null results"],
227
+ },
228
+ horror: {
229
+ description: "Creeping dread, wrongness, uncertainty",
230
+ dos: ["Build slowly", "Describe what's wrong", "Let fear linger"],
231
+ donts: ["Showing the monster too early", "Over-explaining", "Breaking tension with action"],
232
+ },
233
+ };
234
+ const advice = toneAdvice[tone.toLowerCase()] || {
235
+ description: `Tone: ${tone}`,
236
+ dos: ["Maintain consistency", "Match player expectations"],
237
+ donts: ["Jarring tonal shifts"],
238
+ };
239
+ return {
240
+ guidance: `Current tone: ${tone}. ${advice.description}. Maintain this throughout scenes.`,
241
+ principles: [
242
+ `Tone consistency: Keep ${tone} feel across all scenes`,
243
+ "Player comfort: Adjust if requested, smoothly and without judgment",
244
+ "Themes reinforce tone: Weave themes into narration",
245
+ ],
246
+ suggestions: [
247
+ ...advice.dos.map(d => `DO: ${d}`),
248
+ ...advice.donts.map(d => `DON'T: ${d}`),
249
+ ],
250
+ tools: [],
251
+ worldContext: themes.length > 0 ? `Active themes: ${themes.join(", ")}` : undefined,
252
+ };
253
+ }
254
+ /**
255
+ * Generate "npc" guidance
256
+ */
257
+ function generateNpcGuidance(session, npcId) {
258
+ if (!npcId) {
259
+ return {
260
+ guidance: "Provide an NPC ID to get specific portrayal guidance.",
261
+ principles: [
262
+ "Every NPC has ONE defining trait",
263
+ "Every NPC has a WANT (even simple ones)",
264
+ "NPCs have opinions and reactions - they're not quest dispensers",
265
+ ],
266
+ suggestions: [
267
+ "Give them a distinct voice or mannerism",
268
+ "Let them remember past encounters",
269
+ "Let relationships evolve based on treatment",
270
+ ],
271
+ tools: ["get_relationship", "get_npc_disposition"],
272
+ };
273
+ }
274
+ const npc = session.npcs[npcId];
275
+ const relationship = session.relationships?.[npcId];
276
+ if (!npc) {
277
+ return {
278
+ guidance: `NPC ${npcId} not found in session.`,
279
+ principles: [],
280
+ suggestions: ["Create the NPC first with create_character"],
281
+ tools: ["create_character"],
282
+ };
283
+ }
284
+ const suggestions = [];
285
+ // Personality-based suggestions
286
+ if (npc.personality) {
287
+ suggestions.push(`Core trait: ${npc.personality}`);
288
+ }
289
+ if (npc.motivation) {
290
+ suggestions.push(`Motivation: ${npc.motivation}`);
291
+ }
292
+ // Relationship-based suggestions
293
+ if (relationship) {
294
+ suggestions.push(`Current attitude: ${relationship.attitude}`);
295
+ if (relationship.history.length > 0) {
296
+ const lastInteraction = relationship.history[relationship.history.length - 1];
297
+ suggestions.push(`Last interaction: ${lastInteraction.interaction}`);
298
+ }
299
+ // Attitude-specific behavior hints
300
+ switch (relationship.attitude) {
301
+ case "hostile":
302
+ suggestions.push("Behavior: Confrontational, may refuse to help, could escalate");
303
+ break;
304
+ case "unfriendly":
305
+ suggestions.push("Behavior: Suspicious, minimal help, may withhold info");
306
+ break;
307
+ case "neutral":
308
+ suggestions.push("Behavior: Transactional, fair deals, no special treatment");
309
+ break;
310
+ case "friendly":
311
+ suggestions.push("Behavior: Warm, offers help, shares relevant info freely");
312
+ break;
313
+ case "allied":
314
+ suggestions.push("Behavior: Loyal, goes out of way to help, may take risks for party");
315
+ break;
316
+ }
317
+ }
318
+ return {
319
+ guidance: `Portraying ${npc.name}: Stay consistent with established personality and relationship.`,
320
+ principles: [
321
+ "Remember past interactions - NPCs have memory",
322
+ "Attitude affects helpfulness, not just dialogue tone",
323
+ "NPCs can change their minds based on events",
324
+ ],
325
+ suggestions,
326
+ tools: ["get_relationship", "update_relationship"],
327
+ worldContext: relationship
328
+ ? `${relationship.history.length} previous interactions recorded`
329
+ : "No relationship tracked yet - consider initializing",
330
+ };
331
+ }
332
+ /**
333
+ * get_gm_guidance tool
334
+ */
335
+ export const getGmGuidanceTool = {
336
+ name: "get_gm_guidance",
337
+ description: "Get context-aware GM advice for common situations: stuck players, action resolution, pacing, tone, or NPC portrayal.",
338
+ inputSchema: {
339
+ type: "object",
340
+ properties: {
341
+ sessionId: { type: "string", description: "Session ID" },
342
+ type: {
343
+ type: "string",
344
+ enum: GUIDANCE_TYPES,
345
+ description: "Type of guidance: stuck, resolution, pacing, tone, npc",
346
+ },
347
+ context: {
348
+ type: "object",
349
+ properties: {
350
+ action: { type: "string", description: "For resolution: the action being attempted" },
351
+ npcId: { type: "string", description: "For npc: which NPC to get guidance for" },
352
+ sceneDescription: { type: "string", description: "For pacing: current scene description" },
353
+ locationId: { type: "string", description: "Current location ID" },
354
+ currentActivity: { type: "string", description: "What's happening now" },
355
+ },
356
+ description: "Additional context for guidance",
357
+ },
358
+ },
359
+ required: ["sessionId", "type"],
360
+ },
361
+ handler: async (args) => {
362
+ const input = GetGmGuidanceInput.parse(args);
363
+ const session = await sessionManager.get(input.sessionId);
364
+ if (!session) {
365
+ throw new Error(`Session not found: ${input.sessionId}`);
366
+ }
367
+ let result;
368
+ switch (input.type) {
369
+ case "stuck":
370
+ result = generateStuckGuidance(session, input.context);
371
+ break;
372
+ case "resolution":
373
+ result = generateResolutionGuidance(input.context?.action);
374
+ break;
375
+ case "pacing":
376
+ result = generatePacingGuidance(session, input.context?.sceneDescription);
377
+ break;
378
+ case "tone":
379
+ result = generateToneGuidance(session);
380
+ break;
381
+ case "npc":
382
+ result = generateNpcGuidance(session, input.context?.npcId);
383
+ break;
384
+ default:
385
+ throw new Error(`Unknown guidance type: ${input.type}`);
386
+ }
387
+ return {
388
+ type: input.type,
389
+ currentTime: formatGameTime(session.gameTime),
390
+ ...result,
391
+ };
392
+ },
393
+ };
394
+ export const gmGuidanceTools = [getGmGuidanceTool];
395
+ //# sourceMappingURL=gm-guidance.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"gm-guidance.js","sourceRoot":"","sources":["../../src/tools/gm-guidance.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,33 @@
1
+ /**
2
+ * Tool exports and registry
3
+ */
4
+ import type { MCPToolRegistry } from "@mythxengine/types";
5
+ /**
6
+ * All available tools
7
+ */
8
+ export declare const allTools: import("@mythxengine/types").MCPToolEntry[];
9
+ /**
10
+ * Create a tool registry from the tools array
11
+ */
12
+ export declare function createToolRegistry(): MCPToolRegistry;
13
+ export { diceTools } from "./dice.js";
14
+ export { characterTools } from "./characters.js";
15
+ export { sessionTools } from "./sessions.js";
16
+ export { combatTools } from "./combat.js";
17
+ export { generationTools } from "./generation/index.js";
18
+ export { expansionTools } from "./expansion/index.js";
19
+ export { worldpackTools } from "./worldpack/index.js";
20
+ export { timeTools } from "./time.js";
21
+ export { playerTools } from "./players.js";
22
+ export { turnTools } from "./turns.js";
23
+ export { clockTools } from "./clocks.js";
24
+ export { leadTools } from "./leads.js";
25
+ export { relationshipTools } from "./relationships.js";
26
+ export { gmGuidanceTools } from "./gm-guidance.js";
27
+ export { sceneFramingTools } from "./scene-framing.js";
28
+ export { encounterTools } from "./encounters.js";
29
+ export { investigationTools } from "./investigation.js";
30
+ export { portableClueTools } from "./portable-clues.js";
31
+ export { engagementTools } from "./engagement.js";
32
+ export { augmentationTools } from "./augmentation/index.js";
33
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/tools/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,oBAAoB,CAAC;AAsB1D;;GAEG;AACH,eAAO,MAAM,QAAQ,6CAqBpB,CAAC;AAEF;;GAEG;AACH,wBAAgB,kBAAkB,IAAI,eAAe,CAQpD;AAGD,OAAO,EAAE,SAAS,EAAE,MAAM,WAAW,CAAC;AACtC,OAAO,EAAE,cAAc,EAAE,MAAM,iBAAiB,CAAC;AACjD,OAAO,EAAE,YAAY,EAAE,MAAM,eAAe,CAAC;AAC7C,OAAO,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAC1C,OAAO,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAC;AACxD,OAAO,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AACtD,OAAO,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AACtD,OAAO,EAAE,SAAS,EAAE,MAAM,WAAW,CAAC;AACtC,OAAO,EAAE,WAAW,EAAE,MAAM,cAAc,CAAC;AAC3C,OAAO,EAAE,SAAS,EAAE,MAAM,YAAY,CAAC;AACvC,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AACzC,OAAO,EAAE,SAAS,EAAE,MAAM,YAAY,CAAC;AACvC,OAAO,EAAE,iBAAiB,EAAE,MAAM,oBAAoB,CAAC;AACvD,OAAO,EAAE,eAAe,EAAE,MAAM,kBAAkB,CAAC;AACnD,OAAO,EAAE,iBAAiB,EAAE,MAAM,oBAAoB,CAAC;AACvD,OAAO,EAAE,cAAc,EAAE,MAAM,iBAAiB,CAAC;AACjD,OAAO,EAAE,kBAAkB,EAAE,MAAM,oBAAoB,CAAC;AACxD,OAAO,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAC;AACxD,OAAO,EAAE,eAAe,EAAE,MAAM,iBAAiB,CAAC;AAClD,OAAO,EAAE,iBAAiB,EAAE,MAAM,yBAAyB,CAAC"}
@@ -0,0 +1,80 @@
1
+ /**
2
+ * Tool exports and registry
3
+ */
4
+ import { diceTools } from "./dice.js";
5
+ import { characterTools } from "./characters.js";
6
+ import { sessionTools } from "./sessions.js";
7
+ import { combatTools } from "./combat.js";
8
+ import { generationTools } from "./generation/index.js";
9
+ import { expansionTools } from "./expansion/index.js";
10
+ import { worldpackTools } from "./worldpack/index.js";
11
+ import { timeTools } from "./time.js";
12
+ import { playerTools } from "./players.js";
13
+ import { turnTools } from "./turns.js";
14
+ import { clockTools } from "./clocks.js";
15
+ import { leadTools } from "./leads.js";
16
+ import { relationshipTools } from "./relationships.js";
17
+ import { gmGuidanceTools } from "./gm-guidance.js";
18
+ import { sceneFramingTools } from "./scene-framing.js";
19
+ import { encounterTools } from "./encounters.js";
20
+ import { investigationTools } from "./investigation.js";
21
+ import { portableClueTools } from "./portable-clues.js";
22
+ import { engagementTools } from "./engagement.js";
23
+ import { augmentationTools } from "./augmentation/index.js";
24
+ /**
25
+ * All available tools
26
+ */
27
+ export const allTools = [
28
+ ...diceTools,
29
+ ...characterTools,
30
+ ...sessionTools,
31
+ ...combatTools,
32
+ ...timeTools,
33
+ ...playerTools,
34
+ ...turnTools,
35
+ ...clockTools,
36
+ ...leadTools,
37
+ ...relationshipTools,
38
+ ...gmGuidanceTools,
39
+ ...sceneFramingTools,
40
+ ...encounterTools,
41
+ ...investigationTools,
42
+ ...portableClueTools,
43
+ ...engagementTools,
44
+ ...generationTools,
45
+ ...expansionTools,
46
+ ...worldpackTools,
47
+ ...augmentationTools,
48
+ ];
49
+ /**
50
+ * Create a tool registry from the tools array
51
+ */
52
+ export function createToolRegistry() {
53
+ const registry = new Map();
54
+ for (const tool of allTools) {
55
+ registry.set(tool.name, tool);
56
+ }
57
+ return registry;
58
+ }
59
+ // Re-export individual tool modules
60
+ export { diceTools } from "./dice.js";
61
+ export { characterTools } from "./characters.js";
62
+ export { sessionTools } from "./sessions.js";
63
+ export { combatTools } from "./combat.js";
64
+ export { generationTools } from "./generation/index.js";
65
+ export { expansionTools } from "./expansion/index.js";
66
+ export { worldpackTools } from "./worldpack/index.js";
67
+ export { timeTools } from "./time.js";
68
+ export { playerTools } from "./players.js";
69
+ export { turnTools } from "./turns.js";
70
+ export { clockTools } from "./clocks.js";
71
+ export { leadTools } from "./leads.js";
72
+ export { relationshipTools } from "./relationships.js";
73
+ export { gmGuidanceTools } from "./gm-guidance.js";
74
+ export { sceneFramingTools } from "./scene-framing.js";
75
+ export { encounterTools } from "./encounters.js";
76
+ export { investigationTools } from "./investigation.js";
77
+ export { portableClueTools } from "./portable-clues.js";
78
+ export { engagementTools } from "./engagement.js";
79
+ export { augmentationTools } from "./augmentation/index.js";
80
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/tools/index.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,41 @@
1
+ /**
2
+ * Mystery/Investigation Mode Tools
3
+ *
4
+ * Tools for tracking investigations, evidence, hypotheses, and null results.
5
+ * Based on Alexandrian principles: Three Clue Rule and hypothesis testing.
6
+ */
7
+ import type { MCPToolEntry } from "@mythxengine/types";
8
+ /**
9
+ * start_investigation tool
10
+ */
11
+ export declare const startInvestigationTool: MCPToolEntry;
12
+ /**
13
+ * add_evidence tool
14
+ */
15
+ export declare const addEvidenceTool: MCPToolEntry;
16
+ /**
17
+ * add_hypothesis tool
18
+ */
19
+ export declare const addHypothesisTool: MCPToolEntry;
20
+ /**
21
+ * test_hypothesis tool
22
+ */
23
+ export declare const testHypothesisTool: MCPToolEntry;
24
+ /**
25
+ * record_null_result tool
26
+ */
27
+ export declare const recordNullResultTool: MCPToolEntry;
28
+ /**
29
+ * get_investigation_status tool
30
+ */
31
+ export declare const getInvestigationStatusTool: MCPToolEntry;
32
+ /**
33
+ * suggest_next_steps tool
34
+ */
35
+ export declare const suggestNextStepsTool: MCPToolEntry;
36
+ /**
37
+ * update_investigation_status tool
38
+ */
39
+ export declare const updateInvestigationStatusTool: MCPToolEntry;
40
+ export declare const investigationTools: MCPToolEntry[];
41
+ //# sourceMappingURL=investigation.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"investigation.d.ts","sourceRoot":"","sources":["../../src/tools/investigation.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAGH,OAAO,KAAK,EAAE,YAAY,EAAY,MAAM,oBAAoB,CAAC;AAoJjE;;GAEG;AACH,eAAO,MAAM,sBAAsB,EAAE,YAsEpC,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,eAAe,EAAE,YAuD7B,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,iBAAiB,EAAE,YAmE/B,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,kBAAkB,EAAE,YAwEhC,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,oBAAoB,EAAE,YAkDlC,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,0BAA0B,EAAE,YAyExC,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,oBAAoB,EAAE,YAoFlC,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,6BAA6B,EAAE,YAuD3C,CAAC;AAEF,eAAO,MAAM,kBAAkB,gBAS9B,CAAC"}