@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,288 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Resume Generation Tool
|
|
3
|
+
*
|
|
4
|
+
* Resumes an interrupted world generation session from file-based state.
|
|
5
|
+
*/
|
|
6
|
+
import { z } from "zod";
|
|
7
|
+
import { createEmptyGenerationSession } from "@mythxengine/types";
|
|
8
|
+
import { sessionManager, readManifest, readStepFile, listStepFiles, listExpansionFiles, getGenerationDir, } from "../../state/manager.js";
|
|
9
|
+
// Basic validation schema for generated content items (must have id)
|
|
10
|
+
const ContentItemSchema = z.object({ id: z.string().min(1) }).passthrough();
|
|
11
|
+
// Validation helpers
|
|
12
|
+
function isValidContentArray(data) {
|
|
13
|
+
if (!Array.isArray(data))
|
|
14
|
+
return false;
|
|
15
|
+
// Validate that all items have id field
|
|
16
|
+
for (const item of data) {
|
|
17
|
+
const result = ContentItemSchema.safeParse(item);
|
|
18
|
+
if (!result.success)
|
|
19
|
+
return false;
|
|
20
|
+
}
|
|
21
|
+
return true;
|
|
22
|
+
}
|
|
23
|
+
function isValidWorldSeed(data) {
|
|
24
|
+
// World seed should be an object with meta field at minimum
|
|
25
|
+
if (typeof data !== "object" || data === null)
|
|
26
|
+
return false;
|
|
27
|
+
return "meta" in data;
|
|
28
|
+
}
|
|
29
|
+
const ResumeGenerationInput = z.object({
|
|
30
|
+
sessionId: z.string(),
|
|
31
|
+
reconstruct: z.boolean().optional().default(false).describe("If true, reconstruct session.generation from step files"),
|
|
32
|
+
});
|
|
33
|
+
/**
|
|
34
|
+
* Analyze step files vs manifest to find discrepancies
|
|
35
|
+
*/
|
|
36
|
+
async function analyzeGenerationState(sessionId, manifest) {
|
|
37
|
+
const steps = [];
|
|
38
|
+
const completedSteps = [];
|
|
39
|
+
const incompleteSteps = [];
|
|
40
|
+
const failedSteps = [];
|
|
41
|
+
const missingFiles = [];
|
|
42
|
+
if (!manifest) {
|
|
43
|
+
return { steps, completedSteps, incompleteSteps, failedSteps, missingFiles };
|
|
44
|
+
}
|
|
45
|
+
// Check each step in manifest
|
|
46
|
+
for (const step of manifest.steps) {
|
|
47
|
+
const stepStatus = {
|
|
48
|
+
type: step.type,
|
|
49
|
+
status: step.status,
|
|
50
|
+
file: step.file,
|
|
51
|
+
error: step.error,
|
|
52
|
+
generatedIds: step.generatedIds,
|
|
53
|
+
};
|
|
54
|
+
if (step.status === "completed") {
|
|
55
|
+
// Verify file exists
|
|
56
|
+
if (step.file) {
|
|
57
|
+
const data = await readStepFile(sessionId, step.file);
|
|
58
|
+
if (data) {
|
|
59
|
+
completedSteps.push(step.type);
|
|
60
|
+
}
|
|
61
|
+
else {
|
|
62
|
+
stepStatus.status = "missing";
|
|
63
|
+
missingFiles.push(step.file);
|
|
64
|
+
}
|
|
65
|
+
}
|
|
66
|
+
else {
|
|
67
|
+
completedSteps.push(step.type);
|
|
68
|
+
}
|
|
69
|
+
}
|
|
70
|
+
else if (step.status === "in_progress") {
|
|
71
|
+
incompleteSteps.push(step.type);
|
|
72
|
+
}
|
|
73
|
+
else if (step.status === "failed") {
|
|
74
|
+
failedSteps.push(step.type);
|
|
75
|
+
}
|
|
76
|
+
steps.push(stepStatus);
|
|
77
|
+
}
|
|
78
|
+
// Check for orphan files not in manifest
|
|
79
|
+
const stepFiles = await listStepFiles(sessionId);
|
|
80
|
+
const expansionFiles = await listExpansionFiles(sessionId);
|
|
81
|
+
const allFiles = [...stepFiles, ...expansionFiles.map((f) => `expansions/${f}`)];
|
|
82
|
+
for (const file of allFiles) {
|
|
83
|
+
const inManifest = manifest.steps.some((s) => s.file === file);
|
|
84
|
+
if (!inManifest) {
|
|
85
|
+
// Orphan file - has data but not tracked in manifest
|
|
86
|
+
const type = file.replace(".json", "").replace("expansions/", "");
|
|
87
|
+
steps.push({
|
|
88
|
+
type: `orphan:${type}`,
|
|
89
|
+
status: "completed",
|
|
90
|
+
file,
|
|
91
|
+
});
|
|
92
|
+
}
|
|
93
|
+
}
|
|
94
|
+
return { steps, completedSteps, incompleteSteps, failedSteps, missingFiles };
|
|
95
|
+
}
|
|
96
|
+
/**
|
|
97
|
+
* Reconstruct session.generation from step files
|
|
98
|
+
*/
|
|
99
|
+
async function reconstructSessionGeneration(sessionId, manifest) {
|
|
100
|
+
const session = await sessionManager.get(sessionId);
|
|
101
|
+
if (!session) {
|
|
102
|
+
throw new Error(`Session not found: ${sessionId}`);
|
|
103
|
+
}
|
|
104
|
+
// Initialize generation if needed
|
|
105
|
+
if (!session.generation) {
|
|
106
|
+
session.generation = createEmptyGenerationSession();
|
|
107
|
+
}
|
|
108
|
+
// Load world seed with validation
|
|
109
|
+
const seedData = await readStepFile(sessionId, "seed.json");
|
|
110
|
+
if (seedData && isValidWorldSeed(seedData)) {
|
|
111
|
+
session.generation.worldSeed = seedData;
|
|
112
|
+
}
|
|
113
|
+
// Load base content types
|
|
114
|
+
const contentTypes = [
|
|
115
|
+
{ file: "archetypes.json", key: "archetypes" },
|
|
116
|
+
{ file: "monsters.json", key: "monsters" },
|
|
117
|
+
{ file: "items.json", key: "items" },
|
|
118
|
+
{ file: "encounters.json", key: "encounters" },
|
|
119
|
+
{ file: "locations.json", key: "locations" },
|
|
120
|
+
{ file: "npcs.json", key: "npcs" },
|
|
121
|
+
{ file: "narrative.json", key: "narrative" },
|
|
122
|
+
{ file: "situations.json", key: "situations" },
|
|
123
|
+
{ file: "arcs.json", key: "arcs" },
|
|
124
|
+
];
|
|
125
|
+
for (const { file, key } of contentTypes) {
|
|
126
|
+
const data = await readStepFile(sessionId, file);
|
|
127
|
+
if (data) {
|
|
128
|
+
if (key === "narrative") {
|
|
129
|
+
// Narrative is a plain object, not an array
|
|
130
|
+
if (typeof data === "object" && data !== null) {
|
|
131
|
+
session.generation.generatedContent.narrative = data;
|
|
132
|
+
}
|
|
133
|
+
}
|
|
134
|
+
else {
|
|
135
|
+
// Handle wrapped arrays (e.g., { archetypes: [...] }) or direct arrays
|
|
136
|
+
const dataObj = data;
|
|
137
|
+
const unwrapped = dataObj[key] ?? data;
|
|
138
|
+
// Validate array items have id field before assignment
|
|
139
|
+
if (isValidContentArray(unwrapped)) {
|
|
140
|
+
session.generation.generatedContent[key] = unwrapped;
|
|
141
|
+
}
|
|
142
|
+
}
|
|
143
|
+
}
|
|
144
|
+
}
|
|
145
|
+
// Load expansion files with validation
|
|
146
|
+
const expansionFiles = await listExpansionFiles(sessionId);
|
|
147
|
+
for (const file of expansionFiles) {
|
|
148
|
+
const data = await readStepFile(sessionId, `expansions/${file}`);
|
|
149
|
+
if (!data)
|
|
150
|
+
continue;
|
|
151
|
+
// Validate expansion data has id field
|
|
152
|
+
const validationResult = ContentItemSchema.safeParse(data);
|
|
153
|
+
if (!validationResult.success)
|
|
154
|
+
continue;
|
|
155
|
+
if (file.startsWith("location-")) {
|
|
156
|
+
session.generation.expansions.locations.push(data);
|
|
157
|
+
}
|
|
158
|
+
else if (file.startsWith("archetype-")) {
|
|
159
|
+
session.generation.expansions.archetypes.push(data);
|
|
160
|
+
}
|
|
161
|
+
else if (file.startsWith("npc-")) {
|
|
162
|
+
session.generation.expansions.npcs.push(data);
|
|
163
|
+
}
|
|
164
|
+
else if (file.startsWith("monster-")) {
|
|
165
|
+
session.generation.expansions.monsters.push(data);
|
|
166
|
+
}
|
|
167
|
+
}
|
|
168
|
+
// Reconstruct history from manifest steps
|
|
169
|
+
session.generation.history = manifest.steps.map((step, index) => ({
|
|
170
|
+
id: `reconstructed-${index}`,
|
|
171
|
+
type: step.type,
|
|
172
|
+
startedAt: manifest.createdAt,
|
|
173
|
+
completedAt: step.completedAt || null,
|
|
174
|
+
status: step.status,
|
|
175
|
+
error: step.error,
|
|
176
|
+
generatedIds: step.generatedIds || [],
|
|
177
|
+
}));
|
|
178
|
+
// Update status
|
|
179
|
+
session.generation.status = manifest.status;
|
|
180
|
+
// Save reconstructed session
|
|
181
|
+
await sessionManager.save(session);
|
|
182
|
+
}
|
|
183
|
+
/**
|
|
184
|
+
* resume_generation tool
|
|
185
|
+
*/
|
|
186
|
+
export const resumeGenerationTool = {
|
|
187
|
+
name: "resume_generation",
|
|
188
|
+
description: "Resume an interrupted world generation session. Reads manifest and step files to report status and optionally reconstruct session state.",
|
|
189
|
+
inputSchema: {
|
|
190
|
+
type: "object",
|
|
191
|
+
properties: {
|
|
192
|
+
sessionId: { type: "string", description: "Session ID" },
|
|
193
|
+
reconstruct: {
|
|
194
|
+
type: "boolean",
|
|
195
|
+
description: "If true, reconstruct session.generation from step files",
|
|
196
|
+
},
|
|
197
|
+
},
|
|
198
|
+
required: ["sessionId"],
|
|
199
|
+
},
|
|
200
|
+
handler: async (args) => {
|
|
201
|
+
const input = ResumeGenerationInput.parse(args);
|
|
202
|
+
// Check if session exists
|
|
203
|
+
const session = await sessionManager.get(input.sessionId);
|
|
204
|
+
if (!session) {
|
|
205
|
+
throw new Error(`Session not found: ${input.sessionId}`);
|
|
206
|
+
}
|
|
207
|
+
// Read manifest
|
|
208
|
+
const manifest = await readManifest(input.sessionId);
|
|
209
|
+
const generationDir = getGenerationDir(input.sessionId);
|
|
210
|
+
// If no manifest, check if generation dir exists
|
|
211
|
+
if (!manifest) {
|
|
212
|
+
const stepFiles = await listStepFiles(input.sessionId);
|
|
213
|
+
if (stepFiles.length === 0) {
|
|
214
|
+
return {
|
|
215
|
+
sessionId: input.sessionId,
|
|
216
|
+
generationDir,
|
|
217
|
+
manifestStatus: "no_manifest",
|
|
218
|
+
steps: [],
|
|
219
|
+
completedSteps: [],
|
|
220
|
+
incompleteSteps: [],
|
|
221
|
+
failedSteps: [],
|
|
222
|
+
missingFiles: [],
|
|
223
|
+
reconstructed: false,
|
|
224
|
+
message: "No generation manifest found. Start a new world generation with generate_world_seed.",
|
|
225
|
+
};
|
|
226
|
+
}
|
|
227
|
+
// Has orphan files but no manifest
|
|
228
|
+
return {
|
|
229
|
+
sessionId: input.sessionId,
|
|
230
|
+
generationDir,
|
|
231
|
+
manifestStatus: "no_manifest",
|
|
232
|
+
steps: stepFiles.map((f) => ({
|
|
233
|
+
type: `orphan:${f.replace(".json", "")}`,
|
|
234
|
+
status: "completed",
|
|
235
|
+
file: f,
|
|
236
|
+
})),
|
|
237
|
+
completedSteps: [],
|
|
238
|
+
incompleteSteps: [],
|
|
239
|
+
failedSteps: [],
|
|
240
|
+
missingFiles: [],
|
|
241
|
+
reconstructed: false,
|
|
242
|
+
message: `Found ${stepFiles.length} orphan step files but no manifest. Manual recovery may be needed.`,
|
|
243
|
+
};
|
|
244
|
+
}
|
|
245
|
+
// Analyze current state
|
|
246
|
+
const analysis = await analyzeGenerationState(input.sessionId, manifest);
|
|
247
|
+
// Optionally reconstruct session state
|
|
248
|
+
let reconstructed = false;
|
|
249
|
+
if (input.reconstruct && analysis.completedSteps.length > 0) {
|
|
250
|
+
await reconstructSessionGeneration(input.sessionId, manifest);
|
|
251
|
+
reconstructed = true;
|
|
252
|
+
}
|
|
253
|
+
// Build result message
|
|
254
|
+
let message = "";
|
|
255
|
+
if (analysis.completedSteps.length === 0) {
|
|
256
|
+
message = "Generation not started or no steps completed.";
|
|
257
|
+
}
|
|
258
|
+
else if (analysis.incompleteSteps.length > 0) {
|
|
259
|
+
message = `Generation interrupted. ${analysis.completedSteps.length} steps completed, ${analysis.incompleteSteps.length} in progress: ${analysis.incompleteSteps.join(", ")}. Re-run the interrupted generation tool.`;
|
|
260
|
+
}
|
|
261
|
+
else if (analysis.failedSteps.length > 0) {
|
|
262
|
+
message = `Generation has ${analysis.failedSteps.length} failed steps: ${analysis.failedSteps.join(", ")}. Re-run the failed generation tool.`;
|
|
263
|
+
}
|
|
264
|
+
else if (analysis.missingFiles.length > 0) {
|
|
265
|
+
message = `Warning: ${analysis.missingFiles.length} step files missing. May need to re-run those steps.`;
|
|
266
|
+
}
|
|
267
|
+
else {
|
|
268
|
+
message = `Generation complete with ${analysis.completedSteps.length} steps. Ready for assemble_world_pack.`;
|
|
269
|
+
}
|
|
270
|
+
if (reconstructed) {
|
|
271
|
+
message += " Session state reconstructed from step files.";
|
|
272
|
+
}
|
|
273
|
+
return {
|
|
274
|
+
sessionId: input.sessionId,
|
|
275
|
+
generationDir,
|
|
276
|
+
manifestStatus: manifest.status,
|
|
277
|
+
steps: analysis.steps,
|
|
278
|
+
completedSteps: analysis.completedSteps,
|
|
279
|
+
incompleteSteps: analysis.incompleteSteps,
|
|
280
|
+
failedSteps: analysis.failedSteps,
|
|
281
|
+
missingFiles: analysis.missingFiles,
|
|
282
|
+
reconstructed,
|
|
283
|
+
message,
|
|
284
|
+
};
|
|
285
|
+
},
|
|
286
|
+
};
|
|
287
|
+
export const resumeTools = [resumeGenerationTool];
|
|
288
|
+
//# sourceMappingURL=resume.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"resume.js","sourceRoot":"","sources":["../../../src/tools/generation/resume.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Rules Prompt Builder
|
|
3
|
+
*
|
|
4
|
+
* Generates rules description text for LLM prompts based on world pack rules config.
|
|
5
|
+
* Used by all generation tools to communicate effective rules to the LLM.
|
|
6
|
+
*/
|
|
7
|
+
import type { WorldRulesConfig } from "@mythxengine/types";
|
|
8
|
+
/**
|
|
9
|
+
* Build the rules section for generation prompts.
|
|
10
|
+
*
|
|
11
|
+
* If no custom rules are provided, returns default rules description.
|
|
12
|
+
* If custom rules are provided, merges with defaults and describes the effective rules.
|
|
13
|
+
*/
|
|
14
|
+
export declare function buildRulesPromptSection(rules?: WorldRulesConfig): string;
|
|
15
|
+
/**
|
|
16
|
+
* Build HP guidelines based on rules
|
|
17
|
+
*/
|
|
18
|
+
export declare function buildHPGuidelines(_rules?: WorldRulesConfig): string;
|
|
19
|
+
/**
|
|
20
|
+
* Build monster HP guidelines by threat tier
|
|
21
|
+
*/
|
|
22
|
+
export declare function buildMonsterHPGuidelines(_rules?: WorldRulesConfig): string;
|
|
23
|
+
//# sourceMappingURL=rules-prompt.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"rules-prompt.d.ts","sourceRoot":"","sources":["../../../src/tools/generation/rules-prompt.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,KAAK,EAAE,gBAAgB,EAAqB,MAAM,oBAAoB,CAAC;AAG9E;;;;;GAKG;AACH,wBAAgB,uBAAuB,CAAC,KAAK,CAAC,EAAE,gBAAgB,GAAG,MAAM,CAwBxE;AAsLD;;GAEG;AACH,wBAAgB,iBAAiB,CAAC,MAAM,CAAC,EAAE,gBAAgB,GAAG,MAAM,CAOnE;AAED;;GAEG;AACH,wBAAgB,wBAAwB,CAAC,MAAM,CAAC,EAAE,gBAAgB,GAAG,MAAM,CAO1E"}
|
|
@@ -0,0 +1,209 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Rules Prompt Builder
|
|
3
|
+
*
|
|
4
|
+
* Generates rules description text for LLM prompts based on world pack rules config.
|
|
5
|
+
* Used by all generation tools to communicate effective rules to the LLM.
|
|
6
|
+
*/
|
|
7
|
+
import { BASE_ABILITIES, BASE_DIFFICULTIES, BASE_CRITICALS, BASE_DEFENSE, BASE_DAMAGE } from "@mythxengine/types";
|
|
8
|
+
/**
|
|
9
|
+
* Build the rules section for generation prompts.
|
|
10
|
+
*
|
|
11
|
+
* If no custom rules are provided, returns default rules description.
|
|
12
|
+
* If custom rules are provided, merges with defaults and describes the effective rules.
|
|
13
|
+
*/
|
|
14
|
+
export function buildRulesPromptSection(rules) {
|
|
15
|
+
if (!rules) {
|
|
16
|
+
return getDefaultRulesSection();
|
|
17
|
+
}
|
|
18
|
+
const sections = [];
|
|
19
|
+
// Abilities section
|
|
20
|
+
sections.push(buildAbilitiesSection(rules));
|
|
21
|
+
// Difficulties section
|
|
22
|
+
sections.push(buildDifficultiesSection(rules));
|
|
23
|
+
// Mechanics section
|
|
24
|
+
sections.push(buildMechanicsSection(rules));
|
|
25
|
+
// Custom tests section
|
|
26
|
+
if (rules.customTests?.tests && rules.customTests.tests.length > 0) {
|
|
27
|
+
sections.push(buildCustomTestsSection(rules));
|
|
28
|
+
}
|
|
29
|
+
return `## Game Rules
|
|
30
|
+
|
|
31
|
+
${sections.join("\n\n")}`;
|
|
32
|
+
}
|
|
33
|
+
/**
|
|
34
|
+
* Default rules section when no custom rules are provided
|
|
35
|
+
*/
|
|
36
|
+
function getDefaultRulesSection() {
|
|
37
|
+
return `## Game Rules
|
|
38
|
+
|
|
39
|
+
### Abilities
|
|
40
|
+
Four core abilities with modifiers from -3 to +3:
|
|
41
|
+
- **STR** (Strength): Physical power, melee damage, carrying
|
|
42
|
+
- **AGI** (Agility): Speed, reflexes, ranged attacks, defense
|
|
43
|
+
- **WIT** (Wit): Intelligence, perception, social, magic
|
|
44
|
+
- **CON** (Constitution): Toughness, HP, endurance, resistance
|
|
45
|
+
|
|
46
|
+
### Difficulty Levels
|
|
47
|
+
- EASY: DC 8
|
|
48
|
+
- STANDARD: DC 12
|
|
49
|
+
- HARD: DC 16
|
|
50
|
+
- EXTREME: DC 20
|
|
51
|
+
|
|
52
|
+
### Combat Mechanics
|
|
53
|
+
- Defense: 10 + AGI modifier
|
|
54
|
+
- Attack: d20 + ability + skill vs Defense
|
|
55
|
+
- Critical: Natural 20 (auto-success, 2x damage), Natural 1 (auto-fail)
|
|
56
|
+
- Damage: Weapon die + ability modifier - armor (minimum 0)
|
|
57
|
+
|
|
58
|
+
### HP Guidelines
|
|
59
|
+
- Low: 8-10 HP
|
|
60
|
+
- Medium: 10-12 HP
|
|
61
|
+
- High: 12-14 HP
|
|
62
|
+
- Tank: 14-16 HP`;
|
|
63
|
+
}
|
|
64
|
+
/**
|
|
65
|
+
* Build abilities section from config
|
|
66
|
+
*/
|
|
67
|
+
function buildAbilitiesSection(rules) {
|
|
68
|
+
const abilities = getEffectiveAbilities(rules);
|
|
69
|
+
const abilityLines = abilities.map(a => `- **${a.id}** (${a.name}): ${a.description} [${a.minValue} to ${a.maxValue}]`);
|
|
70
|
+
return `### Abilities
|
|
71
|
+
${abilityLines.join("\n")}`;
|
|
72
|
+
}
|
|
73
|
+
/**
|
|
74
|
+
* Get effective abilities (merged with defaults)
|
|
75
|
+
*/
|
|
76
|
+
function getEffectiveAbilities(rules) {
|
|
77
|
+
const config = rules.abilities;
|
|
78
|
+
if (!config) {
|
|
79
|
+
return BASE_ABILITIES;
|
|
80
|
+
}
|
|
81
|
+
// Replace mode
|
|
82
|
+
if (config.replace && config.replace.length > 0) {
|
|
83
|
+
return config.replace;
|
|
84
|
+
}
|
|
85
|
+
// Start with base abilities
|
|
86
|
+
let abilities = [...BASE_ABILITIES];
|
|
87
|
+
// Apply overrides
|
|
88
|
+
if (config.override) {
|
|
89
|
+
abilities = abilities.map(a => {
|
|
90
|
+
const override = config.override?.[a.id];
|
|
91
|
+
if (override) {
|
|
92
|
+
return { ...a, ...override };
|
|
93
|
+
}
|
|
94
|
+
return a;
|
|
95
|
+
});
|
|
96
|
+
}
|
|
97
|
+
// Add new abilities
|
|
98
|
+
if (config.add && config.add.length > 0) {
|
|
99
|
+
abilities = [...abilities, ...config.add];
|
|
100
|
+
}
|
|
101
|
+
return abilities;
|
|
102
|
+
}
|
|
103
|
+
/**
|
|
104
|
+
* Build difficulties section from config
|
|
105
|
+
*/
|
|
106
|
+
function buildDifficultiesSection(rules) {
|
|
107
|
+
const config = rules.difficulties;
|
|
108
|
+
// Get effective difficulties
|
|
109
|
+
let difficulties = BASE_DIFFICULTIES;
|
|
110
|
+
if (config?.replace && config.replace.length > 0) {
|
|
111
|
+
difficulties = config.replace;
|
|
112
|
+
}
|
|
113
|
+
else if (config?.add && config.add.length > 0) {
|
|
114
|
+
difficulties = [...difficulties, ...config.add];
|
|
115
|
+
}
|
|
116
|
+
// Sort by target value for consistent display
|
|
117
|
+
const sorted = [...difficulties].sort((a, b) => a.target - b.target);
|
|
118
|
+
const diffLines = sorted.map(d => `- ${d.name.toUpperCase()}: DC ${d.target}`);
|
|
119
|
+
return `### Difficulty Levels
|
|
120
|
+
${diffLines.join("\n")}`;
|
|
121
|
+
}
|
|
122
|
+
/**
|
|
123
|
+
* Build mechanics section from config
|
|
124
|
+
*/
|
|
125
|
+
function buildMechanicsSection(rules) {
|
|
126
|
+
const mechanics = rules.mechanics;
|
|
127
|
+
const lines = [];
|
|
128
|
+
// Defense
|
|
129
|
+
const defense = mechanics?.defense ?? BASE_DEFENSE;
|
|
130
|
+
const defenseAbility = defense.ability ?? "AGI";
|
|
131
|
+
lines.push(`- Defense: ${defense.base} + ${defenseAbility} modifier`);
|
|
132
|
+
// Attack
|
|
133
|
+
lines.push(`- Attack: d20 + ability + skill vs Defense`);
|
|
134
|
+
// Criticals
|
|
135
|
+
const criticals = mechanics?.criticals ?? BASE_CRITICALS;
|
|
136
|
+
const critSuccessOn = criticals.successOn?.join(", ") ?? "20";
|
|
137
|
+
const critFailOn = criticals.failureOn?.join(", ") ?? "1";
|
|
138
|
+
const autoSuccess = criticals.autoSuccess !== false ? "auto-success" : "no auto-success";
|
|
139
|
+
const autoFail = criticals.autoFailure !== false ? "auto-fail" : "no auto-fail";
|
|
140
|
+
const critMult = criticals.damageMultiplier ?? 2;
|
|
141
|
+
lines.push(`- Critical Success: Natural ${critSuccessOn} (${autoSuccess}, ${critMult}x damage)`);
|
|
142
|
+
lines.push(`- Critical Failure: Natural ${critFailOn} (${autoFail})`);
|
|
143
|
+
// Roll-under (if enabled)
|
|
144
|
+
if (mechanics?.rollUnder?.enabled) {
|
|
145
|
+
const rollUnder = mechanics.rollUnder;
|
|
146
|
+
lines.push(`- Roll-Under System: Roll ${rollUnder.dice} under ability score to succeed`);
|
|
147
|
+
if (rollUnder.criticalSuccessRange) {
|
|
148
|
+
lines.push(` - Critical Success: Roll ${rollUnder.criticalSuccessRange[0]}-${rollUnder.criticalSuccessRange[1]}`);
|
|
149
|
+
}
|
|
150
|
+
if (rollUnder.criticalFailureRange) {
|
|
151
|
+
lines.push(` - Critical Failure: Roll ${rollUnder.criticalFailureRange[0]}-${rollUnder.criticalFailureRange[1]}`);
|
|
152
|
+
}
|
|
153
|
+
}
|
|
154
|
+
// Damage
|
|
155
|
+
const damage = mechanics?.damage ?? BASE_DAMAGE;
|
|
156
|
+
const damageComponents = ["Weapon die"];
|
|
157
|
+
if (damage.addAbility !== false)
|
|
158
|
+
damageComponents.push("ability modifier");
|
|
159
|
+
if (damage.subtractArmor !== false)
|
|
160
|
+
damageComponents.push("- armor");
|
|
161
|
+
lines.push(`- Damage: ${damageComponents.join(" + ")} (minimum ${damage.minimumDamage ?? 0})`);
|
|
162
|
+
// Resistance/Vulnerability
|
|
163
|
+
const resMult = mechanics?.resistanceMultiplier ?? 0.5;
|
|
164
|
+
const vulnMult = mechanics?.vulnerabilityMultiplier ?? 2;
|
|
165
|
+
lines.push(`- Resistance: ${resMult}x damage`);
|
|
166
|
+
lines.push(`- Vulnerability: ${vulnMult}x damage`);
|
|
167
|
+
return `### Combat Mechanics
|
|
168
|
+
${lines.join("\n")}`;
|
|
169
|
+
}
|
|
170
|
+
/**
|
|
171
|
+
* Build custom tests section
|
|
172
|
+
*/
|
|
173
|
+
function buildCustomTestsSection(rules) {
|
|
174
|
+
const tests = rules.customTests?.tests ?? [];
|
|
175
|
+
const testLines = tests.map(test => {
|
|
176
|
+
const triggers = test.triggers.join(", ");
|
|
177
|
+
const rollDesc = test.roll.underAbility
|
|
178
|
+
? `Roll ${test.roll.dice} under ${test.roll.underAbility}`
|
|
179
|
+
: `Roll ${test.roll.dice} + ${test.roll.ability ?? "ability"} vs DC`;
|
|
180
|
+
return `- **${test.name}** (${test.id}): ${test.description}
|
|
181
|
+
- Triggers: ${triggers}
|
|
182
|
+
- Roll: ${rollDesc}`;
|
|
183
|
+
});
|
|
184
|
+
return `### Custom Tests
|
|
185
|
+
${testLines.join("\n")}`;
|
|
186
|
+
}
|
|
187
|
+
/**
|
|
188
|
+
* Build HP guidelines based on rules
|
|
189
|
+
*/
|
|
190
|
+
export function buildHPGuidelines(_rules) {
|
|
191
|
+
// Could be enhanced to read from rules config if we add HP guidelines there
|
|
192
|
+
return `### HP Guidelines
|
|
193
|
+
- Low: 8-10 HP
|
|
194
|
+
- Medium: 10-12 HP
|
|
195
|
+
- High: 12-14 HP
|
|
196
|
+
- Tank: 14-16 HP`;
|
|
197
|
+
}
|
|
198
|
+
/**
|
|
199
|
+
* Build monster HP guidelines by threat tier
|
|
200
|
+
*/
|
|
201
|
+
export function buildMonsterHPGuidelines(_rules) {
|
|
202
|
+
// Could be enhanced to scale with rules config
|
|
203
|
+
return `### Monster HP by Threat Tier
|
|
204
|
+
- Minion: 4-6 HP
|
|
205
|
+
- Standard: 10-14 HP
|
|
206
|
+
- Elite: 18-24 HP
|
|
207
|
+
- Boss: 30-40 HP`;
|
|
208
|
+
}
|
|
209
|
+
//# sourceMappingURL=rules-prompt.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"rules-prompt.js","sourceRoot":"","sources":["../../../src/tools/generation/rules-prompt.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* World Seed Generation Tool
|
|
3
|
+
*
|
|
4
|
+
* Creates the foundation for a new world from a campaign seed prompt.
|
|
5
|
+
*/
|
|
6
|
+
import type { MCPToolEntry } from "@mythxengine/types";
|
|
7
|
+
/**
|
|
8
|
+
* generate_world_seed tool
|
|
9
|
+
*/
|
|
10
|
+
export declare const generateWorldSeedTool: MCPToolEntry;
|
|
11
|
+
export declare const seedTools: MCPToolEntry[];
|
|
12
|
+
//# sourceMappingURL=seed.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"seed.d.ts","sourceRoot":"","sources":["../../../src/tools/generation/seed.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAIH,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAyBvD;;GAEG;AACH,eAAO,MAAM,qBAAqB,EAAE,YAgKnC,CAAC;AAEF,eAAO,MAAM,SAAS,gBAA0B,CAAC"}
|