@idosgames/mcp 0.1.38 → 0.1.39
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/cli.js +40 -9
- package/package.json +1 -1
- package/registry/host.json +1 -1
- package/registry/index.json +17 -18
- package/registry/modules/hero-run.json +18 -19
- package/registry/modules/idle-rpg.json +5 -5
- package/registry/modules/video-studio.json +40 -40
- package/registry/modules/voxelcraft.json +4 -4
- package/registry/skills/hero-run.json +2 -2
- package/registry/skills/video-studio.json +1 -1
package/dist/cli.js
CHANGED
|
@@ -2179,8 +2179,14 @@ var VIDEO_TOOLS = [
|
|
|
2179
2179
|
inputSchema: {
|
|
2180
2180
|
type: "object",
|
|
2181
2181
|
properties: {
|
|
2182
|
-
package: {
|
|
2183
|
-
|
|
2182
|
+
package: {
|
|
2183
|
+
type: "object",
|
|
2184
|
+
description: "{ spec, assets } \u2014 a VideoSpec and the assets it uses."
|
|
2185
|
+
},
|
|
2186
|
+
title_id: {
|
|
2187
|
+
type: "string",
|
|
2188
|
+
description: "The app with the video studio, for the link (optional)."
|
|
2189
|
+
}
|
|
2184
2190
|
},
|
|
2185
2191
|
required: ["package"]
|
|
2186
2192
|
}
|
|
@@ -2195,21 +2201,46 @@ async function callVideoTool(name, args) {
|
|
|
2195
2201
|
switch (name) {
|
|
2196
2202
|
case "validate_asset": {
|
|
2197
2203
|
const asset = args?.["asset"];
|
|
2198
|
-
if (!asset || typeof asset !== "object")
|
|
2204
|
+
if (!asset || typeof asset !== "object")
|
|
2205
|
+
return {
|
|
2206
|
+
ok: false,
|
|
2207
|
+
error: "validate_asset requires an 'asset' object."
|
|
2208
|
+
};
|
|
2199
2209
|
const issues = ke2(asset, { inline: true });
|
|
2200
|
-
return {
|
|
2210
|
+
return {
|
|
2211
|
+
ok: true,
|
|
2212
|
+
value: { ok: !issues.some((i5) => i5.level === "error"), issues }
|
|
2213
|
+
};
|
|
2201
2214
|
}
|
|
2202
2215
|
case "validate_video": {
|
|
2203
2216
|
const pkg = args?.["package"];
|
|
2204
|
-
if (!pkg || typeof pkg !== "object")
|
|
2217
|
+
if (!pkg || typeof pkg !== "object")
|
|
2218
|
+
return {
|
|
2219
|
+
ok: false,
|
|
2220
|
+
error: "validate_video requires a 'package' object."
|
|
2221
|
+
};
|
|
2205
2222
|
const r7 = at(pkg);
|
|
2206
|
-
if (!r7.ok)
|
|
2207
|
-
|
|
2223
|
+
if (!r7.ok)
|
|
2224
|
+
return {
|
|
2225
|
+
ok: true,
|
|
2226
|
+
value: { ok: false, error: r7.error, issues: r7.issues }
|
|
2227
|
+
};
|
|
2228
|
+
const errors = r7.issues.filter(
|
|
2229
|
+
(i5) => "level" in i5 && i5.level === "error"
|
|
2230
|
+
);
|
|
2208
2231
|
const dropped = (Array.isArray(pkg.assets) ? pkg.assets.length : 0) - r7.value.assets.length;
|
|
2209
2232
|
const titleId = typeof args?.["title_id"] === "string" ? args["title_id"].trim() : "";
|
|
2210
2233
|
const origin = titleId ? titleOrigin(titleId) : null;
|
|
2211
2234
|
const link = origin ? `${origin}/#videodata=${await cs(r7.value)}` : null;
|
|
2212
|
-
return {
|
|
2235
|
+
return {
|
|
2236
|
+
ok: true,
|
|
2237
|
+
value: {
|
|
2238
|
+
ok: errors.length === 0,
|
|
2239
|
+
issues: r7.issues,
|
|
2240
|
+
droppedAssets: dropped,
|
|
2241
|
+
link
|
|
2242
|
+
}
|
|
2243
|
+
};
|
|
2213
2244
|
}
|
|
2214
2245
|
default:
|
|
2215
2246
|
return null;
|
|
@@ -2217,7 +2248,7 @@ async function callVideoTool(name, args) {
|
|
|
2217
2248
|
}
|
|
2218
2249
|
|
|
2219
2250
|
// src/server.ts
|
|
2220
|
-
var SERVER_VERSION = true ? "0.1.
|
|
2251
|
+
var SERVER_VERSION = true ? "0.1.39" : "0.0.0-dev";
|
|
2221
2252
|
var readOnly2 = (title) => ({
|
|
2222
2253
|
title,
|
|
2223
2254
|
readOnlyHint: true,
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@idosgames/mcp",
|
|
3
|
-
"version": "0.1.
|
|
3
|
+
"version": "0.1.39",
|
|
4
4
|
"mcpName": "com.idosgames/sdk",
|
|
5
5
|
"description": "MCP server that serves the iDosGames Module & Skills Registry to AI coding agents (Claude Code, Codex, Cursor…): list/pull composable game modules and the host scaffold, and load skills for @idosgames/core, the module contract, and composition.",
|
|
6
6
|
"type": "module",
|
package/registry/host.json
CHANGED
|
@@ -75,7 +75,7 @@
|
|
|
75
75
|
},
|
|
76
76
|
{
|
|
77
77
|
"path": "vite.config.ts",
|
|
78
|
-
"content": "import { existsSync } from \"node:fs\";\
|
|
78
|
+
"content": "import { existsSync } from \"node:fs\";\nimport { fileURLToPath } from \"node:url\";\nimport { defineConfig } from \"vite\";\nimport react from \"@vitejs/plugin-react\";\n\nconst fromHere = (path: string): string =>\n fileURLToPath(new URL(path, import.meta.url));\n\n// Inside this monorepo, resolve the @idosgames/* packages to their source for instant HMR (no SDK/\n// host rebuild needed in dev). A standalone copy of this template — a cloned starter, or an AI Coder\n// project built in a container — has no such paths and resolves each package from node_modules.\nconst sourceAliases: Record<string, string> = {\n // ⚠ Subpaths BEFORE the package: a string alias matches its prefix too, so \"@idosgames/core\"\n // would turn \"@idosgames/core/realtime\" into \".../src/index.ts/realtime\".\n \"@idosgames/core/realtime\": fromHere(\n \"../../packages/core/src/realtime/index.ts\",\n ),\n \"@idosgames/core\": fromHere(\"../../packages/core/src/index.ts\"),\n \"@idosgames/module-sdk\": fromHere(\"../../packages/module-sdk/src/index.ts\"),\n \"@idosgames/react/ui\": fromHere(\"../../packages/react/src/ui/index.ts\"),\n \"@idosgames/react\": fromHere(\"../../packages/react/src/index.ts\"),\n \"@idosgames/characters/voxel\": fromHere(\n \"../../packages/characters/src/voxel/index.ts\",\n ),\n \"@idosgames/characters/rig2d/phaser\": fromHere(\n \"../../packages/characters/src/rig2d/render/phaser/index.ts\",\n ),\n \"@idosgames/characters/rig2d/three\": fromHere(\n \"../../packages/characters/src/rig2d/render/three/index.ts\",\n ),\n \"@idosgames/characters/rig2d/editor\": fromHere(\n \"../../packages/characters/src/rig2d/editor/index.ts\",\n ),\n \"@idosgames/characters/rig2d\": fromHere(\n \"../../packages/characters/src/rig2d/index.ts\",\n ),\n \"@idosgames/characters/gltf\": fromHere(\n \"../../packages/characters/src/gltf/index.ts\",\n ),\n \"@idosgames/characters\": fromHere(\"../../packages/characters/src/index.ts\"),\n \"@idosgames/timeline/three\": fromHere(\n \"../../packages/timeline/src/three/index.ts\",\n ),\n \"@idosgames/timeline/export\": fromHere(\n \"../../packages/timeline/src/export/index.ts\",\n ),\n \"@idosgames/timeline\": fromHere(\"../../packages/timeline/src/index.ts\"),\n \"@idosgames/app-shell/preview-probe\": fromHere(\n \"../../packages/app-shell/src/preview-probe.ts\",\n ),\n \"@idosgames/app-shell\": fromHere(\"../../packages/app-shell/src/index.ts\"),\n};\n\n// Env comes the standard Vite way: VITE_* variables of .env.local reach the code as\n// `import.meta.env.VITE_*` (src/env.ts, src/config.ts). VITE_IDOS_ENV (\"dev\" | \"prod\") picks which\n// copy of the title a LOCAL run talks to; hosted builds take it from their address instead.\nexport default defineConfig(() => {\n const alias = Object.fromEntries(\n Object.entries(sourceAliases).filter(([, path]) => existsSync(path)),\n );\n return {\n plugins: [react()],\n resolve: { alias },\n server: { port: 5180 },\n };\n});\n"
|
|
79
79
|
}
|
|
80
80
|
]
|
|
81
81
|
}
|
package/registry/index.json
CHANGED
|
@@ -1,12 +1,12 @@
|
|
|
1
1
|
{
|
|
2
|
-
"generatedFromCommit": "
|
|
2
|
+
"generatedFromCommit": "31c69686452d029aaccb498eb85d3a6fff39efce",
|
|
3
3
|
"runtimePackages": {
|
|
4
4
|
"@idosgames/core": "0.23.0",
|
|
5
5
|
"@idosgames/wallet": "0.6.6",
|
|
6
6
|
"@idosgames/module-sdk": "0.13.0",
|
|
7
7
|
"@idosgames/react": "0.6.0",
|
|
8
8
|
"@idosgames/app-shell": "0.16.0",
|
|
9
|
-
"@idosgames/characters": "0.1.
|
|
9
|
+
"@idosgames/characters": "0.1.1",
|
|
10
10
|
"@idosgames/timeline": "0.1.0"
|
|
11
11
|
},
|
|
12
12
|
"host": {
|
|
@@ -1153,7 +1153,7 @@
|
|
|
1153
1153
|
"name": "iDos Games",
|
|
1154
1154
|
"url": "https://idosgames.com"
|
|
1155
1155
|
},
|
|
1156
|
-
"version": "0.4.
|
|
1156
|
+
"version": "0.4.2",
|
|
1157
1157
|
"events": {
|
|
1158
1158
|
"emits": [
|
|
1159
1159
|
{
|
|
@@ -1181,7 +1181,7 @@
|
|
|
1181
1181
|
]
|
|
1182
1182
|
},
|
|
1183
1183
|
"dependencies": {
|
|
1184
|
-
"@idosgames/characters": "0.1.
|
|
1184
|
+
"@idosgames/characters": "0.1.1",
|
|
1185
1185
|
"@idosgames/core": "0.23.0",
|
|
1186
1186
|
"@idosgames/module-sdk": "0.13.0",
|
|
1187
1187
|
"@idosgames/react": "0.6.0",
|
|
@@ -1189,7 +1189,7 @@
|
|
|
1189
1189
|
"react": "19.2.7"
|
|
1190
1190
|
},
|
|
1191
1191
|
"fileCount": 36,
|
|
1192
|
-
"contentHash": "
|
|
1192
|
+
"contentHash": "3bb2350ea232f151853a4e0b69db86ae95285851a91e03d04e2c46349f8524ba"
|
|
1193
1193
|
},
|
|
1194
1194
|
{
|
|
1195
1195
|
"id": "hero-run",
|
|
@@ -1203,12 +1203,12 @@
|
|
|
1203
1203
|
"store",
|
|
1204
1204
|
"inventory"
|
|
1205
1205
|
],
|
|
1206
|
-
"summary": "Roguelike runs in the style of Obsidian Knight with
|
|
1207
|
-
"description": "A roguelike auto-runner on Phaser with a React screen. The campaign is islands of six levels; a level is ONE run along a road (Obsidian Knight style: the hero runs, its feet in step with the road, the world scrolls in painted parallax per island theme): waves of troops standing in line (brawlers one at a time face to face, shooters fire once the hero is in their range), a camp (health or rage, both for gems), fountains, a chest, a boss at the end. Kills fill the RAGE; every threshold (3, 7, 14, 22, … as in Obsidian Knight) is a run level and a pause to take one of three cards — 58 upgrades in Obsidian Knight's form, a trigger and an effect (passive; on hit, crit, kill, dodge, counter, being hit, heal, overheal, the active skill, rest; every N-th attack; a new run level) throwing Lightning, Axes, Piercing spears and Arrows, stunning, healing, repairing the armor, giving charges (Focus, Divine shield, lightning); one Refresh a run. Death ends the run. Damage
|
|
1206
|
+
"summary": "Roguelike runs in the style of Obsidian Knight with attack and armor types: the hero runs a level on its own, rage fills and each run level is a choice of one of three cards; a weapon's attack type meets a troop's armor type.",
|
|
1207
|
+
"description": "A roguelike auto-runner on Phaser with a React screen. The campaign is islands of six levels; a level is ONE run along a road (Obsidian Knight style: the hero runs, its feet in step with the road, the world scrolls in painted parallax per island theme): waves of troops standing in line (brawlers one at a time face to face, shooters fire once the hero is in their range), a camp (health or rage, both for gems), fountains, a chest, a boss at the end. Kills fill the RAGE; every threshold (3, 7, 14, 22, … as in Obsidian Knight) is a run level and a pause to take one of three cards — 58 upgrades in Obsidian Knight's form, a trigger and an effect (passive; on hit, crit, kill, dodge, counter, being hit, heal, overheal, the active skill, rest; every N-th attack; a new run level) throwing Lightning, Axes, Piercing spears and Arrows, stunning, healing, repairing the armor, giving charges (Focus, Divine shield, lightning); one Refresh a run. Death ends the run. Damage goes by type: seven attack types (normal, pierce, siege, magic, chaos, spells, hero) × six armor types (light, medium, heavy, fortified, hero, unarmored) by a damage table, and armor points by the formula 0.06·A/(1+0.06·A) — negative armor amplifies. Types come from the gear and read off the picture: troops (people on the hero's rig) are dressed in what gives their types, the hero's weapon and top give its own (an item may name them in CustomData AttackType / ArmorType), a shield is a blue pool that takes the blows first. The types come in island by island (the first is casual), with a scouting screen and one tip per new type. One ultimate slot (meteor or frenzy) used once a run — only a card's chance (at a kill, at a new run level) brings it back; potions taken into the run; no health regen. A run costs ENERGY (Recharge) converted into a RUN_TICKET and ends in a reward chest opened with that ticket (lootboxes run_chest_defeat / victory / treasure); XP is a currency, the player's level its balance. Without these currencies the runs are free and pay nothing. The hero's fight numbers are the server's character stats (a mirror of PvPBattleEngine.CalculateStats) and are NOT sold: between runs they grow from gear (item levels) and rank on the Heroes screen, in a run from the cards; during a run the panel under the road shows the hero's sheet — every number with what the cards add (+15), the cards taken and their effects. Progress is saved in the player's private custom data (hero_run_progress); cleared levels and finished runs are reported to quests that count level_cleared / run_finished.",
|
|
1208
1208
|
"provides": [
|
|
1209
1209
|
"roguelike runs of levels: waves, camp, fountains, chest, boss",
|
|
1210
1210
|
"rage and run levels with a choice of 1 of 3 cards (58 trigger-and-effect upgrades, a refresh)",
|
|
1211
|
-
"
|
|
1211
|
+
"attack types × armor types and the armor formula",
|
|
1212
1212
|
"types from the gear: troops and the hero read off their look",
|
|
1213
1213
|
"scouting of a level and type tips introduced island by island",
|
|
1214
1214
|
"one ultimate a run (cards may bring it back) and potions",
|
|
@@ -1221,7 +1221,6 @@
|
|
|
1221
1221
|
"rpg",
|
|
1222
1222
|
"auto-battler",
|
|
1223
1223
|
"obsidian-knight",
|
|
1224
|
-
"warcraft",
|
|
1225
1224
|
"cards",
|
|
1226
1225
|
"phaser",
|
|
1227
1226
|
"2d"
|
|
@@ -1230,7 +1229,7 @@
|
|
|
1230
1229
|
"name": "iDos Games",
|
|
1231
1230
|
"url": "https://idosgames.com"
|
|
1232
1231
|
},
|
|
1233
|
-
"version": "0.1.
|
|
1232
|
+
"version": "0.1.1",
|
|
1234
1233
|
"events": {
|
|
1235
1234
|
"emits": [
|
|
1236
1235
|
{
|
|
@@ -1265,7 +1264,7 @@
|
|
|
1265
1264
|
"react": "19.2.7"
|
|
1266
1265
|
},
|
|
1267
1266
|
"fileCount": 104,
|
|
1268
|
-
"contentHash": "
|
|
1267
|
+
"contentHash": "366e0e5848d4204b3e15e63a64a5fb1b9ee4245578f458131771a3dc18ec2e3c"
|
|
1269
1268
|
},
|
|
1270
1269
|
{
|
|
1271
1270
|
"id": "voxelcraft",
|
|
@@ -1346,9 +1345,9 @@
|
|
|
1346
1345
|
"name": "iDos Games",
|
|
1347
1346
|
"url": "https://idosgames.com"
|
|
1348
1347
|
},
|
|
1349
|
-
"version": "0.7.
|
|
1348
|
+
"version": "0.7.3",
|
|
1350
1349
|
"dependencies": {
|
|
1351
|
-
"@idosgames/characters": "0.1.
|
|
1350
|
+
"@idosgames/characters": "0.1.1",
|
|
1352
1351
|
"@idosgames/core": "0.23.0",
|
|
1353
1352
|
"@idosgames/module-sdk": "0.13.0",
|
|
1354
1353
|
"@idosgames/react": "0.6.0",
|
|
@@ -1356,7 +1355,7 @@
|
|
|
1356
1355
|
"three": "0.185.1"
|
|
1357
1356
|
},
|
|
1358
1357
|
"fileCount": 559,
|
|
1359
|
-
"contentHash": "
|
|
1358
|
+
"contentHash": "3384674f472d849d5d14fb106332a299ada5b589f1ceb347293a5c3772121d2f"
|
|
1360
1359
|
},
|
|
1361
1360
|
{
|
|
1362
1361
|
"id": "mini-game",
|
|
@@ -1442,9 +1441,9 @@
|
|
|
1442
1441
|
"name": "iDos Games",
|
|
1443
1442
|
"url": "https://idosgames.com"
|
|
1444
1443
|
},
|
|
1445
|
-
"version": "0.1.
|
|
1444
|
+
"version": "0.1.1",
|
|
1446
1445
|
"dependencies": {
|
|
1447
|
-
"@idosgames/characters": "0.1.
|
|
1446
|
+
"@idosgames/characters": "0.1.1",
|
|
1448
1447
|
"@idosgames/core": "0.23.0",
|
|
1449
1448
|
"@idosgames/module-sdk": "0.13.0",
|
|
1450
1449
|
"@idosgames/react": "0.6.0",
|
|
@@ -1453,7 +1452,7 @@
|
|
|
1453
1452
|
"three": "0.185.1"
|
|
1454
1453
|
},
|
|
1455
1454
|
"fileCount": 40,
|
|
1456
|
-
"contentHash": "
|
|
1455
|
+
"contentHash": "66961c2a111d56cc6c14482f97400e57cd3994d0c106494cd79a9e0b9bb90e20"
|
|
1457
1456
|
}
|
|
1458
1457
|
],
|
|
1459
1458
|
"skills": [
|
|
@@ -1535,7 +1534,7 @@
|
|
|
1535
1534
|
},
|
|
1536
1535
|
{
|
|
1537
1536
|
"name": "hero-run",
|
|
1538
|
-
"description": "Hero Run — the roguelike runner game module (Obsidian Knight's runs with
|
|
1537
|
+
"description": "Hero Run — the roguelike runner game module (Obsidian Knight's runs with attack and armor types): the campaign of islands and levels, the rage and the choice of one of three cards, the 58 upgrade cards (a trigger and an effect, Obsidian Knight's form), the attack types × armor types table and the armor formula, troops dressed in the gear that gives their types, the hero's types from its gear (item CustomData AttackType / ArmorType), shields as a blue pool, one ultimate, potions, the camp, and the run economy (ENERGY → RUN_TICKET → reward chest through client.currency and client.lootbox). Use it whenever the user wants to add or tune a card, a troop, an island, a boss, the damage table, the energy or the rewards of hero-run — or a roguelike / auto-runner / card-draft / rock-paper-scissors damage game on the iDosGames SDK — even without naming the module."
|
|
1539
1538
|
},
|
|
1540
1539
|
{
|
|
1541
1540
|
"name": "idosgames-agent-debug-surface",
|