@keeeeeeeks/cryptoloom-mcp-server 0.1.1 → 0.3.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/dist/index.js +102 -91
- package/dist/index.js.map +1 -1
- package/dist/lib/api.d.ts +2 -0
- package/dist/lib/api.js +17 -0
- package/dist/lib/api.js.map +1 -0
- package/dist/lib/ink-branch-store.d.ts +8 -0
- package/dist/lib/ink-branch-store.js +14 -0
- package/dist/lib/ink-branch-store.js.map +1 -0
- package/dist/lib/work-resolution.d.ts +15 -0
- package/dist/lib/work-resolution.js +87 -0
- package/dist/lib/work-resolution.js.map +1 -0
- package/package.json +3 -3
package/dist/index.js
CHANGED
|
@@ -1,85 +1,21 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
|
-
import { randomUUID } from "node:crypto";
|
|
3
2
|
import { McpServer } from "@modelcontextprotocol/sdk/server/mcp.js";
|
|
4
3
|
import { StdioServerTransport } from "@modelcontextprotocol/sdk/server/stdio.js";
|
|
5
4
|
import { z } from "zod";
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
function normalizeWorkId(input) {
|
|
10
|
-
const trimmed = input.trim();
|
|
11
|
-
try {
|
|
12
|
-
const parsed = JSON.parse(trimmed);
|
|
13
|
-
if (typeof parsed === "string" && parsed.trim().length > 0) {
|
|
14
|
-
return parsed.trim();
|
|
15
|
-
}
|
|
16
|
-
}
|
|
17
|
-
catch { }
|
|
18
|
-
if (trimmed.length >= 2 && trimmed.startsWith('"') && trimmed.endsWith('"')) {
|
|
19
|
-
const inner = trimmed.slice(1, -1).trim();
|
|
20
|
-
if (inner.length > 0)
|
|
21
|
-
return inner;
|
|
22
|
-
}
|
|
23
|
-
return trimmed;
|
|
24
|
-
}
|
|
25
|
-
async function resolvePlayableWorkId(input) {
|
|
26
|
-
const normalized = normalizeWorkId(input);
|
|
27
|
-
if (workIdResolutionCache.has(normalized)) {
|
|
28
|
-
return workIdResolutionCache.get(normalized);
|
|
29
|
-
}
|
|
30
|
-
const res = await api("/api/works");
|
|
31
|
-
if (!res.ok) {
|
|
32
|
-
workIdResolutionCache.set(normalized, normalized);
|
|
33
|
-
return normalized;
|
|
34
|
-
}
|
|
35
|
-
const data = (await res.json());
|
|
36
|
-
const works = Array.isArray(data.works) ? data.works : [];
|
|
37
|
-
const byStoryId = works.find((w) => normalizeWorkId(w.storyId ?? "") === normalized);
|
|
38
|
-
if (byStoryId?.storyId) {
|
|
39
|
-
workIdResolutionCache.set(normalized, byStoryId.storyId);
|
|
40
|
-
return byStoryId.storyId;
|
|
41
|
-
}
|
|
42
|
-
const byDbId = works.find((w) => normalizeWorkId(w.id ?? "") === normalized);
|
|
43
|
-
if (byDbId?.storyId) {
|
|
44
|
-
workIdResolutionCache.set(normalized, byDbId.storyId);
|
|
45
|
-
return byDbId.storyId;
|
|
46
|
-
}
|
|
47
|
-
workIdResolutionCache.set(normalized, normalized);
|
|
48
|
-
return normalized;
|
|
49
|
-
}
|
|
50
|
-
async function api(path, options = {}) {
|
|
51
|
-
const url = `${BASE_URL}${path}`;
|
|
52
|
-
return fetch(url, {
|
|
53
|
-
...options,
|
|
54
|
-
headers: {
|
|
55
|
-
"Content-Type": "application/json",
|
|
56
|
-
...options.headers,
|
|
57
|
-
},
|
|
58
|
-
});
|
|
59
|
-
}
|
|
5
|
+
import { api } from "./lib/api.js";
|
|
6
|
+
import { createInkBranch, getInkBranch, setInkBranch } from "./lib/ink-branch-store.js";
|
|
7
|
+
import { addPlayableWorkHint, fetchListedWorks, normalizeWorkId, resolvePlayableWorkId, resolveWorkDbId } from "./lib/work-resolution.js";
|
|
60
8
|
const server = new McpServer({
|
|
61
9
|
name: "cryptoloom",
|
|
62
|
-
version: "0.
|
|
10
|
+
version: "0.2.0",
|
|
63
11
|
});
|
|
64
12
|
server.tool("cryptoloom_list_works", "List all playable interactive fiction works on Cryptoloom with their IDs, formats, and prices", {}, async () => {
|
|
65
|
-
const
|
|
66
|
-
const data = await res.json();
|
|
67
|
-
const works = Array.isArray(data.works)
|
|
68
|
-
? (data.works).map((work) => ({
|
|
69
|
-
...work,
|
|
70
|
-
playableWorkId: typeof work.storyId === "string" && work.storyId.length > 0
|
|
71
|
-
? work.storyId
|
|
72
|
-
: work.id,
|
|
73
|
-
}))
|
|
74
|
-
: [];
|
|
13
|
+
const data = { works: await fetchListedWorks() };
|
|
75
14
|
return {
|
|
76
15
|
content: [
|
|
77
16
|
{
|
|
78
17
|
type: "text",
|
|
79
|
-
text: JSON.stringify(
|
|
80
|
-
works,
|
|
81
|
-
usageHint: "For cryptoloom_start_game and other gameplay tools, use playableWorkId (storyId), not the database id.",
|
|
82
|
-
}, null, 2),
|
|
18
|
+
text: JSON.stringify(addPlayableWorkHint(data), null, 2),
|
|
83
19
|
},
|
|
84
20
|
],
|
|
85
21
|
};
|
|
@@ -92,7 +28,24 @@ server.tool("cryptoloom_get_work", "Get details for a specific work including de
|
|
|
92
28
|
const data = await res.json();
|
|
93
29
|
return { content: [{ type: "text", text: JSON.stringify(data, null, 2) }] };
|
|
94
30
|
});
|
|
95
|
-
server.tool("cryptoloom_start_game", "Start a new game session for a work. Returns the opening text and either choices plus an MCP session branch handle (Ink) or a sessionId (Glulx parser)", {
|
|
31
|
+
server.tool("cryptoloom_start_game", "Start a new game session for a work. Returns the opening text and either choices plus an MCP session branch handle (Ink) or a sessionId (Glulx parser)", {
|
|
32
|
+
workId: z.string().describe("Work ID to play"),
|
|
33
|
+
playerId: z.string().optional().describe("Optional player ID. If provided, creates a tracked run instead of using the stateless play endpoint."),
|
|
34
|
+
}, async ({ workId, playerId }) => {
|
|
35
|
+
const trimmedPlayerId = typeof playerId === "string" ? playerId.trim() : "";
|
|
36
|
+
if (trimmedPlayerId.length > 0) {
|
|
37
|
+
const resolvedDbWorkId = await resolveWorkDbId(workId);
|
|
38
|
+
const runRes = await api("/api/runs", {
|
|
39
|
+
method: "POST",
|
|
40
|
+
body: JSON.stringify({ workId: resolvedDbWorkId, playerId: trimmedPlayerId, role: "agent" }),
|
|
41
|
+
});
|
|
42
|
+
if (!runRes.ok) {
|
|
43
|
+
const err = await runRes.json();
|
|
44
|
+
return { content: [{ type: "text", text: `Error: ${err.error}` }] };
|
|
45
|
+
}
|
|
46
|
+
const runData = await runRes.json();
|
|
47
|
+
return { content: [{ type: "text", text: JSON.stringify(runData, null, 2) }] };
|
|
48
|
+
}
|
|
96
49
|
const resolvedWorkId = await resolvePlayableWorkId(workId);
|
|
97
50
|
const res = await api(`/api/works/${encodeURIComponent(resolvedWorkId)}/play`, {
|
|
98
51
|
method: "POST",
|
|
@@ -104,11 +57,7 @@ server.tool("cryptoloom_start_game", "Start a new game session for a work. Retur
|
|
|
104
57
|
}
|
|
105
58
|
const data = await res.json();
|
|
106
59
|
if (data.format === "ink" && typeof data.state === "string") {
|
|
107
|
-
const mcpSessionBranchId =
|
|
108
|
-
inkSessionStateCache.set(mcpSessionBranchId, {
|
|
109
|
-
state: data.state,
|
|
110
|
-
workId: resolvedWorkId,
|
|
111
|
-
});
|
|
60
|
+
const mcpSessionBranchId = createInkBranch(data.state, resolvedWorkId);
|
|
112
61
|
return {
|
|
113
62
|
content: [
|
|
114
63
|
{
|
|
@@ -122,23 +71,46 @@ server.tool("cryptoloom_start_game", "Start a new game session for a work. Retur
|
|
|
122
71
|
});
|
|
123
72
|
server.tool("cryptoloom_make_choice", "Make a choice in an Ink (choice-based) game. Prefer `mcpSessionBranchId` from cryptoloom_start_game; use raw `state` only as a stateless fallback.", {
|
|
124
73
|
workId: z.string().describe("Work ID"),
|
|
74
|
+
runId: z.string().optional().describe("Preferred for tracked runs: run ID returned by cryptoloom_start_game when called with playerId"),
|
|
125
75
|
mcpSessionBranchId: z.string().optional().describe("Preferred: MCP session branch handle returned by cryptoloom_start_game for Ink games"),
|
|
126
76
|
state: z.string().optional().describe("Fallback only: serialized game state from the previous response"),
|
|
127
77
|
choiceIndex: z.number().int().min(0).describe("Index of the choice to make (0-based)"),
|
|
128
|
-
}, async ({ workId, state, mcpSessionBranchId, choiceIndex }) => {
|
|
78
|
+
}, async ({ workId, runId, state, mcpSessionBranchId, choiceIndex }) => {
|
|
79
|
+
const normalizedRunId = typeof runId === "string" ? runId.trim() : "";
|
|
80
|
+
if (normalizedRunId.length > 0) {
|
|
81
|
+
const res = await api(`/api/runs/${encodeURIComponent(normalizedRunId)}/turn`, {
|
|
82
|
+
method: "POST",
|
|
83
|
+
body: JSON.stringify({ choiceIndex }),
|
|
84
|
+
});
|
|
85
|
+
if (!res.ok) {
|
|
86
|
+
const err = await res.json();
|
|
87
|
+
return { content: [{ type: "text", text: `Error: ${err.error}` }] };
|
|
88
|
+
}
|
|
89
|
+
const data = await res.json();
|
|
90
|
+
return { content: [{ type: "text", text: JSON.stringify(data, null, 2) }] };
|
|
91
|
+
}
|
|
129
92
|
const normalizedWorkId = normalizeWorkId(workId);
|
|
93
|
+
const normalizedBranchId = typeof mcpSessionBranchId === "string" ? mcpSessionBranchId.trim() : "";
|
|
94
|
+
const cachedBranch = normalizedBranchId.length > 0 ? getInkBranch(normalizedBranchId) : undefined;
|
|
130
95
|
let normalizedState = typeof state === "string" ? state.trim() : "";
|
|
131
96
|
if (normalizedState.length === 0 ||
|
|
132
97
|
normalizedState === "undefined" ||
|
|
133
98
|
normalizedState === "null") {
|
|
134
|
-
if (
|
|
135
|
-
|
|
136
|
-
if (cached) {
|
|
137
|
-
normalizedState = cached.state;
|
|
138
|
-
}
|
|
99
|
+
if (cachedBranch) {
|
|
100
|
+
normalizedState = cachedBranch.state;
|
|
139
101
|
}
|
|
140
102
|
}
|
|
141
103
|
if (normalizedState.length === 0 || normalizedState === "undefined" || normalizedState === "null") {
|
|
104
|
+
if (normalizedBranchId.length > 0 && !cachedBranch) {
|
|
105
|
+
return {
|
|
106
|
+
content: [
|
|
107
|
+
{
|
|
108
|
+
type: "text",
|
|
109
|
+
text: "Error: mcpSessionBranchId was not found in this MCP server process. This usually means you started a new MCP process or the in-memory branch expired. Reuse the same persistent MCP connection, or pass raw `state` as a stateless fallback.",
|
|
110
|
+
},
|
|
111
|
+
],
|
|
112
|
+
};
|
|
113
|
+
}
|
|
142
114
|
return {
|
|
143
115
|
content: [
|
|
144
116
|
{
|
|
@@ -149,9 +121,8 @@ server.tool("cryptoloom_make_choice", "Make a choice in an Ink (choice-based) ga
|
|
|
149
121
|
};
|
|
150
122
|
}
|
|
151
123
|
const resolvedWorkId = await resolvePlayableWorkId(normalizedWorkId);
|
|
152
|
-
if (
|
|
153
|
-
|
|
154
|
-
if (cached && cached.workId !== resolvedWorkId) {
|
|
124
|
+
if (normalizedBranchId.length > 0) {
|
|
125
|
+
if (cachedBranch && cachedBranch.workId !== resolvedWorkId) {
|
|
155
126
|
return {
|
|
156
127
|
content: [
|
|
157
128
|
{
|
|
@@ -171,22 +142,62 @@ server.tool("cryptoloom_make_choice", "Make a choice in an Ink (choice-based) ga
|
|
|
171
142
|
return { content: [{ type: "text", text: `Error: ${err.error}` }] };
|
|
172
143
|
}
|
|
173
144
|
const data = await res.json();
|
|
174
|
-
if (
|
|
175
|
-
|
|
176
|
-
state: data.state,
|
|
177
|
-
workId: resolvedWorkId,
|
|
178
|
-
});
|
|
145
|
+
if (normalizedBranchId.length > 0 && typeof data.state === "string") {
|
|
146
|
+
setInkBranch(normalizedBranchId, data.state, resolvedWorkId);
|
|
179
147
|
return {
|
|
180
148
|
content: [
|
|
181
149
|
{
|
|
182
150
|
type: "text",
|
|
183
|
-
text: JSON.stringify({ ...data, mcpSessionBranchId:
|
|
151
|
+
text: JSON.stringify({ ...data, mcpSessionBranchId: normalizedBranchId }, null, 2),
|
|
184
152
|
},
|
|
185
153
|
],
|
|
186
154
|
};
|
|
187
155
|
}
|
|
188
156
|
return { content: [{ type: "text", text: JSON.stringify(data, null, 2) }] };
|
|
189
157
|
});
|
|
158
|
+
server.tool("cryptoloom_save_game", "Save a tracked run into a save slot. Requires a runId from the runs-backed start_game flow.", {
|
|
159
|
+
runId: z.string().describe("Tracked run ID"),
|
|
160
|
+
slotIndex: z.number().int().min(0).describe("Save slot index (0-based)"),
|
|
161
|
+
}, async ({ runId, slotIndex }) => {
|
|
162
|
+
const res = await api(`/api/runs/${encodeURIComponent(runId.trim())}/save`, {
|
|
163
|
+
method: "POST",
|
|
164
|
+
body: JSON.stringify({ slotIndex }),
|
|
165
|
+
});
|
|
166
|
+
if (!res.ok) {
|
|
167
|
+
const err = await res.json();
|
|
168
|
+
return { content: [{ type: "text", text: `Error: ${err.error}` }] };
|
|
169
|
+
}
|
|
170
|
+
const data = await res.json();
|
|
171
|
+
return { content: [{ type: "text", text: JSON.stringify(data, null, 2) }] };
|
|
172
|
+
});
|
|
173
|
+
server.tool("cryptoloom_list_saves", "List save slots for a player and work.", {
|
|
174
|
+
workId: z.string().describe("Work ID"),
|
|
175
|
+
playerId: z.string().describe("Player ID"),
|
|
176
|
+
}, async ({ workId, playerId }) => {
|
|
177
|
+
const resolvedDbWorkId = await resolveWorkDbId(workId);
|
|
178
|
+
const res = await api(`/api/works/${encodeURIComponent(resolvedDbWorkId)}/saves?playerId=${encodeURIComponent(playerId.trim())}`);
|
|
179
|
+
if (!res.ok) {
|
|
180
|
+
const err = await res.json();
|
|
181
|
+
return { content: [{ type: "text", text: `Error: ${err.error}` }] };
|
|
182
|
+
}
|
|
183
|
+
const data = await res.json();
|
|
184
|
+
return { content: [{ type: "text", text: JSON.stringify(data, null, 2) }] };
|
|
185
|
+
});
|
|
186
|
+
server.tool("cryptoloom_load_game", "Load a tracked run from a save slot. Returns the restored run and current turn snapshot.", {
|
|
187
|
+
runId: z.string().describe("Existing run ID for the same player/work context"),
|
|
188
|
+
saveSlotId: z.string().describe("Save slot ID to restore"),
|
|
189
|
+
}, async ({ runId, saveSlotId }) => {
|
|
190
|
+
const res = await api(`/api/runs/${encodeURIComponent(runId.trim())}/load`, {
|
|
191
|
+
method: "POST",
|
|
192
|
+
body: JSON.stringify({ saveSlotId }),
|
|
193
|
+
});
|
|
194
|
+
if (!res.ok) {
|
|
195
|
+
const err = await res.json();
|
|
196
|
+
return { content: [{ type: "text", text: `Error: ${err.error}` }] };
|
|
197
|
+
}
|
|
198
|
+
const data = await res.json();
|
|
199
|
+
return { content: [{ type: "text", text: JSON.stringify(data, null, 2) }] };
|
|
200
|
+
});
|
|
190
201
|
server.tool("cryptoloom_send_command", "Send a text command to a Glulx (parser-based) game. Provide the sessionId from the start response.", {
|
|
191
202
|
workId: z.string().describe("Work ID"),
|
|
192
203
|
sessionId: z.string().describe("Session ID from the start_game response"),
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
package/dist/lib/api.js
ADDED
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
const BASE_URL = process.env.CRYPTOLOOM_API_URL ?? "https://web-mu-silk.vercel.app";
|
|
2
|
+
export async function api(path, options = {}) {
|
|
3
|
+
const authorization = process.env.CRYPTOLOOM_PAYMENT_AUTHORIZATION?.trim();
|
|
4
|
+
return fetch(`${BASE_URL}${path}`, {
|
|
5
|
+
...options,
|
|
6
|
+
headers: {
|
|
7
|
+
"Content-Type": "application/json",
|
|
8
|
+
...(authorization ? { Authorization: authorization } : {}),
|
|
9
|
+
...options.headers,
|
|
10
|
+
},
|
|
11
|
+
});
|
|
12
|
+
}
|
|
13
|
+
export async function apiJson(path, options = {}) {
|
|
14
|
+
const res = await api(path, options);
|
|
15
|
+
return res.json();
|
|
16
|
+
}
|
|
17
|
+
//# sourceMappingURL=api.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"api.js","sourceRoot":"","sources":["../../src/lib/api.ts"],"names":[],"mappings":"AAAA,MAAM,QAAQ,GAAG,OAAO,CAAC,GAAG,CAAC,kBAAkB,IAAI,gCAAgC,CAAC;AAEpF,MAAM,CAAC,KAAK,UAAU,GAAG,CAAC,IAAY,EAAE,UAAuB,EAAE;IAC/D,MAAM,aAAa,GAAG,OAAO,CAAC,GAAG,CAAC,gCAAgC,EAAE,IAAI,EAAE,CAAC;IAC3E,OAAO,KAAK,CAAC,GAAG,QAAQ,GAAG,IAAI,EAAE,EAAE;QACjC,GAAG,OAAO;QACV,OAAO,EAAE;YACP,cAAc,EAAE,kBAAkB;YAClC,GAAG,CAAC,aAAa,CAAC,CAAC,CAAC,EAAE,aAAa,EAAE,aAAa,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;YAC1D,GAAG,OAAO,CAAC,OAAO;SACnB;KACF,CAAC,CAAC;AACL,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,OAAO,CAAI,IAAY,EAAE,UAAuB,EAAE;IACtE,MAAM,GAAG,GAAG,MAAM,GAAG,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;IACrC,OAAO,GAAG,CAAC,IAAI,EAAgB,CAAC;AAClC,CAAC"}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
type InkBranch = {
|
|
2
|
+
state: string;
|
|
3
|
+
workId: string;
|
|
4
|
+
};
|
|
5
|
+
export declare function createInkBranch(state: string, workId: string): `${string}-${string}-${string}-${string}-${string}`;
|
|
6
|
+
export declare function getInkBranch(branchId: string): InkBranch | undefined;
|
|
7
|
+
export declare function setInkBranch(branchId: string, state: string, workId: string): void;
|
|
8
|
+
export {};
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import { randomUUID } from "node:crypto";
|
|
2
|
+
const branchStore = new Map();
|
|
3
|
+
export function createInkBranch(state, workId) {
|
|
4
|
+
const branchId = randomUUID();
|
|
5
|
+
branchStore.set(branchId, { state, workId });
|
|
6
|
+
return branchId;
|
|
7
|
+
}
|
|
8
|
+
export function getInkBranch(branchId) {
|
|
9
|
+
return branchStore.get(branchId);
|
|
10
|
+
}
|
|
11
|
+
export function setInkBranch(branchId, state, workId) {
|
|
12
|
+
branchStore.set(branchId, { state, workId });
|
|
13
|
+
}
|
|
14
|
+
//# sourceMappingURL=ink-branch-store.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ink-branch-store.js","sourceRoot":"","sources":["../../src/lib/ink-branch-store.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AAIzC,MAAM,WAAW,GAAG,IAAI,GAAG,EAAqB,CAAC;AAEjD,MAAM,UAAU,eAAe,CAAC,KAAa,EAAE,MAAc;IAC3D,MAAM,QAAQ,GAAG,UAAU,EAAE,CAAC;IAC9B,WAAW,CAAC,GAAG,CAAC,QAAQ,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,CAAC,CAAC;IAC7C,OAAO,QAAQ,CAAC;AAClB,CAAC;AAED,MAAM,UAAU,YAAY,CAAC,QAAgB;IAC3C,OAAO,WAAW,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;AACnC,CAAC;AAED,MAAM,UAAU,YAAY,CAAC,QAAgB,EAAE,KAAa,EAAE,MAAc;IAC1E,WAAW,CAAC,GAAG,CAAC,QAAQ,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,CAAC,CAAC;AAC/C,CAAC"}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
type ListedWork = {
|
|
2
|
+
id?: string;
|
|
3
|
+
storyId?: string;
|
|
4
|
+
};
|
|
5
|
+
export declare function normalizeWorkId(input: string): string;
|
|
6
|
+
export declare function fetchListedWorks(): Promise<ListedWork[]>;
|
|
7
|
+
export declare function resolvePlayableWorkId(input: string): Promise<string>;
|
|
8
|
+
export declare function resolveWorkDbId(input: string): Promise<string>;
|
|
9
|
+
export declare function addPlayableWorkHint(data: unknown): {
|
|
10
|
+
works: {
|
|
11
|
+
playableWorkId: unknown;
|
|
12
|
+
}[];
|
|
13
|
+
usageHint: string;
|
|
14
|
+
};
|
|
15
|
+
export {};
|
|
@@ -0,0 +1,87 @@
|
|
|
1
|
+
import { api } from "./api.js";
|
|
2
|
+
const playableWorkIdCache = new Map();
|
|
3
|
+
const dbWorkIdCache = new Map();
|
|
4
|
+
export function normalizeWorkId(input) {
|
|
5
|
+
const trimmed = input.trim();
|
|
6
|
+
try {
|
|
7
|
+
const parsed = JSON.parse(trimmed);
|
|
8
|
+
if (typeof parsed === "string" && parsed.trim().length > 0) {
|
|
9
|
+
return parsed.trim();
|
|
10
|
+
}
|
|
11
|
+
}
|
|
12
|
+
catch { }
|
|
13
|
+
if (trimmed.length >= 2 && trimmed.startsWith('"') && trimmed.endsWith('"')) {
|
|
14
|
+
const inner = trimmed.slice(1, -1).trim();
|
|
15
|
+
if (inner.length > 0)
|
|
16
|
+
return inner;
|
|
17
|
+
}
|
|
18
|
+
return trimmed;
|
|
19
|
+
}
|
|
20
|
+
export async function fetchListedWorks() {
|
|
21
|
+
const res = await api("/api/works");
|
|
22
|
+
if (!res.ok)
|
|
23
|
+
return [];
|
|
24
|
+
const data = (await res.json());
|
|
25
|
+
return Array.isArray(data.works) ? data.works : [];
|
|
26
|
+
}
|
|
27
|
+
export async function resolvePlayableWorkId(input) {
|
|
28
|
+
const normalized = normalizeWorkId(input);
|
|
29
|
+
const cached = playableWorkIdCache.get(normalized);
|
|
30
|
+
if (cached)
|
|
31
|
+
return cached;
|
|
32
|
+
const works = await fetchListedWorks();
|
|
33
|
+
if (works.length === 0) {
|
|
34
|
+
playableWorkIdCache.set(normalized, normalized);
|
|
35
|
+
return normalized;
|
|
36
|
+
}
|
|
37
|
+
const byStoryId = works.find((w) => normalizeWorkId(w.storyId ?? "") === normalized);
|
|
38
|
+
if (byStoryId?.storyId) {
|
|
39
|
+
playableWorkIdCache.set(normalized, byStoryId.storyId);
|
|
40
|
+
return byStoryId.storyId;
|
|
41
|
+
}
|
|
42
|
+
const byDbId = works.find((w) => normalizeWorkId(w.id ?? "") === normalized);
|
|
43
|
+
if (byDbId?.storyId) {
|
|
44
|
+
playableWorkIdCache.set(normalized, byDbId.storyId);
|
|
45
|
+
return byDbId.storyId;
|
|
46
|
+
}
|
|
47
|
+
playableWorkIdCache.set(normalized, normalized);
|
|
48
|
+
return normalized;
|
|
49
|
+
}
|
|
50
|
+
export async function resolveWorkDbId(input) {
|
|
51
|
+
const normalized = normalizeWorkId(input);
|
|
52
|
+
const cached = dbWorkIdCache.get(normalized);
|
|
53
|
+
if (cached)
|
|
54
|
+
return cached;
|
|
55
|
+
const works = await fetchListedWorks();
|
|
56
|
+
if (works.length === 0) {
|
|
57
|
+
dbWorkIdCache.set(normalized, normalized);
|
|
58
|
+
return normalized;
|
|
59
|
+
}
|
|
60
|
+
const byDbId = works.find((w) => normalizeWorkId(w.id ?? "") === normalized);
|
|
61
|
+
if (byDbId?.id) {
|
|
62
|
+
dbWorkIdCache.set(normalized, byDbId.id);
|
|
63
|
+
return byDbId.id;
|
|
64
|
+
}
|
|
65
|
+
const byStoryId = works.find((w) => normalizeWorkId(w.storyId ?? "") === normalized);
|
|
66
|
+
if (byStoryId?.id) {
|
|
67
|
+
dbWorkIdCache.set(normalized, byStoryId.id);
|
|
68
|
+
return byStoryId.id;
|
|
69
|
+
}
|
|
70
|
+
dbWorkIdCache.set(normalized, normalized);
|
|
71
|
+
return normalized;
|
|
72
|
+
}
|
|
73
|
+
export function addPlayableWorkHint(data) {
|
|
74
|
+
const works = Array.isArray(data.works)
|
|
75
|
+
? (data.works).map((work) => ({
|
|
76
|
+
...work,
|
|
77
|
+
playableWorkId: typeof work.storyId === "string" && work.storyId.length > 0
|
|
78
|
+
? work.storyId
|
|
79
|
+
: work.id,
|
|
80
|
+
}))
|
|
81
|
+
: [];
|
|
82
|
+
return {
|
|
83
|
+
works,
|
|
84
|
+
usageHint: "For cryptoloom_start_game and other gameplay tools, use playableWorkId (storyId), not the database id.",
|
|
85
|
+
};
|
|
86
|
+
}
|
|
87
|
+
//# sourceMappingURL=work-resolution.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"work-resolution.js","sourceRoot":"","sources":["../../src/lib/work-resolution.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@keeeeeeeks/cryptoloom-mcp-server",
|
|
3
|
-
"version": "0.
|
|
4
|
-
"description": "MCP server for Cryptoloom interactive fiction platform
|
|
3
|
+
"version": "0.3.0",
|
|
4
|
+
"description": "MCP server for Cryptoloom interactive fiction platform — enables AI agents to discover, play, and verify text-based games",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"main": "dist/index.js",
|
|
7
7
|
"bin": {
|
|
@@ -21,7 +21,7 @@
|
|
|
21
21
|
],
|
|
22
22
|
"repository": {
|
|
23
23
|
"type": "git",
|
|
24
|
-
"url": "https://github.com/Resoworks/cryptoloom.git",
|
|
24
|
+
"url": "git+https://github.com/Resoworks/cryptoloom.git",
|
|
25
25
|
"directory": "mcp-server"
|
|
26
26
|
},
|
|
27
27
|
"license": "MIT",
|