@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.
- package/LICENSE +21 -0
- package/dist/__tests__/assemble.test.d.ts +2 -0
- package/dist/__tests__/assemble.test.d.ts.map +1 -0
- package/dist/__tests__/assemble.test.js +81 -0
- package/dist/__tests__/assemble.test.js.map +1 -0
- package/dist/index.d.ts +10 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +38 -0
- package/dist/index.js.map +1 -0
- package/dist/resources/index.d.ts +9 -0
- package/dist/resources/index.d.ts.map +1 -0
- package/dist/resources/index.js +202 -0
- package/dist/resources/index.js.map +1 -0
- package/dist/server.d.ts +41 -0
- package/dist/server.d.ts.map +1 -0
- package/dist/server.js +91 -0
- package/dist/server.js.map +1 -0
- package/dist/state/manager.d.ts +88 -0
- package/dist/state/manager.d.ts.map +1 -0
- package/dist/state/manager.js +308 -0
- package/dist/state/manager.js.map +1 -0
- package/dist/state/rules.d.ts +30 -0
- package/dist/state/rules.d.ts.map +1 -0
- package/dist/state/rules.js +61 -0
- package/dist/state/rules.js.map +1 -0
- package/dist/state/worldpacks.d.ts +43 -0
- package/dist/state/worldpacks.d.ts.map +1 -0
- package/dist/state/worldpacks.js +125 -0
- package/dist/state/worldpacks.js.map +1 -0
- package/dist/tools/augmentation/augment.d.ts +15 -0
- package/dist/tools/augmentation/augment.d.ts.map +1 -0
- package/dist/tools/augmentation/augment.js +512 -0
- package/dist/tools/augmentation/augment.js.map +1 -0
- package/dist/tools/augmentation/index.d.ts +6 -0
- package/dist/tools/augmentation/index.d.ts.map +1 -0
- package/dist/tools/augmentation/index.js +7 -0
- package/dist/tools/augmentation/index.js.map +1 -0
- package/dist/tools/characters.d.ts +26 -0
- package/dist/tools/characters.d.ts.map +1 -0
- package/dist/tools/characters.js +362 -0
- package/dist/tools/characters.js.map +1 -0
- package/dist/tools/clocks.d.ts +33 -0
- package/dist/tools/clocks.d.ts.map +1 -0
- package/dist/tools/clocks.js +438 -0
- package/dist/tools/clocks.js.map +1 -0
- package/dist/tools/combat.d.ts +38 -0
- package/dist/tools/combat.d.ts.map +1 -0
- package/dist/tools/combat.js +574 -0
- package/dist/tools/combat.js.map +1 -0
- package/dist/tools/dice.d.ts +9 -0
- package/dist/tools/dice.d.ts.map +1 -0
- package/dist/tools/dice.js +287 -0
- package/dist/tools/dice.js.map +1 -0
- package/dist/tools/encounters.d.ts +21 -0
- package/dist/tools/encounters.d.ts.map +1 -0
- package/dist/tools/encounters.js +521 -0
- package/dist/tools/encounters.js.map +1 -0
- package/dist/tools/engagement.d.ts +25 -0
- package/dist/tools/engagement.d.ts.map +1 -0
- package/dist/tools/engagement.js +491 -0
- package/dist/tools/engagement.js.map +1 -0
- package/dist/tools/expansion/archetype.d.ts +12 -0
- package/dist/tools/expansion/archetype.d.ts.map +1 -0
- package/dist/tools/expansion/archetype.js +157 -0
- package/dist/tools/expansion/archetype.js.map +1 -0
- package/dist/tools/expansion/index.d.ts +12 -0
- package/dist/tools/expansion/index.d.ts.map +1 -0
- package/dist/tools/expansion/index.js +21 -0
- package/dist/tools/expansion/index.js.map +1 -0
- package/dist/tools/expansion/location.d.ts +12 -0
- package/dist/tools/expansion/location.d.ts.map +1 -0
- package/dist/tools/expansion/location.js +149 -0
- package/dist/tools/expansion/location.js.map +1 -0
- package/dist/tools/expansion/monster.d.ts +12 -0
- package/dist/tools/expansion/monster.d.ts.map +1 -0
- package/dist/tools/expansion/monster.js +157 -0
- package/dist/tools/expansion/monster.js.map +1 -0
- package/dist/tools/expansion/npc.d.ts +12 -0
- package/dist/tools/expansion/npc.d.ts.map +1 -0
- package/dist/tools/expansion/npc.js +153 -0
- package/dist/tools/expansion/npc.js.map +1 -0
- package/dist/tools/generation/archetypes.d.ts +12 -0
- package/dist/tools/generation/archetypes.d.ts.map +1 -0
- package/dist/tools/generation/archetypes.js +129 -0
- package/dist/tools/generation/archetypes.js.map +1 -0
- package/dist/tools/generation/arcs.d.ts +13 -0
- package/dist/tools/generation/arcs.d.ts.map +1 -0
- package/dist/tools/generation/arcs.js +186 -0
- package/dist/tools/generation/arcs.js.map +1 -0
- package/dist/tools/generation/encounters.d.ts +12 -0
- package/dist/tools/generation/encounters.d.ts.map +1 -0
- package/dist/tools/generation/encounters.js +169 -0
- package/dist/tools/generation/encounters.js.map +1 -0
- package/dist/tools/generation/index.d.ts +19 -0
- package/dist/tools/generation/index.d.ts.map +1 -0
- package/dist/tools/generation/index.js +42 -0
- package/dist/tools/generation/index.js.map +1 -0
- package/dist/tools/generation/items.d.ts +12 -0
- package/dist/tools/generation/items.d.ts.map +1 -0
- package/dist/tools/generation/items.js +149 -0
- package/dist/tools/generation/items.js.map +1 -0
- package/dist/tools/generation/locations.d.ts +12 -0
- package/dist/tools/generation/locations.d.ts.map +1 -0
- package/dist/tools/generation/locations.js +131 -0
- package/dist/tools/generation/locations.js.map +1 -0
- package/dist/tools/generation/monsters.d.ts +12 -0
- package/dist/tools/generation/monsters.d.ts.map +1 -0
- package/dist/tools/generation/monsters.js +154 -0
- package/dist/tools/generation/monsters.js.map +1 -0
- package/dist/tools/generation/narrative.d.ts +12 -0
- package/dist/tools/generation/narrative.d.ts.map +1 -0
- package/dist/tools/generation/narrative.js +129 -0
- package/dist/tools/generation/narrative.js.map +1 -0
- package/dist/tools/generation/npcs.d.ts +12 -0
- package/dist/tools/generation/npcs.d.ts.map +1 -0
- package/dist/tools/generation/npcs.js +136 -0
- package/dist/tools/generation/npcs.js.map +1 -0
- package/dist/tools/generation/resume.d.ts +12 -0
- package/dist/tools/generation/resume.d.ts.map +1 -0
- package/dist/tools/generation/resume.js +288 -0
- package/dist/tools/generation/resume.js.map +1 -0
- package/dist/tools/generation/rules-prompt.d.ts +23 -0
- package/dist/tools/generation/rules-prompt.d.ts.map +1 -0
- package/dist/tools/generation/rules-prompt.js +209 -0
- package/dist/tools/generation/rules-prompt.js.map +1 -0
- package/dist/tools/generation/seed.d.ts +12 -0
- package/dist/tools/generation/seed.d.ts.map +1 -0
- package/dist/tools/generation/seed.js +171 -0
- package/dist/tools/generation/seed.js.map +1 -0
- package/dist/tools/generation/situations.d.ts +13 -0
- package/dist/tools/generation/situations.d.ts.map +1 -0
- package/dist/tools/generation/situations.js +247 -0
- package/dist/tools/generation/situations.js.map +1 -0
- package/dist/tools/gm-guidance.d.ts +13 -0
- package/dist/tools/gm-guidance.d.ts.map +1 -0
- package/dist/tools/gm-guidance.js +395 -0
- package/dist/tools/gm-guidance.js.map +1 -0
- package/dist/tools/index.d.ts +33 -0
- package/dist/tools/index.d.ts.map +1 -0
- package/dist/tools/index.js +80 -0
- package/dist/tools/index.js.map +1 -0
- package/dist/tools/investigation.d.ts +41 -0
- package/dist/tools/investigation.d.ts.map +1 -0
- package/dist/tools/investigation.js +586 -0
- package/dist/tools/investigation.js.map +1 -0
- package/dist/tools/leads.d.ts +29 -0
- package/dist/tools/leads.d.ts.map +1 -0
- package/dist/tools/leads.js +460 -0
- package/dist/tools/leads.js.map +1 -0
- package/dist/tools/players.d.ts +30 -0
- package/dist/tools/players.d.ts.map +1 -0
- package/dist/tools/players.js +448 -0
- package/dist/tools/players.js.map +1 -0
- package/dist/tools/portable-clues.d.ts +29 -0
- package/dist/tools/portable-clues.d.ts.map +1 -0
- package/dist/tools/portable-clues.js +490 -0
- package/dist/tools/portable-clues.js.map +1 -0
- package/dist/tools/relationships.d.ts +29 -0
- package/dist/tools/relationships.d.ts.map +1 -0
- package/dist/tools/relationships.js +471 -0
- package/dist/tools/relationships.js.map +1 -0
- package/dist/tools/scene-framing.d.ts +21 -0
- package/dist/tools/scene-framing.d.ts.map +1 -0
- package/dist/tools/scene-framing.js +380 -0
- package/dist/tools/scene-framing.js.map +1 -0
- package/dist/tools/sessions.d.ts +30 -0
- package/dist/tools/sessions.d.ts.map +1 -0
- package/dist/tools/sessions.js +253 -0
- package/dist/tools/sessions.js.map +1 -0
- package/dist/tools/time.d.ts +26 -0
- package/dist/tools/time.d.ts.map +1 -0
- package/dist/tools/time.js +438 -0
- package/dist/tools/time.js.map +1 -0
- package/dist/tools/turns.d.ts +38 -0
- package/dist/tools/turns.d.ts.map +1 -0
- package/dist/tools/turns.js +560 -0
- package/dist/tools/turns.js.map +1 -0
- package/dist/tools/worldpack/assemble.d.ts +20 -0
- package/dist/tools/worldpack/assemble.d.ts.map +1 -0
- package/dist/tools/worldpack/assemble.js +237 -0
- package/dist/tools/worldpack/assemble.js.map +1 -0
- package/dist/tools/worldpack/docs-generator.d.ts +18 -0
- package/dist/tools/worldpack/docs-generator.d.ts.map +1 -0
- package/dist/tools/worldpack/docs-generator.js +264 -0
- package/dist/tools/worldpack/docs-generator.js.map +1 -0
- package/dist/tools/worldpack/export.d.ts +12 -0
- package/dist/tools/worldpack/export.d.ts.map +1 -0
- package/dist/tools/worldpack/export.js +209 -0
- package/dist/tools/worldpack/export.js.map +1 -0
- package/dist/tools/worldpack/index.d.ts +15 -0
- package/dist/tools/worldpack/index.d.ts.map +1 -0
- package/dist/tools/worldpack/index.js +30 -0
- package/dist/tools/worldpack/index.js.map +1 -0
- package/dist/tools/worldpack/lookup.d.ts +19 -0
- package/dist/tools/worldpack/lookup.d.ts.map +1 -0
- package/dist/tools/worldpack/lookup.js +320 -0
- package/dist/tools/worldpack/lookup.js.map +1 -0
- package/dist/tools/worldpack/manage.d.ts +20 -0
- package/dist/tools/worldpack/manage.d.ts.map +1 -0
- package/dist/tools/worldpack/manage.js +101 -0
- package/dist/tools/worldpack/manage.js.map +1 -0
- package/dist/tools/worldpack/save-result.d.ts +12 -0
- package/dist/tools/worldpack/save-result.d.ts.map +1 -0
- package/dist/tools/worldpack/save-result.js +222 -0
- package/dist/tools/worldpack/save-result.js.map +1 -0
- package/dist/tools/worldpack/summary.d.ts +13 -0
- package/dist/tools/worldpack/summary.d.ts.map +1 -0
- package/dist/tools/worldpack/summary.js +180 -0
- package/dist/tools/worldpack/summary.js.map +1 -0
- package/dist/tools/worldpack/validate.d.ts +12 -0
- package/dist/tools/worldpack/validate.d.ts.map +1 -0
- package/dist/tools/worldpack/validate.js +388 -0
- package/dist/tools/worldpack/validate.js.map +1 -0
- 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":"AAAA;;;;;GAKG;AAIH;;;GAGG;AACH,MAAM,UAAU,gBAAgB,CAAC,IAAsB;IACrD,MAAM,EAAE,IAAI,EAAE,UAAU,EAAE,SAAS,EAAE,IAAI,EAAE,iBAAiB,EAAE,GAAG,IAAI,CAAC;IAEtE,MAAM,KAAK,GAAa,EAAE,CAAC;IAE3B,SAAS;IACT,KAAK,CAAC,IAAI,CAAC,KAAK,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC;IAC7B,KAAK,CAAC,IAAI,CAAC,KAAK,IAAI,CAAC,OAAO,EAAE,CAAC,CAAC;IAChC,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IAEf,cAAc;IACd,KAAK,CAAC,IAAI,CAAC,gBAAgB,CAAC,CAAC;IAC7B,KAAK,CAAC,IAAI,CAAC,eAAe,IAAI,CAAC,SAAS,CAAC,IAAI,EAAE,CAAC,CAAC;IACjD,KAAK,CAAC,IAAI,CAAC,iBAAiB,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IAChE,KAAK,CAAC,IAAI,CAAC,sBAAsB,IAAI,CAAC,QAAQ,CAAC,UAAU,EAAE,CAAC,CAAC;IAC7D,KAAK,CAAC,IAAI,CAAC,qBAAqB,IAAI,CAAC,QAAQ,CAAC,eAAe,EAAE,CAAC,CAAC;IACjE,KAAK,CAAC,IAAI,CAAC,oBAAoB,IAAI,CAAC,QAAQ,CAAC,SAAS,EAAE,CAAC,CAAC;IAC1D,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IAEf,wBAAwB;IACxB,KAAK,CAAC,IAAI,CAAC,0BAA0B,CAAC,CAAC;IACvC,IAAI,iBAAiB,EAAE,SAAS,IAAI,iBAAiB,CAAC,SAAS,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QAC3E,KAAK,CAAC,IAAI,CAAC,iBAAiB,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC;IAC7C,CAAC;SAAM,CAAC;QACN,KAAK,CAAC,IAAI,CAAC,eAAe,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;IACrE,CAAC;IACD,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IAEf,uBAAuB;IACvB,KAAK,CAAC,IAAI,CAAC,yBAAyB,CAAC,CAAC;IACtC,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IACf,MAAM,aAAa,GAAG,MAAM,CAAC,MAAM,CAAC,UAAU,CAAqB,CAAC;IACpE,KAAK,MAAM,SAAS,IAAI,aAAa,EAAE,CAAC;QACtC,KAAK,CAAC,IAAI,CAAC,OAAO,SAAS,CAAC,IAAI,EAAE,CAAC,CAAC;QACpC,KAAK,CAAC,IAAI,CAAC,IAAI,SAAS,CAAC,OAAO,GAAG,CAAC,CAAC;QACrC,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QACf,KAAK,CAAC,IAAI,CAAC,wBAAwB,SAAS,CAAC,SAAS,CAAC,QAAQ,CAAC,SAAS,CAAC,GAAG,CAAC,SAAS,SAAS,CAAC,SAAS,CAAC,QAAQ,CAAC,SAAS,CAAC,GAAG,CAAC,SAAS,SAAS,CAAC,SAAS,CAAC,QAAQ,CAAC,SAAS,CAAC,GAAG,CAAC,SAAS,SAAS,CAAC,SAAS,CAAC,QAAQ,CAAC,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;QAC9O,KAAK,CAAC,IAAI,CAAC,aAAa,SAAS,CAAC,QAAQ,CAAC,EAAE,EAAE,CAAC,CAAC;QACjD,KAAK,CAAC,IAAI,CAAC,oBAAoB,SAAS,CAAC,SAAS,EAAE,CAAC,CAAC;QACtD,IAAI,SAAS,CAAC,aAAa,IAAI,SAAS,CAAC,aAAa,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YAClE,KAAK,CAAC,IAAI,CAAC,6BAA6B,SAAS,CAAC,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QAChF,CAAC;QACD,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IACjB,CAAC;IAED,kBAAkB;IAClB,KAAK,CAAC,IAAI,CAAC,oBAAoB,CAAC,CAAC;IACjC,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IACf,MAAM,YAAY,GAAG,MAAM,CAAC,MAAM,CAAC,SAAS,CAAoB,CAAC;IACjE,KAAK,MAAM,QAAQ,IAAI,YAAY,EAAE,CAAC;QACpC,KAAK,CAAC,IAAI,CAAC,OAAO,QAAQ,CAAC,IAAI,EAAE,CAAC,CAAC;QACnC,KAAK,CAAC,IAAI,CAAC,IAAI,QAAQ,CAAC,IAAI,GAAG,CAAC,CAAC;QACjC,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QACf,KAAK,CAAC,IAAI,CAAC,QAAQ,CAAC,UAAU,IAAI,QAAQ,CAAC,WAAW,CAAC,CAAC;QACxD,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IACjB,CAAC;IAED,iBAAiB;IACjB,IAAI,iBAAiB,EAAE,aAAa,IAAI,iBAAiB,CAAC,aAAa,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACnF,KAAK,CAAC,IAAI,CAAC,mBAAmB,CAAC,CAAC;QAChC,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QACf,KAAK,CAAC,IAAI,CAAC,4CAA4C,CAAC,CAAC;QACzD,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QACf,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,iBAAiB,CAAC,aAAa,CAAC,MAAM,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC;YAC7E,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,KAAK,iBAAiB,CAAC,aAAa,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;QAChE,CAAC;QACD,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IACjB,CAAC;IAED,uCAAuC;IACvC,KAAK,CAAC,IAAI,CAAC,kBAAkB,CAAC,CAAC;IAC/B,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IACf,MAAM,OAAO,GAAG,MAAM,CAAC,MAAM,CAAC,IAAI,CAAe,CAAC;IAClD,KAAK,MAAM,GAAG,IAAI,OAAO,EAAE,CAAC;QAC1B,qCAAqC;QACrC,KAAK,CAAC,IAAI,CAAC,OAAO,GAAG,CAAC,IAAI,EAAE,CAAC,CAAC;QAC9B,KAAK,CAAC,IAAI,CAAC,IAAI,GAAG,CAAC,aAAa,GAAG,CAAC,CAAC;QACrC,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QACf,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,WAAW,CAAC,CAAC;QAC5B,IAAI,GAAG,CAAC,aAAa,IAAI,GAAG,CAAC,aAAa,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YACtD,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;YACf,KAAK,CAAC,IAAI,CAAC,MAAM,GAAG,CAAC,aAAa,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;QAC5C,CAAC;QACD,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IACjB,CAAC;IAED,SAAS;IACT,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IAClB,KAAK,CAAC,IAAI,CAAC,IAAI,IAAI,CAAC,IAAI,KAAK,IAAI,CAAC,OAAO,GAAG,CAAC,CAAC;IAE9C,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAC1B,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,kBAAkB,CAAC,IAAsB;IACvD,MAAM,EAAE,IAAI,EAAE,UAAU,EAAE,SAAS,EAAE,IAAI,EAAE,QAAQ,EAAE,UAAU,EAAE,GAAG,IAAI,CAAC;IAEzE,MAAM,KAAK,GAAa,EAAE,CAAC;IAE3B,SAAS;IACT,KAAK,CAAC,IAAI,CAAC,KAAK,IAAI,CAAC,IAAI,oBAAoB,CAAC,CAAC;IAC/C,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IAEf,yEAAyE;IACzE,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC;IAEzB,8CAA8C;IAC9C,MAAM,MAAM,GAAG,KAAK,EAAE,YAAY,EAAE,OAAO,EAAE,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,KAAK,MAAM,CAAC,EAAE,MAAM;WAC1E,KAAK,EAAE,YAAY,EAAE,GAAG,EAAE,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,KAAK,MAAM,CAAC,EAAE,MAAM;WAC5D,CAAC,CAAC;IACP,MAAM,UAAU,GAAG,KAAK,EAAE,YAAY,EAAE,OAAO,EAAE,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,KAAK,UAAU,CAAC,EAAE,MAAM;WAClF,KAAK,EAAE,YAAY,EAAE,GAAG,EAAE,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,KAAK,UAAU,CAAC,EAAE,MAAM;WAChE,EAAE,CAAC;IACR,MAAM,MAAM,GAAG,KAAK,EAAE,YAAY,EAAE,OAAO,EAAE,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,KAAK,MAAM,CAAC,EAAE,MAAM;WAC1E,KAAK,EAAE,YAAY,EAAE,GAAG,EAAE,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,KAAK,MAAM,CAAC,EAAE,MAAM;WAC5D,EAAE,CAAC;IACR,MAAM,SAAS,GAAG,KAAK,EAAE,YAAY,EAAE,OAAO,EAAE,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,KAAK,SAAS,CAAC,EAAE,MAAM;WAChF,KAAK,EAAE,YAAY,EAAE,GAAG,EAAE,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,KAAK,SAAS,CAAC,EAAE,MAAM;WAC/D,EAAE,CAAC;IAER,0CAA0C;IAC1C,MAAM,WAAW,GAAG,KAAK,EAAE,SAAS,EAAE,OAAO,EAAE,IAAI,IAAI,EAAE,CAAC;IAC1D,MAAM,cAAc,GAAG,KAAK,EAAE,SAAS,EAAE,OAAO,EAAE,OAAO,IAAI,KAAK,CAAC;IAEnE,KAAK,CAAC,IAAI,CAAC,kBAAkB,CAAC,CAAC;IAC/B,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IACf,KAAK,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;IACxB,KAAK,CAAC,IAAI,CAAC,oEAAoE,CAAC,CAAC;IACjF,KAAK,CAAC,IAAI,CAAC,eAAe,MAAM,EAAE,CAAC,CAAC;IACpC,KAAK,CAAC,IAAI,CAAC,mBAAmB,UAAU,EAAE,CAAC,CAAC;IAC5C,KAAK,CAAC,IAAI,CAAC,eAAe,MAAM,EAAE,CAAC,CAAC;IACpC,KAAK,CAAC,IAAI,CAAC,kBAAkB,SAAS,EAAE,CAAC,CAAC;IAC1C,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IACf,KAAK,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;IACzB,KAAK,CAAC,IAAI,CAAC,kCAAkC,WAAW,eAAe,cAAc,EAAE,CAAC,CAAC;IACzF,KAAK,CAAC,IAAI,CAAC,kDAAkD,CAAC,CAAC;IAC/D,KAAK,CAAC,IAAI,CAAC,0CAA0C,CAAC,CAAC;IACvD,KAAK,CAAC,IAAI,CAAC,4CAA4C,CAAC,CAAC;IACzD,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IAEf,YAAY;IACZ,KAAK,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC;IAC3B,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IACf,KAAK,CAAC,IAAI,CAAC,uBAAuB,CAAC,CAAC;IACpC,KAAK,CAAC,IAAI,CAAC,uBAAuB,CAAC,CAAC;IACpC,KAAK,CAAC,IAAI,CAAC,0DAA0D,CAAC,CAAC;IACvE,KAAK,CAAC,IAAI,CAAC,wDAAwD,CAAC,CAAC;IACrE,KAAK,CAAC,IAAI,CAAC,gDAAgD,CAAC,CAAC;IAC7D,KAAK,CAAC,IAAI,CAAC,gDAAgD,CAAC,CAAC;IAC7D,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IAEf,6BAA6B;IAC7B,KAAK,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC;IAC5B,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IACf,KAAK,CAAC,IAAI,CAAC,oCAAoC,CAAC,CAAC;IACjD,KAAK,CAAC,IAAI,CAAC,qCAAqC,CAAC,CAAC;IAClD,MAAM,aAAa,GAAG,MAAM,CAAC,MAAM,CAAC,UAAU,CAAqB,CAAC;IACpE,KAAK,MAAM,IAAI,IAAI,aAAa,EAAE,CAAC;QACjC,MAAM,UAAU,GAAG,aAAa,CAAC,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC;QAC1D,MAAM,IAAI,GAAG,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;QAC3D,KAAK,CAAC,IAAI,CAAC,KAAK,IAAI,CAAC,IAAI,MAAM,IAAI,CAAC,QAAQ,CAAC,EAAE,MAAM,UAAU,MAAM,IAAI,IAAI,CAAC,CAAC;IACjF,CAAC;IACD,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IAEf,uBAAuB;IACvB,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;IACtB,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IACf,KAAK,CAAC,IAAI,CAAC,4BAA4B,CAAC,CAAC;IACzC,KAAK,CAAC,IAAI,CAAC,4BAA4B,CAAC,CAAC;IACzC,MAAM,OAAO,GAAG,MAAM,CAAC,MAAM,CAAC,IAAI,CAAe,CAAC;IAClD,KAAK,MAAM,GAAG,IAAI,OAAO,EAAE,CAAC;QAC1B,KAAK,CAAC,IAAI,CAAC,KAAK,GAAG,CAAC,IAAI,MAAM,GAAG,CAAC,aAAa,MAAM,GAAG,CAAC,QAAQ,IAAI,SAAS,IAAI,CAAC,CAAC;IACtF,CAAC;IACD,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IAEf,qBAAqB;IACrB,KAAK,CAAC,IAAI,CAAC,uBAAuB,CAAC,CAAC;IACpC,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IACf,MAAM,WAAW,GAAG,MAAM,CAAC,MAAM,CAAC,QAAQ,CAAmB,CAAC;IAC9D,MAAM,YAAY,GAAG,aAAa,CAAC,WAAW,CAAC,CAAC;IAEhD,KAAK,MAAM,CAAC,IAAI,EAAE,YAAY,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,YAAY,CAAC,EAAE,CAAC;QAChE,IAAI,YAAY,CAAC,MAAM,KAAK,CAAC;YAAE,SAAS;QACxC,MAAM,OAAO,GAAG,UAAU,CAAC,IAAI,CAAC,CAAC;QACjC,KAAK,CAAC,IAAI,CAAC,OAAO,eAAe,CAAC,IAAI,CAAC,QAAQ,OAAO,GAAG,CAAC,CAAC;QAC3D,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QACf,KAAK,CAAC,IAAI,CAAC,oCAAoC,CAAC,CAAC;QACjD,KAAK,CAAC,IAAI,CAAC,qCAAqC,CAAC,CAAC;QAClD,KAAK,MAAM,GAAG,IAAI,YAAY,EAAE,CAAC;YAC/B,MAAM,SAAS,GAAG,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,IAAI,IAAI,MAAM,CAAC;YACjD,KAAK,CAAC,IAAI,CAAC,KAAK,GAAG,CAAC,IAAI,MAAM,GAAG,CAAC,EAAE,MAAM,GAAG,CAAC,KAAK,MAAM,SAAS,IAAI,CAAC,CAAC;QAC1E,CAAC;QACD,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IACjB,CAAC;IAED,YAAY;IACZ,KAAK,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC;IAC3B,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IACf,KAAK,CAAC,IAAI,CAAC,+BAA+B,CAAC,CAAC;IAC5C,KAAK,CAAC,IAAI,CAAC,+BAA+B,CAAC,CAAC;IAC5C,MAAM,YAAY,GAAG,MAAM,CAAC,MAAM,CAAC,SAAS,CAAoB,CAAC;IACjE,KAAK,MAAM,GAAG,IAAI,YAAY,EAAE,CAAC;QAC/B,MAAM,OAAO,GAAG,GAAG,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC,IAAI,GAAG,CAAC,UAAU,EAAE,SAAS,CAAC,CAAC,EAAE,EAAE,CAAC,IAAI,GAAG,CAAC;QAC7E,KAAK,CAAC,IAAI,CAAC,KAAK,GAAG,CAAC,IAAI,MAAM,GAAG,CAAC,IAAI,MAAM,OAAO,IAAI,CAAC,CAAC;IAC3D,CAAC;IACD,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IAEf,6BAA6B;IAC7B,IAAI,UAAU,IAAI,MAAM,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACrD,KAAK,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC;QAC5B,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QACf,KAAK,CAAC,IAAI,CAAC,8BAA8B,CAAC,CAAC;QAC3C,KAAK,CAAC,IAAI,CAAC,8BAA8B,CAAC,CAAC;QAC3C,KAAK,MAAM,IAAI,IAAI,MAAM,CAAC,MAAM,CAAC,UAAU,CAAC,EAAE,CAAC;YAC7C,MAAM,MAAM,GAAG,IAAI,CAAC,WAAW,CAAC,SAAS,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;YACjD,MAAM,QAAQ,GAAG,OAAO,IAAI,CAAC,QAAQ,KAAK,QAAQ,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,QAAQ,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC;YAC/F,KAAK,CAAC,IAAI,CAAC,KAAK,IAAI,CAAC,IAAI,MAAM,MAAM,SAAS,QAAQ,IAAI,CAAC,CAAC;QAC9D,CAAC;QACD,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IACjB,CAAC;IAED,SAAS;IACT,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IAClB,KAAK,CAAC,IAAI,CAAC,IAAI,IAAI,CAAC,IAAI,KAAK,IAAI,CAAC,OAAO,qBAAqB,CAAC,CAAC;IAEhE,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAC1B,CAAC;AAED,mBAAmB;AAEnB,SAAS,SAAS,CAAC,KAAa;IAC9B,OAAO,KAAK,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,KAAK,EAAE,CAAC,CAAC,CAAC,GAAG,KAAK,EAAE,CAAC;AAC/C,CAAC;AAED,SAAS,aAAa,CAAC,SAAiC;IACtD,IAAI,GAAG,GAAG,CAAC,QAAQ,CAAC;IACpB,IAAI,GAAG,GAAG,KAAK,CAAC;IAChB,KAAK,MAAM,CAAC,OAAO,EAAE,KAAK,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,SAAS,CAAC,EAAE,CAAC;QACzD,IAAI,KAAK,GAAG,GAAG,EAAE,CAAC;YAChB,GAAG,GAAG,KAAK,CAAC;YACZ,GAAG,GAAG,OAAO,CAAC;QAChB,CAAC;IACH,CAAC;IACD,OAAO,GAAG,CAAC;AACb,CAAC;AAED,SAAS,aAAa,CAAC,QAAwB;IAC7C,MAAM,MAAM,GAAmC;QAC7C,MAAM,EAAE,EAAE;QACV,QAAQ,EAAE,EAAE;QACZ,KAAK,EAAE,EAAE;QACT,IAAI,EAAE,EAAE;KACT,CAAC;IACF,KAAK,MAAM,GAAG,IAAI,QAAQ,EAAE,CAAC;QAC3B,MAAM,IAAI,GAAG,GAAG,CAAC,MAAM,IAAI,UAAU,CAAC;QACtC,IAAI,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC;YACjB,MAAM,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QACzB,CAAC;IACH,CAAC;IACD,OAAO,MAAM,CAAC;AAChB,CAAC;AAED,SAAS,UAAU,CAAC,IAAY;IAC9B,QAAQ,IAAI,EAAE,CAAC;QACb,KAAK,QAAQ;YACX,OAAO,KAAK,CAAC;QACf,KAAK,UAAU;YACb,OAAO,OAAO,CAAC;QACjB,KAAK,OAAO;YACV,OAAO,OAAO,CAAC;QACjB,KAAK,MAAM;YACT,OAAO,KAAK,CAAC;QACf;YACE,OAAO,GAAG,CAAC;IACf,CAAC;AACH,CAAC;AAED,SAAS,eAAe,CAAC,CAAS;IAChC,OAAO,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,WAAW,EAAE,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;AAChD,CAAC"}
|
|
@@ -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"}
|