@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,308 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* File-based session state persistence
|
|
3
|
+
* Adapted from rogue-borg shared-mcp-state
|
|
4
|
+
*/
|
|
5
|
+
import { readFile, writeFile, mkdir, rm, readdir, rename } from "fs/promises";
|
|
6
|
+
import { join } from "path";
|
|
7
|
+
import { randomUUID } from "crypto";
|
|
8
|
+
import { z } from "zod";
|
|
9
|
+
import { createEmptySession } from "@mythxengine/types";
|
|
10
|
+
// Zod schema for manifest validation
|
|
11
|
+
const ManifestStepSchema = z.object({
|
|
12
|
+
type: z.string(),
|
|
13
|
+
stepId: z.string().optional(),
|
|
14
|
+
status: z.enum(["in_progress", "completed", "failed"]),
|
|
15
|
+
file: z.string().optional(),
|
|
16
|
+
completedAt: z.string().optional(),
|
|
17
|
+
error: z.string().optional(),
|
|
18
|
+
generatedIds: z.array(z.string()).optional(),
|
|
19
|
+
});
|
|
20
|
+
const GenerationManifestSchema = z.object({
|
|
21
|
+
sessionId: z.string(),
|
|
22
|
+
campaignSeed: z.string(),
|
|
23
|
+
tier: z.enum(["small", "medium", "large"]),
|
|
24
|
+
rulesConfig: z.unknown().optional(),
|
|
25
|
+
settings: z.object({
|
|
26
|
+
lethality: z.enum(["low", "medium", "high", "brutal"]).optional(),
|
|
27
|
+
magicLevel: z.enum(["none", "rare", "common", "high"]).optional(),
|
|
28
|
+
technologyLevel: z.enum(["primitive", "medieval", "renaissance", "industrial", "modern", "futuristic"]).optional(),
|
|
29
|
+
supernaturalPresence: z.enum(["subtle", "common", "pervasive"]).optional(),
|
|
30
|
+
}).optional(),
|
|
31
|
+
createdAt: z.string(),
|
|
32
|
+
status: z.enum(["seeding", "generating", "expanding", "assembling", "complete"]),
|
|
33
|
+
steps: z.array(ManifestStepSchema),
|
|
34
|
+
});
|
|
35
|
+
// Default data directory
|
|
36
|
+
const DATA_DIR = process.env.RPG_MCP_DATA_DIR || join(process.cwd(), "data");
|
|
37
|
+
const GENERATION_DIR = join(DATA_DIR, "generation");
|
|
38
|
+
function getSessionPath(sessionId) {
|
|
39
|
+
return join(DATA_DIR, `${sessionId}.session.json`);
|
|
40
|
+
}
|
|
41
|
+
// ============================================================================
|
|
42
|
+
// Generation Directory Helpers
|
|
43
|
+
// ============================================================================
|
|
44
|
+
/**
|
|
45
|
+
* Get the generation directory for a session
|
|
46
|
+
*/
|
|
47
|
+
export function getGenerationDir(sessionId) {
|
|
48
|
+
validateSessionId(sessionId);
|
|
49
|
+
return join(GENERATION_DIR, sessionId);
|
|
50
|
+
}
|
|
51
|
+
/**
|
|
52
|
+
* Ensure the generation directory exists
|
|
53
|
+
*/
|
|
54
|
+
export async function ensureGenerationDir(sessionId) {
|
|
55
|
+
const dir = getGenerationDir(sessionId);
|
|
56
|
+
await mkdir(dir, { recursive: true });
|
|
57
|
+
await mkdir(join(dir, "expansions"), { recursive: true });
|
|
58
|
+
return dir;
|
|
59
|
+
}
|
|
60
|
+
/**
|
|
61
|
+
* Write a step file atomically (temp file + rename)
|
|
62
|
+
*/
|
|
63
|
+
export async function writeStepFile(sessionId, filename, data) {
|
|
64
|
+
const dir = getGenerationDir(sessionId);
|
|
65
|
+
const targetPath = join(dir, filename);
|
|
66
|
+
const tempPath = join(dir, `.${randomUUID()}.tmp`);
|
|
67
|
+
await writeFile(tempPath, JSON.stringify(data, null, 2), "utf-8");
|
|
68
|
+
await rename(tempPath, targetPath);
|
|
69
|
+
}
|
|
70
|
+
/**
|
|
71
|
+
* Read a step file
|
|
72
|
+
*/
|
|
73
|
+
export async function readStepFile(sessionId, filename) {
|
|
74
|
+
const dir = getGenerationDir(sessionId);
|
|
75
|
+
const path = join(dir, filename);
|
|
76
|
+
try {
|
|
77
|
+
const content = await readFile(path, "utf-8");
|
|
78
|
+
return JSON.parse(content);
|
|
79
|
+
}
|
|
80
|
+
catch (error) {
|
|
81
|
+
if (error.code === "ENOENT") {
|
|
82
|
+
return null;
|
|
83
|
+
}
|
|
84
|
+
throw error;
|
|
85
|
+
}
|
|
86
|
+
}
|
|
87
|
+
/**
|
|
88
|
+
* Read the generation manifest with validation
|
|
89
|
+
*/
|
|
90
|
+
export async function readManifest(sessionId) {
|
|
91
|
+
const result = await readStepFile(sessionId, "manifest.json");
|
|
92
|
+
if (result === null) {
|
|
93
|
+
return null;
|
|
94
|
+
}
|
|
95
|
+
// Validate manifest structure
|
|
96
|
+
const parsed = GenerationManifestSchema.safeParse(result);
|
|
97
|
+
if (!parsed.success) {
|
|
98
|
+
throw new Error(`Invalid manifest format: ${parsed.error.message}`);
|
|
99
|
+
}
|
|
100
|
+
return parsed.data;
|
|
101
|
+
}
|
|
102
|
+
/**
|
|
103
|
+
* Write the generation manifest atomically
|
|
104
|
+
*/
|
|
105
|
+
export async function writeManifest(sessionId, manifest) {
|
|
106
|
+
await writeStepFile(sessionId, "manifest.json", manifest);
|
|
107
|
+
}
|
|
108
|
+
/**
|
|
109
|
+
* Create initial manifest for a new generation session
|
|
110
|
+
*/
|
|
111
|
+
export function createManifest(sessionId, campaignSeed, tier, settings, rulesConfig) {
|
|
112
|
+
return {
|
|
113
|
+
sessionId,
|
|
114
|
+
campaignSeed,
|
|
115
|
+
tier,
|
|
116
|
+
rulesConfig,
|
|
117
|
+
settings,
|
|
118
|
+
createdAt: new Date().toISOString(),
|
|
119
|
+
status: "seeding",
|
|
120
|
+
steps: [],
|
|
121
|
+
};
|
|
122
|
+
}
|
|
123
|
+
/**
|
|
124
|
+
* Add a step to the manifest
|
|
125
|
+
*/
|
|
126
|
+
export function addManifestStep(manifest, type, file) {
|
|
127
|
+
const step = {
|
|
128
|
+
type,
|
|
129
|
+
status: "in_progress",
|
|
130
|
+
file,
|
|
131
|
+
};
|
|
132
|
+
manifest.steps.push(step);
|
|
133
|
+
return step;
|
|
134
|
+
}
|
|
135
|
+
/**
|
|
136
|
+
* Find a step in the manifest by type
|
|
137
|
+
*/
|
|
138
|
+
export function findManifestStep(manifest, type) {
|
|
139
|
+
return manifest.steps.find((s) => s.type === type);
|
|
140
|
+
}
|
|
141
|
+
/**
|
|
142
|
+
* Update a step's status in the manifest
|
|
143
|
+
* @returns true if step was found and updated, false otherwise
|
|
144
|
+
*/
|
|
145
|
+
export function updateManifestStep(manifest, type, updates) {
|
|
146
|
+
const step = manifest.steps.find((s) => s.type === type);
|
|
147
|
+
if (step) {
|
|
148
|
+
Object.assign(step, updates);
|
|
149
|
+
return true;
|
|
150
|
+
}
|
|
151
|
+
return false;
|
|
152
|
+
}
|
|
153
|
+
/**
|
|
154
|
+
* List all step files in the generation directory
|
|
155
|
+
*/
|
|
156
|
+
export async function listStepFiles(sessionId) {
|
|
157
|
+
const dir = getGenerationDir(sessionId);
|
|
158
|
+
try {
|
|
159
|
+
const files = await readdir(dir);
|
|
160
|
+
return files.filter((f) => f.endsWith(".json") && f !== "manifest.json");
|
|
161
|
+
}
|
|
162
|
+
catch (error) {
|
|
163
|
+
if (error.code === "ENOENT") {
|
|
164
|
+
return [];
|
|
165
|
+
}
|
|
166
|
+
throw error;
|
|
167
|
+
}
|
|
168
|
+
}
|
|
169
|
+
/**
|
|
170
|
+
* List all expansion files in the generation directory
|
|
171
|
+
*/
|
|
172
|
+
export async function listExpansionFiles(sessionId) {
|
|
173
|
+
const dir = join(getGenerationDir(sessionId), "expansions");
|
|
174
|
+
try {
|
|
175
|
+
const files = await readdir(dir);
|
|
176
|
+
return files.filter((f) => f.endsWith(".json"));
|
|
177
|
+
}
|
|
178
|
+
catch (error) {
|
|
179
|
+
if (error.code === "ENOENT") {
|
|
180
|
+
return [];
|
|
181
|
+
}
|
|
182
|
+
throw error;
|
|
183
|
+
}
|
|
184
|
+
}
|
|
185
|
+
// ============================================================================
|
|
186
|
+
// Session State Persistence
|
|
187
|
+
// ============================================================================
|
|
188
|
+
/**
|
|
189
|
+
* Validate session ID format
|
|
190
|
+
*/
|
|
191
|
+
function validateSessionId(sessionId) {
|
|
192
|
+
if (!/^[a-z0-9-_]+$/i.test(sessionId)) {
|
|
193
|
+
throw new Error(`Invalid session ID: ${sessionId}. Must contain only alphanumeric characters, hyphens, and underscores`);
|
|
194
|
+
}
|
|
195
|
+
}
|
|
196
|
+
/**
|
|
197
|
+
* Load a session from disk
|
|
198
|
+
*/
|
|
199
|
+
export async function loadSession(sessionId) {
|
|
200
|
+
validateSessionId(sessionId);
|
|
201
|
+
try {
|
|
202
|
+
const path = getSessionPath(sessionId);
|
|
203
|
+
const content = await readFile(path, "utf-8");
|
|
204
|
+
return JSON.parse(content);
|
|
205
|
+
}
|
|
206
|
+
catch (error) {
|
|
207
|
+
if (error.code === "ENOENT") {
|
|
208
|
+
return null;
|
|
209
|
+
}
|
|
210
|
+
throw error;
|
|
211
|
+
}
|
|
212
|
+
}
|
|
213
|
+
/**
|
|
214
|
+
* Save a session to disk
|
|
215
|
+
*/
|
|
216
|
+
export async function saveSession(state) {
|
|
217
|
+
await mkdir(DATA_DIR, { recursive: true });
|
|
218
|
+
const path = getSessionPath(state.metadata.id);
|
|
219
|
+
const updated = {
|
|
220
|
+
...state,
|
|
221
|
+
metadata: {
|
|
222
|
+
...state.metadata,
|
|
223
|
+
updatedAt: new Date().toISOString(),
|
|
224
|
+
},
|
|
225
|
+
};
|
|
226
|
+
await writeFile(path, JSON.stringify(updated, null, 2), "utf-8");
|
|
227
|
+
}
|
|
228
|
+
/**
|
|
229
|
+
* Get or create a session
|
|
230
|
+
*/
|
|
231
|
+
export async function getOrCreateSession(sessionId, name) {
|
|
232
|
+
validateSessionId(sessionId);
|
|
233
|
+
const existing = await loadSession(sessionId);
|
|
234
|
+
if (existing) {
|
|
235
|
+
return existing;
|
|
236
|
+
}
|
|
237
|
+
const newSession = createEmptySession(sessionId, name || sessionId);
|
|
238
|
+
await saveSession(newSession);
|
|
239
|
+
return newSession;
|
|
240
|
+
}
|
|
241
|
+
/**
|
|
242
|
+
* Delete a session
|
|
243
|
+
*/
|
|
244
|
+
export async function deleteSession(sessionId) {
|
|
245
|
+
validateSessionId(sessionId);
|
|
246
|
+
try {
|
|
247
|
+
const path = getSessionPath(sessionId);
|
|
248
|
+
await rm(path, { force: true });
|
|
249
|
+
}
|
|
250
|
+
catch {
|
|
251
|
+
// Ignore errors (file may not exist)
|
|
252
|
+
}
|
|
253
|
+
}
|
|
254
|
+
/**
|
|
255
|
+
* List all sessions
|
|
256
|
+
*/
|
|
257
|
+
export async function listSessions() {
|
|
258
|
+
try {
|
|
259
|
+
await mkdir(DATA_DIR, { recursive: true });
|
|
260
|
+
const files = await readdir(DATA_DIR);
|
|
261
|
+
return files
|
|
262
|
+
.filter((f) => f.endsWith(".session.json"))
|
|
263
|
+
.map((f) => f.replace(".session.json", ""));
|
|
264
|
+
}
|
|
265
|
+
catch {
|
|
266
|
+
return [];
|
|
267
|
+
}
|
|
268
|
+
}
|
|
269
|
+
/**
|
|
270
|
+
* Session state manager class for convenient access
|
|
271
|
+
*/
|
|
272
|
+
export class SessionManager {
|
|
273
|
+
cache = new Map();
|
|
274
|
+
async get(sessionId) {
|
|
275
|
+
// Check cache first
|
|
276
|
+
const cached = this.cache.get(sessionId);
|
|
277
|
+
if (cached) {
|
|
278
|
+
return cached;
|
|
279
|
+
}
|
|
280
|
+
const session = await loadSession(sessionId);
|
|
281
|
+
if (session) {
|
|
282
|
+
this.cache.set(sessionId, session);
|
|
283
|
+
}
|
|
284
|
+
return session;
|
|
285
|
+
}
|
|
286
|
+
async getOrCreate(sessionId, name) {
|
|
287
|
+
const session = await getOrCreateSession(sessionId, name);
|
|
288
|
+
this.cache.set(sessionId, session);
|
|
289
|
+
return session;
|
|
290
|
+
}
|
|
291
|
+
async save(state) {
|
|
292
|
+
await saveSession(state);
|
|
293
|
+
this.cache.set(state.metadata.id, state);
|
|
294
|
+
}
|
|
295
|
+
async delete(sessionId) {
|
|
296
|
+
await deleteSession(sessionId);
|
|
297
|
+
this.cache.delete(sessionId);
|
|
298
|
+
}
|
|
299
|
+
async list() {
|
|
300
|
+
return listSessions();
|
|
301
|
+
}
|
|
302
|
+
clearCache() {
|
|
303
|
+
this.cache.clear();
|
|
304
|
+
}
|
|
305
|
+
}
|
|
306
|
+
// Singleton instance
|
|
307
|
+
export const sessionManager = new SessionManager();
|
|
308
|
+
//# sourceMappingURL=manager.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"manager.js","sourceRoot":"","sources":["../../src/state/manager.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Rules Context Loading
|
|
3
|
+
*
|
|
4
|
+
* Helper functions to load rules context from sessions and world packs.
|
|
5
|
+
*/
|
|
6
|
+
import type { SessionState } from "@mythxengine/types";
|
|
7
|
+
import { type RulesContext } from "@mythxengine/engine";
|
|
8
|
+
/**
|
|
9
|
+
* Get the rules context for a session.
|
|
10
|
+
*
|
|
11
|
+
* If the session has a worldPackId, loads the world pack's rules.
|
|
12
|
+
* Otherwise, returns the default rules context.
|
|
13
|
+
*
|
|
14
|
+
* @param session - The session state
|
|
15
|
+
* @returns RulesContext for the session
|
|
16
|
+
*/
|
|
17
|
+
export declare function getRulesForSession(session: SessionState): Promise<RulesContext>;
|
|
18
|
+
/**
|
|
19
|
+
* Get rules context directly from a world pack ID.
|
|
20
|
+
*
|
|
21
|
+
* @param packId - World pack ID
|
|
22
|
+
* @returns RulesContext for the world pack, or default if not found
|
|
23
|
+
*/
|
|
24
|
+
export declare function getRulesForWorldPack(packId: string): Promise<RulesContext>;
|
|
25
|
+
/**
|
|
26
|
+
* Clear the rules cache (useful when world pack is updated)
|
|
27
|
+
* @param packId - If provided, clears only that pack's cache. Otherwise clears all.
|
|
28
|
+
*/
|
|
29
|
+
export declare function clearRulesCache(packId?: string): void;
|
|
30
|
+
//# sourceMappingURL=rules.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"rules.d.ts","sourceRoot":"","sources":["../../src/state/rules.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AACvD,OAAO,EACL,KAAK,YAAY,EAGlB,MAAM,qBAAqB,CAAC;AAQ7B;;;;;;;;GAQG;AACH,wBAAsB,kBAAkB,CAAC,OAAO,EAAE,YAAY,GAAG,OAAO,CAAC,YAAY,CAAC,CAKrF;AAED;;;;;GAKG;AACH,wBAAsB,oBAAoB,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,YAAY,CAAC,CAkBhF;AAED;;;GAGG;AACH,wBAAgB,eAAe,CAAC,MAAM,CAAC,EAAE,MAAM,GAAG,IAAI,CAMrD"}
|
|
@@ -0,0 +1,61 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Rules Context Loading
|
|
3
|
+
*
|
|
4
|
+
* Helper functions to load rules context from sessions and world packs.
|
|
5
|
+
*/
|
|
6
|
+
import { createRulesContext, getDefaultRulesContext, } from "@mythxengine/engine";
|
|
7
|
+
import { worldPackManager } from "./worldpacks.js";
|
|
8
|
+
/**
|
|
9
|
+
* Cache for rules contexts by world pack ID
|
|
10
|
+
*/
|
|
11
|
+
const rulesCache = new Map();
|
|
12
|
+
/**
|
|
13
|
+
* Get the rules context for a session.
|
|
14
|
+
*
|
|
15
|
+
* If the session has a worldPackId, loads the world pack's rules.
|
|
16
|
+
* Otherwise, returns the default rules context.
|
|
17
|
+
*
|
|
18
|
+
* @param session - The session state
|
|
19
|
+
* @returns RulesContext for the session
|
|
20
|
+
*/
|
|
21
|
+
export async function getRulesForSession(session) {
|
|
22
|
+
if (!session.worldPackId) {
|
|
23
|
+
return getDefaultRulesContext();
|
|
24
|
+
}
|
|
25
|
+
return getRulesForWorldPack(session.worldPackId);
|
|
26
|
+
}
|
|
27
|
+
/**
|
|
28
|
+
* Get rules context directly from a world pack ID.
|
|
29
|
+
*
|
|
30
|
+
* @param packId - World pack ID
|
|
31
|
+
* @returns RulesContext for the world pack, or default if not found
|
|
32
|
+
*/
|
|
33
|
+
export async function getRulesForWorldPack(packId) {
|
|
34
|
+
// Check cache
|
|
35
|
+
const cached = rulesCache.get(packId);
|
|
36
|
+
if (cached) {
|
|
37
|
+
return cached;
|
|
38
|
+
}
|
|
39
|
+
// Load world pack
|
|
40
|
+
const worldPack = await worldPackManager.get(packId);
|
|
41
|
+
if (!worldPack) {
|
|
42
|
+
return getDefaultRulesContext();
|
|
43
|
+
}
|
|
44
|
+
// Create and cache
|
|
45
|
+
const rules = createRulesContext(worldPack.rules);
|
|
46
|
+
rulesCache.set(packId, rules);
|
|
47
|
+
return rules;
|
|
48
|
+
}
|
|
49
|
+
/**
|
|
50
|
+
* Clear the rules cache (useful when world pack is updated)
|
|
51
|
+
* @param packId - If provided, clears only that pack's cache. Otherwise clears all.
|
|
52
|
+
*/
|
|
53
|
+
export function clearRulesCache(packId) {
|
|
54
|
+
if (packId) {
|
|
55
|
+
rulesCache.delete(packId);
|
|
56
|
+
}
|
|
57
|
+
else {
|
|
58
|
+
rulesCache.clear();
|
|
59
|
+
}
|
|
60
|
+
}
|
|
61
|
+
//# sourceMappingURL=rules.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"rules.js","sourceRoot":"","sources":["../../src/state/rules.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAGH,OAAO,EAEL,kBAAkB,EAClB,sBAAsB,GACvB,MAAM,qBAAqB,CAAC;AAC7B,OAAO,EAAE,gBAAgB,EAAE,MAAM,iBAAiB,CAAC;AAEnD;;GAEG;AACH,MAAM,UAAU,GAA8B,IAAI,GAAG,EAAE,CAAC;AAExD;;;;;;;;GAQG;AACH,MAAM,CAAC,KAAK,UAAU,kBAAkB,CAAC,OAAqB;IAC5D,IAAI,CAAC,OAAO,CAAC,WAAW,EAAE,CAAC;QACzB,OAAO,sBAAsB,EAAE,CAAC;IAClC,CAAC;IACD,OAAO,oBAAoB,CAAC,OAAO,CAAC,WAAW,CAAC,CAAC;AACnD,CAAC;AAED;;;;;GAKG;AACH,MAAM,CAAC,KAAK,UAAU,oBAAoB,CAAC,MAAc;IACvD,cAAc;IACd,MAAM,MAAM,GAAG,UAAU,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;IACtC,IAAI,MAAM,EAAE,CAAC;QACX,OAAO,MAAM,CAAC;IAChB,CAAC;IAED,kBAAkB;IAClB,MAAM,SAAS,GAAG,MAAM,gBAAgB,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;IACrD,IAAI,CAAC,SAAS,EAAE,CAAC;QACf,OAAO,sBAAsB,EAAE,CAAC;IAClC,CAAC;IAED,mBAAmB;IACnB,MAAM,KAAK,GAAG,kBAAkB,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC;IAClD,UAAU,CAAC,GAAG,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC;IAE9B,OAAO,KAAK,CAAC;AACf,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,eAAe,CAAC,MAAe;IAC7C,IAAI,MAAM,EAAE,CAAC;QACX,UAAU,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;IAC5B,CAAC;SAAM,CAAC;QACN,UAAU,CAAC,KAAK,EAAE,CAAC;IACrB,CAAC;AACH,CAAC"}
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* World pack persistence
|
|
3
|
+
*
|
|
4
|
+
* Manages saving/loading world packs to disk.
|
|
5
|
+
*/
|
|
6
|
+
import type { WorldContentPack } from "@mythxengine/worlds";
|
|
7
|
+
/**
|
|
8
|
+
* Get the directory for a world's generated books
|
|
9
|
+
*/
|
|
10
|
+
export declare function getWorldBooksDir(packId: string): string;
|
|
11
|
+
/**
|
|
12
|
+
* Get the directory for shared rules
|
|
13
|
+
*/
|
|
14
|
+
export declare function getRulesDir(): string;
|
|
15
|
+
/**
|
|
16
|
+
* Save a world pack to disk
|
|
17
|
+
*/
|
|
18
|
+
export declare function saveWorldPack(packId: string, worldPack: WorldContentPack): Promise<void>;
|
|
19
|
+
/**
|
|
20
|
+
* Load a world pack from disk
|
|
21
|
+
*/
|
|
22
|
+
export declare function loadWorldPack(packId: string): Promise<WorldContentPack | null>;
|
|
23
|
+
/**
|
|
24
|
+
* Delete a world pack
|
|
25
|
+
*/
|
|
26
|
+
export declare function deleteWorldPack(packId: string): Promise<void>;
|
|
27
|
+
/**
|
|
28
|
+
* List all world packs
|
|
29
|
+
*/
|
|
30
|
+
export declare function listWorldPacks(): Promise<string[]>;
|
|
31
|
+
/**
|
|
32
|
+
* World pack manager class for convenient access
|
|
33
|
+
*/
|
|
34
|
+
export declare class WorldPackManager {
|
|
35
|
+
private cache;
|
|
36
|
+
get(packId: string): Promise<WorldContentPack | null>;
|
|
37
|
+
save(packId: string, pack: WorldContentPack): Promise<void>;
|
|
38
|
+
delete(packId: string): Promise<void>;
|
|
39
|
+
list(): Promise<string[]>;
|
|
40
|
+
clearCache(): void;
|
|
41
|
+
}
|
|
42
|
+
export declare const worldPackManager: WorldPackManager;
|
|
43
|
+
//# sourceMappingURL=worldpacks.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"worldpacks.d.ts","sourceRoot":"","sources":["../../src/state/worldpacks.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAIH,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,qBAAqB,CAAC;AAY5D;;GAEG;AACH,wBAAgB,gBAAgB,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,CAGvD;AAED;;GAEG;AACH,wBAAgB,WAAW,IAAI,MAAM,CAEpC;AAaD;;GAEG;AACH,wBAAsB,aAAa,CAAC,MAAM,EAAE,MAAM,EAAE,SAAS,EAAE,gBAAgB,GAAG,OAAO,CAAC,IAAI,CAAC,CAM9F;AAED;;GAEG;AACH,wBAAsB,aAAa,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,gBAAgB,GAAG,IAAI,CAAC,CAapF;AAED;;GAEG;AACH,wBAAsB,eAAe,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CASnE;AAED;;GAEG;AACH,wBAAsB,cAAc,IAAI,OAAO,CAAC,MAAM,EAAE,CAAC,CAUxD;AAED;;GAEG;AACH,qBAAa,gBAAgB;IAC3B,OAAO,CAAC,KAAK,CAA4C;IAEnD,GAAG,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,gBAAgB,GAAG,IAAI,CAAC;IAcrD,IAAI,CAAC,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,gBAAgB,GAAG,OAAO,CAAC,IAAI,CAAC;IAK3D,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAKrC,IAAI,IAAI,OAAO,CAAC,MAAM,EAAE,CAAC;IAI/B,UAAU,IAAI,IAAI;CAGnB;AAGD,eAAO,MAAM,gBAAgB,kBAAyB,CAAC"}
|
|
@@ -0,0 +1,125 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* World pack persistence
|
|
3
|
+
*
|
|
4
|
+
* Manages saving/loading world packs to disk.
|
|
5
|
+
*/
|
|
6
|
+
import { readFile, writeFile, mkdir, rm, readdir } from "fs/promises";
|
|
7
|
+
import { join } from "path";
|
|
8
|
+
// Default data directory
|
|
9
|
+
const DATA_DIR = process.env.RPG_MCP_DATA_DIR || join(process.cwd(), "data");
|
|
10
|
+
const WORLDS_DIR = join(DATA_DIR, "worlds");
|
|
11
|
+
const BOOKS_DIR = join(DATA_DIR, "books");
|
|
12
|
+
const RULES_DIR = join(DATA_DIR, "rules");
|
|
13
|
+
function getWorldPackPath(packId) {
|
|
14
|
+
return join(WORLDS_DIR, `${packId}.world.json`);
|
|
15
|
+
}
|
|
16
|
+
/**
|
|
17
|
+
* Get the directory for a world's generated books
|
|
18
|
+
*/
|
|
19
|
+
export function getWorldBooksDir(packId) {
|
|
20
|
+
validatePackId(packId);
|
|
21
|
+
return join(BOOKS_DIR, packId);
|
|
22
|
+
}
|
|
23
|
+
/**
|
|
24
|
+
* Get the directory for shared rules
|
|
25
|
+
*/
|
|
26
|
+
export function getRulesDir() {
|
|
27
|
+
return RULES_DIR;
|
|
28
|
+
}
|
|
29
|
+
/**
|
|
30
|
+
* Validate pack ID format
|
|
31
|
+
*/
|
|
32
|
+
function validatePackId(packId) {
|
|
33
|
+
if (!/^[a-z0-9-_]+$/i.test(packId)) {
|
|
34
|
+
throw new Error(`Invalid pack ID: ${packId}. Must contain only alphanumeric characters, hyphens, and underscores`);
|
|
35
|
+
}
|
|
36
|
+
}
|
|
37
|
+
/**
|
|
38
|
+
* Save a world pack to disk
|
|
39
|
+
*/
|
|
40
|
+
export async function saveWorldPack(packId, worldPack) {
|
|
41
|
+
validatePackId(packId);
|
|
42
|
+
await mkdir(WORLDS_DIR, { recursive: true });
|
|
43
|
+
const path = getWorldPackPath(packId);
|
|
44
|
+
await writeFile(path, JSON.stringify(worldPack, null, 2), "utf-8");
|
|
45
|
+
}
|
|
46
|
+
/**
|
|
47
|
+
* Load a world pack from disk
|
|
48
|
+
*/
|
|
49
|
+
export async function loadWorldPack(packId) {
|
|
50
|
+
validatePackId(packId);
|
|
51
|
+
try {
|
|
52
|
+
const path = getWorldPackPath(packId);
|
|
53
|
+
const content = await readFile(path, "utf-8");
|
|
54
|
+
return JSON.parse(content);
|
|
55
|
+
}
|
|
56
|
+
catch (error) {
|
|
57
|
+
if (error.code === "ENOENT") {
|
|
58
|
+
return null;
|
|
59
|
+
}
|
|
60
|
+
throw error;
|
|
61
|
+
}
|
|
62
|
+
}
|
|
63
|
+
/**
|
|
64
|
+
* Delete a world pack
|
|
65
|
+
*/
|
|
66
|
+
export async function deleteWorldPack(packId) {
|
|
67
|
+
validatePackId(packId);
|
|
68
|
+
try {
|
|
69
|
+
const path = getWorldPackPath(packId);
|
|
70
|
+
await rm(path, { force: true });
|
|
71
|
+
}
|
|
72
|
+
catch {
|
|
73
|
+
// Ignore errors (file may not exist)
|
|
74
|
+
}
|
|
75
|
+
}
|
|
76
|
+
/**
|
|
77
|
+
* List all world packs
|
|
78
|
+
*/
|
|
79
|
+
export async function listWorldPacks() {
|
|
80
|
+
try {
|
|
81
|
+
await mkdir(WORLDS_DIR, { recursive: true });
|
|
82
|
+
const files = await readdir(WORLDS_DIR);
|
|
83
|
+
return files
|
|
84
|
+
.filter((f) => f.endsWith(".world.json"))
|
|
85
|
+
.map((f) => f.replace(".world.json", ""));
|
|
86
|
+
}
|
|
87
|
+
catch {
|
|
88
|
+
return [];
|
|
89
|
+
}
|
|
90
|
+
}
|
|
91
|
+
/**
|
|
92
|
+
* World pack manager class for convenient access
|
|
93
|
+
*/
|
|
94
|
+
export class WorldPackManager {
|
|
95
|
+
cache = new Map();
|
|
96
|
+
async get(packId) {
|
|
97
|
+
// Check cache first
|
|
98
|
+
const cached = this.cache.get(packId);
|
|
99
|
+
if (cached) {
|
|
100
|
+
return cached;
|
|
101
|
+
}
|
|
102
|
+
const pack = await loadWorldPack(packId);
|
|
103
|
+
if (pack) {
|
|
104
|
+
this.cache.set(packId, pack);
|
|
105
|
+
}
|
|
106
|
+
return pack;
|
|
107
|
+
}
|
|
108
|
+
async save(packId, pack) {
|
|
109
|
+
await saveWorldPack(packId, pack);
|
|
110
|
+
this.cache.set(packId, pack);
|
|
111
|
+
}
|
|
112
|
+
async delete(packId) {
|
|
113
|
+
await deleteWorldPack(packId);
|
|
114
|
+
this.cache.delete(packId);
|
|
115
|
+
}
|
|
116
|
+
async list() {
|
|
117
|
+
return listWorldPacks();
|
|
118
|
+
}
|
|
119
|
+
clearCache() {
|
|
120
|
+
this.cache.clear();
|
|
121
|
+
}
|
|
122
|
+
}
|
|
123
|
+
// Singleton instance
|
|
124
|
+
export const worldPackManager = new WorldPackManager();
|
|
125
|
+
//# sourceMappingURL=worldpacks.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"worldpacks.js","sourceRoot":"","sources":["../../src/state/worldpacks.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* World Pack Augmentation Tools
|
|
3
|
+
*
|
|
4
|
+
* Add new content to existing world packs.
|
|
5
|
+
*/
|
|
6
|
+
import type { MCPToolEntry } from "@mythxengine/types";
|
|
7
|
+
/**
|
|
8
|
+
* start_augmentation tool
|
|
9
|
+
*/
|
|
10
|
+
export declare const startAugmentationTool: MCPToolEntry;
|
|
11
|
+
/**
|
|
12
|
+
* merge_augmentation tool
|
|
13
|
+
*/
|
|
14
|
+
export declare const mergeAugmentationTool: MCPToolEntry;
|
|
15
|
+
//# sourceMappingURL=augment.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"augment.d.ts","sourceRoot":"","sources":["../../../src/tools/augmentation/augment.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAIH,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAkBvD;;GAEG;AACH,eAAO,MAAM,qBAAqB,EAAE,YAiHnC,CAAC;AAkBF;;GAEG;AACH,eAAO,MAAM,qBAAqB,EAAE,YA6InC,CAAC"}
|