@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,237 @@
1
+ /**
2
+ * Assemble World Pack Tool
3
+ *
4
+ * Combines all generated content into a complete WorldContentPack.
5
+ */
6
+ import { z } from "zod";
7
+ import { writeFile, mkdir } from "fs/promises";
8
+ import { join } from "path";
9
+ import { merge } from "lodash-es";
10
+ import { sessionManager, readManifest, readStepFile, listExpansionFiles, writeManifest, } from "../../state/manager.js";
11
+ import { saveWorldPack, getWorldBooksDir } from "../../state/worldpacks.js";
12
+ import { generateOverview, generateCheatsheet } from "./docs-generator.js";
13
+ const AssembleWorldPackInput = z.object({
14
+ sessionId: z.string(),
15
+ });
16
+ /**
17
+ * assemble_world_pack tool
18
+ */
19
+ export const assembleWorldPackTool = {
20
+ name: "assemble_world_pack",
21
+ description: "Combine all generated content into a complete WorldContentPack and save it.",
22
+ inputSchema: {
23
+ type: "object",
24
+ properties: {
25
+ sessionId: { type: "string", description: "Session ID" },
26
+ },
27
+ required: ["sessionId"],
28
+ },
29
+ handler: async (args) => {
30
+ const input = AssembleWorldPackInput.parse(args);
31
+ const session = await sessionManager.get(input.sessionId);
32
+ if (!session) {
33
+ throw new Error(`Session not found: ${input.sessionId}`);
34
+ }
35
+ if (!session.generation) {
36
+ throw new Error("No generation session found");
37
+ }
38
+ // Try to get world seed from session, fall back to file
39
+ let worldSeed = session.generation.worldSeed;
40
+ if (!worldSeed) {
41
+ // Fallback: try to read from step file
42
+ worldSeed = (await readStepFile(input.sessionId, "seed.json"));
43
+ }
44
+ if (!worldSeed) {
45
+ throw new Error("World seed not found. Call generate_world_seed first.");
46
+ }
47
+ // Get content from session, with file fallback for empty arrays
48
+ const content = await getContentWithFallback(input.sessionId, session.generation.generatedContent);
49
+ const expansions = await getExpansionsWithFallback(input.sessionId, session.generation.expansions);
50
+ // Merge base content with expansions
51
+ const archetypes = mergeById(content.archetypes, expansions.archetypes);
52
+ const monsters = mergeById(content.monsters, expansions.monsters);
53
+ const locations = mergeById(content.locations, expansions.locations);
54
+ const npcs = mergeById(content.npcs, expansions.npcs);
55
+ // Get situations and arcs (no expansion merging for these yet)
56
+ const situations = content.situations;
57
+ const arcs = content.arcs;
58
+ // Build meta
59
+ const meta = {
60
+ id: worldSeed.id,
61
+ name: worldSeed.name,
62
+ tagline: worldSeed.tagline,
63
+ version: "1.0.0",
64
+ aesthetic: {
65
+ visualStyle: worldSeed.aesthetic.visualStyle,
66
+ tone: worldSeed.aesthetic.tone,
67
+ themes: worldSeed.aesthetic.themes,
68
+ inspirations: worldSeed.aesthetic.inspirations || [],
69
+ },
70
+ settings: {
71
+ lethality: worldSeed.settings.lethality,
72
+ magicLevel: worldSeed.settings.magicLevel,
73
+ technologyLevel: worldSeed.settings.technologyLevel,
74
+ supernaturalPresence: worldSeed.settings.supernaturalPresence,
75
+ },
76
+ contentCounts: {
77
+ archetypes: archetypes.length,
78
+ items: content.items.length,
79
+ monsters: monsters.length,
80
+ encounters: content.encounters.length,
81
+ conditions: content.conditions.length,
82
+ locations: locations.length,
83
+ npcs: npcs.length,
84
+ factions: content.factions.length,
85
+ },
86
+ };
87
+ // Build narrative (with defaults if not generated)
88
+ const narrative = content.narrative || {
89
+ openingScenes: [],
90
+ plotHooks: [],
91
+ commonConflicts: [],
92
+ resolutionPatterns: [],
93
+ };
94
+ // Assemble the world pack
95
+ const worldPack = {
96
+ meta,
97
+ archetypes: toRecord(archetypes),
98
+ items: toRecord(content.items),
99
+ monsters: toRecord(monsters),
100
+ encounters: toRecord(content.encounters),
101
+ conditions: toRecord(content.conditions),
102
+ locations: toRecord(locations),
103
+ npcs: toRecord(npcs),
104
+ factions: toRecord(content.factions),
105
+ situations: situations.length > 0 ? toRecord(situations) : undefined,
106
+ arcs: arcs.length > 0 ? toRecord(arcs) : undefined,
107
+ narrativeGuidance: narrative,
108
+ // Include rules configuration from seed (if provided)
109
+ rules: worldSeed.rules,
110
+ };
111
+ // Save the world pack
112
+ const packId = worldSeed.id;
113
+ await saveWorldPack(packId, worldPack);
114
+ // Generate and save documentation
115
+ const booksDir = getWorldBooksDir(packId);
116
+ await mkdir(booksDir, { recursive: true });
117
+ const overview = generateOverview(worldPack);
118
+ const cheatsheet = generateCheatsheet(worldPack);
119
+ await writeFile(join(booksDir, "overview.md"), overview, "utf-8");
120
+ await writeFile(join(booksDir, "cheatsheet.md"), cheatsheet, "utf-8");
121
+ // Update session
122
+ session.generation.worldPackId = packId;
123
+ session.generation.status = "complete";
124
+ await sessionManager.save(session);
125
+ // Update manifest status
126
+ const manifest = await readManifest(input.sessionId);
127
+ if (manifest) {
128
+ manifest.status = "complete";
129
+ await writeManifest(input.sessionId, manifest);
130
+ }
131
+ return {
132
+ message: `World pack assembled and saved with documentation`,
133
+ packId,
134
+ name: meta.name,
135
+ contentCounts: meta.contentCounts,
136
+ docs: {
137
+ overview: `${booksDir}/overview.md`,
138
+ cheatsheet: `${booksDir}/cheatsheet.md`,
139
+ },
140
+ };
141
+ },
142
+ };
143
+ /**
144
+ * Merge base content with expansions by ID using lodash deep merge
145
+ * Expansions extend base content rather than replacing it
146
+ */
147
+ function mergeById(base, expanded) {
148
+ const result = new Map();
149
+ for (const item of base) {
150
+ result.set(item.id, item);
151
+ }
152
+ for (const item of expanded) {
153
+ const existing = result.get(item.id);
154
+ // lodash merge mutates first arg, so clone first
155
+ result.set(item.id, existing ? merge({}, existing, item) : item);
156
+ }
157
+ return Array.from(result.values());
158
+ }
159
+ /**
160
+ * Convert array to record by ID
161
+ */
162
+ function toRecord(items) {
163
+ const record = {};
164
+ for (const item of items) {
165
+ record[item.id] = item;
166
+ }
167
+ return record;
168
+ }
169
+ /**
170
+ * Get generated content with file fallback for empty arrays
171
+ */
172
+ async function getContentWithFallback(sessionId, content) {
173
+ const result = { ...content };
174
+ // Helper to load from file if array is empty
175
+ async function loadIfEmpty(key, filename) {
176
+ if (Array.isArray(result[key]) && result[key].length === 0) {
177
+ const data = await readStepFile(sessionId, filename);
178
+ if (data) {
179
+ // Handle wrapped arrays (e.g., { archetypes: [...] })
180
+ const unwrapped = data[key] || data;
181
+ if (Array.isArray(unwrapped)) {
182
+ result[key] = unwrapped;
183
+ }
184
+ }
185
+ }
186
+ }
187
+ // Load each content type from file if empty
188
+ await loadIfEmpty("archetypes", "archetypes.json");
189
+ await loadIfEmpty("monsters", "monsters.json");
190
+ await loadIfEmpty("items", "items.json");
191
+ await loadIfEmpty("encounters", "encounters.json");
192
+ await loadIfEmpty("locations", "locations.json");
193
+ await loadIfEmpty("npcs", "npcs.json");
194
+ await loadIfEmpty("conditions", "conditions.json");
195
+ await loadIfEmpty("factions", "factions.json");
196
+ await loadIfEmpty("situations", "situations.json");
197
+ await loadIfEmpty("arcs", "arcs.json");
198
+ // Handle narrative specially (not an array)
199
+ if (!result.narrative) {
200
+ const data = await readStepFile(sessionId, "narrative.json");
201
+ if (data) {
202
+ result.narrative = data.narrative || data;
203
+ }
204
+ }
205
+ return result;
206
+ }
207
+ /**
208
+ * Get expansions with file fallback (per-array check)
209
+ */
210
+ async function getExpansionsWithFallback(sessionId, expansions) {
211
+ const result = { ...expansions };
212
+ // Check each array individually and load from files if empty
213
+ const files = await listExpansionFiles(sessionId);
214
+ // Helper to load expansion files matching a prefix into an array
215
+ async function loadIfEmpty(key, prefix) {
216
+ if (result[key].length === 0) {
217
+ for (const file of files) {
218
+ if (file.startsWith(prefix)) {
219
+ const data = await readStepFile(sessionId, `expansions/${file}`);
220
+ if (data) {
221
+ result[key].push(data);
222
+ }
223
+ }
224
+ }
225
+ }
226
+ }
227
+ // Load each expansion type independently if its array is empty
228
+ await loadIfEmpty("locations", "location-");
229
+ await loadIfEmpty("archetypes", "archetype-");
230
+ await loadIfEmpty("npcs", "npc-");
231
+ await loadIfEmpty("monsters", "monster-");
232
+ return result;
233
+ }
234
+ export const assembleTools = [assembleWorldPackTool];
235
+ // Export merge utility for testing
236
+ export { mergeById };
237
+ //# sourceMappingURL=assemble.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"assemble.js","sourceRoot":"","sources":["../../../src/tools/worldpack/assemble.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,18 @@
1
+ /**
2
+ * World Documentation Generator
3
+ *
4
+ * Generates overview.md and cheatsheet.md for a world pack.
5
+ * Pure string assembly - no LLM required.
6
+ */
7
+ import type { WorldContentPack } from "@mythxengine/worlds";
8
+ /**
9
+ * Generate the overview.md document
10
+ * Player-facing world introduction
11
+ */
12
+ export declare function generateOverview(pack: WorldContentPack): string;
13
+ /**
14
+ * Generate the cheatsheet.md document
15
+ * Quick reference for gameplay
16
+ */
17
+ export declare function generateCheatsheet(pack: WorldContentPack): string;
18
+ //# sourceMappingURL=docs-generator.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"docs-generator.d.ts","sourceRoot":"","sources":["../../../src/tools/worldpack/docs-generator.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,KAAK,EAAE,gBAAgB,EAAyD,MAAM,qBAAqB,CAAC;AAEnH;;;GAGG;AACH,wBAAgB,gBAAgB,CAAC,IAAI,EAAE,gBAAgB,GAAG,MAAM,CA2F/D;AAED;;;GAGG;AACH,wBAAgB,kBAAkB,CAAC,IAAI,EAAE,gBAAgB,GAAG,MAAM,CAoIjE"}
@@ -0,0 +1,264 @@
1
+ /**
2
+ * World Documentation Generator
3
+ *
4
+ * Generates overview.md and cheatsheet.md for a world pack.
5
+ * Pure string assembly - no LLM required.
6
+ */
7
+ /**
8
+ * Generate the overview.md document
9
+ * Player-facing world introduction
10
+ */
11
+ export function generateOverview(pack) {
12
+ const { meta, archetypes, locations, npcs, narrativeGuidance } = pack;
13
+ const lines = [];
14
+ // Header
15
+ lines.push(`# ${meta.name}`);
16
+ lines.push(`> ${meta.tagline}`);
17
+ lines.push("");
18
+ // Quick Facts
19
+ lines.push("## Quick Facts");
20
+ lines.push(`- **Tone**: ${meta.aesthetic.tone}`);
21
+ lines.push(`- **Themes**: ${meta.aesthetic.themes.join(", ")}`);
22
+ lines.push(`- **Magic Level**: ${meta.settings.magicLevel}`);
23
+ lines.push(`- **Technology**: ${meta.settings.technologyLevel}`);
24
+ lines.push(`- **Lethality**: ${meta.settings.lethality}`);
25
+ lines.push("");
26
+ // What You Need to Know
27
+ lines.push("## What You Need to Know");
28
+ if (narrativeGuidance?.plotHooks && narrativeGuidance.plotHooks.length > 0) {
29
+ lines.push(narrativeGuidance.plotHooks[0]);
30
+ }
31
+ else {
32
+ lines.push(`*A world of ${meta.aesthetic.themes.join(" and ")}.*`);
33
+ }
34
+ lines.push("");
35
+ // Character Archetypes
36
+ lines.push("## Character Archetypes");
37
+ lines.push("");
38
+ const archetypeList = Object.values(archetypes);
39
+ for (const archetype of archetypeList) {
40
+ lines.push(`### ${archetype.name}`);
41
+ lines.push(`*${archetype.tagline}*`);
42
+ lines.push("");
43
+ lines.push(`- **Abilities**: STR ${formatMod(archetype.starting.abilities.STR)}, AGI ${formatMod(archetype.starting.abilities.AGI)}, WIT ${formatMod(archetype.starting.abilities.WIT)}, CON ${formatMod(archetype.starting.abilities.CON)}`);
44
+ lines.push(`- **HP**: ${archetype.starting.hp}`);
45
+ lines.push(`- **Playstyle**: ${archetype.playstyle}`);
46
+ if (archetype.startingItems && archetype.startingItems.length > 0) {
47
+ lines.push(`- **Starting Equipment**: ${archetype.startingItems.join(", ")}`);
48
+ }
49
+ lines.push("");
50
+ }
51
+ // Known Locations
52
+ lines.push("## Known Locations");
53
+ lines.push("");
54
+ const locationList = Object.values(locations);
55
+ for (const location of locationList) {
56
+ lines.push(`### ${location.name}`);
57
+ lines.push(`*${location.type}*`);
58
+ lines.push("");
59
+ lines.push(location.atmosphere || location.description);
60
+ lines.push("");
61
+ }
62
+ // Opening Scenes
63
+ if (narrativeGuidance?.openingScenes && narrativeGuidance.openingScenes.length > 0) {
64
+ lines.push("## Opening Scenes");
65
+ lines.push("");
66
+ lines.push("Here are some ways your story might begin:");
67
+ lines.push("");
68
+ for (let i = 0; i < Math.min(3, narrativeGuidance.openingScenes.length); i++) {
69
+ lines.push(`${i + 1}. ${narrativeGuidance.openingScenes[i]}`);
70
+ }
71
+ lines.push("");
72
+ }
73
+ // Known Figures (public NPC info only)
74
+ lines.push("## Known Figures");
75
+ lines.push("");
76
+ const npcList = Object.values(npcs);
77
+ for (const npc of npcList) {
78
+ // Only show public info - no secrets
79
+ lines.push(`### ${npc.name}`);
80
+ lines.push(`*${npc.narrativeRole}*`);
81
+ lines.push("");
82
+ lines.push(npc.description);
83
+ if (npc.dialogueHints && npc.dialogueHints.length > 0) {
84
+ lines.push("");
85
+ lines.push(`> "${npc.dialogueHints[0]}"`);
86
+ }
87
+ lines.push("");
88
+ }
89
+ // Footer
90
+ lines.push("---");
91
+ lines.push(`*${meta.name} v${meta.version}*`);
92
+ return lines.join("\n");
93
+ }
94
+ /**
95
+ * Generate the cheatsheet.md document
96
+ * Quick reference for gameplay
97
+ */
98
+ export function generateCheatsheet(pack) {
99
+ const { meta, archetypes, locations, npcs, monsters, conditions } = pack;
100
+ const lines = [];
101
+ // Header
102
+ lines.push(`# ${meta.name} - Quick Reference`);
103
+ lines.push("");
104
+ // Rules Summary - use pack rules config if available, otherwise defaults
105
+ const rules = pack.rules;
106
+ // Difficulty values (from config or defaults)
107
+ const easyDC = rules?.difficulties?.replace?.find(d => d.id === "EASY")?.target
108
+ ?? rules?.difficulties?.add?.find(d => d.id === "EASY")?.target
109
+ ?? 8;
110
+ const standardDC = rules?.difficulties?.replace?.find(d => d.id === "STANDARD")?.target
111
+ ?? rules?.difficulties?.add?.find(d => d.id === "STANDARD")?.target
112
+ ?? 12;
113
+ const hardDC = rules?.difficulties?.replace?.find(d => d.id === "HARD")?.target
114
+ ?? rules?.difficulties?.add?.find(d => d.id === "HARD")?.target
115
+ ?? 16;
116
+ const extremeDC = rules?.difficulties?.replace?.find(d => d.id === "EXTREME")?.target
117
+ ?? rules?.difficulties?.add?.find(d => d.id === "EXTREME")?.target
118
+ ?? 20;
119
+ // Combat values (from config or defaults)
120
+ const defenseBase = rules?.mechanics?.defense?.base ?? 10;
121
+ const defenseAbility = rules?.mechanics?.defense?.ability ?? "AGI";
122
+ lines.push("## Rules Summary");
123
+ lines.push("");
124
+ lines.push("### Tests");
125
+ lines.push("Roll d20 + ability modifier + skill (if applicable) vs Difficulty:");
126
+ lines.push(`- **Easy**: ${easyDC}`);
127
+ lines.push(`- **Standard**: ${standardDC}`);
128
+ lines.push(`- **Hard**: ${hardDC}`);
129
+ lines.push(`- **Extreme**: ${extremeDC}`);
130
+ lines.push("");
131
+ lines.push("### Combat");
132
+ lines.push(`- **Attack**: d20 + ability vs ${defenseBase} + target's ${defenseAbility}`);
133
+ lines.push("- **Damage**: Roll weapon damage, subtract armor");
134
+ lines.push("- **Advantage**: Roll 2d20, keep highest");
135
+ lines.push("- **Disadvantage**: Roll 2d20, keep lowest");
136
+ lines.push("");
137
+ // Abilities
138
+ lines.push("## Abilities");
139
+ lines.push("");
140
+ lines.push("| Ability | Use For |");
141
+ lines.push("|---------|---------|");
142
+ lines.push("| STR | Melee attacks, feats of strength, intimidation |");
143
+ lines.push("| AGI | Ranged attacks, dodging, stealth, acrobatics |");
144
+ lines.push("| WIT | Knowledge, perception, magic, social |");
145
+ lines.push("| CON | Endurance, resistance, concentration |");
146
+ lines.push("");
147
+ // Archetypes Quick Reference
148
+ lines.push("## Archetypes");
149
+ lines.push("");
150
+ lines.push("| Name | HP | Key Ability | Role |");
151
+ lines.push("|------|-----|-------------|------|");
152
+ const archetypeList = Object.values(archetypes);
153
+ for (const arch of archetypeList) {
154
+ const keyAbility = getKeyAbility(arch.starting.abilities);
155
+ const role = arch.playstyle.split(".")[0].substring(0, 30);
156
+ lines.push(`| ${arch.name} | ${arch.starting.hp} | ${keyAbility} | ${role} |`);
157
+ }
158
+ lines.push("");
159
+ // NPCs Quick Reference
160
+ lines.push("## NPCs");
161
+ lines.push("");
162
+ lines.push("| Name | Role | Attitude |");
163
+ lines.push("|------|------|----------|");
164
+ const npcList = Object.values(npcs);
165
+ for (const npc of npcList) {
166
+ lines.push(`| ${npc.name} | ${npc.narrativeRole} | ${npc.attitude || "neutral"} |`);
167
+ }
168
+ lines.push("");
169
+ // Monsters by Threat
170
+ lines.push("## Monsters by Threat");
171
+ lines.push("");
172
+ const monsterList = Object.values(monsters);
173
+ const threatGroups = groupByThreat(monsterList);
174
+ for (const [tier, tierMonsters] of Object.entries(threatGroups)) {
175
+ if (tierMonsters.length === 0)
176
+ continue;
177
+ const hpRange = getHPRange(tier);
178
+ lines.push(`### ${capitalizeFirst(tier)} (HP ${hpRange})`);
179
+ lines.push("");
180
+ lines.push("| Name | HP | Armor | Key Attack |");
181
+ lines.push("|------|-----|-------|------------|");
182
+ for (const mon of tierMonsters) {
183
+ const keyAttack = mon.attacks[0]?.name || "None";
184
+ lines.push(`| ${mon.name} | ${mon.hp} | ${mon.armor} | ${keyAttack} |`);
185
+ }
186
+ lines.push("");
187
+ }
188
+ // Locations
189
+ lines.push("## Locations");
190
+ lines.push("");
191
+ lines.push("| Name | Type | Key Feature |");
192
+ lines.push("|------|------|-------------|");
193
+ const locationList = Object.values(locations);
194
+ for (const loc of locationList) {
195
+ const feature = loc.features?.[0] || loc.atmosphere?.substring(0, 30) || "-";
196
+ lines.push(`| ${loc.name} | ${loc.type} | ${feature} |`);
197
+ }
198
+ lines.push("");
199
+ // Conditions Quick Reference
200
+ if (conditions && Object.keys(conditions).length > 0) {
201
+ lines.push("## Conditions");
202
+ lines.push("");
203
+ lines.push("| Name | Effect | Duration |");
204
+ lines.push("|------|--------|----------|");
205
+ for (const cond of Object.values(conditions)) {
206
+ const effect = cond.description.substring(0, 40);
207
+ const duration = typeof cond.duration === "number" ? `${cond.duration} rounds` : cond.duration;
208
+ lines.push(`| ${cond.name} | ${effect}... | ${duration} |`);
209
+ }
210
+ lines.push("");
211
+ }
212
+ // Footer
213
+ lines.push("---");
214
+ lines.push(`*${meta.name} v${meta.version} - Quick Reference*`);
215
+ return lines.join("\n");
216
+ }
217
+ // Helper functions
218
+ function formatMod(value) {
219
+ return value >= 0 ? `+${value}` : `${value}`;
220
+ }
221
+ function getKeyAbility(abilities) {
222
+ let max = -Infinity;
223
+ let key = "WIT";
224
+ for (const [ability, value] of Object.entries(abilities)) {
225
+ if (value > max) {
226
+ max = value;
227
+ key = ability;
228
+ }
229
+ }
230
+ return key;
231
+ }
232
+ function groupByThreat(monsters) {
233
+ const groups = {
234
+ minion: [],
235
+ standard: [],
236
+ elite: [],
237
+ boss: [],
238
+ };
239
+ for (const mon of monsters) {
240
+ const tier = mon.threat || "standard";
241
+ if (groups[tier]) {
242
+ groups[tier].push(mon);
243
+ }
244
+ }
245
+ return groups;
246
+ }
247
+ function getHPRange(tier) {
248
+ switch (tier) {
249
+ case "minion":
250
+ return "4-6";
251
+ case "standard":
252
+ return "10-14";
253
+ case "elite":
254
+ return "18-24";
255
+ case "boss":
256
+ return "30+";
257
+ default:
258
+ return "?";
259
+ }
260
+ }
261
+ function capitalizeFirst(s) {
262
+ return s.charAt(0).toUpperCase() + s.slice(1);
263
+ }
264
+ //# sourceMappingURL=docs-generator.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"docs-generator.js","sourceRoot":"","sources":["../../../src/tools/worldpack/docs-generator.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,12 @@
1
+ /**
2
+ * Export World Pack Tool
3
+ *
4
+ * Exports a world pack to various formats.
5
+ */
6
+ import type { MCPToolEntry } from "@mythxengine/types";
7
+ /**
8
+ * export_world_pack tool
9
+ */
10
+ export declare const exportWorldPackTool: MCPToolEntry;
11
+ export declare const exportTools: MCPToolEntry[];
12
+ //# sourceMappingURL=export.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"export.d.ts","sourceRoot":"","sources":["../../../src/tools/worldpack/export.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAKH,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAcvD;;GAEG;AACH,eAAO,MAAM,mBAAmB,EAAE,YA2EjC,CAAC;AAgIF,eAAO,MAAM,WAAW,gBAAwB,CAAC"}